Merge branch 'textproperty' into 'master'
Removed text categories See merge request Librem5/squeekboard!114
This commit is contained in:
		@ -56,7 +56,6 @@ typedef struct _EekKeysymPrivate
 | 
				
			|||||||
struct _EekKeysymEntry {
 | 
					struct _EekKeysymEntry {
 | 
				
			||||||
    guint xkeysym;
 | 
					    guint xkeysym;
 | 
				
			||||||
    const gchar *name;
 | 
					    const gchar *name;
 | 
				
			||||||
    EekSymbolCategory category;
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct _EekKeysymEntry EekKeysymEntry;
 | 
					typedef struct _EekKeysymEntry EekKeysymEntry;
 | 
				
			||||||
@ -226,7 +225,6 @@ eek_keysym_new_with_modifier (guint           xkeysym,
 | 
				
			|||||||
    EekKeysymEntry *special_entry, *xkeysym_entry, *unicode_entry,
 | 
					    EekKeysymEntry *special_entry, *xkeysym_entry, *unicode_entry,
 | 
				
			||||||
        *unichar_entry;
 | 
					        *unichar_entry;
 | 
				
			||||||
    gchar *name, *label;
 | 
					    gchar *name, *label;
 | 
				
			||||||
    EekSymbolCategory category;
 | 
					 | 
				
			||||||
    gunichar uc;
 | 
					    gunichar uc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    special_entry =
 | 
					    special_entry =
 | 
				
			||||||
@ -246,23 +244,17 @@ eek_keysym_new_with_modifier (guint           xkeysym,
 | 
				
			|||||||
        unichar_entry = g_slice_new (EekKeysymEntry);
 | 
					        unichar_entry = g_slice_new (EekKeysymEntry);
 | 
				
			||||||
        unichar_entry->xkeysym = xkeysym;
 | 
					        unichar_entry->xkeysym = xkeysym;
 | 
				
			||||||
        unichar_entry->name = unichar_to_utf8 (uc);
 | 
					        unichar_entry->name = unichar_to_utf8 (uc);
 | 
				
			||||||
        unichar_entry->category = EEK_SYMBOL_CATEGORY_LETTER;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* name and category */
 | 
					 | 
				
			||||||
    name = NULL;
 | 
					    name = NULL;
 | 
				
			||||||
    if (xkeysym_entry) {
 | 
					    if (xkeysym_entry) {
 | 
				
			||||||
        name = g_strdup (xkeysym_entry->name);
 | 
					        name = g_strdup (xkeysym_entry->name);
 | 
				
			||||||
        category = xkeysym_entry->category;
 | 
					 | 
				
			||||||
    } else if (unichar_entry) {
 | 
					    } else if (unichar_entry) {
 | 
				
			||||||
        name = g_strdup (unichar_entry->name);
 | 
					        name = g_strdup (unichar_entry->name);
 | 
				
			||||||
        category = unichar_entry->category;
 | 
					 | 
				
			||||||
    } else if (unicode_entry) {
 | 
					    } else if (unicode_entry) {
 | 
				
			||||||
        name = g_strdup (unicode_entry->name);
 | 
					        name = g_strdup (unicode_entry->name);
 | 
				
			||||||
        category = unicode_entry->category;
 | 
					 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        name = g_strdup ("");
 | 
					        name = g_strdup ("");
 | 
				
			||||||
        category = EEK_SYMBOL_CATEGORY_UNKNOWN;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* label */
 | 
					    /* label */
 | 
				
			||||||
@ -278,7 +270,6 @@ eek_keysym_new_with_modifier (guint           xkeysym,
 | 
				
			|||||||
    keysym = g_object_new (EEK_TYPE_KEYSYM,
 | 
					    keysym = g_object_new (EEK_TYPE_KEYSYM,
 | 
				
			||||||
                           "name", name,
 | 
					                           "name", name,
 | 
				
			||||||
                           "label", label,
 | 
					                           "label", label,
 | 
				
			||||||
                           "category", category,
 | 
					 | 
				
			||||||
                           "modifier-mask", modifier_mask,
 | 
					                           "modifier-mask", modifier_mask,
 | 
				
			||||||
                           NULL);
 | 
					                           NULL);
 | 
				
			||||||
    g_free (name);
 | 
					    g_free (name);
 | 
				
			||||||
@ -326,7 +317,6 @@ eek_keysym_new_from_name (const gchar *name)
 | 
				
			|||||||
    return g_object_new (EEK_TYPE_KEYSYM,
 | 
					    return g_object_new (EEK_TYPE_KEYSYM,
 | 
				
			||||||
                         "name", name,
 | 
					                         "name", name,
 | 
				
			||||||
                         "label", name,
 | 
					                         "label", name,
 | 
				
			||||||
                         "category", EEK_SYMBOL_CATEGORY_UNKNOWN,
 | 
					 | 
				
			||||||
                         "modifier-mask", 0,
 | 
					                         "modifier-mask", 0,
 | 
				
			||||||
                         NULL);
 | 
					                         NULL);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -68,14 +68,6 @@ G_DEFINE_TYPE_WITH_PRIVATE (EekRenderer, eek_renderer, G_TYPE_OBJECT)
 | 
				
			|||||||
static const EekColor DEFAULT_FOREGROUND_COLOR = {0.3, 0.3, 0.3, 1.0};
 | 
					static const EekColor DEFAULT_FOREGROUND_COLOR = {0.3, 0.3, 0.3, 1.0};
 | 
				
			||||||
static const EekColor DEFAULT_BACKGROUND_COLOR = {1.0, 1.0, 1.0, 1.0};
 | 
					static const EekColor DEFAULT_BACKGROUND_COLOR = {1.0, 1.0, 1.0, 1.0};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct _TextProperty {
 | 
					 | 
				
			||||||
    gint category;
 | 
					 | 
				
			||||||
    gboolean ascii;
 | 
					 | 
				
			||||||
    gdouble scale;
 | 
					 | 
				
			||||||
    gboolean ellipses;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
typedef struct _TextProperty TextProperty;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* eek-keyboard-drawing.c */
 | 
					/* eek-keyboard-drawing.c */
 | 
				
			||||||
extern void _eek_rounded_polygon               (cairo_t     *cr,
 | 
					extern void _eek_rounded_polygon               (cairo_t     *cr,
 | 
				
			||||||
                                                gdouble      radius,
 | 
					                                                gdouble      radius,
 | 
				
			||||||
@ -496,22 +488,6 @@ eek_renderer_apply_transformation_for_key (EekRenderer *self,
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const TextProperty *
 | 
					 | 
				
			||||||
get_text_property_for_category (EekSymbolCategory category)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    static const TextProperty props[EEK_SYMBOL_CATEGORY_LAST] = {
 | 
					 | 
				
			||||||
        { EEK_SYMBOL_CATEGORY_LETTER, FALSE, 1.0, FALSE },
 | 
					 | 
				
			||||||
        { EEK_SYMBOL_CATEGORY_FUNCTION, TRUE, 0.5, FALSE },
 | 
					 | 
				
			||||||
        { EEK_SYMBOL_CATEGORY_KEYNAME, TRUE, 0.5, TRUE }
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for (uint i = 0; i < G_N_ELEMENTS(props); i++)
 | 
					 | 
				
			||||||
        if (props[i].category == category)
 | 
					 | 
				
			||||||
            return &props[i];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    g_return_val_if_reached (NULL);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
eek_renderer_real_render_key_label (EekRenderer *self,
 | 
					eek_renderer_real_render_key_label (EekRenderer *self,
 | 
				
			||||||
                                    PangoLayout *layout,
 | 
					                                    PangoLayout *layout,
 | 
				
			||||||
@ -519,10 +495,8 @@ eek_renderer_real_render_key_label (EekRenderer *self,
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    EekRendererPrivate *priv = eek_renderer_get_instance_private (self);
 | 
					    EekRendererPrivate *priv = eek_renderer_get_instance_private (self);
 | 
				
			||||||
    EekSymbol *symbol;
 | 
					    EekSymbol *symbol;
 | 
				
			||||||
    EekSymbolCategory category;
 | 
					 | 
				
			||||||
    const gchar *label;
 | 
					    const gchar *label;
 | 
				
			||||||
    EekBounds bounds;
 | 
					    EekBounds bounds;
 | 
				
			||||||
    const TextProperty *prop;
 | 
					 | 
				
			||||||
    PangoFontDescription *font;
 | 
					    PangoFontDescription *font;
 | 
				
			||||||
    PangoLayoutLine *line;
 | 
					    PangoLayoutLine *line;
 | 
				
			||||||
    gdouble scale;
 | 
					    gdouble scale;
 | 
				
			||||||
@ -561,15 +535,9 @@ eek_renderer_real_render_key_label (EekRenderer *self,
 | 
				
			|||||||
    scale = MIN((bounds.width - priv->border_width) / bounds.width,
 | 
					    scale = MIN((bounds.width - priv->border_width) / bounds.width,
 | 
				
			||||||
                (bounds.height - priv->border_width) / bounds.height);
 | 
					                (bounds.height - priv->border_width) / bounds.height);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    category = eek_symbol_get_category (symbol);
 | 
					    font = pango_font_description_copy (priv->font);
 | 
				
			||||||
    prop = get_text_property_for_category (category);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    font = pango_font_description_copy (prop->ascii ?
 | 
					 | 
				
			||||||
                                        priv->ascii_font :
 | 
					 | 
				
			||||||
                                        priv->font);
 | 
					 | 
				
			||||||
    pango_font_description_set_size (font,
 | 
					    pango_font_description_set_size (font,
 | 
				
			||||||
                                     (gint)round(pango_font_description_get_size (font) *
 | 
					                                     (gint)round(pango_font_description_get_size (font) * scale));
 | 
				
			||||||
                                     prop->scale * scale));
 | 
					 | 
				
			||||||
    pango_layout_set_font_description (layout, font);
 | 
					    pango_layout_set_font_description (layout, font);
 | 
				
			||||||
    pango_font_description_free (font);
 | 
					    pango_font_description_free (font);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -579,8 +547,6 @@ eek_renderer_real_render_key_label (EekRenderer *self,
 | 
				
			|||||||
        pango_layout_set_alignment (layout, PANGO_ALIGN_RIGHT);
 | 
					        pango_layout_set_alignment (layout, PANGO_ALIGN_RIGHT);
 | 
				
			||||||
    pango_layout_set_width (layout,
 | 
					    pango_layout_set_width (layout,
 | 
				
			||||||
                            PANGO_SCALE * bounds.width * scale);
 | 
					                            PANGO_SCALE * bounds.width * scale);
 | 
				
			||||||
    if (prop->ellipses)
 | 
					 | 
				
			||||||
        pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_END);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
 | 
				
			|||||||
@ -36,10 +36,8 @@ eek_serializable_get_type (void)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    static GType iface_type = 0;
 | 
					    static GType iface_type = 0;
 | 
				
			||||||
    if (iface_type == 0) {
 | 
					    if (iface_type == 0) {
 | 
				
			||||||
        static const GTypeInfo info = {
 | 
					        static GTypeInfo info = {
 | 
				
			||||||
            sizeof (EekSerializableIface),
 | 
					            .class_size = sizeof (EekSerializableIface)
 | 
				
			||||||
            NULL,
 | 
					 | 
				
			||||||
            NULL,
 | 
					 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
        iface_type = g_type_register_static (G_TYPE_INTERFACE,
 | 
					        iface_type = g_type_register_static (G_TYPE_INTERFACE,
 | 
				
			||||||
                                             "EekSerializable",
 | 
					                                             "EekSerializable",
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										136
									
								
								eek/eek-symbol.c
									
									
									
									
									
								
							
							
						
						
									
										136
									
								
								eek/eek-symbol.c
									
									
									
									
									
								
							@ -28,14 +28,12 @@
 | 
				
			|||||||
#include "config.h"
 | 
					#include "config.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "eek-symbol.h"
 | 
					#include "eek-symbol.h"
 | 
				
			||||||
#include "eek-serializable.h"
 | 
					 | 
				
			||||||
#include "eek-enumtypes.h"
 | 
					#include "eek-enumtypes.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum {
 | 
					enum {
 | 
				
			||||||
    PROP_0,
 | 
					    PROP_0,
 | 
				
			||||||
    PROP_NAME,
 | 
					    PROP_NAME,
 | 
				
			||||||
    PROP_LABEL,
 | 
					    PROP_LABEL,
 | 
				
			||||||
    PROP_CATEGORY,
 | 
					 | 
				
			||||||
    PROP_MODIFIER_MASK,
 | 
					    PROP_MODIFIER_MASK,
 | 
				
			||||||
    PROP_ICON_NAME,
 | 
					    PROP_ICON_NAME,
 | 
				
			||||||
    PROP_TOOLTIP,
 | 
					    PROP_TOOLTIP,
 | 
				
			||||||
@ -46,60 +44,16 @@ typedef struct _EekSymbolPrivate
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    gchar *name;
 | 
					    gchar *name;
 | 
				
			||||||
    gchar *label;
 | 
					    gchar *label;
 | 
				
			||||||
    EekSymbolCategory category;
 | 
					 | 
				
			||||||
    EekModifierType modifier_mask;
 | 
					    EekModifierType modifier_mask;
 | 
				
			||||||
    gchar *icon_name;
 | 
					    gchar *icon_name;
 | 
				
			||||||
    gchar *tooltip;
 | 
					    gchar *tooltip;
 | 
				
			||||||
} EekSymbolPrivate;
 | 
					} EekSymbolPrivate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void eek_serializable_iface_init (EekSerializableIface *iface);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
G_DEFINE_TYPE_EXTENDED (EekSymbol,
 | 
					G_DEFINE_TYPE_EXTENDED (EekSymbol,
 | 
				
			||||||
			eek_symbol,
 | 
								eek_symbol,
 | 
				
			||||||
			G_TYPE_OBJECT,
 | 
								G_TYPE_OBJECT,
 | 
				
			||||||
			0, /* GTypeFlags */
 | 
								0, /* GTypeFlags */
 | 
				
			||||||
			G_ADD_PRIVATE (EekSymbol)
 | 
					            G_ADD_PRIVATE (EekSymbol))
 | 
				
			||||||
                        G_IMPLEMENT_INTERFACE (EEK_TYPE_SERIALIZABLE,
 | 
					 | 
				
			||||||
                                               eek_serializable_iface_init))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					 | 
				
			||||||
eek_symbol_real_serialize (EekSerializable *self,
 | 
					 | 
				
			||||||
                           GVariantBuilder *builder)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    EekSymbolPrivate *priv = eek_symbol_get_instance_private (EEK_SYMBOL (self));
 | 
					 | 
				
			||||||
#define NOTNULL(s) ((s) != NULL ? (s) : "")
 | 
					 | 
				
			||||||
    g_variant_builder_add (builder, "s", NOTNULL(priv->name));
 | 
					 | 
				
			||||||
    g_variant_builder_add (builder, "s", NOTNULL(priv->label));
 | 
					 | 
				
			||||||
    g_variant_builder_add (builder, "u", priv->category);
 | 
					 | 
				
			||||||
    g_variant_builder_add (builder, "u", priv->modifier_mask);
 | 
					 | 
				
			||||||
    g_variant_builder_add (builder, "s", NOTNULL(priv->icon_name));
 | 
					 | 
				
			||||||
    g_variant_builder_add (builder, "s", NOTNULL(priv->tooltip));
 | 
					 | 
				
			||||||
#undef NOTNULL
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static gsize
 | 
					 | 
				
			||||||
eek_symbol_real_deserialize (EekSerializable *self,
 | 
					 | 
				
			||||||
                             GVariant        *variant,
 | 
					 | 
				
			||||||
                             gsize            index)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    EekSymbolPrivate *priv = eek_symbol_get_instance_private (EEK_SYMBOL (self));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    g_variant_get_child (variant, index++, "s", &priv->name);
 | 
					 | 
				
			||||||
    g_variant_get_child (variant, index++, "s", &priv->label);
 | 
					 | 
				
			||||||
    g_variant_get_child (variant, index++, "u", &priv->category);
 | 
					 | 
				
			||||||
    g_variant_get_child (variant, index++, "u", &priv->modifier_mask);
 | 
					 | 
				
			||||||
    g_variant_get_child (variant, index++, "s", &priv->icon_name);
 | 
					 | 
				
			||||||
    g_variant_get_child (variant, index++, "s", &priv->tooltip);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return index;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					 | 
				
			||||||
eek_serializable_iface_init (EekSerializableIface *iface)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    iface->serialize = eek_symbol_real_serialize;
 | 
					 | 
				
			||||||
    iface->deserialize = eek_symbol_real_deserialize;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
eek_symbol_set_property (GObject      *object,
 | 
					eek_symbol_set_property (GObject      *object,
 | 
				
			||||||
@ -114,9 +68,6 @@ eek_symbol_set_property (GObject      *object,
 | 
				
			|||||||
    case PROP_LABEL:
 | 
					    case PROP_LABEL:
 | 
				
			||||||
        eek_symbol_set_label (EEK_SYMBOL(object), g_value_get_string (value));
 | 
					        eek_symbol_set_label (EEK_SYMBOL(object), g_value_get_string (value));
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case PROP_CATEGORY:
 | 
					 | 
				
			||||||
        eek_symbol_set_category (EEK_SYMBOL(object), g_value_get_enum (value));
 | 
					 | 
				
			||||||
        break;
 | 
					 | 
				
			||||||
    case PROP_MODIFIER_MASK:
 | 
					    case PROP_MODIFIER_MASK:
 | 
				
			||||||
        eek_symbol_set_modifier_mask (EEK_SYMBOL(object),
 | 
					        eek_symbol_set_modifier_mask (EEK_SYMBOL(object),
 | 
				
			||||||
                                      g_value_get_flags (value));
 | 
					                                      g_value_get_flags (value));
 | 
				
			||||||
@ -148,9 +99,6 @@ eek_symbol_get_property (GObject    *object,
 | 
				
			|||||||
    case PROP_LABEL:
 | 
					    case PROP_LABEL:
 | 
				
			||||||
        g_value_set_string (value, eek_symbol_get_label (EEK_SYMBOL(object)));
 | 
					        g_value_set_string (value, eek_symbol_get_label (EEK_SYMBOL(object)));
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case PROP_CATEGORY:
 | 
					 | 
				
			||||||
        g_value_set_enum (value, eek_symbol_get_category (EEK_SYMBOL(object)));
 | 
					 | 
				
			||||||
        break;
 | 
					 | 
				
			||||||
    case PROP_MODIFIER_MASK:
 | 
					    case PROP_MODIFIER_MASK:
 | 
				
			||||||
        g_value_set_flags (value,
 | 
					        g_value_set_flags (value,
 | 
				
			||||||
                           eek_symbol_get_modifier_mask (EEK_SYMBOL(object)));
 | 
					                           eek_symbol_get_modifier_mask (EEK_SYMBOL(object)));
 | 
				
			||||||
@ -206,14 +154,6 @@ eek_symbol_class_init (EekSymbolClass *klass)
 | 
				
			|||||||
                                 G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
 | 
					                                 G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
 | 
				
			||||||
    g_object_class_install_property (gobject_class, PROP_LABEL, pspec);
 | 
					    g_object_class_install_property (gobject_class, PROP_LABEL, pspec);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pspec = g_param_spec_enum ("category",
 | 
					 | 
				
			||||||
                               "Category",
 | 
					 | 
				
			||||||
                               "Category of the symbol",
 | 
					 | 
				
			||||||
                               EEK_TYPE_SYMBOL_CATEGORY,
 | 
					 | 
				
			||||||
                               EEK_SYMBOL_CATEGORY_UNKNOWN,
 | 
					 | 
				
			||||||
                               G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
 | 
					 | 
				
			||||||
    g_object_class_install_property (gobject_class, PROP_CATEGORY, pspec);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    pspec = g_param_spec_flags ("modifier-mask",
 | 
					    pspec = g_param_spec_flags ("modifier-mask",
 | 
				
			||||||
                                "Modifier mask",
 | 
					                                "Modifier mask",
 | 
				
			||||||
                                "Modifier mask of the symbol",
 | 
					                                "Modifier mask of the symbol",
 | 
				
			||||||
@ -239,11 +179,7 @@ eek_symbol_class_init (EekSymbolClass *klass)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
eek_symbol_init (EekSymbol *self)
 | 
					eek_symbol_init (EekSymbol *self)
 | 
				
			||||||
{
 | 
					{}
 | 
				
			||||||
    EekSymbolPrivate *priv = eek_symbol_get_instance_private (self);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    priv->category = EEK_SYMBOL_CATEGORY_UNKNOWN;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * eek_symbol_new:
 | 
					 * eek_symbol_new:
 | 
				
			||||||
@ -331,40 +267,6 @@ eek_symbol_get_label (EekSymbol *symbol)
 | 
				
			|||||||
    return priv->label;
 | 
					    return priv->label;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * eek_symbol_set_category:
 | 
					 | 
				
			||||||
 * @symbol: an #EekSymbol
 | 
					 | 
				
			||||||
 * @category: an #EekSymbolCategory
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Set symbol category of @symbol to @category.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
void
 | 
					 | 
				
			||||||
eek_symbol_set_category (EekSymbol        *symbol,
 | 
					 | 
				
			||||||
                         EekSymbolCategory category)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    g_return_if_fail (EEK_IS_SYMBOL(symbol));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    priv->category = category;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * eek_symbol_get_category:
 | 
					 | 
				
			||||||
 * @symbol: an #EekSymbol
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Get symbol category of @symbol.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
EekSymbolCategory
 | 
					 | 
				
			||||||
eek_symbol_get_category (EekSymbol *symbol)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    g_return_val_if_fail (EEK_IS_SYMBOL(symbol), EEK_SYMBOL_CATEGORY_UNKNOWN);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return priv->category;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * eek_symbol_set_modifier_mask:
 | 
					 * eek_symbol_set_modifier_mask:
 | 
				
			||||||
 * @symbol: an #EekSymbol
 | 
					 * @symbol: an #EekSymbol
 | 
				
			||||||
@ -486,37 +388,3 @@ eek_symbol_get_tooltip (EekSymbol *symbol)
 | 
				
			|||||||
    return priv->tooltip;
 | 
					    return priv->tooltip;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const struct {
 | 
					 | 
				
			||||||
    EekSymbolCategory category;
 | 
					 | 
				
			||||||
    gchar *name;
 | 
					 | 
				
			||||||
} category_names[] = {
 | 
					 | 
				
			||||||
    { EEK_SYMBOL_CATEGORY_LETTER, "letter" },
 | 
					 | 
				
			||||||
    { EEK_SYMBOL_CATEGORY_FUNCTION, "function" },
 | 
					 | 
				
			||||||
    { EEK_SYMBOL_CATEGORY_KEYNAME, "keyname" },
 | 
					 | 
				
			||||||
    { EEK_SYMBOL_CATEGORY_USER0, "user0" },
 | 
					 | 
				
			||||||
    { EEK_SYMBOL_CATEGORY_USER1, "user1" },
 | 
					 | 
				
			||||||
    { EEK_SYMBOL_CATEGORY_USER2, "user2" },
 | 
					 | 
				
			||||||
    { EEK_SYMBOL_CATEGORY_USER3, "user3" },
 | 
					 | 
				
			||||||
    { EEK_SYMBOL_CATEGORY_USER4, "user4" },
 | 
					 | 
				
			||||||
    { EEK_SYMBOL_CATEGORY_UNKNOWN, NULL }
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const gchar *
 | 
					 | 
				
			||||||
eek_symbol_category_get_name (EekSymbolCategory category)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    gint i;
 | 
					 | 
				
			||||||
    for (i = 0; i < G_N_ELEMENTS(category_names); i++)
 | 
					 | 
				
			||||||
        if (category_names[i].category == category)
 | 
					 | 
				
			||||||
            return category_names[i].name;
 | 
					 | 
				
			||||||
    return NULL;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
EekSymbolCategory
 | 
					 | 
				
			||||||
eek_symbol_category_from_name (const gchar *name)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    gint i;
 | 
					 | 
				
			||||||
    for (i = 0; i < G_N_ELEMENTS(category_names); i++)
 | 
					 | 
				
			||||||
        if (g_strcmp0 (category_names[i].name, name) == 0)
 | 
					 | 
				
			||||||
            return category_names[i].category;
 | 
					 | 
				
			||||||
    return EEK_SYMBOL_CATEGORY_UNKNOWN;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -29,35 +29,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
G_BEGIN_DECLS
 | 
					G_BEGIN_DECLS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * 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.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
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;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define EEK_TYPE_SYMBOL (eek_symbol_get_type())
 | 
					#define EEK_TYPE_SYMBOL (eek_symbol_get_type())
 | 
				
			||||||
G_DECLARE_DERIVABLE_TYPE(EekSymbol, eek_symbol, EEK, SYMBOL, GObject)
 | 
					G_DECLARE_DERIVABLE_TYPE(EekSymbol, eek_symbol, EEK, SYMBOL, GObject)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -78,9 +49,6 @@ const gchar      *eek_symbol_get_name           (EekSymbol        *symbol);
 | 
				
			|||||||
void              eek_symbol_set_label          (EekSymbol        *symbol,
 | 
					void              eek_symbol_set_label          (EekSymbol        *symbol,
 | 
				
			||||||
                                                 const gchar      *label);
 | 
					                                                 const gchar      *label);
 | 
				
			||||||
const gchar      *eek_symbol_get_label          (EekSymbol        *symbol);
 | 
					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);
 | 
					EekModifierType   eek_symbol_get_modifier_mask  (EekSymbol        *symbol);
 | 
				
			||||||
void              eek_symbol_set_modifier_mask  (EekSymbol        *symbol,
 | 
					void              eek_symbol_set_modifier_mask  (EekSymbol        *symbol,
 | 
				
			||||||
                                                 EekModifierType   mask);
 | 
					                                                 EekModifierType   mask);
 | 
				
			||||||
@ -92,9 +60,6 @@ void              eek_symbol_set_tooltip        (EekSymbol        *symbol,
 | 
				
			|||||||
                                                 const gchar      *tooltip);
 | 
					                                                 const gchar      *tooltip);
 | 
				
			||||||
const gchar *     eek_symbol_get_tooltip        (EekSymbol        *symbol);
 | 
					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
 | 
					G_END_DECLS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif  /* EEK_SYMBOL_H */
 | 
					#endif  /* EEK_SYMBOL_H */
 | 
				
			||||||
 | 
				
			|||||||
@ -165,7 +165,6 @@ eek_text_new (const gchar *text)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    return g_object_new (EEK_TYPE_TEXT,
 | 
					    return g_object_new (EEK_TYPE_TEXT,
 | 
				
			||||||
                         "label", text,
 | 
					                         "label", text,
 | 
				
			||||||
                         "category", EEK_SYMBOL_CATEGORY_FUNCTION,
 | 
					 | 
				
			||||||
                         "text", text,
 | 
					                         "text", text,
 | 
				
			||||||
                         NULL);
 | 
					                         NULL);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -568,7 +568,6 @@ struct _SymbolsParseData {
 | 
				
			|||||||
    gchar *label;
 | 
					    gchar *label;
 | 
				
			||||||
    gchar *icon;
 | 
					    gchar *icon;
 | 
				
			||||||
    gchar *tooltip;
 | 
					    gchar *tooltip;
 | 
				
			||||||
    EekSymbolCategory category;
 | 
					 | 
				
			||||||
    guint keyval;
 | 
					    guint keyval;
 | 
				
			||||||
    gint groups;
 | 
					    gint groups;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@ -681,13 +680,6 @@ symbols_start_element_callback (GMarkupParseContext *pcontext,
 | 
				
			|||||||
                                   "tooltip");
 | 
					                                   "tooltip");
 | 
				
			||||||
        if (attribute != NULL)
 | 
					        if (attribute != NULL)
 | 
				
			||||||
            data->tooltip = g_strdup (attribute);
 | 
					            data->tooltip = g_strdup (attribute);
 | 
				
			||||||
 | 
					 | 
				
			||||||
        attribute = get_attribute (attribute_names, attribute_values,
 | 
					 | 
				
			||||||
                                   "category");
 | 
					 | 
				
			||||||
        if (attribute != NULL)
 | 
					 | 
				
			||||||
            data->category = strtoul (attribute, NULL, 10);
 | 
					 | 
				
			||||||
        else
 | 
					 | 
				
			||||||
            data->category = EEK_SYMBOL_CATEGORY_KEYNAME;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 out:
 | 
					 out:
 | 
				
			||||||
@ -755,7 +747,6 @@ symbols_end_element_callback (GMarkupParseContext *pcontext,
 | 
				
			|||||||
            symbol = EEK_SYMBOL(eek_text_new (text));
 | 
					            symbol = EEK_SYMBOL(eek_text_new (text));
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            symbol = eek_symbol_new (text);
 | 
					            symbol = eek_symbol_new (text);
 | 
				
			||||||
            eek_symbol_set_category (symbol, EEK_SYMBOL_CATEGORY_KEYNAME);
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (data->label) {
 | 
					        if (data->label) {
 | 
				
			||||||
 | 
				
			|||||||
@ -33,7 +33,7 @@ else:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
table = dict()
 | 
					table = dict()
 | 
				
			||||||
for line in in_stream:
 | 
					for line in in_stream:
 | 
				
			||||||
    match = re.match(r'\s*(0x[0-9A-F]+)\s+(\S*)\s+(\S*)', line, re.I)
 | 
					    match = re.match(r'\s*(0x[0-9A-F]+)\s+"(.*)"\s+(\S*)', line, re.I)
 | 
				
			||||||
    if match:
 | 
					    if match:
 | 
				
			||||||
        table[int(match.group(1), 16)] = (match.group(2), match.group(3))
 | 
					        table[int(match.group(1), 16)] = (match.group(2), match.group(3))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -42,8 +42,8 @@ sys.stdout.write("static const EekKeysymEntry %s[] = {\n" %
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
for index, (keysym, (l, c)) in enumerate([(keysym, table[keysym])
 | 
					for index, (keysym, (l, c)) in enumerate([(keysym, table[keysym])
 | 
				
			||||||
                                          for keysym in sorted(table.keys())]):
 | 
					                                          for keysym in sorted(table.keys())]):
 | 
				
			||||||
    sys.stdout.write("    { 0x%X, %s, %s }" %
 | 
					    sys.stdout.write("    { 0x%X, \"%s\" }" %
 | 
				
			||||||
                     (keysym, l, c))
 | 
					                     (keysym, l))
 | 
				
			||||||
    if index < len(table) - 1:
 | 
					    if index < len(table) - 1:
 | 
				
			||||||
        sys.stdout.write(",")
 | 
					        sys.stdout.write(",")
 | 
				
			||||||
    sys.stdout.write("\n")
 | 
					    sys.stdout.write("\n")
 | 
				
			||||||
 | 
				
			|||||||
@ -16,7 +16,7 @@ add_project_arguments(
 | 
				
			|||||||
    '-Werror=implicit-function-declaration',
 | 
					    '-Werror=implicit-function-declaration',
 | 
				
			||||||
    '-Werror=implicit-fallthrough=3',
 | 
					    '-Werror=implicit-fallthrough=3',
 | 
				
			||||||
    '-Werror=maybe-uninitialized',
 | 
					    '-Werror=maybe-uninitialized',
 | 
				
			||||||
#    '-Werror=missing-field-initializers', // fix eek-unicode-keysym-entries first
 | 
					    '-Werror=missing-field-initializers',
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  language: 'c'
 | 
					  language: 'c'
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user