summaryrefslogtreecommitdiff
path: root/gtk/gtkradiomenuitem.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2005-04-03 07:11:09 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2005-04-03 07:11:09 +0000
commit0908bbcd7f55bfa5b6c3d0c13d3eb4c78486b656 (patch)
tree8e8a371e604a394e02b710bb45d5a88e6272a06f /gtk/gtkradiomenuitem.c
parent7dbafd439851b15bd5a87e65e2493d2f4d5e282b (diff)
downloadgtk+-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.c79
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;