summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog15
-rw-r--r--ChangeLog.pre-2-015
-rw-r--r--ChangeLog.pre-2-1015
-rw-r--r--ChangeLog.pre-2-215
-rw-r--r--ChangeLog.pre-2-415
-rw-r--r--ChangeLog.pre-2-615
-rw-r--r--ChangeLog.pre-2-815
-rw-r--r--docs/reference/gtk/tmpl/gtk-unused.sgml6
-rw-r--r--docs/reference/gtk/tmpl/gtkcheckmenuitem.sgml5
-rw-r--r--docs/reference/gtk/tmpl/gtkfilesel.sgml10
-rw-r--r--docs/reference/gtk/tmpl/gtkframe.sgml5
-rw-r--r--gtk/gtkbox.c91
-rw-r--r--gtk/gtkbutton.c89
-rw-r--r--gtk/gtkbutton.h2
-rw-r--r--gtk/gtkcheckmenuitem.c87
-rw-r--r--gtk/gtkcheckmenuitem.h8
-rw-r--r--gtk/gtkfilesel.c114
-rw-r--r--gtk/gtkfilesel.h2
-rw-r--r--gtk/gtkframe.c173
-rw-r--r--gtk/gtkhandlebox.c117
20 files changed, 646 insertions, 168 deletions
diff --git a/ChangeLog b/ChangeLog
index 37fc9945c6..6be2cc6130 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,20 @@
2001-03-23 Havoc Pennington <hp@redhat.com>
+ * gtk/gtkhandlebox.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkbox.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkcheckmenuitem.c: Apply property patch from Lee Mallabone,
+ and deprecated gtk_check_menu_item_set_show_toggle().
+
+ * gtk/gtkbutton.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkfilesel.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkframe.c: Apply property patch from Lee Mallabone
+
+2001-03-23 Havoc Pennington <hp@redhat.com>
+
* gtk/gtktoolbar.c, gtk/gtkimcontext.c, gtk/gtklabel.c: fix up
some docs
diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0
index 37fc9945c6..6be2cc6130 100644
--- a/ChangeLog.pre-2-0
+++ b/ChangeLog.pre-2-0
@@ -1,5 +1,20 @@
2001-03-23 Havoc Pennington <hp@redhat.com>
+ * gtk/gtkhandlebox.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkbox.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkcheckmenuitem.c: Apply property patch from Lee Mallabone,
+ and deprecated gtk_check_menu_item_set_show_toggle().
+
+ * gtk/gtkbutton.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkfilesel.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkframe.c: Apply property patch from Lee Mallabone
+
+2001-03-23 Havoc Pennington <hp@redhat.com>
+
* gtk/gtktoolbar.c, gtk/gtkimcontext.c, gtk/gtklabel.c: fix up
some docs
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index 37fc9945c6..6be2cc6130 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,5 +1,20 @@
2001-03-23 Havoc Pennington <hp@redhat.com>
+ * gtk/gtkhandlebox.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkbox.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkcheckmenuitem.c: Apply property patch from Lee Mallabone,
+ and deprecated gtk_check_menu_item_set_show_toggle().
+
+ * gtk/gtkbutton.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkfilesel.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkframe.c: Apply property patch from Lee Mallabone
+
+2001-03-23 Havoc Pennington <hp@redhat.com>
+
* gtk/gtktoolbar.c, gtk/gtkimcontext.c, gtk/gtklabel.c: fix up
some docs
diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2
index 37fc9945c6..6be2cc6130 100644
--- a/ChangeLog.pre-2-2
+++ b/ChangeLog.pre-2-2
@@ -1,5 +1,20 @@
2001-03-23 Havoc Pennington <hp@redhat.com>
+ * gtk/gtkhandlebox.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkbox.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkcheckmenuitem.c: Apply property patch from Lee Mallabone,
+ and deprecated gtk_check_menu_item_set_show_toggle().
+
+ * gtk/gtkbutton.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkfilesel.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkframe.c: Apply property patch from Lee Mallabone
+
+2001-03-23 Havoc Pennington <hp@redhat.com>
+
* gtk/gtktoolbar.c, gtk/gtkimcontext.c, gtk/gtklabel.c: fix up
some docs
diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4
index 37fc9945c6..6be2cc6130 100644
--- a/ChangeLog.pre-2-4
+++ b/ChangeLog.pre-2-4
@@ -1,5 +1,20 @@
2001-03-23 Havoc Pennington <hp@redhat.com>
+ * gtk/gtkhandlebox.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkbox.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkcheckmenuitem.c: Apply property patch from Lee Mallabone,
+ and deprecated gtk_check_menu_item_set_show_toggle().
+
+ * gtk/gtkbutton.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkfilesel.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkframe.c: Apply property patch from Lee Mallabone
+
+2001-03-23 Havoc Pennington <hp@redhat.com>
+
* gtk/gtktoolbar.c, gtk/gtkimcontext.c, gtk/gtklabel.c: fix up
some docs
diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6
index 37fc9945c6..6be2cc6130 100644
--- a/ChangeLog.pre-2-6
+++ b/ChangeLog.pre-2-6
@@ -1,5 +1,20 @@
2001-03-23 Havoc Pennington <hp@redhat.com>
+ * gtk/gtkhandlebox.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkbox.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkcheckmenuitem.c: Apply property patch from Lee Mallabone,
+ and deprecated gtk_check_menu_item_set_show_toggle().
+
+ * gtk/gtkbutton.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkfilesel.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkframe.c: Apply property patch from Lee Mallabone
+
+2001-03-23 Havoc Pennington <hp@redhat.com>
+
* gtk/gtktoolbar.c, gtk/gtkimcontext.c, gtk/gtklabel.c: fix up
some docs
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index 37fc9945c6..6be2cc6130 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -1,5 +1,20 @@
2001-03-23 Havoc Pennington <hp@redhat.com>
+ * gtk/gtkhandlebox.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkbox.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkcheckmenuitem.c: Apply property patch from Lee Mallabone,
+ and deprecated gtk_check_menu_item_set_show_toggle().
+
+ * gtk/gtkbutton.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkfilesel.c: Apply property patch from Lee Mallabone
+
+ * gtk/gtkframe.c: Apply property patch from Lee Mallabone
+
+2001-03-23 Havoc Pennington <hp@redhat.com>
+
* gtk/gtktoolbar.c, gtk/gtkimcontext.c, gtk/gtklabel.c: fix up
some docs
diff --git a/docs/reference/gtk/tmpl/gtk-unused.sgml b/docs/reference/gtk/tmpl/gtk-unused.sgml
index d8524c36b2..26e6b16e0e 100644
--- a/docs/reference/gtk/tmpl/gtk-unused.sgml
+++ b/docs/reference/gtk/tmpl/gtk-unused.sgml
@@ -534,6 +534,12 @@ gtk_font_selection_set_filter().
@GTK_FONT_SCALABLE_BITMAP: scaled bitmap fonts.
@GTK_FONT_ALL: a bitwise combination of all of the above.
+<!-- ##### ARG GtkFrame:shadow-type ##### -->
+<para>
+
+</para>
+
+
<!-- ##### STRUCT GtkIMContextSimple ##### -->
<para>
diff --git a/docs/reference/gtk/tmpl/gtkcheckmenuitem.sgml b/docs/reference/gtk/tmpl/gtkcheckmenuitem.sgml
index d9ff6d64be..afcf9c9ef0 100644
--- a/docs/reference/gtk/tmpl/gtkcheckmenuitem.sgml
+++ b/docs/reference/gtk/tmpl/gtkcheckmenuitem.sgml
@@ -124,3 +124,8 @@ field of the #GtkCheckMenuItem-struct struct to discover the new state.
@checkmenuitem: the object which received the signal.
+<!-- ##### ARG GtkCheckMenuItem:active ##### -->
+<para>
+
+</para>
+
diff --git a/docs/reference/gtk/tmpl/gtkfilesel.sgml b/docs/reference/gtk/tmpl/gtkfilesel.sgml
index ef0bb7dfd5..5c7a2ef8c9 100644
--- a/docs/reference/gtk/tmpl/gtkfilesel.sgml
+++ b/docs/reference/gtk/tmpl/gtkfilesel.sgml
@@ -169,3 +169,13 @@ Hides the file operation buttons that normally appear at the top of the dialog.
@filesel: a #GtkFileSelection.
+<!-- ##### ARG GtkFileSelection:filename ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG GtkFileSelection:show-fileops ##### -->
+<para>
+
+</para>
+
diff --git a/docs/reference/gtk/tmpl/gtkframe.sgml b/docs/reference/gtk/tmpl/gtkframe.sgml
index 4c674d58c6..9fc8344221 100644
--- a/docs/reference/gtk/tmpl/gtkframe.sgml
+++ b/docs/reference/gtk/tmpl/gtkframe.sgml
@@ -107,3 +107,8 @@ Set the shadow type for the Frame widget.
</para>
+<!-- ##### ARG GtkFrame:label-widget ##### -->
+<para>
+
+</para>
+
diff --git a/gtk/gtkbox.c b/gtk/gtkbox.c
index b5469217f1..4e5493156b 100644
--- a/gtk/gtkbox.c
+++ b/gtk/gtkbox.c
@@ -25,11 +25,12 @@
*/
#include "gtkbox.h"
+#include "gtkintl.h"
enum {
- ARG_0,
- ARG_SPACING,
- ARG_HOMOGENEOUS
+ PROP_0,
+ PROP_SPACING,
+ PROP_HOMOGENEOUS
};
enum {
@@ -43,12 +44,14 @@ enum {
static void gtk_box_class_init (GtkBoxClass *klass);
static void gtk_box_init (GtkBox *box);
-static void gtk_box_get_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id);
-static void gtk_box_set_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id);
+static void gtk_box_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void gtk_box_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
static void gtk_box_map (GtkWidget *widget);
static void gtk_box_unmap (GtkWidget *widget);
static void gtk_box_add (GtkContainer *container,
@@ -101,27 +104,45 @@ gtk_box_get_type (void)
static void
gtk_box_class_init (GtkBoxClass *class)
{
+ GObjectClass *gobject_class;
GtkObjectClass *object_class;
GtkWidgetClass *widget_class;
GtkContainerClass *container_class;
+ gobject_class = (GObjectClass*) class;
object_class = (GtkObjectClass*) class;
widget_class = (GtkWidgetClass*) class;
container_class = (GtkContainerClass*) class;
parent_class = gtk_type_class (GTK_TYPE_CONTAINER);
- gtk_object_add_arg_type ("GtkBox::spacing", GTK_TYPE_INT, GTK_ARG_READWRITE, ARG_SPACING);
- gtk_object_add_arg_type ("GtkBox::homogeneous", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_HOMOGENEOUS);
+ gobject_class->set_property = gtk_box_set_property;
+ gobject_class->get_property = gtk_box_get_property;
+
+ g_object_class_install_property (gobject_class,
+ PROP_SPACING,
+ g_param_spec_int ("spacing",
+ _("Spacing"),
+ _("The amount of space between children."),
+ 0,
+ G_MAXINT,
+ 0,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ g_object_class_install_property (gobject_class,
+ PROP_HOMOGENEOUS,
+ g_param_spec_boolean ("homogeneous",
+ _("Homogeneous"),
+ _("Whether the children should all be the same size."),
+ FALSE,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
gtk_container_add_child_arg_type ("GtkBox::expand", GTK_TYPE_BOOL, GTK_ARG_READWRITE, CHILD_ARG_EXPAND);
gtk_container_add_child_arg_type ("GtkBox::fill", GTK_TYPE_BOOL, GTK_ARG_READWRITE, CHILD_ARG_FILL);
gtk_container_add_child_arg_type ("GtkBox::padding", GTK_TYPE_UINT, GTK_ARG_READWRITE, CHILD_ARG_PADDING);
gtk_container_add_child_arg_type ("GtkBox::pack_type", GTK_TYPE_PACK_TYPE, GTK_ARG_READWRITE, CHILD_ARG_PACK_TYPE);
gtk_container_add_child_arg_type ("GtkBox::position", GTK_TYPE_INT, GTK_ARG_READWRITE, CHILD_ARG_POSITION);
- object_class->set_arg = gtk_box_set_arg;
- object_class->get_arg = gtk_box_get_arg;
-
widget_class->map = gtk_box_map;
widget_class->unmap = gtk_box_unmap;
@@ -143,47 +164,49 @@ gtk_box_init (GtkBox *box)
box->homogeneous = FALSE;
}
-static void
-gtk_box_set_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id)
+static void
+gtk_box_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
GtkBox *box;
box = GTK_BOX (object);
- switch (arg_id)
+ switch (prop_id)
{
- case ARG_SPACING:
- gtk_box_set_spacing (box, GTK_VALUE_INT (*arg));
+ case PROP_SPACING:
+ gtk_box_set_spacing (box, g_value_get_int (value));
break;
- case ARG_HOMOGENEOUS:
- gtk_box_set_homogeneous (box, GTK_VALUE_BOOL (*arg));
+ case PROP_HOMOGENEOUS:
+ gtk_box_set_homogeneous (box, g_value_get_boolean (value));
break;
default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
-static void
-gtk_box_get_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id)
+static void gtk_box_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
{
GtkBox *box;
box = GTK_BOX (object);
- switch (arg_id)
+ switch (prop_id)
{
- case ARG_SPACING:
- GTK_VALUE_INT (*arg) = box->spacing;
+ case PROP_SPACING:
+ g_value_set_int (value, box->spacing);
break;
- case ARG_HOMOGENEOUS:
- GTK_VALUE_BOOL (*arg) = box->homogeneous;
+ case PROP_HOMOGENEOUS:
+ g_value_set_boolean (value, box->homogeneous);
break;
default:
- arg->type = GTK_TYPE_INVALID;
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
@@ -417,6 +440,7 @@ gtk_box_set_homogeneous (GtkBox *box,
if ((homogeneous ? TRUE : FALSE) != box->homogeneous)
{
box->homogeneous = homogeneous ? TRUE : FALSE;
+ g_object_notify (G_OBJECT (box), "homogeneous");
gtk_widget_queue_resize (GTK_WIDGET (box));
}
}
@@ -431,6 +455,7 @@ gtk_box_set_spacing (GtkBox *box,
if (spacing != box->spacing)
{
box->spacing = spacing;
+ g_object_notify (G_OBJECT (box), "spacing");
gtk_widget_queue_resize (GTK_WIDGET (box));
}
}
diff --git a/gtk/gtkbutton.c b/gtk/gtkbutton.c
index fedd51ac55..3d54e90362 100644
--- a/gtk/gtkbutton.c
+++ b/gtk/gtkbutton.c
@@ -18,7 +18,7 @@
*/
/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
+ * Modified by the GTK+ Team and others 1997-2001. See the AUTHORS
* file for a list of people on the GTK+ Team. See the ChangeLog
* files for a list of changes. These files are distributed with
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
@@ -33,6 +33,7 @@
#include "gtkhbox.h"
#include "gtkstock.h"
#include "gtkiconfactory.h"
+#include "gtkintl.h"
#define CHILD_SPACING 1
#define DEFAULT_LEFT_POS 4
@@ -55,19 +56,21 @@ enum {
};
enum {
- ARG_0,
- ARG_LABEL,
- ARG_RELIEF
+ PROP_0,
+ PROP_LABEL,
+ PROP_RELIEF
};
static void gtk_button_class_init (GtkButtonClass *klass);
static void gtk_button_init (GtkButton *button);
-static void gtk_button_set_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id);
-static void gtk_button_get_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id);
+static void gtk_button_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void gtk_button_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
static void gtk_button_realize (GtkWidget *widget);
static void gtk_button_unrealize (GtkWidget *widget);
static void gtk_button_size_request (GtkWidget *widget,
@@ -145,8 +148,8 @@ gtk_button_class_init (GtkButtonClass *klass)
parent_class = g_type_class_peek_parent (klass);
- object_class->set_arg = gtk_button_set_arg;
- object_class->get_arg = gtk_button_get_arg;
+ G_OBJECT_CLASS(object_class)->set_property = gtk_button_set_property;
+ G_OBJECT_CLASS(object_class)->get_property = gtk_button_get_property;
widget_class->realize = gtk_button_realize;
widget_class->unrealize = gtk_button_unrealize;
@@ -170,8 +173,22 @@ gtk_button_class_init (GtkButtonClass *klass)
klass->leave = gtk_real_button_leave;
klass->activate = gtk_real_button_activate;
- gtk_object_add_arg_type ("GtkButton::label", GTK_TYPE_STRING, GTK_ARG_READWRITE, ARG_LABEL);
- gtk_object_add_arg_type ("GtkButton::relief", GTK_TYPE_RELIEF_STYLE, GTK_ARG_READWRITE, ARG_RELIEF);
+ g_object_class_install_property (G_OBJECT_CLASS(object_class),
+ PROP_LABEL,
+ g_param_spec_string ("label",
+ _("Label"),
+ _("Text of the label widget inside the button, if the button contains a label widget."),
+ NULL,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ g_object_class_install_property (G_OBJECT_CLASS(object_class),
+ PROP_RELIEF,
+ g_param_spec_enum ("relief",
+ _("Border relief"),
+ _("The border relief style."),
+ GTK_TYPE_RELIEF_STYLE,
+ GTK_RELIEF_NORMAL,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
button_signals[PRESSED] =
gtk_signal_new ("pressed",
@@ -240,19 +257,20 @@ gtk_button_child_type (GtkContainer *container)
}
static void
-gtk_button_set_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id)
+gtk_button_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
GtkButton *button;
button = GTK_BUTTON (object);
- switch (arg_id)
+ switch (prop_id)
{
GtkWidget *child;
- case ARG_LABEL:
+ case PROP_LABEL:
child = GTK_BIN (button)->child;
if (!child)
child = gtk_widget_new (GTK_TYPE_LABEL,
@@ -260,39 +278,43 @@ gtk_button_set_arg (GtkObject *object,
"parent", button,
NULL);
if (GTK_IS_LABEL (child))
- gtk_label_set_text (GTK_LABEL (child),
- GTK_VALUE_STRING (*arg) ? GTK_VALUE_STRING (*arg) : "");
+ {
+ gtk_label_set_text (GTK_LABEL (child),
+ g_value_get_string (value) ? g_value_get_string (value) : "");
+ }
break;
- case ARG_RELIEF:
- gtk_button_set_relief (button, GTK_VALUE_ENUM (*arg));
+ case PROP_RELIEF:
+ gtk_button_set_relief (button, g_value_get_enum (value));
break;
default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
static void
-gtk_button_get_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id)
+gtk_button_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
{
GtkButton *button;
button = GTK_BUTTON (object);
- switch (arg_id)
+ switch (prop_id)
{
- case ARG_LABEL:
+ case PROP_LABEL:
if (GTK_BIN (button)->child && GTK_IS_LABEL (GTK_BIN (button)->child))
- GTK_VALUE_STRING (*arg) = g_strdup (GTK_LABEL (GTK_BIN (button)->child)->label);
+ g_value_set_string(value, g_strdup (GTK_LABEL (GTK_BIN (button)->child)->label));
else
- GTK_VALUE_STRING (*arg) = NULL;
+ g_value_set_string(value, NULL);
break;
- case ARG_RELIEF:
- GTK_VALUE_ENUM (*arg) = gtk_button_get_relief (button);
+ case PROP_RELIEF:
+ g_value_set_enum(value, gtk_button_get_relief (button));
break;
default:
- arg->type = GTK_TYPE_INVALID;
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
@@ -445,6 +467,7 @@ gtk_button_set_relief (GtkButton *button,
g_return_if_fail (GTK_IS_BUTTON (button));
button->relief = newrelief;
+ g_object_notify(G_OBJECT(button), "relief");
gtk_widget_queue_draw (GTK_WIDGET (button));
}
diff --git a/gtk/gtkbutton.h b/gtk/gtkbutton.h
index 0e9934931a..525b9cce65 100644
--- a/gtk/gtkbutton.h
+++ b/gtk/gtkbutton.h
@@ -18,7 +18,7 @@
*/
/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
+ * Modified by the GTK+ Team and others 1997-2001. See the AUTHORS
* file for a list of people on the GTK+ Team. See the ChangeLog
* files for a list of changes. These files are distributed with
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
diff --git a/gtk/gtkcheckmenuitem.c b/gtk/gtkcheckmenuitem.c
index a7cabb7361..d76bbe256f 100644
--- a/gtk/gtkcheckmenuitem.c
+++ b/gtk/gtkcheckmenuitem.c
@@ -18,7 +18,7 @@
*/
/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
+ * Modified by the GTK+ Team and others 1997-2001. See the AUTHORS
* file for a list of people on the GTK+ Team. See the ChangeLog
* files for a list of changes. These files are distributed with
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
@@ -27,6 +27,7 @@
#include "gtkcheckmenuitem.h"
#include "gtkaccellabel.h"
#include "gtksignal.h"
+#include "gtkintl.h"
#define CHECK_TOGGLE_SIZE 12
@@ -35,6 +36,11 @@ enum {
LAST_SIGNAL
};
+enum {
+ PROP_0,
+ PROP_ACTIVE,
+ PROP_INCONSISTENT
+};
static void gtk_check_menu_item_class_init (GtkCheckMenuItemClass *klass);
static void gtk_check_menu_item_init (GtkCheckMenuItem *check_menu_item);
@@ -47,6 +53,14 @@ static void gtk_check_menu_item_draw_indicator (GtkCheckMenuItem *che
GdkRectangle *area);
static void gtk_real_check_menu_item_draw_indicator (GtkCheckMenuItem *check_menu_item,
GdkRectangle *area);
+static void gtk_check_menu_item_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void gtk_check_menu_item_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
static GtkMenuItemClass *parent_class = NULL;
@@ -90,6 +104,25 @@ gtk_check_menu_item_class_init (GtkCheckMenuItemClass *klass)
menu_item_class = (GtkMenuItemClass*) klass;
parent_class = gtk_type_class (GTK_TYPE_MENU_ITEM);
+
+ G_OBJECT_CLASS(object_class)->set_property = gtk_check_menu_item_set_property;
+ G_OBJECT_CLASS(object_class)->get_property = gtk_check_menu_item_get_property;
+
+ g_object_class_install_property (G_OBJECT_CLASS (object_class),
+ PROP_ACTIVE,
+ g_param_spec_boolean ("active",
+ _("Active"),
+ _("Whether the menu item is checked."),
+ FALSE,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ g_object_class_install_property (G_OBJECT_CLASS (object_class),
+ PROP_ACTIVE,
+ g_param_spec_boolean ("inconsistent",
+ _("Inconsistent"),
+ _("Whether to display an \"inconsistent\" state."),
+ FALSE,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
widget_class->expose_event = gtk_check_menu_item_expose;
@@ -142,7 +175,10 @@ gtk_check_menu_item_set_active (GtkCheckMenuItem *check_menu_item,
is_active = is_active != 0;
if (check_menu_item->active != is_active)
- gtk_menu_item_activate (GTK_MENU_ITEM (check_menu_item));
+ {
+ gtk_menu_item_activate (GTK_MENU_ITEM (check_menu_item));
+ g_object_notify (G_OBJECT(check_menu_item), "active");
+ }
}
static void
@@ -200,6 +236,7 @@ gtk_check_menu_item_set_inconsistent (GtkCheckMenuItem *check_menu_item,
{
check_menu_item->inconsistent = setting;
gtk_widget_queue_draw (GTK_WIDGET (check_menu_item));
+ g_object_notify (G_OBJECT (check_menu_item), "inconsistent");
}
}
@@ -326,3 +363,49 @@ gtk_real_check_menu_item_draw_indicator (GtkCheckMenuItem *check_menu_item,
}
}
}
+
+
+static void
+gtk_check_menu_item_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ GtkCheckMenuItem *checkitem = GTK_CHECK_MENU_ITEM (object);
+
+ switch (prop_id)
+ {
+ case PROP_ACTIVE:
+ g_value_set_boolean (value, checkitem->active);
+ break;
+ case PROP_INCONSISTENT:
+ g_value_set_boolean (value, checkitem->inconsistent);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+static void
+gtk_check_menu_item_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GtkCheckMenuItem *checkitem = GTK_CHECK_MENU_ITEM (object);
+
+ switch (prop_id)
+ {
+ case PROP_ACTIVE:
+ gtk_check_menu_item_set_active (checkitem, g_value_get_boolean (value));
+ break;
+ case PROP_INCONSISTENT:
+ gtk_check_menu_item_set_inconsistent (checkitem, g_value_get_boolean (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
diff --git a/gtk/gtkcheckmenuitem.h b/gtk/gtkcheckmenuitem.h
index 010088c366..87317741f7 100644
--- a/gtk/gtkcheckmenuitem.h
+++ b/gtk/gtkcheckmenuitem.h
@@ -18,7 +18,7 @@
*/
/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
+ * Modified by the GTK+ Team and others 1997-2001. See the AUTHORS
* file for a list of people on the GTK+ Team. See the ChangeLog
* files for a list of changes. These files are distributed with
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
@@ -72,14 +72,16 @@ GtkWidget* gtk_check_menu_item_new (void);
GtkWidget* gtk_check_menu_item_new_with_label (const gchar *label);
void gtk_check_menu_item_set_active (GtkCheckMenuItem *check_menu_item,
gboolean is_active);
-void gtk_check_menu_item_set_show_toggle (GtkCheckMenuItem *menu_item,
- gboolean always);
void gtk_check_menu_item_toggled (GtkCheckMenuItem *check_menu_item);
void gtk_check_menu_item_set_inconsistent (GtkCheckMenuItem *check_menu_item,
gboolean setting);
gboolean gtk_check_menu_item_get_inconsistent (GtkCheckMenuItem *check_menu_item);
+#ifndef GTK_DISABLE_DEPRECATED
+void gtk_check_menu_item_set_show_toggle (GtkCheckMenuItem *menu_item,
+ gboolean always);
+#endif
#ifdef __cplusplus
}
diff --git a/gtk/gtkfilesel.c b/gtk/gtkfilesel.c
index cbb3b374a7..130a81eab7 100644
--- a/gtk/gtkfilesel.c
+++ b/gtk/gtkfilesel.c
@@ -225,6 +225,11 @@ struct _CompletionState
struct _CompletionUserDir *user_directories;
};
+enum {
+ PROP_0,
+ PROP_SHOW_FILEOPS,
+ PROP_FILENAME
+};
/* File completion functions which would be external, were they used
* outside of this file.
@@ -339,6 +344,14 @@ static void update_cmpl(PossibleCompletion* poss,
CompletionState* cmpl_state);
static void gtk_file_selection_class_init (GtkFileSelectionClass *klass);
+static void gtk_file_selection_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void gtk_file_selection_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
static void gtk_file_selection_init (GtkFileSelection *filesel);
static void gtk_file_selection_destroy (GtkObject *object);
static gint gtk_file_selection_key_press (GtkWidget *widget,
@@ -472,15 +485,94 @@ gtk_file_selection_get_type (void)
static void
gtk_file_selection_class_init (GtkFileSelectionClass *class)
{
+ GObjectClass *gobject_class;
GtkObjectClass *object_class;
+ gobject_class = (GObjectClass*) class;
object_class = (GtkObjectClass*) class;
parent_class = gtk_type_class (GTK_TYPE_DIALOG);
+ gobject_class->set_property = gtk_file_selection_set_property;
+ gobject_class->get_property = gtk_file_selection_get_property;
+
+ g_object_class_install_property (gobject_class,
+ PROP_FILENAME,
+ g_param_spec_string ("filename",
+ _("Filename"),
+ _("The currently selected filename."),
+ NULL,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+ g_object_class_install_property (gobject_class,
+ PROP_SHOW_FILEOPS,
+ g_param_spec_boolean ("show_fileops",
+ _("Show file operations"),
+ _("Whether buttons for creating/manipulating files should be displayed."),
+ FALSE,
+ G_PARAM_READABLE |
+ G_PARAM_WRITABLE));
object_class->destroy = gtk_file_selection_destroy;
}
+static void gtk_file_selection_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GtkFileSelection *filesel;
+
+ filesel = GTK_FILE_SELECTION (object);
+
+ switch (prop_id)
+ {
+ case PROP_FILENAME:
+ gtk_file_selection_set_filename (filesel,
+ g_value_get_string (value));
+ break;
+
+ case PROP_SHOW_FILEOPS:
+ if (g_value_get_boolean (value))
+ gtk_file_selection_show_fileop_buttons (filesel);
+ else
+ gtk_file_selection_hide_fileop_buttons (filesel);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void gtk_file_selection_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ GtkFileSelection *filesel;
+
+ filesel = GTK_FILE_SELECTION (object);
+
+ switch (prop_id)
+ {
+ case PROP_FILENAME:
+ g_value_set_string (value,
+ gtk_file_selection_get_filename(filesel));
+ break;
+
+ case PROP_SHOW_FILEOPS:
+ /* This is a little bit hacky, but doing otherwise would require
+ * adding a field to the object.
+ */
+ g_value_set_boolean (value, (filesel->fileop_c_dir &&
+ filesel->fileop_del_file &&
+ filesel->fileop_ren_file));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
static void
gtk_file_selection_init (GtkFileSelection *filesel)
{
@@ -681,7 +773,7 @@ gtk_file_selection_show_fileop_buttons (GtkFileSelection *filesel)
filesel->fileop_ren_file, TRUE, TRUE, 0);
gtk_widget_show (filesel->fileop_ren_file);
}
-
+ g_object_notify (G_OBJECT (filesel), "show_fileops");
gtk_widget_queue_resize (GTK_WIDGET (filesel));
}
@@ -708,6 +800,7 @@ gtk_file_selection_hide_fileop_buttons (GtkFileSelection *filesel)
gtk_widget_destroy (filesel->fileop_c_dir);
filesel->fileop_c_dir = NULL;
}
+ g_object_notify (G_OBJECT (filesel), "show_fileops");
}
@@ -742,9 +835,22 @@ gtk_file_selection_set_filename (GtkFileSelection *filesel,
if (filesel->selection_entry)
gtk_entry_set_text (GTK_ENTRY (filesel->selection_entry), name);
g_free (buf);
-}
-
-gchar*
+ g_object_notify (G_OBJECT (filesel), "filename");
+}
+
+/**
+ * gtk_file_selection_get_filename:
+ * @filesel: a #GtkFileSelection
+ *
+ * This function returns the selected filename in the C runtime's
+ * multibyte string encoding, which may or may not be the same as that
+ * used by GTK+ (UTF-8). To convert to UTF-8, call g_filename_to_utf8().
+ * The returned string points to a statically allocated buffer and
+ * should be copied if you plan to keep it around.
+ *
+ * Return value: currently-selected filename in locale's encoding
+ **/
+G_CONST_RETURN gchar*
gtk_file_selection_get_filename (GtkFileSelection *filesel)
{
static gchar nothing[2] = "";
diff --git a/gtk/gtkfilesel.h b/gtk/gtkfilesel.h
index 0132982d16..757c957026 100644
--- a/gtk/gtkfilesel.h
+++ b/gtk/gtkfilesel.h
@@ -93,7 +93,7 @@ void gtk_file_selection_set_filename (GtkFileSelection *filesel,
* The returned string points to a statically allocated buffer and
* should be copied away.
*/
-gchar* gtk_file_selection_get_filename (GtkFileSelection *filesel);
+G_CONST_RETURN gchar* gtk_file_selection_get_filename (GtkFileSelection *filesel);
void gtk_file_selection_complete (GtkFileSelection *filesel,
const gchar *pattern);
diff --git a/gtk/gtkframe.c b/gtk/gtkframe.c
index 76c35bf222..44acb9ad48 100644
--- a/gtk/gtkframe.c
+++ b/gtk/gtkframe.c
@@ -27,27 +27,31 @@
#include <string.h>
#include "gtkframe.h"
#include "gtklabel.h"
+#include "gtkintl.h"
#define LABEL_PAD 1
#define LABEL_SIDE_PAD 2
enum {
- ARG_0,
- ARG_LABEL,
- ARG_LABEL_XALIGN,
- ARG_LABEL_YALIGN,
- ARG_SHADOW
+ PROP_0,
+ PROP_LABEL,
+ PROP_LABEL_XALIGN,
+ PROP_LABEL_YALIGN,
+ PROP_SHADOW,
+ PROP_LABEL_WIDGET
};
static void gtk_frame_class_init (GtkFrameClass *klass);
static void gtk_frame_init (GtkFrame *frame);
-static void gtk_frame_set_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id);
-static void gtk_frame_get_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id);
+static void gtk_frame_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void gtk_frame_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec);
static void gtk_frame_paint (GtkWidget *widget,
GdkRectangle *area);
static gint gtk_frame_expose (GtkWidget *widget,
@@ -101,24 +105,66 @@ gtk_frame_get_type (void)
static void
gtk_frame_class_init (GtkFrameClass *class)
{
+ GObjectClass *gobject_class;
GtkObjectClass *object_class;
GtkWidgetClass *widget_class;
GtkContainerClass *container_class;
+ gobject_class = (GObjectClass*) class;
object_class = GTK_OBJECT_CLASS (class);
widget_class = GTK_WIDGET_CLASS (class);
container_class = GTK_CONTAINER_CLASS (class);
parent_class = gtk_type_class (gtk_bin_get_type ());
- gtk_object_add_arg_type ("GtkFrame::label", GTK_TYPE_STRING, GTK_ARG_READWRITE, ARG_LABEL);
- gtk_object_add_arg_type ("GtkFrame::label_xalign", GTK_TYPE_FLOAT, GTK_ARG_READWRITE, ARG_LABEL_XALIGN);
- gtk_object_add_arg_type ("GtkFrame::label_yalign", GTK_TYPE_FLOAT, GTK_ARG_READWRITE, ARG_LABEL_YALIGN);
- gtk_object_add_arg_type ("GtkFrame::shadow", GTK_TYPE_SHADOW_TYPE, GTK_ARG_READWRITE, ARG_SHADOW);
-
- object_class->set_arg = gtk_frame_set_arg;
- object_class->get_arg = gtk_frame_get_arg;
-
+ gobject_class->set_property = gtk_frame_set_property;
+ gobject_class->get_property = gtk_frame_get_property;
+
+ g_object_class_install_property (gobject_class,
+ PROP_LABEL,
+ g_param_spec_string ("label",
+ _("Label"),
+ _("Text of the frame's label."),
+ NULL,
+ G_PARAM_READABLE |
+ G_PARAM_WRITABLE));
+ g_object_class_install_property (gobject_class,
+ PROP_LABEL_XALIGN,
+ g_param_spec_double ("label_xalign",
+ _("Label xalign"),
+ _("The horizontal alignment of the label."),
+ 0.0,
+ 1.0,
+ 0.5,
+ G_PARAM_READABLE |
+ G_PARAM_WRITABLE));
+ g_object_class_install_property (gobject_class,
+ PROP_LABEL_YALIGN,
+ g_param_spec_double ("label_yalign",
+ _("Label yalign"),
+ _("The vertical alignment of the label."),
+ 0.0,
+ 1.0,
+ 0.5,
+ G_PARAM_READABLE |
+ G_PARAM_WRITABLE));
+ g_object_class_install_property (gobject_class,
+ PROP_SHADOW,
+ g_param_spec_enum ("shadow",
+ _("Frame shadow"),
+ _("Appearance of the frame border."),
+ GTK_TYPE_SHADOW_TYPE,
+ GTK_SHADOW_ETCHED_IN,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ g_object_class_install_property (gobject_class,
+ PROP_LABEL_WIDGET,
+ g_param_spec_object ("label_widget",
+ _("Label widget"),
+ _("A widget to display in place of the usual frame label."),
+ GTK_TYPE_WIDGET,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
widget_class->expose_event = gtk_frame_expose;
widget_class->size_request = gtk_frame_size_request;
widget_class->size_allocate = gtk_frame_size_allocate;
@@ -140,59 +186,72 @@ gtk_frame_init (GtkFrame *frame)
frame->label_yalign = 0.5;
}
-static void
-gtk_frame_set_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id)
+static void
+gtk_frame_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
GtkFrame *frame;
frame = GTK_FRAME (object);
- switch (arg_id)
+ switch (prop_id)
{
- case ARG_LABEL:
- gtk_frame_set_label (frame, GTK_VALUE_STRING (*arg));
+ case PROP_LABEL:
+ gtk_frame_set_label (frame, g_value_get_string (value));
break;
- case ARG_LABEL_XALIGN:
- gtk_frame_set_label_align (frame, GTK_VALUE_FLOAT (*arg), frame->label_yalign);
+ case PROP_LABEL_XALIGN:
+ gtk_frame_set_label_align (frame, g_value_get_double (value),
+ frame->label_yalign);
break;
- case ARG_LABEL_YALIGN:
- gtk_frame_set_label_align (frame, frame->label_xalign, GTK_VALUE_FLOAT (*arg));
+ case PROP_LABEL_YALIGN:
+ gtk_frame_set_label_align (frame, frame->label_xalign,
+ g_value_get_double (value));
break;
- case ARG_SHADOW:
- gtk_frame_set_shadow_type (frame, GTK_VALUE_ENUM (*arg));
+ case PROP_SHADOW:
+ gtk_frame_set_shadow_type (frame, g_value_get_enum (value));
break;
- default:
+ case PROP_LABEL_WIDGET:
+ gtk_frame_set_label_widget (frame, g_value_get_object (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
-static void
-gtk_frame_get_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id)
+static void
+gtk_frame_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
{
GtkFrame *frame;
frame = GTK_FRAME (object);
- switch (arg_id)
+ switch (prop_id)
{
- case ARG_LABEL:
- GTK_VALUE_STRING (*arg) = gtk_frame_get_label (frame);
+ case PROP_LABEL:
+ g_value_set_string (value, gtk_frame_get_label (frame));
+ break;
+ case PROP_LABEL_XALIGN:
+ g_value_set_double (value, frame->label_xalign);
break;
- case ARG_LABEL_XALIGN:
- GTK_VALUE_FLOAT (*arg) = frame->label_xalign;
+ case PROP_LABEL_YALIGN:
+ g_value_set_double (value, frame->label_yalign);
break;
- case ARG_LABEL_YALIGN:
- GTK_VALUE_FLOAT (*arg) = frame->label_yalign;
+ case PROP_SHADOW:
+ g_value_set_enum (value, frame->shadow_type);
break;
- case ARG_SHADOW:
- GTK_VALUE_ENUM (*arg) = frame->shadow_type;
+ case PROP_LABEL_WIDGET:
+ g_value_set_object (value,
+ frame->label_widget ?
+ G_OBJECT (frame->label_widget) : NULL);
break;
default:
- arg->type = GTK_TYPE_INVALID;
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
@@ -255,6 +314,8 @@ gtk_frame_set_label (GtkFrame *frame,
gtk_frame_set_label_widget (frame, child);
}
+
+ g_object_notify (G_OBJECT (frame), "label");
}
/**
@@ -319,9 +380,11 @@ gtk_frame_set_label_widget (GtkFrame *frame,
gtk_widget_set_parent (label_widget, GTK_WIDGET (frame));
need_resize |= GTK_WIDGET_VISIBLE (label_widget);
}
-
+
if (GTK_WIDGET_VISIBLE (frame) && need_resize)
gtk_widget_queue_resize (GTK_WIDGET (frame));
+
+ g_object_notify (G_OBJECT (frame), "label_widget");
}
void
@@ -335,13 +398,19 @@ gtk_frame_set_label_align (GtkFrame *frame,
xalign = CLAMP (xalign, 0.0, 1.0);
yalign = CLAMP (yalign, 0.0, 1.0);
- if ((xalign != frame->label_xalign) || (yalign != frame->label_yalign))
+ if (xalign != frame->label_xalign)
{
frame->label_xalign = xalign;
- frame->label_yalign = yalign;
+ g_object_notify (G_OBJECT (frame), "label_xalign");
+ }
- gtk_widget_queue_resize (GTK_WIDGET (frame));
+ if (yalign != frame->label_yalign)
+ {
+ frame->label_yalign = yalign;
+ g_object_notify (G_OBJECT (frame), "label_yalign");
}
+
+ gtk_widget_queue_resize (GTK_WIDGET (frame));
}
void
@@ -354,11 +423,13 @@ gtk_frame_set_shadow_type (GtkFrame *frame,
if ((GtkShadowType) frame->shadow_type != type)
{
frame->shadow_type = type;
+ g_object_notify (G_OBJECT (frame), "shadow");
if (GTK_WIDGET_DRAWABLE (frame))
{
gtk_widget_queue_clear (GTK_WIDGET (frame));
}
+
gtk_widget_queue_resize (GTK_WIDGET (frame));
}
}
diff --git a/gtk/gtkhandlebox.c b/gtk/gtkhandlebox.c
index 1f748d826f..7ab2781ba8 100644
--- a/gtk/gtkhandlebox.c
+++ b/gtk/gtkhandlebox.c
@@ -30,12 +30,13 @@
#include "gtkmain.h"
#include "gtksignal.h"
#include "gtkwindow.h"
+#include "gtkintl.h"
enum {
- ARG_0,
- ARG_SHADOW,
- ARG_HANDLE_POSITION,
- ARG_SNAP_EDGE
+ PROP_0,
+ PROP_SHADOW,
+ PROP_HANDLE_POSITION,
+ PROP_SNAP_EDGE
};
#define DRAG_HANDLE_SIZE 10
@@ -91,12 +92,14 @@ enum {
static void gtk_handle_box_class_init (GtkHandleBoxClass *klass);
static void gtk_handle_box_init (GtkHandleBox *handle_box);
-static void gtk_handle_box_set_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id);
-static void gtk_handle_box_get_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id);
+static void gtk_handle_box_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void gtk_handle_box_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec);
static void gtk_handle_box_destroy (GtkObject *object);
static void gtk_handle_box_map (GtkWidget *widget);
static void gtk_handle_box_unmap (GtkWidget *widget);
@@ -159,24 +162,47 @@ gtk_handle_box_get_type (void)
static void
gtk_handle_box_class_init (GtkHandleBoxClass *class)
{
+ GObjectClass *gobject_class;
GtkObjectClass *object_class;
GtkWidgetClass *widget_class;
GtkContainerClass *container_class;
+ gobject_class = (GObjectClass *) class;
object_class = (GtkObjectClass *) class;
widget_class = (GtkWidgetClass *) class;
container_class = (GtkContainerClass *) class;
parent_class = gtk_type_class (GTK_TYPE_BIN);
-
- gtk_object_add_arg_type ("GtkHandleBox::shadow", GTK_TYPE_SHADOW_TYPE, GTK_ARG_READWRITE, ARG_SHADOW);
- gtk_object_add_arg_type ("GtkHandleBox::handle_position", GTK_TYPE_POSITION_TYPE, GTK_ARG_READWRITE, ARG_HANDLE_POSITION);
- gtk_object_add_arg_type ("GtkHandleBox::snap_edge", GTK_TYPE_POSITION_TYPE, GTK_ARG_READWRITE, ARG_SNAP_EDGE);
- object_class->set_arg = gtk_handle_box_set_arg;
- object_class->get_arg = gtk_handle_box_get_arg;
+ gobject_class->set_property = gtk_handle_box_set_property;
+ gobject_class->get_property = gtk_handle_box_get_property;
+
+ g_object_class_install_property (gobject_class,
+ PROP_SHADOW,
+ g_param_spec_enum ("shadow",
+ _("Shadow type"),
+ _("Appearance of the shadow that surrounds the container."),
+ GTK_TYPE_SHADOW_TYPE,
+ GTK_SHADOW_ETCHED_OUT,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+ g_object_class_install_property (gobject_class,
+ PROP_HANDLE_POSITION,
+ g_param_spec_enum ("handle_position",
+ _("Handle position"),
+ _("Position of the handle relative to the child widget."),
+ GTK_TYPE_POSITION_TYPE,
+ GTK_POS_LEFT,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+ g_object_class_install_property (gobject_class,
+ PROP_SNAP_EDGE,
+ g_param_spec_enum ("snap_edge",
+ _("Snap edge"),
+ _("Side of the handlebox that's lined up with the docking point to dock the handlebox."),
+ GTK_TYPE_POSITION_TYPE,
+ GTK_POS_LEFT,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
object_class->destroy = gtk_handle_box_destroy;
widget_class->map = gtk_handle_box_map;
@@ -232,47 +258,52 @@ gtk_handle_box_init (GtkHandleBox *handle_box)
handle_box->snap_edge = -1;
}
-static void
-gtk_handle_box_set_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id)
+static void
+gtk_handle_box_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
GtkHandleBox *handle_box = GTK_HANDLE_BOX (object);
- switch (arg_id)
+ switch (prop_id)
{
- case ARG_SHADOW:
- gtk_handle_box_set_shadow_type (handle_box, GTK_VALUE_ENUM (*arg));
+ case PROP_SHADOW:
+ gtk_handle_box_set_shadow_type (handle_box, g_value_get_enum (value));
+ break;
+ case PROP_HANDLE_POSITION:
+ gtk_handle_box_set_handle_position (handle_box, g_value_get_enum (value));
break;
- case ARG_HANDLE_POSITION:
- gtk_handle_box_set_handle_position (handle_box, GTK_VALUE_ENUM (*arg));
+ case PROP_SNAP_EDGE:
+ gtk_handle_box_set_snap_edge (handle_box, g_value_get_enum (value));
break;
- case ARG_SNAP_EDGE:
- gtk_handle_box_set_snap_edge (handle_box, GTK_VALUE_ENUM (*arg));
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
-static void
-gtk_handle_box_get_arg (GtkObject *object,
- GtkArg *arg,
- guint arg_id)
+static void
+gtk_handle_box_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
{
GtkHandleBox *handle_box = GTK_HANDLE_BOX (object);
- switch (arg_id)
+ switch (prop_id)
{
- case ARG_SHADOW:
- GTK_VALUE_ENUM (*arg) = handle_box->shadow_type;
+ case PROP_SHADOW:
+ g_value_set_enum (value, handle_box->shadow_type);
break;
- case ARG_HANDLE_POSITION:
- GTK_VALUE_ENUM (*arg) = handle_box->handle_position;
+ case PROP_HANDLE_POSITION:
+ g_value_set_enum (value, handle_box->handle_position);
break;
- case ARG_SNAP_EDGE:
- GTK_VALUE_ENUM (*arg) = handle_box->snap_edge;
+ case PROP_SNAP_EDGE:
+ g_value_set_enum (value, handle_box->snap_edge);
break;
default:
- arg->type = GTK_TYPE_INVALID;
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
@@ -712,6 +743,7 @@ gtk_handle_box_set_shadow_type (GtkHandleBox *handle_box,
if ((GtkShadowType) handle_box->shadow_type != type)
{
handle_box->shadow_type = type;
+ g_object_notify (G_OBJECT (handle_box), "shadow");
gtk_widget_queue_resize (GTK_WIDGET (handle_box));
}
}
@@ -723,6 +755,7 @@ gtk_handle_box_set_handle_position (GtkHandleBox *handle_box,
if ((GtkPositionType) handle_box->handle_position != position)
{
handle_box->handle_position = position;
+ g_object_notify (G_OBJECT (handle_box), "handle_position");
gtk_widget_queue_resize (GTK_WIDGET (handle_box));
}
}
@@ -734,7 +767,11 @@ gtk_handle_box_set_snap_edge (GtkHandleBox *handle_box,
g_return_if_fail (handle_box != NULL);
g_return_if_fail (GTK_IS_HANDLE_BOX (handle_box));
- handle_box->snap_edge = edge;
+ if (handle_box->snap_edge != edge)
+ {
+ handle_box->snap_edge = edge;
+ g_object_notify (G_OBJECT (handle_box), "snap_edge");
+ }
}
static void