/** * @brief initialize the extra input method * * @param arg * @return successful or not **/ __EXPORT_API void* FcitxChewingCreate(FcitxInstance* instance) { if (GetFcitxChewingConfigDesc() == NULL) return NULL; char* user_path = NULL; FILE* fp = FcitxXDGGetFileUserWithPrefix("chewing", ".place_holder", "w", NULL); if (fp) fclose(fp); FcitxXDGGetFileUserWithPrefix("chewing", "", NULL, &user_path); FcitxLog(INFO, "Chewing storage path %s", user_path); if (0 == chewing_Init(CHEWING_DATADIR, user_path)) { FcitxLog(DEBUG, "chewing init ok"); } else { FcitxLog(DEBUG, "chewing init failed"); return NULL; } FcitxChewing* chewing = (FcitxChewing*) fcitx_utils_malloc0(sizeof(FcitxChewing)); FcitxGlobalConfig* config = FcitxInstanceGetGlobalConfig(instance); FcitxInputState *input = FcitxInstanceGetInputState(instance); FcitxCandidateWordSetChoose(FcitxInputStateGetCandidateList(input), DIGIT_STR_CHOOSE); bindtextdomain("fcitx-chewing", LOCALEDIR); chewing->context = chewing_new(); ChewingContext * c = chewing->context; chewing->owner = instance; chewing_set_ChiEngMode(c, CHINESE_MODE); chewing_set_maxChiSymbolLen(c, 16); // chewing will crash without set page chewing_set_candPerPage(c, config->iMaxCandWord); FcitxCandidateWordSetPageSize(FcitxInputStateGetCandidateList(input), config->iMaxCandWord); chewing_set_selKey(c, selKey, 10); LoadChewingConfig(&chewing->config); ConfigChewing(chewing); FcitxInstanceRegisterIM( instance, chewing, "chewing", _("Chewing"), "chewing", FcitxChewingInit, FcitxChewingReset, FcitxChewingDoInput, FcitxChewingGetCandWords, NULL, NULL, FcitxChewingReloadConfig, NULL, 1, "zh_TW" ); return chewing; }
// Creates the IME component void* FcitxTabletImeCreate(FcitxInstance* instance) { // Steal the user data from the event addon, since it's more long lived FcitxTablet* ud = FcitxAddonsGetAddonByName(FcitxInstanceGetAddons(instance), FCITX_TABLET_NAME)->addonInstance; FcitxInstanceRegisterIM( instance, ud, //userdata "tablet", "Tablet", "tablet", NULL, FcitxTabletReset, FcitxTabletDoInput, FcitxTabletGetCandWords, NULL, NULL, NULL, NULL, 1, "zh_CN" ); return ud; }
void* QWCreate(struct _FcitxInstance* instance) { FcitxQWState* qwstate = fcitx_utils_malloc0(sizeof(FcitxQWState)); FcitxInstanceRegisterIM( instance, qwstate, "quwei", _("Quwei"), "quwei", QWInit, NULL, DoQWInput, QWGetCandWords, NULL, NULL, NULL, NULL, 100 /* make quwei place at last */, "zh_CN" ); qwstate->owner = instance; return qwstate; }
/** * @brief initialize the extra input method * * @param arg * @return successful or not **/ __EXPORT_API void* FcitxLibpinyinCreate (FcitxInstance* instance) { FcitxLibpinyinAddonInstance* libpinyinaddon = (FcitxLibpinyinAddonInstance*) fcitx_utils_malloc0(sizeof(FcitxLibpinyinAddonInstance)); bindtextdomain("fcitx-libpinyin", LOCALEDIR); libpinyinaddon->owner = instance; FcitxAddon* addon = FcitxAddonsGetAddonByName(FcitxInstanceGetAddons(instance), "fcitx-libpinyin"); if (!LoadLibpinyinConfig(&libpinyinaddon->config)) { free(libpinyinaddon); return NULL; } libpinyinaddon->pinyin = FcitxLibpinyinNew(libpinyinaddon, LPT_Pinyin); libpinyinaddon->shuangpin = FcitxLibpinyinNew(libpinyinaddon, LPT_Shuangpin); libpinyinaddon->zhuyin = FcitxLibpinyinNew(libpinyinaddon, LPT_Zhuyin); ConfigLibpinyin(libpinyinaddon); FcitxInstanceRegisterIM(instance, libpinyinaddon->pinyin, "pinyin-libpinyin", _("Pinyin (LibPinyin)"), "pinyin", FcitxLibpinyinInit, FcitxLibpinyinReset, FcitxLibpinyinDoInput, FcitxLibpinyinGetCandWords, NULL, FcitxLibpinyinSave, ReloadConfigFcitxLibpinyin, NULL, 5, libpinyinaddon->config.bTraditionalDataForPinyin ? "zh_TW" : "zh_CN" ); FcitxInstanceRegisterIM(instance, libpinyinaddon->shuangpin, "shuangpin-libpinyin", _("Shuangpin (LibPinyin)"), "shuangpin", FcitxLibpinyinInit, FcitxLibpinyinReset, FcitxLibpinyinDoInput, FcitxLibpinyinGetCandWords, NULL, FcitxLibpinyinSave, ReloadConfigFcitxLibpinyin, NULL, 5, libpinyinaddon->config.bTraditionalDataForPinyin ? "zh_TW" : "zh_CN" ); FcitxInstanceRegisterIM(instance, libpinyinaddon->zhuyin, "zhuyin-libpinyin", _("Bopomofo (LibPinyin)"), "bopomofo", FcitxLibpinyinInit, FcitxLibpinyinReset, FcitxLibpinyinDoInput, FcitxLibpinyinGetCandWords, NULL, FcitxLibpinyinSave, ReloadConfigFcitxLibpinyin, NULL, 5, libpinyinaddon->config.bSimplifiedDataForZhuyin ? "zh_CN" : "zh_TW" ); FcitxModuleAddFunction(addon, LibpinyinSavePinyinWord); return libpinyinaddon; }