Simplify eek-xkb-layout.c.
This commit is contained in:
@ -58,9 +58,6 @@ G_DEFINE_TYPE_WITH_CODE (EekXkbLayout, eek_xkb_layout, EEK_TYPE_LAYOUT,
|
|||||||
enum {
|
enum {
|
||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_DISPLAY,
|
PROP_DISPLAY,
|
||||||
PROP_KEYCODES,
|
|
||||||
PROP_GEOMETRY,
|
|
||||||
PROP_SYMBOLS,
|
|
||||||
PROP_LAST
|
PROP_LAST
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -370,24 +367,11 @@ eek_xkb_layout_set_property (GObject *object,
|
|||||||
GParamSpec *pspec)
|
GParamSpec *pspec)
|
||||||
{
|
{
|
||||||
EekXkbLayout *layout = EEK_XKB_LAYOUT (object);
|
EekXkbLayout *layout = EEK_XKB_LAYOUT (object);
|
||||||
const gchar *name;
|
|
||||||
|
|
||||||
switch (prop_id) {
|
switch (prop_id) {
|
||||||
case PROP_DISPLAY:
|
case PROP_DISPLAY:
|
||||||
layout->priv->display = g_value_get_pointer (value);
|
layout->priv->display = g_value_get_pointer (value);
|
||||||
break;
|
break;
|
||||||
case PROP_KEYCODES:
|
|
||||||
name = g_value_get_string (value);
|
|
||||||
eek_xkb_layout_set_keycodes (EEK_XKB_LAYOUT(object), name);
|
|
||||||
break;
|
|
||||||
case PROP_GEOMETRY:
|
|
||||||
name = g_value_get_string (value);
|
|
||||||
eek_xkb_layout_set_geometry (EEK_XKB_LAYOUT(object), name);
|
|
||||||
break;
|
|
||||||
case PROP_SYMBOLS:
|
|
||||||
name = g_value_get_string (value);
|
|
||||||
eek_xkb_layout_set_symbols (EEK_XKB_LAYOUT(object), name);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -401,24 +385,11 @@ eek_xkb_layout_get_property (GObject *object,
|
|||||||
GParamSpec *pspec)
|
GParamSpec *pspec)
|
||||||
{
|
{
|
||||||
EekXkbLayout *layout = EEK_XKB_LAYOUT (object);
|
EekXkbLayout *layout = EEK_XKB_LAYOUT (object);
|
||||||
const gchar *name;
|
|
||||||
|
|
||||||
switch (prop_id) {
|
switch (prop_id) {
|
||||||
case PROP_DISPLAY:
|
case PROP_DISPLAY:
|
||||||
g_value_set_pointer (value, layout->priv->display);
|
g_value_set_pointer (value, layout->priv->display);
|
||||||
break;
|
break;
|
||||||
case PROP_KEYCODES:
|
|
||||||
name = eek_xkb_layout_get_keycodes (EEK_XKB_LAYOUT(object));
|
|
||||||
g_value_set_string (value, name);
|
|
||||||
break;
|
|
||||||
case PROP_GEOMETRY:
|
|
||||||
name = eek_xkb_layout_get_geometry (EEK_XKB_LAYOUT(object));
|
|
||||||
g_value_set_string (value, name);
|
|
||||||
break;
|
|
||||||
case PROP_SYMBOLS:
|
|
||||||
name = eek_xkb_layout_get_symbols (EEK_XKB_LAYOUT(object));
|
|
||||||
g_value_set_string (value, name);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -446,27 +417,6 @@ eek_xkb_layout_class_init (EekXkbLayoutClass *klass)
|
|||||||
G_PARAM_READWRITE |
|
G_PARAM_READWRITE |
|
||||||
G_PARAM_CONSTRUCT_ONLY);
|
G_PARAM_CONSTRUCT_ONLY);
|
||||||
g_object_class_install_property (gobject_class, PROP_DISPLAY, pspec);
|
g_object_class_install_property (gobject_class, PROP_DISPLAY, pspec);
|
||||||
|
|
||||||
pspec = g_param_spec_string ("keycodes",
|
|
||||||
"Keycodes",
|
|
||||||
"XKB keycodes component name",
|
|
||||||
NULL,
|
|
||||||
G_PARAM_READWRITE);
|
|
||||||
g_object_class_install_property (gobject_class, PROP_KEYCODES, pspec);
|
|
||||||
|
|
||||||
pspec = g_param_spec_string ("geometry",
|
|
||||||
"Geometry",
|
|
||||||
"XKB geometry component name",
|
|
||||||
NULL,
|
|
||||||
G_PARAM_READWRITE);
|
|
||||||
g_object_class_install_property (gobject_class, PROP_GEOMETRY, pspec);
|
|
||||||
|
|
||||||
pspec = g_param_spec_string ("symbols",
|
|
||||||
"Symbols",
|
|
||||||
"XKB symbols component name",
|
|
||||||
NULL,
|
|
||||||
G_PARAM_READWRITE);
|
|
||||||
g_object_class_install_property (gobject_class, PROP_SYMBOLS, pspec);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -556,8 +506,6 @@ eek_xkb_layout_set_names (EekXkbLayout *layout, XkbComponentNamesRec *names)
|
|||||||
EekXkbLayoutPrivate *priv = EEK_XKB_LAYOUT_GET_PRIVATE (layout);
|
EekXkbLayoutPrivate *priv = EEK_XKB_LAYOUT_GET_PRIVATE (layout);
|
||||||
gboolean retval;
|
gboolean retval;
|
||||||
|
|
||||||
g_return_val_if_fail (priv, FALSE);
|
|
||||||
|
|
||||||
if (g_strcmp0 (names->keycodes, priv->names.keycodes)) {
|
if (g_strcmp0 (names->keycodes, priv->names.keycodes)) {
|
||||||
g_free (priv->names.keycodes);
|
g_free (priv->names.keycodes);
|
||||||
priv->names.keycodes = g_strdup (names->keycodes);
|
priv->names.keycodes = g_strdup (names->keycodes);
|
||||||
@ -582,178 +530,6 @@ eek_xkb_layout_set_names (EekXkbLayout *layout, XkbComponentNamesRec *names)
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* eek_xkb_layout_set_names_full:
|
|
||||||
* @layout: an #EekXkbLayout
|
|
||||||
* @Varargs: pairs of component name and value, terminated by NULL.
|
|
||||||
*
|
|
||||||
* Set the XKB component names to @layout. This function is merely a
|
|
||||||
* wrapper around eek_xkb_layout_set_names() to avoid passing a
|
|
||||||
* pointer of XkbComponentNamesRec, which is not currently available
|
|
||||||
* in the gobject-introspection repository.
|
|
||||||
*
|
|
||||||
* Available component names are: keymap, keycodes, types, compat,
|
|
||||||
* symbols, geometry.
|
|
||||||
*
|
|
||||||
* Returns: %TRUE if the component name is successfully set, %FALSE otherwise
|
|
||||||
* Since: 0.0.2
|
|
||||||
*/
|
|
||||||
gboolean
|
|
||||||
eek_xkb_layout_set_names_full (EekXkbLayout *layout,
|
|
||||||
...)
|
|
||||||
{
|
|
||||||
va_list var_args;
|
|
||||||
gboolean retval;
|
|
||||||
|
|
||||||
va_start (var_args, layout);
|
|
||||||
retval = eek_xkb_layout_set_names_full_valist (layout, var_args);
|
|
||||||
va_end (var_args);
|
|
||||||
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* eek_xkb_layout_set_names_full_valist:
|
|
||||||
* @layout: an #EekXkbLayout
|
|
||||||
* @var_args: <type>va_list</type> of pairs of component name and value.
|
|
||||||
*
|
|
||||||
* See eek_xkb_layout_set_names_full(), this version takes a
|
|
||||||
* <type>va_list</type> for language bindings to use.
|
|
||||||
*
|
|
||||||
* Since: 0.0.5
|
|
||||||
*/
|
|
||||||
gboolean
|
|
||||||
eek_xkb_layout_set_names_full_valist (EekXkbLayout *layout,
|
|
||||||
va_list var_args)
|
|
||||||
{
|
|
||||||
XkbComponentNamesRec names;
|
|
||||||
gchar *name, *value;
|
|
||||||
|
|
||||||
memset (&names, 0, sizeof names);
|
|
||||||
name = va_arg (var_args, gchar *);
|
|
||||||
while (name) {
|
|
||||||
value = va_arg (var_args, gchar *);
|
|
||||||
if (g_strcmp0 (name, "keymap") == 0)
|
|
||||||
names.keymap = (char *)value;
|
|
||||||
else if (g_strcmp0 (name, "keycodes") == 0)
|
|
||||||
names.keycodes = (char *)value;
|
|
||||||
else if (g_strcmp0 (name, "types") == 0)
|
|
||||||
names.types = (char *)value;
|
|
||||||
else if (g_strcmp0 (name, "compat") == 0)
|
|
||||||
names.compat = (char *)value;
|
|
||||||
else if (g_strcmp0 (name, "symbols") == 0)
|
|
||||||
names.symbols = (char *)value;
|
|
||||||
else if (g_strcmp0 (name, "geometry") == 0)
|
|
||||||
names.geometry = (char *)value;
|
|
||||||
name = va_arg (var_args, gchar *);
|
|
||||||
}
|
|
||||||
return eek_xkb_layout_set_names (layout, &names);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* eek_xkb_layout_set_keycodes:
|
|
||||||
* @layout: an #EekXkbLayout
|
|
||||||
* @keycodes: component name for keycodes
|
|
||||||
*
|
|
||||||
* Set the keycodes component (in the XKB terminology).
|
|
||||||
* Returns: %TRUE if the component name is successfully set, %FALSE otherwise
|
|
||||||
*/
|
|
||||||
gboolean
|
|
||||||
eek_xkb_layout_set_keycodes (EekXkbLayout *layout, const gchar *keycodes)
|
|
||||||
{
|
|
||||||
EekXkbLayoutPrivate *priv = EEK_XKB_LAYOUT_GET_PRIVATE (layout);
|
|
||||||
XkbComponentNamesRec names;
|
|
||||||
|
|
||||||
g_return_val_if_fail (priv, FALSE);
|
|
||||||
memcpy (&names, &priv->names, sizeof names);
|
|
||||||
names.keycodes = (gchar *)keycodes;
|
|
||||||
return eek_xkb_layout_set_names (layout, &names);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* eek_xkb_layout_set_geometry:
|
|
||||||
* @layout: an #EekXkbLayout
|
|
||||||
* @geometry: component name for geometry
|
|
||||||
*
|
|
||||||
* Returns: %TRUE if the component name is successfully set, %FALSE otherwise
|
|
||||||
*/
|
|
||||||
gboolean
|
|
||||||
eek_xkb_layout_set_geometry (EekXkbLayout *layout, const gchar *geometry)
|
|
||||||
{
|
|
||||||
EekXkbLayoutPrivate *priv = EEK_XKB_LAYOUT_GET_PRIVATE (layout);
|
|
||||||
XkbComponentNamesRec names;
|
|
||||||
|
|
||||||
g_return_val_if_fail (priv, FALSE);
|
|
||||||
memcpy (&names, &priv->names, sizeof names);
|
|
||||||
names.geometry = (gchar *)geometry;
|
|
||||||
return eek_xkb_layout_set_names (layout, &names);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* eek_xkb_layout_set_symbols:
|
|
||||||
* @layout: an #EekXkbLayout
|
|
||||||
* @symbols: component name for symbols
|
|
||||||
*
|
|
||||||
* Set the symbols component (in the XKB terminology).
|
|
||||||
* Returns: %TRUE if the component name is successfully set, %FALSE otherwise
|
|
||||||
*/
|
|
||||||
gboolean
|
|
||||||
eek_xkb_layout_set_symbols (EekXkbLayout *layout, const gchar *symbols)
|
|
||||||
{
|
|
||||||
EekXkbLayoutPrivate *priv = EEK_XKB_LAYOUT_GET_PRIVATE (layout);
|
|
||||||
XkbComponentNamesRec names;
|
|
||||||
|
|
||||||
g_return_val_if_fail (priv, FALSE);
|
|
||||||
memcpy (&names, &priv->names, sizeof names);
|
|
||||||
names.symbols = (gchar *)symbols;
|
|
||||||
return eek_xkb_layout_set_names (layout, &names);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* eek_xkb_layout_get_keycodes:
|
|
||||||
* @layout: an #EekXkbLayout
|
|
||||||
*
|
|
||||||
* Get the keycodes component name (in the XKB terminology).
|
|
||||||
*/
|
|
||||||
const gchar *
|
|
||||||
eek_xkb_layout_get_keycodes (EekXkbLayout *layout)
|
|
||||||
{
|
|
||||||
EekXkbLayoutPrivate *priv = EEK_XKB_LAYOUT_GET_PRIVATE (layout);
|
|
||||||
|
|
||||||
g_return_val_if_fail (priv, NULL);
|
|
||||||
return priv->names.keycodes;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* eek_xkb_layout_get_geometry:
|
|
||||||
* @layout: an #EekXkbLayout
|
|
||||||
*
|
|
||||||
* Get the geometry component name (in the XKB terminology).
|
|
||||||
*/
|
|
||||||
const gchar *
|
|
||||||
eek_xkb_layout_get_geometry (EekXkbLayout *layout)
|
|
||||||
{
|
|
||||||
EekXkbLayoutPrivate *priv = EEK_XKB_LAYOUT_GET_PRIVATE (layout);
|
|
||||||
|
|
||||||
g_return_val_if_fail (priv, NULL);
|
|
||||||
return priv->names.geometry;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* eek_xkb_layout_get_symbols:
|
|
||||||
* @layout: an #EekXkbLayout
|
|
||||||
*
|
|
||||||
* Get the symbols component name (in the XKB terminology).
|
|
||||||
*/
|
|
||||||
const gchar *
|
|
||||||
eek_xkb_layout_get_symbols (EekXkbLayout *layout)
|
|
||||||
{
|
|
||||||
EekXkbLayoutPrivate *priv = EEK_XKB_LAYOUT_GET_PRIVATE (layout);
|
|
||||||
|
|
||||||
g_return_val_if_fail (priv, NULL);
|
|
||||||
return priv->names.symbols;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
get_keyboard (EekXkbLayout *layout)
|
get_keyboard (EekXkbLayout *layout)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -67,22 +67,5 @@ EekLayout *eek_xkb_layout_new (Display *display,
|
|||||||
gboolean eek_xkb_layout_set_names (EekXkbLayout *layout,
|
gboolean eek_xkb_layout_set_names (EekXkbLayout *layout,
|
||||||
XkbComponentNamesRec *names);
|
XkbComponentNamesRec *names);
|
||||||
|
|
||||||
gboolean eek_xkb_layout_set_names_full (EekXkbLayout *layout,
|
|
||||||
...);
|
|
||||||
gboolean eek_xkb_layout_set_names_full_valist
|
|
||||||
(EekXkbLayout *layout,
|
|
||||||
va_list var_args);
|
|
||||||
|
|
||||||
gboolean eek_xkb_layout_set_keycodes (EekXkbLayout *layout,
|
|
||||||
const gchar *keycodes);
|
|
||||||
gboolean eek_xkb_layout_set_geometry (EekXkbLayout *layout,
|
|
||||||
const gchar *geometry);
|
|
||||||
gboolean eek_xkb_layout_set_symbols (EekXkbLayout *layout,
|
|
||||||
const gchar *symbols);
|
|
||||||
|
|
||||||
const gchar *eek_xkb_layout_get_keycodes (EekXkbLayout *layout);
|
|
||||||
const gchar *eek_xkb_layout_get_geometry (EekXkbLayout *layout);
|
|
||||||
const gchar *eek_xkb_layout_get_symbols (EekXkbLayout *layout);
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
#endif /* #ifndef EEK_XKB_LAYOUT_H */
|
#endif /* #ifndef EEK_XKB_LAYOUT_H */
|
||||||
|
|||||||
Reference in New Issue
Block a user