summaryrefslogtreecommitdiffstats
path: root/Mac/Lib
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/Lib')
-rw-r--r--Mac/Lib/EasyDialogs.py76
1 files changed, 26 insertions, 50 deletions
diff --git a/Mac/Lib/EasyDialogs.py b/Mac/Lib/EasyDialogs.py
index 1ac39b3..6574336 100644
--- a/Mac/Lib/EasyDialogs.py
+++ b/Mac/Lib/EasyDialogs.py
@@ -20,8 +20,10 @@ import QuickDraw
import Dialogs
import Windows
import Dlg,Win,Evt,Events # sdm7g
+import Ctl
import MacOS
import string
+from ControlAccessor import * # Also import Controls constants
def cr2lf(text):
if '\r' in text:
@@ -97,7 +99,7 @@ def AskString(prompt, default = "", id=261, ok=None, cancel=None):
return cr2lf(GetDialogItemText(h))
if n == 2: return None
-def AskPassword(prompt, default='', id=264):
+def AskPassword(prompt, default='', id=264, ok=None, cancel=None):
"""Display a PROMPT string and a text entry field with a DEFAULT string.
The string is displayed as bullets only.
@@ -114,58 +116,28 @@ def AskPassword(prompt, default='', id=264):
if not d:
print "Can't get DLOG resource with id =", id
return
- h = d.GetDialogItemAsControl(3) # STATIC TEXT ITEM <= prompt
+ h = d.GetDialogItemAsControl(3)
SetDialogItemText(h, lf2cr(prompt))
- h = d.GetDialogItemAsControl(4) # EDIT TEXT ITEM
+ pwd = d.GetDialogItemAsControl(4)
bullets = '\245'*len(default)
- SetDialogItemText(h, bullets )
- d.SelectDialogItemText(4, 999, 999)
+## SetControlData(pwd, kControlEditTextPart, kControlEditTextTextTag, bullets)
+ SetControlData(pwd, kControlEditTextPart, kControlEditTextPasswordTag, default)
+ d.SelectDialogItemText(4, 0, 999)
+ Ctl.SetKeyboardFocus(d, pwd, kControlEditTextPart)
+ if ok != None:
+ h = d.GetDialogItemAsControl(1)
+ h.SetControlTitle(ok)
+ if cancel != None:
+ h = d.GetDialogItemAsControl(2)
+ h.SetControlTitle(cancel)
d.SetDialogDefaultItem(Dialogs.ok)
d.SetDialogCancelItem(Dialogs.cancel)
- string = default
- oldschedparams = MacOS.SchedParams(0,0)
while 1:
- ready,ev = Evt.WaitNextEvent(Events.everyEvent, 6)
- if not ready: continue
- what,msg,when,where,mod = ev
- if what == 0 : Dlg.DialogSelect(ev) # for blinking caret
- elif Dlg.IsDialogEvent(ev):
- if what in (Events.keyDown, Events.autoKey):
- charcode = msg & Events.charCodeMask
- if ( mod & Events.cmdKey ):
- MacOS.SysBeep()
- continue # don't do cut & paste commands
- else:
- if charcode == Events.kReturnCharCode:
- break
- elif charcode == Events.kEscapeCharCode:
- string = None
- break
- elif charcode in (Events.kLeftArrowCharCode,
- Events.kBackspaceCharCode):
- string = string[:-1]
- else:
- string = string + chr(charcode)
- msg = 0245 # Octal code for bullet
- ev = (what,msg,when,where,mod)
- rs, win, item = Dlg.DialogSelect(ev)
- if item == Dialogs.ok :
- break
- elif item == Dialogs.cancel :
- string = None
- break
- elif what == Events.mouseDown:
- part, win = Win.FindWindow(where)
- if part == Windows.inDrag and win:
- win.DragWindow(where, screenbounds)
- elif part == Windows.inMenuBar:
- MacOS.HandleEvent(ev)
- else:
- MacOS.SysBeep() # Cannot handle selections, unfortunately
-
- elif what == Events.updateEvt: MacOS.HandleEvent(ev)
- apply(MacOS.SchedParams, oldschedparams)
- return string
+ n = ModalDialog(None)
+ if n == 1:
+ h = d.GetDialogItemAsControl(4)
+ return cr2lf(GetControlData(pwd, kControlEditTextPart, kControlEditTextPasswordTag))
+ if n == 2: return None
def AskYesNoCancel(question, default = 0, yes=None, no=None, cancel=None, id=262):
"""Display a QUESTION string which can be answered with Yes or No.
@@ -302,10 +274,14 @@ def test():
Message("Testing EasyDialogs.")
ok = AskYesNoCancel("Do you want to proceed?")
- ok = AskYesNoCancel("Do you want to identify?", yes="Indentify", no="Don't identify")
+ ok = AskYesNoCancel("Do you want to identify?", yes="Identify", no="No")
if ok > 0:
s = AskString("Enter your first name", "Joe")
- Message("Thank you,\n%s" % `s`)
+ s2 = AskPassword("Okay %s, tell us your nickname"%s, s, cancel="None")
+ if not s2:
+ Message("%s has no secret nickname"%s)
+ else:
+ Message("Hello everybody!!\nThe secret nickname of %s is %s!!!"%(s, s2))
text = ( "Working Hard...", "Hardly Working..." ,
"So far, so good!", "Keep on truckin'" )
bar = ProgressBar("Progress, progress...", 100)