|
1 # tk common message boxes |
|
2 # |
|
3 # this module provides an interface to the native message boxes |
|
4 # available in Tk 4.2 and newer. |
|
5 # |
|
6 # written by Fredrik Lundh, May 1997 |
|
7 # |
|
8 |
|
9 # |
|
10 # options (all have default values): |
|
11 # |
|
12 # - default: which button to make default (one of the reply codes) |
|
13 # |
|
14 # - icon: which icon to display (see below) |
|
15 # |
|
16 # - message: the message to display |
|
17 # |
|
18 # - parent: which window to place the dialog on top of |
|
19 # |
|
20 # - title: dialog title |
|
21 # |
|
22 # - type: dialog type; that is, which buttons to display (see below) |
|
23 # |
|
24 |
|
25 from tkCommonDialog import Dialog |
|
26 |
|
27 # |
|
28 # constants |
|
29 |
|
30 # icons |
|
31 ERROR = "error" |
|
32 INFO = "info" |
|
33 QUESTION = "question" |
|
34 WARNING = "warning" |
|
35 |
|
36 # types |
|
37 ABORTRETRYIGNORE = "abortretryignore" |
|
38 OK = "ok" |
|
39 OKCANCEL = "okcancel" |
|
40 RETRYCANCEL = "retrycancel" |
|
41 YESNO = "yesno" |
|
42 YESNOCANCEL = "yesnocancel" |
|
43 |
|
44 # replies |
|
45 ABORT = "abort" |
|
46 RETRY = "retry" |
|
47 IGNORE = "ignore" |
|
48 OK = "ok" |
|
49 CANCEL = "cancel" |
|
50 YES = "yes" |
|
51 NO = "no" |
|
52 |
|
53 |
|
54 # |
|
55 # message dialog class |
|
56 |
|
57 class Message(Dialog): |
|
58 "A message box" |
|
59 |
|
60 command = "tk_messageBox" |
|
61 |
|
62 |
|
63 # |
|
64 # convenience stuff |
|
65 |
|
66 # Rename _icon and _type options to allow overriding them in options |
|
67 def _show(title=None, message=None, _icon=None, _type=None, **options): |
|
68 if _icon and "icon" not in options: options["icon"] = _icon |
|
69 if _type and "type" not in options: options["type"] = _type |
|
70 if title: options["title"] = title |
|
71 if message: options["message"] = message |
|
72 res = Message(**options).show() |
|
73 # In some Tcl installations, Tcl converts yes/no into a boolean |
|
74 if isinstance(res, bool): |
|
75 if res: return YES |
|
76 return NO |
|
77 return res |
|
78 |
|
79 def showinfo(title=None, message=None, **options): |
|
80 "Show an info message" |
|
81 return _show(title, message, INFO, OK, **options) |
|
82 |
|
83 def showwarning(title=None, message=None, **options): |
|
84 "Show a warning message" |
|
85 return _show(title, message, WARNING, OK, **options) |
|
86 |
|
87 def showerror(title=None, message=None, **options): |
|
88 "Show an error message" |
|
89 return _show(title, message, ERROR, OK, **options) |
|
90 |
|
91 def askquestion(title=None, message=None, **options): |
|
92 "Ask a question" |
|
93 return _show(title, message, QUESTION, YESNO, **options) |
|
94 |
|
95 def askokcancel(title=None, message=None, **options): |
|
96 "Ask if operation should proceed; return true if the answer is ok" |
|
97 s = _show(title, message, QUESTION, OKCANCEL, **options) |
|
98 return s == OK |
|
99 |
|
100 def askyesno(title=None, message=None, **options): |
|
101 "Ask a question; return true if the answer is yes" |
|
102 s = _show(title, message, QUESTION, YESNO, **options) |
|
103 return s == YES |
|
104 |
|
105 def askretrycancel(title=None, message=None, **options): |
|
106 "Ask if operation should be retried; return true if the answer is yes" |
|
107 s = _show(title, message, WARNING, RETRYCANCEL, **options) |
|
108 return s == RETRY |
|
109 |
|
110 |
|
111 # -------------------------------------------------------------------- |
|
112 # test stuff |
|
113 |
|
114 if __name__ == "__main__": |
|
115 |
|
116 print "info", showinfo("Spam", "Egg Information") |
|
117 print "warning", showwarning("Spam", "Egg Warning") |
|
118 print "error", showerror("Spam", "Egg Alert") |
|
119 print "question", askquestion("Spam", "Question?") |
|
120 print "proceed", askokcancel("Spam", "Proceed?") |
|
121 print "yes/no", askyesno("Spam", "Got it?") |
|
122 print "try again", askretrycancel("Spam", "Try again?") |