Skip to content

Commit 45943ba

Browse files
feat: zoom keyboard shortcut (#956)
* feat: add increase/decrease zoom menu items * fix: increase thumbnail size not working on windows * fix: duplicated menu items
1 parent d86fc5c commit 45943ba

File tree

3 files changed

+51
-1
lines changed

3 files changed

+51
-1
lines changed

src/tagstudio/qt/main_window.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,34 @@ def setup_view_menu(self):
304304
self.show_filenames_action.setCheckable(True)
305305
self.view_menu.addAction(self.show_filenames_action)
306306

307+
self.view_menu.addSeparator()
308+
309+
self.decrease_thumbnail_size_action = QAction(
310+
Translations["menu.view.decrease_thumbnail_size"], self
311+
)
312+
self.decrease_thumbnail_size_action.setShortcut(
313+
QtCore.QKeyCombination(
314+
QtCore.Qt.KeyboardModifier(QtCore.Qt.KeyboardModifier.ControlModifier),
315+
QtCore.Qt.Key.Key_Minus,
316+
)
317+
)
318+
self.decrease_thumbnail_size_action.setToolTip("Ctrl+-")
319+
self.view_menu.addAction(self.decrease_thumbnail_size_action)
320+
321+
self.increase_thumbnail_size_action = QAction(
322+
Translations["menu.view.increase_thumbnail_size"], self
323+
)
324+
self.increase_thumbnail_size_action.setShortcut(
325+
QtCore.QKeyCombination(
326+
QtCore.Qt.KeyboardModifier(QtCore.Qt.KeyboardModifier.ControlModifier),
327+
QtCore.Qt.Key.Key_Equal,
328+
)
329+
)
330+
self.increase_thumbnail_size_action.setToolTip("Ctrl+=")
331+
self.view_menu.addAction(self.increase_thumbnail_size_action)
332+
333+
self.view_menu.addSeparator()
334+
307335
self.addMenu(self.view_menu)
308336

309337
def setup_tools_menu(self):

src/tagstudio/qt/ts_qt.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -479,9 +479,28 @@ def on_show_filenames_action(checked: bool):
479479
self.settings.show_filenames_in_grid
480480
)
481481

482+
def on_decrease_thumbnail_size_action():
483+
new_val = self.main_window.thumb_size_combobox.currentIndex() + 1
484+
if not (new_val + 1) > len(self.main_window.THUMB_SIZES):
485+
self.main_window.thumb_size_combobox.setCurrentIndex(new_val)
486+
487+
self.main_window.menu_bar.decrease_thumbnail_size_action.triggered.connect(
488+
on_decrease_thumbnail_size_action
489+
)
490+
491+
def on_increase_thumbnail_size_action():
492+
new_val = self.main_window.thumb_size_combobox.currentIndex() - 1
493+
if not new_val < 0:
494+
self.main_window.thumb_size_combobox.setCurrentIndex(new_val)
495+
496+
self.main_window.menu_bar.increase_thumbnail_size_action.triggered.connect(
497+
on_increase_thumbnail_size_action
498+
)
499+
482500
# endregion
483501

484502
# region Tools Menu ===========================================================
503+
485504
def create_fix_unlinked_entries_modal():
486505
if not hasattr(self, "unlinked_modal"):
487506
self.unlinked_modal = FixUnlinkedEntriesModal(self.lib, self)
@@ -624,8 +643,9 @@ def _update_browsing_state():
624643
)
625644

626645
# Thumbnail Size ComboBox
646+
self.main_window.thumb_size_combobox.setCurrentIndex(2) # Default: Medium
627647
self.main_window.thumb_size_combobox.currentIndexChanged.connect(
628-
lambda: self.thumb_size_callback(self.main_window.thumb_size_combobox.currentData())
648+
lambda: self.thumb_size_callback(self.main_window.thumb_size_combobox.currentIndex())
629649
)
630650
self._update_thumb_count()
631651

src/tagstudio/resources/translations/en.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,8 @@
217217
"menu.tools.fix_duplicate_files": "Fix Duplicate &Files",
218218
"menu.tools.fix_unlinked_entries": "Fix &Unlinked Entries",
219219
"menu.tools": "&Tools",
220+
"menu.view.decrease_thumbnail_size": "Decrease Thumbnail Size",
221+
"menu.view.increase_thumbnail_size": "Increase Thumbnail Size",
220222
"menu.view": "&View",
221223
"menu.window": "Window",
222224
"namespace.create.description_color": "Tag colors use namespaces as color palette groups. All custom colors must be under a namespace group first.",

0 commit comments

Comments
 (0)