From e15bd758f346807e7e4b368f6fe6fe1d6b92f387 Mon Sep 17 00:00:00 2001 From: Wei Hong Date: Tue, 14 Jul 2026 16:41:14 +0800 Subject: [PATCH] Add page switch feature to main window and now all qt stylesheet are loaded from an external file. Rename test dialog window to test page. --- app.py | 209 +++++++++++++++++++++++------ core_lib/game/version_info.py | 2 +- core_lib/qt/hack.py | 26 +++- main.py | 1 - {dialog => pages}/test.py | 12 +- resources/icons/debug.png | Bin 0 -> 24261 bytes resources/icons/home.png | Bin 0 -> 7263 bytes resources/pictures/in_progress.png | Bin 0 -> 26137 bytes resources/styles/main.qss | 28 ++++ resources/styles/toolbar.qss | 99 ++++++++++++++ 10 files changed, 322 insertions(+), 55 deletions(-) rename {dialog => pages}/test.py (99%) create mode 100644 resources/icons/debug.png create mode 100644 resources/icons/home.png create mode 100644 resources/pictures/in_progress.png create mode 100644 resources/styles/main.qss create mode 100644 resources/styles/toolbar.qss diff --git a/app.py b/app.py index d67cd0c..6f90c6c 100644 --- a/app.py +++ b/app.py @@ -1,15 +1,84 @@ import logging from pathlib import Path +from typing import Callable -from PySide6.QtGui import QIcon, Qt, QImage, QPixmap -from PySide6.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget, QPushButton +from PySide6 import QtWidgets +from PySide6.QtCore import QSize +from PySide6.QtGui import QIcon, Qt, QPixmap +from PySide6.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget, QPushButton, QStyle, QToolButton, \ + QStackedWidget -from core_lib.qt.hack import move_window_to_center -from dialog.test import TestDialog +from core_lib.qt.hack import move_window_to_center, recolor_standard_icon +from core_lib.qt import messagebox +from pages.test import TestPage LAUNCHER_VERSION = "alpha_0.0.1" MAIN_REPO_URL = "https://repo.weispace.net/wei/Launcher/" +class ToolBar(QtWidgets.QToolBar): + def __init__(self, app: QApplication, parent=None): + super(ToolBar, self).__init__(parent) + self.app = app + self.orientationChanged.connect(self._update_widget_size) + + def _update_widget_size(self, orientation): + vertical = orientation == Qt.Orientation.Vertical + + for button in self.findChildren(QToolButton): + if vertical: + button.setToolButtonStyle( + Qt.ToolButtonStyle.ToolButtonIconOnly + ) + button.setFixedSize(60, 60) + continue + + button.setMinimumSize(0, 0) + button.setMaximumSize(16777215, 16777215) + + if not button.icon().isNull() and not button.text(): + button.setToolButtonStyle( + Qt.ToolButtonStyle.ToolButtonIconOnly + ) + button.setFixedSize(60, 60) + elif button.icon().isNull(): + button.setToolButtonStyle( + Qt.ToolButtonStyle.ToolButtonTextOnly + ) + button.setFixedWidth(150) + else: + button.setToolButtonStyle( + Qt.ToolButtonStyle.ToolButtonTextBesideIcon + ) + button.setFixedWidth(150) + + def add_button(self, text=None, icon: QIcon=None) -> QToolButton: + button = QtWidgets.QToolButton(self) + + if text: + text = " "+text + button.setText(text) + + if icon: + button.setIcon(icon) + button.setIconSize(QSize(32, 32)) + + if text: + button.setToolButtonStyle( + Qt.ToolButtonStyle.ToolButtonTextBesideIcon + ) + else: + button.setToolButtonStyle( + Qt.ToolButtonStyle.ToolButtonIconOnly + ) + + button.setAutoRaise(True) + + return button + + def update_all(self): + self._update_widget_size(self.orientation()) + self.update() + class Launcher(QApplication): def __init__(self): super().__init__() @@ -26,16 +95,15 @@ class Launcher(QApplication): self.program_dir = Path(__file__).parent self.work_dir = Path.cwd() - # test page - self.test_dialog = TestDialog(self, self.main_window) - # Set icon if self.icon_path.exists(): self.setWindowIcon(QIcon(self.icon_path.as_posix())) else: self.logger.error("No icon found.") - self.central = QWidget() + # Main layout + self.central = QStackedWidget() + self.toolbar = ToolBar(self, self.main_window) # center message (will be deleted if launcher finished development) content = """Still digging!""" @@ -51,7 +119,6 @@ class Launcher(QApplication): self.repo_url_label = QLabel(f"Main repo") self.repo_url_label.setObjectName("repo_url_label") self.repo_url_label.setOpenExternalLinks(True) - self.main_layout = QVBoxLayout(self.central) if Path(self.resources_dir, "pictures", "in_progress.png").exists(): image = QPixmap(Path(self.resources_dir, "pictures", "in_progress.png")) @@ -59,49 +126,71 @@ class Launcher(QApplication): else: self.icon_label.setText("Ouch. The icon is missing.") - self.open_test_window = QPushButton("Open test") - self.open_test_window.clicked.connect(lambda : self.test_dialog.show()) - self.open_test_window.setObjectName("open_test_window") + # Homepage + self.home_page = QWidget() + self.home_layout = QVBoxLayout(self.home_page) + self.home_layout.addStretch() + self.home_layout.addWidget(self.icon_label, alignment=Qt.AlignmentFlag.AlignCenter) + self.home_layout.addWidget(self.dev_info_box, alignment=Qt.AlignmentFlag.AlignHCenter) + self.home_layout.addWidget(self.dev_info_2, alignment=Qt.AlignmentFlag.AlignHCenter) + self.home_layout.addWidget(self.version_label, alignment=Qt.AlignmentFlag.AlignHCenter) + self.home_layout.addWidget(self.repo_url_label, alignment=Qt.AlignmentFlag.AlignHCenter) + self.home_layout.addStretch() - self.main_layout.addStretch() - self.main_layout.addWidget(self.icon_label, alignment=Qt.AlignmentFlag.AlignCenter) - self.main_layout.addWidget(self.dev_info_box, alignment=Qt.AlignmentFlag.AlignHCenter) - self.main_layout.addWidget(self.dev_info_2, alignment=Qt.AlignmentFlag.AlignHCenter) - self.main_layout.addWidget(self.version_label, alignment=Qt.AlignmentFlag.AlignHCenter) - self.main_layout.addWidget(self.repo_url_label, alignment=Qt.AlignmentFlag.AlignHCenter) - self.main_layout.addStretch() - self.main_layout.addWidget(self.open_test_window, alignment=Qt.AlignmentFlag.AlignRight) + # test page + self.test_page = TestPage(self, self.main_window) + # Add page + self.central.addWidget(self.home_page) + self.central.addWidget(self.test_page) + + # Bind toolbar and center widget + self.main_window.addToolBar(Qt.ToolBarArea.LeftToolBarArea, self.toolbar) self.main_window.setCentralWidget(self.central) - self.setStyleSheet(""" - QLabel#dev_info_box { - font-size: 20pt; - font-weight: bold; - } - - QLabel#dev_info_message { - font-size: 10pt; - } - - QLabel#version_label, QLabel#version_label { - font-weight: bold; - } - - QLabel#icon_label { - border-radius: 20px; - } - - QPushButton#open_test_window { - padding: 10px; - } - """) + # Apply qss + self.apply_qss(Path("main.qss"), self.setStyleSheet) + self.apply_qss(Path("toolbar.qss"), self.toolbar.setStyleSheet) + + # Toolbar + + # Test Window btn + self.open_test_page = self.toolbar.add_button(" Tests", icon=QIcon(Path(self.icon_dir, "debug.png").as_posix())) + self.open_test_page.setObjectName("open_test_page") + + # Home btn + self.home_button = self.toolbar.add_button(icon=QIcon(Path(self.icon_dir, "home.png").as_posix())) + self.home_button.clicked.connect( + lambda: self.central.setCurrentWidget(self.home_page) + ) + + # Bind tool buttons + self.toolbar.addWidget(self.home_button) + self.toolbar.addSeparator() + self.toolbar.addWidget(self.open_test_page) + self.toolbar.setMovable(True) + self.toolbar.setFloatable(False) + self.toolbar.setAllowedAreas(Qt.ToolBarArea.AllToolBarAreas) + + self.home_button.clicked.connect( + lambda: self.set_current_page(self.home_page, self.home_button) + ) + + self.open_test_page.clicked.connect( + lambda: self.set_current_page(self.test_page, self.open_test_page) + ) + + self.set_current_page(self.home_page, self.home_button) def exec(self): self.main_window.show() - self.test_dialog.show() + self.toolbar.update_all() self.exec_() + def set_current_page(self, page: QWidget, related_button: QToolButton): + self.central.setCurrentWidget(page) + related_button.setFocus() + @property def temp_dir(self): return self.work_dir / "temp" @@ -126,6 +215,40 @@ class Launcher(QApplication): def icon_path(self): return self.resources_dir / "icons" / "icon.png" + @property + def icon_dir(self): + return self.resources_dir / "icons" + @property def launcher_version(self): return LAUNCHER_VERSION + + @property + def styles_path(self): + return self.resources_dir / "styles" + + def apply_qss(self, qss_relative_path: Path, apply_qss_callback: Callable[[str], None]) -> str: + full_path = self.styles_path / qss_relative_path + if not full_path.exists(): + messagebox.error( + self.main_window, + "Resource Error", + "Missing stylesheet file: {}".format(full_path), + ) + return "" + + try: + data = full_path.read_text() + apply_qss_callback(data) + except Exception as e: + messagebox.error( + self.main_window, + "Resource Error", + "Unable to apply QSS stylesheet {}: {}".format(full_path, e), + ) + + return "" + + + + diff --git a/core_lib/game/version_info.py b/core_lib/game/version_info.py index 62c50b3..3ec54d9 100644 --- a/core_lib/game/version_info.py +++ b/core_lib/game/version_info.py @@ -459,7 +459,7 @@ def fetch_and_save_version_manifest(dest: Path, target_version: str=None, root_m ) def download_core_file(manifest: dict, destination: Path, is_server=False, raise_for_null_hash=False, - progress_callback: Callable[str]=None) -> FileObject: + progress_callback: Callable[[str, float], None]=None) -> FileObject: """ Download core file from version manifest. :param manifest: diff --git a/core_lib/qt/hack.py b/core_lib/qt/hack.py index 1e2fb90..a9fb3fc 100644 --- a/core_lib/qt/hack.py +++ b/core_lib/qt/hack.py @@ -1,5 +1,5 @@ -from PySide6.QtCore import QCoreApplication, QThread -from PySide6.QtGui import QScreen +from PySide6.QtCore import QCoreApplication, QThread, QSize, Qt +from PySide6.QtGui import QScreen, QPixmap, QPainter, QPalette, QIcon from PySide6.QtWidgets import QMainWindow, QApplication @@ -12,4 +12,24 @@ def move_window_to_center(window: QMainWindow): def is_main_thread() -> bool: app = QCoreApplication.instance() - return app is not None and QThread.currentThread() == app.thread() \ No newline at end of file + return app is not None and QThread.currentThread() == app.thread() + +def recolor_standard_icon(widget, standard_pixmap, size=24): + source_icon = widget.style().standardIcon(standard_pixmap) + source = source_icon.pixmap(QSize(size, size)) + + result = QPixmap(source.size()) + result.fill(Qt.GlobalColor.transparent) + + painter = QPainter(result) + painter.drawPixmap(0, 0, source) + painter.setCompositionMode( + QPainter.CompositionMode.CompositionMode_SourceIn + ) + painter.fillRect( + result.rect(), + widget.palette().color(QPalette.ColorRole.ButtonText), + ) + painter.end() + + return QIcon(result) \ No newline at end of file diff --git a/main.py b/main.py index bb0a5af..6b684db 100644 --- a/main.py +++ b/main.py @@ -2,7 +2,6 @@ import os import sys import argparse import logging - from app import Launcher from tkinter import messagebox diff --git a/dialog/test.py b/pages/test.py similarity index 99% rename from dialog/test.py rename to pages/test.py index e6f1b0c..d878dc7 100644 --- a/dialog/test.py +++ b/pages/test.py @@ -8,8 +8,8 @@ import traceback from pathlib import Path from PySide6.QtCore import Qt, QObject, Signal, Slot -from PySide6.QtWidgets import QPushButton, QVBoxLayout, QDialog, QPlainTextEdit, \ - QHBoxLayout, QComboBox, QMessageBox, QFileDialog +from PySide6.QtWidgets import QPushButton, QVBoxLayout, QPlainTextEdit, \ + QHBoxLayout, QComboBox, QMessageBox, QFileDialog, QWidget from core_lib.common.common import FileObject, download_multiple_files from core_lib.common.exception import VersionNotSelectedException, UnsupportedPlatformException, \ @@ -19,11 +19,9 @@ from core_lib.common.exception import VersionNotSelectedException, UnsupportedPl from core_lib.game.argument import ArgumentMappings, parse_and_generate_arguments, find_game_and_jvm_args, \ generate_launch_command from core_lib.game.asset import download_assets, check_assets_exist, find_correct_assets_dir -from core_lib.game.library import generate_classpath, download_full_libraries, check_libraries_exists, \ - check_full_libraries_exists +from core_lib.game.library import generate_classpath, download_full_libraries, check_full_libraries_exists -from core_lib.game.version_info import (find_useful_part_in_specific_version_manifest, - get_core_file_download_url_and_hash, \ +from core_lib.game.version_info import (find_useful_part_in_specific_version_manifest, \ get_all_versions, get_available_version_types, \ fetch_and_save_version_manifest, get_specific_version_manifest_url_and_hash, download_core_file) @@ -62,7 +60,7 @@ class SelectPathRequest(AskForRequest): self.filter = filter_raw -class TestDialog(QDialog): +class TestPage(QWidget): def __init__(self, app, parent): super().__init__(parent) self.app = app diff --git a/resources/icons/debug.png b/resources/icons/debug.png new file mode 100644 index 0000000000000000000000000000000000000000..c2c8ebab43f69d6d6330cb24d91e0ac3c7a57118 GIT binary patch literal 24261 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 literal 0 HcmV?d00001 diff --git a/resources/pictures/in_progress.png b/resources/pictures/in_progress.png new file mode 100644 index 0000000000000000000000000000000000000000..7fd42e975231b5734458e61eb29cd9a1ef81ea47 GIT binary patch literal 26137 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

kwN3RE~3mVL4et`*H{6|Kh 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