# 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® 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-12, 2009. Register now! http://p.sf.net/sfu/devconf _______________________________________________ Tortoisehg-develop mailing list Tortoisehg-develop@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tortoisehg-develop