feat: add create_tray() factory with platform dispatch
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -242,3 +242,29 @@ class TestSettingsDialog:
|
|||||||
if captured_save_fn:
|
if captured_save_fn:
|
||||||
captured_save_fn[0]()
|
captured_save_fn[0]()
|
||||||
assert len(saved_configs) == 1
|
assert len(saved_configs) == 1
|
||||||
|
|
||||||
|
|
||||||
|
class TestCreateTray:
|
||||||
|
@pytest.mark.skipif(sys.platform != "win32", reason="Win32TrayApp nur auf Windows")
|
||||||
|
def test_returns_win32_tray_on_windows(self):
|
||||||
|
from unittest.mock import MagicMock
|
||||||
|
from whisper_local.tray import create_tray
|
||||||
|
from whisper_local.tray._tray import Win32TrayApp
|
||||||
|
|
||||||
|
tray = create_tray(on_settings=MagicMock(), on_quit=MagicMock())
|
||||||
|
assert isinstance(tray, Win32TrayApp)
|
||||||
|
|
||||||
|
@pytest.mark.skipif(sys.platform == "win32", reason="NoOpTray nur auf nicht-Windows")
|
||||||
|
def test_returns_noop_tray_on_non_windows(self):
|
||||||
|
from unittest.mock import MagicMock
|
||||||
|
from whisper_local.tray import create_tray
|
||||||
|
from whisper_local.tray._tray import NoOpTray
|
||||||
|
|
||||||
|
tray = create_tray(on_settings=MagicMock(), on_quit=MagicMock())
|
||||||
|
assert isinstance(tray, NoOpTray)
|
||||||
|
|
||||||
|
def test_appstate_exported_from_package(self):
|
||||||
|
from whisper_local.tray import AppState
|
||||||
|
assert AppState.WAITING is not None
|
||||||
|
assert AppState.RECORDING is not None
|
||||||
|
assert AppState.TRANSCRIBING is not None
|
||||||
|
|||||||
@@ -1 +1,20 @@
|
|||||||
"""Tray-Package — wird in späteren Tasks befüllt."""
|
"""Tray-Package — plattformspezifische Tray-App."""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
from typing import Callable
|
||||||
|
|
||||||
|
from whisper_local.tray._tray import AppState, NoOpTray
|
||||||
|
|
||||||
|
|
||||||
|
def create_tray(
|
||||||
|
on_settings: Callable[[], None],
|
||||||
|
on_quit: Callable[[], None],
|
||||||
|
) -> "Win32TrayApp | NoOpTray":
|
||||||
|
"""Gibt den plattformspezifischen Tray zurück."""
|
||||||
|
if sys.platform == "win32":
|
||||||
|
from whisper_local.tray._tray import Win32TrayApp
|
||||||
|
return Win32TrayApp(on_settings=on_settings, on_quit=on_quit)
|
||||||
|
return NoOpTray()
|
||||||
|
|
||||||
|
|
||||||
|
__all__ = ["create_tray", "AppState"]
|
||||||
|
|||||||
Reference in New Issue
Block a user