Changeset 1272
- Timestamp:
- 05/11/07 15:31:49 (2 years ago)
- Files:
-
- gaphor/trunk/gaphor/action.py (modified) (5 diffs)
- gaphor/trunk/gaphor/services/actionmanager.py (modified) (1 diff)
- gaphor/trunk/gaphor/services/undomanager.py (modified) (2 diffs)
- gaphor/trunk/gaphor/ui/mainwindow.py (modified) (6 diffs)
- gaphor/trunk/gaphor/ui/toplevelwindow.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
gaphor/trunk/gaphor/action.py
r1268 r1272 29 29 """ 30 30 31 def __init__(self, name, label=None, tooltip=None, stock_id=None, **kwargs):31 def __init__(self, name, label=None, tooltip=None, stock_id=None, accel=None, **kwargs): 32 32 self.name = name 33 33 self.label = label 34 34 self.tooltip = tooltip 35 35 self.stock_id = stock_id 36 self.accel = accel 36 37 self.__dict__.update(kwargs) 37 38 … … 48 49 An extra 'active' attribute is provided than gives the initial status. 49 50 """ 50 def __init__(self, name, label=None, ac tive=False):51 super(toggle_action, self).__init__(name, label, ac tive=active)51 def __init__(self, name, label=None, accel=None, active=False): 52 super(toggle_action, self).__init__(name, label, accel=accel, active=active) 52 53 53 54 … … 59 60 given the index number of the activated radio button action. 60 61 """ 61 def __init__(self, names, labels=None, tooltips=None, stock_ids=None, ac tive=0):62 super(radio_action, self).__init__(names[0], labels, active=active, names=names, labels=labels)62 def __init__(self, names, labels=None, tooltips=None, stock_ids=None, accels=None, active=0): 63 super(radio_action, self).__init__(names[0], names=names, labels=labels, tooltips=tooltips, stock_ids=stock_ids, accels=accels, active=active) 63 64 64 65 … … 104 105 if isinstance(act, radio_action): 105 106 actgroup = None 107 if not act.labels: act.labels = [None] * len(act.names) 108 if not act.tooltips: act.tooltips = [None] * len(act.names) 109 if not act.stock_ids: act.stock_ids = [None] * len(act.names) 110 if not act.accels: act.accels = [None] * len(act.names) 111 assert len(act.names) == len(act.labels) 112 assert len(act.names) == len(act.tooltips) 113 assert len(act.names) == len(act.stock_ids) 114 assert len(act.names) == len(act.accels) 106 115 for i, n in enumerate(act.names): 107 gtkact = gtk.RadioAction(n, act.label, act.tooltip, act.stock_id, value=i) 116 # TODO: fix radio buttons 117 118 gtkact = gtk.RadioAction(n, act.labels[i], act.tooltips[i], act.stock_ids[i], value=i) 108 119 if act.active == i: 109 120 gtkact.props.active = True … … 114 125 else: 115 126 gtkact.props.group = actgroup 116 group.add_action (gtkact)127 group.add_action_with_accel(gtkact, act.accels[i]) 117 128 elif isinstance(act, toggle_action): 118 129 gtkact = gtk.ToggleAction(act.name, act.label, act.tooltip, act.stock_id) 119 130 gtkact.set_property('active', act.active) 120 131 gtkact.connect('activate', _toggle_action_activate, obj, attrname) 121 group.add_action (gtkact)132 group.add_action_with_accel(gtkact, act.accel) 122 133 elif isinstance(act, action): 123 134 gtkact = gtk.Action(act.name, act.label, act.tooltip, act.stock_id) 124 135 gtkact.connect('activate', _action_activate, obj, attrname) 125 group.add_action (gtkact)136 group.add_action_with_accel(gtkact, act.accel) 126 137 elif act is not None: 127 138 raise TypeError, 'Invalid action type: %s' % action gaphor/trunk/gaphor/services/actionmanager.py
r1269 r1272 62 62 self.ui_manager.add_ui_from_string(action_provider.menu_xml) 63 63 log.debug('Added menu xml %d' % action_provider.__ui_merge_id) 64 self.update_actions()65 64 66 65 @component.adapter(ServiceInitializedEvent) gaphor/trunk/gaphor/services/undomanager.py
r1268 r1272 190 190 component.handle(UndoManagerStateChanged(self)) 191 191 192 @action(name='edit-undo', stock_id='gtk-undo' )192 @action(name='edit-undo', stock_id='gtk-undo', accel='<Control>z') 193 193 def undo_transaction(self): 194 194 if not self._undo_stack: … … 211 211 component.handle(UndoManagerStateChanged(self)) 212 212 213 @action(name='edit-redo', stock_id='gtk-redo' )213 @action(name='edit-redo', stock_id='gtk-redo', accel='<Control>y') 214 214 def redo_transaction(self): 215 215 if not self._redo_stack: gaphor/trunk/gaphor/ui/mainwindow.py
r1269 r1272 429 429 super(MainWindow, self).construct() 430 430 431 # Add accelerators from ui manager:432 433 # Does not work:434 # ./gaphor/ui/mainwindow.py:437: GtkWarning: _gtk_accel_group_attach: assertion `g_slist_find (accel_group->acceleratables, object) == NULL' failed435 # self.window.add_accel_group(self.ui_manager.get_accel_group())436 437 self.window.add_accel_group(self.ui_manager.get_accel_group())438 439 431 self.window.connect('delete-event', self._on_window_delete) 440 432 … … 466 458 self.notebook.set_current_page(page_num) 467 459 self.notebook_map[contents] = window 468 self.action_manager.execute('TabChange')460 #self.action_manager.execute('TabChange') 469 461 return page_num 470 462 … … 508 500 self.notebook.remove_page(num) 509 501 del self.notebook_map[p] 510 self.action_manager.execute('TabChange')502 #self.action_manager.execute('TabChange') 511 503 return 512 504 … … 548 540 # handle mouse button 3: 549 541 if event.type == gtk.gdk.BUTTON_PRESS and event.button == 3: 550 self._construct_popup_menu(menu_def=self.ns_popup, event=event) 542 menu = self.ui_manager.get_widget('namespace-popup') 543 menu.popup(None, None, None, event.button, event.time) 544 551 545 552 546 def on_view_row_activated(self, view, path, column): … … 569 563 A dummy action is executed. 570 564 """ 571 self.action_manager.execute('TabChange') 565 #self.action_manager.execute('TabChange') 566 pass 572 567 573 568 def on_window_size_allocate(self, window, allocation): … … 591 586 def quit(self): 592 587 self.ask_to_close() and gtk.main_quit() 588 589 @action(name='tree-view-open', label='_Open') 590 def open_selected_element(self): 591 element = self._view.get_selected_element() 592 if isinstance(element, UML.Diagram): 593 self.show_diagram(element) 594 else: 595 log.debug('No action defined for element %s' % type(element).__name__) 596 593 597 594 598 gtk.accel_map_add_filter('gaphor') gaphor/trunk/gaphor/ui/toplevelwindow.py
r1268 r1272 25 25 self.window.set_resizable(True) 26 26 27 self.window.add_accel_group(self.ui_manager.get_accel_group()) 28 27 29 vbox = gtk.VBox() 28 30 self.window.add(vbox) … … 32 34 #self.ui_manager.add_ui_from_string(self.menu_xml) 33 35 34 self.window.add_accel_group(self.ui_manager.get_accel_group())35 36 36 menubar = self.ui_manager.get_widget(self.menubar_path) 37 vbox.pack_start(menubar, expand=False) 37 if menubar: 38 vbox.pack_start(menubar, expand=False) 38 39 39 40 if self.toolbar_path: 40 41 toolbar = self.ui_manager.get_widget(self.toolbar_path) 41 vbox.pack_start(toolbar, expand=False) 42 if toolbar: 43 vbox.pack_start(toolbar, expand=False) 42 44 43 45 vbox.pack_end(self.ui_component(), expand=True)
