Merge branch 'fixes' into 'master'
Fixes See merge request Librem5/squeekboard!115
This commit is contained in:
@ -50,7 +50,7 @@ static void
|
|||||||
eek_container_real_add_child (EekContainer *self,
|
eek_container_real_add_child (EekContainer *self,
|
||||||
EekElement *child)
|
EekElement *child)
|
||||||
{
|
{
|
||||||
EekContainerPrivate *priv = eek_container_get_instance_private (self);
|
EekContainerPrivate *priv = (EekContainerPrivate*)eek_container_get_instance_private (self);
|
||||||
|
|
||||||
g_return_if_fail (EEK_IS_ELEMENT(child));
|
g_return_if_fail (EEK_IS_ELEMENT(child));
|
||||||
g_object_ref (child);
|
g_object_ref (child);
|
||||||
|
|||||||
101
eek/eek-key.c
101
eek/eek-key.c
@ -38,8 +38,6 @@ enum {
|
|||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_KEYCODE,
|
PROP_KEYCODE,
|
||||||
PROP_SYMBOL_MATRIX,
|
PROP_SYMBOL_MATRIX,
|
||||||
PROP_COLUMN,
|
|
||||||
PROP_ROW,
|
|
||||||
PROP_OREF,
|
PROP_OREF,
|
||||||
PROP_LAST
|
PROP_LAST
|
||||||
};
|
};
|
||||||
@ -56,8 +54,6 @@ typedef struct _EekKeyPrivate
|
|||||||
{
|
{
|
||||||
guint keycode;
|
guint keycode;
|
||||||
EekSymbolMatrix *symbol_matrix;
|
EekSymbolMatrix *symbol_matrix;
|
||||||
gint column;
|
|
||||||
gint row;
|
|
||||||
gulong oref; // UI outline reference
|
gulong oref; // UI outline reference
|
||||||
gboolean is_pressed;
|
gboolean is_pressed;
|
||||||
gboolean is_locked;
|
gboolean is_locked;
|
||||||
@ -105,8 +101,6 @@ eek_key_set_property (GObject *object,
|
|||||||
GParamSpec *pspec)
|
GParamSpec *pspec)
|
||||||
{
|
{
|
||||||
EekSymbolMatrix *matrix;
|
EekSymbolMatrix *matrix;
|
||||||
gint column, row;
|
|
||||||
|
|
||||||
switch (prop_id) {
|
switch (prop_id) {
|
||||||
case PROP_KEYCODE:
|
case PROP_KEYCODE:
|
||||||
eek_key_set_keycode (EEK_KEY(object), g_value_get_uint (value));
|
eek_key_set_keycode (EEK_KEY(object), g_value_get_uint (value));
|
||||||
@ -115,14 +109,6 @@ eek_key_set_property (GObject *object,
|
|||||||
matrix = g_value_get_boxed (value);
|
matrix = g_value_get_boxed (value);
|
||||||
eek_key_set_symbol_matrix (EEK_KEY(object), matrix);
|
eek_key_set_symbol_matrix (EEK_KEY(object), matrix);
|
||||||
break;
|
break;
|
||||||
case PROP_COLUMN:
|
|
||||||
eek_key_get_index (EEK_KEY(object), &column, &row);
|
|
||||||
eek_key_set_index (EEK_KEY(object), g_value_get_int (value), row);
|
|
||||||
break;
|
|
||||||
case PROP_ROW:
|
|
||||||
eek_key_get_index (EEK_KEY(object), &column, &row);
|
|
||||||
eek_key_set_index (EEK_KEY(object), column, g_value_get_int (value));
|
|
||||||
break;
|
|
||||||
case PROP_OREF:
|
case PROP_OREF:
|
||||||
eek_key_set_oref (EEK_KEY(object), g_value_get_uint (value));
|
eek_key_set_oref (EEK_KEY(object), g_value_get_uint (value));
|
||||||
break;
|
break;
|
||||||
@ -138,8 +124,6 @@ eek_key_get_property (GObject *object,
|
|||||||
GValue *value,
|
GValue *value,
|
||||||
GParamSpec *pspec)
|
GParamSpec *pspec)
|
||||||
{
|
{
|
||||||
gint column, row;
|
|
||||||
|
|
||||||
switch (prop_id) {
|
switch (prop_id) {
|
||||||
case PROP_KEYCODE:
|
case PROP_KEYCODE:
|
||||||
g_value_set_uint (value, eek_key_get_keycode (EEK_KEY(object)));
|
g_value_set_uint (value, eek_key_get_keycode (EEK_KEY(object)));
|
||||||
@ -148,14 +132,6 @@ eek_key_get_property (GObject *object,
|
|||||||
g_value_set_boxed (value,
|
g_value_set_boxed (value,
|
||||||
eek_key_get_symbol_matrix (EEK_KEY(object)));
|
eek_key_get_symbol_matrix (EEK_KEY(object)));
|
||||||
break;
|
break;
|
||||||
case PROP_COLUMN:
|
|
||||||
eek_key_get_index (EEK_KEY(object), &column, &row);
|
|
||||||
g_value_set_int (value, column);
|
|
||||||
break;
|
|
||||||
case PROP_ROW:
|
|
||||||
eek_key_get_index (EEK_KEY(object), &column, &row);
|
|
||||||
g_value_set_int (value, row);
|
|
||||||
break;
|
|
||||||
case PROP_OREF:
|
case PROP_OREF:
|
||||||
g_value_set_uint (value, eek_key_get_oref (EEK_KEY(object)));
|
g_value_set_uint (value, eek_key_get_oref (EEK_KEY(object)));
|
||||||
break;
|
break;
|
||||||
@ -203,30 +179,6 @@ eek_key_class_init (EekKeyClass *klass)
|
|||||||
G_PARAM_READWRITE);
|
G_PARAM_READWRITE);
|
||||||
g_object_class_install_property (gobject_class, PROP_SYMBOL_MATRIX, pspec);
|
g_object_class_install_property (gobject_class, PROP_SYMBOL_MATRIX, pspec);
|
||||||
|
|
||||||
/**
|
|
||||||
* EekKey:column:
|
|
||||||
*
|
|
||||||
* The column index of #EekKey in the parent #EekSection.
|
|
||||||
*/
|
|
||||||
pspec = g_param_spec_int ("column",
|
|
||||||
"Column",
|
|
||||||
"Column index of the key in section",
|
|
||||||
-1, G_MAXINT, -1,
|
|
||||||
G_PARAM_READWRITE);
|
|
||||||
g_object_class_install_property (gobject_class, PROP_COLUMN, pspec);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* EekKey:row:
|
|
||||||
*
|
|
||||||
* The row index of #EekKey in the parent #EekSection.
|
|
||||||
*/
|
|
||||||
pspec = g_param_spec_int ("row",
|
|
||||||
"Row",
|
|
||||||
"Row index of the key in section",
|
|
||||||
-1, G_MAXINT, -1,
|
|
||||||
G_PARAM_READWRITE);
|
|
||||||
g_object_class_install_property (gobject_class, PROP_ROW, pspec);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* EekKey:oref:
|
* EekKey:oref:
|
||||||
*
|
*
|
||||||
@ -478,59 +430,6 @@ eek_key_get_symbol_at_index (EekKey *key,
|
|||||||
level];
|
level];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* eek_key_set_index:
|
|
||||||
* @key: an #EekKey
|
|
||||||
* @column: column index of @key in #EekSection
|
|
||||||
* @row: row index of @key in #EekSection
|
|
||||||
*
|
|
||||||
* Set the location of @key in #EekSection with @column and @row.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
eek_key_set_index (EekKey *key,
|
|
||||||
gint column,
|
|
||||||
gint row)
|
|
||||||
{
|
|
||||||
g_return_if_fail (EEK_IS_KEY(key));
|
|
||||||
g_return_if_fail (0 <= column);
|
|
||||||
g_return_if_fail (0 <= row);
|
|
||||||
|
|
||||||
EekKeyPrivate *priv = eek_key_get_instance_private (key);
|
|
||||||
|
|
||||||
if (priv->column != column) {
|
|
||||||
priv->column = column;
|
|
||||||
g_object_notify (G_OBJECT(key), "column");
|
|
||||||
}
|
|
||||||
if (priv->row != row) {
|
|
||||||
priv->row = row;
|
|
||||||
g_object_notify (G_OBJECT(key), "row");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* eek_key_get_index:
|
|
||||||
* @key: an #EekKey
|
|
||||||
* @column: (allow-none): pointer where the column index of @key in #EekSection will be stored
|
|
||||||
* @row: (allow-none): pointer where the row index of @key in #EekSection will be stored
|
|
||||||
*
|
|
||||||
* Get the location of @key in #EekSection.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
eek_key_get_index (EekKey *key,
|
|
||||||
gint *column,
|
|
||||||
gint *row)
|
|
||||||
{
|
|
||||||
g_return_if_fail (EEK_IS_KEY(key));
|
|
||||||
g_return_if_fail (column != NULL || row != NULL);
|
|
||||||
|
|
||||||
EekKeyPrivate *priv = eek_key_get_instance_private (key);
|
|
||||||
|
|
||||||
if (column != NULL)
|
|
||||||
*column = priv->column;
|
|
||||||
if (row != NULL)
|
|
||||||
*row = priv->row;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* eek_key_set_oref:
|
* eek_key_set_oref:
|
||||||
* @key: an #EekKey
|
* @key: an #EekKey
|
||||||
|
|||||||
@ -73,13 +73,6 @@ EekSymbol *eek_key_get_symbol_at_index (EekKey *key,
|
|||||||
gint fallback_group,
|
gint fallback_group,
|
||||||
gint fallback_level);
|
gint fallback_level);
|
||||||
|
|
||||||
void eek_key_set_index (EekKey *key,
|
|
||||||
gint column,
|
|
||||||
gint row);
|
|
||||||
void eek_key_get_index (EekKey *key,
|
|
||||||
gint *column,
|
|
||||||
gint *row);
|
|
||||||
|
|
||||||
void eek_key_set_oref (EekKey *key,
|
void eek_key_set_oref (EekKey *key,
|
||||||
guint oref);
|
guint oref);
|
||||||
guint eek_key_get_oref (EekKey *key);
|
guint eek_key_get_oref (EekKey *key);
|
||||||
|
|||||||
110
eek/eek-keysym.c
110
eek/eek-keysym.c
@ -48,11 +48,6 @@
|
|||||||
#define EEK_KEYSYM_Hyper_L 0xffed
|
#define EEK_KEYSYM_Hyper_L 0xffed
|
||||||
#define EEK_KEYSYM_Hyper_R 0xffee
|
#define EEK_KEYSYM_Hyper_R 0xffee
|
||||||
|
|
||||||
typedef struct _EekKeysymPrivate
|
|
||||||
{
|
|
||||||
guint xkeysym;
|
|
||||||
} EekKeysymPrivate;
|
|
||||||
|
|
||||||
struct _EekKeysymEntry {
|
struct _EekKeysymEntry {
|
||||||
guint xkeysym;
|
guint xkeysym;
|
||||||
const gchar *name;
|
const gchar *name;
|
||||||
@ -64,54 +59,6 @@ typedef struct _EekKeysymEntry EekKeysymEntry;
|
|||||||
#include "eek-unicode-keysym-entries.h"
|
#include "eek-unicode-keysym-entries.h"
|
||||||
#include "eek-xkeysym-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 *
|
static gchar *
|
||||||
unichar_to_utf8 (gunichar uc)
|
unichar_to_utf8 (gunichar uc)
|
||||||
@ -196,18 +143,6 @@ get_modifier_mask (guint xkeysym)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
eek_keysym_class_init (EekKeysymClass *klass)
|
|
||||||
{
|
|
||||||
/* void */
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
eek_keysym_init (EekKeysym *self)
|
|
||||||
{
|
|
||||||
/* void */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* eek_keysym_new_with_modifier:
|
* eek_keysym_new_with_modifier:
|
||||||
* @xkeysym: an X keysym value
|
* @xkeysym: an X keysym value
|
||||||
@ -216,12 +151,9 @@ eek_keysym_init (EekKeysym *self)
|
|||||||
* Create an #EekKeysym with given X keysym value @xkeysym and
|
* Create an #EekKeysym with given X keysym value @xkeysym and
|
||||||
* modifier @modifier_mask.
|
* modifier @modifier_mask.
|
||||||
*/
|
*/
|
||||||
EekKeysym *
|
EekSymbol *eek_keysym_new_with_modifier(guint xkeysym,
|
||||||
eek_keysym_new_with_modifier (guint xkeysym,
|
|
||||||
EekModifierType modifier_mask)
|
EekModifierType modifier_mask)
|
||||||
{
|
{
|
||||||
EekKeysym *keysym;
|
|
||||||
EekKeysymPrivate *priv;
|
|
||||||
EekKeysymEntry *special_entry, *xkeysym_entry, *unicode_entry,
|
EekKeysymEntry *special_entry, *xkeysym_entry, *unicode_entry,
|
||||||
*unichar_entry;
|
*unichar_entry;
|
||||||
gchar *name, *label;
|
gchar *name, *label;
|
||||||
@ -267,11 +199,10 @@ eek_keysym_new_with_modifier (guint xkeysym,
|
|||||||
else
|
else
|
||||||
label = g_strdup (name);
|
label = g_strdup (name);
|
||||||
|
|
||||||
keysym = g_object_new (EEK_TYPE_KEYSYM,
|
EekSymbol *keysym = eek_symbol_new(name);
|
||||||
"name", name,
|
eek_symbol_set_label(keysym, label);
|
||||||
"label", label,
|
eek_symbol_set_modifier_mask(keysym, modifier_mask);
|
||||||
"modifier-mask", modifier_mask,
|
|
||||||
NULL);
|
|
||||||
g_free (name);
|
g_free (name);
|
||||||
g_free (label);
|
g_free (label);
|
||||||
|
|
||||||
@ -280,8 +211,7 @@ eek_keysym_new_with_modifier (guint xkeysym,
|
|||||||
g_slice_free (EekKeysymEntry, unichar_entry);
|
g_slice_free (EekKeysymEntry, unichar_entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
priv = eek_keysym_get_instance_private (keysym);
|
keysym->xkeysym = xkeysym;
|
||||||
priv->xkeysym = xkeysym;
|
|
||||||
|
|
||||||
return keysym;
|
return keysym;
|
||||||
}
|
}
|
||||||
@ -292,7 +222,7 @@ eek_keysym_new_with_modifier (guint xkeysym,
|
|||||||
*
|
*
|
||||||
* Create an #EekKeysym with given X keysym value @xkeysym.
|
* Create an #EekKeysym with given X keysym value @xkeysym.
|
||||||
*/
|
*/
|
||||||
EekKeysym *
|
EekSymbol*
|
||||||
eek_keysym_new (guint xkeysym)
|
eek_keysym_new (guint xkeysym)
|
||||||
{
|
{
|
||||||
return eek_keysym_new_with_modifier (xkeysym, get_modifier_mask (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.
|
* Create an #EekKeysym with an X keysym value looked up by @name.
|
||||||
*/
|
*/
|
||||||
EekKeysym *
|
EekSymbol*
|
||||||
eek_keysym_new_from_name (const gchar *name)
|
eek_keysym_new_from_name (const gchar *name)
|
||||||
{
|
{
|
||||||
gint i;
|
for (uint i = 0; i < G_N_ELEMENTS(xkeysym_keysym_entries); i++)
|
||||||
|
|
||||||
for (i = 0; i < G_N_ELEMENTS(xkeysym_keysym_entries); i++)
|
|
||||||
if (g_strcmp0 (xkeysym_keysym_entries[i].name, name) == 0)
|
if (g_strcmp0 (xkeysym_keysym_entries[i].name, name) == 0)
|
||||||
return eek_keysym_new (xkeysym_keysym_entries[i].xkeysym);
|
return eek_keysym_new (xkeysym_keysym_entries[i].xkeysym);
|
||||||
|
|
||||||
// g_warning ("can't find keysym entry for %s", name);
|
EekSymbol *ret = eek_symbol_new(name);
|
||||||
return g_object_new (EEK_TYPE_KEYSYM,
|
eek_symbol_set_label(ret, name);
|
||||||
"name", name,
|
return ret;
|
||||||
"label", name,
|
|
||||||
"modifier-mask", 0,
|
|
||||||
NULL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -328,11 +253,10 @@ eek_keysym_new_from_name (const gchar *name)
|
|||||||
* Get an X keysym value associated with @keysym
|
* Get an X keysym value associated with @keysym
|
||||||
*/
|
*/
|
||||||
guint
|
guint
|
||||||
eek_keysym_get_xkeysym (EekKeysym *keysym)
|
eek_keysym_get_xkeysym (EekSymbol *keysym)
|
||||||
{
|
{
|
||||||
EekKeysymPrivate *priv;
|
if (keysym->xkeysym == 0) {
|
||||||
|
g_warning("Symbol %s was expected to have a valid keysym", keysym->name);
|
||||||
g_assert (EEK_IS_KEYSYM(keysym));
|
}
|
||||||
priv = eek_keysym_get_instance_private (keysym);
|
return keysym->xkeysym;
|
||||||
return priv->xkeysym;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -37,20 +37,11 @@ G_BEGIN_DECLS
|
|||||||
*/
|
*/
|
||||||
#define EEK_INVALID_KEYSYM (0)
|
#define EEK_INVALID_KEYSYM (0)
|
||||||
|
|
||||||
#define EEK_TYPE_KEYSYM (eek_keysym_get_type())
|
EekSymbol *eek_keysym_new (guint xkeysym);
|
||||||
G_DECLARE_DERIVABLE_TYPE (EekKeysym, eek_keysym, EEK, KEYSYM, EekSymbol)
|
guint eek_keysym_get_xkeysym (EekSymbol *keysym);
|
||||||
|
|
||||||
struct _EekKeysymClass {
|
EekSymbol *eek_keysym_new_from_name (const gchar *name);
|
||||||
/*< private >*/
|
EekSymbol *eek_keysym_new_with_modifier (guint xkeysym,
|
||||||
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,
|
|
||||||
EekModifierType modifier_mask);
|
EekModifierType modifier_mask);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|||||||
@ -424,7 +424,7 @@ render_key (EekRenderer *self,
|
|||||||
|
|
||||||
/* render label */
|
/* render label */
|
||||||
layout = pango_cairo_create_layout (cr);
|
layout = pango_cairo_create_layout (cr);
|
||||||
eek_renderer_render_key_label (self, layout, key);
|
eek_renderer_real_render_key_label (self, layout, key);
|
||||||
pango_layout_get_extents (layout, NULL, &extents);
|
pango_layout_get_extents (layout, NULL, &extents);
|
||||||
|
|
||||||
cairo_save (cr);
|
cairo_save (cr);
|
||||||
@ -723,7 +723,6 @@ eek_renderer_class_init (EekRendererClass *klass)
|
|||||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||||
GParamSpec *pspec;
|
GParamSpec *pspec;
|
||||||
|
|
||||||
klass->render_key_label = eek_renderer_real_render_key_label;
|
|
||||||
klass->render_key_outline = eek_renderer_real_render_key_outline;
|
klass->render_key_outline = eek_renderer_real_render_key_outline;
|
||||||
klass->render_key = eek_renderer_real_render_key;
|
klass->render_key = eek_renderer_real_render_key;
|
||||||
klass->render_keyboard = eek_renderer_real_render_keyboard;
|
klass->render_keyboard = eek_renderer_real_render_keyboard;
|
||||||
@ -965,18 +964,6 @@ eek_renderer_create_pango_layout (EekRenderer *renderer)
|
|||||||
return pango_layout_new (priv->pcontext);
|
return pango_layout_new (priv->pcontext);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
eek_renderer_render_key_label (EekRenderer *renderer,
|
|
||||||
PangoLayout *layout,
|
|
||||||
EekKey *key)
|
|
||||||
{
|
|
||||||
g_return_if_fail (EEK_IS_RENDERER(renderer));
|
|
||||||
g_return_if_fail (EEK_IS_KEY(key));
|
|
||||||
|
|
||||||
EEK_RENDERER_GET_CLASS(renderer)->
|
|
||||||
render_key_label (renderer, layout, key);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
eek_renderer_render_key_outline (EekRenderer *renderer,
|
eek_renderer_render_key_outline (EekRenderer *renderer,
|
||||||
cairo_t *cr,
|
cairo_t *cr,
|
||||||
|
|||||||
@ -37,10 +37,6 @@ struct _EekRendererClass
|
|||||||
{
|
{
|
||||||
GObjectClass parent_class;
|
GObjectClass parent_class;
|
||||||
|
|
||||||
void (* render_key_label) (EekRenderer *self,
|
|
||||||
PangoLayout *layout,
|
|
||||||
EekKey *key);
|
|
||||||
|
|
||||||
void (* render_key_outline) (EekRenderer *self,
|
void (* render_key_outline) (EekRenderer *self,
|
||||||
cairo_t *cr,
|
cairo_t *cr,
|
||||||
EekKey *key,
|
EekKey *key,
|
||||||
|
|||||||
@ -61,7 +61,7 @@ typedef struct _EekRow EekRow;
|
|||||||
typedef struct _EekSectionPrivate
|
typedef struct _EekSectionPrivate
|
||||||
{
|
{
|
||||||
gint angle;
|
gint angle;
|
||||||
GSList *rows;
|
EekRow row;
|
||||||
EekModifierType modifiers;
|
EekModifierType modifiers;
|
||||||
} EekSectionPrivate;
|
} EekSectionPrivate;
|
||||||
|
|
||||||
@ -70,9 +70,7 @@ G_DEFINE_TYPE_WITH_PRIVATE (EekSection, eek_section, EEK_TYPE_CONTAINER)
|
|||||||
static gint
|
static gint
|
||||||
eek_section_real_get_n_rows (EekSection *self)
|
eek_section_real_get_n_rows (EekSection *self)
|
||||||
{
|
{
|
||||||
EekSectionPrivate *priv = eek_section_get_instance_private (self);
|
return 1;
|
||||||
|
|
||||||
return g_slist_length (priv->rows);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -80,13 +78,14 @@ eek_section_real_add_row (EekSection *self,
|
|||||||
gint num_columns,
|
gint num_columns,
|
||||||
EekOrientation orientation)
|
EekOrientation orientation)
|
||||||
{
|
{
|
||||||
EekSectionPrivate *priv = eek_section_get_instance_private (self);
|
EekSectionPrivate *priv = (EekSectionPrivate*)eek_section_get_instance_private (self);
|
||||||
EekRow *row;
|
priv->row.num_columns = num_columns;
|
||||||
|
priv->row.orientation = orientation;
|
||||||
|
/*
|
||||||
row = g_slice_new (EekRow);
|
row = g_slice_new (EekRow);
|
||||||
row->num_columns = num_columns;
|
row->num_columns = num_columns;
|
||||||
row->orientation = orientation;
|
row->orientation = orientation;
|
||||||
priv->rows = g_slist_append (priv->rows, row);
|
priv->rows = g_slist_append (priv->rows, row);*/
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -95,16 +94,15 @@ eek_section_real_get_row (EekSection *self,
|
|||||||
gint *num_columns,
|
gint *num_columns,
|
||||||
EekOrientation *orientation)
|
EekOrientation *orientation)
|
||||||
{
|
{
|
||||||
EekSectionPrivate *priv = eek_section_get_instance_private (self);
|
EekSectionPrivate *priv = (EekSectionPrivate*)eek_section_get_instance_private (self);
|
||||||
EekRow *row;
|
EekRow *row = &priv->row;
|
||||||
|
if (num_columns) {
|
||||||
row = g_slist_nth_data (priv->rows, index);
|
|
||||||
g_return_if_fail (row);
|
|
||||||
if (num_columns)
|
|
||||||
*num_columns = row->num_columns;
|
*num_columns = row->num_columns;
|
||||||
if (orientation)
|
}
|
||||||
|
if (orientation) {
|
||||||
*orientation = row->orientation;
|
*orientation = row->orientation;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
on_locked (EekKey *key,
|
on_locked (EekKey *key,
|
||||||
@ -123,28 +121,16 @@ on_unlocked (EekKey *key,
|
|||||||
static EekKey *
|
static EekKey *
|
||||||
eek_section_real_create_key (EekSection *self,
|
eek_section_real_create_key (EekSection *self,
|
||||||
const gchar *name,
|
const gchar *name,
|
||||||
gint keycode,
|
gint keycode)
|
||||||
gint column_index,
|
|
||||||
gint row_index)
|
|
||||||
{
|
{
|
||||||
EekKey *key;
|
EekSectionPrivate *priv = (EekSectionPrivate*)eek_section_get_instance_private (self);
|
||||||
gint num_rows;
|
|
||||||
EekRow *row;
|
|
||||||
|
|
||||||
num_rows = eek_section_get_n_rows (self);
|
EekRow *row = &priv->row;
|
||||||
g_return_val_if_fail (0 <= row_index && row_index < num_rows, NULL);
|
row->num_columns++;
|
||||||
|
|
||||||
EekSectionPrivate *priv = eek_section_get_instance_private (self);
|
EekKey *key = (EekKey*)g_object_new (EEK_TYPE_KEY,
|
||||||
|
|
||||||
row = g_slist_nth_data (priv->rows, row_index);
|
|
||||||
if (row->num_columns < column_index + 1)
|
|
||||||
row->num_columns = column_index + 1;
|
|
||||||
|
|
||||||
key = g_object_new (EEK_TYPE_KEY,
|
|
||||||
"name", name,
|
"name", name,
|
||||||
"keycode", keycode,
|
"keycode", keycode,
|
||||||
"column", column_index,
|
|
||||||
"row", row_index,
|
|
||||||
NULL);
|
NULL);
|
||||||
g_return_val_if_fail (key, NULL);
|
g_return_val_if_fail (key, NULL);
|
||||||
|
|
||||||
@ -225,12 +211,7 @@ static void
|
|||||||
eek_section_finalize (GObject *object)
|
eek_section_finalize (GObject *object)
|
||||||
{
|
{
|
||||||
EekSection *self = EEK_SECTION (object);
|
EekSection *self = EEK_SECTION (object);
|
||||||
EekSectionPrivate *priv = eek_section_get_instance_private (self);
|
EekSectionPrivate *priv = (EekSectionPrivate*)eek_section_get_instance_private (self);
|
||||||
GSList *head;
|
|
||||||
|
|
||||||
for (head = priv->rows; head; head = g_slist_next (head))
|
|
||||||
g_slice_free (EekRow, head->data);
|
|
||||||
g_slist_free (priv->rows);
|
|
||||||
|
|
||||||
G_OBJECT_CLASS (eek_section_parent_class)->finalize (object);
|
G_OBJECT_CLASS (eek_section_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
@ -475,16 +456,12 @@ eek_section_get_row (EekSection *section,
|
|||||||
EekKey *
|
EekKey *
|
||||||
eek_section_create_key (EekSection *section,
|
eek_section_create_key (EekSection *section,
|
||||||
const gchar *name,
|
const gchar *name,
|
||||||
gint keycode,
|
gint keycode)
|
||||||
gint column,
|
|
||||||
gint row)
|
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (EEK_IS_SECTION(section), NULL);
|
g_return_val_if_fail (EEK_IS_SECTION(section), NULL);
|
||||||
return EEK_SECTION_GET_CLASS(section)->create_key (section,
|
return EEK_SECTION_GET_CLASS(section)->create_key (section,
|
||||||
name,
|
name,
|
||||||
keycode,
|
keycode);
|
||||||
column,
|
|
||||||
row);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const double keyspacing = 4.0;
|
const double keyspacing = 4.0;
|
||||||
|
|||||||
@ -63,9 +63,7 @@ struct _EekSectionClass
|
|||||||
|
|
||||||
EekKey *(* create_key) (EekSection *self,
|
EekKey *(* create_key) (EekSection *self,
|
||||||
const gchar *name,
|
const gchar *name,
|
||||||
gint keycode,
|
gint keycode);
|
||||||
gint row,
|
|
||||||
gint column);
|
|
||||||
|
|
||||||
/* signals */
|
/* signals */
|
||||||
void (* key_pressed) (EekSection *self,
|
void (* key_pressed) (EekSection *self,
|
||||||
@ -101,9 +99,7 @@ void eek_section_get_row (EekSection *section,
|
|||||||
|
|
||||||
EekKey *eek_section_create_key (EekSection *section,
|
EekKey *eek_section_create_key (EekSection *section,
|
||||||
const gchar *name,
|
const gchar *name,
|
||||||
gint keycode,
|
gint keycode);
|
||||||
gint column,
|
|
||||||
gint row);
|
|
||||||
|
|
||||||
EekKey *eek_section_find_key_by_keycode (EekSection *section,
|
EekKey *eek_section_find_key_by_keycode (EekSection *section,
|
||||||
guint keycode);
|
guint keycode);
|
||||||
|
|||||||
@ -36,24 +36,19 @@ EekSymbolMatrix *
|
|||||||
eek_symbol_matrix_copy (const EekSymbolMatrix *matrix)
|
eek_symbol_matrix_copy (const EekSymbolMatrix *matrix)
|
||||||
{
|
{
|
||||||
EekSymbolMatrix *retval;
|
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 = g_slice_dup (EekSymbolMatrix, matrix);
|
||||||
retval->data = g_slice_copy (sizeof (EekSymbol *) * num_symbols,
|
retval->data = g_slice_copy (sizeof (EekSymbol *) * num_symbols,
|
||||||
matrix->data);
|
matrix->data);
|
||||||
for (i = 0; i < num_symbols; i++)
|
// FIXME: do a deep copy over the data in EekSymbol
|
||||||
if (retval->data[i])
|
|
||||||
g_object_ref (retval->data[i]);
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
eek_symbol_matrix_free (EekSymbolMatrix *matrix)
|
eek_symbol_matrix_free (EekSymbolMatrix *matrix)
|
||||||
{
|
{
|
||||||
gint i, num_symbols = matrix->num_groups * matrix->num_levels;
|
guint 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]);
|
|
||||||
g_slice_free1 (sizeof (EekSymbol *) * num_symbols, matrix->data);
|
g_slice_free1 (sizeof (EekSymbol *) * num_symbols, matrix->data);
|
||||||
g_slice_free (EekSymbolMatrix, matrix);
|
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 (group >= 0 && group < matrix->num_groups);
|
||||||
g_return_if_fail (level >= 0 && level < matrix->num_levels);
|
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);
|
matrix->data[group * matrix->num_levels + level] = g_object_ref (symbol);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
282
eek/eek-symbol.c
282
eek/eek-symbol.c
@ -30,204 +30,40 @@
|
|||||||
#include "eek-symbol.h"
|
#include "eek-symbol.h"
|
||||||
#include "eek-enumtypes.h"
|
#include "eek-enumtypes.h"
|
||||||
|
|
||||||
enum {
|
void
|
||||||
PROP_0,
|
eek_symbol_destroy (EekSymbol *priv)
|
||||||
PROP_NAME,
|
|
||||||
PROP_LABEL,
|
|
||||||
PROP_MODIFIER_MASK,
|
|
||||||
PROP_ICON_NAME,
|
|
||||||
PROP_TOOLTIP,
|
|
||||||
PROP_LAST
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct _EekSymbolPrivate
|
|
||||||
{
|
{
|
||||||
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->name);
|
||||||
g_free (priv->label);
|
g_free (priv->label);
|
||||||
g_free (priv->icon_name);
|
g_free (priv->icon_name);
|
||||||
g_free (priv->tooltip);
|
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 *
|
EekSymbol *
|
||||||
eek_symbol_new (const gchar *name)
|
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
|
void
|
||||||
eek_symbol_set_name (EekSymbol *symbol,
|
eek_symbol_set_name (EekSymbol *symbol,
|
||||||
const gchar *name)
|
const gchar *name)
|
||||||
{
|
{
|
||||||
g_return_if_fail (EEK_IS_SYMBOL(symbol));
|
g_free (symbol->name);
|
||||||
|
symbol->name = g_strdup (name);
|
||||||
EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol);
|
|
||||||
|
|
||||||
g_free (priv->name);
|
|
||||||
priv->name = g_strdup (name);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* eek_symbol_get_name:
|
|
||||||
* @symbol: an #EekSymbol
|
|
||||||
*
|
|
||||||
* Get the name of @symbol.
|
|
||||||
*/
|
|
||||||
const gchar *
|
const gchar *
|
||||||
eek_symbol_get_name (EekSymbol *symbol)
|
eek_symbol_get_name (EekSymbol *symbol)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (EEK_IS_SYMBOL(symbol), NULL);
|
if (symbol->name == NULL || *symbol->name == '\0')
|
||||||
|
|
||||||
EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol);
|
|
||||||
|
|
||||||
if (priv->name == NULL || *priv->name == '\0')
|
|
||||||
return NULL;
|
return NULL;
|
||||||
return priv->name;
|
return symbol->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -241,12 +77,8 @@ void
|
|||||||
eek_symbol_set_label (EekSymbol *symbol,
|
eek_symbol_set_label (EekSymbol *symbol,
|
||||||
const gchar *label)
|
const gchar *label)
|
||||||
{
|
{
|
||||||
g_return_if_fail (EEK_IS_SYMBOL(symbol));
|
g_free (symbol->label);
|
||||||
|
symbol->label = g_strdup (label);
|
||||||
EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol);
|
|
||||||
|
|
||||||
g_free (priv->label);
|
|
||||||
priv->label = g_strdup (label);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -258,13 +90,9 @@ eek_symbol_set_label (EekSymbol *symbol,
|
|||||||
const gchar *
|
const gchar *
|
||||||
eek_symbol_get_label (EekSymbol *symbol)
|
eek_symbol_get_label (EekSymbol *symbol)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (EEK_IS_SYMBOL(symbol), NULL);
|
if (symbol->label == NULL || *symbol->label == '\0')
|
||||||
|
|
||||||
EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol);
|
|
||||||
|
|
||||||
if (priv->label == NULL || *priv->label == '\0')
|
|
||||||
return NULL;
|
return NULL;
|
||||||
return priv->label;
|
return symbol->label;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -278,11 +106,7 @@ void
|
|||||||
eek_symbol_set_modifier_mask (EekSymbol *symbol,
|
eek_symbol_set_modifier_mask (EekSymbol *symbol,
|
||||||
EekModifierType mask)
|
EekModifierType mask)
|
||||||
{
|
{
|
||||||
g_return_if_fail (EEK_IS_SYMBOL(symbol));
|
symbol->modifier_mask = mask;
|
||||||
|
|
||||||
EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol);
|
|
||||||
|
|
||||||
priv->modifier_mask = mask;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -294,97 +118,43 @@ eek_symbol_set_modifier_mask (EekSymbol *symbol,
|
|||||||
EekModifierType
|
EekModifierType
|
||||||
eek_symbol_get_modifier_mask (EekSymbol *symbol)
|
eek_symbol_get_modifier_mask (EekSymbol *symbol)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (EEK_IS_SYMBOL(symbol), 0);
|
return symbol->modifier_mask;
|
||||||
|
|
||||||
EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol);
|
|
||||||
|
|
||||||
return priv->modifier_mask;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* eek_symbol_is_modifier:
|
|
||||||
* @symbol: an #EekSymbol
|
|
||||||
*
|
|
||||||
* Check if @symbol is a modifier.
|
|
||||||
* Returns: %TRUE if @symbol is a modifier.
|
|
||||||
*/
|
|
||||||
gboolean
|
gboolean
|
||||||
eek_symbol_is_modifier (EekSymbol *symbol)
|
eek_symbol_is_modifier (EekSymbol *symbol)
|
||||||
{
|
{
|
||||||
return eek_symbol_get_modifier_mask (symbol) != 0;
|
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
|
void
|
||||||
eek_symbol_set_icon_name (EekSymbol *symbol,
|
eek_symbol_set_icon_name (EekSymbol *symbol,
|
||||||
const gchar *icon_name)
|
const gchar *icon_name)
|
||||||
{
|
{
|
||||||
g_return_if_fail (EEK_IS_SYMBOL(symbol));
|
g_free (symbol->icon_name);
|
||||||
|
symbol->icon_name = g_strdup (icon_name);
|
||||||
EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol);
|
|
||||||
|
|
||||||
g_free (priv->icon_name);
|
|
||||||
priv->icon_name = g_strdup (icon_name);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* eek_symbol_get_icon_name:
|
|
||||||
* @symbol: an #EekSymbol
|
|
||||||
*
|
|
||||||
* Get the icon name of @symbol.
|
|
||||||
*/
|
|
||||||
const gchar *
|
const gchar *
|
||||||
eek_symbol_get_icon_name (EekSymbol *symbol)
|
eek_symbol_get_icon_name (EekSymbol *symbol)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (EEK_IS_SYMBOL(symbol), NULL);
|
if (symbol->icon_name == NULL || *symbol->icon_name == '\0')
|
||||||
|
|
||||||
EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol);
|
|
||||||
|
|
||||||
if (priv->icon_name == NULL || *priv->icon_name == '\0')
|
|
||||||
return NULL;
|
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
|
void
|
||||||
eek_symbol_set_tooltip (EekSymbol *symbol,
|
eek_symbol_set_tooltip (EekSymbol *symbol,
|
||||||
const gchar *tooltip)
|
const gchar *tooltip)
|
||||||
{
|
{
|
||||||
g_return_if_fail (EEK_IS_SYMBOL(symbol));
|
g_free (symbol->tooltip);
|
||||||
|
symbol->tooltip = g_strdup (tooltip);
|
||||||
EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol);
|
|
||||||
|
|
||||||
g_free (priv->tooltip);
|
|
||||||
priv->tooltip = g_strdup (tooltip);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* eek_symbol_get_tooltip:
|
|
||||||
* @symbol: an #EekSymbol
|
|
||||||
*
|
|
||||||
* Get the tooltip text of @symbol.
|
|
||||||
*/
|
|
||||||
const gchar *
|
const gchar *
|
||||||
eek_symbol_get_tooltip (EekSymbol *symbol)
|
eek_symbol_get_tooltip (EekSymbol *symbol)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (EEK_IS_SYMBOL(symbol), NULL);
|
if (symbol->tooltip == NULL || *symbol->tooltip == '\0')
|
||||||
|
|
||||||
EekSymbolPrivate *priv = eek_symbol_get_instance_private (symbol);
|
|
||||||
|
|
||||||
if (priv->tooltip == NULL || *priv->tooltip == '\0')
|
|
||||||
return NULL;
|
return NULL;
|
||||||
return priv->tooltip;
|
return symbol->tooltip;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -29,26 +29,65 @@
|
|||||||
|
|
||||||
G_BEGIN_DECLS
|
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 {
|
typedef enum {
|
||||||
/*< private >*/
|
EEK_SYMBOL_CATEGORY_LETTER,
|
||||||
GObjectClass parent_class;
|
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);
|
EekSymbol *eek_symbol_new (const gchar *name);
|
||||||
|
void eek_symbol_free (EekSymbol *symbol);
|
||||||
void eek_symbol_set_name (EekSymbol *symbol,
|
void eek_symbol_set_name (EekSymbol *symbol,
|
||||||
const gchar *name);
|
const gchar *name);
|
||||||
const gchar *eek_symbol_get_name (EekSymbol *symbol);
|
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);
|
||||||
@ -60,6 +99,9 @@ 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 */
|
||||||
|
|||||||
155
eek/eek-text.c
155
eek/eek-text.c
@ -26,159 +26,18 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include "eek-text.h"
|
#include "eek-text.h"
|
||||||
#include "eek-serializable.h"
|
|
||||||
|
|
||||||
enum {
|
EekSymbol *
|
||||||
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 *
|
|
||||||
eek_text_new (const gchar *text)
|
eek_text_new (const gchar *text)
|
||||||
{
|
{
|
||||||
return g_object_new (EEK_TYPE_TEXT,
|
EekSymbol *ret = eek_symbol_new("");
|
||||||
"label", text,
|
eek_symbol_set_label(ret, text);
|
||||||
"text", text,
|
ret->text = g_strdup (text);
|
||||||
NULL);
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* eek_text_get_text:
|
|
||||||
* @text: an #EekText
|
|
||||||
*
|
|
||||||
* Get a text value associated with @text
|
|
||||||
*/
|
|
||||||
const gchar *
|
const gchar *
|
||||||
eek_text_get_text (EekText *text)
|
eek_text_get_text (EekSymbol *text)
|
||||||
{
|
{
|
||||||
EekTextPrivate *priv = eek_text_get_instance_private (text);
|
return text->text;
|
||||||
|
|
||||||
return priv->text;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,17 +29,9 @@
|
|||||||
|
|
||||||
G_BEGIN_DECLS
|
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;
|
GType eek_text_get_type (void) G_GNUC_CONST;
|
||||||
EekText *eek_text_new (const gchar *text);
|
EekSymbol *eek_text_new (const gchar *text);
|
||||||
const gchar *eek_text_get_text (EekText *text);
|
const gchar *eek_text_get_text (EekSymbol *text);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
|||||||
@ -139,7 +139,6 @@ typedef struct _EekKey EekKey;
|
|||||||
typedef struct _EekSection EekSection;
|
typedef struct _EekSection EekSection;
|
||||||
typedef struct _EekKeyboard EekKeyboard;
|
typedef struct _EekKeyboard EekKeyboard;
|
||||||
typedef struct _EekSymbol EekSymbol;
|
typedef struct _EekSymbol EekSymbol;
|
||||||
typedef struct _EekKeysym EekKeysym;
|
|
||||||
typedef struct _EekText EekText;
|
typedef struct _EekText EekText;
|
||||||
typedef struct _EekTheme EekTheme;
|
typedef struct _EekTheme EekTheme;
|
||||||
typedef struct _EekThemeContext EekThemeContext;
|
typedef struct _EekThemeContext EekThemeContext;
|
||||||
|
|||||||
@ -414,9 +414,7 @@ geometry_start_element_callback (GMarkupParseContext *pcontext,
|
|||||||
|
|
||||||
data->key = eek_section_create_key (data->section,
|
data->key = eek_section_create_key (data->section,
|
||||||
name,
|
name,
|
||||||
keycode,
|
keycode);
|
||||||
data->num_columns,
|
|
||||||
data->num_rows - 1);
|
|
||||||
|
|
||||||
attribute = get_attribute (attribute_names, attribute_values,
|
attribute = get_attribute (attribute_names, attribute_values,
|
||||||
"oref");
|
"oref");
|
||||||
@ -737,14 +735,14 @@ symbols_end_element_callback (GMarkupParseContext *pcontext,
|
|||||||
EekSymbol *symbol;
|
EekSymbol *symbol;
|
||||||
|
|
||||||
if (g_strcmp0 (element_name, "keysym") == 0) {
|
if (g_strcmp0 (element_name, "keysym") == 0) {
|
||||||
EekKeysym *keysym;
|
EekSymbol *keysym;
|
||||||
if (data->keyval != EEK_INVALID_KEYSYM)
|
if (data->keyval != EEK_INVALID_KEYSYM)
|
||||||
keysym = eek_keysym_new (data->keyval);
|
keysym = eek_keysym_new (data->keyval);
|
||||||
else
|
else
|
||||||
keysym = eek_keysym_new_from_name (text);
|
keysym = eek_keysym_new_from_name (text);
|
||||||
symbol = EEK_SYMBOL(keysym);
|
symbol = keysym;
|
||||||
} else if (g_strcmp0 (element_name, "text") == 0) {
|
} else if (g_strcmp0 (element_name, "text") == 0) {
|
||||||
symbol = EEK_SYMBOL(eek_text_new (text));
|
symbol = eek_text_new (text);
|
||||||
} else {
|
} else {
|
||||||
symbol = eek_symbol_new (text);
|
symbol = eek_symbol_new (text);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,7 +35,6 @@ enum {
|
|||||||
ENABLED,
|
ENABLED,
|
||||||
DISABLED,
|
DISABLED,
|
||||||
DESTROYED,
|
DESTROYED,
|
||||||
KEY_ACTIVATED,
|
|
||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -81,28 +80,6 @@ eekboard_context_real_g_signal (GDBusProxy *self,
|
|||||||
return;
|
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) {
|
if (g_strcmp0 (signal_name, "VisibilityChanged") == 0) {
|
||||||
gboolean visible = FALSE;
|
gboolean visible = FALSE;
|
||||||
|
|
||||||
@ -149,14 +126,6 @@ eekboard_context_real_destroyed (EekboardContext *self)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
eekboard_context_real_key_activated (EekboardContext *self,
|
|
||||||
guint keycode,
|
|
||||||
EekSymbol *symbol,
|
|
||||||
guint modifiers)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
eekboard_context_get_property (GObject *object,
|
eekboard_context_get_property (GObject *object,
|
||||||
guint prop_id,
|
guint prop_id,
|
||||||
@ -186,7 +155,6 @@ eekboard_context_class_init (EekboardContextClass *klass)
|
|||||||
klass->enabled = eekboard_context_real_enabled;
|
klass->enabled = eekboard_context_real_enabled;
|
||||||
klass->disabled = eekboard_context_real_disabled;
|
klass->disabled = eekboard_context_real_disabled;
|
||||||
klass->destroyed = eekboard_context_real_destroyed;
|
klass->destroyed = eekboard_context_real_destroyed;
|
||||||
klass->key_activated = eekboard_context_real_key_activated;
|
|
||||||
|
|
||||||
proxy_class->g_signal = eekboard_context_real_g_signal;
|
proxy_class->g_signal = eekboard_context_real_g_signal;
|
||||||
|
|
||||||
@ -240,31 +208,6 @@ eekboard_context_class_init (EekboardContextClass *klass)
|
|||||||
G_TYPE_NONE,
|
G_TYPE_NONE,
|
||||||
0);
|
0);
|
||||||
|
|
||||||
/**
|
|
||||||
* EekboardContext::key-activated:
|
|
||||||
* @context: an #EekboardContext
|
|
||||||
* @keycode: a keycode
|
|
||||||
* @symbol: an #EekSymbol
|
|
||||||
* @modifiers: modifiers
|
|
||||||
*
|
|
||||||
* The ::key-activated signal is emitted each time a key is
|
|
||||||
* pressed in @context.
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
signals[KEY_ACTIVATED] =
|
|
||||||
g_signal_new (I_("key-activated"),
|
|
||||||
G_TYPE_FROM_CLASS(gobject_class),
|
|
||||||
G_SIGNAL_RUN_LAST,
|
|
||||||
G_STRUCT_OFFSET(EekboardContextClass, key_activated),
|
|
||||||
NULL,
|
|
||||||
NULL,
|
|
||||||
_eekboard_marshal_VOID__UINT_OBJECT_UINT,
|
|
||||||
G_TYPE_NONE,
|
|
||||||
3,
|
|
||||||
G_TYPE_UINT,
|
|
||||||
G_TYPE_OBJECT,
|
|
||||||
G_TYPE_UINT);
|
|
||||||
*/
|
|
||||||
/**
|
/**
|
||||||
* EekboardContext::destroyed:
|
* EekboardContext::destroyed:
|
||||||
* @context: an #EekboardContext
|
* @context: an #EekboardContext
|
||||||
|
|||||||
@ -47,11 +47,6 @@ struct _EekboardContextClass {
|
|||||||
void (*disabled) (EekboardContext *self);
|
void (*disabled) (EekboardContext *self);
|
||||||
void (*destroyed) (EekboardContext *self);
|
void (*destroyed) (EekboardContext *self);
|
||||||
|
|
||||||
void (*key_activated) (EekboardContext *self,
|
|
||||||
guint keycode,
|
|
||||||
EekSymbol *symbol,
|
|
||||||
guint modifiers);
|
|
||||||
|
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
/* padding */
|
/* padding */
|
||||||
gpointer pdummy[24];
|
gpointer pdummy[24];
|
||||||
|
|||||||
@ -48,26 +48,6 @@ int send_virtual_keyboard_key(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
send_fake_modifiers_events (SeatEmitter *emitter,
|
|
||||||
EekModifierType modifiers,
|
|
||||||
uint32_t timestamp)
|
|
||||||
{
|
|
||||||
(void)timestamp;
|
|
||||||
|
|
||||||
uint32_t proto_modifiers = 0;
|
|
||||||
if (modifiers & EEK_SHIFT_MASK) {
|
|
||||||
proto_modifiers |= 1<<MOD_IDX_SHIFT;
|
|
||||||
}
|
|
||||||
if (modifiers & EEK_CONTROL_MASK) {
|
|
||||||
proto_modifiers |= 1<<MOD_IDX_CTRL;
|
|
||||||
}
|
|
||||||
if (modifiers & EEK_MOD1_MASK) {
|
|
||||||
proto_modifiers |= 1<<MOD_IDX_ALT;
|
|
||||||
}
|
|
||||||
zwp_virtual_keyboard_v1_modifiers(emitter->virtual_keyboard, proto_modifiers, 0, 0, emitter->group);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Finds the first key code for each modifier and saves it in modifier_keycodes */
|
/* Finds the first key code for each modifier and saves it in modifier_keycodes */
|
||||||
static void
|
static void
|
||||||
update_modifier_info (SeatEmitter *client)
|
update_modifier_info (SeatEmitter *client)
|
||||||
|
|||||||
@ -32,9 +32,9 @@ test_create (void)
|
|||||||
section = eek_keyboard_create_section (keyboard);
|
section = eek_keyboard_create_section (keyboard);
|
||||||
g_assert (EEK_IS_SECTION(section));
|
g_assert (EEK_IS_SECTION(section));
|
||||||
eek_section_add_row (section, 2, EEK_ORIENTATION_HORIZONTAL);
|
eek_section_add_row (section, 2, EEK_ORIENTATION_HORIZONTAL);
|
||||||
key0 = eek_section_create_key (section, "key0", 1, 0, 0);
|
key0 = eek_section_create_key (section, "key0", 1);
|
||||||
g_assert (EEK_IS_KEY(key0));
|
g_assert (EEK_IS_KEY(key0));
|
||||||
key1 = eek_section_create_key (section, "key1", 2, 1, 0);
|
key1 = eek_section_create_key (section, "key1", 2);
|
||||||
g_assert (EEK_IS_KEY(key1));
|
g_assert (EEK_IS_KEY(key1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user