#include #include typedef struct state { int started; int stopped; char *path; GtkWidget *main_window; GtkWidget *start; GtkWidget *save; GtkWidget *clear; } GdsoState; static void gdso_state_set_path(GdsoState *data, char *path) { g_free(data->path); data->path = g_strdup(path); } void on_browse_clicked(GtkButton *button, gpointer data) { GtkWidget *window1 = data.main_window; GtkWidget *dialog = gtk_file_chooser_dialog_new("Seleziona directory...", GTK_WINDOW(window1), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); gdso_state_set_path(data, filename); gtk_widget_set_sensitive(data.start, TRUE); gtk_widget_set_sensitive(data.save, TRUE); gtk_widget_set_sensitive(data.clear, TRUE); } gtk_widget_destroy(dialog); } int main(int argc, char *argv[]) { GladeXML *main_window; GtkWidget *widget; main_window = glade_xml_new("gdso.glade", NULL, NULL); gtk_init(&argc, &argv); widget = glade_xml_get_widget(main_window, "window1"); g_signal_connect(widget, "delete_event", G_CALLBACK(gtk_main_quit), NULL); static GdsoState *data = g_new0(GdsoState, 1); data->main_window = widget; widget = glade_xml_get_widget(main_window, "clear"); g_signal_connect(widget, "clicked", G_CALLBACK(on_clear_clicked), main_window); gtk_widget_set_sensitive(widget, FALSE); data->clear = widget; widget = glade_xml_get_widget(main_window, "browse"); g_signal_connect(widget, "clicked", G_CALLBACK(on_browse_clicked), data); gtk_main(); return 0; } /////////////////////////////////////////////////////////// cc -o gdso main.c `pkg-config --cflags --libs libglade-2.0` main.c: In function 'on_browse_clicked': main.c:22: error: request for member 'main_window' in something not a structure or union main.c:36: error: request for member 'start' in something not a structure or union main.c:37: error: request for member 'save' in something not a structure or union main.c:38: error: request for member 'clear' in something not a structure or union main.c: In function 'main': main.c:66: error: initializer element is not constant