aboutsummaryrefslogtreecommitdiff
path: root/src/ld-symbol.c
diff options
context:
space:
mode:
authorPřemysl Janouch <p.janouch@gmail.com>2010-10-27 15:52:36 +0200
committerPřemysl Janouch <p.janouch@gmail.com>2010-10-27 16:52:00 +0200
commit9156953cc95cd4d814ea0ad0e9407efc9a6a0a7d (patch)
tree9bb740c24230eb0d4c5d79fa6ad684ca1f328eb3 /src/ld-symbol.c
parentaa33db342b4fc194cdb4966381ac1e5f44b73465 (diff)
downloadlogdiag-9156953cc95cd4d814ea0ad0e9407efc9a6a0a7d.tar.gz
logdiag-9156953cc95cd4d814ea0ad0e9407efc9a6a0a7d.tar.xz
logdiag-9156953cc95cd4d814ea0ad0e9407efc9a6a0a7d.zip
Add more properties to LdSymbol.
Also move the actual storage of symbol properties to implementations of the abstract LdSymbol class. All the properties are read only.
Diffstat (limited to 'src/ld-symbol.c')
-rw-r--r--src/ld-symbol.c107
1 files changed, 55 insertions, 52 deletions
diff --git a/src/ld-symbol.c b/src/ld-symbol.c
index c1d9abf..92e0baa 100644
--- a/src/ld-symbol.c
+++ b/src/ld-symbol.c
@@ -26,21 +26,14 @@
* drawn onto the #LdCanvas.
*/
-/*
- * LdSymbolPrivate:
- * @name: The name of this symbol.
- */
-struct _LdSymbolPrivate
-{
- gchar *name;
-};
-
G_DEFINE_ABSTRACT_TYPE (LdSymbol, ld_symbol, G_TYPE_OBJECT);
enum
{
PROP_0,
- PROP_NAME
+ PROP_NAME,
+ PROP_HUMAN_NAME,
+ /* TODO: Property for the area. */
};
static void
@@ -63,7 +56,6 @@ ld_symbol_class_init (LdSymbolClass *klass)
object_class = G_OBJECT_CLASS (klass);
object_class->get_property = ld_symbol_get_property;
object_class->set_property = ld_symbol_set_property;
- object_class->finalize = ld_symbol_finalize;
/**
* LdSymbol:name:
@@ -72,17 +64,23 @@ ld_symbol_class_init (LdSymbolClass *klass)
*/
pspec = g_param_spec_string ("name", "Name",
"The name of this symbol.",
- "", G_PARAM_READWRITE);
+ "", G_PARAM_READABLE);
g_object_class_install_property (object_class, PROP_NAME, pspec);
- g_type_class_add_private (klass, sizeof (LdSymbolPrivate));
+/**
+ * LdSymbol:human-name:
+ *
+ * The localized human name of this symbol.
+ */
+ pspec = g_param_spec_string ("human-name", "Human name",
+ "The localized human name of this symbol.",
+ "", G_PARAM_READABLE);
+ g_object_class_install_property (object_class, PROP_HUMAN_NAME, pspec);
}
static void
ld_symbol_init (LdSymbol *self)
{
- self->priv = G_TYPE_INSTANCE_GET_PRIVATE
- (self, LD_TYPE_SYMBOL, LdSymbolPrivate);
}
static void
@@ -97,6 +95,9 @@ ld_symbol_get_property (GObject *object, guint property_id,
case PROP_NAME:
g_value_set_string (value, ld_symbol_get_name (self));
break;
+ case PROP_HUMAN_NAME:
+ g_value_set_string (value, ld_symbol_get_human_name (self));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
@@ -106,62 +107,64 @@ static void
ld_symbol_set_property (GObject *object, guint property_id,
const GValue *value, GParamSpec *pspec)
{
- LdSymbol *self;
-
- self = LD_SYMBOL (object);
- switch (property_id)
- {
- case PROP_NAME:
- ld_symbol_set_name (self, g_value_get_string (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- }
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
-static void
-ld_symbol_finalize (GObject *gobject)
-{
- LdSymbol *self;
- self = LD_SYMBOL (gobject);
+/**
+ * ld_symbol_get_name:
+ * @self: An #LdSymbol object.
+ *
+ * Return value: The name of the symbol.
+ */
+const gchar *
+ld_symbol_get_name (LdSymbol *self)
+{
+ LdSymbolClass *klass;
- if (self->priv->name)
- g_free (self->priv->name);
+ g_return_if_fail (LD_IS_SYMBOL (self));
- /* Chain up to the parent class. */
- G_OBJECT_CLASS (ld_symbol_parent_class)->finalize (gobject);
+ klass = LD_SYMBOL_GET_CLASS (self);
+ g_return_val_if_fail (klass->get_name != NULL, NULL);
+ return klass->get_name (self);
}
/**
- * ld_symbol_set_name:
+ * ld_symbol_get_human_name:
* @self: An #LdSymbol object.
- * @name: A new name for the symbol.
*
- * Set the name of a symbol.
+ * Return value: The localised human name of the symbol.
*/
-void
-ld_symbol_set_name (LdSymbol *self, const gchar *name)
+const gchar *
+ld_symbol_get_human_name (LdSymbol *self)
{
+ LdSymbolClass *klass;
+
g_return_if_fail (LD_IS_SYMBOL (self));
- g_return_if_fail (name != NULL);
- if (self->priv->name)
- g_free (self->priv->name);
- self->priv->name = g_strdup (name);
+ klass = LD_SYMBOL_GET_CLASS (self);
+ g_return_val_if_fail (klass->get_human_name != NULL, NULL);
+ return klass->get_human_name (self);
}
/**
- * ld_symbol_get_name:
- * @self: An #LdSymbol object.
+ * ld_symbol_get_area:
+ * @self: A symbol object.
+ * @area: Where the area of the symbol will be returned.
*
- * Return value: The name of the symbol.
+ * Get the area of the symbol.
*/
-const gchar *
-ld_symbol_get_name (LdSymbol *self)
+void
+ld_symbol_get_area (LdSymbol *self, LdSymbolArea *area)
{
+ LdSymbolClass *klass;
+
g_return_if_fail (LD_IS_SYMBOL (self));
- return self->priv->name;
+ g_return_if_fail (area != NULL);
+
+ klass = LD_SYMBOL_GET_CLASS (self);
+ g_return_if_fail (klass->get_area != NULL);
+ klass->get_area (self, area);
}
/**
@@ -180,6 +183,6 @@ ld_symbol_draw (LdSymbol *self, cairo_t *cr)
g_return_if_fail (cr != NULL);
klass = LD_SYMBOL_GET_CLASS (self);
- if (klass->draw)
- klass->draw (self, cr);
+ g_return_if_fail (klass->draw != NULL);
+ klass->draw (self, cr);
}