ibus-m17n/ibus-m17n-iok.patch

101 lines
3.4 KiB
Diff
Raw Normal View History

2011-07-07 05:37:21 +00:00
Patch to support iok (Indic Onscreen Keyboard).
Index: ibus-m17n-1.3.2/src/engine.c
===================================================================
--- ibus-m17n-1.3.2.orig/src/engine.c
+++ ibus-m17n-1.3.2/src/engine.c
@@ -23,6 +23,7 @@ struct _IBusM17NEngine {
2010-09-03 08:30:46 +00:00
IBusProperty *setup_prop;
2011-03-07 06:13:46 +00:00
#endif /* HAVE_SETUP */
2009-03-05 04:34:40 +00:00
IBusPropList *prop_list;
+ IBusProperty *show_iok_prop;
};
struct _IBusM17NEngineClass {
2011-07-07 05:37:21 +00:00
@@ -34,6 +35,7 @@ struct _IBusM17NEngineClass {
2010-12-27 05:52:29 +00:00
guint preedit_background;
gint preedit_underline;
gint lookup_table_orientation;
+ gboolean use_iok;
MInputMethod *im;
};
2011-07-07 05:37:21 +00:00
@@ -248,6 +250,9 @@ ibus_m17n_engine_class_init (IBusM17NEng
2010-12-27 05:52:29 +00:00
}
engine_name = g_strdup_printf ("m17n:%s:%s", lang, name);
klass->config_section = g_strdup_printf ("engine/M17N/%s/%s", lang, name);
+ /* whether to use iok - maybe good to move this to default.xml */
+ klass->use_iok = g_strcmp0 (name, "inscript") == 0 ||
+ g_strcmp0 (name, "inscript2") == 0;
g_free (lang);
g_free (name);
2011-07-07 05:37:21 +00:00
@@ -344,6 +349,7 @@ ibus_m17n_engine_init (IBusM17NEngine *m
2010-12-08 09:25:29 +00:00
{
IBusText* label;
IBusText* tooltip;
2010-12-27 05:52:29 +00:00
+ IBusM17NEngineClass *klass = (IBusM17NEngineClass *) G_OBJECT_GET_CLASS (m17n);
2010-12-08 09:25:29 +00:00
2011-03-07 06:13:46 +00:00
m17n->prop_list = ibus_prop_list_new ();
g_object_ref_sink (m17n->prop_list);
2011-07-07 05:37:21 +00:00
@@ -376,6 +382,23 @@ ibus_m17n_engine_init (IBusM17NEngine *m
2011-03-07 06:13:46 +00:00
ibus_prop_list_append (m17n->prop_list, m17n->setup_prop);
#endif /* HAVE_SETUP */
2009-03-05 04:34:40 +00:00
2010-09-03 08:30:46 +00:00
+ label = ibus_text_new_from_string ("iok");
2009-03-05 04:34:40 +00:00
+ m17n->show_iok_prop = ibus_property_new ("iok",
2010-09-03 08:30:46 +00:00
+ PROP_TYPE_NORMAL,
+ label,
+ "/usr/share/pixmaps/iok.xpm",
+ label,
+ TRUE,
+ FALSE,
+ 0,
+ NULL);
2010-02-02 03:25:05 +00:00
+ g_object_ref_sink (m17n->show_iok_prop);
2011-01-14 01:22:55 +00:00
+
+ if (klass->use_iok)
+ ibus_property_set_visible (m17n->show_iok_prop, TRUE);
2009-03-05 04:34:40 +00:00
+
+ ibus_prop_list_append (m17n->prop_list, m17n->show_iok_prop);
2011-03-07 06:13:46 +00:00
+
2009-03-05 04:34:40 +00:00
m17n->table = ibus_lookup_table_new (9, 0, TRUE, TRUE);
2010-02-02 03:25:05 +00:00
g_object_ref_sink (m17n->table);
2011-03-07 06:13:46 +00:00
m17n->context = NULL;
2011-07-07 05:37:21 +00:00
@@ -461,6 +484,11 @@ ibus_m17n_engine_destroy (IBusM17NEngine
2009-03-05 04:34:40 +00:00
}
2011-03-07 06:13:46 +00:00
#endif /* HAVE_SETUP */
2009-03-05 04:34:40 +00:00
2010-02-02 03:25:05 +00:00
+ if (m17n->show_iok_prop) {
+ g_object_unref (m17n->show_iok_prop);
+ m17n->show_iok_prop = NULL;
+ }
2009-03-05 04:34:40 +00:00
+
2010-02-02 03:25:05 +00:00
if (m17n->table) {
g_object_unref (m17n->table);
m17n->table = NULL;
2011-07-07 05:37:21 +00:00
@@ -778,6 +806,24 @@ ibus_m17n_engine_property_activate (IBus
2011-03-07 06:13:46 +00:00
}
#endif /* HAVE_SETUP */
+ if (g_strcmp0 (prop_name, "iok") == 0) {
2010-12-08 09:25:29 +00:00
+ const gchar *engine_name;
+ gchar *lang = NULL, *name = NULL;
2009-03-05 04:34:40 +00:00
+
2010-12-08 09:25:29 +00:00
+ engine_name = ibus_engine_get_name ((IBusEngine *) m17n);
+ if (ibus_m17n_scan_engine_name (engine_name, &lang, &name)) {
+ gchar *iok;
2009-03-05 04:34:40 +00:00
+
2010-12-08 09:25:29 +00:00
+ iok = g_strdup_printf ("/usr/bin/iok -n %s", lang);
+ g_debug ("keymap name = %s,prop_name=%s, prop_state=%d",
+ engine_name, prop_name, prop_state);
+ g_spawn_command_line_async(iok, NULL);
+ g_free (iok);
+ }
+ g_free (lang);
+ g_free (name);
2011-03-07 06:13:46 +00:00
+ }
+
2009-03-05 04:34:40 +00:00
parent_class->property_activate (engine, prop_name, prop_state);
}
2011-03-07 06:13:46 +00:00