55import os
66import re
77
8- from Qt import QtCore , QtWidgets , QtGui
8+ from Qt import QtCore , QtWidgets
99
1010from NodeGraphQt .base .commands import (NodeAddedCmd ,
1111 NodeRemovedCmd ,
1818from NodeGraphQt .base .port import Port
1919from NodeGraphQt .constants import (
2020 NODE_LAYOUT_DIRECTION , NODE_LAYOUT_HORIZONTAL , NODE_LAYOUT_VERTICAL ,
21- PIPE_LAYOUT_CURVED , PIPE_LAYOUT_STRAIGHT , PIPE_LAYOUT_ANGLE ,
21+ PipeLayoutEnum ,
2222 URI_SCHEME , URN_SCHEME ,
23- IN_PORT , OUT_PORT ,
24- VIEWER_GRID_LINES
23+ PortTypeEnum ,
24+ ViewerEnum
2525)
2626from NodeGraphQt .nodes .backdrop_node import BackdropNode
2727from NodeGraphQt .nodes .base_node import BaseNode
@@ -164,13 +164,6 @@ def _wire_signals(self):
164164 """
165165 Connect up all the signals and slots here.
166166 """
167- # TODO: refactor hard coded tab search logic into
168- # "graph_actions.py" module.
169- # hard coded tab search.
170- tab = QtWidgets .QShortcut (
171- QtGui .QKeySequence (QtCore .Qt .Key_Tab ), self ._viewer )
172- tab .activated .connect (self ._toggle_tab_search )
173- self ._viewer .show_tab_search .connect (self ._toggle_tab_search )
174167
175168 # internal signals.
176169 self ._viewer .search_triggered .connect (self ._on_search_triggered )
@@ -221,14 +214,6 @@ def _on_insert_node(self, pipe, node_id, prev_node_pos):
221214 self ._on_nodes_moved (prev_node_pos )
222215 self ._undo_stack .endMacro ()
223216
224- def _toggle_tab_search (self ):
225- """
226- toggle the tab search widget.
227- """
228- if self ._viewer .underMouse ():
229- self ._viewer .tab_search_set_nodes (self ._node_factory .names )
230- self ._viewer .tab_search_toggle ()
231-
232217 def _on_property_bin_changed (self , node_id , prop_name , prop_value ):
233218 """
234219 called when a property widget has changed in a properties bin.
@@ -384,7 +369,8 @@ def _on_connection_changed(self, disconnected, connected):
384369 return
385370
386371 label = 'connect node(s)' if connected else 'disconnect node(s)'
387- ptypes = {IN_PORT : 'inputs' , OUT_PORT : 'outputs' }
372+ ptypes = {PortTypeEnum .IN .value : 'inputs' ,
373+ PortTypeEnum .OUT .value : 'outputs' }
388374
389375 self ._undo_stack .beginMacro (label )
390376 for p1_view , p2_view in disconnected :
@@ -411,7 +397,8 @@ def _on_connection_sliced(self, ports):
411397 """
412398 if not ports :
413399 return
414- ptypes = {IN_PORT : 'inputs' , OUT_PORT : 'outputs' }
400+ ptypes = {PortTypeEnum .IN .value : 'inputs' ,
401+ PortTypeEnum .OUT .value : 'outputs' }
415402 self ._undo_stack .beginMacro ('slice connections' )
416403 for p1_view , p2_view in ports :
417404 node1 = self ._model .nodes [p1_view .node .id ]
@@ -477,6 +464,14 @@ def undo_view(self):
477464 self ._undo_view .setWindowTitle ('Undo History' )
478465 return self ._undo_view
479466
467+ def toggle_node_search (self ):
468+ """
469+ toggle the node search widget visibility.
470+ """
471+ if self ._viewer .underMouse ():
472+ self ._viewer .tab_search_set_nodes (self ._node_factory .names )
473+ self ._viewer .tab_search_toggle ()
474+
480475 def show (self ):
481476 """
482477 Show node graph widget this is just a convenience
@@ -560,7 +555,7 @@ def set_grid_color(self, r, g, b):
560555 self .scene ().grid_color = (r , g , b )
561556 self ._viewer .force_update ()
562557
563- def set_grid_mode (self , mode = VIEWER_GRID_LINES ):
558+ def set_grid_mode (self , mode = None ):
564559 """
565560 Set node graph grid mode.
566561
@@ -569,13 +564,20 @@ def set_grid_mode(self, mode=VIEWER_GRID_LINES):
569564
570565 Node graph background types:
571566
572- * :attr:`NodeGraphQt.constants.VIEWER_GRID_NONE `
573- * :attr:`NodeGraphQt.constants.VIEWER_GRID_DOTS `
574- * :attr:`NodeGraphQt.constants.VIEWER_GRID_LINES `
567+ * :attr:`NodeGraphQt.constants.ViewerEnum.GRID_DISPLAY_NONE.value `
568+ * :attr:`NodeGraphQt.constants.ViewerEnum.GRID_DISPLAY_DOTS.value `
569+ * :attr:`NodeGraphQt.constants.ViewerEnum.GRID_DISPLAY_LINES.value `
575570
576571 Args:
577572 mode (int): background style.
578573 """
574+ display_types = [
575+ ViewerEnum .GRID_DISPLAY_NONE .value ,
576+ ViewerEnum .GRID_DISPLAY_DOTS .value ,
577+ ViewerEnum .GRID_DISPLAY_LINES .value
578+ ]
579+ if mode not in display_types :
580+ mode = ViewerEnum .GRID_DISPLAY_LINES .value
579581 self .scene ().grid_mode = mode
580582 self ._viewer .force_update ()
581583
@@ -736,7 +738,7 @@ def pipe_collision(self):
736738
737739 See Also:
738740 To enable/disable pipe collision
739- :meth:`NodeGraph.set_pipe_collision_enabled `
741+ :meth:`NodeGraph.set_pipe_collision `
740742
741743 Returns:
742744 bool: True if pipe collision is enabled.
@@ -759,7 +761,7 @@ def set_pipe_collision(self, mode=True):
759761 self ._model .pipe_collision = mode
760762 self ._viewer .pipe_collision = mode
761763
762- def set_pipe_style (self , style = PIPE_LAYOUT_CURVED ):
764+ def set_pipe_style (self , style = PipeLayoutEnum . CURVED . value ):
763765 """
764766 Set node graph pipes to be drawn as straight, curved or angled.
765767
@@ -771,17 +773,17 @@ def set_pipe_style(self, style=PIPE_LAYOUT_CURVED):
771773
772774 Pipe Layout Styles:
773775
774- * :attr:`NodeGraphQt.constants.PIPE_LAYOUT_CURVED `
775- * :attr:`NodeGraphQt.constants.PIPE_LAYOUT_STRAIGHT `
776- * :attr:`NodeGraphQt.constants.PIPE_LAYOUT_ANGLE `
776+ * :attr:`NodeGraphQt.constants.PipeLayoutEnum.CURVED.value `
777+ * :attr:`NodeGraphQt.constants.PipeLayoutEnum.STRAIGHT.value `
778+ * :attr:`NodeGraphQt.constants.PipeLayoutEnum.ANGLE.value `
777779
778780 Args:
779781 style (int): pipe layout style.
780782 """
781- pipe_max = max ([PIPE_LAYOUT_CURVED ,
782- PIPE_LAYOUT_STRAIGHT ,
783- PIPE_LAYOUT_ANGLE ])
784- style = style if 0 <= style <= pipe_max else PIPE_LAYOUT_CURVED
783+ pipe_max = max ([PipeLayoutEnum . CURVED . value ,
784+ PipeLayoutEnum . STRAIGHT . value ,
785+ PipeLayoutEnum . ANGLE . value ])
786+ style = style if 0 <= style <= pipe_max else PipeLayoutEnum . CURVED . value
785787 self ._viewer .set_pipe_layout (style )
786788
787789 def fit_to_selection (self ):
@@ -1253,16 +1255,20 @@ def _serialize(self, nodes):
12531255 for pname , conn_data in inputs .items ():
12541256 for conn_id , prt_names in conn_data .items ():
12551257 for conn_prt in prt_names :
1256- pipe = {IN_PORT : [n_id , pname ],
1257- OUT_PORT : [conn_id , conn_prt ]}
1258+ pipe = {
1259+ PortTypeEnum .IN .value : [n_id , pname ],
1260+ PortTypeEnum .OUT .value : [conn_id , conn_prt ]
1261+ }
12581262 if pipe not in serial_data ['connections' ]:
12591263 serial_data ['connections' ].append (pipe )
12601264
12611265 for pname , conn_data in outputs .items ():
12621266 for conn_id , prt_names in conn_data .items ():
12631267 for conn_prt in prt_names :
1264- pipe = {OUT_PORT : [n_id , pname ],
1265- IN_PORT : [conn_id , conn_prt ]}
1268+ pipe = {
1269+ PortTypeEnum .OUT .value : [n_id , pname ],
1270+ PortTypeEnum .IN .value : [conn_id , conn_prt ]
1271+ }
12661272 if pipe not in serial_data ['connections' ]:
12671273 serial_data ['connections' ].append (pipe )
12681274
@@ -2369,8 +2375,10 @@ def get_node_by_port(self, port):
23692375 Returns:
23702376 PortInputNode or PortOutputNode: port node object.
23712377 """
2372- func_type = {IN_PORT : self .get_input_port_nodes ,
2373- OUT_PORT : self .get_output_port_nodes }
2378+ func_type = {
2379+ PortTypeEnum .IN .value : self .get_input_port_nodes ,
2380+ PortTypeEnum .OUT .value : self .get_output_port_nodes
2381+ }
23742382 for n in func_type .get (port .type_ (), []):
23752383 if port == n .parent_port :
23762384 return n
0 commit comments