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

stable csinfo: fix mechanism of customizing csinfo

Changeset 6d913723eea7

Parent dcdb3ff14d00

by Yuki KODAMA

Changes to 3 files · Browse files at 6d913723eea7 Showing diff from parent dcdb3ff14d00 Diff from another changeset...

 
381
382
383
384
385
386
387
388
389
390
391
392
 
 
 
 
 
 
 
 
 
 
393
394
395
 
381
382
383
 
 
 
 
 
 
 
 
 
384
385
386
387
388
389
390
391
392
393
394
395
396
@@ -381,15 +381,16 @@
  style = csinfo.labelstyle(contents=('Parent: %(rev)s',   ' %(athead)s', ' %(branch)s', ' %(tags)s',   ' %(summary)s'), selectable=True) - def data_func(widget, ctx): - return widget.get_data('ishead') or self.mqmode - def markup_func(widget, value): - if value: - return '' - text = '[%s]' % _('not at head revision') - return gtklib.markup(text, weight='bold') - custom = csinfo.custom(athead={ - 'data': data_func, 'markup': markup_func}) + def data_func(widget, item, ctx): + if item == 'athead': + return widget.get_data('ishead') or self.mqmode + raise csinfo.UnknownItem(item) + def markup_func(widget, item, value): + if item == 'athead' and value is False: + text = '[%s]' % _('not at head revision') + return gtklib.markup(text, weight='bold') + raise csinfo.UnknownItem(item) + custom = csinfo.custom(data=data_func, markup=markup_func)   factory = csinfo.factory(self.repo, custom, style)   def add_parent():   label = factory()
 
109
110
111
 
 
 
112
113
114
 
121
122
123
124
 
125
126
 
127
128
129
 
170
171
172
173
 
174
175
176
177
 
 
 
 
 
 
 
 
 
 
178
179
180
 
181
182
 
183
184
185
186
187
188
189
 
 
 
 
 
 
 
 
 
 
 
 
190
191
192
193
194
 
 
 
195
196
197
 
201
202
203
204
 
 
 
205
206
207
208
209
210
 
 
 
 
 
 
 
 
 
 
211
212
213
 
109
110
111
112
113
114
115
116
117
 
124
125
126
 
127
128
 
129
130
131
132
 
173
174
175
 
176
177
 
 
 
178
179
180
181
182
183
184
185
186
187
188
189
 
190
191
 
192
193
194
 
 
 
 
 
195
196
197
198
199
200
201
202
203
204
205
206
207
208
 
 
 
209
210
211
212
213
214
 
218
219
220
 
221
222
223
224
225
226
 
 
 
227
228
229
230
231
232
233
234
235
236
237
238
239
@@ -109,6 +109,9 @@
  else:   raise _("must be specified 'type' in style")   +class UnknownItem(Exception): + pass +  class ChangesetInfo(object):     LABELS = {'rev': _('rev:'), 'revnum': _('rev:'), 'revid': _('rev:'), @@ -121,9 +124,9 @@
    def get_data(self, item, *args):   widget, rev, custom, repo = args - def default_func(widget, ctx): + def default_func(widget, item, ctx):   return None - def preset_func(widget, ctx): + def preset_func(widget, item, ctx):   if item == 'rev':   revnum = self.get_data('revnum', *args)   revid = self.get_data('revid', *args) @@ -170,28 +173,42 @@
  return value   elif item == 'ishead':   return len(ctx.children()) == 0 - return default_func(widget, ctx) + raise UnknownItem(item)   ctx = repo[rev] - if custom.has_key(item) and custom[item].has_key('data'): - return custom[item]['data'](widget, ctx) - return preset_func(widget, ctx) + if custom.has_key('data'): + try: + return custom['data'](widget, item, ctx) + except UnknownItem: + pass + try: + return preset_func(widget, item, ctx) + except UnknownItem: + pass + return default_func(widget, item, ctx)     def get_label(self, item, widget, rev, custom, repo): - def default_func(widget): + def default_func(widget, item):   return '' - def preset_func(widget): + def preset_func(widget, item):   try:   return self.LABELS[item] - except: - return default_func(widget) - if custom.has_key(item) and custom[item].has_key('label'): - return custom[item]['label'](widget) - return preset_func(widget) + except KeyError: + raise UnknownItem(item) + if custom.has_key('label'): + try: + return custom['label'](widget, item) + except UnknownItem: + pass + try: + return preset_func(widget, item) + except UnknownItem: + pass + return default_func(widget, item)     def get_markup(self, item, widget, rev, custom, repo): - def default_func(widget, value): - return gtklib.markup_escape_text(value) - def preset_func(widget, value): + def default_func(widget, item, value): + return '' + def preset_func(widget, item, value):   if item in ('rev', 'revnum', 'revid'):   return gtklib.markup(value, face='monospace', size='9000')   elif item in ('rawbranch', 'branch'): @@ -201,13 +218,22 @@
  opts = dict(color='black', background='#ffffaa')   tags = [gtklib.markup(' %s ' % tag, **opts) for tag in value]   return ' '.join(tags) - return default_func(widget, value) + elif item in ('summary', 'user', 'date'): + return gtklib.markup_escape_text(str(value)) + raise UnknownItem(item)   value = self.get_data(item, widget, rev, custom, repo)   if value is None:   return None - if custom.has_key(item) and custom[item].has_key('markup'): - return custom[item]['markup'](widget, value) - return preset_func(widget, value) + if custom.has_key('markup'): + try: + return custom['markup'](widget, item, value) + except UnknownItem: + pass + try: + return preset_func(widget, item, value) + except UnknownItem: + pass + return default_func(widget, item, value)    class CachedChangesetInfo(ChangesetInfo):  
 
71
72
73
74
75
76
77
78
 
 
 
 
 
 
79
80
81
 
71
72
73
 
 
 
 
 
74
75
76
77
78
79
80
81
82
@@ -71,11 +71,12 @@
  # changeset info   style = csinfo.panelstyle(contents=csinfo.PANEL_DEFAULT + ('ishead',),   margin=5, padding=2) - def markup_func(widget, value): - if value: - return '' - return gtklib.markup(_('Not a head revision!'), weight='bold') - custom = csinfo.custom(ishead={'markup': markup_func}) + def markup_func(widget, item, value): + if item == 'ishead' and value is False: + text = _('Not a head revision!') + return gtklib.markup(text, weight='bold') + raise csinfo.UnknownItem(item) + custom = csinfo.custom(markup=markup_func)   factory = csinfo.factory(repo, custom, style, withupdate=True)     info = factory(rev1, style={'label': _('Merge target (other)')})