use filters widget in workfiles tool

This commit is contained in:
Jakub Trllo 2025-11-10 17:04:29 +01:00
parent f9f55b48b0
commit ba4ecc6f80

View file

@ -6,12 +6,11 @@ from ayon_core.tools.utils import (
FoldersWidget, FoldersWidget,
GoToCurrentButton, GoToCurrentButton,
MessageOverlayObject, MessageOverlayObject,
NiceCheckbox,
PlaceholderLineEdit, PlaceholderLineEdit,
RefreshButton, RefreshButton,
TasksWidget, TasksWidget,
FoldersFiltersWidget,
) )
from ayon_core.tools.utils.lib import checkstate_int_to_enum
from ayon_core.tools.workfiles.control import BaseWorkfileController from ayon_core.tools.workfiles.control import BaseWorkfileController
from .files_widget import FilesWidget from .files_widget import FilesWidget
@ -69,7 +68,6 @@ class WorkfilesToolWindow(QtWidgets.QWidget):
self._default_window_flags = flags self._default_window_flags = flags
self._folders_widget = None self._folders_widget = None
self._folder_filter_input = None
self._files_widget = None self._files_widget = None
@ -178,48 +176,33 @@ class WorkfilesToolWindow(QtWidgets.QWidget):
col_widget = QtWidgets.QWidget(parent) col_widget = QtWidgets.QWidget(parent)
header_widget = QtWidgets.QWidget(col_widget) header_widget = QtWidgets.QWidget(col_widget)
folder_filter_input = PlaceholderLineEdit(header_widget) filters_widget = FoldersFiltersWidget(header_widget)
folder_filter_input.setPlaceholderText("Filter folders..")
go_to_current_btn = GoToCurrentButton(header_widget) go_to_current_btn = GoToCurrentButton(header_widget)
refresh_btn = RefreshButton(header_widget) refresh_btn = RefreshButton(header_widget)
header_layout = QtWidgets.QHBoxLayout(header_widget)
header_layout.setContentsMargins(0, 0, 0, 0)
header_layout.addWidget(filters_widget, 1)
header_layout.addWidget(go_to_current_btn, 0)
header_layout.addWidget(refresh_btn, 0)
folder_widget = FoldersWidget( folder_widget = FoldersWidget(
controller, col_widget, handle_expected_selection=True controller, col_widget, handle_expected_selection=True
) )
my_tasks_tooltip = (
"Filter folders and task to only those you are assigned to."
)
my_tasks_label = QtWidgets.QLabel("My tasks")
my_tasks_label.setToolTip(my_tasks_tooltip)
my_tasks_checkbox = NiceCheckbox(folder_widget)
my_tasks_checkbox.setChecked(False)
my_tasks_checkbox.setToolTip(my_tasks_tooltip)
header_layout = QtWidgets.QHBoxLayout(header_widget)
header_layout.setContentsMargins(0, 0, 0, 0)
header_layout.addWidget(folder_filter_input, 1)
header_layout.addWidget(go_to_current_btn, 0)
header_layout.addWidget(refresh_btn, 0)
header_layout.addWidget(my_tasks_label, 0)
header_layout.addWidget(my_tasks_checkbox, 0)
col_layout = QtWidgets.QVBoxLayout(col_widget) col_layout = QtWidgets.QVBoxLayout(col_widget)
col_layout.setContentsMargins(0, 0, 0, 0) col_layout.setContentsMargins(0, 0, 0, 0)
col_layout.addWidget(header_widget, 0) col_layout.addWidget(header_widget, 0)
col_layout.addWidget(folder_widget, 1) col_layout.addWidget(folder_widget, 1)
folder_filter_input.textChanged.connect(self._on_folder_filter_change) filters_widget.text_changed.connect(self._on_folder_filter_change)
go_to_current_btn.clicked.connect(self._on_go_to_current_clicked) filters_widget.my_tasks_changed.connect(
refresh_btn.clicked.connect(self._on_refresh_clicked)
my_tasks_checkbox.stateChanged.connect(
self._on_my_tasks_checkbox_state_changed self._on_my_tasks_checkbox_state_changed
) )
go_to_current_btn.clicked.connect(self._on_go_to_current_clicked)
refresh_btn.clicked.connect(self._on_refresh_clicked)
self._folder_filter_input = folder_filter_input
self._folders_widget = folder_widget self._folders_widget = folder_widget
return col_widget return col_widget
@ -403,11 +386,10 @@ class WorkfilesToolWindow(QtWidgets.QWidget):
else: else:
self.close() self.close()
def _on_my_tasks_checkbox_state_changed(self, state): def _on_my_tasks_checkbox_state_changed(self, enabled: bool) -> None:
folder_ids = None folder_ids = None
task_ids = None task_ids = None
state = checkstate_int_to_enum(state) if enabled:
if state == QtCore.Qt.Checked:
entity_ids = self._controller.get_my_tasks_entity_ids( entity_ids = self._controller.get_my_tasks_entity_ids(
self._project_name self._project_name
) )