All pastes #389044 Raw Edit

Something

public text v1 · immutable
·published 2007-03-10 14:03 UTC
rendered paste body
#include <gtk/gtk.h>
#include <glade/glade.h>

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