diff --git a/src/tagstudio/qt/widgets/item_thumb.py b/src/tagstudio/qt/widgets/item_thumb.py index 42a82926e..52719ea42 100644 --- a/src/tagstudio/qt/widgets/item_thumb.py +++ b/src/tagstudio/qt/widgets/item_thumb.py @@ -205,11 +205,11 @@ def __init__( self.thumb_button = ThumbButton(self.thumb_container, thumb_size) self.renderer = ThumbRenderer(self.lib) self.renderer.updated.connect( - lambda timestamp, image, size, filename, ext: ( + lambda timestamp, image, size, filename: ( self.update_thumb(timestamp, image=image), self.update_size(timestamp, size=size), self.set_filename_text(filename), - self.set_extension(ext), # type: ignore + self.set_extension(filename), ) ) self.thumb_button.setFlat(True) @@ -365,13 +365,13 @@ def set_mode(self, mode: ItemType | None) -> None: self.item_type_badge.setHidden(False) self.mode = mode - def set_extension(self, ext: str) -> None: + def set_extension(self, filename: Path) -> None: + ext = filename.suffix if ext and ext.startswith(".") is False: ext = "." + ext media_types: set[MediaType] = MediaCategories.get_types(ext) if ( - ext - and not MediaCategories.is_ext_in_category(ext, MediaCategories.IMAGE_TYPES) + not MediaCategories.is_ext_in_category(ext, MediaCategories.IMAGE_TYPES) or MediaCategories.is_ext_in_category(ext, MediaCategories.IMAGE_RAW_TYPES) or MediaCategories.is_ext_in_category(ext, MediaCategories.IMAGE_VECTOR_TYPES) or MediaCategories.is_ext_in_category(ext, MediaCategories.ADOBE_PHOTOSHOP_TYPES) @@ -386,7 +386,7 @@ def set_extension(self, ext: str) -> None: ] ): self.ext_badge.setHidden(False) - self.ext_badge.setText(ext.upper()[1:]) + self.ext_badge.setText(ext.upper()[1:] or filename.stem.upper()) if MediaType.VIDEO in media_types or MediaType.AUDIO in media_types: self.count_badge.setHidden(False) else: diff --git a/src/tagstudio/qt/widgets/preview/file_attributes.py b/src/tagstudio/qt/widgets/preview/file_attributes.py index 268ce7e93..694ef91b1 100644 --- a/src/tagstudio/qt/widgets/preview/file_attributes.py +++ b/src/tagstudio/qt/widgets/preview/file_attributes.py @@ -131,7 +131,7 @@ def update_date_label(self, filepath: Path | None = None) -> None: self.date_created_label.setHidden(True) self.date_modified_label.setHidden(True) - def update_stats(self, filepath: Path | None = None, ext: str = ".", stats: dict | None = None): + def update_stats(self, filepath: Path | None = None, stats: dict | None = None): """Render the panel widgets with the newest data from the Library.""" if not stats: stats = {} @@ -145,6 +145,7 @@ def update_stats(self, filepath: Path | None = None, ext: str = ".", stats: dict self.dimensions_label.setText("") self.dimensions_label.setHidden(True) else: + ext = filepath.suffix.lower() self.library_path = self.library.library_dir display_path = filepath if self.driver.settings.show_filepath == ShowFilepathOption.SHOW_FULL_PATHS: @@ -188,8 +189,7 @@ def update_stats(self, filepath: Path | None = None, ext: str = ".", stats: dict height_px_text = stats.get("height", "") duration_text = stats.get("duration", "") font_family = stats.get("font_family", "") - if ext: - ext_display = ext.upper()[1:] + ext_display = ext.upper()[1:] or filepath.stem.upper() if filepath: try: file_size = format_size(filepath.stat().st_size) diff --git a/src/tagstudio/qt/widgets/preview/preview_thumb.py b/src/tagstudio/qt/widgets/preview/preview_thumb.py index 4b3972267..53b94a223 100644 --- a/src/tagstudio/qt/widgets/preview/preview_thumb.py +++ b/src/tagstudio/qt/widgets/preview/preview_thumb.py @@ -242,11 +242,12 @@ def _display_fallback_image(self, filepath: Path, ext: str) -> dict[str, int]: self.devicePixelRatio(), update_on_ratio_change=True, ) - return self._update_image(filepath, ext) + return self._update_image(filepath) - def _update_image(self, filepath: Path, ext: str) -> dict[str, int]: + def _update_image(self, filepath: Path) -> dict[str, int]: """Update the static image preview from a filepath.""" stats: dict[str, int] = {} + ext = filepath.suffix.lower() self.switch_preview("image") image: Image.Image | None = None @@ -380,8 +381,9 @@ def _update_media(self, filepath: Path, type: MediaType) -> dict[str, int]: stats["duration"] = self.media_player.player.duration() * 1000 return stats - def update_preview(self, filepath: Path, ext: str) -> dict[str, int]: + def update_preview(self, filepath: Path) -> dict[str, int]: """Render a single file preview.""" + ext = filepath.suffix.lower() stats: dict[str, int] = {} # Video @@ -394,7 +396,7 @@ def update_preview(self, filepath: Path, ext: str) -> dict[str, int]: elif MediaCategories.is_ext_in_category( ext, MediaCategories.AUDIO_TYPES, mime_fallback=True ): - self._update_image(filepath, ext) + self._update_image(filepath) stats = self._update_media(filepath, MediaType.AUDIO) self.thumb_renderer.render( time.time(), @@ -413,7 +415,7 @@ def update_preview(self, filepath: Path, ext: str) -> dict[str, int]: # Other Types (Including Images) else: # TODO: Get thumb renderer to return this stuff to pass on - stats = self._update_image(filepath, ext) + stats = self._update_image(filepath) self.thumb_renderer.render( time.time(), diff --git a/src/tagstudio/qt/widgets/preview_panel.py b/src/tagstudio/qt/widgets/preview_panel.py index dffb12f65..ef4676e89 100644 --- a/src/tagstudio/qt/widgets/preview_panel.py +++ b/src/tagstudio/qt/widgets/preview_panel.py @@ -145,11 +145,10 @@ def update_widgets(self, update_preview: bool = True) -> bool: entry: Entry = self.lib.get_entry(self.driver.selected[0]) entry_id = self.driver.selected[0] filepath: Path = self.lib.library_dir / entry.path - ext: str = filepath.suffix.lower() if update_preview: - stats: dict = self.thumb.update_preview(filepath, ext) - self.file_attrs.update_stats(filepath, ext, stats) + stats: dict = self.thumb.update_preview(filepath) + self.file_attrs.update_stats(filepath, stats) self.file_attrs.update_date_label(filepath) self.fields.update_from_entry(entry_id) self.update_add_tag_button(entry_id) diff --git a/src/tagstudio/qt/widgets/thumb_renderer.py b/src/tagstudio/qt/widgets/thumb_renderer.py index e23351c3b..e4ec1e8d0 100644 --- a/src/tagstudio/qt/widgets/thumb_renderer.py +++ b/src/tagstudio/qt/widgets/thumb_renderer.py @@ -89,7 +89,7 @@ class ThumbRenderer(QObject): rm: ResourceManager = ResourceManager() cache: CacheManager = CacheManager() - updated = Signal(float, QPixmap, QSize, Path, str) + updated = Signal(float, QPixmap, QSize, Path) updated_ratio = Signal(float) cached_img_res: int = 256 # TODO: Pull this from config @@ -1300,7 +1300,6 @@ def fetch_cached_image(folder: Path): math.ceil(image.size[1] / pixel_ratio), ), filepath, - filepath.suffix.lower(), ) else: self.updated.emit( @@ -1308,7 +1307,6 @@ def fetch_cached_image(folder: Path): QPixmap(), QSize(*base_size), filepath, - filepath.suffix.lower(), ) def _render(