import os import sys from avalon import api, io from avalon.vendor import Qt from pype import lib import pyblish.api def check_inventory(): if not lib.any_outdated(): return host = api.registered_host() outdated_containers = [] for container in host.ls(): representation = container['representation'] representation_doc = io.find_one( { "_id": io.ObjectId(representation), "type": "representation" }, projection={"parent": True} ) if representation_doc and not lib.is_latest(representation_doc): outdated_containers.append(container) # Warn about outdated containers. print("Starting new QApplication..") app = Qt.QtWidgets.QApplication(sys.argv) message_box = Qt.QtWidgets.QMessageBox() message_box.setIcon(Qt.QtWidgets.QMessageBox.Warning) msg = "There are outdated containers in the scene." message_box.setText(msg) message_box.exec_() # Garbage collect QApplication. del app def application_launch(): check_inventory() def install(): print("Installing Pype config...") plugins_directory = os.path.join( os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "plugins", "aftereffects" ) pyblish.api.register_plugin_path( os.path.join(plugins_directory, "publish") ) api.register_plugin_path( api.Loader, os.path.join(plugins_directory, "load") ) api.register_plugin_path( api.Creator, os.path.join(plugins_directory, "create") ) pyblish.api.register_callback( "instanceToggled", on_pyblish_instance_toggled ) api.on("application.launched", application_launch) def on_pyblish_instance_toggled(instance, old_value, new_value): """Toggle layer visibility on instance toggles.""" instance[0].Visible = new_value