| 
				
			 | 
			
			
				
				@@ -39,6 +39,11 @@ UPDATE_TOOLSET = False 
			 | 
		
		
	
		
			
			| 
				39
			 | 
			
				39
			 | 
			
			
				
				 WRITENODE_VERSION = 1.0 
			 | 
		
		
	
		
			
			| 
				40
			 | 
			
				40
			 | 
			
			
				
				 USE_ENV_PROJECT_ROOT = 1 
			 | 
		
		
	
		
			
			| 
				41
			 | 
			
				41
			 | 
			
			
				
				 WRITENODE_LABEL = 'exr compression: [value compression]' 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				42
			 | 
			
			
				
				+KELLERTABKNOBS = ( 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				43
			 | 
			
			
				
				+    'extension', 'ext', 'ver', 'explore', 'divider3', 'playinrv', 'pushtorv', 'pushtorvappend', 'divider2', 'ignore', 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				44
			 | 
			
			
				
				+    'divider1', 'set', 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				45
			 | 
			
			
				
				+    'info', 'element', 'subtask', 'task', 'w_reload', 'useshotenv', 'keller') 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				46
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				42
			 | 
			
				47
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				43
			 | 
			
				48
			 | 
			
			
				
				 # globals 
			 | 
		
		
	
		
			
			| 
				44
			 | 
			
				49
			 | 
			
			
				
				 sequenceGlobal='' 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -51,18 +56,19 @@ class sceneControl(KellerNukePlugin): 
			 | 
		
		
	
		
			
			| 
				51
			 | 
			
				56
			 | 
			
			
				
				         self.menu = nuke.menu('Nuke') 
			 | 
		
		
	
		
			
			| 
				52
			 | 
			
				57
			 | 
			
			
				
				         m = self.menu.addMenu('SceneControl') 
			 | 
		
		
	
		
			
			| 
				53
			 | 
			
				58
			 | 
			
			
				
				         m.addCommand('SceneControl', 'import sceneControl; sceneControl.createSceneControl()',shortcut='F12') 
			 | 
		
		
	
		
			
			| 
				54
			 | 
			
				
			 | 
			
			
				
				-        m.addCommand('Increment Major', 'import sceneControl; sceneControl.increment_major_version()', tooltip="Increment Major version and save script.", shortcut='alt+shift+s') 
			 | 
		
		
	
		
			
			| 
				55
			 | 
			
				
			 | 
			
			
				
				-        m.addCommand('Increment Minor', 'import sceneControl; sceneControl.increment_minor_version()', tooltip="Increment Minor version and save script.", shortcut='alt+s') 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				59
			 | 
			
			
				
				+        m.addCommand('Increment Major', 'import sceneControl; sceneControl.increment_major_version()', tooltip='Increment Major version and save script.', shortcut='alt+shift+s') 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				60
			 | 
			
			
				
				+        m.addCommand('Increment Minor', 'import sceneControl; sceneControl.increment_minor_version()', tooltip='Increment Minor version and save script.', shortcut='alt+s') 
			 | 
		
		
	
		
			
			| 
				56
			 | 
			
				61
			 | 
			
			
				
				         m.addCommand('Reload Config', 'import sceneControl; sceneControl.kenvDelete()') 
			 | 
		
		
	
		
			
			| 
				57
			 | 
			
				62
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				58
			 | 
			
				
			 | 
			
			
				
				-        m.addCommand('Helpers/Read/Set Missing Frames Mode', 'import sceneControl; sceneControl.setErrorMode()', tooltip="Sets the Error Mode on selected Read nodes.") 
			 | 
		
		
	
		
			
			| 
				59
			 | 
			
				
			 | 
			
			
				
				-        m.addCommand('Helpers/Read/Set colorspace on Nodes', 'import sceneControl; sceneControl.setOcioRole()', tooltip="Sets the OCIO role on selected Read / Write nodes.") 
			 | 
		
		
	
		
			
			| 
				60
			 | 
			
				
			 | 
			
			
				
				-        m.addCommand('Helpers/Read/Reload Reads', 'import sceneControl; sceneControl.refresh_read_nodes()', tooltip="Reload footage of selected Read / Write nodes.") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				63
			 | 
			
			
				
				+        m.addCommand('Helpers/Read/Set Missing Frames Mode', 'import sceneControl; sceneControl.setErrorMode()', tooltip='Sets the Error Mode on selected Read nodes.') 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				64
			 | 
			
			
				
				+        m.addCommand('Helpers/Read/Set colorspace on Nodes', 'import sceneControl; sceneControl.setOcioRole()', tooltip='Sets the OCIO role on selected Read / Write nodes.') 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				65
			 | 
			
			
				
				+        m.addCommand('Helpers/Read/Reload Reads', 'import sceneControl; sceneControl.refresh_read_nodes()', tooltip='Reload footage of selected Read / Write nodes.') 
			 | 
		
		
	
		
			
			| 
				61
			 | 
			
				66
			 | 
			
			
				
				         # 
			 | 
		
		
	
		
			
			| 
				62
			 | 
			
				67
			 | 
			
			
				
				         m.addCommand('Helpers/Write/Ignore selected Nodes', 'import sceneControl; sceneControl.setIgnoreFlag(True)') 
			 | 
		
		
	
		
			
			| 
				63
			 | 
			
				68
			 | 
			
			
				
				         m.addCommand('Helpers/Write/Manage selected Nodes','import sceneControl; sceneControl.setIgnoreFlag(False)') 
			 | 
		
		
	
		
			
			| 
				64
			 | 
			
				
			 | 
			
			
				
				-        m.addCommand('Helpers/Write/Set colorspace on Nodes', 'import sceneControl; sceneControl.setOcioRole()', tooltip="Sets the OCIO role on selected Read / Write nodes.") 
			 | 
		
		
	
		
			
			| 
				65
			 | 
			
				
			 | 
			
			
				
				-        m.addCommand('Helpers/Write/Update Write Nodes Tab', 'import sceneControl; sceneControl.updateWriteNodeConfig()', tooltip="Updates Keller Tab and functions of selected write nodes.") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				69
			 | 
			
			
				
				+        m.addCommand('Helpers/Write/Set colorspace on Nodes', 'import sceneControl; sceneControl.setOcioRole()', tooltip='Sets the OCIO role on selected Read / Write nodes.') 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				70
			 | 
			
			
				
				+        m.addCommand('Helpers/Write/Update Write Nodes Tab', 'import sceneControl; sceneControl.updateWriteNodeConfig()', tooltip='Updates Keller Tab and functions of selected write nodes.') 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				71
			 | 
			
			
				
				+        m.addCommand('Helpers/Write/Remove Write Nodes Tab', 'import sceneControl; sceneControl.removeKellerTab()', tooltip='Removes Keller Tab on selected Write Nodes.') 
			 | 
		
		
	
		
			
			| 
				66
			 | 
			
				72
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				67
			 | 
			
				73
			 | 
			
			
				
				         #internal 
			 | 
		
		
	
		
			
			| 
				68
			 | 
			
				74
			 | 
			
			
				
				         m.addCommand('Debug/Enable Debug Mode', 'import sceneControl; sceneControl.setDebug(True)') 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -99,6 +105,7 @@ class sceneControl(KellerNukePlugin): 
			 | 
		
		
	
		
			
			| 
				99
			 | 
			
				105
			 | 
			
			
				
				         self.menu.removeItem('Helpers/Write/Manage selected Nodes') 
			 | 
		
		
	
		
			
			| 
				100
			 | 
			
				106
			 | 
			
			
				
				         self.menu.removeItem('Helpers/Write/Set colorspace on Nodes') 
			 | 
		
		
	
		
			
			| 
				101
			 | 
			
				107
			 | 
			
			
				
				         self.menu.removeItem('Helpers/Write/Update Write Nodes Tab') 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				108
			 | 
			
			
				
				+        self.menu.removeItem('Helpers/Write/Remove Write Nodes Tab') 
			 | 
		
		
	
		
			
			| 
				102
			 | 
			
				109
			 | 
			
			
				
				         # 
			 | 
		
		
	
		
			
			| 
				103
			 | 
			
				110
			 | 
			
			
				
				         self.menu.removeItem('Debug/Enable Debug Mode') 
			 | 
		
		
	
		
			
			| 
				104
			 | 
			
				111
			 | 
			
			
				
				         self.menu.removeItem('Debug/Disable Debug Mode') 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -162,13 +169,11 @@ def onKnobChanged(): 
			 | 
		
		
	
		
			
			| 
				162
			 | 
			
				169
			 | 
			
			
				
				             hexColour = int('%02x%02x%02x%02x' % (1 * 255, 0.666 * 255, 0.266 * 255, 1), 16) 
			 | 
		
		
	
		
			
			| 
				163
			 | 
			
				170
			 | 
			
			
				
				             n['tile_color'].setValue(hexColour) 
			 | 
		
		
	
		
			
			| 
				164
			 | 
			
				171
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				165
			 | 
			
				
			 | 
			
			
				
				- 
			 | 
		
		
	
		
			
			| 
				166
			 | 
			
				172
			 | 
			
			
				
				 def onCreateWrite(): 
			 | 
		
		
	
		
			
			| 
				167
			 | 
			
				173
			 | 
			
			
				
				     n = nuke.thisNode() 
			 | 
		
		
	
		
			
			| 
				168
			 | 
			
				174
			 | 
			
			
				
				     createCustomWrite(n) 
			 | 
		
		
	
		
			
			| 
				169
			 | 
			
				175
			 | 
			
			
				
				     return 
			 | 
		
		
	
		
			
			| 
				170
			 | 
			
				176
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				171
			 | 
			
				
			 | 
			
			
				
				- 
			 | 
		
		
	
		
			
			| 
				172
			 | 
			
				177
			 | 
			
			
				
				 def onDestroy(): 
			 | 
		
		
	
		
			
			| 
				173
			 | 
			
				178
			 | 
			
			
				
				     print('SceneControl: Info. Nice meeting you. Removing Kenv now...') 
			 | 
		
		
	
		
			
			| 
				174
			 | 
			
				179
			 | 
			
			
				
				     try: 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -179,7 +184,7 @@ def onDestroy(): 
			 | 
		
		
	
		
			
			| 
				179
			 | 
			
				184
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				180
			 | 
			
				185
			 | 
			
			
				
				 # SceneControl 
			 | 
		
		
	
		
			
			| 
				181
			 | 
			
				186
			 | 
			
			
				
				 def getSceneControl(): 
			 | 
		
		
	
		
			
			| 
				182
			 | 
			
				
			 | 
			
			
				
				-    c = nuke.exists("sceneCtrl") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				187
			 | 
			
			
				
				+    c = nuke.exists('sceneCtrl') 
			 | 
		
		
	
		
			
			| 
				183
			 | 
			
				188
			 | 
			
			
				
				     if c: 
			 | 
		
		
	
		
			
			| 
				184
			 | 
			
				189
			 | 
			
			
				
				         sc = nuke.toNode('sceneCtrl') 
			 | 
		
		
	
		
			
			| 
				185
			 | 
			
				190
			 | 
			
			
				
				     else: 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -225,14 +230,14 @@ def createSceneControl(): 
			 | 
		
		
	
		
			
			| 
				225
			 | 
			
				230
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				226
			 | 
			
				231
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				227
			 | 
			
				232
			 | 
			
			
				
				 def createSceneControlUI(): 
			 | 
		
		
	
		
			
			| 
				228
			 | 
			
				
			 | 
			
			
				
				-    n = nuke.Node("NoOp") 
			 | 
		
		
	
		
			
			| 
				229
			 | 
			
				
			 | 
			
			
				
				-    n.setName("sceneCtrl") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				233
			 | 
			
			
				
				+    n = nuke.Node('NoOp') 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				234
			 | 
			
			
				
				+    n.setName('sceneCtrl') 
			 | 
		
		
	
		
			
			| 
				230
			 | 
			
				235
			 | 
			
			
				
				     n['hide_input'].setValue(True) 
			 | 
		
		
	
		
			
			| 
				231
			 | 
			
				236
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				232
			 | 
			
				237
			 | 
			
			
				
				     # % (r * 255, g * 255, b * 255, 1), 16): change r g and b to your liking 
			 | 
		
		
	
		
			
			| 
				233
			 | 
			
				238
			 | 
			
			
				
				     hexColour = int('%02x%02x%02x%02x' % (0.2 * 255, 0.478 * 255, 0.647 * 255, 1), 16) 
			 | 
		
		
	
		
			
			| 
				234
			 | 
			
				239
			 | 
			
			
				
				     n['tile_color'].setValue(hexColour) 
			 | 
		
		
	
		
			
			| 
				235
			 | 
			
				
			 | 
			
			
				
				-    n['label'].setValue("_\n__") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				240
			 | 
			
			
				
				+    n['label'].setValue('_\n__') 
			 | 
		
		
	
		
			
			| 
				236
			 | 
			
				241
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				237
			 | 
			
				242
			 | 
			
			
				
				     # ########################### 
			 | 
		
		
	
		
			
			| 
				238
			 | 
			
				243
			 | 
			
			
				
				     # --------------------------- 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -243,12 +248,6 @@ def createSceneControlUI(): 
			 | 
		
		
	
		
			
			| 
				243
			 | 
			
				248
			 | 
			
			
				
				     k = nuke.Tab_Knob('main', 'Main') 
			 | 
		
		
	
		
			
			| 
				244
			 | 
			
				249
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				245
			 | 
			
				250
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				246
			 | 
			
				
			 | 
			
			
				
				-    # Scriptname 
			 | 
		
		
	
		
			
			| 
				247
			 | 
			
				
			 | 
			
			
				
				-    #k = nuke.String_Knob("scriptname", "Script") 
			 | 
		
		
	
		
			
			| 
				248
			 | 
			
				
			 | 
			
			
				
				-    #n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				249
			 | 
			
				
			 | 
			
			
				
				-    #n.knob("scriptname").setValue(scriptname) 
			 | 
		
		
	
		
			
			| 
				250
			 | 
			
				
			 | 
			
			
				
				-    #n.knob("scriptname").setEnabled(False) 
			 | 
		
		
	
		
			
			| 
				251
			 | 
			
				
			 | 
			
			
				
				- 
			 | 
		
		
	
		
			
			| 
				252
			 | 
			
				251
			 | 
			
			
				
				     # Project 
			 | 
		
		
	
		
			
			| 
				253
			 | 
			
				252
			 | 
			
			
				
				     k = nuke.String_Knob('project', 'Project') 
			 | 
		
		
	
		
			
			| 
				254
			 | 
			
				253
			 | 
			
			
				
				     k.setTooltip('Project Shortname') 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -274,8 +273,8 @@ def createSceneControlUI(): 
			 | 
		
		
	
		
			
			| 
				274
			 | 
			
				273
			 | 
			
			
				
				     n.knob('element').clearFlag(nuke.STARTLINE) 
			 | 
		
		
	
		
			
			| 
				275
			 | 
			
				274
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				276
			 | 
			
				275
			 | 
			
			
				
				     # Update from KEnv 
			 | 
		
		
	
		
			
			| 
				277
			 | 
			
				
			 | 
			
			
				
				-    k = nuke.PyScript_Knob("reloadConfig", "Reload", "sceneControl.kenvDelete()") 
			 | 
		
		
	
		
			
			| 
				278
			 | 
			
				
			 | 
			
			
				
				-    k.setTooltip("Reload project config file.") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				276
			 | 
			
			
				
				+    k = nuke.PyScript_Knob('reloadConfig', 'Reload', 'sceneControl.kenvDelete()') 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				277
			 | 
			
			
				
				+    k.setTooltip('Reload project config file.') 
			 | 
		
		
	
		
			
			| 
				279
			 | 
			
				278
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				280
			 | 
			
				279
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				281
			 | 
			
				280
			 | 
			
			
				
				     # Season 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -291,21 +290,21 @@ def createSceneControlUI(): 
			 | 
		
		
	
		
			
			| 
				291
			 | 
			
				290
			 | 
			
			
				
				     n.knob('episode').setVisible(False) 
			 | 
		
		
	
		
			
			| 
				292
			 | 
			
				291
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				293
			 | 
			
				292
			 | 
			
			
				
				     # _______________________________________________________________ 
			 | 
		
		
	
		
			
			| 
				294
			 | 
			
				
			 | 
			
			
				
				-    k = nuke.Text_Knob("divider1", "") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				293
			 | 
			
			
				
				+    k = nuke.Text_Knob('divider1', '') 
			 | 
		
		
	
		
			
			| 
				295
			 | 
			
				294
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				296
			 | 
			
				295
			 | 
			
			
				
				     # _______________________________________________________________ 
			 | 
		
		
	
		
			
			| 
				297
			 | 
			
				296
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				298
			 | 
			
				297
			 | 
			
			
				
				     # Sequence 
			 | 
		
		
	
		
			
			| 
				299
			 | 
			
				298
			 | 
			
			
				
				     k = nuke.String_Knob('sequence', 'Seq') 
			 | 
		
		
	
		
			
			| 
				300
			 | 
			
				299
			 | 
			
			
				
				     k.setTooltip( 
			 | 
		
		
	
		
			
			| 
				301
			 | 
			
				
			 | 
			
			
				
				-        "can be a sequence number or gen when doing generic tasks.\n\ncomp_001_010.comp_v01.ms.nk\ncomp_gen.footageIngest_v01.ms.nk") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				300
			 | 
			
			
				
				+        'can be a sequence number or gen when doing generic tasks.\n\ncomp_001_010.comp_v01.ms.nk\ncomp_gen.footageIngest_v01.ms.nk') 
			 | 
		
		
	
		
			
			| 
				302
			 | 
			
				301
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				303
			 | 
			
				302
			 | 
			
			
				
				     n.knob('sequence').setValue(seqDef) 
			 | 
		
		
	
		
			
			| 
				304
			 | 
			
				303
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				305
			 | 
			
				304
			 | 
			
			
				
				     # Shot 
			 | 
		
		
	
		
			
			| 
				306
			 | 
			
				305
			 | 
			
			
				
				     k = nuke.String_Knob('shot', 'Shot') 
			 | 
		
		
	
		
			
			| 
				307
			 | 
			
				306
			 | 
			
			
				
				     k.setTooltip( 
			 | 
		
		
	
		
			
			| 
				308
			 | 
			
				
			 | 
			
			
				
				-        "can be a shot number or gen in a multiShot context.\n\ncomp_001_010.comp_v01.ms.nk\ncomp_001_gen.comp_v01.ms.nk") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				307
			 | 
			
			
				
				+        'can be a shot number or gen in a multiShot context.\n\ncomp_001_010.comp_v01.ms.nk\ncomp_001_gen.comp_v01.ms.nk') 
			 | 
		
		
	
		
			
			| 
				309
			 | 
			
				308
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				310
			 | 
			
				309
			 | 
			
			
				
				     n.knob('shot').setValue(shotDef) 
			 | 
		
		
	
		
			
			| 
				311
			 | 
			
				310
			 | 
			
			
				
				     n.knob('shot').clearFlag(nuke.STARTLINE) 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -353,7 +352,7 @@ def createSceneControlUI(): 
			 | 
		
		
	
		
			
			| 
				353
			 | 
			
				352
			 | 
			
			
				
				     n.knob('user').clearFlag(nuke.STARTLINE) 
			 | 
		
		
	
		
			
			| 
				354
			 | 
			
				353
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				355
			 | 
			
				354
			 | 
			
			
				
				     # Divider _______________________________________________________________ 
			 | 
		
		
	
		
			
			| 
				356
			 | 
			
				
			 | 
			
			
				
				-    k = nuke.Text_Knob("divider2", "") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				355
			 | 
			
			
				
				+    k = nuke.Text_Knob('divider2', '') 
			 | 
		
		
	
		
			
			| 
				357
			 | 
			
				356
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				358
			 | 
			
				357
			 | 
			
			
				
				     # _______________________________________________________________ 
			 | 
		
		
	
		
			
			| 
				359
			 | 
			
				358
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -380,7 +379,7 @@ def createSceneControlUI(): 
			 | 
		
		
	
		
			
			| 
				380
			 | 
			
				379
			 | 
			
			
				
				     k.setTooltip('Save file Preview.') 
			 | 
		
		
	
		
			
			| 
				381
			 | 
			
				380
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				382
			 | 
			
				381
			 | 
			
			
				
				     #  Divider _______________________________________________________________ 
			 | 
		
		
	
		
			
			| 
				383
			 | 
			
				
			 | 
			
			
				
				-    k = nuke.Text_Knob("divider3", "") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				382
			 | 
			
			
				
				+    k = nuke.Text_Knob('divider3', '') 
			 | 
		
		
	
		
			
			| 
				384
			 | 
			
				383
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				385
			 | 
			
				384
			 | 
			
			
				
				     # _______________________________________________________________ 
			 | 
		
		
	
		
			
			| 
				386
			 | 
			
				385
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -412,81 +411,81 @@ def createSceneControlUI(): 
			 | 
		
		
	
		
			
			| 
				412
			 | 
			
				411
			 | 
			
			
				
				     n.knob('fEnd').clearFlag(nuke.STARTLINE) 
			 | 
		
		
	
		
			
			| 
				413
			 | 
			
				412
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				414
			 | 
			
				413
			 | 
			
			
				
				     # Button Get Framerange (ftrack) 
			 | 
		
		
	
		
			
			| 
				415
			 | 
			
				
			 | 
			
			
				
				-    k = nuke.PyScript_Knob("get_framerange", "Get Range", "sceneControl.get_framerange(nuke.thisNode())") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				414
			 | 
			
			
				
				+    k = nuke.PyScript_Knob('get_framerange', 'Get Range', 'sceneControl.get_framerange(nuke.thisNode())') 
			 | 
		
		
	
		
			
			| 
				416
			 | 
			
				415
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				417
			 | 
			
				
			 | 
			
			
				
				-    n.knob("get_framerange").setTooltip("Get Framerange from FTrack.\nPlease check you firewall rules and and allow ftrack ip 104.155.3.128 on port 443") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				416
			 | 
			
			
				
				+    n.knob('get_framerange').setTooltip('Get Framerange from FTrack.\nPlease check you firewall rules and and allow ftrack ip 104.155.3.128 on port 443') 
			 | 
		
		
	
		
			
			| 
				418
			 | 
			
				417
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				419
			 | 
			
				418
			 | 
			
			
				
				     # Button Set Framerange 
			 | 
		
		
	
		
			
			| 
				420
			 | 
			
				
			 | 
			
			
				
				-    k = nuke.PyScript_Knob("set_framerange", "Set Range", "sceneControl.set_framerange(nuke.thisNode())") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				419
			 | 
			
			
				
				+    k = nuke.PyScript_Knob('set_framerange', 'Set Range', 'sceneControl.set_framerange(nuke.thisNode())') 
			 | 
		
		
	
		
			
			| 
				421
			 | 
			
				420
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				422
			 | 
			
				
			 | 
			
			
				
				-    n.knob("set_framerange").setTooltip("Set Framerange from SceneControl Interface") 
			 | 
		
		
	
		
			
			| 
				423
			 | 
			
				
			 | 
			
			
				
				-    n.knob("set_framerange").clearFlag(nuke.STARTLINE) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				421
			 | 
			
			
				
				+    n.knob('set_framerange').setTooltip('Set Framerange from SceneControl Interface') 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				422
			 | 
			
			
				
				+    n.knob('set_framerange').clearFlag(nuke.STARTLINE) 
			 | 
		
		
	
		
			
			| 
				424
			 | 
			
				423
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				425
			 | 
			
				424
			 | 
			
			
				
				     # Comment 
			 | 
		
		
	
		
			
			| 
				426
			 | 
			
				
			 | 
			
			
				
				-    k = nuke.Multiline_Eval_String_Knob("comment", "Comment") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				425
			 | 
			
			
				
				+    k = nuke.Multiline_Eval_String_Knob('comment', 'Comment') 
			 | 
		
		
	
		
			
			| 
				427
			 | 
			
				426
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				428
			 | 
			
				
			 | 
			
			
				
				-    n.knob("comment").setValue(comment) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				427
			 | 
			
			
				
				+    n.knob('comment').setValue(comment) 
			 | 
		
		
	
		
			
			| 
				429
			 | 
			
				428
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				430
			 | 
			
				429
			 | 
			
			
				
				     # Update / publish 
			 | 
		
		
	
		
			
			| 
				431
			 | 
			
				430
			 | 
			
			
				
				     if UPDATE_TOOLSET: 
			 | 
		
		
	
		
			
			| 
				432
			 | 
			
				431
			 | 
			
			
				
				         # Button update Layer 
			 | 
		
		
	
		
			
			| 
				433
			 | 
			
				
			 | 
			
			
				
				-        k = nuke.PyScript_Knob("update_layer", "Update Layer", "sceneControl.update_layer()") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				432
			 | 
			
			
				
				+        k = nuke.PyScript_Knob('update_layer', 'Update Layer', 'sceneControl.update_layer()') 
			 | 
		
		
	
		
			
			| 
				434
			 | 
			
				433
			 | 
			
			
				
				         n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				435
			 | 
			
				
			 | 
			
			
				
				-        n.knob("update_layer").setFlag(nuke.STARTLINE) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				434
			 | 
			
			
				
				+        n.knob('update_layer').setFlag(nuke.STARTLINE) 
			 | 
		
		
	
		
			
			| 
				436
			 | 
			
				435
			 | 
			
			
				
				      
			 | 
		
		
	
		
			
			| 
				437
			 | 
			
				436
			 | 
			
			
				
				         # Button connect all Layers 
			 | 
		
		
	
		
			
			| 
				438
			 | 
			
				
			 | 
			
			
				
				-        k = nuke.PyScript_Knob("autoconnect_layers", "Connect Layers", "sceneControl.autoconnect_layers(nuke.thisNode())") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				437
			 | 
			
			
				
				+        k = nuke.PyScript_Knob('autoconnect_layers', 'Connect Layers', 'sceneControl.autoconnect_layers(nuke.thisNode())') 
			 | 
		
		
	
		
			
			| 
				439
			 | 
			
				438
			 | 
			
			
				
				         n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				440
			 | 
			
				
			 | 
			
			
				
				-        n.knob("autoconnect_layers").setFlag(nuke.STARTLINE) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				439
			 | 
			
			
				
				+        n.knob('autoconnect_layers').setFlag(nuke.STARTLINE) 
			 | 
		
		
	
		
			
			| 
				441
			 | 
			
				440
			 | 
			
			
				
				      
			 | 
		
		
	
		
			
			| 
				442
			 | 
			
				441
			 | 
			
			
				
				         # Button remove all layers 
			 | 
		
		
	
		
			
			| 
				443
			 | 
			
				
			 | 
			
			
				
				-        k = nuke.PyScript_Knob("remove_all_layers", "Remove All Layers", "sceneControl.remove_all_layers(nuke.thisNode())") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				442
			 | 
			
			
				
				+        k = nuke.PyScript_Knob('remove_all_layers', 'Remove All Layers', 'sceneControl.remove_all_layers(nuke.thisNode())') 
			 | 
		
		
	
		
			
			| 
				444
			 | 
			
				443
			 | 
			
			
				
				         n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				445
			 | 
			
				
			 | 
			
			
				
				-        n.knob("remove_all_layers").setTooltip("Removes all Layers in SceneControl.") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				444
			 | 
			
			
				
				+        n.knob('remove_all_layers').setTooltip('Removes all Layers in SceneControl.') 
			 | 
		
		
	
		
			
			| 
				446
			 | 
			
				445
			 | 
			
			
				
				      
			 | 
		
		
	
		
			
			| 
				447
			 | 
			
				446
			 | 
			
			
				
				         # Button delete all reads 
			 | 
		
		
	
		
			
			| 
				448
			 | 
			
				
			 | 
			
			
				
				-        k = nuke.PyScript_Knob("remove_scnctrl_reads", "Delete All Reads", 
			 | 
		
		
	
		
			
			| 
				449
			 | 
			
				
			 | 
			
			
				
				-                               "sceneControl.remove_scnctrl_reads(nuke.thisNode())") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				447
			 | 
			
			
				
				+        k = nuke.PyScript_Knob('remove_scnctrl_reads', 'Delete All Reads', 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				448
			 | 
			
			
				
				+                               'sceneControl.remove_scnctrl_reads(nuke.thisNode())') 
			 | 
		
		
	
		
			
			| 
				450
			 | 
			
				449
			 | 
			
			
				
				         n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				451
			 | 
			
				
			 | 
			
			
				
				-        n.knob("remove_scnctrl_reads").setTooltip("Deletes all reads created by SceneControl.") 
			 | 
		
		
	
		
			
			| 
				452
			 | 
			
				
			 | 
			
			
				
				-        n.knob("remove_scnctrl_reads").setFlag(nuke.STARTLINE) 
			 | 
		
		
	
		
			
			| 
				453
			 | 
			
				
			 | 
			
			
				
				-        n.knob("remove_scnctrl_reads").setVisible(False) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				450
			 | 
			
			
				
				+        n.knob('remove_scnctrl_reads').setTooltip('Deletes all reads created by SceneControl.') 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				451
			 | 
			
			
				
				+        n.knob('remove_scnctrl_reads').setFlag(nuke.STARTLINE) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				452
			 | 
			
			
				
				+        n.knob('remove_scnctrl_reads').setVisible(False) 
			 | 
		
		
	
		
			
			| 
				454
			 | 
			
				453
			 | 
			
			
				
				      
			 | 
		
		
	
		
			
			| 
				455
			 | 
			
				454
			 | 
			
			
				
				         # Button publish Shot 
			 | 
		
		
	
		
			
			| 
				456
			 | 
			
				
			 | 
			
			
				
				-        k = nuke.PyScript_Knob("publish_shot", "Publish", "sceneControl.publish_shot()") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				455
			 | 
			
			
				
				+        k = nuke.PyScript_Knob('publish_shot', 'Publish', 'sceneControl.publish_shot()') 
			 | 
		
		
	
		
			
			| 
				457
			 | 
			
				456
			 | 
			
			
				
				         n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				458
			 | 
			
				
			 | 
			
			
				
				-        n.knob("publish_shot").setFlag(nuke.STARTLINE) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				457
			 | 
			
			
				
				+        n.knob('publish_shot').setFlag(nuke.STARTLINE) 
			 | 
		
		
	
		
			
			| 
				459
			 | 
			
				458
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				460
			 | 
			
				459
			 | 
			
			
				
				     # invisible helpers 
			 | 
		
		
	
		
			
			| 
				461
			 | 
			
				460
			 | 
			
			
				
				     # helper 
			 | 
		
		
	
		
			
			| 
				462
			 | 
			
				
			 | 
			
			
				
				-    k = nuke.Int_Knob("layerNum", "Slots") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				461
			 | 
			
			
				
				+    k = nuke.Int_Knob('layerNum', 'Slots') 
			 | 
		
		
	
		
			
			| 
				463
			 | 
			
				462
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				464
			 | 
			
				
			 | 
			
			
				
				-    n.knob("layerNum").setValue(0) 
			 | 
		
		
	
		
			
			| 
				465
			 | 
			
				
			 | 
			
			
				
				-    n.knob("layerNum").setVisible(False) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				463
			 | 
			
			
				
				+    n.knob('layerNum').setValue(0) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				464
			 | 
			
			
				
				+    n.knob('layerNum').setVisible(False) 
			 | 
		
		
	
		
			
			| 
				466
			 | 
			
				465
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				467
			 | 
			
				466
			 | 
			
			
				
				     # used for resolving expressions 
			 | 
		
		
	
		
			
			| 
				468
			 | 
			
				
			 | 
			
			
				
				-    k = nuke.EvalString_Knob("eval_helper", "eval_helper") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				467
			 | 
			
			
				
				+    k = nuke.EvalString_Knob('eval_helper', 'eval_helper') 
			 | 
		
		
	
		
			
			| 
				469
			 | 
			
				468
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				470
			 | 
			
				
			 | 
			
			
				
				-    n.knob("eval_helper").setValue("") 
			 | 
		
		
	
		
			
			| 
				471
			 | 
			
				
			 | 
			
			
				
				-    n.knob("eval_helper").setVisible(False) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				469
			 | 
			
			
				
				+    n.knob('eval_helper').setValue('') 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				470
			 | 
			
			
				
				+    n.knob('eval_helper').setVisible(False) 
			 | 
		
		
	
		
			
			| 
				472
			 | 
			
				471
			 | 
			
			
				
				     # for debug disable above 
			 | 
		
		
	
		
			
			| 
				473
			 | 
			
				472
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				474
			 | 
			
				
			 | 
			
			
				
				-    k = nuke.Boolean_Knob("stereoToggle", "Stereo Toggle") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				473
			 | 
			
			
				
				+    k = nuke.Boolean_Knob('stereoToggle', 'Stereo Toggle') 
			 | 
		
		
	
		
			
			| 
				475
			 | 
			
				474
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				476
			 | 
			
				
			 | 
			
			
				
				-    n.knob("stereoToggle").setValue(0) 
			 | 
		
		
	
		
			
			| 
				477
			 | 
			
				
			 | 
			
			
				
				-    n.knob("stereoToggle").setVisible(False) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				475
			 | 
			
			
				
				+    n.knob('stereoToggle').setValue(0) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				476
			 | 
			
			
				
				+    n.knob('stereoToggle').setVisible(False) 
			 | 
		
		
	
		
			
			| 
				478
			 | 
			
				477
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				479
			 | 
			
				478
			 | 
			
			
				
				     # used for resolving expressions 
			 | 
		
		
	
		
			
			| 
				480
			 | 
			
				
			 | 
			
			
				
				-    k = nuke.EvalString_Knob("precomp_output", "Precomp Output") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				479
			 | 
			
			
				
				+    k = nuke.EvalString_Knob('precomp_output', 'Precomp Output') 
			 | 
		
		
	
		
			
			| 
				481
			 | 
			
				480
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				482
			 | 
			
				
			 | 
			
			
				
				-    n.knob("precomp_output").setValue("") 
			 | 
		
		
	
		
			
			| 
				483
			 | 
			
				
			 | 
			
			
				
				-    n.knob("precomp_output").setVisible(False) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				481
			 | 
			
			
				
				+    n.knob('precomp_output').setValue('') 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				482
			 | 
			
			
				
				+    n.knob('precomp_output').setVisible(False) 
			 | 
		
		
	
		
			
			| 
				484
			 | 
			
				483
			 | 
			
			
				
				     # for debug disable above 
			 | 
		
		
	
		
			
			| 
				485
			 | 
			
				484
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				486
			 | 
			
				
			 | 
			
			
				
				-    k = nuke.Boolean_Knob("debug", "Debug") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				485
			 | 
			
			
				
				+    k = nuke.Boolean_Knob('debug', 'Debug') 
			 | 
		
		
	
		
			
			| 
				487
			 | 
			
				486
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				488
			 | 
			
				
			 | 
			
			
				
				-    n.knob("debug").setValue(1) 
			 | 
		
		
	
		
			
			| 
				489
			 | 
			
				
			 | 
			
			
				
				-    n.knob("debug").setVisible(False) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				487
			 | 
			
			
				
				+    n.knob('debug').setValue(1) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				488
			 | 
			
			
				
				+    n.knob('debug').setVisible(False) 
			 | 
		
		
	
		
			
			| 
				490
			 | 
			
				489
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				491
			 | 
			
				490
			 | 
			
			
				
				     # end helper 
			 | 
		
		
	
		
			
			| 
				492
			 | 
			
				491
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -574,7 +573,7 @@ def kenvGetWriteOutput(writeTask, writeElement, writeInfo, ext): 
			 | 
		
		
	
		
			
			| 
				574
			 | 
			
				573
			 | 
			
			
				
				     k = sceneControl.knobs() 
			 | 
		
		
	
		
			
			| 
				575
			 | 
			
				574
			 | 
			
			
				
				     kenvCheck() 
			 | 
		
		
	
		
			
			| 
				576
			 | 
			
				575
			 | 
			
			
				
				     # debug 
			 | 
		
		
	
		
			
			| 
				577
			 | 
			
				
			 | 
			
			
				
				-    if k["debug"].getValue(): 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				576
			 | 
			
			
				
				+    if k['debug'].getValue(): 
			 | 
		
		
	
		
			
			| 
				578
			 | 
			
				577
			 | 
			
			
				
				         print(('SceneControl: Debug. WriteTask: %s, WriteElement: %s, WriteInfo: %s') % (writeTask, writeElement, writeInfo)) 
			 | 
		
		
	
		
			
			| 
				579
			 | 
			
				578
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				580
			 | 
			
				579
			 | 
			
			
				
				     # useEnvProjectRoot 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -587,7 +586,7 @@ def kenvGetWriteOutput(writeTask, writeElement, writeInfo, ext): 
			 | 
		
		
	
		
			
			| 
				587
			 | 
			
				586
			 | 
			
			
				
				     if writeTask.lower() == 'scripttask': 
			 | 
		
		
	
		
			
			| 
				588
			 | 
			
				587
			 | 
			
			
				
				         # get task from sceneControl and not from the write node 
			 | 
		
		
	
		
			
			| 
				589
			 | 
			
				588
			 | 
			
			
				
				         # sceneControl task 
			 | 
		
		
	
		
			
			| 
				590
			 | 
			
				
			 | 
			
			
				
				-        task = k["task"].value() 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				589
			 | 
			
			
				
				+        task = k['task'].value() 
			 | 
		
		
	
		
			
			| 
				591
			 | 
			
				590
			 | 
			
			
				
				         writeTask = task 
			 | 
		
		
	
		
			
			| 
				592
			 | 
			
				591
			 | 
			
			
				
				         # KEnv query 
			 | 
		
		
	
		
			
			| 
				593
			 | 
			
				592
			 | 
			
			
				
				         renderpath = kenvQuery('RENDER_2D_FILE', element=writeElement, task=writeTask, minor_version=None, info=writeInfo, ext=ext, USE_ENV_PROJECTROOT=useEnv) 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -726,7 +725,7 @@ def kenvWriteSetPath(n): 
			 | 
		
		
	
		
			
			| 
				726
			 | 
			
				725
			 | 
			
			
				
				     k = sceneControl.knobs() 
			 | 
		
		
	
		
			
			| 
				727
			 | 
			
				726
			 | 
			
			
				
				     kenvCheck() 
			 | 
		
		
	
		
			
			| 
				728
			 | 
			
				727
			 | 
			
			
				
				     #debug 
			 | 
		
		
	
		
			
			| 
				729
			 | 
			
				
			 | 
			
			
				
				-    if k["debug"].getValue(): 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				728
			 | 
			
			
				
				+    if k['debug'].getValue(): 
			 | 
		
		
	
		
			
			| 
				730
			 | 
			
				729
			 | 
			
			
				
				         print(('SceneControl: Debug. Setting path on: %s') % n.name()) 
			 | 
		
		
	
		
			
			| 
				731
			 | 
			
				730
			 | 
			
			
				
				     subtask = n.knob('subtask').value() 
			 | 
		
		
	
		
			
			| 
				732
			 | 
			
				731
			 | 
			
			
				
				     if subtask is None: 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -769,7 +768,7 @@ def kenvWriteReloadSubTasks(n): 
			 | 
		
		
	
		
			
			| 
				769
			 | 
			
				768
			 | 
			
			
				
				 def setIgnoreFlag(state): 
			 | 
		
		
	
		
			
			| 
				770
			 | 
			
				769
			 | 
			
			
				
				     s = nuke.selectedNodes() 
			 | 
		
		
	
		
			
			| 
				771
			 | 
			
				770
			 | 
			
			
				
				     if len(s) == 0: 
			 | 
		
		
	
		
			
			| 
				772
			 | 
			
				
			 | 
			
			
				
				-        nuke.message("Please select some Nodes first.") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				771
			 | 
			
			
				
				+        nuke.message('Please select some Nodes first.') 
			 | 
		
		
	
		
			
			| 
				773
			 | 
			
				772
			 | 
			
			
				
				         return 
			 | 
		
		
	
		
			
			| 
				774
			 | 
			
				773
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				775
			 | 
			
				774
			 | 
			
			
				
				     for n in s: 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -783,7 +782,7 @@ def setIgnoreFlag(state): 
			 | 
		
		
	
		
			
			| 
				783
			 | 
			
				782
			 | 
			
			
				
				 def setErrorMode(): 
			 | 
		
		
	
		
			
			| 
				784
			 | 
			
				783
			 | 
			
			
				
				     n = nuke.selectedNodes() 
			 | 
		
		
	
		
			
			| 
				785
			 | 
			
				784
			 | 
			
			
				
				     if len(n) == 0: 
			 | 
		
		
	
		
			
			| 
				786
			 | 
			
				
			 | 
			
			
				
				-        nuke.message("Please select some Nodes first.") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				785
			 | 
			
			
				
				+        nuke.message('Please select some Nodes first.') 
			 | 
		
		
	
		
			
			| 
				787
			 | 
			
				786
			 | 
			
			
				
				         return 
			 | 
		
		
	
		
			
			| 
				788
			 | 
			
				787
			 | 
			
			
				
				     w = nuke.nodes.Read() 
			 | 
		
		
	
		
			
			| 
				789
			 | 
			
				788
			 | 
			
			
				
				     onerror = w['on_error'].values() 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -796,14 +795,14 @@ def setErrorMode(): 
			 | 
		
		
	
		
			
			| 
				796
			 | 
			
				795
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				797
			 | 
			
				796
			 | 
			
			
				
				     sel = nuke.selectedNodes() 
			 | 
		
		
	
		
			
			| 
				798
			 | 
			
				797
			 | 
			
			
				
				     for s in sel: 
			 | 
		
		
	
		
			
			| 
				799
			 | 
			
				
			 | 
			
			
				
				-        if s.Class() == "Read" or s.Class() == "DeepRead": 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				798
			 | 
			
			
				
				+        if s.Class() == 'Read' or s.Class() == 'DeepRead': 
			 | 
		
		
	
		
			
			| 
				800
			 | 
			
				799
			 | 
			
			
				
				             s.knobs()['on_error'].setValue(ret) 
			 | 
		
		
	
		
			
			| 
				801
			 | 
			
				800
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				802
			 | 
			
				801
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				803
			 | 
			
				802
			 | 
			
			
				
				 def setOcioRole(): 
			 | 
		
		
	
		
			
			| 
				804
			 | 
			
				803
			 | 
			
			
				
				     n = nuke.selectedNodes() 
			 | 
		
		
	
		
			
			| 
				805
			 | 
			
				804
			 | 
			
			
				
				     if len(n) == 0: 
			 | 
		
		
	
		
			
			| 
				806
			 | 
			
				
			 | 
			
			
				
				-        nuke.message("No node(s) selected.") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				805
			 | 
			
			
				
				+        nuke.message('No node(s) selected.') 
			 | 
		
		
	
		
			
			| 
				807
			 | 
			
				806
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				808
			 | 
			
				807
			 | 
			
			
				
				     # create temporary write node 
			 | 
		
		
	
		
			
			| 
				809
			 | 
			
				808
			 | 
			
			
				
				     w = nuke.nodes.Write(file_type='exr') 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -828,7 +827,7 @@ def setOcioRole(): 
			 | 
		
		
	
		
			
			| 
				828
			 | 
			
				827
			 | 
			
			
				
				     ret = p.value('Colorspace') 
			 | 
		
		
	
		
			
			| 
				829
			 | 
			
				828
			 | 
			
			
				
				     if ret is not None: 
			 | 
		
		
	
		
			
			| 
				830
			 | 
			
				829
			 | 
			
			
				
				         for s in n: 
			 | 
		
		
	
		
			
			| 
				831
			 | 
			
				
			 | 
			
			
				
				-            if s.Class() == "Read" or s.Class() == "Write": 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				830
			 | 
			
			
				
				+            if s.Class() == 'Read' or s.Class() == 'Write': 
			 | 
		
		
	
		
			
			| 
				832
			 | 
			
				831
			 | 
			
			
				
				                 s.knobs()['colorspace'].setValue(ret) 
			 | 
		
		
	
		
			
			| 
				833
			 | 
			
				832
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				834
			 | 
			
				833
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -848,12 +847,12 @@ def setDebug(state): 
			 | 
		
		
	
		
			
			| 
				848
			 | 
			
				847
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				849
			 | 
			
				848
			 | 
			
			
				
				 def deselectAll(): 
			 | 
		
		
	
		
			
			| 
				850
			 | 
			
				849
			 | 
			
			
				
				     for each in nuke.allNodes(): 
			 | 
		
		
	
		
			
			| 
				851
			 | 
			
				
			 | 
			
			
				
				-        each.knob("selected").setValue(False) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				850
			 | 
			
			
				
				+        each.knob('selected').setValue(False) 
			 | 
		
		
	
		
			
			| 
				852
			 | 
			
				851
			 | 
			
			
				
				     return 
			 | 
		
		
	
		
			
			| 
				853
			 | 
			
				852
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				854
			 | 
			
				853
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				855
			 | 
			
				854
			 | 
			
			
				
				 def getFilename(): 
			 | 
		
		
	
		
			
			| 
				856
			 | 
			
				
			 | 
			
			
				
				-    return nuke.Root()["name"].getValue() 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				855
			 | 
			
			
				
				+    return nuke.Root()['name'].getValue() 
			 | 
		
		
	
		
			
			| 
				857
			 | 
			
				856
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				858
			 | 
			
				857
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				859
			 | 
			
				858
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -861,7 +860,7 @@ def find_node_by_type(nodename, nodeclass): 
			 | 
		
		
	
		
			
			| 
				861
			 | 
			
				860
			 | 
			
			
				
				     nodes = nuke.allNodes() 
			 | 
		
		
	
		
			
			| 
				862
			 | 
			
				861
			 | 
			
			
				
				     for n in nodes: 
			 | 
		
		
	
		
			
			| 
				863
			 | 
			
				862
			 | 
			
			
				
				         if n.Class() == nodeclass: 
			 | 
		
		
	
		
			
			| 
				864
			 | 
			
				
			 | 
			
			
				
				-            if n.knob("label").getValue().lower() == nodename.lower(): 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				863
			 | 
			
			
				
				+            if n.knob('label').getValue().lower() == nodename.lower(): 
			 | 
		
		
	
		
			
			| 
				865
			 | 
			
				864
			 | 
			
			
				
				                 return n 
			 | 
		
		
	
		
			
			| 
				866
			 | 
			
				865
			 | 
			
			
				
				     return None 
			 | 
		
		
	
		
			
			| 
				867
			 | 
			
				866
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -887,23 +886,15 @@ def updateWriteNodeConfig(): 
			 | 
		
		
	
		
			
			| 
				887
			 | 
			
				886
			 | 
			
			
				
				     # TODO: more automated update function. 
			 | 
		
		
	
		
			
			| 
				888
			 | 
			
				887
			 | 
			
			
				
				     import sceneControl 
			 | 
		
		
	
		
			
			| 
				889
			 | 
			
				888
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				890
			 | 
			
				
			 | 
			
			
				
				-    # 'task' for legacy write nodes 
			 | 
		
		
	
		
			
			| 
				891
			 | 
			
				
			 | 
			
			
				
				-    customKnobs = ( 
			 | 
		
		
	
		
			
			| 
				892
			 | 
			
				
			 | 
			
			
				
				-    'extension', 'ext', 'ver', 'explore', 'divider3', 'playinrv', 'pushtorv', 'pushtorvappend', 'divider2', 'ignore', 'divider1', 'set', 
			 | 
		
		
	
		
			
			| 
				893
			 | 
			
				
			 | 
			
			
				
				-    'info', 'element', 'subtask', 'task', 'w_reload', 'keller') 
			 | 
		
		
	
		
			
			| 
				894
			 | 
			
				
			 | 
			
			
				
				- 
			 | 
		
		
	
		
			
			| 
				895
			 | 
			
				889
			 | 
			
			
				
				     # save these for reapplying later on 
			 | 
		
		
	
		
			
			| 
				896
			 | 
			
				890
			 | 
			
			
				
				     saveKnobs = ('info', 'element', 'subtask', 'ignore') 
			 | 
		
		
	
		
			
			| 
				897
			 | 
			
				891
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				898
			 | 
			
				892
			 | 
			
			
				
				     # get all reads 
			 | 
		
		
	
		
			
			| 
				899
			 | 
			
				893
			 | 
			
			
				
				     nodes = [node for node in nuke.selectedNodes() if node.Class() == 'Write'] 
			 | 
		
		
	
		
			
			| 
				900
			 | 
			
				894
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				901
			 | 
			
				
			 | 
			
			
				
				-    for n in nodes: 
			 | 
		
		
	
		
			
			| 
				902
			 | 
			
				
			 | 
			
			
				
				-        knobs = n.knobs() 
			 | 
		
		
	
		
			
			| 
				903
			 | 
			
				
			 | 
			
			
				
				-        info = '' 
			 | 
		
		
	
		
			
			| 
				904
			 | 
			
				
			 | 
			
			
				
				-        element = '' 
			 | 
		
		
	
		
			
			| 
				905
			 | 
			
				
			 | 
			
			
				
				-        subtask = '' 
			 | 
		
		
	
		
			
			| 
				906
			 | 
			
				
			 | 
			
			
				
				-        for c in customKnobs: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				895
			 | 
			
			
				
				+    if len(nodes) >0: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				896
			 | 
			
			
				
				+        for n in nodes: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				897
			 | 
			
			
				
				+            knobs = n.knobs() 
			 | 
		
		
	
		
			
			| 
				907
			 | 
			
				898
			 | 
			
			
				
				             # save config 
			 | 
		
		
	
		
			
			| 
				908
			 | 
			
				899
			 | 
			
			
				
				             try: 
			 | 
		
		
	
		
			
			| 
				909
			 | 
			
				900
			 | 
			
			
				
				                 info = knobs['info'].value() 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -912,31 +903,58 @@ def updateWriteNodeConfig(): 
			 | 
		
		
	
		
			
			| 
				912
			 | 
			
				903
			 | 
			
			
				
				                 ignore = knobs['ignore'].value() 
			 | 
		
		
	
		
			
			| 
				913
			 | 
			
				904
			 | 
			
			
				
				             except: 
			 | 
		
		
	
		
			
			| 
				914
			 | 
			
				905
			 | 
			
			
				
				                 pass 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				906
			 | 
			
			
				
				+            for c in KELLERTABKNOBS: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				907
			 | 
			
			
				
				+                try: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				908
			 | 
			
			
				
				+                    n.removeKnob(knobs[c]) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				909
			 | 
			
			
				
				+                except: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				910
			 | 
			
			
				
				+                    pass 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				911
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				912
			 | 
			
			
				
				+            # create new Keller tab 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				913
			 | 
			
			
				
				+            sceneControl.createCustomWrite(n) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				914
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				915
			 | 
			
			
				
				+            # refresh subtasks 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				916
			 | 
			
			
				
				+            sceneControl.kenvWriteReloadSubTasks(n) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				917
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				918
			 | 
			
			
				
				+            # restore old values 
			 | 
		
		
	
		
			
			| 
				915
			 | 
			
				919
			 | 
			
			
				
				             try: 
			 | 
		
		
	
		
			
			| 
				916
			 | 
			
				
			 | 
			
			
				
				-                n.removeKnob(knobs[c]) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				920
			 | 
			
			
				
				+                n.knobs()['info'].setValue(info) 
			 | 
		
		
	
		
			
			| 
				917
			 | 
			
				921
			 | 
			
			
				
				             except: 
			 | 
		
		
	
		
			
			| 
				918
			 | 
			
				
			 | 
			
			
				
				-                pass 
			 | 
		
		
	
		
			
			| 
				919
			 | 
			
				
			 | 
			
			
				
				- 
			 | 
		
		
	
		
			
			| 
				920
			 | 
			
				
			 | 
			
			
				
				-        # create new Keller tab 
			 | 
		
		
	
		
			
			| 
				921
			 | 
			
				
			 | 
			
			
				
				-        sceneControl.createCustomWrite(n) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				922
			 | 
			
			
				
				+                print('SceneControl: Error. Node %s. Cannot set value on knob: %s') % (n.name(), info) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				923
			 | 
			
			
				
				+            try: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				924
			 | 
			
			
				
				+                n.knobs()['element'].setValue(element) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				925
			 | 
			
			
				
				+            except: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				926
			 | 
			
			
				
				+                print('SceneControl: Error. Node %s. Cannot set value on knob: %s') % (n.name(), element) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				927
			 | 
			
			
				
				+            try: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				928
			 | 
			
			
				
				+                n.knobs()['subtask'].setValue(subtask) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				929
			 | 
			
			
				
				+            except: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				930
			 | 
			
			
				
				+                print('SceneControl: Error. Node %s. Cannot set value on knob: %s') % (n.name(), subtask) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				931
			 | 
			
			
				
				+    else: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				932
			 | 
			
			
				
				+        pass 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				933
			 | 
			
			
				
				+    return 
			 | 
		
		
	
		
			
			| 
				922
			 | 
			
				934
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				923
			 | 
			
				
			 | 
			
			
				
				-        # refresh subtasks 
			 | 
		
		
	
		
			
			| 
				924
			 | 
			
				
			 | 
			
			
				
				-        sceneControl.kenvWriteReloadSubTasks(n) 
			 | 
		
		
	
		
			
			| 
				925
			 | 
			
				935
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				926
			 | 
			
				
			 | 
			
			
				
				-        # restore old values 
			 | 
		
		
	
		
			
			| 
				927
			 | 
			
				
			 | 
			
			
				
				-        try: 
			 | 
		
		
	
		
			
			| 
				928
			 | 
			
				
			 | 
			
			
				
				-            n.knobs()['info'].setValue(info) 
			 | 
		
		
	
		
			
			| 
				929
			 | 
			
				
			 | 
			
			
				
				-        except: 
			 | 
		
		
	
		
			
			| 
				930
			 | 
			
				
			 | 
			
			
				
				-            print('SceneControl: Error. Node %s. Cannot set value on knob: %s') % (n.name(), info) 
			 | 
		
		
	
		
			
			| 
				931
			 | 
			
				
			 | 
			
			
				
				-        try: 
			 | 
		
		
	
		
			
			| 
				932
			 | 
			
				
			 | 
			
			
				
				-            n.knobs()['element'].setValue(element) 
			 | 
		
		
	
		
			
			| 
				933
			 | 
			
				
			 | 
			
			
				
				-        except: 
			 | 
		
		
	
		
			
			| 
				934
			 | 
			
				
			 | 
			
			
				
				-            print('SceneControl: Error. Node %s. Cannot set value on knob: %s') % (n.name(), element) 
			 | 
		
		
	
		
			
			| 
				935
			 | 
			
				
			 | 
			
			
				
				-        try: 
			 | 
		
		
	
		
			
			| 
				936
			 | 
			
				
			 | 
			
			
				
				-            n.knobs()['subtask'].setValue(subtask) 
			 | 
		
		
	
		
			
			| 
				937
			 | 
			
				
			 | 
			
			
				
				-        except: 
			 | 
		
		
	
		
			
			| 
				938
			 | 
			
				
			 | 
			
			
				
				-            print('SceneControl: Error. Node %s. Cannot set value on knob: %s') % (n.name(), subtask) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				936
			 | 
			
			
				
				+def removeKellerTab(): 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				937
			 | 
			
			
				
				+    # get all reads 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				938
			 | 
			
			
				
				+    nodes = [node for node in nuke.selectedNodes() if node.Class() == 'Write'] 
			 | 
		
		
	
		
			
			| 
				939
			 | 
			
				939
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				940
			 | 
			
			
				
				+    if len(nodes) >0: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				941
			 | 
			
			
				
				+        for n in nodes: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				942
			 | 
			
			
				
				+            knobs = n.knobs() 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				943
			 | 
			
			
				
				+            # save config 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				944
			 | 
			
			
				
				+            try: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				945
			 | 
			
			
				
				+                info = knobs['info'].value() 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				946
			 | 
			
			
				
				+                element = knobs['element'].value() 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				947
			 | 
			
			
				
				+                subtask = knobs['subtask'].value() 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				948
			 | 
			
			
				
				+                ignore = knobs['ignore'].value() 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				949
			 | 
			
			
				
				+            except: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				950
			 | 
			
			
				
				+                pass 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				951
			 | 
			
			
				
				+            for c in KELLERTABKNOBS: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				952
			 | 
			
			
				
				+                try: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				953
			 | 
			
			
				
				+                    n.removeKnob(knobs[c]) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				954
			 | 
			
			
				
				+                except: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				955
			 | 
			
			
				
				+                    pass 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				956
			 | 
			
			
				
				+    else: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				957
			 | 
			
			
				
				+        pass 
			 | 
		
		
	
		
			
			| 
				940
			 | 
			
				958
			 | 
			
			
				
				     return 
			 | 
		
		
	
		
			
			| 
				941
			 | 
			
				959
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				942
			 | 
			
				960
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -956,7 +974,7 @@ def refresh_read_nodes(): 
			 | 
		
		
	
		
			
			| 
				956
			 | 
			
				974
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				957
			 | 
			
				975
			 | 
			
			
				
				 def autoconnect_layers(node): 
			 | 
		
		
	
		
			
			| 
				958
			 | 
			
				976
			 | 
			
			
				
				     n = nuke.thisNode() 
			 | 
		
		
	
		
			
			| 
				959
			 | 
			
				
			 | 
			
			
				
				-    nu = n["layerNum"].getValue() 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				977
			 | 
			
			
				
				+    nu = n['layerNum'].getValue() 
			 | 
		
		
	
		
			
			| 
				960
			 | 
			
				978
			 | 
			
			
				
				     num = int(nu) 
			 | 
		
		
	
		
			
			| 
				961
			 | 
			
				979
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				962
			 | 
			
				980
			 | 
			
			
				
				     for i in range(1, num + 1): 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -1055,11 +1073,11 @@ def set_shot(): 
			 | 
		
		
	
		
			
			| 
				1055
			 | 
			
				1073
			 | 
			
			
				
				 def createCustomWrite(n): 
			 | 
		
		
	
		
			
			| 
				1056
			 | 
			
				1074
			 | 
			
			
				
				     # Task 
			 | 
		
		
	
		
			
			| 
				1057
			 | 
			
				1075
			 | 
			
			
				
				     ''' 
			 | 
		
		
	
		
			
			| 
				1058
			 | 
			
				
			 | 
			
			
				
				-    taskList = ("comp",) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1076
			 | 
			
			
				
				+    taskList = ('comp',) 
			 | 
		
		
	
		
			
			| 
				1059
			 | 
			
				1077
			 | 
			
			
				
				     try: 
			 | 
		
		
	
		
			
			| 
				1060
			 | 
			
				1078
			 | 
			
			
				
				         taskList = sceneControl.kenvReloadTasks() 
			 | 
		
		
	
		
			
			| 
				1061
			 | 
			
				1079
			 | 
			
			
				
				     except: 
			 | 
		
		
	
		
			
			| 
				1062
			 | 
			
				
			 | 
			
			
				
				-        print("Our_Write: Error. Cannot call sceneControl.kenvReloadTasks()") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1080
			 | 
			
			
				
				+        print('Our_Write: Error. Cannot call sceneControl.kenvReloadTasks()') 
			 | 
		
		
	
		
			
			| 
				1063
			 | 
			
				1081
			 | 
			
			
				
				         pass 
			 | 
		
		
	
		
			
			| 
				1064
			 | 
			
				1082
			 | 
			
			
				
				     ''' 
			 | 
		
		
	
		
			
			| 
				1065
			 | 
			
				1083
			 | 
			
			
				
				     try: 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -1072,7 +1090,7 @@ def createCustomWrite(n): 
			 | 
		
		
	
		
			
			| 
				1072
			 | 
			
				1090
			 | 
			
			
				
				         # already existing 
			 | 
		
		
	
		
			
			| 
				1073
			 | 
			
				1091
			 | 
			
			
				
				         return 
			 | 
		
		
	
		
			
			| 
				1074
			 | 
			
				1092
			 | 
			
			
				
				     # create tab 
			 | 
		
		
	
		
			
			| 
				1075
			 | 
			
				
			 | 
			
			
				
				-    print("Our_Write: Info. Creating KellerTab") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1093
			 | 
			
			
				
				+    print('Our_Write: Info. Creating KellerTab') 
			 | 
		
		
	
		
			
			| 
				1076
			 | 
			
				1094
			 | 
			
			
				
				     k = nuke.Tab_Knob('keller', 'Keller') 
			 | 
		
		
	
		
			
			| 
				1077
			 | 
			
				1095
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				1078
			 | 
			
				1096
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -1115,35 +1133,35 @@ def createCustomWrite(n): 
			 | 
		
		
	
		
			
			| 
				1115
			 | 
			
				1133
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1116
			 | 
			
				1134
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1117
			 | 
			
				1135
			 | 
			
			
				
				     # _______________________________________________________________ 
			 | 
		
		
	
		
			
			| 
				1118
			 | 
			
				
			 | 
			
			
				
				-    k = nuke.Text_Knob("divider1", "") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1136
			 | 
			
			
				
				+    k = nuke.Text_Knob('divider1', '') 
			 | 
		
		
	
		
			
			| 
				1119
			 | 
			
				1137
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				1120
			 | 
			
				1138
			 | 
			
			
				
				     # _______________________________________________________________ 
			 | 
		
		
	
		
			
			| 
				1121
			 | 
			
				1139
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1122
			 | 
			
				1140
			 | 
			
			
				
				     # ignore 
			 | 
		
		
	
		
			
			| 
				1123
			 | 
			
				
			 | 
			
			
				
				-    k = nuke.Boolean_Knob("ignore", "ignore in sceneControl") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1141
			 | 
			
			
				
				+    k = nuke.Boolean_Knob('ignore', 'ignore in sceneControl') 
			 | 
		
		
	
		
			
			| 
				1124
			 | 
			
				1142
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				1125
			 | 
			
				
			 | 
			
			
				
				-    n.knob("ignore").setValue(0) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1143
			 | 
			
			
				
				+    n.knob('ignore').setValue(0) 
			 | 
		
		
	
		
			
			| 
				1126
			 | 
			
				1144
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1127
			 | 
			
				1145
			 | 
			
			
				
				     # _______________________________________________________________ 
			 | 
		
		
	
		
			
			| 
				1128
			 | 
			
				
			 | 
			
			
				
				-    k = nuke.Text_Knob("divider2", "") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1146
			 | 
			
			
				
				+    k = nuke.Text_Knob('divider2', '') 
			 | 
		
		
	
		
			
			| 
				1129
			 | 
			
				1147
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				1130
			 | 
			
				1148
			 | 
			
			
				
				     # _______________________________________________________________ 
			 | 
		
		
	
		
			
			| 
				1131
			 | 
			
				1149
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1132
			 | 
			
				1150
			 | 
			
			
				
				     # play in new rv 
			 | 
		
		
	
		
			
			| 
				1133
			 | 
			
				
			 | 
			
			
				
				-    k = nuke.PyScript_Knob("playinrv", "Play in RV", "playInRV.playInRV(nuke.thisNode(),0)") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1151
			 | 
			
			
				
				+    k = nuke.PyScript_Knob('playinrv', 'Play in RV', 'playInRV.playInRV(nuke.thisNode(),0)') 
			 | 
		
		
	
		
			
			| 
				1134
			 | 
			
				1152
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				1135
			 | 
			
				
			 | 
			
			
				
				-    n.knob("playinrv").setTooltip("Opens new instance of RV") 
			 | 
		
		
	
		
			
			| 
				1136
			 | 
			
				
			 | 
			
			
				
				-    n.knob("playinrv").setFlag(nuke.STARTLINE) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1153
			 | 
			
			
				
				+    n.knob('playinrv').setTooltip('Opens new instance of RV') 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1154
			 | 
			
			
				
				+    n.knob('playinrv').setFlag(nuke.STARTLINE) 
			 | 
		
		
	
		
			
			| 
				1137
			 | 
			
				1155
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1138
			 | 
			
				1156
			 | 
			
			
				
				     # push to rv 
			 | 
		
		
	
		
			
			| 
				1139
			 | 
			
				
			 | 
			
			
				
				-    k = nuke.PyScript_Knob("pushtorv", "Push to RV", "playInRV.playInRV(nuke.thisNode(),1)") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1157
			 | 
			
			
				
				+    k = nuke.PyScript_Knob('pushtorv', 'Push to RV', 'playInRV.playInRV(nuke.thisNode(),1)') 
			 | 
		
		
	
		
			
			| 
				1140
			 | 
			
				1158
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				1141
			 | 
			
				
			 | 
			
			
				
				-    n.knob("pushtorv").setTooltip("Push to tagged RV. Will open RV and uses this instance to directly push sequences.") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1159
			 | 
			
			
				
				+    n.knob('pushtorv').setTooltip('Push to tagged RV. Will open RV and uses this instance to directly push sequences.') 
			 | 
		
		
	
		
			
			| 
				1142
			 | 
			
				1160
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1143
			 | 
			
				1161
			 | 
			
			
				
				     # push to rv / append 
			 | 
		
		
	
		
			
			| 
				1144
			 | 
			
				
			 | 
			
			
				
				-    k = nuke.PyScript_Knob("pushtorvappend", "Push to RV (append)", "playInRV.playInRV(nuke.thisNode(),2)") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1162
			 | 
			
			
				
				+    k = nuke.PyScript_Knob('pushtorvappend', 'Push to RV (append)', 'playInRV.playInRV(nuke.thisNode(),2)') 
			 | 
		
		
	
		
			
			| 
				1145
			 | 
			
				1163
			 | 
			
			
				
				     n.addKnob(k) 
			 | 
		
		
	
		
			
			| 
				1146
			 | 
			
				
			 | 
			
			
				
				-    n.knob("pushtorvappend").setTooltip("Push to RV and append to existing sources") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1164
			 | 
			
			
				
				+    n.knob('pushtorvappend').setTooltip('Push to RV and append to existing sources') 
			 | 
		
		
	
		
			
			| 
				1147
			 | 
			
				1165
			 | 
			
			
				
				     n.knob("pushtorvappend").clearFlag(nuke.STARTLINE) 
			 | 
		
		
	
		
			
			| 
				1148
			 | 
			
				1166
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1149
			 | 
			
				1167
			 | 
			
			
				
				     k = nuke.Boolean_Knob("useshotenv", "use shot env") 
			 |