From 6706eab0e92f9efde29a00b03e5cff2aa496dcf2 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Tue, 22 Feb 2011 17:46:46 +0100 Subject: gui-wizard-gtk: fix the problem with "missing" reporter checkboxes Signed-off-by: Denys Vlasenko --- src/gui-wizard-gtk/main.c | 9 ++++++--- src/gui-wizard-gtk/wizard.c | 38 +++++++++++++++++++++----------------- src/gui-wizard-gtk/wizard.h | 3 ++- 3 files changed, 29 insertions(+), 21 deletions(-) diff --git a/src/gui-wizard-gtk/main.c b/src/gui-wizard-gtk/main.c index 5f062b41..aabd84d6 100644 --- a/src/gui-wizard-gtk/main.c +++ b/src/gui-wizard-gtk/main.c @@ -130,6 +130,11 @@ VERB2 log("g_report_events:'%s'", g_report_events); } add_event_buttons(g_box_reporters, g_report_events, /*callback:*/ NULL, /*radio:*/ false); + + /* We can't just do gtk_widget_show_all once in main: + * We created new widgets (buttons). Need to make them visible. + */ + gtk_widget_show_all(GTK_WIDGET(g_assistant)); } int main(int argc, char **argv) @@ -166,12 +171,10 @@ int main(int argc, char **argv) g_dump_dir_name = argv[0]; - GtkWidget *assistant = create_assistant(); + create_assistant(); reload_dump_dir(); - gtk_widget_show_all(assistant); - /* Enter main loop */ gtk_main(); diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c index 63b63757..a8a39a16 100644 --- a/src/gui-wizard-gtk/wizard.c +++ b/src/gui-wizard-gtk/wizard.c @@ -5,6 +5,7 @@ #define DEFAULT_WIDTH 800 #define DEFAULT_HEIGHT 500 +GtkAssistant *g_assistant; GtkLabel *g_lbl_cd_reason; GtkLabel *g_lbl_analyze_log; GtkBox *g_box_analyzers; @@ -14,7 +15,6 @@ GtkTextView *g_tv_backtrace; GtkTreeView *g_tv_details; GtkListStore *g_ls_details; -static GtkWidget *assistant; static GtkBuilder *builder; /* THE PAGE FLOW @@ -143,7 +143,7 @@ static gboolean consume_cmd_output(GIOChannel *source, GIOCondition condition, g free(msg); reload_dump_dir(); /* Unfreeze assistant */ - gtk_assistant_set_page_complete(GTK_ASSISTANT(assistant), + gtk_assistant_set_page_complete(g_assistant, pages[PAGENO_ANALYZE_PROGRESS].page_widget, true); return FALSE; /* "please remove this event" */ } @@ -201,7 +201,7 @@ static void next_page(GtkAssistant *assistant, gpointer user_data) ); gtk_label_set_text(g_lbl_analyze_log, _("Analyzing...")); /* Freeze assistant so it can't move away from the page until analyzing is done */ - gtk_assistant_set_page_complete(GTK_ASSISTANT(assistant), + gtk_assistant_set_page_complete(g_assistant, pages[PAGENO_ANALYZE_PROGRESS].page_widget, false); } } @@ -274,12 +274,12 @@ static void add_pages() pages[i].page_widget = page; - gtk_assistant_append_page(GTK_ASSISTANT(assistant), page); + gtk_assistant_append_page(g_assistant, page); //FIXME: shouldn't be complete until something is selected! - gtk_assistant_set_page_complete(GTK_ASSISTANT(assistant), page, true); + gtk_assistant_set_page_complete(g_assistant, page, true); - gtk_assistant_set_page_title(GTK_ASSISTANT(assistant), page, pages[i].title); - gtk_assistant_set_page_type(GTK_ASSISTANT(assistant), page, pages[i].type); + gtk_assistant_set_page_title(g_assistant, page, pages[i].title); + gtk_assistant_set_page_type(g_assistant, page, pages[i].type); VERB1 log("added page: %s", page_names[i]); } @@ -294,23 +294,27 @@ static void add_pages() g_tv_details = GTK_TREE_VIEW(gtk_builder_get_object(builder, "tv_details")); } -GtkWidget *create_assistant() +void create_assistant() { - assistant = gtk_assistant_new(); - gtk_window_set_default_size(GTK_WINDOW(assistant), DEFAULT_WIDTH, DEFAULT_HEIGHT); - gtk_window_set_title(GTK_WINDOW(assistant), g_dump_dir_name); - gtk_window_set_icon_name(GTK_WINDOW(assistant), "abrt"); + g_assistant = GTK_ASSISTANT(gtk_assistant_new()); - g_signal_connect(G_OBJECT(assistant), "cancel", G_CALLBACK(gtk_main_quit), NULL); - g_signal_connect(G_OBJECT(assistant), "close", G_CALLBACK(gtk_main_quit), NULL); - g_signal_connect(G_OBJECT(assistant), "apply", G_CALLBACK(next_page), NULL); + GtkWindow *wnd_assistant = GTK_WINDOW(g_assistant); + gtk_window_set_default_size(wnd_assistant, DEFAULT_WIDTH, DEFAULT_HEIGHT); + gtk_window_set_title(wnd_assistant, g_dump_dir_name); + gtk_window_set_icon_name(wnd_assistant, "abrt"); + + GObject *obj_assistant = G_OBJECT(g_assistant); + g_signal_connect(obj_assistant, "cancel", G_CALLBACK(gtk_main_quit), NULL); + g_signal_connect(obj_assistant, "close", G_CALLBACK(gtk_main_quit), NULL); + g_signal_connect(obj_assistant, "apply", G_CALLBACK(next_page), NULL); builder = gtk_builder_new(); + add_pages(); + create_details_treeview(); g_ls_details = gtk_list_store_new(DETAIL_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); gtk_tree_view_set_model(g_tv_details, GTK_TREE_MODEL(g_ls_details)); - gtk_builder_connect_signals(builder, NULL); - return assistant; + gtk_builder_connect_signals(builder, NULL); } diff --git a/src/gui-wizard-gtk/wizard.h b/src/gui-wizard-gtk/wizard.h index af134f64..06916198 100644 --- a/src/gui-wizard-gtk/wizard.h +++ b/src/gui-wizard-gtk/wizard.h @@ -8,6 +8,7 @@ enum { PAGENO_REPORT, PAGENO_REPORT_PROGRESS, }; +extern GtkAssistant *g_assistant; extern GtkLabel *g_lbl_cd_reason; extern GtkLabel *g_lbl_analyze_log; extern GtkBox *g_box_analyzers; @@ -22,7 +23,7 @@ enum }; extern GtkTreeView *g_tv_details; extern GtkListStore *g_ls_details; -GtkWidget *create_assistant(void); +void create_assistant(void); extern char *g_glade_file; -- cgit