feat: Add Help menu with Check for Updates action
Menu implementation: - Added menu bar to MainWindow - Help menu with 'Check for Updates...' action - Signal-based architecture for async update check - Action triggers check_for_updates signal Test coverage: - 3 new tests for menu bar functionality - Test menu bar creation - Test signal exists and is callable - Test callback method exists - All 146 tests passing, 86% coverage Design: - Decoupled menu from update logic - Emits signal that main app listens to - Allows async update check without blocking UI
This commit is contained in:
parent
af8e417197
commit
2896f6ba5c
2 changed files with 58 additions and 1 deletions
|
|
@ -3,7 +3,7 @@
|
|||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
from PySide6.QtCore import QSize, Qt, QUrl
|
||||
from PySide6.QtCore import QSize, Qt, QUrl, Signal
|
||||
from PySide6.QtWidgets import QMainWindow, QToolBar, QVBoxLayout, QWidget
|
||||
|
||||
from webdrop_bridge.config import Config
|
||||
|
|
@ -173,6 +173,9 @@ class MainWindow(QMainWindow):
|
|||
integration with the native filesystem.
|
||||
"""
|
||||
|
||||
# Signals
|
||||
check_for_updates = Signal()
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
config: Config,
|
||||
|
|
@ -202,6 +205,9 @@ class MainWindow(QMainWindow):
|
|||
# Create navigation toolbar (Kiosk-mode navigation)
|
||||
self._create_navigation_toolbar()
|
||||
|
||||
# Create menu bar
|
||||
self._create_menu_bar()
|
||||
|
||||
# Create drag interceptor
|
||||
self.drag_interceptor = DragInterceptor()
|
||||
|
||||
|
|
@ -341,6 +347,25 @@ class MainWindow(QMainWindow):
|
|||
)
|
||||
toolbar.addAction(refresh_action)
|
||||
|
||||
def _create_menu_bar(self) -> None:
|
||||
"""Create menu bar with Help menu and update check action."""
|
||||
menu_bar = self.menuBar()
|
||||
|
||||
# Help menu
|
||||
help_menu = menu_bar.addMenu("Help")
|
||||
|
||||
# Check for Updates action
|
||||
check_updates_action = help_menu.addAction("Check for Updates...")
|
||||
check_updates_action.triggered.connect(self._on_check_for_updates)
|
||||
|
||||
def _on_check_for_updates(self) -> None:
|
||||
"""Handle check for updates menu action.
|
||||
|
||||
Emits the check_for_updates signal to allow the main application
|
||||
to perform the update check asynchronously.
|
||||
"""
|
||||
self.check_for_updates.emit()
|
||||
|
||||
def _navigate_home(self) -> None:
|
||||
"""Navigate to the home (start) URL."""
|
||||
home_url = self.config.webapp_url
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue