Changeset 1267

Show
Ignore:
Timestamp:
05/11/07 00:03:20 (2 years ago)
Author:
arj..@yirdis.nl
Message:

More updates on file manager.

Files:

Legend:

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

    r1244 r1267  
    4141    if gaphor_file: 
    4242        main_window.set_filename(gaphor_file) 
    43         action_manager.execute('FileRevert') 
     43        action_manager.execute('file-revert') 
    4444    else: 
    45         action_manager.execute('FileNew') 
     45        action_manager.execute('file-new') 
    4646    Application.run() 
    4747    Application.shutdown() 
  • gaphor/trunk/gaphor/services/actionmanager.py

    r1264 r1267  
    66from gaphor.core import inject 
    77from gaphor.interfaces import IService, IActionProvider 
    8 from gaphor.event import ServiceInitializedEvent 
    9 from gaphor.misc.action import ActionPool 
     8from gaphor.event import ServiceInitializedEvent, ActionExecuted 
     9 
    1010 
    1111class ActionManager(object): 
     
    3030        if a: 
    3131            a.activate() 
     32            component.handle(ActionExecuted(action_id, a)) 
    3233        else: 
    3334            log.warning('Unknown action: %s' % action_id) 
     
    4142            if a: return a 
    4243 
    43     def register_action_provider(self, action_provider, priority=-1): 
    44         log.debug('Registring actions for %s' % str(action_provider)) 
     44    def register_action_provider(self, action_provider): 
     45        log.debug('Registering actions for %s' % str(action_provider)) 
    4546        action_provider = IActionProvider(action_provider) 
    4647        try: 
     
    4950        except AttributeError: 
    5051             
     52            assert action_provider.action_group 
     53            self.ui_manager.insert_action_group(action_provider.action_group, -1) 
    5154            if action_provider.menu_xml: 
    5255                action_provider.__ui_merge_id = \ 
    5356                        self.ui_manager.add_ui_from_string(action_provider.menu_xml) 
    54             self.ui_manager.insert_action_group(action_provider.action_group, priority) 
    5557 
    5658    @component.adapter(ServiceInitializedEvent) 
     
    6163        # is in order (e.i. menu structure is correctly set up) 
    6264        if event.name == 'gui_manager': 
     65            log.info('Loading not yet registered action provider services') 
    6366            for name, service in component.getUtilitiesFor(IService): 
    6467                if IActionProvider.providedBy(service): 
  • gaphor/trunk/gaphor/services/filemanager.py

    r1264 r1267  
    33""" 
    44 
     5import gc 
    56from zope import interface, component 
    67from gaphor.interfaces import IService, IActionProvider 
    78from gaphor.core import _, inject, action, build_action_group 
     9from gaphor import UML 
     10 
    811 
    912class FileManager(object): 
     
    1518 
    1619    element_factory = inject('element_factory') 
     20    gui_manager = inject('gui_manager') 
    1721 
    1822    menu_xml = """ 
     
    3640 
    3741    def __init__(self): 
    38         pass 
     42        self.filename = None 
    3943 
    4044    def init(self, app): 
    4145        self.action_group = build_action_group(self) 
    4246 
     47    def shutdown(self): 
     48        pass 
     49         
    4350    @action(name='file-new', stock_id='gtk-new') 
    4451    def new(self): 
    45         pass 
     52        element_factory = self.element_factory 
     53        main_window = self.gui_manager.main_window 
     54        if element_factory.size(): 
     55            dialog = gtk.MessageDialog(main_window.window, 
     56                gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, 
     57                gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, 
     58                _("Opening a new model will flush the currently loaded model.\nAny changes made will not be saved. Do you want to continue?")) 
     59            answer = dialog.run() 
     60            dialog.destroy() 
     61            if answer != gtk.RESPONSE_YES: 
     62                return 
     63 
     64        element_factory.flush() 
     65        gc.collect() 
     66        model = element_factory.create(UML.Package) 
     67        model.name = _('New model') 
     68        diagram = element_factory.create(UML.Diagram) 
     69        diagram.package = model 
     70        diagram.name= _('main') 
     71        self.filename = None 
     72        element_factory.notify_model() 
     73 
     74        main_window.select_element(diagram) 
     75        main_window.show_diagram(diagram) 
    4676 
    4777    @action(name='file-open', stock_id='gtk-open') 
  • gaphor/trunk/gaphor/services/guimanager.py

    r1264 r1267  
    5151            self._ui_components[ep.name] = uicomp 
    5252            if IActionProvider.providedBy(uicomp): 
    53                 self.action_manager.register_action_provider(uicomp, priority=0
     53                self.action_manager.register_action_provider(uicomp
    5454                 
    5555    def init_main_window(self): 
  • gaphor/trunk/gaphor/ui/consolewindow.py

    r1264 r1267  
    2020        <ui> 
    2121          <menubar name="mainwindow"> 
    22             <menu name="window"
     22            <menu name="window" action="window"
    2323              <menuitem action="ConsoleWindow:open" /> 
    2424            </menu> 
  • gaphor/trunk/gaphor/ui/mainwindow.py

    r1264 r1267  
    519519        self.action_manager.execute('SelectRow') 
    520520 
     521 
    521522    # Signal callbacks: 
    522523 
  • gaphor/trunk/gaphor/ui/toplevelwindow.py

    r1263 r1267  
    2929        vbox.show() 
    3030 
    31         self.ui_manager.insert_action_group(self.action_group, 0) 
    32         self.ui_manager.add_ui_from_string(self.menu_xml) 
     31        #self.ui_manager.insert_action_group(self.action_group, 0) 
     32        #self.ui_manager.add_ui_from_string(self.menu_xml) 
    3333 
    3434        self.window.add_accel_group(self.ui_manager.get_accel_group()) 
  • gaphor/trunk/setup.py

    r1264 r1267  
    7878        ], 
    7979        'gaphor.services': [ 
     80            'adapter_loader = gaphor.services.adapterloader:AdapterLoader', 
    8081            'properties = gaphor.services.properties:Properties', 
    8182            'undo_manager = gaphor.services.undomanager:UndoManager', 
    82             'plugin_manager = gaphor.services.pluginmanager:PluginManager', 
     83#            'plugin_manager = gaphor.services.pluginmanager:PluginManager', 
    8384            'action_manager = gaphor.services.actionmanager:ActionManager', 
    84             'gui_manager = gaphor.services.guimanager:GUIManager', 
    85             'adapter_loader = gaphor.services.adapterloader:AdapterLoader', 
    8685            'element_factory = gaphor.UML.elementfactory:ElementFactory', 
    8786            'file_manager = gaphor.services.filemanager:FileManager', 
     87            'gui_manager = gaphor.services.guimanager:GUIManager', 
    8888        ], 
    8989        'gaphor.uicomponents': [