Skip to content

Commit de1d8aa

Browse files
committed
Merge remote-tracking branch 'Abdo/VVS_Base_Project' into VVS_Base_Project
# Conflicts: # Todo.txt # nodeeditor/node_editor_widget.py # nodeeditor/node_graphics_scene.py # vvs_app/Terminal_Test.py
2 parents a8f93b5 + 4e1f9df commit de1d8aa

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+441
-1202
lines changed

nodeeditor/graph_graphics.py

-2
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,6 @@ def __init__(self, grScene: 'NodeGraphicsScene', parent: 'QWidget' = None):
105105
self._drag_enter_listeners = []
106106
self._drop_listeners = []
107107

108-
109-
110108
def initUI(self):
111109
"""Set up this ``QGraphicsView``"""
112110
self.setRenderHints(

nodeeditor/node_editor_widget.py

+6-5
Original file line numberDiff line numberDiff line change
@@ -100,19 +100,22 @@ def create_widget_window(self):
100100

101101
self.code_orientation_btn = QPushButton()
102102
self.code_orientation_btn.setMaximumSize(25, 25)
103-
self.code_orientation_btn.setIcon(QIcon("icons/light/orientation.png"))
103+
self.code_orientation_btn.setIcon(QIcon(self.scene.masterRef.global_switches.get_icon("orientation.png")))
104+
self.code_orientation_btn.setWindowIconText("orientation.png")
104105
self.code_orientation_btn.clicked.connect(self.UpdateTextWndRot)
105106
code_wnd_bar.addWidget(self.code_orientation_btn)
106107

107108
self.copy_code_btn = QPushButton()
108109
self.copy_code_btn.setMaximumSize(25, 25)
109-
self.copy_code_btn.setIcon(QIcon("icons/light/copy.png"))
110+
self.copy_code_btn.setIcon(QIcon(self.scene.masterRef.global_switches.get_icon("copy.png")))
111+
self.copy_code_btn.setWindowIconText("copy.png")
110112
self.copy_code_btn.clicked.connect(self.CopyTextCode)
111113
code_wnd_bar.addWidget(self.copy_code_btn)
112114

113115
self.run_btn = QPushButton()
114116
self.run_btn.setMaximumSize(25, 25)
115-
self.run_btn.setIcon(QIcon("icons/light/run.png"))
117+
self.run_btn.setIcon(QIcon(self.scene.masterRef.global_switches.get_icon("run.png")))
118+
self.run_btn.setWindowIconText("run.png")
116119
self.run_btn.clicked.connect(self.run_code)
117120
code_wnd_bar.addWidget(self.run_btn)
118121

@@ -123,8 +126,6 @@ def create_widget_window(self):
123126

124127
# Termenal
125128
self.code_output = QTextEdit()
126-
# if selected_theme == night:
127-
# self.code_output.setStyleSheet("background-color: #282828")
128129
self.code_output.setFont(QFont('Roboto', 12))
129130
self.v_splitter.addWidget(self.code_output)
130131

nodeeditor/node_editor_window.py

+13-5
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
A module containing the Main Window class
44
"""
55
import os, json
6+
7+
from PyQt5.QtGui import QImage
68
from qtpy.QtCore import *
79
from qtpy.QtWidgets import *
810
# from nodeeditor.node_editor_widget import NodeEditorWidget
@@ -12,15 +14,14 @@
1214
from vvs_app.editor_files_wdg import FilesWDG
1315
from vvs_app.global_switches import GlobalSwitches
1416
from vvs_app.master_node import MasterNode
15-
from vvs_app.nodes.nodes_configuration import register_Node
17+
from vvs_app.nodes.nodes_configuration import *
1618

1719

1820
class NodeEditorWindow(QMainWindow):
1921
NodeEditorWidget_class = NodeEditorWidget
2022

2123
"""Class representing NodeEditor's Main Window"""
2224
def __init__(self):
23-
2425
"""
2526
:Instance Attributes:
2627
@@ -29,18 +30,25 @@ def __init__(self):
2930
"""
3031
super().__init__()
3132

32-
for cls in MasterNode.__subclasses__():
33-
register_Node(cls)
34-
3533
self.files_widget = FilesWDG(self)
3634

3735
self.name_company = 'The Team'
3836
self.name_product = 'Vision Visual Scripting'
3937

4038
self.global_switches = GlobalSwitches(master=self)
4139

40+
for cls in MasterNode.__subclasses__():
41+
register_Node(cls)
42+
43+
self.set_nodes_icons()
44+
4245
self.initUI()
4346

47+
def set_nodes_icons(self):
48+
for cls in MasterNode.__subclasses__():
49+
icon = os.path.split(cls.icon)[-1]
50+
cls.icon = self.global_switches.get_icon(icon)
51+
4452
def initUI(self):
4553

4654
"""Set up this ``QMainWindow``. Create :class:`~nodeeditor.node_editor_widget.NodeEditorWidget`, Actions and Menus"""

nodeeditor/node_graphics_node.py

+42-7
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
"""
33
A module containing Graphics representation of :class:`~nodeeditor.node_node.Node`
44
"""
5+
import os
6+
57
from PyQt5.QtGui import QIcon, QImage
68
from qtpy.QtWidgets import QGraphicsItem, QWidget, QGraphicsTextItem, QGraphicsDropShadowEffect
79
from qtpy.QtGui import QFont, QColor, QPen, QBrush, QPainterPath
@@ -49,7 +51,6 @@ def __init__(self, node: 'Node', parent: QWidget = None, node_icon=''):
4951
# # adding shadow to the grNode
5052
# self.setGraphicsEffect(shadow)
5153

52-
5354
@property
5455
def name(self):
5556
"""title of this `Node`
@@ -84,6 +85,28 @@ def initUI(self):
8485
self.setFlag(QGraphicsItem.ItemIsMovable)
8586
self.setAcceptHoverEvents(True)
8687

88+
def update_node_theme(self, all: bool=False, text_color: str = ""):
89+
current_theme = self.node.scene.masterRef.global_switches.switches_Dict["Theme"][0]
90+
91+
if all:
92+
icon = os.path.split(self.node.icon)[-1]
93+
self.node_icon = QImage(self.node.scene.masterRef.global_switches.get_icon(icon))
94+
95+
# text_color_index = self.node.scene.masterRef.global_switches.themes_colors["Nodes"].index("Text")
96+
# self.node.scene.masterRef.global_switches.themes_colors[current_theme][text_color_index]
97+
if text_color != "":
98+
self.name_item.setDefaultTextColor(QColor(text_color))
99+
100+
background_color_index = self.node.scene.masterRef.global_switches.themes_colors["Nodes"].index("Background")
101+
self.node_background_color = QColor(self.node.scene.masterRef.global_switches.themes_colors[current_theme][background_color_index])
102+
self._brush_background = QBrush(self.node_background_color)
103+
104+
Outline_color_index = self.node.scene.masterRef.global_switches.themes_colors["Nodes"].index("Outline")
105+
self._color = QColor(
106+
self.node.scene.masterRef.global_switches.themes_colors[current_theme][Outline_color_index])
107+
self._pen_default = QPen(self._color)
108+
self._pen_default.setWidthF(1.5)
109+
87110
def updateSizes(self):
88111
"""Set up internal attributes like `width`, `height`, etc."""
89112
self.width = 140
@@ -111,7 +134,11 @@ def initAssets(self):
111134
self._title_color = Qt.white
112135
self._title_font = QFont("Roboto", 13)
113136

114-
self._color = QColor("#FF000000")
137+
current_theme = self.node.scene.masterRef.global_switches.switches_Dict["Theme"][0]
138+
139+
Outline_color_index = self.node.scene.masterRef.global_switches.themes_colors["Nodes"].index("Outline")
140+
self._color = QColor(
141+
self.node.scene.masterRef.global_switches.themes_colors[current_theme][Outline_color_index])
115142
self._color_selected = QColor("#FFFFA637")
116143
self._color_hovered = QColor("#FFFFFF")
117144

@@ -122,9 +149,13 @@ def initAssets(self):
122149
self._pen_hovered = QPen(self._color_hovered)
123150
self._pen_hovered.setWidthF(1)
124151

125-
self.node_color = QColor("#FF313131")
126-
self._brush_title = QBrush(self.node_color)
127-
self._brush_background = QBrush(QColor("#FF212121"))
152+
self.title_color = QColor("#FF313131")
153+
self._brush_title = QBrush(self.title_color)
154+
155+
background_color_index = self.node.scene.masterRef.global_switches.themes_colors["Nodes"].index("Background")
156+
self.node_background_color = QColor(
157+
self.node.scene.masterRef.global_switches.themes_colors[current_theme][background_color_index])
158+
self._brush_background = QBrush(self.node_background_color)
128159

129160
def onSelected(self):
130161
"""Our event handling when the node was selected"""
@@ -237,15 +268,19 @@ def init_name(self):
237268
"""Set up the title Graphics representation: font, color, position, etc."""
238269

239270
self.name_item = QGraphicsTextItem(self)
240-
self.name_item.setDefaultTextColor(self._title_color)
271+
272+
# current_theme = self.node.scene.masterRef.global_switches.switches_Dict["Theme"][0]
273+
# text_color_index = self.node.scene.masterRef.global_switches.themes_colors["Nodes"].index("Text")
274+
self.name_item.setDefaultTextColor(Qt.white)
275+
241276
self.name_item.setFont(self._title_font)
242277
self.name_item.setPos(self.title_horizontal_padding, -3)
243278
# self.name_item.setTextWidth(self.width - 2 * self.title_horizontal_padding)
244279

245280
def highlight_code(self, raw_code):
246281

247282
if self.isSelected():
248-
code = f""" <pre><p style="font-family: Calibri "><span style="background-color:{self.node_color};" >{raw_code}</span></p></pre> """
283+
code = f""" <pre><p style="font-family: Calibri "><span style="background-color:{self.title_color};" >{raw_code}</span></p></pre> """
249284
else:
250285
code = f""" <pre><p style="font-family: Calibri "><span>{raw_code}</span></p></pre> """
251286
return code

nodeeditor/node_graphics_scene.py

+19-9
Original file line numberDiff line numberDiff line change
@@ -40,27 +40,37 @@ def __init__(self, scene: 'Scene', parent: QWidget = None):
4040
self.setItemIndexMethod(QGraphicsScene.NoIndex)
4141

4242
# settings
43-
self.gridSize = 30
43+
self.gridSize = self.scene.masterRef.global_switches.switches_Dict["Grid Size"]
4444
self.gridSquares = 5
4545

4646
self.initAssets()
47-
self.setBackgroundBrush(self._color_background)
48-
4947

5048
def initAssets(self):
5149
"""Initialize ``QObjects`` like ``QColor``, ``QPen`` and ``QBrush``"""
52-
self._color_background = QColor("#393939")
53-
self._color_light = QColor("#282828")
54-
self._color_dark = QColor("#282828")
50+
self.update_background_color()
5551
self._color_state = QColor("#ccc")
5652

53+
self._pen_state = QPen(self._color_state)
54+
self._font_state = QFont("Roboto", 16)
55+
56+
def update_background_color(self, background_color:str="555555", grid_lines_color:str="555555"):
57+
if self.scene.masterRef.global_switches.switches_Dict["Theme"][0] == "Dark":
58+
background_color = "393939"
59+
grid_lines_color = "292929"
60+
elif self.scene.masterRef.global_switches.switches_Dict["Theme"][0] == "Light":
61+
background_color = "e0e0e0"
62+
grid_lines_color = "eeeeee"
63+
64+
self._color_background = QColor(f"#{background_color}")
65+
self._color_light = QColor(f"#{grid_lines_color}")
66+
self._color_dark = QColor(f"#{grid_lines_color}")
67+
5768
self._pen_light = QPen(self._color_light)
58-
self._pen_light.setWidth(1)
5969
self._pen_dark = QPen(self._color_dark)
70+
self._pen_light.setWidth(1)
6071
self._pen_dark.setWidth(2)
6172

62-
self._pen_state = QPen(self._color_state)
63-
self._font_state = QFont("Roboto", 16)
73+
self.setBackgroundBrush(self._color_background)
6474

6575
# the drag events won't be allowed until dragMoveEvent is overriden
6676
def dragMoveEvent(self, event):

nodeeditor/node_node.py

+15-37
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def __init__(self, scene: 'Scene', name: str = "Undefined Node", inputs: list =
6161

6262
# just to be sure, init these variables
6363
self.grNode = QDMGraphicsNode(node=self, node_icon=node_icon)
64-
self.grNode.node_icon = QImage(node_icon)
64+
# self.grNode.node_icon = QImage(node_icon)
6565
self.initSettings()
6666

6767
self.name = name
@@ -74,42 +74,20 @@ def __init__(self, scene: 'Scene', name: str = "Undefined Node", inputs: list =
7474

7575
self.initSockets(inputs, outputs)
7676

77+
self.return_dataTypes_dict = {"Languages": ["Python", "C++"],
78+
"mutable": ["", "void"],
79+
"float": ["-> float", "float"],
80+
"integer": ["-> integer", "int"],
81+
"boolean": ["-> boolean", "boolean"],
82+
"string": ["-> string", "string"],
83+
"list": ["-> list", "list"],
84+
"dictionary": ["-> dictionary", "dictionary"],
85+
"tuple": ["-> tuple", "tuple"]
86+
}
87+
7788
def get_return(self):
78-
if self.syntax == "Python":
79-
if self.node_return == 'mutable':
80-
return ''
81-
elif self.node_return == 'float':
82-
return '-> float'
83-
elif self.node_return == 'integer':
84-
return '-> integer'
85-
elif self.node_return == 'boolean':
86-
return '-> boolean'
87-
elif self.node_return == 'string':
88-
return '-> string'
89-
elif self.node_return == 'list':
90-
return '-> list'
91-
elif self.node_return == 'dictionary':
92-
return '-> dictionary'
93-
elif self.node_return == 'tuple':
94-
return '-> tuple'
95-
96-
elif self.syntax == "C++":
97-
if self.node_return == 'mutable':
98-
return 'void'
99-
elif self.node_return == 'float':
100-
return 'float'
101-
elif self.node_return == 'integer':
102-
return 'int'
103-
elif self.node_return == 'boolean':
104-
return 'boolean'
105-
elif self.node_return == 'string':
106-
return 'string'
107-
elif self.node_return == 'list':
108-
return 'list'
109-
elif self.node_return == 'dictionary':
110-
return 'dictionary'
111-
elif self.node_return == 'tuple':
112-
return 'tuple'
89+
index = self.return_dataTypes_dict["Languages"].index(self.syntax)
90+
return self.return_dataTypes_dict[self.node_return][index]
11391

11492
def getNodeOrder(self):
11593
currentOrder = self.scene.nodes.index(self)
@@ -676,7 +654,7 @@ def deserialize(self, data: dict, hashmap: dict = {}, restore_id: bool = True, *
676654
return True
677655

678656
def set_node_color(self, color):
679-
self.grNode.node_color = color
657+
self.grNode.title_color = color
680658
self.grNode._brush_title = QBrush(QColor(color))
681659

682660
def set_input_label_text(self, index, text):

nodeeditor/node_socket.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,12 @@ def __init__(self, socket: 'Socket'):
9191
# # adding shadow to the Socket
9292
# self.setGraphicsEffect(shadow)
9393

94-
95-
9694
def hoverEnterEvent(self, event: 'QGraphicsSceneHoverEvent') -> None:
9795
"""Handle hover effect"""
96+
current_theme = self.socket.node.scene.masterRef.global_switches.switches_Dict["Theme"][0]
9897
self.hovered = True
98+
text_color_index = self.socket.node.scene.masterRef.global_switches.themes_colors["Nodes"].index("Text")
99+
self.socket.socket_label.setDefaultTextColor(QColor(self.socket.node.scene.masterRef.global_switches.themes_colors[current_theme][text_color_index]))
99100
self.socket.socket_label.show()
100101
self.update()
101102

0 commit comments

Comments
 (0)