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