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; } }
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; } }
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; }
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); } }
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(); }
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); }
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); } }
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; }
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(); }