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; }
config_dialog_t *create_workflow_config_dialog(const char *workflow_name, GtkWindow *parent) { workflow_t *workflow = get_workflow(workflow_name); GList *events = wf_get_event_list(workflow); GtkWindow *parent_window = parent ? parent : g_parent_window; GtkWidget *dialog = gtk_dialog_new_with_buttons( /*title:*/ wf_get_screen_name(workflow) ? wf_get_screen_name(workflow) : workflow_name, parent_window, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_APPLY, NULL); gtk_window_set_resizable(GTK_WINDOW(dialog), true); gtk_window_set_default_size(GTK_WINDOW(dialog), 450, 450); if (parent_window != NULL) { gtk_window_set_icon_name(GTK_WINDOW(dialog), gtk_window_get_icon_name(parent_window)); } GtkWidget *scrolled = gtk_scrolled_window_new(NULL, NULL); GtkWidget *content = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); #if ((GTK_MAJOR_VERSION == 3 && GTK_MINOR_VERSION < 7) || (GTK_MAJOR_VERSION == 3 && GTK_MINOR_VERSION == 7 && GTK_MICRO_VERSION < 8)) /* http://developer.gnome.org/gtk3/unstable/GtkScrolledWindow.html#gtk-scrolled-window-add-with-viewport */ /* gtk_scrolled_window_add_with_viewport has been deprecated since version 3.8 and should not be used in newly-written code. */ gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled), content); #else /* gtk_container_add() will now automatically add a GtkViewport if the child doesn't implement GtkScrollable. */ gtk_container_add(GTK_CONTAINER(scrolled), content); #endif GtkWidget *dialog_box = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); gtk_box_pack_start(GTK_BOX(dialog_box), scrolled, false, true, 0); g_events_options = NULL; g_list_foreach(events, (GFunc)create_event_config_dialog_content_cb, content); gtk_widget_show_all(GTK_WIDGET(scrolled)); config_dialog_t *cdialog = new_config_dialog(dialog, g_events_options, (config_save_fun_t)save_data_from_worfklow_dialog); return cdialog; }
config_dialog_t *create_workflow_config_dialog(const char *workflow_name, GtkWindow *parent) { workflow_t *workflow = get_workflow(workflow_name); GList *events = wf_get_event_list(workflow); GtkWindow *parent_window = parent ? parent : g_parent_window; GtkWidget *dialog = gtk_dialog_new_with_buttons( /*title:*/ wf_get_screen_name(workflow) ? wf_get_screen_name(workflow) : workflow_name, parent_window, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_APPLY, NULL); gtk_window_set_resizable(GTK_WINDOW(dialog), true); gtk_window_set_default_size(GTK_WINDOW(dialog), 450, -1); if (parent_window != NULL) { gtk_window_set_icon_name(GTK_WINDOW(dialog), gtk_window_get_icon_name(parent_window)); } GtkWidget *content = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); g_events_options = NULL; g_list_foreach(events, (GFunc)create_event_config_dialog_content_cb, content); config_dialog_t *cdialog = new_config_dialog(dialog, g_events_options, (config_save_fun_t)save_data_from_worfklow_dialog); return cdialog; }
static void load_events_foreach_workflow(const char *name, workflow_t *workflow, gpointer user_data) { g_list_foreach(wf_get_event_list(workflow), (GFunc)load_single_event_config_foreach, NULL); }