void PAGE_TrimEditInit(int page) { struct Trim *trim = MIXER_GetAllTrims(); tp->index = page; tp->trim = trim[tp->index]; PAGE_ShowHeader(_tr("Trim")); PAGE_CreateOkButton(LCD_WIDTH-56, 4, okcancel_cb); enum { COL1 = (64 + ((LCD_WIDTH - 320) / 2)), COL2 = (160 + ((LCD_WIDTH - 320) / 2)), ROW1 = (80 + ((LCD_HEIGHT - 240) / 2)), ROW2 = (ROW1 + 24), ROW3 = (ROW1 + 48), ROW4 = (ROW1 + 72), ROW5 = (ROW1 + 96), }; //Row 1 GUI_CreateLabel(&gui_ed->srclbl, COL1, ROW1, NULL, DEFAULT_FONT, _tr("Input")); GUI_CreateTextSource(&gui_ed->src, COL2, ROW1, TEXTSELECT_96, NULL, set_source_cb, set_input_source_cb, &tp->trim.src); //Row 2 GUI_CreateLabel(&gui_ed->steplbl, COL1, ROW2, NULL, DEFAULT_FONT, _tr("Trim Step")); GUI_CreateTextSelect(&gui_ed->step, COL2, ROW2, TEXTSELECT_96, NULL, set_trimstep_cb, (void *)(long)(tp->index + 0x100)); //0x100: Use tp->trim //Row 3 GUI_CreateLabelBox(&gui_ed->neglbl, COL1, ROW3, COL2-COL1, ROW4-ROW3, &DEFAULT_FONT, NULL, NULL, _tr("Trim -")); GUI_CreateTextSelect(&gui_ed->neg, COL2, ROW3, TEXTSELECT_96, NULL, set_trim_cb, &tp->trim.neg); //Row 4 GUI_CreateLabel(&gui_ed->poslbl, COL1, ROW4, NULL, DEFAULT_FONT, _tr("Trim +")); GUI_CreateTextSelect(&gui_ed->pos, COL2, ROW4, TEXTSELECT_96, NULL, set_trim_cb, &tp->trim.pos); //Row 5 GUI_CreateLabelBox(&gui_ed->swlbl, COL1, ROW5, COL2-COL1, ROW5-ROW4, &DEFAULT_FONT, NULL, NULL, _tr("Switch")); GUI_CreateTextSource(&gui_ed->sw, COL2, ROW5, TEXTSELECT_96, NULL, set_switch_cb, set_input_switch_cb, &tp->trim.sw); }
const char *trimsource_name_cb(guiObject_t *obj, const void *data) { (void)obj; u8 i = (long)data; struct Trim *trim = MIXER_GetAllTrims(); return INPUT_SourceName(tp->tmpstr, MIXER_MapChannel(trim[i].src)); }
static const char *negtrim_str(guiObject_t *obj, const void *data) { (void)obj; int i = (long)data; if(Model.trims[i].step == TRIM_MOMENTARY || Model.trims[i].step == TRIM_TOGGLE) return _tr("None"); struct Trim *trim = MIXER_GetAllTrims(); return INPUT_ButtonName(trim[i].neg); }
static int row_cb(int absrow, int relrow, int y, void *data) { (void)data; struct Trim *trim = MIXER_GetAllTrims(); GUI_CreateButtonPlateText(&gui->src[relrow], BUTTON_X, y, BUTTON_WIDTH, LINE_HEIGHT, &BUTTON_FONT, trimsource_name_cb, edit_trim_cb, (void *)((long)absrow)); GUI_CreateTextSelectPlate(&gui->item[relrow], TEXTSEL_X, y, TEXTSEL_WIDTH, LINE_HEIGHT, &TINY_FONT, NULL, set_trimstep_cb, (void *)(long)(absrow + 0x000)); //0x000: Use Model.trims GUI_CreateLabelBox(&gui->name[relrow], LABEL_X, y, LABEL_WIDTH, LINE_HEIGHT, &TINY_FONT, GUI_Localize, NULL, (void *)INPUT_ButtonName(trim[absrow].pos)); return 2; }
void PAGE_TrimEditInit(int page) { struct Trim *trim = MIXER_GetAllTrims(); tp->index = page; tp->trim = trim[tp->index]; GUI_CreateLabelBox(&guit->header, 0, 0, LABEL2_WIDTH, HEADER_HEIGHT, &TITLE_FONT, GUI_Localize, NULL, _tr_noop("Edit")); GUI_CreateButtonPlateText(&guit->save, BUTTON2_X, BUTTON2_Y, BUTTON2_WIDTH, LINE_HEIGHT, &BUTTON_FONT, GUI_Localize, okcancel_cb, _tr_noop("Save")); GUI_CreateScrollable(&gui->scrollable, 0, HEADER_HEIGHT, LCD_WIDTH, LCD_HEIGHT - HEADER_HEIGHT, LINE_SPACE, ITEM_LAST, row2_cb, getobj2_cb, NULL, NULL); GUI_SetSelected(GUI_ShowScrollableRowOffset(&gui->scrollable, 0)); }
static int row_cb(int absrow, int relrow, int y, void *data) { (void)data; struct Trim *trim = MIXER_GetAllTrims(); GUI_CreateButton(&gui->src[relrow], PCOL1, y, BUTTON_64x16, trimsource_name_cb, 0x0000, _edit_cb, (void *)((long)absrow)); GUI_CreateLabelBox(&gui->neg[relrow], PCOL2 + 6, y, PCOL3 - PCOL2, 24, &DEFAULT_FONT, negtrim_str, NULL, (void *)(long)absrow); GUI_CreateLabel(&gui->pos[relrow], PCOL3 + 6, y, NULL, DEFAULT_FONT, (void *)INPUT_ButtonName(trim[absrow].pos)); GUI_CreateTextSelect(&gui->step[relrow], PCOL4 + 6, y, TEXTSELECT_96, NULL, set_trimstep_cb, (void *)(long)(absrow + 0x000)); //0x000: Use Model.trims return 2; }
static void okcancel_cb(guiObject_t *obj, const void *data) { (void)obj; if (data) { //Save trim here struct Trim *trim = MIXER_GetAllTrims(); trim[tp->index] = tp->trim; MIXER_RegisterTrimButtons(); } PAGE_RemoveAllObjects(); PAGE_TrimInit(0); }
static int row_cb(int absrow, int relrow, int y, void *data) { (void)data; u8 w = 30; struct Trim *trim = MIXER_GetAllTrims(); GUI_CreateButtonPlateText(&gui->src[relrow], 0, y, w, ITEM_HEIGHT, &DEFAULT_FONT, trimsource_name_cb, 0x0000, _edit_cb, (void *)((long)absrow)); GUI_CreateTextSelectPlate(&gui->item[relrow], 32, y, 40, ITEM_HEIGHT, &TINY_FONT, NULL, set_trimstep_cb, (void *)(long)(absrow+0x000)); //0x000: Use Model.trims GUI_CreateLabelBox(&gui->name[relrow], 75, y, 50, ITEM_HEIGHT, &DEFAULT_FONT, NULL, NULL, (void *)INPUT_ButtonName(trim[absrow].pos)); return 1; }
static void _edit_cb(guiObject_t *obj, const void *data) { (void)obj; PAGE_SetActionCB(_sub_action_cb); struct Trim *trim = MIXER_GetAllTrims(); PAGE_SetModal(1); tp->index = (long)data; tp->trim = trim[tp->index]; PAGE_RemoveAllObjects(); PAGE_ShowHeader(""); // to draw a line only u8 w = 50; GUI_CreateButtonPlateText(&guit->save, LCD_WIDTH - w -1, 0, w, ITEM_HEIGHT, &DEFAULT_FONT, NULL, 0x0000, okcancel_cb, (void *)_tr("Save")); GUI_CreateScrollable(&gui->scrollable, 0, ITEM_HEIGHT + 1, LCD_WIDTH, LCD_HEIGHT - ITEM_HEIGHT -1, ITEM_SPACE, ITEM_LAST, row2_cb, getobj2_cb, NULL, NULL); GUI_SetSelected(GUI_ShowScrollableRowOffset(&gui->scrollable, 0)); }
static void _edit_cb(guiObject_t *obj, const void *data) { (void)obj; struct Trim *trim = MIXER_GetAllTrims(); PAGE_SetModal(1); tp->index = (long)data; tp->trim = trim[tp->index]; PAGE_RemoveAllObjects(); PAGE_CreateCancelButton(LCD_WIDTH-160, 4, okcancel_cb); PAGE_CreateOkButton(LCD_WIDTH-56, 4, okcancel_cb); enum { COL1 = (64 + ((LCD_WIDTH - 320) / 2)), COL2 = (160 + ((LCD_WIDTH - 320) / 2)), ROW1 = (80 + ((LCD_HEIGHT - 240) / 2)), ROW2 = (ROW1 + 24), ROW3 = (ROW1 + 48), ROW4 = (ROW1 + 72), ROW5 = (ROW1 + 96), }; //Row 1 GUI_CreateLabel(&gui_ed->srclbl, COL1, ROW1, NULL, DEFAULT_FONT, _tr("Input")); GUI_CreateTextSelect(&gui_ed->src, COL2, ROW1, TEXTSELECT_96, NULL, set_source_cb, &tp->trim.src); //Row 2 GUI_CreateLabel(&gui_ed->steplbl, COL1, ROW2, NULL, DEFAULT_FONT, _tr("Trim Step")); GUI_CreateTextSelect(&gui_ed->step, COL2, ROW2, TEXTSELECT_96, NULL, set_trimstep_cb, (void *)(long)(tp->index + 0x100)); //0x100: Use tp->trim //Row 3 GUI_CreateLabelBox(&gui_ed->neglbl, COL1, ROW3, COL2-COL1, ROW4-ROW3, &DEFAULT_FONT, NULL, NULL, _tr("Trim -")); GUI_CreateTextSelect(&gui_ed->neg, COL2, ROW3, TEXTSELECT_96, NULL, set_trim_cb, &tp->trim.neg); //Row 4 GUI_CreateLabel(&gui_ed->poslbl, COL1, ROW4, NULL, DEFAULT_FONT, _tr("Trim +")); GUI_CreateTextSelect(&gui_ed->pos, COL2, ROW4, TEXTSELECT_96, NULL, set_trim_cb, &tp->trim.pos); //Row 5 GUI_CreateLabelBox(&gui_ed->swlbl, COL1, ROW5, COL2-COL1, ROW5-ROW4, &DEFAULT_FONT, NULL, NULL, _tr("Switch")); GUI_CreateTextSelect(&gui_ed->sw, COL2, ROW5, TEXTSELECT_96, NULL, set_switch_cb, &tp->trim.sw); }