コード例 #1
0
ファイル: commentNode.py プロジェクト: pedroCabrera/PyFlow
    def mouseMoveEvent(self, event):
        QGraphicsItem.mouseMoveEvent(self, event)
        delta = self.lastMousePos - event.pos()
        self.lastNodePos = self.scenePos()
        # resize
        if self.bResize:
            delta = event.scenePos() - self.mousePressPos
            if self.resizeDirection == (1, 0):
                # right edge resize
                newWidth = delta.x() + self.initialRectWidth
                if newWidth > self.minWidth:
                    self.label().width = newWidth
                    self.rect.setRight(newWidth)
                    self.label().adjustSizes()
            elif self.resizeDirection == (0, -1):
                newHeight = delta.y() + self.initialRectHeight
                newHeight = max(newHeight, self.label().h + 20.0)
                if newHeight > self.minHeight:
                    # bottom edge resize
                    self.rect.setHeight(newHeight)
            elif self.resizeDirection == (1, -1):
                newWidth = delta.x() + self.initialRectWidth
                newHeight = delta.y() + self.initialRectHeight
                newHeight = max(newHeight, self.label().h + 20.0)
                if newHeight > self.minHeight and newWidth > self.minWidth:
                    self.label().width = newWidth
                    self.rect.setRight(newWidth)
                    self.label().setTextWidth(newWidth)
                    self.rect.setHeight(newHeight)                   

            self.update()
            self.label().update()
        self.lastMousePos = event.pos()
コード例 #2
0
    def __init__(self, parent=None, **kwargs):
        QGraphicsItem.__init__(self, parent=parent)

        self.enabled = kwargs.get('enabled', True)
        self.color = kwargs.get('color', QColor(31, 32, 33, 255))
        self.disabled_color = kwargs.get('disabled_color', QColor(125, 125, 125, 255))
        self.selected_color = kwargs.get('selected_color', QColor(30, 35, 40, 255))
        self.disabled_border_width = kwargs.get('disabled_border_width', 1.5)
        self.selected_border_width = kwargs.get('selected_border_width', 1.5)
        self.disabled_border_color = kwargs.get('disabled_border_color', QColor(40, 40, 40, 255))
        self.selected_border_color = kwargs.get('selected_border_color', QColor(250, 210, 90, 255))
        self.disabled_shadow_color = kwargs.get('disabled_shadow_color', QColor(35, 35, 35, 60))
        self.selected_shadow_color = kwargs.get('selected_shadow_color', QColor(105, 55, 0, 60))
        self.disabled_border_style = kwargs.get('disabled_border_style', Qt.DashDotLine)
        self.selected_border_style = kwargs.get('selected_border_style', Qt.DashLine)

        self._border_width = kwargs.get('border_width', 1.5)
        self._shadow_color = kwargs.get('shadow_color', QColor(0, 0, 0, 60))
        self._border_color = kwargs.get('border_color', QColor(10, 10, 10, 255))
        self._border_type = kwargs.get('border_type', Qt.SolidLine)

        self._current_pos = QPointF(0, 0)
        self._new_pos = QPointF(0, 0)

        self._width = kwargs.get('width', 120)
        self._height = kwargs.get('height', 40)
        self._sizes = [0, 0, self._width, self._height, 7, 7]  # [x, y, width, height, radius_x, radius_x]
        self._is_hovered = False

        self._render_effects = True
コード例 #3
0
 def mousePressEvent(self, event):
     QGraphicsItem.mousePressEvent(self, event)
     self.mousePressPos = event.scenePos()
     self.lastNodePos = self.scenePos()
     pBottomRight = self.rect.bottomRight()
     bottomRightRect = QtCore.QRectF(pBottomRight.x() - 6,
                                     pBottomRight.y() - 6, 5, 5)
     # detect where on the node
     if bottomRightRect.contains(event.pos()) and self.expanded:
         self.initialRectWidth = self.rect.width()
         self.initialRectHeight = self.rect.height()
         self.resizeDirection = (1, 1)
         self.setFlag(QGraphicsItem.ItemIsMovable, False)
         self.bResize = True
     elif event.pos().x() > (self.rect.width() - 20) and self.expanded:
         self.initialRectWidth = self.rect.width()
         self.resizeDirection = (1, 0)
         self.setFlag(QGraphicsItem.ItemIsMovable, False)
         self.bResize = True
     elif (event.pos().y() + self.label().defaultHeight) > (
             self.rect.height() - 30) and self.expanded:
         self.initialRectHeight = self.rect.height()
         self.resizeDirection = (0, 1)
         self.setFlag(QGraphicsItem.ItemIsMovable, False)
         self.bResize = True
     if self.expanded:
         self.nodesToMove.clear()
         self.updateChildrens(self.collidingItems())
     else:
         nodes = []
         for nodename in self.nodesNamesToMove:
             nodes.append(self.graph().nodes[nodename])
         self.updateChildrens(nodes)
コード例 #4
0
ファイル: Node.py プロジェクト: ZeroCool940711/PyFlow-1
    def __init__(self,
                 name,
                 graph,
                 w=8000,
                 color=Colors.NodeBackgrounds,
                 headColor=Colors.NodeNameRect,
                 bUseTextureBg=False):
        QGraphicsItem.__init__(self)
        NodeBase.__init__(self, name, graph)
        self.setCacheMode(QGraphicsItem.DeviceCoordinateCache)
        self.opt_node_base_color = Colors.NodeBackgrounds
        self.opt_selected_pen_color = Colors.NodeSelectedPenColor
        self.opt_pen_selected_type = QtCore.Qt.SolidLine
        self._left_stretch = 0
        self.color = color
        self.height_offset = 3
        self.nodeMainGWidget = QGraphicsWidget(self)
        self.nodeMainGWidget.setObjectName('{0}MainLayout'.format(name))
        self._w = 0
        self.h = 40
        self.sizes = [0, 0, self.w, self.h, 10, 10]
        self.w = w
        self.setFlag(QGraphicsItem.ItemIsMovable)
        self.setFlag(QGraphicsItem.ItemIsFocusable)
        self.setFlag(QGraphicsItem.ItemIsSelectable)
        self.setFlag(QGraphicsItem.ItemSendsGeometryChanges)
        self.custom_widget_data = {}
        # node name
        self.label = weakref.ref(NodeName(self, bUseTextureBg, headColor))
        # set node layouts
        self.nodeMainGWidget.setParentItem(self)
        # main
        self.portsMainLayout = QGraphicsLinearLayout(QtCore.Qt.Horizontal)
        self.portsMainLayout.setSizePolicy(QSizePolicy.Maximum,
                                           QSizePolicy.Maximum)
        self.portsMainLayout.setContentsMargins(1, 1, 1, 1)
        self.nodeMainGWidget.setLayout(self.portsMainLayout)
        self.nodeMainGWidget.setX(self.nodeMainGWidget.x())
        # inputs layout
        self.inputsLayout = QGraphicsLinearLayout(QtCore.Qt.Vertical)
        self.inputsLayout.setSizePolicy(QSizePolicy.Expanding,
                                        QSizePolicy.Maximum)
        self.inputsLayout.setContentsMargins(1, 1, 1, 1)
        self.portsMainLayout.addItem(self.inputsLayout)
        # outputs layout
        self.outputsLayout = QGraphicsLinearLayout(QtCore.Qt.Vertical)
        self.outputsLayout.setSizePolicy(QSizePolicy.Expanding,
                                         QSizePolicy.Maximum)
        self.outputsLayout.setContentsMargins(1, 1, 1, 1)
        self.portsMainLayout.addItem(self.outputsLayout)

        self.setZValue(1)

        self.tweakPosition()
        self.icon = None

        self._Constraints = {}
        self.asGraphSides = False
        self.isTemp = False
コード例 #5
0
 def itemChange(self, change, value):
     if change == self.ItemPositionChange:
         # grid snapping
         value.setX(
             roundup(
                 value.x() - self.graph().grid_size +
                 self.graph().grid_size / 3.0,
                 self.graph().grid_size))
         value.setY(
             roundup(
                 value.y() - self.graph().grid_size +
                 self.graph().grid_size / 3.0,
                 self.graph().grid_size))
         value.setY(value.y() - 2)
         return value
     return QGraphicsItem.itemChange(self, change, value)
コード例 #6
0
 def mouseReleaseEvent(self, event):
     self.update()
     QGraphicsItem.mouseReleaseEvent(self, event)
コード例 #7
0
 def mousePressEvent(self, event):
     self.update()
     # self.setCursor(QtCore.Qt.ClosedHandCursor)
     QGraphicsItem.mousePressEvent(self, event)
コード例 #8
0
ファイル: Node.py プロジェクト: pedroCabrera/PyFlow
 def itemChange(self, change, value):
     return QGraphicsItem.itemChange(self, change, value)
コード例 #9
0
 def hoverLeaveEvent(self, event):
     QGraphicsItem.hoverLeaveEvent(self, event)
     self._is_hovered = False
コード例 #10
0
 def hoverEnterEvent(self, event):
     QGraphicsItem.hoverEnterEvent(self, event)
     self._is_hovered = True
コード例 #11
0
 def mouseDoubleClickEvent(self, event):
     self.update()
     QGraphicsItem.mouseDoubleClickEvent(self, event)
コード例 #12
0
 def mousePressEvent(self, event):
     self.update()
     QGraphicsItem.mousePressEvent(self, event)
     self._current_pos = self.pos()
コード例 #13
0
ファイル: commentNode.py プロジェクト: pedroCabrera/PyFlow
 def mouseReleaseEvent(self, event):
     QGraphicsItem.mouseReleaseEvent(self, event)
     self.bResize = False