summaryrefslogtreecommitdiff
path: root/Mac/Lib/EasyDialogs.py
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/Lib/EasyDialogs.py')
-rw-r--r--Mac/Lib/EasyDialogs.py110
1 files changed, 110 insertions, 0 deletions
diff --git a/Mac/Lib/EasyDialogs.py b/Mac/Lib/EasyDialogs.py
new file mode 100644
index 0000000000..41edd7e08b
--- /dev/null
+++ b/Mac/Lib/EasyDialogs.py
@@ -0,0 +1,110 @@
+"""Easy to use dialogs.
+
+Message(msg) -- display a message and an OK button.
+AskString(prompt, default) -- ask for a string, display OK and Cancel buttons.
+AskYesNoCancel(question, default) -- display a question and Yes, No and Cancel buttons.
+
+More documentation in each function.
+This module uses DLOG resources 256, 257 and 258.
+Based upon STDWIN dialogs with the same names and functions.
+"""
+
+from Dlg import GetNewDialog, SetIText, GetIText, ModalDialog
+
+
+def Message(msg):
+ """Display a MESSAGE string.
+
+ Return when the user clicks the OK button or presses Return.
+
+ The MESSAGE string can be at most 255 characters long.
+ """
+
+ id = 256
+ d = GetNewDialog(id, -1)
+ if not d:
+ print "Can't get DLOG resource with id =", id
+ return
+ tp, h, rect = d.GetDItem(2)
+ SetIText(h, msg)
+ while 1:
+ n = ModalDialog(None)
+ if n == 1:
+ return
+
+
+def AskString(prompt, default = ""):
+ """Display a PROMPT string and a text entry field with a DEFAULT string.
+
+ Return the contents of the text entry field when the user clicks the
+ OK button or presses Return.
+ Return None when the user clicks the Cancel button.
+
+ If omitted, DEFAULT is empty.
+
+ The PROMPT and DEFAULT strings, as well as the return value,
+ can be at most 255 characters long.
+ """
+
+ id = 257
+ d = GetNewDialog(id, -1)
+ if not d:
+ print "Can't get DLOG resource with id =", id
+ return
+ tp, h, rect = d.GetDItem(3)
+ SetIText(h, prompt)
+ tp, h, rect = d.GetDItem(4)
+ SetIText(h, default)
+ d.SelIText(4, 0, 255)
+ while 1:
+ n = ModalDialog(None)
+ if n == 1:
+ tp, h, rect = d.GetDItem(4)
+ return GetIText(h)
+ if n == 2: return None
+
+
+def AskYesNoCancel(question, default = 0):
+## """Display a QUESTION string which can be answered with Yes or No.
+##
+## Return 1 when the user clicks the Yes button.
+## Return 0 when the user clicks the No button.
+## Return -1 when the user clicks the Cancel button.
+##
+## When the user presses Return, the DEFAULT value is returned.
+## If omitted, this is 0 (No).
+##
+## The QUESTION strign ca be at most 255 characters.
+## """
+
+ id = 258
+ d = GetNewDialog(id, -1)
+ if not d:
+ print "Can't get DLOG resource with id =", id
+ return
+ # Button assignments:
+ # 1 = default (invisible)
+ # 2 = Yes
+ # 3 = No
+ # 4 = Cancel
+ # The question string is item 5
+ tp, h, rect = d.GetDItem(5)
+ SetIText(h, question)
+ while 1:
+ n = ModalDialog(None)
+ if n == 1: return default
+ if n == 2: return 1
+ if n == 3: return 0
+ if n == 4: return -1
+
+
+def test():
+ Message("Testing EasyDialogs.")
+ ok = AskYesNoCancel("Do you want to proceed?")
+ if ok > 0:
+ s = AskString("Enter your first name")
+ Message("Thank you,\015%s" % `s`)
+
+
+if __name__ == '__main__':
+ test()