Get the current Maya session

105 views
Skip to first unread message

kiteh

unread,
Aug 24, 2018, 7:27:40 PM8/24/18
to Python Programming for Autodesk Maya
Is there a way to check if the current maya session is 'new'?

I have a tool created using PyQt, in which it stores the widgets inputs using QSettings (asked this question previously). The settings and all works out great, however I realized that if I launched a new maya session, followed by relaunching my tool, the 'stored' settings is/ are being loaded.

And hence, I would wanted to see if I can implemented in a way such that:
  • if user clicks on 'new scene' or open/ load a new file in the current maya session > if my tool is relaunched, it will prompt a popup and ask if User wants to load the 'old' settings or use default settings?
  • if user launch a new maya session > open/ load a new file > launch my tool, it should load in the default settings.
Will this be too complicated to do so? I am hoping to implement in the first point if possible.

Many thanks in advance!

Justin Israel

unread,
Aug 24, 2018, 7:49:29 PM8/24/18
to python_in...@googlegroups.com
You can check cmds.file(query=True, sceneName=True) to see if the scene has been saved to a file yet.

For more control, you can track the NewSceneOpened event using a scriptJob:

Or using the API to to track specified scene events:

This would allow you to handle the first point. If you tracked the new scene event, you could switch a OptionVar bool back and forth between your event handler and your UI launch.
 

Many thanks in advance!

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/027560d6-b26d-4407-9329-1c019808ea93%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Michael Boon

unread,
Aug 26, 2018, 11:37:11 PM8/26/18
to Python Programming for Autodesk Maya
The way Maya itself handles this is to only save settings when you close Maya. I save settings from a lot of my tools using QSettings when they are closed and it generally works well. The most significant caveat is that you need to make doubly sure you handle exceptions when saving settings, because you don't want to prevent other cleanup from being run. It also has the disadvantage that if you have two sessions open, and you make a lot of changes to your settings in one, but close that one first, the second session can overwrite all the changes you saved from the first session.

kiteh

unread,
Aug 27, 2018, 12:50:41 PM8/27/18
to Python Programming for Autodesk Maya
Hi all, many thanks for getting back.

It is upon the use of QSettings that I started to notice and wanted to implement checking conditions, as what Michael has mentioned, especially so, if there are 2 Maya sessions opened..
Will look into implementing callbacks then.

Thanks again!

Justin Israel

unread,
Aug 27, 2018, 3:46:17 PM8/27/18
to python_in...@googlegroups.com
Oh sorry. I thought you meant dealing with new sessions within one Maya instance as opposed to "session" meaning a second Maya process. 
QSettings has a "sync()" method, which usually is called automatically for you when the QSettings is being destroyed. But you could call it manually at points when you want to flush your changes to the file and to pick up external changes. You can still have to instances stomping on each other but at least they can be writing their changes sooner instead of on Maya shut down. 
For multiple instances of Maya, you could check the process list for running pids. 


Thanks again!

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages