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

Reply via email to