コード例 #1
0
ファイル: uim-vim.c プロジェクト: laMudri/dotfiles
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);
}
コード例 #2
0
ファイル: plugin.cpp プロジェクト: cyndis/uim
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( "" );
}
コード例 #3
0
ファイル: plugin.cpp プロジェクト: cyndis/uim
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;
}
コード例 #4
0
ファイル: ximserver.cpp プロジェクト: NgoHuy/uim
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);
    }
}
コード例 #5
0
ファイル: context.c プロジェクト: DirtYiCE/uim
/* 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;
}
コード例 #6
0
ファイル: uim-vim.c プロジェクト: laMudri/dotfiles
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;
}
コード例 #7
0
ファイル: ximserver.cpp プロジェクト: NgoHuy/uim
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);
}
コード例 #8
0
ファイル: quiminfomanager.cpp プロジェクト: NgoHuy/uim
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 );
}
コード例 #9
0
ファイル: quiminputcontext.cpp プロジェクト: DirtYiCE/uim
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
}
コード例 #10
0
ファイル: main.cpp プロジェクト: dai-vdr/uim
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);
}