ayon-core/openpype/tools/creator/model.py
Jakub Trllo b0a6be63ac Merge branch 'develop' into release/3.15.x
# Conflicts:
#	openpype/hosts/photoshop/api/workio.py
#	openpype/hosts/photoshop/plugins/publish/validate_unique_subsets.py
#	pyproject.toml
#	website/docs/artist_hosts_aftereffects.md
2023-01-24 12:31:32 +01:00

58 lines
1.8 KiB
Python

import uuid
from qtpy import QtGui, QtCore
from openpype.pipeline import discover_legacy_creator_plugins
from . constants import (
FAMILY_ROLE,
ITEM_ID_ROLE
)
class CreatorsModel(QtGui.QStandardItemModel):
def __init__(self, *args, **kwargs):
super(CreatorsModel, self).__init__(*args, **kwargs)
self._creators_by_id = {}
def reset(self):
# TODO change to refresh when clearing is not needed
self.clear()
self._creators_by_id = {}
items = []
creators = discover_legacy_creator_plugins()
for creator in creators:
if not creator.enabled:
continue
item_id = str(uuid.uuid4())
self._creators_by_id[item_id] = creator
label = creator.label or creator.family
item = QtGui.QStandardItem(label)
item.setEditable(False)
item.setData(item_id, ITEM_ID_ROLE)
item.setData(creator.family, FAMILY_ROLE)
items.append(item)
if not items:
item = QtGui.QStandardItem("No registered families")
item.setEnabled(False)
item.setData(False, QtCore.Qt.ItemIsEnabled)
items.append(item)
items.sort(key=lambda item: item.text())
self.invisibleRootItem().appendRows(items)
def get_creator_by_id(self, item_id):
return self._creators_by_id.get(item_id)
def get_indexes_by_family(self, family):
indexes = []
for row in range(self.rowCount()):
index = self.index(row, 0)
item_id = index.data(ITEM_ID_ROLE)
creator_plugin = self._creators_by_id.get(item_id)
if creator_plugin and creator_plugin.family == family:
indexes.append(index)
return indexes