Ignore:
Timestamp:
11/28/12 17:57:08 (17 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Moved widget actions definitions into SchemeEditWidget.

File:
1 edited

Legend:

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

    r11206 r11208  
    66import sys 
    77import logging 
    8 import traceback 
    98import operator 
    109 
     
    1413    QMainWindow, QWidget, QAction, QActionGroup, QMenu, QMenuBar, QDialog, 
    1514    QFileDialog, QMessageBox, QVBoxLayout, QSizePolicy, QColor, QKeySequence, 
    16     QIcon, QToolBar, QToolButton, QDockWidget, QDesktopServices, QUndoGroup, 
     15    QIcon, QToolBar, QToolButton, QDockWidget, QDesktopServices, 
    1716    QApplication 
    1817) 
     
    2726from ..gui.dropshadow import DropShadowFrame 
    2827from ..gui.dock import CollapsibleDockWidget 
     28from ..gui.utils import message_critical, message_question, message_information 
    2929 
    3030from .canvastooldock import CanvasToolDock, QuickCategoryToolbar 
     
    7575 
    7676 
    77 def message_critical(text, title=None, informative_text=None, details=None, 
    78                      buttons=None, default_button=None, exc_info=False, 
    79                      parent=None): 
    80     """Show a critical message. 
    81     """ 
    82     if not text: 
    83         text = "An unexpected error occurred." 
    84  
    85     if title is None: 
    86         title = "Error" 
    87  
    88     return message(QMessageBox.Critical, text, title, informative_text, 
    89                    details, buttons, default_button, exc_info, parent) 
    90  
    91  
    92 def message_warning(text, title=None, informative_text=None, details=None, 
    93                     buttons=None, default_button=None, exc_info=False, 
    94                     parent=None): 
    95     """Show a warning message. 
    96     """ 
    97     if not text: 
    98         import random 
    99         text_candidates = ["Death could come at any moment.", 
    100                            "Murphy lurks about. Remember to save frequently." 
    101                            ] 
    102         text = random.choice(text_candidates) 
    103  
    104     if title is not None: 
    105         title = "Warning" 
    106  
    107     return message(QMessageBox.Warning, text, title, informative_text, 
    108                    details, buttons, default_button, exc_info, parent) 
    109  
    110  
    111 def message_information(text, title=None, informative_text=None, details=None, 
    112                         buttons=None, default_button=None, exc_info=False, 
    113                         parent=None): 
    114     """Show an information message box. 
    115     """ 
    116     if title is None: 
    117         title = "Information" 
    118     if not text: 
    119         text = "I am not a number." 
    120  
    121     return message(QMessageBox.Information, text, title, informative_text, 
    122                    details, buttons, default_button, exc_info, parent) 
    123  
    124  
    125 def message_question(text, title, informative_text=None, details=None, 
    126                      buttons=None, default_button=None, exc_info=False, 
    127                      parent=None): 
    128     """Show an message box asking the user to select some 
    129     predefined course of action (set by buttons argument). 
    130  
    131     """ 
    132     return message(QMessageBox.Question, text, title, informative_text, 
    133                    details, buttons, default_button, exc_info, parent) 
    134  
    135  
    136 def message(icon, text, title=None, informative_text=None, details=None, 
    137             buttons=None, default_button=None, exc_info=False, parent=None): 
    138     """Show a message helper function. 
    139     """ 
    140     if title is None: 
    141         title = "Message" 
    142     if not text: 
    143         text = "I am neither a postman nor a doctor." 
    144  
    145     if buttons is None: 
    146         buttons = QMessageBox.Ok 
    147  
    148     if details is None and exc_info: 
    149         details = traceback.format_exc(limit=20) 
    150  
    151     mbox = QMessageBox(icon, title, text, buttons, parent) 
    152  
    153     if informative_text: 
    154         mbox.setInformativeText(informative_text) 
    155  
    156     if details: 
    157         mbox.setDetailedText(details) 
    158  
    159     if default_button is not None: 
    160         mbox.setDefaultButton(default_button) 
    161  
    162     return mbox.exec_() 
    163  
    164  
    16577class FakeToolBar(QToolBar): 
    16678    """A Toolbar with no contents (used to reserve top and bottom margins 
     
    196108        self.recent_schemes = config.recent_schemes() 
    197109 
     110        self.setup_actions() 
    198111        self.setup_ui() 
     112        self.setup_menu() 
    199113 
    200114        self.resize(800, 600) 
     
    208122 
    209123        log.info("Setting up Canvas main window.") 
    210  
    211         self.setup_actions() 
    212         self.setup_menu() 
    213124 
    214125        # Two dummy tool bars to reserve space 
     
    235146        self.scheme_widget = SchemeEditWidget() 
    236147        self.scheme_widget.setScheme(widgetsscheme.WidgetsScheme()) 
    237  
    238         self.undo_group.addStack(self.scheme_widget.undoStack()) 
    239         self.undo_group.setActiveStack(self.scheme_widget.undoStack()) 
    240148 
    241149        w.layout().addWidget(self.scheme_widget) 
     
    533441                    toolTip=self.tr("Show application output."), 
    534442                    triggered=self.show_output_view, 
    535                     ) 
    536  
    537         self.undo_group = QUndoGroup(self) 
    538         self.undo_action = self.undo_group.createUndoAction(self) 
    539         self.undo_action.setShortcut(QKeySequence.Undo) 
    540         self.redo_action = self.undo_group.createRedoAction(self) 
    541         self.redo_action.setShortcut(QKeySequence.Redo) 
    542  
    543         self.select_all_action = \ 
    544             QAction(self.tr("Select All"), self, 
    545                     objectName="select-all-action", 
    546                     triggered=self.select_all, 
    547                     shortcut=QKeySequence.SelectAll, 
    548                     ) 
    549  
    550         self.open_widget_action = \ 
    551             QAction(self.tr("Open"), self, 
    552                     objectName="open-widget-action", 
    553                     triggered=self.open_widget, 
    554                     ) 
    555  
    556         self.rename_widget_action = \ 
    557             QAction(self.tr("Rename"), self, 
    558                     objectName="rename-widget-action", 
    559                     triggered=self.rename_widget, 
    560                     toolTip="Rename a widget", 
    561                     shortcut=QKeySequence(Qt.Key_F2) 
    562                     ) 
    563  
    564         self.remove_widget_action = \ 
    565             QAction(self.tr("Remove"), self, 
    566                     objectName="remove-action", 
    567                     triggered=self.remove_selected, 
    568                     ) 
    569  
    570         delete_shortcuts = [Qt.Key_Delete, 
    571                             Qt.ControlModifier + Qt.Key_Backspace] 
    572  
    573         if sys.platform == "darwin": 
    574             # Command Backspace should be the first 
    575             # (visible shortcut in the menu) 
    576             delete_shortcuts.reverse() 
    577  
    578         self.remove_widget_action.setShortcuts(delete_shortcuts) 
    579  
    580         self.widget_help_action = \ 
    581             QAction(self.tr("Help"), self, 
    582                     objectName="widget-help-action", 
    583                     triggered=self.widget_help, 
    584                     toolTip=self.tr("Show widget help."), 
    585                     shortcut=QKeySequence.HelpContents, 
    586443                    ) 
    587444 
     
    657514        menu_bar.addMenu(file_menu) 
    658515 
     516        editor_menus = self.scheme_widget.menuBarActions() 
     517 
     518        # WARNING: Hard coded order, should lookup the action text 
     519        # and determine the proper order 
     520        self.edit_menu = editor_menus[0].menu() 
     521        self.widget_menu = editor_menus[1].menu() 
     522 
    659523        # Edit menu 
    660         self.edit_menu = QMenu("&Edit", menu_bar) 
    661         self.edit_menu.addAction(self.undo_action) 
    662         self.edit_menu.addAction(self.redo_action) 
    663         self.edit_menu.addSeparator() 
    664         self.edit_menu.addAction(self.select_all_action) 
    665524        menu_bar.addMenu(self.edit_menu) 
    666525 
     
    694553 
    695554        # Widget menu 
    696         self.widget_menu = QMenu(self.tr("Widget"), self) 
    697         self.widget_menu.addAction(self.open_widget_action) 
    698         self.widget_menu.addSeparator() 
    699         self.widget_menu.addAction(self.rename_widget_action) 
    700         self.widget_menu.addAction(self.remove_widget_action) 
    701         self.widget_menu.addSeparator() 
    702         self.widget_menu.addAction(self.widget_help_action) 
    703555        menu_bar.addMenu(self.widget_menu) 
    704556 
Note: See TracChangeset for help on using the changeset viewer.