HP Forums
Lanceur de programmes - Printable Version

+- HP Forums (https://www.hpmuseum.org/forum)
+-- Forum: HP Software Libraries (/forum-10.html)
+--- Forum: HP Prime Software Library (/forum-15.html)
+--- Thread: Lanceur de programmes (/thread-10021.html)



Lanceur de programmes - Tyann - 01-26-2018 06:32 AM

Bonjour

Ce programme permet de lancer facilement vos programmes préférés
en les enregistrant dans une liste et en vous les proposant sous forme
d'un menu (CHOOSE).

Vos programmes ne doivent pas attendre de paramétres et la fonction de
démarrage doit toujours se nommer pareil ici "EXPORT RUN".
(vous pouvez changer au début du listing si cela ne vous convient pas -> suf:="RUN")

On utilise ici le principe de qualification comme pour les variables communes
à plusieurs applications telles Xmin, Xmax etc...
Ainsi pour deux programmes AAA et BBB avec chacun une fonction RUN, on peut écrire
AAA.RUN et BBB.RUN.

La liste est enregistrée dans la variable HVars("lstlanceP"), le programme vous présente le menu suivant:
LANCER AJOUTER SUPPRIMER TRIER.

LANCER vous permet d'exécuter un programme enregistré.
après vérification que le programme enregistré existe toujours avec sa fonction RUN.
AJOUTER d'enregistrer un programme qui répond au critère (RUN)
SUPPRIMER de supprimer un programme du menu mais pas en mémoire.
TRIER de trier l'ordre de vos programmes dans le menu :
on se positionne sur un programme autre que le n°1 puis ENTER et celui-ci devient n°1
ESC pour quitter le tri et enregister le nouvel ordre.

Il s'agit d'une première version, vos commentaires, suggestions ou bugs trouvés sont les bien
venus.
Merci de vôtre attention.

* Ce programme n'apparaît pas dans la liste des programmes à ajouter.
** Ce programme nécessite la dernière version fireware (SUPPRESS et INSERT).


Hello

This program makes it easy to launch your favorite programs
by registering them in a list and proposing them in form
of a menu (CHOOSE).

Your programs do not have to wait for settings and the function of
startup must always be named the same here "EXPORT RUN".
(you can change at the beginning of the listing if it does not suit you -> suf: = "RUN")

We use here the principle of qualification as for common variables
to several applications such as Xmin, Xmax etc ...
So for two AAA and BBB programs each with a RUN function, you can write
AAA.RUN and BBB.RUN.

The list is stored in the variable HVars ("lstlanceP"), the program presents the following menu:
LAUNCH ADD DELETE SORT.

LANUCH allows you to run a saved program.
after checking that the saved program still exists with its RUN function.
ADD to record a program that meets the criterion (RUN)
DELETE deleting a program from the menu but not in memory.
SORT to sort the order of your programs in the menu:
we position ourselves on a program other than the n ° 1 then ENTER and this one becomes n ° 1
ESC to leave the sort and save the new order.

This is a first version, your comments, suggestions or bugs found are the good ones
came.
Thank you for your attention.

* This program does not appear in the list of programs to add.
** This program requires the latest fireware version (SUPPRESS and INSERT)

Code:

//By Tyann
suf:="RUN";
initv
BEGIN
 IF  NOT POS(HVars,"lstlanceP") THEN
  HVars("lstlanceP"):={}; 
 END;
END;
initp()
BEGIN
 LOCAL l,p;
 l:=Programs();p:=POS(l,"LANCEPROG");
 SUPPRESS(l,p);
END;
test1(n)
BEGIN
 LOCAL l:=Programs();
 SIGN(POS(l,n)); 
END;
test2(n)
BEGIN
 LOCAL s:=Programs(n);
 SIGN(INSTRING(s,"EXPORT "+suf));
END;
lancer(p)
BEGIN
 CASE
  IF  NOT test1(p) THEN 
   MSGBOX(p+" introuvable !");
  END;
  IF  NOT test2(p) THEN
   MSGBOX(p+"."+suf+" introuvable !"); 
  END;
  DEFAULT
   EXPR(p+"."+suf);
END;
END;
ajouter(p,l)
BEGIN
 CASE
  IF POS(l,p) THEN
   MSGBOX(p+" déjà enregistré");
  END;
  IF  NOT test2(p) THEN
   MSGBOX(p+"."+suf+" introuvable !");  
  END;
  DEFAULT
   l(0):=p;
   HVars("lstlanceP"):=l;
   MSGBOX(p+" a été ajouté");
 END;
 l;
END;
trier(l)
BEGIN
 LOCAL r,e,c;
 REPEAT 
  r:=CHOOSE(c,"TRIER",l);
  IF r AND c>1 THEN
   e:=l(c);l:=SUPPRESS(l,c);
   l:=INSERT(l,1,e);
  END; 
 UNTIL NOT r;
 l; 
END;

EXPORT RUN()
BEGIN
 initv;
 LOCAL l:=HVars("lstlanceP"),
       lch:={"LANCER","AJOUTER","SUPPRIMER","TRIER"},
       lp;
 LOCAL ch,prog,e,t,p,dl;
 REPEAT
  ch:=1;dl:=SIZE(l);
  e:=CHOOSE(ch,"LANCEUR",lch);
  IF e THEN
   lp:=initp(); 
   CASE
    if ch==1 then
     REPEAT
      IF dl THEN
       e:=CHOOSE(ch,"LANCER",l);
       IF e THEN
        prog:=l(ch);
        lancer(prog);
       END;
      ELSE
       MSGBOX("Pas de Programme à lancer");
       BREAK;
      END;
     UNTIL NOT e; 
    end;
    if ch==2 then
     e:=INPUT({{ch,lp}},"AJOUTER","Programme ","Choix du programme","","");
     IF e THEN
      l:=ajouter(lp(ch),l);
     END;
    end;
    if ch==3 then
     IF dl THEN
      e:=INPUT({{ch,l}},"SUPPRIMER","Programme ","Choix du programme","","");
      IF e THEN
       prog:=l(ch);
       l:=suppress(l,ch);
       HVars("lstlanceP"):=l;
       MSGBOX(prog+CHAR(10)+"a été supprimé");
      END;
     ELSE
      MSGBOX("Pas de Programme à supprimer"); 
     END; 
    end;
    if ch==4 then
     IF dl>1 THEN
      l:=trier(l);
      HVars("lstlanceP"):=l; 
     ELSE
        MSGBOX("Pas de Programme à trier"); 
     END; 
    end;
   END;//case 
  ELSE
   BREAK; 
  END;
 UNTIL 0; 
END;