On Nov 7, 2013, at 1:56 PM, Ivan Busquets <[email protected]> wrote:
> Hi Rich, > > Looking at the code above, my guess is that an active Viewer Window can't be > resolved by the time your panel is trying to open. > > "self.current_view = nuke.activeViewer().view()" > > Will error out if nuke.activeViewer() is None, and therefore the rest of your > panel's initialization will never be executed. Ivan — Thanks for responding. That’s kind of what I figured, too. > > You might want to wrap that around to handle cases where activeViewer > resolves to None, or get the information you need from somewhere else. I’m going see if I can figure out a later point in my script to get the current view — hopefully, after it’s available — and set the knob value, if that’s even possible… Thanks, Rich > > Hope that helps. > > > > On Thu, Nov 7, 2013 at 8:52 AM, Richard Bobo <[email protected]> wrote: > I need to amend my email and correct some erroneous information… > > —— First of all, setting the knob value to a string, like ‘foobar’, *does* > work! > ...Not sure what I was doing that made the test not work before, but it does > now…. ~(8^P > > —— Secondly, what does *not* work is setting the knob value to the result of > a function. What I am actually trying to do is set the knob’s initial value > to nuke.activeViewer().view(). The result is a string, but when recalling the > Nuke script with a registered panel - the panel does not show. It does not > matter if I set the value beforehand, either. I.e., if I do something like > this: > > self.current_view = nuke.activeViewer().view() > …then… > self.partStartsWith_knob.setValue(self.current_view) > > —— That will work fine when initially creating the tabbed panel - but fails > to show anything when the script is saved and reloaded. > > —— So, here’s a better test that shows the problem: > > import nuke > import nukescripts > class testpanel( nukescripts.PythonPanel ): > def __init__(self): > # Get the view name and assign it... > self.current_view = nuke.activeViewer().view() > nukescripts.PythonPanel.__init__(self, 'View Selector', > 'com.richbobo.testpanel') > self.partStartsWith_knob = nuke.String_Knob('startswith', 'View Name > - Starts With :') > self.addKnob(self.partStartsWith_knob) > # Set the initial view name value to the knob... > self.partStartsWith_knob.setValue(self.current_view) > > —— Sorry for the confusion! > > Rich > > > On Nov 7, 2013, at 10:58 AM, Richard Bobo <[email protected]> wrote: > >> OK, here's an interesting problem... Well, it's "interesting" in the sense >> that I can't figure out how to solve it!! (8^\ >> >> ---- When I add a custom PythonPanel to the Pane menu, create it as a tab, >> save the Nuke script and recall it - the panel does not appear! >> >> ---- The thing that is causing it to *not* appear is assigning an initial >> value to the knob. If I don't assign an initial value, the panel appears in >> the tab, as expected. This happens with more than one type of knob, by the >> way. It seems to be a general problem... >> >> ---- For debugging purposes, I am making a simple PythonPanel and adding a >> String_Knob to it. If I comment out the last .setValue line, the tabbed >> panel saves and restores with the Nuke script without a problem. If I assign >> a default value, it doesn't. >> >> ---- Here's the test class: >> import nuke >> import nukescripts >> class testpanel( nukescripts.PythonPanel ): >> def __init__(self): >> nukescripts.PythonPanel.__init__(self, 'View Selector', >> 'com.richbobo.testpanel') >> self.partStartsWith_knob = nuke.String_Knob('startswith', 'View Name >> - Starts With :') >> self.addKnob(self.partStartsWith_knob) >> self.partStartsWith_knob.setValue('foobar') >> >> ---- Here's what I have in my menu.py: >> import test_panel >> def addtestpanel(): >> global testpanel >> testpanel = test_panel.testpanel() >> testpanel.addToPane() >> return testpanel >> nuke.menu('Pane').addCommand( 'testpanel', addtestpanel ) >> nukescripts.registerPanel( 'com.richbobo.testpanel', addtestpanel ) >> >> --- Note that there are no errors reported when the panel does not appear. >> >> It seems that assigning initial values to the knobs of a registered panels >> somehow interrupts the mechanism that causes the panel to show. How do I >> make sure to insert initial values in the knobs - without causing the >> registered PythonPanel to not show?!? >> >> >> Thanks for any help, >> Rich >> >> Rich Bobo >> Senior VFX Compositor >> Email: [email protected] >> Mobile: 248.840.2665 >> Web: http://richbobo.com > > > _______________________________________________ > Nuke-python mailing list > [email protected], http://forums.thefoundry.co.uk/ > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > > > _______________________________________________ > Nuke-python mailing list > [email protected], http://forums.thefoundry.co.uk/ > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
_______________________________________________ Nuke-python mailing list [email protected], http://forums.thefoundry.co.uk/ http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
