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
» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Klaus Aujourd'hui à 19:48

» KGF_dll - nouvelles versions
par pascal10000 Aujourd'hui à 17:27

» Mah-Jong européen new-look
par Minibug Hier à 22:31

» track_bar circulaire
par Klaus Hier à 13:54

» API Windows
par Klaus Hier à 3:21

» Cartes de voeux, menus, etc.
par JL35 Lun 11 Déc 2017 - 17:48

» a l'aide klaus
par Minibug Lun 11 Déc 2017 - 11:42

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Lun 11 Déc 2017 - 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

» Ecouter la radio fm sur votre pc
par pascal10000 Sam 9 Déc 2017 - 3:42

» anomalie
par Klaus Sam 9 Déc 2017 - 3:21

» hommage
par Jicehel Ven 8 Déc 2017 - 11:29

» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Ven 8 Déc 2017 - 10:43

» carte son
par Klaus Ven 8 Déc 2017 - 2:37

» mise a jour calculatrice
par joeeee2017 Mer 6 Déc 2017 - 22:19

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
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 : 10257
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 : 5086
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 : 10257
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
Minibug

avatar

Nombre de messages : 2410
Age : 51
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 http://gpp.panoramic.free.fr
Jean Claude

avatar

Nombre de messages : 5086
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 : 617
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 En ligne
Minibug

avatar

Nombre de messages : 2410
Age : 51
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 http://gpp.panoramic.free.fr
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
-
» 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
» Transfert des Wpts dans Basecamp à partir d'un fichier Excel *.xls "RESOLU"
» [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 :: Vos sources, vos utilitaires à partager-
Sauter vers: