Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 1.9, 1.9.1, and 1.9.2

qctlib: add CustomPrompt implementation

Changeset af4bf75f1db2

Parent c18facb3e567

by Steve Borho

Changes to one file · Browse files at af4bf75f1db2 Showing diff from parent c18facb3e567 Diff from another changeset...

 
11
12
13
 
14
15
16
 
82
83
84
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
12
13
14
15
16
17
 
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
@@ -11,6 +11,7 @@
 from tortoisehg.util import hglib  from tortoisehg.hgqt.i18n import _  from hgext.color import _styles +  # _styles maps from ui labels to effects  # _effects maps an effect to font style properties. We define a limited  # set of _effects, since we convert color effect names to font style @@ -82,3 +83,40 @@
  msg = QtCore.Qt.escape(msg)   msg = msg.replace('\n', '<br />')   return '<font style="%s">%s</font>' % (style, msg) + +class CustomPrompt(QtGui.QMessageBox): + def __init__(self, title, message, parent, choices, default=None, + esc=None, files=None): + QtGui.QMessageBox.__init__(self, parent) + + self.setWindowTitle(hglib.toutf(title)) + self.setText(hglib.toutf(message)) + if files: + msg = '' + for i, file in enumerate(files): + msg += ' %s\n' % file + if i == 9: + msg += ' ...\n' + break + self.setDetailedText(hglib.toutf(msg)) + self.hotkeys = {} + for i, s in enumerate(choices): + btn = self.addButton(s, QtGui.QMessageBox.AcceptRole) + try: + char = s[s.index('&')+1].lower() + self.hotkeys[char] = btn + if default == i: + self.setDefaultButton(btn) + if esc == i: + self.setEscapeButton(btn) + except ValueError: + pass + + def run(self): + return self.exec_() + + def keyPressEvent(self, event): + for k, btn in self.hotkeys.iteritems(): + if event.text() == k: + btn.emit(QtCore.SIGNAL('clicked()')) + super(CustomPrompt, self).keyPressEvent(event)