Beispiel #1
0
boolean MainMenuAction(FcitxUIMenu* menu, int index)
{
    FcitxClassicUI* classicui = (FcitxClassicUI*) menu->priv;
    FcitxInstance* instance = classicui->owner;
    int length = utarray_len(&menu->shell);
    if (index == 0) {
        char* args[] = {
            "xdg-open",
            "http://fcitx-im.org/",
            0
        };
        fcitx_utils_start_process(args);
    } else if (index == length - 1) { /* Exit */
        FcitxInstanceEnd(classicui->owner);
    } else if (index == length - 2) { /* Restart */
        fcitx_utils_launch_restart();
    } else if (index == length - 3) { /* Configuration */
        fcitx_utils_launch_configure_tool();
    } else if (index == length - 4) { /* Configuration */
        FcitxIM* im = FcitxInstanceGetCurrentIM(classicui->owner);
        if (im && im->owner) {
            fcitx_utils_launch_configure_tool_for_addon(im->uniqueName);
        }
        else {
            fcitx_utils_launch_configure_tool();
        }
    } else {
        FcitxMenuItem* item = (FcitxMenuItem*) utarray_eltptr(&menu->shell, index);
        if (item && item->type == MENUTYPE_SIMPLE && item->data) {
            const char* name = item->data;
            FcitxUIUpdateStatus(instance, name);
        }
    }
    return true;
}
Beispiel #2
0
Datei: vk.c Projekt: areslp/fcitx
/*
*选择指定index的虚拟键盘
*/
void SelectVK(FcitxVKState* vkstate, int vkidx)
{
    vkstate->bVK = false;
    vkstate->iCurrentVK = vkidx;
    FcitxUIUpdateStatus(vkstate->owner, "vk");
    if (vkstate->vkWindow)
        DrawVKWindow(vkstate->vkWindow);
}
Beispiel #3
0
Datei: vk.c Projekt: areslp/fcitx
void VKReset(void* arg)
{
    FcitxVKState *vkstate = (FcitxVKState*) arg;
    VKWindow* vkWindow = vkstate->vkWindow;
    if (vkstate->bVK != false)
        FcitxUIUpdateStatus(vkstate->owner, "vk");
    if (vkWindow)
        XUnmapWindow(vkWindow->dpy, vkWindow->window);
}
Beispiel #4
0
INPUT_RETURN_VALUE ToggleFullWidthStateWithHotkey(void* arg)
{
    FcitxFullWidthChar* fwchar = (FcitxFullWidthChar*)arg;
    FcitxUIStatus *status = FcitxUIGetStatusByName(fwchar->owner, "fullwidth");
    if (status->visible) {
        FcitxUIUpdateStatus(fwchar->owner, "fullwidth");
        return IRV_DO_NOTHING;
    }
    else
        return IRV_TO_PROCESS;
}
Beispiel #5
0
INPUT_RETURN_VALUE HotkeyToggleChttransState(void* arg)
{
    FcitxChttrans* transState = (FcitxChttrans*) arg;

    FcitxUIStatus *status = FcitxUIGetStatusByName(transState->owner, "chttrans");
    if (status->visible){
        FcitxUIUpdateStatus(transState->owner, "chttrans");
        return IRV_DO_NOTHING;
    }
    else
        return IRV_TO_PROCESS;
}
Beispiel #6
0
Datei: vk.c Projekt: areslp/fcitx
boolean VKMenuAction(FcitxUIMenu *menu, int index)
{
    FcitxVKState* vkstate = (FcitxVKState*) menu->priv;
    if (index < vkstate->iVKCount)
        SelectVK(vkstate, index);
    else {
        if (vkstate->bVK) {
            FcitxUIUpdateStatus(vkstate->owner, "vk");
        }
    }
    return true;
}
Beispiel #7
0
INPUT_RETURN_VALUE TogglePuncStateWithHotkey(void* arg)
{
    FcitxPuncState* puncState = (FcitxPuncState*)arg;

    FcitxUIStatus *status = FcitxUIGetStatusByName(puncState->owner, "punc");
    if (status->visible){
        FcitxUIUpdateStatus(puncState->owner, "punc");
        return IRV_DO_NOTHING;
    }
    else
        return IRV_TO_PROCESS;
}
Beispiel #8
0
static void
SimpleUITriggerStatus(FcitxSimpleUI *ui, const char *statusName)
{
    FcitxInstance *instance = ui->owner;
    FcitxUIMenu *menu = FcitxUIGetMenuByStatusName(instance, statusName);
    if (menu) {
        menu->UpdateMenu(menu);
        FcitxSimpleEvent event;
        event.type = SSE_ShowMenu;
        event.menuName = statusName;
        event.menu = menu;
        FcitxSimpleSendEvent(ui->owner, &event);
    } else {
        FcitxUIUpdateStatus(instance, statusName);
    }
}
Beispiel #9
0
Datei: vk.c Projekt: areslp/fcitx
INPUT_RETURN_VALUE ToggleVKStateWithHotkey(void* arg)
{
    FcitxVKState *vkstate = (FcitxVKState*) arg;
    FcitxUIUpdateStatus(vkstate->owner, "vk");
    return IRV_DO_NOTHING;
}
Beispiel #10
0
INPUT_RETURN_VALUE ToggleFullWidthStateWithHotkey(void* arg)
{
    FcitxFullWidthChar* fwchar = (FcitxFullWidthChar*)arg;
    FcitxUIUpdateStatus(fwchar->owner, "fullwidth");
    return IRV_DO_NOTHING;
}
Beispiel #11
0
void FcitxDBusMenuDoEvent(void* arg)
{
    FcitxNotificationItem* notificationitem = (FcitxNotificationItem*) arg;
    FcitxInstance* instance = notificationitem->owner;

    int32_t id = notificationitem->pendingActionId;
    notificationitem->pendingActionId = -1;

    int32_t menu = ACTION_MENU(id);
    int32_t index = ACTION_INDEX(id);
    if (index <= 0)
        return;

    if (menu == 0) {
        if (index <= 8 && index > 0) {
            switch(index) {
                case 1:
                    {
                        char* args[] = {
                            "xdg-open",
                            "http://fcitx-im.org/",
                            0
                        };
                        fcitx_utils_start_process(args);
                    }
                    break;
                case 4:
                    {
                        FcitxIM* im = FcitxInstanceGetCurrentIM(instance);
                        if (im && im->owner) {
                            fcitx_utils_launch_configure_tool_for_addon(im->uniqueName);
                        }
                        else {
                            fcitx_utils_launch_configure_tool();
                        }
                    }
                    break;
                case 5:
                    fcitx_utils_launch_configure_tool();
                    break;
                case 6:
                    fcitx_utils_launch_restart();
                    break;
                case 7:
                    FcitxInstanceEnd(instance);
                    break;
            }
        } else {
            int index = STATUS_INDEX(id);
            const char* name = NULL;
            if (STATUS_ISCOMP(id)) {
                UT_array* uicompstats = FcitxInstanceGetUIComplexStats(instance);
                FcitxUIComplexStatus* compstatus = (FcitxUIComplexStatus*) utarray_eltptr(uicompstats, index);
                if (compstatus) {
                    name = compstatus->name;
                }
            } else {
                UT_array* uistats = FcitxInstanceGetUIStats(instance);
                FcitxUIStatus* status = (FcitxUIStatus*) utarray_eltptr(uistats, index);
                if (status) {
                    name = status->name;
                }
            }
            if (name) {
                FcitxUIUpdateStatus(instance, name);
            }
        }
    } else if (menu > 0) {
        UT_array* uimenus = FcitxInstanceGetUIMenus(instance);
        FcitxUIMenu** menup = (FcitxUIMenu**) utarray_eltptr(uimenus, menu - 1), *menu;
        if (!menup)
            return;
        menu = *menup;
        if (menu->MenuAction) {
            menu->MenuAction(menu, index - 1);
        }
    }
}