Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Compilateur FBPano | |
|
+11Pedro Ouf_ca_passe RMont Yannick Klaus papydall pascal10000 Minibug Jicehel jpcr jean_debord 15 participants | |
Auteur | Message |
---|
jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Compilateur FBPano Dim 29 Sep 2019 - 16:53 | |
| Ah, c'est l'exemple ex81 que tu veux modifier ! Je croyais que c'était START_FBPANO ... Dans ce cas, le problème vient de la variable font. Il y a déjà une constante FONT donc il faut un autre identificateur, p. ex. fontname Ceci explique le message d'erreur de FreeBASIC : - Code:
-
C:\FBPano\exemples\FLTK\fb_ex81a.bas(44) error 4: Duplicated definition, font in 'dim shared font() as string
Il faut renommer dans la déclaration et aussi dans le code de création de la fenêtre fmPolice. Il faudra aussi ajouter : - un bouton dans la fenêtre principale pour afficher la fenêtre fmPolice - un autre bouton dans la fenêtre fmPolice pour valider la sélection. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Compilateur FBPano Dim 29 Sep 2019 - 17:41 | |
| Ah mais bien sûr ! Maintenant que tu me le dis ça me saute aux yeux... J'aurai du y penser... Je ne me suis pas encore assez familiarisé avec le code et la syntaxe. Après modification, tout fonctionne correctement. Encore merci Jean ! Dans un premier temps, la modification de l'éditeur me permet de me 'faire la main' sur FBPano, et ensuite pourquoi ne pas en faire un éditeur Multi pour FBPano et Panoramic... Avec le mot clé KEYWORDS je pense que cela doit être assez simple à mettre en place. Bon je n'en suis pas encore là pour le moment. Encore merci. | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Compilateur FBPano Lun 30 Sep 2019 - 10:57 | |
| Voici une version modifiée avec : - transformation de la constante FONT en une variable font% puisque la police peut être changée - noms de variables modifiés en fontnum%() et fontname$() - ajout d'une option "Police" dans le sous-menu "Options" et du sous-programme correspondant choix_police - ajout d'un bouton "valider" dans la fenêtre des polices et du sous-programme correspondant valider_police - Code:
-
' ********************************************************************** ' Editeur FBPano, d'apres le programme de demonstration de FLTK : ' www.fltk.org/doc-1.3/editor.html ' **********************************************************************
const FORM_WIDTH = 850 ' 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_WHITE ' Couleur du texte const BKG_COLOR = FL_DARK_BLUE ' Couleur du fond const LNUM_COLOR = FL_RED ' 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 font% = FL_COURIER ' Police selectionnee dim i% ' Variable de boucle
enum GUI fmMain menu1, editor1, buffer1 fmReplace edFind, edReplace, btRepAll, btRepNext, btCancel fmPolice lsPolice, btPolice end_enum
form fmMain, 100, 100, 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 fmPolice, 200, 200, 380, 420, "Liste des polices"
form_begin fmPolice list lsPolice, 5, 5, 370, 370 button btPolice, 5, 385, 370, 30, "Valider" nf = font_list(fontnum(), fontname()) for i = 0 to nf - 1 list_item_add lsPolice, "@S20@F" & fontnum(i) & "@." & fontname(i) next i list_item_select lsPolice, 1 form_end fmPolice
on_click btRepAll, remplacer_tout on_click btRepNext, remplacer_suivant on_click btCancel, annuler_remplacer on_click btPolice, valider_police
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, "&Edition/Co&uper ", "Ctrl+X", , couper menu_item_add menu1, "&Edition/&Copier ", "Ctrl+C", , copier menu_item_add menu1, "&Edition/C&oller ", "Ctrl+V", , coller
menu_item_add menu1, "&Recherche/&Rechercher ", "Ctrl+F", , rechercher menu_item_add menu1, "&Recherche/Rechercher le &suivant ", "F3", , rechercher_suivant menu_item_add menu1, "&Recherche/R&emplacer ", "Ctrl+R", , remplacer
menu_item_add menu1, "&Options/&Wrap ", , FL_MENU_TOGGLE, wrap menu_item_add menu1, "&Options/&Num. lignes ", , FL_MENU_TOGGLE + FL_MENU_VALUE, numlines menu_item_add menu1, "&Options/&Police ", "Ctrl+P", , choix_police
color_fl editor1, BKG_COLOR font_text editor1, font, FONT_SIZE color_text_fl editor1, FONT_COLOR color_cursor_fl editor1, FONT_COLOR color_numlines_fl editor1, LNUM_COLOR editor_numlines editor1, LNUM_WIDTH, font, FONT_SIZE
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 wrap editor_wrap editor1, menu_item_checked(menu1, 17) end_sub
sub numlines dim n% if menu_item_checked(menu1, 18) then n = LNUM_WIDTH else n = 0 editor_numlines editor1, n, , FONT_SIZE end_sub
sub choix_police show fmPolice end sub
sub valider_police dim f$ ' Lecture du nom complet de la police, incluant les caracteres de controle ' Exemple : @S20@F0@.Arial f = list_item_read(lsPolice, list_item_index(lsPolice))
' Ici on isole le nom de la police ' Le point marque la fin des caracteres de controle ("@S..@.") f = mid(f, instr(f, ".") + 1)
' Puis on determine son numero font = num_font(f)
font_text editor1, font, FONT_SIZE editor_numlines editor1, LNUM_WIDTH, font, FONT_SIZE hide fmPolice redraw end sub
Note : Quand on utilise les caractères de contrôle "@..." pour afficher un élément d'une liste, FLTK les ajoute au nom de l'élément ; pour récupérer les noms des polices j'ai donc ajouté un point juste avant le nom : - Code:
-
list_item_add lsPolice, "@S20@F" & fontnum(i) & "@." & fontname(i)
Etant précédé du caractère @ ce point n'apparaît pas dans la liste mais il permet d'isoler le nom de la police dans le sous-programme valider_police. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Compilateur FBPano Lun 30 Sep 2019 - 17:54 | |
| Merci pour tes conseils Jean ! J'avais déjà réussi l'affichage de la liste suite à ton message précédent. Mais effectivement quelques infos supplémentaires ne sont pas de trop... Je me partage actuellement entre PanExpress et la reprise de l’éditeur FBPano. 2 approches différentes mais qui au bout du compte pourraient bien se rencontrer. Affaire à suivre... | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Compilateur FBPano Mar 15 Oct 2019 - 11:27 | |
| Ce petit programme vous permettra de choisir un type de boîte pour vos objets. En même temps, c'est une bonne démonstration du TREEVIEW. - Code:
-
dim i%, k%, font%, cap$
font = num_font("Consolas") if font <= 0 then font = FL_COURIER
form 0, 100, 100, 380, 400, "Choix du type de boîte"
treeview 1, 0, 0, 380, 400
font_text 1, font, 15 tree_item_spacing 1, 10 tree_widget_margin 1, 10 tree_connector_style 1, FL_TREE_CONNECTOR_NONE
on_click 1, click
for i = 0 to 55 k = i + 2 cap = box_type_str(i) cap = cap + space(25 - len(cap)) alpha k, 0, 0, 75, 30, "Box", , i color_fl k, FL_GREEN tree_item_add 1, cap, k next i
tree_item_select 1, 1
start 0
sub click if tree_reason(1) = FL_TREE_REASON_SELECTED then ? tree_item_read(1, tree_item_index(1)) end_if end_sub
| |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Compilateur FBPano Mer 16 Oct 2019 - 8:52 | |
| Même chose, mais pour les paramètres d'alignement : - Code:
-
data 12
data "FL_ALIGN_CENTER ", 0 data "FL_ALIGN_TOP ", 1 data "FL_ALIGN_BOTTOM ", 2 data "FL_ALIGN_CLIP ", 64 data "FL_ALIGN_WRAP ", 128 data "FL_ALIGN_LEFT ", 4 data "FL_ALIGN_RIGHT ", 8 data "FL_ALIGN_LEFT + FL_ALIGN_INSIDE ", 4 + 16 data "FL_ALIGN_RIGHT + FL_ALIGN_INSIDE", 8 + 16 data "FL_ALIGN_LEFT_TOP ", 7 data "FL_ALIGN_RIGHT_TOP ", 11 data "FL_ALIGN_LEFT_BOTTOM ", 13 data "FL_ALIGN_RIGHT_BOTTOM ", 14
dim np%, al%(), cap$(), i%, k%, font%
np = get_data_align(al(), cap())
font = num_font("Consolas") if font <= 0 then font = FL_SCREEN
form 0, 100, 100, 600, 400, "Position du Label"
treeview 1, 0, 0, 600, 400
font_text 1, font, 15 tree_item_spacing 1, 20 tree_widget_margin 1, 75 tree_connector_style 1, FL_TREE_CONNECTOR_NONE
on_click 1, click
for i = 0 to np k = i + 3 button k, 0, 0, 125, 40, "Bouton", al(i)
select i case 3 : caption k, "Bouton (texte coupé)" ' CLIP case 4 : caption k, "Bouton (texte sur plusieurs lignes)" ' WRAP end_select
tree_item_add 1, cap(i), k next i
tree_item_select 1, 1
start 0
sub click if tree_reason(1) = FL_TREE_REASON_SELECTED then ? tree_item_read(1, tree_item_index(1)) end_if end_sub
function get_data_align% (al%(), cap$()) ' Lecture des paramètres d'alignement (numéros, intitulés) ' La fonction retourne le nombre de paramètres - 1
dim np%, i%
read np redim cap$(np), al%(np) for i = 0 to np read cap(i), al(i) next i
get_data_align = np end_function
| |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Compilateur FBPano Mer 16 Oct 2019 - 17:13 | |
| Bonjour Jean ! Oui c'est vrai que tous ces paramètres sont vraiment pratiques. | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Compilateur FBPano Jeu 17 Oct 2019 - 9:04 | |
| Merci Minibug En voici un autre, cette fois pour choisir la position du texte par rapport à une image : - Code:
-
data 4
data "FL_ALIGN_IMAGE_OVER_TEXT ", 0 data "FL_ALIGN_TEXT_OVER_IMAGE ", 32 data "FL_ALIGN_IMAGE_NEXT_TO_TEXT", 256 data "FL_ALIGN_TEXT_NEXT_TO_IMAGE", 288 data "FL_ALIGN_IMAGE_BACKDROP ", 512
dim np%, al%(), cap$(), i%, k%, font%
np = get_data_align_img(al(), cap())
font = num_font("Consolas") if font <= 0 then font = FL_COURIER
fb_img_begin 0, 24, 24 fb_pen_color &hFF00FF00 fb_pie 12, 12, 10 fb_img_end
form 0, 100, 100, 370, 310, "Positions Label et Image" treeview 1, 0, 0, 370, 310
font_text 1, font, 15 tree_item_spacing 1, 10 tree_widget_margin 1, 15 tree_connector_style 1, FL_TREE_CONNECTOR_NONE
on_click 1, click
for i = 0 to np k = i + 3 button k, 0, 0, 100, 50, "Bouton" fb_set_img k, 0, al(i) tree_item_add 1, cap(i), k next i
tree_item_select 1, 1
start 0
sub click if tree_reason(1) = FL_TREE_REASON_SELECTED then ? tree_item_read(1, tree_item_index(1)) end_if end_sub
function get_data_align_img% (al%(), cap$()) ' Lecture des paramètres d'alignement texte/image (numéros, intitulés) ' La fonction retourne le nombre de paramètres - 1
dim np%, i%
read np redim cap$(np), al%(np) for i = 0 to np read cap(i), al(i) next i
get_data_align_img = np end_function
| |
| | | Contenu sponsorisé
| Sujet: Re: Compilateur FBPano | |
| |
| | | | Compilateur FBPano | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |