Forwarding to appropriate list :-)
---------- Forwarded message ---------- From: Steve Borho <st...@borho.org> Date: Tue, Sep 8, 2009 at 11:28 PM Subject: [PATCH] Menu bar example To: mercurial-de...@selenic.com # HG changeset patch # User Steve Borho <st...@borho.org> # Date 1252469635 18000 # Node ID 258118fdf801dd1be81ed98c4e6b6753890472be # Parent 1d26e04101671caef8e7df927dafde53aa73d6c5 Menu bar example diff -r 1d26e0410167 -r 258118fdf801 hggtk/commit.py --- a/hggtk/commit.py Tue Sep 08 20:32:31 2009 -0500 +++ b/hggtk/commit.py Tue Sep 08 23:13:55 2009 -0500 @@ -19,7 +19,7 @@ from mercurial import ui, hg, util, patch, cmdutil from thgutil.i18n import _ -from thgutil import shlib, hglib +from thgutil import shlib, hglib, paths from hggtk.status import GStatus, FM_STATUS, FM_CHECKED, FM_PATH_UTF8 from hggtk.status import DM_REJECTED, DM_CHUNK_ID @@ -159,6 +159,56 @@ self.opts['check'] = False + def get_menu_bar(self): + menubar = gtk.MenuBar() + menus = [ + (_('Launch'), False, False, + [(_('Changelog'), self.launch, ['log'], 'menulog.ico'), + (_('Datamine'), self.launch, ['datamine'], 'menurepobrowse.ico'), + (_('Synchronize'), self.launch, ['synch'], 'menusynch.ico'), + (_('Settings'), self.launch, ['repoconfig'], 'settings_repo.ico')]), + + (_('View'), True, False, + [(_('Parents'), self.toggleview, ['parents'], self.showparents), + (_('Advanced'), self.toggleview, ['advanced'], self.showadvanced)]), + + (_('Help'), False, True, + [(_('Contents'), self.helpcontents, ['commit'], gtk.STOCK_INFO), + (_('About'), self.launch, ['about'], gtk.STOCK_ABOUT)]) + ] + for title, aschecks, rightjustified, items in menus: + menu = gtk.Menu() + for name, func, args, icon_or_var in items: + if aschecks: + item = gtk.CheckMenuItem(name) + item.set_active(icon_or_var) + item.set_draw_as_radio(True) + 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) + else: + img = gtk.Image() + ico = paths.get_tortoise_icon(icon_or_var) + if ico: img.set_from_file(ico) + item.set_image(img) + else: + item = gtk.MenuItem(name) + item.connect('activate', func, *args) + menu.append(item) + item = gtk.MenuItem(title) + item.set_submenu(menu) + item.set_right_justified(rightjustified) + menubar.append(item) + return menubar + + def helpcontents(self, item, app): + print 'help contents for', app + + def launch(self, item, app): + print 'launch', app + def save_settings(self): settings = GStatus.save_settings(self) settings['commit-vpane'] = self.vpaned.get_position() @@ -191,23 +241,6 @@ self.commit_clicked, tip=_('commit')) tbbuttons.insert(0, self.undo_button) tbbuttons.insert(0, self.commit_button) - - # append to end of left align area - self.changelog_button = self.make_toolbutton(gtk.STOCK_INDEX, _('Changelog'), - self.changelog_clicked, tip=_('view changelog')) - tbbuttons.append(self.changelog_button) - - # append to align right - sep = gtk.SeparatorToolItem() - sep.set_expand(True) - sep.set_draw(False) - tbbuttons.append(sep) - - self.vmenu = gtk.MenuToolButton('') - # hide the Button widget; we want to see only Menu button - gobject.idle_add(lambda: self.vmenu.child.get_children()[0].hide()) - tbbuttons.append(self.vmenu) - return tbbuttons def should_live(self, widget=None, event=None): @@ -329,8 +362,6 @@ self.parent2_label = plabel() vbox2.pack_start(self.parents_frame, False, False) - self.vmenu.set_menu(self.view_menu()) - self.vpaned = gtk.VPaned() self.vpaned.pack1(vbox, shrink=False) self.vpaned.pack2(vbox2, shrink=False) @@ -340,25 +371,7 @@ ### End of overridable methods ### - def view_menu(self): - menu = gtk.Menu() - - button = gtk.CheckMenuItem(_('Show Advanced')) - button.connect('toggled', self.toggle_view, 'advanced') - button.set_active(self.showadvanced) - button.set_draw_as_radio(True) - menu.append(button) - - button = gtk.CheckMenuItem(_('Show Parents')) - button.connect('toggled', self.toggle_view, 'parents') - button.set_active(self.showparents) - button.set_draw_as_radio(True) - menu.append(button) - - menu.show_all() - return menu - - def toggle_view(self, button, type): + def toggleview(self, button, type): show = button.get_active() statename = 'show' + type if getattr(self, statename) != show: diff -r 1d26e0410167 -r 258118fdf801 hggtk/gdialog.py --- a/hggtk/gdialog.py Tue Sep 08 20:32:31 2009 -0500 +++ b/hggtk/gdialog.py Tue Sep 08 23:13:55 2009 -0500 @@ -171,6 +171,10 @@ return [] + def get_menu_bar(self): + return None + + def get_body(self): return None @@ -359,6 +363,10 @@ vbox = gtk.VBox(False, 0) self.add(vbox) + self.menubar = self.get_menu_bar() + if self.menubar: + vbox.pack_start(self.menubar, False, False, 0) + self.tooltips = gtk.Tooltips() toolbar = gtk.Toolbar() tbuttons = self.get_tbbuttons() diff -r 1d26e0410167 -r 258118fdf801 hggtk/status.py --- a/hggtk/status.py Tue Sep 08 20:32:31 2009 -0500 +++ b/hggtk/status.py Tue Sep 08 23:13:55 2009 -0500 @@ -177,7 +177,6 @@ gtk.SeparatorToolItem()] return tbuttons - def save_settings(self): settings = gdialog.GDialog.save_settings(self) settings['gstatus-hpane'] = self.diffpane.get_position() ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ Tortoisehg-develop mailing list Tortoisehg-develop@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tortoisehg-develop