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
» Compilateur FBPano
par jean_debord Aujourd'hui à 11:07

» Documentation de KGF
par Klaus Hier à 22:52

» Zoom sur une portion d'écran
par JL35 Hier à 21:51

» KGF_dll - nouvelles versions
par Klaus Hier à 21:31

» double guillemets "" dans un EDIT
par pascal10000 Hier à 21:08

» Recherche d'une expression dans un source
par Marc 37 Hier à 13:08

» Tracer une grille n'importe où sur l'écran
par JL35 Dim 19 Nov 2017 - 22:14

» TourD Version 2
par Klaus Sam 18 Nov 2017 - 23:58

» La métamatière et le peuple
par JL35 Ven 17 Nov 2017 - 21:18

» Capture d'une zone de l'écran total
par JL35 Ven 17 Nov 2017 - 18:41

» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Ven 17 Nov 2017 - 11:49

» qui peut résoudre mon prb
par pascal10000 Jeu 16 Nov 2017 - 17:30

» évènements et objets système : listage automatique
par Jean Claude Jeu 16 Nov 2017 - 11:15

» Panoramic et la reconnaissance vocale.
par papydall Jeu 16 Nov 2017 - 3:45

» Bizzarerie dans Edge
par Marc 37 Mer 15 Nov 2017 - 17:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2017
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
27282930   
CalendrierCalendrier

Partagez | 
 

 Utilitaire MakeHLP de Nardo26

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

avatar

Nombre de messages : 5593
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Utilitaire MakeHLP de Nardo26   Ven 3 Juil 2015 - 4:22

Nardo26 a développé un utilitaire MakeHLP qui permettait de transformer la documentation de Panoramic en format HTML plus agréable à consulter.
Cet utilitaire n’est plus sur le site de Nardo et je ne l’ai pas trop cherché sur le Forum.
J’en ai une version de cet utilitaire que j’ai remise à jour à ma manière.
Le programme nécessite  l’utilitaire ResHaker.exe ainsi  que les fichiers style.css et index.txt, tous deux doivent se trouver dans le dossier Styles

Bref, vous trouvez sur mon webdav le dossier Pano_help.zip qui contient ce qu’il faut.
Enregistrez Pano_help où vous voulez et exécuter le programme Pano_Help_HTML.bas.
La marche à suivre se trouve dans les REM.

Dorénavant,  pour les nouvelles versions de PANORAMIC EDITOR, il suffira  de modifier la ligne 23 en indiquant la nouvelle version et d’exécuter le programme à nouveau.

NB : N'oubliez pas de remercier Nardo26 , l'auteur de l'utilitaire ! Laughing

Salut Bernard!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Re: Utilitaire MakeHLP de Nardo26   Sam 4 Juil 2015 - 23:08

Hello Papydall !
Comme j'ai légèrement modifié l'arborescence de mon site, le fichier zip pointait sur un lien mort...
C'est corrigé.  (dans le menu "utilitaires")
Merci !

PS: je vais jeter un coup d'oeil à ta version. Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Re: Utilitaire MakeHLP de Nardo26   Sam 4 Juil 2015 - 23:26

Ok,
C'est vrai que le STOP dans le test du FindInList est un peu "bourrin" Laughing (ligne 547 dans ton code)
Par contre, au lieu d'ignorer le pb j'aurais affiché quand même le message et au lieu de faire un goto sur la fin de boucle, un else regroupant le code en dessous (jusqu'au next) aurait été plus "clean"...

Je vais tenir compte de tes dernières modifs (Ajout du submenu "quitter") si tu le permet.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
papydall

avatar

Nombre de messages : 5593
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Utilitaire MakeHLP de Nardo26   Dim 5 Juil 2015 - 0:21

Nardo26 a écrit:
Je vais tenir compte de tes dernières modifs (Ajout du submenu "quitter") si tu le permet.

Mais c’est TON code.
Tu peux en faire ce que bon te semble. king
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Re: Utilitaire MakeHLP de Nardo26   Dim 5 Juil 2015 - 10:13

Ça merdouille encore et je n'ai pas encore trouvé de raisons et de solutions...

cf. RTRIM$(), VAL(), TAN(), etc...

en gros, tout ce qu'il y a après RIGHT_POS$()...

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Re: Utilitaire MakeHLP de Nardo26   Dim 5 Juil 2015 - 11:10

Ça y est !
il manquait un TRIM$() lors de la réalisation de la liste des mots clés.

Dans le fichier généré par reshacker, il y avait espace qui trainait après le nom de la fct RIGHT_POS$()

Code:
rem ============================================================================
'                     Pano_Help_HTML.bas
'         Génération de l'aide Panoramic en pages html
'                   Auteur : Nardo26
'                Remis à jour par PAPYDALL
rem ============================================================================
rem Exécuter le programme
rem Choisir  "Générer"
rem Choisir  "Aide Panoramic"
rem Et laisser le programme faire son boulot
rem Si tout ira bien, le programme créera le dossier "fichiers" avec toutes
rem les pages HTML.
rem Il créera aussi le fichier "index.html" qui pilotera toutes les pages.
rem Votre navigateur affichera l aide Panoramic et vous pouvez apprécier
rem l agréable réprésentation de l aide.
rem ============================================================================
Run()
end
rem ============================================================================
SUB Run()
  LABEL GO, CfgResHacker, Quit
  DIM PATH$     : PATH$ = DIR_CURRENT$+""
  DIM EXEC_PANO$: EXEC_PANO$ = "C:\Langages\Panoramic\Ide\PANORAMIC_EDITOR.exe"
  DIM EXEC_RSC$ : EXEC_RSC$ = PATH$+"ResHacker.exe"
  DIM DIRNAME$  : DIRNAME$="fichiers"

    DIM c$,d$ : c$ = CHR$(10) : d$ = CHR$(34)
    DIM STATUS_INFO : STATUS_INFO = 39

  DIM Langue$ : Langue$ = "F"
DIM DEBUG     : DEBUG = 0


  WIDTH 0,400:HEIGHT 0,200 : CAPTION 0,"Pano_Help_HTML"
  TOP 0,(SCREEN_Y-HEIGHT(0))/2 : LEFT 0,(SCREEN_X-WIDTH(0))/2
  APPLICATION_TITLE CAPTION$(0)
    GUI()
END_SUB
rem ============================================================================

SUB GUI()
MAIN_MENU 30
SUB_MENU 31:PARENT 31,30
SUB_MENU 32:PARENT 32,31
SUB_MENU 33:PARENT 33,31:INACTIVE 33
SUB_MENU 34:PARENT 34,30
SUB_MENU 35:PARENT 35,34:CAPTION 35,"ResHacker"
SUB_MENU 36:PARENT 36,34
SUB_MENU 37:PARENT 37,36
SUB_MENU 38:PARENT 38,36
    sub_menu 29 : parent 29,30 : caption 29,"Quitter"
    ConfigMenu(Langue$)
ALPHA STATUS_INFO:TOP STATUS_INFO,HEIGHT(0)-80  : LEFT STATUS_INFO,20

IF FILE_EXISTS(EXEC_RSC$)=0 THEN MsgInfo("Info : ResHacker non disponible") : INACTIVE 32
    on_click 29,quit
ON_CLICK 32,GO
ON_CLICK 35,CfgResHacker
ON_CLICK 37,GO : ON_CLICK 38,GO
END_SUB

' ==============================================================================
CfgResHacker:
   CAPTION STATUS_INFO,"Sélection de l'exécutable ResHacker"
   OPEN_DIALOG 20 : FILTER 20, "Editeur de ressource|*.exe"
   EXEC_RSC$= FILE_NAME$(20):DELETE 20
  IF EXEC_RSC$="_" THEN EXEC_RSC$="ResHacker.exe"
  IF FILE_EXISTS(EXEC_RSC$)=0
    MsgInfo("Info : ResHacker non disponible")
  ELSE
    MsgInfo(""):ACTIVE 32
  END_IF
  DIR_CHANGE PATH$
RETURN

' ------------------------------------------------------------------------------
' Supprime les accents dans une chaine de caractères
' Exemple : "chaîne de caractères" -> "chaine de caracteres"
' ------------------------------------------------------------------------------
SUB StripAccents(a$)
  IF Variable("StripAccents_return$")=0 THEN DIM StripAccents_return$
  DIM_LOCAL StripAccents_i,StripAccents_j
  DIM strAccent$(2):strAccent$(0)="èéêî":strAccent$(1)="eeei"
  
  StripAccents_return$=""
  FOR StripAccents_i=1 TO LEN(a$)
    StripAccents_j = INSTR(strAccent$(0),MID$(a$,StripAccents_i,1))
    IF StripAccents_j=0
      StripAccents_return$ = StripAccents_return$+MID$(a$,StripAccents_i,1)
    ELSE
      StripAccents_return$ = StripAccents_return$+MID$(strAccent$(1),StripAccents_j,1)
    END_IF
  NEXT StripAccents_i
  FREE strAccent$
END_SUB

' ------------------------------------------------------------------------------
' Remplace une chaine par une autre
' param1: chaine à modifier
' param2: chaine à remplacer
' param3: chaine de remplacement
' ------------------------------------------------------------------------------
SUB StrReplace(a$,b$,c$)
  IF VARIABLE("StrReplace_return$")=0 THEN DIM StrReplace_return$
  WHILE INSTR(a$,b$)<>0
    StrSplit(a$,b$)
    a$=StrSplit_return$(0)+c$+StrSplit_return$(1)
  END_WHILE
  StrReplace_return$ = a$
END_SUB

' ------------------------------------------------------------------------------
' Décompose une chaine de caractère à partir d'un caractère de séparation
' ------------------------------------------------------------------------------
SUB StrSplit(a$,separateur$)
  IF VARIABLE("StrSplit_return$")=0 THEN DIM StrSplit_return$(2)
  StrSplit_return$(0)=LEFT$(a$,INSTR(a$,separateur$)-1)
  StrSplit_return$(1)=RIGHT$(a$,LEN(a$)-LEN(StrSplit_return$(0))-1)
END_SUB


' ------------------------------------------------------------------------------
'  Supprime tous les fichiers du répertoire A$ portant l'extension B$
' ------------------------------------------------------------------------------
SUB DelAllFile(A$,B$)
  DIM_LOCAL t$,origin$
  origin$ = DIR_CURRENT$ : B$ = UPPER$(B$)
  DIR_CHANGE A$
  t$ = FILE_FIND_FIRST$
  WHILE t$ <> "_"
    IF UPPER$(RIGHT$(t$,3)) = B$ THEN FILE_DELETE t$
    t$ = FILE_FIND_NEXT$
  END_WHILE
  FILE_FIND_CLOSE
  DIR_CHANGE origin$
END_SUB

' ------------------------------------------------------------------------------
' Ajoute à tous les fichiers html du répertoire A$ la chaine de caractère B$
' ------------------------------------------------------------------------------
SUB HTML_AllAppend(A$,B$)
  DIM_LOCAL origin$:origin$ = DIR_CURRENT$
  DIM_LOCAL t$
  DIR_CHANGE A$
  t$ = FILE_FIND_FIRST$
  WHILE t$<>"_"
    IF UPPER$(RIGHT$(t$,3)) = "HTM"
      FILE_OPEN_APPEND 1,t$
      FILE_WRITELN 1,B$
      FILE_CLOSE 1
    END_IF
    t$ = FILE_FIND_NEXT$
  END_WHILE
  FILE_FIND_CLOSE
  DIR_CHANGE origin$
END_SUB

' ------------------------------------------------------------------------------
' Formatage d'une chaine de caractère :
'    - 1ere lettre en MAJUSCULE les suivantes en minuscules
'    - Supression des accents.
' ------------------------------------------------------------------------------
SUB UPlower(a$)
  IF VARIABLE("UPlower_return$")=1 THEN FREE UPlower_return$
  DIM UPlower_return$
  a$=LOWER$(TRIM$(a$))
  a$=UPPER$(LEFT$(a$,1))+RIGHT$(a$,LEN(a$)-1)
  StripAccents(a$):a$=StripAccents_return$
  UPlower_return$ = a$
END_SUB

' ------------------------------------------------------------------------------
' Divers : Remplace "NOM-FONCTION(N)" par "NOM_FONCTION()"
' ------------------------------------------------------------------------------
SUB DelParam(a$)
  IF VARIABLE("DelParam_return$")=0 THEN DIM DelParam_return$
  IF INSTR(a$,"(")<>0 THEN a$=LEFT$(a$,INSTR(a$,"("))+")"
  WHILE INSTR(a$,"-")<>0
    DelParam_return$=LEFT$(a$,INSTR(a$,"-")-1)+"_"
    a$=DelParam_return$+RIGHT$(a$,LEN(a$)-LEN(DelParam_return$))
  END_WHILE
  DelParam_return$ = a$
END_SUB

' ------------------------------------------------------------------------------
' Divers : Recherche du mot-clé a$ dans une liste
' ------------------------------------------------------------------------------
SUB FindInList(List%,a$)
  DIM_LOCAL FindInList_i,FindInList_str$
  a$=trim$(a$)
  IF INSTR(a$,"|")<> 0 THEN a$=LEFT$(a$,INSTR(a$,"|")-1)

  IF VARIABLE("FindInList_return")=0 THEN DIM FindInList_return
  FindInList_return=0
  FOR FindInList_i=1 TO COUNT(List%)
    FindInList_str$=trim$(ITEM_READ$(List%,FindInList_i))
    FindInList_str$=LEFT$(FindInList_str$,INSTR(FindInList_str$,"|")-1)
    IF FindInList_str$=a$ THEN FindInList_return=FindInList_i:EXIT_FOR
  NEXT FindInList_i
END_SUB

' ------------------------------------------------------------------------------
' La procedure qui a l'air de merdouiller
' ------------------------------------------------------------------------------

SUB HTML_SetBlock(balise$)
  DIM_LOCAL t$
  if VARIABLE("HTML_SetBlock_return$")=0 then DIM HTML_SetBlock_return$
  if balise$="li" THEN tmp_str$=tmp_str$+"<ul>"+c$
  if balise$="" THEN tmp_str$=tmp_str$+"<div class='code'><pre>"+c$
  FILE_READLN 1,t$
  WHILE LEN(t$)>1
    if balise$<>""
      tmp_str$= tmp_str$+"<"+balise$+">"+t$+"</"+balise$+">"+c$  
    else
      tmp_str$= tmp_str$+t$+c$
    end_if
    FILE_READLN 1,t$
  END_WHILE
  IF balise$="li" THEN tmp_str$=tmp_str$+"</ul>"+c$
  if balise$="" THEN tmp_str$=tmp_str$+"</pre></div>"+c$
  FinBloc=1:  HTML_SetBlock_return$ = t$
END_SUB

' ******************************************************************************
' ******************************************************************************
'                     PROCEDURE PRINCIPALE DE TRAITEMENT
' ******************************************************************************
' ******************************************************************************
GO:
  SELECT NUMBER_CLICK
    CASE 37
      CfgLangue(NUMBER_CLICK)
    CASE 38
      CfgLangue(NUMBER_CLICK)
    CASE 32
      IF FILE_EXISTS(EXEC_RSC$)=0
        if message_error_ok("ResHacker non disponible !")=1 THEN RETURN
      END_IF
      IF FILE_EXISTS(EXEC_PANO$) = 0
        if Langue$="F"
          EXEC_PANO$="Sélection de l'éditeur PANORAMIC"
        ELSE
          EXEC_PANO$="Select PANORAMIC editor "
        END_IF
        MsgInfo(EXEC_PANO$)
        OPEN_DIALOG 20 : FILTER 20, "Editeur Panoramic|PANORAMIC_EDITOR*.exe"
        EXEC_PANO$= FILE_NAME$(20):DELETE 20
        DIR_CHANGE PATH$
        IF EXEC_PANO$="_" THEN RETURN
      END_IF
      EXECUTE_WAIT "cmd.exe /c " +EXEC_RSC$+" -extract " +EXEC_PANO$+", pano_editor.txt , RCData, KEYWORDS, 1036"
      MakeHTML("pano_editor.txt")
      EXECUTE "index.htm"
  END_SELECT
RETURN

' ------------------------------------------------------------------------------
'
' ------------------------------------------------------------------------------
SUB MakeHTML(Projet$)
  DIM_LOCAL i,j, Lst_Rubrique$
  DIM_LOCAL tmp_file$,t$
  DIM_LOCAL Fct$,Type$,Parametre$,groupe$,titre$

  IF VARIABLE("SECTION")=0
    DIM SECTION:SECTION=40
    DIM tmp_str$,FinBloc
  END_IF

  ' Init des listes de travail
  IF OBJECT_EXISTS(SECTION) = 0
    DIM NB_SECTION:NB_SECTION = 10
    DIM TMP_SECTION : TMP_SECTION = SECTION+NB_SECTION+1
    DIM LST_KEYWORD : LST_KEYWORD = TMP_SECTION+1
    DIM LST_INDEX1  : LST_INDEX1 = LST_KEYWORD + 1
    DIM LST_INDEX2  : LST_INDEX2 = LST_INDEX1 + 1
    FOR i=SECTION TO LST_INDEX2: DLIST i : NEXT i
  ELSE
    FOR i=SECTION TO LST_INDEX2: CLEAR i:NEXT i
  END_IF
  
  ' ============================================================================
  ' Supression des anciens fichiers html et tmp
  ' ============================================================================
  IF DIRNAME$<>""
    IF DIR_EXISTS(DIRNAME$)=0
      DIR_MAKE DIRNAME$
    ELSE
      DelAllFile(DIRNAME$,"HTM") : ' on supprime tous les fichiers html
      DelAllFile(DIRNAME$,"TMP") : ' on supprime tous les fichiers tmp
    END_IF
    DIRNAME$=DIRNAME$+"/"
  END_IF

  DelAllFile(DIR_CURRENT$,"HTM") : ' on supprime tous les fichiers html
  DelAllFile(DIR_CURRENT$,"TMP") : ' on supprime tous les fichiers tmp

  IF FILE_EXISTS("error.log")=1 THEN FILE_DELETE "error.log"

  ' ============================================================================
  ' Création des blocs index
  ' ============================================================================
  MsgInfo("Création des fichiers d'index")
  FILE_LOAD LST_INDEX1,PATH$+"styles\index.txt"
  ITEM_ADD LST_INDEX1,"  <link href="+d$+"styles/style.css"+d$+" rel="+d$+"stylesheet"+d$+" >"
  ITEM_ADD LST_INDEX1,"</head>"+c$+"<body>"+c$+"  <div id='index'>"+c$+"    <ul>"

  IF DIRNAME$<>""
    FILE_LOAD LST_INDEX2,"styles\index.txt"
    ITEM_ADD LST_INDEX2,"  <link href="+d$+"../styles/style.css"+d$+" rel="+d$+"stylesheet"+d$+" >"
    ITEM_ADD LST_INDEX2,"</head>"+c$+"<body>"+c$+"  <div id='index'>"+c$+"    <ul>"
  END_IF

  FILE_OPEN_WRITE 3,"error.log"
  FILE_OPEN_READ 1,Projet$
  REPEAT
    FILE_READLN 1,t$
    IF t$="0"
      FILE_READLN 1,t$:t$=TRIM$(t$):ITEM_ADD LST_KEYWORD,t$
      IF Langue$="F"
        MsgInfo("Recherche des index : "+STR$(COUNT(LST_KEYWORD))+" détectés")
      ELSE
        MsgInfo("Search index : "+STR$(COUNT(LST_KEYWORD))+" found")
      END_IF
    END_IF
    IF (t$="3" AND Langue$="F") OR (t$="D" AND Langue$="A")
      FILE_READLN 1,Type$ : Groupe$=Type$
      FILE_READLN 1,Parametre$
      IF LEN(Parametre$)<>1 THEN FILE_READLN 1,Groupe$
      IF LEN(Groupe$)=1 THEN Groupe$=Type$
      Groupe$=MID$(Groupe$,INSTR(Groupe$,":")+2,200)
      UPlower(Groupe$) : Groupe$ = UPlower_return$
      t$=ITEM_READ$(LST_KEYWORD,COUNT(LST_KEYWORD))
      ITEM_DELETE LST_KEYWORD,COUNT(LST_KEYWORD)
      ITEM_ADD LST_KEYWORD,t$+"|"+Groupe$+"|"+Titre$
    END_IF
    
    IF (t$="a" AND Langue$="F") OR (t$="C" AND Langue$="A")
      FILE_READLN 1,Titre$ : ' info-bulle dans la liste des mot-clés
      ' On remplace les guillemets présents dans l'info-bulle par un code compatible html
      StrReplace(Titre$,chr$(34),""") : Titre$=StrReplace_return$
    END_IF
  UNTIL t$="F"
  FILE_CLOSE 1

  ' ----------------------------------------------------------------------------
  ' On trie avant de générer la liste des commandes
  ' ----------------------------------------------------------------------------
  if Langue$="F"
    t$="Création de la liste des mot-clés"
  ELSE
    t$="Create list of keyword"
  END_IF
  MsgInfo(t$)
  SORT LST_KEYWORD
    FOR i=1 TO COUNT(LST_KEYWORD)
    StrSplit(ITEM_READ$(LST_KEYWORD,i),"|") : Fct$=StrSplit_return$(0) : t$=StrSplit_return$(1)
    StrSplit(t$,"|") : Groupe$=StrSplit_return$(0) : Titre$=StrSplit_return$(1)
    ITEM_DELETE LST_KEYWORD,i
    ITEM_ADD LST_KEYWORD,Fct$+"|"+Groupe$
    SORT LST_KEYWORD
    ' index root
    t$ = DIRNAME$+Groupe$:StrReplace(t$," ","%20") : t$= StrReplace_return$
    ' StrReplace(t$,"","/"):t$=StrReplace_return$
    ITEM_ADD LST_INDEX1,"      <li><a href='"+t$+".htm#"+Fct$+"' title="+chr$(34)+Titre$+chr$(34)+">"+Fct$+"</a></li>"
    ' index pages

    IF OBJECT_EXISTS(LST_INDEX2)=1
      t$ = Groupe$ : StrReplace(t$," ","%20") : t$ = StrReplace_return$
      ' StrReplace(t$,"","/"):t$=StrReplace_return$
      ITEM_ADD LST_INDEX2,"      <li><a href='"+t$+".htm#"+Fct$+"' title="+chr$(34)+Titre$+chr$(34)+">"+Fct$+"</a></li>"
    END_IF
  NEXT i
  
  ITEM_ADD LST_INDEX1,"    </ul>"+c$+"  </div><!-- fin d'index -->"
  FILE_SAVE LST_INDEX1,"index.tmp"
  CLEAR LST_INDEX1
  IF OBJECT_EXISTS(LST_INDEX2)=1
    ITEM_ADD LST_INDEX2,"    </ul>"+c$+"  </div><!-- fin d'index -->"
    FILE_SAVE LST_INDEX2,DIRNAME$+"index.tmp"
  END_IF
  CLEAR LST_INDEX2

  ' ============================================================================
  ' Analyse des différents blocs pour chaque commande
  ' ============================================================================
  FILE_OPEN_READ 1,Projet$
  FinBloc=0
  REPEAT
    IF FinBloc=0 THEN FILE_READLN 1,t$
    FinBloc=0

    ' ------------------------------------------------------------------------------
    ' Section 0 : Nouveau mot-clé
    ' ------------------------------------------------------------------------------
    IF t$="0"
      FILE_READLN 1,t$
      ITEM_ADD SECTION,TRIM$(t$)
      if Langue$="F": t$= "Analyse en cours : ":ELSE:t$= "Analysis  : ":END_IF
      MsgInfo(t$+STR$(INT(COUNT(SECTION)*1000/COUNT(LST_KEYWORD))/10)+"% ")
    END_IF

    ' ------------------------------------------------------------------------------
    ' Section 1 : Description - syntaxe
    ' ------------------------------------------------------------------------------
    IF t$="1"
      FILE_READLN 1,t$
      t$="<span class='sous_titre'>"+t$+"</span>"
      ITEM_ADD SECTION+1,STR$(COUNT(SECTION))+"|"+t$
    END_IF
    
    ' ------------------------------------------------------------------------------
    ' Section 3 :  Type / paramètre / Groupe
    ' ------------------------------------------------------------------------------
    IF (t$="3" AND Langue$="F") OR (t$="D" AND Langue$="A")
      FILE_READLN 1,type$ : FILE_READLN 1,parametre$ : FILE_READLN 1,groupe$
      ' Cas particulier : Certaines fonctions ne sont pas catégorisées, on utilise le type dans ce cas
      IF LEN(groupe$)=1 THEN t$=groupe$: groupe$ = type$:FinBloc=1
      groupe$=MID$(groupe$,INSTR(groupe$,":")+2,200)
      UPlower(groupe$) : groupe$ = UPlower_return$
      ITEM_ADD SECTION+3,STR$(COUNT(SECTION))+"|"+"  <ul>"+c$+"    <li>"+type$+"</li>"+c$+"    <li>"+parametre$+"</li>"+c$+"    <li>Groupe:"+groupe$+"</li>"+c$+"  </ul>"
      ' mise à jour du groupe pour le mot de passe
      t$=ITEM_READ$(SECTION,COUNT(SECTION))+"|"+groupe$
      IF INSTR(Lst_Rubrique$,groupe$)=0 THEN Lst_Rubrique$=Lst_Rubrique$+"|"+groupe$
      ITEM_DELETE SECTION,COUNT(SECTION)
      ITEM_ADD SECTION,t$
    END_IF
    
    ' ------------------------------------------------------------------------------
    ' Section 4 : Action
    ' ------------------------------------------------------------------------------
    IF (t$="4" AND Langue$="F") OR (t$="E" AND Langue$="A")
      tmp_str$="<h2>Action</h2>"+c$
      HTML_SetBlock("p") : t$ = HTML_SetBlock_return$      
      ITEM_ADD SECTION+4,STR$(COUNT(SECTION))+"|"+tmp_str$
    END_IF
    
    ' ------------------------------------------------------------------------------
    ' Section 5 : Syntaxe  
    ' ------------------------------------------------------------------------------
    IF (t$="5" AND Langue$="F") OR (t$="G" AND Langue$="A")
      if Langue$="F":t$="Syntaxe":ELSE:t$="Syntax":END_IF
      tmp_str$="<h2>"+t$+"</h2>"+c$
      FILE_READLN 1,t$ : tmp_str$=tmp_str$+"<p class='syntax'> "+t$+"</p>"+c$
      HTML_SetBlock("li") : t$ = HTML_SetBlock_return$      
      ITEM_ADD SECTION+5,STR$(COUNT(SECTION))+"|"+tmp_str$
    END_IF

    ' ------------------------------------------------------------------------------
    ' Section 6: Utilisation
    ' ------------------------------------------------------------------------------
    IF (t$="6" AND Langue$="F") OR (t$="H" AND Langue$="A")
      IF Langue$="F":t$="Utilisation":ELSE:t$="Use":END_IF
      tmp_str$="<h2>"+t$+"</h2>"+c$
      HTML_SetBlock("p") : t$=HTML_SetBlock_return$
      ITEM_ADD SECTION+6,STR$(COUNT(SECTION))+"|"+tmp_str$
    END_IF
    
    ' ------------------------------------------------------------------------------
    ' Section 7 : Erreur
    ' ------------------------------------------------------------------------------
    IF (t$="7" AND Langue$="F")OR(t$="I" AND Langue$="A")
      if Langue$="F":t$="Erreur":ELSE:t$="Error":END_IF
      tmp_str$="<h2>"+t$+"</h2>"+c$
      HTML_SetBlock("li") : t$=HTML_SetBlock_return$
      ITEM_ADD SECTION+7,STR$(COUNT(SECTION))+"|"+tmp_str$+c$
    END_IF

    ' ------------------------------------------------------------------------------
    ' Section 8 : Exemple
    ' ------------------------------------------------------------------------------
    IF (t$="8" AND Langue$="F")OR(t$="J" AND Langue$="A")
      IF Langue$="F":t$="Exemple":ELSE:t$="Example":END_IF
      tmp_str$="<h2>"+t$+"</h2>"+c$
      HTML_SetBlock("")  : t$=HTML_SetBlock_return$
      ITEM_ADD SECTION+8,STR$(COUNT(SECTION))+"|"+tmp_str$
    END_IF
    
    ' ------------------------------------------------------------------------------
    ' Section 9 : Liste des mots-clé associés
    ' ------------------------------------------------------------------------------
    if t$="9"
      IF Langue$="F":t$="En rapport":ELSE:t$="See also":END_IF
      tmp_str$="<h2>"+t$+"</h2>"+c$
      tmp_str$ = tmp_str$+"<ul>"+c$
      FILE_READLN 1,t$:t$=TRIM$(t$)
      WHILE t$<>"0" AND t$<>"F"
        IF t$ <> "-"
          DelParam(t$) : t$=DelParam_return$ : ' Mise en forme de la commande
          FindInList(LST_KEYWORD,t$) :' recherche dans la liste
          ' Si la commande est connue
          IF FindInList_return<>0
            StrSplit(ITEM_READ$(LST_KEYWORD,FindInList_return),"|")
            tmp_str$=tmp_str$+"  <li><a href='"+StrSplit_return$(1)+".htm#"+StrSplit_return$(0)+"'>"+StrSplit_return$(0)+"</a></li>"+c$
          ELSE
            ' Sinon on rajoute des parenthèses avant de lancer une nouvelle recherche
            t$ = t$+"()" : FindInList(LST_KEYWORD,t$)
            ' Si trouvé : on crée le lien vers la commande
            IF FindInList_return<>0
              StrSplit(ITEM_READ$(LST_KEYWORD,FindInList_return),"|")
              tmp_str$=tmp_str$+"  <li><a href='"+StrSplit_return$(1)+".htm#"+StrSplit_return$(0)+"'>"+StrSplit_return$(0)+"</a></li>"+c$
            ELSE
              ' Sinon cette commande est inconnue, donc pas de lien on met juste un texte
              t$=LEFT$(t$,LEN(t$)-2)
              ' et on rajoute l'erreur dans le fichier log
              FILE_WRITELN 3,"Référence inconnue '"+t$+"' pour la commande "+ITEM_READ$(SECTION,COUNT(SECTION))
              tmp_str$ = tmp_str$+"  <li>"+t$+"</li>"+c$
            END_IF
          END_IF
        ELSE
          tmp_str$ = tmp_str$+"  <li>"+t$+"</li>"+c$
        END_IF
        FILE_READLN 1,t$
      END_WHILE
      tmp_str$ = tmp_str$+"</ul>"
      ITEM_ADD SECTION+9,STR$(COUNT(SECTION))+"|"+tmp_str$
      FinBloc=1
    END_IF
  UNTIL FILE_EOF(1)=1
  FILE_CLOSE 1

  ' ============================================================================
  ' Création des differentes pages html (par rubrique)
  ' ============================================================================

  ' --- Création de l'index principal avec affichage des catégories
  IF Langue$="F": t$="Ecriture des index":ELSE:t$="Write index...":END_IF
  MsgInfo(t$)
  FILE_OPEN_APPEND 1,"index.tmp"
  FILE_WRITELN 1,"  <div id="+d$+"rubrique"+d$+">"
  FILE_WRITELN 1,"    <h1>Categories :</h1>"
  While INSTR(Lst_Rubrique$,"|")<>0
     StrSplit(Lst_Rubrique$,"|")
     Lst_Rubrique$=StrSplit_return$(1)
     IF TRIM$(StrSplit_return$(0))<>""
       FILE_WRITELN 1,"    <a href="+d$+DIRNAME$+StrSplit_return$(0)+".htm"+d$+">"+StrSplit_return$(0)+"</a>"
     END_IF
  END_WHILE
  FILE_WRITELN 1,"    <a href="+d$+DIRNAME$+Lst_Rubrique$+".htm"+d$+">"+Lst_Rubrique$+"</a>"
  FILE_CLOSE 1
  IF FILE_EXISTS("index.htm")=1 THEN FILE_DELETE "index.htm"

  ' --- Création des différentes categories
  FOR i = 1 TO COUNT(SECTION)
    IF Langue$="F":t$="Création des fichiers html : ":ELSE:t$="Make html files : ":END_IF
    MsgInfo(t$+STR$(INT(i*100/COUNT(SECTION)))+"%")
    ' On cherche le mot-clé en cours dans la liste LST_KEYWORD
    ' afin de connaitre son "groupe"
    t$ = ITEM_READ$(SECTION,i): FindInList(LST_KEYWORD,t$)
    IF FindInList_return = 0
      MESSAGE t$+" not found ->"+ITEM_READ$(LST_KEYWORD,1)
    ELSE
      t$ = ITEM_READ$(LST_KEYWORD,FindInList_return)
      StrSplit(t$,"|") : tmp_file$ = StrSplit_return$(1)+".htm"
      IF OBJECT_EXISTS(LST_INDEX2) = 1 THEN tmp_file$ = DIRNAME$ + tmp_file$
      IF FILE_EXISTS(tmp_file$) = 0
        FILE_COPY DIRNAME$+"index.tmp",tmp_file$
        FILE_OPEN_APPEND 1,tmp_file$
        IF OBJECT_EXISTS(LST_INDEX2) = 1
          FILE_WRITELN 1,"<a title="+d$+"Retour index"+d$+" href="+d$+"../index.htm"+d$+" class="+d$+"goIndex"+d$+"></a>"
        ELSE
          FILE_WRITELN 1,"<a title="+d$+"Retour index"+d$+" href="+d$+"index.htm"+d$+" class="+d$+"goIndex"+d$+"></a>"
        END_IF
        FILE_WRITELN 1,"<div id='contenu'>"
      ELSE
        FILE_OPEN_APPEND 1,tmp_file$
      END_IF
      ' debut bloc instruction
      FILE_WRITELN 1,c$+c$+"<div id='"+StrSplit_return$(0)+"' class='description'>"
      FILE_WRITELN 1,"<h1>"+StrSplit_return$(0)+"</h1>"
      ' Parcours des sections
      FOR j = 1 TO NB_SECTION - 1
        ' Si la section n'est pas vide
        IF COUNT(SECTION + j) > 0
          REPEAT
            t$ = ITEM_READ$(SECTION + j,1)
            StrSplit(t$,"|")
            If VAL(StrSplit_return$(0)) = i
              ITEM_DELETE SECTION + j, 1
              FILE_WRITELN 1,StrSplit_return$(1)
            END_IF
          UNTIL COUNT(SECTION+j)=0 OR VAL(StrSplit_return$(0))<>i
        END_IF
      NEXT j
      FILE_WRITELN 1,"</div>"
      FILE_CLOSE 1
    END_IF
  NEXT i

  FILE_RENAME "index.tmp","index.htm"

  ' on cloture tous les fichiers html
  IF OBJECT_EXISTS(LST_INDEX2)=1
    HTML_AllAppend(DIRNAME$,"  </div>"+c$+"</body>"+c$+"</html>")
    FILE_DELETE DIRNAME$+"index.tmp"
  END_IF
  HTML_AllAppend(DIR_CURRENT$,"  </div>"+c$+"</body>"+c$+"</html>")
  
  IF Langue$="F":t$="Création des fichiers html : terminé !.":ELSE:t$="Make HTML files: ok!":END_IF
  MsgInfo(t$)
  FILE_CLOSE 3

  FILEBIN_OPEN_READ 1,"error.log"
  IF FILEBIN_SIZE(1)=0
    FILEBIN_CLOSE 1 : FILE_DELETE "error.log"
  ELSE
    FILEBIN_CLOSE 1
  END_IF
  DelAllFile(DIR_CURRENT$,"INI") : ' on supprime tous les fichiers .ini
END_SUB

' ------------------------------------------------------------------------------
' Affiche un message en bas de la fenetre principale
' ------------------------------------------------------------------------------
SUB MsgInfo(msg$)
  CAPTION STATUS_INFO,msg$
END_SUB

' ------------------------------------------------------------------------------
' Sélection de la langue
' ------------------------------------------------------------------------------
SUB CfgLangue(N)
  DIM_LOCAL i:i=37
  Langue$ = RIGHT$(CAPTION$(N),LEN(CAPTION$(N))-2)
  ' CAPTION NUMBER_CLICK,">"+Langue$
  ' IF N=37 THEN i = 38
  ' CAPTION i," "+RIGHT$(CAPTION$(i),LEN(CAPTION$(i))-2)
  MsgInfo("Langue sélectionnée :"+Langue$)
  Langue$=LEFT$(Langue$,1)
  IF Langue$="E" THEN Langue$="A"
  ConfigMenu(Langue$)
END_SUB

' ------------------------------------------------------------------------------
' Définition du menu en fonction de la langue
' ------------------------------------------------------------------------------
SUB ConfigMenu(L$)
  If L$="F"
    CAPTION 31,"Générer": CAPTION 32,"Aide Panoramic" : CAPTION 33,"A partir d'un fichier"
    CAPTION 34,"Config":CAPTION 36,"Langue"
    CAPTION 37,">Français" :CAPTION 38," Anglais"
  ELSE
    CAPTION 31,"Make": CAPTION 32,"Panoramic's Help" : CAPTION 33,"From a file"
    CAPTION 34,"Config":CAPTION 36,"Langue"
    CAPTION 37," French" :CAPTION 38,">English"
  END_IF
END_SUB
' ------------------------------------------------------------------------------
quit:
terminate
rem ============================================================================

Pour ceux qui ont la flemme, les fichiers html générés se trouvent sur mon Webdav dans le répertoire "Aide_html".
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
Minibug

avatar

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

MessageSujet: Re: Utilitaire MakeHLP de Nardo26   Dim 5 Juil 2015 - 12:26

Merci Nardo pour ce super outil et merci aussi a Papydall de nous l'avoir rappelé !

Je viens de l'installer, c'est un peu long, mais ça vaut le coût ! Super ! cheers

Très belle réalisation, bravo Nardo et encore merci. Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
papydall

avatar

Nombre de messages : 5593
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Utilitaire MakeHLP de Nardo26   Dim 5 Juil 2015 - 14:33

Salut Nardo

Une fois de plus, le Forum a joué l’un de ses mauvais tours : il a bouffé certains caractères !
Il semble qu’il est insatiable.

Ligne 22
Code:

DIM PATH$     : PATH$ = DIR_CURRENT$+""

A remplacer par

DIM PATH$     : PATH$ =  dir_current$ + "\"


Ou mieux
Code:

DIM PATH$     : PATH$ =  dir_current$ + chr$(92)


Ligne 342
Code:

StrReplace(Titre$,chr$(34),""") : Titre$=StrReplace_return$

A remplacer par


StrReplace(Titre$,chr$(34),"&quot") : Titre$ = StrReplace_return$


Bonne journée à tous.


Dernière édition par papydall le Dim 5 Juil 2015 - 20:59, édité 4 fois (Raison : La balise [code ] ... [/ code] a supprimé des caractères !!!!!)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Re: Utilitaire MakeHLP de Nardo26   Dim 5 Juil 2015 - 18:40

Pas mieux Papydall ! Laughing

En fait c'est :

Ligne 22 : DIM PATH$     : PATH$ = DIR_CURRENT$+""
par : DIM PATH$     : PATH$ = DIR_CURRENT$+"\"

Ligne 342: StrReplace(Titre$,chr$(34),""") : Titre$ = StrReplace_return$
par : StrReplace(Titre$,chr$(34),"&quot") : Titre$ = StrReplace_return$

PS: J"ai mis à jour le fichier ZIP contenant les sources sur mon site...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
papydall

avatar

Nombre de messages : 5593
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Utilitaire MakeHLP de Nardo26   Dim 5 Juil 2015 - 20:52

C’est ce que j’ai écris pourtant.
Supprimer des caractères \ et &quot dans un code ça ne doit en aucun cas être le rôle des balises code !!!!!

NB : en postant mon message, j’ai bien vérifié que c’est bon.
En rechargeant la page, je vois que le caractère \ a été bouffé !!!!!
C'est inquiétant pour un code.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Re: Utilitaire MakeHLP de Nardo26   Dim 5 Juil 2015 - 21:11

C'est vrai que pour ce genre de caractères, il faudrait utiliser les CHR$() dans nos codes...
Mais en faisant cela, on perd un peu en lisibilité... Neutral
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
Contenu sponsorisé




MessageSujet: Re: Utilitaire MakeHLP de Nardo26   

Revenir en haut Aller en bas
 
Utilitaire MakeHLP de Nardo26
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» utilitaire USB
» Petite réflexion personnelle
» Installer plusieurs logiciels en une seule opération
» pas un panoramic mais utilitaires delphi.
» Utilitaire : Captureur d'écran

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: