Nathan, It seems that, no matter what I do, the only view that is available before the panel is created and tabbed is the hero_view. All of the methods I've tried work fine - but only after the panel is created… So, no luck. (8^\
Thanks, Rich On Nov 7, 2013, at 4:25 PM, Nathan Rusch <[email protected]> wrote: > Since it sounds like you can access Root knob values at the point your value > setup code is running, you could always pull the script views directly off > the Root’s 'views' knob. > > views = [line.split()[0] for line in > nuke.root()['views'].toScript().splitlines()] > > -Nathan > > > From: Richard Bobo > Sent: Thursday, November 07, 2013 12:55 PM > To: Nuke Python discussion > Subject: Re: [Nuke-python] Registered PythonPanel not appearing when > knobsareassigned initial values... > > ...All right - going on the theory that there is no way to get the list of > all the views *before* my registered panel is restored - I have made a > workaround. My panel actually already had a “Clear Filters” button that, > amongst other things, gets a new list of filtered view names when it’s > pressed. So,... I put a default string message in my type-in knobs that says, > 'PRESS THE “Clear Filters” BUTTON TO INITIALIZE.’ Hahaha! So, it’s kludgey. > ;^) Anyway, my panel is restoring properly - and I just have to tell the > user to hit a button to get started. No big deal - just a little ugly… But, > it works. > > Thanks for the help! And, if someone does think of a way to get the list of > all of the views before the panel is restored, so I can populate the > pulldowns, please let me know! 8^) > > Thanks, > Rich > > > On Nov 7, 2013, at 3:19 PM, Richard Bobo <[email protected]> wrote: > >> I am now successfully restoring the panel with the script, but I only get >> the hero view in my pulldown menu - even though I am using nuke.views() to >> initialize the pulldown. If I close the panel and reopen it, I get all of >> the listed views. Any way to find those views when restoring the panel on >> the script loading? Or, is it just an order of operation problem that I >> won’t be able to workaround?? >> >> Thanks, >> Rich >> >> On Nov 7, 2013, at 3:11 PM, Richard Bobo <[email protected]> wrote: >> >>> >>> >>> 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 >> >> >> _______________________________________________ >> 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
