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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| void rediger(GtkWidget *pWindow, gpointer data)
{
Inf* in = data;
GString* titre;
in->txtview = gtk_text_view_new();
/*Lors du 1er appel à la fonction. il n'y a qu'un seul GtkTextView, et pas de notebook*/
if(!GTK_IS_WIDGET(in->winr))
{
in->vboxr3 = gtk_vbox_new(FALSE, 8);
in->vboxr1 = gtk_vbox_new(FALSE, 8);
in->winr = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_modify_bg (in->winr, GTK_STATE_NORMAL, &(in->color));
gtk_window_set_title(GTK_WINDOW(in->winr), "Rediger un message");
gtk_window_set_default_size(GTK_WINDOW(in->winr),300,600);
gtk_window_set_position(GTK_WINDOW(in->winr), GTK_WIN_POS_CENTER);
gtk_container_set_border_width (GTK_CONTAINER (in->winr), 8);
gtk_window_set_transient_for(GTK_WINDOW(in->winr),GTK_WINDOW(in->wina));
gtk_window_set_destroy_with_parent(GTK_WINDOW(in->winr),TRUE);
gtk_container_add(GTK_CONTAINER(in->winr), in->vboxr1);
in->narticles = 1;
g_object_ref(in->vboxr3);
}
/*Au 2èmer appel à la fonction. il faut un 2ème GtkTextView, et on crée un notebook*/
else if(!GTK_IS_WIDGET(in->notebook))
{
gtk_container_remove(GTK_CONTAINER(in->vboxr1),in->vboxr3);
in->liste = in->liste->next;
in->notebook = gtk_notebook_new();
gtk_notebook_set_tab_pos(GTK_NOTEBOOK(in->notebook), GTK_POS_BOTTOM);
gtk_notebook_set_scrollable(GTK_NOTEBOOK(in->notebook), TRUE);
gtk_container_add(GTK_CONTAINER(in->vboxr1), in->notebook);
gtk_notebook_append_page(GTK_NOTEBOOK(in->notebook),in->vboxr3, gtk_label_new("Article 1"));
in->vboxr3 = gtk_vbox_new(FALSE, 8);
gtk_notebook_append_page(GTK_NOTEBOOK(in->notebook),in->vboxr3, gtk_label_new("Article 2"));
in->narticles = 2;
}
else
{
in->liste = in->liste->next;
titre = g_string_new(NULL);
g_string_sprintf(titre,"Article %d",in->narticles+1);
in->narticles++;
in->vboxr3 = gtk_vbox_new(FALSE, 8);
gtk_notebook_append_page(GTK_NOTEBOOK(in->notebook),in->vboxr3, gtk_label_new(titre->str));
g_string_free(titre, TRUE);
}
in->liste = g_list_append(in->liste, in->txtview);
if(in->narticles==1)
{
...
//On créé la frame "Outils et tout ce qu'il y a dedans"
...
}
in->hboxr2 = gtk_hbox_new(TRUE, 20);
in->boutonrr = gtk_button_new_with_label("Annuler");
g_signal_connect(G_OBJECT(in->boutonrr), "clicked", G_CALLBACK(annuler_article), data);
in->boutonro = gtk_button_new_with_label("Envoyer");
gtk_box_pack_end(GTK_BOX(in->vboxr3), in->hboxr2, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(in->hboxr2), in->boutonro, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(in->hboxr2), in->boutonrr, FALSE, FALSE, 0);
in->frameu = gtk_frame_new("Article");
in->entree_t = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(in->entree_t),"Titre");
gtk_frame_set_shadow_type(GTK_FRAME(in->frameu), GTK_SHADOW_ETCHED_OUT);
in->defile = gtk_scrolled_window_new(NULL, NULL);
gtk_box_pack_start(GTK_BOX(in->vboxr3), in->entree_t, FALSE, TRUE, 5);
gtk_box_pack_start(GTK_BOX(in->vboxr3), in->frameu, TRUE, TRUE, 5);
gtk_container_add(GTK_CONTAINER(in->frameu), in->defile);
//Ici, on utilise le dernier GtkTextView créé, d'où l'interet de faire in->liste =
//in->liste->next plus haut. Sinon il essaye d'ajouter le GtkTextView du
//premier appel, et non pas celui que j'viens de creer au début cet appel-ci...
gtk_container_add(GTK_CONTAINER(in->defile), in->liste->data);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(in->defile),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
gtk_widget_show_all(in->winr);
} |
Partager