mirror of
https://github.com/TagStudioDev/TagStudio.git
synced 2026-08-19 18:42:26 +02:00
build: bump pyside version to 6.11.2
This commit is contained in:
+1
-1
@@ -27,7 +27,7 @@ dependencies = [
|
||||
"py7zr~=1.1.3",
|
||||
"pydantic~=2.10",
|
||||
"pydub~=0.25",
|
||||
"PySide6==6.8.0.*",
|
||||
"PySide6==6.11.2",
|
||||
"rarfile==4.2",
|
||||
"rawpy~=0.27",
|
||||
"Send2Trash>=1.8,<3",
|
||||
|
||||
@@ -52,7 +52,7 @@ def audio_album_thumb(filepath: Path, ext: str) -> Image.Image | None:
|
||||
image = artwork
|
||||
except (
|
||||
FileNotFoundError,
|
||||
id3.ID3NoHeaderError, # pyright: ignore[reportPrivateImportUsage]
|
||||
id3.ID3NoHeaderError,
|
||||
mp4.MP4MetadataError,
|
||||
mp4.MP4StreamInfoError,
|
||||
MutagenError,
|
||||
|
||||
@@ -77,4 +77,4 @@ class AutofillLineEdit(QLineEdit):
|
||||
# Filter out icon action(s)
|
||||
if action.text():
|
||||
menu.addAction(action)
|
||||
menu.exec(self.mapToGlobal(pos)) # pyright: ignore[reportArgumentType]
|
||||
menu.exec(self.mapToGlobal(pos))
|
||||
|
||||
@@ -11,6 +11,7 @@ from PySide6.QtWidgets import QWidget
|
||||
|
||||
from tagstudio.core.library.alchemy.fields import BaseFieldTemplate
|
||||
from tagstudio.core.library.alchemy.library import Library
|
||||
from tagstudio.core.utils.types import unwrap
|
||||
from tagstudio.i18n.translations import Translations
|
||||
from tagstudio.qt.app_settings import AppSettings
|
||||
from tagstudio.qt.controllers.edit_field_template_modal import EditFieldTemplateModal
|
||||
@@ -155,6 +156,7 @@ class FieldSuggestBox(SuggestBox[BaseFieldTemplate]):
|
||||
widget.setHidden(True)
|
||||
self.layout().content_layout.addWidget(widget)
|
||||
|
||||
widget_: QWidget = self.layout().content_layout.itemAt(index).widget()
|
||||
item = unwrap(self.layout().content_layout.itemAt(index))
|
||||
widget_: QWidget = unwrap(item.widget())
|
||||
assert isinstance(widget_, UnderlinedWidget)
|
||||
return widget_
|
||||
|
||||
@@ -11,6 +11,7 @@ from PySide6.QtWidgets import QMessageBox, QWidget
|
||||
|
||||
from tagstudio.core.library.alchemy.fields import BaseFieldTemplate
|
||||
from tagstudio.core.library.alchemy.library import Library
|
||||
from tagstudio.core.utils.types import unwrap
|
||||
from tagstudio.i18n.translations import Translations
|
||||
from tagstudio.qt.controllers.edit_field_template_modal import EditFieldTemplateModal
|
||||
from tagstudio.qt.controllers.field_template_widget import FieldTemplateWidget
|
||||
@@ -173,6 +174,7 @@ class FieldTemplateSearchPanel(SearchPanel[BaseFieldTemplate]):
|
||||
pad_field_template_widget.setHidden(True)
|
||||
self.layout().scroll_layout.addWidget(pad_field_template_widget)
|
||||
|
||||
field_template_widget: QWidget = self.layout().scroll_layout.itemAt(index).widget()
|
||||
item = unwrap(self.layout().scroll_layout.itemAt(index))
|
||||
field_template_widget: QWidget = unwrap(item.widget())
|
||||
assert isinstance(field_template_widget, FieldTemplateWidget)
|
||||
return field_template_widget
|
||||
|
||||
@@ -27,10 +27,10 @@ class ProgressWidget(QWidget):
|
||||
super().__init__()
|
||||
self.root = QVBoxLayout(self)
|
||||
self.pb = QProgressDialog(
|
||||
labelText=label_text,
|
||||
minimum=minimum,
|
||||
cancelButtonText=cancel_button_text, # pyright: ignore[reportArgumentType]
|
||||
maximum=maximum,
|
||||
label_text,
|
||||
cancel_button_text or "",
|
||||
minimum,
|
||||
maximum,
|
||||
)
|
||||
self.root.addWidget(self.pb)
|
||||
self.setFixedSize(432, 112)
|
||||
|
||||
@@ -166,7 +166,7 @@ class SearchPanel[T](ModalContent):
|
||||
if not query:
|
||||
self.layout().search_field.setFocus()
|
||||
parent: QWidget | None = self.parentWidget()
|
||||
if parent is not None: # pyright: ignore[reportUnnecessaryComparison]
|
||||
if parent is not None:
|
||||
parent.hide()
|
||||
return
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ from PySide6.QtGui import QAction, QPixmap, QShowEvent, Qt
|
||||
from PySide6.QtWidgets import QGraphicsOpacityEffect, QWidget
|
||||
|
||||
from tagstudio.core.library.alchemy.library import Library
|
||||
from tagstudio.core.utils.types import unwrap
|
||||
from tagstudio.i18n.translations import Translations
|
||||
from tagstudio.qt.app_settings import AppSettings
|
||||
from tagstudio.qt.controllers.autofill_line_edit import QtCore, QtGui
|
||||
@@ -110,7 +111,7 @@ class SuggestBox[T](QWidget):
|
||||
def _on_shift_held(self, held: bool) -> None:
|
||||
self._is_shift_held = held
|
||||
for i in range(0, self.layout().content_layout.count()):
|
||||
underlined_widget = self.layout().content_layout.itemAt(i).widget()
|
||||
underlined_widget = self.layout().content_layout.itemAt(i).widget() # pyright: ignore
|
||||
assert isinstance(underlined_widget, UnderlinedWidget)
|
||||
|
||||
if held and i == self._selection_index:
|
||||
@@ -128,7 +129,7 @@ class SuggestBox[T](QWidget):
|
||||
# Initialize the widget count (non-hidden)
|
||||
widget_count = 0
|
||||
for i in range(0, self.layout().content_layout.count()):
|
||||
widget = self.layout().content_layout.itemAt(i).widget()
|
||||
widget = unwrap(self.layout().content_layout.itemAt(i).widget()) # pyright: ignore
|
||||
if not widget.isHidden():
|
||||
widget_count += 1
|
||||
|
||||
@@ -149,7 +150,7 @@ class SuggestBox[T](QWidget):
|
||||
|
||||
# Draw the correct underline for the selected widget
|
||||
for i in range(0, widget_count):
|
||||
underlined_widget = self.layout().content_layout.itemAt(i).widget()
|
||||
underlined_widget = self.layout().content_layout.itemAt(i).widget() # pyright: ignore
|
||||
assert isinstance(underlined_widget, UnderlinedWidget)
|
||||
if i == self._selection_index:
|
||||
underlined_widget.toggle_underline(is_hidden=False)
|
||||
@@ -216,7 +217,9 @@ class SuggestBox[T](QWidget):
|
||||
self._selection_index = 0
|
||||
if self.layout().content_layout.count() > 0:
|
||||
self.layout().scroll_area.ensureWidgetVisible(
|
||||
self.layout().content_layout.itemAt(0).widget(), xmargin=16, ymargin=0
|
||||
self.layout().content_layout.itemAt(0).widget(), # pyright: ignore
|
||||
xmargin=16,
|
||||
ymargin=0,
|
||||
)
|
||||
|
||||
# Get results for the search query
|
||||
|
||||
@@ -12,6 +12,7 @@ from PySide6.QtWidgets import QMessageBox, QWidget
|
||||
from tagstudio.core.constants import RESERVED_TAG_END, RESERVED_TAG_START
|
||||
from tagstudio.core.library.alchemy.library import Library
|
||||
from tagstudio.core.library.alchemy.models import Tag
|
||||
from tagstudio.core.utils.types import unwrap
|
||||
from tagstudio.i18n.translations import Translations
|
||||
from tagstudio.qt.controllers.modal import Modal
|
||||
from tagstudio.qt.controllers.modal_content import ModalContent
|
||||
@@ -207,6 +208,7 @@ class TagSearchPanel(SearchPanel[Tag]):
|
||||
pad_tag_widget.setHidden(True)
|
||||
self.layout().scroll_layout.addWidget(pad_tag_widget)
|
||||
|
||||
tag_widget: QWidget = self.layout().scroll_layout.itemAt(index).widget()
|
||||
item = unwrap(self.layout().scroll_layout.itemAt(index))
|
||||
tag_widget: QWidget = unwrap(item.widget())
|
||||
assert isinstance(tag_widget, TagWidget)
|
||||
return tag_widget
|
||||
|
||||
@@ -12,6 +12,7 @@ from PySide6.QtWidgets import QGraphicsOpacityEffect, QWidget
|
||||
|
||||
from tagstudio.core.library.alchemy.library import Library
|
||||
from tagstudio.core.library.alchemy.models import Tag
|
||||
from tagstudio.core.utils.types import unwrap
|
||||
from tagstudio.i18n.translations import Translations
|
||||
from tagstudio.qt.app_settings import AppSettings
|
||||
from tagstudio.qt.controllers.modal import Modal
|
||||
@@ -191,6 +192,7 @@ class TagSuggestBox(SuggestBox[Tag]):
|
||||
widget.setHidden(True)
|
||||
self.layout().content_layout.addWidget(widget)
|
||||
|
||||
widget_: QWidget = self.layout().content_layout.itemAt(index).widget()
|
||||
item = unwrap(self.layout().content_layout.itemAt(index))
|
||||
widget_: QWidget = unwrap(item.widget())
|
||||
assert isinstance(widget_, UnderlinedWidget)
|
||||
return widget_
|
||||
|
||||
@@ -6,6 +6,7 @@ from typing import override
|
||||
|
||||
from PySide6.QtWidgets import QWidget
|
||||
|
||||
from tagstudio.core.utils.types import unwrap
|
||||
from tagstudio.qt.views.underlined_widget_view import UnderlinedWidgetView
|
||||
|
||||
|
||||
@@ -21,7 +22,7 @@ class UnderlinedWidget(QWidget):
|
||||
|
||||
@property
|
||||
def widget(self) -> QWidget:
|
||||
return self.layout().itemAt(0).widget()
|
||||
return unwrap(unwrap(self.layout().itemAt(0)).widget())
|
||||
|
||||
@override
|
||||
def layout(self) -> UnderlinedWidgetView:
|
||||
|
||||
@@ -359,7 +359,7 @@ class BuildTagPanel(ModalContent):
|
||||
|
||||
def set_categories(self, added_parent_id: int | None = None, removed_parent: bool = False):
|
||||
while self.category_scroll_layout.itemAt(0):
|
||||
self.category_scroll_layout.takeAt(0).widget().deleteLater()
|
||||
self.category_scroll_layout.takeAt(0).widget().deleteLater() # pyright: ignore[reportOptionalMemberAccess]
|
||||
|
||||
c = QWidget()
|
||||
layout = QVBoxLayout(c)
|
||||
@@ -480,7 +480,7 @@ class BuildTagPanel(ModalContent):
|
||||
|
||||
def set_parent_tags(self):
|
||||
while self.parent_tags_scroll_layout.itemAt(0):
|
||||
self.parent_tags_scroll_layout.takeAt(0).widget().deleteLater()
|
||||
self.parent_tags_scroll_layout.takeAt(0).widget().deleteLater() # pyright: ignore[reportOptionalMemberAccess]
|
||||
|
||||
c = QWidget()
|
||||
layout = QVBoxLayout(c)
|
||||
|
||||
@@ -60,7 +60,7 @@ class ColorBoxWidget(FieldWidget):
|
||||
color_widgets: list[TagColorLabel] = []
|
||||
|
||||
while self.base_layout.itemAt(0):
|
||||
unwrap(self.base_layout.takeAt(0)).widget().deleteLater()
|
||||
unwrap(self.base_layout.takeAt(0)).widget().deleteLater() # pyright: ignore[reportOptionalMemberAccess]
|
||||
|
||||
for color in colors_:
|
||||
color_widget = TagColorLabel(
|
||||
|
||||
@@ -12,6 +12,7 @@ from PySide6.QtCore import QEvent, QSize, Qt
|
||||
from PySide6.QtGui import QEnterEvent, QPixmap, QResizeEvent
|
||||
from PySide6.QtWidgets import QHBoxLayout, QLabel, QPushButton, QVBoxLayout, QWidget
|
||||
|
||||
from tagstudio.core.utils.types import unwrap
|
||||
from tagstudio.qt.resource_manager import ResourceManager
|
||||
from tagstudio.qt.views.styles.color_overlay import auto_theme_overlay
|
||||
from tagstudio.qt.views.styles.stylesheets import container_style, header
|
||||
@@ -137,16 +138,18 @@ class FieldContainer(QWidget):
|
||||
self.remove_button.clicked.connect(callback)
|
||||
|
||||
def set_inner_widget(self, widget: FieldWidget) -> None:
|
||||
if self.field_layout.itemAt(0):
|
||||
old: QWidget = self.field_layout.itemAt(0).widget()
|
||||
item = self.field_layout.itemAt(0)
|
||||
if item:
|
||||
old: QWidget = unwrap(item.widget())
|
||||
self.field_layout.removeWidget(old)
|
||||
old.deleteLater()
|
||||
|
||||
self.field_layout.addWidget(widget)
|
||||
|
||||
def get_inner_widget(self) -> QWidget | None:
|
||||
if self.field_layout.itemAt(0):
|
||||
return self.field_layout.itemAt(0).widget()
|
||||
item = self.field_layout.itemAt(0)
|
||||
if item:
|
||||
return item.widget()
|
||||
return None
|
||||
|
||||
def set_title(self, title: str) -> None:
|
||||
|
||||
@@ -130,7 +130,7 @@ class FileAttributes(QWidget):
|
||||
stats = FileAttributeData()
|
||||
|
||||
if not filepath:
|
||||
self.layout().setSpacing(0)
|
||||
self.layout().setSpacing(0) # pyright: ignore[reportOptionalMemberAccess]
|
||||
self.file_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
||||
self.file_label.setText(f"<i>{Translations['preview.no_selection']}</i>")
|
||||
self.file_label.set_file_path(Path())
|
||||
@@ -147,7 +147,7 @@ class FileAttributes(QWidget):
|
||||
elif self.driver.settings.show_filepath == ShowFilepathOption.SHOW_FILENAMES_ONLY:
|
||||
display_path = Path(filepath.name)
|
||||
|
||||
self.layout().setSpacing(6)
|
||||
self.layout().setSpacing(6) # pyright: ignore[reportOptionalMemberAccess]
|
||||
self.file_label.setAlignment(Qt.AlignmentFlag.AlignLeft)
|
||||
self.file_label.set_file_path(filepath)
|
||||
self.dimensions_label.setHidden(False)
|
||||
@@ -234,7 +234,7 @@ class FileAttributes(QWidget):
|
||||
|
||||
def update_multi_selection(self, count: int):
|
||||
"""Format attributes for multiple selected items."""
|
||||
self.layout().setSpacing(0)
|
||||
self.layout().setSpacing(0) # pyright: ignore[reportOptionalMemberAccess]
|
||||
self.file_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
||||
self.file_label.setText(Translations.format("preview.multiple_selection", count=count))
|
||||
self.file_label.setCursor(Qt.CursorShape.ArrowCursor)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# SPDX-FileCopyrightText: (c) TagStudio Contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
# pyright: reportOptionalMemberAccess=false
|
||||
|
||||
import math
|
||||
from collections.abc import Sequence
|
||||
|
||||
@@ -98,8 +98,8 @@ class JsonMigrationModal(QObject):
|
||||
body_label = QLabel(Translations["json_migration.info.description"])
|
||||
body_label.setWordWrap(True)
|
||||
body_label.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
|
||||
body_wrapper.layout().addWidget(body_label)
|
||||
body_wrapper.layout().setContentsMargins(0, 36, 0, 0)
|
||||
body_wrapper.layout().addWidget(body_label) # pyright: ignore[reportOptionalMemberAccess]
|
||||
body_wrapper.layout().setContentsMargins(0, 36, 0, 0) # pyright: ignore[reportOptionalMemberAccess]
|
||||
|
||||
cancel_button = QPushButton(Translations["generic.cancel"])
|
||||
next_button = QPushButton(Translations["generic.continue"])
|
||||
@@ -287,9 +287,9 @@ class JsonMigrationModal(QObject):
|
||||
body_container_layout.addStretch(1)
|
||||
body_container_layout.addWidget(new_lib_container)
|
||||
body_container_layout.addStretch(2)
|
||||
self.body_wrapper_01.layout().addWidget(body_container)
|
||||
self.body_wrapper_01.layout().addWidget(desc_label)
|
||||
self.body_wrapper_01.layout().setSpacing(12)
|
||||
self.body_wrapper_01.layout().addWidget(body_container) # pyright: ignore[reportOptionalMemberAccess]
|
||||
self.body_wrapper_01.layout().addWidget(desc_label) # pyright: ignore[reportOptionalMemberAccess]
|
||||
self.body_wrapper_01.layout().setSpacing(12) # pyright: ignore[reportOptionalMemberAccess]
|
||||
|
||||
back_button = QPushButton(Translations["generic.navigation.back"])
|
||||
start_button = QPushButton(Translations["json_migration.start_and_preview"])
|
||||
@@ -352,14 +352,9 @@ class JsonMigrationModal(QObject):
|
||||
|
||||
def migration_progress(self, skip_ui: bool = False):
|
||||
"""Initialize the progress bar and iterator for the library migration."""
|
||||
pb = QProgressDialog(
|
||||
labelText="",
|
||||
cancelButtonText="",
|
||||
minimum=0,
|
||||
maximum=0,
|
||||
)
|
||||
pb.setCancelButton(None) # pyright: ignore[reportArgumentType]
|
||||
self.body_wrapper_01.layout().addWidget(pb)
|
||||
pb = QProgressDialog("", "", 0, 0)
|
||||
pb.setCancelButton(None)
|
||||
self.body_wrapper_01.layout().addWidget(pb) # pyright: ignore[reportOptionalMemberAccess]
|
||||
|
||||
try:
|
||||
iterator = FunctionIterator(self.migration_iterator)
|
||||
@@ -480,26 +475,26 @@ class JsonMigrationModal(QObject):
|
||||
|
||||
def update_json_entry_count(self, value: int):
|
||||
self.old_entry_count = value
|
||||
label: QLabel = self.old_content_layout.itemAtPosition(self.entries_row, 1).widget() # pyright: ignore[reportAssignmentType]
|
||||
label: QLabel = self.old_content_layout.itemAtPosition(self.entries_row, 1).widget() # pyright: ignore
|
||||
label.setText(self.color_value_default(value))
|
||||
|
||||
def update_json_tag_count(self, value: int):
|
||||
self.old_tag_count = value
|
||||
label: QLabel = self.old_content_layout.itemAtPosition(self.tags_row, 1).widget() # pyright: ignore[reportAssignmentType]
|
||||
label: QLabel = self.old_content_layout.itemAtPosition(self.tags_row, 1).widget() # pyright: ignore
|
||||
label.setText(self.color_value_default(value))
|
||||
|
||||
def update_sql_value(self, row: int, value: int | bool, old_value: int | bool):
|
||||
label: QLabel = self.new_content_layout.itemAtPosition(row, 1).widget() # pyright: ignore[reportAssignmentType]
|
||||
warning_icon: QLabel = self.new_content_layout.itemAtPosition(row, 2).widget() # pyright: ignore[reportAssignmentType]
|
||||
label: QLabel = self.new_content_layout.itemAtPosition(row, 1).widget() # pyright: ignore
|
||||
warning_icon: QLabel = self.new_content_layout.itemAtPosition(row, 2).widget() # pyright: ignore
|
||||
label.setText(self.color_value_conditional(old_value, value))
|
||||
warning_icon.setText("" if old_value == value else self.warning)
|
||||
|
||||
def update_parity_value(self, row: int, value: bool):
|
||||
result: str = self.match_text if value else self.differ_text
|
||||
old_label: QLabel = self.old_content_layout.itemAtPosition(row, 1).widget() # pyright: ignore[reportAssignmentType]
|
||||
new_label: QLabel = self.new_content_layout.itemAtPosition(row, 1).widget() # pyright: ignore[reportAssignmentType]
|
||||
old_warning_icon: QLabel = self.old_content_layout.itemAtPosition(row, 2).widget() # pyright: ignore[reportAssignmentType]
|
||||
new_warning_icon: QLabel = self.new_content_layout.itemAtPosition(row, 2).widget() # pyright: ignore[reportAssignmentType]
|
||||
old_label: QLabel = self.old_content_layout.itemAtPosition(row, 1).widget() # pyright: ignore
|
||||
new_label: QLabel = self.new_content_layout.itemAtPosition(row, 1).widget() # pyright: ignore
|
||||
old_warning_icon: QLabel = self.old_content_layout.itemAtPosition(row, 2).widget() # pyright: ignore
|
||||
new_warning_icon: QLabel = self.new_content_layout.itemAtPosition(row, 2).widget() # pyright: ignore
|
||||
old_label.setText(self.color_value_conditional(self.match_text, result))
|
||||
new_label.setText(self.color_value_conditional(self.match_text, result))
|
||||
old_warning_icon.setText("" if value else self.warning)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# SPDX-FileCopyrightText: (c) TagStudio Contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
|
||||
# pyright: reportOptionalMemberAccess=false
|
||||
from typing import override
|
||||
|
||||
import structlog
|
||||
@@ -9,6 +9,7 @@ from PySide6 import QtCore, QtGui
|
||||
from PySide6.QtCore import Qt
|
||||
from PySide6.QtWidgets import QHBoxLayout, QLabel, QVBoxLayout, QWidget
|
||||
|
||||
from tagstudio.core.utils.types import unwrap
|
||||
from tagstudio.qt.mixed.paged_panel_state import PagedPanelState
|
||||
from tagstudio.qt.views.styles.stylesheets import header
|
||||
|
||||
@@ -96,7 +97,7 @@ class PagedPanel(QWidget):
|
||||
# Update Body Widget
|
||||
if self.body_layout.itemAt(0):
|
||||
self.body_layout.itemAt(0).widget().setHidden(True)
|
||||
self.body_layout.removeWidget(self.body_layout.itemAt(0).widget())
|
||||
self.body_layout.removeWidget(unwrap(self.body_layout.itemAt(0).widget()))
|
||||
self.body_layout.addWidget(frame.body_wrapper)
|
||||
self.body_layout.itemAt(0).widget().setHidden(False)
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# SPDX-FileCopyrightText: (c) TagStudio Contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
# pyright: reportOptionalMemberAccess=false
|
||||
|
||||
from typing import cast, override
|
||||
from warnings import catch_warnings
|
||||
|
||||
@@ -23,6 +23,7 @@ from PySide6.QtWidgets import (
|
||||
|
||||
from tagstudio.core.constants import RESERVED_NAMESPACE_PREFIX
|
||||
from tagstudio.core.enums import Theme
|
||||
from tagstudio.core.utils.types import unwrap
|
||||
from tagstudio.i18n.translations import Translations
|
||||
from tagstudio.qt.controllers.modal import Modal
|
||||
from tagstudio.qt.mixed.build_namespace import BuildNamespacePanel
|
||||
@@ -166,7 +167,8 @@ class TagColorManager(QWidget):
|
||||
|
||||
def reset(self):
|
||||
while self.scroll_layout.count():
|
||||
widget = self.scroll_layout.itemAt(0).widget()
|
||||
item = unwrap(self.scroll_layout.itemAt(0))
|
||||
widget = unwrap(item.widget())
|
||||
self.scroll_layout.removeWidget(widget)
|
||||
widget.deleteLater()
|
||||
self.is_initialized = False
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
# SPDX-FileCopyrightText: (C) TagStudio Contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
# pyright: reportOptionalMemberAccess=false
|
||||
|
||||
|
||||
"""PySide6 port of the widgets/layouts/flowlayout example from Qt v6.x."""
|
||||
|
||||
@@ -44,14 +46,14 @@ class FlowLayout(QLayout):
|
||||
return len(self._item_list)
|
||||
|
||||
@override
|
||||
def itemAt(self, index: int) -> QLayoutItem | None: # pyright: ignore[reportIncompatibleMethodOverride]
|
||||
def itemAt(self, index: int) -> QLayoutItem | None:
|
||||
if 0 <= index < len(self._item_list):
|
||||
return self._item_list[index]
|
||||
|
||||
return None
|
||||
|
||||
@override
|
||||
def takeAt(self, index: int) -> QLayoutItem | None: # pyright: ignore[reportIncompatibleMethodOverride]
|
||||
def takeAt(self, index: int) -> QLayoutItem | None:
|
||||
if 0 <= index < len(self._item_list):
|
||||
return self._item_list.pop(index)
|
||||
|
||||
|
||||
@@ -198,7 +198,7 @@ class ThumbGridLayout(QLayout):
|
||||
return
|
||||
|
||||
per_row, width_offset, height_offset = self._size(rect.right())
|
||||
view_height = self.parentWidget().parentWidget().height()
|
||||
view_height = self.parentWidget().parentWidget().height() # pyright: ignore[reportOptionalMemberAccess]
|
||||
offset = self.scroll_area.verticalScrollBar().value()
|
||||
if self._scroll_to is not None:
|
||||
try:
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
# pyright: reportPrivateUsage = false
|
||||
# pyright: reportOptionalMemberAccess=false
|
||||
|
||||
from collections.abc import Callable
|
||||
from typing import cast
|
||||
|
||||
Reference in New Issue
Block a user