ayon-core/openpype/tools/ayon_launcher/models/selection.py
Jakub Trllo 87ed2f960d
Launcher tool: Refactor launcher tool (for AYON) (#5612)
* added helper classes to utils

* implemented base of ayon utils

* initial commit for launcher tool

* use image for extender

* actions are shown and can be triggered

* fix actions on finished refresh

* refresh automatically

* fix re-refreshing of projects model

* added page slide animation

* updated abstrack classes

* change how icon is prepared

* fix actions sorting

* show messages like in launcher tool

* do not clear items on refresh

* stop refresh timer only on close event

* use Ynput/AYON for local settings json

* register default actions in launcher action module

* change register naming

* move 'SquareButton' to utils widgets

* removed duplicated method

* removed unused variable

* removed unused import

* don't use lambda

* swap default name for 'OpenPypeSettingsRegistry'

* Change support version
2023-09-22 11:47:39 +02:00

72 lines
1.9 KiB
Python

class LauncherSelectionModel(object):
"""Model handling selection changes.
Triggering events:
- "selection.project.changed"
- "selection.folder.changed"
- "selection.task.changed"
"""
event_source = "launcher.selection.model"
def __init__(self, controller):
self._controller = controller
self._project_name = None
self._folder_id = None
self._task_name = None
self._task_id = None
def get_selected_project_name(self):
return self._project_name
def set_selected_project(self, project_name):
if project_name == self._project_name:
return
self._project_name = project_name
self._controller.emit_event(
"selection.project.changed",
{"project_name": project_name},
self.event_source
)
def get_selected_folder_id(self):
return self._folder_id
def set_selected_folder(self, folder_id):
if folder_id == self._folder_id:
return
self._folder_id = folder_id
self._controller.emit_event(
"selection.folder.changed",
{
"project_name": self._project_name,
"folder_id": folder_id,
},
self.event_source
)
def get_selected_task_name(self):
return self._task_name
def get_selected_task_id(self):
return self._task_id
def set_selected_task(self, task_id, task_name):
if task_id == self._task_id:
return
self._task_name = task_name
self._task_id = task_id
self._controller.emit_event(
"selection.task.changed",
{
"project_name": self._project_name,
"folder_id": self._folder_id,
"task_name": task_name,
"task_id": task_id,
},
self.event_source
)