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.
Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 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 :
Code promo Nike : -25% dès 50€ ...
Voir le deal

 

 Un éditeur MultiPlatforme Panoramic, FBpano, etc...

Aller en bas 
3 participants
Aller à la page : Précédent  1, 2
AuteurMessage
jean_debord

jean_debord


Nombre de messages : 1266
Age : 70
Localisation : Limoges
Date d'inscription : 21/09/2008

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptySam 12 Oct 2019 - 16:35

A première vue c'est la variable n dans changer_taille_police qui n'est pas déclarée.

Essaie de la remplacer par LNUM_WIDTH

Pour les mots-clés j'utilise une chaîne de caractères commençant et finissant par un espace, avec un espace entre 2 mots-clés :

Code:

dim keywords$

keywords = " dim data print ... "

La recherche se fait par la fonction INSTR

Code:

if instr(keywords, " " + lcase(word) + " ") > 0 then ...  '  word est un mot-clé
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Minibug

Minibug


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

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptySam 12 Oct 2019 - 17:56

Mais oui bien sûr c'est LNUM_WIDTH au lieu de n% qui n'est pas déclarée !
Ahhhh moi je cherchais ailleurs... normal que je ne trouvais pas ! geek

Oui pour les mots clé j'ai vu mais en fait c'est pour la mise en place des couleurs et de la syntaxe que je voulais un petit coup de pouce...

J'ai vu dans la doc que tu parles de l’instruction gen_style prog$, keywords$, style$.
Mais là je suis un peu largué. Pourrai tu me faire un exemple en quelques lignes...

Merci Jean.
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Minibug

Minibug


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

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptySam 12 Oct 2019 - 20:36

Je me suis encore bien amusé avec FBPano aujourd'hui.

J'ai mis en place l'interface de gestion des couleurs selon la syntaxe.
Il me reste a réaliser la partie syntaxe mais j'attends les infos...

Un grand merci à Jean Debord pour son fichier d'aide très bien réalisé et qui me permet d'avancer sans trop de difficultés.

Je mets le code ici pour ceux que ça intéresse...
Bien sûr ce n'est pas fonctionnel. C'est juste une présentation.  Wink

Code:

 
' **********************************************************************
' Editeur FBPano, d'apres le programme de demonstration de FLTK : www.fltk.org/doc-1.3/editor.html
' Modification par MiNiBuG
' **********************************************************************

' #compile -gui

CONST FORM_WIDTH  = 750          ' Largeur de la fenetre principale
CONST FORM_HEIGHT = 500          ' Hauteur de la fenetre principale
CONST FONT_SIZE  = 16            ' Taille des caracteres
CONST FONT_COLOR  = FL_BLACK      ' Couleur du texte
CONST BKG_COLOR  = FL_WHITE      ' Couleur du fond
CONST LNUM_COLOR  = FL_BLACK      ' Couleur des numeros de lignes
CONST LNUM_WIDTH  = 60            ' Largeur de la marge pour num. lignes

DIM search$                      ' Chaine pour la recherche
DIM find$, rep$                  ' Chaines pour le remplacement
DIM nf%                          ' Nb de polices
DIM fontnum%()                    ' Numéros des polices
DIM fontname$()                  ' Noms des polices
DIM fontsize% : fontsize = 16    ' Taille de la police
DIM font% = FL_COURIER            ' Police selectionnee
DIM i%                            ' Variable de boucle
DIM keywords$                    ' Liste des mots_cles

ENUM GUI
  fmMain                          ' Form principale
    menu1, editor1, buffer1
  fmReplace                      ' Form rechercher/remplacer
    edFind, edReplace, btRepAll, btRepNext, btCancel
  fmParametres                    ' Form paramètres
    lsPolice, tbSize, btFermerParam, btWrap, btLine
    ctCouleur
        rdColFond, rdColText, rdColNomb, rdColCom, rdColMC, rdColPp, rdColAutr
        CoulChoix, edResult
END_ENUM

FORM fmMain, 15, 35, FORM_WIDTH, FORM_HEIGHT, "Editeur"
  FORM_BEGIN fmMain
      MENU menu1, 0, 0, FORM_WIDTH, 25
      TEXT_EDITOR editor1,  0, 25, FORM_WIDTH, FORM_HEIGHT - 25
      TEXT_BUFFER buffer1
  FORM_END fmMain

FORM fmReplace, 200, 200, 380, 110, "Remplacement"
  FORM_BEGIN fmReplace
      EDIT edFind,    110, 10, 260, 25, "Chercher :"
      EDIT edReplace, 110, 40, 260, 25, "Remplacer par :"
      BUTTON btRepAll,  10, 75, 110, 25, "Remplacer tout"
      BUTTON btRepNext, 130, 75, 170, 25, "Remplacer Suivant", , T_Button_Return
      BUTTON btCancel,  310, 75,  60, 25, "Fermer"
  FORM_END fmReplace

FORM fmParametres, 200, 200, 380, 420, "Liste des polices"
  FORM_BEGIN fmParametres
      LIST lsPolice, 5, 5, 180, 375
      nf = FONT_LIST(fontnum(), fontname())
      FOR i = 0 TO nf - 1
        LIST_ITEM_ADD lsPolice, "@S12@F" & "@." & fontname(i)
      NEXT i
      LIST_ITEM_SELECT lsPolice, 1

      TRACK_BAR tbSize, 225, 5, 150, 25, "Taille", FL_ALIGN_LEFT, T_Track_Val
      FONT_TEXT tbSize, font, 16
      POSITION_RANGE tbSize, 8, 30, 1
      POSITION tbSize, fontsize
      BUTTON btWrap, 190, 35, 185, 30, "Retour à la ligne", , T_Button_Light
      BUTTON btLine, 190, 65, 185, 30, "Affichage lignes", , T_Button_Light
      MARK_ON btLine

      CONTAINER ctCouleur, 190, 100, 185, 280, "", , T_Container
        CONTAINER_BEGIN ctCouleur
            RADIO rdColFond, 195, 102, 175, 30, "Fond"
            RADIO rdColText, 195, 122, 175, 30, "Texte"
            RADIO rdColNomb, 195, 142, 175, 30, "Nombres"
            RADIO rdColCom, 195, 162, 175, 30, "Commentaires"
            RADIO rdColMC, 195, 182, 175, 30, "Mots clés"
            RADIO rdColPp, 195, 202, 175, 30, "Préprocesseur"
            RADIO rdColAutr, 195, 222, 175, 30, "Autre"
            MARK_ON rdColFond
            COLOR_CHOOSER CoulChoix, 195, 247, 175, 100, , , FL_COLORCHOOSER_BYTE
            EDIT edResult, 195, 350, 175, 25
    CONTAINER_END ctCouleur

      BUTTON btFermerParam, 5, 385, 370, 30, "Fermer"
  FORM_END fmParametres

ON_CLICK btRepAll, remplacer_tout
ON_CLICK btRepNext, remplacer_suivant
ON_CLICK btCancel, annuler_remplacer
ON_CLICK lsPolice, changer_police
ON_CLICK btFermerParam, cacher_parametres
ON_CLICK tbSize, changer_taille_police
ON_CLICK btWrap, wrap
ON_CLICK btLine, affichage_numlines

ON_CLICK rdColFond, changer_couleur
ON_CLICK rdColText, changer_couleur
ON_CLICK rdColNomb, changer_couleur
ON_CLICK rdColCom, changer_couleur
ON_CLICK rdColMC, changer_couleur
ON_CLICK rdColPp, changer_couleur
ON_CLICK rdColAutr, changer_couleur
ON_CLICK CoulChoix, changer_couleur

MENU_ITEM_ADD menu1, "&Fichier/&Nouveau ", "Ctrl+N", , nouveau
MENU_ITEM_ADD menu1, "&Fichier/&Ouvrir ", "Ctrl+O", , ouvrir
MENU_ITEM_ADD menu1, "&Fichier/&Enregistrer ", "Ctrl+E", FL_MENU_DIVIDER, enregistrer
MENU_ITEM_ADD menu1, "&Fichier/&Quitter ", "Ctrl+Q", , quitter

MENU_ITEM_ADD menu1, "E&dition/Co&uper ", "Ctrl+X", , couper
MENU_ITEM_ADD menu1, "E&dition/&Copier ", "Ctrl+C", , copier
MENU_ITEM_ADD menu1, "E&dition/Co&ller ", "Ctrl+V", FL_MENU_DIVIDER, coller
MENU_ITEM_ADD menu1, "E&dition/&Rechercher ", "Ctrl+F", , rechercher
MENU_ITEM_ADD menu1, "E&dition/Rechercher le &suivant ", "F3", , rechercher_suivant
MENU_ITEM_ADD menu1, "E&dition/R&emplacer ", "Ctrl+R", , remplacer

MENU_ITEM_ADD menu1, "&Exécution/E&xécuter ", "F9", , executer

MENU_ITEM_ADD menu1, "O&ptions/&Syntaxe/&Panoramic  ", "F1", FL_MENU_RADIO + FL_MENU_VALUE, syntaxe_panoramic
MENU_ITEM_ADD menu1, "O&ptions/&Syntaxe/&FBPano  ", "F2", FL_MENU_RADIO, syntaxe_fbpano
MENU_ITEM_ADD menu1, "O&ptions/&Paramètres ", "Ctrl+P", , choix_parametres

fontsize = 16

COLOR_FL editor1, BKG_COLOR
FONT_TEXT editor1, font, fontsize
COLOR_TEXT_FL editor1, FONT_COLOR
COLOR_CURSOR_FL editor1, FONT_COLOR
COLOR_NUMLINES_FL editor1, LNUM_COLOR
EDITOR_NUMLINES editor1, LNUM_WIDTH, font, fontsize

EDITOR_SET_BUFFER editor1, buffer1

SET_RESIZABLE fmMain

START fmMain

' ----------------------------------------------------------------------
' Sous-programmes utilitaires
' ----------------------------------------------------------------------

FUNCTION trouve% (s$, p%, msg%)
  ' Recherche la chaine s à partir de la position du curseur
  ' La position de la chaine trouvee est retournee dans p
  ' msg = TRUE pour afficher le message d'erreur

  p = EDITOR_GET_INSERT_POS(editor1)
  IF BUFFER_SEARCH_FORWARD(buffer1, p, s, p) = 0 THEN
      IF msg THEN MESSAGE "Chaîne """ + s + """ non trouvée !"
      trouve = FALSE
  ELSE
      trouve = TRUE
  END_IF
END_FUNCTION

SUB update_editor (p%, s1$, s2$, rpl%)
  ' Met a jour l'editeur apres recherche ou remplacement
  ' p = position de la chaine recherchee
  ' s1 = chaine recherchee
  ' s2 = chaine de remplacement
  ' rpl = indique si remplacement

  DIM p1%

  p1 = p + LEN(s1)
  BUFFER_SELECT buffer1, p, p1

  IF rpl THEN
      BUFFER_REMOVE_SELECT buffer1
      BUFFER_INSERT buffer1, p, s2
      p1 = p + LEN(s2)
      BUFFER_SELECT buffer1, p, p1
      p = p1
  END_IF

  EDITOR_SET_INSERT_POS editor1, p1
  EDITOR_SHOW_INSERT_POS editor1
END_SUB

' ----------------------------------------------------------------------
' Sous-programmes associes aux evenements
' ----------------------------------------------------------------------

SUB nouveau
  TEXT buffer1, ""
  CAPTION fmMain, "Editeur"
END_SUB

SUB ouvrir
  DIM fname$
  fname = FILE_NAME("Ouvrir", "Fichier texte (*.txt)", CURDIR, 0)
  IF fname = "" OR FILE_EXISTS(fname) = 0 THEN EXIT_SUB
  BUFFER_FILE_LOAD buffer1, fname
  CAPTION fmMain, fname
END_SUB

SUB enregistrer
  DIM fname$
  fname = FILE_NAME("Enregistrer", "Fichier texte (*.txt)", CURDIR, 0)
  IF fname = "" THEN EXIT_SUB
  BUFFER_FILE_SAVE buffer1, fname
END_SUB

SUB quitter
  HIDE fmMain
END_SUB

SUB couper
  EDITOR_CUT editor1
END_SUB

SUB copier
  EDITOR_COPY editor1
END_SUB

SUB coller
  EDITOR_PASTE editor1
END_SUB

SUB rechercher
  DIM p%
  search = MESSAGE_INPUT("Rechercher", "Rechercher", search)
  IF search <> "" THEN
      IF trouve(search, p, TRUE) THEN update_editor p, search, "", FALSE
  END_IF
END_SUB

SUB rechercher_suivant
  DIM p%
  IF search = "" THEN
      search = message_input("Rechercher", "Rechercher", search)
  END_IF
  IF search <> "" THEN
      IF trouve(search, p, TRUE) THEN update_editor p, search, "", FALSE
  END_IF
END_SUB

SUB remplacer
  SHOW fmReplace
END_SUB

SUB remplacer_suivant
  DIM p%
  find = GET_TEXT(edFind)
  IF find = "" THEN EXIT_SUB
  rep = GET_TEXT(edReplace)
  IF trouve(find, p, TRUE) THEN update_editor p, find, rep, TRUE
END_SUB

SUB remplacer_tout
  DIM p%, found%, n%
  find = GET_TEXT(edFind)
  IF find = "" THEN EXIT_SUB
  rep = GET_TEXT(edReplace)
  found = trouve(find, p, TRUE)
  IF NOT found THEN EXIT_SUB
  WHILE found
      n = n + 1
      update_editor p, find, rep, TRUE
      found = trouve(find, p, FALSE)
  END_WHILE
  MESSAGE "Chaîne """ & find & """ remplacée " & n & " fois."
END_SUB

SUB annuler_remplacer
  HIDE fmReplace
END_SUB

SUB executer

END_SUB

SUB syntaxe_panoramic
  PRINT "syntaxe_panoramic"
END_SUB

SUB syntaxe_fbpano
  PRINT "syntaxe_fbpano"
END_SUB

SUB wrap
  DIM n%
  IF CHECKED(btWrap)=1 THEN n = 1 ELSE n = 0
  EDITOR_WRAP editor1, n
END_SUB

SUB affichage_numlines
  DIM n%
  fontsize = GET_POSITION(tbSize)
  IF CHECKED(btLine)=1 THEN n = LNUM_WIDTH ELSE n = 0
  FONT_TEXT editor1, font, fontsize
  EDITOR_NUMLINES editor1, n, font, fontsize
  REDRAW
END_SUB

SUB choix_parametres
  SHOW fmParametres
END_SUB

SUB changer_taille_police
  fontsize = GET_POSITION(tbSize)
  FONT_TEXT editor1, font, fontsize
  EDITOR_NUMLINES editor1, LNUM_WIDTH, font, fontsize
  REDRAW
END_SUB

SUB changer_police
  DIM f$
  f = LIST_ITEM_READ(lsPolice, LIST_ITEM_INDEX(lsPolice))
  f = MID(f, INSTR(f, ".") + 1)
  font = NUM_FONT(f)
  FONT_TEXT editor1, font, fontsize
  EDITOR_NUMLINES editor1, LNUM_WIDTH, font, fontsize
  REDRAW
END_SUB

SUB changer_couleur
  DIM r%, g%, b%
  color_chooser_get_rgb CoulChoix, r, g, b
 
  IF checked(rdColFond)=1 THEN TEXT edResult, "Fond" : COLOR_RGB edResult, r, g, b
  IF checked(rdColText)=1 THEN TEXT edResult, "Texte" : COLOR_TEXT_RGB edResult, r, g, b
  IF checked(rdColNomb)=1 THEN TEXT edResult, "Nombre" : COLOR_TEXT_RGB edResult, r, g, b
  IF checked(rdColCom)=1 THEN TEXT edResult, "Commentaires" : COLOR_TEXT_RGB edResult, r, g, b
  IF checked(rdColMC)=1 THEN TEXT edResult, "Mots clés" : COLOR_TEXT_RGB edResult, r, g, b
  IF checked(rdColPp)=1 THEN TEXT edResult, "Préprocesseur" : COLOR_TEXT_RGB edResult, r, g, b
  IF checked(rdColAutr)=1 THEN TEXT edResult, "Autre" : COLOR_TEXT_RGB edResult, r, g, b
END_SUB

SUB cacher_parametres
  HIDE fmParametres
END_SUB

Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: re   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptyDim 13 Oct 2019 - 4:04

Une petite suggestion à Jean,

Mes connaissances sont trop limités pour aider dans le code
mais je peux faire des suggestions sur le sujet.

Pour pouvoir différencier un source FBPano d'un source Panoramic,
il serait peut être intéressant que les fichiers sources aient des extensions
différentes.
Ceci n'est pas une suggestion gratuite pour em....der,
cela permetrait de pouvoir identifier le langage d'un fichier en ouverture et donc
de charger automatiquement la coloration syntaxique et les mots clefs appropriés.

Voilà, j'ai compris, je sors...
lol!
Revenir en haut Aller en bas
jean_debord

jean_debord


Nombre de messages : 1266
Age : 70
Localisation : Limoges
Date d'inscription : 21/09/2008

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptyDim 13 Oct 2019 - 8:16

Il faut garder l'extension .BAS par défaut pour que TOUS les éditeurs (FBIde, Geany, Synedit editor etc.) puissent reconnaître les fichiers.

Bien sûr l'utilisateur est libre de renommer ses fichiers comme il l'entend.

Le problème concerne surtout les fichiers à inclure : on peut nommer en .INC, .BAS, .BI etc.
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Minibug

Minibug


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

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptyDim 13 Oct 2019 - 8:17

Ben c'est tous les 2 des fichiers Basic !

Mais rien n’empêche dans le fichier sauvegarde de mettre une sorte de ligne cachée avec une information correspondante ou plus subtile faire une analyse du code d'après les mots clés propre à chaque langage pour déterminer lequel est chargé.

En fait une sorte de reconnaissance intelligente du code. A voir pour la suite...

Yannick as tu regardé le code que j'ai mis dans mon dernier message ?
J'attends l'intervention de Jean pour la coloration syntaxique. Wink


Edit : Bonjour Jean, on s'est croisé ! Laughing Laughing
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Minibug

Minibug


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

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptyDim 13 Oct 2019 - 13:30

Je continu ma petite découverte et évolution dans FBPano avec l'éditeur...

j'ai intégré un premier niveau d’intelligence pour reconnaître le type de code.
Lorsque l'on ouvre un fichier, l'éditeur confirme s'il s'agit d'un code FBPano ou Panoramic.
Je le ferai évoluer par la suite...

Jean si tu passes par ici pourrai tu m'expliquer plus en détail comment ajouter la couleur syntaxique.
Car je m'y perd un peu... drunken

Ci-joint la dernière version de l'éditeur :

Spoiler:
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: re   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptyDim 13 Oct 2019 - 13:39

Bon bin tant pis.

Des fichiers *.bas il y en a  à profusion :
- FreeBasic
- Panoramic
- FBPano

donc là je ne vois pas un très bon argument
Jean Debord a écrit:
Il faut garder l'extension .BAS par défaut pour que TOUS les éditeurs (FBIde, Geany, Synedit editor etc.) puissent reconnaître les fichiers.
Aucun ne fait la différence entre les langages, il faut tous les paramétrés et encore.

Perso, si je double-click sur un fichier *.bas, c'est Panoramic_Editor qui s'ouvre que ce soit n'importe quel langage. cqfd.
Revenir en haut Aller en bas
Minibug

Minibug


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

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptyDim 13 Oct 2019 - 13:48

Pourquoi t’embêter si tu ouvre tout avec le même éditeur Question Exclamation

Et c'est ton éditeur qui s'adapte. C'est simple non ?

Essais de lancer mon fichier ci-dessus depuis l'éditeur FBPano de Jean... Wink
Par la suite je déposerai la version compilé (EXE) sur le Webdav.
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
jean_debord

jean_debord


Nombre de messages : 1266
Age : 70
Localisation : Limoges
Date d'inscription : 21/09/2008

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptyDim 13 Oct 2019 - 19:04

Bonjour Minibug,

Je regarde ton dernier code. En attendant voici ce qu'il faut faire pour la coloration syntaxique :

1) Definir un "style buffer" : stylebuffer1

Code:

ENUM GUI
  fmMain                          ' Form principale
     menu1, editor1, buffer1, stylebuffer1

2) Creer l'objet stylebuffer1 et associer à l'objet buffer1 un sous-programme style_update

Code:

FORM fmMain, 15, 35, FORM_WIDTH, FORM_HEIGHT, "Editeur"
   FORM_BEGIN fmMain
      .....
      TEXT_BUFFER buffer1, style_update
      TEXT_BUFFER stylebuffer1

3) Associer le "style buffer" à l'éditeur :

Code:

EDITOR_SET_BUFFER editor1, buffer1
EDITOR_SET_STYLEBUFFER editor1, stylebuffer1

4) Dans le sous-programme "changer couleur", définir les styles de la coloration syntaxique :

Code:

IF checked(rdColText)=1 THEN
     PRINT "Couleur Texte ", r, g, b
     add_style "T", fl_rgb(r, g, b), font, fontsize
END_IF

.... etc (pareil pour les autres styles) ....

5) Ajouter le sous-programme style_update (ici celui de START_FBPANO) dans les sous-programmes associés aux événements.

Code:

sub style_update
  dim p1%, p2%, txt$, style$, last$

  if fl_n_inserted = 0 and fl_n_deleted = 0 then
    buffer_unselect stylebuffer1
    exit_sub
  end_if

  if fl_n_inserted > 0 then
    style = string(fl_n_inserted, "A")
    buffer_replace stylebuffer1, fl_cursor_pos, fl_cursor_pos + fl_n_deleted, style
  else
    buffer_remove stylebuffer1, fl_cursor_pos, fl_cursor_pos + fl_n_deleted
  end_if

  buffer_select stylebuffer1, fl_cursor_pos, fl_cursor_pos + fl_n_inserted - fl_n_deleted

  p1 = buffer_line_start(buffer1, fl_cursor_pos)
  p2 = buffer_line_end(buffer1, fl_cursor_pos + fl_n_inserted - fl_n_deleted)

  if p1 >= p2 then exit_sub

  txt = buffer_text_range(buffer1, p1, p2)
  style = buffer_text_range(stylebuffer1, p1, p2)
  last = right(style, 1)

  gen_style txt, keywords, style

  buffer_replace stylebuffer1, p1, p2, style
  editor_redisplay_range buffer1, p1, p2
end_sub
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Minibug

Minibug


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

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptyDim 13 Oct 2019 - 19:12

Ok merci Jean !

Je regarde tout ça et je te tiens au courant...

Au fait as tu vu le message correspondant au bug sur MENU_ITEM_ADD_IMG ?!
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
jean_debord

jean_debord


Nombre de messages : 1266
Age : 70
Localisation : Limoges
Date d'inscription : 21/09/2008

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptyDim 13 Oct 2019 - 19:37

Oui j'ai vu le problème.

Il faut savoir que l'ajout des icônes dans les menus n'est pas une procédure standard de FLTK. C'est une procédure spéciale ajoutée par D. J. Peters. Elle utilise le fait qu'il est possible de dessiner sur un objet FLTK, mais seulement après que celui-ci a été affiché, d'où l'instruction SHOW 0 placée avant les instructions MENU_ITEM_ADD_IMG.

Pour avoir des icônes correctes un TREEVIEW est sans doute préférable à un MENU.
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptyDim 13 Oct 2019 - 21:11

pale silent
Revenir en haut Aller en bas
jean_debord

jean_debord


Nombre de messages : 1266
Age : 70
Localisation : Limoges
Date d'inscription : 21/09/2008

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptyLun 14 Oct 2019 - 9:06

Minibug a écrit:

j'ai intégré un premier niveau d’intelligence pour reconnaître le type de code.
Lorsque l'on ouvre un fichier, l'éditeur confirme s'il s'agit d'un code FBPano ou Panoramic.

Cela ne marchera pas si les mots-clés que tu testes ne figurent pas dans le code FBPano

En revanche, FreeBASIC a une directive #lang pour définir le dialecte utilisé (pour nous c'est le dialecte "fb" qui est en fait l'option par défaut).

Donc si tu mets ceci au début du programme FBPano :

Code:

#lang "fb"

Cela passera parfaitement et tu pourras tester la présence de cette ligne (il suffit de tester la présence du mot "#lang") pour identifier un code FBPano.

Tu peux bien sûr programmer ton éditeur pour qu'il ajoute automatiquement la ligne lors de la sauvegarde.
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
jean_debord

jean_debord


Nombre de messages : 1266
Age : 70
Localisation : Limoges
Date d'inscription : 21/09/2008

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptyLun 14 Oct 2019 - 10:12

Minibug a écrit:

Par la suite je déposerai la version compilé (EXE) sur le Webdav.

Il faudra aussi penser à fournir les 2 DLLs requises (pour ceux qui n'auront pas installé FBPano)

Elles sont sur mon WebDav, dossier FBPano, fichier fbpano_dlls.zip
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Minibug

Minibug


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

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptyLun 14 Oct 2019 - 10:55

Merci pour ces infos complémentaires Jean ! Wink

Pour MENU_ITEM_ADD_IMG c'est dommage car dans l'état actuel c'est inutilisable puisque l'on ne peut pas appeler le sous-programme ! Mad

Mais c'est vrai qu'avec les exemples du TREEVIEW on peut faire des choses très sympas...
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
jean_debord

jean_debord


Nombre de messages : 1266
Age : 70
Localisation : Limoges
Date d'inscription : 21/09/2008

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptyLun 14 Oct 2019 - 11:09

Minibug a écrit:

Pour MENU_ITEM_ADD_IMG c'est dommage car dans l'état actuel c'est inutilisable puisque l'on ne peut pas appeler le sous-programme !

Oui quand j'avais mis cette instruction je n'avais pas encore introduit le TREEVIEW.

Je crois que je vais la supprimer dans l'évolution de FBPano.

Bien sûr il sera toujours possible de dessiner sur un objet avec les instructions 2d_

On peut aussi faire des "menus boutons". Là les icônes ne posent pas de problème.
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Minibug

Minibug


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

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptyLun 14 Oct 2019 - 20:17

Au fait Jean comment peut on récupérer la liste des mots clé de FBPano ?
A moins qu'il existe déjà une liste quelque pars dans le dossier...
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
jean_debord

jean_debord


Nombre de messages : 1266
Age : 70
Localisation : Limoges
Date d'inscription : 21/09/2008

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptyMar 15 Oct 2019 - 9:16

La liste des mots-clés se trouve dans le fichier help_keywords.csv qui se trouve lui-même dans le répertoire FBPano\doc

Si tu ouvres ce fichier dans un tableur, la liste des mots-clés se trouve dans la troisième colonne.

Il faut transformer cette colonne en une chaîne de caractères unique, commençant et finissant par un espace. C'est cette chaîne keywords$ qui est passée à la procédure gen_style.

Attention : les mots-clés "_2d_" commencent par un trait de soulignement car FreeBASIC ne permet pas qu'un mot-clé commence par un chiffre. Toutefois, il n'est pas indispensable de taper ce trait dans l'éditeur. La coloration syntaxique devrait fonctionner quand même.

Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Minibug

Minibug


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

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptyMer 16 Oct 2019 - 17:32

Merci Jean je vais regarder. Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Minibug

Minibug


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

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptyMer 16 Oct 2019 - 22:33

Bonsoir Jean et bonsoir à tous !

Je viens de mettre la dernière avancé de Editor_FBPano sur mes Webdav.

Jean si tu peux regardé, je n'ai pas la coloration syntaxique des mots clés.
Je pense que c'est un problème de rafraîchissement mais là je ne vois pas...
Pour le reste ça a l'air de fonctionner. Wink

J'ai aussi un problème avec la taille et la police qui ne se changent plus.
La numérotation a gauche elle fonctionne et change de police et taille correctement.  Question  Exclamation

Il y a peut être un peu d'ordre a faire dans le code car pour le moment je fais comme ça vient...
Je découvre au fur et à mesure.

Une chose est certaine, développer sur un éditeur qui le plante pas c'est drôlement agréable ! geek

Bon voila pour ce soir.
Bonne soirée à tous ! drunken
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
jean_debord

jean_debord


Nombre de messages : 1266
Age : 70
Localisation : Limoges
Date d'inscription : 21/09/2008

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptyJeu 17 Oct 2019 - 9:17

J'ai téléchargé. Je vais voir ce qui ne va pas.

J'ai aussi téléchargé "Walking Mario" car c'est le genre de programme qui serait intéressant à adapter pour FBCroco quand il aura un peu évolué.

EDIT : Pour le rafraichissement, penser à faire REDRAW !
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
jean_debord

jean_debord


Nombre de messages : 1266
Age : 70
Localisation : Limoges
Date d'inscription : 21/09/2008

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptyJeu 17 Oct 2019 - 11:16

J'ai identifié deux (mini)bugs :

1. Le style "S" (pour les symboles) n'est pas défini

2. La liste des mots-clés (keywords$) doit être lue avant l'affichage de la fenêtre

Il reste encore quelques ajustements à faire.

Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
jean_debord

jean_debord


Nombre de messages : 1266
Age : 70
Localisation : Limoges
Date d'inscription : 21/09/2008

Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 EmptyVen 18 Oct 2019 - 9:38

Bonjour Minibug,

Voici une version modifiée :

- ligne 12 : un seul type suffit puisqu'ils ont tous les mêmes champs Smile

- ligne 28 : forme simplifiée pour l'initialisation (ne marche qu'avec les variables numériques)

- ligne 29 : suppression de l'initialisation de font : elle le sera en même temps que le LIST (lignes 70-71). J'ai pris "Courier New" comme police par défaut.

- ligne 156 : lecture des mots-clés à ce niveau (il faudra choisir une syntaxe par défaut)

- ligne 157 : appel d'un sous-programme pour définir les styles : en effet il faut les redéfinir chaque fois qu'on change la couleur, la police ou la taille du texte

- lignes 203-212 : définition du programme changer_styles (pour le style "S" j'ai pris le même que "A" mais il faudra sans doute changer...)

- lignes 360 et 370 : changer les styles quand on a changé la police ou sa taille !

- dans le SUB choix_couleurs : appel du sous-programme changer_styles après chaque modification de couleurs

ATTENTION : FLTK est assez exigeant en ce qui concerne la coloration syntaxique : certaines combinaisons de couleurs peuvent ne pas être acceptées ! Je conseille de mettre un fond plutôt pâle (le blanc est l'idéal)

Code:

' **********************************************************************
' Editeur FBPano, d'apres le programme de demonstration de FLTK : www.fltk.org/doc-1.3/editor.html
' Modification par MiNiBuG
' **********************************************************************

#compile -gui

CONST FORM_WIDTH  = 750                                  ' Largeur de la fenetre principale
CONST FORM_HEIGHT = 500                                  ' Hauteur de la fenetre principale
CONST LNUM_WIDTH  = 60                                   ' Largeur de la marge pour num. lignes

TYPE RGBCoul = (R%, G%, B%)                              ' Choix des Couleurs RGB

DIM Coul<RGBCoul>                                        ' Choix des Couleurs RGB
DIM Fond<RGBCoul>                                        ' Couleur fond RGB
DIM Lin<RGBCoul>                                         ' Couleur texte lignes RGB
DIM Nbr<RGBCoul>                                         ' Couleur nombres RGB
DIM Com<RGBCoul>                                         ' Couleur commentaire RGB
DIM Mc<RGBCoul>                                          ' Couleur mots clés RGB
DIM Pp<RGBCoul>                                          ' Couleur Préprocesseur RGB
DIM Autr<RGBCoul>                                        ' Couleur autre RGB

DIM search$                                              ' Chaine pour la recherche
DIM find$, rep$                                          ' Chaines pour le remplacement
DIM nf%                                                  ' Nb de polices
DIM fontnum%()                                           ' Numéros des polices
DIM fontname$()                                          ' Noms des polices
DIM fontsize% = 16                                       ' Taille de la police
DIM font%                                                ' Police selectionnee
DIM i%                                                   ' Variable de boucle
DIM keywords$                                            ' Liste des mots_cles

ENUM GUI
  fmMain                                                 ' Form principale
     menu1, editor1, buffer1, stylebuffer1
  fmReplace                                              ' Form rechercher/remplacer
     edFind, edReplace, btRepAll, btRepNext, btCancel
  fmParametres                                           ' Form paramètres
     lsPolice, tbSize, btFermerParam, btWrap, btLin
     ctCouleur                                              ' Container couleurs
        rdFond, rdText, rdNomb, rdCom, rdMc, rdPp, rdAutr
        CoulChoix, edResult
END_ENUM

FORM fmMain, 15, 35, FORM_WIDTH, FORM_HEIGHT, "Editeur"
   FORM_BEGIN fmMain
      MENU menu1, 0, 0, FORM_WIDTH, 25
      TEXT_EDITOR editor1,  0, 25, FORM_WIDTH, FORM_HEIGHT - 25
      TEXT_BUFFER buffer1, style_update
      TEXT_BUFFER stylebuffer1
   FORM_END fmMain

FORM fmReplace, 200, 200, 380, 110, "Remplacement"
   FORM_BEGIN fmReplace
      EDIT edFind,    110, 10, 260, 25, "Chercher :"
      EDIT edReplace, 110, 40, 260, 25, "Remplacer par :"
      BUTTON btRepAll,   10, 75, 110, 25, "Remplacer tout"
      BUTTON btRepNext, 130, 75, 170, 25, "Remplacer Suivant", , T_Button_Return
      BUTTON btCancel,  310, 75,  60, 25, "Fermer"
   FORM_END fmReplace

FORM fmParametres, 200, 200, 380, 420, "Liste des polices"
   FORM_BEGIN fmParametres
      LIST lsPolice, 5, 5, 180, 375
      nf = FONT_LIST(fontnum(), fontname())
      FOR i = 0 TO nf - 1
         LIST_ITEM_ADD lsPolice, "@S12@F" & "@." & fontname(i)
         IF fontname(i) = "Courier New" THEN
           LIST_ITEM_SELECT lsPolice, i + 1
           font = fontnum(i)
         END_IF
      NEXT i

      TRACK_BAR tbSize, 225, 5, 150, 25, "Taille", FL_ALIGN_LEFT, T_Track_Val
      FONT_TEXT tbSize, font, 16
      POSITION_RANGE tbSize, 8, 30, 1
      POSITION tbSize, fontsize
      BUTTON btWrap, 190, 35, 185, 30, "Retour à la ligne", , T_Button_Light
      BUTTON btLin, 190, 65, 185, 30, "Affichage lignes", , T_Button_Light
      MARK_ON btLin

      CONTAINER ctCouleur, 190, 100, 185, 280, "", , T_Container
         CONTAINER_BEGIN ctCouleur
            RADIO rdFond, 195, 102, 175, 30, "Fond"
            RADIO rdText, 195, 122, 175, 30, "Chaines texte"
            RADIO rdNomb, 195, 142, 175, 30, "Nombres"
            RADIO rdCom, 195, 162, 175, 30, "Commentaires"
            RADIO rdMc, 195, 182, 175, 30, "Mots clés"
            RADIO rdPp, 195, 202, 175, 30, "Préprocesseur"
            RADIO rdAutr, 195, 222, 175, 30, "Autre"
            MARK_ON rdFond
            COLOR_CHOOSER CoulChoix, 195, 247, 175, 100, , , FL_COLORCHOOSER_BYTE
            EDIT edResult, 195, 350, 175, 25
 CONTAINER_END ctCouleur

      BUTTON btFermerParam, 5, 385, 370, 30, "Fermer"
   FORM_END fmParametres

ON_CLICK btRepAll, remplacer_tout
ON_CLICK btRepNext, remplacer_suivant
ON_CLICK btCancel, annuler_remplacer
ON_CLICK lsPolice, changer_police
ON_CLICK btFermerParam, cacher_parametres
ON_CLICK tbSize, changer_taille_police
ON_CLICK btWrap, wrap
ON_CLICK btLin, affichage_numLines

ON_CLICK CoulChoix, choix_couleur                   ' Sélection dans le Color_Chooser

ON_CLICK rdFond, changer_couleur_fond               ' Sélection de la couleur de fond
ON_CLICK rdText, changer_couleur_text               ' Sélection de la couleur du texte
ON_CLICK rdNomb, changer_couleur_nomb               ' Sélection de la couleur des nombres
ON_CLICK rdCom, changer_couleur_com                 ' Sélection de la couleur des commentaires
ON_CLICK rdMc, changer_couleur_mc                   ' Sélection de la couleur des mots clés
ON_CLICK rdPp, changer_couleur_pp                   ' Sélection de la couleur du préprocesseur
ON_CLICK rdAutr, changer_couleur_autr               ' Sélection de la couleur autre

MENU_ITEM_ADD menu1, "&Fichier/&Nouveau ", "Ctrl+N", , nouveau
MENU_ITEM_ADD menu1, "&Fichier/&Ouvrir ", "Ctrl+O", , ouvrir
MENU_ITEM_ADD menu1, "&Fichier/&Enregistrer ", "Ctrl+E", FL_MENU_DIVIDER, enregistrer
MENU_ITEM_ADD menu1, "&Fichier/&Quitter ", "Ctrl+Q", , quitter

MENU_ITEM_ADD menu1, "E&dition/Co&uper ", "Ctrl+X", , couper
MENU_ITEM_ADD menu1, "E&dition/&Copier ", "Ctrl+C", , copier
MENU_ITEM_ADD menu1, "E&dition/Co&ller ", "Ctrl+V", , coller

MENU_ITEM_ADD menu1, "&Rechercher/&Rechercher ", "Ctrl+F", , rechercher
MENU_ITEM_ADD menu1, "&Rechercher/Rechercher le &suivant ", "F3", , rechercher_suivant
MENU_ITEM_ADD menu1, "&Rechercher/R&emplacer ", "Ctrl+R", , remplacer

MENU_ITEM_ADD menu1, "&Exécution/E&xécuter ", "F9", , executer

MENU_ITEM_ADD menu1, "O&ptions/&Paramètres ", "Ctrl+P", , choix_parametres

FORM_MINSIZE fmMain, 500, 300                       ' Limitation de la taille minimum d'affichage
SET_RESIZABLE fmMain, editor1                       ' Taille modifiable uniquement pour l'éditeur

EDITOR_NUMLINES editor1, LNUM_WIDTH, font, fontsize

EDITOR_SET_BUFFER editor1, buffer1
EDITOR_SET_STYLEBUFFER editor1, stylebuffer1

IF FILE_EXISTS(exepath()+"\ini\coulsynt.ini")=TRUE THEN
   FILE_OPEN_READ(1, exepath()+"\ini\coulsynt.ini")
      FILE_READ_CSV 1, Fond.R, Fond.G, Fond.B : FILE_READ_CSV 1, Lin.R, Lin.G, Lin.B
      FILE_READ_CSV 1, Nbr.R, Nbr.G, Nbr.B
      FILE_READ_CSV 1, Com.R, Com.G, Com.B
      FILE_READ_CSV 1, Mc.R, Mc.G, Mc.B
      FILE_READ_CSV 1, Pp.R, Pp.G, Pp.B
      FILE_READ_CSV 1, Autr.R, Autr.G, Autr.B
   FILE_CLOSE(1)
   COLOR_NUMLINES_RGB editor1, Lin.R, Lin.G, Lin.B, Fond.R, Fond.G, Fond.B
   COLOR_RGB editor1,Fond.R, Fond.G, Fond.B
END_IF

charger_keyword_fbpano
changer_styles

START fmMain

' ----------------------------------------------------------------------
' Sous-programmes utilitaires
' ----------------------------------------------------------------------

FUNCTION trouve% (s$, p%, msg%)
   ' Recherche la chaine s à partir de la position du curseur
   ' La position de la chaine trouvee est retournee dans p
   ' msg = TRUE pour afficher le message d'erreur

   p = EDITOR_GET_INSERT_POS(editor1)
   IF BUFFER_SEARCH_FORWARD(buffer1, p, s, p) = 0 THEN
      IF msg THEN MESSAGE "Chaîne """ + s + """ non trouvée !"
      trouve = FALSE
   ELSE
      trouve = TRUE
   END_IF
END_FUNCTION

SUB update_editor (p%, s1$, s2$, rpl%)
   ' Met a jour l'editeur apres recherche ou remplacement
   ' p = position de la chaine recherchee
   ' s1 = chaine recherchee
   ' s2 = chaine de remplacement
   ' rpl = indique si remplacement

   DIM p1%

   p1 = p + LEN(s1)
   BUFFER_SELECT buffer1, p, p1

   IF rpl THEN
      BUFFER_REMOVE_SELECT buffer1
      BUFFER_INSERT buffer1, p, s2
      p1 = p + LEN(s2)
      BUFFER_SELECT buffer1, p, p1
      p = p1
   END_IF

   EDITOR_SET_INSERT_POS editor1, p1
   EDITOR_SHOW_INSERT_POS editor1
END_SUB

SUB changer_styles
   ADD_STYLE "T", FL_RGB(Lin.R, Lin.G, Lin.B), font, fontsize
   ADD_STYLE "N", FL_RGB(Nbr.R, Nbr.G, Nbr.B), font, fontsize
   ADD_STYLE "C", FL_RGB(Com.R, Com.G, Com.B), font, fontsize
   ADD_STYLE "M", FL_RGB(Mc.R, Mc.G, Mc.B), font, fontsize
   ADD_STYLE "P", FL_RGB(Pp.R, Pp.G, Pp.B), font, fontsize
   ADD_STYLE "A", FL_RGB(Autr.R, Autr.G, Autr.B), font, fontsize
   ADD_STYLE "S", FL_RGB(Autr.R, Autr.G, Autr.B), font, fontsize
   REDRAW
END_SUB  
  
  
' ----------------------------------------------------------------------
' Sous-programmes associes aux evenements
' ----------------------------------------------------------------------

SUB nouveau
   TEXT buffer1, ""
   CAPTION fmMain, "Editeur"
END_SUB

SUB ouvrir
   DIM fname$, texte$, res% : res=0
   fname = FILE_NAME("Ouvrir", "Fichier basic (*.bas)", CURDIR, 0)
   IF fname = "" OR FILE_EXISTS(fname) = 0 THEN EXIT_SUB
   BUFFER_FILE_LOAD buffer1, fname
   CAPTION fmMain, fname

   texte=UCASE(GET_TEXT(buffer1))
   IF INSTR(texte, "ENUM ")>0 THEN res=1
   IF INSTR(texte, "FORM_BEGIN ")>0 THEN res=1
   ' IF INSTR(texte, "START ")>0 THEN res=1
   IF res=1 THEN
      charger_keyword_fbpano
   ELSE
      charger_keyword_panoramic
   END_IF
   REDRAW
END_SUB

SUB enregistrer
   DIM fname$
   fname = FILE_NAME("Enregistrer", "Fichier texte (*.txt)", CURDIR, 0)
   IF fname = "" THEN EXIT_SUB
   BUFFER_FILE_SAVE buffer1, fname
END_SUB

SUB quitter
   HIDE fmMain
END_SUB

SUB couper
   EDITOR_CUT editor1
END_SUB

SUB copier
   EDITOR_COPY editor1
END_SUB

SUB coller
   EDITOR_PASTE editor1
END_SUB

SUB rechercher
   DIM p%
   search = MESSAGE_INPUT("Rechercher", "Rechercher", search)
   IF search <> "" THEN
      IF trouve(search, p, TRUE) THEN update_editor p, search, "", FALSE
   END_IF
END_SUB

SUB rechercher_suivant
   DIM p%
   IF search = "" THEN
      search = message_input("Rechercher", "Rechercher", search)
   END_IF
   IF search <> "" THEN
      IF trouve(search, p, TRUE) THEN update_editor p, search, "", FALSE
   END_IF
END_SUB

SUB remplacer
   SHOW fmReplace
END_SUB

SUB remplacer_suivant
   DIM p%
   find = GET_TEXT(edFind)
   IF find = "" THEN EXIT_SUB
   rep = GET_TEXT(edReplace)
   IF trouve(find, p, TRUE) THEN update_editor p, find, rep, TRUE
END_SUB

SUB remplacer_tout
   DIM p%, found%, n%
   find = GET_TEXT(edFind)
   IF find = "" THEN EXIT_SUB
   rep = GET_TEXT(edReplace)
   found = trouve(find, p, TRUE)
   IF NOT found THEN EXIT_SUB
   WHILE found
      n = n + 1
      update_editor p, find, rep, TRUE
      found = trouve(find, p, FALSE)
   END_WHILE
   MESSAGE "Chaîne """ & find & """ remplacée " & n & " fois."
END_SUB

SUB annuler_remplacer
   HIDE fmReplace
END_SUB

SUB executer

END_SUB

SUB charger_keyword_fbpano
   FILE_OPEN_READ(1, exepath()+"\ini\mcfbpano.ini")
      FILE_READLN 1,keywords
   FILE_CLOSE(1)
   MESSAGE "Votre programme contient une syntaxe_fbpano"
END_SUB

SUB charger_keyword_panoramic
   FILE_OPEN_READ(1, exepath()+"\ini\mcpano.ini")
      FILE_READLN 1,keywords
   FILE_CLOSE(1)
   MESSAGE "Votre programme contient une syntaxe_panoramic"
END_SUB

SUB wrap
   DIM n%
   IF CHECKED(btWrap)=1 THEN n = 1 ELSE n = 0
   EDITOR_WRAP editor1, n
END_SUB

SUB affichage_numLines
   DIM n%
   fontsize = GET_POSITION(tbSize)
   IF CHECKED(btLin)=1 THEN n = LNUM_WIDTH ELSE n = 0
   FONT_TEXT editor1, font, fontsize
   EDITOR_NUMLINES editor1, n, font, fontsize
   REDRAW
END_SUB

SUB choix_parametres
   SHOW fmParametres
END_SUB

SUB cacher_parametres
   HIDE fmParametres
END_SUB

SUB changer_taille_police
   fontsize = GET_POSITION(tbSize)
   FONT_TEXT editor1, font, fontsize
   EDITOR_NUMLINES editor1, LNUM_WIDTH, font, fontsize
   changer_styles
END_SUB

SUB changer_police
   DIM f$
   f = LIST_ITEM_READ(lsPolice, LIST_ITEM_INDEX(lsPolice))
   f = MID(f, INSTR(f, ".") + 1)
   font = NUM_FONT(f)
   EDITOR_NUMLINES editor1, LNUM_WIDTH, font, fontsize
   FONT_TEXT editor1, font, fontsize
   changer_styles
END_SUB

SUB choix_couleur
   COLOR_CHOOSER_GET_RGB CoulChoix, Coul.R, Coul.G, Coul.B

   IF CHECKED(rdFond)=1 THEN
      TEXT edResult, "Fond" : COLOR_RGB edResult, Coul.R, Coul.G, Coul.B
      Fond.R = Coul.R : Fond.G = Coul.G : Fond.B = Coul.B
      COLOR_NUMLINES_RGB editor1, Lin.R, Lin.G, Lin.B, Fond.R, Fond.G, Fond.B   ' Couleur fond et texte des lignes de l'éditeur
      COLOR_RGB editor1,Fond.R, Fond.G, Fond.B                                    ' Couleur fond de l'éditeur
      REDRAW
   END_IF
   IF CHECKED(rdText)=1 THEN
      TEXT edResult, "Texte" : COLOR_TEXT_RGB edResult, Coul.R, Coul.G, Coul.B
      Lin.R = Coul.R : Lin.G = Coul.G : Lin.B = Coul.B
      COLOR_NUMLINES_RGB editor1, Lin.R, Lin.G, Lin.B, Fond.R, Fond.G, Fond.B   ' Couleur texte des lignes de l'éditeur
      changer_styles
   END_IF
   IF CHECKED(rdNomb)=1 THEN
      TEXT edResult, "Nombre" : COLOR_TEXT_RGB edResult, Coul.R, Coul.G, Coul.B
      Nbr.R = Coul.R : Nbr.G = Coul.G : Nbr.B = Coul.B
      changer_styles
   END_IF
   IF CHECKED(rdCom)=1 THEN
      TEXT edResult, "Commentaires" : COLOR_TEXT_RGB edResult, Coul.R, Coul.G, Coul.B
      Com.R = Coul.R : Com.G = Coul.G : Com.B = Coul.B
      changer_styles
   END_IF
   IF CHECKED(rdMc)=1 THEN
      TEXT edResult, "Mots clés" : COLOR_TEXT_RGB edResult, Coul.R, Coul.G, Coul.B
      Mc.R = Coul.R : Mc.G = Coul.G : Mc.B = Coul.B
      changer_styles
   END_IF
   IF CHECKED(rdPp)=1 THEN
      TEXT edResult, "Préprocesseur" : COLOR_TEXT_RGB edResult, Coul.R, Coul.G,Coul.B
      Pp.R = Coul.R : Pp.G = Coul.G : Pp.B = Coul.B
      changer_styles
   END_IF
   IF CHECKED(rdAutr)=1 THEN
      TEXT edResult, "Autre" : COLOR_TEXT_RGB edResult, Coul.R, Coul.G,Coul.B
      Autr.R = Coul.R : Autr.G = Coul.G : Autr.B = Coul.B
      changer_styles
   END_IF
   FILE_OPEN_WRITE(1, exepath()+"\ini\coulsynt.ini")
      FILE_WRITE_CSV 1, Fond.R, Fond.G, Fond.B
      FILE_WRITE_CSV 1, Lin.R, Lin.G, Lin.B
      FILE_WRITE_CSV 1, Nbr.R, Nbr.G, Nbr.B
      FILE_WRITE_CSV 1, Com.R, Com.G, Com.B
      FILE_WRITE_CSV 1, Mc.R, Mc.G, Mc.B
      FILE_WRITE_CSV 1, Pp.R, Pp.G, Pp.B
      FILE_WRITE_CSV 1, Autr.R, Autr.G, Autr.B
   FILE_CLOSE(1)
END_SUB

SUB changer_couleur_fond
   COLOR_CHOOSER_SET_RGB CoulChoix, Fond.R, Fond.G, Fond.B
END_SUB

SUB changer_couleur_text
   COLOR_CHOOSER_SET_RGB CoulChoix, Lin.R, Lin.G, Lin.B
END_SUB

SUB changer_couleur_nomb
   COLOR_CHOOSER_SET_RGB CoulChoix, Nbr.R, Nbr.G, Nbr.B
END_SUB

SUB changer_couleur_com
   COLOR_CHOOSER_SET_RGB CoulChoix, Com.R, Com.G, Com.B
END_SUB

SUB changer_couleur_mc
   COLOR_CHOOSER_SET_RGB CoulChoix, Mc.R, Mc.G, Mc.B
END_SUB

SUB changer_couleur_pp
   COLOR_CHOOSER_SET_RGB CoulChoix, Pp.R, Pp.G, Pp.B
END_SUB

SUB changer_couleur_autr
   COLOR_CHOOSER_SET_RGB CoulChoix, Autr.R, Autr.G, Autr.B
END_SUB

SUB style_update
   DIM p1%, p2%, txt$, style$, last$

   IF fl_n_inserted = 0 AND fl_n_deleted = 0 THEN
      BUFFER_UNSELECT stylebuffer1
      EXIT_SUB
   END_IF

   IF fl_n_inserted > 0 THEN
      style = STRING(fl_n_inserted, "A")
      BUFFER_REPLACE stylebuffer1, fl_cursor_pos, fl_cursor_pos + fl_n_deleted, style
   else
      BUFFER_REMOVE stylebuffer1, fl_cursor_pos, fl_cursor_pos + fl_n_deleted
   END_IF

   BUFFER_SELECT stylebuffer1, fl_cursor_pos, fl_cursor_pos + fl_n_inserted - fl_n_deleted

   p1 = BUFFER_LINE_START(buffer1, fl_cursor_pos)
   p2 = BUFFER_LINE_END(buffer1, fl_cursor_pos + fl_n_inserted - fl_n_deleted)

   IF p1 >= p2 THEN EXIT_SUB

   txt = BUFFER_TEXT_RANGE(buffer1, p1, p2)
   style = BUFFER_TEXT_RANGE(stylebuffer1, p1, p2)
   last = RIGHT(style, 1)

   GEN_STYLE txt, keywords, style

   BUFFER_REPLACE stylebuffer1, p1, p2, style
   EDITOR_REDISPLAY_RANGE buffer1, p1, p2
END_SUB
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Contenu sponsorisé





Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty
MessageSujet: Re: Un éditeur MultiPlatforme Panoramic, FBpano, etc...   Un éditeur MultiPlatforme Panoramic, FBpano, etc... - Page 2 Empty

Revenir en haut Aller en bas
 
Un éditeur MultiPlatforme Panoramic, FBpano, etc...
Revenir en haut 
Page 2 sur 2Aller à la page : Précédent  1, 2
 Sujets similaires
-
» Un éditeur pour FBPano
» Editeur EliP 5 : Tiny éditeur Panoramic
» Position des objets d'un conteneur dans FBPano et Panoramic
» Editeur Panoramic.
» Personnal Panoramic Editor

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Grands projets réalisés avec Panoramic :: Compilateur FBPANO-
Sauter vers: