Пример #1
0
 def searchCallback(info, c, x = point.x(), y = point.y(), start = start, end = end, self = self, dialog = dialog):
     import redRObjects
     if c == 'w':
         newWidget = redRObjects.addWidget(redRObjects.widgetRegistry()['widgets'][info.fileName], x = x, y = y) # add the correct widget to the schema
         nw = redRObjects.getWidgetByIDActiveTabOnly(newWidget)
         self.doc.addLine(start or nw, end or nw)
     dialog.accept()
     return
Пример #2
0
 def activateSuggestWidget(self, action):
     #print action
     #print action.widgetInfo
     newwidget = self.canvasDlg.schema.addWidget(action.widgetInfo)
     if self.suggestButtonsList.suggestingWidget:
         self.canvasDlg.schema.addLine(
             self.suggestButtonsList.suggestingWidget,
             redRObjects.getWidgetByIDActiveTabOnly(newwidget))
Пример #3
0
    def mouseReleaseEvent(self, ev):
        point = self.mapToScene(ev.pos())
        if self.widgetSelectionRect:
            # select widgets in rectangle
            widgets = self.getItemsAtPos(self.widgetSelectionRect,
                                         orngCanvasItems.CanvasWidget)
            for widget in self.doc.widgets():
                widget.setSelected(widget in widgets)
            self.widgetSelectionRect.hide()
            self.widgetSelectionRect = None

        # if we are moving a widget
        if self.bWidgetDragging:
            validPos = True
            for item in self.getSelectedWidgets():
                items = self.scene().collidingItems(item)
                validPos = validPos and (self.findItemTypeCount(
                    items, orngCanvasItems.CanvasWidget) == 0)

            for item in self.getSelectedWidgets():
                if not validPos:
                    item.restorePosition()
                item.updateTooltip()
                item.setAllLinesFinished(True)

        # if we are drawing line
        elif self.tempLine:
            # show again the empty input/output boxes
            for widget in self.doc.widgets():
                widget.resetLeftRightEdges()

            start = self.tempLine.startWidget or self.tempLine.widget  ## marks the starting of the tempLine
            end = self.tempLine.endWidget or self.tempLine.widget  ## marks the ending of the tempLine
            self.tempLine.hide()
            self.tempLine = None

            # we must check if we have really connected some output to input
            if start and end and start != end:
                if self.doc.signalManager.signalProcessingInProgress:
                    QMessageBox.information(
                        self, _("Red-R Canvas"),
                        _("Unable to connect widgets while signal processing is in progress. Please wait."
                          ))
                else:
                    self.doc.addLine(start, end)
            else:
                state = [
                    self.doc.widgets()[i].widgetInfo.name
                    for i in range(min(len(self.doc.widgets()), 5))
                ]
                #predictedWidgets = orngHistory.predictWidgets(state, 20)

                newCoords = QPoint(ev.globalPos())
                self.doc.widgetPopupMenu.updateMenu()
                action = self.doc.widgetPopupMenu.exec_(
                    newCoords -
                    QPoint(0, self.doc.widgetPopupMenu.categoriesYOffset))
                if action and hasattr(action, "widgetInfo"):
                    xOff = -48 * bool(end)
                    newWidget = self.doc.addWidget(action.widgetInfo,
                                                   point.x() + xOff,
                                                   point.y() - 24)
                    if newWidget != None:
                        nw = redRObjects.getWidgetByIDActiveTabOnly(newWidget)
                        if self.doc.signalManager.signalProcessingInProgress:
                            QMessageBox.information(
                                self, _("Red-R Canvas"),
                                _("Unable to connect widgets while signal processing is in progress. Please wait."
                                  ))
                        else:
                            self.doc.addLine(start or nw, end or nw)

        elif ev.button() == Qt.RightButton:
            activeItem = self.scene().itemAt(point)
            diff = self.mouseDownPosition - point
            if not activeItem and (
                    diff.x()**2 + diff.y()**2
            ) < 25:  # if no active widgets and we pressed and released mouse at approx same position
                newCoords = QPoint(ev.globalPos())
                self.doc.widgetPopupMenu.showAllWidgets()
                state = [
                    self.doc.widgets()[i].widgetInfo.name
                    for i in range(min(len(self.doc.widgets()), 5))
                ]
                #predictedWidgets = orngHistory.predictWidgets(state, 20)
                #self.doc.widgetPopupMenu.updatePredictedWidgets(predictedWidgets, 'inputClasses')
                self.doc.widgetPopupMenu.updateMenu()
                height = sum([
                    self.doc.widgetPopupMenu.actionGeometry(action).height()
                    for action in self.doc.widgetPopupMenu.actions()
                ])
                action = self.doc.widgetPopupMenu.exec_(
                    newCoords -
                    QPoint(0, self.doc.widgetPopupMenu.categoriesYOffset))
                if action and hasattr(action, "widgetInfo"):
                    newWidget = self.doc.addWidget(action.widgetInfo,
                                                   point.x(), point.y())

        self.scene().update()
        self.bWidgetDragging = False
        self.doc.canvasDlg.widgetPopup.setEnabled(
            len(self.getSelectedWidgets()) == 1)
Пример #4
0
 def activateSuggestWidget(self, action):
     #print action
     #print action.widgetInfo
     newwidget = self.canvasDlg.schema.addWidget(action.widgetInfo)
     if self.suggestButtonsList.suggestingWidget:
         self.canvasDlg.schema.addLine(self.suggestButtonsList.suggestingWidget, redRObjects.getWidgetByIDActiveTabOnly(newwidget))
Пример #5
0
 def itemClicked(self, item, column):
     """Adds the widget to the schema.  If shift is heald and only one widget is selected on the canvas then the new widget is connected to the selected widget."""
     if isinstance(item, WidgetTreeFolder):
         return
     
     if hasattr(self, 'busy'): return
     
     self.busy = 1
     newwidget = redRObjects.addWidget(item.widgetInfo)
     if (self.mouseRightClick or self.shiftPressed):
         if len(redRObjects.activeTab().getSelectedWidgets()) == 1:
             redRObjects.schemaDlg.addLine(redRObjects.activeTab().getSelectedWidgets()[0], redRObjects.getWidgetByIDActiveTabOnly(newwidget))
     delattr(self, 'busy')