From fd1e9b40abe03b96aec678c1dbe88ef0d22592c3 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Wed, 24 Jun 2020 12:16:44 +0100 Subject: [PATCH] Flag outdated containers on startup and publish. --- pype/hosts/photoshop/__init__.py | 43 ++++++++++++++++++- .../global/publish/validate_containers.py | 2 +- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/pype/hosts/photoshop/__init__.py b/pype/hosts/photoshop/__init__.py index 01ed757a8d..564e9c8a05 100644 --- a/pype/hosts/photoshop/__init__.py +++ b/pype/hosts/photoshop/__init__.py @@ -1,9 +1,48 @@ import os +import sys -from avalon import api +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...") @@ -27,6 +66,8 @@ def install(): "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.""" diff --git a/pype/plugins/global/publish/validate_containers.py b/pype/plugins/global/publish/validate_containers.py index 44cb5def3c..9a07770aed 100644 --- a/pype/plugins/global/publish/validate_containers.py +++ b/pype/plugins/global/publish/validate_containers.py @@ -19,7 +19,7 @@ class ValidateContainers(pyblish.api.ContextPlugin): label = "Validate Containers" order = pyblish.api.ValidatorOrder - hosts = ["maya", "houdini", "nuke"] + hosts = ["maya", "houdini", "nuke", "photoshop"] optional = True actions = [ShowInventory]