diff options
Diffstat (limited to 'python/pykde/examples/uimodules/uidialogs.py')
-rw-r--r-- | python/pykde/examples/uimodules/uidialogs.py | 232 |
1 files changed, 232 insertions, 0 deletions
diff --git a/python/pykde/examples/uimodules/uidialogs.py b/python/pykde/examples/uimodules/uidialogs.py new file mode 100644 index 00000000..0f860728 --- /dev/null +++ b/python/pykde/examples/uimodules/uidialogs.py @@ -0,0 +1,232 @@ +from qt import QVBox, QLabel, QLineEdit, QString, QPixmap, QPushButton, QColor, SIGNAL, QButtonGroup,\ + QRadioButton, Qt, QWidget + +from kdecore import KAccel, i18n + +from kdeui import KAboutDialog, KAboutKDE, KBugReport, KColorDialog, KDialog, KDialogBase, KFontDialog,\ + KPasswordDialog, KMessageBox, KLineEditDlg, KKeyDialog, KWizard + +# despite what the docs say, there is no enum (in 2.1.1 anyway) +# that contains these values +QuestionYesNo = 0 +WarningYesNo = 1 +WarningContinueCancel = 2 +WarningYesNoCancel = 3 +Information = 4 +Sorry = 5 +Error = 6 + +# Python 2.2.2 supplies these, but they're duplicated here +# for backward compatibility +False = 0 +True = 1 + +class CustomDlg (KDialog): + def __init__ (self, parent, name = "custom dlg", modal = False): + KDialog.__init__ (self, parent, name, modal) + + x = 20 + y = 10 + + rLbl = QLabel ("r", self) + gLbl = QLabel ("g", self) + bLbl = QLabel ("b", self) + self.rEd = QLineEdit ("64", self) + self.gEd = QLineEdit ("64", self) + self.bEd = QLineEdit ("64", self) + self.dlgBtn = QPushButton ("Set/Get Color", self) + self.okBtn = QPushButton ("OK", self) + self.canBtn = QPushButton ("Cancel", self) + + rLbl.setGeometry (x, y, 25, 20) + gLbl.setGeometry (x + 30, y, 25, 20) + bLbl.setGeometry (x + 60, y, 25, 20) + y = y + 20 + self.rEd.setGeometry (x, y, 25, 20) + self.gEd.setGeometry (x + 30, y, 25, 20) + self.bEd.setGeometry (x + 60, y, 25, 20) + y = y + 30 + self.dlgBtn.setGeometry (x, y, 90, 22) + y = y + 30 + self.okBtn.setGeometry (x, y, 40, 22) + self.canBtn.setGeometry (x + 50, y, 40, 22) + + self.connect (self.dlgBtn, SIGNAL ("clicked()"), self.dlgClicked) + self.connect (self.okBtn, SIGNAL ("clicked ()"), self.okClicked) + self.connect (self.canBtn, SIGNAL ("clicked ()"), self.cancelClicked) + + def dlgClicked (self): + # get some (numerical) color values from the original dialog + red = int (self.rEd.text ().latin1 ()) + green = int (self.gEd.text ().latin1 ()) + blue = int (self.bEd.text ().latin1 ()) + + # convert the numbers to a QColor + color = QColor (red, green, blue) + + # invoke the dialog (getColor is a 'static' call) + # initialize with the colors from above (in color) + # color will also hold the new value chosen in the + # KColorDialog + result = KColorDialog.getColor (color, self) + + # get the numerical color values back + red, green, blue = color.rgb () + + # update the QLineEdits in the original dialog + self.rEd.setText (str (red)) + self.gEd.setText (str (green)) + self.bEd.setText (str (blue)) + + def okClicked (self): + self.done (1) + + def cancelClicked (self): + self.done (0) + +class MessageDlg (KDialog): + def __init__ (self, parent, name = "message dlg", modal = False): + KDialog.__init__ (self, parent, name, modal) + + buttons = ["QuestionYesNo", "WarningYesNo", "WarningContiueCancel", "WarningYesNoCancel",\ + "Information", "Sorry", "Error"] + + n = len (buttons) + + grp = QButtonGroup (n, Qt.Vertical, "MessageBoxes", self, "button grp") + grp.setGeometry (10, 10, 200, 30*n) + for i in range (n): + QRadioButton (buttons [i], grp) + + self.connect (grp, SIGNAL ("clicked (int)"), self.launch) + + def launch (self, which): + if which == QuestionYesNo: + KMessageBox.questionYesNo (self, "This is a questionYesNo message box\nThere is also a list version of this dialog",\ + "questionYesNo") + + elif which == WarningYesNo: + KMessageBox.warningYesNo (self, "This is a warningYesNo message box", "warningYesNo") + + elif which == WarningContinueCancel: + KMessageBox.warningContinueCancel (self, "This is a warningContinueCancel message box", "warningContinueCancel"); + + elif which == WarningYesNoCancel: + KMessageBox.warningYesNoCancel (self, "This is a warningYesNoCancel message box", "warningYesNoCancel") + + elif which == Information: + KMessageBox.information (self, "This is an information message box", "Information") + + elif which == Sorry: + KMessageBox.sorry (self, "This is a 'sorry' message box", "Sorry") + + elif which == Error: + KMessageBox.error (self, "No - this isn't really an error\nIt's an error message box\n", "Error") + + +def dlgKAboutDialog (parent): + dlg = KAboutDialog (parent, 'about dialog', False) + dlg.setLogo (QPixmap ("pytestimage.png")) + dlg.setTitle ("UISampler for PyKDE") + dlg.setAuthor ("Jim Bublitz", "jbublitz@nwinternet.com", "http://www.riverbankcomputing.co.uk",\ + "\n\nPyKDE -- Python bindings\n\tfor KDE") + dlg.addContributor ("PyKDE list", "pykde@mats.gmd.de", QString.null, QString.null) + + dlg.show () + + +def dlgKBugReport (parent): + dlg = KBugReport (parent) + dlg.exec_loop () + +def dlgKAboutKDE (parent): + dlg = KAboutKDE (parent, "about kde", False) + dlg.show () + +def dlgKColorDialog (parent): + dlg = KColorDialog (parent, "color dlg", False) + dlg.show () + +def dlgKDialog (parent): + dlg = CustomDlg (parent) + dlg.show () + +def dlgKDialogBase (parent): + caption = "KDialogBase sample" + text_ = "This is a KDialogBase example" + dlg = KDialogBase (parent, "sample_dialog", False, caption,\ + KDialogBase.Ok | KDialogBase.Cancel, KDialogBase.Ok, True ) + + page = dlg.makeVBoxMainWidget(); + + # making 'page' the parent inserts the widgets in + # the VBox created above + label = QLabel( caption, page, "caption" ); + + lineedit = QLineEdit(text_, page, "lineedit" ); + lineedit.setMinimumWidth(dlg.fontMetrics().maxWidth()*20); + + # This tests some handwritten code in KDialogBase + label0 = QLabel ("Border widths", page) + a, b, c, d = dlg.getBorderWidths () + labelA = QLabel ("Upper Left X: " + str (a), page) + labelB = QLabel ("Upper Left Y: " + str (b), page) + labelC = QLabel ("Lower Right X: " + str (c), page) + labelD = QLabel ("Lower Right Y: " + str (d), page) + + dlg.show () + +def dlgKFontDialog (parent): + dlg = KFontDialog (parent, "font dlg", False, False) + dlg.show () + +def dlgKKeyDialog (parent): + # This really doesn't do anything except pop up the dlg + keys = KAccel (parent) + keys.insertItem( i18n( "Zoom in" ), "Zoom in", "+" ); + keys.readSettings(); + KKeyDialog.configureKeys (keys) + +def dlgKLineEditDlg (parent): + result, ok = KLineEditDlg.getText ("Enter text", "<Your input here>", parent) + print "result", result + print "ok", ok + + # pop up another dlg to show what happened in the KLineEditDlg + if ok: + result = result.latin1 () + KMessageBox.information (parent, "OK was pressed\nText: " + result, "KLineEditDlg result") + else: + result = "" + KMessageBox.information (parent, "Cancel pressed\nText: " + result, "KLineEditDlg result") + +def dlgKMessageBox (parent): + dlg = MessageDlg (parent) + dlg.show () + +def dlgKPasswordDialog (parent): + dlg = KPasswordDialog (KPasswordDialog.Password, "Enter password (just a test)") + dlg.exec_loop () + +def dlgKWizard (parent): + wiz = KWizard (parent) + + page1 = QWidget (wiz) + p1Lbl = QLabel ("This is page 1", page1) + p1Lbl.setGeometry (20, 20, 100, 20) + page2 = QWidget (wiz) + p2Lbl = QLabel ("This is page 2", page2) + p2Lbl.setGeometry (50, 20, 100, 20) + page3 = QWidget (wiz) + p3Lbl = QLabel ("This is page 3", page3) + p3Lbl.setGeometry (80, 20, 100, 20) + + wiz.addPage (page1, "Page 1") + wiz.addPage (page2, "Page 2") + wiz.addPage (page3, "Page 3") + wiz.show () + +if __name__ == "__main__": + print + print "Please run uisampler.py" + print
\ No newline at end of file |