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 )
0 commit comments