diff options
author | Denys Vlasenko <dvlasenk@redhat.com> | 2011-04-14 20:25:21 +0200 |
---|---|---|
committer | Denys Vlasenko <dvlasenk@redhat.com> | 2011-04-14 20:25:21 +0200 |
commit | aa77bb9ee015eace791d5331b5ce5fe9e5e14634 (patch) | |
tree | 25fe8f74dcc0d757a830a926b905ff43e842a01c /src/lib | |
parent | 5fa98f594e9f4186a7c2042a422fdcfc65e7d30c (diff) | |
download | abrt-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.c | 1 | ||||
-rw-r--r-- | src/lib/event_xml_parser.c | 31 |
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); } |