Mercurial > projects > dil
changeset 471:b6fa41e6f0b4
Translator: implemented some functionality of MsgForm.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Sun, 04 Nov 2007 14:06:04 +0100 |
parents | e48a011e687a |
children | 30925590f392 |
files | trunk/src/translator/langfile.py trunk/src/translator/msg_form.ui trunk/src/translator/project.py trunk/src/translator/translator.py trunk/src/translator/ui_msg_form.py |
diffstat | 5 files changed, 85 insertions(+), 31 deletions(-) [+] |
line wrap: on
line diff
--- a/trunk/src/translator/langfile.py Wed Oct 31 23:03:56 2007 +0200 +++ b/trunk/src/translator/langfile.py Sun Nov 04 14:06:04 2007 +0100 @@ -39,7 +39,7 @@ authors += [unicode(author[0]), unicode(author[1])] self.authors = authors - messages = [] + self.msgDict = {} # {ID : msg, ...} for msg in self.messages: self.checkType(msg, dict, "LangFile: messages must be of type dict.") try: @@ -49,12 +49,27 @@ msg["LastEd"] = unicode(msg["LastEd"]) except KeyError, e: raise LoadingError("LangFile: a message is missing the '%s' key." % str(e)) - messages += [msg] - self.messages = messages + self.msgDict[msg["ID"]] = msg def checkType(self, var, type_, msg=""): if not isinstance(var, type_): raise LoadingError(msg) + def getMsg(self, ID): + for msg in self.messages: + if msg["ID"] == ID: + return msg + return None + + def createMissingMessages(self, IDs): + for ID in IDs: + if not self.msgDict.has_key(ID): + msg = self.createEmptyMsg(ID) + self.msgDict[ID] = msg + self.messages += [msg] + + def createEmptyMsg(self, ID): + return {"ID":ID,"Text":"","Annot":"","LastEd":""} + def save(self): pass
--- a/trunk/src/translator/msg_form.ui Wed Oct 31 23:03:56 2007 +0200 +++ b/trunk/src/translator/msg_form.ui Sun Nov 04 14:06:04 2007 +0100 @@ -15,6 +15,9 @@ <layout class="QVBoxLayout" > <item> <widget class="QSplitter" name="splitter" > + <property name="frameShape" > + <enum>QFrame::StyledPanel</enum> + </property> <property name="orientation" > <enum>Qt::Vertical</enum> </property> @@ -28,11 +31,17 @@ </widget> </item> <item> - <widget class="QListWidget" name="listWidget" /> + <widget class="QTreeWidget" name="treeWidget" > + <column> + <property name="text" > + <string>1</string> + </property> + </column> + </widget> </item> </layout> </widget> - <widget class="QWidget" name="" > + <widget class="QWidget" name="layoutWidget" > <layout class="QGridLayout" > <item row="0" column="0" > <layout class="QVBoxLayout" >
--- a/trunk/src/translator/project.py Wed Oct 31 23:03:56 2007 +0200 +++ b/trunk/src/translator/project.py Sun Nov 04 14:06:04 2007 +0100 @@ -58,6 +58,7 @@ # Load language files. self.langFiles = [] + IDList = [msg["ID"] for msgID in self.msgIDs] for filePath in self.langFilePaths: if not os.path.exists(filePath): # Look in project directory. @@ -66,7 +67,9 @@ if not os.path.exists(filePath2): raise LoadingError("Project: Language file '%s' doesn't exist"%filePath) filePath = filePath2 - self.langFiles += [langfile.LangFile(filePath)] + langFile = langfile.LangFile(filePath) + langFile.createMissingMessages(IDList) + self.langFiles += [langFile] def checkType(self, var, type_): if not isinstance(var, type_):
--- a/trunk/src/translator/translator.py Wed Oct 31 23:03:56 2007 +0200 +++ b/trunk/src/translator/translator.py Sun Nov 04 14:06:04 2007 +0100 @@ -29,6 +29,8 @@ self.project = None # Modifications + self.pages = QtGui.QStackedWidget() + self.setCentralWidget(self.pages) self.disableMenuItems() self.projectDock = QtGui.QDockWidget("Project", self) self.projectTree = ProjectTree(self) @@ -116,12 +118,15 @@ self.action_Close_Project.setEnabled(False) self.menubar.removeAction(self.menu_Project.menuAction()) - def projectTreeItemChanged(self, item, column): - if item == None: + def projectTreeItemChanged(self, current, previous): + if current == None: return - # TODO: set centralwidget to the form corresponding to the item. - if isinstance(item, LangFileItem): - print "LangFileItem" + + if isinstance(current, LangFileItem): + index = self.pages.indexOf(current.msgForm) + if index == -1: + index = self.pages.addWidget(current.msgForm) + self.pages.setCurrentIndex(index) def closeEvent(self, event): if self.closeProject() == False: @@ -166,17 +171,37 @@ yaml.dump(g_settings, open(g_settingsFile, "w")) #default_flow_style=False class MsgForm(QtGui.QWidget, Ui_MsgForm): - def __init__(self): + def __init__(self, langFile): QtGui.QWidget.__init__(self) self.setupUi(self) + self.langFile = langFile + self.treeWidget.setColumnCount(2) + self.treeWidget.setHeaderLabels(["ID", "Text"]) + for msg in self.langFile.messages: + item = QtGui.QTreeWidgetItem([str(msg["ID"]), msg["Text"]]) + self.treeWidget.addTopLevelItem(item) + + QtCore.QObject.connect(self.treeWidget, QtCore.SIGNAL("currentItemChanged (QTreeWidgetItem *,QTreeWidgetItem *)"), self.treeItemChanged) + + def treeItemChanged(self, current, previous): + msg = self.langFile.getMsg(int(current.text(0))) + self.destEdit.setText(msg["Text"]) + self.destAnnotEdit.setText(msg["Annot"]) + class MsgIDItem(QtGui.QTreeWidgetItem): def __init__(self, parent, text): QtGui.QTreeWidgetItem.__init__(self, parent, [text]) class LangFileItem(QtGui.QTreeWidgetItem): - def __init__(self, parent, text): - QtGui.QTreeWidgetItem.__init__(self, parent, [text]) + def __init__(self, parent, langFile): + QtGui.QTreeWidgetItem.__init__(self, parent, [langFile.langCode]) + self.langFile = langFile + self.msgForm = MsgForm(langFile) + +class ProjectItem(QtGui.QTreeWidgetItem): + def __init__(self, text): + QtGui.QTreeWidgetItem.__init__(self, [text]) class ProjectTree(QtGui.QTreeWidget): def __init__(self, parent): @@ -188,11 +213,11 @@ def setProject(self, project): self.project = project - self.topItem = QtGui.QTreeWidgetItem([self.project.name]) + self.topItem = ProjectItem(self.project.name) self.addTopLevelItem(self.topItem) for langFile in self.project.langFiles: - langFileItem = LangFileItem(self.topItem, langFile.langCode) + langFileItem = LangFileItem(self.topItem, langFile) self.msgIDsItem = QtGui.QTreeWidgetItem(self.topItem, ["Message IDs"]) for msgID in self.project.msgIDs:
--- a/trunk/src/translator/ui_msg_form.py Wed Oct 31 23:03:56 2007 +0200 +++ b/trunk/src/translator/ui_msg_form.py Sun Nov 04 14:06:04 2007 +0100 @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'msg_form.ui' # -# Created: Sun Oct 21 17:33:29 2007 +# Created: Thu Nov 1 10:10:41 2007 # by: PyQt4 UI code generator 4.1 # # WARNING! All changes made in this file will be lost! @@ -19,6 +19,7 @@ self.vboxlayout.setObjectName("vboxlayout") self.splitter = QtGui.QSplitter(MsgForm) + self.splitter.setFrameShape(QtGui.QFrame.StyledPanel) self.splitter.setOrientation(QtCore.Qt.Vertical) self.splitter.setObjectName("splitter") @@ -32,24 +33,24 @@ self.label.setObjectName("label") self.vboxlayout1.addWidget(self.label) - self.listWidget = QtGui.QListWidget(self.layoutWidget) - self.listWidget.setObjectName("listWidget") - self.vboxlayout1.addWidget(self.listWidget) + self.treeWidget = QtGui.QTreeWidget(self.layoutWidget) + self.treeWidget.setObjectName("treeWidget") + self.vboxlayout1.addWidget(self.treeWidget) - self.widget = QtGui.QWidget(self.splitter) - self.widget.setObjectName("widget") + self.layoutWidget1 = QtGui.QWidget(self.splitter) + self.layoutWidget1.setObjectName("layoutWidget1") - self.gridlayout = QtGui.QGridLayout(self.widget) + self.gridlayout = QtGui.QGridLayout(self.layoutWidget1) self.gridlayout.setObjectName("gridlayout") self.vboxlayout2 = QtGui.QVBoxLayout() self.vboxlayout2.setObjectName("vboxlayout2") - self.label_2 = QtGui.QLabel(self.widget) + self.label_2 = QtGui.QLabel(self.layoutWidget1) self.label_2.setObjectName("label_2") self.vboxlayout2.addWidget(self.label_2) - self.sourceEdit = QtGui.QTextEdit(self.widget) + self.sourceEdit = QtGui.QTextEdit(self.layoutWidget1) self.sourceEdit.setObjectName("sourceEdit") self.vboxlayout2.addWidget(self.sourceEdit) self.gridlayout.addLayout(self.vboxlayout2,0,0,1,1) @@ -57,11 +58,11 @@ self.vboxlayout3 = QtGui.QVBoxLayout() self.vboxlayout3.setObjectName("vboxlayout3") - self.label_3 = QtGui.QLabel(self.widget) + self.label_3 = QtGui.QLabel(self.layoutWidget1) self.label_3.setObjectName("label_3") self.vboxlayout3.addWidget(self.label_3) - self.sourceAnnotEdit = QtGui.QTextEdit(self.widget) + self.sourceAnnotEdit = QtGui.QTextEdit(self.layoutWidget1) self.sourceAnnotEdit.setObjectName("sourceAnnotEdit") self.vboxlayout3.addWidget(self.sourceAnnotEdit) self.gridlayout.addLayout(self.vboxlayout3,0,1,1,1) @@ -69,11 +70,11 @@ self.vboxlayout4 = QtGui.QVBoxLayout() self.vboxlayout4.setObjectName("vboxlayout4") - self.label_4 = QtGui.QLabel(self.widget) + self.label_4 = QtGui.QLabel(self.layoutWidget1) self.label_4.setObjectName("label_4") self.vboxlayout4.addWidget(self.label_4) - self.destEdit = QtGui.QTextEdit(self.widget) + self.destEdit = QtGui.QTextEdit(self.layoutWidget1) self.destEdit.setObjectName("destEdit") self.vboxlayout4.addWidget(self.destEdit) self.gridlayout.addLayout(self.vboxlayout4,1,0,1,1) @@ -81,11 +82,11 @@ self.vboxlayout5 = QtGui.QVBoxLayout() self.vboxlayout5.setObjectName("vboxlayout5") - self.label_5 = QtGui.QLabel(self.widget) + self.label_5 = QtGui.QLabel(self.layoutWidget1) self.label_5.setObjectName("label_5") self.vboxlayout5.addWidget(self.label_5) - self.destAnnotEdit = QtGui.QTextEdit(self.widget) + self.destAnnotEdit = QtGui.QTextEdit(self.layoutWidget1) self.destAnnotEdit.setObjectName("destAnnotEdit") self.vboxlayout5.addWidget(self.destAnnotEdit) self.gridlayout.addLayout(self.vboxlayout5,1,1,1,1) @@ -97,6 +98,7 @@ def retranslateUi(self, MsgForm): MsgForm.setWindowTitle(QtGui.QApplication.translate("MsgForm", "Form", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText(QtGui.QApplication.translate("MsgForm", "Messages:", None, QtGui.QApplication.UnicodeUTF8)) + self.treeWidget.headerItem().setText(0,QtGui.QApplication.translate("MsgForm", "1", None, QtGui.QApplication.UnicodeUTF8)) self.label_2.setText(QtGui.QApplication.translate("MsgForm", "Source string:", None, QtGui.QApplication.UnicodeUTF8)) self.label_3.setText(QtGui.QApplication.translate("MsgForm", "Source annotation:", None, QtGui.QApplication.UnicodeUTF8)) self.label_4.setText(QtGui.QApplication.translate("MsgForm", "Translation:", None, QtGui.QApplication.UnicodeUTF8))