Trees | Indices | Help |
|
---|
|
1 # Copyright (c) 2009 The Foundry Visionmongers Ltd. All Rights Reserved. 2 3 import sys 4 import nuke 5 import pyui 6 7 __panels = dict() 8 1113 del __panels[id]1416 try: 17 return __panels[id]() 18 except: 19 print "Can't restore panel '", id, "' because it hasn't been registered." 20 return None21 2426143 144 15228 pyui.Dialog.__init__( self, title, id, scrollable ) 29 self.__node = nuke.PanelNode() 30 self.__widget = None 31 self.__openTabGroups = 0 32 self.okButton = None 33 self.cancelButton = None 34 self._isModalDialog = False3537 nuke.addKnobChanged(PythonPanelKnobChanged, args = self, nodeClass = 'PanelNode', node = self.__node)3840 nuke.removeKnobChanged(PythonPanelKnobChanged, args = self, nodeClass = 'PanelNode', node = self.__node)4143 if type(knob) == nuke.BeginTabGroup_Knob: 44 self.__openTabGroups += 1 45 elif type(knob) == nuke.EndTabGroup_Knob: 46 self.__openTabGroups -= 1 47 elif type(knob) == nuke.Tab_Knob and self.__openTabGroups <= 0: 48 self.addKnob( nuke.BeginTabGroup_Knob() ) 49 50 self.__node.addKnob( knob ) 51 knob.setFlag( nuke.NO_UNDO | nuke.NO_ANIMATION )5254 if type(knob) == nuke.BeginTabGroup_Knob: 55 self.__openTabGroups -= 1 56 elif type(knob) == nuke.EndTabGroup_Knob: 57 self.__openTabGroups += 1 58 59 self.__node.removeKnob( knob )6062 return self.__node.knobs()63 6668 return self.__node.readKnobs( s )6971 self.knobChanged(knob) 72 if knob == self.okButton: 73 self.finishModalDialog( True ) 74 elif knob == self.cancelButton: 75 self.finishModalDialog( False )76 79 8385 self.finishModalDialog( True )8688 self.finishModalDialog( False )8991 while self.__openTabGroups > 0: 92 self.addKnob(nuke.EndTabGroup_Knob()) 93 if self.__widget == None: 94 self.__widget = self.__node.createWidget( self ) 95 self.add( self.__widget, 0, 0, 1, 3 )96 101 104106 self.__modalResult = None; 107 self._isModalDialog = True 108 if self.okButton == None: 109 while self.__openTabGroups > 0: 110 self.addKnob(nuke.EndTabGroup_Knob()) 111 self.okButton = nuke.Script_Knob( "OK" ) 112 self.addKnob( self.okButton ) 113 self.okButton.setFlag( nuke.STARTLINE ) 114 self.cancelButton = nuke.Script_Knob( "Cancel" ) 115 self.addKnob( self.cancelButton ) 116 if defaultKnobText == "": 117 defaultKnobText = self.okButton.name() 118 self.showModal(defaultKnobText) 119 return self.__modalResult120122 self.addCallback() 123 self.create() 124 super(PythonPanel, self).showModal(defaultKnobText) 125 self.removeCallback()126128 self.create() 129 if pane != None: 130 pane.add( self ) 131 elif nuke.thisPane() != None: 132 nuke.thisPane().add( self ) 133 self.addCallback() 134 return self135 139154 """registerWidgetAsPanel(widget, name, id, create) -> PythonPanel 155 156 Wraps and registers a widget to be used in a Nuke panel. 157 158 widget - should be a string of the class for the widget 159 name - is is the name as it will appear on the Pane menu 160 id - should the the unique ID for this widget panel 161 create - if this is set to true a new NukePanel will be returned that wraps this widget 162 163 Example ( using PyQt ) 164 165 import nuke 166 import PyQt4.QtCore as QtCore 167 import PyQt4.QtGui as QtGui 168 from nukescripts import panels 169 170 class NukeTestWindow(QtGui.QWidget): 171 def __init__(self, parent=None): 172 QtGui.QWidget.__init__(self, parent) 173 self.setLayout( QtGui.QVBoxLayout() ) 174 self.myTable = QtGui.QTableWidget( ) 175 self.myTable.header = ['Date', 'Files', 'Size', 'Path' ] 176 self.myTable.size = [ 75, 375, 85, 600 ] 177 self.layout().addWidget( self.myTable ) 178 179 nukescripts.registerWidgetAsPanel('NukeTestWindow', 'NukeTestWindow', 'uk.co.thefoundry.NukeTestWindow' ) 180 181 """ 182 183 184 class Panel( PythonPanel ): 185 186 def __init__(self, widget, name, id): 187 PythonPanel.__init__(self, name, id ) 188 self.customKnob = nuke.PyCustom_Knob( "web", "", "__import__('nukescripts').panels.WidgetKnob(" + widget + ")" ) 189 self.addKnob( self.customKnob )190 191 def addPanel(): 192 return Panel( widget, name, id ).addToPane() 193 194 menu = nuke.menu('Pane') 195 menu.addCommand( name, addPanel) 196 registerPanel( id, addPanel ) 197 198 if ( create ): 199 return Panel( widget, name, id ) 200 else: 201 return None 202
Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Sun Jul 17 22:06:14 2011 | http://epydoc.sourceforge.net |