mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 08:24:53 +01:00
example addon is not using inteface
This commit is contained in:
parent
ec7195eeb3
commit
79fce6a5b4
3 changed files with 2 additions and 54 deletions
|
|
@ -15,7 +15,6 @@ from openpype.modules import (
|
||||||
)
|
)
|
||||||
# Import interface defined by this addon to be able find other addons using it
|
# Import interface defined by this addon to be able find other addons using it
|
||||||
from openpype_interfaces import (
|
from openpype_interfaces import (
|
||||||
IExampleInterface,
|
|
||||||
IPluginPaths,
|
IPluginPaths,
|
||||||
ITrayAction
|
ITrayAction
|
||||||
)
|
)
|
||||||
|
|
@ -75,19 +74,6 @@ class ExampleAddon(OpenPypeAddOn, IPluginPaths, ITrayAction):
|
||||||
|
|
||||||
self._create_dialog()
|
self._create_dialog()
|
||||||
|
|
||||||
def connect_with_modules(self, enabled_modules):
|
|
||||||
"""Method where you should find connected modules.
|
|
||||||
|
|
||||||
It is triggered by OpenPype modules manager at the best possible time.
|
|
||||||
Some addons and modules may required to connect with other modules
|
|
||||||
before their main logic is executed so changes would require to restart
|
|
||||||
whole process.
|
|
||||||
"""
|
|
||||||
self._connected_modules = []
|
|
||||||
for module in enabled_modules:
|
|
||||||
if isinstance(module, IExampleInterface):
|
|
||||||
self._connected_modules.append(module)
|
|
||||||
|
|
||||||
def _create_dialog(self):
|
def _create_dialog(self):
|
||||||
# Don't recreate dialog if already exists
|
# Don't recreate dialog if already exists
|
||||||
if self._dialog is not None:
|
if self._dialog is not None:
|
||||||
|
|
@ -106,8 +92,6 @@ class ExampleAddon(OpenPypeAddOn, IPluginPaths, ITrayAction):
|
||||||
"""
|
"""
|
||||||
# Make sure dialog is created
|
# Make sure dialog is created
|
||||||
self._create_dialog()
|
self._create_dialog()
|
||||||
# Change value of dialog by current state
|
|
||||||
self._dialog.set_connected_modules(self.get_connected_modules())
|
|
||||||
# Show dialog
|
# Show dialog
|
||||||
self._dialog.open()
|
self._dialog.open()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
""" Using interfaces is one way of connecting multiple OpenPype Addons/Modules.
|
|
||||||
|
|
||||||
Interfaces must be in `interfaces.py` file (or folder). Interfaces should not
|
|
||||||
import module logic or other module in global namespace. That is because
|
|
||||||
all of them must be imported before all OpenPype AddOns and Modules.
|
|
||||||
|
|
||||||
Ideally they should just define abstract and helper methods. If interface
|
|
||||||
require any logic or connection it should be defined in module.
|
|
||||||
|
|
||||||
Keep in mind that attributes and methods will be added to other addon
|
|
||||||
attributes and methods so they should be unique and ideally contain
|
|
||||||
addon name in it's name.
|
|
||||||
"""
|
|
||||||
|
|
||||||
from abc import abstractmethod
|
|
||||||
from openpype.modules import OpenPypeInterface
|
|
||||||
|
|
||||||
|
|
||||||
class IExampleInterface(OpenPypeInterface):
|
|
||||||
"""Example interface of addon."""
|
|
||||||
_example_module = None
|
|
||||||
|
|
||||||
def get_example_module(self):
|
|
||||||
return self._example_module
|
|
||||||
|
|
||||||
@abstractmethod
|
|
||||||
def example_method_of_example_interface(self):
|
|
||||||
pass
|
|
||||||
|
|
@ -9,7 +9,8 @@ class MyExampleDialog(QtWidgets.QDialog):
|
||||||
|
|
||||||
self.setWindowTitle("Connected modules")
|
self.setWindowTitle("Connected modules")
|
||||||
|
|
||||||
label_widget = QtWidgets.QLabel(self)
|
msg = "This is example dialog of example addon."
|
||||||
|
label_widget = QtWidgets.QLabel(msg, self)
|
||||||
|
|
||||||
ok_btn = QtWidgets.QPushButton("OK", self)
|
ok_btn = QtWidgets.QPushButton("OK", self)
|
||||||
btns_layout = QtWidgets.QHBoxLayout()
|
btns_layout = QtWidgets.QHBoxLayout()
|
||||||
|
|
@ -28,12 +29,3 @@ class MyExampleDialog(QtWidgets.QDialog):
|
||||||
|
|
||||||
def _on_ok_clicked(self):
|
def _on_ok_clicked(self):
|
||||||
self.done(1)
|
self.done(1)
|
||||||
|
|
||||||
def set_connected_modules(self, connected_modules):
|
|
||||||
if connected_modules:
|
|
||||||
message = "\n".join(connected_modules)
|
|
||||||
else:
|
|
||||||
message = (
|
|
||||||
"Other enabled modules/addons are not using my interface."
|
|
||||||
)
|
|
||||||
self._label_widget.setText(message)
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue