Mercurial > projects > dil
diff trunk/src/translator/translator.py @ 460:77c17bbe9d20
Translator: added new modules; applied fixes.
Added a new directory i18n. It contains the translator project file and the
language catalogue files.
The translator main window has a dock widget on the left hand-side now, with
a project tree widget.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Tue, 30 Oct 2007 18:12:01 +0100 |
parents | 5968e273449b |
children | b6fa41e6f0b4 |
line wrap: on
line diff
--- a/trunk/src/translator/translator.py Tue Oct 30 16:58:17 2007 +0200 +++ b/trunk/src/translator/translator.py Tue Oct 30 18:12:01 2007 +0100 @@ -11,12 +11,14 @@ from ui_about import Ui_AboutDialog from ui_new_project import Ui_NewProjectDialog from ui_project_properties import Ui_ProjectProperties +from ui_msg_form import Ui_MsgForm -from project import Project +from project import Project, newProjectData g_scriptDir = sys.path[0] g_CWD = os.getcwd() g_projectExt = ".tproj" +g_catExt = ".cat" g_settingsFile = os.path.join(g_scriptDir, "settings.yaml") g_settings = {} @@ -28,12 +30,19 @@ self.project = None # Modifications self.disableMenuItems() + self.projectDock = QtGui.QDockWidget("Project", self) + self.projectTree = ProjectTree(self) + self.projectDock.setWidget(self.projectTree) + self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.projectDock) # Custom connections QtCore.QObject.connect(self.action_About, QtCore.SIGNAL("triggered()"), self.showAboutDialog) QtCore.QObject.connect(self.action_New_Project, QtCore.SIGNAL("triggered()"), self.createNewProject) QtCore.QObject.connect(self.action_Open_Project, QtCore.SIGNAL("triggered()"), self.openProjectAction) QtCore.QObject.connect(self.action_Close_Project, QtCore.SIGNAL("triggered()"), self.closeProject) QtCore.QObject.connect(self.action_Properties, QtCore.SIGNAL("triggered()"), self.showProjectProperties) + QtCore.QObject.connect(self.action_Add_Catalogue, QtCore.SIGNAL("triggered()"), self.addCatalogue) + QtCore.QObject.connect(self.action_Add_New_Catalogue, QtCore.SIGNAL("triggered()"), self.addNewCatalogue) + QtCore.QObject.connect(self.projectTree, QtCore.SIGNAL("currentItemChanged (QTreeWidgetItem *,QTreeWidgetItem *)"), self.projectTreeItemChanged) self.readSettings() @@ -48,14 +57,20 @@ dialog.exec_() def createNewProject(self): - NewProjectDialog().exec_() + if self.cantCloseProjectIfOpen(): + return + dialog = NewProjectDialog() + code = dialog.exec_() + if code == QtGui.QDialog.Accepted: + self.openProject(str(dialog.projectFilePath.text())) def openProjectAction(self): - if self.closeProjectIfOpen(): + if self.cantCloseProjectIfOpen(): return filePath = QtGui.QFileDialog.getOpenFileName(self, "Select Project File", g_CWD, "Translator Project (*%s)" % g_projectExt); + filePath = str(filePath) if filePath: - self.openProject(str(filePath)) + self.openProject(filePath) def openProject(self, filePath): from errors import LoadingError @@ -65,11 +80,16 @@ QtGui.QMessageBox.critical(self, "Error", u"Couldn't load project file:\n\n"+str(e)) return self.enableMenuItems() - self.projectTree = ProjectTree(self) self.projectTree.setProject(self.project) - self.vboxlayout.addWidget(self.projectTree) + + def addCatalogue(self): + filePath = QtGui.QFileDialog.getOpenFileName(self, "Select Project File", g_CWD, "Catalogue (*%s)" % g_catExt); + filePath = str(filePath) - def closeProjectIfOpen(self): + def addNewCatalogue(self): + pass + + def cantCloseProjectIfOpen(self): if self.project == None: return False return self.closeProject() @@ -85,8 +105,7 @@ del self.project self.project = None self.disableMenuItems() - self.vboxlayout.removeWidget(self.projectTree) - self.projectTree.close() + self.projectTree.clear() return True def enableMenuItems(self): @@ -97,6 +116,13 @@ self.action_Close_Project.setEnabled(False) self.menubar.removeAction(self.menu_Project.menuAction()) + def projectTreeItemChanged(self, item, column): + if item == None: + return + # TODO: set centralwidget to the form corresponding to the item. + if isinstance(item, LangFileItem): + print "LangFileItem" + def closeEvent(self, event): if self.closeProject() == False: event.ignore() @@ -139,6 +165,11 @@ } yaml.dump(g_settings, open(g_settingsFile, "w")) #default_flow_style=False +class MsgForm(QtGui.QWidget, Ui_MsgForm): + def __init__(self): + QtGui.QWidget.__init__(self) + self.setupUi(self) + class MsgIDItem(QtGui.QTreeWidgetItem): def __init__(self, parent, text): QtGui.QTreeWidgetItem.__init__(self, parent, [text]) @@ -152,22 +183,28 @@ QtGui.QTreeWidget.__init__(self, parent) self.topItem = None self.msgIDsItem = None + self.headerItem().setHidden(True) def setProject(self, project): - self.project = project + self.project = project - self.topItem = QtGui.QTreeWidgetItem([self.project.name]) - self.addTopLevelItem(self.topItem) + self.topItem = QtGui.QTreeWidgetItem([self.project.name]) + self.addTopLevelItem(self.topItem) + + for langFile in self.project.langFiles: + langFileItem = LangFileItem(self.topItem, langFile.langCode) - self.msgIDsItem = QtGui.QTreeWidgetItem(self.topItem, ["Message IDs"]) - for msgID in self.project.msgIDs: - MsgIDItem(self.msgIDsItem, msgID["Name"]) + self.msgIDsItem = QtGui.QTreeWidgetItem(self.topItem, ["Message IDs"]) + for msgID in self.project.msgIDs: + MsgIDItem(self.msgIDsItem, msgID["Name"]) - for langFile in self.project.langFiles: - langFileItem = LangFileItem(self.topItem, langFile.langCode) + for x in [self.topItem, self.msgIDsItem]: + x.setExpanded(True) - for x in [self.topItem, self.msgIDsItem]: - x.setExpanded(True) + def clear(self): + self.topItem = None + self.msgIDsItem = None + QtGui.QTreeWidget.clear(self) class NewProjectDialog(QtGui.QDialog, Ui_NewProjectDialog): def __init__(self): @@ -196,7 +233,7 @@ QtGui.QMessageBox.warning(self, "Warning", "Please, choose or enter a path for the project file.") return - projectData = Project.newProjectData(projectName) + projectData = newProjectData(projectName) if os.path.splitext(filePath)[1] != g_projectExt: filePath += g_projectExt