Browse Source

clone-project patch

pull/41/head
rhetr 12 years ago
parent
commit
1f933bc7fa
4 changed files with 101 additions and 29 deletions
  1. BIN
      resources/16x16/edit-copy.png
  2. +1
    -0
      resources/resources.qrc
  3. +59
    -29
      resources/ui/claudia.ui
  4. +41
    -0
      src/claudia.py

BIN
resources/16x16/edit-copy.png View File

Before After
Width: 16  |  Height: 16  |  Size: 475B

+ 1
- 0
resources/resources.qrc View File

@@ -19,6 +19,7 @@
<file>16x16/document-save.png</file>
<file>16x16/document-save-as.png</file>
<file>16x16/edit-clear.png</file>
<file>16x16/edit-copy.png</file>
<file>16x16/edit-delete.png</file>
<file>16x16/edit-rename.png</file>
<file>16x16/list-add.png</file>


+ 59
- 29
resources/ui/claudia.ui View File

@@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>877</width>
<width>982</width>
<height>566</height>
</rect>
</property>
@@ -167,8 +167,8 @@
<property name="title">
<string>Project</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QPushButton" name="b_project_new">
<property name="maximumSize">
<size>
@@ -188,7 +188,7 @@
</property>
</widget>
</item>
<item>
<item row="0" column="1">
<widget class="QPushButton" name="b_project_load">
<property name="maximumSize">
<size>
@@ -208,7 +208,7 @@
</property>
</widget>
</item>
<item>
<item row="0" column="2">
<widget class="QPushButton" name="b_project_save">
<property name="maximumSize">
<size>
@@ -228,7 +228,7 @@
</property>
</widget>
</item>
<item>
<item row="0" column="3">
<widget class="QPushButton" name="b_project_save_as">
<property name="maximumSize">
<size>
@@ -248,6 +248,26 @@
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QPushButton" name="b_project_clone">
<property name="maximumSize">
<size>
<width>23</width>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
<string>Clone Project</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../resources.qrc">
<normaloff>:/16x16/edit-copy.png</normaloff>:/16x16/edit-copy.png</iconset>
</property>
</widget>
</item>
</layout>
</widget>
</item>
@@ -769,8 +789,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>877</width>
<height>19</height>
<width>982</width>
<height>25</height>
</rect>
</property>
<widget class="QMenu" name="menu_Studio">
@@ -825,27 +845,6 @@
<addaction name="act_room_create"/>
<addaction name="menu_room_delete"/>
</widget>
<widget class="QMenu" name="menu_Project">
<property name="title">
<string>&amp;Project</string>
</property>
<widget class="QMenu" name="menu_project_load">
<property name="title">
<string>Load Project</string>
</property>
<property name="icon">
<iconset resource="../resources.qrc">
<normaloff>:/16x16/document-open.png</normaloff>:/16x16/document-open.png</iconset>
</property>
</widget>
<addaction name="act_project_new"/>
<addaction name="menu_project_load"/>
<addaction name="act_project_save"/>
<addaction name="act_project_save_as"/>
<addaction name="act_project_unload"/>
<addaction name="separator"/>
<addaction name="act_project_properties"/>
</widget>
<widget class="QMenu" name="menu_Application">
<property name="title">
<string>&amp;Application</string>
@@ -919,6 +918,28 @@
<addaction name="act_canvas_print"/>
<addaction name="act_canvas_save_image"/>
</widget>
<widget class="QMenu" name="menu_Project">
<property name="title">
<string>&amp;Project</string>
</property>
<widget class="QMenu" name="menu_project_load">
<property name="title">
<string>Load Project</string>
</property>
<property name="icon">
<iconset resource="../resources.qrc">
<normaloff>:/16x16/document-open.png</normaloff>:/16x16/document-open.png</iconset>
</property>
</widget>
<addaction name="act_project_new"/>
<addaction name="menu_project_load"/>
<addaction name="act_project_save"/>
<addaction name="act_project_save_as"/>
<addaction name="act_project_clone"/>
<addaction name="act_project_unload"/>
<addaction name="separator"/>
<addaction name="act_project_properties"/>
</widget>
<addaction name="menu_Studio"/>
<addaction name="menu_Room"/>
<addaction name="menu_Project"/>
@@ -1431,6 +1452,15 @@
<string>Export Hardware Ports...</string>
</property>
</action>
<action name="act_project_clone">
<property name="icon">
<iconset resource="../resources.qrc">
<normaloff>:/16x16/edit-copy.png</normaloff>:/16x16/edit-copy.png</iconset>
</property>
<property name="text">
<string>Clone Project</string>
</property>
</action>
</widget>
<customwidgets>
<customwidget>


+ 41
- 0
src/claudia.py View File

@@ -20,6 +20,7 @@
# Imports (Global)

from time import ctime
import shutil
from PyQt4.QtCore import QPointF
from PyQt4.QtGui import QAction, QApplication, QVBoxLayout, QTableWidgetItem, QTreeWidgetItem

@@ -314,6 +315,7 @@ class CreateRoomW(QDialog, ui_claudia_createroom.Ui_CreateRoomW):
class ProjectNameW(QDialog, ui_claudia_projectname.Ui_ProjectNameW):
NEW = 1
SAVE_AS = 2
CLONE = 3

def __init__(self, parent, mode, proj_folder, path="", name=""):
QDialog.__init__(self, parent)
@@ -328,6 +330,11 @@ class ProjectNameW(QDialog, ui_claudia_projectname.Ui_ProjectNameW):
self.le_path.setText(path)
self.le_name.setText(name)
self.checkText(path, name)
elif mode == self.CLONE:
self.setWindowTitle(self.tr("Clone project"))
self.le_path.setText(path)
self.le_name.setText(name)
self.checkText(path, name)

self.m_proj_folder = proj_folder

@@ -622,12 +629,14 @@ class ClaudiaMainW(AbstractCanvasJackClass):
self.ui.menu_project_load.setIcon(getIcon("document-open"))
self.ui.act_project_save.setIcon(getIcon("document-save"))
self.ui.act_project_save_as.setIcon(getIcon("document-save-as"))
self.ui.act_project_clone.setIcon(getIcon("edit-copy"))
self.ui.act_project_unload.setIcon(getIcon("window-close"))
self.ui.act_project_properties.setIcon(getIcon("edit-rename"))
self.ui.b_project_new.setIcon(getIcon("document-new"))
self.ui.b_project_load.setIcon(getIcon("document-open"))
self.ui.b_project_save.setIcon(getIcon("document-save"))
self.ui.b_project_save_as.setIcon(getIcon("document-save-as"))
self.ui.b_project_clone.setIcon(getIcon("edit-copy"))

self.ui.act_app_add_new.setIcon(getIcon("list-add"))
self.ui.act_app_run_custom.setIcon(getIcon("system-run"))
@@ -806,12 +815,14 @@ class ClaudiaMainW(AbstractCanvasJackClass):
self.connect(self.ui.act_project_new, SIGNAL("triggered()"), SLOT("slot_project_new()"))
self.connect(self.ui.act_project_save, SIGNAL("triggered()"), SLOT("slot_project_save()"))
self.connect(self.ui.act_project_save_as, SIGNAL("triggered()"), SLOT("slot_project_save_as()"))
self.connect(self.ui.act_project_clone, SIGNAL("triggered()"), SLOT("slot_project_clone()"))
self.connect(self.ui.act_project_unload, SIGNAL("triggered()"), SLOT("slot_project_unload()"))
self.connect(self.ui.act_project_properties, SIGNAL("triggered()"), SLOT("slot_project_properties()"))
self.connect(self.ui.b_project_new, SIGNAL("clicked()"), SLOT("slot_project_new()"))
self.connect(self.ui.b_project_load, SIGNAL("clicked()"), SLOT("slot_project_load()"))
self.connect(self.ui.b_project_save, SIGNAL("clicked()"), SLOT("slot_project_save()"))
self.connect(self.ui.b_project_save_as, SIGNAL("clicked()"), SLOT("slot_project_save_as()"))
self.connect(self.ui.b_project_clone, SIGNAL("clicked()"), SLOT("slot_project_clone()"))
self.connect(self.ui.menu_project_load, SIGNAL("aboutToShow()"), SLOT("slot_updateMenuProjectList()"))

self.connect(self.ui.act_app_add_new, SIGNAL("triggered()"), SLOT("slot_app_add_new()"))
@@ -1710,6 +1721,27 @@ class ClaudiaMainW(AbstractCanvasJackClass):
else:
self.slot_project_new()

@pyqtSlot()
def slot_project_clone(self):
project_graph_version, project_properties = gDBus.ladish_room.GetProjectProperties()

if len(project_properties) > 0:
path = str(project_properties['dir'])
name = str(project_properties['name'])
dialog = ProjectNameW(self, ProjectNameW.CLONE, self.fSavedSettings["Main/DefaultProjectFolder"], path, name)

if dialog.exec_():
if os.listdir(dialog.ret_project_path):
shutil.move(dialog.ret_project_path, dialog.ret_project_path+"_old")
else:
os.rmdir(dialog.ret_project_path)
shutil.copytree(path, dialog.ret_project_path)
gDBus.ladish_room.SaveProject(dialog.ret_project_path, dialog.ret_project_name)

else:
self.slot_project_new()

@pyqtSlot()
def slot_project_unload(self):
gDBus.ladish_room.UnloadProject()
@@ -1809,10 +1841,12 @@ class ClaudiaMainW(AbstractCanvasJackClass):
has_project = bool(len(project_properties) > 0)
self.ui.act_project_save.setEnabled(has_project)
self.ui.act_project_save_as.setEnabled(has_project)
self.ui.act_project_clone.setEnabled(has_project)
self.ui.act_project_unload.setEnabled(has_project)
self.ui.act_project_properties.setEnabled(has_project)
self.ui.b_project_save.setEnabled(has_project)
self.ui.b_project_save_as.setEnabled(has_project)
self.ui.b_project_clone.setEnabled(has_project)
self.ui.menu_Application.setEnabled(has_project)

else:
@@ -1944,6 +1978,7 @@ class ClaudiaMainW(AbstractCanvasJackClass):
cMenu.addMenu(self.ui.menu_project_load)
act_x_save = cMenu.addAction(self.tr("Save Project"))
act_x_save_as = cMenu.addAction(self.tr("Save Project As..."))
act_x_clone = cMenu.addAction(self.tr("Clone Project"))
act_x_unload = cMenu.addAction(self.tr("Unload Project"))
cMenu.addSeparator()
act_x_properties = cMenu.addAction(self.tr("Project Properties..."))
@@ -1955,6 +1990,7 @@ class ClaudiaMainW(AbstractCanvasJackClass):
act_x_new.setIcon(QIcon.fromTheme("document-new", QIcon(":/16x16/document-new.png")))
act_x_save.setIcon(QIcon.fromTheme("document-save", QIcon(":/16x16/document-save.png")))
act_x_save_as.setIcon(QIcon.fromTheme("document-save-as", QIcon(":/16x16/document-save-as.png")))
act_x_clone.setIcon(QIcon.fromTheme("edit-copy", QIcon(":/16x16/edit-copy.png")))
act_x_unload.setIcon(QIcon.fromTheme("window-close", QIcon(":/16x16/dialog-close.png")))
act_x_properties.setIcon(QIcon.fromTheme("edit-rename", QIcon(":/16x16/edit-rename.png")))
act_x_delete_room.setIcon(QIcon.fromTheme("edit-delete", QIcon(":/16x16/edit-delete.png")))
@@ -1967,6 +2003,7 @@ class ClaudiaMainW(AbstractCanvasJackClass):
act_x_run_custom.setEnabled(False)
act_x_save.setEnabled(False)
act_x_save_as.setEnabled(False)
act_x_clone.setEnabled(False)
act_x_unload.setEnabled(False)
act_x_properties.setEnabled(False)

@@ -2013,6 +2050,8 @@ class ClaudiaMainW(AbstractCanvasJackClass):
self.slot_project_save()
elif act_x_sel == act_x_save_as:
self.slot_project_save_as()
elif act_x_sel == act_x_clone:
self.slot_project_clone()
elif act_x_sel == act_x_unload:
self.slot_project_unload()
elif act_x_sel == act_x_properties:
@@ -2314,10 +2353,12 @@ class ClaudiaMainW(AbstractCanvasJackClass):

self.ui.act_project_save.setEnabled(has_project)
self.ui.act_project_save_as.setEnabled(has_project)
self.ui.act_project_clone.setEnabled(has_project)
self.ui.act_project_unload.setEnabled(has_project)
self.ui.act_project_properties.setEnabled(has_project)
self.ui.b_project_save.setEnabled(has_project)
self.ui.b_project_save_as.setEnabled(has_project)
self.ui.b_project_clone.setEnabled(has_project)
self.ui.menu_Application.setEnabled(has_project)

if path == "/org/ladish/Studio":


Loading…
Cancel
Save