31 #include <glib/gi18n.h> 32 #include "dialog-utils.h" 33 #include "import-parse.h" 39 option_changed_cb (GtkWidget *widget, gpointer index_p)
41 auto my_index =
static_cast<gint*
>(index_p);
42 *my_index = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
46 static GncImportFormat
47 add_menu_and_run_dialog(GtkWidget *dialog, GtkWidget *menu_box, GncImportFormat fmt)
52 GtkCellRenderer *cell;
53 gint index = 0, count = 0;
54 gint *index_p = &index;
55 GncImportFormat formats[MAX_CHOICES];
57 store = gtk_list_store_new(1, G_TYPE_STRING);
59 if (fmt & GNCIF_NUM_PERIOD)
61 gtk_list_store_append (store, &iter);
62 gtk_list_store_set (store, &iter, 0, _(
"Period: 123,456.78"), -1);
63 formats[count] = GNCIF_NUM_PERIOD;
67 if (fmt & GNCIF_NUM_COMMA)
69 gtk_list_store_append (store, &iter);
70 gtk_list_store_set (store, &iter, 0, _(
"Comma: 123.456,78"), -1);
71 formats[count] = GNCIF_NUM_COMMA;
75 if (fmt & GNCIF_DATE_MDY)
77 gtk_list_store_append (store, &iter);
78 gtk_list_store_set (store, &iter, 0, _(
"m/d/y"), -1);
79 formats[count] = GNCIF_DATE_MDY;
83 if (fmt & GNCIF_DATE_DMY)
85 gtk_list_store_append (store, &iter);
86 gtk_list_store_set (store, &iter, 0, _(
"d/m/y"), -1);
87 formats[count] = GNCIF_DATE_DMY;
91 if (fmt & GNCIF_DATE_YMD)
93 gtk_list_store_append (store, &iter);
94 gtk_list_store_set (store, &iter, 0, _(
"y/m/d"), -1);
95 formats[count] = GNCIF_DATE_YMD;
99 if (fmt & GNCIF_DATE_YDM)
101 gtk_list_store_append (store, &iter);
102 gtk_list_store_set (store, &iter, 0, _(
"y/d/m"), -1);
103 formats[count] = GNCIF_DATE_YDM;
109 combo = GTK_COMBO_BOX(gtk_combo_box_new_with_model(GTK_TREE_MODEL(store)));
110 g_object_unref(store);
113 cell = gtk_cell_renderer_text_new();
116 gtk_cell_layout_pack_start( GTK_CELL_LAYOUT( combo ), cell, FALSE );
119 gtk_cell_layout_set_attributes( GTK_CELL_LAYOUT( combo ), cell,
"text", 0, NULL );
121 g_signal_connect(G_OBJECT(combo),
"changed",
122 G_CALLBACK(option_changed_cb), index_p);
124 gtk_box_pack_start(GTK_BOX(menu_box), GTK_WIDGET(combo), TRUE, TRUE, 0);
126 gtk_widget_show_all(dialog);
127 gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
128 gtk_dialog_run(GTK_DIALOG(dialog));
129 gtk_widget_destroy(dialog);
131 return formats[index];
136 gnc_import_choose_fmt(
const char* msg, GncImportFormat fmts, gpointer data)
142 g_return_val_if_fail (fmts, GNCIF_NONE);
145 if (!(fmts & (fmts - 1)))
150 builder = gtk_builder_new();
151 gnc_builder_add_from_file (builder,
"dialog-import.glade",
"format_picker_dialog");
152 dialog = GTK_WIDGET(gtk_builder_get_object (builder,
"format_picker_dialog"));
153 widget = GTK_WIDGET(gtk_builder_get_object (builder,
"msg_label"));
154 gtk_label_set_text(GTK_LABEL(widget), msg);
156 widget = GTK_WIDGET(gtk_builder_get_object (builder,
"menu_box"));
158 g_object_unref(G_OBJECT(builder));
160 return add_menu_and_run_dialog(dialog, widget, fmts);
utility functions for the GnuCash UI