diff --git a/tagstudio/src/qt/widgets/fields.py b/tagstudio/src/qt/widgets/fields.py index 44ce64bb..f4fd6ae1 100644 --- a/tagstudio/src/qt/widgets/fields.py +++ b/tagstudio/src/qt/widgets/fields.py @@ -12,6 +12,7 @@ from PIL import Image, ImageQt from PySide6.QtCore import QEvent, Qt from PySide6.QtGui import QEnterEvent, QPixmap from PySide6.QtWidgets import QHBoxLayout, QLabel, QPushButton, QVBoxLayout, QWidget +from src.core.enums import Theme class FieldContainer(QWidget): @@ -31,6 +32,19 @@ class FieldContainer(QWidget): ).resize((math.floor(24 * 1.25), math.floor(24 * 1.25))) trash_icon_128.load() + # TODO: There should be a global button theme somewhere. + container_style = ( + f"QWidget#fieldContainer{{" + "border-radius:4px;" + f"}}" + f"QWidget#fieldContainer::hover{{" + f"background-color:{Theme.COLOR_HOVER.value};" + f"}}" + f"QWidget#fieldContainer::pressed{{" + f"background-color:{Theme.COLOR_PRESSED.value};" + f"}}" + ) + def __init__(self, title: str = "Field", inline: bool = True) -> None: super().__init__() self.setObjectName("fieldContainer") @@ -47,12 +61,12 @@ class FieldContainer(QWidget): self.inner_layout = QVBoxLayout() self.inner_layout.setObjectName("innerLayout") - self.inner_layout.setContentsMargins(0, 0, 0, 0) + self.inner_layout.setContentsMargins(6, 0, 6, 6) self.inner_layout.setSpacing(0) - self.inner_container = QWidget() - self.inner_container.setObjectName("innerContainer") - self.inner_container.setLayout(self.inner_layout) - self.root_layout.addWidget(self.inner_container) + self.field_container = QWidget() + self.field_container.setObjectName("fieldContainer") + self.field_container.setLayout(self.inner_layout) + self.root_layout.addWidget(self.field_container) self.title_container = QWidget() self.title_layout = QHBoxLayout(self.title_container) @@ -66,12 +80,12 @@ class FieldContainer(QWidget): self.title_widget.setMinimumHeight(button_size) self.title_widget.setObjectName("fieldTitle") self.title_widget.setWordWrap(True) - self.title_widget.setStyleSheet("font-weight: bold; font-size: 14px;") self.title_widget.setText(title) self.title_layout.addWidget(self.title_widget) self.title_layout.addStretch(2) self.copy_button = QPushButton() + self.copy_button.setObjectName("copyButton") self.copy_button.setMinimumSize(button_size, button_size) self.copy_button.setMaximumSize(button_size, button_size) self.copy_button.setFlat(True) @@ -81,6 +95,7 @@ class FieldContainer(QWidget): self.copy_button.setHidden(True) self.edit_button = QPushButton() + self.edit_button.setObjectName("editButton") self.edit_button.setMinimumSize(button_size, button_size) self.edit_button.setMaximumSize(button_size, button_size) self.edit_button.setFlat(True) @@ -90,6 +105,7 @@ class FieldContainer(QWidget): self.edit_button.setHidden(True) self.remove_button = QPushButton() + self.remove_button.setObjectName("removeButton") self.remove_button.setMinimumSize(button_size, button_size) self.remove_button.setMaximumSize(button_size, button_size) self.remove_button.setFlat(True) @@ -98,13 +114,15 @@ class FieldContainer(QWidget): self.title_layout.addWidget(self.remove_button) self.remove_button.setHidden(True) - self.field_container = QWidget() - self.field_container.setObjectName("fieldContainer") + self.field = QWidget() + self.field.setObjectName("field") self.field_layout = QHBoxLayout() self.field_layout.setObjectName("fieldLayout") self.field_layout.setContentsMargins(0, 0, 0, 0) - self.field_container.setLayout(self.field_layout) - self.inner_layout.addWidget(self.field_container) + self.field.setLayout(self.field_layout) + self.inner_layout.addWidget(self.field) + + self.setStyleSheet(FieldContainer.container_style) def set_copy_callback(self, callback: Callable | None = None): with catch_warnings(record=True): @@ -144,8 +162,8 @@ class FieldContainer(QWidget): return None def set_title(self, title: str): - self.title = title - self.title_widget.setText(title) + self.title = self.title = f"

{title}

" + self.title_widget.setText(self.title) def set_inline(self, inline: bool): self.inline = inline diff --git a/tagstudio/src/qt/widgets/preview/field_containers.py b/tagstudio/src/qt/widgets/preview/field_containers.py index 333a6a27..a61d3a0d 100644 --- a/tagstudio/src/qt/widgets/preview/field_containers.py +++ b/tagstudio/src/qt/widgets/preview/field_containers.py @@ -68,7 +68,8 @@ class FieldContainers(QWidget): self.scroll_layout = QVBoxLayout() self.scroll_layout.setAlignment(Qt.AlignmentFlag.AlignTop) - self.scroll_layout.setContentsMargins(6, 1, 6, 6) + self.scroll_layout.setContentsMargins(3, 3, 3, 3) + self.scroll_layout.setSpacing(0) scroll_container: QWidget = QWidget() scroll_container.setObjectName("entryScrollContainer") @@ -77,7 +78,7 @@ class FieldContainers(QWidget): info_section = QWidget() info_layout = QVBoxLayout(info_section) info_layout.setContentsMargins(0, 0, 0, 0) - info_layout.setSpacing(6) + info_layout.setSpacing(0) self.scroll_area = QScrollArea() self.scroll_area.setObjectName("entryScrollArea") diff --git a/tagstudio/src/qt/widgets/preview_panel.py b/tagstudio/src/qt/widgets/preview_panel.py index a88768fa..0ae9c0e5 100644 --- a/tagstudio/src/qt/widgets/preview_panel.py +++ b/tagstudio/src/qt/widgets/preview_panel.py @@ -44,6 +44,7 @@ class PreviewPanel(QWidget): f"QPushButton{{" f"background-color:{Theme.COLOR_BG.value};" "border-radius:6px;" + "font-weight: 500;" "text-align: center;" f"}}" f"QPushButton::hover{{" diff --git a/tagstudio/src/qt/widgets/tag.py b/tagstudio/src/qt/widgets/tag.py index 46f5fb9b..efc288bb 100644 --- a/tagstudio/src/qt/widgets/tag.py +++ b/tagstudio/src/qt/widgets/tag.py @@ -1,4 +1,4 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). +# Copyright (C) 2025 Travis Abendshien (CyanVoxel). # Licensed under the GPL-3.0 License. # Created for TagStudio: https://github.com/CyanVoxel/TagStudio @@ -114,8 +114,6 @@ class TagWidget(QWidget): self.tag = tag self.has_edit = has_edit self.has_remove = has_remove - # self.bg_label = QLabel() - # self.setStyleSheet('background-color:blue;') # if on_click_callback: self.setCursor(Qt.CursorShape.PointingHandCursor) @@ -148,7 +146,7 @@ class TagWidget(QWidget): self.inner_layout.setContentsMargins(2, 2, 2, 2) self.bg_button.setLayout(self.inner_layout) - self.bg_button.setMinimumSize(math.ceil(22 * 1.5), 22) + self.bg_button.setMinimumSize(math.ceil(22 * 2), 22) self.bg_button.setStyleSheet( f"QPushButton{{" diff --git a/tagstudio/src/qt/widgets/text.py b/tagstudio/src/qt/widgets/text.py index 8238f4c1..28e21b03 100644 --- a/tagstudio/src/qt/widgets/text.py +++ b/tagstudio/src/qt/widgets/text.py @@ -1,4 +1,4 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). +# Copyright (C) 2025 Travis Abendshien (CyanVoxel). # Licensed under the GPL-3.0 License. # Created for TagStudio: https://github.com/CyanVoxel/TagStudio @@ -11,14 +11,11 @@ from src.qt.widgets.fields import FieldWidget class TextWidget(FieldWidget): def __init__(self, title, text: str) -> None: super().__init__(title) - # self.item = item self.setObjectName("textBox") - # self.setStyleSheet('background-color:purple;') self.base_layout = QHBoxLayout() self.base_layout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.base_layout) self.text_label = QLabel() - # self.text_label.textFormat(Qt.TextFormat.RichText) self.text_label.setStyleSheet("font-size: 12px") self.text_label.setWordWrap(True) self.text_label.setTextInteractionFlags(Qt.TextInteractionFlag.TextSelectableByMouse) diff --git a/tagstudio/src/qt/widgets/text_box_edit.py b/tagstudio/src/qt/widgets/text_box_edit.py index 44cca3f4..5f554501 100644 --- a/tagstudio/src/qt/widgets/text_box_edit.py +++ b/tagstudio/src/qt/widgets/text_box_edit.py @@ -1,4 +1,4 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). +# Copyright (C) 2025 Travis Abendshien (CyanVoxel). # Licensed under the GPL-3.0 License. # Created for TagStudio: https://github.com/CyanVoxel/TagStudio @@ -10,7 +10,6 @@ from src.qt.widgets.panel import PanelWidget class EditTextBox(PanelWidget): def __init__(self, text): super().__init__() - # self.setLayout() self.setMinimumSize(480, 480) self.root_layout = QVBoxLayout(self) self.root_layout.setContentsMargins(6, 0, 6, 0) diff --git a/tagstudio/src/qt/widgets/text_line_edit.py b/tagstudio/src/qt/widgets/text_line_edit.py index 74b65c5b..09e2681c 100644 --- a/tagstudio/src/qt/widgets/text_line_edit.py +++ b/tagstudio/src/qt/widgets/text_line_edit.py @@ -1,4 +1,4 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). +# Copyright (C) 2025 Travis Abendshien (CyanVoxel). # Licensed under the GPL-3.0 License. # Created for TagStudio: https://github.com/CyanVoxel/TagStudio from typing import Callable @@ -10,7 +10,6 @@ from src.qt.widgets.panel import PanelWidget class EditTextLine(PanelWidget): def __init__(self, text): super().__init__() - # self.setLayout() self.setMinimumWidth(480) self.root_layout = QVBoxLayout(self) self.root_layout.setContentsMargins(6, 0, 6, 0)