mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
removed silo from asset widget
This commit is contained in:
parent
81fd4283aa
commit
dd2419941e
1 changed files with 54 additions and 87 deletions
|
|
@ -175,53 +175,25 @@ class AssetModel(TreeModel):
|
|||
DocumentRole = QtCore.Qt.UserRole + 2
|
||||
ObjectIdRole = QtCore.Qt.UserRole + 3
|
||||
|
||||
def __init__(self, silo=None, parent=None):
|
||||
def __init__(self, parent=None):
|
||||
super(AssetModel, self).__init__(parent=parent)
|
||||
|
||||
self._silo = None
|
||||
|
||||
if silo is not None:
|
||||
self.set_silo(silo, refresh=True)
|
||||
|
||||
def set_silo(self, silo, refresh=True):
|
||||
"""Set the root path to the ItemType root."""
|
||||
self._silo = silo
|
||||
try:
|
||||
self.silo_asset = io.find_one(
|
||||
{'$and': [
|
||||
{'type': 'asset'},
|
||||
{'name': silo},
|
||||
{'silo': None}
|
||||
]}
|
||||
)
|
||||
except Exception:
|
||||
self.silo_asset = None
|
||||
if refresh:
|
||||
self.refresh()
|
||||
self.refresh()
|
||||
|
||||
def _add_hierarchy(self, parent=None):
|
||||
|
||||
# Find the assets under the parent
|
||||
find_data = {
|
||||
"type": "asset",
|
||||
"silo": self._silo,
|
||||
"type": "asset"
|
||||
}
|
||||
if parent is None:
|
||||
# if not a parent find all that are parented to the project
|
||||
# or do *not* have a visualParent field at all
|
||||
if self.silo_asset is None:
|
||||
find_data['$or'] = [
|
||||
{'data.visualParent': {'$exists': False}},
|
||||
{'data.visualParent': None}
|
||||
]
|
||||
else:
|
||||
find_data['data.visualParent'] = self.silo_asset['_id']
|
||||
|
||||
find_data['$or'] = [
|
||||
{'data.visualParent': {'$exists': False}},
|
||||
{'data.visualParent': None}
|
||||
]
|
||||
else:
|
||||
find_data["data.visualParent"] = parent['_id']
|
||||
|
||||
assets = io.find(find_data).sort('name', 1)
|
||||
|
||||
for asset in assets:
|
||||
# get label from data, otherwise use name
|
||||
data = asset.get("data", {})
|
||||
|
|
@ -250,8 +222,7 @@ class AssetModel(TreeModel):
|
|||
|
||||
self.clear()
|
||||
self.beginResetModel()
|
||||
if self._silo:
|
||||
self._add_hierarchy(parent=None)
|
||||
self._add_hierarchy(parent=None)
|
||||
self.endResetModel()
|
||||
|
||||
def flags(self, index):
|
||||
|
|
@ -487,19 +458,6 @@ class AssetWidget(QtWidgets.QWidget):
|
|||
layout.setContentsMargins(0, 0, 0, 0)
|
||||
layout.setSpacing(4)
|
||||
|
||||
# Header
|
||||
header = QtWidgets.QHBoxLayout()
|
||||
|
||||
silo = SiloTabWidget()
|
||||
|
||||
icon = awesome.icon("fa.refresh", color=style.colors.light)
|
||||
refresh = QtWidgets.QPushButton(icon, "")
|
||||
refresh.setToolTip("Refresh items")
|
||||
|
||||
header.addWidget(silo)
|
||||
header.addStretch(1)
|
||||
header.addWidget(refresh)
|
||||
|
||||
# Tree View
|
||||
model = AssetModel()
|
||||
proxy = RecursiveSortFilterProxyModel()
|
||||
|
|
@ -508,71 +466,80 @@ class AssetWidget(QtWidgets.QWidget):
|
|||
view = AssetView()
|
||||
view.setModel(proxy)
|
||||
|
||||
# Header
|
||||
header = QtWidgets.QHBoxLayout()
|
||||
|
||||
icon = awesome.icon("fa.refresh", color=style.colors.light)
|
||||
refresh = QtWidgets.QPushButton(icon, "")
|
||||
refresh.setToolTip("Refresh items")
|
||||
|
||||
filter = QtWidgets.QLineEdit()
|
||||
filter.textChanged.connect(proxy.setFilterFixedString)
|
||||
filter.setPlaceholderText("Filter assets..")
|
||||
|
||||
header.addWidget(filter)
|
||||
header.addWidget(refresh)
|
||||
|
||||
# Layout
|
||||
layout.addLayout(header)
|
||||
layout.addWidget(filter)
|
||||
layout.addWidget(view)
|
||||
|
||||
# Signals/Slots
|
||||
selection = view.selectionModel()
|
||||
selection.selectionChanged.connect(self.selection_changed)
|
||||
selection.currentChanged.connect(self.current_changed)
|
||||
silo.silo_changed.connect(self._on_silo_changed)
|
||||
# silo.silo_changed.connect(self._on_silo_changed)
|
||||
refresh.clicked.connect(self.refresh)
|
||||
|
||||
self.refreshButton = refresh
|
||||
self.silo = silo
|
||||
# self.silo = silo
|
||||
self.model = model
|
||||
self.proxy = proxy
|
||||
self.view = view
|
||||
|
||||
def _on_silo_changed(self):
|
||||
"""Callback for silo change"""
|
||||
|
||||
self._refresh_model()
|
||||
silo = self.get_current_silo()
|
||||
self.silo_changed.emit(silo)
|
||||
self.selection_changed.emit()
|
||||
# def _on_silo_changed(self):
|
||||
# """Callback for silo change"""
|
||||
#
|
||||
# self._refresh_model()
|
||||
# silo = self.get_current_silo()
|
||||
# self.silo_changed.emit(silo)
|
||||
# self.selection_changed.emit()
|
||||
|
||||
def _refresh_model(self):
|
||||
|
||||
silo = self.get_current_silo()
|
||||
with preserve_expanded_rows(self.view,
|
||||
column=0,
|
||||
role=self.model.ObjectIdRole):
|
||||
with preserve_selection(self.view,
|
||||
column=0,
|
||||
role=self.model.ObjectIdRole):
|
||||
self.model.set_silo(silo)
|
||||
# silo = self.get_current_silo()
|
||||
# with preserve_expanded_rows(self.view,
|
||||
# column=0,
|
||||
# role=self.model.ObjectIdRole):
|
||||
# with preserve_selection(self.view,
|
||||
# column=0,
|
||||
# role=self.model.ObjectIdRole):
|
||||
# self.model.set_silo(silo)
|
||||
|
||||
self.assets_refreshed.emit()
|
||||
|
||||
def refresh(self):
|
||||
|
||||
silos = _list_project_silos()
|
||||
self.silo.set_silos(silos)
|
||||
# silos = _list_project_silos()
|
||||
# self.silo.set_silos(silos)
|
||||
# set first silo as active so tasks are shown
|
||||
if len(silos) > 0:
|
||||
self.silo.set_current_silo(self.silo.tabText(0))
|
||||
# if len(silos) > 0:
|
||||
# self.silo.set_current_silo(self.silo.tabText(0))
|
||||
self._refresh_model()
|
||||
|
||||
def get_current_silo(self):
|
||||
"""Returns the currently active silo."""
|
||||
return self.silo.get_current_silo()
|
||||
# def get_current_silo(self):
|
||||
# """Returns the currently active silo."""
|
||||
# return self.silo.get_current_silo()
|
||||
|
||||
def get_silo_object(self, silo_name=None):
|
||||
""" Returns silo object from db. None if not found.
|
||||
Current silo is found if silo_name not entered."""
|
||||
if silo_name is None:
|
||||
silo_name = self.get_current_silo()
|
||||
try:
|
||||
return io.find_one({"type": "asset", "name": silo_name})
|
||||
except Exception:
|
||||
return None
|
||||
# def get_silo_object(self, silo_name=None):
|
||||
# """ Returns silo object from db. None if not found.
|
||||
# Current silo is found if silo_name not entered."""
|
||||
# if silo_name is None:
|
||||
# silo_name = self.get_current_silo()
|
||||
# try:
|
||||
# return io.find_one({"type": "asset", "name": silo_name})
|
||||
# except Exception:
|
||||
# return None
|
||||
|
||||
def get_active_asset(self):
|
||||
"""Return the asset id the current asset."""
|
||||
|
|
@ -588,9 +555,9 @@ class AssetWidget(QtWidgets.QWidget):
|
|||
rows = selection.selectedRows()
|
||||
return [row.data(self.model.ObjectIdRole) for row in rows]
|
||||
|
||||
def set_silo(self, silo):
|
||||
"""Set the active silo tab"""
|
||||
self.silo.set_current_silo(silo)
|
||||
# def set_silo(self, silo):
|
||||
# """Set the active silo tab"""
|
||||
# self.silo.set_current_silo(silo)
|
||||
|
||||
def select_assets(self, assets, expand=True):
|
||||
"""Select assets by name.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue