Hey, just found this work around to, in case its useful for anyone:
Doing:

import PySide.QtGui
PySide.QtGui.QApplication.processEvents()

After adding/removing the knobs seems to force the redraw of the
properties panel.

On Tue, Mar 4, 2014 at 1:27 AM, John RA Benson <j...@illum-mg.fr> wrote:
> Finally got around to doing something about this again:
> While it doesn't directly address the removeKnob bug erroneously populating
> the panels (bug 37959, which is still broken in nuke8), it does a better job
> of closing and re-opening the panels (bug 14622) to restore the panel to the
> correct state. Both techniques mentioned earlier fell apart in various
> tests, so we've just been putting up with it till now. Here's the fix
> (adapted from an old tip for something completely different by erik
> winquist):
>
> [code]
> import thread
>
> def _showPanel(node):
>     nuke.executeInMainThread(node.showControlPanel, ())
>
> def fixRemoveKnobs(node):
>     """Place after node.removeKnob code to hide and then re-show panel to
> fix nuke 7 bug
>     that duplicates panels inside panels."""
>     node.hideControlPanel()
>     thread.start_new_thread(_showPanel, (node,))
>
> [/code]
>
> cheers
> JRAB
>
>
>
> On 09/20/2013 12:00 AM, John Vanderbeck wrote:
>
> So just a heads up.  I found that if I put in just the slightest delay, then
> I can avoid the refresh issue. In the code below, a time.sleep() of just
> 0.01 is enough to keep the bug from happening.
>
> for i in xrange(thisNode.numKnobs() - 1, -1, -1):
>
>     knob = thisNode.knob(i)
>
>     if knob is thisNode.knob("channel_tip"):
>
>         break
>
>     thisNode.removeKnob(knob)
>
>     time.sleep(0.01)
>
>     layers = []
>
>     for channel in thisNode.channels():
>
>         layer = channel.split(".")[0]
>
>         if not layer in layers:
>
>             layers.append(layer)
>
> for layer in layers:
>
>     knob = nuke.Boolean_Knob("channel_" + layer, layer, True)
>
>     knob.setFlag(nuke.STARTLINE)
>
>     nuke.selectedNode().addKnob(knob)
>
>
>
> On Thu, Sep 19, 2013 at 9:06 AM, John Vanderbeck
> <john.vanderb...@primefocusworld.com> wrote:
>>
>> So is there any way to work around this? I'm running into it at the moment
>> and this is very bad for the user.
>>
>>
>> On Tue, Sep 10, 2013 at 8:29 AM, Nathan Rusch <nathan_ru...@hotmail.com>
>> wrote:
>>>
>>> Now logged as bug #37959.
>>>
>>> -Nathan
>>>
>>> On Sep 10, 2013, at 2:32 AM, "John RA Benson" <j...@illum-mg.fr> wrote:
>>>
>>> > fantastic idea with the callback - works great!
>>> >
>>> > many thanks
>>> > JRAB
>>> >
>>> > On 09/10/2013 04:27 AM, Ben Dickson wrote:
>>> >> I'm pretty sure I've had this happen on OS X too, but only when the
>>> >> node's properties was a floating window (i.e the Properties Bin was
>>> >> closed).. Will try to extract the code that caused this into a simple
>>> >> test-case
>>> >>
>>> >> As for reopening the panel, that looks like another bug worth
>>> >> reporting.. Here is a workaround, which hides the panel and re-opens it 
>>> >> in
>>> >> an updateUI callback:
>>> >>
>>> >> thisNode = nuke.thisNode()
>>> >> k = nuke.Text_Knob('foo', 'foo')
>>> >> thisNode.addKnob(k)
>>> >> thisNode.removeKnob(k)
>>> >>
>>> >> n.hideControlPanel()
>>> >> def showPanel():
>>> >>    n.showControlPanel()
>>> >>    nuke.callbacks.removeUpdateUI(showPanel)
>>> >>
>>> >> nuke.callbacks.addUpdateUI(showPanel)
>>> >>
>>> >>
>>> >> On 07/09/13 04:14, John RA Benson wrote:
>>> >>> thanks!
>>> >>>
>>> >>> seems to be a linux thing. I just tried my test node on osx and it
>>> >>> works fine.
>>> >>>
>>> >>> calling node.showControlPanel() from within the node is something
>>> >>> different, but if it worked to re-open the panel, at least I'd have a
>>> >>> workaround. It does the same in osx and linux - nothing.
>>> >>>
>>> >>> thoughts?
>>> >>> JRAB
>>> >>>
>>> >>>
>>> >>> On Sep 6, 2013, at 7:28 PM, Nathan Rusch<nathan_ru...@hotmail.com>
>>> >>> wrote:
>>> >>>
>>> >>>> Ha. I actually just reported this issue the other day. From what I
>>> >>>> can tell, it has to do with knobs being reorganized or reordered 
>>> >>>> without
>>> >>>> giving Nuke a chance to redraw their widgets. As you say, it's pretty 
>>> >>>> much
>>> >>>> harmless, as all the widgets are still connected to the same back-end 
>>> >>>> knob,
>>> >>>> but annoying nonetheless.
>>> >>>>
>>> >>>> I'll follow up on here when I have a bug ID.
>>> >>>>
>>> >>>> -Nathan
>>> >>>>
>>> >>>>
>>> >>>> -----Original Message----- From: John RA Benson
>>> >>>> Sent: Friday, September 06, 2013 10:15 AM
>>> >>>> To: Nuke Python discussion
>>> >>>> Subject: [Nuke-python] multiple panels inside a panel problem
>>> >>>>
>>> >>>> Does anyone have a fix for this problem:
>>> >>>>
>>> >>>> set cut_paste_input [stack 0]
>>> >>>> version 7.0 v8
>>> >>>> push $cut_paste_input
>>> >>>> NoOp {
>>> >>>> name NoOp25
>>> >>>> selected true
>>> >>>> xpos -497
>>> >>>> ypos -19511
>>> >>>> addUserKnob {20 tests}
>>> >>>> addUserKnob {22 reload T "thisNode = nuke.thisNode()\nk =
>>> >>>> nuke.Text_Knob('foo',
>>> >>>> 'foo')\nthisNode.addKnob(k)\nthisNode.removeKnob(k)\n" +STARTLINE}
>>> >>>> addUserKnob {22 reloadCloseAndReopen l "reload, Close and Reopen" T
>>> >>>> "thisNode = nuke.thisNode()\nk = nuke.Text_Knob('foo',
>>> >>>>
>>> >>>> 'foo')\nthisNode.addKnob(k)\nthisNode.removeKnob(k)\n\nthisNode.hideControlPanel()\nthisNode.showControlPanel()"
>>> >>>> +STARTLINE}
>>> >>>> }
>>> >>>>
>>> >>>> Press the 'reload' button in the noop. I'm just adding a knob, and
>>> >>>> then
>>> >>>> removing it.
>>> >>>> Basically, if you have a knob that you want to remove and do so, the
>>> >>>> properties panel adds to itself. Each time you run it, it stacks up.
>>> >>>> Doesn't appear to be a problem, but it's really annoying, since you
>>> >>>> have
>>> >>>> to close the panel and re-open it to normalize it again.
>>> >>>>
>>> >>>> Speaking of opening and closing, is it normal to not be able to open
>>> >>>> the
>>> >>>> panel with node.showControlPanel() from within a script called by
>>> >>>> the
>>> >>>> node? Do I need to do some context thing to get it to open?
>>> >>>>
>>> >>>> thanks
>>> >>>> JRAB
>>> >>>> _______________________________________________
>>> >>>> Nuke-python mailing list
>>> >>>> Nuke-python@support.thefoundry.co.uk,
>>> >>>> http://forums.thefoundry.co.uk/
>>> >>>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>>> >>>> _______________________________________________
>>> >>>> Nuke-python mailing list
>>> >>>> Nuke-python@support.thefoundry.co.uk,
>>> >>>> http://forums.thefoundry.co.uk/
>>> >>>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>>> >>>
>>> >>> _______________________________________________
>>> >>> Nuke-python mailing list
>>> >>> Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
>>> >>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>>> >>
>>> >
>>> > _______________________________________________
>>> > Nuke-python mailing list
>>> > Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
>>> > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>>> _______________________________________________
>>> Nuke-python mailing list
>>> Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
>>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>>
>>
>>
>>
>> --
>> - John Vanderbeck
>> - Prime Focus World, Vancouver
>> - 2D Pipeline TD
>>
>
>
>
> --
> - John Vanderbeck
> - Prime Focus World, Vancouver
> - 2D Pipeline TD
>
>
>
> _______________________________________________
> Nuke-python mailing list
> Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>
>
>
> _______________________________________________
> Nuke-python mailing list
> Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>



-- 
Jose Fernandez de Castro
_______________________________________________
Nuke-python mailing list
Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python

Reply via email to