Le controleur passe par les contrats, la duplication disparait
This commit is contained in:
@@ -31,6 +31,7 @@ from pynput import keyboard
|
||||
from controller import ZonzaController
|
||||
from core import CONFIG, validate_config
|
||||
from interface import classe_overlay_pour
|
||||
from moteur import choisir_transcripteur, detecter_moteur
|
||||
from systeme import choisir_systeme
|
||||
|
||||
_STATE_TITLES = {
|
||||
@@ -43,7 +44,7 @@ _STATE_TITLES = {
|
||||
class ZonzaApp(NSObject):
|
||||
"""Délégué applicatif : status item + menu + hotkey + contrôleur."""
|
||||
|
||||
def init(self):
|
||||
def initWithTranscripteur_systeme_(self, transcripteur, systeme):
|
||||
self = super().init()
|
||||
if self is None:
|
||||
return None
|
||||
@@ -51,7 +52,7 @@ class ZonzaApp(NSObject):
|
||||
self._sounds_item = None
|
||||
self.pulse = classe_overlay_pour().alloc().init()
|
||||
self.controller = ZonzaController(
|
||||
CONFIG, self.pulse, on_state=self._set_state,
|
||||
CONFIG, self.pulse, transcripteur, systeme, on_state=self._set_state,
|
||||
run_on_main=AppHelper.callAfter,
|
||||
)
|
||||
self._listener = None
|
||||
@@ -140,6 +141,12 @@ def main():
|
||||
return
|
||||
main._lock = lock # garder le verrou vivant tant que le process vit
|
||||
validate_config(CONFIG)
|
||||
transcripteur = choisir_transcripteur(
|
||||
nom=detecter_moteur(),
|
||||
modele=CONFIG["model"],
|
||||
langue=CONFIG["language"],
|
||||
amorce=CONFIG["initial_prompt"],
|
||||
)
|
||||
# si l'Accessibilité n'est pas accordée, macOS affiche sa popup officielle
|
||||
# (« Zonza souhaite contrôler cet ordinateur ») et ajoute l'app à la liste —
|
||||
# bien plus fiable qu'un ajout manuel via « + » dans les Réglages.
|
||||
@@ -150,7 +157,7 @@ def main():
|
||||
trusted = AXIsProcessTrustedWithOptions({kAXTrustedCheckOptionPrompt: True})
|
||||
print(f"[diag] accessibilité accordée : {bool(trusted)}")
|
||||
app = NSApplication.sharedApplication()
|
||||
delegate = ZonzaApp.alloc().init()
|
||||
delegate = ZonzaApp.alloc().initWithTranscripteur_systeme_(transcripteur, systeme)
|
||||
delegate.setup()
|
||||
# référence gardée pour toute la vie du processus (sinon GC → icône disparaît)
|
||||
main._delegate = delegate
|
||||
|
||||
Reference in New Issue
Block a user