| 12
 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