FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Une autre façon de terminer une application.
par Francis-mr Aujourd'hui à 12:07

» Compilateur FBPano
par jean_debord Aujourd'hui à 10:09

» Copier / coller du texte à partir de la fenêtre de commandes
par jean_debord Aujourd'hui à 9:46

» COMPILATEUR V 0.9 beta 8 du 18 aout 2017
par papydall Aujourd'hui à 5:01

» Mettre en windows en veille
par papydall Aujourd'hui à 4:15

» Stretch_on ne stretch plus...
par papydall Hier à 15:22

» Pb 18 (en analyse): RESTORE_LABEL avec DATA à la fin
par Jack Hier à 13:21

» Problème de traitement des opérateurs avec le compilateur.
par Pedro Alvarez Sam 19 Aoû 2017 - 20:01

» Pb 17 (résolu): ITEM_SELECT ne fonctionne pas
par Jack Jeu 17 Aoû 2017 - 19:26

» un nouveau editeur panobasic
par Jean Claude Jeu 17 Aoû 2017 - 10:18

» Le compilateur.
par Pedro Alvarez Jeu 17 Aoû 2017 - 8:36

» Pb 16 (résolu): ON_CLOSE plante à l'exécution
par Jack Mer 16 Aoû 2017 - 20:00

» Pb 15 (résolu): TIMER_ON plante à l'exécution
par Jack Mer 16 Aoû 2017 - 19:58

» KGF_dll - nouvelles versions
par Yannick Dim 13 Aoû 2017 - 17:35

» probleme d'outil
par Yannick Dim 13 Aoû 2017 - 17:32

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Août 2017
LunMarMerJeuVenSamDim
 123456
78910111213
14151617181920
21222324252627
28293031   
CalendrierCalendrier

Partagez | 
 

 Générateur de menu à partir d'un fichier texte

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Générateur de menu à partir d'un fichier texte   Sam 26 Sep 2015 - 14:27

Dale le cadre d'un autre fil de discussion, j'avais posté ce petit outil pour générer le code Panoramic de création d'un menu avc sous-menus hiérarchisés sans limitation. Le voici, de façon autonome:

On peut passer par un fichier texte, chargé dans un mémo, et générer le menu à partir de là. Voici un petit programme très simple qui réalise cela. Notons que "simple" ne veut pas dire "pas puissant". On peut créer autant de sous-menus et lignes de menus que tu veux, il gère le on_click et la génération autimatique des numéros d'objets.
Code:
' editeur_de_menu.bas
'
' Le menu est constitué dans un fichier texte.
' Me caractère "-" indique le niveau d'indention
' Le fichier est présenté dans un mémo, éditable.
' Il peut être sauvegardé et restauré.
' Un bouton permet de générer le code source du menu dans un autre mémo.
' Un spin donne le numéro d'objet de départ pour la création de tous les objets.

label load, save, generate, export, copy

dim no%, no1%, no_open%, no_save%, no_bas%, no_mnu%, no_stack%, no_start%, no_label%
dim f$, i%, s$, niv%, gg$, lab$
gg$ = chr$(34)

width 0,1000
no% = 1000 : no_mnu% = no%
no1% = no%
memo no% : top no%,10 : left no%,10 : width no%,400 : height no%,300 : bar_both no%
  font_name no%,"Courier" : font_size no%,10
no% = no% + 1 : button no% : top no%,top(no1%) : left no%,left(no1%)+width(no1%)+10
  caption no%,"Ouvrir" : on_click no%,load
no% = no% + 1 : button no% : top no%,top(no%-1)+30 : left no%,left(no%-1)
  caption no%,"Sauver" : on_click no%,save
no% = no% + 1 :alpha no% : top no%,top(no%-1)+50 : left no%,left(no%-1)
  caption no%,"Numéro de début:"
no% = no% + 1 : no_start% = no% : spin no%
  top no%,top(no%-1)+20 : left no%,left(no%-1) : width no%,80
  min no%,1 : max no%,10000 : position no%,100
no% = no% + 1 :alpha no% : top no%,top(no%-1)+30 : left no%,left(no%-1)
  caption no%,"Label onclick:"
no% = no% + 1 : no_label% = no% : edit no%
  top no%,top(no%-1)+20 : left no%,left(no%-1) : width no%,80
no% = no% + 1 : button no% : top no%,top(no%-1)+50 : left no%,left(no%-1)
  caption no%,"Générer" : on_click no%,generate
no% = no% + 1 : button no% : top no%,top(no%-1)+50 : left no%,left(no%-1)
  caption no%,"Exporter" : on_click no%,export
no% = no% + 1 : button no% : top no%,top(no%-1)+30 : left no%,left(no%-1)
  caption no%,"Copier" : on_click no%,copy
no% = no% + 1 : no_bas% = no% : memo no%
  top no%,top(no1%) : left no%,left(no1%+1)+width(no1%+1)+20
  width no%,width(no1%) : height no%,height(no1%) :inactive no%
no% = no% + 1 : no_open% = no% : open_dialog no%
no% = no% + 1 : no_save% = no% : save_dialog no%
no% = no% + 1 : no_stack% = no% : dlist no%
end

load:
  filter no_open%,"Fichier source menu|*.mnu"
  f$ = file_name$(no_open%)
  if f$="_" then return
  if lower$(right$(f$,4))<>".mnu" then f$ = f$ + ".mnu"
  if file_exists(f$)=0
    message "Ce fichier n'existe pas."
    message f$
    return
  end_if
  file_load no_mnu%,f$
  return
 
save:
  filter no_save%,"Fichier source menu|*.mnu"
  f$ = file_name$(no_save%)
  if f$="_" then return
  if lower$(right$(f$,4))<>".mnu" then f$ = f$ + ".mnu"
  if file_exists(f$)=1
    if message_information_yes_no("Ce fichier existe déjà. Remplacer ?")<>1 then return
  end_if
  file_save no_mnu%,f$
  return
 
export:
  filter no_save%,"Fichier source Panoramic|*.bas"
  f$ = file_name$(no_save%)
  if f$="_" then return
  if lower$(right$(f$,4))<>".bas" then f$ = f$ + ".bas"
  if file_exists(f$)=1
    if message_information_yes_no("Ce fichier existe déjà. Remplacer ?")<>1 then return
  end_if
  file_save no_bas%,f$
  message "Le texte généré a été enregistré."
  return
 
copy:
  if count(no_bas%)=0
    message "Il n'y a rien à copier."
    return
  end_if
  s$ = ""
  for i%=1 to count(no_bas%)
    s$ = s$ + item_read$(no_bas%,i%) +chr$(13) + chr$(10)
  next i%
  clipboard_string_copy s$
  message "Le texte généré a été copié dans le presse-papier."
  return

generate:
  if count(no_mnu%)=0
    message "Rien à générer."
    return
  end_if
  lab$ = trim$(text$(no_label%))
  if len(lab$)=0
    message "Le label n'est pas défini - 'Click' est utilisé par défaut."
    lab$ = "Click"
    text no_label%,lab$
  end_if
  no% = position(no_start%)
  clear no_bas%
  clear no_stack%
  item_add no_bas%,"label "+lab$
  item_add no_bas%,"main_menu "+str$(no%)
  item_add no_stack%,str$(no%)
  for i%=1 to count(no_mnu%)
    s$ = item_read$(no_mnu%,i%)
      niv% = 0
      while left$(s$,1)="-"
        niv% = niv% + 1
        s$ = mid$(s$,2,len(s$))
      end_while
      if niv%>=count(no_stack%)
        if niv%>(count(no_stack%)+1)
          message "Oups - erreur dans la structure à la ligne "+str$(i%)+chr$(13)+chr$(10)+s$
          return
        end_if
        item_add no_stack%,str$(no%)
      else
        while niv%<(count(no_stack%)-1)
          item_delete no_stack%,count(no_stack%)
        end_while
      end_if
      no% = no% + 1
      item_add no_bas%,"sub_menu "+str$(no%)
      item_add no_bas%,"  parent "+str$(no%)+","+item_read$(no_stack%,count(no_stack%))
      item_add no_bas%,"  caption "+str$(no%)+","+gg$+s$+gg$
      item_add no_bas%,"  on_click "+str$(no%)+","+lab$
  next i%
  item_add no_bas%,"end"
  item_add no_bas%,""
  item_add no_bas%,lab$ + ":"
  item_add no_bas%,"  Sub"+lab$+"()"
  item_add no_bas%,"  return"
  item_add no_bas%,""
  item_add no_bas%,"sub Sub"+lab$+"()"
  item_add no_bas%,"  dim_local obj%"
  item_add no_bas%,"  obj% = number_click"
  item_add no_bas%,"  select obj%"
  item_add no_bas%,"    case "+str$(position(no_start%)+1)
  item_add no_bas%,"'    case "
  item_add no_bas%,"'    case "
  item_add no_bas%,"'    case "
  item_add no_bas%," end_select"
  item_add no_bas%,"end_sub"


  return


Il travaille avec des fichiers *.mnu qui contiennent les définitions des menus, et génère des *.bas. Voici un fichier mnu à titre d'exemple, pour les tests:
Code:
Fichiers
-Ouvrir
--Texte
--Panoramic
---Ancien
---Nouveau
--RTF
-Nouveau
--Texte
--Panoramic
---Ancien
---Nouveau
--RTF
-Fermer
Edition
-Copier
-Coller

Et voici le code généré, parfaitement fonctionnel:
Code:
label Click
main_menu 100
sub_menu 101
  parent 101,100
  caption 101,"Fichiers"
  on_click 101,Click
sub_menu 102
  parent 102,101
  caption 102,"Ouvrir"
  on_click 102,Click
sub_menu 103
  parent 103,102
  caption 103,"Texte"
  on_click 103,Click
sub_menu 104
  parent 104,102
  caption 104,"Panoramic"
  on_click 104,Click
sub_menu 105
  parent 105,104
  caption 105,"Ancien"
  on_click 105,Click
sub_menu 106
  parent 106,104
  caption 106,"Nouveau"
  on_click 106,Click
sub_menu 107
  parent 107,102
  caption 107,"RTF"
  on_click 107,Click
sub_menu 108
  parent 108,101
  caption 108,"Nouveau"
  on_click 108,Click
sub_menu 109
  parent 109,108
  caption 109,"Texte"
  on_click 109,Click
sub_menu 110
  parent 110,108
  caption 110,"Panoramic"
  on_click 110,Click
sub_menu 111
  parent 111,110
  caption 111,"Ancien"
  on_click 111,Click
sub_menu 112
  parent 112,110
  caption 112,"Nouveau"
  on_click 112,Click
sub_menu 113
  parent 113,108
  caption 113,"RTF"
  on_click 113,Click
sub_menu 114
  parent 114,101
  caption 114,"Fermer"
  on_click 114,Click
sub_menu 115
  parent 115,100
  caption 115,"Edition"
  on_click 115,Click
sub_menu 116
  parent 116,115
  caption 116,"Copier"
  on_click 116,Click
sub_menu 117
  parent 117,115
  caption 117,"Coller"
  on_click 117,Click
end

Click:
  SubClick()
  return

sub SubClick()
  dim_local obj%
  obj% = number_click
  select obj%
    case 101
'    case
'    case
'    case
 end_select
end_sub


Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jean Claude

avatar

Nombre de messages : 4989
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Générateur de menu à partir d'un fichier texte   Sam 26 Sep 2015 - 14:59

Salut Klaus,

J'ai voulu tester ton programme, mais il n'y a pas l'option "nouveau".
Je suppose que c'est normal, vu qu'il doit être prévu pour GPP ou un autre éditeur.
Je le testerai, MAIS JE NE SUIS PAS CONTENT Very Happy Car je suis actuellement entrain de dévelloper un code pour faire la même chose...  Razz
Et comme ma vitesse de programmation n'est pas la tienne, je me suis fait doubler.

Sérieusement, tu as bien fait de te pencher sur le problème car ça va être utile pour Minibug et pour Pascal1000.

Quand j'aurai terminé le mien, je le posterais et tu verras qu'il y a des options que tu n'a pas prévues ...
Mais je garde le secret, sinon tu vas dégainer avant que j'ai eu le temps de dire OUF ! cherry

Alors à bientôt  Very Happy  geek

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Générateur de menu à partir d'un fichier texte   Sam 26 Sep 2015 - 15:11

Tu sais, pour le tester, tu as deux possibilités:
1. Saisir directement le texte dans le mémo de gauche, 1 ligne par menu ou sous-menu. Le caractère "-" sert à donner l'indentation (la profondeur des menus et sous-menus.
2. Tu prends le fichier exemple que j'ai posté et tu le dépose où tu veux, avec l'extension *.mnu. Tu peux alors l'ouvrir avec le bouton "Ouvrir" ou copier/coller son contenu directement dans le mémo de gauche.

Ensuite, il n'y a plus qu'à régler les paramètres (nom du label on_click et premier numéro d'objet à utiliser), et appuyer sur "Générer".

Voila. C'est tout simple.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Laurent (Minibug)

avatar

Nombre de messages : 2353
Age : 50
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Générateur de menu à partir d'un fichier texte   Sam 26 Sep 2015 - 15:21

Bonjour a tous !

Comme le dit jean Claude, cela va me donner des idées pour GPP, c'est sûr...Wink

Le problème qui se pose maintenant, c'est qu'a force d'avoir plein d'idées, je ne vais plus savoir laquelle choisir !!!!

lol! lol! lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 4989
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Générateur de menu à partir d'un fichier texte   Sam 26 Sep 2015 - 15:25

@Klaus
Oui, effectivement c'est simple d'utilisation.

J'espère te présenter le mien dans la semaine qui vient. La méthode n'est pas du tout la même.
Cela fera un casse tête de plus pour Minibug Very Happy

à bientôt.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
pascal10000

avatar

Nombre de messages : 518
Localisation : Troyes
Date d'inscription : 05/02/2011

MessageSujet: Re: Générateur de menu à partir d'un fichier texte   Sam 26 Sep 2015 - 17:27

je le trouve intéressent et fonctionelle mais a mon opignon
il faut toujours écrire du code un peut plus court certe qu'a la traditionelle
mais bon! c'est très bien rien a redire
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Laurent (Minibug)

avatar

Nombre de messages : 2353
Age : 50
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Générateur de menu à partir d'un fichier texte   Sam 26 Sep 2015 - 18:02

Pour GPP, je pense garder le principe du fichier unique avec indentation du code de klaus que je trouve très pratique.

mais pour la saisie, j'étudie encore le meilleur principe. Certainement une saisie par EDIT avec quelques boutons pour naviguer dans l'arborescence du menu déroulant et les ajouts.
J'attends aussi le code de Jean Claude.

Donc affaire a suivre... Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Générateur de menu à partir d'un fichier texte   

Revenir en haut Aller en bas
 
Générateur de menu à partir d'un fichier texte
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Menu déroulant avec un bouton
» Plusieurs fichiers img sur une seule SD
» Créer un fichier GMAP ou GMAPI à partir d'un fichier OSM img sous mac OSX
» changer la tonalité dun fichier midi
» [Projet] Générateur de Signatures

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC 32 bits :: Vos sources, vos utilitaires à partager-
Sauter vers: