summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorDenys Vlasenko <dvlasenk@redhat.com>2011-04-14 20:25:21 +0200
committerDenys Vlasenko <dvlasenk@redhat.com>2011-04-14 20:25:21 +0200
commitaa77bb9ee015eace791d5331b5ce5fe9e5e14634 (patch)
tree25fe8f74dcc0d757a830a926b905ff43e842a01c /src/lib
parent5fa98f594e9f4186a7c2042a422fdcfc65e7d30c (diff)
downloadabrt-aa77bb9ee015eace791d5331b5ce5fe9e5e14634.tar.gz
abrt-aa77bb9ee015eace791d5331b5ce5fe9e5e14634.tar.xz
abrt-aa77bb9ee015eace791d5331b5ce5fe9e5e14634.zip
wizard: implement long descriptions
The change is somewhat big because I can no longer (ab)use tooltip to store event name. So I created a bit more generic method of remembering which events are shown and selected. Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/event_config.c1
-rw-r--r--src/lib/event_xml_parser.c31
2 files changed, 25 insertions, 7 deletions
diff --git a/src/lib/event_config.c b/src/lib/event_config.c
index 6b8a288c..2b57696d 100644
--- a/src/lib/event_config.c
+++ b/src/lib/event_config.c
@@ -53,6 +53,7 @@ void free_event_config(event_config_t *p)
//free(p->title);
//free(p->action);
free(p->description);
+ free(p->long_descr);
for (opt = p->options; opt; opt = opt->next)
free_event_option(opt->data);
g_list_free(p->options);
diff --git a/src/lib/event_xml_parser.c b/src/lib/event_xml_parser.c
index 32605e70..8c899f14 100644
--- a/src/lib/event_xml_parser.c
+++ b/src/lib/event_xml_parser.c
@@ -22,6 +22,7 @@
#define EVENT_ELEMENT "event"
#define LABEL_ELEMENT "label"
#define DESCRIPTION_ELEMENT "description"
+#define LONG_DESCR_ELEMENT "long_description"
#define ALLOW_EMPTY_ELEMENT "allow-empty"
#define OPTION_ELEMENT "option"
//#define ACTION_ELEMENT "action"
@@ -172,13 +173,11 @@ static void start_element(GMarkupParseContext *context,
}
}
}
- else if (strcmp(element_name, LABEL_ELEMENT) == 0)
- {
- free(parse_data->attribute_lang);
- parse_data->attribute_lang = get_element_lang(parse_data, attribute_names, attribute_values);
- }
- else if (strcmp(element_name, DESCRIPTION_ELEMENT) == 0)
- {
+ else
+ if (strcmp(element_name, LABEL_ELEMENT) == 0
+ || strcmp(element_name, DESCRIPTION_ELEMENT) == 0
+ || strcmp(element_name, LONG_DESCR_ELEMENT) == 0
+ ) {
free(parse_data->attribute_lang);
parse_data->attribute_lang = get_element_lang(parse_data, attribute_names, attribute_values);
}
@@ -305,6 +304,24 @@ static void text(GMarkupParseContext *context,
}
return;
}
+ if (strcmp(inner_element, LONG_DESCR_ELEMENT) == 0)
+ {
+ VERB2 log("event long description:'%s'", text_copy);
+
+ if (parse_data->attribute_lang != NULL) /* if it isn't for other locale */
+ {
+ /* set the value only if we found a value for the current locale
+ * OR the description is still not set and we found the default value
+ */
+ if (parse_data->attribute_lang[0] != '\0'
+ || !ui->long_descr /* && parse_data->attribute_lang is "" - always true */
+ ) {
+ free(ui->long_descr);
+ ui->long_descr = text_copy;
+ }
+ }
+ return;
+ }
}
free(text_copy);
}