summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Pitt <martin.pitt@ubuntu.com>2012-01-08 18:02:42 +0100
committerSergey V. Udaltsov <svu@gnome.org>2012-01-10 23:17:06 +0000
commit9256e22d10ae3c3600f28ce722ffb3a26a5057d0 (patch)
tree533461e1310ad4a996fc55a6b50a1bf7955a59a5
parent4fc08ecdc7ef842a702e6a05959c0056a1422f4b (diff)
downloadlibxklavier-9256e22d10ae3c3600f28ce722ffb3a26a5057d0.tar.gz
Add setters for XklConfigRec string arrays
Add xkl_config_rec_set_{layouts,variants,options}() setters, as language bindings cannot directly manipulate the string arrays.
-rw-r--r--libxklavier/xkl_config_rec.h42
-rw-r--r--libxklavier/xklavier_props.c24
2 files changed, 66 insertions, 0 deletions
diff --git a/libxklavier/xkl_config_rec.h b/libxklavier/xkl_config_rec.h
index 0658d04..1b837f3 100644
--- a/libxklavier/xkl_config_rec.h
+++ b/libxklavier/xkl_config_rec.h
@@ -239,6 +239,48 @@ extern "C" {
extern gboolean xkl_config_rec_equals(XklConfigRec * data1,
XklConfigRec * data2);
+/**
+ * xkl_config_rec_set_layouts:
+ * @data: record to change
+ * @new_layouts: (array zero-terminated=1) (transfer none): zero terminated
+ * list of new layout names.
+ *
+ * Sets a new layout list.
+ *
+ * Frees the previous layout list. This is primarily useful for bindings, in C
+ * you can manipulate the @layouts record member directly.
+ */
+ extern void xkl_config_rec_set_layouts(XklConfigRec * data,
+ const gchar ** new_layouts);
+
+/**
+ * xkl_config_rec_set_variants:
+ * @data: record to change
+ * @new_variants: (transfer none) (array zero-terminated=1): zero terminated
+ * list of new variant names.
+ *
+ * Sets a new variant list.
+ *
+ * Frees the previous variant list. This is primarily useful for bindings, in C
+ * you can manipulate the @variants record member directly.
+ */
+ extern void xkl_config_rec_set_variants(XklConfigRec * data,
+ const gchar ** new_variants);
+
+/**
+ * xkl_config_rec_set_options:
+ * @data: record to change
+ * @new_options: (transfer none) (array zero-terminated=1): zero terminated
+ * list of new option names.
+ *
+ * Sets a new option list.
+ *
+ * Frees the previous option list. This is primarily useful for bindings, in C
+ * you can manipulate the @options record member directly.
+ */
+ extern void xkl_config_rec_set_options(XklConfigRec * data,
+ const gchar ** new_options);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/libxklavier/xklavier_props.c b/libxklavier/xklavier_props.c
index 3ff7336..b8a2a2e 100644
--- a/libxklavier/xklavier_props.c
+++ b/libxklavier/xklavier_props.c
@@ -191,6 +191,30 @@ xkl_config_rec_equals(XklConfigRec * data1, XklConfigRec * data2)
}
void
+xkl_config_rec_set_layouts(XklConfigRec * data,
+ const gchar ** new_layouts)
+{
+ g_strfreev (data->layouts);
+ data->layouts = g_strdupv ((gchar**) new_layouts);
+}
+
+void
+xkl_config_rec_set_variants(XklConfigRec * data,
+ const gchar ** new_variants)
+{
+ g_strfreev (data->variants);
+ data->variants = g_strdupv ((gchar**) new_variants);
+}
+
+void
+xkl_config_rec_set_options(XklConfigRec * data,
+ const gchar ** new_options)
+{
+ g_strfreev (data->options);
+ data->options = g_strdupv ((gchar**) new_options);
+}
+
+void
xkl_config_rec_init(XklConfigRec * data)
{
/* clear the structure VarDefsPtr... */