Qt window class for designing tools to be compatible between multiple VFX programs.
Project description
VFXWindow
Qt Window class for designing tools to be compatible between multiple VFX programs.
The main purpose of the class is to integrate into the program UI, but it also contains helpful features such as safely dealing with callbacks and automatically saving the window position.
The intended usage is to make your window class inherit VFXWindow
- which is an instance of QMainWindow
. By calling cls.show()
, it will launch the correct window type based on what program is loaded, and what settings were previously saved.
This is perfectly stable, but there is still plenty that needs improvement. Maya, Nuke, 3DS Max, Houdini, Blender and Unreal are currently supported, though any help to extend those would be appreciated, as well as support for any other applications.
Basic Example:
class MyWindow(VFXWindow):
WindowID = 'unique_window_id'
WindowName = 'My Window'
def __init__(self, parent=None, **kwargs):
super(MyWindow, self).__init__(parent, **kwargs)
# Setup window here
# Setup callbacks, but wait until the program is ready
self.deferred(self.newScene)
def newScene(self, *args):
"""Example: Delete and reapply callbacks after loading a new scene."""
self.removeCallbacks('sceneNewCallbacks')
if self.maya:
self.addCallbackScene('kAfterNew', self.newScene, group='sceneNewCallbacks')
elif self.nuke:
self.addCallbackOnCreate(self.newScene, nodeClass='Root', group='sceneNewCallbacks')
if __name__ == '__main__':
MyWindow.show()
Compatibility
- Maya (2011-2016, tested lightly on 2016) - standard, docked (
pymel.core.dockControl
), standalone, callbacks - Maya (2017+, tested on 2017-2019) - standard, docked (
pymel.core.workspaceControl
), dialog (pymel.core.layoutDialog
), standalone, callbacks - Nuke (tested on 9 and 10) - standard, docked (
nukescripts.panels
), callbacks - 3D Studio Max (2018+, tested on 2020) - standard
- Houdini (tested on 16) - standard
- Blender (tested in 2.80) - standard, callbacks
- Unreal (4.19+, tested in 4.23) - standard
- Standalone (Qt4, Qt5, tested in 2.7, 3.4+) - standard
Generic Features
- Automatically save/restore window position
- Move window to screen if out of bounds (windows only)
- Keep track of callbacks to remove groups if required, and clean up on window close
- Keep track of signals to remove groups if required
- Display a popup message that forces control
- Set palette to that of another program
- Auto close if opening a duplicate window
- Close down all windows at once
Maya Features
- Dock window using workspaceControl
- Dialog window using layoutDialog
- Save/restore position of workspaceControl window (floating+docked)
- Easy access to callbacks
Nuke Features
- Dock window as a panel
- Save/restore location of panel (docked only)
- Easy access to callbacks
Blender Features
- Easy access to callbacks
Special Thanks
- Blue Zoo - I've been building this up while working there
- Lior Ben Horin: Simple_MayaDockingClass.py - used for main Maya docking code
- Fredrik Averpil: pyvfx-boilerplate - helped with palettes, Nuke, and pre-2017 Maya
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file vfxwindow-1.3.0.tar.gz
.
File metadata
- Download URL: vfxwindow-1.3.0.tar.gz
- Upload date:
- Size: 51.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f2aa7c67dd034d96b267801db0fe5725211a487231305cec5976a155fb03e1de |
|
MD5 | 7bdc32eb20873b9000cc5fc372bdcfde |
|
BLAKE2b-256 | 5cfaba8d0770676e0c36e0238cc7c3fd867c23f07c0332e4c6e4080bb504a5c0 |