const char * get_imlist(const char *args) { int i, nr; uim_context uc; if (!vp_iobuf_get_args(iobuf, args, "")) return vp_iobuf_return(iobuf); uc = uim_create_context(NULL, "UTF-8", NULL, NULL, NULL, NULL); if (uc == NULL) return "uim_create_context error"; /* [method, langs, desc, is_default] */ nr = uim_get_nr_im(uc); for (i = 0; i < nr; ++i) { vp_iobuf_put_str(iobuf, uim_get_im_name(uc, i)); vp_iobuf_put_str(iobuf, uim_get_im_language(uc, i)); vp_iobuf_put_str(iobuf, uim_get_im_short_desc(uc, i)); vp_iobuf_put_num(iobuf, (strcmp(uim_get_im_name(uc, i), uim_get_default_im_name("")) == 0)); } uim_release_context(uc); return vp_iobuf_return(iobuf); }
QStringList UimInputContextPlugin::createLanguageList( const QString &key ) const { if ( key == "uim" ) return QStringList() << "ja" << "ko" << "zh" << "*"; #if UIM_QT_LIST_SUBIM_AS_QTIM uim_context tmp_uc = uim_create_context( 0, "UTF-8", 0, 0, uim_iconv, 0 ); int nr = uim_get_nr_im( tmp_uc ); if ( uimReady ) { for ( int i = 0; i < nr; i++ ) { const char *name = uim_get_im_name( tmp_uc, i ); const char *lang = uim_get_im_language( tmp_uc, i ); if ( key == QString( "uim-" ) + name ) { // ":" separated languages for future extension QStringList langs = QString( lang ).split( ':' ); return langs; } } } uim_release_context( tmp_uc ); #endif return QStringList( "" ); }
QStringList UimInputContextPlugin::createImList() const { QStringList lst; // default lst.append( "uim" ); #ifdef ENABLE_DEBUG qDebug( "name = uim" ); #endif #if UIM_QT_LIST_SUBIM_AS_QTIM uim_context tmp_uc = uim_create_context( 0, "UTF-8", 0, 0, uim_iconv, 0 ); int nr = uim_get_nr_im( tmp_uc ); if ( uimReady ) { for ( int i = 0; i < nr; i++ ) { const char *name = uim_get_im_name( tmp_uc, i ); QString qs( name ); qs = "uim-" + qs; lst << qs; #ifdef ENABLE_DEBUG qDebug( "name = %s", qs.toUtf8().data() ); #endif } } uim_release_context( tmp_uc ); #endif return lst; }
void InputContext::changeContext(const char *engine) { const char *encoding, *im_lang; if (!strcmp(mEngineName, engine)) return; encoding = mXic->get_encoding(); im_lang = get_im_lang_from_engine(engine); // Don't change im unless encoding matches for clients with legacy locales. if (strcmp(encoding, "UTF-8")) { const char *client_locale = mXic->get_lang_region(); const char *engine_locales = compose_localenames_from_im_lang(im_lang); if (!is_locale_included(engine_locales, client_locale)) return; } clear(); uim_release_context(mUc); createUimContext(engine); // mUc, mEngineName, and locale will be set here. if (mConvdisp) { mConvdisp->set_im_lang(get_im_lang_from_engine(mEngineName)); mConvdisp->set_locale_name(mLocaleName); } }
/* release context from context list */ int release_uim_agent_context(int context_id) { uim_agent_context_list *ptr; for (ptr = agent_context_list_head; ptr != NULL; ptr = ptr->next) { if (ptr->agent_context->context_id == context_id) { uim_agent_context *ua = ptr->agent_context; /* clear current */ if (current == ua) clear_current_uim_agent_context(); /* release */ uim_release_context(ua->context); /* clear candidate */ clear_candidate(ua->cand); free(ua->cand); /* clear preedit */ clear_preedit(ua->pe); free(ua->pe); /* free others */ free(ua->encoding); free(ua->im); free(ua->prop->list); free(ua->prop); free(ua->comstr); /* rebuild list */ if (ptr->next != NULL) ptr->next->prev = ptr->prev; else agent_context_list_tail = ptr->prev; if (ptr->prev != NULL) ptr->prev->next = ptr->next; else agent_context_list_head = ptr->next; free(ua); free(ptr); return context_id; } } return -1; }
const char * delete_context(const char *args) { ic_t *ic; if (!vp_iobuf_get_args(iobuf, args, "p", &ic)) return vp_iobuf_return(iobuf); uim_release_context(ic->cx); free(ic); return NULL; }
InputContext::~InputContext() { #if UIM_XIM_USE_DELAY timer_cancel(); #endif if (mFocusedContext == this) mFocusedContext = NULL; if (mConvdisp) mConvdisp->set_pe(NULL); delete m_pe; uim_release_context(mUc); mServer->deleteContext(this); free(mEngineName); free(mLocaleName); }
void QUimInfoManager::initUimInfo() { info.clear(); uim_context tmp_uc = uim_create_context( 0, "UTF-8", 0, 0, 0, 0 ); struct uimInfo ui; int nr = uim_get_nr_im( tmp_uc ); for ( int i = 0; i < nr; i++ ) { ui.name = uim_get_im_name( tmp_uc, i ); ui.lang = uim_get_im_language (tmp_uc, i ); ui.short_desc = uim_get_im_short_desc( tmp_uc, i ); info.append( ui ); } uim_release_context( tmp_uc ); }
QUimInputContext::~QUimInputContext() { #ifdef ENABLE_DEBUG qDebug( "~QUimInputContext()" ); #endif contextList.remove( this ); if ( m_uc ) uim_release_context( m_uc ); if ( this == focusedInputContext ) { focusedInputContext = NULL; disableFocusedContext = true; } #ifdef Q_WS_X11 delete mCompose; #endif }
static void get_uim_info() { int res; res = uim_init(); if (res) { printf("Failed to init uim\n"); exit(1); } uim_context uc = uim_create_context(NULL, "UTF-8", NULL, NULL, uim_iconv, NULL); struct UIMInfo ui; int nr = uim_get_nr_im(uc); for (int i = 0; i < nr; i++) { ui.name = strdup(uim_get_im_name(uc, i)); ui.lang = strdup(uim_get_im_language(uc, i)); ui.desc = strdup(uim_get_im_short_desc(uc, i)); uim_info.push_back(ui); } uim_release_context(uc); }