summaryrefslogtreecommitdiff
path: root/gtk/gtkframe.c
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2001-03-23 23:39:24 +0000
committerHavoc Pennington <hp@src.gnome.org>2001-03-23 23:39:24 +0000
commitdc0cd67d601ffd603a0429fe956f8178b1217dae (patch)
tree9f19989db0f5a59e840c654509d18ffcd3c61544 /gtk/gtkframe.c
parent4291350f89e3e4d17c0587076cbb73e25cf49077 (diff)
downloadgtk+-dc0cd67d601ffd603a0429fe956f8178b1217dae.tar.gz
Apply property patch from Lee Mallabone
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
Diffstat (limited to 'gtk/gtkframe.c')
-rw-r--r--gtk/gtkframe.c173
1 files changed, 122 insertions, 51 deletions
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));
}
}