Changeset 2276

Show
Ignore:
Timestamp:
03/18/08 00:37:05 (2 months ago)
Author:
arj..@yirdis.nl
Message:

make ElementFactory.flush() work without Application.

Files:

Legend:

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

    r2274 r2276  
    1111                                  IFlushFactoryEvent, IModelFactoryEvent, \ 
    1212                                  IElementChangeEvent, IElementEvent 
    13 from gaphor.UML.event import ElementCreateEvent,
     13from gaphor.UML.event import ElementCreateEvent, ElementDeleteEvent,
    1414                             FlushFactoryEvent, ModelFactoryEvent 
    1515from gaphor.UML.element import Element 
     
    161161        Flush all elements (remove them from the factory). 
    162162        """ 
    163         if self._app: 
    164             self._app.handle(FlushFactoryEvent(self)) 
    165             self._app.register_subscription_adapter(ElementChangedEventBlocker) 
     163        app = self._app 
     164        if app: 
     165            app.handle(FlushFactoryEvent(self)) 
     166            app.register_subscription_adapter(ElementChangedEventBlocker) 
    166167 
    167168        try: 
     
    171172                value.canvas.block_updates = True 
    172173                value.unlink() 
    173  
     174                if not app: 
     175                    self._element_deleted(ElementDeleteEvent(self, value)) 
    174176            for key, value in self._elements.items(): 
    175177                value.unlink() 
     178                if not app: 
     179                    self._element_deleted(ElementDeleteEvent(self, value)) 
    176180        finally: 
    177             if self._app: 
    178                 self._app.unregister_subscription_adapter(ElementChangedEventBlocker) 
     181            if app: 
     182                app.unregister_subscription_adapter(ElementChangedEventBlocker) 
    179183 
    180184        assert len(self._elements) == 0, 'Still items in the factory: %s' % str(self._elements.values()) 
  • gaphor/trunk/gaphor/UML/tests/test_elementfactory.py

    r2267 r2276  
    2828 
    2929    def setUp(self): 
     30        Application.init_components() 
    3031        self.factory = ElementFactory() 
    3132        self.factory.init(Application) 
    32              
     33 
    3334    def tearDown(self): 
    3435        self.factory.shutdown() 
     
    6263        assert wp() is None 
    6364        assert len(ef.values()) == 0 
     65 
     66 
     67    def testWithoutApplication(self): 
     68        ef = ElementFactory() 
     69 
     70        p = ef.create(Parameter) 
     71        assert ef.size() == 1, ef.size() 
     72 
     73        ef.flush() 
     74        assert ef.size() == 0, ef.size() 
     75 
     76        p = ef.create(Parameter) 
     77        assert ef.size() == 1, ef.size() 
     78 
     79        p.unlink() 
     80        assert ef.size() == 0, ef.size() 
     81 
    6482 
    6583    def testUnlink(self):