Myriad Blog 1.3.0 Thursday, Aug 21st, 2014 at 12:17am 

Monday, Mar 14th, 2011 at 04:55pm
Harmony 9.6 étape 176

 
Nous travaillons sur des problèmes d'instabilité de palettes MyrScript lorsque l'utilisateur effectue des opérations "lourdes" (ajout, suppression de portées, annulation ou répétition de la dernière commande, etc) sur le document que la palette utilise.
 
En effet, MyrScript est conçu pour un usage linéaire : le script est lancé, il récupère les divers objets : partition, portées, symboles, dans ses variables, y travaille dessus et se termine une fois la tâche effectuée. Il ne peut alors pas y avoir eu de modification du document par l'utilisateur durant le travail du script.
 
Mais avec les palettes flottantes, une telle chose devient possible. Si la palette ne récupère les objets que lors de son ouverture, et considère que ceux-ci restent valables indéfiniment, les problèmes pointent le bout de leur nez. En effet, telle ou telle portée, tel ou tel symbole, mémorisés par le script pour un travail ultérieur, peuvent être déplacés ou supprimés par l'utilisateur. Le script ne se rend alors pas compte qu'il ne faut plus y travailler dessus sous peine d'erreur ou de crash.
 
Nous essayons donc de mettre en place un système qui préviendrait les palettes MyrScript qu'un changement important a été effectué sur une partition ouverte, leur permettant ainsi de remettre à jour les objets par rapport au nouvel état de la partition. Mais cela demandera de compléter tous les scripts de type palette flottante qui pourraient présenter le problème.
by Olivier Guillion
Comments

Comment from Monday, Mar 14th, 2011 at 09:05pm
(No subject)
ca s'appele un pattern "observer"
 
http://en.wikipedia.org/wiki/Observer_pattern

Comment from Sylvain Machefert Monday, Mar 14th, 2011 at 09:46pm
listeners
.notify()
avec un paramètre type d'évènement, et autres objets (le fichier chargé, la portée ajoutée...)
ou alors .notifyForAddedStaff() .notifyForFileOpened() ...

Comment from Danièl Tuesday, Mar 15th, 2011 at 10:26am
(No subject)
C'est bien cela.
Actuellement MyrScript peut détecter notamment:
-Si la partition a été changée (Score.IsChanged)
-Si une portée a été modifiée (staff.IsChanged)
-Si on change de vue ou de partition
-Détecter Ctrl+Z ouY avec le clavier (function KeyDown())
 
-C'est plus délicat lorsque notamment:
On rajoute ou enlève une portée, une mesure, un symbole, à partir du menu ou des icônes des palettes.
On modifie le vues avec le dialogue "Edition des vues".
 
-Là où c'est vraiment embêtant c'est le "undo" et "redo" qui n'est pas détectable depuis Myrscript s'il se fait depuis Menu>Edition ou barre de menu>icône undo ou redo.
 
Pour contourner cela certains de mes scripts recalculent tout toutes les 1/2 secondes (par ex "mise en pages") ce qui est plutôt de l'ordre du bidouillage (mais qui fonctionne)
Ce dispositif n'est pas présent sur "piano à molette" et le "undo" depuis barre de menu>icône undo produit un crash.
 
La mise en place de ce système de 'surveillance' sera vraiment un plus pour la stabilité des scripts.
Tous mes encouragements!
Amistats, Danièl.


Most recent first
Oldest first

Top of page
Last update:  (c) Myriad 2013