💄 add new publisher menu item

This commit is contained in:
Ondřej Samohel 2022-08-30 18:41:57 +02:00
parent 954a52ed5b
commit f2a1a11bec
No known key found for this signature in database
GPG key ID: 02376E18990A97C6
2 changed files with 42 additions and 5 deletions

View file

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<mainMenu> <mainMenu>
<menuBar> <menuBar>
<subMenu id="avalon_menu"> <subMenu id="openpype_menu">
<label>OpenPype</label> <label>OpenPype</label>
<scriptItem id="avalon_create"> <scriptItem id="openpype_create">
<label>Create...</label> <label>Create...</label>
<scriptCode><![CDATA[ <scriptCode><![CDATA[
import hou import hou
@ -14,7 +14,7 @@ host_tools.show_creator(parent)
]]></scriptCode> ]]></scriptCode>
</scriptItem> </scriptItem>
<scriptItem id="avalon_load"> <scriptItem id="openpype_load">
<label>Load...</label> <label>Load...</label>
<scriptCode><![CDATA[ <scriptCode><![CDATA[
import hou import hou
@ -30,11 +30,11 @@ host_tools.show_loader(parent=parent, use_context=True)
import hou import hou
from openpype.tools.utils import host_tools from openpype.tools.utils import host_tools
parent = hou.qt.mainWindow() parent = hou.qt.mainWindow()
host_tools.show_publish(parent) host_tools.show_publisher(parent)
]]></scriptCode> ]]></scriptCode>
</scriptItem> </scriptItem>
<scriptItem id="avalon_manage"> <scriptItem id="openpype_manage">
<label>Manage...</label> <label>Manage...</label>
<scriptCode><![CDATA[ <scriptCode><![CDATA[
import hou import hou

View file

@ -32,6 +32,7 @@ class HostToolsHelper:
self._workfiles_tool = None self._workfiles_tool = None
self._loader_tool = None self._loader_tool = None
self._creator_tool = None self._creator_tool = None
self._publisher_tool = None
self._subset_manager_tool = None self._subset_manager_tool = None
self._scene_inventory_tool = None self._scene_inventory_tool = None
self._library_loader_tool = None self._library_loader_tool = None
@ -205,6 +206,7 @@ class HostToolsHelper:
pyblish_show = self._discover_pyblish_gui() pyblish_show = self._discover_pyblish_gui()
return pyblish_show(parent) return pyblish_show(parent)
def _discover_pyblish_gui(self): def _discover_pyblish_gui(self):
"""Return the most desirable of the currently registered GUIs""" """Return the most desirable of the currently registered GUIs"""
# Prefer last registered # Prefer last registered
@ -269,6 +271,30 @@ class HostToolsHelper:
dialog.activateWindow() dialog.activateWindow()
dialog.showNormal() dialog.showNormal()
def get_publisher_tool(self, parent):
"""Create, cache and return scene inventory tool window."""
if self._scene_inventory_tool is None:
from openpype.tools.publisher import PublisherWindow
host = registered_host()
ILoadHost.validate_load_methods(host)
publisher_window = PublisherWindow(
parent=parent or self._parent
)
self._publisher_tool = publisher_window
return self._publisher_tool
def show_publisher_tool(self, parent=None):
with qt_app_context():
dialog = self.get_publisher_tool(parent)
dialog.show()
dialog.raise_()
dialog.activateWindow()
dialog.showNormal()
def get_tool_by_name(self, tool_name, parent=None, *args, **kwargs): def get_tool_by_name(self, tool_name, parent=None, *args, **kwargs):
"""Show tool by it's name. """Show tool by it's name.
@ -298,6 +324,10 @@ class HostToolsHelper:
elif tool_name == "publish": elif tool_name == "publish":
self.log.info("Can't return publish tool window.") self.log.info("Can't return publish tool window.")
# "new" publisher
elif tool_name == "publisher":
return self.get_publisher_tool(parent, *args, **kwargs)
elif tool_name == "experimental_tools": elif tool_name == "experimental_tools":
return self.get_experimental_tools_dialog(parent, *args, **kwargs) return self.get_experimental_tools_dialog(parent, *args, **kwargs)
@ -335,6 +365,9 @@ class HostToolsHelper:
elif tool_name == "publish": elif tool_name == "publish":
self.show_publish(parent, *args, **kwargs) self.show_publish(parent, *args, **kwargs)
elif tool_name == "publisher":
self.show_publisher_tool(parent, *args, **kwargs)
elif tool_name == "experimental_tools": elif tool_name == "experimental_tools":
self.show_experimental_tools_dialog(parent, *args, **kwargs) self.show_experimental_tools_dialog(parent, *args, **kwargs)
@ -414,6 +447,10 @@ def show_publish(parent=None):
_SingletonPoint.show_tool_by_name("publish", parent) _SingletonPoint.show_tool_by_name("publish", parent)
def show_publisher(parent=None):
_SingletonPoint.show_tool_by_name("publisher", parent)
def show_experimental_tools_dialog(parent=None): def show_experimental_tools_dialog(parent=None):
_SingletonPoint.show_tool_by_name("experimental_tools", parent) _SingletonPoint.show_tool_by_name("experimental_tools", parent)