im.pidgin.pidgin.next.minor: eb98a9d415b707f51d82a14c06c9b2314199a4b8

sadrul at pidgin.im sadrul at pidgin.im
Fri Nov 9 22:25:36 EST 2007


-----------------------------------------------------------------
Revision: eb98a9d415b707f51d82a14c06c9b2314199a4b8
Ancestor: c21f2ec4d6e64ef5c63f09a0624aa59bb78f6df3
Author: sadrul at pidgin.im
Date: 2007-11-09T01:45:10
Branch: im.pidgin.pidgin.next.minor

Modified files:
        finch/libgnt/gntlabel.c

ChangeLog: 

Use gobject properties for labels.

-------------- next part --------------
============================================================
--- finch/libgnt/gntlabel.c	bc3ac6c580055c82b5d038b2ea6b3b87d0512208
+++ finch/libgnt/gntlabel.c	a0a86a12b54be5c5fb31892e2910fb4f1d20208f
@@ -27,6 +27,13 @@ enum
 
 enum
 {
+	PROP_0,
+	PROP_TEXT,
+	PROP_TEXT_FLAG
+};
+
+enum
+{
 	SIGS = 1,
 };
 
@@ -61,14 +68,72 @@ static void
 }
 
 static void
+gnt_label_set_property(GObject *obj, guint prop_id, const GValue *value,
+		GParamSpec *spec)
+{
+	GntLabel *label = GNT_LABEL(obj);
+	switch (prop_id) {
+		case PROP_TEXT:
+			g_free(label->text);
+			label->text = gnt_util_onscreen_fit_string(g_value_get_string(value), -1);
+			break;
+		case PROP_TEXT_FLAG:
+			label->flags = g_value_get_int(value);
+			break;
+		default:
+			g_return_if_reached();
+			break;
+	}
+}
+
+static void
+gnt_label_get_property(GObject *obj, guint prop_id, GValue *value,
+		GParamSpec *spec)
+{
+	GntLabel *label = GNT_LABEL(obj);
+	switch (prop_id) {
+		case PROP_TEXT:
+			g_value_set_string(value, label->text);
+			break;
+		case PROP_TEXT_FLAG:
+			g_value_set_int(value, label->flags);
+			break;
+		default:
+			break;
+	}
+}
+
+static void
 gnt_label_class_init(GntLabelClass *klass)
 {
+	GObjectClass *gclass = G_OBJECT_CLASS(klass);
+
 	parent_class = GNT_WIDGET_CLASS(klass);
 	parent_class->destroy = gnt_label_destroy;
 	parent_class->draw = gnt_label_draw;
 	parent_class->map = NULL;
 	parent_class->size_request = gnt_label_size_request;
 
+	gclass->set_property = gnt_label_set_property;
+	gclass->get_property = gnt_label_get_property;
+
+	g_object_class_install_property(gclass,
+			PROP_TEXT,
+			g_param_spec_string("text", "Text",
+				"The text for the label.",
+				NULL,
+				G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB
+			)
+		);
+
+	g_object_class_install_property(gclass,
+			PROP_TEXT_FLAG,
+			g_param_spec_int("text-flag", "Text flag",
+				"Text attribute to use when displaying the text in the label.",
+				GNT_TEXT_FLAG_NORMAL, GNT_TEXT_FLAG_HIGHLIGHT, GNT_TEXT_FLAG_NORMAL,
+				G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB
+			)
+		);
 	GNTDEBUG;
 }
 
@@ -76,6 +141,8 @@ gnt_label_init(GTypeInstance *instance, 
 gnt_label_init(GTypeInstance *instance, gpointer class)
 {
 	GntWidget *widget = GNT_WIDGET(instance);
+	gnt_widget_set_take_focus(widget, FALSE);
+	GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_NO_BORDER | GNT_WIDGET_NO_SHADOW);
 	GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_GROW_X);
 	widget->priv.minw = 3;
 	widget->priv.minh = 1;
@@ -120,21 +187,13 @@ GntWidget *gnt_label_new_with_format(con
 
 GntWidget *gnt_label_new_with_format(const char *text, GntTextFormatFlags flags)
 {
-	GntWidget *widget = g_object_new(GNT_TYPE_LABEL, NULL);
-	GntLabel *label = GNT_LABEL(widget);
-
-	label->text = gnt_util_onscreen_fit_string(text, -1);
-	label->flags = flags;
-	gnt_widget_set_take_focus(widget, FALSE);
-	GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_NO_BORDER | GNT_WIDGET_NO_SHADOW);
-
+	GntWidget *widget = g_object_new(GNT_TYPE_LABEL, "text-flag", flags, "text", text, NULL);
 	return widget;
 }
 
 void gnt_label_set_text(GntLabel *label, const char *text)
 {
-	g_free(label->text);
-	label->text = gnt_util_onscreen_fit_string(text, -1);
+	g_object_set(label, "text", text, NULL);
 
 	if (GNT_WIDGET(label)->window)
 	{


More information about the Commits mailing list