passing widgets to functions and back



Good day,

I am developing a frontend for a modeling system and I have a severe problem concerning widget passing.

Basicaly, the problem is simple. I have several notebook pages full of frames(which, in turn, are full of widgets). Each of these pages has n widgets storing different data(mostly spin buttons and entries). Once a button is pressed, the program should take all the data out of those widgets and process it.

Since a callback function only accepts one argument(a gpointer), so I go for a GList. However, all notebook pages(and frames) go into different functions and differenc source files. I tried to pass a GList as an argument to each of those functions and add widgets to it inside, however, when returning to the main function, it states that a glist is empty.

So the question would be - how to pass widgets around all funtions in a mannor that each function would be able to access any widget necessary?

   A small example of the problem is illustrated here:
   #include <gtk/gtk.h>
#include <glib/glist.h>

GtkWidget *a_table(GList *list)
{
 GtkWidget *table;
 GtkWidget *label;

 table = gtk_table_new(1, 1, FALSE);

 label = gtk_label_new("Sample text");
 list = g_list_append(list, label);
 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);

 return table;
}

int main(int argc, char *argv[])
{
 GtkWidget *window;
 GtkWidget *table;
 GtkWidget *label;
 GList *list = NULL;

 gtk_init(&argc, &argv);

 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

 table = a_table(list);
 gtk_container_add(GTK_CONTAINER(window), table);
 gtk_widget_show_all(window);

 label = (GtkWidget *) g_list_nth(list, 0)->data;
 g_print("%s\n", gtk_label_get_text(GTK_LABEL(label)));

 gtk_main();

}

It crashes with a coredump, appearantly since the glist is empty(somehow the function a_table is not capable of modifying the list).

I'm quite new to C and GTK, so this may be very simple problem, but i'm stuck in this place for a very long time. please help.

Respectfully,
Aristidas



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