Changeset 11485:862145dee447 in orange


Ignore:
Timestamp:
05/06/13 10:29:31 (12 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Refactored CanvasScene setup/teardown into separate helper methods.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeCanvas/document/schemeedit.py

    r11471 r11485  
    344344 
    345345        scene = CanvasScene() 
    346         scene.set_channel_names_visible(self.__channelNamesVisible) 
    347         scene.set_node_animation_enabled(self.__nodeAnimationEnabled) 
    348         scene.setFont(self.font()) 
     346        self.__setupScene(scene) 
    349347 
    350348        view = CanvasView(scene) 
     
    359357        self.__scene = scene 
    360358 
    361         self.__focusListener = GraphicsSceneFocusEventListener() 
    362         self.__focusListener.itemFocusedIn.connect(self.__onItemFocusedIn) 
    363         self.__focusListener.itemFocusedOut.connect(self.__onItemFocusedOut) 
    364         self.__scene.addItem(self.__focusListener) 
    365  
    366         self.__scene.selectionChanged.connect( 
    367             self.__onSelectionChanged 
    368         ) 
    369  
    370359        layout.addWidget(view) 
    371360        self.setLayout(layout) 
     361 
     362    def __setupScene(self, scene): 
     363        """ 
     364        Set up a :class:`CanvasScene` instance for use by the editor. 
     365 
     366        .. note:: If an existing scene is in use it must be teared down using 
     367            __teardownScene 
     368 
     369        """ 
     370        scene.set_channel_names_visible(self.__channelNamesVisible) 
     371        scene.set_node_animation_enabled( 
     372            self.__nodeAnimationEnabled 
     373        ) 
     374 
     375        scene.setFont(self.font()) 
     376 
     377        scene.installEventFilter(self) 
     378 
     379        scene.set_registry(self.__registry) 
     380 
     381        # Focus listener 
     382        self.__focusListener = GraphicsSceneFocusEventListener() 
     383        self.__focusListener.itemFocusedIn.connect( 
     384            self.__onItemFocusedIn 
     385        ) 
     386        self.__focusListener.itemFocusedOut.connect( 
     387            self.__onItemFocusedOut 
     388        ) 
     389        scene.addItem(self.__focusListener) 
     390 
     391        scene.selectionChanged.connect( 
     392            self.__onSelectionChanged 
     393        ) 
     394 
     395        scene.node_item_activated.connect( 
     396            self.__onNodeActivate 
     397        ) 
     398 
     399        scene.annotation_added.connect( 
     400            self.__onAnnotationAdded 
     401        ) 
     402 
     403        scene.annotation_removed.connect( 
     404            self.__onAnnotationRemoved 
     405        ) 
     406 
     407        self.__annotationGeomChanged = QSignalMapper(self) 
     408 
     409    def __teardownScene(self, scene): 
     410        """ 
     411        Tear down an instance of :class:`CanvasScene` that was used by the 
     412        editor. 
     413 
     414        """ 
     415        # Clear the current item selection in the scene so edit action 
     416        # states are updated accordingly. 
     417        scene.clearSelection() 
     418 
     419        # Clear focus from any item. 
     420        scene.setFocusItem(None) 
     421 
     422        # Clear the annotation mapper 
     423        self.__annotationGeomChanged.deleteLater() 
     424        self.__annotationGeomChanged = None 
     425 
     426        self.__focusListener.itemFocusedIn.disconnect( 
     427            self.__onItemFocusedIn 
     428        ) 
     429        self.__focusListener.itemFocusedOut.disconnect( 
     430            self.__onItemFocusedOut 
     431        ) 
     432 
     433        scene.selectionChanged.disconnect( 
     434            self.__onSelectionChanged 
     435        ) 
     436 
     437        scene.removeEventFilter(self) 
     438 
     439        # Clear all items from the scene 
     440        scene.blockSignals(True) 
     441        scene.clear_scene() 
    372442 
    373443    def toolbarActions(self): 
     
    534604                self.__cleanSettings = [] 
    535605 
    536             # Clear the current item selection in the scene so edit action 
    537             # states are updated accordingly. 
    538             self.__scene.clearSelection() 
    539  
    540             self.__annotationGeomChanged.deleteLater() 
    541             self.__annotationGeomChanged = QSignalMapper(self) 
     606            self.__teardownScene(self.__scene) 
     607            self.__scene.deleteLater() 
    542608 
    543609            self.__undoStack.clear() 
    544610 
    545             self.__focusListener.itemFocusedIn.disconnect( 
    546                 self.__onItemFocusedIn 
    547             ) 
    548             self.__focusListener.itemFocusedOut.disconnect( 
    549                 self.__onItemFocusedOut 
    550             ) 
    551  
    552             self.__scene.selectionChanged.disconnect( 
    553                 self.__onSelectionChanged 
    554             ) 
    555  
    556             self.__scene.removeEventFilter(self) 
    557  
    558             # Clear all items from the scene 
    559             self.__scene.blockSignals(True) 
    560             self.__scene.clear_scene() 
    561  
    562             self.__scene.deleteLater() 
    563  
    564611            self.__scene = CanvasScene() 
     612            self.__setupScene(self.__scene) 
     613 
    565614            self.__view.setScene(self.__scene) 
    566             self.__scene.set_channel_names_visible(self.__channelNamesVisible) 
    567             self.__scene.set_node_animation_enabled( 
    568                 self.__nodeAnimationEnabled 
    569             ) 
    570  
    571             self.__scene.setFont(self.font()) 
    572  
    573             self.__scene.installEventFilter(self) 
    574  
    575             self.__scene.set_registry(self.__registry) 
    576  
    577             # Focus listener 
    578             self.__focusListener = GraphicsSceneFocusEventListener() 
    579             self.__focusListener.itemFocusedIn.connect( 
    580                 self.__onItemFocusedIn 
    581             ) 
    582             self.__focusListener.itemFocusedOut.connect( 
    583                 self.__onItemFocusedOut 
    584             ) 
    585             self.__scene.addItem(self.__focusListener) 
    586  
    587             self.__scene.selectionChanged.connect( 
    588                 self.__onSelectionChanged 
    589             ) 
    590  
    591             self.__scene.node_item_activated.connect( 
    592                 self.__onNodeActivate 
    593             ) 
    594  
    595             self.__scene.annotation_added.connect( 
    596                 self.__onAnnotationAdded 
    597             ) 
    598  
    599             self.__scene.annotation_removed.connect( 
    600                 self.__onAnnotationRemoved 
    601             ) 
    602615 
    603616            self.__scene.set_scheme(scheme) 
Note: See TracChangeset for help on using the changeset viewer.