Changeset 2218

Show
Ignore:
Timestamp:
02/15/08 05:56:45 (3 months ago)
Author:
arj..@yirdis.nl
Message:
  • use event blocker when loading model.
  • diagram items trigger on ModelFactoryEvent
Files:

Legend:

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

    r2193 r2218  
    2323 
    2424class IElementChangeEvent(IElementEvent): 
    25     """Generic event fired when element state changes. 
     25    """ 
     26    Generic event fired when element state changes. 
    2627    """ 
    2728    property = interface.Attribute("The property that changed") 
  • gaphor/trunk/gaphor/adapters/connectors.py

    r2165 r2218  
    296296            if isinstance(opposite.connected_to.subject, UML.Comment): 
    297297                del opposite.connected_to.subject.annotatedElement[handle.connected_to.subject] 
    298             else
     298            elif opposite.connected_to.subject
    299299                del handle.connected_to.subject.annotatedElement[opposite.connected_to.subject] 
    300300        super(CommentLineElementConnect, self).disconnect(handle) 
  • gaphor/trunk/gaphor/diagram/diagramitem.py

    r2217 r2218  
    259259 
    260260    def register_handlers(self): 
     261        Application.register_handler(self.on_model_factory_event) 
    261262        Application.register_handler(self.on_element_change) 
    262263        Application.register_handler(self.on_presentation_subject) 
     
    267268 
    268269    def unregister_handlers(self): 
     270        Application.unregister_handler(self.on_model_factory_event) 
    269271        Application.unregister_handler(self.on_presentation_subject) 
    270272        Application.unregister_handler(self.on_element_change) 
     273 
     274 
     275    @component.adapter(UML.interfaces.IModelFactoryEvent) 
     276    def on_model_factory_event(self, event): 
     277        self.on_presentation_subject(None) 
    271278 
    272279 
  • gaphor/trunk/gaphor/storage/storage.py

    r2151 r2218  
    2222 
    2323from gaphor import UML 
     24from gaphor.UML.elementfactory import ElementChangedEventBlocker 
    2425from gaphor import diagram 
    2526from gaphor.storage import parser 
     
    180181    def update_status_queue(_n=[0]): 
    181182        n = _n[0] = _n[0] + 1 
    182         if n % 10 == 0: 
     183        if n % 30 == 0: 
    183184            return (n * 100) / size 
    184185 
     
    195196    # The elements are stored as attribute 'element' on the parser objects: 
    196197    for id, elem in elements.items(): 
    197         yield update_status_queue() 
     198        st = update_status_queue() 
     199        if st: yield st 
    198200        if isinstance(elem, parser.element): 
    199201            cls = getattr(UML, elem.type) 
     
    215217    # load attributes and create references: 
    216218    for id, elem in elements.items(): 
    217         yield update_status_queue() 
     219        st = update_status_queue() 
     220        if st: yield st 
    218221        # Ensure that all elements have their element instance ready... 
    219222        assert hasattr(elem, 'element') 
     
    286289    # do a postload: 
    287290    for id, elem in elements.items(): 
    288         yield update_status_queue() 
     291        st = update_status_queue() 
     292        if st: yield st 
    289293        elem.element.postload() 
    290294 
     
    336340        gc.collect() 
    337341        log.info("Read %d elements from file" % len(elements)) 
    338         for percentage in load_elements_generator(elements, factory, gaphor_version): 
    339             pass 
    340             if percentage: 
    341                 yield percentage / 2 + 50 
    342             else: 
    343                 yield percentage 
     342        Application.register_subscription_adapter(ElementChangedEventBlocker) 
     343        try: 
     344            for percentage in load_elements_generator(elements, factory, gaphor_version): 
     345                if percentage: 
     346                    yield percentage / 2 + 50 
     347                else: 
     348                    yield percentage 
     349        except Exception, e: 
     350            Application.unregister_subscription_adapter(ElementChangedEventBlocker) 
     351            raise 
     352        Application.unregister_subscription_adapter(ElementChangedEventBlocker) 
    344353        gc.collect() 
    345354        yield 100 
  • gaphor/trunk/gaphor/ui/namespace.py

    r2142 r2218  
    362362            index = parent.index(node) 
    363363            return parent[index + 1] 
    364         except IndexError, e: 
     364        except (IndexError, ValueError), e: 
    365365            return None 
    366366