Ignore:
Timestamp:
11/22/12 18:09:40 (17 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Moved tool actions from main window to SchemeEditWidget.

File:
1 edited

Legend:

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

    r11192 r11194  
    77 
    88from PyQt4.QtGui import ( 
    9     QWidget, QVBoxLayout, QInputDialog, QMenu, QAction, QUndoStack, 
    10     QGraphicsItem, QGraphicsObject, QPainter 
     9    QWidget, QVBoxLayout, QInputDialog, QMenu, QAction, QKeySequence, 
     10    QUndoStack, QGraphicsItem, QGraphicsObject, QPainter 
    1111) 
    1212 
     
    8585        self.__annotationGeomChanged = QSignalMapper(self) 
    8686 
     87        self.__setupActions() 
    8788        self.__setupUi() 
     89 
     90        self.__linkMenu = QMenu(self) 
     91        self.__linkMenu.addAction(self.__linkEnableAction) 
     92        self.__linkMenu.addSeparator() 
     93        self.__linkMenu.addAction(self.__linkRemoveAction) 
     94        self.__linkMenu.addAction(self.__linkResetAction) 
     95 
     96    def __setupActions(self): 
     97 
     98        self.__zoomAction = \ 
     99            QAction(self.tr("Zoom"), self, 
     100                    objectName="zoom", 
     101                    checkable=True, 
     102                    shortcut=QKeySequence.ZoomIn, 
     103                    toolTip=self.tr("Zoom in the scheme."), 
     104                    toggled=self.toogleZoom, 
     105                    ) 
     106 
     107        self.__cleanUpAction = \ 
     108            QAction(self.tr("Clean Up"), self, 
     109                    objectName="cleanup", 
     110                    toolTip=self.tr("Align widget to a grid."), 
     111                    triggered=self.alignToGrid, 
     112                    ) 
     113 
     114        self.__newTextAnnotationAction = \ 
     115            QAction(self.tr("Text"), self, 
     116                    objectName="new-text-annotation", 
     117                    toolTip=self.tr("Add a text annotation to the scheme."), 
     118                    checkable=True, 
     119                    toggled=self.__toggleNewTextAnnotation, 
     120                    ) 
     121 
     122        self.__newArrowAnnotationAction = \ 
     123            QAction(self.tr("Arrow"), self, 
     124                    objectName="new-arrow-annotation", 
     125                    toolTip=self.tr("Add a arrow annotation to the scheme."), 
     126                    checkable=True, 
     127                    toggled=self.__toggleNewArrowAnnotation, 
     128                    ) 
    88129 
    89130        self.__linkEnableAction = \ 
    90131            QAction(self.tr("Enabled"), self, 
    91132                    objectName="link-enable-action", 
    92                     triggered=self.__toogleLinkEnabled, 
     133                    triggered=self.__toggleLinkEnabled, 
    93134                    checkable=True, 
    94135                    ) 
     
    107148                    ) 
    108149 
    109         self.__linkMenu = QMenu(self) 
    110         self.__linkMenu.addAction(self.__linkEnableAction) 
    111         self.__linkMenu.addSeparator() 
    112         self.__linkMenu.addAction(self.__linkRemoveAction) 
    113         self.__linkMenu.addAction(self.__linkResetAction) 
     150        self.addActions([self.__newTextAnnotationAction, 
     151                         self.__newArrowAnnotationAction, 
     152                         self.__linkEnableAction, 
     153                         self.__linkRemoveAction, 
     154                         self.__linkResetAction]) 
    114155 
    115156    def __setupUi(self): 
     
    141182        layout.addWidget(view) 
    142183        self.setLayout(layout) 
     184 
     185    def toolbarActions(self): 
     186        """Return a list of actions that can be inserted into a toolbar. 
     187        """ 
     188        return [self.__zoomAction, 
     189                self.__cleanUpAction, 
     190                self.__newTextAnnotationAction, 
     191                self.__newArrowAnnotationAction] 
    143192 
    144193    def isModified(self): 
     
    322371            if item.flags() & QGraphicsItem.ItemIsSelectable: 
    323372                item.setSelected(True) 
     373 
     374    def toogleZoom(self, zoom): 
     375        view = self.view() 
     376        if zoom: 
     377            view.scale(1.5, 1.5) 
     378        else: 
     379            view.resetTransform() 
    324380 
    325381    def newArrowAnnotation(self): 
     
    649705            ) 
    650706 
     707    def __toggleNewArrowAnnotation(self, checked): 
     708        if self.__newTextAnnotationAction.isChecked(): 
     709            self.__newTextAnnotationAction.setChecked(not checked) 
     710        if not checked: 
     711            handler = self.__scene.user_interaction_handler 
     712            if isinstance(handler, interactions.NewArrowAnnotation): 
     713                # Cancel the interaction and restore the state 
     714                handler.cancel() 
     715                log.info("Canceled new arrow annotation") 
     716 
     717        else: 
     718            handler = interactions.NewArrowAnnotation(self) 
     719            # TODO: when does the interaction complete. 
     720            self.__scene.set_user_interaction_handler(handler) 
     721 
     722    def __toggleNewTextAnnotation(self, checked): 
     723        if self.__newArrowAnnotationAction.isChecked(): 
     724            self.__newArrowAnnotationAction.setChecked(not checked) 
     725 
     726        if not checked: 
     727            handler = self.__scene.user_interaction_handler 
     728            if isinstance(handler, interactions.NewTextAnnotation): 
     729                # cancel the interaction and restore the state 
     730                handler.cancel() 
     731                log.info("Canceled new text annotation") 
     732 
     733        else: 
     734            handler = interactions.NewTextAnnotation(self) 
     735            self.__scene.set_user_interaction_handler(handler) 
     736 
    651737    def __onCustomContextMenuRequested(self, pos): 
    652738        scenePos = self.view().mapToScene(pos) 
     
    666752            return 
    667753 
    668     def __toogleLinkEnabled(self, enabled): 
    669         """Link enabled state was toogled in the context menu. 
     754    def __toggleLinkEnabled(self, enabled): 
     755        """Link enabled state was toggled in the context menu. 
    670756        """ 
    671757        if self.__contextMenuTarget: 
Note: See TracChangeset for help on using the changeset viewer.