def promptText(parent, message, title = None, text="", rx=None, help=None): """ Prompts for a text. Returns None on cancel, otherwise the input string. rx = if given, regexp string that the input must validate against help = if given, the docbook id in the help menu handbook. """ d = KDialog(parent) buttons = KDialog.Ok | KDialog.Cancel if help: buttons |= KDialog.Help d.setHelp(help) d.setButtons(KDialog.ButtonCode(buttons)) if title: d.setCaption(title) v = KVBox() v.setSpacing(4) d.setMainWidget(v) QLabel(message, v) edit = KLineEdit(v) if rx: edit.setValidator(QRegExpValidator(QRegExp(rx), edit)) edit.setText(text) d.show() edit.setFocus() if d.exec_(): return edit.text()
def show(self): self.load() KDialog.show(self)
class CountdownTimer(plasmascript.Applet): def __init__(self, parent, args=None): plasmascript.Applet.__init__(self, parent) def init(self): self.setHasConfigurationInterface(True) self.setAspectRatioMode(Plasma.Square) self.end = datetime.now() cg = self.config() print(cg.name()) rent = str(cg.readEntry("endTime", QVariant("")).toString()) msg = str(cg.readEntry("message", QVariant("")).toString()) if rent: self.end = datetime(*[int(x) for x in rent.split(" ")]) self.message = "Needs configuration" if msg: self.message = msg self.resize(300, 125) self.dialog = None self.connectToEngine() # plasma DataEngines # for more info, run plasmaengineexplorer def connectToEngine(self): # the timer self.timeEngine = self.dataEngine("time") self.timeEngine.connectSource("Europe/Warsaw", self, 500) @pyqtSignature("dataUpdated(const QString &, const Plasma::DataEngine::Data &)") def dataUpdated(self, sourceName, data): self.update() def showConfigurationInterface(self): windowTitle = str(self.applet.name() + " Settings") if self.dialog is None: self.dialog = KDialog(None) self.dialog.setWindowTitle(windowTitle) self.ui = CountdownTimerConfig(self.dialog) self.dialog.setMainWidget(self.ui) self.dialog.setButtons(KDialog.ButtonCodes(KDialog.ButtonCode(KDialog.Ok | KDialog.Cancel | KDialog.Apply))) self.dialog.showButton(KDialog.Apply, False) # set up the values so they correspond to config dateTime = QDateTime() dateTime.setDate(QDate(self.end.year, self.end.month, self.end.day)) dateTime.setTime(QTime(self.end.hour, self.end.minute, self.end.second)) self.ui.kdatetime.setDateTime(dateTime) self.ui.event_txt.setText(self.message) self.connect(self.dialog, SIGNAL("applyClicked()"), self, SLOT("configAccepted()")) self.connect(self.dialog, SIGNAL("okClicked()"), self, SLOT("configAccepted()")) now = datetime.now() self.dialog.show() @pyqtSignature("configAccepted()") def configAccepted(self): cg = self.config() self.end = datetime(*[int(x) for x in self.ui.kdatetime.dateTime().toString("yyyy MM dd hh mm ss").split(" ")]) self.message = self.ui.event_txt.displayText() cg.writeEntry("endTime", QString('{:%Y %m %d %H %M %S}'.format(self.end))) cg.writeEntry("message", QString(self.message)) self.emit(SIGNAL("configNeedsSaving()")) def paintInterface(self, painter, option, rect): painter.save() painter.setPen(Qt.white) align = Qt.AlignVCenter | Qt.AlignHCenter painter.drawText(rect, Qt.AlignHCenter | Qt.AlignTop, self.message) n = datetime.now() timeDiff = self.end - n if self.end >= n: painter.drawText(rect, Qt.AlignHCenter | Qt.AlignVCenter, str(timeDiff).split(".")[0]) else: painter.drawText(rect, Qt.AlignHCenter | Qt.AlignVCenter, str("Timer ended!")) painter.restore()
def show(self): self.updateShortcuts() KDialog.show(self) self.searchLine.setFocus()