# HG changeset patch # User Aziz K?ksal # Date 1194365337 -3600 # Node ID 30925590f392f9a29e803e95ec3ed28360d1119a # Parent b6fa41e6f0b4a62bc28d3553ddbf87736bc5ae33 Translator: implemented more functionalities of MsgForm. Added class MsgFormSource. Used for editing the source language file of the project. Added stub methods for showing context menus in ProjectTree. Added loadLangFile method to class Project. Renamed two widgets in msg_form.ui. diff -r b6fa41e6f0b4 -r 30925590f392 trunk/i18n/dil.tproj --- a/trunk/i18n/dil.tproj Sun Nov 04 14:06:04 2007 +0100 +++ b/trunk/i18n/dil.tproj Tue Nov 06 17:08:57 2007 +0100 @@ -1,6 +1,6 @@ BuildScript: build.py CreationDate: '2007-10-12 09:41:17.868084' -LangFiles: [en.cat, de.cat, tr.cat, fi.cat] +LangFiles: [de.cat, tr.cat, fi.cat] MsgIDs: - {ID: 0, Name: IllegalCharacter, Order: 0} - {ID: 1, Name: InvalidUnicodeCharacter, Order: 1} @@ -51,4 +51,4 @@ - {ID: 46, Name: HelpGenerate, Order: 46} - {ID: 47, Name: HelpImportGraph, Order: 47} Name: dil -SourceLangFile: '' +SourceLangFile: en.cat diff -r b6fa41e6f0b4 -r 30925590f392 trunk/src/translator/langfile.py --- a/trunk/src/translator/langfile.py Sun Nov 04 14:06:04 2007 +0100 +++ b/trunk/src/translator/langfile.py Tue Nov 06 17:08:57 2007 +0100 @@ -15,6 +15,8 @@ class LangFile: def __init__(self, filePath): self.filePath = filePath + self.isSource = False + self.source = None # Load language file and check data integrity. doc = yaml.load(open(filePath, "r")) self.doc = doc @@ -55,6 +57,9 @@ if not isinstance(var, type_): raise LoadingError(msg) + def setSource(self, sourceLangFile): + self.source = sourceLangFile + def getMsg(self, ID): for msg in self.messages: if msg["ID"] == ID: diff -r b6fa41e6f0b4 -r 30925590f392 trunk/src/translator/msg_form.ui --- a/trunk/src/translator/msg_form.ui Sun Nov 04 14:06:04 2007 +0100 +++ b/trunk/src/translator/msg_form.ui Tue Nov 06 17:08:57 2007 +0100 @@ -81,7 +81,7 @@ - + @@ -95,7 +95,7 @@ - + diff -r b6fa41e6f0b4 -r 30925590f392 trunk/src/translator/project.py --- a/trunk/src/translator/project.py Sun Nov 04 14:06:04 2007 +0100 +++ b/trunk/src/translator/project.py Tue Nov 06 17:08:57 2007 +0100 @@ -33,7 +33,7 @@ self.checkType(doc, dict) try: self.name = str(doc["Name"]) - self.source = str(doc["SourceLangFile"]) + self.srcLangFilePath = str(doc["SourceLangFile"]) self.langFilePaths = list(doc["LangFiles"]) self.msgIDs = list(doc["MsgIDs"]) self.creationDate = str(doc["CreationDate"]) @@ -60,20 +60,30 @@ 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. - projectDir = os.path.dirname(projectPath) - filePath2 = os.path.join(projectDir, filePath) - if not os.path.exists(filePath2): - raise LoadingError("Project: Language file '%s' doesn't exist"%filePath) - filePath = filePath2 - langFile = langfile.LangFile(filePath) + langFile = self.loadLangFile(filePath) langFile.createMissingMessages(IDList) self.langFiles += [langFile] + self.srcLangFile = self.loadLangFile(self.srcLangFilePath) + self.srcLangFile.createMissingMessages(IDList) + self.srcLangFile.isSource = True + self.langFiles += [self.srcLangFile] + + for langFile in self.langFiles: + langFile.setSource(self.srcLangFile) def checkType(self, var, type_): if not isinstance(var, type_): raise LoadingException("%s is not of type %s" % (str(var), str(type_))) + def loadLangFile(self, filePath): + if not os.path.exists(filePath): + # Look in project directory. + projectDir = os.path.dirname(self.projectPath) + filePath2 = os.path.join(projectDir, filePath) + if not os.path.exists(filePath2): + raise LoadingError("Project: Language file '%s' doesn't exist"%filePath) + filePath = filePath2 + return langfile.LangFile(filePath) + def save(self): pass diff -r b6fa41e6f0b4 -r 30925590f392 trunk/src/translator/translator.py --- a/trunk/src/translator/translator.py Sun Nov 04 14:06:04 2007 +0100 +++ b/trunk/src/translator/translator.py Tue Nov 06 17:08:57 2007 +0100 @@ -185,9 +185,33 @@ 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"]) + if current == None: + return + ID = int(current.text(0)) + self.setTranslMsg(self.langFile.getMsg(ID)) + self.setSourceMsg(self.langFile.source.getMsg(ID)) + + def setTranslMsg(self, msg): + self.translEdit.setText(msg["Text"]) + self.translAnnotEdit.setText(msg["Annot"]) + + def setSourceMsg(self, msg): + self.sourceEdit.setText(msg["Text"]) + self.sourceAnnotEdit.setText(msg["Annot"]) + +class MsgFormSource(MsgForm): + def __init__(self, langFile): + MsgForm.__init__(self, langFile) + + for x in [self.translEdit, + self.translAnnotEdit, + self.label_4, + self.label_5]: + x.close() + + def treeItemChanged(self, current, previous): + ID = int(current.text(0)) + self.setSourceMsg(self.langFile.getMsg(ID)) class MsgIDItem(QtGui.QTreeWidgetItem): def __init__(self, parent, text): @@ -197,7 +221,10 @@ def __init__(self, parent, langFile): QtGui.QTreeWidgetItem.__init__(self, parent, [langFile.langCode]) self.langFile = langFile - self.msgForm = MsgForm(langFile) + if langFile.isSource: + self.msgForm = MsgFormSource(langFile) + else: + self.msgForm = MsgForm(langFile) class ProjectItem(QtGui.QTreeWidgetItem): def __init__(self, text): @@ -226,6 +253,26 @@ for x in [self.topItem, self.msgIDsItem]: x.setExpanded(True) + def contextMenuEvent(self, event): + item = self.itemAt(event.pos()) + func_map = { + None : lambda item: None, + QtGui.QTreeWidgetItem : lambda item: None, + ProjectItem : self.showMenuProjectItem, + LangFileItem : self.showMenuLangFileItem, + MsgIDItem : self.showMenuMsgIDItem + } + func_map[type(item)](item) + + def showMenuProjectItem(self, item): + print "ProjectItem" + + def showMenuLangFileItem(self, item): + print "LangFileItem" + + def showMenuMsgIDItem(self, item): + print "MsgIDItem" + def clear(self): self.topItem = None self.msgIDsItem = None diff -r b6fa41e6f0b4 -r 30925590f392 trunk/src/translator/ui_msg_form.py --- a/trunk/src/translator/ui_msg_form.py Sun Nov 04 14:06:04 2007 +0100 +++ b/trunk/src/translator/ui_msg_form.py Tue Nov 06 17:08:57 2007 +0100 @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'msg_form.ui' # -# Created: Thu Nov 1 10:10:41 2007 +# Created: Tue Nov 6 12:15:01 2007 # by: PyQt4 UI code generator 4.1 # # WARNING! All changes made in this file will be lost! @@ -74,9 +74,9 @@ self.label_4.setObjectName("label_4") self.vboxlayout4.addWidget(self.label_4) - self.destEdit = QtGui.QTextEdit(self.layoutWidget1) - self.destEdit.setObjectName("destEdit") - self.vboxlayout4.addWidget(self.destEdit) + self.translEdit = QtGui.QTextEdit(self.layoutWidget1) + self.translEdit.setObjectName("translEdit") + self.vboxlayout4.addWidget(self.translEdit) self.gridlayout.addLayout(self.vboxlayout4,1,0,1,1) self.vboxlayout5 = QtGui.QVBoxLayout() @@ -86,9 +86,9 @@ self.label_5.setObjectName("label_5") self.vboxlayout5.addWidget(self.label_5) - self.destAnnotEdit = QtGui.QTextEdit(self.layoutWidget1) - self.destAnnotEdit.setObjectName("destAnnotEdit") - self.vboxlayout5.addWidget(self.destAnnotEdit) + self.translAnnotEdit = QtGui.QTextEdit(self.layoutWidget1) + self.translAnnotEdit.setObjectName("translAnnotEdit") + self.vboxlayout5.addWidget(self.translAnnotEdit) self.gridlayout.addLayout(self.vboxlayout5,1,1,1,1) self.vboxlayout.addWidget(self.splitter)