Re: Close button in GtkNotebook




 
Hi Augusto,

This doesn't use glade but it might help out. You can add a label and button to a box and add it to the 
notebook tab. In the button "clicked" callback you can us the notebook pointer if you need that variable. If 
you want to be able to really customize the look and size of the button you could replace it with a drawing 
area and draw your own button. 

Eric

/*
   gcc -Wall notebook1.c -o notebook1 `pkg-config --cflags --libs gtk+-3.0`
   Tested with GTK3.18 on Ubuntu16.04
*/

#include<gtk/gtk.h>

static void button_clicked(GtkWidget *button, GtkWidget *notebook)
  {
    g_print("Clicked\n");
  }
int main(int argc, char *argv[])
  {
    gtk_init (&argc, &argv);

    GtkWidget *window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "Notebook");
    gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

    GtkWidget *label1=gtk_label_new("page1");
    GtkWidget *label2=gtk_label_new("page2");
    GtkWidget *nb_label1=gtk_label_new("tab1");
    GtkWidget *nb_label2=gtk_label_new("tab2");
 
    GtkWidget *x_label=gtk_label_new(NULL);
    gtk_label_set_markup(GTK_LABEL(x_label), "<span foreground='red'>x</span>");

    GtkWidget *button=gtk_button_new();
    gtk_container_add(GTK_CONTAINER(button), x_label); 

    GtkWidget *box=gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 4);
    gtk_box_pack_start(GTK_BOX(box), nb_label2, TRUE, TRUE, 0);
    gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 0);
    gtk_widget_show_all(box);

    GtkWidget *notebook=gtk_notebook_new();
    gtk_notebook_append_page(GTK_NOTEBOOK(notebook), label1, nb_label1);
    gtk_notebook_append_page(GTK_NOTEBOOK(notebook), label2, box);

    g_signal_connect(button, "clicked", G_CALLBACK(button_clicked), notebook);
 
    gtk_container_add(GTK_CONTAINER(window), notebook);

    gtk_widget_show_all(window);

    gtk_main();

    return 0;
  }  




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]