Changeset 6438c214fed6…
Parent 11dc712a7517…
by
Changes to 2 files · Browse files at 6438c214fed6 Showing diff from parent 11dc712a7517 Diff from another changeset...
@@ -47,10 +47,10 @@ class CustomPrompt(gtk.MessageDialog):
''' Custom prompt dialog. Provide a list of choices with ampersands
to delineate response given for each choice (and keyboard
- accelerator). Default must be one of the choice responses.
+ accelerator). Default must be the index of one of the choice responses.
'''
- # ret = CustomPrompt('Title', 'Message', self, ('&Yes', 'N&o'), 'o').run()
- # ret will be (gtk.RESPONSE_DELETE_EVENT, ord('y'), or ord('o'))
+ # ret = CustomPrompt('Title', 'Message', self, ('&Yes', 'N&o'), 1).run()
+ # ret will be (gtk.RESPONSE_DELETE_EVENT, 0 (for yes), or 1 (for no)
def __init__(self, title, message, parent, choices, default=None):
gtk.MessageDialog.__init__(self, parent, gtk.DIALOG_MODAL,
gtk.MESSAGE_QUESTION)
@@ -58,13 +58,13 @@ self.format_secondary_markup('<b>' + hglib.toutf(message) + '</b>')
accel_group = gtk.AccelGroup()
self.add_accel_group(accel_group)
- for s in choices:
+ for i, s in enumerate(choices):
char = s[s.index('&')+1].lower()
- button = self.add_button(s.replace('&', '_'), ord(char))
+ button = self.add_button(s.replace('&', '_'), i)
button.add_accelerator('clicked', accel_group, ord(char), 0,
gtk.ACCEL_VISIBLE)
if default:
- self.set_default_response(ord(default))
+ self.set_default_response(default)
def run(self):
response = gtklib.MessageDialog.run(self)
|
@@ -50,7 +50,6 @@ pass
def prompt(self, msg, choices=None, default="y"):
- import re
if not self.interactive(): return default
try:
# send request to main thread, await response
@@ -60,6 +59,22 @@ raise EOFError
if not r:
return default
+ if choices:
+ # return char for Mercurial 1.3
+ choice = choices[r]
+ return choice[choice.index("&")+1].lower()
+ return r
+ except EOFError:
+ raise util.Abort(_('response expected'))
+
+ def promptchoice(self, msg, choices, default=0):
+ if not self.interactive(): return default
+ try:
+ # send request to main thread, await response
+ self.dialogq.put( (msg, True, choices, default) )
+ r = self.responseq.get(True)
+ if r is None:
+ raise EOFError
return r
except EOFError:
raise util.Abort(_('response expected'))
@@ -127,7 +142,7 @@ if response_id == gtk.RESPONSE_DELETE_EVENT:
self.responseq.put(None)
else:
- self.responseq.put(chr(response_id))
+ self.responseq.put(response_id)
def dialog_response(self, dialog, response_id):
if response_id == gtk.RESPONSE_OK:
|
Loading...