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
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))
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)
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))
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')