Changeset 6d913723eea7…
Parent dcdb3ff14d00…
by
Changes to 3 files · Browse files at 6d913723eea7 Showing diff from parent dcdb3ff14d00 Diff from another changeset...
@@ -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,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,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)')})
|
Loading...