I just ran into this as well and re-implemented event() to see which
events actually get called when you close a registered panel in Nuke.
Turns out it's the hideEvent().
So after re-implementing hideEvent() as well as closeEvent() for the
main widget things seem to be working for me.
On 02/10/13 05:59, Jose Fernandez de Castro wrote:
Ok, tested again, same result. The code gets called fine outside of
nuke, but the signals do not trigger when running inside of Nuke. This
might be related to my other thread (because it is related to pyqt's
destructor methods), so I'll try to get a supporte PyQt install first
and test again.
On Mon, Sep 30, 2013 at 10:28 PM, Jose Fernandez de Castro
<[email protected]> wrote:
I think I did try something like what you mentioned, but I will give
it another go tomorrow.
On Mon, Sep 30, 2013 at 10:28 PM, Jose Fernandez de Castro
<[email protected]> wrote:
Sorry, I do have access to the source code, what I mean about the top
level widget, is the actual Nuke window.
On Mon, Sep 30, 2013 at 9:36 PM, Nathan Rusch <[email protected]> wrote:
Well, the only reason I ask if you have access to the source is because if
you do, you shouldn't have any trouble getting the top-level window or
widget... However, doing it that way means that any time someone closes a
tab with a docked GUI instance in it, your cleanup handler will be called,
which sounds like it isn't quite what you're after; QApplication.aboutToQuit
seems more appropriate.
Are you already calling
`QtGui.qApp.aboutToQuit.connect(self.cleanupHandler)` or what have you in
your application's __init__ without success?
-Nathan
-----Original Message----- From: Jose Fernandez de Castro
Sent: Monday, September 30, 2013 9:21 PM
To: Nuke Python discussion
Subject: Re: [Nuke-python] pyqt inside a python panel doesn't get close
signal
It's a pretty big application with lots of calls to in house house
API's, so I can't post it as is, I'll see if I can simplify it to
something that makes sense. Just out or curiosity though, do you have
an example on how you are connecting those signals? Didn't save the
code that I tested, but was basically getting the triggers for both
signals 'destroyed' and 'aboutToQuit' when running the application
standalone in a terminal, but not as a panel inside of nuke.
On Mon, Sep 30, 2013 at 8:35 PM, Nathan Rusch <[email protected]>
wrote:
Sorry, I overlooked your last response. I'm confused though... do you not
have the source code to this application/GUI tool?
-Nathan
-----Original Message----- From: Jose Fernandez de Castro
Sent: Wednesday, September 18, 2013 6:15 PM
To: Nuke Python discussion
Subject: Re: [Nuke-python] pyqt inside a python panel doesn't get close
signal
Can't seem to get this to work, I've tried connecting both the
'destroyed' and 'aboutToQuit' signal and they do work outside of nuke,
but not when running inside. How are you getting the 'top level'
widget?
On Wed, Sep 18, 2013 at 10:46 AM, Nathan Rusch <[email protected]>
wrote:
OK, so the only real problem at this point is cleaning up when Nuke
quits.
In that case, I would first try refactoring your cleanup code out of the
closeEvent method and connecting it to one of:
- The .destroyed signal of your UI's top-level widget (this will do
double-duty by also handling the case where a user closes the pane
without
closing Nuke).
- QCoreApplication.aboutToQuit
If you used the latter, you would also obviously want to call the cleanup
method from your closeEvent as well to handle cases where the panel is
closed but Nuke is left open.
-Nathan
-----Original Message----- From: Jose Fernandez de Castro
Sent: Tuesday, September 17, 2013 11:41 PM
To: Nuke Python discussion
Subject: Re: [Nuke-python] pyqt inside a python panel doesn't get close
signal
I have a closeEvent, which basically clears shared memory keys. The
shared memory keys are there to coordinate action between multiple
instances of the pyqt dialog/application running standalone or
embedded in other nuke sessions. Inside of nuke, it is running only as
a docked QWidget panel, and I want the cleanup to run on each closing
of nuke. However, the closeEvent does not seem to run upon just
closing the nuke session. I might end up implementing it with an
OnScriptClose callback if all else fails, but I just wanted to know if
there is a better way...
On Tue, Sep 17, 2013 at 11:03 PM, Nathan Rusch <[email protected]>
wrote:
I don't recall seeing this thread around, but unless I'm overlooking
something, this shouldn't be a particularly hard problem to solve.
What are you actually connecting to your cleanup handler slot? And when
are
you expecting the application to be cleaned up? When a dockable panel is
destroyed? When the user clicks a certain button? Is this a problem in
both
modal and non-modal panel instances? The more information you can
provide,
the better.
-Nathan
-----Original Message----- From: Jose Fernandez de Castro
Sent: Tuesday, September 17, 2013 8:26 PM
To: Nuke Python discussion
Subject: Re: [Nuke-python] pyqt inside a python panel doesn't get close
signal
Having this exact same problem at the moment, has anyone found any
other solution?
On Wed, Jan 18, 2012 at 1:31 PM, Micah Henrie <[email protected]> wrote:
I ended up creating a OnScriptClose callback to kill threads/save
settings
etc but it would be nice if the close signal was sent by nuke when it
shut
down.
micah
________________________________
From: "Dennis Martin" <[email protected]>
To: "Nuke Python discussion" <[email protected]>
Sent: Wednesday, January 18, 2012 1:02:02 PM
Subject: [Nuke-python] pyqt inside a python panel doesn't get close
signal
I have a large pyqt program that is multi-threaded that I am trying to
run
as a python panel. On closing this program, all the threads it created
need
to be killed. I handle this in the standalone version with:
self.connect(self, SIGNAL('triggered()'), self.closeEvent)
Where closeEvent simply kills all my threads.
This works fine when I run the program standalone or launched from a
menu
inside Nuke. The problem is when I make this into a python panel the
pyqt
instance no longer gets any signals when the panel is closed.
I have used registerWidgetAsPanel to load the program as a panel:
nukescripts.registerWidgetAsPanel('eep_assetBrowser.MyWindow', 'Asset
Browser', 'com.eep.testWindow',create = True)
So the question is how can I get the python panel to send a signal to
the
pyqt instance when it is closed?
--
Dennis A Martin
_______________________________________________
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
--
Jose Fernandez de Castro
_______________________________________________
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
--
Jose Fernandez de Castro
_______________________________________________
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
--
Jose Fernandez de Castro
_______________________________________________
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
--
Jose Fernandez de Castro
_______________________________________________
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
--
Jose Fernandez de Castro
--
Jose Fernandez de Castro
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python