diff --git a/src/tagstudio/qt/mixed/about_modal.py b/src/tagstudio/qt/mixed/about_modal.py index 05fd1a5b..1f2535ca 100644 --- a/src/tagstudio/qt/mixed/about_modal.py +++ b/src/tagstudio/qt/mixed/about_modal.py @@ -36,7 +36,7 @@ from tagstudio.qt.models.palette import ColorType, UiColor, get_ui_color from tagstudio.qt.resource_manager import ResourceManager from tagstudio.qt.translations import Translations from tagstudio.qt.utils.file_opener import open_file -from tagstudio.qt.views.stylesheets.stylesheets import form_content_style +from tagstudio.qt.views.stylesheets.stylesheets import form_content_style, header class AboutModal(QWidget): @@ -66,6 +66,10 @@ class AboutModal(QWidget): self.content_layout.setContentsMargins(12, 12, 12, 12) self.content_layout.setSpacing(12) + red = get_ui_color(ColorType.PRIMARY, UiColor.RED) + green = get_ui_color(ColorType.PRIMARY, UiColor.GREEN) + amber = get_ui_color(ColorType.PRIMARY, UiColor.AMBER) + # TagStudio Logo ------------------------------------------------------- self.logo_widget = QLabel() self.logo_pixmap = QPixmap.fromImage(ImageQt.ImageQt(self.rm.ts_logo_text_color)) @@ -78,7 +82,7 @@ class AboutModal(QWidget): self.logo_widget.setAlignment(Qt.AlignmentFlag.AlignCenter) # Version -------------------------------------------------------------- - self.version_label = QLabel(f"

{AboutModal.VERSION_STR}

") + self.version_label = QLabel(header(AboutModal.VERSION_STR, 3)) self.version_label.setAlignment(Qt.AlignmentFlag.AlignCenter) # Copyright ------------------------------------------------------------ @@ -94,29 +98,10 @@ class AboutModal(QWidget): self.desc_label.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding) # System Info ---------------------------------------------------------- - ffmpeg_ver = FfmpegStatus.version() - ffprobe_ver = FfprobeStatus.version() - ripgrep_ver = RipgrepStatus.version() - red = get_ui_color(ColorType.PRIMARY, UiColor.RED) - green = get_ui_color(ColorType.PRIMARY, UiColor.GREEN) - amber = get_ui_color(ColorType.PRIMARY, UiColor.AMBER) - missing = Translations["generic.missing"] - found = Translations["about.module.found"] - - ffmpeg_status = f'{missing}' - if ffmpeg_ver is not None: - ffmpeg_status = f'{found} (' + ffmpeg_ver + ")" - - ffprobe_status = f'{missing}' - if ffprobe_ver is not None: - ffprobe_status = f'{found} (' + ffprobe_ver + ")" - - ripgrep_status = f'{missing}' - if ripgrep_ver is not None: - ripgrep_status = f'{found} (' + ripgrep_ver + ")" self.system_info_widget = QWidget() self.system_info_layout = QFormLayout(self.system_info_widget) + self.system_info_layout.setSpacing(4) self.system_info_layout.setLabelAlignment(Qt.AlignmentFlag.AlignRight) # Version @@ -147,6 +132,40 @@ class AboutModal(QWidget): # TODO: Add row for "App Cache Path" (currently that TagStudio.ini file) + # Optional Modules ----------------------------------------------------- + + self.parent_optional_modules_widget = QWidget() + self.parent_optional_modules_layout = QVBoxLayout(self.parent_optional_modules_widget) + self.parent_optional_modules_layout.setContentsMargins(0, 0, 0, 0) + self.parent_optional_modules_layout.setSpacing(0) + + # Subtitle + self.optional_modules_label = QLabel(header(Translations["about.modules.title"], 4)) + + self.optional_modules_widget = QWidget() + self.optional_modules_layout = QFormLayout(self.optional_modules_widget) + self.optional_modules_layout.setSpacing(4) + self.optional_modules_layout.setLabelAlignment(Qt.AlignmentFlag.AlignRight) + + ffmpeg_ver = FfmpegStatus.version() + ffprobe_ver = FfprobeStatus.version() + ripgrep_ver = RipgrepStatus.version() + + missing = Translations["generic.missing"] + found = Translations["about.module.found"] + + ffmpeg_status = f'{missing}' + if ffmpeg_ver is not None: + ffmpeg_status = f'{found} (' + ffmpeg_ver + ")" + + ffprobe_status = f'{missing}' + if ffprobe_ver is not None: + ffprobe_status = f'{found} (' + ffprobe_ver + ")" + + ripgrep_status = f'{missing}' + if ripgrep_ver is not None: + ripgrep_status = f'{found} (' + ripgrep_ver + ")" + # FFmpeg Status ffmpeg_path_title = QLabel("FFmpeg") ffmpeg_path_content = ClickableLabel(f"{ffmpeg_status}") @@ -157,7 +176,7 @@ class AboutModal(QWidget): ) ffmpeg_path_content.setCursor(Qt.CursorShape.PointingHandCursor) ffmpeg_path_content.setStyleSheet(form_content_style()) - self.system_info_layout.addRow(ffmpeg_path_title, ffmpeg_path_content) + self.optional_modules_layout.addRow(ffmpeg_path_title, ffmpeg_path_content) ffmpeg_path_content.setMaximumWidth(ffmpeg_path_content.sizeHint().width()) # FFprobe Status @@ -170,11 +189,10 @@ class AboutModal(QWidget): ) ffprobe_path_content.setCursor(Qt.CursorShape.PointingHandCursor) ffprobe_path_content.setStyleSheet(form_content_style()) - self.system_info_layout.addRow(ffprobe_path_title, ffprobe_path_content) + self.optional_modules_layout.addRow(ffprobe_path_title, ffprobe_path_content) ffprobe_path_content.setMaximumWidth(ffprobe_path_content.sizeHint().width()) # ripgrep Status - # TODO: Add a central class to find ripgrep info, similar to ffmpeg ripgrep_path_title = QLabel("ripgrep") # NOTE: Don't localize ripgrep_path_content = ClickableLabel() ripgrep_path_content.setText(f"{ripgrep_status}") # TODO: Pass in constructor after #1386 @@ -186,7 +204,10 @@ class AboutModal(QWidget): ripgrep_path_content.setCursor(Qt.CursorShape.PointingHandCursor) ripgrep_path_content.setStyleSheet(form_content_style()) ripgrep_path_content.setMaximumWidth(ripgrep_path_content.sizeHint().width()) - self.system_info_layout.addRow(ripgrep_path_title, ripgrep_path_content) + self.optional_modules_layout.addRow(ripgrep_path_title, ripgrep_path_content) + + self.parent_optional_modules_layout.addWidget(self.optional_modules_label) + self.parent_optional_modules_layout.addWidget(self.optional_modules_widget) # Links ---------------------------------------------------------------- @@ -215,6 +236,7 @@ class AboutModal(QWidget): self.content_layout.addWidget(self.version_label) self.content_layout.addWidget(self.desc_label) self.content_layout.addWidget(self.system_info_widget) + self.content_layout.addWidget(self.parent_optional_modules_widget) self.content_layout.addStretch(1) self.content_layout.addWidget(self.links_label) self.content_layout.addWidget(self.copyright_label) diff --git a/src/tagstudio/qt/ts_qt.py b/src/tagstudio/qt/ts_qt.py index b51c65b6..8f36f9cd 100644 --- a/src/tagstudio/qt/ts_qt.py +++ b/src/tagstudio/qt/ts_qt.py @@ -1767,7 +1767,7 @@ class QtDriver(DriverMixin, QObject): if FfmpegStatus.which(): logger.info( "[QtDriver] FFmpeg found", - bin_location=FfmpegStatus.which(), + which=FfmpegStatus.which(), version=FfmpegStatus.version(), ) else: @@ -1776,7 +1776,7 @@ class QtDriver(DriverMixin, QObject): if FfprobeStatus.which(): logger.info( "[QtDriver] FFprobe found", - bin_location=FfprobeStatus.which(), + which=FfprobeStatus.which(), version=FfprobeStatus.version(), ) else: @@ -1785,7 +1785,7 @@ class QtDriver(DriverMixin, QObject): if RipgrepStatus.which(): logger.info( "[QtDriver] ripgrep found", - bin_location=RipgrepStatus.which(), + which=RipgrepStatus.which(), version=RipgrepStatus.version(), ) else: diff --git a/src/tagstudio/resources/translations/en.json b/src/tagstudio/resources/translations/en.json index 51e37e2a..4a8001e4 100644 --- a/src/tagstudio/resources/translations/en.json +++ b/src/tagstudio/resources/translations/en.json @@ -4,6 +4,7 @@ "about.description": "TagStudio is a photo and file organization application with an underlying tag-based system that focuses on giving freedom and flexibility to the user. No proprietary programs or formats, no sea of sidecar files, and no complete upheaval of your filesystem structure.", "about.documentation": "Documentation", "about.module.found": "Found", + "about.modules.title": "Optional Modules", "about.title": "About TagStudio", "about.version": "Version", "about.version.latest": "{built_version} (Latest Release: {latest_version})",