Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 1.0, 1.0.1, and 1.0.2

browse: hookup menuthg with GTK+ menus

This exposes some problems with the way the browser is using menuthg, to be
fixed in a later commit

Changeset 6f87af1aae64

Parent 9b596dd36937

by Steve Borho

Changes to one file · Browse files at 6f87af1aae64 Showing diff from parent 9b596dd36937 Diff from another changeset...

 
258
259
260
261
262
263
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
264
265
266
 
258
259
260
 
 
 
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
@@ -258,9 +258,41 @@
  menus = self.menu.get_commands(repo, repo.root, files)   else:   menus = self.menu.get_norepo_commands(None, files) - # see nautilus extension for usage info - for menu_info in menus: - print menu_info + + def rundialog(item, hgcmd): + print 'rundialog', hgcmd, files + + def create_menu(label, hgcmd=None): + menuitem = gtk.MenuItem(label, True) + if hgcmd: + menuitem.connect('activate', rundialog, hgcmd) + menuitem.set_border_width(1) + return menuitem + + def create_submenu(label, menu): + m = create_menu(label) + m.set_submenu(menu) + return m + + def buildmenus(menus): + m = gtklib.MenuItems() + for menu_info in menus: + if menu_info.isSep(): + m.append_sep() + elif menu_info.isSubmenu(): + item = create_submenu(menu_info.menutext, + buildmenus(menu_info.get_menus())) + m.append(item) + elif menu_info.state: + # TODO: do something with menu_info.helptext, .icon + item = create_menu(menu_info.menutext, menu_info.hgcmd) + m.append(item) + return m.create_menu() + + menu = buildmenus(menus) + menu.show_all() + menu.popup(None, None, None, 0, 0) +     def buttonrelease(self, browse, event):   if event.button != 3: