Ignore:
File:
1 edited

Legend:

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

    r11479 r11496  
    1616    QMainWindow, QWidget, QAction, QActionGroup, QMenu, QMenuBar, QDialog, 
    1717    QFileDialog, QMessageBox, QVBoxLayout, QSizePolicy, QColor, QKeySequence, 
    18     QIcon, QToolBar, QToolButton, QDockWidget, QDesktopServices, QApplication 
     18    QIcon, QToolBar, QToolButton, QDockWidget, QDesktopServices, QApplication, 
     19    QCursor 
    1920) 
    2021 
     
    4041from ..help import HelpManager 
    4142 
    42 from .canvastooldock import CanvasToolDock, QuickCategoryToolbar 
     43from .canvastooldock import CanvasToolDock, QuickCategoryToolbar, \ 
     44                            CategoryPopupMenu 
    4345from .aboutdialog import AboutDialog 
    4446from .schemeinfo import SchemeInfoDialog 
     
    769771        """ 
    770772        category = action.text() 
    771         for i in range(self.widgets_tool_box.count()): 
    772             cat_act = self.widgets_tool_box.tabAction(i) 
    773             if cat_act.text() == category: 
    774                 if not cat_act.isChecked(): 
    775                     # Trigger the action to expand the tool grid contained 
    776                     # within. 
    777                     cat_act.trigger() 
    778  
    779             else: 
    780                 if cat_act.isChecked(): 
    781                     # Trigger the action to hide the tool grid contained 
    782                     # within. 
    783                     cat_act.trigger() 
    784  
    785         self.dock_widget.expand() 
     773        if self.use_popover: 
     774            # Show a popup menu with the widgets in the category 
     775            m = CategoryPopupMenu(self.quick_category) 
     776            reg = self.widget_registry.model() 
     777            i = index(self.widget_registry.categories(), category, 
     778                      predicate=lambda name, cat: cat.name == name) 
     779            if i != -1: 
     780                m.setCategoryItem(reg.item(i)) 
     781                action = m.exec_(QCursor.pos()) 
     782                if action is not None: 
     783                    self.on_tool_box_widget_activated(action) 
     784 
     785        else: 
     786            for i in range(self.widgets_tool_box.count()): 
     787                cat_act = self.widgets_tool_box.tabAction(i) 
     788                cat_act.setChecked(cat_act.text() == category) 
     789 
     790            self.dock_widget.expand() 
    786791 
    787792    def set_scheme_margins_enabled(self, enabled): 
     
    964969        scheme_doc.setScheme(new_scheme) 
    965970 
    966         old_scheme.save_widget_settings() 
    967         old_scheme.close_all_open_widgets() 
    968         old_scheme.signal_manager.stop() 
     971        # Send a close event to the Scheme, it is responsible for 
     972        # closing/clearing all resources (widgets). 
     973        QApplication.sendEvent(old_scheme, QEvent(QEvent.Close)) 
     974 
    969975        old_scheme.deleteLater() 
    970976 
     
    15341540                return 
    15351541 
     1542        old_scheme = document.scheme() 
     1543 
    15361544        # Set an empty scheme to clear the document 
    15371545        document.setScheme(widgetsscheme.WidgetsScheme()) 
    15381546 
    1539         scheme = document.scheme() 
    1540         scheme.save_widget_settings() 
    1541         scheme.close_all_open_widgets() 
    1542         scheme.signal_manager.stop() 
    1543         scheme.deleteLater() 
     1547        QApplication.sendEvent(old_scheme, QEvent(QEvent.Close)) 
     1548 
     1549        old_scheme.deleteLater() 
    15441550 
    15451551        config.save_config() 
     
    17091715            triggers |= SchemeEditWidget.DoubleClicked 
    17101716 
    1711         left_click = settings.value("trigger-on-left-click", 
     1717        right_click = settings.value("trigger-on-right-click", 
    17121718                                    defaultValue=False, 
    17131719                                    type=bool) 
    1714         if left_click: 
    1715             triggers |= SchemeEditWidget.Clicked 
     1720        if right_click: 
     1721            triggers |= SchemeEditWidget.RightClicked 
    17161722 
    17171723        space_press = settings.value("trigger-on-space-key", 
     
    17771783        self.open_in_external_browser = \ 
    17781784            settings.value("open-in-external-browser", defaultValue=False, 
     1785                           type=bool) 
     1786 
     1787        self.use_popover = \ 
     1788            settings.value("toolbox-dock-use-popover-menu", defaultValue=True, 
    17791789                           type=bool) 
    17801790 
Note: See TracChangeset for help on using the changeset viewer.