summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKarel Klic <kklic@redhat.com>2011-03-14 12:20:23 +0100
committerKarel Klic <kklic@redhat.com>2011-03-14 12:20:23 +0100
commit3193c4a31ab218d99e0fb75790198d927bdaa991 (patch)
tree143c92ca5fd69332b4f161e15ab4ddf425795d9d /src
parent9d615fa67c1181727c81a4671f5d92e3100ecd40 (diff)
parent6d1f476a71a9c61a90f49edda008ae3c2a340d65 (diff)
downloadabrt-3193c4a31ab218d99e0fb75790198d927bdaa991.tar.gz
abrt-3193c4a31ab218d99e0fb75790198d927bdaa991.tar.xz
abrt-3193c4a31ab218d99e0fb75790198d927bdaa991.zip
Merge branch 'master' of ssh://git.fedorahosted.org/git/abrt
Diffstat (limited to 'src')
-rw-r--r--src/gui-gtk/abrt-gtk.c2
-rw-r--r--src/gui-wizard-gtk/main.c8
-rw-r--r--src/gui-wizard-gtk/wizard.c266
-rw-r--r--src/gui-wizard-gtk/wizard.glade36
-rw-r--r--src/gui-wizard-gtk/wizard.h26
-rw-r--r--src/include/report/crash_data.h3
-rw-r--r--src/lib/crash_data.c8
-rw-r--r--src/lib/event_xml_parser.c28
-rw-r--r--src/plugins/analyze_RetraceServer.xml2
-rw-r--r--src/plugins/report_Bugzilla.xml4
10 files changed, 206 insertions, 177 deletions
diff --git a/src/gui-gtk/abrt-gtk.c b/src/gui-gtk/abrt-gtk.c
index 99b6f41f..680c2209 100644
--- a/src/gui-gtk/abrt-gtk.c
+++ b/src/gui-gtk/abrt-gtk.c
@@ -344,7 +344,7 @@ GtkWidget *create_main_window(void)
/* buttons are homogenous so set size only for one button and it will
* work for the rest buttons in same gtk_hbox_new() */
- GtkWidget *btn_report = gtk_button_new_with_mnemonic(_("_Report"));
+ GtkWidget *btn_report = gtk_button_new_with_mnemonic(_("O_pen"));
gtk_widget_set_size_request(btn_report, 200, 30);
GtkWidget *btn_delete = gtk_button_new_from_stock(GTK_STOCK_DELETE);
diff --git a/src/gui-wizard-gtk/main.c b/src/gui-wizard-gtk/main.c
index 85f962cd..23ff0699 100644
--- a/src/gui-wizard-gtk/main.c
+++ b/src/gui-wizard-gtk/main.c
@@ -7,7 +7,6 @@
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;
@@ -24,11 +23,18 @@ void reload_crash_data_from_dump_dir(void)
struct dump_dir *dd = dd_opendir(g_dump_dir_name, DD_OPEN_READONLY);
if (!dd)
xfunc_die(); /* dd_opendir already logged error msg */
+
g_cd = create_crash_data_from_dump_dir(dd);
+ add_to_crash_data_ext(g_cd, CD_DUMPDIR, g_dump_dir_name, CD_FLAG_TXT + CD_FLAG_ISNOTEDITABLE);
+
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);
+
+ /* Load /etc/abrt/events/foo.{conf,xml} stuff */
+ load_event_config_data();
+//TODO: load overrides from keyring? Load ~/.abrt/events/foo.conf?
}
int main(int argc, char **argv)
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
index 36fe2cc3..6b58739e 100644
--- a/src/gui-wizard-gtk/wizard.c
+++ b/src/gui-wizard-gtk/wizard.c
@@ -6,33 +6,42 @@
#define DEFAULT_WIDTH 800
#define DEFAULT_HEIGHT 500
-GtkAssistant *g_assistant;
-
-GtkBox *g_box_analyzers;
-GtkLabel *g_lbl_analyze_log;
-GtkTextView *g_tv_analyze_log;
-GtkBox *g_box_reporters;
-GtkLabel *g_lbl_report_log;
-GtkTextView *g_tv_report_log;
-GtkContainer *g_container_details1;
-GtkContainer *g_container_details2;
-
-GtkLabel *g_lbl_cd_reason;
-GtkLabel *g_lbl_dirname;
-GtkTextView *g_tv_backtrace;
-GtkTextView *g_tv_comment;
-GtkTreeView *g_tv_details;
-GtkListStore *g_ls_details;
-GtkWidget *g_widget_warnings_area;
-GtkBox *g_box_warning_labels;
-GtkToggleButton *g_tb_approve_bt;
-GtkButton *g_btn_refresh;
-
-GtkLabel *g_lbl_reporters;
-GtkLabel *g_lbl_size;
-
-
-/* required for search in bt */
+static GtkAssistant *g_assistant;
+
+static char *g_analyze_label_selected;
+
+static GtkBox *g_box_analyzers;
+static GtkLabel *g_lbl_analyze_log;
+static GtkTextView *g_tv_analyze_log;
+static GtkBox *g_box_reporters;
+static GtkLabel *g_lbl_report_log;
+static GtkTextView *g_tv_report_log;
+static GtkContainer *g_container_details1;
+static GtkContainer *g_container_details2;
+
+static GtkLabel *g_lbl_cd_reason;
+static GtkTextView *g_tv_backtrace;
+static GtkTextView *g_tv_comment;
+static GtkTreeView *g_tv_details;
+static GtkWidget *g_widget_warnings_area;
+static GtkBox *g_box_warning_labels;
+static GtkToggleButton *g_tb_approve_bt;
+static GtkButton *g_btn_refresh;
+
+static GtkLabel *g_lbl_reporters;
+static GtkLabel *g_lbl_size;
+
+static GtkCellRenderer *g_tv_details_col2;
+static GtkListStore *g_ls_details;
+enum
+{
+ DETAIL_COLUMN_NAME,
+ DETAIL_COLUMN_VALUE,
+ //COLUMN_PATH,
+ DETAIL_NUM_COLUMNS,
+};
+
+/* Search in bt */
static guint g_timeout = 0;
static GtkEntry *g_search_entry_bt;
@@ -49,6 +58,16 @@ static PangoFontDescription *monospace_font;
* page_6: summary
* page_7: reporting progress
*/
+enum {
+ PAGENO_SUMMARY,
+ PAGENO_COMMENT,
+ PAGENO_ANALYZE_SELECTOR,
+ PAGENO_ANALYZE_PROGRESS,
+ PAGENO_REPORTER_SELECTOR,
+ PAGENO_BACKTRACE_APPROVAL,
+ PAGENO_REPORT,
+ PAGENO_REPORT_PROGRESS,
+};
/* Use of arrays (instead of, say, #defines to C strings)
* allows cheaper page_obj_t->name == PAGE_FOO comparisons
@@ -171,7 +190,6 @@ struct dump_dir *steal_if_needed(struct dump_dir *dd)
dd_close(dd);
gtk_window_set_title(GTK_WINDOW(g_assistant), g_dump_dir_name);
- gtk_label_set_text(g_lbl_dirname, g_dump_dir_name);
delete_dump_dir_possibly_using_abrtd(old_name); //TODO: if (deletion_failed) error_msg("BAD")?
free(old_name);
@@ -255,33 +273,115 @@ static void append_to_textview(GtkTextView *tv, const char *str, int len)
}
+/* tv_details handling */
+
+static void tv_details_row_activated(
+ GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ gpointer user_data)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ GtkTreeSelection* selection = gtk_tree_view_get_selection(tree_view);
+ if (!gtk_tree_selection_get_selected(selection, &model, &iter))
+ return;
+
+ gchar *column_name;
+ gtk_tree_model_get(model, &iter, DETAIL_COLUMN_NAME, &column_name, -1);
+ struct crash_item *item = get_crash_data_item_or_NULL(g_cd, column_name);
+ if (!item || !(item->flags & CD_FLAG_TXT))
+ return;
+ if (item->flags & CD_FLAG_ONELINE)
+ return;
+
+ gchar *arg[3];
+ arg[0] = (char *) "xdg-open";
+ arg[1] = concat_path_file(g_dump_dir_name, column_name);
+ arg[2] = NULL;
+ g_free(column_name);
+
+ g_spawn_sync(NULL, arg, NULL,
+ G_SPAWN_SEARCH_PATH | G_SPAWN_STDOUT_TO_DEV_NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL);
+
+ free(arg[1]);
+}
+
+/* static gboolean tv_details_select_cursor_row(
+ GtkTreeView *tree_view,
+ gboolean arg1,
+ gpointer user_data) {...} */
+
+static void tv_details_cursor_changed(
+ GtkTreeView *tree_view,
+ gpointer user_data)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ GtkTreeSelection* selection = gtk_tree_view_get_selection(tree_view);
+ if (!gtk_tree_selection_get_selected(selection, &model, &iter))
+ return;
+
+ gchar *column_name;
+ gtk_tree_model_get(model, &iter, DETAIL_COLUMN_NAME, &column_name, -1);
+ struct crash_item *item = get_crash_data_item_or_NULL(g_cd, column_name);
+
+ gboolean editable = (item && (item->flags & (CD_FLAG_TXT|CD_FLAG_ONELINE)) == (CD_FLAG_TXT|CD_FLAG_ONELINE));
+
+ /* Allow user to select the text with mouse.
+ * Has undesirable side-effect of allowing user to "edit" the text,
+ * but changes aren't saved (the old text reappears as soon as user
+ * leaves the field). Need to disable editing somehow.
+ */
+ g_object_set(G_OBJECT(g_tv_details_col2),
+ "editable", editable,
+ // "editable-set", editable,
+ NULL);
+}
+
+
/* update_gui_state_from_crash_data */
static void analyze_rb_was_toggled(GtkButton *button, gpointer user_data)
{
- const char *label = gtk_button_get_label(button);
- if (label)
+ const char *event_name = gtk_widget_get_tooltip_text(GTK_WIDGET(button));
+ if (event_name)
{
free(g_analyze_label_selected);
- g_analyze_label_selected = xstrdup(label);
+ g_analyze_label_selected = xstrdup(event_name);
}
}
-static void report_tb_was_toggled(GtkButton *button, gpointer user_data)
+static void report_tb_was_toggled(GtkButton *button_unused, gpointer user_data_unused)
{
+ struct strbuf *reporters_string = strbuf_new();
GList *reporters = gtk_container_get_children(GTK_CONTAINER(g_box_reporters));
GList *li = reporters;
if (reporters)
{
for (; li; li = li->next)
+ {
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(li->data)) == TRUE)
- break;
+ {
+ const char *event_name = gtk_widget_get_tooltip_text(GTK_WIDGET(li->data));
+ strbuf_append_strf(reporters_string,
+ "%s%s",
+ (reporters_string->len != 0 ? ", " : ""),
+ event_name
+ );
+ }
+ }
}
g_list_free(reporters);
+
gtk_assistant_set_page_complete(g_assistant,
pages[PAGENO_REPORTER_SELECTOR].page_widget,
- li != NULL /* true if at least one checkbox is active */
+ reporters_string->len != 0 /* true if at least one checkbox is active */
);
+
+ /* Update "list of reporters" label */
+ gtk_label_set_text(g_lbl_reporters, strbuf_free_nobuf(reporters_string));
}
static GtkWidget *add_event_buttons(GtkBox *box, char *event_name, GCallback func, bool radio, const char *prev_selected)
@@ -296,12 +396,37 @@ VERB2 log("removing all buttons from box %p", box);
char *event_name_end = strchr(event_name, '\n');
*event_name_end = '\0';
+ /* Form a pretty text representation of event */
+ /* By default, use event name, just strip "foo_" prefix if it exists: */
+ const char *event_screen_name = strchr(event_name, '_');
+ if (event_screen_name)
+ event_screen_name++;
+ else
+ event_screen_name = event_name;
+ const char *event_description = NULL;
+ event_config_t *cfg = g_hash_table_lookup(g_event_config_list, event_name);
+ if (cfg)
+ {
+ /* .xml has (presumably) prettier description, use it: */
+ if (cfg->screen_name)
+ event_screen_name = cfg->screen_name;
+ event_description = cfg->description;
+ }
+ char *event_label = xasprintf("%s%s%s",
+ event_screen_name,
+ (event_description ? " - " : ""),
+ event_description ? event_description : ""
+ );
+
VERB2 log("adding button '%s' to box %p", event_name, box);
GtkWidget *button = radio
- ? gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(first_button), event_name)
- : gtk_check_button_new_with_label(event_name);
+ ? gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(first_button), event_label)
+ : gtk_check_button_new_with_label(event_label);
if (!first_button)
first_button = button;
+ free(event_label);
+ /* Important: tooltip isn't used merely as decoration. We retrieve event name in the toggle handlers! */
+ gtk_widget_set_tooltip_text(button, event_name);
if (prev_selected && strcmp(prev_selected, event_name) == 0)
{
@@ -326,39 +451,6 @@ struct cd_stats {
unsigned filecount;
};
-static void tv_details_edit_cb(GtkTreeView *tree_view,
- GtkTreePath *path,
- GtkTreeViewColumn *column,
- gpointer user_data)
-{
- GtkTreeModel *model;
- GtkTreeIter iter;
- GtkTreeSelection* selection = gtk_tree_view_get_selection(tree_view);
- if (!gtk_tree_selection_get_selected(selection, &model, &iter))
- return;
-
- gchar *column_name;
- gtk_tree_model_get(model, &iter, DETAIL_COLUMN_NAME, &column_name, -1);
- struct crash_item *item = get_crash_data_item_or_NULL(g_cd, column_name);
- if (!item || !IS_TXT(item->flags))
- return;
-
- if (item && IS_ONELINE(item->flags))
- return;
-
- gchar *arg[3];
- arg[0] = (char *) "xdg-open";
- arg[1] = concat_path_file(g_dump_dir_name, column_name);
- arg[2] = NULL;
- g_free(column_name);
-
- g_spawn_sync(NULL, arg, NULL,
- G_SPAWN_SEARCH_PATH | G_SPAWN_STDOUT_TO_DEV_NULL,
- NULL, NULL, NULL, NULL, NULL, NULL);
-
- free(arg[1]);
-}
-
static void append_item_to_ls_details(gpointer name, gpointer value, gpointer data)
{
crash_item *item = (crash_item*)value;
@@ -410,7 +502,6 @@ static void append_item_to_ls_details(gpointer name, gpointer value, gpointer da
void update_gui_state_from_crash_data(void)
{
gtk_window_set_title(GTK_WINDOW(g_assistant), g_dump_dir_name);
- gtk_label_set_text(g_lbl_dirname, g_dump_dir_name);
const char *reason = get_crash_item_content_or_NULL(g_cd, FILENAME_REASON);
gtk_label_set_text(g_lbl_cd_reason, reason ? reason : _("(no description)"));
@@ -425,13 +516,6 @@ void update_gui_state_from_crash_data(void)
load_text_to_text_view(g_tv_backtrace, FILENAME_BACKTRACE);
load_text_to_text_view(g_tv_comment, FILENAME_COMMENT);
-//Doesn't work: shows empty page
-// if (!g_analyze_events[0])
-// {
-// /* No available analyze events, go to reporter selector page */
-// gtk_assistant_set_current_page(GTK_ASSISTANT(assistant), PAGENO_REPORTER_SELECTOR);
-// }
-
/* Update analyze radio buttons */
GtkWidget *first_rb = add_event_buttons(g_box_analyzers, g_analyze_events, G_CALLBACK(analyze_rb_was_toggled), /*radio:*/ true, /*prev:*/ g_analyze_label_selected);
/* Update the value of currently selected analyzer */
@@ -460,13 +544,10 @@ void update_gui_state_from_crash_data(void)
add_event_buttons(g_box_reporters, g_report_events, /*callback:*/ G_CALLBACK(report_tb_was_toggled), /*radio:*/ false, /*prev:*/ NULL);
/* Re-select new reporters which were selected before we deleted them */
GList *new_reporters = gtk_container_get_children(GTK_CONTAINER(g_box_reporters));
- struct strbuf *reporters_string = strbuf_new();
for (GList *li_new = new_reporters; li_new; li_new = li_new->next)
{
const char *new_name = gtk_button_get_label(GTK_BUTTON(li_new->data));
- strbuf_append_strf(reporters_string, "%s%s", (reporters_string->len ? ", " : ""), new_name);
-
for (GList *li_old = old_reporters; li_old; li_old = li_old->next)
{
if (strcmp(new_name, li_old->data) == 0)
@@ -478,11 +559,9 @@ void update_gui_state_from_crash_data(void)
}
g_list_free(new_reporters);
list_free_with_free(old_reporters);
- /* Update "list of reporters" label */
- gtk_label_set_text(g_lbl_reporters, strbuf_free_nobuf(reporters_string));
- /* Update readiness state of reporter selector page */
- report_tb_was_toggled(NULL, NULL);
+ /* Update readiness state of reporter selector page and "list of reporters" label */
+ report_tb_was_toggled(NULL, NULL);
/* We can't just do gtk_widget_show_all once in main:
* We created new widgets (buttons). Need to make them visible.
@@ -971,19 +1050,7 @@ static void create_details_treeview()
gtk_tree_view_column_set_sort_column_id(column, DETAIL_COLUMN_NAME);
gtk_tree_view_append_column(g_tv_details, column);
- renderer = gtk_cell_renderer_text_new();
- /* Allow user to select the text with mouse.
- * Has undesirable side-effect of allowing user to "edit" the text,
- * but changes aren't saved (the old text reappears as soon as user
- * leaves the field). Need to disable editing somehow.
- * Also, it interferes with "(click here to view/edit)" values.
- * Need to find a way to _selectively_ enable editing only
- * on some cells, not all at once.
- */
- //g_object_set(G_OBJECT(renderer),
- // "editable", TRUE,
- // // "editable-set", TRUE,
- // NULL);
+ g_tv_details_col2 = renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(_("Value"),
renderer,
"text",
@@ -1049,7 +1116,6 @@ static void add_pages(void)
}
/* Set pointers to objects we might need to work with */
g_lbl_cd_reason = GTK_LABEL( gtk_builder_get_object(builder, "lbl_cd_reason"));
- g_lbl_dirname = GTK_LABEL( gtk_builder_get_object(builder, "lbl_dirname"));
g_box_analyzers = GTK_BOX( gtk_builder_get_object(builder, "vb_analyzers"));
g_lbl_analyze_log = GTK_LABEL( gtk_builder_get_object(builder, "lbl_analyze_log"));
g_tv_analyze_log = GTK_TEXT_VIEW( gtk_builder_get_object(builder, "tv_analyze_log"));
@@ -1111,7 +1177,9 @@ void create_assistant()
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);
- g_signal_connect(g_tv_details, "row-activated", G_CALLBACK(tv_details_edit_cb), NULL);
+ g_signal_connect(g_tv_details, "row-activated", G_CALLBACK(tv_details_row_activated), NULL);
+ /* [Enter] on a row: g_signal_connect(g_tv_details, "select-cursor-row", G_CALLBACK(tv_details_select_cursor_row), NULL); */
+ g_signal_connect(g_tv_details, "cursor-changed", G_CALLBACK(tv_details_cursor_changed), NULL);
/* init searching */
GtkTextBuffer *backtrace_buf = gtk_text_view_get_buffer(g_tv_backtrace);
diff --git a/src/gui-wizard-gtk/wizard.glade b/src/gui-wizard-gtk/wizard.glade
index bfa0be67..fa9f15ed 100644
--- a/src/gui-wizard-gtk/wizard.glade
+++ b/src/gui-wizard-gtk/wizard.glade
@@ -40,38 +40,6 @@
</packing>
</child>
<child>
- <object class="GtkHBox" id="hbox2">
- <property name="visible">True</property>
- <child>
- <object class="GtkLabel" id="label13">
- <property name="visible">True</property>
- <property name="ypad">5</property>
- <property name="label" translatable="yes">Problem data is stored in:</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="lbl_dirname">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="xpad">5</property>
- <property name="ypad">5</property>
- <property name="selectable">True</property>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
<object class="GtkExpander" id="expander1">
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -97,7 +65,7 @@
</child>
</object>
<packing>
- <property name="position">3</property>
+ <property name="position">2</property>
</packing>
</child>
</object>
@@ -492,7 +460,7 @@
<property name="width_request">750</property>
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Click 'Forward' to start reporting</property>
+ <property name="label" translatable="yes">Click 'Apply' to start reporting</property>
<property name="justify">fill</property>
<property name="wrap">True</property>
</object>
diff --git a/src/gui-wizard-gtk/wizard.h b/src/gui-wizard-gtk/wizard.h
index 00884b21..322b338f 100644
--- a/src/gui-wizard-gtk/wizard.h
+++ b/src/gui-wizard-gtk/wizard.h
@@ -1,28 +1,3 @@
-enum {
- PAGENO_SUMMARY,
- PAGENO_COMMENT,
- PAGENO_ANALYZE_SELECTOR,
- PAGENO_ANALYZE_PROGRESS,
- PAGENO_REPORTER_SELECTOR,
- PAGENO_BACKTRACE_APPROVAL,
- 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;
-extern GtkBox *g_box_reporters;
-extern GtkTextView *g_tv_backtrace;
-enum
-{
- DETAIL_COLUMN_NAME,
- DETAIL_COLUMN_VALUE,
- //COLUMN_PATH,
- DETAIL_NUM_COLUMNS,
-};
-extern GtkTreeView *g_tv_details;
-extern GtkListStore *g_ls_details;
void create_assistant(void);
void update_gui_state_from_crash_data(void);
void show_error_as_msgbox(const char *msg);
@@ -30,7 +5,6 @@ void show_error_as_msgbox(const char *msg);
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;
diff --git a/src/include/report/crash_data.h b/src/include/report/crash_data.h
index 2dfdb242..3813cabf 100644
--- a/src/include/report/crash_data.h
+++ b/src/include/report/crash_data.h
@@ -35,9 +35,6 @@ enum {
CD_FLAG_ONELINE = (1 << 4),
};
-#define IS_TXT(flag) ((flag) & CD_FLAG_TXT)
-#define IS_ONELINE(flag) ((flag) & CD_FLAG_ONELINE)
-
struct crash_item {
char *content;
unsigned flags;
diff --git a/src/lib/crash_data.c b/src/lib/crash_data.c
index 7f23c52f..a3ba3fb6 100644
--- a/src/lib/crash_data.c
+++ b/src/lib/crash_data.c
@@ -42,9 +42,13 @@ void add_to_crash_data_ext(crash_data_t *crash_data,
const char *content,
unsigned flags)
{
- if (!(flags & (CD_FLAG_BIN|CD_FLAG_TXT)))
+ if (!(flags & CD_FLAG_BIN))
+ {
flags |= CD_FLAG_TXT;
- if (!(flags & (CD_FLAG_ISEDITABLE|CD_FLAG_ISNOTEDITABLE)))
+ if (!strchr(content, '\n'))
+ flags |= CD_FLAG_ONELINE;
+ }
+ if (!(flags & CD_FLAG_ISEDITABLE))
flags |= CD_FLAG_ISNOTEDITABLE;
struct crash_item *item = (struct crash_item *)xzalloc(sizeof(*item));
diff --git a/src/lib/event_xml_parser.c b/src/lib/event_xml_parser.c
index c144d845..f24606e0 100644
--- a/src/lib/event_xml_parser.c
+++ b/src/lib/event_xml_parser.c
@@ -1,13 +1,14 @@
#include "abrtlib.h"
#include "event_config.h"
-#define EVENT_ELEMENT "event"
-#define LABEL_ELEMENT "label"
-#define DESCRIPTION_ELEMENT "description"
-#define ALLOW_EMPTY_ELEMENT "allow-empty"
-#define OPTION_ELEMENT "option"
-//#define ACTION_ELEMENT "action"
-#define NAME_ELEMENT "name"
+#define EVENT_ELEMENT "event"
+#define LABEL_ELEMENT "label"
+#define DESCRIPTION_ELEMENT "description"
+#define ALLOW_EMPTY_ELEMENT "allow-empty"
+#define OPTION_ELEMENT "option"
+//#define ACTION_ELEMENT "action"
+#define NAME_ELEMENT "name"
+#define DEFAULT_VALUE_ELEMENT "default-value"
struct my_parse_data
{
@@ -156,6 +157,19 @@ static void text(GMarkupParseContext *context,
return;
}
/*
+ * we can add a separate filed for the default value
+ * in that case we can implement features like "reset to default value"
+ * but for now using "value" should be enough and clients doesn't
+ * have to know about the "defaul-value"
+ */
+ if (strcmp(inner_element, DEFAULT_VALUE_ELEMENT) == 0)
+ {
+ VERB2 log("default value:'%s'", text_copy);
+ free(opt->value);
+ opt->value = text_copy;
+ return;
+ }
+ /*
if (strcmp(inner_element, DESCRIPTION_ELEMENT) == 0)
{
VERB2 log("tooltip:'%s'", text_copy);
diff --git a/src/plugins/analyze_RetraceServer.xml b/src/plugins/analyze_RetraceServer.xml
index ee28f28d..9e9cc6ec 100644
--- a/src/plugins/analyze_RetraceServer.xml
+++ b/src/plugins/analyze_RetraceServer.xml
@@ -5,7 +5,7 @@
<options>
<option type="text" name="RETRACE_SERVER_URL">
<label>Retrace server URL</label>
- <default-value>retrace01.fedoraproject.org</default-value>
+ <default-value>retrace01.fedoraproject.org</default-value>
<allow-empty>no</allow-empty>
<description>Address of the retrace server</description>
</option>
diff --git a/src/plugins/report_Bugzilla.xml b/src/plugins/report_Bugzilla.xml
index bc8e8ecb..0cd1891a 100644
--- a/src/plugins/report_Bugzilla.xml
+++ b/src/plugins/report_Bugzilla.xml
@@ -1,8 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<event>
<name>Bugzilla</name>
- <action>Report this problem to the Red Hat bug tracker</action>
- <description>Reports selected problems to the Red Hat bug tracker</description>
+ <description>Report to Red Hat bug tracker</description>
<options>
<option type="text" name="Bugzilla_BugzillaURL">
<label>Bugzilla URL</label>
@@ -27,4 +26,3 @@
</option>
</options>
</event>
-