summaryrefslogtreecommitdiff
path: root/gtk/gtkbbox.c
diff options
context:
space:
mode:
authorAlexander Larsson <alla@lysator.liu.se>2001-05-17 16:22:06 +0000
committerAlexander Larsson <alexl@src.gnome.org>2001-05-17 16:22:06 +0000
commit6ee1ae13adafbb6a0ac5a75a948f0a9bc8f0e751 (patch)
treebd9689851eabea933a0ef00c0ad9c97c376b62cd /gtk/gtkbbox.c
parentbe277ae41303b9d5ba92a911360e66f197c82eba (diff)
downloadgtk+-6ee1ae13adafbb6a0ac5a75a948f0a9bc8f0e751.tar.gz
Add properties, based on patch by Lee Mallabone.GTK_MULTIHEAD_MERGE1
2001-05-17 Alexander Larsson <alla@lysator.liu.se> * gtk/gtkbbox.c: Add properties, based on patch by Lee Mallabone. * gtk/gtknotebook.c: * gtk/gtktoolbar.c: Convert from GtkArg to GParam, based on patch by John Margaglione. * gtk/gtkhscale.c: * gtk/gtkvscale.c: * gtk/gtkhscrollbar.c: * gtk/gtkvscrollbar.c: * gtk/gtkrange.c: Move adjustment property to GtkRange. * gtk/gtklabel.c: Setup mnemonics on property changes * gtk/gtkwidget.c (gtk_widget_get_property): GdkExtensionMode is an enum, not a flag. Set it with g_value_set_enum (). * tests/prop-editor.c: Better propery editor. * tests/testgtk.c: Add new property test. Pass zero to the property editor to get properties from all derived types.
Diffstat (limited to 'gtk/gtkbbox.c')
-rw-r--r--gtk/gtkbbox.c70
1 files changed, 69 insertions, 1 deletions
diff --git a/gtk/gtkbbox.c b/gtk/gtkbbox.c
index 51f2bb5e14..81b02d401e 100644
--- a/gtk/gtkbbox.c
+++ b/gtk/gtkbbox.c
@@ -27,9 +27,22 @@
#include "gtkbbox.h"
#include "gtkintl.h"
+enum {
+ PROP_0,
+ PROP_LAYOUT_STYLE,
+ PROP_LAST
+};
static void gtk_button_box_class_init (GtkButtonBoxClass *klass);
static void gtk_button_box_init (GtkButtonBox *box);
+static void gtk_button_box_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void gtk_button_box_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
#define DEFAULT_CHILD_MIN_WIDTH 85
#define DEFAULT_CHILD_MIN_HEIGHT 27
@@ -65,9 +78,14 @@ static void
gtk_button_box_class_init (GtkButtonBoxClass *class)
{
GtkWidgetClass *widget_class;
+ GObjectClass *gobject_class;
+ gobject_class = G_OBJECT_CLASS (class);
widget_class = (GtkWidgetClass*) class;
+ gobject_class->set_property = gtk_button_box_set_property;
+ gobject_class->get_property = gtk_button_box_get_property;
+
/* FIXME we need to override the "spacing" property on GtkBox once
* libgobject allows that.
*/
@@ -107,6 +125,14 @@ gtk_button_box_class_init (GtkButtonBoxClass *class)
G_MAXINT,
DEFAULT_CHILD_IPAD_Y,
G_PARAM_READABLE));
+ g_object_class_install_property (gobject_class,
+ PROP_LAYOUT_STYLE,
+ g_param_spec_enum ("layout_style",
+ _("Layout style"),
+ _("How to layout the buttons in the box. Possible values are default, spread, edge, start and end"),
+ GTK_TYPE_BUTTON_BOX_STYLE,
+ GTK_BUTTONBOX_DEFAULT_STYLE,
+ G_PARAM_READWRITE));
}
static void
@@ -120,6 +146,43 @@ gtk_button_box_init (GtkButtonBox *button_box)
button_box->layout_style = GTK_BUTTONBOX_DEFAULT_STYLE;
}
+static void
+gtk_button_box_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ switch (prop_id)
+ {
+ case PROP_LAYOUT_STYLE:
+ gtk_button_box_set_layout (GTK_BUTTON_BOX (object),
+ g_value_get_enum (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+gtk_button_box_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ switch (prop_id)
+ {
+ case PROP_LAYOUT_STYLE:
+ g_value_set_enum (value, GTK_BUTTON_BOX (object)->layout_style);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
/* set per widget values for spacing, child size and child internal padding */
void gtk_button_box_set_child_size (GtkButtonBox *widget, gint width, gint height)
@@ -141,7 +204,12 @@ void gtk_button_box_set_layout (GtkButtonBox *widget,
g_return_if_fail (layout_style >= GTK_BUTTONBOX_DEFAULT_STYLE &&
layout_style <= GTK_BUTTONBOX_END);
- widget->layout_style = layout_style;
+ if (widget->layout_style != layout_style)
+ {
+ widget->layout_style = layout_style;
+ g_object_notify (G_OBJECT (widget), "layout_style");
+ gtk_widget_queue_resize (GTK_WIDGET (widget));
+ }
}