Skip to content

Commit eaed1bf

Browse files
CyanVoxelMath-Bee
andauthored
fix: add unused and/or missing translations, use correct button ordering per platform (#1535)
* fix: use translation keys where available (port #1290) Co-authored-by: Math-Bee <172338034+Math-Bee@users.noreply.github.com> * fix(translations): add missing/fix incorrect translations * fix(ui): use consistent/correct button roles * fix(ui): use platform button ordering for Modal class --------- Co-authored-by: Math-Bee <172338034+Math-Bee@users.noreply.github.com>
1 parent b3a2c03 commit eaed1bf

19 files changed

Lines changed: 154 additions & 129 deletions

‎src/tagstudio/qt/controllers/changelog_modal.py‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
QTextFormat,
2525
)
2626
from PySide6.QtNetwork import QNetworkAccessManager, QNetworkReply, QNetworkRequest
27+
from PySide6.QtWidgets import QDialogButtonBox
2728

2829
from tagstudio.core.constants import DOCS_URL, GITHUB_REPO_URL
2930
from tagstudio.core.utils.types import unwrap
@@ -313,8 +314,8 @@ def parent_post_init(self) -> None:
313314
assert isinstance(modal_view, ModalView)
314315
close_button = unwrap(self.done_button)
315316
close_button.setText(Translations["generic.close"])
316-
modal_view.button_layout.insertWidget(
317-
modal_view.button_layout.indexOf(close_button), self.layout().view_more_button
317+
modal_view.button_box.addButton(
318+
self.layout().view_more_button, QDialogButtonBox.ButtonRole.ActionRole
318319
)
319320

320321
# NOTE: A lot of the styling is similar to the "About" window, which eventually needs to be

‎src/tagstudio/qt/controllers/edit_field_template_modal.py‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
# TODO: Use newer MVC style guidelines
2020
class EditFieldTemplateModal(EditFieldTemplateModalView):
2121
field_type_map: dict[str, str] = {
22-
"TextFieldTemplate": Translations["field_type.text"],
23-
"DatetimeFieldTemplate": Translations["field_type.datetime"],
22+
"TextFieldTemplate": "field_type.text",
23+
"DatetimeFieldTemplate": "field_type.datetime",
2424
}
2525
DEFAULT_TYPE_INDEX = 0
2626

@@ -32,7 +32,7 @@ def __init__(self, field_template: BaseFieldTemplate | None = None) -> None:
3232
self.old_field_type: str = ""
3333

3434
for k, v in EditFieldTemplateModal.field_type_map.items():
35-
self._type_combobox.addItem(v, k)
35+
self._type_combobox.addItem(Translations[v], k)
3636

3737
self.__connect_callbacks()
3838
self.set_field_template(field_template)

‎src/tagstudio/qt/controllers/field_template_search_panel.py‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,18 @@ def _on_item_remove(self, item: BaseFieldTemplate) -> None:
8989
return
9090

9191
message_box = QMessageBox(
92-
QMessageBox.Icon.Question,
92+
QMessageBox.Icon.Warning,
9393
Translations["field_template.delete"],
9494
Translations.format("field_template.confirm_delete", field_template_name=item.name),
9595
QMessageBox.StandardButton.Ok | QMessageBox.StandardButton.Cancel,
9696
)
97+
unwrap(message_box.button(QMessageBox.StandardButton.Ok)).setText(
98+
Translations["generic.delete_alt"]
99+
)
100+
unwrap(message_box.button(QMessageBox.StandardButton.Cancel)).setText(
101+
Translations["generic.cancel_alt"]
102+
)
103+
message_box.setDefaultButton(QMessageBox.StandardButton.Cancel)
97104

98105
result = message_box.exec()
99106

‎src/tagstudio/qt/controllers/main_window.py‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -455,11 +455,11 @@ def rebuild_open_recent_library_menu(
455455
# View Component
456456
class MainWindow(QMainWindow):
457457
THUMB_SIZES: list[tuple[str, int]] = [
458-
(Translations["home.thumbnail_size.extra_large"], 256),
459-
(Translations["home.thumbnail_size.large"], 192),
460-
(Translations["home.thumbnail_size.medium"], 128),
461-
(Translations["home.thumbnail_size.small"], 96),
462-
(Translations["home.thumbnail_size.mini"], 76),
458+
("home.thumbnail_size.extra_large", 256),
459+
("home.thumbnail_size.large", 192),
460+
("home.thumbnail_size.medium", 128),
461+
("home.thumbnail_size.small", 96),
462+
("home.thumbnail_size.mini", 76),
463463
]
464464

465465
def __init__(self, driver: QtDriver, parent: QWidget | None = None) -> None:
@@ -656,7 +656,7 @@ def setup_extra_input_bar(self):
656656
self.thumb_size_combobox.setMaximumWidth(352)
657657
self.extra_input_layout.addWidget(self.thumb_size_combobox)
658658
for size in MainWindow.THUMB_SIZES:
659-
self.thumb_size_combobox.addItem(size[0], size[1])
659+
self.thumb_size_combobox.addItem(Translations[size[0]], size[1])
660660
self.thumb_size_combobox.setCurrentIndex(2) # Default: Medium
661661

662662
def setup_content(self, driver: QtDriver):

‎src/tagstudio/qt/controllers/splash.py‎

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,6 @@
2323
class SplashScreen:
2424
"""The custom splash screen widget for TagStudio."""
2525

26-
VERSION_STR: str = " ".join(
27-
[
28-
f"{Translations['about.version']}",
29-
f"{VERSION} {(' (' + Translations[BUILD_TYPE] + ')') if BUILD_TYPE else ''}",
30-
]
31-
)
3226
DEFAULT_SPLASH = Splash.AURORA
3327

3428
def __init__(
@@ -68,6 +62,13 @@ def get_pixmap(self) -> QPixmap:
6862
case _:
6963
pass
7064

65+
version_str = " ".join(
66+
[
67+
f"{Translations['about.version']}",
68+
f"{VERSION} {(' (' + Translations[BUILD_TYPE] + ')') if BUILD_TYPE else ''}",
69+
]
70+
)
71+
7172
# TODO: Store any differing data elsewhere and load dynamically instead of hardcoding.
7273
match self.splash_name:
7374
case Splash.CLASSIC:
@@ -88,7 +89,7 @@ def get_pixmap(self) -> QPixmap:
8889
painter.drawText(
8990
QRect(0, -50, 960, 540),
9091
int(Qt.AlignmentFlag.AlignBottom | Qt.AlignmentFlag.AlignHCenter),
91-
SplashScreen.VERSION_STR,
92+
version_str,
9293
)
9394

9495
case Splash.GOO_GEARS:
@@ -110,7 +111,7 @@ def get_pixmap(self) -> QPixmap:
110111
painter.setPen(pen)
111112
painter.drawText(
112113
QRect(40, 420, 960, 540),
113-
SplashScreen.VERSION_STR,
114+
version_str,
114115
)
115116

116117
case Splash.NINETY_FIVE:
@@ -136,7 +137,7 @@ def get_pixmap(self) -> QPixmap:
136137
painter.drawText(
137138
QRect(-30, 25, 960, 540),
138139
int(Qt.AlignmentFlag.AlignTop | Qt.AlignmentFlag.AlignRight),
139-
SplashScreen.VERSION_STR,
140+
version_str,
140141
)
141142

142143
case Splash.AURORA:
@@ -157,7 +158,7 @@ def get_pixmap(self) -> QPixmap:
157158
painter.drawText(
158159
QRect(0, -50, 960, 540),
159160
int(Qt.AlignmentFlag.AlignBottom | Qt.AlignmentFlag.AlignHCenter),
160-
SplashScreen.VERSION_STR,
161+
version_str,
161162
)
162163

163164
case _:

‎src/tagstudio/qt/controllers/tag_search_panel.py‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,18 @@ def _on_item_remove(self, item: Tag) -> None:
8888
return
8989

9090
message_box = QMessageBox(
91-
QMessageBox.Icon.Question,
91+
QMessageBox.Icon.Warning,
9292
Translations["tag.remove"],
9393
Translations.format("tag.confirm_delete", tag_name=self._lib.tag_display_name(item)),
9494
QMessageBox.StandardButton.Ok | QMessageBox.StandardButton.Cancel,
9595
)
96+
unwrap(message_box.button(QMessageBox.StandardButton.Ok)).setText(
97+
Translations["generic.delete_alt"]
98+
)
99+
unwrap(message_box.button(QMessageBox.StandardButton.Cancel)).setText(
100+
Translations["generic.cancel_alt"]
101+
)
102+
message_box.setDefaultButton(QMessageBox.StandardButton.Cancel)
96103

97104
result = message_box.exec()
98105

‎src/tagstudio/qt/controllers/tiles/color_data.py‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ def set_colors(self, colors: Iterable[TagColorGroup]):
9595
TagColorGroup(
9696
slug="slug",
9797
namespace=self.namespace,
98-
name="Color",
98+
name=Translations["color.placeholder"],
9999
primary="#FFFFFF",
100100
secondary=None,
101101
)
@@ -108,7 +108,7 @@ def edit_color(self, color_group: TagColorGroup):
108108

109109
self.edit_modal = Modal(
110110
build_color_panel,
111-
"Edit Color",
111+
Translations["color.edit"],
112112
is_savable=True,
113113
)
114114

@@ -126,13 +126,13 @@ def delete_color(self, color_group: TagColorGroup):
126126
cancel_button = message_box.addButton(
127127
Translations["generic.cancel_alt"], QMessageBox.ButtonRole.RejectRole
128128
)
129-
message_box.addButton(
130-
Translations["generic.delete_alt"], QMessageBox.ButtonRole.DestructiveRole
129+
delete_button = message_box.addButton(
130+
Translations["generic.delete_alt"], QMessageBox.ButtonRole.AcceptRole
131131
)
132132
message_box.setEscapeButton(cancel_button)
133-
result = message_box.exec_()
134-
logger.info(QMessageBox.ButtonRole.DestructiveRole.value)
135-
if result != QMessageBox.ButtonRole.ActionRole.value:
133+
message_box.setDefaultButton(cancel_button)
134+
message_box.exec()
135+
if message_box.clickedButton() != delete_button:
136136
return
137137

138138
logger.info("[ColorData] Removing color", color=color_group)

‎src/tagstudio/qt/controllers/tiles/tile_list.py‎

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -418,17 +418,20 @@ def update_datetime_field(self, field: DatetimeField, name: str, value: str) ->
418418
self.lib.update_datetime_field(entry_ids, field, name, dt.fromisoformat(value))
419419

420420
def remove_message_box(self, prompt: str, callback: Callable[..., None]) -> None:
421-
remove_mb = QMessageBox()
422-
remove_mb.setText(prompt)
423-
remove_mb.setWindowTitle(Translations["Remove Field"])
424-
remove_mb.setIcon(QMessageBox.Icon.Warning)
425-
cancel_button = remove_mb.addButton(
421+
message_box = QMessageBox()
422+
message_box.setText(prompt)
423+
message_box.setWindowTitle(Translations["field.remove"])
424+
message_box.setIcon(QMessageBox.Icon.Warning)
425+
cancel_button = message_box.addButton(
426426
Translations["generic.cancel_alt"], QMessageBox.ButtonRole.RejectRole
427427
)
428-
remove_mb.addButton("&Remove", QMessageBox.ButtonRole.DestructiveRole)
429-
remove_mb.setEscapeButton(cancel_button)
430-
result = remove_mb.exec_()
431-
if result == QMessageBox.ButtonRole.ActionRole.value:
428+
remove_button = message_box.addButton(
429+
Translations["generic.remove_alt"], QMessageBox.ButtonRole.AcceptRole
430+
)
431+
message_box.setEscapeButton(cancel_button)
432+
message_box.setDefaultButton(cancel_button)
433+
message_box.exec()
434+
if message_box.clickedButton() == remove_button:
432435
callback()
433436

434437
@property

‎src/tagstudio/qt/controllers/update_available_message_box.py‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ def __init__(self):
5454
partial(QDesktopServices.openUrl, GITHUB_RELEASE_URL)
5555
)
5656
self.button(QMessageBox.StandardButton.Ignore).setText(Translations["generic.dont_remind"])
57+
self.button(QMessageBox.StandardButton.Close).setText(Translations["generic.close"])
5758

5859
red = get_ui_color(ColorType.PRIMARY, UiColor.RED)
5960
green = get_ui_color(ColorType.PRIMARY, UiColor.GREEN)

‎src/tagstudio/qt/mixed/about_modal.py‎

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,6 @@
4444
class AboutModal(QWidget):
4545
"""Modal window showing information about the TagStudio application."""
4646

47-
VERSION_STR: str = " ".join(
48-
[
49-
f"{Translations['about.version']}",
50-
f"{VERSION} {(' (' + Translations[BUILD_TYPE] + ')') if BUILD_TYPE else ''}",
51-
]
52-
)
53-
5447
def __init__(self, config_path: Path | str):
5548
super().__init__()
5649
self.setWindowTitle(Translations["about.title"])
@@ -89,7 +82,13 @@ def __init__(self, config_path: Path | str):
8982
self.logo_widget.setAlignment(Qt.AlignmentFlag.AlignCenter)
9083

9184
# Version --------------------------------------------------------------
92-
self.version_label = QLabel(header(AboutModal.VERSION_STR, 2))
85+
version_str = " ".join(
86+
[
87+
f"{Translations['about.version']}",
88+
f"{VERSION} {(' (' + Translations[BUILD_TYPE] + ')') if BUILD_TYPE else ''}",
89+
]
90+
)
91+
self.version_label = QLabel(header(version_str, 2))
9392
self.version_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
9493

9594
# Copyright ------------------------------------------------------------

0 commit comments

Comments
 (0)