You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tde-guidance/displayconfig/ktimerdialog.py

156 lines
5.8 KiB

#!/usr/bin/python
###########################################################################
# ktimerdialog.py - description #
# ------------------------------ #
# begin : Mon Jul 26 2004 #
# copyright : (C) 2004 by Simon Edwards #
# email : simon@simonzone.com #
# #
###########################################################################
# #
# This program is free software; you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation; either version 2 of the License, or #
# (at your option) any later version. #
# #
###########################################################################
# Based on Hamish Rodda's ktimerdialog.cpp.
from qt import *
from kdecore import *
from kdeui import *
class KTimerDialog(KDialogBase):
CountDown = 0
CountUp = 1
Manual = 2
def __init__(self, msec, style, parent, name, modal, caption="", \
buttonmask=KDialogBase.Ok|KDialogBase.Cancel|KDialogBase.Apply, \
defaultbutton=KDialogBase.Cancel, separator=False, \
user1=KGuiItem(), user2=KGuiItem(), user3=KGuiItem()):
"""Parameters:
msec - integer, timeout in milliseconds
style - TimerStyle object.
parent - parent QWidget
name - String
model - boolean.
caption - String
buttonmask - integer
defaultbutton - ButtonCode
separator - boolean
user1 - KGuiItem
user2 - KGuiItem
user3 - KGuiItem
"""
KDialogBase.__init__(self,parent, name, modal, caption, buttonmask, defaultbutton, \
separator, user1, user2, user3 )
self.totaltimer = QTimer(self)
self.updatetimer = QTimer(self)
self.msectotal = self.msecremaining = msec
self.updateinterval = 1000
self.tstyle = style
# default to cancelling the dialog on timeout
if buttonmask & self.Cancel:
self.buttonontimeout = self.Cancel
self.connect(self.totaltimer, SIGNAL("timeout()"), self.slotInternalTimeout)
self.connect(self.updatetimer, SIGNAL("timeout()"), self.slotUpdateTime)
# create the widgets
self.mainwidget = QVBox(self, "mainWidget")
self.timerwidget = QHBox(self.mainwidget, "timerWidget")
self.timerlabel = QLabel(self.timerwidget)
self.timerprogress = QProgressBar(self.timerwidget)
self.timerprogress.setTotalSteps(self.msectotal)
self.timerprogress.setPercentageVisible(False)
self.setMainWidget(self.mainwidget)
self.slotUpdateTime(False)
def show(self):
self.msecremaining = self.msectotal
self.slotUpdateTime(False)
KDialogBase.show(self)
self.totaltimer.start(self.msectotal, True)
self.updatetimer.start(self.updateinterval, False)
def exec_loop(self):
self.totaltimer.start(self.msectotal, True)
self.updatetimer.start(self.updateinterval, False)
return KDialogBase.exec_loop(self)
def setMainWidget(self, newmainwidget):
# yuck, here goes.
newwidget = QVBox(self)
if newmainwidget.parentWidget()!=self.mainwidget:
newmainwidget.reparent(newwidget, 0, QPoint(0,0))
else:
newwidget.insertChild(newmainwidget)
self.timerwidget.reparent(newwidget, 0, QPoint(0, 0))
self.mainwidget = newwidget
KDialogBase.setMainWidget(self, self.mainwidget)
def setRefreshInterval(self, msec):
self.updateinterval = msec;
if self.updatetimer.isActive():
self.updatetimer.changeInterval(self.updateinterval)
def timeoutButton(self):
return self.buttonontimeout
def setTimeoutButton(self, newbutton):
self.buttonontimeout = newbutton
def timerStyle(self):
return self.tstyle
def setTimerStyle(self, newstyle):
self.tstyle = newstyle
def slotUpdateTime(self, update=True):
if update:
if self.tstyle==self.CountDown:
self.msecremaining -= self.updateinterval
elif self.tstyle==self.CountUp:
self.msecremaining += self.updateinterval
self.timerprogress.setProgress(self.msecremaining)
self.timerlabel.setText( i18n("%1 seconds remaining:").arg(self.msecremaining/1000.0) )
def slotInternalTimeout(self):
#self.emit(SIGNAL("timerTimeout()"), () )
if self.buttonontimeout==self.Help:
self.slotHelp()
elif self.buttonontimeout==self.Default:
self.slotDefault()
elif self.buttonontimeout==self.Ok:
self.slotOk()
elif self.buttonontimeout==self.Apply:
self.applyPressed()
elif self.buttonontimeout==self.Try:
self.slotTry()
elif self.buttonontimeout==self.Cancel:
self.slotCancel()
elif self.buttonontimeout==self.Close:
self.slotClose()
#case User1:
# slotUser1();
#case User2:
# slotUser2();
# break;
elif self.buttonontimeout==self.User3:
self.slotUser3()
elif self.buttonontimeout==self.No:
self.slotNo()
elif self.buttonontimeout==self.Yes:
self.slotCancel()
elif self.buttonontimeout==self.Details:
self.slotDetails()