Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 0.9, 0.9.1, and 0.9.1.1

hgthread: show dialog for ui.promptchoice

Changeset 6438c214fed6

Parent 11dc712a7517

by Simon Heimberg

Changes to 2 files · Browse files at 6438c214fed6 Showing diff from parent 11dc712a7517 Diff from another changeset...

Change 1 of 2 Show Entire File hggtk/​gdialog.py Stacked
 
47
48
49
50
 
51
52
53
 
 
54
55
56
 
58
59
60
61
 
62
63
 
64
65
66
67
 
68
69
70
 
47
48
49
 
50
51
 
 
52
53
54
55
56
 
58
59
60
 
61
62
 
63
64
65
66
 
67
68
69
70
@@ -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)
Change 1 of 3 Show Entire File hggtk/​hgthread.py Stacked
 
50
51
52
53
54
55
56
 
60
61
62
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
64
65
 
127
128
129
130
 
131
132
133
 
50
51
52
 
53
54
55
 
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
 
142
143
144
 
145
146
147
148
@@ -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: