32 #include <glib/gi18n.h> 34 #include <dialog-utils.h> 36 __attribute__((unused))
static QofLogModule log_module =
G_LOG_DOMAIN;
38 struct _GncABSelectImExDlg
42 GtkListStore *imexporter_list;
43 GtkListStore *profile_list;
44 GtkWidget *select_imexporter;
45 GtkWidget *select_profile;
52 static gboolean imexporter_changed(GtkTreeSelection* sel,
54 static gboolean profile_changed(GtkTreeSelection* sel, gpointer data);
63 populate_list_store (GtkListStore* model, GList* entries)
65 gtk_list_store_clear (model);
66 for (GList* node = entries; node; node = g_list_next (node))
70 gtk_list_store_insert_with_values (GTK_LIST_STORE (model),
73 PROF_COL, pair->descr,
82 GncABSelectImExDlg* imexd;
85 GtkTreeSelection *imex_select = NULL, *prof_select = NULL;
87 g_return_val_if_fail (abi, NULL);
89 g_return_val_if_fail (imexporters, NULL);
90 imexd = g_new0(GncABSelectImExDlg, 1);
91 imexd->parent = parent;
94 g_signal_connect (parent,
"destroy",
95 G_CALLBACK (gtk_widget_destroyed), &imexd->parent);
96 builder = gtk_builder_new();
97 gnc_builder_add_from_file (builder,
"dialog-ab.glade",
"imexporter-list");
98 gnc_builder_add_from_file (builder,
"dialog-ab.glade",
"profile-list");
99 gnc_builder_add_from_file (builder,
"dialog-ab.glade",
100 "aqbanking-select-imexporter-dialog");
102 GTK_WIDGET (gtk_builder_get_object (builder,
103 "aqbanking-select-imexporter-dialog"));
104 g_signal_connect (imexd->dialog,
"destroy",
105 G_CALLBACK (gtk_widget_destroyed), &imexd->dialog);
106 imexd->imexporter_list =
107 GTK_LIST_STORE (gtk_builder_get_object (builder,
"imexporter-list"));
108 imexd->profile_list =
109 GTK_LIST_STORE (gtk_builder_get_object (builder,
"profile-list"));
110 imexd->select_imexporter =
111 GTK_WIDGET (gtk_builder_get_object (builder,
"imexporter-sel"));
112 imexd->select_profile =
113 GTK_WIDGET (gtk_builder_get_object (builder,
"profile-sel"));
115 GTK_WIDGET (gtk_builder_get_object (builder,
"imex-okbutton"));
117 imex_select = GTK_TREE_SELECTION (gtk_builder_get_object (builder,
"imex-selection"));
118 prof_select = GTK_TREE_SELECTION (gtk_builder_get_object (builder,
"prof-selection"));
119 populate_list_store (imexd->imexporter_list,
122 g_signal_connect (imex_select,
"changed", G_CALLBACK(imexporter_changed),
124 g_signal_connect (prof_select,
"changed", G_CALLBACK(profile_changed),
126 g_list_free (imexporters);
127 g_object_unref (G_OBJECT (builder));
129 gtk_window_set_transient_for (GTK_WINDOW (imexd->dialog),
130 GTK_WINDOW (imexd->parent));
139 if (imexd->imexporter_list)
140 gtk_list_store_clear (imexd->imexporter_list);
142 if (imexd->profile_list)
143 gtk_list_store_clear (imexd->profile_list);
146 gtk_widget_destroy (imexd->dialog);
152 imexporter_changed(GtkTreeSelection* sel, gpointer data)
154 GncABSelectImExDlg* imexd = (GncABSelectImExDlg*)data;
158 gtk_widget_set_sensitive (imexd->ok_button, FALSE);
160 if (gtk_tree_selection_get_selected (sel, &model, &iter))
163 GList* profiles = NULL;
165 gtk_tree_model_get (model, &iter, NAME_COL, &name, -1);
170 gtk_list_store_clear (imexd->profile_list);
174 populate_list_store (imexd->profile_list, profiles);
178 gtk_widget_set_sensitive (imexd->ok_button, TRUE);
184 GtkTreePath* path = gtk_tree_path_new_first();
185 GtkTreeSelection* profile_sel =
186 gtk_tree_view_get_selection (GTK_TREE_VIEW (imexd->select_profile));
187 gtk_tree_selection_select_path (profile_sel, path);
188 gtk_tree_path_free (path);
196 profile_changed (GtkTreeSelection* sel, gpointer data)
198 GncABSelectImExDlg* imexd = (GncABSelectImExDlg*)data;
202 gtk_widget_set_sensitive (imexd->ok_button, FALSE);
204 if (gtk_tree_selection_get_selected (sel, &model, &iter))
206 gtk_widget_set_sensitive (imexd->ok_button, TRUE);
217 int response = gtk_dialog_run (GTK_DIALOG (imexd->dialog));
218 return response == GTK_RESPONSE_OK ? TRUE : FALSE;
222 tree_view_get_name (GtkTreeView *tv)
224 GtkTreeSelection* sel = gtk_tree_view_get_selection (tv);
227 if (sel && gtk_tree_selection_get_selected (sel, &model, &iter))
230 gtk_tree_model_get(model, &iter, NAME_COL, &name, -1);
238 tree_view_set_name (GtkTreeView *tree,
const char* name)
241 GtkTreeModel* model = gtk_tree_view_get_model(tree);
244 if (!gtk_tree_model_get_iter_first(model, &iter))
249 gtk_tree_model_get(model, &iter, NAME_COL, &row_name, -1);
250 if (!g_strcmp0(name, row_name))
256 while(gtk_tree_model_iter_next(model, &iter));
260 GtkTreeSelection *sel = gtk_tree_view_get_selection(tree);
261 gtk_tree_selection_select_iter(sel, &iter);
268 return tree_view_get_name (GTK_TREE_VIEW (imexd->select_imexporter));
274 return tree_view_get_name (GTK_TREE_VIEW (imexd->select_profile));
281 tree_view_set_name (GTK_TREE_VIEW (imexd->select_imexporter), name);
288 tree_view_set_name (GTK_TREE_VIEW (imexd->select_profile), name);
GList * gnc_ab_imexporter_list(AB_BANKING *api)
Retrieve the available AQBanking importers.
#define G_LOG_DOMAIN
Functions providing the SX List as a plugin page.
char * gnc_ab_select_imex_dlg_get_profile_name(GncABSelectImExDlg *imexd)
Get the selected file format profile name.
void gnc_ab_select_imex_dlg_set_imexporter_name(GncABSelectImExDlg *imexd, const char *name)
Get the selected importer/exporter name.
void gnc_ab_select_imex_dlg_destroy(GncABSelectImExDlg *imexd)
Destroy an AQBanking importer/exporter selection dialog.
gboolean gnc_ab_select_imex_dlg_run(GncABSelectImExDlg *imexd)
Run an AQBanking importer/exporter selection dialog.
GncABSelectImExDlg * gnc_ab_select_imex_dlg_new(GtkWidget *parent, AB_BANKING *abi)
Create an AQBanking importer/exporter selection dialog.
void gnc_ab_select_imex_dlg_set_profile_name(GncABSelectImExDlg *imexd, const char *name)
Get the selected file format profile name.
Dialog to select AQBanking importer/exporter and format profile.
GList * gnc_ab_imexporter_profile_list(AB_BANKING *api, const char *importer_name)
Retrieve the available format templates for an AQBanking importer.
char * gnc_ab_select_imex_dlg_get_imexporter_name(GncABSelectImExDlg *imexd)
Get the selected importer/exporter name.