Changeset 1272

Show
Ignore:
Timestamp:
05/11/07 15:31:49 (2 years ago)
Author:
arj..@yirdis.nl
Message:

Fixed accelerators

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • gaphor/trunk/gaphor/action.py

    r1268 r1272  
    2929    """ 
    3030 
    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): 
    3232        self.name = name 
    3333        self.label = label 
    3434        self.tooltip = tooltip 
    3535        self.stock_id = stock_id 
     36        self.accel = accel 
    3637        self.__dict__.update(kwargs) 
    3738 
     
    4849    An extra 'active' attribute is provided than gives the initial status. 
    4950    """ 
    50     def __init__(self, name, label=None, active=False): 
    51         super(toggle_action, self).__init__(name, label, active=active) 
     51    def __init__(self, name, label=None, accel=None, active=False): 
     52        super(toggle_action, self).__init__(name, label, accel=accel, active=active) 
    5253 
    5354 
     
    5960    given the index number of the activated radio button action. 
    6061    """ 
    61     def __init__(self, names, labels=None, tooltips=None, stock_ids=None, active=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
    6364 
    6465 
     
    104105        if isinstance(act, radio_action): 
    105106            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) 
    106115            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) 
    108119                if act.active == i: 
    109120                    gtkact.props.active = True 
     
    114125                else: 
    115126                    gtkact.props.group = actgroup 
    116                 group.add_action(gtkact
     127                group.add_action_with_accel(gtkact, act.accels[i]
    117128        elif isinstance(act, toggle_action): 
    118129            gtkact = gtk.ToggleAction(act.name, act.label, act.tooltip, act.stock_id) 
    119130            gtkact.set_property('active', act.active) 
    120131            gtkact.connect('activate', _toggle_action_activate, obj, attrname) 
    121             group.add_action(gtkact
     132            group.add_action_with_accel(gtkact, act.accel
    122133        elif isinstance(act, action): 
    123134            gtkact = gtk.Action(act.name, act.label, act.tooltip, act.stock_id) 
    124135            gtkact.connect('activate', _action_activate, obj, attrname) 
    125             group.add_action(gtkact
     136            group.add_action_with_accel(gtkact, act.accel
    126137        elif act is not None: 
    127138            raise TypeError, 'Invalid action type: %s' % action 
  • gaphor/trunk/gaphor/services/actionmanager.py

    r1269 r1272  
    6262                        self.ui_manager.add_ui_from_string(action_provider.menu_xml) 
    6363                log.debug('Added menu xml %d' % action_provider.__ui_merge_id) 
    64             self.update_actions() 
    6564 
    6665    @component.adapter(ServiceInitializedEvent) 
  • gaphor/trunk/gaphor/services/undomanager.py

    r1268 r1272  
    190190        component.handle(UndoManagerStateChanged(self)) 
    191191 
    192     @action(name='edit-undo', stock_id='gtk-undo'
     192    @action(name='edit-undo', stock_id='gtk-undo', accel='<Control>z'
    193193    def undo_transaction(self): 
    194194        if not self._undo_stack: 
     
    211211        component.handle(UndoManagerStateChanged(self)) 
    212212 
    213     @action(name='edit-redo', stock_id='gtk-redo'
     213    @action(name='edit-redo', stock_id='gtk-redo', accel='<Control>y'
    214214    def redo_transaction(self): 
    215215        if not self._redo_stack: 
  • gaphor/trunk/gaphor/ui/mainwindow.py

    r1269 r1272  
    429429        super(MainWindow, self).construct() 
    430430 
    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' failed 
    435         #  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  
    439431        self.window.connect('delete-event', self._on_window_delete) 
    440432 
     
    466458        self.notebook.set_current_page(page_num) 
    467459        self.notebook_map[contents] = window 
    468         self.action_manager.execute('TabChange') 
     460        #self.action_manager.execute('TabChange') 
    469461        return page_num 
    470462 
     
    508500                self.notebook.remove_page(num) 
    509501                del self.notebook_map[p] 
    510                 self.action_manager.execute('TabChange') 
     502                #self.action_manager.execute('TabChange') 
    511503                return 
    512504 
     
    548540        # handle mouse button 3: 
    549541        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 
    551545 
    552546    def on_view_row_activated(self, view, path, column): 
     
    569563        A dummy action is executed. 
    570564        """ 
    571         self.action_manager.execute('TabChange') 
     565        #self.action_manager.execute('TabChange') 
     566        pass 
    572567 
    573568    def on_window_size_allocate(self, window, allocation): 
     
    591586    def quit(self): 
    592587        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 
    593597 
    594598gtk.accel_map_add_filter('gaphor') 
  • gaphor/trunk/gaphor/ui/toplevelwindow.py

    r1268 r1272  
    2525        self.window.set_resizable(True) 
    2626 
     27        self.window.add_accel_group(self.ui_manager.get_accel_group()) 
     28 
    2729        vbox = gtk.VBox() 
    2830        self.window.add(vbox) 
     
    3234        #self.ui_manager.add_ui_from_string(self.menu_xml) 
    3335 
    34         self.window.add_accel_group(self.ui_manager.get_accel_group()) 
    35  
    3636        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) 
    3839         
    3940        if self.toolbar_path: 
    4041            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) 
    4244 
    4345        vbox.pack_end(self.ui_component(), expand=True)