[Tutor] playing around with function

kakada hokkakada at khmeros.info
Fri Jul 28 11:01:19 CEST 2006


បានសរសេរ kakada:
> 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_())
>
>
>   
It is working like I want now, but I still not like this code style
(regarding navigation). It is too long.

Thx,
da


More information about the Tutor mailing list