[Tutor] playing around with function

kakada hokkakada at khmeros.info
Fri Jul 28 10:57:51 CEST 2006


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_())



More information about the Tutor mailing list