one more thing regarding user knobs... they do not count to the nodes hash somehow... so catching them being updated either in knob_change or anywhere else is hard. I am adding them to the hash not using append() which works... but maybe you could suggest where i should handle updates from user inputs... OR give us a flag on Op to set to true if we whant user knobs to be handled like regular ones. THanks! jo
On Fri, Jan 23, 2015 at 10:48 AM, Johannes Saam <johannes.s...@gmail.com> wrote: > HEY! > Glad to hear that i have a somewhat safe solution now. I am also thinking > that getting the ID of the last node that is non user would be good but i > have no idea how to archive that on your side.... the invisible close knob > is i think the quickest. I have also just noticed that if you add a color > knob in the manage user knobs menue you can not avoid an additional boolean > that tells nuke if the color wheel is out or not? Is there any way to > either not do this ( as its in the menue for the user also ) or hide that > knob somehow? Any suggestions? > > I am really happy you created this request for us. Thanks! > > I am feeding a custom tool for computation thats all i can tell you. Maybe > we can talk off the list more but i have to get permission. > > I am using complex types by having a manager knob for inputs ( in essence > a TableKnob ) this manages the inputs into the system. For simple types ( > Float bool color ) i want to use the user knobs as they are already known > to users... > > Maybe at one point i can demo it. > > Take care and thank you again! > Jo > > On Fri, Jan 23, 2015 at 1:38 AM, Lucy Wilkes <l...@thefoundry.co.uk> > wrote: > >> Hi Jo, >> >> Thanks for the suggestions. A flag would be nice to have eventually, >> although an invisible closing knob could also work in the interim! I'm not >> aware of any better way to access this information currently than the one >> you have come up with already. >> >> I've created a feature request and added your comments (bug 47362, "NDK >> - Provide a way to identify user knobs", for your reference). If anyone >> else here has any preferences or ideas for how this might work, please let >> us know and I'll add those too. >> >> Out of interest, can you give a bit more background on what you want to >> do with the user knobs once you have identified them? I'm just curious to >> know the use case for this (also it will give more weight to the feature >> request, if we can explain why this is needed!). >> >> Regards, >> Lucy >> >> >> >> On Thu, Jan 22, 2015 at 6:22 PM, Johannes Saam <johannes.s...@gmail.com> >> wrote: >> >>> Thanks for all your thoughts! >>> The good thing about using the last knob of the node that is that all >>> knobs that the user creates should be caught. As they would be id wise >>> after that. What would be cool is either to have a #define in the api that >>> tells me the number of knobs in the node tab ( so i can add that to my >>> knobs and get to the user knobs securely ) or maybe even better introduce a >>> "closing knob" for the node tab that is invisible. So you guys can add >>> whatever knobs to the node tab and we check against this ivisible knob? Of >>> course the best would be a flag on the node that tells me if the knob is >>> user generated or plugin generated... either one would work ... my >>> prerference would be.... 1 Flag ... 2 Invisible closing knob .... 3 #define >>> for the number of knobs in the node tab.... >>> maybe there is something smarter to be done already using the >>> Knob_Callback in knobs() ? u see getLastMadeKnob() and getKnobCount() maybe >>> that could be used / extended? >>> Thanks! >>> Jo >>> >>> On Thu, Jan 22, 2015 at 3:22 AM, Lucy Wilkes <l...@thefoundry.co.uk> >>> wrote: >>> >>>> Although your current solution doesn't use it, I just wanted to point >>>> out another potential issue with looking for the "user" tab, in case it's >>>> useful for the future... >>>> >>>> As well as the "Manage user knobs" interface, users can add new knobs >>>> via python, and in this case they can create their own tabs to add them >>>> into, none of which need be named "User". For instance, try this in Nuke's >>>> script editor: >>>> >>>> b = nuke.createNode("Blur") >>>> >>>> tab1 = nuke.Tab_Knob("MyTab1") >>>> >>>> b.addKnob(tab1) >>>> >>>> k1 = nuke.Int_Knob("Param1") >>>> >>>> b.addKnob(k1) >>>> >>>> tab2 = nuke.Tab_Knob("MyTab2") >>>> >>>> b.addKnob(tab2) >>>> >>>> k2 = nuke.Double_Knob("Param2") >>>> >>>> b.addKnob(k2) >>>> >>>> >>>> You can actually do the same thing via "manage user knobs", by adding a >>>> Tab knob, giving it a name and then adding another knob... It will appear >>>> on the tab you just made. Not sure how common this is in practice, just >>>> thought it might be worth being aware of! >>>> >>>> >>>> Lucy >>>> >>>> >>>> -- >>>> Lucy Wilkes >>>> >>>> Senior Software Engineer >>>> The Foundry >>>> 5 Golden Square, London, W1F 9HT >>>> Tel: +44 (0)20 7479 4350 >>>> Web: www.thefoundry.co.uk >>>> Email: l...@thefoundry.co.uk >>>> >>>> >>>> The Foundry Visionmongers Ltd. >>>> Registered in England and Wales No: 4642027 >>>> >>>> >>>> On Thu, Jan 22, 2015 at 9:25 AM, Frank Harrison <fr...@thefoundry.co.uk >>>> > wrote: >>>> >>>>> The lifetime knob is a new thing, as you mention, and it can also be >>>>> renamed. Using the User tab may be better and more >>>>> back-compatible; although it can be renamed it probably won't, but I do >>>>> know of studios which do. >>>>> >>>>> I think the reason there isn't an API for this is, because of time >>>>> constraints, no-one had time to ensure such an api would be robust in an >>>>> add/remove/shuffle-whilst-iterating scenario. I did look at doing this a >>>>> couple of years ago but there were a couple of other tricky (e.g. not >>>>> solvable between builds) edge cases to address. >>>>> >>>>> Your solution is what I think ended up doing myself, in Python. >>>>> >>>>> F. >>>>> >>>>> On Wednesday, January 21, 2015, Johannes Saam <johannes.s...@gmail.com> >>>>> wrote: >>>>> >>>>>> for the record here is a way to get a list of all user knobs.... the >>>>>> if statement starting the recording of knobs is stable for now but could >>>>>> change in the future so watch out >>>>>> >>>>>> std::vector<DD::Image::Knob*> MyOp::getUserKnobs() const >>>>>> { >>>>>> // the output buffer >>>>>> std::vector<DD::Image::Knob*> userKnobs; >>>>>> >>>>>> // flag if we start recording knobs yet as 'user' knobs >>>>>> bool userStarted = false; >>>>>> >>>>>> // run over all knobs by index >>>>>> for( int i = 0;; i++ ) >>>>>> { >>>>>> // candidate knob >>>>>> DD::Image::Knob * k = DD::Image::Op::knob(i); >>>>>> >>>>>> // valid knob on i >>>>>> if ( k ) >>>>>> { >>>>>> // do not record tab knobs at all >>>>>> if ( strcmp( k->Class(), "Tab_Knob" ) == 0 ) >>>>>> continue; >>>>>> >>>>>> // if we have identified the last knob >>>>>> // in the node tab we start recording >>>>>> // using the User label on a tab is not >>>>>> // safe as the user knobs tab can be renamed >>>>>> if ( userStarted ) >>>>>> { >>>>>> // add a this knob to the result list >>>>>> userKnobs.push_back( k ); >>>>>> } >>>>>> else >>>>>> { >>>>>> // not recording yet, lets see if we reached the last >>>>>> knob >>>>>> // this might change with nuke changing works for >>>>>> nuke9v1 >>>>>> if ( strcmp( k->Class(), "Boolean_Knob" ) == 0 && >>>>>> k->name() == "useLifetime" ) >>>>>> { >>>>>> // from here onwards we record all knobs >>>>>> userStarted = true; >>>>>> } >>>>>> } >>>>>> } >>>>>> else >>>>>> { >>>>>> break; >>>>>> } >>>>>> } // done iterating knobs >>>>>> >>>>>> return userKnobs; >>>>>> } >>>>>> >>>>>> On Tue, Jan 20, 2015 at 3:45 PM, Johannes Saam < >>>>>> johannes.s...@gmail.com> wrote: >>>>>> >>>>>>> Damn thats sucking. What would you suggest then how to access all >>>>>>> the user created knobs? Iterate though all of the knobs and cross the >>>>>>> ones >>>>>>> i know i added off the list?! Of course i create knobs via the API >>>>>>> dynamically so tracking all this is quite a pain. >>>>>>> >>>>>>> I vote for a getUserKnobs function on DD::Image::Op . Anyone? >>>>>>> >>>>>>> Thanks >>>>>>> jo >>>>>>> >>>>>>> On Tue, Jan 20, 2015 at 11:17 AM, Nathan Rusch < >>>>>>> nathan_ru...@hotmail.com> wrote: >>>>>>> >>>>>>>> If you're planning to look the tab up by name, it's worth >>>>>>>> keeping in mind that the "User" tab can be renamed. >>>>>>>> >>>>>>>> -Nathan >>>>>>>> >>>>>>>> >>>>>>>> *From:* Johannes Saam >>>>>>>> *Sent:* Tuesday, January 20, 2015 10:25 AM >>>>>>>> *To:* Nuke plug-in development discussion >>>>>>>> *Subject:* Re: [Nuke-dev] Acessing user knobs >>>>>>>> >>>>>>>> Ok i will have another look. I had no idea i could get an ID for >>>>>>>> the user tab... the NDK docs will help for sure. It would be awesome to >>>>>>>> have a function on Op like std::vector<Knob*> & getUserKnobs(). >>>>>>>> >>>>>>>> again should i be able to get it done i might share it here so we >>>>>>>> have it written down. >>>>>>>> >>>>>>>> Also the user knobs that nuke provides with the ( might need a >>>>>>>> rework?? ) interface are not at all what nuke offers in terms of >>>>>>>> knobbage. >>>>>>>> Is there a way to hack more into it? As in is it a python script we can >>>>>>>> access and enlarge? I am on the fence now to write a c++ version so i >>>>>>>> can >>>>>>>> have more Knobs and then just store them under the user tab myself.... >>>>>>>> i >>>>>>>> keep yous posted. >>>>>>>> >>>>>>>> Thanks! >>>>>>>> JO >>>>>>>> >>>>>>>> On Tue, Jan 20, 2015 at 12:42 AM, Frank Harrison < >>>>>>>> fr...@thefoundry.co.uk> wrote: >>>>>>>> >>>>>>>>> Hey, >>>>>>>>> >>>>>>>>> yes, that is a way. User-Knobs should always be on the "user" tab. >>>>>>>>> >>>>>>>>> This has come up before and I think we said that we'd add some >>>>>>>>> pythonic getter for UserKnobs if we got a few more requests for it. >>>>>>>>> >>>>>>>>> I think, but don't quote me on this, that you can get the tab-idx >>>>>>>>> and iterate from there. Perhaps there's something on Nukepedia >>>>>>>>> <http://www.nukepedia.com/> to do this for you? >>>>>>>>> >>>>>>>>> F. >>>>>>>>> >>>>>>>>> On 20 January 2015 at 02:15, Johannes Saam < >>>>>>>>> johannes.s...@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> Hey Gang, >>>>>>>>>> >>>>>>>>>> is there an easy way to access knobs that have been created by >>>>>>>>>> the user with "manage user knobs" >>>>>>>>>> i know they are all in the "user" tab is that a way? I was hoping >>>>>>>>>> i could get all the user generated knobs and then act on them. >>>>>>>>>> Thanks! >>>>>>>>>> JO >>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>> Nuke-dev mailing list >>>>>>>>>> Nuke-dev@support.thefoundry.co.uk, >>>>>>>>>> http://forums.thefoundry.co.uk/ >>>>>>>>>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Frank Harrison >>>>>>>>> Senior Nuke Software Engineer >>>>>>>>> The Foundry >>>>>>>>> Tel: +44 (0)20 7968 6828 - Fax: +44 (0)20 7930 8906 >>>>>>>>> Web: www.thefoundry.co.uk >>>>>>>>> Email: frank.harri...@thefoundry.co.uk >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> Nuke-dev mailing list >>>>>>>>> Nuke-dev@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ >>>>>>>>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> ------------------------------ >>>>>>>> _______________________________________________ >>>>>>>> Nuke-dev mailing list >>>>>>>> Nuke-dev@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ >>>>>>>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev >>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> Nuke-dev mailing list >>>>>>>> Nuke-dev@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ >>>>>>>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>>> -- >>>>> Frank Harrison >>>>> Senior Nuke Software Engineer >>>>> The Foundry >>>>> Tel: +44 (0)20 7968 6828 - Fax: +44 (0)20 7930 8906 >>>>> Web: www.thefoundry.co.uk >>>>> Email: frank.harri...@thefoundry.co.uk >>>>> >>>>> >>>>> _______________________________________________ >>>>> Nuke-dev mailing list >>>>> Nuke-dev@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ >>>>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev >>>>> >>>>> >>>> >>>> >>>> >>>> >>>> _______________________________________________ >>>> Nuke-dev mailing list >>>> Nuke-dev@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ >>>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev >>>> >>>> >>> >>> _______________________________________________ >>> Nuke-dev mailing list >>> Nuke-dev@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ >>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev >>> >>> >> >> >> -- >> Lucy Wilkes >> >> Senior Software Engineer >> The Foundry >> 5 Golden Square, London, W1F 9HT >> Tel: +44 (0)20 7479 4350 >> Web: www.thefoundry.co.uk >> Email: l...@thefoundry.co.uk >> >> >> The Foundry Visionmongers Ltd. >> Registered in England and Wales No: 4642027 >> >> >> _______________________________________________ >> Nuke-dev mailing list >> Nuke-dev@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ >> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev >> >> >
_______________________________________________ Nuke-dev mailing list Nuke-dev@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev