[Gnucash-changes] r14381 - gnucash/branches/deprecated-cleanup/src/import-export - Convert a GtkOptionMenu into a GtkComboBox.
David Hampton
hampton at cvs.gnucash.org
Sat Jun 17 19:23:15 EDT 2006
Author: hampton
Date: 2006-06-17 19:23:15 -0400 (Sat, 17 Jun 2006)
New Revision: 14381
Trac: http://svn.gnucash.org/trac/changeset/14381
Modified:
gnucash/branches/deprecated-cleanup/src/import-export/gnc-import-format-gnome.c
gnucash/branches/deprecated-cleanup/src/import-export/gnc-import-format-gnome.h
gnucash/branches/deprecated-cleanup/src/import-export/import-provider-format.glade
Log:
Convert a GtkOptionMenu into a GtkComboBox.
Modified: gnucash/branches/deprecated-cleanup/src/import-export/gnc-import-format-gnome.c
===================================================================
--- gnucash/branches/deprecated-cleanup/src/import-export/gnc-import-format-gnome.c 2006-06-17 21:13:38 UTC (rev 14380)
+++ gnucash/branches/deprecated-cleanup/src/import-export/gnc-import-format-gnome.c 2006-06-17 23:23:15 UTC (rev 14381)
@@ -27,6 +27,12 @@
gnc_import_format_gnome_class_init, NULL,
gnc_import_format_gnome_get_type)
+enum ifg_cols {
+ IFG_COL_TEXT = 0,
+ IFG_COL_VALUE,
+ NUM_IFG_COLS
+};
+
static void
gnc_import_format_gnome_class_init (GNCImportProvFormatGnomeClass *klass)
{
@@ -54,39 +60,47 @@
}
static void
-gnc_ifg_option_changed (GtkWidget *widget, GNCImportProvFormatGnome *prov_f)
+gnc_ifg_option_changed (GtkComboBox *combo, GNCImportProvFormatGnome *prov_f)
{
- prov_f->choice = (GncImportFormat)
- g_object_get_data(G_OBJECT(widget), "option");
-}
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gint value;
-static GtkWidget *
-add_menu_item (GtkWidget *menu, gpointer user_data, char *label,
- GncImportFormat option)
-{
- GtkWidget *item = gtk_menu_item_new_with_label(label);
- g_object_set_data(G_OBJECT(item), "option", (gpointer) option);
- g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(gnc_ifg_option_changed),
- user_data);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
- gtk_widget_show(item);
- return item;
+ g_return_if_fail(GTK_IS_COMBO_BOX(combo));
+ g_return_if_fail(value);
+
+ model = gtk_combo_box_get_model(combo);
+ if (!gtk_combo_box_get_active_iter(combo, &iter))
+ return;
+
+ gtk_tree_model_get(model, &iter, IFG_COL_VALUE, &value, -1);
+ prov_f->choice = (GncImportFormat)value;
}
#define ADD_MENU_ITEM(str,op) { \
- if (formats & op) { \
- item = add_menu_item(menu, prov_f, str, op); \
- if (!first) first = item; \
- } \
+ gtk_list_store_append(store, &iter); \
+ gtk_list_store_set(store, &iter, \
+ IFG_COL_TEXT, str, \
+ IFG_COL_VALUE, op, \
+ -1); \
}
static void
make_menu (GNCImportProvFormatGnome *prov_f, GncImportFormat formats)
{
- GtkWidget *menu, *item, *first = NULL;
+ GtkComboBox *combo = prov_f->format_combo;
+ GtkListStore *store;
+ GtkTreeIter iter;
+ GtkCellRenderer *renderer;
- menu = gtk_menu_new();
+ store = gtk_list_store_new(NUM_IFG_COLS, G_TYPE_STRING, G_TYPE_INT);
+ gtk_combo_box_set_model(combo, GTK_TREE_MODEL(store));
+ renderer = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo), renderer, TRUE);
+ gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(combo), renderer,
+ "text", IFG_COL_TEXT);
+
/* Numeric formats */
ADD_MENU_ITEM(_("Period-as-decimal (1,000.00)"), GNCIF_NUM_PERIOD);
ADD_MENU_ITEM(_("Comma-as-decimal (1.000,00)"), GNCIF_NUM_COMMA);
@@ -97,12 +111,9 @@
ADD_MENU_ITEM(_("y-m-d"), GNCIF_DATE_YMD);
ADD_MENU_ITEM(_("y-d-m"), GNCIF_DATE_YDM);
- gtk_option_menu_set_menu(prov_f->format_menu, menu);
-
- g_signal_emit_by_name(G_OBJECT(first), "activate", prov_f);
- gtk_option_menu_set_history(prov_f->format_menu, 0);
-
- gtk_widget_show(menu);
+ g_signal_connect(G_OBJECT(prov_f->format_combo), "changed",
+ G_CALLBACK(gnc_ifg_option_changed), prov_f);
+ gtk_combo_box_set_active(prov_f->format_combo, 0);
}
static GNCDruidPage*
@@ -153,7 +164,7 @@
GNCImportProvFormatGnome *prov;
GNCImportDescFormat *desc_f;
GNCImportFormatCB *cb;
- GtkWidget *window, *page, *label, *format_menu, *sample_label;
+ GtkWidget *window, *page, *label, *format_combo, *sample_label;
GladeXML *xml;
/* verify that this is the correct provider descriptor */
@@ -183,10 +194,10 @@
window = glade_xml_get_widget(xml, "Format Provider Window");
page = glade_xml_get_widget(xml, "Format Provider Page");
label = glade_xml_get_widget(xml, "inst_label");
- format_menu = glade_xml_get_widget(xml, "import_format_menu");
+ format_combo = glade_xml_get_widget(xml, "import_format_combo");
sample_label = glade_xml_get_widget(xml, "format_sample_label");
- prov->format_menu = GTK_OPTION_MENU(format_menu);
+ prov->format_combo = GTK_COMBO_BOX(format_combo);
prov->sample_label = GTK_LABEL(sample_label);
g_object_ref(page);
Modified: gnucash/branches/deprecated-cleanup/src/import-export/gnc-import-format-gnome.h
===================================================================
--- gnucash/branches/deprecated-cleanup/src/import-export/gnc-import-format-gnome.h 2006-06-17 21:13:38 UTC (rev 14380)
+++ gnucash/branches/deprecated-cleanup/src/import-export/gnc-import-format-gnome.h 2006-06-17 23:23:15 UTC (rev 14381)
@@ -28,7 +28,7 @@
GNCDruidProvider parent;
GnomeDruidPage* page;
- GtkOptionMenu* format_menu;
+ GtkComboBox* format_combo;
GtkLabel* sample_label;
GncImportFormat choice;
Modified: gnucash/branches/deprecated-cleanup/src/import-export/import-provider-format.glade
===================================================================
--- gnucash/branches/deprecated-cleanup/src/import-export/import-provider-format.glade 2006-06-17 21:13:38 UTC (rev 14380)
+++ gnucash/branches/deprecated-cleanup/src/import-export/import-provider-format.glade 2006-06-17 23:23:15 UTC (rev 14381)
@@ -113,10 +113,9 @@
</child>
<child>
- <widget class="GtkOptionMenu" id="import_format_menu">
+ <widget class="GtkComboBox" id="import_format_combo">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="history">-1</property>
+ <property name="focus_on_click">True</property>
</widget>
<packing>
<property name="padding">0</property>
More information about the gnucash-changes
mailing list