Changeset 11194:12d76d869aba in orange


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.

Location:
Orange/OrangeCanvas
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeCanvas/application/canvasmain.py

    r11189 r11194  
    7171                     ) 
    7272 
     73 
    7374def message_critical(text, title=None, informative_text=None, details=None, 
    7475                     buttons=None, default_button=None, exc_info=False, 
     
    309310        ) 
    310311 
    311         dock_actions = [self.show_properties_action, 
    312                         self.canvas_zoom_action, 
    313                         self.canvas_align_to_grid_action, 
    314                         self.canvas_arrow_action, 
    315                         self.canvas_text_action, 
    316                         self.freeze_action, 
     312        tool_actions = self.current_document().toolbarActions() 
     313 
     314        (self.canvas_zoom_action, self.canvas_align_to_grid_action, 
     315         self.canvas_text_action, self.canvas_arrow_action,) = tool_actions 
     316 
     317        self.canvas_zoom_action.setIcon(canvas_icons("Search.svg")) 
     318        self.canvas_align_to_grid_action.setIcon(canvas_icons("Grid.svg")) 
     319        self.canvas_text_action.setIcon(canvas_icons("Text Size.svg")) 
     320        self.canvas_arrow_action.setIcon(canvas_icons("Arrow.svg")) 
     321 
     322        dock_actions = [self.show_properties_action] + \ 
     323                       tool_actions + \ 
     324                       [self.freeze_action, 
    317325                        self.dock_help_action] 
    318326 
     
    584592                        triggered=self.toggleMaximized, 
    585593                        ) 
    586  
    587         # Canvas Dock actions 
    588         self.canvas_zoom_action = \ 
    589             QAction(self.tr("Zoom"), self, 
    590                     objectName="canvas-zoom-action", 
    591                     checkable=True, 
    592                     shortcut=QKeySequence.ZoomIn, 
    593                     toolTip=self.tr("Zoom in the scheme."), 
    594                     triggered=self.set_canvas_view_zoom, 
    595                     icon=canvas_icons("Search.svg") 
    596                     ) 
    597  
    598         self.canvas_align_to_grid_action = \ 
    599             QAction(self.tr("Clean Up"), self, 
    600                     objectName="canvas-align-to-grid-action", 
    601                     toolTip=self.tr("Align widget to a grid."), 
    602                     triggered=self.align_to_grid, 
    603                     icon=canvas_icons("Grid.svg") 
    604                     ) 
    605  
    606         self.canvas_arrow_action = \ 
    607             QAction(self.tr("Arrow"), self, 
    608                     objectName="canvas-arrow-action", 
    609                     toolTip=self.tr("Add an arrow annotation to the scheme."), 
    610                     triggered=self.new_arrow_annotation, 
    611                     icon=canvas_icons("Arrow.svg") 
    612                     ) 
    613  
    614         self.canvas_text_action = \ 
    615             QAction(self.tr("Text"), self, 
    616                     objectName="canvas-text-action", 
    617                     toolTip=self.tr("Add a text annotation to the scheme."), 
    618                     triggered=self.new_text_annotation, 
    619                     icon=canvas_icons("Text Size.svg") 
    620                     ) 
    621594 
    622595        self.freeze_action = \ 
     
    12131186        return status 
    12141187 
    1215     def set_canvas_view_zoom(self, zoom): 
    1216         doc = self.current_document() 
    1217         if zoom: 
    1218             doc.view().scale(1.5, 1.5) 
    1219         else: 
    1220             doc.view().resetTransform() 
    1221  
    1222     def align_to_grid(self): 
    1223         "Align widgets on the canvas to an grid." 
    1224         self.current_document().alignToGrid() 
    1225  
    1226     def new_arrow_annotation(self): 
    1227         """Create and add a new arrow annotation to the current scheme. 
    1228         """ 
    1229         self.current_document().newArrowAnnotation() 
    1230  
    1231     def new_text_annotation(self): 
    1232         """Create a new text annotation in the scheme. 
    1233         """ 
    1234         self.current_document().newTextAnnotation() 
    1235  
    12361188    def set_signal_freeze(self, freeze): 
    12371189        scheme = self.current_document().scheme() 
  • 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.