Initial release — PySide6 app for automatic GOG offline installer management
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
"""Main application window with tab layout."""
|
||||
|
||||
from loguru import logger
|
||||
from PySide6.QtWidgets import QMainWindow, QTabWidget
|
||||
|
||||
from src.api import GogApi
|
||||
from src.auth import AuthManager
|
||||
from src.config import AppConfig
|
||||
from src.constants import APP_TITLE
|
||||
from src.ui.tab_auth import AuthTab
|
||||
from src.ui.tab_languages import LanguagesTab
|
||||
from src.ui.tab_library import LibraryTab
|
||||
from src.ui.tab_settings import SettingsTab
|
||||
from src.ui.tab_status import StatusTab
|
||||
|
||||
|
||||
class MainWindow(QMainWindow):
|
||||
"""Main GOGUpdater window with 5 tabs."""
|
||||
|
||||
def __init__(self, auth: AuthManager, api: GogApi, config: AppConfig) -> None:
|
||||
super().__init__()
|
||||
self.auth = auth
|
||||
self.api = api
|
||||
self.config = config
|
||||
|
||||
self.setWindowTitle(APP_TITLE)
|
||||
self.setMinimumSize(900, 600)
|
||||
|
||||
self._setup_tabs()
|
||||
self._connect_signals()
|
||||
|
||||
def _setup_tabs(self) -> None:
|
||||
self.tabs = QTabWidget()
|
||||
self.setCentralWidget(self.tabs)
|
||||
|
||||
self.auth_tab = AuthTab(self.auth)
|
||||
self.library_tab = LibraryTab(self.api, self.config)
|
||||
self.languages_tab = LanguagesTab(self.config)
|
||||
self.settings_tab = SettingsTab(self.api, self.config)
|
||||
self.status_tab = StatusTab(self.api, self.config)
|
||||
|
||||
self.tabs.addTab(self.auth_tab, "Login")
|
||||
self.tabs.addTab(self.library_tab, "Library")
|
||||
self.tabs.addTab(self.languages_tab, "Languages")
|
||||
self.tabs.addTab(self.settings_tab, "Settings")
|
||||
self.tabs.addTab(self.status_tab, "Status")
|
||||
|
||||
self._update_tab_states()
|
||||
|
||||
def _connect_signals(self) -> None:
|
||||
self.auth_tab.login_state_changed.connect(self._on_login_changed)
|
||||
self.settings_tab.english_only_changed.connect(self._on_english_only_changed)
|
||||
|
||||
def _on_login_changed(self, logged_in: bool) -> None:
|
||||
logger.info(f"Login state changed: logged_in={logged_in}")
|
||||
self._update_tab_states()
|
||||
|
||||
def _on_english_only_changed(self, english_only: bool) -> None:
|
||||
"""Enable/disable Languages tab based on english_only setting."""
|
||||
logger.info(f"English only changed: {english_only}")
|
||||
self._update_tab_states()
|
||||
|
||||
def _update_tab_states(self) -> None:
|
||||
"""Enable/disable tabs based on login state and settings."""
|
||||
logged_in = self.auth.is_logged_in
|
||||
for i in range(1, self.tabs.count()):
|
||||
self.tabs.setTabEnabled(i, logged_in)
|
||||
# Languages tab (index 2) disabled when english_only
|
||||
if logged_in and self.config.english_only:
|
||||
self.tabs.setTabEnabled(2, False)
|
||||
Reference in New Issue
Block a user