Changeset 6974:8518b70777f1 in orange


Ignore:
Timestamp:
09/09/10 15:59:18 (4 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
5e496c9bd09a5aa8cb8a631a4815c1280f162761
Message:
  • fixed a bug mouse press event handling (clicking on the widget's inside left/right border both selected the widget and started drawing a new line)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeCanvas/orngView.py

    r6967 r6974  
    193193 
    194194        # do we start drawing a connection line 
    195         if ev.button() == Qt.LeftButton: 
    196             widgets = [item for item in self.doc.widgets if item.mouseInsideRightChannel(self.mouseDownPosition) or item.mouseInsideLeftChannel(self.mouseDownPosition)]# + [item for item in self.doc.widgets if item.mouseInsideLeftChannel(self.mouseDownPosition)]            
    197             if widgets: 
    198                 self.tempWidget = widgets[0] 
    199                 if not self.doc.signalManager.signalProcessingInProgress:   # if we are processing some signals, don't allow to add lines 
    200                     self.unselectAllWidgets() 
    201                     self.tempLine = orngCanvasItems.TempCanvasLine(self.doc.canvasDlg, self.scene()) 
    202                     if self.tempWidget.getDistToLeftEdgePoint(self.mouseDownPosition) < self.tempWidget.getDistToRightEdgePoint(self.mouseDownPosition): 
    203                         self.tempLine.setEndWidget(self.tempWidget) 
    204                         for widget in self.doc.widgets: 
    205                             widget.canConnect(widget, self.tempWidget) 
    206                     else: 
    207                         self.tempLine.setStartWidget(self.tempWidget) 
    208                         for widget in self.doc.widgets: 
    209                             widget.canConnect(self.tempWidget, widget) 
    210                                                          
    211 #                self.scene().update() 
    212 #                self.doc.canvasDlg.widgetPopup.setEnabled(len(self.getSelectedWidgets()) == 1) 
    213                 return QGraphicsView.mousePressEvent(self, ev) 
    214              
     195#        if ev.button() == Qt.LeftButton: 
     196#            widgets = [item for item in self.doc.widgets if item.mouseInsideRightChannel(self.mouseDownPosition) or item.mouseInsideLeftChannel(self.mouseDownPosition)]# + [item for item in self.doc.widgets if item.mouseInsideLeftChannel(self.mouseDownPosition)] 
     197#            print widgets 
     198#            if widgets: 
     199#                self.tempWidget = widgets[0] 
     200#                if not self.doc.signalManager.signalProcessingInProgress:   # if we are processing some signals, don't allow to add lines 
     201#                    self.unselectAllWidgets() 
     202#                    self.tempLine = orngCanvasItems.TempCanvasLine(self.doc.canvasDlg, self.scene()) 
     203#                    if self.tempWidget.getDistToLeftEdgePoint(self.mouseDownPosition) < self.tempWidget.getDistToRightEdgePoint(self.mouseDownPosition): 
     204#                        self.tempLine.setEndWidget(self.tempWidget) 
     205#                        for widget in self.doc.widgets: 
     206#                            widget.canConnect(widget, self.tempWidget) 
     207#                    else: 
     208#                        self.tempLine.setStartWidget(self.tempWidget) 
     209#                        for widget in self.doc.widgets: 
     210#                            widget.canConnect(self.tempWidget, widget) 
     211#                                                     
     212#                return #QGraphicsView.mousePressEvent(self, ev) 
     213                         
    215214        items = self.scene().items(QRectF(self.mouseDownPosition, QSizeF(0 ,0)).adjusted(-2, -2, 2, 2))#, At(self.mouseDownPosition) 
    216215        items = [item for item in items if type(item) in [orngCanvasItems.CanvasWidget, orngCanvasItems.CanvasLine]] 
     
    218217        if not activeItem: 
    219218            self.tempWidget = None 
     219            self.tempLine = None 
    220220            self.widgetSelectionRect = QGraphicsRectItem(QRectF(self.mouseDownPosition, self.mouseDownPosition), None, self.scene()) 
    221221            self.widgetSelectionRect.setPen(QPen(QBrush(QColor(51, 153, 255, 192)), 1, Qt.SolidLine, Qt.RoundCap)) 
     
    227227        # we clicked on a widget or on a line 
    228228        else: 
     229            self.tempLine = None 
    229230            if type(activeItem) == orngCanvasItems.CanvasWidget:        # if we clicked on a widget 
    230231                self.tempWidget = activeItem 
     
    258259                self.lineEnabledAction.setChecked(self.selectedLine.getEnabled()) 
    259260                self.linePopup.popup(ev.globalPos()) 
     261            elif type(activeItem) == orngCanvasItems.CanvasLine and ev.button() == Qt.LeftButton: 
     262                widgets = [item for item in self.doc.widgets if item.mouseInsideRightChannel(self.mouseDownPosition) or item.mouseInsideLeftChannel(self.mouseDownPosition)]# + [item for item in self.doc.widgets if item.mouseInsideLeftChannel(self.mouseDownPosition)] 
     263                if widgets: 
     264                    self.tempWidget = widgets[0] 
     265                    if not self.doc.signalManager.signalProcessingInProgress:   # if we are processing some signals, don't allow to add lines 
     266                        self.unselectAllWidgets() 
     267                        self.tempLine = orngCanvasItems.TempCanvasLine(self.doc.canvasDlg, self.scene()) 
     268                        if self.tempWidget.getDistToLeftEdgePoint(self.mouseDownPosition) < self.tempWidget.getDistToRightEdgePoint(self.mouseDownPosition): 
     269                            self.tempLine.setEndWidget(self.tempWidget) 
     270                            for widget in self.doc.widgets: 
     271                                widget.canConnect(widget, self.tempWidget) 
     272                        else: 
     273                            self.tempLine.setStartWidget(self.tempWidget) 
     274                            for widget in self.doc.widgets: 
     275                                widget.canConnect(self.tempWidget, widget) 
     276                                                         
     277                    return #QGraphicsView.mousePressEvent(self, ev) 
    260278            else: 
    261279                self.unselectAllWidgets() 
     
    310328                orngHistory.logChangeWidgetPosition(self.doc.schemaID, id(item), (item.widgetInfo.category, item.widgetInfo.name), item.x(), item.y()) 
    311329 
    312  
    313330        # if we are drawing line 
    314331        elif self.tempLine: 
    315332            # show again the empty input/output boxes 
    316333            for widget in self.doc.widgets: 
    317               widget.resetLeftRightEdges()       
     334                widget.resetLeftRightEdges() 
    318335             
    319336            start = self.tempLine.startWidget or self.tempLine.widget 
     
    325342            if start and end and start != end: 
    326343                if self.doc.signalManager.signalProcessingInProgress: 
    327                      QMessageBox.information( self, "Orange Canvas", "Unable to connect widgets while signal processing is in progress. Please wait.") 
     344                    QMessageBox.information( self, "Orange Canvas", "Unable to connect widgets while signal processing is in progress. Please wait.") 
    328345                else: 
    329346                    self.doc.addLine(start, end) 
Note: See TracChangeset for help on using the changeset viewer.