[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