On Nov 7, 2013, at 2:33 PM, Nathan Rusch <[email protected]> wrote:
> Viewers don’t remember what view they were set to when the script is saved; > they will always open to the script’s hero view, so you can just check > nuke.root()['hero_view'].value() for your initial value. Hmm… I see. Thinking about some other approaches… I’m trying to populate some pulldowns with the list of views, but when the panel and knobs get created - as the script loads - the views aren’t available! Hmm… maybe I just won’t be able to register this panel. Maybe it will always have to be created *after* the script is opened…?? (8^\ Rich > > -Nathan > > > From: Richard Bobo > Sent: Thursday, November 07, 2013 11:24 AM > To: Nuke Python discussion > Subject: Re: [Nuke-python] Registered PythonPanel not appearing when knobs > areassigned initial values... > > > > 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 > _______________________________________________ > 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
