Re: Trying to add a page to a notebook



Yes, a invisible page are added every time.

Adding this, it works:

gtk_widget_show_all(vbox);
gtk_notebook_remove_page(GTK_NOTEBOOK(notebook), 0);
gtk_notebook_insert_page(GTK_NOTEBOOK(notebook), vbox, label, 0);

Thanks everyone.

2010/2/3 Tristan Van Berkom <tvb gnome org>:
> a.) you dont show the widgets you add in generateButtons
> b.) you dont remove the original page either
>
> maybe it works and adds an invisible page every time ?
>
> And... maybe it will be easier if you hold on to a GtkBox
> child of the first page and reconstruct the contents of
> that instead (so as to be sure not to muck up page indexes).
>
> Cheers,
>        -Tristan
>
> On Tue, Feb 2, 2010 at 9:13 PM, frederico schardong <frede sch gmail com> wrote:
>> Hi,
>>
>> I'm trying to reconstruct the first page of a notebook on a click of a
>> button in second page.
>>
>> The problem is that when click, nothing happen. The function works
>> because the page is constructed when calling from the function main().
>>
>> Code:
>>
>> #include <gtk/gtk.h>
>>
>> void end (GtkWidget*, gpointer);
>> void generateButtons(GtkWidget*, gpointer);
>>
>> int main(int argc, char *argv[])
>> {
>>    gint i;
>>    GtkWidget *window, *label, *button, *notebook;
>>
>>    gtk_init (&argc, &argv);
>>
>>    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
>>    gtk_window_set_title (GTK_WINDOW (window), "Box example");
>>    gtk_widget_set_size_request (window, 300, 100);
>>
>>    g_signal_connect (G_OBJECT(window), "destroy", G_CALLBACK (end), NULL);
>>
>>    label = gtk_label_new("Page Two");
>>
>>    button = gtk_button_new_with_label("Click to reconstruct the page one");
>>
>>    /* Append to pages to the notebook container. */
>>    notebook = gtk_notebook_new();
>>
>>    generateButtons(NULL, (gpointer)notebook);
>>    gtk_notebook_insert_page (GTK_NOTEBOOK (notebook), button, label, 1);
>>
>>    gtk_container_add (GTK_CONTAINER (window), notebook);
>>    gtk_widget_show_all (window);
>>
>>    g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK
>> (generateButtons), (gpointer)notebook);
>>
>>    gtk_main();
>>    return 0;
>> }
>>
>> void generateButtons(GtkWidget *widget, gpointer data)
>> {
>>    GtkWidget *vbox, *button, *button1, *label, *notebook = GTK_WIDGET(data);
>>    vbox = gtk_vbox_new (TRUE, 5);
>>
>>    button = gtk_button_new_with_label ("John");
>>    gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
>>
>>    g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK
>> (gtk_widget_destroy), (gpointer) button);
>>
>>    button1 = gtk_button_new_with_label ("Maria");
>>    gtk_box_pack_start (GTK_BOX (vbox), button1, FALSE, TRUE, 0);
>>
>>    g_signal_connect (G_OBJECT (button1), "clicked", G_CALLBACK
>> (gtk_widget_destroy), (gpointer) button1);
>>
>>    label = gtk_label_new("Page One");
>>
>>    gtk_notebook_insert_page(GTK_NOTEBOOK(notebook), vbox, label, 0);
>> }
>>
>> void end(GtkWidget *window, gpointer data)
>> {
>>    gtk_main_quit();
>> }
>>
>> --
>> Thanks,
>> Frederico Schardong,
>> SOLIS - Open source solutions
>> www.solis.coop.br
>> Linux registered user #500582
>> _______________________________________________
>> gtk-list mailing list
>> gtk-list gnome org
>> http://mail.gnome.org/mailman/listinfo/gtk-list
>>
>



-- 
Thanks,
Frederico Schardong,
SOLIS - Open source solutions
www.solis.coop.br
Linux registered user #500582


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