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