Myriad Forum « Passer en interactif? »
 Welcome, Guest.
 You can read all messages, but to be able to post,
 please Login or Register.
Mar 7th, 2021, 7:42am 
   Myriad Forum
   MyrScript Language
(Moderator: Forum Administrator)
   Passer en interactif?
« Previous topic | Next topic »
Pages: 1 2  Reply | Notify of replies | Print
   Author  Topic: Passer en interactif?  (Read 547 times)
Andre_B
Board Master
*****





   
Email

Gender: male
Posts: 1782
Passer en interactif?  
« on: Sep 13th, 2020, 8:39am »
Quote | Modify

Dans un script ouvert sur une partition, je prépare celle-ci en ajustant un certain nombre de variables, en supprimant des mesures, etc.  
Puis je voudrais passer en mode interactif et continuer certaines opérations "à la main" - ce qui peut être en préparation d'une extension du script ultérieurement, mais il faut préparer le processus.  
Et quand ceci est fini, retourner au script pour passer éventuellement à une nouvelle étape, et pour faire un nettoyage puis remettre la partition ouverte dans son état initial.  
 
Pour la première action, il me suffit d'un exit() . Mais pour continuer ensuite?  
 
Est-ce possible, quelqu'un a-t-il fait cela?  
 
Merci!
offline

André Baeck, Belge vivant dans le Gard
Windows 10, HA 992e (et précédents)
bubu42
Board Master
*****





   


Gender: male
Posts: 9966
Re: Passer en interactif?  
« Reply #1 on: Sep 13th, 2020, 9:32am »
Quote | Modify

C'est donc un script ".mys" et au retour il faudrait qu'il se relance non pas au début, mais à un autre endroit...
Est-ce que ça ne serait pas plus pratique d'utiliser une fenêtre flottante (.myf) avec des boutons permettant de lancer chaque partie du script ?
offline

Harmony Assistant - Ubuntu + Wine et Windows XP sur machine virtuelle. VS, OMeR, PDF2M
Andre_B
Board Master
*****





   
Email

Gender: male
Posts: 1782
Re: Passer en interactif?  
« Reply #2 on: Sep 13th, 2020, 11:23am »
Quote | Modify

Non, c’est un .myf, avec un écran de base plein de coches et de boutons rotatifs, puis quelques « buttons » qui lancent les éléments actifs, ainsi qu’un « finish » . Entre deux boutons, je n’ai accès qu’a La fenêtre flottante, je ne peux pas accéder à la « score window » - ou plutôt je ne sais pas comment le faire.
offline

André Baeck, Belge vivant dans le Gard
Windows 10, HA 992e (et précédents)
bubu42
Board Master
*****





   


Gender: male
Posts: 9966
Re: Passer en interactif?  
« Reply #3 on: Sep 13th, 2020, 11:56am »
Quote | Modify

Attention : en mode test, donc avec les fenêtres d'édition, en appuyant sur la flèche bleue pour lancer le script, on n'a effectivement plus accès à la partition. Par contre, en mode réel, la fenêtre du script rend bien la main.
offline

Harmony Assistant - Ubuntu + Wine et Windows XP sur machine virtuelle. VS, OMeR, PDF2M
Andre_B
Board Master
*****





   
Email

Gender: male
Posts: 1782
Re: Passer en interactif?  
« Reply #4 on: Sep 13th, 2020, 12:52pm »
Quote | Modify

Ah oui en effet, je ne m’en étais jamais rendu compte ; il faut dire que je suis le plus souvent en mode test pour ce type de script.
Je vais essayer de mettre cela en musique, ou plutôt en programme.
 
Merci Jean-Pierre
offline

André Baeck, Belge vivant dans le Gard
Windows 10, HA 992e (et précédents)
Andre_B
Board Master
*****





   
Email

Gender: male
Posts: 1782
Re: Passer en interactif?  
« Reply #5 on: Sep 14th, 2020, 11:45am »
Quote | Modify

on Sep 13th, 2020, 11:56am, bubu42 wrote:
Attention : en mode test, donc avec les fenêtres d'édition, en appuyant sur la flèche bleue pour lancer le script, on n'a effectivement plus accès à la partition. Par contre, en mode réel, la fenêtre du script rend bien la main.

 
En effet. Comment peut-on, dans le script, savoir si on est en mode test ou en mode réel?  
 
Et ce n'est pas aisé de tester un script qui ne tourne pas en mode test...  
 
J'ai fait quelques essais, ce n'est pas aisé d'intégrer dans mon niveau de boucles et sous-boucles un retour sec vers la fenêtre flottante...  (et puis d'y retourner...)
 
J'avais espéré pouvoir entrer le mode interactif au fin fond de ma logique, tout en y restant pour la suite.  
 
Merci, Jean-Pierre!
offline

André Baeck, Belge vivant dans le Gard
Windows 10, HA 992e (et précédents)
Daniel Frouvelle
Board Master
*****






   
WWW | Email

Gender: male
Posts: 1481
Re: Passer en interactif?  
« Reply #6 on: Sep 14th, 2020, 12:56pm »
Quote | Modify

Quote:
J'ai fait quelques essais, ce n'est pas aisé d'intégrer dans mon niveau de boucles et sous-boucles un retour sec vers la fenêtre flottante...  (et puis d'y retourner...)
Bonjour André, je fais cela avec un test dans la procédure "Idle" du dialogue principal, qui repère la position de la souris : Si elle est dans la fenêtre du script, le script prend la main, il la perd dès que la souris sort de la fenêtre.
Si cela répond à ton problème je peux t'envoyer du code si besoin.
Amistats, Danièl.
offline
Andre_B
Board Master
*****





   
Email

Gender: male
Posts: 1782
Re: Passer en interactif?  
« Reply #7 on: Sep 14th, 2020, 1:48pm »
Quote | Modify

Oui, Danièl, merci. Je veux bien un exemple de code car je n'ai jamais attaqué la souris dans mes scripts.  
Si ce n'est pas trop d'intérêt général, mon adresse mail est dans mon profil.
offline

André Baeck, Belge vivant dans le Gard
Windows 10, HA 992e (et précédents)
Daniel Frouvelle
Board Master
*****






   
WWW | Email

Gender: male
Posts: 1481
Re: Passer en interactif?   TestSouris.msa
« Reply #8 on: Sep 14th, 2020, 3:06pm »
Quote | Modify

Voici
offline
Andre_B
Board Master
*****





   
Email

Gender: male
Posts: 1782
Re: Passer en interactif?  
« Reply #9 on: Sep 14th, 2020, 5:35pm »
Quote | Modify

Merci Danièl,  
Je vois ce que ça fait, mais pas le lien avec ce que je voudrais faire.  
 
Je pourrais le décrire mieux ainsi: à un moment dans l'exécution d'un script, je voudrais le mettre en "idle" pour pouvoir exécuter quelque chose, ensuite continuer le script (cela pourrait être en remettant la souris dans la fenêtre flottante).
 
Exemple de "quelque chose":  
 
- un script vérifie des séquences de variables, et lorsqu'il détecte ce qui ne lui plaît pas, donne la main à l'utilisateur pour corriger la source de la partition.  
 
- lancer un export en affichant l'écran d'options de cet export.  
 
J'ai essayé en remettant la partition à l'avant-plan (score.BringtoFront) et en attendant (WaitDelay ou Message) mais cela ne m'envoie pas dans l'état "idle".  
 
offline

André Baeck, Belge vivant dans le Gard
Windows 10, HA 992e (et précédents)
Daniel Frouvelle
Board Master
*****






   
WWW | Email

Gender: male
Posts: 1481
Re: Passer en interactif?  
« Reply #10 on: Sep 15th, 2020, 2:01pm »
Quote | Modify

Bonjour André, Quote:
- un script vérifie des séquences de variables, et lorsqu'il détecte ce qui ne lui plaît pas, donne la main à l'utilisateur pour corriger la source de la partition.
Si j'ai bien compris:
Lorqu'il détecte ce qui ne lui plait pas tu peux mettre dans ta routine un indicateur "IndStop=true" par exemple
Tu encardres ton "Idle" avec IndStop, et lorsque IndStop=true la routine s'arrête:
function Idle(dialog)
             if IndStop==false then
               -- TA ROUTINE............................
              end      
end

Quand tu as fait ta correction manuelle tu cliques dans un bouton "Continuer" qui met IndStop à false et ta routine redémarre.
Amistats, Danièl.
« Last Edit: Sep 15th, 2020, 2:04pm by Daniel Frouvelle » offline
Andre_B
Board Master
*****





   
Email

Gender: male
Posts: 1782
Re: Passer en interactif?  
« Reply #11 on: Sep 15th, 2020, 2:42pm »
Quote | Modify

Bizarre...
 
Je suis dans une fonction initiée par un "button".  
Dans ma logique je mets IndStop à true (ce suppose que c'est un nom de variable pris comme exemple)  et puis?  
 
La fonction Idle ne sera, me semble-t-il, activée que lorsque je serai sorti de la fonction du button. Puis-je plutôt me mettre "en attente" tout en gardant (un "marque-page") dans cette fonction?
offline

André Baeck, Belge vivant dans le Gard
Windows 10, HA 992e (et précédents)
Daniel Frouvelle
Board Master
*****






   
WWW | Email

Gender: male
Posts: 1481
Re: Passer en interactif?  
« Reply #12 on: Sep 15th, 2020, 3:06pm »
Quote | Modify

Quote:
Je suis dans une fonction initiée par un "button".
Eh bien dans ce cas c'est dans l'Idle du bouton que tu fais ta routine (pas dans "Push" ni "Release"):
-- Init : called just after the dialog has been displayed for the first time
function Init(dialog,item)
     IndStop=true
end
-- Push : called when item is clicked
function Push(dialog,item)
     IndStop=false
end
-- Idle : called when nothing happens to the dialog box
function Idle(dialog,item)
     if IndStop==false then
          ...TA ROUTINE.....qui boucle avec Idle et met IndStop à true lorsqu'il y a un problème
     end
end

Quand tu as fini ta correction manuelle tu appuies de nouveau sur le même bouton...
« Last Edit: Sep 16th, 2020, 9:16am by Daniel Frouvelle » offline
PaulL
Board Master
*****




Organist and choir director

   


Gender: male
Posts: 902
Re: Passer en interactif?  
« Reply #13 on: Sep 16th, 2020, 2:12am »
Quote | Modify

I. Another solution might be recursive calls of the script with different parameters, according to the circumstances.
 
I don't know Lua well enough, however, to know if scripts accept command-line parameters, or even, if Lua allows it, whether Myrscript does.
 
I suppose the non-recursive equivalent would be to have a loop, in which there is the ability to set parameters that could either re-run or break out of the loop at the top.
 
II. Yet another alternative might be to call a second script that does nothing but wait, and then the original script could continue when the second script ends (presumably on a button click).
offline

Le coeur a ses raisons, que la Raison ne connaît point.
Paul Littlefield, Church musician

HA+VS+PdfToMusic Win 10
Daniel Frouvelle
Board Master
*****






   
WWW | Email

Gender: male
Posts: 1481
Re: Passer en interactif?  
« Reply #14 on: Sep 16th, 2020, 9:28am »
Quote | Modify

Pour illustrer ce que j'ai écrit plus haut le code suivant dans un bouton imprime la suite des nombres de 1 à 400 et s'arrête à chaque multiple de 47 : l'opération continue si on clique à nouveau sur le bouton, et se termine quand on a atteint 400 (on peut répéter la procédure puisque le compteur est remis à 0):
 
---------- Init : called just after the dialog has been displayed for the first time
function Init(dialog,item)
 IndStop=true Compteur=0
end
---------- Release : called when mouse button is released
function Release(dialog,item)
      IndStop=false
end
---------- Idle : called when nothing happens to the dialog box
function Idle(dialog,item)
      if IndStop==false then
            if Compteur>0 and mod(Compteur,47)==0 then  
                  IndStop=true  
                  print(Compteur,"STOP")
                  Compteur=Compteur+1
            elseif Compteur>=400 then
                  IndStop=true  
                  print(Compteur,"FIN")
                  Compteur=0 --initialise le compteur pour recommencer
            elseif Compteur<400 then
                  print(Compteur)
                  Compteur=Compteur+1
            end
      end      
end

Il faut garder en tête que la fonction Idle est une boucle qui tourne sans arrêt (plusieurs fois par seconde) tant que le script est ouvert, Mettre IndStop à true et tester IndStop en tête de la fonction fait qu'elle tourne "dans le vide". Rien ne se passe au niveau du script et donc l'utilisateur a toute latitude pour intervenir sur sa partition.
Amistats, Danièl.
« Last Edit: Sep 16th, 2020, 12:03pm by Daniel Frouvelle » offline
Pages: 1 2  Reply | Notify of replies | Print

« Previous topic | Next topic »

« Myriad Forum » Powered by YaBB 1 Gold - SP 1.1!
YaBB © 2000-2002,
Xnull. All Rights Reserved.

Top of page
Legal information Last update:  (c) Myriad