# 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

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()
 

------------------------------------------------------------------------------
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