# 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

Reply via email to