Bonjour,
Je cherches à changer la taille de la police de caractère d'une partie d'un gtk_text_buffer.
A cette fin, j'ai crée une combobox me servant de menu de selection, je crée des valeurs dedans via une boucle :
voici ma fonction routine_taille_carac appelée par la combobox :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 combobox=gtk_combo_box_new_text(); gtk_container_add(GTK_CONTAINER(barre_outil),GTK_WIDGET(combobox)); for (boucle=6;boucle<36;boucle=boucle+2) { sprintf(chaine,"%d",boucle); printf("%s\n",chaine); gtk_combo_box_append_text(GTK_COMBO_BOX(combobox),chaine); } gtk_combo_box_set_active(GTK_COMBO_BOX(combobox),1); g_signal_connect(G_OBJECT(combobox),"changed",G_CALLBACK(routine_taille_carac),fenetre);
Ce code fonctionne en enlevant la boucle for. La contrainte étant que si je passe le texte de la taille 8 à 10, cela fonctionne, de 10 à x aussi mais impossible de revenir sur une taille ayant déjà été utilisé. ( probablement à cause de la fonction create_tag sur un tag déjà existant )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
31
32
33
34
35 int routine_taille_carac() { int taille; int test_selection; GtkTextIter start,end; //GtkTextTagTable tag_table; char nom_tag_2[200]; printf("Routine taille carac selectionnée\n"); taille=gtk_combo_box_get_active(GTK_COMBO_BOX(combobox)); printf("Valeur var taille %d\n",taille); taille=(taille*2)+6; printf("Valeur selectionnée : %d\n",taille); test_selection=gtk_text_buffer_get_selection_bounds(buffer,&start,&end); if (test_selection==TRUE) { sprintf(chaine,"Arial,%d",taille); printf("chaine tag : %s\n",chaine); sprintf(nom_tag,"texte_agrandissement%d",taille); for (boucle=6;boucle<36;boucle=boucle+2) { // sprintf(chaine,"%d",boucle); // printf("%s\n",chaine); // sprintf("",nom_tag2); sprintf(nom_tag_2,"test_agrandissement%d",boucle); printf("tag Ã* supprimer : %s\n",nom_tag_2); gtk_text_buffer_remove_tag(buffer,GTK_TEXT_TAG(nom_tag_2),&start,&end); printf("Suppression ok\n"); } printf("---\n"); gtk_text_buffer_create_tag(buffer,nom_tag,"font",chaine,NULL); gtk_text_buffer_remove_tag(buffer,nom_tag,&start,&end); gtk_text_buffer_apply_tag_by_name(buffer,nom_tag,&start,&end); gtk_text_buffer_set_modified(buffer,TRUE);
Pour m'en sortir, j'ai ajouté la boucle for servant à supprimer tous les tags de taille de police de la même façon utilisée pour la création de la combobox., Le tag qui'il me faut est crée ensuite.
Cela déclenche une erreur de segmentation. Je suppose qu'elle est due à la tentative de destruction d'un tag inconnu.
Je sais que ma méthode est merdique, mais j'ai pas réussi à mieux pour le moment.
Merci pour vos lumières.
Partager