[gimp] libgimpwidgets: add properties GimpEnumLabel:enum-type and :enum-value
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] libgimpwidgets: add properties GimpEnumLabel:enum-type and :enum-value
- Date: Tue, 15 Feb 2011 20:28:35 +0000 (UTC)
commit 5dcb50ed7dd1ff55f992c67f62d2343f3a3c18e0
Author: Michael Natterer <mitch gimp org>
Date: Tue Feb 15 21:26:11 2011 +0100
libgimpwidgets: add properties GimpEnumLabel:enum-type and :enum-value
libgimpwidgets/gimpenumlabel.c | 108 +++++++++++++++++++++++++++++++++++----
1 files changed, 97 insertions(+), 11 deletions(-)
---
diff --git a/libgimpwidgets/gimpenumlabel.c b/libgimpwidgets/gimpenumlabel.c
index e196795..84ca4c7 100644
--- a/libgimpwidgets/gimpenumlabel.c
+++ b/libgimpwidgets/gimpenumlabel.c
@@ -39,7 +39,23 @@
**/
-static void gimp_enum_label_finalize (GObject *object);
+enum
+{
+ PROP_0,
+ PROP_ENUM_TYPE,
+ PROP_ENUM_VALUE
+};
+
+
+static void gimp_enum_label_finalize (GObject *object);
+static void gimp_enum_label_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void gimp_enum_label_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec);
G_DEFINE_TYPE (GimpEnumLabel, gimp_enum_label, GTK_TYPE_LABEL)
@@ -52,7 +68,35 @@ gimp_enum_label_class_init (GimpEnumLabelClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- object_class->finalize = gimp_enum_label_finalize;
+ object_class->finalize = gimp_enum_label_finalize;
+ object_class->get_property = gimp_enum_label_get_property;
+ object_class->set_property = gimp_enum_label_set_property;
+
+ /**
+ * GimpEnumLabel:enum-type:
+ *
+ * The #GType of the enum.
+ *
+ * Since: GIMP 2.8
+ **/
+ g_object_class_install_property (object_class, PROP_ENUM_TYPE,
+ g_param_spec_gtype ("enum-type", NULL, NULL,
+ G_TYPE_NONE,
+ GIMP_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY));
+
+ /**
+ * GimpEnumLabel:enum-value:
+ *
+ * The value to display.
+ *
+ * Since: GIMP 2.8
+ **/
+ g_object_class_install_property (object_class, PROP_ENUM_VALUE,
+ g_param_spec_int ("enum-value", NULL, NULL,
+ G_MININT, G_MAXINT, 0,
+ GIMP_PARAM_WRITABLE |
+ G_PARAM_CONSTRUCT));
}
static void
@@ -71,6 +115,53 @@ gimp_enum_label_finalize (GObject *object)
G_OBJECT_CLASS (parent_class)->finalize (object);
}
+static void
+gimp_enum_label_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ GimpEnumLabel *label = GIMP_ENUM_LABEL (object);
+
+ switch (property_id)
+ {
+ case PROP_ENUM_TYPE:
+ if (label->enum_class)
+ g_value_set_gtype (value, G_TYPE_FROM_CLASS (label->enum_class));
+ else
+ g_value_set_gtype (value, G_TYPE_NONE);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
+static void
+gimp_enum_label_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GimpEnumLabel *label = GIMP_ENUM_LABEL (object);
+
+ switch (property_id)
+ {
+ case PROP_ENUM_TYPE:
+ label->enum_class = g_type_class_ref (g_value_get_gtype (value));
+ break;
+
+ case PROP_ENUM_VALUE:
+ gimp_enum_label_set_value (label, g_value_get_int (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
/**
* gimp_enum_label_new:
* @enum_type: the #GType of an enum.
@@ -84,17 +175,12 @@ GtkWidget *
gimp_enum_label_new (GType enum_type,
gint value)
{
- GimpEnumLabel *label;
-
g_return_val_if_fail (G_TYPE_IS_ENUM (enum_type), NULL);
- label = g_object_new (GIMP_TYPE_ENUM_LABEL, NULL);
-
- label->enum_class = g_type_class_ref (enum_type);
-
- gimp_enum_label_set_value (label, value);
-
- return GTK_WIDGET (label);
+ return g_object_new (GIMP_TYPE_ENUM_LABEL,
+ "enum-type", enum_type,
+ "enum-value", value,
+ NULL);
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]