# HG changeset patch # User Simon Heimberg <sim...@besonet.ch> # Date 1247124969 -7200 # Node ID 677ddd81b99bf99be1327e624bbbacdab0606ddc # Parent 62d7b1d1d400c64ba662bd7482f5366970d4488e hgthread: show dialog for ui.promptchoice
diff -r 62d7b1d1d400 -r 677ddd81b99b hggtk/gdialog.py --- a/hggtk/gdialog.py Mit Mai 27 09:24:35 2009 +0200 +++ b/hggtk/gdialog.py Don Jul 09 09:36:09 2009 +0200 @@ -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) diff -r 62d7b1d1d400 -r 677ddd81b99b hggtk/hgthread.py --- a/hggtk/hgthread.py Mit Mai 27 09:24:35 2009 +0200 +++ b/hggtk/hgthread.py Don Jul 09 09:36:09 2009 +0200 @@ -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: ------------------------------------------------------------------------------ Enter the BlackBerry Developer Challenge This is your chance to win up to $100,000 in prizes! For a limited time, vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize details at: http://p.sf.net/sfu/Challenge _______________________________________________ Tortoisehg-develop mailing list Tortoisehg-develop@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tortoisehg-develop