# HG changeset patch # User Aziz K?ksal # Date 1194553360 -3600 # Node ID 70fdd0701a77360a26a5b8c6de6505b90cda48b1 # Parent e91b224c223b07acc5ab2222d7c72057d2b7ca3f Translator: messages can be edited now. diff -r e91b224c223b -r 70fdd0701a77 trunk/src/translator/translator.py --- a/trunk/src/translator/translator.py Thu Nov 08 20:50:14 2007 +0200 +++ b/trunk/src/translator/translator.py Thu Nov 08 21:22:40 2007 +0100 @@ -22,6 +22,14 @@ g_settingsFile = os.path.join(g_scriptDir, "settings.yaml") g_settings = {} +def QStackedWidgetClear(self): + widgets = [self.widget(i) for i in range(0, self.count())] + while self.currentWidget(): + self.removeWidget(self.currentWidget()) + [widget.close() for widget in widgets] + +QtGui.QStackedWidget.clear = QStackedWidgetClear + class MainWindow(QtGui.QMainWindow, Ui_MainWindow): def __init__(self): QtGui.QMainWindow.__init__(self) @@ -108,6 +116,7 @@ self.project = None self.disableMenuItems() self.projectTree.clear() + self.pages.clear() return True def enableMenuItems(self): @@ -127,6 +136,7 @@ if index == -1: index = self.pages.addWidget(current.msgForm) self.pages.setCurrentIndex(index) + current.msgForm.updateData() def closeEvent(self, event): if self.closeProject() == False: @@ -170,24 +180,47 @@ } yaml.dump(g_settings, open(g_settingsFile, "w")) #default_flow_style=False +class MessageItem(QtGui.QTreeWidgetItem): + def __init__(self, msg): + QtGui.QTreeWidgetItem.__init__(self, [str(msg["ID"]), msg["Text"]]) + self.msg = msg + + def getID(self): + return self.msg["ID"] + + def setMsgText(self, text): + self.msg["Text"] = text + + def setMsgAnnot(self, text): + self.msg["Annot"] = text + class MsgForm(QtGui.QWidget, Ui_MsgForm): def __init__(self, langFile): QtGui.QWidget.__init__(self) self.setupUi(self) self.langFile = langFile + self.currentItem = None + self.colID = 0 + self.colText = 1 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) + self.treeWidget.addTopLevelItem(MessageItem(msg)) QtCore.QObject.connect(self.treeWidget, QtCore.SIGNAL("currentItemChanged (QTreeWidgetItem *,QTreeWidgetItem *)"), self.treeItemChanged) + QtCore.QObject.connect(self.translEdit, QtCore.SIGNAL("textChanged()"), self.translEditTextChanged) + QtCore.QObject.connect(self.translAnnotEdit, QtCore.SIGNAL("textChanged()"), self.translAnnotEditTextChanged) + + #self.translEdit.focusOutEvent = self.translEditFocusOut def treeItemChanged(self, current, previous): + self.currentItem = current if current == None: + self.setTranslMsg("") + self.setSourceMsg("") return - ID = int(current.text(0)) + ID = current.getID() self.setTranslMsg(self.langFile.getMsg(ID)) self.setSourceMsg(self.langFile.source.getMsg(ID)) @@ -199,6 +232,37 @@ self.sourceEdit.setText(msg["Text"]) self.sourceAnnotEdit.setText(msg["Annot"]) + #def translEditFocusOut(self, event): + #if self.currentItem: + #print self.currentItem.text(self.colText) + #if self.translEdit.document().isModified(): + #self.translEdit.document().setModified(False) + #print "translEdit was modified" + #QtGui.QTextEdit.focusOutEvent(self.translEdit, event) + + def translEditTextChanged(self): + if self.currentItem: + text = self.translEdit.toPlainText() + self.currentItem.setText(self.colText, text) + self.currentItem.setMsgText(text) + + def translAnnotEditTextChanged(self): + if self.currentItem: + text = self.translAnnotEdit.toPlainText() + self.currentItem.setMsgAnnot(text) + + def updateData(self): + if self.currentItem == None: + return + ID = self.currentItem.getID() + msg = self.langFile.source.getMsg(ID) + text = self.sourceEdit.toPlainText() + if text != msg["Text"]: + self.sourceEdit.setText(msg["Text"]) + text = self.sourceAnnotEdit.toPlainText() + if text != msg["Annot"]: + self.sourceAnnotEdit.setText(msg["Annot"]) + class MsgFormSource(MsgForm): def __init__(self, langFile): MsgForm.__init__(self, langFile) @@ -209,10 +273,30 @@ self.label_5]: x.close() + QtCore.QObject.connect(self.sourceEdit, QtCore.SIGNAL("textChanged()"), self.sourceEditTextChanged) + QtCore.QObject.connect(self.sourceAnnotEdit, QtCore.SIGNAL("textChanged()"), self.sourceAnnotEditTextChanged) + def treeItemChanged(self, current, previous): - ID = int(current.text(0)) + self.currentItem = current + if current == None: + self.setSourceMsg("") + return + ID = current.getID() self.setSourceMsg(self.langFile.getMsg(ID)) + def sourceEditTextChanged(self): + if self.currentItem: + text = self.sourceEdit.toPlainText() + self.currentItem.setText(self.colText, text) + self.currentItem.setMsgText(text) + + def sourceAnnotEditTextChanged(self): + if self.currentItem: + text = self.sourceAnnotEdit.toPlainText() + #self.currentItem.setText(self.colAnnot, text) + self.currentItem.setMsgAnnot(text) + + class MsgIDItem(QtGui.QTreeWidgetItem): def __init__(self, parent, text): QtGui.QTreeWidgetItem.__init__(self, parent, [text])