mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
create context selection is using hierarchy model
This commit is contained in:
parent
1027a41e8a
commit
c75c9d8d70
3 changed files with 72 additions and 17 deletions
|
|
@ -1725,6 +1725,15 @@ class PublisherController(BasePublisherController):
|
|||
def get_task_entity(self, project_name, task_id):
|
||||
return self._hierarchy_model.get_task_entity(project_name, task_id)
|
||||
|
||||
# Publisher custom method
|
||||
def get_folder_id_from_path(self, folder_path):
|
||||
folder_item = self._hierarchy_model.get_folder_item_by_path(
|
||||
self.project_name, folder_path
|
||||
)
|
||||
if folder_item:
|
||||
return folder_item.entity_id
|
||||
return None
|
||||
|
||||
# --- Publish specific callbacks ---
|
||||
def get_context_title(self):
|
||||
"""Get context title for artist shown at the top of main window."""
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ from qtpy import QtWidgets, QtCore, QtGui
|
|||
from ayon_core.lib.events import QueuedEventSystem
|
||||
from ayon_core.tools.utils import PlaceholderLineEdit
|
||||
|
||||
from ayon_core.tools.ayon_utils.models import HierarchyExpectedSelection
|
||||
from ayon_core.tools.ayon_utils.widgets import FoldersWidget, TasksWidget
|
||||
|
||||
|
||||
|
|
@ -43,7 +44,6 @@ class CreateSelectionModel(object):
|
|||
return self._folder_id
|
||||
|
||||
def set_selected_folder(self, folder_id):
|
||||
print(folder_id, self._folder_id)
|
||||
if folder_id == self._folder_id:
|
||||
return
|
||||
|
||||
|
|
@ -85,7 +85,10 @@ class CreateHierarchyController:
|
|||
def __init__(self, controller):
|
||||
self._event_system = QueuedEventSystem()
|
||||
self._controller = controller
|
||||
self._selection_model = CreateSelectionModel(controller)
|
||||
self._selection_model = CreateSelectionModel(self)
|
||||
self._expected_selection = HierarchyExpectedSelection(
|
||||
self, handle_project=False
|
||||
)
|
||||
|
||||
# Events system
|
||||
@property
|
||||
|
|
@ -97,7 +100,6 @@ class CreateHierarchyController:
|
|||
|
||||
if data is None:
|
||||
data = {}
|
||||
print("emit_event", topic, data, source)
|
||||
self.event_system.emit(topic, data, source)
|
||||
|
||||
def register_event_callback(self, topic, callback):
|
||||
|
|
@ -124,6 +126,21 @@ class CreateHierarchyController:
|
|||
def set_selected_task(self, task_id, task_name):
|
||||
self._selection_model.set_selected_task(task_id, task_name)
|
||||
|
||||
# Expected selection
|
||||
def get_expected_selection_data(self):
|
||||
return self._expected_selection.get_expected_selection_data()
|
||||
|
||||
def set_expected_selection(self, project_name, folder_id, task_name):
|
||||
self._expected_selection.set_expected_selection(
|
||||
project_name, folder_id, task_name
|
||||
)
|
||||
|
||||
def expected_folder_selected(self, folder_id):
|
||||
self._expected_selection.expected_folder_selected(folder_id)
|
||||
|
||||
def expected_task_selected(self, folder_id, task_name):
|
||||
self._expected_selection.expected_task_selected(folder_id, task_name)
|
||||
|
||||
|
||||
class CreateContextWidget(QtWidgets.QWidget):
|
||||
folder_changed = QtCore.Signal()
|
||||
|
|
@ -134,6 +151,7 @@ class CreateContextWidget(QtWidgets.QWidget):
|
|||
|
||||
self._controller = controller
|
||||
self._enabled = True
|
||||
self._last_project_name = None
|
||||
self._last_folder_id = None
|
||||
self._last_selected_task_name = None
|
||||
|
||||
|
|
@ -155,8 +173,12 @@ class CreateContextWidget(QtWidgets.QWidget):
|
|||
|
||||
hierarchy_controller = CreateHierarchyController(controller)
|
||||
|
||||
folders_widget = FoldersWidget(hierarchy_controller, self)
|
||||
tasks_widget = TasksWidget(hierarchy_controller, self)
|
||||
folders_widget = FoldersWidget(
|
||||
hierarchy_controller, self, handle_expected_selection=True
|
||||
)
|
||||
tasks_widget = TasksWidget(
|
||||
hierarchy_controller, self, handle_expected_selection=True
|
||||
)
|
||||
|
||||
main_layout = QtWidgets.QVBoxLayout(self)
|
||||
main_layout.setContentsMargins(0, 0, 0, 0)
|
||||
|
|
@ -168,6 +190,7 @@ class CreateContextWidget(QtWidgets.QWidget):
|
|||
folders_widget.selection_changed.connect(self._on_folder_change)
|
||||
tasks_widget.selection_changed.connect(self._on_task_change)
|
||||
current_context_btn.clicked.connect(self._on_current_context_click)
|
||||
folder_filter_input.textChanged.connect(self._on_folder_filter_change)
|
||||
|
||||
self._folder_filter_input = folder_filter_input
|
||||
self._current_context_btn = current_context_btn
|
||||
|
|
@ -192,9 +215,12 @@ class CreateContextWidget(QtWidgets.QWidget):
|
|||
folder_path = self._controller.current_asset_name
|
||||
self._current_context_btn.setVisible(bool(folder_path))
|
||||
|
||||
def set_selected_context(self, folder_path, task_name):
|
||||
self._folders_widget.set_selected_folder_path(folder_path)
|
||||
self._tasks_widget.set_selected_task(task_name)
|
||||
def set_selected_context(self, folder_id, task_name):
|
||||
self._hierarchy_controller.set_expected_selection(
|
||||
self._controller.project_name,
|
||||
folder_id,
|
||||
task_name
|
||||
)
|
||||
|
||||
def is_enabled(self):
|
||||
return self._enabled
|
||||
|
|
@ -215,14 +241,27 @@ class CreateContextWidget(QtWidgets.QWidget):
|
|||
self._clear_selection()
|
||||
|
||||
elif self._last_selected_task_name is not None:
|
||||
self.set_selected_folder(self._last_folder_id)
|
||||
self.select_task_name(self._last_selected_task_name)
|
||||
self._hierarchy_controller.set_expected_selection(
|
||||
self._last_project_name,
|
||||
self._last_folder_id,
|
||||
self._last_selected_task_name
|
||||
)
|
||||
|
||||
def refresh(self):
|
||||
self._last_project_name = self._controller.project_name
|
||||
folder_id = self._last_folder_id
|
||||
task_name = self._last_selected_task_name
|
||||
if folder_id is None:
|
||||
folder_path = self._controller.current_asset_name
|
||||
folder_id = self._controller.get_folder_id_from_path(folder_path)
|
||||
task_name = self._controller.current_task_name
|
||||
self._hierarchy_controller.set_selected_project(
|
||||
self._controller.project_name
|
||||
self._last_project_name
|
||||
)
|
||||
self._folders_widget.set_project_name(self._last_project_name)
|
||||
self._hierarchy_controller.set_expected_selection(
|
||||
self._last_project_name, folder_id, task_name
|
||||
)
|
||||
self._folders_widget.set_project_name(self._controller.project_name)
|
||||
|
||||
def _clear_selection(self):
|
||||
self._folders_widget.set_selected_folder(None)
|
||||
|
|
@ -234,6 +273,12 @@ class CreateContextWidget(QtWidgets.QWidget):
|
|||
self.task_changed.emit()
|
||||
|
||||
def _on_current_context_click(self):
|
||||
# TODO implement
|
||||
folder_path = self._controller.current_asset_name
|
||||
task_name = self._controller.current_task_name
|
||||
folder_id = self._controller.get_folder_id_from_path(folder_path)
|
||||
self._hierarchy_controller.set_expected_selection(
|
||||
self._last_project_name, folder_id, task_name
|
||||
)
|
||||
|
||||
def _on_folder_filter_change(self, text):
|
||||
self._folders_widget.set_name_filter(text)
|
||||
|
|
|
|||
|
|
@ -322,7 +322,7 @@ class CreateWidget(QtWidgets.QWidget):
|
|||
return self._controller.current_task_name
|
||||
|
||||
def _context_change_is_enabled(self):
|
||||
return self._context_widget.isEnabled()
|
||||
return self._context_widget.is_enabled()
|
||||
|
||||
def _get_asset_name(self):
|
||||
folder_path = None
|
||||
|
|
@ -335,7 +335,7 @@ class CreateWidget(QtWidgets.QWidget):
|
|||
|
||||
def _get_folder_id(self):
|
||||
folder_id = None
|
||||
if self._context_widget.isEnabled():
|
||||
if self._context_widget.is_enabled():
|
||||
folder_id = self._context_widget.get_selected_folder_id()
|
||||
return folder_id
|
||||
|
||||
|
|
@ -352,7 +352,7 @@ class CreateWidget(QtWidgets.QWidget):
|
|||
return task_name
|
||||
|
||||
def _set_context_enabled(self, enabled):
|
||||
check_prereq = self._context_widget.isEnabled() != enabled
|
||||
check_prereq = self._context_widget.is_enabled() != enabled
|
||||
self._context_widget.set_enabled(enabled)
|
||||
if check_prereq:
|
||||
self._invalidate_prereq()
|
||||
|
|
@ -404,8 +404,9 @@ class CreateWidget(QtWidgets.QWidget):
|
|||
# data
|
||||
self._refresh_creators()
|
||||
|
||||
folder_id = self._controller.get_folder_id_from_path(folder_path)
|
||||
self._context_widget.update_current_context_btn()
|
||||
self._context_widget.set_selected_context(folder_path, task_name)
|
||||
self._context_widget.set_selected_context(folder_id, task_name)
|
||||
|
||||
self._invalidate_prereq_deffered()
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue