示例#1
0
void PAGE_ModelProtoInit(int page)
{
    (void)page;
    PAGE_ShowHeader(PROTOCOL_Name());
    proto_strs = PROTOCOL_GetOptions();
    int row = ROW1;
    int pos = 0;
    long idx = 0;
    while(idx < NUM_PROTO_OPTS) {
        if(proto_strs[pos] == NULL)
            break;
        GUI_CreateLabelBox(&gui->protolbl[idx], COL1, row, LABEL_WIDTH, 0, &LABEL_FONT, GUI_Localize, NULL, proto_strs[pos]);
        GUI_CreateTextSelect(&gui->proto[idx], COL2, row, TEXTSELECT_96, NULL, proto_opt_cb, (void *)idx);
        while(proto_strs[++pos])
            ;
        pos++;
        idx++;
        row += 24;
    }
}
示例#2
0
void MODELPROTO_Config()
{
    PAGE_SetModal(1);
    show_titlerow(ProtocolNames[Model.protocol]);
    proto_strs = PROTOCOL_GetOptions();
    int row = ROW1;
    int pos = 0;
    long idx = 0;
    while(idx < NUM_PROTO_OPTS) {
        if(proto_strs[pos] == NULL)
            break;
        GUI_CreateLabel(&gui->protolbl[idx], COL1, row, NULL, DEFAULT_FONT, _tr(proto_strs[pos]));
        GUI_CreateTextSelect(&gui->proto[idx], COL2, row, TEXTSELECT_96, NULL, proto_opt_cb, (void *)idx);
        while(proto_strs[++pos])
            ;
        pos++;
        idx++;
        row += 24;
    }
}
示例#3
0
static int row_cb(int absrow, int relrow, int y, void *data)
{
    int type = (long)data;
    long elemidx = elem_rel_to_abs(type, absrow);
    int X = LAYDLG_X + LAYDLG_SCROLLABLE_X - (type == ELEM_TOGGLE ? 68/2 : 0);
    int width = LAYDLG_MIN_WIDTH + (type == ELEM_TOGGLE ? 64 : 0) - 2 * LAYDLG_SCROLLABLE_X - 16;
    int del_x = X + 15 + 110;
    int num_objs = 2;
    if (type == ELEM_MODELICO) {
        GUI_CreateLabelBox(&gui->dlglbl[relrow], X, y, 115, LAYDLG_TEXT_HEIGHT, &LABEL_FONT, GUI_Localize, NULL, _tr_noop("Model"));
    } else {
        GUI_CreateLabelBox(&gui->dlglbl[relrow], X, y, 10, 16, &LABEL_FONT, label_cb, NULL, (void *)(long)(absrow));
        GUI_CreateTextSelect(&gui->dlgts[relrow], X + 15, y, TEXTSELECT_96, NULL, dlgts_cb, (void *)elemidx);
        if (type == ELEM_TOGGLE) {
            GUI_CreateButton(&gui->dlgbut2[relrow], del_x, y, BUTTON_64x16, dlgbut_str_cb, toggle_press_cb, (void *)elemidx);
            //del_x = X + 15 + 168;
            num_objs++;
        }
    }
    GUI_CreateButton(&gui->dlgbut[relrow], X+width-64, y, BUTTON_64x16, dlgbut_str_cb, dlgbut_cb, (void *)elemidx);
    return num_objs;
}
示例#4
0
void MODELTRAIN_Config()
{
    PAGE_SetModal(1);
    int mode = PPMin_Mode();
    show_titlerow(mode == PPM_IN_TRAIN1
                  ? _tr("Trainer Cfg (Channel)")
                  : mode == PPM_IN_TRAIN2
                    ? _tr("Trainer Cfg (Stick)")
                    : _tr("PPMIn Cfg (Extend)"));
    int row = ROW1;
    if (PPMin_Mode() != PPM_IN_SOURCE) {
        GUI_CreateLabel(&gui->trainswlbl, COL1, row, NULL, DEFAULT_FONT, _tr("Trainer Sw"));
        GUI_CreateTextSelect(&gui->trainsw, COL2, row, TEXTSELECT_96, sourceselect_cb, set_source_cb, &Model.train_sw);
    } else {
        GUI_CreateLabel(&gui->numchlbl, COL1, row, NULL, DEFAULT_FONT, _tr("Num Channels"));
        GUI_CreateTextSelect(&gui->numch, COL2, row, TEXTSELECT_96, NULL, set_train_cb, (void *)0L);
    }
    row += 20;
    GUI_CreateLabel(&gui->centerpwlbl, COL1, row, NULL, DEFAULT_FONT, _tr("Center PW"));
    GUI_CreateTextSelect(&gui->centerpw, COL2, row, TEXTSELECT_96, NULL, set_train_cb, (void *)1L);
    row += 20;
    GUI_CreateLabel(&gui->deltapwlbl, COL1, row, NULL, DEFAULT_FONT, _tr("Delta PW"));
    GUI_CreateTextSelect(&gui->deltapw, COL2, row, TEXTSELECT_96, NULL, set_train_cb, (void *)2L);
    row += 20;
 
    if (PPMin_Mode() == PPM_IN_SOURCE)
        return;

    int num_rows= (MAX_PPM_IN_CHANNELS + 1) / 2;
    for (int i = 0; i < num_rows; i++) {
        long idx = i;
        row += 20;
        if (row > 300) // RBE: should be LCD_HEIGHT - 16(height box) ==> always < 300
            break;
        GUI_CreateLabelBox(&gui->ppmmaplbl[idx], COL1, row, 0, 16, &DEFAULT_FONT, input_chname_cb, NULL, (void *)idx);
        GUI_CreateTextSelect(&gui->ppmmap[idx], COL3, row, TEXTSELECT_96, NULL, set_chmap_cb, (void *)idx);
        idx += num_rows;
        if (idx >= MAX_PPM_IN_CHANNELS)
            break;
        GUI_CreateLabelBox(&gui->ppmmaplbl[idx], COL4, row, 0, 16, &DEFAULT_FONT, input_chname_cb, NULL, (void *)idx);
        GUI_CreateTextSelect(&gui->ppmmap[idx], COL5, row, TEXTSELECT_96, NULL, set_chmap_cb, (void *)idx);
    }
}
示例#5
0
void PAGE_ModelInit(int page)
{
    (void)page;
    u8 row;

    mp->last_mixermode = Model.mixer_mode;
    mp->last_txpower = Model.tx_power;
    mp->file_state = 0;
    PAGE_SetModal(0);
    PAGE_ShowHeader(PAGE_GetName(PAGEID_MODEL));

    enum {
        COL1 = (8 + ((LCD_WIDTH - 320) / 2)),
        COL2 = (COL1 + 128),
        COL3 = (COL1 + 228),
        ROW1 = (44 + ((LCD_HEIGHT - 240) / 2)),
        LABEL_WIDTH = (COL2 - COL1),
    };
    row = ROW1;
    GUI_CreateLabelBox(&gui->filelbl, COL1, row, LABEL_WIDTH, 18, &LABEL_FONT, NULL, NULL, _tr("File"));
    GUI_CreateTextSelect(&gui->file, COL2, row, TEXTSELECT_96, file_press_cb, file_val_cb, NULL);

#if HAS_STANDARD_GUI
    row+= 20;
    GUI_CreateLabelBox(&gui->guilbl, COL1, row, LABEL_WIDTH, 18, &LABEL_FONT, NULL, NULL, _tr("Mixer GUI"));
    GUI_CreateTextSelect(&gui->guits, COL2, row, TEXTSELECT_96, NULL, _mixermode_cb, NULL);
#endif

    row += 20;
    GUI_CreateLabelBox(&gui->namelbl, COL1, row, LABEL_WIDTH, 18, &LABEL_FONT, NULL, NULL, _tr("Model name"));  // use the same naming convention for devo8 and devo10
    GUI_CreateButton(&gui->name, COL2, row, BUTTON_96x16, show_text_cb, _changename_cb, Model.name);
    GUI_CreateButton(&gui->icon, COL3, row, BUTTON_64x16, show_text_cb, changeicon_cb, _tr("Icon"));

    row += 20;
    GUI_CreateLabelBox(&gui->typelbl, COL1, row, LABEL_WIDTH, 18, &LABEL_FONT, NULL, NULL, _tr("Model type"));
    GUI_CreateTextSelect(&gui->type, COL2, row, TEXTSELECT_96, type_press_cb, type_val_cb, NULL);

    row += 24;
    GUI_CreateLabelBox(&gui->ppmlbl, COL1, row, LABEL_WIDTH, 18, &LABEL_FONT, NULL, NULL, _tr("PPM In"));
    GUI_CreateTextSelect(&gui->ppm, COL2, row, TEXTSELECT_96, ppmin_press_cb, ppmin_select_cb, NULL);

    row += 20;
    GUI_CreateLabelBox(&gui->protolbl, COL1, row, LABEL_WIDTH, 18, &LABEL_FONT, NULL, NULL, _tr("Protocol"));
    GUI_CreateTextSelect(&gui->proto, COL2, row, TEXTSELECT_96, proto_press_cb, protoselect_cb, NULL);

    row += 20;
    GUI_CreateLabelBox(&gui->numchlbl, COL1, row, LABEL_WIDTH, 18, &LABEL_FONT, NULL, NULL, _tr("# Channels"));
    GUI_CreateTextSelect(&gui->numch, COL2, row, TEXTSELECT_96, NULL, numchanselect_cb, NULL);


    row += 24;
    GUI_CreateLabelBox(&gui->pwrlbl, COL1, row, LABEL_WIDTH, 18, &LABEL_FONT, NULL, NULL, _tr("Tx power"));
    GUI_CreateTextSelect(&gui->pwr, COL2, row, TEXTSELECT_96, NULL, powerselect_cb, NULL);

    row += 20;
    if(Model.fixed_id == 0)
        strlcpy(mp->fixed_id, _tr("None"), sizeof(mp->fixed_id));
    else
        sprintf(mp->fixed_id, "%d", (int)Model.fixed_id);
    GUI_CreateLabelBox(&gui->fixedidlbl, COL1, row, LABEL_WIDTH, 18, &LABEL_FONT, NULL, NULL, _tr("Fixed ID"));
    GUI_CreateButton(&gui->fixedid, COL2, row, BUTTON_96x16, show_text_cb, fixedid_cb, mp->fixed_id);
    GUI_CreateButton(&gui->bind, COL3, row, BUTTON_64x16, show_bindtext_cb, bind_cb, NULL);
    configure_bind_button();
}
示例#6
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_SetSelectable((guiObject_t *)&gui->x, 0);
    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_SetSelectable((guiObject_t *)&gui->y, 0);

    GUI_SelectionNotify(notify_cb);
    draw_elements();
    if (show_config_menu) {
        lp->selected_for_move = -1;
        select_for_move(&gui->elem[show_config_menu]);
        show_config();
        show_config_menu = 0;
    }
}

void PAGE_MainLayoutEvent()
{
}

void PAGE_MainLayoutExit()
{
    BUTTON_UnregisterCallback(&action);
}
示例#7
0
static void _show_page()
{
    if (firstObj) {
        GUI_RemoveHierObjects(firstObj);
        firstObj = NULL;
    }
    #define COL1 16
    #define COL2 (COL1+106)
    #if LCD_WIDTH == 480
        #define COL3         (LCD_WIDTH-16-106-96) // border + label + button
        #define COL4         (LCD_WIDTH-16-96)    // border + button
        #define BUTTON_WIDE  BUTTON_96x16
        #define BUTTON_TEST  BUTTON_48x16
        #define BUTTON_TOUCH BUTTON_TEST
        #define COL2TEST     (COL2+48)
        #define ADDSPACE     0
        #define ADDROW       0
    #else
        #define COL3         COL1
        #define COL4         COL2
        #define BUTTON_WIDE  BUTTON_96
        #define BUTTON_TEST  BUTTON_48
        #define BUTTON_TOUCH BUTTON_WIDE
        #define COL2TEST     (COL2+100)
        #define ADDSPACE     15
        #define ADDROW       6
    #endif
    guiObject_t *obj;
    u8 space = 19;
    int row = 40;
    int col1 = COL1;
    int col2 = COL2;
    if (page_num == 0 || LCD_WIDTH == 480) {
        obj = GUI_CreateLabelBox(&gui1->head1_1, col1, row, 0, 0, &SECTION_FONT, NULL, NULL, _tr("Generic settings"));
        if (firstObj == NULL) firstObj = obj;
        row += space;
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui1->langlbl, col1, row+ADDROW, 0, 0, &DEFAULT_FONT, NULL, NULL, _tr("Language"));
        GUI_CreateButton(&gui1->lang, col2, row, BUTTON_WIDE, langstr_cb, 0x0000, lang_select_cb, NULL);
        row += space + ADDSPACE ;
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui1->modelbl, col1, row, 0, 0, &DEFAULT_FONT, NULL, NULL, _tr("Stick mode"));
        GUI_CreateTextSelect(&gui1->mode, col2, row, TEXTSELECT_96, NULL, modeselect_cb, NULL);
        row += space + ADDSPACE;
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui1->touchlbl, col1, row+ADDROW, 0, 0, &DEFAULT_FONT, NULL, NULL, _tr("Touch screen"));
        GUI_CreateButton(&gui1->touchcalib, col2, row, BUTTON_WIDE, calibratestr_cb, 0x0000, press_cb, (void *)CALIB_TOUCH);
        row += space + ADDSPACE;
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui1->sticklbl, col1, row+ADDROW, 0, 0, &DEFAULT_FONT, NULL, NULL, _tr("Sticks"));
        GUI_CreateButton(&gui1->stickcalib, col2, row, BUTTON_WIDE, calibratestr_cb, 0x0000, press_cb, (void *)CALIB_STICK);
#if HAS_RTC
        row += space + ADDSPACE;
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui1->clocklbl, col1, row+ADDROW, 0, 0, &DEFAULT_FONT, NULL, NULL, _tr("Clock"));
        GUI_CreateButton(&gui1->clock, col2, row, BUTTON_WIDE, clockstr_cb, 0x0000, press_cb, (void *)SET_CLOCK);
        row += space + ADDSPACE;
#else
        row += space + (LCD_WIDTH == 320 ? 8 : 16); // for nicer look
#endif //HAS_RTC
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
    }
    if (page_num == 1 || LCD_WIDTH == 480) {
        obj = GUI_CreateLabelBox(&gui2->head2_1, col1, row, 0, 0, &SECTION_FONT, NULL, NULL, _tr("Buzzer settings"));
        if (firstObj == NULL) firstObj = obj;
        row += space;
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui2->power_alarmlbl, col1, row, 0, 0, &DEFAULT_FONT, NULL, NULL, _tr("Power On alarm"));
        GUI_CreateTextSelect(&gui2->power_alarm, col2, row, TEXTSELECT_96, NULL, poweralarm_select_cb, NULL);
        row += space;
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui2->battalrmlbl, col1, row, 0, 0, &DEFAULT_FONT, NULL, NULL, _tr("Battery alarm"));
        GUI_CreateTextSelect(&gui2->battalrm, col2, row, TEXTSELECT_96, NULL, batalarm_select_cb, NULL);
        row += space;
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui2->battalrmintvllbl, col1, row, 0, 0, &DEFAULT_FONT, NULL, NULL, _tr("Alarm intvl"));
        GUI_CreateTextSelect(&gui2->battalrmintvl, col2, row, TEXTSELECT_96, NULL, batalarmwarn_select_cb, NULL);
        row += space;
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui2->buzzlbl, col1, row, 0, 0, &DEFAULT_FONT, NULL, NULL, _tr("Buzz volume"));
        GUI_CreateTextSelect(&gui2->buzz, col2, row, TEXTSELECT_96, NULL, _buzz_vol_cb, (void *)&Transmitter.volume);
        row += space;
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui2->musicshutdbl, col1, row, 0, 0, &DEFAULT_FONT, NULL, NULL, _tr("Power-down alert"));
        GUI_CreateTextSelect(&gui2->music_shutdown, col2, row, TEXTSELECT_96, NULL, _music_shutdown_cb, (void *)&Transmitter.music_shutdown);
        row += space + 8;
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui2->head2_2, col1, row, 0, 0, &SECTION_FONT, NULL, NULL, _tr("LCD settings"));
        row += space;
        if (row+8 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui2->backlightlbl, col1, row, 0, 0, &DEFAULT_FONT, NULL, NULL, _tr("Backlight"));
        GUI_CreateTextSelect(&gui2->backlight, col2, row, TEXTSELECT_96, NULL, brightness_select_cb, NULL);
        row += space;
        if (row+8 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui2->dimtimelbl, col1, row, 0, 0, &DEFAULT_FONT, NULL, NULL, _tr("Dimmer time"));
        GUI_CreateTextSelect(&gui2->dimtime, col2, row, TEXTSELECT_96, NULL, auto_dimmer_time_cb, NULL);
        row += space;
        if (row+8 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui2->dimtgtlbl, col1, row, 0, 0, &DEFAULT_FONT, NULL, NULL, _tr("Dimmer target"));
        GUI_CreateTextSelect(&gui2->dimtgt, col2, row, TEXTSELECT_96, NULL, common_select_cb,
                (void *)&Transmitter.auto_dimmer.backlight_dim_value);
        row += space + 8;
        if (row+8 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
    }
    if (page_num == 2 || LCD_WIDTH == 480) {
        obj = GUI_CreateLabelBox(&gui3->head3_1, col1, row, 0, 0, &SECTION_FONT, NULL, NULL, _tr("Timer settings"));
        if (firstObj == NULL) firstObj = obj;
        row += space;
        if (row+8 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui3->prealertlbl, col1, row, 0, 0, &DEFAULT_FONT, NULL, NULL,  _tr("Prealert time"));
        GUI_CreateTextSelect(&gui3->prealert, col2, row, TEXTSELECT_96,NULL, prealert_time_cb, (void *)0L);
        row += space;
        if (row+8 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui3->preintvllbl, col1, row, 0, 0, &DEFAULT_FONT, NULL, NULL, _tr("Prealert intvl"));
        GUI_CreateTextSelect(&gui3->preintvl, col2, row, TEXTSELECT_96, NULL, timer_interval_cb,
                &Transmitter.countdown_timer_settings.prealert_interval);
        row += space;
        if (row+8 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui3->timeuplbl, col1, row, 0, 0, &DEFAULT_FONT, NULL, NULL,_tr("Timeup intvl"));
        GUI_CreateTextSelect(&gui3->timeup, col2, row, TEXTSELECT_96, NULL, timer_interval_cb,
                &Transmitter.countdown_timer_settings.timeup_interval);
        row += space + 8;
        if (row+8 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui3->head3_2, col1, row, 0, 0, &SECTION_FONT, NULL, NULL, _tr("Telemetry settings"));
        row += space;
        if (row+8 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui3->templbl, col1, row, 0, 0, &DEFAULT_FONT, NULL, NULL, _tr("Temperature"));
        GUI_CreateTextSelect(&gui3->temp, col2, row, TEXTSELECT_96, NULL, units_cb, (void *)1L);
        row += space;
        if (row+8 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui3->lengthlbl, col1, row, 0, 0, &DEFAULT_FONT, NULL, NULL, _tr("Length"));
        GUI_CreateTextSelect(&gui3->length, col2, row, TEXTSELECT_96, NULL, units_cb, (void *)0L);
    }
}
示例#8
0
static int row_cb(int absrow, int relrow, int y, void *data)
{
    (void)relrow;
    (void)y;
    (void)data;
    int page_num = absrow;
    u8 space = 19;
    int row = 40;
    int col1 = COL1;
    int col2 = COL2;
    if (page_num == 0 || LCD_WIDTH == 480) {
#if HAS_EXTENDED_AUDIO
        row -= (LCD_WIDTH == 320 ? 0 : 8);
#endif
        GUI_CreateLabelBox(&gui1->head1_1, col1, row, col2 + BUTTON_WIDTH - col1, 0, &SECTION_FONT, GUI_Localize, NULL, _tr_noop("Generic settings"));

#if SUPPORT_MULTI_LANGUAGE
        row += space;
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui1->langlbl, col1, row+ADDROW, col2 - col1, 0, &LABEL_FONT, GUI_Localize, NULL, _tr_noop("Language"));
        GUI_CreateButton(&gui1->lang, col2, row, BUTTON_WIDE, langstr_cb, lang_select_cb, NULL);
#endif

        row += space + ADDSPACE ;
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui1->modelbl, col1, row, col2 - col1, 0, &LABEL_FONT, GUI_Localize, NULL, _tr_noop("Stick mode"));
        GUI_CreateTextSelect(&gui1->mode, col2, row, TEXTSELECT_96, NULL, modeselect_cb, NULL);
        row += space + (ADDSPACE-1) / 2;
        if (HAS_TOUCH) {
            if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
            GUI_CreateLabelBox(&gui1->touchlbl, col1, row+ADDROW, col2 - col1, 0, &LABEL_FONT, GUI_Localize, NULL, _tr_noop("Touch screen"));
            GUI_CreateButton(&gui1->touchcalib, col2, row, BUTTON_WIDE, calibratestr_cb, press_cb, (void *)CALIB_TOUCH);
        }
        row += space + ADDSPACE;
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui1->sticklbl, col1, row+ADDROW, col2 - col1, 0, &LABEL_FONT, GUI_Localize, NULL, _tr_noop("Sticks"));
        GUI_CreateButton(&gui1->stickcalib, col2, row, BUTTON_WIDE, calibratestr_cb, press_cb, (void *)CALIB_STICK);
#if HAS_RTC
        row += space + ADDSPACE;
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui1->clocklbl, col1, row+ADDROW, col2 - col1, 0, &LABEL_FONT, GUI_Localize, NULL, _tr_noop("Clock"));
        GUI_CreateButton(&gui1->clock, col2, row, BUTTON_WIDE, clockstr_cb, press_cb, (void *)SET_CLOCK);
        row += space + ADDSPACE;
#else
        row += space + (LCD_WIDTH == 320 ? 8 : 16); // for nicer look
#endif //HAS_RTC
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
    }
    if (page_num == 1 || LCD_WIDTH == 480) {
#if HAS_EXTENDED_AUDIO
        row -= (LCD_WIDTH == 320 ? 8 : 4);
        GUI_CreateLabelBox(&gui2->head2_1, col1, row, col2 + BUTTON_WIDTH - col1, 0, &SECTION_FONT, GUI_Localize, NULL, _tr_noop("Audio settings"));
#else
        GUI_CreateLabelBox(&gui2->head2_1, col1, row, col2 + BUTTON_WIDTH - col1, 0, &SECTION_FONT, GUI_Localize, NULL, _tr_noop("Buzzer settings"));
#endif
        row += space;
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui2->power_alarmlbl, col1, row, col2 - col1, 0, &LABEL_FONT, GUI_Localize, NULL, _tr_noop("Power On alarm"));
        GUI_CreateTextSelect(&gui2->power_alarm, col2, row, TEXTSELECT_96, NULL, poweralarm_select_cb, NULL);
        row += space;
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui2->battalrmlbl, col1, row, col2 - col1, 0, &LABEL_FONT, GUI_Localize, NULL, _tr_noop("Battery alarm"));
        GUI_CreateTextSelect(&gui2->battalrm, col2, row, TEXTSELECT_96, NULL, batalarm_select_cb, NULL);
        row += space;
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui2->battalrmintvllbl, col1, row, col2 - col1, 0, &LABEL_FONT, GUI_Localize, NULL, _tr_noop("Alarm interval"));
        GUI_CreateTextSelect(&gui2->battalrmintvl, col2, row, TEXTSELECT_96, NULL, batalarmwarn_select_cb, NULL);
        row += space;
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui2->buzzlbl, col1, row, col2 - col1, 0, &LABEL_FONT, GUI_Localize, NULL, _tr_noop("Buzz volume"));
        GUI_CreateTextSelect(&gui2->buzz, col2, row, TEXTSELECT_96, NULL, _buzz_vol_cb, (void *)&Transmitter.volume);
#if HAS_EXTENDED_AUDIO
        row += space;
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui2->audiolbl, col1, row, 0, 0, &DEFAULT_FONT, GUI_Localize, NULL, _tr_noop("Audio volume"));
        GUI_CreateTextSelect(&gui2->audio, col2, row, TEXTSELECT_96, NULL, _audio_vol_cb, (void *)&Transmitter.audio_vol);
#endif
        row += space;
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui2->musicshutdbl, col1, row, col2 - col1, 0, &LABEL_FONT, GUI_Localize, NULL, _tr_noop("Power-down alert"));
        GUI_CreateTextSelect(&gui2->music_shutdown, col2, row, TEXTSELECT_96, NULL, _music_shutdown_cb, (void *)&Transmitter.music_shutdown);
#if HAS_EXTENDED_AUDIO
        row += space;
#else
        row += space + 8;
#endif
        if (row+12 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui2->head2_2, col1, row, col2 + BUTTON_WIDTH - col1, 0, &SECTION_FONT, GUI_Localize, NULL, _tr_noop("LCD settings"));
        row += space;
        if (row+8 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui2->backlightlbl, col1, row, col2 - col1, 0, &LABEL_FONT, GUI_Localize, NULL, _tr_noop("Backlight"));
        GUI_CreateTextSelect(&gui2->backlight, col2, row, TEXTSELECT_96, NULL, backlight_select_cb, NULL);
        row += space;
        if (row+8 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui2->dimtimelbl, col1, row, col2 - col1, 0, &LABEL_FONT, GUI_Localize, NULL, _tr_noop("Dimmer time"));
        GUI_CreateTextSelect(&gui2->dimtime, col2, row, TEXTSELECT_96, NULL, auto_dimmer_time_cb, NULL);
        row += space;
        if (row+8 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui2->dimtgtlbl, col1, row, col2 - col1, 0, &LABEL_FONT, GUI_Localize, NULL, _tr_noop("Dimmer target"));
        GUI_CreateTextSelect(&gui2->dimtgt, col2, row, TEXTSELECT_96, NULL, common_select_cb,
                (void *)&Transmitter.auto_dimmer.backlight_dim_value);
        row += space + 0;
        if (row+8 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
    }
    if (page_num == 2 || LCD_WIDTH == 480) {
        GUI_CreateLabelBox(&gui3->head3_1, col1, row, col2 + BUTTON_WIDTH - col1, 0, &SECTION_FONT, GUI_Localize, NULL, _tr_noop("Timer settings"));
        row += space;
        if (row+8 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui3->prealertlbl, col1, row, col2 - col1, 0, &LABEL_FONT, GUI_Localize, NULL,  _tr_noop("Prealert time"));
        GUI_CreateTextSelect(&gui3->prealert, col2, row, TEXTSELECT_96,NULL, prealert_time_cb, (void *)0L);
        row += space;
        if (row+8 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui3->preintvllbl, col1, row, col2 - col1, 0, &LABEL_FONT, GUI_Localize, NULL, _tr_noop("Prealert interval"));
        GUI_CreateTextSelect(&gui3->preintvl, col2, row, TEXTSELECT_96, NULL, timer_interval_cb,
                &Transmitter.countdown_timer_settings.prealert_interval);
        row += space;
        if (row+8 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui3->timeuplbl, col1, row, col2 - col1, 0, &LABEL_FONT, GUI_Localize, NULL, _tr_noop("Timeup interval"));
        GUI_CreateTextSelect(&gui3->timeup, col2, row, TEXTSELECT_96, NULL, timer_interval_cb,
                &Transmitter.countdown_timer_settings.timeup_interval);
        row += space + 3;
        if (row+8 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui3->head3_2, col1, row, col2 + BUTTON_WIDTH - col1, 0, &SECTION_FONT, GUI_Localize, NULL, _tr_noop("Telemetry settings"));
        row += space;
        if (row+8 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui3->templbl, col1, row, col2 - col1, 0, &LABEL_FONT, GUI_Localize, NULL, _tr_noop("Temperature"));
        GUI_CreateTextSelect(&gui3->temp, col2, row, TEXTSELECT_96, NULL, units_cb, (void *)1L);
        row += space;
        if (row+8 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui3->lengthlbl, col1, row, col2 - col1, 0, &LABEL_FONT, GUI_Localize, NULL, _tr_noop("Length"));
        GUI_CreateTextSelect(&gui3->length, col2, row, TEXTSELECT_96, NULL, units_cb, (void *)0L);
        row += space;
        if (row+8 >= LCD_HEIGHT) { row = 40; col1 = COL3; col2 = COL4; }
        GUI_CreateLabelBox(&gui3->telemivllbl, col1, row, col2 - col1, 0, &LABEL_FONT, GUI_Localize, NULL, _tr_noop("Alert interval"));
        GUI_CreateTextSelect(&gui3->telemivl, col2, row, TEXTSELECT_96, NULL, telem_interval_cb,
                &Transmitter.telem_alert_interval);

#if HAS_VIBRATINGMOTOR
        if(Transmitter.extra_hardware & VIBRATING_MOTOR) {
            row += space + 3;
            GUI_CreateLabelBox(&gui3->head3_3, col1, row, col2 + BUTTON_WIDTH - col1, 0, &SECTION_FONT, GUI_Localize, NULL, _tr_noop("Vibration settings"));
            row += space;
            GUI_CreateLabelBox(&gui3->viblbl, col1, row, col2 - col1, 0, &LABEL_FONT, GUI_Localize, NULL, _tr_noop("Vibration:"));
            GUI_CreateTextSelect(&gui3->vib, col2, row, TEXTSELECT_96,
                                 _vibration_test_cb, _vibration_state_cb, (void *)&Transmitter.vibration_state);
        }
#endif

    }
    return 0;
}
示例#9
0
void PAGE_ModelInit(int page)
{
    (void)page;
    u8 row;

    mp->last_mixermode = Model.mixer_mode;
    mp->last_txpower = Model.tx_power;
    mp->file_state = 0;
    PAGE_SetModal(0);
    if (Model.mixer_mode == MIXER_STANDARD)
        PAGE_ShowHeader_ExitOnly(PAGE_GetName(PAGEID_MODEL), MODELMENU_Show);
    else
        PAGE_ShowHeader(PAGE_GetName(PAGEID_MODEL));

    #define COL1 (8 + ((LCD_WIDTH - 320) / 2))
    #define COL2 (COL1 + 128)
    #define COL3 (COL1 + 228)
    #define ROW1 (40 + ((LCD_HEIGHT - 240) / 2))
    row = ROW1;
    GUI_CreateLabel(&gui->filelbl, COL1, row, NULL, DEFAULT_FONT, _tr("File"));
    GUI_CreateTextSelect(&gui->file, COL2, row, TEXTSELECT_96, file_press_cb, file_val_cb, NULL);

    row+= 20;
    GUI_CreateLabel(&gui->guilbl, COL1, row, NULL, DEFAULT_FONT, _tr("Mixer GUI"));
    GUI_CreateTextSelect(&gui->guits, COL2, row, TEXTSELECT_96, NULL, _mixermode_cb, NULL);

    row += 20;
    GUI_CreateLabel(&gui->namelbl, COL1, row, NULL, DEFAULT_FONT, _tr("Model name"));  // use the same naming convention for devo8 and devo10
    GUI_CreateButton(&gui->name, COL2, row, BUTTON_96x16, show_text_cb, 0x0000, _changename_cb, Model.name);
    GUI_CreateButton(&gui->icon, COL3, row, BUTTON_64x16, show_text_cb, 0x0000, changeicon_cb, _tr("Icon"));

    row += 20;
    GUI_CreateLabel(&gui->typelbl, COL1, row, NULL, DEFAULT_FONT, _tr("Model type"));
    GUI_CreateTextSelect(&gui->type, COL2, row, TEXTSELECT_96, type_press_cb, type_val_cb, NULL);

    row += 24;
    GUI_CreateLabel(&gui->ppmlbl, COL1, row, NULL, DEFAULT_FONT, _tr("PPM In"));
    GUI_CreateTextSelect(&gui->ppm, COL2, row, TEXTSELECT_96, ppmin_press_cb, ppmin_select_cb, NULL);

    row += 20;
    GUI_CreateLabel(&gui->protolbl, COL1, row, NULL, DEFAULT_FONT, _tr("Protocol"));
    GUI_CreateTextSelect(&gui->proto, COL2, row, TEXTSELECT_96, proto_press_cb, protoselect_cb, NULL);

    row += 20;
    GUI_CreateLabel(&gui->numchlbl, COL1, row, NULL, DEFAULT_FONT, _tr("# Channels"));
    GUI_CreateTextSelect(&gui->numch, COL2, row, TEXTSELECT_96, NULL, numchanselect_cb, NULL);


    row += 24;
    GUI_CreateLabel(&gui->pwrlbl, COL1, row, NULL, DEFAULT_FONT, _tr("Tx power"));
    GUI_CreateTextSelect(&gui->pwr, COL2, row, TEXTSELECT_96, NULL, powerselect_cb, NULL);

    row += 20;
    if(Model.fixed_id == 0)
        strncpy(mp->fixed_id, _tr("None"), sizeof(mp->fixed_id));
    else
        sprintf(mp->fixed_id, "%d", (int)Model.fixed_id);
    GUI_CreateLabel(&gui->fixedidlbl, COL1, row, NULL, DEFAULT_FONT, _tr("Fixed ID"));
    GUI_CreateButton(&gui->fixedid, COL2, row, BUTTON_96x16, show_text_cb, 0x0000, fixedid_cb, mp->fixed_id);
    GUI_CreateButton(&gui->bind, COL3, row, BUTTON_64x16, show_bindtext_cb, 0x0000, bind_cb, NULL);
    configure_bind_button();
}