On Sun, Oct 4, 2009 at 2:59 PM, Adrian Buehlmann <adr...@cadifra.com> wrote:

> # HG changeset patch
> # User Adrian Buehlmann <adr...@cadifra.com>
> # Date 1254685874 -7200
> # Node ID 8b01e4132762b3b34b9392f69366ad4769e4e30c
> # Parent  fa025bd9f03f50e316fe3c5bfe23910ed4b05acd
> gdialog: refactor: use dicts for menu entries
>
> don't use the text of the menu item to address it
>

Interesting.  Is this to avoid using translated strings as keys?

Unfortunately, this conflicts with a change I just made to history.py.

and..



> diff --git a/tortoisehg/hgtk/commit.py b/tortoisehg/hgtk/commit.py
> --- a/tortoisehg/hgtk/commit.py
> +++ b/tortoisehg/hgtk/commit.py
> @@ -176,22 +176,21 @@ class GCommit(GStatus):
>                 else:
>                     frame.hide()
>                 setattr(self, statename, show)
> -        no = False
>         return [(_('_View'),
> -           [(_('Advanced'), True, toggle, ['advanced'],
> self.showadvanced),
> -            (_('Parents'), True, toggle, ['parents'], self.showparents),
> -            ('----', None, None, None, None),
> -            (_('Refresh'), False, refresh, [], gtk.STOCK_REFRESH)]),
> +           [dict(text=_('Advanced'), ascheck=True, func=toggle,
> args=['advanced'], var=self.showadvanced),
> +            dict(text=_('Parents'), ascheck=True, func=toggle,
> args=['parents'], var=self.showparents),
> +            dict(text='----'),
> +            dict(text=_('Refresh'), func=refresh,
> icon=gtk.STOCK_REFRESH)]),
>            (_('_Operations'), [
> -            (_('_Commit'), no, self.commit_clicked, [], gtk.STOCK_OK),
> -            (_('_Undo'), no, self.undo_clicked, [], gtk.STOCK_UNDO),
> -            ('----', None, None, None, None),
> -            (_('_Diff'), no, self.diff_clicked, [],
> gtk.STOCK_JUSTIFY_FILL),
> -            (_('Re_vert'), no, self.revert_clicked, [],
> gtk.STOCK_MEDIA_REWIND),
> -            (_('_Add'), no, self.add_clicked, [], gtk.STOCK_ADD),
> -            (_('_Remove'), no, self.remove_clicked, [], gtk.STOCK_DELETE),
> -            (_('Move'), no, self.move_clicked, [], gtk.STOCK_JUMP_TO),
> -            (_('_Forget'), no, self.forget_clicked, [],
> gtk.STOCK_CLEAR)]),
> +            dict(text=_('_Commit'), func=self.commit_clicked,
> icon=gtk.STOCK_OK),
> +            dict(name='undo', text=_('_Undo'), func=self.undo_clicked,
> icon=gtk.STOCK_UNDO),
> +            dict(text='----'),
> +            dict(text=_('_Diff'), func=self.diff_clicked,
> icon=gtk.STOCK_JUSTIFY_FILL),
> +            dict(text=_('Re_vert'), func=self.revert_clicked,
> icon=gtk.STOCK_MEDIA_REWIND),
> +            dict(text=_('_Add'), func=self.add_clicked,
> icon=gtk.STOCK_ADD),
> +            dict(text=_('_Remove'), func=self.remove_clicked,
> icon=gtk.STOCK_DELETE),
> +            dict(text=_('Move'), func=self.move_clicked,
> icon=gtk.STOCK_JUMP_TO),
> +            dict(text=_('_Forget'), func=self.forget_clicked,
> icon=gtk.STOCK_CLEAR)]),
>            ]
>
>     def save_settings(self):
> @@ -618,7 +617,7 @@ class GCommit(GStatus):
>         can_undo = os.path.exists(self.repo.sjoin("undo")) and \
>                 self.last_commit_id is not None
>         self.undo_button.set_sensitive(can_undo)
> -        self.get_menuitem(_('_Undo')).set_sensitive(can_undo)
> +        self.get_menuitem('undo').set_sensitive(can_undo)
>
>     def check_merge(self):
>         if self.is_merge():
> diff --git a/tortoisehg/hgtk/gdialog.py b/tortoisehg/hgtk/gdialog.py
> --- a/tortoisehg/hgtk/gdialog.py
> +++ b/tortoisehg/hgtk/gdialog.py
> @@ -333,8 +333,8 @@ class GDialog(gtk.Window):
>     def get_toolbutton(self, label):
>         return self.toolbuttons[label]
>
> -    def get_menuitem(self, label):
> -        return self.menuitems.get(label, None)
> +    def get_menuitem(self, name):
> +        return self.menuitems[name]
>
>     def get_reponame(self):
>         return hglib.get_reponame(self.repo)
> @@ -428,46 +428,53 @@ class GDialog(gtk.Window):
>         if menus:
>             allmenus = [
>           (_('_Tools'),
> -           [(_('Changelog'), False, self.launch, ['log'], 'menulog.ico'),
> -            (_('Commit'), False, self.launch, ['commit'],
> 'menucommit.ico'),
> -            (_('Datamine'), False, self.launch, ['datamine'],
> 'menurepobrowse.ico'),
> -            (_('Recovery'), False, self.launch, ['recover'],
> 'general.ico'),
> -            (_('Serve'), False, self.launch, ['serve'], 'proxy.ico'),
> -            (_('Shelve'), False, self.launch, ['shelve'], 'shelve.ico'),
> -            (_('Synchronize'), False, self.launch, ['synch'],
> 'menusynch.ico'),
> -            (_('Settings'), False, self.launch, ['repoconfig'],
> 'settings_repo.ico')])
> +           [dict(text=_('Changelog'), func=self.launch, args=['log'],
> icon='menulog.ico'),
> +            dict(text=_('Commit'), func=self.launch, args=['commit'],
> icon='menucommit.ico'),
> +            dict(text=_('Datamine'), func=self.launch, args=['datamine'],
> icon='menurepobrowse.ico'),
> +            dict(text=_('Recovery'), func=self.launch, args=['recover'],
> icon='general.ico'),
> +            dict(text=_('Serve'), func=self.launch, args=['serve'],
> icon='proxy.ico'),
> +            dict(text=_('Shelve'), func=self.launch, args=['shelve'],
> icon='shelve.ico'),
> +            dict(text=_('Synchronize'), func=self.launch, args=['synch'],
> icon='menusynch.ico'),
> +            dict(text=_('Settings'), func=self.launch,
> args=['repoconfig'], icon='settings_repo.ico')])
>            ] + menus + [
>           (_('_Help'),
> -           [(_('Contents'), False, self.helpcontents, [], gtk.STOCK_INFO),
> -            (_('About'), False, self.launch, ['about'], gtk.STOCK_ABOUT)])
> +           [dict(text=_('Contents'), func=self.helpcontents,
> icon=gtk.STOCK_INFO),
> +            dict(text=_('About'), func=self.launch, args=['about'],
> icon=gtk.STOCK_ABOUT)])
>           ]
>             menubar = gtk.MenuBar()
>             for title, items in allmenus:
>                 menu = gtk.Menu()
> -                for name, ascheck, func, args, icon_or_var in items:
> -                    if name == '----':
> +                for d in items:
> +                    text = d['text']
> +                    name = d.get('name')
> +                    func = d.get('func')
> +                    ascheck = d.get('ascheck', False)
> +                    args = d.get('args', [])
> +                    icon = d.get('icon')
> +                    var = d.get('var', True)
> +                    if text == '----':
>                         item = gtk.SeparatorMenuItem()
>                     else:
>                         if ascheck:
> -                            item = gtk.CheckMenuItem(name)
> -                            item.set_active(icon_or_var)
> -                        elif icon_or_var:
> -                            item = gtk.ImageMenuItem(name)
> -                            if icon_or_var.startswith('gtk'):
> -                                img = gtk.image_new_from_stock(
> -                                    icon_or_var, gtk.ICON_SIZE_MENU)
> +                            item = gtk.CheckMenuItem(text)
> +                            item.set_active(var)
> +                        elif icon:
> +                            item = gtk.ImageMenuItem(text)
> +                            if icon.startswith('gtk'):
> +                                img = gtk.image_new_from_stock(icon,
> gtk.ICON_SIZE_MENU)
>                             else:
>                                 img = gtk.Image()
> -                                ico = paths.get_tortoise_icon(icon_or_var)
> +                                ico = paths.get_tortoise_icon(icon)
>                                 if ico:
>                                     width, height =
> gtk.icon_size_lookup(gtk.ICON_SIZE_MENU)
>                                     pixbuf =
> gtk.gdk.pixbuf_new_from_file_at_size(ico, width, height)
>                                     img.set_from_pixbuf(pixbuf)
>                             item.set_image(img)
>                         else:
> -                            item = gtk.MenuItem(name)
> +                            item = gtk.MenuItem(text)
>                         item.connect('activate', func, *args)
> -                        self.menuitems[name] = item
> +                        if name:
> +                            self.menuitems[name] = item
>                     menu.append(item)
>                 item = gtk.MenuItem(title)
>                 item.set_submenu(menu)
> diff --git a/tortoisehg/hgtk/history.py b/tortoisehg/hgtk/history.py
> --- a/tortoisehg/hgtk/history.py
> +++ b/tortoisehg/hgtk/history.py
> @@ -118,38 +118,38 @@ class GLog(gdialog.GDialog):
>         lb = self.get_live_branches()
>         bmenus = []
>         if len(lb) > 1 or (lb and lb[0] != 'default'):
> -            bmenus.append(('----', None, None, None, None))
> +            bmenus.append(dict(text='----'))
>             for name in lb[:10]:
> -                bmenus.append((hglib.toutf(name), False, navigate, [name],
> None))
> -
> +                bmenus.append(dict(text=hglib.toutf(name), func=navigate,
> args=[name]))
> +
>         fnc = self.toggle_view_column
>         if self.repo.ui.configbool('tortoisehg', 'disable-syncbar'):
>             sync_bar_item = []
>         else:
> -            sync_bar_item = [(_('Sync Bar'), True,
> self.toggle_show_syncbar,
> -                    [], self.show_syncbar)]
> +            sync_bar_item = [dict(text=_('Sync Bar'), ascheck=True,
> +                    func=self.toggle_show_syncbar, var=self.show_syncbar)]
>
>         return [(_('_View'), sync_bar_item + [
> -            (_('Filter Bar'), True, self.toggle_show_filterbar, [],
> -                self.show_filterbar),
> -            ('----', None, None, None, None),
> -            (_('Choose Details...'), False, self.details_clicked, [],
> None),
> -            ('----', None, None, None, None),
> -            (_('Refresh'), False, refresh, [False], gtk.STOCK_REFRESH),
> -            (_('Reset Marks'), False, refresh, [True], gtk.STOCK_REMOVE),
> -            ('----', None, None, None, None),
> -            (_('Compact Graph'), True, self.toggle_compactgraph, [],
> -                self.compactgraph),
> -            (_('Color by Branch'), True, self.toggle_branchcolor, [],
> -                self.branch_color),
> -            (_('Ignore Max Diff Size'), True, disable_maxdiff, [], False),
> +            dict(text=_('Filter Bar'), ascheck=True,
> func=self.toggle_show_filterbar,
> +                var=self.show_filterbar),
> +            dict(text='----'),
> +            dict(text=_('Choose Details...'), func=self.details_clicked),
> +            dict(text='----'),
> +            dict(text=_('Refresh'), func=refresh, args=[False],
> icon=gtk.STOCK_REFRESH),
> +            dict(text=_('Reset Marks'), func=refresh, args=[True],
> icon=gtk.STOCK_REMOVE),
> +            dict(text='----'),
> +            dict(name='compact-graph', text=('Compact Graph'),
> ascheck=True,
> +                func=self.toggle_compactgraph, var=self.compactgraph),
> +            dict(name='color-by-branch', text=_('Color by Branch'),
> ascheck=True,
> +                func=self.toggle_branchcolor, var=self.branch_color),
> +            dict(text=_('Ignore Max Diff Size'), ascheck=True,
> func=disable_maxdiff, var=False),
>                 ]),
>
>             (_('_Navigate'), [
> -                (_('Tip'), False, navigate, ['tip'], None),
> -                (_('Working Parent'), False, navigate, ['.'], None),
> -                ('----', None, None, None, None),
> -                (_('Revision...'), False, navigate, [None], None),
> +                dict(text=_('Tip'), func=navigate, args=['tip']),
> +                dict(text=_('Working Parent'), func=navigate, args=['.']),
> +                dict(text='----'),
> +                dict(text=_('Revision...'), func=navigate, args=[None]),
>                 ] + bmenus)
>             ]
>
> @@ -280,9 +280,9 @@ class GLog(gdialog.GDialog):
>                     if self.graphcol != show:
>                         self.graphcol = show
>                         reload = True
> -                        item = self.get_menuitem(_('Compact Graph'))
> +                        item = self.get_menuitem('compact-graph')
>                         item.set_sensitive(self.graphcol)
> -                        item = self.get_menuitem(_('Color by Branch'))
> +                        item = self.get_menuitem('color-by-branch')
>                         item.set_sensitive(self.graphcol)
>                 else:
>                     self.graphview.set_property(property, show)
> @@ -408,8 +408,8 @@ class GLog(gdialog.GDialog):
>             # ignore unknown column names, these could originate from
> garbeled
>             # persisted data
>             pass
> -        self.get_menuitem(_('Compact Graph')).set_sensitive(self.graphcol)
> -        self.get_menuitem(_('Color by
> Branch')).set_sensitive(self.graphcol)
> +        self.get_menuitem('compact-graph').set_sensitive(self.graphcol)
> +        self.get_menuitem('color-by-branch').set_sensitive(self.graphcol)
>
>         # enable MQ panel
>         self.enable_mqpanel()
> diff --git a/tortoisehg/hgtk/status.py b/tortoisehg/hgtk/status.py
> --- a/tortoisehg/hgtk/status.py
> +++ b/tortoisehg/hgtk/status.py
> @@ -462,8 +462,6 @@ class GStatus(gdialog.GDialog):
>         for label in (_('_Diff'), _('Re_vert'), _('_Add'), _('_Remove'),
>                       _('Move'), _('_Forget')):
>             self.get_toolbutton(label).set_sensitive(sensitive)
> -            i = self.get_menuitem(label)
> -            if i: i.set_sensitive(sensitive)
>         if self.diff_notebook.get_current_page() == 2:
>             self.update_commit_preview()
>

Has this functionality been moved somewhere else?

--
Steve Borho
------------------------------------------------------------------------------
Come build with us! The BlackBerry&reg; Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9&#45;12, 2009. Register now&#33;
http://p.sf.net/sfu/devconf
_______________________________________________
Tortoisehg-develop mailing list
Tortoisehg-develop@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tortoisehg-develop

Reply via email to