Exemplo n.º 1
0
void* ChttransS2T(void* arg, FcitxModuleFunctionArg args)
{
    FcitxChttrans* transState = (FcitxChttrans*) arg;
    const char* s = args.args[0];

    return ConvertGBKSimple2Tradition(transState, s);
}
Exemplo n.º 2
0
char* ChttransOutputFilter(void* arg, const char *strin)
{
    FcitxChttrans* transState = (FcitxChttrans*) arg;
    FcitxIM* im = FcitxInstanceGetCurrentIM(transState->owner);

    /* don't trans for "zh" */
    if (!im || strncmp(im->langCode, "zh", 2) != 0 || strlen(im->langCode) == 2)
        return NULL;

    if (ChttransEnabled(transState)) {
        if (strcmp(im->langCode, "zh_HK") == 0 ||
            strcmp(im->langCode, "zh_TW") == 0) {
            return NULL;
        } else {
            return ConvertGBKSimple2Tradition(transState, strin);
        }
    } else {
        if (strcmp(im->langCode, "zh_CN") == 0) {
            return NULL;
        } else {
            return ConvertGBKTradition2Simple(transState, strin);
        }
    }
    return NULL;
}
Exemplo n.º 3
0
void SendHZtoClient (IMForwardEventStruct * call_data, char *strHZ)
{
    XTextProperty   tp;
    IMCommitStruct  cms;
    char            strOutput[300];
    char           *ps;
    char           *pS2T = (char *) NULL;

#ifdef _DEBUG
    fprintf (stderr, "Sending %s  icid=%d connectid=%d\n", strHZ, CurrentIC->id, connect_id);
#endif

    /* avoid Seg fault */
    if (!call_data && !CurrentIC)
        return;

#ifdef _ENABLE_RECORDING
    if (bRecording) {
        if (OpenRecording(True)) {
            if ( !bWrittenRecord ) {
                char    buf[20];
                struct tm  *ts;
                time_t now;

                now=time(NULL);
                ts = localtime(&now);
                strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", ts);

                fprintf(fpRecord, "%s\n", buf);
            }
            fprintf(fpRecord, "%s", strHZ);
            bWrittenRecord = True;
        }
    }
#endif

    if (bUseGBKT)
        pS2T = strHZ = ConvertGBKSimple2Tradition (strHZ);

    if (bIsUtf8) {
        size_t          l1, l2;

        ps = strOutput;
        l1 = strlen (strHZ);
        l2 = 299;
        l1 = iconv (convUTF8, (ICONV_CONST char **) (&strHZ), &l1, &ps, &l2);
        *ps = '\0';
        ps = strOutput;
    }
    else
        ps = strHZ;

    XmbTextListToTextProperty (dpy, (char **) &ps, 1, XCompoundTextStyle, &tp);

    memset (&cms, 0, sizeof (cms));
    cms.major_code = XIM_COMMIT;
    if (call_data) {
        cms.icid = call_data->icid;
        cms.connect_id = call_data->connect_id;
    }
    else {
        cms.icid = CurrentIC->id;
        cms.connect_id = connect_id;
    }
    cms.flag = XimLookupChars;
    cms.commit_string = (char *) tp.value;
    IMCommitString (ims, (XPointer) & cms);
    XFree (tp.value);

    if (bUseGBKT)
        free (pS2T);
}