mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 05:14:40 +01:00
AssetsWidget does not expect 'dbcon'
This commit is contained in:
parent
e40cc56300
commit
acaefb0a71
4 changed files with 42 additions and 39 deletions
|
|
@ -7,7 +7,7 @@ from qtpy import QtWidgets, QtCore, QtGui
|
|||
|
||||
from ayon_core import style
|
||||
from ayon_core.client import get_asset_by_name
|
||||
from ayon_core.pipeline import legacy_io, get_current_project_name
|
||||
from ayon_core.pipeline import get_current_project_name
|
||||
from ayon_core.tools.utils.assets_widget import SingleSelectAssetsWidget
|
||||
|
||||
from pxr import Sdf
|
||||
|
|
@ -27,7 +27,8 @@ class SelectAssetDialog(QtWidgets.QWidget):
|
|||
self.setWindowTitle("Pick Asset")
|
||||
self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.Popup)
|
||||
|
||||
assets_widget = SingleSelectAssetsWidget(legacy_io, parent=self)
|
||||
assets_widget = SingleSelectAssetsWidget(self)
|
||||
assets_widget.set_project_name(get_current_project_name(), False)
|
||||
|
||||
layout = QtWidgets.QHBoxLayout(self)
|
||||
layout.addWidget(assets_widget)
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ class CreateWidgetAssetsWidget(SingleSelectAssetsWidget):
|
|||
|
||||
def __init__(self, controller, parent):
|
||||
self._controller = controller
|
||||
super(CreateWidgetAssetsWidget, self).__init__(None, parent)
|
||||
super(CreateWidgetAssetsWidget, self).__init__(parent)
|
||||
|
||||
self.set_refresh_btn_visibility(False)
|
||||
self.set_current_asset_btn_visibility(False)
|
||||
|
|
@ -31,6 +31,9 @@ class CreateWidgetAssetsWidget(SingleSelectAssetsWidget):
|
|||
|
||||
self._last_filter_height = None
|
||||
|
||||
def get_project_name(self):
|
||||
return self._controller.project_name
|
||||
|
||||
def get_selected_asset_name(self):
|
||||
selection_model = self._view.selectionModel()
|
||||
indexes = selection_model.selectedRows()
|
||||
|
|
@ -79,10 +82,10 @@ class CreateWidgetAssetsWidget(SingleSelectAssetsWidget):
|
|||
|
||||
def update_current_asset(self):
|
||||
# Hide set current asset if there is no one
|
||||
asset_name = self._get_current_session_asset()
|
||||
asset_name = self._get_current_asset_name()
|
||||
self.set_current_asset_btn_visibility(bool(asset_name))
|
||||
|
||||
def _get_current_session_asset(self):
|
||||
def _get_current_asset_name(self):
|
||||
return self._controller.current_asset_name
|
||||
|
||||
def _create_source_model(self):
|
||||
|
|
|
|||
|
|
@ -565,7 +565,7 @@ class CreateWidget(QtWidgets.QWidget):
|
|||
self._last_thumbnail_path = None
|
||||
|
||||
def _on_current_session_context_request(self):
|
||||
self._assets_widget.set_current_session_asset()
|
||||
self._assets_widget.select_current_asset()
|
||||
task_name = self.current_task_name
|
||||
if task_name:
|
||||
self._tasks_widget.select_task_name(task_name)
|
||||
|
|
|
|||
|
|
@ -111,7 +111,6 @@ class _AssetModel(QtGui.QStandardItemModel):
|
|||
'refreshed' signal.
|
||||
|
||||
Args:
|
||||
dbcon (AvalonMongoDB): Ready to use connection to mongo with.
|
||||
parent (QObject): Parent Qt object.
|
||||
"""
|
||||
|
||||
|
|
@ -128,9 +127,8 @@ class _AssetModel(QtGui.QStandardItemModel):
|
|||
"data.color": 1
|
||||
}
|
||||
|
||||
def __init__(self, dbcon, parent=None):
|
||||
def __init__(self, parent=None):
|
||||
super(_AssetModel, self).__init__(parent=parent)
|
||||
self.dbcon = dbcon
|
||||
|
||||
self._refreshing = False
|
||||
self._doc_fetching_thread = None
|
||||
|
|
@ -142,6 +140,7 @@ class _AssetModel(QtGui.QStandardItemModel):
|
|||
self._item_ids_with_color = set()
|
||||
self._items_by_asset_id = {}
|
||||
|
||||
self._project_name = None
|
||||
self._last_project_name = None
|
||||
|
||||
@property
|
||||
|
|
@ -185,6 +184,16 @@ class _AssetModel(QtGui.QStandardItemModel):
|
|||
|
||||
return self.get_indexes_by_asset_ids(asset_ids)
|
||||
|
||||
def get_project_name(self):
|
||||
return self._project_name
|
||||
|
||||
def set_project_name(self, project_name, refresh):
|
||||
if self._project_name == project_name:
|
||||
return
|
||||
self._project_name = project_name
|
||||
if refresh:
|
||||
self.refresh()
|
||||
|
||||
def refresh(self, force=False):
|
||||
"""Refresh the data for the model.
|
||||
|
||||
|
|
@ -197,7 +206,7 @@ class _AssetModel(QtGui.QStandardItemModel):
|
|||
return
|
||||
self.stop_refresh()
|
||||
|
||||
project_name = self.dbcon.Session.get("AVALON_PROJECT")
|
||||
project_name = self._project_name
|
||||
clear_model = False
|
||||
if project_name != self._last_project_name:
|
||||
clear_model = True
|
||||
|
|
@ -216,23 +225,6 @@ class _AssetModel(QtGui.QStandardItemModel):
|
|||
def stop_refresh(self):
|
||||
self._stop_fetch_thread()
|
||||
|
||||
def clear_underlines(self):
|
||||
for asset_id in set(self._item_ids_with_color):
|
||||
self._item_ids_with_color.remove(asset_id)
|
||||
item = self._items_by_asset_id.get(asset_id)
|
||||
if item is not None:
|
||||
item.setData(None, ASSET_UNDERLINE_COLORS_ROLE)
|
||||
|
||||
def set_underline_colors(self, colors_by_asset_id):
|
||||
self.clear_underlines()
|
||||
|
||||
for asset_id, colors in colors_by_asset_id.items():
|
||||
item = self._items_by_asset_id.get(asset_id)
|
||||
if item is None:
|
||||
continue
|
||||
item.setData(colors, ASSET_UNDERLINE_COLORS_ROLE)
|
||||
self._item_ids_with_color.add(asset_id)
|
||||
|
||||
def _clear_items(self):
|
||||
root_item = self.invisibleRootItem()
|
||||
root_item.removeRows(0, root_item.rowCount())
|
||||
|
|
@ -357,7 +349,7 @@ class _AssetModel(QtGui.QStandardItemModel):
|
|||
self._doc_fetched.emit()
|
||||
|
||||
def _fetch_asset_docs(self):
|
||||
project_name = self.dbcon.current_project()
|
||||
project_name = self.get_project_name()
|
||||
if not project_name:
|
||||
return []
|
||||
|
||||
|
|
@ -392,7 +384,6 @@ class _AssetsWidget(QtWidgets.QWidget):
|
|||
inheritance changes.
|
||||
|
||||
Args:
|
||||
dbcon (AvalonMongoDB): Connection to avalon mongo db.
|
||||
parent (QWidget): Parent Qt widget.
|
||||
"""
|
||||
|
||||
|
|
@ -404,11 +395,9 @@ class _AssetsWidget(QtWidgets.QWidget):
|
|||
# It was double clicked on view
|
||||
double_clicked = QtCore.Signal()
|
||||
|
||||
def __init__(self, dbcon, parent=None):
|
||||
def __init__(self, parent=None):
|
||||
super(_AssetsWidget, self).__init__(parent=parent)
|
||||
|
||||
self.dbcon = dbcon
|
||||
|
||||
# Tree View
|
||||
model = self._create_source_model()
|
||||
proxy = self._create_proxy_model(model)
|
||||
|
|
@ -477,18 +466,28 @@ class _AssetsWidget(QtWidgets.QWidget):
|
|||
self._model = model
|
||||
self._proxy = proxy
|
||||
self._view = view
|
||||
self._last_project_name = None
|
||||
|
||||
self._last_btns_height = None
|
||||
|
||||
self._current_asset_name = None
|
||||
|
||||
self.model_selection = {}
|
||||
|
||||
@property
|
||||
def header_widget(self):
|
||||
return self._header_widget
|
||||
|
||||
def get_project_name(self):
|
||||
self._model.get_project_name()
|
||||
|
||||
def set_project_name(self, project_name, refresh=True):
|
||||
self._model.set_project_name(project_name, refresh)
|
||||
|
||||
def set_current_asset_name(self, asset_name):
|
||||
self._current_asset_name = asset_name
|
||||
|
||||
def _create_source_model(self):
|
||||
model = _AssetModel(dbcon=self.dbcon, parent=self)
|
||||
model = _AssetModel(parent=self)
|
||||
model.refreshed.connect(self._on_model_refresh)
|
||||
return model
|
||||
|
||||
|
|
@ -509,8 +508,8 @@ class _AssetsWidget(QtWidgets.QWidget):
|
|||
def stop_refresh(self):
|
||||
self._model.stop_refresh()
|
||||
|
||||
def _get_current_session_asset(self):
|
||||
return self.dbcon.Session.get("AVALON_ASSET")
|
||||
def _get_current_asset_name(self):
|
||||
return self._current_asset_name
|
||||
|
||||
def _on_current_asset_click(self):
|
||||
"""Trigger change of asset to current context asset.
|
||||
|
|
@ -518,10 +517,10 @@ class _AssetsWidget(QtWidgets.QWidget):
|
|||
in differnt way.
|
||||
"""
|
||||
|
||||
self.set_current_session_asset()
|
||||
self.select_current_asset()
|
||||
|
||||
def set_current_session_asset(self):
|
||||
asset_name = self._get_current_session_asset()
|
||||
def select_current_asset(self):
|
||||
asset_name = self._get_current_asset_name()
|
||||
if asset_name:
|
||||
self.select_asset_by_name(asset_name)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue