MPlist * open (MPlist *args) { MInputContext *ic; TableContext *context; MSymbol type; int i; ic = mplist_value (args); context = get_context (ic); args = mplist_next (args); type = (MSymbol) mplist_value (args); args = mplist_next (args); for (i = 0; i < DIM(table_descriptions); i++) if (strcmp (table_descriptions[i].name, msymbol_name (type)) == 0) { context->desc = &table_descriptions[i]; break; } if (context->desc) (*context->desc->open) (context, args); return NULL; }
static void insert_m17n_items (GtkListStore *store, MSymbol language, MSymbol name) { MPlist *plist; plist = minput_get_variable (language, name, Mnil); for (; plist && mplist_key (plist) == Mplist; plist = mplist_next (plist)) { GtkTreeIter iter; MSymbol key; MPlist *p, *mvalue; gchar *description, *value; p = mplist_value (plist); key = mplist_value (p); /* name */ p = mplist_next (p); /* description */ description = ibus_m17n_mtext_to_utf8 ((MText *) mplist_value (p)); p = mplist_next (p); /* status */ mvalue = mplist_next (p); value = format_m17n_value (mvalue); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, COLUMN_KEY, msymbol_name (key), COLUMN_DESCRIPTION, description, COLUMN_VALUE, value, -1); g_free (description); g_free (value); } }
static uim_lisp init_m17nlib() { MPlist *imlist, *elm; M17N_INIT(); nr_input_methods = 0; nr_input_contexts = 0; im_array = NULL; ic_array = NULL; imlist = mdatabase_list(msymbol("input-method"), Mnil, Mnil, Mnil); if (!imlist) { /* maybe user forgot to install m17n-db */ return uim_scm_f(); } for (elm = imlist; mplist_key(elm) != Mnil; elm = mplist_next(elm)) { MDatabase *mdb; MSymbol *tag, lang, imname; uim_bool is_complete_im; mdb = mplist_value(elm); tag = mdatabase_tag(mdb); lang = tag[1]; imname = tag[2]; is_complete_im = (lang != Mnil && imname != Mnil); /* [uim-ja 30] */ if (is_complete_im) { /* pass NULL as IM to enable lazy instantiation */ pushback_input_method(NULL, msymbol_name(lang), msymbol_name(imname)); } } #if 0 register_callbacks(); #endif m17n_object_unref(imlist); converter = mconv_buffer_converter(msymbol("utf8"), NULL, 0); if (!converter) return uim_scm_f(); m17nlib_ok = 1; return uim_scm_t(); }
int main() { MPlist *imlist, *elm; MSymbol utf8 = msymbol("utf8"); M17N_INIT(); imlist = mdatabase_list(msymbol("input-method"), Mnil, Mnil, Mnil); for (elm = imlist; elm && mplist_key(elm) != Mnil; elm = mplist_next(elm)) { MDatabase *mdb = (MDatabase *) mplist_value(elm); MSymbol *tag = mdatabase_tag(mdb); if (tag[1] != Mnil) { MInputMethod *im = minput_open_im(tag[1], tag[2], NULL); if (im) { std::cout << msymbol_name (im->language); std::cout << "-"; std::cout << msymbol_name (im->name); std::cout << "\n"; } } } M17N_FINI(); }
static gchar * format_m17n_value (MPlist *plist) { if (mplist_key (plist) == Msymbol) return g_strdup (msymbol_name ((MSymbol) mplist_value (plist))); if (mplist_key (plist) == Mtext) return g_strdup (mtext_data ((MText *) mplist_value (plist), NULL, NULL, NULL, NULL)); if (mplist_key (plist) == Minteger) return g_strdup_printf ("%d", (gint) (long) mplist_value (plist)); return NULL; }