FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
makehlp - Utilitaire MakeHLP de Nardo26 Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
makehlp - Utilitaire MakeHLP de Nardo26 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
makehlp - Utilitaire MakeHLP de Nardo26 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
makehlp - Utilitaire MakeHLP de Nardo26 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
makehlp - Utilitaire MakeHLP de Nardo26 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
makehlp - Utilitaire MakeHLP de Nardo26 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
makehlp - Utilitaire MakeHLP de Nardo26 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
makehlp - Utilitaire MakeHLP de Nardo26 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
makehlp - Utilitaire MakeHLP de Nardo26 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
makehlp - Utilitaire MakeHLP de Nardo26 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
makehlp - Utilitaire MakeHLP de Nardo26 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
makehlp - Utilitaire MakeHLP de Nardo26 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
makehlp - Utilitaire MakeHLP de Nardo26 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
makehlp - Utilitaire MakeHLP de Nardo26 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
makehlp - Utilitaire MakeHLP de Nardo26 Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -29%
DYSON V8 Origin – Aspirateur balai sans fil
Voir le deal
269.99 €

 

 Utilitaire MakeHLP de Nardo26

Aller en bas 
3 participants
AuteurMessage
papydall

papydall


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

makehlp - Utilitaire MakeHLP de Nardo26 Empty
MessageSujet: Utilitaire MakeHLP de Nardo26   makehlp - Utilitaire MakeHLP de Nardo26 EmptyVen 3 Juil 2015 - 3: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
http://papydall-panoramic.forumarabia.com/
Nardo26

Nardo26


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

makehlp - Utilitaire MakeHLP de Nardo26 Empty
MessageSujet: Re: Utilitaire MakeHLP de Nardo26   makehlp - Utilitaire MakeHLP de Nardo26 EmptySam 4 Juil 2015 - 22: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 ! makehlp - Utilitaire MakeHLP de Nardo26 01

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

Nardo26


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

makehlp - Utilitaire MakeHLP de Nardo26 Empty
MessageSujet: Re: Utilitaire MakeHLP de Nardo26   makehlp - Utilitaire MakeHLP de Nardo26 EmptySam 4 Juil 2015 - 22: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"... makehlp - Utilitaire MakeHLP de Nardo26 07

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

papydall


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

makehlp - Utilitaire MakeHLP de Nardo26 Empty
MessageSujet: Re: Utilitaire MakeHLP de Nardo26   makehlp - Utilitaire MakeHLP de Nardo26 EmptySam 4 Juil 2015 - 23: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
http://papydall-panoramic.forumarabia.com/
Nardo26

Nardo26


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

makehlp - Utilitaire MakeHLP de Nardo26 Empty
MessageSujet: Re: Utilitaire MakeHLP de Nardo26   makehlp - Utilitaire MakeHLP de Nardo26 EmptyDim 5 Juil 2015 - 9:13

Ça merdouille encore et je n'ai pas encore trouvé de raisons et de solutions... makehlp - Utilitaire MakeHLP de Nardo26 07

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

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

Revenir en haut Aller en bas
http://nardo26.lescigales.org
Nardo26

Nardo26


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

makehlp - Utilitaire MakeHLP de Nardo26 Empty
MessageSujet: Re: Utilitaire MakeHLP de Nardo26   makehlp - Utilitaire MakeHLP de Nardo26 EmptyDim 5 Juil 2015 - 10: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
http://nardo26.lescigales.org
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

makehlp - Utilitaire MakeHLP de Nardo26 Empty
MessageSujet: Re: Utilitaire MakeHLP de Nardo26   makehlp - Utilitaire MakeHLP de Nardo26 EmptyDim 5 Juil 2015 - 11: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
http://gpp.panoramic.free.fr
papydall

papydall


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

makehlp - Utilitaire MakeHLP de Nardo26 Empty
MessageSujet: Re: Utilitaire MakeHLP de Nardo26   makehlp - Utilitaire MakeHLP de Nardo26 EmptyDim 5 Juil 2015 - 13: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 - 19:59, édité 4 fois (Raison : La balise [code ] ... [/ code] a supprimé des caractères !!!!!)
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Nardo26

Nardo26


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

makehlp - Utilitaire MakeHLP de Nardo26 Empty
MessageSujet: Re: Utilitaire MakeHLP de Nardo26   makehlp - Utilitaire MakeHLP de Nardo26 EmptyDim 5 Juil 2015 - 17: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
http://nardo26.lescigales.org
papydall

papydall


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

makehlp - Utilitaire MakeHLP de Nardo26 Empty
MessageSujet: Re: Utilitaire MakeHLP de Nardo26   makehlp - Utilitaire MakeHLP de Nardo26 EmptyDim 5 Juil 2015 - 19: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
http://papydall-panoramic.forumarabia.com/
Nardo26

Nardo26


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

makehlp - Utilitaire MakeHLP de Nardo26 Empty
MessageSujet: Re: Utilitaire MakeHLP de Nardo26   makehlp - Utilitaire MakeHLP de Nardo26 EmptyDim 5 Juil 2015 - 20: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
http://nardo26.lescigales.org
Contenu sponsorisé





makehlp - Utilitaire MakeHLP de Nardo26 Empty
MessageSujet: Re: Utilitaire MakeHLP de Nardo26   makehlp - Utilitaire MakeHLP de Nardo26 Empty

Revenir en haut Aller en bas
 
Utilitaire MakeHLP de Nardo26
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Découpe dans une image
» J'ai trouvé Nardo26.
» Site de Nardo26
» Mais où est donc passé Nardo26 ?...
» Analyse d'un programme source .bas

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: