Skip to content

Commit 238b184

Browse files
committed
update
1 parent 5dea577 commit 238b184

6 files changed

Lines changed: 135 additions & 4 deletions

File tree

Python_GUI/connectNodes/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@ Connects nodes to another one in the Node Graph.
44

55
### HOW TO USE IT
66

7-
* Select many nodes.
7+
* Select node(s).
88
* Select a final node.
99
* Edit -> Connect nodes
1010

1111
### RESULT
1212

13-
* Selected nodes get connected to the last one.
13+
* Selected node(s) get connected to the last selected one.
1414

1515
### SHORTCUT
1616

17-
* Alt+Y
17+
* Y
1818

1919
### INSTALLATION
2020

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# reconnectNodes
2+
3+
Reconnects nodes to another one in the Node Graph.
4+
5+
### HOW TO USE IT
6+
7+
* Select node(s).
8+
* Edit -> Reconnect nodes
9+
10+
### RESULT
11+
12+
* Reconnect selected node(s).
13+
14+
### SHORTCUT
15+
16+
* Alt+Y
17+
18+
### INSTALLATION
19+
20+
* Copy 'reconnectNodes' folder in your .Natron folder.
21+
* Add following lines to your 'initGui.py' file, where ``<path>`` is the location of 'reconnectNodes' folder.
22+
23+
```
24+
from <path>.reconnectNodes.reconnectNodes import *
25+
NatronGui.natron.addMenuCommand('Edit/Reconnect nodes','reconnectNodes', QtCore.Qt.Key.Key_Y, QtCore.Qt.KeyboardModifier.AltModifier)
26+
```

Python_GUI/reconnectNodes/__init__.py

Whitespace-only changes.
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
import NatronEngine
2+
from NatronGui import *
3+
from PySide.QtGui import *
4+
5+
6+
def reconnectNodes():
7+
8+
# get current Natron instance running in memory #
9+
app = natron.getGuiInstance(0)
10+
11+
# get user selected nodes #
12+
selectedNodes = app.getSelectedNodes()
13+
14+
# check if at least one node has been selected #
15+
if len(selectedNodes) == 0:
16+
warning = natron.warningDialog("Warning","Select at least one node.")
17+
18+
else :
19+
# create dialog window #
20+
dialog = app.createModalDialog()
21+
22+
# set dialog title #
23+
dialog.setWindowTitle("Nodes list")
24+
25+
# set dialog margins #
26+
dialog.setContentsMargins(0, 0, 10, 10)
27+
28+
# set window size #
29+
dialog.resize( 400, 100 )
30+
31+
################################################
32+
# UI CREATION #
33+
################################################
34+
35+
line01 = dialog.createStringParam("sep01","")
36+
line01.setType(NatronEngine.StringParam.TypeEnum.eStringTypeLabel)
37+
line02 = dialog.createStringParam("sep02","")
38+
line02.setType(NatronEngine.StringParam.TypeEnum.eStringTypeLabel)
39+
40+
# creates node list #
41+
nodeList = dialog.createChoiceParam("choice02","Nodes : ")
42+
nodeList.setAddNewLine(False)
43+
44+
################################################
45+
46+
originalNodes = app.getSelectedNodes()
47+
48+
app.selectAllNodes()
49+
50+
for currentNode in originalNodes:
51+
app.deselectNode(currentNode)
52+
53+
selectedNodes = app.getSelectedNodes()
54+
55+
for currentNode in selectedNodes:
56+
currentID = currentNode.getPluginID()
57+
58+
if currentID != 'fr.inria.built-in.Viewer':
59+
60+
currentLabel = currentNode.getScriptName()
61+
nodeList.addOption(str(currentLabel),'')
62+
63+
64+
# deselect all nodes #
65+
app.clearSelection()
66+
67+
# reselect user selected nodes #
68+
app.setSelection(originalNodes)
69+
70+
# Refresh UI #
71+
dialog.refreshUserParamsGUI()
72+
73+
################################################
74+
75+
# if user press OK #
76+
if dialog.exec_():
77+
78+
# retrieve user choice #
79+
userIndex = nodeList.getValue()
80+
userChoice = nodeList.getOption(userIndex)
81+
82+
app.selectAllNodes()
83+
selectedNodes = app.getSelectedNodes()
84+
85+
for currentNode in selectedNodes:
86+
currentLabel = currentNode.getScriptName()
87+
88+
if currentLabel == str(userChoice):
89+
toNode = currentNode
90+
91+
for node in originalNodes:
92+
93+
if node.getMaxInputCount() != 0:
94+
95+
node.disconnectInput(0)
96+
node.connectInput(0,toNode)
97+
98+
99+
# reselect user selected nodes #
100+
app.setSelection(originalNodes)

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ Restart Natron.
3636

3737
- **[connectNodes](/Python_GUI/connectNodes)** : Connect nodes to another one in the Node Graph.
3838

39-
- **[forceCaching](/Python_GUI/connectNodes)** : Connect nodes to another one in the Node Graph.
39+
- **[reconnectNodes](/Python_GUI/reconnectNodes)** : Reconnect nodes to another one in the Node Graph.
40+
41+
- **[forceCaching](/Python_GUI/connectNodes)** : Force caching for selected nodes.
4042

4143
- **[invertSelection](/Python_GUI/invertSelection)** : Invert selection in the Node Graph.
4244

initGui.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
# Edit
3636
from Python_GUI.batchRenameNodes.batchRenameNodes import *
3737
from Python_GUI.connectNodes.connectNodes import *
38+
from Python_GUI.reconnectNodes.reconnectNodes import *
3839
from Python_GUI.forceCaching.forceCaching import *
3940
from Python_GUI.invertSelection.invertSelection import *
4041
from Python_GUI.nodeChangeColor.nodeChangeColor import *
@@ -92,6 +93,7 @@
9293

9394
NatronGui.natron.addMenuCommand('Edit/Batch rename','batchRenameNodes')
9495
NatronGui.natron.addMenuCommand('Edit/Connect nodes','connectNodes', QtCore.Qt.Key.Key_Y, QtCore.Qt.KeyboardModifier)
96+
NatronGui.natron.addMenuCommand('Edit/Reconnect nodes','reconnectNodes', QtCore.Qt.Key.Key_Y, QtCore.Qt.KeyboardModifier.AltModifier)
9597
NatronGui.natron.addMenuCommand('Edit/Force caching','forceCaching', QtCore.Qt.Key.Key_B, QtCore.Qt.KeyboardModifier.ControlModifier)
9698
NatronGui.natron.addMenuCommand('Edit/Node(s) color','nodeChangeColor')
9799
NatronGui.natron.addMenuCommand('Edit/Bold node(s)','nodeBold_HTML')
@@ -148,6 +150,7 @@
148150
print ' +'
149151
print ' + Edit/Batch rename'
150152
print ' + Edit/Connect nodes'
153+
print ' + Edit/Reconnect nodes'
151154
print ' + Edit/Force caching'
152155
print ' + Edit/Invert selection'
153156
print ' + Edit/Node(s) Color'

0 commit comments

Comments
 (0)