mirror of
https://github.com/TagStudioDev/TagStudio.git
synced 2026-01-29 06:10:51 +00:00
fix: preview panel + main window fixes and optimizations (#700)
* fix: only update file preview when necessary * fix: don't update thumb from tag_box callbacks * fix: reset preview panel and filters when loading new library * fix: clear library state on close; close old library on open * fix: reset scrollbar position on library close
This commit is contained in:
committed by
GitHub
parent
16fb0290a0
commit
857f40f2e3
@@ -226,7 +226,7 @@ class FoldersToTagsModal(QWidget):
|
||||
def on_apply(self, event):
|
||||
folders_to_tags(self.library)
|
||||
self.close()
|
||||
self.driver.preview_panel.update_widgets()
|
||||
self.driver.preview_panel.update_widgets(update_preview=False)
|
||||
|
||||
def on_open(self, event):
|
||||
for i in reversed(range(self.scroll_layout.count())):
|
||||
|
||||
@@ -463,7 +463,7 @@ class QtDriver(DriverMixin, QObject):
|
||||
self.autofill_action.triggered.connect(
|
||||
lambda: (
|
||||
self.run_macros(MacroID.AUTOFILL, self.selected),
|
||||
self.preview_panel.update_widgets(),
|
||||
self.preview_panel.update_widgets(update_preview=False),
|
||||
)
|
||||
)
|
||||
macros_menu.addAction(self.autofill_action)
|
||||
@@ -638,7 +638,6 @@ class QtDriver(DriverMixin, QObject):
|
||||
self.main_window.pagination.index.connect(lambda i: self.page_move(page_id=i))
|
||||
|
||||
self.splash.finish(self.main_window)
|
||||
self.preview_panel.update_widgets()
|
||||
|
||||
def show_grid_filenames(self, value: bool):
|
||||
for thumb in self.item_thumbs:
|
||||
@@ -678,6 +677,13 @@ class QtDriver(DriverMixin, QObject):
|
||||
self.settings.setValue(SettingItems.LAST_LIBRARY, str(self.lib.library_dir))
|
||||
self.settings.sync()
|
||||
|
||||
# Reset library state
|
||||
self.preview_panel.update_widgets()
|
||||
self.main_window.searchField.setText("")
|
||||
scrollbar: QScrollArea = self.main_window.scrollArea
|
||||
scrollbar.verticalScrollBar().setValue(0)
|
||||
self.filter = FilterState.show_all()
|
||||
|
||||
self.lib.close()
|
||||
|
||||
self.thumb_job_queue.queue.clear()
|
||||
@@ -748,7 +754,7 @@ class QtDriver(DriverMixin, QObject):
|
||||
item.thumb_button.set_selected(True)
|
||||
|
||||
self.set_macro_menu_viability()
|
||||
self.preview_panel.update_widgets()
|
||||
self.preview_panel.update_widgets(update_preview=False)
|
||||
|
||||
def clear_select_action_callback(self):
|
||||
self.selected.clear()
|
||||
@@ -761,7 +767,7 @@ class QtDriver(DriverMixin, QObject):
|
||||
def show_tag_database(self):
|
||||
self.modal = PanelModal(
|
||||
widget=TagDatabasePanel(self.lib),
|
||||
done_callback=self.preview_panel.update_widgets,
|
||||
done_callback=lambda: self.preview_panel.update_widgets(update_preview=False),
|
||||
has_save=False,
|
||||
)
|
||||
Translations.translate_with_setter(self.modal.setTitle, "tag_manager.title")
|
||||
@@ -1421,6 +1427,9 @@ class QtDriver(DriverMixin, QObject):
|
||||
)
|
||||
self.main_window.repaint()
|
||||
|
||||
if self.lib.library_dir:
|
||||
self.close_library()
|
||||
|
||||
open_status: LibraryStatus = None
|
||||
try:
|
||||
open_status = self.lib.open_library(path)
|
||||
|
||||
@@ -502,7 +502,7 @@ class ItemThumb(FlowWidget):
|
||||
self.lib.remove_tags_from_entry(entry_id, tag_id)
|
||||
|
||||
if self.driver.preview_panel.is_open:
|
||||
self.driver.preview_panel.update_widgets()
|
||||
self.driver.preview_panel.update_widgets(update_preview=False)
|
||||
|
||||
def mouseMoveEvent(self, event): # noqa: N802
|
||||
if event.buttons() is not Qt.MouseButton.LeftButton:
|
||||
|
||||
@@ -131,8 +131,13 @@ class PreviewPanel(QWidget):
|
||||
root_layout.addWidget(splitter)
|
||||
root_layout.addWidget(add_buttons_container)
|
||||
|
||||
def update_widgets(self) -> bool:
|
||||
"""Render the panel widgets with the newest data from the Library."""
|
||||
def update_widgets(self, update_preview: bool = True) -> bool:
|
||||
"""Render the panel widgets with the newest data from the Library.
|
||||
|
||||
Args:
|
||||
update_preview(bool): Should the file preview be updated?
|
||||
(Only works with one or more items selected)
|
||||
"""
|
||||
# No Items Selected
|
||||
try:
|
||||
if len(self.driver.selected) == 0:
|
||||
@@ -151,8 +156,9 @@ class PreviewPanel(QWidget):
|
||||
filepath: Path = self.lib.library_dir / entry.path
|
||||
ext: str = filepath.suffix.lower()
|
||||
|
||||
stats: dict = self.thumb.update_preview(filepath, ext)
|
||||
self.file_attrs.update_stats(filepath, ext, stats)
|
||||
if update_preview:
|
||||
stats: dict = self.thumb.update_preview(filepath, ext)
|
||||
self.file_attrs.update_stats(filepath, ext, stats)
|
||||
self.file_attrs.update_date_label(filepath)
|
||||
self.fields.update_from_entry(entry_id)
|
||||
self.update_add_tag_button(entry_id)
|
||||
|
||||
@@ -63,7 +63,7 @@ class TagBoxWidget(FieldWidget):
|
||||
tag_widget.on_remove.connect(
|
||||
lambda tag_id=tag.id: (
|
||||
self.remove_tag(tag_id),
|
||||
self.driver.preview_panel.update_widgets(),
|
||||
self.driver.preview_panel.update_widgets(update_preview=False),
|
||||
)
|
||||
)
|
||||
tag_widget.on_edit.connect(lambda t=tag: self.edit_tag(t))
|
||||
@@ -77,7 +77,7 @@ class TagBoxWidget(FieldWidget):
|
||||
build_tag_panel,
|
||||
tag.name, # TODO - display name including parent tags
|
||||
"Edit Tag",
|
||||
done_callback=self.driver.preview_panel.update_widgets,
|
||||
done_callback=lambda: self.driver.preview_panel.update_widgets(update_preview=False),
|
||||
has_save=True,
|
||||
)
|
||||
# TODO - this was update_tag()
|
||||
|
||||
Reference in New Issue
Block a user