Add keyboard selection dialog to preferences.

This commit is contained in:
Daiki Ueno
2012-03-28 11:24:46 +09:00
parent 1943749cb6
commit ee0505c100
20 changed files with 951 additions and 424 deletions

View File

@ -36,8 +36,8 @@
enum {
ENABLED,
DISABLED,
KEY_PRESSED,
DESTROYED,
KEY_ACTIVATED,
LAST_SIGNAL
};
@ -80,14 +80,19 @@ eekboard_context_real_g_signal (GDBusProxy *self,
return;
}
if (g_strcmp0 (signal_name, "Destroyed") == 0) {
g_signal_emit (context, signals[DESTROYED], 0);
return;
}
if (g_strcmp0 (signal_name, "KeyActivated") == 0) {
const gchar *keyname;
guint keycode;
GVariant *variant = NULL;
guint modifiers = 0;
EekSerializable *serializable;
g_variant_get (parameters, "(&svu)",
&keyname, &variant, &modifiers);
g_variant_get (parameters, "(uvu)",
&keycode, &variant, &modifiers);
g_return_if_fail (variant != NULL);
serializable = eek_serializable_deserialize (variant);
@ -95,8 +100,8 @@ eekboard_context_real_g_signal (GDBusProxy *self,
g_return_if_fail (EEK_IS_SYMBOL(serializable));
g_signal_emit (context, signals[KEY_PRESSED], 0,
keyname, EEK_SYMBOL(serializable), modifiers);
g_signal_emit (context, signals[KEY_ACTIVATED], 0,
keycode, EEK_SYMBOL(serializable), modifiers);
g_object_unref (serializable);
return;
@ -140,15 +145,15 @@ eekboard_context_real_disabled (EekboardContext *self)
}
static void
eekboard_context_real_key_pressed (EekboardContext *self,
const gchar *keyname,
EekSymbol *symbol,
guint modifiers)
eekboard_context_real_destroyed (EekboardContext *self)
{
}
static void
eekboard_context_real_destroyed (EekboardContext *self)
eekboard_context_real_key_activated (EekboardContext *self,
const gchar *keyname,
EekSymbol *symbol,
guint modifiers)
{
}
@ -181,8 +186,8 @@ eekboard_context_class_init (EekboardContextClass *klass)
klass->enabled = eekboard_context_real_enabled;
klass->disabled = eekboard_context_real_disabled;
klass->key_pressed = eekboard_context_real_key_pressed;
klass->destroyed = eekboard_context_real_destroyed;
klass->key_activated = eekboard_context_real_key_activated;
proxy_class->g_signal = eekboard_context_real_g_signal;
@ -237,26 +242,26 @@ eekboard_context_class_init (EekboardContextClass *klass)
0);
/**
* EekboardContext::key-pressed:
* EekboardContext::key-activated:
* @context: an #EekboardContext
* @keycode: keycode
* @keycode: a keycode
* @symbol: an #EekSymbol
* @modifiers: modifiers
*
* The ::key-pressed signal is emitted each time a key is pressed
* in @context.
* The ::key-activated signal is emitted each time a key is
* pressed in @context.
*/
signals[KEY_PRESSED] =
g_signal_new (I_("key-pressed"),
signals[KEY_ACTIVATED] =
g_signal_new (I_("key-activated"),
G_TYPE_FROM_CLASS(gobject_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(EekboardContextClass, key_pressed),
G_STRUCT_OFFSET(EekboardContextClass, key_activated),
NULL,
NULL,
_eekboard_marshal_VOID__STRING_OBJECT_UINT,
_eekboard_marshal_VOID__UINT_OBJECT_UINT,
G_TYPE_NONE,
3,
G_TYPE_STRING,
G_TYPE_UINT,
G_TYPE_OBJECT,
G_TYPE_UINT);