Thank Alan and Luke, My coding is divided up into many modules and import from one to another. Here is my editor.py interface.
#!/usr/bin/python # -*- coding: utf8 -*- import sys import application_rc from PyQt4 import QtCore, QtGui from ui_editor import Ui_MainWindow from translate.storage import factory import Display class MainWindow(QtGui.QMainWindow): def __init__(self): QtGui.QMainWindow.__init__(self) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.numApproved = 0 self.numFuzzy = 0 self.numTranslated = 0 #events go here QtCore.QObject.connect(self.ui.treeWidget, QtCore.SIGNAL("itemSelectionChanged()"), self.updateField) QtCore.QObject.connect(self.ui.cmbMsgFilter, QtCore.SIGNAL("activated(int)"), self.setFilter) QtCore.QObject.connect(self.ui.chkfuzzy,QtCore.SIGNAL("stateChanged(int)"),self.toggleFuzzy) QtCore.QObject.connect(self.ui.chkapproved,QtCore.SIGNAL("toggled(bool)"),self.toggleApproved) QtCore.QObject.connect(self.ui.btnsource2target,QtCore.SIGNAL("pressed()"),self.source2target) QtCore.QObject.connect(self.ui.btnRemoveAllTU,QtCore.SIGNAL("pressed()"),self.removeAllTrans) QtCore.QObject.connect(self.ui.btnNA,QtCore.SIGNAL("pressed()"),self.gotoNA) QtCore.QObject.connect(self.ui.btnPA,QtCore.SIGNAL("pressed()"),self.gotoPA) QtCore.QObject.connect(self.ui.btnNF,QtCore.SIGNAL("pressed()"),self.gotoNF) QtCore.QObject.connect(self.ui.btnNT,QtCore.SIGNAL("pressed()"),self.gotoNT) QtCore.QObject.connect(self.ui.btnNU,QtCore.SIGNAL("pressed()"),self.gotoNU) QtCore.QObject.connect(self.ui.btnPF,QtCore.SIGNAL("pressed()"),self.gotoPF) QtCore.QObject.connect(self.ui.btnPU,QtCore.SIGNAL("pressed()"),self.gotoPU) QtCore.QObject.connect(self.ui.btnPT,QtCore.SIGNAL("pressed()"),self.gotoPT) QtCore.QMetaObject.connectSlotsByName(self) def newWindows(self): print "new windows" self.other = Ui_MainWindow() self.other.windowList.append(other) self.other.show() def openFile(self): fileName = QtGui.QFileDialog.getOpenFileName(self, self.tr("Open Xliff File"), QtCore.QDir.currentPath(), self.tr("XLIFF Files (*.xliff *.xml *.xlf);;All File(*.*)")) if fileName.isEmpty(): self.setWindowTitle( self.tr("WordForge Translation Editor v.05 - ") + "untitle") else: self.setWindowTitle( self.tr("WordForge Translation Editor v.05 - ") + str(fileName)) self.title = fileName self.store = factory.getobject(str(fileName)) self.uf = Display.Display(self.ui, self.store) import FirstShow fs = FirstShow.FirstShow(self.ui, self.store) fs.firstShow() def save(self): if self.title.isEmpty(): return self.saveAs() else: return self.store.savefile(str(self.title)) def saveAs(self): fileName = QtGui.QFileDialog.getSaveFileName(self, self.tr("Save Xliff File"), QtCore.QDir.currentPath(), self.tr("XLIFF Files (*.xliff *.xml *.xlf)")) if fileName.isEmpty(): return self.store.savefile(str(fileName)) self.ui.cmbMsgFilter.addItem ('Not filtered') self.ui.cmbMsgFilter.addItem ('fuzzy') self.ui.cmbMsgFilter.addItem ('translated') self.ui.cmbMsgFilter.addItem ('untranslated') def getCurrentItem(self): try: self.item = self.ui.treeWidget.selectedItems()[0] except IndexError: return False # I have change my code style like this: def gotoNF(self): self.state = "NF" self.navigationNext(self.state) def gotoNT(self): self.state = "NT" self.navigationNext(self.state) def gotoNU(self): self.state = "NU" self.navigationNext(self.state) def gotoNA(self): self.state = "NA" self.navigationNext(self.state) def gotoPA(self): self.state = "PA" self.navigationPrevious(self.state) def gotoPT(self): self.state = "PT" self.navigationPrevious(self.state) def gotoPU(self): self.state = "PU" self.navigationPrevious(self.state) def gotoPF(self): self.state = "PF" self.navigationPrevious(self.state) def navigated(self): if (self.state == 'NF') and (self.store.units[int(self.id)].isfuzzy()): return True if (self.state == 'PF') and (self.store.units[int(self.id)].isfuzzy()): return True if (self.state == 'NT') and (self.store.units[int(self.id)].istranslated()): return True if (self.state == 'PT') and (self.store.units[int(self.id)].istranslated()): return True if (self.state == 'NU') and (self.store.units[int(self.id)].isuntranslated()): return True if (self.state == 'PU') and (self.store.units[int(self.id)].isuntranslated()): return True if (self.state == 'NA') and (self.store.units[int(self.id)].isapproved()): return True if (self.state == 'PA') and (self.store.units[int(self.id)].isapproved()): return True def navigationNext(self,state): if (self.getCurrentItem() == 0): return 0 self.id = int(self.item.text(0)) self.id += 1 for i in range(self.id,775): self.id = i if (i == 775): pass #self.warningMessage() else: if self.navigated(): curItem = self.ui.treeWidget.topLevelItem(self.id) self.ui.treeWidget.setCurrentItem(curItem) self.ui.txtSource.setHtml(self.store.units[self.id].source) self.ui.txtTarget.setHtml(self.store.units[self.id].target) break else: continue def navigationPrevious(self,state): if (self.getCurrentItem() == 0): return 0 self.id = int(self.item.text(0)) self.id -= 1 for i in range(self.id,0,-1): self.id = i if (self.id == 0): pass #self.warningMessage() else: if self.navigated(): curItem = self.ui.treeWidget.topLevelItem(self.id) self.ui.treeWidget.setCurrentItem(curItem) self.ui.txtSource.setHtml(self.store.units[self.id].source) self.ui.txtTarget.setHtml(self.store.units[self.id].target) break else: continue #class MessageDialog(QtGui.QDialog): #def warningMessage(self): #reply = QtGui.QMessageBox.warning(self, self.tr("QMessageBox.showWarning()"), #Dialong.MESSAGE, self.tr("Continue to the begining"), #self.tr("&Yes")) #if reply == 0: #self.warningLabel.setText(self.tr("Yes")) #else: #self.warningLabel.setText(self.tr("Cancel")) if __name__ == "__main__": app = QtGui.QApplication(sys.argv) editor = MainWindow() editor.show() sys.exit(app.exec_()) _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor