Sfoglia il codice sorgente

2021-07-12

sceneControl: added 'removeKellerTab' function.
Martin Sächsinger 3 anni fa
parent
commit
05f7eceaf9
1 ha cambiato i file con 136 aggiunte e 118 eliminazioni
  1. 136
    118
      pythonpluginsUI/sceneControl/sceneControl.py

+ 136
- 118
pythonpluginsUI/sceneControl/sceneControl.py Vedi File

39
 WRITENODE_VERSION = 1.0
39
 WRITENODE_VERSION = 1.0
40
 USE_ENV_PROJECT_ROOT = 1
40
 USE_ENV_PROJECT_ROOT = 1
41
 WRITENODE_LABEL = 'exr compression: [value compression]'
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
 # globals
48
 # globals
44
 sequenceGlobal=''
49
 sequenceGlobal=''
51
         self.menu = nuke.menu('Nuke')
56
         self.menu = nuke.menu('Nuke')
52
         m = self.menu.addMenu('SceneControl')
57
         m = self.menu.addMenu('SceneControl')
53
         m.addCommand('SceneControl', 'import sceneControl; sceneControl.createSceneControl()',shortcut='F12')
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
         m.addCommand('Reload Config', 'import sceneControl; sceneControl.kenvDelete()')
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
         m.addCommand('Helpers/Write/Ignore selected Nodes', 'import sceneControl; sceneControl.setIgnoreFlag(True)')
67
         m.addCommand('Helpers/Write/Ignore selected Nodes', 'import sceneControl; sceneControl.setIgnoreFlag(True)')
63
         m.addCommand('Helpers/Write/Manage selected Nodes','import sceneControl; sceneControl.setIgnoreFlag(False)')
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
         #internal
73
         #internal
68
         m.addCommand('Debug/Enable Debug Mode', 'import sceneControl; sceneControl.setDebug(True)')
74
         m.addCommand('Debug/Enable Debug Mode', 'import sceneControl; sceneControl.setDebug(True)')
99
         self.menu.removeItem('Helpers/Write/Manage selected Nodes')
105
         self.menu.removeItem('Helpers/Write/Manage selected Nodes')
100
         self.menu.removeItem('Helpers/Write/Set colorspace on Nodes')
106
         self.menu.removeItem('Helpers/Write/Set colorspace on Nodes')
101
         self.menu.removeItem('Helpers/Write/Update Write Nodes Tab')
107
         self.menu.removeItem('Helpers/Write/Update Write Nodes Tab')
108
+        self.menu.removeItem('Helpers/Write/Remove Write Nodes Tab')
102
         #
109
         #
103
         self.menu.removeItem('Debug/Enable Debug Mode')
110
         self.menu.removeItem('Debug/Enable Debug Mode')
104
         self.menu.removeItem('Debug/Disable Debug Mode')
111
         self.menu.removeItem('Debug/Disable Debug Mode')
162
             hexColour = int('%02x%02x%02x%02x' % (1 * 255, 0.666 * 255, 0.266 * 255, 1), 16)
169
             hexColour = int('%02x%02x%02x%02x' % (1 * 255, 0.666 * 255, 0.266 * 255, 1), 16)
163
             n['tile_color'].setValue(hexColour)
170
             n['tile_color'].setValue(hexColour)
164
 
171
 
165
-
166
 def onCreateWrite():
172
 def onCreateWrite():
167
     n = nuke.thisNode()
173
     n = nuke.thisNode()
168
     createCustomWrite(n)
174
     createCustomWrite(n)
169
     return
175
     return
170
 
176
 
171
-
172
 def onDestroy():
177
 def onDestroy():
173
     print('SceneControl: Info. Nice meeting you. Removing Kenv now...')
178
     print('SceneControl: Info. Nice meeting you. Removing Kenv now...')
174
     try:
179
     try:
179
 
184
 
180
 # SceneControl
185
 # SceneControl
181
 def getSceneControl():
186
 def getSceneControl():
182
-    c = nuke.exists("sceneCtrl")
187
+    c = nuke.exists('sceneCtrl')
183
     if c:
188
     if c:
184
         sc = nuke.toNode('sceneCtrl')
189
         sc = nuke.toNode('sceneCtrl')
185
     else:
190
     else:
225
 
230
 
226
 
231
 
227
 def createSceneControlUI():
232
 def createSceneControlUI():
228
-    n = nuke.Node("NoOp")
229
-    n.setName("sceneCtrl")
233
+    n = nuke.Node('NoOp')
234
+    n.setName('sceneCtrl')
230
     n['hide_input'].setValue(True)
235
     n['hide_input'].setValue(True)
231
 
236
 
232
     # % (r * 255, g * 255, b * 255, 1), 16): change r g and b to your liking
237
     # % (r * 255, g * 255, b * 255, 1), 16): change r g and b to your liking
233
     hexColour = int('%02x%02x%02x%02x' % (0.2 * 255, 0.478 * 255, 0.647 * 255, 1), 16)
238
     hexColour = int('%02x%02x%02x%02x' % (0.2 * 255, 0.478 * 255, 0.647 * 255, 1), 16)
234
     n['tile_color'].setValue(hexColour)
239
     n['tile_color'].setValue(hexColour)
235
-    n['label'].setValue("_\n__")
240
+    n['label'].setValue('_\n__')
236
 
241
 
237
     # ###########################
242
     # ###########################
238
     # ---------------------------
243
     # ---------------------------
243
     k = nuke.Tab_Knob('main', 'Main')
248
     k = nuke.Tab_Knob('main', 'Main')
244
     n.addKnob(k)
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
     # Project
251
     # Project
253
     k = nuke.String_Knob('project', 'Project')
252
     k = nuke.String_Knob('project', 'Project')
254
     k.setTooltip('Project Shortname')
253
     k.setTooltip('Project Shortname')
274
     n.knob('element').clearFlag(nuke.STARTLINE)
273
     n.knob('element').clearFlag(nuke.STARTLINE)
275
 
274
 
276
     # Update from KEnv
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
     n.addKnob(k)
278
     n.addKnob(k)
280
 
279
 
281
     # Season
280
     # Season
291
     n.knob('episode').setVisible(False)
290
     n.knob('episode').setVisible(False)
292
 
291
 
293
     # _______________________________________________________________
292
     # _______________________________________________________________
294
-    k = nuke.Text_Knob("divider1", "")
293
+    k = nuke.Text_Knob('divider1', '')
295
     n.addKnob(k)
294
     n.addKnob(k)
296
     # _______________________________________________________________
295
     # _______________________________________________________________
297
 
296
 
298
     # Sequence
297
     # Sequence
299
     k = nuke.String_Knob('sequence', 'Seq')
298
     k = nuke.String_Knob('sequence', 'Seq')
300
     k.setTooltip(
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
     n.addKnob(k)
301
     n.addKnob(k)
303
     n.knob('sequence').setValue(seqDef)
302
     n.knob('sequence').setValue(seqDef)
304
 
303
 
305
     # Shot
304
     # Shot
306
     k = nuke.String_Knob('shot', 'Shot')
305
     k = nuke.String_Knob('shot', 'Shot')
307
     k.setTooltip(
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
     n.addKnob(k)
308
     n.addKnob(k)
310
     n.knob('shot').setValue(shotDef)
309
     n.knob('shot').setValue(shotDef)
311
     n.knob('shot').clearFlag(nuke.STARTLINE)
310
     n.knob('shot').clearFlag(nuke.STARTLINE)
353
     n.knob('user').clearFlag(nuke.STARTLINE)
352
     n.knob('user').clearFlag(nuke.STARTLINE)
354
 
353
 
355
     # Divider _______________________________________________________________
354
     # Divider _______________________________________________________________
356
-    k = nuke.Text_Knob("divider2", "")
355
+    k = nuke.Text_Knob('divider2', '')
357
     n.addKnob(k)
356
     n.addKnob(k)
358
     # _______________________________________________________________
357
     # _______________________________________________________________
359
 
358
 
380
     k.setTooltip('Save file Preview.')
379
     k.setTooltip('Save file Preview.')
381
 
380
 
382
     #  Divider _______________________________________________________________
381
     #  Divider _______________________________________________________________
383
-    k = nuke.Text_Knob("divider3", "")
382
+    k = nuke.Text_Knob('divider3', '')
384
     n.addKnob(k)
383
     n.addKnob(k)
385
     # _______________________________________________________________
384
     # _______________________________________________________________
386
 
385
 
412
     n.knob('fEnd').clearFlag(nuke.STARTLINE)
411
     n.knob('fEnd').clearFlag(nuke.STARTLINE)
413
 
412
 
414
     # Button Get Framerange (ftrack)
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
     n.addKnob(k)
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
     # Button Set Framerange
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
     n.addKnob(k)
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
     # Comment
424
     # Comment
426
-    k = nuke.Multiline_Eval_String_Knob("comment", "Comment")
425
+    k = nuke.Multiline_Eval_String_Knob('comment', 'Comment')
427
     n.addKnob(k)
426
     n.addKnob(k)
428
-    n.knob("comment").setValue(comment)
427
+    n.knob('comment').setValue(comment)
429
 
428
 
430
     # Update / publish
429
     # Update / publish
431
     if UPDATE_TOOLSET:
430
     if UPDATE_TOOLSET:
432
         # Button update Layer
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
         n.addKnob(k)
433
         n.addKnob(k)
435
-        n.knob("update_layer").setFlag(nuke.STARTLINE)
434
+        n.knob('update_layer').setFlag(nuke.STARTLINE)
436
     
435
     
437
         # Button connect all Layers
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
         n.addKnob(k)
438
         n.addKnob(k)
440
-        n.knob("autoconnect_layers").setFlag(nuke.STARTLINE)
439
+        n.knob('autoconnect_layers').setFlag(nuke.STARTLINE)
441
     
440
     
442
         # Button remove all layers
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
         n.addKnob(k)
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
         # Button delete all reads
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
         n.addKnob(k)
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
         # Button publish Shot
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
         n.addKnob(k)
456
         n.addKnob(k)
458
-        n.knob("publish_shot").setFlag(nuke.STARTLINE)
457
+        n.knob('publish_shot').setFlag(nuke.STARTLINE)
459
 
458
 
460
     # invisible helpers
459
     # invisible helpers
461
     # helper
460
     # helper
462
-    k = nuke.Int_Knob("layerNum", "Slots")
461
+    k = nuke.Int_Knob('layerNum', 'Slots')
463
     n.addKnob(k)
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
     # used for resolving expressions
466
     # used for resolving expressions
468
-    k = nuke.EvalString_Knob("eval_helper", "eval_helper")
467
+    k = nuke.EvalString_Knob('eval_helper', 'eval_helper')
469
     n.addKnob(k)
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
     # for debug disable above
471
     # for debug disable above
473
 
472
 
474
-    k = nuke.Boolean_Knob("stereoToggle", "Stereo Toggle")
473
+    k = nuke.Boolean_Knob('stereoToggle', 'Stereo Toggle')
475
     n.addKnob(k)
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
     # used for resolving expressions
478
     # used for resolving expressions
480
-    k = nuke.EvalString_Knob("precomp_output", "Precomp Output")
479
+    k = nuke.EvalString_Knob('precomp_output', 'Precomp Output')
481
     n.addKnob(k)
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
     # for debug disable above
483
     # for debug disable above
485
 
484
 
486
-    k = nuke.Boolean_Knob("debug", "Debug")
485
+    k = nuke.Boolean_Knob('debug', 'Debug')
487
     n.addKnob(k)
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
     # end helper
490
     # end helper
492
 
491
 
574
     k = sceneControl.knobs()
573
     k = sceneControl.knobs()
575
     kenvCheck()
574
     kenvCheck()
576
     # debug
575
     # debug
577
-    if k["debug"].getValue():
576
+    if k['debug'].getValue():
578
         print(('SceneControl: Debug. WriteTask: %s, WriteElement: %s, WriteInfo: %s') % (writeTask, writeElement, writeInfo))
577
         print(('SceneControl: Debug. WriteTask: %s, WriteElement: %s, WriteInfo: %s') % (writeTask, writeElement, writeInfo))
579
 
578
 
580
     # useEnvProjectRoot
579
     # useEnvProjectRoot
587
     if writeTask.lower() == 'scripttask':
586
     if writeTask.lower() == 'scripttask':
588
         # get task from sceneControl and not from the write node
587
         # get task from sceneControl and not from the write node
589
         # sceneControl task
588
         # sceneControl task
590
-        task = k["task"].value()
589
+        task = k['task'].value()
591
         writeTask = task
590
         writeTask = task
592
         # KEnv query
591
         # KEnv query
593
         renderpath = kenvQuery('RENDER_2D_FILE', element=writeElement, task=writeTask, minor_version=None, info=writeInfo, ext=ext, USE_ENV_PROJECTROOT=useEnv)
592
         renderpath = kenvQuery('RENDER_2D_FILE', element=writeElement, task=writeTask, minor_version=None, info=writeInfo, ext=ext, USE_ENV_PROJECTROOT=useEnv)
726
     k = sceneControl.knobs()
725
     k = sceneControl.knobs()
727
     kenvCheck()
726
     kenvCheck()
728
     #debug
727
     #debug
729
-    if k["debug"].getValue():
728
+    if k['debug'].getValue():
730
         print(('SceneControl: Debug. Setting path on: %s') % n.name())
729
         print(('SceneControl: Debug. Setting path on: %s') % n.name())
731
     subtask = n.knob('subtask').value()
730
     subtask = n.knob('subtask').value()
732
     if subtask is None:
731
     if subtask is None:
769
 def setIgnoreFlag(state):
768
 def setIgnoreFlag(state):
770
     s = nuke.selectedNodes()
769
     s = nuke.selectedNodes()
771
     if len(s) == 0:
770
     if len(s) == 0:
772
-        nuke.message("Please select some Nodes first.")
771
+        nuke.message('Please select some Nodes first.')
773
         return
772
         return
774
 
773
 
775
     for n in s:
774
     for n in s:
783
 def setErrorMode():
782
 def setErrorMode():
784
     n = nuke.selectedNodes()
783
     n = nuke.selectedNodes()
785
     if len(n) == 0:
784
     if len(n) == 0:
786
-        nuke.message("Please select some Nodes first.")
785
+        nuke.message('Please select some Nodes first.')
787
         return
786
         return
788
     w = nuke.nodes.Read()
787
     w = nuke.nodes.Read()
789
     onerror = w['on_error'].values()
788
     onerror = w['on_error'].values()
796
 
795
 
797
     sel = nuke.selectedNodes()
796
     sel = nuke.selectedNodes()
798
     for s in sel:
797
     for s in sel:
799
-        if s.Class() == "Read" or s.Class() == "DeepRead":
798
+        if s.Class() == 'Read' or s.Class() == 'DeepRead':
800
             s.knobs()['on_error'].setValue(ret)
799
             s.knobs()['on_error'].setValue(ret)
801
 
800
 
802
 
801
 
803
 def setOcioRole():
802
 def setOcioRole():
804
     n = nuke.selectedNodes()
803
     n = nuke.selectedNodes()
805
     if len(n) == 0:
804
     if len(n) == 0:
806
-        nuke.message("No node(s) selected.")
805
+        nuke.message('No node(s) selected.')
807
 
806
 
808
     # create temporary write node
807
     # create temporary write node
809
     w = nuke.nodes.Write(file_type='exr')
808
     w = nuke.nodes.Write(file_type='exr')
828
     ret = p.value('Colorspace')
827
     ret = p.value('Colorspace')
829
     if ret is not None:
828
     if ret is not None:
830
         for s in n:
829
         for s in n:
831
-            if s.Class() == "Read" or s.Class() == "Write":
830
+            if s.Class() == 'Read' or s.Class() == 'Write':
832
                 s.knobs()['colorspace'].setValue(ret)
831
                 s.knobs()['colorspace'].setValue(ret)
833
 
832
 
834
 
833
 
848
 
847
 
849
 def deselectAll():
848
 def deselectAll():
850
     for each in nuke.allNodes():
849
     for each in nuke.allNodes():
851
-        each.knob("selected").setValue(False)
850
+        each.knob('selected').setValue(False)
852
     return
851
     return
853
 
852
 
854
 
853
 
855
 def getFilename():
854
 def getFilename():
856
-    return nuke.Root()["name"].getValue()
855
+    return nuke.Root()['name'].getValue()
857
 
856
 
858
 
857
 
859
 
858
 
861
     nodes = nuke.allNodes()
860
     nodes = nuke.allNodes()
862
     for n in nodes:
861
     for n in nodes:
863
         if n.Class() == nodeclass:
862
         if n.Class() == nodeclass:
864
-            if n.knob("label").getValue().lower() == nodename.lower():
863
+            if n.knob('label').getValue().lower() == nodename.lower():
865
                 return n
864
                 return n
866
     return None
865
     return None
867
 
866
 
887
     # TODO: more automated update function.
886
     # TODO: more automated update function.
888
     import sceneControl
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
     # save these for reapplying later on
889
     # save these for reapplying later on
896
     saveKnobs = ('info', 'element', 'subtask', 'ignore')
890
     saveKnobs = ('info', 'element', 'subtask', 'ignore')
897
 
891
 
898
     # get all reads
892
     # get all reads
899
     nodes = [node for node in nuke.selectedNodes() if node.Class() == 'Write']
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
             # save config
898
             # save config
908
             try:
899
             try:
909
                 info = knobs['info'].value()
900
                 info = knobs['info'].value()
912
                 ignore = knobs['ignore'].value()
903
                 ignore = knobs['ignore'].value()
913
             except:
904
             except:
914
                 pass
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
             try:
919
             try:
916
-                n.removeKnob(knobs[c])
920
+                n.knobs()['info'].setValue(info)
917
             except:
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
     return
958
     return
941
 
959
 
942
 
960
 
956
 
974
 
957
 def autoconnect_layers(node):
975
 def autoconnect_layers(node):
958
     n = nuke.thisNode()
976
     n = nuke.thisNode()
959
-    nu = n["layerNum"].getValue()
977
+    nu = n['layerNum'].getValue()
960
     num = int(nu)
978
     num = int(nu)
961
 
979
 
962
     for i in range(1, num + 1):
980
     for i in range(1, num + 1):
1055
 def createCustomWrite(n):
1073
 def createCustomWrite(n):
1056
     # Task
1074
     # Task
1057
     '''
1075
     '''
1058
-    taskList = ("comp",)
1076
+    taskList = ('comp',)
1059
     try:
1077
     try:
1060
         taskList = sceneControl.kenvReloadTasks()
1078
         taskList = sceneControl.kenvReloadTasks()
1061
     except:
1079
     except:
1062
-        print("Our_Write: Error. Cannot call sceneControl.kenvReloadTasks()")
1080
+        print('Our_Write: Error. Cannot call sceneControl.kenvReloadTasks()')
1063
         pass
1081
         pass
1064
     '''
1082
     '''
1065
     try:
1083
     try:
1072
         # already existing
1090
         # already existing
1073
         return
1091
         return
1074
     # create tab
1092
     # create tab
1075
-    print("Our_Write: Info. Creating KellerTab")
1093
+    print('Our_Write: Info. Creating KellerTab')
1076
     k = nuke.Tab_Knob('keller', 'Keller')
1094
     k = nuke.Tab_Knob('keller', 'Keller')
1077
     n.addKnob(k)
1095
     n.addKnob(k)
1078
 
1096
 
1115
 
1133
 
1116
 
1134
 
1117
     # _______________________________________________________________
1135
     # _______________________________________________________________
1118
-    k = nuke.Text_Knob("divider1", "")
1136
+    k = nuke.Text_Knob('divider1', '')
1119
     n.addKnob(k)
1137
     n.addKnob(k)
1120
     # _______________________________________________________________
1138
     # _______________________________________________________________
1121
 
1139
 
1122
     # ignore
1140
     # ignore
1123
-    k = nuke.Boolean_Knob("ignore", "ignore in sceneControl")
1141
+    k = nuke.Boolean_Knob('ignore', 'ignore in sceneControl')
1124
     n.addKnob(k)
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
     n.addKnob(k)
1147
     n.addKnob(k)
1130
     # _______________________________________________________________
1148
     # _______________________________________________________________
1131
 
1149
 
1132
     # play in new rv
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
     n.addKnob(k)
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
     # push to rv
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
     n.addKnob(k)
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
     # push to rv / append
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
     n.addKnob(k)
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
     n.knob("pushtorvappend").clearFlag(nuke.STARTLINE)
1165
     n.knob("pushtorvappend").clearFlag(nuke.STARTLINE)
1148
 
1166
 
1149
     k = nuke.Boolean_Knob("useshotenv", "use shot env")
1167
     k = nuke.Boolean_Knob("useshotenv", "use shot env")

Loading…
Annulla
Salva