def __init__(self, head, tail, uuid): QGraphicsObject.__init__(self) if not issubclass(head.__class__, dict) and not isinstance(tail.__class__, dict): raise AttributeError self.setZValue(0.0) self.__kId = uuid self.__head = head self.__tail = tail if head[ENode.kGuiAttributeType].match(EAttribute.kTypeInput): self.__head = tail self.__tail = head self.__head[ENode.kGuiAttributeParent].onMove.connect(self.update) self.__tail[ENode.kGuiAttributeParent].onMove.connect(self.update) self.__headPoint = QPointF(0.0, 0.0) self.__tailPoint = QPointF(0.0, 0.0) self.__pen = QPen(QColor(43, 43, 43), 2, Qt.SolidLine) self.update()
def __init__(self, *args): QGraphicsObject.__init__(self, *args) self.setFlag(QGraphicsItem.ItemHasNoContents, True) self.setAcceptedMouseButtons(Qt.RightButton | Qt.LeftButton) self.setAcceptHoverEvents(True) self.setZValue(self.Z_VALUE) self.sourceItem = None self.sourceAnchor = None self.sinkItem = None self.sinkAnchor = None self.curveItem = LinkCurveItem(self) self.sourceIndicator = LinkAnchorIndicator(self) self.sinkIndicator = LinkAnchorIndicator(self) self.sourceIndicator.hide() self.sinkIndicator.hide() self.linkTextItem = QGraphicsTextItem(self) self.__sourceName = "" self.__sinkName = "" self.__dynamic = False self.__dynamicEnabled = False self.hover = False
def __init__(self, head, tail, uuid): QGraphicsObject.__init__(self) if not issubclass(head.__class__, dict) and not isinstance( tail.__class__, dict): raise AttributeError self.setZValue(0.0) self.__kId = uuid self.__head = head self.__tail = tail if head[ENode.kGuiAttributeType].match(EAttribute.kTypeInput): self.__head = tail self.__tail = head self.__head[ENode.kGuiAttributeParent].onMove.connect(self.update) self.__tail[ENode.kGuiAttributeParent].onMove.connect(self.update) self.__headPoint = QPointF(0.0, 0.0) self.__tailPoint = QPointF(0.0, 0.0) self.__pen = QPen(QColor(43, 43, 43), 2, Qt.SolidLine) self.update()
def __init__(self, title, palette, values, parent): QGraphicsObject.__init__(self, parent) GraphicsWidgetAnchor.__init__(self) self.parent = self.legend = parent self.palette = palette self.values = values self.title = QGraphicsTextItem('%s:' % title, self) f = self.title.font() f.setBold(True) self.title.setFont(f) self.title_item = QGraphicsRectItem(self.title.boundingRect(), self) self.title_item.setPen(QPen(Qt.NoPen)) self.title_item.stackBefore(self.title) self.label_items = [QGraphicsTextItem(text, self) for text in values] for i in self.label_items: i.setTextWidth(50) self.rect = QRectF() self.gradient_item = QGraphicsRectItem(self) self.gradient = QLinearGradient() self.gradient.setStops([(v * 0.1, self.palette[v * 0.1]) for v in range(11)]) self.orientation = Qt.Horizontal self.set_orientation(Qt.Vertical) self.setFlag(QGraphicsItem.ItemIgnoresTransformations, True) self.setFlag(QGraphicsItem.ItemIsMovable, True)
def __init__(self, eNodeHandle): QGraphicsObject.__init__(self) self.setFlag(QGraphicsItem.ItemIsMovable, True) self.setAcceptsHoverEvents(True) self.__isDefaultPen = False self.__pen = None self.__pens = {0: EDraw.EColor.DefaultLeaveHoverPen, 1: EDraw.EColor.DefaultEnterHoverPen} self.setPen(self.__pens[self.__isDefaultPen]) self.__font = EDraw.DefaultNodeFont self.__nodeHandle = eNodeHandle self.__nodeHandle.Message.connect(self.__messageFilter) self.__name = self.__nodeHandle.__class__.__name__ self.__attrRect = QRectF(0, 0, 15, 15) self.__titleRect = QRectF(0, 0, 135, 20) self.__textSpace = QRectF(self.__attrRect.width() + self.pen().width(), 0.0, (self.__titleRect.width() - self.__attrRect.width() * 2 - self.pen().width() * 2) / 2, self.__attrRect.height()) self.buildAttributes() self.__height = max([self.__in_attr_step, self.__out_attr_step])
def __init__(self, parent=None, **kwargs): QGraphicsObject.__init__(self, parent, **kwargs) self.setFlag(QGraphicsObject.ItemHasNoContents) self.__layoutPending = False self.__isActive = False self.__invalidatedAnchors = [] self.__enabled = True
def __init__(self, parent=None, **kwargs): QGraphicsObject.__init__(self, parent, **kwargs) self.setFlag(QGraphicsObject.ItemSendsGeometryChanges) self.__path = QPainterPath() self.__brush = QBrush(Qt.NoBrush) self.__pen = QPen() self.__boundingRect = None
def setEnabled(self, enabled): """ Reimplemented from :class:`QGraphicsObject` Set link enabled state. When disabled the link is rendered with a dashed line. """ QGraphicsObject.setEnabled(self, enabled)
def __init__(self, text, parent): QGraphicsObject.__init__(self, parent) self.text_item = QGraphicsTextItem(text + ':', self) f = self.text_item.font() f.setBold(True) self.text_item.setFont(f) self.rect_item = QGraphicsRectItem(self.text_item.boundingRect(), self) self.rect_item.setPen(QPen(Qt.NoPen)) self.rect_item.stackBefore(self.text_item)
def update(self): QGraphicsObject.prepareGeometryChange(self) self.__headPoint = self.mapFromItem(self.__head[ENode.kGuiAttributeParent], self.__head[ENode.kGuiAttributePlug]) self.__tailPoint = self.mapFromItem(self.__tail[ENode.kGuiAttributeParent], self.__tail[ENode.kGuiAttributePlug]) self.__headOffsetLine = QLineF(self.__headPoint, QPointF(self.__headPoint.x() + 15, self.__headPoint.y())) self.__tailOffsetLine = QLineF(self.__tailPoint, QPointF(self.__tailPoint.x() - 15, self.__tailPoint.y())) line = QLineF(self.__headPoint, self.__tailPoint) self.__line = line
def itemChange(self, change, value): if change == QGraphicsItem.ItemSelectedChange: self.shapeItem.setSelected(value.toBool()) elif change == QGraphicsItem.ItemPositionHasChanged: self.positionChanged.emit() return QGraphicsObject.itemChange(self, change, value)
def itemChange(self, change, value): if change == QGraphicsObject.ItemPositionHasChanged: pos = qunwrap(value) self.positionChanged.emit() self.positionChanged[QPointF].emit(pos) return QGraphicsObject.itemChange(self, change, value)
def hoverEnterEvent(self, event): # Hover enter event happens when the mouse enters any child object # but we only want to show the 'hovered' shadow when the mouse # is over the 'curveItem', so we install self as an event filter # on the LinkCurveItem and listen to its hover events. self.curveItem.installSceneEventFilter(self) return QGraphicsObject.hoverEnterEvent(self, event)
def __init__(self, palette, values, parent): QGraphicsObject.__init__(self, parent) self.palette = palette self.values = values self.legend = parent self.label_items = [QGraphicsTextItem(text, self) for text in values] for i in self.label_items: i.setTextWidth(50) self.rect = QRectF() self.gradient_item = QGraphicsRectItem(self) self.gradient = QLinearGradient() self.gradient.setStops([(v*0.1, self.palette[v*0.1]) for v in range(11) ]) self.orientation = Qt.Horizontal self.set_orientation(Qt.Vertical)
def sceneEventFilter(self, obj, event): if obj is self.curveItem: if event.type() == QEvent.GraphicsSceneHoverEnter: self.setHoverState(True) elif event.type() == QEvent.GraphicsSceneHoverLeave: self.setHoverState(False) return QGraphicsObject.sceneEventFilter(self, obj, event)
def itemChange(self, change, value): if change == QGraphicsItem.ItemSelectedChange: self.shapeItem.setSelected(value) self.captionTextItem.setSelectionState(value) elif change == QGraphicsItem.ItemPositionHasChanged: self.positionChanged.emit() return QGraphicsObject.itemChange(self, change, value)
def __init__(self, name, parent=None): QGraphicsObject.__init__(self, parent=parent) self._coreItem = CoreItem(40, parent=self) self._isSelected = False self._isHover = False self.setObjectName(name) self._connectors = dict() self.setAcceptHoverEvents(True) self.setAcceptedMouseButtons(Qt.LeftButton) self.setAcceptDrops(True) self.setFlag(QGraphicsItem.ItemIsMovable, True) self.setFlag(QGraphicsItem.ItemHasNoContents, True) self.setToolTip(name)
def __init__(self, palette, values, parent): QGraphicsObject.__init__(self, parent) self.parent = parent self.palette = palette self.values = values self.legend = parent self.label_items = [QGraphicsTextItem(text, self) for text in values] for i in self.label_items: i.setTextWidth(50) self.rect = QRectF() self.gradient_item = QGraphicsRectItem(self) self.gradient = QLinearGradient() self.gradient.setStops([(v * 0.1, self.palette[v * 0.1]) for v in range(11)]) self.orientation = Qt.Horizontal self.set_orientation(Qt.Vertical)
def __init__(self): QGraphicsObject.__init__(self) self.__uuid = uuid.uuid1() #self.setZValue(-0.5) self.__polygon = EDraw.Circle(7, 12) self.__isSnapMode = False self.__snapPoint = QPointF(0.0, 0.0) self.__gridSize = 10 self.__dummyLine = QLineF() self.__dummyData = None self.__editPointOne = None self.__BBTemp = None self.__angle = 0.0
def __init__(self, parent=None, **kwargs): QGraphicsObject.__init__(self, parent, **kwargs) self.setFlag(QGraphicsItem.ItemHasNoContents) self.setFlag(QGraphicsItem.ItemIsFocusable) self.__line = QLineF() self.__points = \ [ControlPoint(self, ControlPoint.TopLeft), # TopLeft is line start ControlPoint(self, ControlPoint.BottomRight) # line end ] self.__activeControl = None if self.scene(): self.__installFilter() for p in self.__points: p.setFlag(QGraphicsItem.ItemIsFocusable) p.setFocusProxy(self)
def __init__(self, name, point, parent): QGraphicsObject.__init__(self, parent) self.text_item = QGraphicsTextItem(name, self) if point: s = point.size() height = max(2*s, self.text_item.boundingRect().height()) else: height = self.text_item.boundingRect().height() p = 0.5 * height self.text_item.setPos(height, 0) self.point_item = point if point: self.point_item.setParentItem(self) self.point_item.setPos(p, p) self._rect = QRectF(0, 0, height + self.text_item.boundingRect().width(), height ) self.rect_item = QGraphicsRectItem(self._rect, self) self.rect_item.setPen(QPen(Qt.NoPen)) self.rect_item.stackBefore(self.text_item) if self.point_item: self.rect_item.stackBefore(self.point_item)
def update(self): QGraphicsObject.prepareGeometryChange(self) self.__headPoint = self.mapFromItem( self.__head[ENode.kGuiAttributeParent], self.__head[ENode.kGuiAttributePlug]) self.__tailPoint = self.mapFromItem( self.__tail[ENode.kGuiAttributeParent], self.__tail[ENode.kGuiAttributePlug]) self.__headOffsetLine = QLineF( self.__headPoint, QPointF(self.__headPoint.x() + 15, self.__headPoint.y())) self.__tailOffsetLine = QLineF( self.__tailPoint, QPointF(self.__tailPoint.x() - 15, self.__tailPoint.y())) line = QLineF(self.__headPoint, self.__tailPoint) self.__line = line
def __init__(self, widget_description=None, parent=None, **kwargs): self.__boundingRect = None QGraphicsObject.__init__(self, parent, **kwargs) self.setFlag(QGraphicsItem.ItemSendsGeometryChanges, True) self.setFlag(QGraphicsItem.ItemHasNoContents, True) self.setFlag(QGraphicsItem.ItemIsSelectable, True) self.setFlag(QGraphicsItem.ItemIsMovable, True) self.setFlag(QGraphicsItem.ItemIsFocusable, True) # central body shape item self.shapeItem = None # in/output anchor items self.inputAnchorItem = None self.outputAnchorItem = None # title text item self.captionTextItem = None # error, warning, info items self.errorItem = None self.warningItem = None self.infoItem = None self.__title = "" self.__processingState = 0 self.__progress = -1 self.__statusMessage = "" self.__error = None self.__warning = None self.__info = None self.__anchorLayout = None self.__animationEnabled = False self.setZValue(self.Z_VALUE) self.setupGraphics() self.setWidgetDescription(widget_description)
def sceneEventFilter(self, obj, event): try: obj = toGraphicsObjectIfPossible(obj) if isinstance(obj, ControlPoint): etype = event.type() if etype == QEvent.GraphicsSceneMousePress: self.__setActiveControl(obj) elif etype == QEvent.GraphicsSceneMouseRelease: self.__setActiveControl(None) return QGraphicsObject.sceneEventFilter(self, obj, event) except Exception: log.error("", exc_info=True)
def __init__(self, name, point, parent): QGraphicsObject.__init__(self, parent) self.text_item = QGraphicsTextItem(name, self) if point: s = point.size() height = max(2 * s, self.text_item.boundingRect().height()) else: height = self.text_item.boundingRect().height() p = 0.5 * height self.text_item.setPos(height, 0) self.point_item = point if point: self.point_item.setParentItem(self) self.point_item.setPos(p, p) self._rect = QRectF(0, 0, height + self.text_item.boundingRect().width(), height) self.rect_item = QGraphicsRectItem(self._rect, self) self.rect_item.setPen(QPen(Qt.NoPen)) self.rect_item.stackBefore(self.text_item) if self.point_item: self.rect_item.stackBefore(self.point_item)
def __init__(self, parent=None, rect=None, constraints=0, **kwargs): QGraphicsObject.__init__(self, parent, **kwargs) self.setFlag(QGraphicsItem.ItemHasNoContents) self.setFlag(QGraphicsItem.ItemIsFocusable) self.__rect = rect if rect is not None else QRectF() self.__margins = QMargins() points = \ [ControlPoint(self, ControlPoint.Left), ControlPoint(self, ControlPoint.Top), ControlPoint(self, ControlPoint.TopLeft), ControlPoint(self, ControlPoint.Right), ControlPoint(self, ControlPoint.TopRight), ControlPoint(self, ControlPoint.Bottom), ControlPoint(self, ControlPoint.BottomLeft), ControlPoint(self, ControlPoint.BottomRight) ] assert(points == sorted(points, key=lambda p: p.anchor())) self.__points = dict((p.anchor(), p) for p in points) if self.scene(): self.__installFilter() for p in points: p.setFlag(QGraphicsItem.ItemIsFocusable) p.setFocusProxy(self) self.controlPoint(ControlPoint.Top).setConstraint(Qt.Vertical) self.controlPoint(ControlPoint.Bottom).setConstraint(Qt.Vertical) self.controlPoint(ControlPoint.Left).setConstraint(Qt.Horizontal) self.controlPoint(ControlPoint.Right).setConstraint(Qt.Horizontal) self.__constraints = constraints self.__activeControl = None self.__pointsLayout()
def __init__(self, eNodeHandle): QGraphicsObject.__init__(self) self.setFlag(QGraphicsItem.ItemIsMovable, True) self.setAcceptsHoverEvents(True) self.__isDefaultPen = False self.__pen = None self.__pens = { 0: EDraw.EColor.DefaultLeaveHoverPen, 1: EDraw.EColor.DefaultEnterHoverPen } self.setPen(self.__pens[self.__isDefaultPen]) self.Name = eNodeHandle.Name self.__font = QFont('Helvetica', 8, False) self.__nodeHandle = eNodeHandle self.__nodeHandle.Message.connect(self.__messageFilter) self.__attrRect = QRectF(0, 0, 15, 15) self.__titleRect = QRectF(0, 0, 125, 20) self.__textSpace = QRectF( self.__attrRect.width() + self.pen().width(), 0.0, (self.__titleRect.width() - self.__attrRect.width() * 2 - self.pen().width() * 2) / 2, self.__attrRect.height()) self.__attributes = {} self.__out_attr_step = self.__titleRect.height() + self.pen().width() self.__in_attr_step = self.__titleRect.height() + self.pen().width() self.__buildAttributes() self.__height = max([self.__in_attr_step, self.__out_attr_step])
def __init__(self, graph, scene): QGraphicsObject.__init__(self) if scene: scene.addItem(self) self.graph = graph self.curves = [] self.items = {} self.attributes = [] self.point_attrs = {} self.point_vals = {} self.default_values = { PointColor: Qt.black, PointSize: 8, PointSymbol: OWPoint.Ellipse } self.box_rect = QRectF() self.setFiltersChildEvents(True) self.setFlag(self.ItemHasNoContents, True) self.mouse_down = False self._orientation = Qt.Vertical self.max_size = QSizeF() self._floating = True self._floating_animation = None self._mouse_down_pos = QPointF()
def __init__(self, graph, scene): QGraphicsObject.__init__(self) if scene: scene.addItem(self) self.graph = graph self.curves = [] self.items = {} self.attributes = [] self.point_attrs = {} self.point_vals = {} self.default_values = { PointColor : Qt.black, PointSize : 8, PointSymbol : OWPoint.Ellipse } self.box_rect = QRectF() self.setFiltersChildEvents(True) self.setFlag(self.ItemHasNoContents, True) self.mouse_down = False self._orientation = Qt.Vertical self.max_size = QSizeF() self._floating = True self._floating_animation = None self._mouse_down_pos = QPointF()
def __init__(self, head, tail, uuid, arrowed=False): QGraphicsObject.__init__(self) self.__arrowed = arrowed if not issubclass(head.__class__, dict) and not isinstance(tail.__class__, dict): raise AttributeError self.setZValue(0.0) self.__kId = uuid self.__head = head self.__tail = tail self.__path = QPainterPath() self.__headPoint = QPointF(0.0, 0.0) self.__tailPoint = QPointF(0.0, 0.0) self.__head[ENode.kGuiAttributeParent].onMove.connect(self.update) self.__tail[ENode.kGuiAttributeParent].onMove.connect(self.update) self.__pen = QPen(QColor(43, 43, 43), 2, Qt.SolidLine) self.update()
def mouseMoveEvent(self, mouseEvent): QGraphicsObject.mouseMoveEvent(self, mouseEvent) self.onMove.emit()
def mouseDoubleClickEvent(self, mouseEvent): QGraphicsObject.mouseDoubleClickEvent(self, mouseEvent)
def mousePressEvent(self, mouseEvent): QGraphicsObject.mousePressEvent(self, mouseEvent) #if mouseEvent.button() == Qt.RightButton: #print self.mapFromPoint(mouseEvent.scenePos()) self.onPress.emit()
def hoverLeaveEvent(self, mouseEvent): QGraphicsObject.hoverLeaveEvent(self, mouseEvent) self.__toggleHighlight()
def focusOutEvent(self, event): self.shapeItem.setHasFocus(False) return QGraphicsObject.focusOutEvent(self, event)
def hoverLeaveEvent(self, event): QGraphicsObject.hoverLeaveEvent(self, event) event.accept() self._isHover = False
def itemChange(self, change, value): if change == QGraphicsItem.ItemSceneHasChanged: if self.scene(): self.__installFilter() return QGraphicsObject.itemChange(self, change, value)
def itemChange(self, change, value): if change == QGraphicsItem.ItemScenePositionHasChanged: self.scenePositionChanged.emit(value) return QGraphicsObject.itemChange(self, change, value)
def __init__(self, *args): QGraphicsObject.__init__(self, *args) self.setFlag(QGraphicsItem.ItemSendsScenePositionChanges, True) self.setFlag(QGraphicsItem.ItemHasNoContents, True) self.__direction = QPointF()
def event(self, event): if event.type() == QEvent.LayoutRequest: self.activate() return True return QGraphicsObject.event(self, event)
def hoverLeaveEvent(self, event): # Remove the event filter to prevent unnecessary work in # scene event filter when not needed self.curveItem.removeSceneEventFilter(self) return QGraphicsObject.hoverLeaveEvent(self, event)
def hoverMoveEvent(self, mouseEvent): QGraphicsObject.hoverMoveEvent(self, mouseEvent)
def mouseDoubleClickEvent(self, event): if self.shapeItem.path().contains(event.pos()): QGraphicsObject.mouseDoubleClickEvent(self, event) QTimer.singleShot(0, self.activated.emit) else: event.ignore()
def focusInEvent(self, event): self.shapeItem.setHasFocus(True) return QGraphicsObject.focusInEvent(self, event)
def mousePressEvent(self, event): if self.shapeItem.path().contains(event.pos()): return QGraphicsObject.mousePressEvent(self, event) else: event.ignore()
def contextMenuEvent(self, event): if self.shapeItem.path().contains(event.pos()): return QGraphicsObject.contextMenuEvent(self, event) else: event.ignore()