Example #1
0
void PAGE_LoadSaveInit(int page)
{
    const char *name;
    int num_models;
    int selected;
    int width = LCD_WIDTH;
    mp->menu_type = page;
    OBJ_SET_USED(&gui->image, 0);

    if (page == SAVE_MODEL) {
        name = _tr("Press ENT to copy to");
    } else {
        name = _tr("Press ENT to load");
    }
    if (page == LOAD_ICON) {
        width = 75;
        GUI_CreateImage(&gui->image, 75, 20, 52, 36, mp->iconstr);
        GUI_SelectionNotify(icon_notify_cb);
    }
    selected = get_scroll_count(page);

    num_models = mp->total_items; /* set by get_scroll_page */
    PAGE_ShowHeader(name);
    GUI_CreateScrollable(&gui->scrollable, 0, HEADER_HEIGHT, width, LCD_HEIGHT - HEADER_HEIGHT,
                         LINE_SPACE, num_models, row_cb, NULL, NULL, NULL);
    GUI_SetSelected(GUI_ShowScrollableRowCol(&gui->scrollable, selected, 0));
}
Example #2
0
void PAGE_ChangeByID(enum PageID id, s8 menuPage)
{
    if ( modal || GUI_IsModal())
        return;
    PAGE_SaveCurrentPos();
    page_scrollable = NULL;
    PAGE_Exit();
    GUI_SelectionNotify(NULL);
    cur_page = id;
    BUTTON_InterruptLongPress(); //Make sure button press is not passed to the new page
    if (pages[cur_page].init == PAGE_MainInit)
        quick_page_enabled = 1;
    else if (pages[cur_page].init == PAGE_MenuInit)
        quick_page_enabled = 0;
    PAGE_RemoveAllObjects();
    if (HAS_TOUCH) {
        GUI_ChangeSelectionOnTouch(1);
    }
    ActionCB = default_button_action_cb;
    pages[cur_page].init(menuPage);
    if (page_scrollable) {
        guiObject_t *obj = GUI_ShowScrollableRowOffset(page_scrollable, *current_selected);
        if(! HAS_TOUCH || ! GUI_InTouch())
            GUI_SetSelected(obj);
    }
}
Example #3
0
void PAGE_MainLayoutInit(int page)
{
     (void)page;
    memset(lp, 0, sizeof(*lp));
    BUTTON_RegisterCallback(&action,
          CHAN_ButtonMask(BUT_ENTER)
          | CHAN_ButtonMask(BUT_EXIT)
          | CHAN_ButtonMask(BUT_LEFT)
          | CHAN_ButtonMask(BUT_LEFT)
          | CHAN_ButtonMask(BUT_RIGHT)
          | CHAN_ButtonMask(BUT_UP)
          | CHAN_ButtonMask(BUT_DOWN),
          BUTTON_PRESS | BUTTON_LONGPRESS | BUTTON_PRIORITY, _action_cb, NULL);
    PAGE_ShowHeader(NULL);
    lp->long_press = 0;
    lp->newelem = 0;
    lp->selected_x = 0;
    const u16 color[5] = {
        RGB888_to_RGB565(0xaa, 0x44, 0x44),
        RGB888_to_RGB565(0x44, 0xaa, 0x44),
        RGB888_to_RGB565(0x44, 0x44, 0xaa),
        RGB888_to_RGB565(0x44, 0x44, 0x44),
        RGB888_to_RGB565(0x33, 0x33, 0x33),
        };
    for (int i = 0 ; i < 5; i++)
        gui->desc[i] = (struct LabelDesc){
            .font = 0,
            .font_color = 0xffff,
            .fill_color = color[i],
            .outline_color = 0,
            .style = LABEL_FILL};
    gui->desc[1].font = TINY_FONT.font; //Special case for trims
    GUI_CreateIcon(&gui->newelem, 32, 0, &icons[ICON_LAYOUT_ADD], add_dlg_cb, NULL);
    GUI_CreateIcon(&gui->editelem, 64, 0, &icons[ICON_LAYOUT_CFG], cfg_cb, NULL);
    GUI_SetHidden((guiObject_t *)&gui->editelem, 1);
    //GUI_CreateTextSelect(&gui->newelem, 36, 12, TEXTSELECT_96, newelem_press_cb, newelem_cb, NULL);
    GUI_CreateLabel(&gui->xlbl, 80+18, 9, NULL, TITLE_FONT, "X");
    GUI_CreateTextSelect(&gui->x, 88+18, 8, TEXTSELECT_64, NULL, xpos_cb, NULL);
    GUI_CreateLabel(&gui->ylbl, 164+16, 9, NULL, TITLE_FONT, "Y");
    GUI_CreateTextSelect(&gui->y, 172+16, 8, TEXTSELECT_64, NULL, ypos_cb, NULL);

    GUI_SelectionNotify(notify_cb);
    draw_elements();
    if (show_config_menu) {
        lp->selected_for_move = show_config_menu;
        show_config();
        show_config_menu = 0;
    }
}
void PAGE_MainLayoutEvent()
{
}
void PAGE_MainLayoutExit()
{
    BUTTON_UnregisterCallback(&action);
}
Example #4
0
static void _show_simple()
{
    GUI_SelectionNotify(NULL);
    GUI_Select1stSelectableObj(); // bug fix: muset reset to 1st selectable item, otherwise ,the focus will be wrong
    mp->firstObj = GUI_CreateScrollable(&gui->scrollable, 0, ITEM_HEIGHT + 1, LEFT_VIEW_WIDTH + ARROW_WIDTH, LCD_HEIGHT - ITEM_HEIGHT -1,
                         2 * ITEM_SPACE, SIMPLE_LAST, simple_row_cb, simple_getobj_cb, NULL, NULL);
    // The following items are not draw in the logical view;
    GUI_CreateXYGraph(&gui->graph, 77, LCD_HEIGHT - RIGHT_VIEW_HEIGHT - 1, RIGHT_VIEW_HEIGHT, RIGHT_VIEW_HEIGHT,
                              CHAN_MIN_VALUE, CHAN_MIN_VALUE * 5 / 4,
                              CHAN_MAX_VALUE, CHAN_MAX_VALUE * 5 / 4,
                              0, 0, eval_mixer_cb, curpos_cb, touch_cb,
                              &mp->mixer[0]);
    OBJ_SET_USED(&gui->bar, 0);
}
Example #5
0
void PAGE_LayoutEditInit(int page)
{
    (void)page;
    PAGE_SetActionCB(_layaction_cb);
    lp->selected_x = 0;
    lp->selected_y = 0;
    for (int i = 0 ; i < 5; i++)
        gui->desc[i] = (struct LabelDesc){
            .font = MICRO_FONT.font,
            .font_color = 0xffff,
            .fill_color = 0x0000,
            .outline_color = 0xffff,
            .style = LABEL_SQUAREBOX,
        };
    gui->desc[1].style = LABEL_BRACKET; //Special case for trims

    struct LabelDesc micro = MICRO_FONT;
    struct LabelDesc rect = MICRO_FONT;
    micro.style = LABEL_LEFT;
    rect.fill_color = 0x0000;
    rect.outline_color = 0x0000;
    GUI_CreateRect(&gui->editelem, 41, 1, 9, 5, &rect);
    gui->editelem.CallBack = move_cb;
    GUI_CreateLabel(&gui->xlbl, 0,  1, NULL, micro, "X:");
    GUI_CreateLabelBox(&gui->x, 8, 1, 13, 6, &micro, pos_cb, NULL, (void *) 0L);
    GUI_CreateLabel(&gui->ylbl, 22, 1, NULL, micro, "Y:");
    GUI_CreateLabelBox(&gui->y, 30, 1, 9, 6, &micro, pos_cb, NULL, (void *) 1L);
    //gui->y must be the last element!
    GUI_SelectionNotify(notify_cb);

    draw_elements();
    if(OBJ_IS_USED(&gui->elem[0]))
        GUI_SetSelected((guiObject_t *)&gui->elem[0]);
}

static void xpos_cb(guiObject_t *obj, int dir, void *data)
{
    (void)obj;
    (void)data;
    if (lp->selected_for_move >= 0) {
        int x = GUI_TextSelectHelper(lp->selected_x, 0, LCD_WIDTH-lp->selected_w, dir, 1, 10, NULL);
        if (x != lp->selected_x) {
            lp->selected_x = x;
            move_elem();
        }
    }
}
Example #6
0
static void _show_expo_dr()
{
    GUI_SelectionNotify(notify_cb);
    GUI_Select1stSelectableObj();

    sync_mixers();

    mp->firstObj = GUI_CreateScrollable(&gui->scrollable, 0, ITEM_HEIGHT + 1, LEFT_VIEW_WIDTH + ARROW_WIDTH, LCD_HEIGHT - ITEM_HEIGHT -1,
                         ITEM_SPACE, EXPO_LAST, expo_row_cb, simple_getobj_cb, expo_size_cb, NULL);

    GUI_CreateXYGraph(&gui->graph, 77, LCD_HEIGHT - RIGHT_VIEW_HEIGHT - 1, RIGHT_VIEW_HEIGHT, RIGHT_VIEW_HEIGHT,
                              CHAN_MIN_VALUE, CHAN_MIN_VALUE * 5 / 4,
                              CHAN_MAX_VALUE, CHAN_MAX_VALUE * 5 / 4,
                              0, 0, eval_mixer_cb, curpos_cb, NULL, NULL);

    mp->cur_mixer = &mp->mixer[0];
    //Enable/Disable the relevant widgets
}
Example #7
0
static void _show_complex(int page_change)
{
    GUI_SelectionNotify(NULL);
    mp->max_scroll = 2;
    int selection = 0;
    if (page_change) {
        selection = GUI_ScrollableGetObjRowOffset(&gui->scrollable, GUI_GetSelected());
    }
    mp->firstObj = GUI_CreateScrollable(&gui->scrollable, 0, ITEM_HEIGHT + 1, LEFT_VIEW_WIDTH + ARROW_WIDTH, LCD_HEIGHT - ITEM_HEIGHT -1,
                         2 * ITEM_SPACE, COMPLEX_LAST - COMMON_LAST, complex_row_cb, simple_getobj_cb, complex_size_cb, NULL);
    // The following items are not draw in the logical view;
    GUI_CreateBarGraph(&gui->bar, LEFT_VIEW_WIDTH +10, LCD_HEIGHT - RIGHT_VIEW_HEIGHT -1, 5, RIGHT_VIEW_HEIGHT,
                              CHAN_MIN_VALUE, CHAN_MAX_VALUE, BAR_VERTICAL, eval_chan_cb, NULL);
    GUI_CreateXYGraph(&gui->graph, 77, LCD_HEIGHT - RIGHT_VIEW_HEIGHT -1, RIGHT_VIEW_HEIGHT, RIGHT_VIEW_HEIGHT,
                                  CHAN_MIN_VALUE, CHAN_MIN_VALUE * 5 / 4,
                                  CHAN_MAX_VALUE, CHAN_MAX_VALUE * 5 / 4,
                                  0, 0, eval_mixer_cb, curpos_cb, touch_cb, mp->cur_mixer);
    if (page_change) {
        GUI_SetSelected(GUI_ShowScrollableRowOffset(&gui->scrollable, selection));
    } else {
        GUI_Select1stSelectableObj(); // bug fix: muset reset to 1st selectable item, otherwise ,the focus will be wrong
    }
}