Signed-off-by: Jiri Moskovcak <jmoskovc(a)redhat.com>
---
src/gui-wizard-gtk/main.c | 19 +++++++++++++++++++
src/include/workflow.h | 1 +
src/lib/workflow.c | 13 +++++++++++++
3 files changed, 33 insertions(+)
diff --git a/src/gui-wizard-gtk/main.c b/src/gui-wizard-gtk/main.c
index 3239420..c9f9a0a 100644
--- a/src/gui-wizard-gtk/main.c
+++ b/src/gui-wizard-gtk/main.c
@@ -145,6 +145,25 @@ int main(int argc, char **argv)
load_workflow_config_data(WORKFLOWS_DIR);
+ /* list of workflows applicable to the currently processed problem */
+ GHashTable *possible_workflows = load_workflow_config_data_from_list(
+ list_possible_events_glist(g_dump_dir_name, "workflow"),
+ WORKFLOWS_DIR);
+
+ /* if we have only 1 workflow, we can use the events from it as default */
+ if (g_auto_event_list == NULL && g_hash_table_size(possible_workflows) == 1)
+ {
+ GHashTableIter iter;
+ gpointer key, value;
+
+ g_hash_table_iter_init(&iter, possible_workflows);
+ if (g_hash_table_iter_next(&iter, &key, &value))
+ {
+ VERB1 log("autoselected workflow: '%s'", (char *)key);
+ g_auto_event_list = wf_get_event_names((workflow_t *)value);
+ }
+ }
+
problem_data_reload_from_dump_dir();
create_assistant(expert_mode);
diff --git a/src/include/workflow.h b/src/include/workflow.h
index db8c65d..66bbdaf 100644
--- a/src/include/workflow.h
+++ b/src/include/workflow.h
@@ -35,6 +35,7 @@ void load_workflow_description_from_file(workflow_t *w, const char
*filename);
config_item_info_t *workflow_get_config_info(workflow_t *w);
const char *wf_get_name(workflow_t *w);
GList *wf_get_event_list(workflow_t *w);
+GList *wf_get_event_names(workflow_t *w);
const char *wf_get_screen_name(workflow_t *w);
const char *wf_get_description(workflow_t *w);
const char *wf_get_long_desc(workflow_t *w);
diff --git a/src/lib/workflow.c b/src/lib/workflow.c
index 3acf00c..10848c2 100644
--- a/src/lib/workflow.c
+++ b/src/lib/workflow.c
@@ -160,6 +160,19 @@ GList *wf_get_event_list(workflow_t *w)
return w->events;
}
+GList *wf_get_event_names(workflow_t *w)
+{
+ GList *wf_event_list = wf_get_event_list(w);
+ GList *event_names = NULL;
+ while(wf_event_list)
+ {
+ event_names = g_list_append(event_names,
xstrdup(ec_get_name(wf_event_list->data)));
+ wf_event_list = g_list_next(wf_event_list);
+ }
+
+ return event_names;
+}
+
const char *wf_get_name(workflow_t *w)
{
return ci_get_name(workflow_get_config_info(w));
--
1.8.3.1
Show replies by date