From b8389f673646b32c7272f5169f4f757adb78e449 Mon Sep 17 00:00:00 2001 From: Dorota Czaplejewicz Date: Wed, 31 Jul 2019 15:01:12 +0000 Subject: [PATCH] symbol: Simplify symbol storage --- eek/eek-keysym.c | 112 +++----------- eek/eek-keysym.h | 17 +-- eek/eek-symbol-matrix.c | 12 +- eek/eek-symbol.c | 282 ++++-------------------------------- eek/eek-symbol.h | 60 ++++++-- eek/eek-text.c | 155 +------------------- eek/eek-text.h | 12 +- eek/eek-types.h | 1 - eek/eek-xml-layout.c | 6 +- eekboard/eekboard-context.c | 23 --- 10 files changed, 114 insertions(+), 566 deletions(-) diff --git a/eek/eek-keysym.c b/eek/eek-keysym.c index a02cb3b4..5518e546 100644 --- a/eek/eek-keysym.c +++ b/eek/eek-keysym.c @@ -48,11 +48,6 @@ #define EEK_KEYSYM_Hyper_L 0xffed #define EEK_KEYSYM_Hyper_R 0xffee -typedef struct _EekKeysymPrivate -{ - guint xkeysym; -} EekKeysymPrivate; - struct _EekKeysymEntry { guint xkeysym; const gchar *name; @@ -64,54 +59,6 @@ typedef struct _EekKeysymEntry EekKeysymEntry; #include "eek-unicode-keysym-entries.h" #include "eek-xkeysym-keysym-entries.h" -static void eek_serializable_iface_init (EekSerializableIface *iface); - -G_DEFINE_TYPE_EXTENDED (EekKeysym, eek_keysym, EEK_TYPE_SYMBOL, - 0, /* GTypeFlags */ - G_ADD_PRIVATE (EekKeysym) - G_IMPLEMENT_INTERFACE (EEK_TYPE_SERIALIZABLE, - eek_serializable_iface_init)) - -static EekSerializableIface *eek_keysym_parent_serializable_iface; - -static void -eek_keysym_real_serialize (EekSerializable *self, - GVariantBuilder *builder) -{ - EekKeysymPrivate *priv = eek_keysym_get_instance_private ( - EEK_KEYSYM(self)); - - eek_keysym_parent_serializable_iface->serialize (self, builder); - - g_variant_builder_add (builder, "u", priv->xkeysym); -} - -static gsize -eek_keysym_real_deserialize (EekSerializable *self, - GVariant *variant, - gsize index) -{ - EekKeysymPrivate *priv = eek_keysym_get_instance_private ( - EEK_KEYSYM(self)); - - index = eek_keysym_parent_serializable_iface->deserialize (self, - variant, - index); - - g_variant_get_child (variant, index++, "u", &priv->xkeysym); - - return index; -} - -static void -eek_serializable_iface_init (EekSerializableIface *iface) -{ - eek_keysym_parent_serializable_iface = - g_type_interface_peek_parent (iface); - - iface->serialize = eek_keysym_real_serialize; - iface->deserialize = eek_keysym_real_deserialize; -} static gchar * unichar_to_utf8 (gunichar uc) @@ -196,18 +143,6 @@ get_modifier_mask (guint xkeysym) return 0; } -static void -eek_keysym_class_init (EekKeysymClass *klass) -{ - /* void */ -} - -static void -eek_keysym_init (EekKeysym *self) -{ - /* void */ -} - /** * eek_keysym_new_with_modifier: * @xkeysym: an X keysym value @@ -216,12 +151,9 @@ eek_keysym_init (EekKeysym *self) * Create an #EekKeysym with given X keysym value @xkeysym and * modifier @modifier_mask. */ -EekKeysym * -eek_keysym_new_with_modifier (guint xkeysym, - EekModifierType modifier_mask) +EekSymbol *eek_keysym_new_with_modifier(guint xkeysym, + EekModifierType modifier_mask) { - EekKeysym *keysym; - EekKeysymPrivate *priv; EekKeysymEntry *special_entry, *xkeysym_entry, *unicode_entry, *unichar_entry; gchar *name, *label; @@ -267,11 +199,10 @@ eek_keysym_new_with_modifier (guint xkeysym, else label = g_strdup (name); - keysym = g_object_new (EEK_TYPE_KEYSYM, - "name", name, - "label", label, - "modifier-mask", modifier_mask, - NULL); + EekSymbol *keysym = eek_symbol_new(name); + eek_symbol_set_label(keysym, label); + eek_symbol_set_modifier_mask(keysym, modifier_mask); + g_free (name); g_free (label); @@ -280,8 +211,7 @@ eek_keysym_new_with_modifier (guint xkeysym, g_slice_free (EekKeysymEntry, unichar_entry); } - priv = eek_keysym_get_instance_private (keysym); - priv->xkeysym = xkeysym; + keysym->xkeysym = xkeysym; return keysym; } @@ -292,7 +222,7 @@ eek_keysym_new_with_modifier (guint xkeysym, * * Create an #EekKeysym with given X keysym value @xkeysym. */ -EekKeysym * +EekSymbol* eek_keysym_new (guint xkeysym) { return eek_keysym_new_with_modifier (xkeysym, get_modifier_mask (xkeysym)); @@ -304,21 +234,16 @@ eek_keysym_new (guint xkeysym) * * Create an #EekKeysym with an X keysym value looked up by @name. */ -EekKeysym * +EekSymbol* eek_keysym_new_from_name (const gchar *name) { - gint i; - - for (i = 0; i < G_N_ELEMENTS(xkeysym_keysym_entries); i++) + for (uint i = 0; i < G_N_ELEMENTS(xkeysym_keysym_entries); i++) if (g_strcmp0 (xkeysym_keysym_entries[i].name, name) == 0) return eek_keysym_new (xkeysym_keysym_entries[i].xkeysym); - // g_warning ("can't find keysym entry for %s", name); - return g_object_new (EEK_TYPE_KEYSYM, - "name", name, - "label", name, - "modifier-mask", 0, - NULL); + EekSymbol *ret = eek_symbol_new(name); + eek_symbol_set_label(ret, name); + return ret; } /** @@ -328,11 +253,10 @@ eek_keysym_new_from_name (const gchar *name) * Get an X keysym value associated with @keysym */ guint -eek_keysym_get_xkeysym (EekKeysym *keysym) +eek_keysym_get_xkeysym (EekSymbol *keysym) { - EekKeysymPrivate *priv; - - g_assert (EEK_IS_KEYSYM(keysym)); - priv = eek_keysym_get_instance_private (keysym); - return priv->xkeysym; + if (keysym->xkeysym == 0) { + g_warning("Symbol %s was expected to have a valid keysym", keysym->name); + } + return keysym->xkeysym; } diff --git a/eek/eek-keysym.h b/eek/eek-keysym.h index 73430b07..e257a9c8 100644 --- a/eek/eek-keysym.h +++ b/eek/eek-keysym.h @@ -37,20 +37,11 @@ G_BEGIN_DECLS */ #define EEK_INVALID_KEYSYM (0) -#define EEK_TYPE_KEYSYM (eek_keysym_get_type()) -G_DECLARE_DERIVABLE_TYPE (EekKeysym, eek_keysym, EEK, KEYSYM, EekSymbol) +EekSymbol *eek_keysym_new (guint xkeysym); +guint eek_keysym_get_xkeysym (EekSymbol *keysym); -struct _EekKeysymClass { - /*< private >*/ - EekSymbolClass parent_class; -}; - -GType eek_keysym_get_type (void) G_GNUC_CONST; -EekKeysym *eek_keysym_new (guint xkeysym); -guint eek_keysym_get_xkeysym (EekKeysym *keysym); - -EekKeysym *eek_keysym_new_from_name (const gchar *name); -EekKeysym *eek_keysym_new_with_modifier (guint xkeysym, +EekSymbol *eek_keysym_new_from_name (const gchar *name); +EekSymbol *eek_keysym_new_with_modifier (guint xkeysym, EekModifierType modifier_mask); G_END_DECLS diff --git a/eek/eek-symbol-matrix.c b/eek/eek-symbol-matrix.c index 63e0e524..cdfa24fb 100644 --- a/eek/eek-symbol-matrix.c +++ b/eek/eek-symbol-matrix.c @@ -36,24 +36,19 @@ EekSymbolMatrix * eek_symbol_matrix_copy (const EekSymbolMatrix *matrix) { EekSymbolMatrix *retval; - gint i, num_symbols = matrix->num_groups * matrix->num_levels; + guint num_symbols = matrix->num_groups * matrix->num_levels; retval = g_slice_dup (EekSymbolMatrix, matrix); retval->data = g_slice_copy (sizeof (EekSymbol *) * num_symbols, matrix->data); - for (i = 0; i < num_symbols; i++) - if (retval->data[i]) - g_object_ref (retval->data[i]); + // FIXME: do a deep copy over the data in EekSymbol return retval; } void eek_symbol_matrix_free (EekSymbolMatrix *matrix) { - gint i, num_symbols = matrix->num_groups * matrix->num_levels; - for (i = 0; i < num_symbols; i++) - if (matrix->data[i]) - g_object_unref (matrix->data[i]); + guint num_symbols = matrix->num_groups * matrix->num_levels; g_slice_free1 (sizeof (EekSymbol *) * num_symbols, matrix->data); g_slice_free (EekSymbolMatrix, matrix); } @@ -79,7 +74,6 @@ eek_symbol_matrix_set_symbol (EekSymbolMatrix *matrix, { g_return_if_fail (group >= 0 && group < matrix->num_groups); g_return_if_fail (level >= 0 && level < matrix->num_levels); - g_return_if_fail (EEK_IS_SYMBOL(symbol)); matrix->data[group * matrix->num_levels + level] = g_object_ref (symbol); } diff --git a/eek/eek-symbol.c b/eek/eek-symbol.c index aff84d67..c17bb532 100644 --- a/eek/eek-symbol.c +++ b/eek/eek-symbol.c @@ -30,204 +30,40 @@ #include "eek-symbol.h" #include "eek-enumtypes.h" -enum { - PROP_0, - PROP_NAME, - PROP_LABEL, - PROP_MODIFIER_MASK, - PROP_ICON_NAME, - PROP_TOOLTIP, - PROP_LAST -}; - -typedef struct _EekSymbolPrivate +void +eek_symbol_destroy (EekSymbol *priv) { - gchar *name; - gchar *label; - EekModifierType modifier_mask; - gchar *icon_name; - gchar *tooltip; -} EekSymbolPrivate; - -G_DEFINE_TYPE_EXTENDED (EekSymbol, - eek_symbol, - G_TYPE_OBJECT, - 0, /* GTypeFlags */ - G_ADD_PRIVATE (EekSymbol)) - -static void -eek_symbol_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - switch (prop_id) { - case PROP_NAME: - eek_symbol_set_name (EEK_SYMBOL(object), g_value_get_string (value)); - break; - case PROP_LABEL: - eek_symbol_set_label (EEK_SYMBOL(object), g_value_get_string (value)); - break; - case PROP_MODIFIER_MASK: - eek_symbol_set_modifier_mask (EEK_SYMBOL(object), - g_value_get_flags (value)); - break; - case PROP_ICON_NAME: - eek_symbol_set_icon_name (EEK_SYMBOL(object), - g_value_get_string (value)); - break; - case PROP_TOOLTIP: - eek_symbol_set_tooltip (EEK_SYMBOL(object), - g_value_get_string (value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -eek_symbol_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) -{ - switch (prop_id) { - case PROP_NAME: - g_value_set_string (value, eek_symbol_get_name (EEK_SYMBOL(object))); - break; - case PROP_LABEL: - g_value_set_string (value, eek_symbol_get_label (EEK_SYMBOL(object))); - break; - case PROP_MODIFIER_MASK: - g_value_set_flags (value, - eek_symbol_get_modifier_mask (EEK_SYMBOL(object))); - break; - case PROP_ICON_NAME: - g_value_set_string (value, - eek_symbol_get_icon_name (EEK_SYMBOL(object))); - break; - case PROP_TOOLTIP: - g_value_set_string (value, - eek_symbol_get_tooltip (EEK_SYMBOL(object))); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -eek_symbol_finalize (GObject *object) -{ - EekSymbol *self = EEK_SYMBOL (object); - EekSymbolPrivate *priv = eek_symbol_get_instance_private (self); - g_free (priv->name); g_free (priv->label); g_free (priv->icon_name); g_free (priv->tooltip); - G_OBJECT_CLASS (eek_symbol_parent_class)->finalize (object); + g_free(priv->text); + g_free(priv); } -static void -eek_symbol_class_init (EekSymbolClass *klass) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - GParamSpec *pspec; - - gobject_class->set_property = eek_symbol_set_property; - gobject_class->get_property = eek_symbol_get_property; - gobject_class->finalize = eek_symbol_finalize; - - pspec = g_param_spec_string ("name", - "Name", - "Canonical name of the symbol", - NULL, - G_PARAM_CONSTRUCT | G_PARAM_READWRITE); - g_object_class_install_property (gobject_class, PROP_NAME, pspec); - - pspec = g_param_spec_string ("label", - "Label", - "Text used to display the symbol", - NULL, - G_PARAM_CONSTRUCT | G_PARAM_READWRITE); - g_object_class_install_property (gobject_class, PROP_LABEL, pspec); - - pspec = g_param_spec_flags ("modifier-mask", - "Modifier mask", - "Modifier mask of the symbol", - EEK_TYPE_MODIFIER_TYPE, - 0, - G_PARAM_CONSTRUCT | G_PARAM_READWRITE); - g_object_class_install_property (gobject_class, PROP_MODIFIER_MASK, pspec); - - pspec = g_param_spec_string ("icon-name", - "Icon name", - "Icon name used to render the symbol", - NULL, - G_PARAM_CONSTRUCT | G_PARAM_READWRITE); - g_object_class_install_property (gobject_class, PROP_ICON_NAME, pspec); - - pspec = g_param_spec_string ("tooltip", - "Tooltip", - "Tooltip text", - NULL, - G_PARAM_CONSTRUCT | G_PARAM_READWRITE); - g_object_class_install_property (gobject_class, PROP_TOOLTIP, pspec); -} - -static void -eek_symbol_init (EekSymbol *self) -{} - -/** - * eek_symbol_new: - * @name: name of the symbol - * - * Create a new #EekSymbol with @name. - */ EekSymbol * eek_symbol_new (const gchar *name) { - return g_object_new (EEK_TYPE_SYMBOL, "name", name, NULL); + EekSymbol *self = g_new0(EekSymbol, 1); + eek_symbol_set_name(self, name); + self->category = EEK_SYMBOL_CATEGORY_UNKNOWN; + return self; } -/** - * eek_symbol_set_name: - * @symbol: an #EekSymbol - * @name: name of the symbol - * - * Set the name of @symbol to @name. - */ void eek_symbol_set_name (EekSymbol *symbol, const gchar *name) { - g_return_if_fail (EEK_IS_SYMBOL(symbol)); - - EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol); - - g_free (priv->name); - priv->name = g_strdup (name); + g_free (symbol->name); + symbol->name = g_strdup (name); } -/** - * eek_symbol_get_name: - * @symbol: an #EekSymbol - * - * Get the name of @symbol. - */ const gchar * eek_symbol_get_name (EekSymbol *symbol) { - g_return_val_if_fail (EEK_IS_SYMBOL(symbol), NULL); - - EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol); - - if (priv->name == NULL || *priv->name == '\0') + if (symbol->name == NULL || *symbol->name == '\0') return NULL; - return priv->name; + return symbol->name; } /** @@ -241,12 +77,8 @@ void eek_symbol_set_label (EekSymbol *symbol, const gchar *label) { - g_return_if_fail (EEK_IS_SYMBOL(symbol)); - - EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol); - - g_free (priv->label); - priv->label = g_strdup (label); + g_free (symbol->label); + symbol->label = g_strdup (label); } /** @@ -258,13 +90,9 @@ eek_symbol_set_label (EekSymbol *symbol, const gchar * eek_symbol_get_label (EekSymbol *symbol) { - g_return_val_if_fail (EEK_IS_SYMBOL(symbol), NULL); - - EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol); - - if (priv->label == NULL || *priv->label == '\0') + if (symbol->label == NULL || *symbol->label == '\0') return NULL; - return priv->label; + return symbol->label; } /** @@ -278,11 +106,7 @@ void eek_symbol_set_modifier_mask (EekSymbol *symbol, EekModifierType mask) { - g_return_if_fail (EEK_IS_SYMBOL(symbol)); - - EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol); - - priv->modifier_mask = mask; + symbol->modifier_mask = mask; } /** @@ -294,97 +118,43 @@ eek_symbol_set_modifier_mask (EekSymbol *symbol, EekModifierType eek_symbol_get_modifier_mask (EekSymbol *symbol) { - g_return_val_if_fail (EEK_IS_SYMBOL(symbol), 0); - - EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol); - - return priv->modifier_mask; + return symbol->modifier_mask; } -/** - * eek_symbol_is_modifier: - * @symbol: an #EekSymbol - * - * Check if @symbol is a modifier. - * Returns: %TRUE if @symbol is a modifier. - */ gboolean eek_symbol_is_modifier (EekSymbol *symbol) { return eek_symbol_get_modifier_mask (symbol) != 0; } -/** - * eek_symbol_set_icon_name: - * @symbol: an #EekSymbol - * @icon_name: icon name of @symbol - * - * Set the icon name of @symbol to @icon_name. - */ void eek_symbol_set_icon_name (EekSymbol *symbol, const gchar *icon_name) { - g_return_if_fail (EEK_IS_SYMBOL(symbol)); - - EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol); - - g_free (priv->icon_name); - priv->icon_name = g_strdup (icon_name); + g_free (symbol->icon_name); + symbol->icon_name = g_strdup (icon_name); } -/** - * eek_symbol_get_icon_name: - * @symbol: an #EekSymbol - * - * Get the icon name of @symbol. - */ const gchar * eek_symbol_get_icon_name (EekSymbol *symbol) { - g_return_val_if_fail (EEK_IS_SYMBOL(symbol), NULL); - - EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol); - - if (priv->icon_name == NULL || *priv->icon_name == '\0') + if (symbol->icon_name == NULL || *symbol->icon_name == '\0') return NULL; - return priv->icon_name; + return symbol->icon_name; } -/** - * eek_symbol_set_tooltip: - * @symbol: an #EekSymbol - * @tooltip: icon name of @symbol - * - * Set the tooltip text of @symbol to @tooltip. - */ void eek_symbol_set_tooltip (EekSymbol *symbol, const gchar *tooltip) { - g_return_if_fail (EEK_IS_SYMBOL(symbol)); - - EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol); - - g_free (priv->tooltip); - priv->tooltip = g_strdup (tooltip); + g_free (symbol->tooltip); + symbol->tooltip = g_strdup (tooltip); } -/** - * eek_symbol_get_tooltip: - * @symbol: an #EekSymbol - * - * Get the tooltip text of @symbol. - */ const gchar * eek_symbol_get_tooltip (EekSymbol *symbol) { - g_return_val_if_fail (EEK_IS_SYMBOL(symbol), NULL); - - EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol); - - if (priv->tooltip == NULL || *priv->tooltip == '\0') + if (symbol->tooltip == NULL || *symbol->tooltip == '\0') return NULL; - return priv->tooltip; + return symbol->tooltip; } - diff --git a/eek/eek-symbol.h b/eek/eek-symbol.h index eaf84d77..6a0bcfbc 100644 --- a/eek/eek-symbol.h +++ b/eek/eek-symbol.h @@ -29,26 +29,65 @@ G_BEGIN_DECLS -#define EEK_TYPE_SYMBOL (eek_symbol_get_type()) -G_DECLARE_DERIVABLE_TYPE(EekSymbol, eek_symbol, EEK, SYMBOL, GObject) - /** - * EekSymbolClass: + * EekSymbolCategory: + * @EEK_SYMBOL_CATEGORY_LETTER: the symbol represents an alphabet letter + * @EEK_SYMBOL_CATEGORY_FUNCTION: the symbol represents a function + * @EEK_SYMBOL_CATEGORY_KEYNAME: the symbol does not have meaning but + * have a name + * @EEK_SYMBOL_CATEGORY_USER0: reserved for future use + * @EEK_SYMBOL_CATEGORY_USER1: reserved for future use + * @EEK_SYMBOL_CATEGORY_USER2: reserved for future use + * @EEK_SYMBOL_CATEGORY_USER3: reserved for future use + * @EEK_SYMBOL_CATEGORY_USER4: reserved for future use + * @EEK_SYMBOL_CATEGORY_UNKNOWN: used for error reporting + * @EEK_SYMBOL_CATEGORY_LAST: the last symbol category + * + * Category of the key symbols. */ -struct _EekSymbolClass { - /*< private >*/ - GObjectClass parent_class; -}; +typedef enum { + EEK_SYMBOL_CATEGORY_LETTER, + EEK_SYMBOL_CATEGORY_FUNCTION, + EEK_SYMBOL_CATEGORY_KEYNAME, + EEK_SYMBOL_CATEGORY_USER0, + EEK_SYMBOL_CATEGORY_USER1, + EEK_SYMBOL_CATEGORY_USER2, + EEK_SYMBOL_CATEGORY_USER3, + EEK_SYMBOL_CATEGORY_USER4, + EEK_SYMBOL_CATEGORY_UNKNOWN, + EEK_SYMBOL_CATEGORY_LAST = EEK_SYMBOL_CATEGORY_UNKNOWN +} EekSymbolCategory; -GType eek_symbol_get_type (void) G_GNUC_CONST; + +typedef struct _EekSymbol +{ + /// Canonical name of the symbol + gchar *name; + /// Text used to display the symbol + gchar *label; + EekSymbolCategory category; + EekModifierType modifier_mask; + /// Icon name used to render the symbol + gchar *icon_name; + /// Tooltip text + gchar *tooltip; + + // May not be present + guint xkeysym; + gchar *text; +} EekSymbol; EekSymbol *eek_symbol_new (const gchar *name); +void eek_symbol_free (EekSymbol *symbol); void eek_symbol_set_name (EekSymbol *symbol, const gchar *name); const gchar *eek_symbol_get_name (EekSymbol *symbol); void eek_symbol_set_label (EekSymbol *symbol, const gchar *label); const gchar *eek_symbol_get_label (EekSymbol *symbol); +void eek_symbol_set_category (EekSymbol *symbol, + EekSymbolCategory category); +EekSymbolCategory eek_symbol_get_category (EekSymbol *symbol); EekModifierType eek_symbol_get_modifier_mask (EekSymbol *symbol); void eek_symbol_set_modifier_mask (EekSymbol *symbol, EekModifierType mask); @@ -60,6 +99,9 @@ void eek_symbol_set_tooltip (EekSymbol *symbol, const gchar *tooltip); const gchar * eek_symbol_get_tooltip (EekSymbol *symbol); +const gchar *eek_symbol_category_get_name (EekSymbolCategory category); +EekSymbolCategory eek_symbol_category_from_name (const gchar *name); + G_END_DECLS #endif /* EEK_SYMBOL_H */ diff --git a/eek/eek-text.c b/eek/eek-text.c index d05d6949..f92742fd 100644 --- a/eek/eek-text.c +++ b/eek/eek-text.c @@ -26,159 +26,18 @@ #include "config.h" #include "eek-text.h" -#include "eek-serializable.h" -enum { - PROP_0, - PROP_TEXT, - PROP_LAST -}; - -typedef struct _EekTextPrivate -{ - gchar *text; -} EekTextPrivate; - -static void eek_serializable_iface_init (EekSerializableIface *iface); - -G_DEFINE_TYPE_EXTENDED (EekText, - eek_text, - EEK_TYPE_SYMBOL, - 0, /* GTypeFlags */ - G_ADD_PRIVATE (EekText) - G_IMPLEMENT_INTERFACE (EEK_TYPE_SERIALIZABLE, - eek_serializable_iface_init)) - -static EekSerializableIface *eek_text_parent_serializable_iface; - -static void -eek_text_real_serialize (EekSerializable *self, - GVariantBuilder *builder) -{ - EekTextPrivate *priv = eek_text_get_instance_private (EEK_TEXT (self)); - - eek_text_parent_serializable_iface->serialize (self, builder); - - g_variant_builder_add (builder, "s", priv->text); -} - -static gsize -eek_text_real_deserialize (EekSerializable *self, - GVariant *variant, - gsize index) -{ - EekTextPrivate *priv = eek_text_get_instance_private (EEK_TEXT (self)); - - index = eek_text_parent_serializable_iface->deserialize (self, - variant, - index); - g_variant_get_child (variant, index++, "s", &priv->text); - - return index; -} - -static void -eek_serializable_iface_init (EekSerializableIface *iface) -{ - eek_text_parent_serializable_iface = - g_type_interface_peek_parent (iface); - - iface->serialize = eek_text_real_serialize; - iface->deserialize = eek_text_real_deserialize; -} - -static void -eek_text_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - EekText *self = EEK_TEXT (object); - EekTextPrivate *priv = eek_text_get_instance_private (self); - - switch (prop_id) { - case PROP_TEXT: - g_free (priv->text); - priv->text = g_strdup (g_value_get_string (value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -eek_text_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) -{ - EekText *self = EEK_TEXT (object); - EekTextPrivate *priv = eek_text_get_instance_private (self); - - switch (prop_id) { - case PROP_TEXT: - g_value_set_string (value, priv->text); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -eek_text_finalize (GObject *object) -{ - EekText *self = EEK_TEXT (object); - EekTextPrivate *priv = eek_text_get_instance_private (self); - - g_free (priv->text); - G_OBJECT_CLASS (eek_text_parent_class)->finalize (object); -} - -static void -eek_text_class_init (EekTextClass *klass) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - GParamSpec *pspec; - - gobject_class->set_property = eek_text_set_property; - gobject_class->get_property = eek_text_get_property; - gobject_class->finalize = eek_text_finalize; - - pspec = g_param_spec_string ("text", - "Text", - "Text", - NULL, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE); - g_object_class_install_property (gobject_class, PROP_TEXT, pspec); -} - -static void -eek_text_init (EekText *self) -{ - /* void */ -} - -EekText * +EekSymbol * eek_text_new (const gchar *text) { - return g_object_new (EEK_TYPE_TEXT, - "label", text, - "text", text, - NULL); + EekSymbol *ret = eek_symbol_new(""); + eek_symbol_set_label(ret, text); + ret->text = g_strdup (text); + return ret; } -/** - * eek_text_get_text: - * @text: an #EekText - * - * Get a text value associated with @text - */ const gchar * -eek_text_get_text (EekText *text) +eek_text_get_text (EekSymbol *text) { - EekTextPrivate *priv = eek_text_get_instance_private (text); - - return priv->text; + return text->text; } diff --git a/eek/eek-text.h b/eek/eek-text.h index 68183548..ca4f0940 100644 --- a/eek/eek-text.h +++ b/eek/eek-text.h @@ -29,17 +29,9 @@ G_BEGIN_DECLS -#define EEK_TYPE_TEXT (eek_text_get_type()) -G_DECLARE_DERIVABLE_TYPE(EekText, eek_text, EEK, TEXT, EekSymbol) - -struct _EekTextClass { - /*< private >*/ - EekSymbolClass parent_class; -}; - GType eek_text_get_type (void) G_GNUC_CONST; -EekText *eek_text_new (const gchar *text); -const gchar *eek_text_get_text (EekText *text); +EekSymbol *eek_text_new (const gchar *text); +const gchar *eek_text_get_text (EekSymbol *text); G_END_DECLS diff --git a/eek/eek-types.h b/eek/eek-types.h index 015b9a90..7f3b9eea 100644 --- a/eek/eek-types.h +++ b/eek/eek-types.h @@ -139,7 +139,6 @@ typedef struct _EekKey EekKey; typedef struct _EekSection EekSection; typedef struct _EekKeyboard EekKeyboard; typedef struct _EekSymbol EekSymbol; -typedef struct _EekKeysym EekKeysym; typedef struct _EekText EekText; typedef struct _EekTheme EekTheme; typedef struct _EekThemeContext EekThemeContext; diff --git a/eek/eek-xml-layout.c b/eek/eek-xml-layout.c index 7fd43192..28eb843c 100644 --- a/eek/eek-xml-layout.c +++ b/eek/eek-xml-layout.c @@ -735,14 +735,14 @@ symbols_end_element_callback (GMarkupParseContext *pcontext, EekSymbol *symbol; if (g_strcmp0 (element_name, "keysym") == 0) { - EekKeysym *keysym; + EekSymbol *keysym; if (data->keyval != EEK_INVALID_KEYSYM) keysym = eek_keysym_new (data->keyval); else keysym = eek_keysym_new_from_name (text); - symbol = EEK_SYMBOL(keysym); + symbol = keysym; } else if (g_strcmp0 (element_name, "text") == 0) { - symbol = EEK_SYMBOL(eek_text_new (text)); + symbol = eek_text_new (text); } else { symbol = eek_symbol_new (text); } diff --git a/eekboard/eekboard-context.c b/eekboard/eekboard-context.c index a5bfddbc..50823578 100644 --- a/eekboard/eekboard-context.c +++ b/eekboard/eekboard-context.c @@ -35,7 +35,6 @@ enum { ENABLED, DISABLED, DESTROYED, - KEY_ACTIVATED, LAST_SIGNAL }; @@ -81,28 +80,6 @@ eekboard_context_real_g_signal (GDBusProxy *self, return; } - if (g_strcmp0 (signal_name, "KeyActivated") == 0) { - guint keycode; - GVariant *variant = NULL; - guint modifiers = 0; - EekSerializable *serializable; - - g_variant_get (parameters, "(uvu)", - &keycode, &variant, &modifiers); - g_return_if_fail (variant != NULL); - - serializable = eek_serializable_deserialize (variant); - g_variant_unref (variant); - - g_return_if_fail (EEK_IS_SYMBOL(serializable)); - - g_signal_emit (context, signals[KEY_ACTIVATED], 0, - keycode, EEK_SYMBOL(serializable), modifiers); - g_object_unref (serializable); - - return; - } - if (g_strcmp0 (signal_name, "VisibilityChanged") == 0) { gboolean visible = FALSE;