~ubuntu-branches/ubuntu/trusty/python3.4/trusty-proposed

« back to all changes in this revision

Viewing changes to Lib/tkinter/messagebox.py

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2013-11-25 09:44:27 UTC
  • Revision ID: package-import@ubuntu.com-20131125094427-lzxj8ap5w01lmo7f
Tags: upstream-3.4~b1
ImportĀ upstreamĀ versionĀ 3.4~b1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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 tkinter.commondialog 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, yes/no is converted into a boolean.
 
74
    if isinstance(res, bool):
 
75
        if res:
 
76
            return YES
 
77
        return NO
 
78
    # In others we get a Tcl_Obj.
 
79
    return str(res)
 
80
 
 
81
def showinfo(title=None, message=None, **options):
 
82
    "Show an info message"
 
83
    return _show(title, message, INFO, OK, **options)
 
84
 
 
85
def showwarning(title=None, message=None, **options):
 
86
    "Show a warning message"
 
87
    return _show(title, message, WARNING, OK, **options)
 
88
 
 
89
def showerror(title=None, message=None, **options):
 
90
    "Show an error message"
 
91
    return _show(title, message, ERROR, OK, **options)
 
92
 
 
93
def askquestion(title=None, message=None, **options):
 
94
    "Ask a question"
 
95
    return _show(title, message, QUESTION, YESNO, **options)
 
96
 
 
97
def askokcancel(title=None, message=None, **options):
 
98
    "Ask if operation should proceed; return true if the answer is ok"
 
99
    s = _show(title, message, QUESTION, OKCANCEL, **options)
 
100
    return s == OK
 
101
 
 
102
def askyesno(title=None, message=None, **options):
 
103
    "Ask a question; return true if the answer is yes"
 
104
    s = _show(title, message, QUESTION, YESNO, **options)
 
105
    return s == YES
 
106
 
 
107
def askyesnocancel(title=None, message=None, **options):
 
108
    "Ask a question; return true if the answer is yes, None if cancelled."
 
109
    s = _show(title, message, QUESTION, YESNOCANCEL, **options)
 
110
    # s might be a Tcl index object, so convert it to a string
 
111
    s = str(s)
 
112
    if s == CANCEL:
 
113
        return None
 
114
    return s == YES
 
115
 
 
116
def askretrycancel(title=None, message=None, **options):
 
117
    "Ask if operation should be retried; return true if the answer is yes"
 
118
    s = _show(title, message, WARNING, RETRYCANCEL, **options)
 
119
    return s == RETRY
 
120
 
 
121
 
 
122
# --------------------------------------------------------------------
 
123
# test stuff
 
124
 
 
125
if __name__ == "__main__":
 
126
 
 
127
    print("info", showinfo("Spam", "Egg Information"))
 
128
    print("warning", showwarning("Spam", "Egg Warning"))
 
129
    print("error", showerror("Spam", "Egg Alert"))
 
130
    print("question", askquestion("Spam", "Question?"))
 
131
    print("proceed", askokcancel("Spam", "Proceed?"))
 
132
    print("yes/no", askyesno("Spam", "Got it?"))
 
133
    print("yes/no/cancel", askyesnocancel("Spam", "Want it?"))
 
134
    print("try again", askretrycancel("Spam", "Try again?"))