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
» Tout est tranquille
par Jean Claude Hier à 21:41

» Texte en gif animé
par JL35 Hier à 13:29

» BasicEditor
par Yannick Mer 20 Sep 2017 - 17:17

» Simuler l’appui d'une touche ou combinaison de touches.
par pascal10000 Lun 18 Sep 2017 - 19:30

» Utilisation de HVIEWER pour afficher des images
par papydall Lun 18 Sep 2017 - 17:43

» Panoramic et les gifs animés.
par papydall Lun 18 Sep 2017 - 16:32

» recover source
par pascal10000 Dim 17 Sep 2017 - 14:21

» Recent dans vos menu
par Jean Claude Sam 16 Sep 2017 - 11:41

» Comment centrer un texte 3D.
par pascal10000 Ven 15 Sep 2017 - 20:20

» Carte interface 16 entrées et 16 sorties
par Jicehel Ven 15 Sep 2017 - 16:30

» Version instantanée V 0.9.28i9 possédant l'objet SYNEDIT
par pascal10000 Ven 15 Sep 2017 - 16:20

» Compilateur FBPano
par jean_debord Ven 15 Sep 2017 - 9:59

» 1 (en analyse): 3D_TARGET_IS ne fonctionne pas sur 3D_TEXT
par Jack Jeu 14 Sep 2017 - 19:52

» Problème avec la 3D.
par Jack Jeu 14 Sep 2017 - 18:06

» Test de la 3D.
par mindstorm Mer 13 Sep 2017 - 19:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Septembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier

Partagez | 
 

 V3.21 du 19/08/2014 - début des fonctions Synedit

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

avatar

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

MessageSujet: V3.21 du 19/08/2014 - début des fonctions Synedit   Mar 19 Aoû 2014 - 23:31

Nouvelle version:
KGF.dll V3.21 du 19/08/2014

Nouveauté:
- début des fonctions Synedit

Modules modifiés:
KGF.dll

La doc n'est pas encore mise à jour, ni les sources sur le WebDav. Ca viendra.

Ces fonctions permettent de gérer des objets Synedit dans un programme Panoramic. Pour mémoire: cet objet est le coeur de la partie "éditeur de source" du l'éditeur Panoramic. On a donc exactement les mêmes fonctionnalités.

Il y a un programme de démo pour montrer la puissance de cet objet. J'ai fait une version multi-fenêtre (et non multi-tab !). Dans chaque fenêtre, on peut charger un fichier source, le modifier et le sauvegarder, dans son fichier d'origine ou un autre.

On peut même copier le contenu d'une fenêtre d'édition dans une nouvelle fenêtre - chose qu'on ne peut pas faire avec l'éditeur de Panoramic !

Un menu permet de gérer les fonctions de l'éditeur (il n'y a pas encore de tool bar...). Dans le menu "Options", on peut activer ou désactiver l'affichage des numéros de ligne, séparément pour chaque fenêtre d'édition. On peut aussi changer la police et son aspect pour chaque fenêtre d'édition.

Chaque fenêtre mémorise son nom de fichier d'origine avec le chemin complet ! Le nom seul est affiché dans le titre de la fenêtre, ainsi que dans une ligne du menu "Fenêtres". Un clic sur une ligne de ce menu, ou dans une des fenêtres ouvertes, porte la fenêtre visée en avant-plan et lui donne le focus. Cela est indiqué par une coche devant la ligne correspondante du menu "Fenêtres".

On peut cacher une fenêtre en la fermant par la croix rouge. Un clic dans le menu "Fenêtres" sur la ligne correspondante réaffiche la fenêtre. Par contre, si l'on ferme la fenêtre par la fonction "Fermer" du menu "Fichiers", elle disparaît définitivement, avec son contenu.

Les touches de fonction habituelles marchent, comme ctrl/C, ctrl/V, ctrl/X, ctrl/Z etc. Et, comme avec l'éditeur de Panoramic, on peut placer jusqu'à 10 "favoris" dans le texte, par ctrl/shift/x, x étant un chiffre entre 0 et 9. Et la frappe de ctrl/x saute directement à ce favoris.

Note importante: la coloration syntaxique n'est pas encore gérée, mais elle viendra très prochainement !

Voici le source de l'éditeur en version Alpha 0.0 (380 lignes) :
Code:
' Synedit_Editor.bas

label close0, close3000
label nouveau, ouvrir, copier, fermer, sauver, sauverdans, sortir
label lignes, options, tick, fenetre
label aide, apropos
label options_abandon, options_valider, apropos_fermer

' ===== variables pour gérer les pages d'édition
dim SE%(100)         : ' les objets Synedit
dim hndSE%(100)      : ' les handles des fenêtres
dim ln%(100)         : ' flags "numéros de lignes affichés"
dim capt$(100)       : ' titre des fenetres
dim OSE$(100)        : ' les options des objets
dim FSE$(100)        : ' les noms des fichiers
dim nsyn%            : ' plus grand numéro de page d'édition (0...100)
dim act%             : ' page d'édition actuellement active (0...100)

' ===== variables internes
dim res%, d%, nf%, t%, l%, i%, optvalid%, opt$, f$, org%

' ===== constantes
dim M1%       : M1% = 0 - 1
dim version$  : version$ = "Alpha 0.0"
dim verdat$   : verdat$ = "19/08/2014"
dim KGF$      : KGF$ = "KGF.dll"

' configurer la form 0 (uniquement le menu)
width 0,800 : height 0,60 : border_small 0

' ===== création de tous les menus
main_menu 10
  sub_menu 11 : parent 11,10 : caption 11,"Fichier"
    sub_menu 12 : parent 12,11 : caption 12,"Nouveau" : on_click 12,nouveau
    sub_menu 13 : parent 13,11 : caption 13,"Ouvrir..." : on_click 13,ouvrir
    sub_menu 14 : parent 14,11 : caption 14,"Copier" : on_click 14,copier
    sub_menu 15 : parent 15,11 : caption 15,"Fermer" : on_click 15,fermer
    sub_menu 16 : parent 16,11 : caption 16,"Sauver" : on_click 16,sauver
    sub_menu 17 : parent 17,11 : caption 17,"Sauver dans..." : on_click 17,sauverdans
    sub_menu 18 : parent 18,11 : caption 18,"-"
    sub_menu 19 : parent 19,11 : caption 19,"Sortir" : on_click 19,sortir
  sub_menu 21 : parent 21,10 : caption 21,"Options"
    sub_menu 22 : parent 22,21 : caption 22,"N° de ligne" : on_click 22,lignes
    sub_menu 23 : parent 23,21 : caption 23,"Options" : on_click 23,options
  sub_menu 400 : parent 400,10 : caption 400,"Edition"
    sub_menu 401 : parent 401,400 : caption 401,"pas encore implémenté" : ' on_click 401,???
  sub_menu 300 : parent 300,10 : caption 300,"Fenêtres"
'    sub_menu 301 : parent 301,300 : caption 301,"Fenêtre" : on_click 301,fenetre
  sub_menu 420 : parent 420,10 : caption 420,"Aide"
    sub_menu 421 : parent 421,420 : caption 421,"Aide" : on_click 421,aide
    sub_menu 422 : parent 422,420 : caption 422,"A-propos" : on_click 422,apropos

' ===== création de la fenêtre des options
form 3000 : hide 3000 : caption 3000,"Options" : command_target_is 3000
  top 3000,100 : left 3000,200
  width 3000,550 :height 3000,400 : on_close 3000,close3000
check 3001 : top 3001,10 : left 3001,10 : width 3001,150
  caption 3001,"Numéros de de ligne"
container 3002 : caption 3002,"Format par défaut"
  top 3002,40 : left 3002,10 : width 3002,250 : height 3002,200
combo 3003 : parent 3003,3002 : top 3003,20 : left 3003,10 : width 3003,170
  font_names_load 3003 : text 3003,"Courier"
alpha 3004 : parent 3004,3002 : top 3004,50 : left 3004,10 : caption 3004,"Taille:"
combo 3005 : parent 3005,3002 : top 3005,50 : left 3005,60 : width 3005,40
  item_add 3005,"8"
  item_add 3005,"9"
  item_add 3005,"10"
  item_add 3005,"11"
  item_add 3005,"12"
  item_add 3005,"14"
  item_add 3005,"16"
  item_add 3005,"18"
text 3005,"10"
check 3006 : parent 3006,3002 : top 3006,80 : left 3006,10 : caption 3006,"Gras"
  font_bold 3006
check 3007 : parent 3007,3002 : top 3007,80 : left 3007,60 : caption 3007,"Italique"
  font_italic 3007
check 3008 : parent 3008,3002 : top 3008,80 : left 3008,120 : caption 3008,"Sousligné"
  font_underline 3008
check 3009 : parent 3009,3002 : top 3009,80 : left 3009,190 : caption 3009,"Barré" : width 3009,40
  font_strike 3009
button 3098 : top 3098,300 : left 3098,10 : caption 3098,"Abandon"
  on_click 3098,options_abandon
button 3099 : top 3099,300 : left 3099,210 : caption 3099,"Valider"
  on_click 3099,options_valider

' ===== création de la fenêtre A-propos
form 3100 : hide 3100 : top 3100,100 : left 3100,300 : command_target_is 3100
  width 3100,400 : height 3100,200 : on_close 3100,apropos_fermer
picture 3101 : full_space 3101  : print_target_is 3101
font_name 3101,"Courier" : font_size 3101,10 : font_bold 3101
print_locate 40,20  : print "Programme: "+"Synedit_Editor"
print_locate 40,40  : print "Version:   "+version$
print_locate 40,60  : print "Date:      "+verdat$
print_locate 40,80  : print "Auteur:    "+"Klaus"

' ===== quelques objets invisbles
command_target_is 0
save_dialog 97
open_dialog 98
timer 99 : timer_off 99 : timer_interval 99,300 : on_timer 99,tick
  
' ===== activer la DLL
dll_on KGF$
res% = DLL_call2("SetCloseBox",handle(0),0) : ' désactiver la croix rouge !

end




' ===== à la fin, on supprime toutes les fenêtres ouvertes
close0:
  while nsyn%>0
    res% = dll_call1("SyneditDelete",SE%(nsyn%))
    pause 500              : ' ce délai pourra éventuellement être réduit...
    delete 100+nsyn%
    nsyn% = nsyn% - 1
  end_while
  return

' ===== fermeture de la fenêtre des paramètres généraux
close3000:
  if optvalid%=0
    hide 3000
    show 0
    active 0
    if act%=0
      to_foreground 0
    else
      to_foreground 100+act%
    end_if
  end_if
  return
  
' ===== mode d'emploi
aide:
  message "L'aide n'est pas encore implémentée."
  return
  
' ===== montrer la fenêtre A-propos
apropos:
  show 3100
  inactive 0
  return
  
' ===== fermer la fenêtre A-propos et restaurer la fenêtre active
apropos_fermer:
  hide 3100
  active 0
  if act%=0
    to_foreground 0
  else
    to_foreground 100+act%
  end_if
  return
  
' ===== sortir du programme
sortir:
  gosub close0
  res% = dll_call1("KillProcessByHandle",handle(0))
  ' *** on ne passera jamais ici !

' ===== choisir une fenêtre par le menu "Fenêtres"
fenetre:
  mark_off 300+act%
  act% = number_click-300
  mark_on 300+act%
  show 100 + act%
  to_foreground 100 + act%
  return



' ======================== fonctions du menu "Fichiers"

' ===== créer une nouvelle fenêtre d'édition vide
nouveau:
  if nsyn%=100 then return
  if nsyn%>0
    t% = top(100+nsyn%)
    l% = left(100+nsyn%)
  else
    t% = top(0) + 50
    l% = left(0) + 50
  end_if
  nsyn% = nsyn% + 1
  if act%>0 then mark_off 300+act%
  act% = nsyn%
  d% = 20
  nf% = 100 + nsyn%
  capt$(nsyn%) = "<nouveau "+str$(nsyn%)+">"
  form nf% : top nf%,t%+d% : left nf%,l%+d% : width nf%,600 : height nf%,400
    caption nf%,capt$(nsyn%)
  hndSE%(nsyn%) = handle(nf%)
  opt$ = "0100000Courier"
  OSE$(nsyn%) = opt$
  FSE$(nsyn%) = "_"
  sub_menu 300+nsyn% : parent 300+nsyn%,300 : caption 300+nsyn%,capt$(nsyn%) : on_click 300+nsyn%,fenetre
  mark_on 300+act%
  SE%(nsyn%) = dll_call2("SyneditCreate",handle(nf%),0)
  res% = dll_call3("SyneditMode",SE%(nsyn%),3,adr(opt$))
  res% = dll_call5("SyneditGeometry",SE%(nsyn%),M1%,M1%,M1%,M1%)
  if nsyn%=1 then timer_on 99
  return
  
' ===== créer une nouvelle fenêtre d'édition et y charger un fichier
ouvrir:
  f$ = file_name$(98)
  if f$="_" then return
  if file_exists(f$)=0
    message "Ouverture impossible"
    return
  end_if
  gosub nouveau
  res% = dll_call2("SyneditOpen",SE%(act%),adr(f$))
  if res%=0
    FSE$(act%) = f$
    f$ = file_extract_name$(f$)
    capt$(act%) = f$
    caption 100+act%,f$
    caption 300+act%,f$
  end_if
  return
  
' ===== créer une nouvelle fenêtre d'édition et y charger une copie de la fenêtre active
copier:
  if act%=0 then return
  org% = act%
  gosub nouveau
  if res%=0
    res% = dll_call2("SyneditCopyObject",org%,act%)
    capt$(nsyn%) = "(copie) "+capt$(org%)
    caption 100+nsyn%,capt$(nsyn%)
    caption 300+nsyn%,capt$(nsyn%)
    FSE$(nsyn%) = "_"
  end_if
  return
  
' ===== fermer la fenêtre active
fermer:
  if act%=0 then return
  res% = dll_call1("SyneditDelete",SE%(act%))
  pause 500
  delete 100+act%
  inactive 300+act%
  caption 300+act%,"<supprimé>"
  SE%(act%) = 0
  while SE%(nsyn%)=0
    delete 300+nsyn%
    nsyn% = nsyn% - 1
    if nsyn%=0 then exit_while
  end_while
  return
  
' =====enregistrer la fenêtre active dans son fichier associé
sauver:
  if act%=0 then return
  if FSE$(act%)="_" then goto sauverdans
  f$ = FSE$(act%)
  res% = dll_call2("SyneditSaveToFile",act%,adr(f$))
  return

' ===== enregistrer la fenêtre active dans un fichier choisi par dialogue
sauverdans:
  if act%=0 then return
  f$ = file_name$(97)
  if f$="_" then return
  if file_exists(f$)=1
    if message_confirmation_yes_no("Ce fichier existe déjà. Voulez-vous le remplacer ?")<>1 then return
  end_if
  res% = dll_call2("SyneditSaveToFile",act%,adr(f$))
  if res%=0
    FSE$(act%) = f$
    f$ = file_extract_name$(f$)
    caption 100+act%,f$
    caption 300+act%,f$
    capt$(act%) = f$
  end_if
  return
  

' ======================== fonctions du menu "Options"

' ===== inverser l'indicateur de présence des numéros de ligne dans la fenêtre active
lignes:
  ln%(act%) = 1 - ln%(act%)    : ' basculer 0<-->1
  res% = dll_call3("SyneditMode",SE%(act%),1,ln%(act%))  : ' signaler à Synedit
  res% = dll_call3("SyneditMode",SE%(act%),2,0)          : ' redonner le focus à Synedit
  OSE$(act%) = str$(ln%(act%)) + mid$(OSE$(act%),2,20)   : ' mémoriser dans les param_tres
  return
  
' ===== charger la fenêtre des options avec les valeurs de la fenêtre active, puis afficher
options:
  if act%=0 then return
  optvalid% = 0
  opt$ = OSE$(act%)
  if left$(opt$,1)="1"
    mark_on 3001
  else
    mark_off 3001
  end_if
  text 3005,mid$(opt$,2,2)
  if mid$(opt$,4,1)="1"
    mark_on 3006
  else
    mark_off 3006
  end_if
  if mid$(opt$,5,1)="1"
    mark_on 3007
  else
    mark_off 3007
  end_if
  if mid$(opt$,6,1)="1"
    mark_on 3008
  else
    mark_off 3008
  end_if
  if mid$(opt$,7,1)="1"
    mark_on 3009
  else
    mark_off 3009
  end_if
  text 3003,mid$(opt$,8,len(opt$))
  show 3000
  inactive 0
  return
  
' ===== sortie de la fenêtre des options par "Abandon"
options_abandon:
  hide 3000
  show 0
  active 0
  to_foreground 0
  return

' =====sortie de la fenêtre des options par "Valider"
options_valider:
  ' construire le paramètre:
  ' xttgisbp...
  ' x=numéros de ligne  tt=taille  g=gras  i=italique  s=souslgné  b=barré  p=police
  optvalid% = 1
  opt$ = str$(checked(3001))+right$("0"+text$(3005),2)+str$(checked(3006))
  opt$ = opt$ + str$(checked(3007))+str$(checked(3008))+str$(checked(3009))
  opt$ = opt$ + text$(3003)
  OSE$(act%) = opt$
  ln%(act%) = checked(3001)
  res% = dll_call3("SyneditMode",SE%(act%),3,adr(opt$))
  hide 3000
  show 0
  active 0
  to_foreground 0
  return
  
  
  
  
  
' ======================== fonctions indépendantes

' ===== ce timer surveille la fenêtre active et ses dimensions
tick:
  timer_off 99
  res% = dll_call0("GetActiveWindow")   : ' récupérer le handle de la fenêtre active
  for i%=1 to nsyn%                     : ' chercher dans la table des fenêtres d"édition
    if res%=hndSE%(i%)                  : ' est-ce qu'on a trouvé la fenêtre
      if i%<>act%                       : ' est-elle différente de la fenêtre active précédente ?
        mark_off 300+act%               : ' alors changer le marquade du menu
        mark_on 300+i%
      end_if
      act% = i%                         : ' mémoriser le numéro de la fenêtre active
      res% = dll_call5("SyneditGeometry",SE%(act%),M1%,M1%,M1%,M1%) : ' ajuster la taille de Synedit à celle de la fenêtre
      exit_for
    end_if
  next i%
  timer_on 99
  return


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

avatar

Nombre de messages : 7991
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mer 20 Aoû 2014 - 5:09

cheers  Génial !!! dès que tu auras fini je reprends mon éditeur.
Une grosse partie des subs de ce dernier vont devenir obsolète... Crying or Very sad
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5855
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: V3.21 du 19/08/2014 - début des fonctions Synedit   Mer 20 Aoû 2014 - 9:11

Excellent avec l'extraction de l'aide, je me demande s'il serait possible avec synedit de gérer un clic sur un mot clé.
Pour pouvoir accéder à l'aide sur un mot en particulier via un clic droit ouvrant le menu contextuel ?
Ca fait parti des choses sympas qui manque à l'éditeur actuel selon moi.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: V3.21 du 19/08/2014 - début des fonctions Synedit   Mer 20 Aoû 2014 - 9:16

Oui, c'est possible. Je vais avoir du mal avec le clic droit, mais je pense que F1 pourrait faire l'affaire... touche paramétrable, bien sûr !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5855
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: V3.21 du 19/08/2014 - début des fonctions Synedit   Mer 20 Aoû 2014 - 10:44

Absolument Klaus, j'ai dit clic droit par ce que sur un mot clé, c'est pratique mais si ce n'est pas gérable directement, F1 fait très bien l'affaire. De toute façon comme pour tous les programmes, il faut mieux mettre la fonction en mode légèrement dégradé que de ne pas la proposer du tout.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: V3.21 du 19/08/2014 - début des fonctions Synedit   

Revenir en haut Aller en bas
 
V3.21 du 19/08/2014 - début des fonctions Synedit
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» BFN vous souhaite une Excellente Année 2014 !!!
» Souhait pour 2014
» Méthode pour copier la nouvelle version 2014.40 sur BaseCamp
» Code compteur 2014 à droite
» F1 2014 : Force India a dévoilé sa nouvelle monoplace la VJM07

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: