Changeset 8538:f75f95e54801 in orange


Ignore:
Timestamp:
07/30/11 11:39:03 (3 years ago)
Author:
Noughmad <Noughmad@…>
Branch:
default
Convert:
0533fba74286e9075f52827b9e50453669ff4320
Message:

Add more buttons to the ZoomSelectToolbar

Location:
orange/OrangeWidgets
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Prototypes/OWScatterPlotQt.py

    r8537 r8538  
    101101        self.connect(self.zoomSelectToolbar.buttonSendSelections, SIGNAL("clicked()"), self.sendSelections) 
    102102         
    103         self.graph.gui.zoom_select_toolbar(self.GeneralTab) 
     103        self.graph.gui.zoom_select_toolbar(self.GeneralTab, send_selection_callback=self.sendSelections) 
    104104 
    105105        # #################################### 
  • orange/OrangeWidgets/plot/owplot.py

    r8537 r8538  
    11511151        else: 
    11521152            target.setProperty(prop_name, end_val) 
     1153             
     1154    def clear_selection(self): 
     1155        ## TODO 
     1156        pass 
     1157     
     1158    def send_selection(self): 
     1159        if self.auto_send_selection_callback: 
     1160            self.auto_send_selection_callback() 
  • orange/OrangeWidgets/plot/owplotgui.py

    r8537 r8538  
    55 
    66from PyQt4.QtGui import QWidget, QToolButton, QGroupBox, QVBoxLayout, QHBoxLayout, QIcon 
    7 from PyQt4.QtCore import Qt, qDebug, pyqtSignal 
     7from PyQt4.QtCore import Qt, pyqtSignal 
    88 
    99class OrientedWidget(QWidget): 
     
    2828    def button_clicked(self, checked): 
    2929        sender = self.sender() 
    30         qDebug(repr(sender)) 
    3130        for button in self.buttons.itervalues(): 
    3231            button.setDown(button is sender) 
     
    5049     
    5150    def setDown(self, down): 
    52     self.downChanged.emit(down) 
    53     QToolButton.setDown(self, down) 
    54      
     51        self.downChanged.emit(down) 
     52        QToolButton.setDown(self, down) 
     53     
     54class CallbackButton(QToolButton): 
     55    def __init__(self, plot, callback, parent): 
     56        QToolButton.__init__(self, parent) 
     57        self.setMinimumSize(30, 30) 
     58        if type(callback) == str: 
     59            callback = getattr(plot, callback, None) 
     60        if callback: 
     61            self.clicked.connect(callback) 
    5562                     
    5663class OWPlotGUI: 
     
    7986    SelectionOne = 24 
    8087     
     88    SendSelection = 31 
     89    ClearSelection = 32 
     90     
    8191    ''' 
    8292        A map of  
    8393        id : (name, attr_name, attr_value, icon_name) 
    8494    ''' 
    85     _buttons = { 
     95    _attribute_buttons = { 
    8696        Zoom : ('Zoom', 'state', ZOOMING, 'Dlg_zoom'), 
    8797        Pan : ('Pan', 'state', PANNING, 'Dlg_pan_hand'), 
     
    91101        SelectionToggle : ('Toggle selection', 'selection_behavior', SELECTION_TOGGLE, ''), 
    92102        SelectionOne : ('Replace selection', 'selection_behavior', SELECTION_ONE, '') 
     103    } 
     104     
     105    _action_buttons = { 
     106        SendSelection : ('Send selection', None, 'Dlg_send'), 
     107        ClearSelection : ('Clear selection', 'clear_selection', 'Dlg_clear') 
    93108    } 
    94109 
     
    162177         
    163178    def tool_button(self, id, widget): 
    164         if id not in self._buttons: 
    165             return None 
    166         name, attr_name, attr_value, icon_name = self._buttons[id] 
    167         b = AttributeChangeButton(self._plot, attr_name, attr_value, widget) 
     179        if id in self._attribute_buttons: 
     180            name, attr_name, attr_value, icon_name = self._attribute_buttons[id] 
     181            b = AttributeChangeButton(self._plot, attr_name, attr_value, widget) 
     182        elif id in self._action_buttons: 
     183            name, cb, icon_name = self._action_buttons[id] 
     184            b = CallbackButton(self._plot, cb, widget) 
     185        else: 
     186            return 
    168187        b.setToolTip(name) 
    169188        b.setIcon(QIcon(os.path.dirname(__file__) + "/../icons/" + icon_name + '.png')) 
     189        if widget.layout(): 
     190            widget.layout().addWidget(b) 
    170191        return b 
    171192         
     
    177198        return StateButtonContainer(self, ids, orientation, widget) 
    178199         
    179     def zoom_select_toolbar(self, widget, orientation = Qt.Horizontal): 
     200    def zoom_select_toolbar(self, widget, orientation = Qt.Horizontal, send_selection_callback = None): 
    180201        o = 'vertial' if orientation == Qt.Vertical else 'horizontal' 
    181202        t = OWGUI.widgetBox(widget, 'Zoom / Select', orientation=o) 
     
    183204        t.layout().addWidget(zps) 
    184205        selection_modes = self.state_buttons([OWPlotGUI.SelectionOne, OWPlotGUI.SelectionAdd, OWPlotGUI.SelectionRemove], orientation, t) 
     206        t.layout().addSpacing(10) 
    185207        t.layout().addWidget(selection_modes) 
    186208        zps.button(OWPlotGUI.Select).downChanged.connect(selection_modes.setEnabled) 
    187209        zps.button(OWPlotGUI.Select).downChanged.connect(selection_modes.button(OWPlotGUI.SelectionOne).click) 
    188210        zps.button(OWPlotGUI.Zoom).click() 
     211        t.layout().addSpacing(10) 
     212        self.tool_button(OWPlotGUI.ClearSelection, t) 
     213        b = self.tool_button(OWPlotGUI.SendSelection, t) 
     214        if send_selection_callback: 
     215            b.clicked.connect(send_selection_callback) 
    189216        return t 
Note: See TracChangeset for help on using the changeset viewer.