(Version 1.0) |
(Added the line setting job description) |
||
| (3 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
| − | + | <syntaxhighlight lang="python"> | |
| − | < | + | |
#! /usr/bin/python | #! /usr/bin/python | ||
# -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||
| Line 46: | Line 45: | ||
#-> show this to everybody | #-> show this to everybody | ||
KJob.setPercent(self,self.i*4) | KJob.setPercent(self,self.i*4) | ||
| + | self.description.emit(self, "Our Splendid Job", ("Source","counter"), ("Destination","dummy")) | ||
if self.i==self.max: | if self.i==self.max: | ||
| Line 79: | Line 79: | ||
else: | else: | ||
print 'job has terminated successfully' | print 'job has terminated successfully' | ||
| + | |||
| + | #termination the whole application | ||
| + | sys.exit() | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
| Line 113: | Line 116: | ||
job.start() | job.start() | ||
| − | </ | + | #wait till all is done |
| + | app.exec_() | ||
| + | </syntaxhighlight> | ||
#! /usr/bin/python # -*- coding: utf-8 -*- from PyQt4.QtCore import QObject,QTimer,QString from PyKDE4.kdecore import KJob from PyKDE4.kio import KIO class MyJob(KJob): def __init__(self,parent=QObject()): KJob.__init__(self,parent) #We want to have a Suspenable and Killable Job self.setCapabilities(KJob.Capabilities(KJob.Suspendable|KJob.Killable)) #Just a maximum Variable self.max=25 #index self.i=0 def start(self): #register the Job to the JobTracker KIO.getJobTracker().registerJob(self) #initalizing for work self.i=0 #start the actual work in another thread #this function has to terminate, before the work is done QTimer().singleShot(0, self.doWork) def doWork(self): #the actual work try: #if we are killed or suspended just return if self.error() or self.isSuspended(): return except RuntimeError: #if this class is killed before a RuntimeError will raise return #do a peace of hard work self.i+=1 #fortunately we have made a peace of work #-> show this to everybody KJob.setPercent(self,self.i*4) self.description.emit(self, "Our Splendid Job", ("Source","counter"), ("Destination","dummy")) if self.i==self.max: #jeah we have done the bunch of work #send the result signal for showing, that we ended the work self.emitResult() return #just go to sleep for 1000ms than go on QTimer().singleShot(1000, self.doWork) def doSuspend(self): #the surounding function from KJob makes the isSuspended() become True #returns True for signaling that this class supports to suspend return True def doResume(self): #start with work again QTimer().singleShot( 0, self.doWork ) #return True for signaling that this class supports resuming return True def doKill(self): #return True for signaling that we support killing return True def handleResult(job): #handleResult Function #it is called when the job is terminating if job.error(): print 'error happend' else: print 'job has terminated successfully' #termination the whole application sys.exit() if __name__ == "__main__": import sys from PyKDE4.kdecore import KCmdLineArgs, KAboutData, KLocalizedString, ki18n from PyKDE4.kdeui import KApplication appName = "default" catalog = "" programName = ki18n ("default") version = "1.0" description = ki18n ("Default Example") license = KAboutData.License_GPL copyright = ki18n ("(c) 2010 Sandro Knauß") text = ki18n ("none") homePage = "techbase.kde.org" bugEmail = "bugs@sandroknauss.de" aboutData = KAboutData (appName, catalog, programName, version, description, license, copyright, text, homePage, bugEmail) KCmdLineArgs.init (sys.argv, aboutData) app = KApplication () #create job job=MyJob(app) job.result.connect(handleResult) #start job job.start() #wait till all is done app.exec_()