# HG changeset patch
# User Adrian Buehlmann <adr...@cadifra.com>
# Date 1254750933 -7200
# Node ID bb2fb44256e07307cda7c9d2c2c9d55f739676ac
# Parent  2bbd439e063cbac6b7c66ba9734ef5c542511878
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,31 @@ 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'], check=self.showadvanced),
+            dict(text=_('Parents'), ascheck=True, func=toggle,
+                args=['parents'], check=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(name='diff', text=_('_Diff'), func=self.diff_clicked,
+                icon=gtk.STOCK_JUSTIFY_FILL),
+            dict(name='revert', text=_('Re_vert'), func=self.revert_clicked,
+                icon=gtk.STOCK_MEDIA_REWIND),
+            dict(name='add', text=_('_Add'), func=self.add_clicked,
+                icon=gtk.STOCK_ADD),
+            dict(name='remove', text=_('_Remove'), func=self.remove_clicked,
+                icon=gtk.STOCK_DELETE),
+            dict(name='move', text=_('Move'), func=self.move_clicked,
+                icon=gtk.STOCK_JUMP_TO),
+            dict(name='forget', text=_('_Forget'), func=self.forget_clicked,
+                icon=gtk.STOCK_CLEAR)]),
            ]
 
     def save_settings(self):
@@ -618,7 +627,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,11 @@ 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, throw=True):
+        if throw:
+            return self.menuitems[name]
+        else:
+            return self.menuitems.get(name)
 
     def get_reponame(self):
         return hglib.get_reponame(self.repo)
@@ -428,46 +431,66 @@ 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')
+                    check = d.get('check', False)
+                    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'):
+                            item = gtk.CheckMenuItem(text)
+                            item.set_active(check)
+                        elif icon:
+                            item = gtk.ImageMenuItem(text)
+                            if icon.startswith('gtk'):
                                 img = gtk.image_new_from_stock(
-                                    icon_or_var, gtk.ICON_SIZE_MENU)
+                                    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)
+                                    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
@@ -124,49 +124,55 @@ 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, check=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, check=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, check=self.compactgraph),
+            dict(name='color-by-branch', text=_('Color by Branch'),
+                ascheck=True, func=self.toggle_branchcolor,
+                check=self.branch_color),
+            dict(text=_('Ignore Max Diff Size'), ascheck=True, 
+                func=disable_maxdiff),
                 ]),
 
             (_('_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),
 
             (_('_Synchronize'), [
-                (_('Incoming'), False, self.incoming_clicked, [], None),
-                (_('Pull'), False, self.pull_clicked, [], None),
-                (_('Outgoing'), False, self.outgoing_clicked, [], None),
-                (_('Push'), False, self.push_clicked, [], None),
-                (_('Email...'), False, self.email_clicked, [], None),
-                ('----', None, None, None, None),
-                (_('Use proxy server'), True, toggle_proxy, [], False),
-                (_('Force push'), True, toggle_force, [], False),
+                dict(text=_('Incoming'), func=self.incoming_clicked),
+                dict(text=_('Pull'), func=self.pull_clicked),
+                dict(text=_('Outgoing'), func=self.outgoing_clicked),
+                dict(text=_('Push'), func=self.push_clicked),
+                dict(text=_('Email...'), func=self.email_clicked),
+                dict(text='----'),
+                dict(name='use-proxy-server', text=_('Use proxy server'),
+                    ascheck=True, func=toggle_proxy),
+                dict(text=_('Force push'), ascheck=True, func=toggle_force),
                 ])
             ]
 
@@ -297,9 +303,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)
@@ -425,9 +431,11 @@ 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)
-        item = self.get_menuitem(_('Use proxy server'))
+
+        self.get_menuitem('compact-graph').set_sensitive(self.graphcol)
+        self.get_menuitem('color-by-branch').set_sensitive(self.graphcol)
+
+        item = self.get_menuitem('use-proxy-server')
         if ui.ui().config('http_proxy', 'host'):
             item.set_sensitive(True)
             item.set_active(True)
@@ -438,7 +446,7 @@ class GLog(gdialog.GDialog):
         self.enable_mqpanel()
 
     def get_proxy_args(self):
-        item = self.get_menuitem(_('Use proxy server'))
+        item = self.get_menuitem('use-proxy-server')
         if item.get_property('sensitive') and not item.get_active():
             return ['--config', 'http_proxy.host=']
         else:
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,10 @@ 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)
+        for cmd in ('diff', 'revert', 'add', 'remove', 'move', 'forget'):
+            i = self.get_menuitem(cmd, throw=False)
+            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