feat: add AppState enum and programmatic tray icon generation
Implements Task 5 of the TDD plan: creates the tray package with AppState enum (WAITING, RECORDING, TRANSCRIBING) and a create_icon() function that generates colorized microphone icons via Pillow. - whisper_local/tray/__init__.py: empty package marker - whisper_local/tray/_tray.py: AppState enum - whisper_local/tray/_icon.py: icon generation with state-specific colors - tests/test_tray.py: comprehensive test coverage for icon creation Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
import sys
|
||||
import pytest
|
||||
|
||||
|
||||
@pytest.mark.skipif(sys.platform != "win32", reason="Tray nur auf Windows")
|
||||
class TestCreateIcon:
|
||||
def test_returns_image_for_each_state(self):
|
||||
from PIL import Image
|
||||
from whisper_local.tray._tray import AppState
|
||||
from whisper_local.tray._icon import create_icon
|
||||
|
||||
for state in AppState:
|
||||
img = create_icon(state)
|
||||
assert isinstance(img, Image.Image)
|
||||
assert img.size == (64, 64)
|
||||
assert img.mode == "RGBA"
|
||||
|
||||
def test_different_states_have_different_colors(self):
|
||||
from whisper_local.tray._tray import AppState
|
||||
from whisper_local.tray._icon import create_icon
|
||||
|
||||
waiting = create_icon(AppState.WAITING)
|
||||
recording = create_icon(AppState.RECORDING)
|
||||
assert waiting.tobytes() != recording.tobytes()
|
||||
Reference in New Issue
Block a user