Changeset 11464:7b8484a00739 in orange


Ignore:
Timestamp:
04/22/13 14:53:16 (12 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Fixed CanvasScene clear/reset.

Disconnect all SchemeNodes/Links/Annotations from their corresponding
graphics items in the CanvasScene.

Location:
Orange/OrangeCanvas
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeCanvas/canvas/scene.py

    r11442 r11464  
    127127        Clear (reset) the scene. 
    128128        """ 
     129        if self.scheme is not None: 
     130            self.scheme.node_added.disconnect(self.add_node) 
     131            self.scheme.node_removed.disconnect(self.remove_node) 
     132 
     133            self.scheme.link_added.disconnect(self.add_link) 
     134            self.scheme.link_removed.disconnect(self.remove_link) 
     135 
     136            self.scheme.annotation_added.disconnect(self.add_annotation) 
     137            self.scheme.annotation_removed.disconnect(self.remove_annotation) 
     138 
     139            self.scheme.node_state_changed.disconnect( 
     140                self.on_widget_state_change 
     141            ) 
     142            self.scheme.channel_state_changed.disconnect( 
     143                self.on_link_state_change 
     144            ) 
     145 
     146            # Remove all items to make sure all signals from scheme items 
     147            # to canvas items are disconnected. 
     148 
     149            for annot in self.scheme.annotations: 
     150                if annot in self.__item_for_annotation: 
     151                    self.remove_annotation(annot) 
     152 
     153            for link in self.scheme.links: 
     154                if link in self.__item_for_link: 
     155                    self.remove_link(link) 
     156 
     157            for node in self.scheme.nodes: 
     158                if node in self.__item_for_node: 
     159                    self.remove_node(node) 
     160 
    129161        self.scheme = None 
    130162        self.__node_items = [] 
     
    155187        if self.scheme is not None: 
    156188            # Clear the old scheme 
    157             self.scheme.node_added.disconnect(self.add_node) 
    158             self.scheme.node_removed.disconnect(self.remove_node) 
    159  
    160             self.scheme.link_added.disconnect(self.add_link) 
    161             self.scheme.link_removed.disconnect(self.remove_link) 
    162  
    163             self.scheme.annotation_added.disconnect(self.add_annotation) 
    164             self.scheme.annotation_removed.disconnect(self.remove_annotation) 
    165  
    166             self.scheme.node_state_changed.disconnect( 
    167                 self.on_widget_state_change 
    168             ) 
    169             self.scheme.channel_state_changed.disconnect( 
    170                 self.on_link_state_change 
    171             ) 
    172  
    173189            self.clear_scene() 
    174190 
     
    490506        item = self.__item_for_link.pop(scheme_link) 
    491507        scheme_link.enabled_changed.disconnect(item.setEnabled) 
     508 
     509        if scheme_link.is_dynamic(): 
     510            scheme_link.dynamic_enabled_changed.disconnect( 
     511                item.setDynamicEnabled 
     512            ) 
     513 
    492514        self.remove_link_item(item) 
    493515 
  • Orange/OrangeCanvas/document/schemeedit.py

    r11451 r11464  
    554554            ) 
    555555 
    556             self.__scene.clear() 
    557556            self.__scene.removeEventFilter(self) 
     557 
     558            # Clear all items from the scene 
     559            self.__scene.clear_scene() 
     560 
    558561            self.__scene.deleteLater() 
    559562 
Note: See TracChangeset for help on using the changeset viewer.