Привет.
Пытаюсь разобраться как работать с виджетом notebook. Написал код чтобы разобраться.
Программа состоит из окна в котором ноутбук с одной вкладкой и кнопка.
При нажатии на кнопку должна добавляться новая вкладка, но получаю вот это:
(notebook:31479): Gtk-CRITICAL **: gtk_notebook_append_page: assertion `GTK_IS_NOTEBOOK (notebook)' failed
Видимо не передается параметр в коллбек функцию, но как это исправить я не знаю, подскажите, пожалуйста.
А код такой(UI сделал в glade):
#include <gtk/gtk.h>
void
on_window_destroy (GtkObject *object, gpointer user_data)
{
gtk_main_quit();
}
//при срабатывании хендлера вылезает ошибка
//(notebook:31479): Gtk-CRITICAL **: gtk_notebook_append_page: assertion `GTK_IS_NOTEBOOK (notebook)' failed
void on_button_clicked(GtkObject *object, GtkWidget *notebook)
{
gint response;
GtkWidget *page;
GtkBuilder *builder;
builder = gtk_builder_new ();
gtk_builder_add_from_file (builder, "notebook.xml", NULL);
page = GTK_WIDGET (gtk_builder_get_object (builder, "vbox2"));
gtk_builder_connect_signals (builder, NULL);
g_object_unref (G_OBJECT (builder));
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),page,NULL);
g_print ("response %d \n", response);
}
int
main (int argc, char *argv[])
{
GtkBuilder *builder;
GtkWidget *window;
GtkWidget *notebook;
gtk_init (&argc, &argv);
builder = gtk_builder_new ();
gtk_builder_add_from_file (builder, "notebook.xml", NULL);
window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
notebook = GTK_WIDGET (gtk_builder_get_object (builder, "notebook"));
gtk_builder_connect_signals (builder, NULL);
g_object_unref (G_OBJECT (builder));
gtk_widget_show (window);
gtk_main ();
return 0;
}