summaryrefslogtreecommitdiffstats
path: root/src/gui-wizard-gtk
diff options
context:
space:
mode:
authorDenys Vlasenko <dvlasenk@redhat.com>2011-02-24 13:55:15 +0100
committerDenys Vlasenko <dvlasenk@redhat.com>2011-02-24 13:55:15 +0100
commit1f73de4e422ffe046e3faf0e4fb7f5523a14ff2d (patch)
tree8c586c461d48d9407aec470c42620dd65a84b05d /src/gui-wizard-gtk
parente5cc6aec0dcdbb1ad1843bf9dfa7b853c80ed337 (diff)
downloadabrt-1f73de4e422ffe046e3faf0e4fb7f5523a14ff2d.tar.gz
abrt-1f73de4e422ffe046e3faf0e4fb7f5523a14ff2d.tar.xz
abrt-1f73de4e422ffe046e3faf0e4fb7f5523a14ff2d.zip
gui-wizard-gtk: make [Refresh] button work
Looks for reanalyze_FOO events, enables them on "Select analyzer" page and sends user go to that page to pick the [re]analyzer to run. Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Diffstat (limited to 'src/gui-wizard-gtk')
-rw-r--r--src/gui-wizard-gtk/Makefile.am16
-rw-r--r--src/gui-wizard-gtk/main.c7
-rw-r--r--src/gui-wizard-gtk/wizard.c44
-rw-r--r--src/gui-wizard-gtk/wizard.glade9
-rw-r--r--src/gui-wizard-gtk/wizard.h1
5 files changed, 52 insertions, 25 deletions
diff --git a/src/gui-wizard-gtk/Makefile.am b/src/gui-wizard-gtk/Makefile.am
index 1438c915..90b74586 100644
--- a/src/gui-wizard-gtk/Makefile.am
+++ b/src/gui-wizard-gtk/Makefile.am
@@ -6,8 +6,9 @@ bug_reporting_wizard_SOURCES = \
main.c \
wizard_glade.c
-# -Wl,--export-dynamic and lgmodule-2.0
-# is required for gtk_builder_connect_signals() to work correctly
+# Required for gtk_builder_connect_signals() to work correctly:
+# -g
+# -Wl,--export-dynamic
bug_reporting_wizard_CFLAGS = \
-I$(srcdir)/../include/report -I$(srcdir)/../include \
-I$(srcdir)/../lib \
@@ -19,20 +20,21 @@ bug_reporting_wizard_CFLAGS = \
-DPLUGINS_LIB_DIR=\"$(PLUGINS_LIB_DIR)\" \
-DPLUGINS_CONF_DIR=\"$(PLUGINS_CONF_DIR)\" \
-DICON_DIR=\"${datadir}/abrt/icons/hicolor/48x48/status\" \
+ $(GLIB_CFLAGS) \
$(GTK_CFLAGS) \
-D_GNU_SOURCE \
- -g \
- -Wl,--export-dynamic \
-Wall -Werror
+# Required for gtk_builder_connect_signals() to work correctly:
+# -lgmodule-2.0
+# -lgthread-2.0
bug_reporting_wizard_LDADD = \
../lib/libreport.la \
../lib/libabrt_dbus.la \
- -lglib-2.0 \
- -lgthread-2.0 \
- -lgmodule-2.0 \
+ $(GLIB_LIBS) \
$(GTK_LIBS)
+
# we don't want to install it, just make it part of tarball
# created by make dist
GLADE_FILES = wizard.glade
diff --git a/src/gui-wizard-gtk/main.c b/src/gui-wizard-gtk/main.c
index 759390b6..1d35da82 100644
--- a/src/gui-wizard-gtk/main.c
+++ b/src/gui-wizard-gtk/main.c
@@ -9,6 +9,7 @@ char *g_glade_file = NULL;
char *g_dump_dir_name = NULL;
char *g_analyze_label_selected = NULL;
char *g_analyze_events = NULL;
+char *g_reanalyze_events = NULL;
char *g_report_events = NULL;
crash_data_t *g_cd;
@@ -17,14 +18,16 @@ void reload_crash_data_from_dump_dir(void)
{
free_crash_data(g_cd);
free(g_analyze_events);
+ free(g_reanalyze_events);
free(g_report_events);
struct dump_dir *dd = dd_opendir(g_dump_dir_name, 0);
if (!dd)
xfunc_die(); /* dd_opendir already logged error msg */
g_cd = create_crash_data_from_dump_dir(dd);
- g_analyze_events = list_possible_events(dd, g_dump_dir_name, "analyze");
- g_report_events = list_possible_events(dd, g_dump_dir_name, "report");
+ g_analyze_events = list_possible_events(dd, NULL, "analyze");
+ g_reanalyze_events = list_possible_events(dd, NULL, "reanalyze");
+ g_report_events = list_possible_events(dd, NULL, "report");
dd_close(dd);
}
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
index 6598301a..73f093b2 100644
--- a/src/gui-wizard-gtk/wizard.c
+++ b/src/gui-wizard-gtk/wizard.c
@@ -20,7 +20,8 @@ GtkTreeView *g_tv_details;
GtkListStore *g_ls_details;
GtkWidget *g_widget_warnings_area;
GtkBox *g_box_warning_labels;
-GtkToggleButton * g_tb_approve_bt;
+GtkToggleButton *g_tb_approve_bt;
+GtkButton *g_btn_refresh;
static GtkBuilder *builder;
@@ -104,12 +105,6 @@ static void remove_child_widget(GtkWidget *widget, gpointer container)
}
-void on_b_refresh_clicked(GtkButton *button)
-{
- g_print("Refresh clicked!\n");
-}
-
-
/* update_gui_state_from_crash_data */
static void analyze_rb_was_toggled(GtkButton *button, gpointer user_data)
@@ -237,6 +232,11 @@ void update_gui_state_from_crash_data(void)
* We created new widgets (buttons). Need to make them visible.
*/
gtk_widget_show_all(GTK_WIDGET(g_assistant));
+
+ if (g_reanalyze_events[0])
+ gtk_widget_show(GTK_WIDGET(g_btn_refresh));
+ else
+ gtk_widget_hide(GTK_WIDGET(g_btn_refresh));
}
@@ -411,12 +411,13 @@ static void add_warning(const char *warning)
{
char *label_str = xasprintf("• %s", warning);
GtkWidget *warning_lbl = gtk_label_new(label_str);
+ /* should be safe to free it, gtk calls strdup() to copy it */
+ free(label_str);
+
gtk_misc_set_alignment(GTK_MISC(warning_lbl), 0.0, 0.0);
gtk_label_set_justify(GTK_LABEL(warning_lbl), GTK_JUSTIFY_LEFT);
gtk_box_pack_start(g_box_warning_labels, warning_lbl, false, false, 0);
gtk_widget_show(warning_lbl);
- /* should be safe to free it, gtk calls strdup() to copy it */
- free(label_str);
}
static void check_backtrace_and_allow_send(void)
@@ -475,6 +476,21 @@ static void on_bt_approve_toggle(GtkToggleButton *togglebutton, gpointer user_da
}
+/* Refresh button handling */
+
+void on_btn_refresh_clicked(GtkButton *button)
+{
+ g_analyze_events = append_to_malloced_string(g_analyze_events, g_reanalyze_events);
+ if (g_analyze_events[0])
+ {
+ /* Refresh GUI so that we see new analyze+reanalyze buttons */
+ update_gui_state_from_crash_data();
+ /* Let user play with them */
+ gtk_assistant_set_current_page(g_assistant, PAGENO_ANALYZE_SELECTOR);
+ }
+}
+
+
/* Page navigation handlers */
static void next_page(GtkAssistant *assistant, gpointer user_data)
@@ -661,9 +677,11 @@ static void add_pages(void)
g_tv_report_log = GTK_TEXT_VIEW(gtk_builder_get_object(builder, "tv_report_log"));
g_tv_backtrace = GTK_TEXT_VIEW(gtk_builder_get_object(builder, "tv_backtrace"));
g_tv_details = GTK_TREE_VIEW(gtk_builder_get_object(builder, "tv_details"));
- g_box_warning_labels = GTK_BOX(gtk_builder_get_object(builder, "hb_warning_labels"));
+ g_box_warning_labels = GTK_BOX(gtk_builder_get_object(builder, "b_warning_labels"));
g_tb_approve_bt = GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "cb_approve_bt"));
- g_widget_warnings_area = GTK_WIDGET(gtk_builder_get_object(builder, "hb_warnings_area"));
+ g_widget_warnings_area = GTK_WIDGET(gtk_builder_get_object(builder, "b_warnings_area"));
+ g_btn_refresh = GTK_BUTTON(gtk_builder_get_object(builder, "btn_refresh"));
+
///* hide the warnings by default */
//gtk_widget_hide(g_widget_warnings_area);
@@ -697,9 +715,11 @@ void create_assistant()
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);
+// gtk_builder_connect_signals(builder, NULL);
g_signal_connect(g_tb_approve_bt, "toggled", G_CALLBACK(on_bt_approve_toggle), NULL);
+ g_signal_connect(g_btn_refresh, "clicked", G_CALLBACK(on_btn_refresh_clicked), NULL);
+
gtk_assistant_set_page_complete(g_assistant,
pages[PAGENO_BACKTRACE_APPROVAL].page_widget,
gtk_toggle_button_get_active(g_tb_approve_bt)
diff --git a/src/gui-wizard-gtk/wizard.glade b/src/gui-wizard-gtk/wizard.glade
index 6fb77a44..4b665b96 100644
--- a/src/gui-wizard-gtk/wizard.glade
+++ b/src/gui-wizard-gtk/wizard.glade
@@ -247,7 +247,7 @@
<property name="visible">True</property>
<property name="border_width">5</property>
<child>
- <object class="GtkHBox" id="hb_warnings_area">
+ <object class="GtkHBox" id="b_warnings_area">
<property name="visible">True</property>
<property name="no_show_all">True</property>
<child>
@@ -263,7 +263,7 @@
</packing>
</child>
<child>
- <object class="GtkVBox" id="hb_warning_labels">
+ <object class="GtkVBox" id="b_warning_labels">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
@@ -341,11 +341,12 @@
</packing>
</child>
<child>
- <object class="GtkButton" id="b_refresh">
- <property name="label" translatable="yes">Regenerate backgrace</property>
+ <object class="GtkButton" id="btn_refresh">
+ <property name="label" translatable="yes">Regenerate backtrace</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
+ <property name="tooltip_text" translatable="yes">Can create more informative backtrace if you installed additional debug packages</property>
<signal name="clicked" handler="on_b_refresh_clicked"/>
</object>
<packing>
diff --git a/src/gui-wizard-gtk/wizard.h b/src/gui-wizard-gtk/wizard.h
index 38f9bfd8..4289caa3 100644
--- a/src/gui-wizard-gtk/wizard.h
+++ b/src/gui-wizard-gtk/wizard.h
@@ -31,6 +31,7 @@ extern char *g_glade_file;
extern char *g_dump_dir_name;
extern char *g_analyze_label_selected;
extern char *g_analyze_events;
+extern char *g_reanalyze_events;
extern char *g_report_events;
extern crash_data_t *g_cd;
void reload_crash_data_from_dump_dir(void);