def updateLinePos(self, newPos): if self.startWidget == None and self.endWidget == None: return if self.startWidget != None: func = "getDistToLeftEdgePoint" else: func = "getDistToRightEdgePoint" schema = self.canvasDlg.schema view = schema.activeTab() self.widget = None widgets = view.getItemsAtPos(newPos, CanvasWidget) if widgets: self.widget = widgets[0] else: dists = [ (getattr(w, func)(newPos), w) for w in redRObjects.getIconsByTab( [redRObjects.activeTabName()])[redRObjects.activeTabName()] ] dists.sort() if dists and dists[0][0] < 20: self.widget = dists[0][1] if self.startWidget: pos = self.startWidget.getRightEdgePoint() else: pos = self.endWidget.getLeftEdgePoint() if self.widget not in [self.startWidget, self.endWidget]: if self.startWidget == None and self.widget.instance().outputs: newPos = self.widget.getRightEdgePoint() elif self.endWidget == None and self.widget.instance().inputs: newPos = self.widget.getLeftEdgePoint() self.setLine(pos.x(), pos.y(), newPos.x(), newPos.y())
def minimumY(): y = 0 for w in redRObjects.getIconsByTab(redRObjects.activeTabName())[redRObjects.activeTabName()]: if w.y() > y: y = w.y() if y != 0: y += 30 return y
def minimumY(): y = 0 for w in redRObjects.getIconsByTab( redRObjects.activeTabName())[redRObjects.activeTabName()]: if w.y() > y: y = w.y() if y != 0: y += 30 return y
def __init__(self, canvas, view, widgetInfo, defaultPic, canvasDlg, instanceID, tabName): # print widgetSettings #self.signalManager = signalManager self.widgetInfo = widgetInfo self.tab = tabName self.instanceID = instanceID #self.setForces(forceInSignals, forceOutSignals) # a patch for dummywidget self.isProcessing = 0 # is this widget currently processing signals self.needsProcessing = 0 # is this widget in need of processing data self.progressBarShown = 0 self.progressBarValue = -1 self.widgetSize = QSizeF(0, 0) self.widgetState = {} self.caption = widgetInfo.name self.selected = False self.potentialConnection = False self.inLines = [] # list of connected lines on input self.outLines = [] # list of connected lines on output self.ghostWidgets = [] # list of ghost widgets that this widget could connect to self.ghost = False self.icon = QIcon(widgetInfo.icon) self.tab = redRObjects.activeTabName() #self.instance.updateStatusBarState() QGraphicsRectItem.__init__(self, None, canvas) self.widgetInfo = widgetInfo self.canvas = canvas self.view = view self.canvasDlg = canvasDlg canvasPicsDir = os.path.join(redREnviron.directoryNames['canvasDir'], "icons") self.cloneIcon = QPixmap(os.path.join(canvasPicsDir, "clone.png")) self.lockedIcon = QPixmap(os.path.join(canvasPicsDir, "locked.png")) #self.cloneIcon.setToolTip(_("This widget is cloned in another tab")) self.imageLeftEdge = QPixmap(os.path.join(canvasPicsDir,"leftEdge.png")) self.imageRightEdge = QPixmap(os.path.join(canvasPicsDir,"rightEdge.png")) self.imageLeftEdgeG = QPixmap(os.path.join(canvasPicsDir,"leftEdgeG.png")) self.imageRightEdgeG = QPixmap(os.path.join(canvasPicsDir,"rightEdgeG.png")) self.imageLeftEdgeR = QPixmap(os.path.join(canvasPicsDir,"leftEdgeR.png")) self.imageRightEdgeR = QPixmap(os.path.join(canvasPicsDir,"rightEdgeR.png")) self.shownLeftEdge, self.shownRightEdge = self.imageLeftEdge, self.imageRightEdge self.imageFrame = QIcon(QPixmap(os.path.join(canvasPicsDir, "frame.png"))) self.edgeSize = QSizeF(self.imageLeftEdge.size()) self.infoIcon = QGraphicsPixmapItem(QPixmap(redRStyle.widgetIcons["Info"]), None, canvas) self.warningIcon = QGraphicsPixmapItem(QPixmap(redRStyle.widgetIcons["Warning"]), None, canvas) self.errorIcon = QGraphicsPixmapItem(QPixmap(redRStyle.widgetIcons["Error"]), None, canvas) self.infoIcon.hide() self.warningIcon.hide() self.errorIcon.hide() self.resetWidgetSize() self.oldPos = self.pos()
def updateLinePos(self, newPos): if self.startWidget == None and self.endWidget == None: return if self.startWidget != None: func = "getDistToLeftEdgePoint" else: func = "getDistToRightEdgePoint" schema = self.canvasDlg.schema view = schema.activeTab() self.widget = None widgets = view.getItemsAtPos(newPos, CanvasWidget) if widgets: self.widget = widgets[0] else: dists = [(getattr(w, func)(newPos), w) for w in redRObjects.getIconsByTab([redRObjects.activeTabName()])[redRObjects.activeTabName()]] dists.sort() if dists and dists[0][0] < 20: self.widget = dists[0][1] if self.startWidget: pos = self.startWidget.getRightEdgePoint() else: pos = self.endWidget.getLeftEdgePoint() if self.widget not in [self.startWidget, self.endWidget]: if self.startWidget == None and self.widget.instance().outputs: newPos = self.widget.getRightEdgePoint() elif self.endWidget == None and self.widget.instance().inputs: newPos = self.widget.getLeftEdgePoint() self.setLine(pos.x(), pos.y(), newPos.x(), newPos.y())