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
|
/// Fonction d'ajout d'un autre onglet
void add_notebook(GtkWidget *widget, Fenetre *window)
{
if(window->doc->ouvert==0)
{
window->doc->tous = NULL;
}
onglet *nouveau = NULL;
onglet * onglet_precedent = NULL;
nouveau = malloc(sizeof(onglet));
nouveau->nom = NULL;
nouveau->sauve = TRUE;
gchar *nom_onglet = NULL;
/// Création d'une box pour contenir le titre de l'onglet et le bouton de fermeture
nouveau->onglet_box = gtk_hbox_new (FALSE, 0);
nom_onglet = g_strdup_printf("Nouveau Document %d",window->doc->ouvert);
nouveau->label = gtk_label_new (nom_onglet);
gtk_box_pack_start (GTK_BOX (nouveau->onglet_box), nouveau->label, TRUE, TRUE, 0);
nouveau->bouton = gtk_button_new ();
nouveau->image = gtk_image_new_from_stock (GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU);
gtk_button_set_image (GTK_BUTTON (nouveau->bouton), nouveau->image);
gtk_button_set_relief (GTK_BUTTON (nouveau->bouton), GTK_RELIEF_NONE);
gtk_box_pack_start (GTK_BOX (nouveau->onglet_box), nouveau->bouton, TRUE, TRUE, 0);
/// Ajout du nouvel onglet dans la liste doublement chainée
window->doc->tous = g_list_append(window->doc->tous, nouveau);
nouveau->fenetre_scrollable = gtk_scrolled_window_new (NULL, NULL);
nouveau->zone_texte = GTK_TEXT_VIEW (gtk_text_view_new ());
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (nouveau->fenetre_scrollable), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
nouveau->buffer = gtk_text_view_get_buffer (nouveau->zone_texte);
gtk_container_add (GTK_CONTAINER (nouveau->fenetre_scrollable), GTK_WIDGET (nouveau->zone_texte));
nouveau->label = gtk_label_new("Nouveau document");
window->doc->index = gtk_notebook_append_page (window->doc->onglet, nouveau->fenetre_scrollable, nouveau->onglet_box);
gtk_widget_show_all(nouveau->onglet_box);
gtk_widget_show_all(GTK_WIDGET(window->doc->onglet));
gtk_notebook_set_current_page (window->doc->onglet, window->doc->index);
/// Positionnement sur l'ancien onglet pour cacher le bouton de fermeture
onglet_precedent = g_list_nth_data(window->doc->tous,window->doc->precedent);
if(onglet_precedent != NULL)
{
gtk_widget_hide(onglet_precedent->bouton);
}
window->doc->precedent = window->doc->index;
window->doc->ouvert++;
g_signal_connect (G_OBJECT (nouveau->bouton), "clicked", G_CALLBACK (fermer_onglet), window);
g_signal_connect (G_OBJECT (window->doc->onglet), "switch-page", G_CALLBACK(switch_onglet), window);
} |
Partager