Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 0.9, 0.9.1, and 0.9.1.1

gdialog: add menu bars to GDialog

Changeset ee2b0923ad06

Parent 1cc35a8cbe4b

by Steve Borho

Changes to one file · Browse files at ee2b0923ad06 Showing diff from parent 1cc35a8cbe4b Diff from another changeset...

Change 1 of 4 Show Entire File hggtk/​gdialog.py Stacked
 
109
110
111
 
 
112
113
114
 
171
172
173
 
 
 
 
 
 
 
 
174
175
176
 
321
322
323
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
324
325
326
 
366
367
368
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
369
370
371
 
109
110
111
112
113
114
115
116
 
173
174
175
176
177
178
179
180
181
182
183
184
185
186
 
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
 
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
@@ -109,6 +109,8 @@
  get_minsize(self)   get_defsize(self)   get_tbbuttons(self) + get_menu_list(self) + get_help_url(self)   get_body(self)   get_extras(self)   prepare_display(self) @@ -171,6 +173,14 @@
  return []     + def get_menu_list(self): + return None + + + def get_help_url(self): + return None + +   def get_body(self):   return None   @@ -321,6 +331,34 @@
  name = os.path.basename(self.repo.root)   return hglib.toutf(name)   + def helpcontents(self, item): + 'User selected Help->Contents from menu bar' + url = self.get_help_url() + if not url: + return + if not url.startswith('http'): + docpath = os.path.dirname(paths.get_license_path()) + url = os.path.join(docpath, url) + from hggtk import about + about.browseurl(url) + + def launch(self, item, app): + import sys + # Spawn background process and exit + if hasattr(sys, "frozen"): + args = [sys.argv[0], app] + else: + args = [sys.executable] + [sys.argv[0], app] + if os.name == 'nt': + args = ['"%s"' % arg for arg in args] + oldcwd = os.getcwd() + root = paths.find_root(oldcwd) + try: + os.chdir(root) + os.spawnv(os.P_NOWAIT, sys.executable, args) + finally: + os.chdir(oldcwd) +   def windowstate(self, window, event):   if event.changed_mask & gtk.gdk.WINDOW_STATE_MAXIMIZED:   if event.new_window_state & gtk.gdk.WINDOW_STATE_MAXIMIZED: @@ -366,6 +404,49 @@
  vbox = gtk.VBox(False, 0)   self.add(vbox)   + menus = self.get_menu_list() + if menus: + allmenus = [ + (_('Launch'), False, False, + [(_('Changelog'), self.launch, ['log'], 'menulog.ico'), + (_('Commit'), self.launch, ['commit'], 'menucommit.ico'), + (_('Datamine'), self.launch, ['datamine'], 'menurepobrowse.ico'), + (_('Synchronize'), self.launch, ['synch'], 'menusynch.ico'), + (_('Shelve'), self.launch, ['shelve'], 'shelve.ico'), + (_('Settings'), self.launch, ['repoconfig'], 'settings_repo.ico')]) + ] + menus + [ + (_('Help'), False, True, + [(_('Contents'), self.helpcontents, [], gtk.STOCK_INFO), + (_('About'), self.launch, ['about'], gtk.STOCK_ABOUT)]) + ] + menubar = gtk.MenuBar() + for title, aschecks, rightjustified, items in allmenus: + 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) + vbox.pack_start(menubar, False, False, 0) +   self.tooltips = gtk.Tooltips()   toolbar = gtk.Toolbar()   tbuttons = self.get_tbbuttons()