Bonjour,
J'ai un peu du mal à exposer le problème, je vais essayer d'être le plus clair possible. Je développe une une interface graphique homme machine vers un boitier d'acquisition / émission de son. J'ai pour le moment utilisé la technique GetAppData / SetAppData / FindObj, comme montrée dans le super tuto sur le développement efficace des GUI.
Au début de mon main.m, j'ai les initialisations d'un certain nombre de structures (que je trouve plus pratiques pour regrouper thématiquement les variables : structure de paramètres d'acquisition, structure de paramètres d'émission,structure des données acquises...), que je stocke toutes dans l'objet root avec des setappdata(0,structure_machin), pour pouvoir y accéder dans toutes les fenêtres de mon programme, car j'en ai besoin dans un peu partout.
Une fois toutes ces initialisations et stockages faits, je lance tout naturellement la fenêtre principale de l'interface graphique. Là, j'ai déjà besoin de certaines données pour faire des affichages, donc je récupère celles qui m'intéressent par avec des
J'obtiens les données qui vont bien et donc la fenêtre principale qui va bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 structure_machin = getappdata(0,'structure_machin)
Dans cette fenêtre principale, j'ai plein de boutons qui :
- soit font des actions modifiant directement mes structures (dans les callbacks, j'appelle les structures avec getappdata, je les modifie et je réenregistre avec un setappdata en écrasant les précédentes valeurs)
- soit qui ouvrent des fenêtres secondaires où on retrouve le même mécanisme (c'est récursif comme problème )
Le problème : j'aimerais que la fenêtre principale se mette à jour en temps réel (ou presque) quand des modifications se font ailleurs. Même problèmes si des modifications se font directement sur la fenêtre principale.
Exemple simple : la fenêtre principale affiche la visualisation en temps réel de ce qui arrive dans les micros, en affichant un certain nombre de vecteurs d'échantillons, un par voie d'acquisition. Dans une fenêtre secondaire d'options, je peux modifier le nombre de voies à utiliser. Ça serait bien que le nombre de voies affichées change...
J'ai pensé à plusieurs choses, en lisant quelques trucs ici, mais j'ai rien trouvé de génial : redessiner complètement la fenêtre principale quand on ferme une fenêtre secondaire, le faire périodiquement mais si je le fais suffisamment souvent pour pas que ça soit invisible a l'œil nu l'application soit très ralentie,... L'idée serait de forcer à réévaluer au bon moment la ligne
mais je ne vois pas du tout comment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 structure_machin = getappdata(0,'structure_machin)
Après, peut-être que la technique GetAppData / SetAppData / FindObj n'est pas adaptée... Avec des variables globales, ça irait niquel, mais c'est moche... Clairement je pense que je gère mal les stockages / récupérations des données, alors n'hésitez pas à me botter les fesses si je fais n'importe quoi
Bref, si vous avez des suggestions, je prend tout !!!
Merci d'avance !
Partager