Changeset 2274

Show
Ignore:
Timestamp:
03/17/08 09:51:46 (2 months ago)
Author:
wrobe..@pld-linux.org
Message:

- make application instance optional, useful for external scripts

(at least until we have better solution in place)

Files:

Legend:

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

    r2225 r2274  
    5454        self._elements = odict.odict() 
    5555        self._observers = list() 
     56        self._app = None 
    5657 
    5758    def init(self, app): 
     
    6263    def shutdown(self): 
    6364        # unregister after flush: the handler is needed to empty the _elements 
    64         self._app.unregister_handler(self._element_notify) 
     65        if self._app: 
     66            self._app.unregister_handler(self._element_notify) 
    6567        self.flush() 
    66         self._app.unregister_handler(self._element_deleted) 
     68        if self._app: 
     69            self._app.unregister_handler(self._element_deleted) 
    6770 
    6871    def create(self, type): 
     
    7174        """ 
    7275        obj = self.create_as(type, uniqueid.generate_id()) 
    73         self._app.handle(ElementCreateEvent(self, obj)) 
     76        if self._app: 
     77            self._app.handle(ElementCreateEvent(self, obj)) 
    7478        return obj 
    7579 
     
    157161        Flush all elements (remove them from the factory). 
    158162        """ 
    159         self._app.handle(FlushFactoryEvent(self)) 
    160  
    161         self._app.register_subscription_adapter(ElementChangedEventBlocker) 
     163        if self._app: 
     164            self._app.handle(FlushFactoryEvent(self)) 
     165            self._app.register_subscription_adapter(ElementChangedEventBlocker) 
     166 
    162167        try: 
    163168            # First flush all diagrams: 
     
    170175                value.unlink() 
    171176        finally: 
    172             self._app.unregister_subscription_adapter(ElementChangedEventBlocker) 
     177            if self._app: 
     178                self._app.unregister_subscription_adapter(ElementChangedEventBlocker) 
    173179 
    174180        assert len(self._elements) == 0, 'Still items in the factory: %s' % str(self._elements.values()) 
     
    189195        ModelFactoryEvent event from gaphor.UML.event. 
    190196        """ 
    191         self._app.handle(ModelFactoryEvent(self)) 
     197        if self._app: 
     198            self._app.handle(ModelFactoryEvent(self)) 
    192199 
    193200    @component.adapter(IElementEvent) 
     
    197204        by (class, event). 
    198205        """ 
    199         self._app.handle(event.element, event) 
     206        if self._app: 
     207            self._app.handle(event.element, event) 
    200208 
    201209    @component.adapter(IElementDeleteEvent)