ui initialization

This commit is contained in:
iLLiCiTiT 2021-10-29 18:46:49 +02:00
parent 45ea46ddf6
commit 1277e666a3

View file

@ -5,6 +5,17 @@ from Qt import QtWidgets, QtCore, QtGui
from avalon.api import AvalonMongoDB
from openpype import style
from openpype.tools.utils.widgets import AssetWidget
from openpype.tools.utils.constants import (
TASK_NAME_ROLE,
PROJECT_NAME_ROLE
)
from openpype.tools.utils.models import (
ProjectModel,
ProjectSortFilterProxy,
TasksModel,
TasksProxyModel
)
class ContextDialog(QtWidgets.QDialog):
@ -33,6 +44,88 @@ class ContextDialog(QtWidgets.QDialog):
dbcon = AvalonMongoDB()
# UI initialization
main_splitter = QtWidgets.QSplitter(self)
left_side_widget = QtWidgets.QWidget(main_splitter)
project_combobox = QtWidgets.QComboBox(left_side_widget)
project_delegate = QtWidgets.QStyledItemDelegate(project_combobox)
project_combobox.setItemDelegate(project_delegate)
project_model = ProjectModel(
dbcon,
only_active=True,
add_default_project=False
)
project_proxy = ProjectSortFilterProxy()
project_proxy.setSourceModel(project_model)
project_combobox.setModel(project_proxy)
# Assets widget
assets_widget = AssetWidget(
dbcon, multiselection=False, parent=left_side_widget
)
left_side_layout = QtWidgets.QVBoxLayout(left_side_widget)
left_side_layout.setContentsMargins(0, 0, 0, 0)
left_side_layout.addWidget(project_combobox)
left_side_layout.addWidget(assets_widget)
task_view = QtWidgets.QListView(main_splitter)
task_model = TasksModel(dbcon)
task_proxy = TasksProxyModel()
task_proxy.setSourceModel(task_model)
task_view.setModel(task_proxy)
main_splitter.addWidget(left_side_widget)
main_splitter.addWidget(task_view)
main_splitter.setStretchFactor(0, 7)
main_splitter.setStretchFactor(1, 3)
ok_btn = QtWidgets.QPushButton("OK", self)
buttons_layout = QtWidgets.QHBoxLayout()
buttons_layout.setContentsMargins(0, 0, 0, 0)
buttons_layout.addStretch(1)
buttons_layout.addWidget(ok_btn, 0)
main_layout = QtWidgets.QVBoxLayout(self)
main_layout.addWidget(main_splitter, 1)
main_layout.addLayout(buttons_layout, 0)
assets_timer = QtCore.QTimer()
assets_timer.setInterval(50)
assets_timer.setSingleShot(True)
assets_timer.timeout.connect(self._on_asset_refresh_timer)
project_combobox.currentIndexChanged.connect(
self._on_project_combo_change
)
assets_widget.selection_changed.connect(self._on_asset_change)
assets_widget.refresh_triggered.connect(self._on_asset_refresh_trigger)
task_view.selectionModel().selectionChanged.connect(
self._on_task_change
)
ok_btn.clicked.connect(self._on_ok_click)
self._dbcon = dbcon
self._project_combobox = project_combobox
self._project_model = project_model
self._project_proxy = project_proxy
self._project_delegate = project_delegate
self._assets_widget = assets_widget
self._task_view = task_view
self._task_model = task_model
self._task_proxy = task_proxy
self._ok_btn = ok_btn
self._strict = False
# Output of dialog
self._context_to_store = {
"project": None,
@ -40,6 +133,27 @@ class ContextDialog(QtWidgets.QDialog):
"task": None
}
def _on_asset_refresh_timer(self):
self._assets_widget.refresh()
def _on_asset_refresh_trigger(self):
self._on_asset_change()
def _on_asset_change(self):
self._set_asset_to_task_model()
def _on_task_change(self):
pass
def _confirm_values(self):
self._context_to_store["project"] = self.get_selected_project()
self._context_to_store["asset"] = self.get_selected_asset()
self._context_to_store["task"] = self.get_selected_task()
def _on_ok_click(self):
self._confirm_values()
self.accept()
def get_context(self):
return self._context_to_store