use new widgets and models in launcher window

This commit is contained in:
iLLiCiTiT 2021-12-16 21:57:07 +01:00
parent 27d067fbdf
commit 9b044ffd82

View file

@ -8,17 +8,19 @@ from avalon.api import AvalonMongoDB
from openpype import style
from openpype.api import resources
from openpype.tools.utils.assets_widget import SingleSelectAssetsWidget
from openpype.tools.utils.tasks_widget import TasksWidget
from avalon.vendor import qtawesome
from .models import ProjectModel
from .lib import get_action_label, ProjectHandler
from .models import (
LauncherModel,
ProjectModel
)
from .lib import get_action_label
from .widgets import (
ProjectBar,
ActionBar,
ActionHistory,
SlidePageWidget
SlidePageWidget,
LauncherAssetsWidget,
LauncherTaskWidget
)
from openpype.tools.flickcharm import FlickCharm
@ -139,12 +141,14 @@ class AssetsPanel(QtWidgets.QWidget):
project_bar_layout.addWidget(project_bar)
# Assets widget
assets_widget = SingleSelectAssetsWidget(dbcon=self.dbcon, parent=self)
assets_widget = LauncherAssetsWidget(
launcher_model, dbcon=self.dbcon, parent=self
)
# Make assets view flickable
assets_widget.activate_flick_charm()
# Tasks widget
tasks_widget = TasksWidget(self.dbcon, self)
tasks_widget = LauncherTaskWidget(launcher_model, self.dbcon, self)
# Body
body = QtWidgets.QSplitter(self)
@ -166,19 +170,20 @@ class AssetsPanel(QtWidgets.QWidget):
layout.addWidget(body)
# signals
project_handler.project_changed.connect(self._on_project_changed)
launcher_model.project_changed.connect(self._on_project_changed)
assets_widget.selection_changed.connect(self._on_asset_changed)
assets_widget.refreshed.connect(self._on_asset_changed)
tasks_widget.task_changed.connect(self._on_task_change)
btn_back.clicked.connect(self.back_clicked)
self.project_handler = project_handler
self.project_bar = project_bar
self.assets_widget = assets_widget
self._tasks_widget = tasks_widget
self._btn_back = btn_back
self._launcher_model = launcher_model
def select_asset(self, asset_name):
self.assets_widget.select_asset_by_name(asset_name)
@ -197,8 +202,6 @@ class AssetsPanel(QtWidgets.QWidget):
def _on_project_changed(self):
self.session_changed.emit()
self.assets_widget.refresh()
def _on_asset_changed(self):
"""Callback on asset selection changed
@ -251,18 +254,17 @@ class LauncherWindow(QtWidgets.QDialog):
| QtCore.Qt.WindowCloseButtonHint
)
project_model = ProjectModel(self.dbcon)
project_handler = ProjectHandler(self.dbcon, project_model)
launcher_model = LauncherModel(self.dbcon)
project_panel = ProjectsPanel(project_handler)
asset_panel = AssetsPanel(project_handler, self.dbcon)
project_panel = ProjectsPanel(launcher_model)
asset_panel = AssetsPanel(launcher_model, self.dbcon)
page_slider = SlidePageWidget()
page_slider.addWidget(project_panel)
page_slider.addWidget(asset_panel)
# actions
actions_bar = ActionBar(project_handler, self.dbcon, self)
actions_bar = ActionBar(launcher_model, self.dbcon, self)
# statusbar
message_label = QtWidgets.QLabel(self)
@ -304,8 +306,8 @@ class LauncherWindow(QtWidgets.QDialog):
# signals
actions_bar.action_clicked.connect(self.on_action_clicked)
action_history.trigger_history.connect(self.on_history_action)
project_handler.project_changed.connect(self.on_project_change)
project_handler.timer_timeout.connect(self._on_refresh_timeout)
launcher_model.project_changed.connect(self.on_project_change)
launcher_model.timer_timeout.connect(self._on_refresh_timeout)
asset_panel.back_clicked.connect(self.on_back_clicked)
asset_panel.session_changed.connect(self.on_session_changed)
@ -315,7 +317,7 @@ class LauncherWindow(QtWidgets.QDialog):
self._message_timer = message_timer
self.project_handler = project_handler
self._launcher_model = launcher_model
self._message_label = message_label
self.project_panel = project_panel
@ -325,19 +327,19 @@ class LauncherWindow(QtWidgets.QDialog):
self.page_slider = page_slider
def showEvent(self, event):
self.project_handler.set_active(True)
self.project_handler.start_timer(True)
self._launcher_model.set_active(True)
self._launcher_model.start_refresh_timer(True)
super(LauncherWindow, self).showEvent(event)
def _on_refresh_timeout(self):
# Stop timer if widget is not visible
if not self.isVisible():
self.project_handler.stop_timer()
self._launcher_model.stop_refresh_timer()
def changeEvent(self, event):
if event.type() == QtCore.QEvent.ActivationChange:
self.project_handler.set_active(self.isActiveWindow())
self._launcher_model.set_active(self.isActiveWindow())
super(LauncherWindow, self).changeEvent(event)
def set_page(self, page):
@ -372,7 +374,7 @@ class LauncherWindow(QtWidgets.QDialog):
self.discover_actions()
def on_back_clicked(self):
self.project_handler.set_project(None)
self._launcher_model.set_project_name(None)
self.set_page(0)
self.discover_actions()