From 66dfe986bd0750bed5a280bfbd48f453fb78a3d8 Mon Sep 17 00:00:00 2001 From: jchanvfx Date: Mon, 23 May 2022 16:31:00 +1200 Subject: [PATCH 1/9] Updated PIPE constant vars to enums. --- NodeGraphQt/base/graph.py | 20 ++++----- NodeGraphQt/constants.py | 74 ++++++++++++++++++++++++--------- NodeGraphQt/qgraphics/pipe.py | 59 +++++++++++++------------- NodeGraphQt/qgraphics/slicer.py | 18 +++++--- NodeGraphQt/widgets/viewer.py | 4 +- 5 files changed, 108 insertions(+), 67 deletions(-) diff --git a/NodeGraphQt/base/graph.py b/NodeGraphQt/base/graph.py index 2654ebb0..24fc0be3 100644 --- a/NodeGraphQt/base/graph.py +++ b/NodeGraphQt/base/graph.py @@ -5,7 +5,7 @@ import os import re -from Qt import QtCore, QtWidgets, QtGui +from Qt import QtCore, QtWidgets from NodeGraphQt.base.commands import (NodeAddedCmd, NodeRemovedCmd, @@ -18,7 +18,7 @@ from NodeGraphQt.base.port import Port from NodeGraphQt.constants import ( NODE_LAYOUT_DIRECTION, NODE_LAYOUT_HORIZONTAL, NODE_LAYOUT_VERTICAL, - PIPE_LAYOUT_CURVED, PIPE_LAYOUT_STRAIGHT, PIPE_LAYOUT_ANGLE, + PIPE_LAYOUT, URI_SCHEME, URN_SCHEME, IN_PORT, OUT_PORT, VIEWER_GRID_LINES @@ -752,7 +752,7 @@ def set_pipe_collision(self, mode=True): self._model.pipe_collision = mode self._viewer.pipe_collision = mode - def set_pipe_style(self, style=PIPE_LAYOUT_CURVED): + def set_pipe_style(self, style=PIPE_LAYOUT.CURVED.value): """ Set node graph pipes to be drawn as straight, curved or angled. @@ -764,17 +764,17 @@ def set_pipe_style(self, style=PIPE_LAYOUT_CURVED): Pipe Layout Styles: - * :attr:`NodeGraphQt.constants.PIPE_LAYOUT_CURVED` - * :attr:`NodeGraphQt.constants.PIPE_LAYOUT_STRAIGHT` - * :attr:`NodeGraphQt.constants.PIPE_LAYOUT_ANGLE` + * :attr:`NodeGraphQt.constants.PIPE_LAYOUT.CURVED.value` + * :attr:`NodeGraphQt.constants.PIPE_LAYOUT.STRAIGHT.value` + * :attr:`NodeGraphQt.constants.PIPE_LAYOUT.ANGLE.value` Args: style (int): pipe layout style. """ - pipe_max = max([PIPE_LAYOUT_CURVED, - PIPE_LAYOUT_STRAIGHT, - PIPE_LAYOUT_ANGLE]) - style = style if 0 <= style <= pipe_max else PIPE_LAYOUT_CURVED + pipe_max = max([PIPE_LAYOUT.CURVED.value, + PIPE_LAYOUT.STRAIGHT.value, + PIPE_LAYOUT.ANGLE.value]) + style = style if 0 <= style <= pipe_max else PIPE_LAYOUT.CURVED.value self._viewer.set_pipe_layout(style) def fit_to_selection(self): diff --git a/NodeGraphQt/constants.py b/NodeGraphQt/constants.py index 1159f720..74cbef09 100644 --- a/NodeGraphQt/constants.py +++ b/NodeGraphQt/constants.py @@ -3,6 +3,7 @@ import os from Qt import QtWidgets +from enum import Enum from .pkg_info import __version__ @@ -11,28 +12,59 @@ the whole ``NodeGraphQt`` library. """ +# =================================== GLOBAL =================================== + #: Current version of the NodeGraphQt framework. VERSION = __version__ -# === PIPE === - -PIPE_WIDTH = 1.2 -PIPE_STYLE_DEFAULT = 0 -PIPE_STYLE_DASHED = 1 -PIPE_STYLE_DOTTED = 2 -PIPE_DEFAULT_COLOR = (175, 95, 30, 255) -PIPE_DISABLED_COLOR = (190, 20, 20, 255) -PIPE_ACTIVE_COLOR = (70, 255, 220, 255) -PIPE_HIGHLIGHT_COLOR = (232, 184, 13, 255) -PIPE_SLICER_COLOR = (255, 50, 75) -#: Style to draw the connection pipes as straight lines. -PIPE_LAYOUT_STRAIGHT = 0 -#: Style to draw the connection pipes as curved lines. -PIPE_LAYOUT_CURVED = 1 -#: Style to draw the connection pipes as angled lines. -PIPE_LAYOUT_ANGLE = 2 - -# === PORT === +# ==================================== PIPE ==================================== + + +class PIPE_STYLING(Enum): + """ + Pipe Constant. + """ + #: pipe width. + WIDTH = 1.2 + #: default color. + COLOR = (175, 95, 30, 255) + #: pipe color to a node when it's disabled. + DISABLED_COLOR = (190, 20, 20, 255) + #: color when the pipe is selected or mouse hovered. + ACTIVE_COLOR = (70, 255, 220, 255) + #: pipe color to a node when it's selected. + HIGHLIGHT_COLOR = (232, 184, 13, 255) + #: draw connection as a line. + DRAW_TYPE_DEFAULT = 0 + #: draw connection as dashed lines. + DRAW_TYPE_DASHED = 1 + #: draw connection as a dotted line. + DRAW_TYPE_DOTTED = 2 + + +class PIPE_SLICER_STYLING(Enum): + """ + Slicer Pipe Constant. + """ + #: pipe width. + WIDTH = 1.5 + #: default color. + COLOR = (255, 50, 75) + + +class PIPE_LAYOUT(Enum): + """ + Pipe layout constant. + """ + #: draw the connection pipes as straight lines. + STRAIGHT = 0 + #: draw the connection pipes as curved lines. + CURVED = 1 + #: draw the connection pipes as angled lines. + ANGLE = 2 + + +# ==================================== PORT ==================================== #: Connection type for input ports. IN_PORT = 'in' @@ -48,7 +80,7 @@ PORT_HOVER_BORDER_COLOR = (136, 255, 35, 255) PORT_FALLOFF = 15.0 -# === NODE === +# ==================================== NODE ==================================== NODE_WIDTH = 160 NODE_HEIGHT = 60 @@ -108,6 +140,8 @@ VIEWER_GRID_COLOR = (45, 45, 45) VIEWER_GRID_SIZE = 50 +# ================================== PRIVATE =================================== + URI_SCHEME = 'nodegraphqt://' URN_SCHEME = 'nodegraphqt::' diff --git a/NodeGraphQt/qgraphics/pipe.py b/NodeGraphQt/qgraphics/pipe.py index b2b48c12..1a63f13e 100644 --- a/NodeGraphQt/qgraphics/pipe.py +++ b/NodeGraphQt/qgraphics/pipe.py @@ -4,21 +4,18 @@ from Qt import QtCore, QtGui, QtWidgets from NodeGraphQt.constants import ( - PIPE_DEFAULT_COLOR, PIPE_ACTIVE_COLOR, - PIPE_HIGHLIGHT_COLOR, PIPE_DISABLED_COLOR, - PIPE_STYLE_DASHED, PIPE_STYLE_DEFAULT, PIPE_STYLE_DOTTED, - PIPE_LAYOUT_STRAIGHT, PIPE_WIDTH, IN_PORT, OUT_PORT, Z_VAL_PIPE, + PIPE_STYLING, PIPE_LAYOUT, IN_PORT, OUT_PORT, Z_VAL_PIPE, Z_VAL_NODE_WIDGET, - PIPE_LAYOUT_ANGLE, PIPE_LAYOUT_CURVED, ITEM_CACHE_MODE, NODE_LAYOUT_VERTICAL, NODE_LAYOUT_HORIZONTAL, - NODE_LAYOUT_DIRECTION) + NODE_LAYOUT_DIRECTION +) from NodeGraphQt.qgraphics.port import PortItem PIPE_STYLES = { - PIPE_STYLE_DEFAULT: QtCore.Qt.SolidLine, - PIPE_STYLE_DASHED: QtCore.Qt.DashLine, - PIPE_STYLE_DOTTED: QtCore.Qt.DotLine + PIPE_STYLING.DRAW_TYPE_DEFAULT.value: QtCore.Qt.SolidLine, + PIPE_STYLING.DRAW_TYPE_DASHED.value: QtCore.Qt.DashLine, + PIPE_STYLING.DRAW_TYPE_DOTTED.value: QtCore.Qt.DotLine } @@ -32,8 +29,8 @@ def __init__(self, input_port=None, output_port=None): self.setZValue(Z_VAL_PIPE) self.setAcceptHoverEvents(True) self.setFlag(QtWidgets.QGraphicsItem.ItemIsSelectable) - self._color = PIPE_DEFAULT_COLOR - self._style = PIPE_STYLE_DEFAULT + self._color = PIPE_STYLING.COLOR.value + self._style = PIPE_STYLING.DRAW_TYPE_DEFAULT.value self._active = False self._highlight = False self._input_port = input_port @@ -76,22 +73,22 @@ def paint(self, painter, option, widget): """ color = QtGui.QColor(*self._color) pen_style = PIPE_STYLES.get(self.style) - pen_width = PIPE_WIDTH + pen_width = PIPE_STYLING.WIDTH.value if self._active: - color = QtGui.QColor(*PIPE_ACTIVE_COLOR) + color = QtGui.QColor(*PIPE_STYLING.ACTIVE_COLOR.value) if pen_style == QtCore.Qt.DashDotDotLine: pen_width += 1 else: pen_width += 0.35 elif self._highlight: - color = QtGui.QColor(*PIPE_HIGHLIGHT_COLOR) - pen_style = PIPE_STYLES.get(PIPE_STYLE_DEFAULT) + color = QtGui.QColor(*PIPE_STYLING.HIGHLIGHT_COLOR.value) + pen_style = PIPE_STYLES.get(PIPE_STYLING.DRAW_TYPE_DEFAULT.value) if self.disabled(): if not self._active: - color = QtGui.QColor(*PIPE_DISABLED_COLOR) + color = QtGui.QColor(*PIPE_STYLING.DISABLED_COLOR.value) pen_width += 0.2 - pen_style = PIPE_STYLES.get(PIPE_STYLE_DOTTED) + pen_style = PIPE_STYLES.get(PIPE_STYLING.DRAW_TYPE_DOTTED.value) pen = QtGui.QPen(color, pen_width, pen_style) pen.setCapStyle(QtCore.Qt.RoundCap) @@ -154,7 +151,7 @@ def __draw_path_vertical(self, start_port, pos1, pos2, path): pos2 (QPointF): end port position. path (QPainterPath): path to draw. """ - if self.viewer_pipe_layout() == PIPE_LAYOUT_CURVED: + if self.viewer_pipe_layout() == PIPE_LAYOUT.CURVED.value: ctr_offset_y1, ctr_offset_y2 = pos1.y(), pos2.y() tangent = abs(ctr_offset_y1 - ctr_offset_y2) @@ -171,7 +168,7 @@ def __draw_path_vertical(self, start_port, pos1, pos2, path): ctr_point2 = QtCore.QPointF(pos2.x(), ctr_offset_y2) path.cubicTo(ctr_point1, ctr_point2, pos2) self.setPath(path) - elif self.viewer_pipe_layout() == PIPE_LAYOUT_ANGLE: + elif self.viewer_pipe_layout() == PIPE_LAYOUT.ANGLE.value: ctr_offset_y1, ctr_offset_y2 = pos1.y(), pos2.y() distance = abs(ctr_offset_y1 - ctr_offset_y2)/2 if start_port.port_type == IN_PORT: @@ -198,7 +195,7 @@ def __draw_path_horizontal(self, start_port, pos1, pos2, path): pos2 (QPointF): end port position. path (QPainterPath): path to draw. """ - if self.viewer_pipe_layout() == PIPE_LAYOUT_CURVED: + if self.viewer_pipe_layout() == PIPE_LAYOUT.CURVED.value: ctr_offset_x1, ctr_offset_x2 = pos1.x(), pos2.x() tangent = abs(ctr_offset_x1 - ctr_offset_x2) @@ -215,7 +212,7 @@ def __draw_path_horizontal(self, start_port, pos1, pos2, path): ctr_point2 = QtCore.QPointF(ctr_offset_x2, pos2.y()) path.cubicTo(ctr_point1, ctr_point2, pos2) self.setPath(path) - elif self.viewer_pipe_layout() == PIPE_LAYOUT_ANGLE: + elif self.viewer_pipe_layout() == PIPE_LAYOUT.ANGLE.value: ctr_offset_x1, ctr_offset_x2 = pos1.x(), pos2.x() distance = abs(ctr_offset_x1 - ctr_offset_x2) / 2 if start_port.port_type == IN_PORT: @@ -260,7 +257,7 @@ def draw_path(self, start_port, end_port=None, cursor_pos=None): path = QtGui.QPainterPath() path.moveTo(line.x1(), line.y1()) - if self.viewer_pipe_layout() == PIPE_LAYOUT_STRAIGHT: + if self.viewer_pipe_layout() == PIPE_LAYOUT.STRAIGHT.value: path.lineTo(pos2) self.setPath(path) return @@ -298,8 +295,10 @@ def viewer_pipe_layout(self): def activate(self): self._active = True - color = QtGui.QColor(*PIPE_ACTIVE_COLOR) - pen = QtGui.QPen(color, 2.5, PIPE_STYLES.get(PIPE_STYLE_DEFAULT)) + color = QtGui.QColor(*PIPE_STYLING.ACTIVE_COLOR.value) + pen = QtGui.QPen( + color, 2.5, PIPE_STYLES.get(PIPE_STYLING.DRAW_TYPE_DEFAULT.value) + ) self.setPen(pen) def active(self): @@ -307,8 +306,10 @@ def active(self): def highlight(self): self._highlight = True - color = QtGui.QColor(*PIPE_HIGHLIGHT_COLOR) - pen = QtGui.QPen(color, 2, PIPE_STYLES.get(PIPE_STYLE_DEFAULT)) + color = QtGui.QColor(*PIPE_STYLING.HIGHLIGHT_COLOR.value) + pen = QtGui.QPen( + color, 2, PIPE_STYLES.get(PIPE_STYLING.DRAW_TYPE_DEFAULT.value) + ) self.setPen(pen) def highlighted(self): @@ -409,9 +410,9 @@ def paint(self, painter, option, widget): used to describe the parameters needed to draw. widget (QtWidgets.QWidget): not used. """ - color = QtGui.QColor(*PIPE_ACTIVE_COLOR) - pen_style = PIPE_STYLES.get(PIPE_STYLE_DASHED) - pen_width = PIPE_WIDTH + 0.35 + color = QtGui.QColor(*PIPE_STYLING.ACTIVE_COLOR.value) + pen_style = PIPE_STYLES.get(PIPE_STYLING.DRAW_TYPE_DASHED.value) + pen_width = PIPE_STYLING.WIDTH.value + 0.35 pen = QtGui.QPen(color, pen_width) pen.setStyle(pen_style) diff --git a/NodeGraphQt/qgraphics/slicer.py b/NodeGraphQt/qgraphics/slicer.py index 11c480f9..8618fc41 100644 --- a/NodeGraphQt/qgraphics/slicer.py +++ b/NodeGraphQt/qgraphics/slicer.py @@ -3,7 +3,7 @@ from Qt import QtCore, QtGui, QtWidgets -from NodeGraphQt.constants import Z_VAL_NODE_WIDGET, PIPE_SLICER_COLOR +from NodeGraphQt.constants import Z_VAL_NODE_WIDGET, PIPE_SLICER_STYLING class SlicerPipeItem(QtWidgets.QGraphicsPathItem): @@ -25,7 +25,7 @@ def paint(self, painter, option, widget): used to describe the parameters needed to draw. widget (QtWidgets.QWidget): not used. """ - color = QtGui.QColor(*PIPE_SLICER_COLOR) + color = QtGui.QColor(*PIPE_SLICER_STYLING.COLOR.value) p1 = self.path().pointAtPercent(0) p2 = self.path().pointAtPercent(1) size = 6.0 @@ -42,15 +42,21 @@ def paint(self, painter, option, widget): text_x = painter.fontMetrics().width(text) / 2 text_y = painter.fontMetrics().height() / 1.5 text_pos = QtCore.QPointF(p1.x() - text_x, p1.y() - text_y) - text_color = QtGui.QColor(*PIPE_SLICER_COLOR) + text_color = QtGui.QColor(*PIPE_SLICER_STYLING.COLOR.value) text_color.setAlpha(80) - painter.setPen(QtGui.QPen(text_color, 1.5, QtCore.Qt.SolidLine)) + painter.setPen(QtGui.QPen( + text_color, PIPE_SLICER_STYLING.WIDTH.value, QtCore.Qt.SolidLine + )) painter.drawText(text_pos, text) - painter.setPen(QtGui.QPen(color, 1.5, QtCore.Qt.DashDotLine)) + painter.setPen(QtGui.QPen( + color, PIPE_SLICER_STYLING.WIDTH.value, QtCore.Qt.DashDotLine + )) painter.drawPath(self.path()) - pen = QtGui.QPen(color, 1.5, QtCore.Qt.SolidLine) + pen = QtGui.QPen( + color, PIPE_SLICER_STYLING.WIDTH.value, QtCore.Qt.SolidLine + ) pen.setCapStyle(QtCore.Qt.RoundCap) pen.setJoinStyle(QtCore.Qt.MiterJoin) painter.setPen(pen) diff --git a/NodeGraphQt/widgets/viewer.py b/NodeGraphQt/widgets/viewer.py index f575b8ae..3c115bdd 100644 --- a/NodeGraphQt/widgets/viewer.py +++ b/NodeGraphQt/widgets/viewer.py @@ -6,7 +6,7 @@ from Qt import QtGui, QtCore, QtWidgets from NodeGraphQt.base.menu import BaseMenu -from NodeGraphQt.constants import IN_PORT, OUT_PORT, PIPE_LAYOUT_CURVED +from NodeGraphQt.constants import IN_PORT, OUT_PORT, PIPE_LAYOUT from NodeGraphQt.qgraphics.node_abstract import AbstractNodeItem from NodeGraphQt.qgraphics.node_backdrop import BackdropNodeItem from NodeGraphQt.qgraphics.pipe import PipeItem, LivePipeItem @@ -71,7 +71,7 @@ def __init__(self, parent=None, undo_stack=None): self._update_scene() self._last_size = self.size() - self._pipe_layout = PIPE_LAYOUT_CURVED + self._pipe_layout = PIPE_LAYOUT.CURVED.value self._detached_port = None self._start_port = None self._origin_pos = None From 84853f4567a05cd7ba4f46d6eaa37e3f4ca8a48b Mon Sep 17 00:00:00 2001 From: jchanvfx Date: Mon, 23 May 2022 23:27:26 +1200 Subject: [PATCH 2/9] Updated PORT constant vars to enums. --- NodeGraphQt/base/commands.py | 10 ++--- NodeGraphQt/base/graph.py | 24 ++++++---- NodeGraphQt/base/graph_actions.py | 12 ++--- NodeGraphQt/base/port.py | 12 ++--- NodeGraphQt/constants.py | 69 +++++++++++++++++++---------- NodeGraphQt/nodes/base_node.py | 7 ++- NodeGraphQt/qgraphics/node_base.py | 14 +++--- NodeGraphQt/qgraphics/node_group.py | 4 +- NodeGraphQt/qgraphics/pipe.py | 18 ++++---- NodeGraphQt/qgraphics/port.py | 44 +++++++++--------- NodeGraphQt/widgets/viewer.py | 16 ++++--- 11 files changed, 133 insertions(+), 97 deletions(-) diff --git a/NodeGraphQt/base/commands.py b/NodeGraphQt/base/commands.py index 261606a9..ea75fc85 100644 --- a/NodeGraphQt/base/commands.py +++ b/NodeGraphQt/base/commands.py @@ -1,7 +1,7 @@ #!/usr/bin/python from Qt import QtWidgets -from NodeGraphQt.constants import IN_PORT, OUT_PORT +from NodeGraphQt.constants import PORT_TYPE class PropertyChangedCmd(QtWidgets.QUndoCommand): @@ -158,7 +158,7 @@ class NodeInputConnectedCmd(QtWidgets.QUndoCommand): def __init__(self, src_port, trg_port): QtWidgets.QUndoCommand.__init__(self) - if src_port.type_() == IN_PORT: + if src_port.type_() == PORT_TYPE.IN.value: self.source = src_port self.target = trg_port else: @@ -185,7 +185,7 @@ class NodeInputDisconnectedCmd(QtWidgets.QUndoCommand): def __init__(self, src_port, trg_port): QtWidgets.QUndoCommand.__init__(self) - if src_port.type_() == IN_PORT: + if src_port.type_() == PORT_TYPE.IN.value: self.source = src_port self.target = trg_port else: @@ -355,9 +355,9 @@ def set_visible(self, visible): self.port.view.setVisible(visible) node_view = self.port.node().view text_item = None - if self.port.type_() == IN_PORT: + if self.port.type_() == PORT_TYPE.IN.value: text_item = node_view.get_input_text_item(self.port.view) - elif self.port.type_() == OUT_PORT: + elif self.port.type_() == PORT_TYPE.OUT.value: text_item = node_view.get_output_text_item(self.port.view) if text_item: text_item.setVisible(visible) diff --git a/NodeGraphQt/base/graph.py b/NodeGraphQt/base/graph.py index 24fc0be3..ad964db3 100644 --- a/NodeGraphQt/base/graph.py +++ b/NodeGraphQt/base/graph.py @@ -20,7 +20,7 @@ NODE_LAYOUT_DIRECTION, NODE_LAYOUT_HORIZONTAL, NODE_LAYOUT_VERTICAL, PIPE_LAYOUT, URI_SCHEME, URN_SCHEME, - IN_PORT, OUT_PORT, + PORT_TYPE, VIEWER_GRID_LINES ) from NodeGraphQt.nodes.backdrop_node import BackdropNode @@ -369,7 +369,7 @@ def _on_connection_changed(self, disconnected, connected): return label = 'connect node(s)' if connected else 'disconnect node(s)' - ptypes = {IN_PORT: 'inputs', OUT_PORT: 'outputs'} + ptypes = {PORT_TYPE.IN.value: 'inputs', PORT_TYPE.OUT.value: 'outputs'} self._undo_stack.beginMacro(label) for p1_view, p2_view in disconnected: @@ -396,7 +396,7 @@ def _on_connection_sliced(self, ports): """ if not ports: return - ptypes = {IN_PORT: 'inputs', OUT_PORT: 'outputs'} + ptypes = {PORT_TYPE.IN.value: 'inputs', PORT_TYPE.OUT.value: 'outputs'} self._undo_stack.beginMacro('slice connections') for p1_view, p2_view in ports: node1 = self._model.nodes[p1_view.node.id] @@ -1246,16 +1246,20 @@ def _serialize(self, nodes): for pname, conn_data in inputs.items(): for conn_id, prt_names in conn_data.items(): for conn_prt in prt_names: - pipe = {IN_PORT: [n_id, pname], - OUT_PORT: [conn_id, conn_prt]} + pipe = { + PORT_TYPE.IN.value: [n_id, pname], + PORT_TYPE.OUT.value: [conn_id, conn_prt] + } if pipe not in serial_data['connections']: serial_data['connections'].append(pipe) for pname, conn_data in outputs.items(): for conn_id, prt_names in conn_data.items(): for conn_prt in prt_names: - pipe = {OUT_PORT: [n_id, pname], - IN_PORT: [conn_id, conn_prt]} + pipe = { + PORT_TYPE.OUT.value: [n_id, pname], + PORT_TYPE.IN.value: [conn_id, conn_prt] + } if pipe not in serial_data['connections']: serial_data['connections'].append(pipe) @@ -2362,8 +2366,10 @@ def get_node_by_port(self, port): Returns: PortInputNode or PortOutputNode: port node object. """ - func_type = {IN_PORT: self.get_input_port_nodes, - OUT_PORT: self.get_output_port_nodes} + func_type = { + PORT_TYPE.IN.value: self.get_input_port_nodes, + PORT_TYPE.OUT.value: self.get_output_port_nodes + } for n in func_type.get(port.type_(), []): if port == n.parent_port: return n diff --git a/NodeGraphQt/base/graph_actions.py b/NodeGraphQt/base/graph_actions.py index 69e2c226..c1b7264a 100644 --- a/NodeGraphQt/base/graph_actions.py +++ b/NodeGraphQt/base/graph_actions.py @@ -256,24 +256,24 @@ def _curved_pipe(graph): """ Set node graph pipes layout as curved. """ - from NodeGraphQt.constants import PIPE_LAYOUT_CURVED - graph.set_pipe_style(PIPE_LAYOUT_CURVED) + from NodeGraphQt.constants import PIPE_LAYOUT + graph.set_pipe_style(PIPE_LAYOUT.CURVED.value) def _straight_pipe(graph): """ Set node graph pipes layout as straight. """ - from NodeGraphQt.constants import PIPE_LAYOUT_STRAIGHT - graph.set_pipe_style(PIPE_LAYOUT_STRAIGHT) + from NodeGraphQt.constants import PIPE_LAYOUT + graph.set_pipe_style(PIPE_LAYOUT.STRAIGHT.value) def _angle_pipe(graph): """ Set node graph pipes layout as angled. """ - from NodeGraphQt.constants import PIPE_LAYOUT_ANGLE - graph.set_pipe_style(PIPE_LAYOUT_ANGLE) + from NodeGraphQt.constants import PIPE_LAYOUT + graph.set_pipe_style(PIPE_LAYOUT.ANGLE.value) def _bg_grid_none(graph): diff --git a/NodeGraphQt/base/port.py b/NodeGraphQt/base/port.py index e4b7bce2..afac8028 100644 --- a/NodeGraphQt/base/port.py +++ b/NodeGraphQt/base/port.py @@ -9,7 +9,7 @@ NodeInputDisconnectedCmd ) from NodeGraphQt.base.model import PortModel -from NodeGraphQt.constants import IN_PORT, OUT_PORT +from NodeGraphQt.constants import PORT_TYPE from NodeGraphQt.errors import PortError @@ -196,9 +196,9 @@ def connected_ports(self): for node_id, port_names in self.model.connected_ports.items(): for port_name in port_names: node = graph.get_node_by_id(node_id) - if self.type_() == IN_PORT: + if self.type_() == PORT_TYPE.IN.value: ports.append(node.outputs()[port_name]) - elif self.type_() == OUT_PORT: + elif self.type_() == PORT_TYPE.OUT.value: ports.append(node.inputs()[port_name]) return ports @@ -284,7 +284,8 @@ def connect_to(self, port=None, push_undo=True): # emit "port_connected" signal from the parent graph. ports = {p.type_(): p for p in [self, port]} - graph.port_connected.emit(ports[IN_PORT], ports[OUT_PORT]) + graph.port_connected.emit(ports[PORT_TYPE.IN.value], + ports[PORT_TYPE.OUT.value]) def disconnect_from(self, port=None, push_undo=True): """ @@ -315,7 +316,8 @@ def disconnect_from(self, port=None, push_undo=True): # emit "port_disconnected" signal from the parent graph. ports = {p.type_(): p for p in [self, port]} - graph.port_disconnected.emit(ports[IN_PORT], ports[OUT_PORT]) + graph.port_disconnected.emit(ports[PORT_TYPE.IN.value], + ports[PORT_TYPE.OUT.value]) def clear_connections(self, push_undo=True): """ diff --git a/NodeGraphQt/constants.py b/NodeGraphQt/constants.py index 74cbef09..bc2f6057 100644 --- a/NodeGraphQt/constants.py +++ b/NodeGraphQt/constants.py @@ -22,15 +22,16 @@ class PIPE_STYLING(Enum): """ - Pipe Constant. + Pipe styling layout: + ``NodeGraphQt.constants.PIPE_STYLING`` """ - #: pipe width. + #: default width. WIDTH = 1.2 #: default color. COLOR = (175, 95, 30, 255) #: pipe color to a node when it's disabled. DISABLED_COLOR = (190, 20, 20, 255) - #: color when the pipe is selected or mouse hovered. + #: pipe color when selected or mouse over. ACTIVE_COLOR = (70, 255, 220, 255) #: pipe color to a node when it's selected. HIGHLIGHT_COLOR = (232, 184, 13, 255) @@ -44,9 +45,10 @@ class PIPE_STYLING(Enum): class PIPE_SLICER_STYLING(Enum): """ - Slicer Pipe Constant. + Slicer Pipe styling layout: + ``NodeGraphQt.constants.PIPE_SLICER_STYLING`` """ - #: pipe width. + #: default width. WIDTH = 1.5 #: default color. COLOR = (255, 50, 75) @@ -54,31 +56,52 @@ class PIPE_SLICER_STYLING(Enum): class PIPE_LAYOUT(Enum): """ - Pipe layout constant. + Pipe connection drawing layout: + ``NodeGraphQt.constants.PIPE_LAYOUT`` """ - #: draw the connection pipes as straight lines. + #: draw straight lines for pipe connections. STRAIGHT = 0 - #: draw the connection pipes as curved lines. + #: draw curved lines for pipe connections. CURVED = 1 - #: draw the connection pipes as angled lines. + #: draw angled lines for pipe connections. ANGLE = 2 - # ==================================== PORT ==================================== -#: Connection type for input ports. -IN_PORT = 'in' -#: Connection type for output ports. -OUT_PORT = 'out' - -PORT_DEFAULT_SIZE = 22.0 -PORT_DEFAULT_COLOR = (49, 115, 100, 255) -PORT_DEFAULT_BORDER_COLOR = (29, 202, 151, 255) -PORT_ACTIVE_COLOR = (14, 45, 59, 255) -PORT_ACTIVE_BORDER_COLOR = (107, 166, 193, 255) -PORT_HOVER_COLOR = (17, 43, 82, 255) -PORT_HOVER_BORDER_COLOR = (136, 255, 35, 255) -PORT_FALLOFF = 15.0 + +class PORT_STYLING(Enum): + """ + Port styling layout: + ``NodeGraphQt.constants.PORT_STYLING`` + """ + #: default port size. + SIZE = 22.0 + #: default port color. (r, g, b, a) + COLOR = (49, 115, 100, 255) + #: default port border color. + BORDER_COLOR = (29, 202, 151, 255) + #: port color when selected. + ACTIVE_COLOR = (14, 45, 59, 255) + #: port border color when selected. + ACTIVE_BORDER_COLOR = (107, 166, 193, 255) + #: port color on mouse over. + HOVER_COLOR = (17, 43, 82, 255) + #: port border color on mouse over. + HOVER_BORDER_COLOR = (136, 255, 35, 255) + #: threshold for selecting a port. + CLICK_FALLOFF = 15.0 + + +class PORT_TYPE(Enum): + """ + Port connection types: + ``NodeGraphQt.constants.PORT_TYPE`` + """ + #: Connection type for input ports. + IN = 'in' + #: Connection type for output ports. + OUT = 'out' + # ==================================== NODE ==================================== diff --git a/NodeGraphQt/nodes/base_node.py b/NodeGraphQt/nodes/base_node.py index cef3d184..55a4f301 100644 --- a/NodeGraphQt/nodes/base_node.py +++ b/NodeGraphQt/nodes/base_node.py @@ -7,7 +7,7 @@ NODE_PROP_QLINEEDIT, NODE_PROP_QCOMBO, NODE_PROP_QCHECKBOX, - IN_PORT, OUT_PORT, + PORT_TYPE, NODE_LAYOUT_VERTICAL, NODE_LAYOUT_HORIZONTAL) from NodeGraphQt.errors import (PortError, @@ -261,7 +261,7 @@ def add_input(self, name='input', multi_input=False, display_name=True, view.border_color = [min([255, max([0, i + 80])]) for i in color] port = Port(self, view) - port.model.type_ = IN_PORT + port.model.type_ = PORT_TYPE.IN.value port.model.name = name port.model.display_name = display_name port.model.multi_connection = multi_input @@ -303,7 +303,7 @@ def add_output(self, name='output', multi_output=True, display_name=True, view.color = color view.border_color = [min([255, max([0, i + 80])]) for i in color] port = Port(self, view) - port.model.type_ = OUT_PORT + port.model.type_ = PORT_TYPE.OUT.value port.model.name = name port.model.display_name = display_name port.model.multi_connection = multi_output @@ -632,4 +632,3 @@ def on_input_disconnected(self, in_port, out_port): out_port (NodeGraphQt.Port): output port that was disconnected. """ return - diff --git a/NodeGraphQt/qgraphics/node_base.py b/NodeGraphQt/qgraphics/node_base.py index 41ddf02e..6ed05e05 100644 --- a/NodeGraphQt/qgraphics/node_base.py +++ b/NodeGraphQt/qgraphics/node_base.py @@ -3,11 +3,11 @@ from Qt import QtGui, QtCore, QtWidgets -from NodeGraphQt.constants import (IN_PORT, OUT_PORT, +from NodeGraphQt.constants import (PORT_TYPE, PORT_STYLING, NODE_WIDTH, NODE_HEIGHT, NODE_ICON_SIZE, ICON_NODE_BASE, NODE_SEL_COLOR, NODE_SEL_BORDER_COLOR, - PORT_FALLOFF, Z_VAL_NODE, + Z_VAL_NODE, ITEM_CACHE_MODE) from NodeGraphQt.errors import NodeWidgetError from NodeGraphQt.qgraphics.node_abstract import AbstractNodeItem @@ -384,7 +384,7 @@ def align_ports(self, v_offset=0.0): v_offset (float): port vertical offset. """ width = self._width - txt_offset = PORT_FALLOFF - 2 + txt_offset = PORT_STYLING.CLICK_FALLOFF.value - 2 spacing = 1 # adjust input position @@ -624,9 +624,9 @@ def _add_port(self, port): text.setFont(text.font()) text.setVisible(port.display_name) text.setCacheMode(ITEM_CACHE_MODE) - if port.port_type == IN_PORT: + if port.port_type == PORT_TYPE.IN.value: self._input_items[port] = text - elif port.port_type == OUT_PORT: + elif port.port_type == PORT_TYPE.OUT.value: self._output_items[port] = text if self.scene(): self.post_init() @@ -653,7 +653,7 @@ def add_input(self, name='input', multi_port=False, display_name=True, else: port = PortItem(self) port.name = name - port.port_type = IN_PORT + port.port_type = PORT_TYPE.IN.value port.multi_connection = multi_port port.display_name = display_name port.locked = locked @@ -680,7 +680,7 @@ def add_output(self, name='output', multi_port=False, display_name=True, else: port = PortItem(self) port.name = name - port.port_type = OUT_PORT + port.port_type = PORT_TYPE.OUT.value port.multi_connection = multi_port port.display_name = display_name port.locked = locked diff --git a/NodeGraphQt/qgraphics/node_group.py b/NodeGraphQt/qgraphics/node_group.py index 26f4298b..ae15d0d1 100644 --- a/NodeGraphQt/qgraphics/node_group.py +++ b/NodeGraphQt/qgraphics/node_group.py @@ -3,7 +3,7 @@ from NodeGraphQt.constants import (NODE_SEL_BORDER_COLOR, NODE_SEL_COLOR, - PORT_FALLOFF) + PORT_STYLING) from NodeGraphQt.qgraphics.node_base import NodeItem @@ -114,7 +114,7 @@ def align_ports(self, v_offset=0.0): v_offset (float): port vertical offset. """ width = self._width - txt_offset = PORT_FALLOFF - 2 + txt_offset = PORT_STYLING.CLICK_FALLOFF.value - 2 spacing = 1 # adjust input position diff --git a/NodeGraphQt/qgraphics/pipe.py b/NodeGraphQt/qgraphics/pipe.py index 1a63f13e..f1e28619 100644 --- a/NodeGraphQt/qgraphics/pipe.py +++ b/NodeGraphQt/qgraphics/pipe.py @@ -4,7 +4,7 @@ from Qt import QtCore, QtGui, QtWidgets from NodeGraphQt.constants import ( - PIPE_STYLING, PIPE_LAYOUT, IN_PORT, OUT_PORT, Z_VAL_PIPE, + PIPE_STYLING, PIPE_LAYOUT, PORT_TYPE, Z_VAL_PIPE, Z_VAL_NODE_WIDGET, ITEM_CACHE_MODE, NODE_LAYOUT_VERTICAL, NODE_LAYOUT_HORIZONTAL, @@ -157,7 +157,7 @@ def __draw_path_vertical(self, start_port, pos1, pos2, path): max_height = start_port.node.boundingRect().height() tangent = min(tangent, max_height) - if start_port.port_type == IN_PORT: + if start_port.port_type == PORT_TYPE.IN.value: ctr_offset_y1 -= tangent ctr_offset_y2 += tangent else: @@ -171,7 +171,7 @@ def __draw_path_vertical(self, start_port, pos1, pos2, path): elif self.viewer_pipe_layout() == PIPE_LAYOUT.ANGLE.value: ctr_offset_y1, ctr_offset_y2 = pos1.y(), pos2.y() distance = abs(ctr_offset_y1 - ctr_offset_y2)/2 - if start_port.port_type == IN_PORT: + if start_port.port_type == PORT_TYPE.IN.value: ctr_offset_y1 -= distance ctr_offset_y2 += distance else: @@ -201,7 +201,7 @@ def __draw_path_horizontal(self, start_port, pos1, pos2, path): max_width = start_port.node.boundingRect().width() tangent = min(tangent, max_width) - if start_port.port_type == IN_PORT: + if start_port.port_type == PORT_TYPE.IN.value: ctr_offset_x1 -= tangent ctr_offset_x2 += tangent else: @@ -215,7 +215,7 @@ def __draw_path_horizontal(self, start_port, pos1, pos2, path): elif self.viewer_pipe_layout() == PIPE_LAYOUT.ANGLE.value: ctr_offset_x1, ctr_offset_x2 = pos1.x(), pos2.x() distance = abs(ctr_offset_x1 - ctr_offset_x2) / 2 - if start_port.port_type == IN_PORT: + if start_port.port_type == PORT_TYPE.IN.value: ctr_offset_x1 -= distance ctr_offset_x2 += distance else: @@ -327,10 +327,10 @@ def set_connections(self, port1, port2): port1.port_type: port1, port2.port_type: port2 } - self.input_port = ports[IN_PORT] - self.output_port = ports[OUT_PORT] - ports[IN_PORT].add_pipe(self) - ports[OUT_PORT].add_pipe(self) + self.input_port = ports[PORT_TYPE.IN.value] + self.output_port = ports[PORT_TYPE.OUT.value] + ports[PORT_TYPE.IN.value].add_pipe(self) + ports[PORT_TYPE.OUT.value].add_pipe(self) def disabled(self): if self.input_port and self.input_port.node.disabled: diff --git a/NodeGraphQt/qgraphics/port.py b/NodeGraphQt/qgraphics/port.py index 2c723980..71332754 100644 --- a/NodeGraphQt/qgraphics/port.py +++ b/NodeGraphQt/qgraphics/port.py @@ -2,15 +2,7 @@ from Qt import QtGui, QtCore, QtWidgets from NodeGraphQt.constants import ( - IN_PORT, OUT_PORT, - PORT_DEFAULT_COLOR, - PORT_DEFAULT_BORDER_COLOR, - PORT_DEFAULT_SIZE, - PORT_FALLOFF, - PORT_HOVER_COLOR, - PORT_HOVER_BORDER_COLOR, - PORT_ACTIVE_COLOR, - PORT_ACTIVE_BORDER_COLOR, + PORT_TYPE, PORT_STYLING, Z_VAL_PORT, ITEM_CACHE_MODE) @@ -28,13 +20,13 @@ def __init__(self, parent=None): self.setFlag(self.ItemSendsScenePositionChanges, True) self.setZValue(Z_VAL_PORT) self._pipes = [] - self._width = PORT_DEFAULT_SIZE - self._height = PORT_DEFAULT_SIZE + self._width = PORT_STYLING.SIZE.value + self._height = PORT_STYLING.SIZE.value self._hovered = False self._name = 'port' self._display_name = True - self._color = PORT_DEFAULT_COLOR - self._border_color = PORT_DEFAULT_BORDER_COLOR + self._color = PORT_STYLING.COLOR.value + self._border_color = PORT_STYLING.BORDER_COLOR.value self._border_size = 1 self._port_type = None self._multi_connection = False @@ -47,7 +39,9 @@ def __repr__(self): return '{}.PortItem("{}")'.format(self.__module__, self.name) def boundingRect(self): - return QtCore.QRectF(0.0, 0.0, self._width + PORT_FALLOFF, self._height) + return QtCore.QRectF(0.0, 0.0, + self._width + PORT_STYLING.CLICK_FALLOFF.value, + self._height) def paint(self, painter, option, widget): """ @@ -76,11 +70,11 @@ def paint(self, painter, option, widget): port_rect = QtCore.QRectF(rect_x, rect_y, rect_w, rect_h) if self._hovered: - color = QtGui.QColor(*PORT_HOVER_COLOR) - border_color = QtGui.QColor(*PORT_HOVER_BORDER_COLOR) + color = QtGui.QColor(*PORT_STYLING.HOVER_COLOR.value) + border_color = QtGui.QColor(*PORT_STYLING.HOVER_BORDER_COLOR.value) elif self.connected_pipes: - color = QtGui.QColor(*PORT_ACTIVE_COLOR) - border_color = QtGui.QColor(*PORT_ACTIVE_BORDER_COLOR) + color = QtGui.QColor(*PORT_STYLING.ACTIVE_COLOR.value) + border_color = QtGui.QColor(*PORT_STYLING.ACTIVE_BORDER_COLOR.value) else: color = QtGui.QColor(*self.color) border_color = QtGui.QColor(*self.border_color) @@ -146,9 +140,9 @@ def redraw_connected_pipes(self): if not self.connected_pipes: return for pipe in self.connected_pipes: - if self.port_type == IN_PORT: + if self.port_type == PORT_TYPE.IN.value: pipe.draw_path(self, pipe.output_port) - elif self.port_type == OUT_PORT: + elif self.port_type == PORT_TYPE.OUT.value: pipe.draw_path(pipe.input_port, self) def add_pipe(self, pipe): @@ -164,7 +158,10 @@ def connected_pipes(self): @property def connected_ports(self): ports = [] - port_types = {IN_PORT: 'output_port', OUT_PORT: 'input_port'} + port_types = { + PORT_TYPE.IN.value: 'output_port', + PORT_TYPE.OUT.value: 'input_port' + } for pipe in self.connected_pipes: ports.append(getattr(pipe, port_types[self.port_type])) return ports @@ -266,7 +263,10 @@ def connect_to(self, port): self.update() def disconnect_from(self, port): - port_types = {IN_PORT: 'output_port', OUT_PORT: 'input_port'} + port_types = { + PORT_TYPE.IN.value: 'output_port', + PORT_TYPE.OUT.value: 'input_port' + } for pipe in self.connected_pipes: connected_port = getattr(pipe, port_types[self.port_type]) if connected_port == port: diff --git a/NodeGraphQt/widgets/viewer.py b/NodeGraphQt/widgets/viewer.py index 3c115bdd..1b5d5f76 100644 --- a/NodeGraphQt/widgets/viewer.py +++ b/NodeGraphQt/widgets/viewer.py @@ -6,7 +6,7 @@ from Qt import QtGui, QtCore, QtWidgets from NodeGraphQt.base.menu import BaseMenu -from NodeGraphQt.constants import IN_PORT, OUT_PORT, PIPE_LAYOUT +from NodeGraphQt.constants import PORT_TYPE, PIPE_LAYOUT from NodeGraphQt.qgraphics.node_abstract import AbstractNodeItem from NodeGraphQt.qgraphics.node_backdrop import BackdropNodeItem from NodeGraphQt.qgraphics.pipe import PipeItem, LivePipeItem @@ -696,7 +696,10 @@ def sceneMousePressEvent(self, event): from_port.hovered = True - attr = {IN_PORT: 'output_port', OUT_PORT: 'input_port'} + attr = { + PORT_TYPE.IN.value: 'output_port', + PORT_TYPE.OUT.value: 'input_port' + } self._detached_port = getattr(pipe, attr[from_port.port_type]) self.start_live_connection(from_port) self._LIVE_PIPE.draw_path(self._start_port, cursor_pos=pos) @@ -829,9 +832,9 @@ def start_live_connection(self, selected_port): if not selected_port: return self._start_port = selected_port - if self._start_port.type == IN_PORT: + if self._start_port.type == PORT_TYPE.IN.value: self._LIVE_PIPE.input_port = self._start_port - elif self._start_port == OUT_PORT: + elif self._start_port == PORT_TYPE.OUT.value: self._LIVE_PIPE.output_port = self._start_port self._LIVE_PIPE.setVisible(True) @@ -873,7 +876,10 @@ def acyclic_check(start_port, end_port): """ start_node = start_port.node check_nodes = [end_port.node] - io_types = {IN_PORT: 'outputs', OUT_PORT: 'inputs'} + io_types = { + PORT_TYPE.IN.value: 'outputs', + PORT_TYPE.OUT.value: 'inputs' + } while check_nodes: check_node = check_nodes.pop(0) for check_port in getattr(check_node, io_types[end_port.port_type]): From f6a088de2654389a8515ae29792bed4884aa3210 Mon Sep 17 00:00:00 2001 From: jchan Date: Thu, 26 May 2022 11:37:06 +1200 Subject: [PATCH 3/9] version var clean up. --- NodeGraphQt/constants.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/NodeGraphQt/constants.py b/NodeGraphQt/constants.py index bc2f6057..c1819473 100644 --- a/NodeGraphQt/constants.py +++ b/NodeGraphQt/constants.py @@ -8,14 +8,20 @@ from .pkg_info import __version__ __doc__ = """ -The ``NodeGraphQt.constants`` namespace contains variables used throughout -the whole ``NodeGraphQt`` library. +| The ``NodeGraphQt.constants`` namespace contains variables used throughout + the whole NodeGraphQt library. """ # =================================== GLOBAL =================================== -#: Current version of the NodeGraphQt framework. +#: current version. VERSION = __version__ +#: major version. +VERSION_MAJOR = int(VERSION.split('.')[0]) +#: minor version. +VERSION_MINOR = int(VERSION.split('.')[1]) +#: patch version. +VERSION_PATCH = int(VERSION.split('.')[2]) # ==================================== PIPE ==================================== From 1941397ed0035122680e08e2354b07cd2fc1a1b3 Mon Sep 17 00:00:00 2001 From: jchan Date: Thu, 26 May 2022 23:15:00 +1200 Subject: [PATCH 4/9] Updated NODE constant vars to enums --- NodeGraphQt/constants.py | 21 +++++++--- NodeGraphQt/qgraphics/node_abstract.py | 9 ++--- NodeGraphQt/qgraphics/node_backdrop.py | 12 +++--- NodeGraphQt/qgraphics/node_base.py | 53 ++++++++++++++++---------- NodeGraphQt/qgraphics/node_group.py | 20 +++++----- NodeGraphQt/qgraphics/node_port_in.py | 14 ++++--- NodeGraphQt/qgraphics/node_port_out.py | 14 ++++--- NodeGraphQt/widgets/node_graph.py | 6 +-- NodeGraphQt/widgets/viewer_nav.py | 4 +- 9 files changed, 90 insertions(+), 63 deletions(-) diff --git a/NodeGraphQt/constants.py b/NodeGraphQt/constants.py index c1819473..83e55ff2 100644 --- a/NodeGraphQt/constants.py +++ b/NodeGraphQt/constants.py @@ -111,11 +111,22 @@ class PORT_TYPE(Enum): # ==================================== NODE ==================================== -NODE_WIDTH = 160 -NODE_HEIGHT = 60 -NODE_ICON_SIZE = 18 -NODE_SEL_COLOR = (255, 255, 255, 30) -NODE_SEL_BORDER_COLOR = (254, 207, 42, 255) + +class NODE_STYLING(Enum): + """ + Node styling layout: + ``NodeGraphQt.constants.NODE_STYLING`` + """ + #: default node width. + WIDTH = 160 + #: default node height. + HEIGHT = 60 + #: default node icon size (WxH). + ICON_SIZE = 18 + #: default node overlay color when selected. + SELECTED_COLOR = (255, 255, 255, 30) + #: default node border color when selected. + SELECTED_BORDER_COLOR = (254, 207, 42, 255) # === NODE PROPERTY === diff --git a/NodeGraphQt/qgraphics/node_abstract.py b/NodeGraphQt/qgraphics/node_abstract.py index 2241f4bd..ef4ace9c 100644 --- a/NodeGraphQt/qgraphics/node_abstract.py +++ b/NodeGraphQt/qgraphics/node_abstract.py @@ -1,10 +1,7 @@ #!/usr/bin/python from Qt import QtCore, QtWidgets -from NodeGraphQt.constants import (Z_VAL_NODE, - NODE_WIDTH, - NODE_HEIGHT, - ITEM_CACHE_MODE) +from NodeGraphQt.constants import Z_VAL_NODE, NODE_STYLING, ITEM_CACHE_MODE class AbstractNodeItem(QtWidgets.QGraphicsItem): @@ -28,8 +25,8 @@ def __init__(self, name='node', parent=None): 'disabled': False, 'visible': False, } - self._width = NODE_WIDTH - self._height = NODE_HEIGHT + self._width = NODE_STYLING.WIDTH.value + self._height = NODE_STYLING.HEIGHT.value def __repr__(self): return '{}.{}(\'{}\')'.format( diff --git a/NodeGraphQt/qgraphics/node_backdrop.py b/NodeGraphQt/qgraphics/node_backdrop.py index 7d3f2d8e..1d823920 100644 --- a/NodeGraphQt/qgraphics/node_backdrop.py +++ b/NodeGraphQt/qgraphics/node_backdrop.py @@ -1,9 +1,7 @@ #!/usr/bin/python from Qt import QtGui, QtCore, QtWidgets -from NodeGraphQt.constants import (Z_VAL_PIPE, - NODE_SEL_COLOR, - NODE_SEL_BORDER_COLOR) +from NodeGraphQt.constants import Z_VAL_PIPE, NODE_STYLING from NodeGraphQt.qgraphics.node_abstract import AbstractNodeItem from NodeGraphQt.qgraphics.pipe import PipeItem from NodeGraphQt.qgraphics.port import PortItem @@ -88,7 +86,7 @@ def paint(self, painter, option, widget): item = self.parentItem() if item and item.selected: - color = QtGui.QColor(*NODE_SEL_BORDER_COLOR) + color = QtGui.QColor(*NODE_STYLING.SELECTED_BORDER_COLOR.value) else: color = QtGui.QColor(*item.color) color = color.darker(110) @@ -221,7 +219,7 @@ def paint(self, painter, option, widget): self.backdrop_text) if self.selected: - sel_color = [x for x in NODE_SEL_COLOR] + sel_color = [x for x in NODE_STYLING.SELECTED_COLOR.value] sel_color[-1] = 15 painter.setBrush(QtGui.QColor(*sel_color)) painter.setPen(QtCore.Qt.NoPen) @@ -234,9 +232,9 @@ def paint(self, painter, option, widget): border = 0.8 border_color = self.color - if self.selected and NODE_SEL_BORDER_COLOR: + if self.selected and NODE_STYLING.SELECTED_BORDER_COLOR.value: border = 1.0 - border_color = NODE_SEL_BORDER_COLOR + border_color = NODE_STYLING.SELECTED_BORDER_COLOR.value painter.setBrush(QtCore.Qt.NoBrush) painter.setPen(QtGui.QPen(QtGui.QColor(*border_color), border)) painter.drawRoundedRect(rect, radius, radius) diff --git a/NodeGraphQt/qgraphics/node_base.py b/NodeGraphQt/qgraphics/node_base.py index 6ed05e05..66debb93 100644 --- a/NodeGraphQt/qgraphics/node_base.py +++ b/NodeGraphQt/qgraphics/node_base.py @@ -3,12 +3,14 @@ from Qt import QtGui, QtCore, QtWidgets -from NodeGraphQt.constants import (PORT_TYPE, PORT_STYLING, - NODE_WIDTH, NODE_HEIGHT, - NODE_ICON_SIZE, ICON_NODE_BASE, - NODE_SEL_COLOR, NODE_SEL_BORDER_COLOR, - Z_VAL_NODE, - ITEM_CACHE_MODE) +from NodeGraphQt.constants import ( + ITEM_CACHE_MODE, + ICON_NODE_BASE, + NODE_STYLING, + PORT_STYLING, + PORT_TYPE, + Z_VAL_NODE +) from NodeGraphQt.errors import NodeWidgetError from NodeGraphQt.qgraphics.node_abstract import AbstractNodeItem from NodeGraphQt.qgraphics.node_overlay_disabled import XDisabledItem @@ -28,9 +30,10 @@ class NodeItem(AbstractNodeItem): def __init__(self, name='node', parent=None): super(NodeItem, self).__init__(name, parent) pixmap = QtGui.QPixmap(ICON_NODE_BASE) - if pixmap.size().height() > NODE_ICON_SIZE: + if pixmap.size().height() > NODE_STYLING.ICON_SIZE.value: pixmap = pixmap.scaledToHeight( - NODE_ICON_SIZE, QtCore.Qt.SmoothTransformation + NODE_STYLING.ICON_SIZE.value, + QtCore.Qt.SmoothTransformation ) self._properties['icon'] = ICON_NODE_BASE self._icon_item = QtWidgets.QGraphicsPixmapItem(pixmap, self) @@ -73,7 +76,7 @@ def paint(self, painter, option, widget): # light overlay on background when selected. if self.selected: - painter.setBrush(QtGui.QColor(*NODE_SEL_COLOR)) + painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) painter.drawRoundedRect(rect, radius, radius) # node name background. @@ -84,7 +87,7 @@ def paint(self, painter, option, widget): rect.width() - padding[0] - margin, text_rect.height() - (padding[1] * 2)) if self.selected: - painter.setBrush(QtGui.QColor(*NODE_SEL_COLOR)) + painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) else: painter.setBrush(QtGui.QColor(0, 0, 0, 80)) painter.drawRoundedRect(text_rect, 3.0, 3.0) @@ -92,7 +95,9 @@ def paint(self, painter, option, widget): # node border if self.selected: border_width = 1.2 - border_color = QtGui.QColor(*NODE_SEL_BORDER_COLOR) + border_color = QtGui.QColor( + *NODE_STYLING.SELECTED_BORDER_COLOR.value + ) else: border_width = 0.8 border_color = QtGui.QColor(*self.border_color) @@ -202,10 +207,10 @@ def _set_base_size(self, add_w=0.0, add_h=0.0): add_h (float): add additional height. """ self._width, self._height = self.calc_size(add_w, add_h) - if self._width < NODE_WIDTH: - self._width = NODE_WIDTH - if self._height < NODE_HEIGHT: - self._height = NODE_HEIGHT + if self._width < NODE_STYLING.WIDTH.value: + self._width = NODE_STYLING.WIDTH.value + if self._height < NODE_STYLING.HEIGHT.value: + self._height = NODE_STYLING.HEIGHT.value def _set_text_color(self, color): """ @@ -524,9 +529,11 @@ def icon(self, path=None): self._properties['icon'] = path path = path or ICON_NODE_BASE pixmap = QtGui.QPixmap(path) - if pixmap.size().height() > NODE_ICON_SIZE: - pixmap = pixmap.scaledToHeight(NODE_ICON_SIZE, - QtCore.Qt.SmoothTransformation) + if pixmap.size().height() > NODE_STYLING.ICON_SIZE.value: + pixmap = pixmap.scaledToHeight( + NODE_STYLING.ICON_SIZE.value, + QtCore.Qt.SmoothTransformation + ) self._icon_item.setPixmap(pixmap) if self.scene(): self.post_init() @@ -808,14 +815,16 @@ def paint(self, painter, option, widget): # light overlay on background when selected. if self.selected: - painter.setBrush(QtGui.QColor(*NODE_SEL_COLOR)) + painter.setBrush( + QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value) + ) painter.drawRoundedRect(rect, radius, radius) # top & bottom edge background. padding = 2.0 height = 10 if self.selected: - painter.setBrush(QtGui.QColor(*NODE_SEL_COLOR)) + painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) else: painter.setBrush(QtGui.QColor(0, 0, 0, 80)) for y in [rect.y() + padding, rect.height() - height - 1]: @@ -828,7 +837,9 @@ def paint(self, painter, option, widget): border_color = QtGui.QColor(*self.border_color) if self.selected: border_width = 1.2 - border_color = QtGui.QColor(*NODE_SEL_BORDER_COLOR) + border_color = QtGui.QColor( + *NODE_STYLING.SELECTED_BORDER_COLOR.value + ) border_rect = QtCore.QRectF(rect.left(), rect.top(), rect.width(), rect.height()) diff --git a/NodeGraphQt/qgraphics/node_group.py b/NodeGraphQt/qgraphics/node_group.py index ae15d0d1..657d07dc 100644 --- a/NodeGraphQt/qgraphics/node_group.py +++ b/NodeGraphQt/qgraphics/node_group.py @@ -1,9 +1,7 @@ #!/usr/bin/python from Qt import QtCore, QtGui, QtWidgets -from NodeGraphQt.constants import (NODE_SEL_BORDER_COLOR, - NODE_SEL_COLOR, - PORT_STYLING) +from NodeGraphQt.constants import NODE_STYLING, PORT_STYLING from NodeGraphQt.qgraphics.node_base import NodeItem @@ -65,9 +63,11 @@ def paint(self, painter, option, widget): painter.drawRect(rect_2) if self.selected: - border_color = QtGui.QColor(*NODE_SEL_BORDER_COLOR) + border_color = QtGui.QColor( + *NODE_STYLING.SELECTED_BORDER_COLOR.value + ) # light overlay on background when selected. - painter.setBrush(QtGui.QColor(*NODE_SEL_COLOR)) + painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) painter.drawRect(rect_2) else: border_color = QtGui.QColor(*self.border_color) @@ -80,7 +80,7 @@ def paint(self, painter, option, widget): rect.right() - (padding[0] * 2) - margin, text_rect.height() - (padding[1] * 2)) if self.selected: - painter.setBrush(QtGui.QColor(*NODE_SEL_COLOR)) + painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) else: painter.setBrush(QtGui.QColor(0, 0, 0, 80)) painter.setPen(QtCore.Qt.NoPen) @@ -242,9 +242,11 @@ def paint(self, painter, option, widget): painter.drawRect(rect_2) if self.selected: - border_color = QtGui.QColor(*NODE_SEL_BORDER_COLOR) + border_color = QtGui.QColor( + *NODE_STYLING.SELECTED_BORDER_COLOR.value + ) # light overlay on background when selected. - painter.setBrush(QtGui.QColor(*NODE_SEL_COLOR)) + painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) painter.drawRect(rect_2) else: border_color = QtGui.QColor(*self.border_color) @@ -253,7 +255,7 @@ def paint(self, painter, option, widget): padding = 2.0 height = 10 if self.selected: - painter.setBrush(QtGui.QColor(*NODE_SEL_COLOR)) + painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) else: painter.setBrush(QtGui.QColor(0, 0, 0, 80)) diff --git a/NodeGraphQt/qgraphics/node_port_in.py b/NodeGraphQt/qgraphics/node_port_in.py index 6a981246..c07f5c2b 100644 --- a/NodeGraphQt/qgraphics/node_port_in.py +++ b/NodeGraphQt/qgraphics/node_port_in.py @@ -1,7 +1,7 @@ #!/usr/bin/python from Qt import QtCore, QtGui, QtWidgets -from NodeGraphQt.constants import (NODE_SEL_BORDER_COLOR, NODE_SEL_COLOR) +from NodeGraphQt.constants import NODE_STYLING from NodeGraphQt.qgraphics.node_base import NodeItem, NodeItemVertical @@ -74,8 +74,10 @@ def paint(self, painter, option, widget): poly = transform.map(triangle) if self.selected: - pen = QtGui.QPen(QtGui.QColor(*NODE_SEL_BORDER_COLOR), 1.3) - painter.setBrush(QtGui.QColor(*NODE_SEL_COLOR)) + pen = QtGui.QPen( + QtGui.QColor(*NODE_STYLING.SELECTED_BORDER_COLOR.value), 1.3 + ) + painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) else: pen = QtGui.QPen(QtGui.QColor(*self.border_color), 1.2) painter.setBrush(QtGui.QColor(0, 0, 0, 50)) @@ -220,8 +222,10 @@ def paint(self, painter, option, widget): poly = transform.map(triangle) if self.selected: - pen = QtGui.QPen(QtGui.QColor(*NODE_SEL_BORDER_COLOR), 1.3) - painter.setBrush(QtGui.QColor(*NODE_SEL_COLOR)) + pen = QtGui.QPen( + QtGui.QColor(*NODE_STYLING.SELECTED_BORDER_COLOR.value), 1.3 + ) + painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) else: pen = QtGui.QPen(QtGui.QColor(*self.border_color), 1.2) painter.setBrush(QtGui.QColor(0, 0, 0, 50)) diff --git a/NodeGraphQt/qgraphics/node_port_out.py b/NodeGraphQt/qgraphics/node_port_out.py index c834c7ea..6ba10bfb 100644 --- a/NodeGraphQt/qgraphics/node_port_out.py +++ b/NodeGraphQt/qgraphics/node_port_out.py @@ -1,7 +1,7 @@ #!/usr/bin/python from Qt import QtCore, QtGui, QtWidgets -from NodeGraphQt.constants import (NODE_SEL_BORDER_COLOR, NODE_SEL_COLOR) +from NodeGraphQt.constants import NODE_STYLING from NodeGraphQt.qgraphics.node_base import NodeItem, NodeItemVertical @@ -74,8 +74,10 @@ def paint(self, painter, option, widget): poly = transform.map(triangle) if self.selected: - pen = QtGui.QPen(QtGui.QColor(*NODE_SEL_BORDER_COLOR), 1.3) - painter.setBrush(QtGui.QColor(*NODE_SEL_COLOR)) + pen = QtGui.QPen( + QtGui.QColor(*NODE_STYLING.SELECTED_BORDER_COLOR.value), 1.3 + ) + painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) else: pen = QtGui.QPen(QtGui.QColor(*self.border_color), 1.2) painter.setBrush(QtGui.QColor(0, 0, 0, 50)) @@ -229,8 +231,10 @@ def paint(self, painter, option, widget): poly = transform.map(triangle) if self.selected: - pen = QtGui.QPen(QtGui.QColor(*NODE_SEL_BORDER_COLOR), 1.3) - painter.setBrush(QtGui.QColor(*NODE_SEL_COLOR)) + pen = QtGui.QPen( + QtGui.QColor(*NODE_STYLING.SELECTED_BORDER_COLOR.value), 1.3 + ) + painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) else: pen = QtGui.QPen(QtGui.QColor(*self.border_color), 1.2) painter.setBrush(QtGui.QColor(0, 0, 0, 50)) diff --git a/NodeGraphQt/widgets/node_graph.py b/NodeGraphQt/widgets/node_graph.py index 786e746b..676109b2 100644 --- a/NodeGraphQt/widgets/node_graph.py +++ b/NodeGraphQt/widgets/node_graph.py @@ -1,7 +1,7 @@ from Qt import QtWidgets, QtGui from NodeGraphQt.constants import ( - NODE_SEL_BORDER_COLOR, + NODE_STYLING, VIEWER_BG_COLOR, VIEWER_NAV_BG_COLOR ) @@ -36,12 +36,12 @@ def __init__(self, parent=None): 'color': 'rgb({0},{1},{2})'.format(*text_color), 'background': 'rgb({0},{1},{2})'.format(*VIEWER_NAV_BG_COLOR), 'border-top': '1px solid rgb({0},{1},{2})' - .format(*NODE_SEL_BORDER_COLOR), + .format(*NODE_STYLING.SELECTED_BORDER_COLOR.value), }, 'QTabBar::tab:hover': { 'color': 'rgb({0},{1},{2})'.format(*text_color), 'border-top': '1px solid rgb({0},{1},{2})' - .format(*NODE_SEL_BORDER_COLOR), + .format(*NODE_STYLING.SELECTED_BORDER_COLOR.value), } } stylesheet = '' diff --git a/NodeGraphQt/widgets/viewer_nav.py b/NodeGraphQt/widgets/viewer_nav.py index 89bacab9..f41d53f5 100644 --- a/NodeGraphQt/widgets/viewer_nav.py +++ b/NodeGraphQt/widgets/viewer_nav.py @@ -1,7 +1,7 @@ from Qt import QtWidgets, QtCore, QtGui from NodeGraphQt.constants import ( - NODE_SEL_BORDER_COLOR, + NODE_STYLING, VIEWER_NAV_BG_COLOR, VIEWER_NAV_ITEM_COLOR ) @@ -40,7 +40,7 @@ def paint(self, painter, option, index): itm_color = QtGui.QColor(80, 128, 123) if option.state & QtWidgets.QStyle.State_Selected: bg_color = bg_color.lighter(120) - itm_color = QtGui.QColor(*NODE_SEL_BORDER_COLOR) + itm_color = QtGui.QColor(*NODE_STYLING.SELECTED_BORDER_COLOR.value) roundness = 2.0 painter.setBrush(bg_color) From bdc6be78e9e5f956670edfb021c56e923b4841b2 Mon Sep 17 00:00:00 2001 From: jchan Date: Sat, 28 May 2022 22:23:17 +1200 Subject: [PATCH 5/9] Updated VIEWER constant vars to enums --- NodeGraphQt/base/graph.py | 17 ++++++++---- NodeGraphQt/base/graph_actions.py | 12 ++++----- NodeGraphQt/constants.py | 42 ++++++++++++++++++++--------- NodeGraphQt/widgets/actions.py | 6 +++-- NodeGraphQt/widgets/node_graph.py | 20 +++++++++----- NodeGraphQt/widgets/node_widgets.py | 4 +-- NodeGraphQt/widgets/scene.py | 30 +++++++++++---------- NodeGraphQt/widgets/tab_search.py | 15 +++++++---- NodeGraphQt/widgets/viewer_nav.py | 10 +++---- 9 files changed, 96 insertions(+), 60 deletions(-) diff --git a/NodeGraphQt/base/graph.py b/NodeGraphQt/base/graph.py index ad964db3..ff86d5d2 100644 --- a/NodeGraphQt/base/graph.py +++ b/NodeGraphQt/base/graph.py @@ -21,7 +21,7 @@ PIPE_LAYOUT, URI_SCHEME, URN_SCHEME, PORT_TYPE, - VIEWER_GRID_LINES + VIEWER_STYLING ) from NodeGraphQt.nodes.backdrop_node import BackdropNode from NodeGraphQt.nodes.base_node import BaseNode @@ -553,7 +553,7 @@ def set_grid_color(self, r, g, b): self.scene().grid_color = (r, g, b) self._viewer.force_update() - def set_grid_mode(self, mode=VIEWER_GRID_LINES): + def set_grid_mode(self, mode=None): """ Set node graph grid mode. @@ -562,13 +562,20 @@ def set_grid_mode(self, mode=VIEWER_GRID_LINES): Node graph background types: - * :attr:`NodeGraphQt.constants.VIEWER_GRID_NONE` - * :attr:`NodeGraphQt.constants.VIEWER_GRID_DOTS` - * :attr:`NodeGraphQt.constants.VIEWER_GRID_LINES` + * :attr:`NodeGraphQt.constants.VIEWER_STYLING.GRID_DISPLAY_NONE.value` + * :attr:`NodeGraphQt.constants.VIEWER_STYLING.GRID_DISPLAY_DOTS.value` + * :attr:`NodeGraphQt.constants.VIEWER_STYLING.GRID_DISPLAY_LINES.value` Args: mode (int): background style. """ + display_types = [ + VIEWER_STYLING.GRID_DISPLAY_NONE.value, + VIEWER_STYLING.GRID_DISPLAY_DOTS.value, + VIEWER_STYLING.GRID_DISPLAY_LINES.value + ] + if mode not in display_types: + mode = VIEWER_STYLING.GRID_DISPLAY_LINES.value self.scene().grid_mode = mode self._viewer.force_update() diff --git a/NodeGraphQt/base/graph_actions.py b/NodeGraphQt/base/graph_actions.py index c1b7264a..95ca90c3 100644 --- a/NodeGraphQt/base/graph_actions.py +++ b/NodeGraphQt/base/graph_actions.py @@ -280,24 +280,24 @@ def _bg_grid_none(graph): """ Turn off the background patterns. """ - from NodeGraphQt.constants import VIEWER_GRID_NONE - graph.set_grid_mode(VIEWER_GRID_NONE) + from NodeGraphQt.constants import VIEWER_STYLING + graph.set_grid_mode(VIEWER_STYLING.GRID_DISPLAY_NONE.value) def _bg_grid_dots(graph): """ Set background node graph background with grid dots. """ - from NodeGraphQt.constants import VIEWER_GRID_DOTS - graph.set_grid_mode(VIEWER_GRID_DOTS) + from NodeGraphQt.constants import VIEWER_STYLING + graph.set_grid_mode(VIEWER_STYLING.GRID_DISPLAY_DOTS.value) def _bg_grid_lines(graph): """ Set background node graph background with grid lines. """ - from NodeGraphQt.constants import VIEWER_GRID_LINES - graph.set_grid_mode(VIEWER_GRID_LINES) + from NodeGraphQt.constants import VIEWER_STYLING + graph.set_grid_mode(VIEWER_STYLING.GRID_DISPLAY_LINES.value) def _layout_graph_down(graph): diff --git a/NodeGraphQt/constants.py b/NodeGraphQt/constants.py index 83e55ff2..210917b7 100644 --- a/NodeGraphQt/constants.py +++ b/NodeGraphQt/constants.py @@ -167,18 +167,36 @@ class NODE_STYLING(Enum): # === NODE VIEWER === -#: Style to render the node graph background with nothing. -VIEWER_GRID_NONE = 0 -#: Style to render the node graph background with dots. -VIEWER_GRID_DOTS = 1 -#: Style to render the node graph background with grid lines. -VIEWER_GRID_LINES = 2 - -VIEWER_NAV_BG_COLOR = (25, 25, 25) -VIEWER_NAV_ITEM_COLOR = (35, 35, 35) -VIEWER_BG_COLOR = (35, 35, 35) -VIEWER_GRID_COLOR = (45, 45, 45) -VIEWER_GRID_SIZE = 50 + +class VIEWER_STYLING(Enum): + """ + Node graph viewer styling layout: + ``NodeGraphQt.constants.VIEWER_STYLING`` + """ + #: default background color for the node graph. + BACKGROUND_COLOR = (35, 35, 35) + #: style node graph background with no grid or dots. + GRID_DISPLAY_NONE = 0 + #: style node graph background with dots. + GRID_DISPLAY_DOTS = 1 + #: style node graph background with grid lines. + GRID_DISPLAY_LINES = 2 + #: grid size when styled with grid lines. + GRID_SIZE = 50 + #: grid line color. + GRID_COLOR = (45, 45, 45) + + +class VIEWER_NAV_STYLING(Enum): + """ + Node graph viewer navigation styling layout: + ``NodeGraphQt.constants.VIEWER_NAV_STYLING`` + """ + #: default background color. + BACKGROUND_COLOR = (25, 25, 25) + #: default item color. + ITEM_COLOR = (35, 35, 35) + # ================================== PRIVATE =================================== diff --git a/NodeGraphQt/widgets/actions.py b/NodeGraphQt/widgets/actions.py index 0f9b1784..cb581be5 100644 --- a/NodeGraphQt/widgets/actions.py +++ b/NodeGraphQt/widgets/actions.py @@ -1,7 +1,7 @@ #!/usr/bin/python from Qt import QtCore, QtWidgets -from NodeGraphQt.constants import VIEWER_BG_COLOR +from NodeGraphQt.constants import VIEWER_STYLING class BaseMenu(QtWidgets.QMenu): @@ -13,7 +13,9 @@ def __init__(self, *args, **kwargs): style_dict = { 'QMenu': { 'color': 'rgb({0},{1},{2})'.format(*text_color), - 'background-color': 'rgb({0},{1},{2})'.format(*VIEWER_BG_COLOR), + 'background-color': 'rgb({0},{1},{2})'.format( + *VIEWER_STYLING.BACKGROUND_COLOR.value + ), 'border': '1px solid rgba({0},{1},{2},30)'.format(*text_color), 'border-radius': '3px', }, diff --git a/NodeGraphQt/widgets/node_graph.py b/NodeGraphQt/widgets/node_graph.py index 676109b2..f9c653c2 100644 --- a/NodeGraphQt/widgets/node_graph.py +++ b/NodeGraphQt/widgets/node_graph.py @@ -1,10 +1,9 @@ from Qt import QtWidgets, QtGui from NodeGraphQt.constants import ( - NODE_STYLING, - VIEWER_BG_COLOR, - VIEWER_NAV_BG_COLOR + NODE_STYLING, VIEWER_STYLING, VIEWER_NAV_STYLING ) + from NodeGraphQt.widgets.viewer_nav import NodeNavigationWidget @@ -15,13 +14,18 @@ def __init__(self, parent=None): self.setTabsClosable(True) self.setTabBarAutoHide(True) text_color = self.palette().text().color().toTuple() - bg_color = QtGui.QColor(*VIEWER_BG_COLOR).darker(120).toTuple() + bg_color = QtGui.QColor( + *VIEWER_STYLING.BACKGROUND_COLOR.value).darker(120).toTuple() style_dict = { 'QWidget': { - 'background-color': 'rgb({0},{1},{2})'.format(*VIEWER_BG_COLOR), + 'background-color': 'rgb({0},{1},{2})'.format( + *VIEWER_STYLING.BACKGROUND_COLOR.value + ), }, 'QTabWidget::pane': { - 'background': 'rgb({0},{1},{2})'.format(*VIEWER_BG_COLOR), + 'background': 'rgb({0},{1},{2})'.format( + *VIEWER_STYLING.BACKGROUND_COLOR.value + ), 'border': '0px', 'border-top': '0px solid rgb({0},{1},{2})'.format(*bg_color), }, @@ -34,7 +38,9 @@ def __init__(self, parent=None): }, 'QTabBar::tab:selected': { 'color': 'rgb({0},{1},{2})'.format(*text_color), - 'background': 'rgb({0},{1},{2})'.format(*VIEWER_NAV_BG_COLOR), + 'background': 'rgb({0},{1},{2})'.format( + *VIEWER_NAV_STYLING.BACKGROUND_COLOR.value + ), 'border-top': '1px solid rgb({0},{1},{2})' .format(*NODE_STYLING.SELECTED_BORDER_COLOR.value), }, diff --git a/NodeGraphQt/widgets/node_widgets.py b/NodeGraphQt/widgets/node_widgets.py index 8fa8e257..34878449 100644 --- a/NodeGraphQt/widgets/node_widgets.py +++ b/NodeGraphQt/widgets/node_widgets.py @@ -1,7 +1,7 @@ #!/usr/bin/python from Qt import QtCore, QtWidgets -from NodeGraphQt.constants import VIEWER_GRID_COLOR, Z_VAL_NODE_WIDGET +from NodeGraphQt.constants import VIEWER_STYLING, Z_VAL_NODE_WIDGET from NodeGraphQt.errors import NodeWidgetError @@ -329,7 +329,7 @@ def __init__(self, parent=None, name='', label='', text=''): 'QLineEdit': { 'background': 'rgba({0},{1},{2},20)'.format(*bg_color), 'border': '1px solid rgb({0},{1},{2})' - .format(*VIEWER_GRID_COLOR), + .format(*VIEWER_STYLING.GRID_COLOR.value), 'border-radius': '3px', 'color': 'rgba({0},{1},{2},150)'.format(*text_color), 'selection-background-color': 'rgba({0},{1},{2},100)' diff --git a/NodeGraphQt/widgets/scene.py b/NodeGraphQt/widgets/scene.py index 54309ea7..d5869da3 100644 --- a/NodeGraphQt/widgets/scene.py +++ b/NodeGraphQt/widgets/scene.py @@ -1,20 +1,16 @@ #!/usr/bin/python from Qt import QtGui, QtCore, QtWidgets -from NodeGraphQt.constants import (VIEWER_BG_COLOR, - VIEWER_GRID_SIZE, - VIEWER_GRID_COLOR, - VIEWER_GRID_DOTS, - VIEWER_GRID_LINES) +from NodeGraphQt.constants import VIEWER_STYLING class NodeScene(QtWidgets.QGraphicsScene): def __init__(self, parent=None): super(NodeScene, self).__init__(parent) - self._grid_mode = VIEWER_GRID_LINES - self._grid_color = VIEWER_GRID_COLOR - self._bg_color = VIEWER_BG_COLOR + self._grid_mode = VIEWER_STYLING.GRID_DISPLAY_LINES.value + self._grid_color = VIEWER_STYLING.GRID_COLOR.value + self._bg_color = VIEWER_STYLING.BACKGROUND_COLOR.value self.setBackgroundBrush(QtGui.QColor(*self._bg_color)) def __repr__(self): @@ -98,21 +94,25 @@ def drawBackground(self, painter, rect): painter.setRenderHint(QtGui.QPainter.Antialiasing, False) painter.setBrush(self.backgroundBrush()) - if self._grid_mode is VIEWER_GRID_DOTS: + if self._grid_mode is VIEWER_STYLING.GRID_DISPLAY_DOTS.value: pen = QtGui.QPen(QtGui.QColor(*self.grid_color), 0.65) - self._draw_dots(painter, rect, pen, VIEWER_GRID_SIZE) + self._draw_dots(painter, rect, pen, VIEWER_STYLING.GRID_SIZE.value) - elif self._grid_mode is VIEWER_GRID_LINES: + elif self._grid_mode is VIEWER_STYLING.GRID_DISPLAY_LINES.value: zoom = self.viewer().get_zoom() if zoom > -0.5: pen = QtGui.QPen(QtGui.QColor(*self.grid_color), 0.65) - self._draw_grid(painter, rect, pen, VIEWER_GRID_SIZE) + self._draw_grid( + painter, rect, pen, VIEWER_STYLING.GRID_SIZE.value + ) color = QtGui.QColor(*self._bg_color).darker(150) if zoom < -0.0: color = color.darker(100 - int(zoom * 110)) pen = QtGui.QPen(color, 0.65) - self._draw_grid(painter, rect, pen, VIEWER_GRID_SIZE * 8) + self._draw_grid( + painter, rect, pen, VIEWER_STYLING.GRID_SIZE.value * 8 + ) painter.restore() @@ -148,7 +148,9 @@ def grid_mode(self): return self._grid_mode @grid_mode.setter - def grid_mode(self, mode=VIEWER_GRID_LINES): + def grid_mode(self, mode=None): + if mode is None: + mode = VIEWER_STYLING.GRID_DISPLAY_LINES.value self._grid_mode = mode @property diff --git a/NodeGraphQt/widgets/tab_search.py b/NodeGraphQt/widgets/tab_search.py index 5500c226..6f6c4f9c 100644 --- a/NodeGraphQt/widgets/tab_search.py +++ b/NodeGraphQt/widgets/tab_search.py @@ -4,7 +4,7 @@ from Qt import QtCore, QtWidgets, QtGui -from NodeGraphQt.constants import VIEWER_BG_COLOR, VIEWER_NAV_BG_COLOR +from NodeGraphQt.constants import VIEWER_STYLING, VIEWER_NAV_STYLING class TabSearchCompleter(QtWidgets.QCompleter): @@ -62,12 +62,15 @@ def __init__(self, parent=None): style_dict = { 'QLineEdit': { 'color': 'rgb({0},{1},{2})'.format(*text_color), - 'border': '1px solid rgb({0},{1},{2})' - .format(*selected_color), + 'border': '1px solid rgb({0},{1},{2})'.format( + *selected_color + ), 'border-radius': '3px', 'padding': '2px 4px', 'margin': '2px 4px 8px 4px', - 'background': 'rgb({0},{1},{2})'.format(*VIEWER_NAV_BG_COLOR), + 'background': 'rgb({0},{1},{2})'.format( + *VIEWER_NAV_STYLING.BACKGROUND_COLOR.value + ), 'selection-background-color': 'rgba({0},{1},{2},200)' .format(*selected_color), } @@ -110,7 +113,9 @@ def __init__(self, node_dict=None): style_dict = { 'QMenu': { 'color': 'rgb({0},{1},{2})'.format(*text_color), - 'background-color': 'rgb({0},{1},{2})'.format(*VIEWER_BG_COLOR), + 'background-color': 'rgb({0},{1},{2})'.format( + *VIEWER_STYLING.BACKGROUND_COLOR.value + ), 'border': '1px solid rgba({0},{1},{2},30)'.format(*text_color), 'border-radius': '3px', }, diff --git a/NodeGraphQt/widgets/viewer_nav.py b/NodeGraphQt/widgets/viewer_nav.py index f41d53f5..84ff1d65 100644 --- a/NodeGraphQt/widgets/viewer_nav.py +++ b/NodeGraphQt/widgets/viewer_nav.py @@ -1,10 +1,6 @@ from Qt import QtWidgets, QtCore, QtGui -from NodeGraphQt.constants import ( - NODE_STYLING, - VIEWER_NAV_BG_COLOR, - VIEWER_NAV_ITEM_COLOR -) +from NodeGraphQt.constants import NODE_STYLING, VIEWER_NAV_STYLING class NodeNavigationDelagate(QtWidgets.QStyledItemDelegate): @@ -36,7 +32,7 @@ def paint(self, painter, option, index): painter.setRenderHint(QtGui.QPainter.Antialiasing, True) # background. - bg_color = QtGui.QColor(*VIEWER_NAV_ITEM_COLOR) + bg_color = QtGui.QColor(*VIEWER_NAV_STYLING.ITEM_COLOR.value) itm_color = QtGui.QColor(80, 128, 123) if option.state & QtWidgets.QStyle.State_Selected: bg_color = bg_color.lighter(120) @@ -109,7 +105,7 @@ def __init__(self, parent=None): # self.viewport().setAutoFillBackground(False) self.setStyleSheet( 'QListView {{border: 0px;background-color: rgb({0},{1},{2});}}' - .format(*VIEWER_NAV_BG_COLOR) + .format(*VIEWER_NAV_STYLING.BACKGROUND_COLOR.value) ) self.setItemDelegate(NodeNavigationDelagate(self)) From ab4302952ea3eace63470aab553c6b47824770c2 Mon Sep 17 00:00:00 2001 From: jchan Date: Sat, 28 May 2022 23:47:54 +1200 Subject: [PATCH 6/9] Updated VERSION constant vars to enum --- NodeGraphQt/constants.py | 44 +++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/NodeGraphQt/constants.py b/NodeGraphQt/constants.py index 210917b7..f5a7b73c 100644 --- a/NodeGraphQt/constants.py +++ b/NodeGraphQt/constants.py @@ -5,23 +5,29 @@ from Qt import QtWidgets from enum import Enum -from .pkg_info import __version__ +from .pkg_info import __version__ as _v __doc__ = """ -| The ``NodeGraphQt.constants`` namespace contains variables used throughout - the whole NodeGraphQt library. +| The :py:mod:`NodeGraphQt.constants` namespace contains variables used + throughout the whole NodeGraphQt library. """ # =================================== GLOBAL =================================== -#: current version. -VERSION = __version__ -#: major version. -VERSION_MAJOR = int(VERSION.split('.')[0]) -#: minor version. -VERSION_MINOR = int(VERSION.split('.')[1]) -#: patch version. -VERSION_PATCH = int(VERSION.split('.')[2]) + +class VERSION(Enum): + """ + Current framework version. + :py:mod:`NodeGraphQt.constants.VERSION` + """ + #: + VERSION = _v + #: + MAJOR = int(_v.split('.')[0]) + #: + MINOR = int(_v.split('.')[1]) + #: + PATCH = int(_v.split('.')[2]) # ==================================== PIPE ==================================== @@ -29,7 +35,7 @@ class PIPE_STYLING(Enum): """ Pipe styling layout: - ``NodeGraphQt.constants.PIPE_STYLING`` + :py:mod:`NodeGraphQt.constants.PIPE_STYLING` """ #: default width. WIDTH = 1.2 @@ -52,7 +58,7 @@ class PIPE_STYLING(Enum): class PIPE_SLICER_STYLING(Enum): """ Slicer Pipe styling layout: - ``NodeGraphQt.constants.PIPE_SLICER_STYLING`` + :py:mod:`NodeGraphQt.constants.PIPE_SLICER_STYLING` """ #: default width. WIDTH = 1.5 @@ -63,7 +69,7 @@ class PIPE_SLICER_STYLING(Enum): class PIPE_LAYOUT(Enum): """ Pipe connection drawing layout: - ``NodeGraphQt.constants.PIPE_LAYOUT`` + :py:mod:`NodeGraphQt.constants.PIPE_LAYOUT` """ #: draw straight lines for pipe connections. STRAIGHT = 0 @@ -78,7 +84,7 @@ class PIPE_LAYOUT(Enum): class PORT_STYLING(Enum): """ Port styling layout: - ``NodeGraphQt.constants.PORT_STYLING`` + :py:mod:`NodeGraphQt.constants.PORT_STYLING` """ #: default port size. SIZE = 22.0 @@ -101,7 +107,7 @@ class PORT_STYLING(Enum): class PORT_TYPE(Enum): """ Port connection types: - ``NodeGraphQt.constants.PORT_TYPE`` + :py:mod:`NodeGraphQt.constants.PORT_TYPE` """ #: Connection type for input ports. IN = 'in' @@ -115,7 +121,7 @@ class PORT_TYPE(Enum): class NODE_STYLING(Enum): """ Node styling layout: - ``NodeGraphQt.constants.NODE_STYLING`` + :py:mod:`NodeGraphQt.constants.NODE_STYLING` """ #: default node width. WIDTH = 160 @@ -171,7 +177,7 @@ class NODE_STYLING(Enum): class VIEWER_STYLING(Enum): """ Node graph viewer styling layout: - ``NodeGraphQt.constants.VIEWER_STYLING`` + :py:mod:`NodeGraphQt.constants.VIEWER_STYLING` """ #: default background color for the node graph. BACKGROUND_COLOR = (35, 35, 35) @@ -190,7 +196,7 @@ class VIEWER_STYLING(Enum): class VIEWER_NAV_STYLING(Enum): """ Node graph viewer navigation styling layout: - ``NodeGraphQt.constants.VIEWER_NAV_STYLING`` + :py:mod:`NodeGraphQt.constants.VIEWER_NAV_STYLING` """ #: default background color. BACKGROUND_COLOR = (25, 25, 25) From 44ab6e02c8e6210dbb029536cf6c63cb0b48e8c9 Mon Sep 17 00:00:00 2001 From: jchan Date: Sat, 28 May 2022 23:52:41 +1200 Subject: [PATCH 7/9] clean up --- NodeGraphQt/constants.py | 241 +++++++++++++++++++-------------------- 1 file changed, 120 insertions(+), 121 deletions(-) diff --git a/NodeGraphQt/constants.py b/NodeGraphQt/constants.py index f5a7b73c..e9c0336f 100644 --- a/NodeGraphQt/constants.py +++ b/NodeGraphQt/constants.py @@ -12,6 +12,43 @@ throughout the whole NodeGraphQt library. """ +# ================================== PRIVATE =================================== + +URI_SCHEME = 'nodegraphqt://' +URN_SCHEME = 'nodegraphqt::' + +# === PATHS === + +BASE_PATH = os.path.dirname(os.path.abspath(__file__)) +ICON_PATH = os.path.join(BASE_PATH, 'widgets', 'icons') +ICON_DOWN_ARROW = os.path.join(ICON_PATH, 'down_arrow.png') +ICON_NODE_BASE = os.path.join(ICON_PATH, 'node_base.png') + +# === DRAW STACK ORDER === + +Z_VAL_PIPE = -1 +Z_VAL_NODE = 1 +Z_VAL_PORT = 2 +Z_VAL_NODE_WIDGET = 3 + +# === ITEM CACHE MODE === + +# QGraphicsItem.NoCache +# QGraphicsItem.DeviceCoordinateCache +# QGraphicsItem.ItemCoordinateCache + +ITEM_CACHE_MODE = QtWidgets.QGraphicsItem.DeviceCoordinateCache + +# === NODE LAYOUT DIRECTION === + +#: Mode for vertical node layout. +NODE_LAYOUT_VERTICAL = 0 +#: Mode for horizontal node layout. +NODE_LAYOUT_HORIZONTAL = 1 +#: Variable for setting the node layout direction. +# NODE_LAYOUT_DIRECTION = NODE_LAYOUT_VERTICAL +NODE_LAYOUT_DIRECTION = NODE_LAYOUT_HORIZONTAL + # =================================== GLOBAL =================================== @@ -29,54 +66,56 @@ class VERSION(Enum): #: PATCH = int(_v.split('.')[2]) -# ==================================== PIPE ==================================== +# =================================== VIEWER =================================== -class PIPE_STYLING(Enum): +class VIEWER_STYLING(Enum): """ - Pipe styling layout: - :py:mod:`NodeGraphQt.constants.PIPE_STYLING` + Node graph viewer styling layout: + :py:mod:`NodeGraphQt.constants.VIEWER_STYLING` """ - #: default width. - WIDTH = 1.2 - #: default color. - COLOR = (175, 95, 30, 255) - #: pipe color to a node when it's disabled. - DISABLED_COLOR = (190, 20, 20, 255) - #: pipe color when selected or mouse over. - ACTIVE_COLOR = (70, 255, 220, 255) - #: pipe color to a node when it's selected. - HIGHLIGHT_COLOR = (232, 184, 13, 255) - #: draw connection as a line. - DRAW_TYPE_DEFAULT = 0 - #: draw connection as dashed lines. - DRAW_TYPE_DASHED = 1 - #: draw connection as a dotted line. - DRAW_TYPE_DOTTED = 2 + #: default background color for the node graph. + BACKGROUND_COLOR = (35, 35, 35) + #: style node graph background with no grid or dots. + GRID_DISPLAY_NONE = 0 + #: style node graph background with dots. + GRID_DISPLAY_DOTS = 1 + #: style node graph background with grid lines. + GRID_DISPLAY_LINES = 2 + #: grid size when styled with grid lines. + GRID_SIZE = 50 + #: grid line color. + GRID_COLOR = (45, 45, 45) -class PIPE_SLICER_STYLING(Enum): +class VIEWER_NAV_STYLING(Enum): """ - Slicer Pipe styling layout: - :py:mod:`NodeGraphQt.constants.PIPE_SLICER_STYLING` + Node graph viewer navigation styling layout: + :py:mod:`NodeGraphQt.constants.VIEWER_NAV_STYLING` """ - #: default width. - WIDTH = 1.5 - #: default color. - COLOR = (255, 50, 75) + #: default background color. + BACKGROUND_COLOR = (25, 25, 25) + #: default item color. + ITEM_COLOR = (35, 35, 35) +# ==================================== NODE ==================================== -class PIPE_LAYOUT(Enum): + +class NODE_STYLING(Enum): """ - Pipe connection drawing layout: - :py:mod:`NodeGraphQt.constants.PIPE_LAYOUT` + Node styling layout: + :py:mod:`NodeGraphQt.constants.NODE_STYLING` """ - #: draw straight lines for pipe connections. - STRAIGHT = 0 - #: draw curved lines for pipe connections. - CURVED = 1 - #: draw angled lines for pipe connections. - ANGLE = 2 + #: default node width. + WIDTH = 160 + #: default node height. + HEIGHT = 60 + #: default node icon size (WxH). + ICON_SIZE = 18 + #: default node overlay color when selected. + SELECTED_COLOR = (255, 255, 255, 30) + #: default node border color when selected. + SELECTED_BORDER_COLOR = (254, 207, 42, 255) # ==================================== PORT ==================================== @@ -114,27 +153,57 @@ class PORT_TYPE(Enum): #: Connection type for output ports. OUT = 'out' +# ==================================== PIPE ==================================== -# ==================================== NODE ==================================== +class PIPE_STYLING(Enum): + """ + Pipe styling layout: + :py:mod:`NodeGraphQt.constants.PIPE_STYLING` + """ + #: default width. + WIDTH = 1.2 + #: default color. + COLOR = (175, 95, 30, 255) + #: pipe color to a node when it's disabled. + DISABLED_COLOR = (190, 20, 20, 255) + #: pipe color when selected or mouse over. + ACTIVE_COLOR = (70, 255, 220, 255) + #: pipe color to a node when it's selected. + HIGHLIGHT_COLOR = (232, 184, 13, 255) + #: draw connection as a line. + DRAW_TYPE_DEFAULT = 0 + #: draw connection as dashed lines. + DRAW_TYPE_DASHED = 1 + #: draw connection as a dotted line. + DRAW_TYPE_DOTTED = 2 -class NODE_STYLING(Enum): + +class PIPE_SLICER_STYLING(Enum): """ - Node styling layout: - :py:mod:`NodeGraphQt.constants.NODE_STYLING` + Slicer Pipe styling layout: + :py:mod:`NodeGraphQt.constants.PIPE_SLICER_STYLING` """ - #: default node width. - WIDTH = 160 - #: default node height. - HEIGHT = 60 - #: default node icon size (WxH). - ICON_SIZE = 18 - #: default node overlay color when selected. - SELECTED_COLOR = (255, 255, 255, 30) - #: default node border color when selected. - SELECTED_BORDER_COLOR = (254, 207, 42, 255) + #: default width. + WIDTH = 1.5 + #: default color. + COLOR = (255, 50, 75) -# === NODE PROPERTY === + +class PIPE_LAYOUT(Enum): + """ + Pipe connection drawing layout: + :py:mod:`NodeGraphQt.constants.PIPE_LAYOUT` + """ + #: draw straight lines for pipe connections. + STRAIGHT = 0 + #: draw curved lines for pipe connections. + CURVED = 1 + #: draw angled lines for pipe connections. + ANGLE = 2 + + +# === PROPERTY BIN WIDGET === #: Property type will hidden in the properties bin (default). NODE_PROP = 0 @@ -170,73 +239,3 @@ class NODE_STYLING(Enum): NODE_PROP_INT = 16 #: Property type represented with button widget in the properties bin. NODE_PROP_BUTTON = 17 - -# === NODE VIEWER === - - -class VIEWER_STYLING(Enum): - """ - Node graph viewer styling layout: - :py:mod:`NodeGraphQt.constants.VIEWER_STYLING` - """ - #: default background color for the node graph. - BACKGROUND_COLOR = (35, 35, 35) - #: style node graph background with no grid or dots. - GRID_DISPLAY_NONE = 0 - #: style node graph background with dots. - GRID_DISPLAY_DOTS = 1 - #: style node graph background with grid lines. - GRID_DISPLAY_LINES = 2 - #: grid size when styled with grid lines. - GRID_SIZE = 50 - #: grid line color. - GRID_COLOR = (45, 45, 45) - - -class VIEWER_NAV_STYLING(Enum): - """ - Node graph viewer navigation styling layout: - :py:mod:`NodeGraphQt.constants.VIEWER_NAV_STYLING` - """ - #: default background color. - BACKGROUND_COLOR = (25, 25, 25) - #: default item color. - ITEM_COLOR = (35, 35, 35) - - -# ================================== PRIVATE =================================== - -URI_SCHEME = 'nodegraphqt://' -URN_SCHEME = 'nodegraphqt::' - -# === PATHS === - -BASE_PATH = os.path.dirname(os.path.abspath(__file__)) -ICON_PATH = os.path.join(BASE_PATH, 'widgets', 'icons') -ICON_DOWN_ARROW = os.path.join(ICON_PATH, 'down_arrow.png') -ICON_NODE_BASE = os.path.join(ICON_PATH, 'node_base.png') - -# === DRAW STACK ORDER === - -Z_VAL_PIPE = -1 -Z_VAL_NODE = 1 -Z_VAL_PORT = 2 -Z_VAL_NODE_WIDGET = 3 - -# === ITEM CACHE MODE === - -# QGraphicsItem.NoCache -# QGraphicsItem.DeviceCoordinateCache -# QGraphicsItem.ItemCoordinateCache - -ITEM_CACHE_MODE = QtWidgets.QGraphicsItem.DeviceCoordinateCache - -# === NODE LAYOUT DIRECTION === - -#: Mode for vertical node layout. -NODE_LAYOUT_VERTICAL = 0 -#: Mode for horizontal node layout. -NODE_LAYOUT_HORIZONTAL = 1 -#: Variable for setting the node layout direction. -# NODE_LAYOUT_DIRECTION = NODE_LAYOUT_VERTICAL -NODE_LAYOUT_DIRECTION = NODE_LAYOUT_HORIZONTAL From d8d671e64d49660abdb55116d50b9afdcff2c3a2 Mon Sep 17 00:00:00 2001 From: jchan Date: Sun, 29 May 2022 00:10:23 +1200 Subject: [PATCH 8/9] renamed enum classes --- NodeGraphQt/base/commands.py | 10 ++-- NodeGraphQt/base/graph.py | 54 +++++++++++----------- NodeGraphQt/base/graph_actions.py | 24 +++++----- NodeGraphQt/base/port.py | 14 +++--- NodeGraphQt/constants.py | 36 +++++++-------- NodeGraphQt/nodes/base_node.py | 6 +-- NodeGraphQt/qgraphics/node_abstract.py | 6 +-- NodeGraphQt/qgraphics/node_backdrop.py | 10 ++-- NodeGraphQt/qgraphics/node_base.py | 44 +++++++++--------- NodeGraphQt/qgraphics/node_group.py | 16 +++---- NodeGraphQt/qgraphics/node_port_in.py | 10 ++-- NodeGraphQt/qgraphics/node_port_out.py | 10 ++-- NodeGraphQt/qgraphics/pipe.py | 64 +++++++++++++------------- NodeGraphQt/qgraphics/port.py | 32 ++++++------- NodeGraphQt/qgraphics/slicer.py | 12 ++--- NodeGraphQt/widgets/actions.py | 4 +- NodeGraphQt/widgets/node_graph.py | 14 +++--- NodeGraphQt/widgets/node_widgets.py | 4 +- NodeGraphQt/widgets/scene.py | 20 ++++---- NodeGraphQt/widgets/tab_search.py | 6 +-- NodeGraphQt/widgets/viewer.py | 16 +++---- NodeGraphQt/widgets/viewer_nav.py | 8 ++-- 22 files changed, 211 insertions(+), 209 deletions(-) diff --git a/NodeGraphQt/base/commands.py b/NodeGraphQt/base/commands.py index ea75fc85..184245b6 100644 --- a/NodeGraphQt/base/commands.py +++ b/NodeGraphQt/base/commands.py @@ -1,7 +1,7 @@ #!/usr/bin/python from Qt import QtWidgets -from NodeGraphQt.constants import PORT_TYPE +from NodeGraphQt.constants import PortTypeEnum class PropertyChangedCmd(QtWidgets.QUndoCommand): @@ -158,7 +158,7 @@ class NodeInputConnectedCmd(QtWidgets.QUndoCommand): def __init__(self, src_port, trg_port): QtWidgets.QUndoCommand.__init__(self) - if src_port.type_() == PORT_TYPE.IN.value: + if src_port.type_() == PortTypeEnum.IN.value: self.source = src_port self.target = trg_port else: @@ -185,7 +185,7 @@ class NodeInputDisconnectedCmd(QtWidgets.QUndoCommand): def __init__(self, src_port, trg_port): QtWidgets.QUndoCommand.__init__(self) - if src_port.type_() == PORT_TYPE.IN.value: + if src_port.type_() == PortTypeEnum.IN.value: self.source = src_port self.target = trg_port else: @@ -355,9 +355,9 @@ def set_visible(self, visible): self.port.view.setVisible(visible) node_view = self.port.node().view text_item = None - if self.port.type_() == PORT_TYPE.IN.value: + if self.port.type_() == PortTypeEnum.IN.value: text_item = node_view.get_input_text_item(self.port.view) - elif self.port.type_() == PORT_TYPE.OUT.value: + elif self.port.type_() == PortTypeEnum.OUT.value: text_item = node_view.get_output_text_item(self.port.view) if text_item: text_item.setVisible(visible) diff --git a/NodeGraphQt/base/graph.py b/NodeGraphQt/base/graph.py index ff86d5d2..caa27ad6 100644 --- a/NodeGraphQt/base/graph.py +++ b/NodeGraphQt/base/graph.py @@ -18,10 +18,10 @@ from NodeGraphQt.base.port import Port from NodeGraphQt.constants import ( NODE_LAYOUT_DIRECTION, NODE_LAYOUT_HORIZONTAL, NODE_LAYOUT_VERTICAL, - PIPE_LAYOUT, + PipeLayoutEnum, URI_SCHEME, URN_SCHEME, - PORT_TYPE, - VIEWER_STYLING + PortTypeEnum, + ViewerEnum ) from NodeGraphQt.nodes.backdrop_node import BackdropNode from NodeGraphQt.nodes.base_node import BaseNode @@ -369,7 +369,8 @@ def _on_connection_changed(self, disconnected, connected): return label = 'connect node(s)' if connected else 'disconnect node(s)' - ptypes = {PORT_TYPE.IN.value: 'inputs', PORT_TYPE.OUT.value: 'outputs'} + ptypes = {PortTypeEnum.IN.value: 'inputs', + PortTypeEnum.OUT.value: 'outputs'} self._undo_stack.beginMacro(label) for p1_view, p2_view in disconnected: @@ -396,7 +397,8 @@ def _on_connection_sliced(self, ports): """ if not ports: return - ptypes = {PORT_TYPE.IN.value: 'inputs', PORT_TYPE.OUT.value: 'outputs'} + ptypes = {PortTypeEnum.IN.value: 'inputs', + PortTypeEnum.OUT.value: 'outputs'} self._undo_stack.beginMacro('slice connections') for p1_view, p2_view in ports: node1 = self._model.nodes[p1_view.node.id] @@ -562,20 +564,20 @@ def set_grid_mode(self, mode=None): Node graph background types: - * :attr:`NodeGraphQt.constants.VIEWER_STYLING.GRID_DISPLAY_NONE.value` - * :attr:`NodeGraphQt.constants.VIEWER_STYLING.GRID_DISPLAY_DOTS.value` - * :attr:`NodeGraphQt.constants.VIEWER_STYLING.GRID_DISPLAY_LINES.value` + * :attr:`NodeGraphQt.constants.ViewerEnum.GRID_DISPLAY_NONE.value` + * :attr:`NodeGraphQt.constants.ViewerEnum.GRID_DISPLAY_DOTS.value` + * :attr:`NodeGraphQt.constants.ViewerEnum.GRID_DISPLAY_LINES.value` Args: mode (int): background style. """ display_types = [ - VIEWER_STYLING.GRID_DISPLAY_NONE.value, - VIEWER_STYLING.GRID_DISPLAY_DOTS.value, - VIEWER_STYLING.GRID_DISPLAY_LINES.value + ViewerEnum.GRID_DISPLAY_NONE.value, + ViewerEnum.GRID_DISPLAY_DOTS.value, + ViewerEnum.GRID_DISPLAY_LINES.value ] if mode not in display_types: - mode = VIEWER_STYLING.GRID_DISPLAY_LINES.value + mode = ViewerEnum.GRID_DISPLAY_LINES.value self.scene().grid_mode = mode self._viewer.force_update() @@ -759,7 +761,7 @@ def set_pipe_collision(self, mode=True): self._model.pipe_collision = mode self._viewer.pipe_collision = mode - def set_pipe_style(self, style=PIPE_LAYOUT.CURVED.value): + def set_pipe_style(self, style=PipeLayoutEnum.CURVED.value): """ Set node graph pipes to be drawn as straight, curved or angled. @@ -771,17 +773,17 @@ def set_pipe_style(self, style=PIPE_LAYOUT.CURVED.value): Pipe Layout Styles: - * :attr:`NodeGraphQt.constants.PIPE_LAYOUT.CURVED.value` - * :attr:`NodeGraphQt.constants.PIPE_LAYOUT.STRAIGHT.value` - * :attr:`NodeGraphQt.constants.PIPE_LAYOUT.ANGLE.value` + * :attr:`NodeGraphQt.constants.PipeLayoutEnum.CURVED.value` + * :attr:`NodeGraphQt.constants.PipeLayoutEnum.STRAIGHT.value` + * :attr:`NodeGraphQt.constants.PipeLayoutEnum.ANGLE.value` Args: style (int): pipe layout style. """ - pipe_max = max([PIPE_LAYOUT.CURVED.value, - PIPE_LAYOUT.STRAIGHT.value, - PIPE_LAYOUT.ANGLE.value]) - style = style if 0 <= style <= pipe_max else PIPE_LAYOUT.CURVED.value + pipe_max = max([PipeLayoutEnum.CURVED.value, + PipeLayoutEnum.STRAIGHT.value, + PipeLayoutEnum.ANGLE.value]) + style = style if 0 <= style <= pipe_max else PipeLayoutEnum.CURVED.value self._viewer.set_pipe_layout(style) def fit_to_selection(self): @@ -1254,8 +1256,8 @@ def _serialize(self, nodes): for conn_id, prt_names in conn_data.items(): for conn_prt in prt_names: pipe = { - PORT_TYPE.IN.value: [n_id, pname], - PORT_TYPE.OUT.value: [conn_id, conn_prt] + PortTypeEnum.IN.value: [n_id, pname], + PortTypeEnum.OUT.value: [conn_id, conn_prt] } if pipe not in serial_data['connections']: serial_data['connections'].append(pipe) @@ -1264,8 +1266,8 @@ def _serialize(self, nodes): for conn_id, prt_names in conn_data.items(): for conn_prt in prt_names: pipe = { - PORT_TYPE.OUT.value: [n_id, pname], - PORT_TYPE.IN.value: [conn_id, conn_prt] + PortTypeEnum.OUT.value: [n_id, pname], + PortTypeEnum.IN.value: [conn_id, conn_prt] } if pipe not in serial_data['connections']: serial_data['connections'].append(pipe) @@ -2374,8 +2376,8 @@ def get_node_by_port(self, port): PortInputNode or PortOutputNode: port node object. """ func_type = { - PORT_TYPE.IN.value: self.get_input_port_nodes, - PORT_TYPE.OUT.value: self.get_output_port_nodes + PortTypeEnum.IN.value: self.get_input_port_nodes, + PortTypeEnum.OUT.value: self.get_output_port_nodes } for n in func_type.get(port.type_(), []): if port == n.parent_port: diff --git a/NodeGraphQt/base/graph_actions.py b/NodeGraphQt/base/graph_actions.py index 95ca90c3..b77fe3d6 100644 --- a/NodeGraphQt/base/graph_actions.py +++ b/NodeGraphQt/base/graph_actions.py @@ -256,48 +256,48 @@ def _curved_pipe(graph): """ Set node graph pipes layout as curved. """ - from NodeGraphQt.constants import PIPE_LAYOUT - graph.set_pipe_style(PIPE_LAYOUT.CURVED.value) + from NodeGraphQt.constants import PipeLayoutEnum + graph.set_pipe_style(PipeLayoutEnum.CURVED.value) def _straight_pipe(graph): """ Set node graph pipes layout as straight. """ - from NodeGraphQt.constants import PIPE_LAYOUT - graph.set_pipe_style(PIPE_LAYOUT.STRAIGHT.value) + from NodeGraphQt.constants import PipeLayoutEnum + graph.set_pipe_style(PipeLayoutEnum.STRAIGHT.value) def _angle_pipe(graph): """ Set node graph pipes layout as angled. """ - from NodeGraphQt.constants import PIPE_LAYOUT - graph.set_pipe_style(PIPE_LAYOUT.ANGLE.value) + from NodeGraphQt.constants import PipeLayoutEnum + graph.set_pipe_style(PipeLayoutEnum.ANGLE.value) def _bg_grid_none(graph): """ Turn off the background patterns. """ - from NodeGraphQt.constants import VIEWER_STYLING - graph.set_grid_mode(VIEWER_STYLING.GRID_DISPLAY_NONE.value) + from NodeGraphQt.constants import ViewerEnum + graph.set_grid_mode(ViewerEnum.GRID_DISPLAY_NONE.value) def _bg_grid_dots(graph): """ Set background node graph background with grid dots. """ - from NodeGraphQt.constants import VIEWER_STYLING - graph.set_grid_mode(VIEWER_STYLING.GRID_DISPLAY_DOTS.value) + from NodeGraphQt.constants import ViewerEnum + graph.set_grid_mode(ViewerEnum.GRID_DISPLAY_DOTS.value) def _bg_grid_lines(graph): """ Set background node graph background with grid lines. """ - from NodeGraphQt.constants import VIEWER_STYLING - graph.set_grid_mode(VIEWER_STYLING.GRID_DISPLAY_LINES.value) + from NodeGraphQt.constants import ViewerEnum + graph.set_grid_mode(ViewerEnum.GRID_DISPLAY_LINES.value) def _layout_graph_down(graph): diff --git a/NodeGraphQt/base/port.py b/NodeGraphQt/base/port.py index afac8028..15896b5a 100644 --- a/NodeGraphQt/base/port.py +++ b/NodeGraphQt/base/port.py @@ -9,7 +9,7 @@ NodeInputDisconnectedCmd ) from NodeGraphQt.base.model import PortModel -from NodeGraphQt.constants import PORT_TYPE +from NodeGraphQt.constants import PortTypeEnum from NodeGraphQt.errors import PortError @@ -196,9 +196,9 @@ def connected_ports(self): for node_id, port_names in self.model.connected_ports.items(): for port_name in port_names: node = graph.get_node_by_id(node_id) - if self.type_() == PORT_TYPE.IN.value: + if self.type_() == PortTypeEnum.IN.value: ports.append(node.outputs()[port_name]) - elif self.type_() == PORT_TYPE.OUT.value: + elif self.type_() == PortTypeEnum.OUT.value: ports.append(node.inputs()[port_name]) return ports @@ -284,8 +284,8 @@ def connect_to(self, port=None, push_undo=True): # emit "port_connected" signal from the parent graph. ports = {p.type_(): p for p in [self, port]} - graph.port_connected.emit(ports[PORT_TYPE.IN.value], - ports[PORT_TYPE.OUT.value]) + graph.port_connected.emit(ports[PortTypeEnum.IN.value], + ports[PortTypeEnum.OUT.value]) def disconnect_from(self, port=None, push_undo=True): """ @@ -316,8 +316,8 @@ def disconnect_from(self, port=None, push_undo=True): # emit "port_disconnected" signal from the parent graph. ports = {p.type_(): p for p in [self, port]} - graph.port_disconnected.emit(ports[PORT_TYPE.IN.value], - ports[PORT_TYPE.OUT.value]) + graph.port_disconnected.emit(ports[PortTypeEnum.IN.value], + ports[PortTypeEnum.OUT.value]) def clear_connections(self, push_undo=True): """ diff --git a/NodeGraphQt/constants.py b/NodeGraphQt/constants.py index e9c0336f..40d4c196 100644 --- a/NodeGraphQt/constants.py +++ b/NodeGraphQt/constants.py @@ -52,10 +52,10 @@ # =================================== GLOBAL =================================== -class VERSION(Enum): +class VersionEnum(Enum): """ Current framework version. - :py:mod:`NodeGraphQt.constants.VERSION` + :py:mod:`NodeGraphQt.constants.VersionEnum` """ #: VERSION = _v @@ -69,10 +69,10 @@ class VERSION(Enum): # =================================== VIEWER =================================== -class VIEWER_STYLING(Enum): +class ViewerEnum(Enum): """ Node graph viewer styling layout: - :py:mod:`NodeGraphQt.constants.VIEWER_STYLING` + :py:mod:`NodeGraphQt.constants.ViewerEnum` """ #: default background color for the node graph. BACKGROUND_COLOR = (35, 35, 35) @@ -88,10 +88,10 @@ class VIEWER_STYLING(Enum): GRID_COLOR = (45, 45, 45) -class VIEWER_NAV_STYLING(Enum): +class ViewerNavEnum(Enum): """ Node graph viewer navigation styling layout: - :py:mod:`NodeGraphQt.constants.VIEWER_NAV_STYLING` + :py:mod:`NodeGraphQt.constants.ViewerNavEnum` """ #: default background color. BACKGROUND_COLOR = (25, 25, 25) @@ -101,10 +101,10 @@ class VIEWER_NAV_STYLING(Enum): # ==================================== NODE ==================================== -class NODE_STYLING(Enum): +class NodeEnum(Enum): """ Node styling layout: - :py:mod:`NodeGraphQt.constants.NODE_STYLING` + :py:mod:`NodeGraphQt.constants.NodeEnum` """ #: default node width. WIDTH = 160 @@ -120,10 +120,10 @@ class NODE_STYLING(Enum): # ==================================== PORT ==================================== -class PORT_STYLING(Enum): +class PortEnum(Enum): """ Port styling layout: - :py:mod:`NodeGraphQt.constants.PORT_STYLING` + :py:mod:`NodeGraphQt.constants.PortEnum` """ #: default port size. SIZE = 22.0 @@ -143,10 +143,10 @@ class PORT_STYLING(Enum): CLICK_FALLOFF = 15.0 -class PORT_TYPE(Enum): +class PortTypeEnum(Enum): """ Port connection types: - :py:mod:`NodeGraphQt.constants.PORT_TYPE` + :py:mod:`NodeGraphQt.constants.PortTypeEnum` """ #: Connection type for input ports. IN = 'in' @@ -156,10 +156,10 @@ class PORT_TYPE(Enum): # ==================================== PIPE ==================================== -class PIPE_STYLING(Enum): +class PipeEnum(Enum): """ Pipe styling layout: - :py:mod:`NodeGraphQt.constants.PIPE_STYLING` + :py:mod:`NodeGraphQt.constants.PipeEnum` """ #: default width. WIDTH = 1.2 @@ -179,10 +179,10 @@ class PIPE_STYLING(Enum): DRAW_TYPE_DOTTED = 2 -class PIPE_SLICER_STYLING(Enum): +class PipeSlicerEnum(Enum): """ Slicer Pipe styling layout: - :py:mod:`NodeGraphQt.constants.PIPE_SLICER_STYLING` + :py:mod:`NodeGraphQt.constants.PipeSlicerEnum` """ #: default width. WIDTH = 1.5 @@ -190,10 +190,10 @@ class PIPE_SLICER_STYLING(Enum): COLOR = (255, 50, 75) -class PIPE_LAYOUT(Enum): +class PipeLayoutEnum(Enum): """ Pipe connection drawing layout: - :py:mod:`NodeGraphQt.constants.PIPE_LAYOUT` + :py:mod:`NodeGraphQt.constants.PipeLayoutEnum` """ #: draw straight lines for pipe connections. STRAIGHT = 0 diff --git a/NodeGraphQt/nodes/base_node.py b/NodeGraphQt/nodes/base_node.py index 55a4f301..8ad5a84e 100644 --- a/NodeGraphQt/nodes/base_node.py +++ b/NodeGraphQt/nodes/base_node.py @@ -7,7 +7,7 @@ NODE_PROP_QLINEEDIT, NODE_PROP_QCOMBO, NODE_PROP_QCHECKBOX, - PORT_TYPE, + PortTypeEnum, NODE_LAYOUT_VERTICAL, NODE_LAYOUT_HORIZONTAL) from NodeGraphQt.errors import (PortError, @@ -261,7 +261,7 @@ def add_input(self, name='input', multi_input=False, display_name=True, view.border_color = [min([255, max([0, i + 80])]) for i in color] port = Port(self, view) - port.model.type_ = PORT_TYPE.IN.value + port.model.type_ = PortTypeEnum.IN.value port.model.name = name port.model.display_name = display_name port.model.multi_connection = multi_input @@ -303,7 +303,7 @@ def add_output(self, name='output', multi_output=True, display_name=True, view.color = color view.border_color = [min([255, max([0, i + 80])]) for i in color] port = Port(self, view) - port.model.type_ = PORT_TYPE.OUT.value + port.model.type_ = PortTypeEnum.OUT.value port.model.name = name port.model.display_name = display_name port.model.multi_connection = multi_output diff --git a/NodeGraphQt/qgraphics/node_abstract.py b/NodeGraphQt/qgraphics/node_abstract.py index ef4ace9c..ca996da3 100644 --- a/NodeGraphQt/qgraphics/node_abstract.py +++ b/NodeGraphQt/qgraphics/node_abstract.py @@ -1,7 +1,7 @@ #!/usr/bin/python from Qt import QtCore, QtWidgets -from NodeGraphQt.constants import Z_VAL_NODE, NODE_STYLING, ITEM_CACHE_MODE +from NodeGraphQt.constants import Z_VAL_NODE, NodeEnum, ITEM_CACHE_MODE class AbstractNodeItem(QtWidgets.QGraphicsItem): @@ -25,8 +25,8 @@ def __init__(self, name='node', parent=None): 'disabled': False, 'visible': False, } - self._width = NODE_STYLING.WIDTH.value - self._height = NODE_STYLING.HEIGHT.value + self._width = NodeEnum.WIDTH.value + self._height = NodeEnum.HEIGHT.value def __repr__(self): return '{}.{}(\'{}\')'.format( diff --git a/NodeGraphQt/qgraphics/node_backdrop.py b/NodeGraphQt/qgraphics/node_backdrop.py index 1d823920..4e806653 100644 --- a/NodeGraphQt/qgraphics/node_backdrop.py +++ b/NodeGraphQt/qgraphics/node_backdrop.py @@ -1,7 +1,7 @@ #!/usr/bin/python from Qt import QtGui, QtCore, QtWidgets -from NodeGraphQt.constants import Z_VAL_PIPE, NODE_STYLING +from NodeGraphQt.constants import Z_VAL_PIPE, NodeEnum from NodeGraphQt.qgraphics.node_abstract import AbstractNodeItem from NodeGraphQt.qgraphics.pipe import PipeItem from NodeGraphQt.qgraphics.port import PortItem @@ -86,7 +86,7 @@ def paint(self, painter, option, widget): item = self.parentItem() if item and item.selected: - color = QtGui.QColor(*NODE_STYLING.SELECTED_BORDER_COLOR.value) + color = QtGui.QColor(*NodeEnum.SELECTED_BORDER_COLOR.value) else: color = QtGui.QColor(*item.color) color = color.darker(110) @@ -219,7 +219,7 @@ def paint(self, painter, option, widget): self.backdrop_text) if self.selected: - sel_color = [x for x in NODE_STYLING.SELECTED_COLOR.value] + sel_color = [x for x in NodeEnum.SELECTED_COLOR.value] sel_color[-1] = 15 painter.setBrush(QtGui.QColor(*sel_color)) painter.setPen(QtCore.Qt.NoPen) @@ -232,9 +232,9 @@ def paint(self, painter, option, widget): border = 0.8 border_color = self.color - if self.selected and NODE_STYLING.SELECTED_BORDER_COLOR.value: + if self.selected and NodeEnum.SELECTED_BORDER_COLOR.value: border = 1.0 - border_color = NODE_STYLING.SELECTED_BORDER_COLOR.value + border_color = NodeEnum.SELECTED_BORDER_COLOR.value painter.setBrush(QtCore.Qt.NoBrush) painter.setPen(QtGui.QPen(QtGui.QColor(*border_color), border)) painter.drawRoundedRect(rect, radius, radius) diff --git a/NodeGraphQt/qgraphics/node_base.py b/NodeGraphQt/qgraphics/node_base.py index 66debb93..9bb8dc4c 100644 --- a/NodeGraphQt/qgraphics/node_base.py +++ b/NodeGraphQt/qgraphics/node_base.py @@ -6,9 +6,9 @@ from NodeGraphQt.constants import ( ITEM_CACHE_MODE, ICON_NODE_BASE, - NODE_STYLING, - PORT_STYLING, - PORT_TYPE, + NodeEnum, + PortEnum, + PortTypeEnum, Z_VAL_NODE ) from NodeGraphQt.errors import NodeWidgetError @@ -30,9 +30,9 @@ class NodeItem(AbstractNodeItem): def __init__(self, name='node', parent=None): super(NodeItem, self).__init__(name, parent) pixmap = QtGui.QPixmap(ICON_NODE_BASE) - if pixmap.size().height() > NODE_STYLING.ICON_SIZE.value: + if pixmap.size().height() > NodeEnum.ICON_SIZE.value: pixmap = pixmap.scaledToHeight( - NODE_STYLING.ICON_SIZE.value, + NodeEnum.ICON_SIZE.value, QtCore.Qt.SmoothTransformation ) self._properties['icon'] = ICON_NODE_BASE @@ -76,7 +76,7 @@ def paint(self, painter, option, widget): # light overlay on background when selected. if self.selected: - painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) + painter.setBrush(QtGui.QColor(*NodeEnum.SELECTED_COLOR.value)) painter.drawRoundedRect(rect, radius, radius) # node name background. @@ -87,7 +87,7 @@ def paint(self, painter, option, widget): rect.width() - padding[0] - margin, text_rect.height() - (padding[1] * 2)) if self.selected: - painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) + painter.setBrush(QtGui.QColor(*NodeEnum.SELECTED_COLOR.value)) else: painter.setBrush(QtGui.QColor(0, 0, 0, 80)) painter.drawRoundedRect(text_rect, 3.0, 3.0) @@ -96,7 +96,7 @@ def paint(self, painter, option, widget): if self.selected: border_width = 1.2 border_color = QtGui.QColor( - *NODE_STYLING.SELECTED_BORDER_COLOR.value + *NodeEnum.SELECTED_BORDER_COLOR.value ) else: border_width = 0.8 @@ -207,10 +207,10 @@ def _set_base_size(self, add_w=0.0, add_h=0.0): add_h (float): add additional height. """ self._width, self._height = self.calc_size(add_w, add_h) - if self._width < NODE_STYLING.WIDTH.value: - self._width = NODE_STYLING.WIDTH.value - if self._height < NODE_STYLING.HEIGHT.value: - self._height = NODE_STYLING.HEIGHT.value + if self._width < NodeEnum.WIDTH.value: + self._width = NodeEnum.WIDTH.value + if self._height < NodeEnum.HEIGHT.value: + self._height = NodeEnum.HEIGHT.value def _set_text_color(self, color): """ @@ -389,7 +389,7 @@ def align_ports(self, v_offset=0.0): v_offset (float): port vertical offset. """ width = self._width - txt_offset = PORT_STYLING.CLICK_FALLOFF.value - 2 + txt_offset = PortEnum.CLICK_FALLOFF.value - 2 spacing = 1 # adjust input position @@ -529,9 +529,9 @@ def icon(self, path=None): self._properties['icon'] = path path = path or ICON_NODE_BASE pixmap = QtGui.QPixmap(path) - if pixmap.size().height() > NODE_STYLING.ICON_SIZE.value: + if pixmap.size().height() > NodeEnum.ICON_SIZE.value: pixmap = pixmap.scaledToHeight( - NODE_STYLING.ICON_SIZE.value, + NodeEnum.ICON_SIZE.value, QtCore.Qt.SmoothTransformation ) self._icon_item.setPixmap(pixmap) @@ -631,9 +631,9 @@ def _add_port(self, port): text.setFont(text.font()) text.setVisible(port.display_name) text.setCacheMode(ITEM_CACHE_MODE) - if port.port_type == PORT_TYPE.IN.value: + if port.port_type == PortTypeEnum.IN.value: self._input_items[port] = text - elif port.port_type == PORT_TYPE.OUT.value: + elif port.port_type == PortTypeEnum.OUT.value: self._output_items[port] = text if self.scene(): self.post_init() @@ -660,7 +660,7 @@ def add_input(self, name='input', multi_port=False, display_name=True, else: port = PortItem(self) port.name = name - port.port_type = PORT_TYPE.IN.value + port.port_type = PortTypeEnum.IN.value port.multi_connection = multi_port port.display_name = display_name port.locked = locked @@ -687,7 +687,7 @@ def add_output(self, name='output', multi_port=False, display_name=True, else: port = PortItem(self) port.name = name - port.port_type = PORT_TYPE.OUT.value + port.port_type = PortTypeEnum.OUT.value port.multi_connection = multi_port port.display_name = display_name port.locked = locked @@ -816,7 +816,7 @@ def paint(self, painter, option, widget): # light overlay on background when selected. if self.selected: painter.setBrush( - QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value) + QtGui.QColor(*NodeEnum.SELECTED_COLOR.value) ) painter.drawRoundedRect(rect, radius, radius) @@ -824,7 +824,7 @@ def paint(self, painter, option, widget): padding = 2.0 height = 10 if self.selected: - painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) + painter.setBrush(QtGui.QColor(*NodeEnum.SELECTED_COLOR.value)) else: painter.setBrush(QtGui.QColor(0, 0, 0, 80)) for y in [rect.y() + padding, rect.height() - height - 1]: @@ -838,7 +838,7 @@ def paint(self, painter, option, widget): if self.selected: border_width = 1.2 border_color = QtGui.QColor( - *NODE_STYLING.SELECTED_BORDER_COLOR.value + *NodeEnum.SELECTED_BORDER_COLOR.value ) border_rect = QtCore.QRectF(rect.left(), rect.top(), rect.width(), rect.height()) diff --git a/NodeGraphQt/qgraphics/node_group.py b/NodeGraphQt/qgraphics/node_group.py index 657d07dc..fa4e91dd 100644 --- a/NodeGraphQt/qgraphics/node_group.py +++ b/NodeGraphQt/qgraphics/node_group.py @@ -1,7 +1,7 @@ #!/usr/bin/python from Qt import QtCore, QtGui, QtWidgets -from NodeGraphQt.constants import NODE_STYLING, PORT_STYLING +from NodeGraphQt.constants import NodeEnum, PortEnum from NodeGraphQt.qgraphics.node_base import NodeItem @@ -64,10 +64,10 @@ def paint(self, painter, option, widget): if self.selected: border_color = QtGui.QColor( - *NODE_STYLING.SELECTED_BORDER_COLOR.value + *NodeEnum.SELECTED_BORDER_COLOR.value ) # light overlay on background when selected. - painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) + painter.setBrush(QtGui.QColor(*NodeEnum.SELECTED_COLOR.value)) painter.drawRect(rect_2) else: border_color = QtGui.QColor(*self.border_color) @@ -80,7 +80,7 @@ def paint(self, painter, option, widget): rect.right() - (padding[0] * 2) - margin, text_rect.height() - (padding[1] * 2)) if self.selected: - painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) + painter.setBrush(QtGui.QColor(*NodeEnum.SELECTED_COLOR.value)) else: painter.setBrush(QtGui.QColor(0, 0, 0, 80)) painter.setPen(QtCore.Qt.NoPen) @@ -114,7 +114,7 @@ def align_ports(self, v_offset=0.0): v_offset (float): port vertical offset. """ width = self._width - txt_offset = PORT_STYLING.CLICK_FALLOFF.value - 2 + txt_offset = PortEnum.CLICK_FALLOFF.value - 2 spacing = 1 # adjust input position @@ -243,10 +243,10 @@ def paint(self, painter, option, widget): if self.selected: border_color = QtGui.QColor( - *NODE_STYLING.SELECTED_BORDER_COLOR.value + *NodeEnum.SELECTED_BORDER_COLOR.value ) # light overlay on background when selected. - painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) + painter.setBrush(QtGui.QColor(*NodeEnum.SELECTED_COLOR.value)) painter.drawRect(rect_2) else: border_color = QtGui.QColor(*self.border_color) @@ -255,7 +255,7 @@ def paint(self, painter, option, widget): padding = 2.0 height = 10 if self.selected: - painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) + painter.setBrush(QtGui.QColor(*NodeEnum.SELECTED_COLOR.value)) else: painter.setBrush(QtGui.QColor(0, 0, 0, 80)) diff --git a/NodeGraphQt/qgraphics/node_port_in.py b/NodeGraphQt/qgraphics/node_port_in.py index c07f5c2b..e76e5d73 100644 --- a/NodeGraphQt/qgraphics/node_port_in.py +++ b/NodeGraphQt/qgraphics/node_port_in.py @@ -1,7 +1,7 @@ #!/usr/bin/python from Qt import QtCore, QtGui, QtWidgets -from NodeGraphQt.constants import NODE_STYLING +from NodeGraphQt.constants import NodeEnum from NodeGraphQt.qgraphics.node_base import NodeItem, NodeItemVertical @@ -75,9 +75,9 @@ def paint(self, painter, option, widget): if self.selected: pen = QtGui.QPen( - QtGui.QColor(*NODE_STYLING.SELECTED_BORDER_COLOR.value), 1.3 + QtGui.QColor(*NodeEnum.SELECTED_BORDER_COLOR.value), 1.3 ) - painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) + painter.setBrush(QtGui.QColor(*NodeEnum.SELECTED_COLOR.value)) else: pen = QtGui.QPen(QtGui.QColor(*self.border_color), 1.2) painter.setBrush(QtGui.QColor(0, 0, 0, 50)) @@ -223,9 +223,9 @@ def paint(self, painter, option, widget): if self.selected: pen = QtGui.QPen( - QtGui.QColor(*NODE_STYLING.SELECTED_BORDER_COLOR.value), 1.3 + QtGui.QColor(*NodeEnum.SELECTED_BORDER_COLOR.value), 1.3 ) - painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) + painter.setBrush(QtGui.QColor(*NodeEnum.SELECTED_COLOR.value)) else: pen = QtGui.QPen(QtGui.QColor(*self.border_color), 1.2) painter.setBrush(QtGui.QColor(0, 0, 0, 50)) diff --git a/NodeGraphQt/qgraphics/node_port_out.py b/NodeGraphQt/qgraphics/node_port_out.py index 6ba10bfb..a692c74a 100644 --- a/NodeGraphQt/qgraphics/node_port_out.py +++ b/NodeGraphQt/qgraphics/node_port_out.py @@ -1,7 +1,7 @@ #!/usr/bin/python from Qt import QtCore, QtGui, QtWidgets -from NodeGraphQt.constants import NODE_STYLING +from NodeGraphQt.constants import NodeEnum from NodeGraphQt.qgraphics.node_base import NodeItem, NodeItemVertical @@ -75,9 +75,9 @@ def paint(self, painter, option, widget): if self.selected: pen = QtGui.QPen( - QtGui.QColor(*NODE_STYLING.SELECTED_BORDER_COLOR.value), 1.3 + QtGui.QColor(*NodeEnum.SELECTED_BORDER_COLOR.value), 1.3 ) - painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) + painter.setBrush(QtGui.QColor(*NodeEnum.SELECTED_COLOR.value)) else: pen = QtGui.QPen(QtGui.QColor(*self.border_color), 1.2) painter.setBrush(QtGui.QColor(0, 0, 0, 50)) @@ -232,9 +232,9 @@ def paint(self, painter, option, widget): if self.selected: pen = QtGui.QPen( - QtGui.QColor(*NODE_STYLING.SELECTED_BORDER_COLOR.value), 1.3 + QtGui.QColor(*NodeEnum.SELECTED_BORDER_COLOR.value), 1.3 ) - painter.setBrush(QtGui.QColor(*NODE_STYLING.SELECTED_COLOR.value)) + painter.setBrush(QtGui.QColor(*NodeEnum.SELECTED_COLOR.value)) else: pen = QtGui.QPen(QtGui.QColor(*self.border_color), 1.2) painter.setBrush(QtGui.QColor(0, 0, 0, 50)) diff --git a/NodeGraphQt/qgraphics/pipe.py b/NodeGraphQt/qgraphics/pipe.py index f1e28619..29beada0 100644 --- a/NodeGraphQt/qgraphics/pipe.py +++ b/NodeGraphQt/qgraphics/pipe.py @@ -4,7 +4,7 @@ from Qt import QtCore, QtGui, QtWidgets from NodeGraphQt.constants import ( - PIPE_STYLING, PIPE_LAYOUT, PORT_TYPE, Z_VAL_PIPE, + PipeEnum, PipeLayoutEnum, PortTypeEnum, Z_VAL_PIPE, Z_VAL_NODE_WIDGET, ITEM_CACHE_MODE, NODE_LAYOUT_VERTICAL, NODE_LAYOUT_HORIZONTAL, @@ -13,9 +13,9 @@ from NodeGraphQt.qgraphics.port import PortItem PIPE_STYLES = { - PIPE_STYLING.DRAW_TYPE_DEFAULT.value: QtCore.Qt.SolidLine, - PIPE_STYLING.DRAW_TYPE_DASHED.value: QtCore.Qt.DashLine, - PIPE_STYLING.DRAW_TYPE_DOTTED.value: QtCore.Qt.DotLine + PipeEnum.DRAW_TYPE_DEFAULT.value: QtCore.Qt.SolidLine, + PipeEnum.DRAW_TYPE_DASHED.value: QtCore.Qt.DashLine, + PipeEnum.DRAW_TYPE_DOTTED.value: QtCore.Qt.DotLine } @@ -29,8 +29,8 @@ def __init__(self, input_port=None, output_port=None): self.setZValue(Z_VAL_PIPE) self.setAcceptHoverEvents(True) self.setFlag(QtWidgets.QGraphicsItem.ItemIsSelectable) - self._color = PIPE_STYLING.COLOR.value - self._style = PIPE_STYLING.DRAW_TYPE_DEFAULT.value + self._color = PipeEnum.COLOR.value + self._style = PipeEnum.DRAW_TYPE_DEFAULT.value self._active = False self._highlight = False self._input_port = input_port @@ -73,22 +73,22 @@ def paint(self, painter, option, widget): """ color = QtGui.QColor(*self._color) pen_style = PIPE_STYLES.get(self.style) - pen_width = PIPE_STYLING.WIDTH.value + pen_width = PipeEnum.WIDTH.value if self._active: - color = QtGui.QColor(*PIPE_STYLING.ACTIVE_COLOR.value) + color = QtGui.QColor(*PipeEnum.ACTIVE_COLOR.value) if pen_style == QtCore.Qt.DashDotDotLine: pen_width += 1 else: pen_width += 0.35 elif self._highlight: - color = QtGui.QColor(*PIPE_STYLING.HIGHLIGHT_COLOR.value) - pen_style = PIPE_STYLES.get(PIPE_STYLING.DRAW_TYPE_DEFAULT.value) + color = QtGui.QColor(*PipeEnum.HIGHLIGHT_COLOR.value) + pen_style = PIPE_STYLES.get(PipeEnum.DRAW_TYPE_DEFAULT.value) if self.disabled(): if not self._active: - color = QtGui.QColor(*PIPE_STYLING.DISABLED_COLOR.value) + color = QtGui.QColor(*PipeEnum.DISABLED_COLOR.value) pen_width += 0.2 - pen_style = PIPE_STYLES.get(PIPE_STYLING.DRAW_TYPE_DOTTED.value) + pen_style = PIPE_STYLES.get(PipeEnum.DRAW_TYPE_DOTTED.value) pen = QtGui.QPen(color, pen_width, pen_style) pen.setCapStyle(QtCore.Qt.RoundCap) @@ -151,13 +151,13 @@ def __draw_path_vertical(self, start_port, pos1, pos2, path): pos2 (QPointF): end port position. path (QPainterPath): path to draw. """ - if self.viewer_pipe_layout() == PIPE_LAYOUT.CURVED.value: + if self.viewer_pipe_layout() == PipeLayoutEnum.CURVED.value: ctr_offset_y1, ctr_offset_y2 = pos1.y(), pos2.y() tangent = abs(ctr_offset_y1 - ctr_offset_y2) max_height = start_port.node.boundingRect().height() tangent = min(tangent, max_height) - if start_port.port_type == PORT_TYPE.IN.value: + if start_port.port_type == PortTypeEnum.IN.value: ctr_offset_y1 -= tangent ctr_offset_y2 += tangent else: @@ -168,10 +168,10 @@ def __draw_path_vertical(self, start_port, pos1, pos2, path): ctr_point2 = QtCore.QPointF(pos2.x(), ctr_offset_y2) path.cubicTo(ctr_point1, ctr_point2, pos2) self.setPath(path) - elif self.viewer_pipe_layout() == PIPE_LAYOUT.ANGLE.value: + elif self.viewer_pipe_layout() == PipeLayoutEnum.ANGLE.value: ctr_offset_y1, ctr_offset_y2 = pos1.y(), pos2.y() distance = abs(ctr_offset_y1 - ctr_offset_y2)/2 - if start_port.port_type == PORT_TYPE.IN.value: + if start_port.port_type == PortTypeEnum.IN.value: ctr_offset_y1 -= distance ctr_offset_y2 += distance else: @@ -195,13 +195,13 @@ def __draw_path_horizontal(self, start_port, pos1, pos2, path): pos2 (QPointF): end port position. path (QPainterPath): path to draw. """ - if self.viewer_pipe_layout() == PIPE_LAYOUT.CURVED.value: + if self.viewer_pipe_layout() == PipeLayoutEnum.CURVED.value: ctr_offset_x1, ctr_offset_x2 = pos1.x(), pos2.x() tangent = abs(ctr_offset_x1 - ctr_offset_x2) max_width = start_port.node.boundingRect().width() tangent = min(tangent, max_width) - if start_port.port_type == PORT_TYPE.IN.value: + if start_port.port_type == PortTypeEnum.IN.value: ctr_offset_x1 -= tangent ctr_offset_x2 += tangent else: @@ -212,10 +212,10 @@ def __draw_path_horizontal(self, start_port, pos1, pos2, path): ctr_point2 = QtCore.QPointF(ctr_offset_x2, pos2.y()) path.cubicTo(ctr_point1, ctr_point2, pos2) self.setPath(path) - elif self.viewer_pipe_layout() == PIPE_LAYOUT.ANGLE.value: + elif self.viewer_pipe_layout() == PipeLayoutEnum.ANGLE.value: ctr_offset_x1, ctr_offset_x2 = pos1.x(), pos2.x() distance = abs(ctr_offset_x1 - ctr_offset_x2) / 2 - if start_port.port_type == PORT_TYPE.IN.value: + if start_port.port_type == PortTypeEnum.IN.value: ctr_offset_x1 -= distance ctr_offset_x2 += distance else: @@ -257,7 +257,7 @@ def draw_path(self, start_port, end_port=None, cursor_pos=None): path = QtGui.QPainterPath() path.moveTo(line.x1(), line.y1()) - if self.viewer_pipe_layout() == PIPE_LAYOUT.STRAIGHT.value: + if self.viewer_pipe_layout() == PipeLayoutEnum.STRAIGHT.value: path.lineTo(pos2) self.setPath(path) return @@ -295,9 +295,9 @@ def viewer_pipe_layout(self): def activate(self): self._active = True - color = QtGui.QColor(*PIPE_STYLING.ACTIVE_COLOR.value) + color = QtGui.QColor(*PipeEnum.ACTIVE_COLOR.value) pen = QtGui.QPen( - color, 2.5, PIPE_STYLES.get(PIPE_STYLING.DRAW_TYPE_DEFAULT.value) + color, 2.5, PIPE_STYLES.get(PipeEnum.DRAW_TYPE_DEFAULT.value) ) self.setPen(pen) @@ -306,9 +306,9 @@ def active(self): def highlight(self): self._highlight = True - color = QtGui.QColor(*PIPE_STYLING.HIGHLIGHT_COLOR.value) + color = QtGui.QColor(*PipeEnum.HIGHLIGHT_COLOR.value) pen = QtGui.QPen( - color, 2, PIPE_STYLES.get(PIPE_STYLING.DRAW_TYPE_DEFAULT.value) + color, 2, PIPE_STYLES.get(PipeEnum.DRAW_TYPE_DEFAULT.value) ) self.setPen(pen) @@ -327,10 +327,10 @@ def set_connections(self, port1, port2): port1.port_type: port1, port2.port_type: port2 } - self.input_port = ports[PORT_TYPE.IN.value] - self.output_port = ports[PORT_TYPE.OUT.value] - ports[PORT_TYPE.IN.value].add_pipe(self) - ports[PORT_TYPE.OUT.value].add_pipe(self) + self.input_port = ports[PortTypeEnum.IN.value] + self.output_port = ports[PortTypeEnum.OUT.value] + ports[PortTypeEnum.IN.value].add_pipe(self) + ports[PortTypeEnum.OUT.value].add_pipe(self) def disabled(self): if self.input_port and self.input_port.node.disabled: @@ -410,9 +410,9 @@ def paint(self, painter, option, widget): used to describe the parameters needed to draw. widget (QtWidgets.QWidget): not used. """ - color = QtGui.QColor(*PIPE_STYLING.ACTIVE_COLOR.value) - pen_style = PIPE_STYLES.get(PIPE_STYLING.DRAW_TYPE_DASHED.value) - pen_width = PIPE_STYLING.WIDTH.value + 0.35 + color = QtGui.QColor(*PipeEnum.ACTIVE_COLOR.value) + pen_style = PIPE_STYLES.get(PipeEnum.DRAW_TYPE_DASHED.value) + pen_width = PipeEnum.WIDTH.value + 0.35 pen = QtGui.QPen(color, pen_width) pen.setStyle(pen_style) diff --git a/NodeGraphQt/qgraphics/port.py b/NodeGraphQt/qgraphics/port.py index 71332754..78c8a0ad 100644 --- a/NodeGraphQt/qgraphics/port.py +++ b/NodeGraphQt/qgraphics/port.py @@ -2,7 +2,7 @@ from Qt import QtGui, QtCore, QtWidgets from NodeGraphQt.constants import ( - PORT_TYPE, PORT_STYLING, + PortTypeEnum, PortEnum, Z_VAL_PORT, ITEM_CACHE_MODE) @@ -20,13 +20,13 @@ def __init__(self, parent=None): self.setFlag(self.ItemSendsScenePositionChanges, True) self.setZValue(Z_VAL_PORT) self._pipes = [] - self._width = PORT_STYLING.SIZE.value - self._height = PORT_STYLING.SIZE.value + self._width = PortEnum.SIZE.value + self._height = PortEnum.SIZE.value self._hovered = False self._name = 'port' self._display_name = True - self._color = PORT_STYLING.COLOR.value - self._border_color = PORT_STYLING.BORDER_COLOR.value + self._color = PortEnum.COLOR.value + self._border_color = PortEnum.BORDER_COLOR.value self._border_size = 1 self._port_type = None self._multi_connection = False @@ -40,7 +40,7 @@ def __repr__(self): def boundingRect(self): return QtCore.QRectF(0.0, 0.0, - self._width + PORT_STYLING.CLICK_FALLOFF.value, + self._width + PortEnum.CLICK_FALLOFF.value, self._height) def paint(self, painter, option, widget): @@ -70,11 +70,11 @@ def paint(self, painter, option, widget): port_rect = QtCore.QRectF(rect_x, rect_y, rect_w, rect_h) if self._hovered: - color = QtGui.QColor(*PORT_STYLING.HOVER_COLOR.value) - border_color = QtGui.QColor(*PORT_STYLING.HOVER_BORDER_COLOR.value) + color = QtGui.QColor(*PortEnum.HOVER_COLOR.value) + border_color = QtGui.QColor(*PortEnum.HOVER_BORDER_COLOR.value) elif self.connected_pipes: - color = QtGui.QColor(*PORT_STYLING.ACTIVE_COLOR.value) - border_color = QtGui.QColor(*PORT_STYLING.ACTIVE_BORDER_COLOR.value) + color = QtGui.QColor(*PortEnum.ACTIVE_COLOR.value) + border_color = QtGui.QColor(*PortEnum.ACTIVE_BORDER_COLOR.value) else: color = QtGui.QColor(*self.color) border_color = QtGui.QColor(*self.border_color) @@ -140,9 +140,9 @@ def redraw_connected_pipes(self): if not self.connected_pipes: return for pipe in self.connected_pipes: - if self.port_type == PORT_TYPE.IN.value: + if self.port_type == PortTypeEnum.IN.value: pipe.draw_path(self, pipe.output_port) - elif self.port_type == PORT_TYPE.OUT.value: + elif self.port_type == PortTypeEnum.OUT.value: pipe.draw_path(pipe.input_port, self) def add_pipe(self, pipe): @@ -159,8 +159,8 @@ def connected_pipes(self): def connected_ports(self): ports = [] port_types = { - PORT_TYPE.IN.value: 'output_port', - PORT_TYPE.OUT.value: 'input_port' + PortTypeEnum.IN.value: 'output_port', + PortTypeEnum.OUT.value: 'input_port' } for pipe in self.connected_pipes: ports.append(getattr(pipe, port_types[self.port_type])) @@ -264,8 +264,8 @@ def connect_to(self, port): def disconnect_from(self, port): port_types = { - PORT_TYPE.IN.value: 'output_port', - PORT_TYPE.OUT.value: 'input_port' + PortTypeEnum.IN.value: 'output_port', + PortTypeEnum.OUT.value: 'input_port' } for pipe in self.connected_pipes: connected_port = getattr(pipe, port_types[self.port_type]) diff --git a/NodeGraphQt/qgraphics/slicer.py b/NodeGraphQt/qgraphics/slicer.py index 8618fc41..08282840 100644 --- a/NodeGraphQt/qgraphics/slicer.py +++ b/NodeGraphQt/qgraphics/slicer.py @@ -3,7 +3,7 @@ from Qt import QtCore, QtGui, QtWidgets -from NodeGraphQt.constants import Z_VAL_NODE_WIDGET, PIPE_SLICER_STYLING +from NodeGraphQt.constants import Z_VAL_NODE_WIDGET, PipeSlicerEnum class SlicerPipeItem(QtWidgets.QGraphicsPathItem): @@ -25,7 +25,7 @@ def paint(self, painter, option, widget): used to describe the parameters needed to draw. widget (QtWidgets.QWidget): not used. """ - color = QtGui.QColor(*PIPE_SLICER_STYLING.COLOR.value) + color = QtGui.QColor(*PipeSlicerEnum.COLOR.value) p1 = self.path().pointAtPercent(0) p2 = self.path().pointAtPercent(1) size = 6.0 @@ -42,20 +42,20 @@ def paint(self, painter, option, widget): text_x = painter.fontMetrics().width(text) / 2 text_y = painter.fontMetrics().height() / 1.5 text_pos = QtCore.QPointF(p1.x() - text_x, p1.y() - text_y) - text_color = QtGui.QColor(*PIPE_SLICER_STYLING.COLOR.value) + text_color = QtGui.QColor(*PipeSlicerEnum.COLOR.value) text_color.setAlpha(80) painter.setPen(QtGui.QPen( - text_color, PIPE_SLICER_STYLING.WIDTH.value, QtCore.Qt.SolidLine + text_color, PipeSlicerEnum.WIDTH.value, QtCore.Qt.SolidLine )) painter.drawText(text_pos, text) painter.setPen(QtGui.QPen( - color, PIPE_SLICER_STYLING.WIDTH.value, QtCore.Qt.DashDotLine + color, PipeSlicerEnum.WIDTH.value, QtCore.Qt.DashDotLine )) painter.drawPath(self.path()) pen = QtGui.QPen( - color, PIPE_SLICER_STYLING.WIDTH.value, QtCore.Qt.SolidLine + color, PipeSlicerEnum.WIDTH.value, QtCore.Qt.SolidLine ) pen.setCapStyle(QtCore.Qt.RoundCap) pen.setJoinStyle(QtCore.Qt.MiterJoin) diff --git a/NodeGraphQt/widgets/actions.py b/NodeGraphQt/widgets/actions.py index cb581be5..4ec9ce1d 100644 --- a/NodeGraphQt/widgets/actions.py +++ b/NodeGraphQt/widgets/actions.py @@ -1,7 +1,7 @@ #!/usr/bin/python from Qt import QtCore, QtWidgets -from NodeGraphQt.constants import VIEWER_STYLING +from NodeGraphQt.constants import ViewerEnum class BaseMenu(QtWidgets.QMenu): @@ -14,7 +14,7 @@ def __init__(self, *args, **kwargs): 'QMenu': { 'color': 'rgb({0},{1},{2})'.format(*text_color), 'background-color': 'rgb({0},{1},{2})'.format( - *VIEWER_STYLING.BACKGROUND_COLOR.value + *ViewerEnum.BACKGROUND_COLOR.value ), 'border': '1px solid rgba({0},{1},{2},30)'.format(*text_color), 'border-radius': '3px', diff --git a/NodeGraphQt/widgets/node_graph.py b/NodeGraphQt/widgets/node_graph.py index f9c653c2..7998ad02 100644 --- a/NodeGraphQt/widgets/node_graph.py +++ b/NodeGraphQt/widgets/node_graph.py @@ -1,7 +1,7 @@ from Qt import QtWidgets, QtGui from NodeGraphQt.constants import ( - NODE_STYLING, VIEWER_STYLING, VIEWER_NAV_STYLING + NodeEnum, ViewerEnum, ViewerNavEnum ) from NodeGraphQt.widgets.viewer_nav import NodeNavigationWidget @@ -15,16 +15,16 @@ def __init__(self, parent=None): self.setTabBarAutoHide(True) text_color = self.palette().text().color().toTuple() bg_color = QtGui.QColor( - *VIEWER_STYLING.BACKGROUND_COLOR.value).darker(120).toTuple() + *ViewerEnum.BACKGROUND_COLOR.value).darker(120).toTuple() style_dict = { 'QWidget': { 'background-color': 'rgb({0},{1},{2})'.format( - *VIEWER_STYLING.BACKGROUND_COLOR.value + *ViewerEnum.BACKGROUND_COLOR.value ), }, 'QTabWidget::pane': { 'background': 'rgb({0},{1},{2})'.format( - *VIEWER_STYLING.BACKGROUND_COLOR.value + *ViewerEnum.BACKGROUND_COLOR.value ), 'border': '0px', 'border-top': '0px solid rgb({0},{1},{2})'.format(*bg_color), @@ -39,15 +39,15 @@ def __init__(self, parent=None): 'QTabBar::tab:selected': { 'color': 'rgb({0},{1},{2})'.format(*text_color), 'background': 'rgb({0},{1},{2})'.format( - *VIEWER_NAV_STYLING.BACKGROUND_COLOR.value + *ViewerNavEnum.BACKGROUND_COLOR.value ), 'border-top': '1px solid rgb({0},{1},{2})' - .format(*NODE_STYLING.SELECTED_BORDER_COLOR.value), + .format(*NodeEnum.SELECTED_BORDER_COLOR.value), }, 'QTabBar::tab:hover': { 'color': 'rgb({0},{1},{2})'.format(*text_color), 'border-top': '1px solid rgb({0},{1},{2})' - .format(*NODE_STYLING.SELECTED_BORDER_COLOR.value), + .format(*NodeEnum.SELECTED_BORDER_COLOR.value), } } stylesheet = '' diff --git a/NodeGraphQt/widgets/node_widgets.py b/NodeGraphQt/widgets/node_widgets.py index 34878449..e2bf29f2 100644 --- a/NodeGraphQt/widgets/node_widgets.py +++ b/NodeGraphQt/widgets/node_widgets.py @@ -1,7 +1,7 @@ #!/usr/bin/python from Qt import QtCore, QtWidgets -from NodeGraphQt.constants import VIEWER_STYLING, Z_VAL_NODE_WIDGET +from NodeGraphQt.constants import ViewerEnum, Z_VAL_NODE_WIDGET from NodeGraphQt.errors import NodeWidgetError @@ -329,7 +329,7 @@ def __init__(self, parent=None, name='', label='', text=''): 'QLineEdit': { 'background': 'rgba({0},{1},{2},20)'.format(*bg_color), 'border': '1px solid rgb({0},{1},{2})' - .format(*VIEWER_STYLING.GRID_COLOR.value), + .format(*ViewerEnum.GRID_COLOR.value), 'border-radius': '3px', 'color': 'rgba({0},{1},{2},150)'.format(*text_color), 'selection-background-color': 'rgba({0},{1},{2},100)' diff --git a/NodeGraphQt/widgets/scene.py b/NodeGraphQt/widgets/scene.py index d5869da3..91e7ccfa 100644 --- a/NodeGraphQt/widgets/scene.py +++ b/NodeGraphQt/widgets/scene.py @@ -1,16 +1,16 @@ #!/usr/bin/python from Qt import QtGui, QtCore, QtWidgets -from NodeGraphQt.constants import VIEWER_STYLING +from NodeGraphQt.constants import ViewerEnum class NodeScene(QtWidgets.QGraphicsScene): def __init__(self, parent=None): super(NodeScene, self).__init__(parent) - self._grid_mode = VIEWER_STYLING.GRID_DISPLAY_LINES.value - self._grid_color = VIEWER_STYLING.GRID_COLOR.value - self._bg_color = VIEWER_STYLING.BACKGROUND_COLOR.value + self._grid_mode = ViewerEnum.GRID_DISPLAY_LINES.value + self._grid_color = ViewerEnum.GRID_COLOR.value + self._bg_color = ViewerEnum.BACKGROUND_COLOR.value self.setBackgroundBrush(QtGui.QColor(*self._bg_color)) def __repr__(self): @@ -94,16 +94,16 @@ def drawBackground(self, painter, rect): painter.setRenderHint(QtGui.QPainter.Antialiasing, False) painter.setBrush(self.backgroundBrush()) - if self._grid_mode is VIEWER_STYLING.GRID_DISPLAY_DOTS.value: + if self._grid_mode is ViewerEnum.GRID_DISPLAY_DOTS.value: pen = QtGui.QPen(QtGui.QColor(*self.grid_color), 0.65) - self._draw_dots(painter, rect, pen, VIEWER_STYLING.GRID_SIZE.value) + self._draw_dots(painter, rect, pen, ViewerEnum.GRID_SIZE.value) - elif self._grid_mode is VIEWER_STYLING.GRID_DISPLAY_LINES.value: + elif self._grid_mode is ViewerEnum.GRID_DISPLAY_LINES.value: zoom = self.viewer().get_zoom() if zoom > -0.5: pen = QtGui.QPen(QtGui.QColor(*self.grid_color), 0.65) self._draw_grid( - painter, rect, pen, VIEWER_STYLING.GRID_SIZE.value + painter, rect, pen, ViewerEnum.GRID_SIZE.value ) color = QtGui.QColor(*self._bg_color).darker(150) @@ -111,7 +111,7 @@ def drawBackground(self, painter, rect): color = color.darker(100 - int(zoom * 110)) pen = QtGui.QPen(color, 0.65) self._draw_grid( - painter, rect, pen, VIEWER_STYLING.GRID_SIZE.value * 8 + painter, rect, pen, ViewerEnum.GRID_SIZE.value * 8 ) painter.restore() @@ -150,7 +150,7 @@ def grid_mode(self): @grid_mode.setter def grid_mode(self, mode=None): if mode is None: - mode = VIEWER_STYLING.GRID_DISPLAY_LINES.value + mode = ViewerEnum.GRID_DISPLAY_LINES.value self._grid_mode = mode @property diff --git a/NodeGraphQt/widgets/tab_search.py b/NodeGraphQt/widgets/tab_search.py index 6f6c4f9c..1e80af3f 100644 --- a/NodeGraphQt/widgets/tab_search.py +++ b/NodeGraphQt/widgets/tab_search.py @@ -4,7 +4,7 @@ from Qt import QtCore, QtWidgets, QtGui -from NodeGraphQt.constants import VIEWER_STYLING, VIEWER_NAV_STYLING +from NodeGraphQt.constants import ViewerEnum, ViewerNavEnum class TabSearchCompleter(QtWidgets.QCompleter): @@ -69,7 +69,7 @@ def __init__(self, parent=None): 'padding': '2px 4px', 'margin': '2px 4px 8px 4px', 'background': 'rgb({0},{1},{2})'.format( - *VIEWER_NAV_STYLING.BACKGROUND_COLOR.value + *ViewerNavEnum.BACKGROUND_COLOR.value ), 'selection-background-color': 'rgba({0},{1},{2},200)' .format(*selected_color), @@ -114,7 +114,7 @@ def __init__(self, node_dict=None): 'QMenu': { 'color': 'rgb({0},{1},{2})'.format(*text_color), 'background-color': 'rgb({0},{1},{2})'.format( - *VIEWER_STYLING.BACKGROUND_COLOR.value + *ViewerEnum.BACKGROUND_COLOR.value ), 'border': '1px solid rgba({0},{1},{2},30)'.format(*text_color), 'border-radius': '3px', diff --git a/NodeGraphQt/widgets/viewer.py b/NodeGraphQt/widgets/viewer.py index 1b5d5f76..6fc3e744 100644 --- a/NodeGraphQt/widgets/viewer.py +++ b/NodeGraphQt/widgets/viewer.py @@ -6,7 +6,7 @@ from Qt import QtGui, QtCore, QtWidgets from NodeGraphQt.base.menu import BaseMenu -from NodeGraphQt.constants import PORT_TYPE, PIPE_LAYOUT +from NodeGraphQt.constants import PortTypeEnum, PipeLayoutEnum from NodeGraphQt.qgraphics.node_abstract import AbstractNodeItem from NodeGraphQt.qgraphics.node_backdrop import BackdropNodeItem from NodeGraphQt.qgraphics.pipe import PipeItem, LivePipeItem @@ -71,7 +71,7 @@ def __init__(self, parent=None, undo_stack=None): self._update_scene() self._last_size = self.size() - self._pipe_layout = PIPE_LAYOUT.CURVED.value + self._pipe_layout = PipeLayoutEnum.CURVED.value self._detached_port = None self._start_port = None self._origin_pos = None @@ -697,8 +697,8 @@ def sceneMousePressEvent(self, event): from_port.hovered = True attr = { - PORT_TYPE.IN.value: 'output_port', - PORT_TYPE.OUT.value: 'input_port' + PortTypeEnum.IN.value: 'output_port', + PortTypeEnum.OUT.value: 'input_port' } self._detached_port = getattr(pipe, attr[from_port.port_type]) self.start_live_connection(from_port) @@ -832,9 +832,9 @@ def start_live_connection(self, selected_port): if not selected_port: return self._start_port = selected_port - if self._start_port.type == PORT_TYPE.IN.value: + if self._start_port.type == PortTypeEnum.IN.value: self._LIVE_PIPE.input_port = self._start_port - elif self._start_port == PORT_TYPE.OUT.value: + elif self._start_port == PortTypeEnum.OUT.value: self._LIVE_PIPE.output_port = self._start_port self._LIVE_PIPE.setVisible(True) @@ -877,8 +877,8 @@ def acyclic_check(start_port, end_port): start_node = start_port.node check_nodes = [end_port.node] io_types = { - PORT_TYPE.IN.value: 'outputs', - PORT_TYPE.OUT.value: 'inputs' + PortTypeEnum.IN.value: 'outputs', + PortTypeEnum.OUT.value: 'inputs' } while check_nodes: check_node = check_nodes.pop(0) diff --git a/NodeGraphQt/widgets/viewer_nav.py b/NodeGraphQt/widgets/viewer_nav.py index 84ff1d65..573d611f 100644 --- a/NodeGraphQt/widgets/viewer_nav.py +++ b/NodeGraphQt/widgets/viewer_nav.py @@ -1,6 +1,6 @@ from Qt import QtWidgets, QtCore, QtGui -from NodeGraphQt.constants import NODE_STYLING, VIEWER_NAV_STYLING +from NodeGraphQt.constants import NodeEnum, ViewerNavEnum class NodeNavigationDelagate(QtWidgets.QStyledItemDelegate): @@ -32,11 +32,11 @@ def paint(self, painter, option, index): painter.setRenderHint(QtGui.QPainter.Antialiasing, True) # background. - bg_color = QtGui.QColor(*VIEWER_NAV_STYLING.ITEM_COLOR.value) + bg_color = QtGui.QColor(*ViewerNavEnum.ITEM_COLOR.value) itm_color = QtGui.QColor(80, 128, 123) if option.state & QtWidgets.QStyle.State_Selected: bg_color = bg_color.lighter(120) - itm_color = QtGui.QColor(*NODE_STYLING.SELECTED_BORDER_COLOR.value) + itm_color = QtGui.QColor(*NodeEnum.SELECTED_BORDER_COLOR.value) roundness = 2.0 painter.setBrush(bg_color) @@ -105,7 +105,7 @@ def __init__(self, parent=None): # self.viewport().setAutoFillBackground(False) self.setStyleSheet( 'QListView {{border: 0px;background-color: rgb({0},{1},{2});}}' - .format(*VIEWER_NAV_STYLING.BACKGROUND_COLOR.value) + .format(*ViewerNavEnum.BACKGROUND_COLOR.value) ) self.setItemDelegate(NodeNavigationDelagate(self)) From dce8a29cccbbf5c81504b60ee3a8f21ec2139dd2 Mon Sep 17 00:00:00 2001 From: jchan Date: Sun, 29 May 2022 00:12:15 +1200 Subject: [PATCH 9/9] doc update --- NodeGraphQt/constants.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NodeGraphQt/constants.py b/NodeGraphQt/constants.py index 40d4c196..ca70c7be 100644 --- a/NodeGraphQt/constants.py +++ b/NodeGraphQt/constants.py @@ -8,8 +8,8 @@ from .pkg_info import __version__ as _v __doc__ = """ -| The :py:mod:`NodeGraphQt.constants` namespace contains variables used - throughout the whole NodeGraphQt library. +| The :py:mod:`NodeGraphQt.constants` namespace contains variables and enums + used throughout the NodeGraphQt library. """ # ================================== PRIVATE ===================================