Пример #1
0
int main()
{
    char* words[] = { "a", "b", "c" , "d", "e" };
    char* extras[] = { "A", "B", "C" , "D", "E" };
    FcitxInstance* instance = fcitx_utils_malloc0(sizeof(FcitxInstance));
    instance->input = fcitx_utils_malloc0(sizeof(FcitxInputState));
    instance->input->candList = FcitxCandidateWordNewList();
    instance->config = fcitx_utils_malloc0(sizeof(FcitxGlobalConfig));
    instance->config->bPointAfterNumber = true;
    FcitxCandidateWord word;
    word.callback = NULL;
    word.owner = NULL;
    word.priv = NULL;
    int i = 0;
    for (i = 0; i < 5; i ++) {
        word.strWord = strdup(words[i]);
        word.strExtra = strdup(extras[i]);
        FcitxCandidateWordAppend(instance->input->candList, &word);
    }

    char* result = FcitxUICandidateWordToCString(instance);
    if (strcmp(result, "1.aA 2.bB 3.cC 4.dD 5.eE ") == 0) {
        return 0;
    }

    return 1;
}
Пример #2
0
static void TestbedCallback(void* arg, FcitxSimpleEvent* event) {
#define TESTBED_CASE(NAME) \
    case SSE_##NAME: \
        fprintf(stderr, "UI:" #NAME "\n");
    FcitxInputState* input = FcitxInstanceGetInputState(instance);
    switch (event->type) {
        TESTBED_CASE(ShowInputWindow) {
            char* candidateword = FcitxUICandidateWordToCString(instance);
            char* str = FcitxInstanceProcessOutputFilter(instance, candidateword);
            if (str) {
                free(candidateword);
                candidateword = str;
            }
            fprintf(stderr, "CANDIDATE:%s\n", candidateword);
            free(candidateword);
            break;
        }
        TESTBED_CASE(CloseInputWindow)
            break;
        TESTBED_CASE(RegisterComplexStatus)
            break;
        TESTBED_CASE(RegisterStatus)
            break;
        TESTBED_CASE(UpdateComplexStatus)
            break;
        TESTBED_CASE(UpdateStatus)
            break;
        TESTBED_CASE(RegisterMenu)
            break;
        TESTBED_CASE(ShowMenu)
            break;
        TESTBED_CASE(CommitString){
            fprintf(stderr, "COMMIT:%s\n", event->commitString);
            break;
        }
        TESTBED_CASE(UpdatePreedit) {
            char* clientPreedit = FcitxUIMessagesToCString(FcitxInputStateGetClientPreedit(input));
            char* str = FcitxInstanceProcessOutputFilter(instance, clientPreedit);
            if (str) {
                free(clientPreedit);
                clientPreedit = str;
            }
            fprintf(stderr, "PREEDIT:%s\n", clientPreedit);
            free(clientPreedit);
            break;
        }
    }

#undef TESTBED_CASE
}