summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Van Berkom <vantr@TheBully.local>2009-06-20 13:07:55 -0400
committerTristan Van Berkom <vantr@TheBully.local>2009-06-20 13:07:55 -0400
commitf102cf5cfc7127b698271bc365cc1dc04ff02432 (patch)
treecec1350091f4e3abccad0195d24978cb9f1ff7c1
parent30dbe499705d7bb53953bf9e1830aee21f565dcf (diff)
downloadglade-f102cf5cfc7127b698271bc365cc1dc04ff02432.tar.gz
Use GtkComboBox instead of deprecated GtkOptionMenu.
* gladeui/glade-xml-utils.h, gladeui/glade-editor-property.c: Use GtkComboBox instead of deprecated GtkOptionMenu (Sam Thursfield - bug 572756).
-rw-r--r--ChangeLog3
-rw-r--r--gladeui/glade-editor-property.c69
-rw-r--r--gladeui/glade-xml-utils.h1
3 files changed, 36 insertions, 37 deletions
diff --git a/ChangeLog b/ChangeLog
index eb0f1f3c..5f5c14fd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,6 +11,9 @@
plugins/gtk+/glade-gtk.c:
Replace use of deprecated GTK+ functions (Sam Thursfield - bug 572756).
+ * gladeui/glade-xml-utils.h, gladeui/glade-editor-property.c: Use GtkComboBox
+ instead of deprecated GtkOptionMenu (Sam Thursfield - bug 572756).
+
2009-06-18 James Liggett <jrliggett@cox.net>
* gladeui/glade-widget.c: Make sure that the project view is not
diff --git a/gladeui/glade-editor-property.c b/gladeui/glade-editor-property.c
index 98901918..d51d9990 100644
--- a/gladeui/glade-editor-property.c
+++ b/gladeui/glade-editor-property.c
@@ -761,7 +761,7 @@ glade_eprop_numeric_create_input (GladeEditorProperty *eprop)
typedef struct {
GladeEditorProperty parent_instance;
- GtkWidget *option_menu;
+ GtkWidget *combo_box;
} GladeEPropEnum;
GLADE_MAKE_EPROP (GladeEPropEnum, glade_eprop_enum)
@@ -799,23 +799,27 @@ glade_eprop_enum_load (GladeEditorProperty *eprop, GladeProperty *property)
if (eclass->values[i].value == value)
break;
- gtk_option_menu_set_history (GTK_OPTION_MENU (eprop_enum->option_menu),
- i < eclass->n_values ? i : 0);
+ gtk_combo_box_set_active (GTK_COMBO_BOX (eprop_enum->combo_box),
+ i < eclass->n_values ? i : 0);
g_type_class_unref (eclass);
}
}
static void
-glade_eprop_enum_changed (GtkWidget *menu_item,
+glade_eprop_enum_changed (GtkWidget *combo_box,
GladeEditorProperty *eprop)
{
- gint ival;
- GValue val = { 0, };
+ gint ival;
+ GValue val = { 0, };
GladeProperty *property;
+ GtkTreeModel *tree_model;
+ GtkTreeIter iter;
if (eprop->loading) return;
- ival = GPOINTER_TO_INT(g_object_get_data (G_OBJECT (menu_item), GLADE_ENUM_DATA_TAG));
+ tree_model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo_box));
+ gtk_combo_box_get_active_iter (GTK_COMBO_BOX (combo_box), &iter);
+ gtk_tree_model_get (tree_model, &iter, 1, &ival, -1);
property = eprop->property;
@@ -827,36 +831,22 @@ glade_eprop_enum_changed (GtkWidget *menu_item,
}
static GtkWidget *
-glade_editor_create_input_enum_item (GladeEditorProperty *eprop,
- const gchar *name,
- gint value)
-{
- GtkWidget *menu_item;
-
- menu_item = gtk_menu_item_new_with_label (name);
-
- g_signal_connect (G_OBJECT (menu_item), "activate",
- G_CALLBACK (glade_eprop_enum_changed),
- eprop);
-
- g_object_set_data (G_OBJECT (menu_item), GLADE_ENUM_DATA_TAG, GINT_TO_POINTER(value));
-
- return menu_item;
-}
-
-static GtkWidget *
glade_eprop_enum_create_input (GladeEditorProperty *eprop)
{
GladeEPropEnum *eprop_enum = GLADE_EPROP_ENUM (eprop);
- GtkWidget *menu_item, *menu;
GladePropertyClass *klass;
GEnumClass *eclass;
+ GtkListStore *list_store;
+ GtkTreeIter iter;
+ GtkCellRenderer *cell_renderer;
guint i;
klass = eprop->klass;
eclass = g_type_class_ref (klass->pspec->value_type);
- menu = gtk_menu_new ();
+ list_store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
+
+ gtk_tree_model_get_iter_first (GTK_TREE_MODEL(list_store), &iter);
for (i = 0; i < eclass->n_values; i++)
{
@@ -865,21 +855,28 @@ glade_eprop_enum_create_input (GladeEditorProperty *eprop)
eclass->values[i].value_nick);
if (value_name == NULL) value_name = eclass->values[i].value_nick;
- menu_item = glade_editor_create_input_enum_item
- (eprop, value_name, eclass->values[i].value);
-
- gtk_widget_show (menu_item);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
+ gtk_list_store_append (list_store, &iter);
+ gtk_list_store_set (list_store, &iter, 0, value_name, 1,
+ eclass->values[i].value, -1);
}
- eprop_enum->option_menu = gtk_option_menu_new ();
- gtk_option_menu_set_menu (GTK_OPTION_MENU (eprop_enum->option_menu), menu);
+ eprop_enum->combo_box = gtk_combo_box_new_with_model
+ (GTK_TREE_MODEL (list_store));
+
+ cell_renderer = gtk_cell_renderer_text_new ();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (eprop_enum->combo_box),
+ cell_renderer, TRUE);
+ gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (eprop_enum->combo_box),
+ cell_renderer, "text", 0);
+
+ g_signal_connect (G_OBJECT (eprop_enum->combo_box), "changed",
+ G_CALLBACK (glade_eprop_enum_changed), eprop);
- gtk_widget_show_all (eprop_enum->option_menu);
+ gtk_widget_show_all (eprop_enum->combo_box);
g_type_class_unref (eclass);
- return eprop_enum->option_menu;
+ return eprop_enum->combo_box;
}
/*******************************************************************************
diff --git a/gladeui/glade-xml-utils.h b/gladeui/glade-xml-utils.h
index f43cef06..6e890e74 100644
--- a/gladeui/glade-xml-utils.h
+++ b/gladeui/glade-xml-utils.h
@@ -210,7 +210,6 @@ typedef enum {
#define GLADE_TAG_ICON_NAME "icon-name"
#define GLADE_TAG_IMPORTANT "important"
#define GLADE_TAG_CREATE_TYPE "create-type"
-#define GLADE_ENUM_DATA_TAG "GladeEnumDataTag"
/* search child */