diff options
author | Matthias Clasen <mclasen@redhat.com> | 2005-04-03 07:11:09 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2005-04-03 07:11:09 +0000 |
commit | 0908bbcd7f55bfa5b6c3d0c13d3eb4c78486b656 (patch) | |
tree | 8e8a371e604a394e02b710bb45d5a88e6272a06f /gtk/gtkradiomenuitem.c | |
parent | 7dbafd439851b15bd5a87e65e2493d2f4d5e282b (diff) | |
download | gtk+-0908bbcd7f55bfa5b6c3d0c13d3eb4c78486b656.tar.gz |
Add a "group" property like the one found in radio buttons.
2005-04-03 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkradiomenuitem.c: Add a "group" property like
the one found in radio buttons.
* gtk/gtkradiobutton.c (gtk_radio_button_class_init): Fix
a typo in the docs.
(gtk_radio_button_set_group): Add change notification.
Diffstat (limited to 'gtk/gtkradiomenuitem.c')
-rw-r--r-- | gtk/gtkradiomenuitem.c | 79 |
1 files changed, 77 insertions, 2 deletions
diff --git a/gtk/gtkradiomenuitem.c b/gtk/gtkradiomenuitem.c index 9aef29f159..4181e167df 100644 --- a/gtk/gtkradiomenuitem.c +++ b/gtk/gtkradiomenuitem.c @@ -28,13 +28,29 @@ #include "gtkaccellabel.h" #include "gtkmarshalers.h" #include "gtkradiomenuitem.h" +#include "gtkprivate.h" +#include "gtkintl.h" #include "gtkalias.h" +enum { + PROP_0, + PROP_GROUP +}; + + static void gtk_radio_menu_item_class_init (GtkRadioMenuItemClass *klass); static void gtk_radio_menu_item_init (GtkRadioMenuItem *radio_menu_item); static void gtk_radio_menu_item_destroy (GtkObject *object); static void gtk_radio_menu_item_activate (GtkMenuItem *menu_item); +static void gtk_radio_menu_item_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void gtk_radio_menu_item_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec); static GtkCheckMenuItemClass *parent_class = NULL; @@ -80,6 +96,51 @@ gtk_radio_menu_item_new (GSList *group) return GTK_WIDGET (radio_menu_item); } +static void +gtk_radio_menu_item_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GtkRadioMenuItem *radio_menu_item; + + radio_menu_item = GTK_RADIO_MENU_ITEM (object); + + switch (prop_id) + { + GSList *slist; + + case PROP_GROUP: + if (G_VALUE_HOLDS_OBJECT (value)) + slist = gtk_radio_menu_item_get_group ((GtkRadioMenuItem*) g_value_get_object (value)); + else + slist = NULL; + gtk_radio_menu_item_set_group (radio_menu_item, slist); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gtk_radio_menu_item_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GtkRadioMenuItem *radio_menu_item; + + radio_menu_item = GTK_RADIO_MENU_ITEM (object); + + switch (prop_id) + { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + void gtk_radio_menu_item_set_group (GtkRadioMenuItem *radio_menu_item, GSList *group) @@ -136,6 +197,7 @@ gtk_radio_menu_item_set_group (GtkRadioMenuItem *radio_menu_item, g_object_ref (radio_menu_item); + g_object_notify (G_OBJECT (radio_menu_item), "group"); g_signal_emit (radio_menu_item, group_changed_signal, 0); if (old_group_singleton) { @@ -290,14 +352,27 @@ gtk_radio_menu_item_get_group (GtkRadioMenuItem *radio_menu_item) static void gtk_radio_menu_item_class_init (GtkRadioMenuItemClass *klass) { + GObjectClass *gobject_class; GtkObjectClass *object_class; GtkMenuItemClass *menu_item_class; - object_class = (GtkObjectClass*) klass; - menu_item_class = (GtkMenuItemClass*) klass; + gobject_class = G_OBJECT_CLASS (klass); + object_class = GTK_OBJECT_CLASS (klass); + menu_item_class = GTK_MENU_ITEM_CLASS (klass); parent_class = g_type_class_peek_parent (klass); + gobject_class->set_property = gtk_radio_menu_item_set_property; + gobject_class->get_property = gtk_radio_menu_item_get_property; + + g_object_class_install_property (gobject_class, + PROP_GROUP, + g_param_spec_object ("group", + P_("Group"), + P_("The radio menu item whose group this widget belongs to."), + GTK_TYPE_RADIO_MENU_ITEM, + GTK_PARAM_WRITABLE)); + object_class->destroy = gtk_radio_menu_item_destroy; menu_item_class->activate = gtk_radio_menu_item_activate; |