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); }
const char *set_trim_cb(guiObject_t *obj, int dir, void *data) { if(! GUI_IsTextSelectEnabled(obj)){ return _tr("None"); } u8 *button = (u8 *)data; *button = GUI_TextSelectHelper(*button, 0, NUM_TX_BUTTONS, dir, 1, 1, NULL); return INPUT_ButtonName(*button); }
static u8 get_button(const char *section, const char *value) { u8 i; for (i = 0; i <= NUM_TX_BUTTONS; i++) { if(strcasecmp(INPUT_ButtonName(i), value) == 0) { return i; } } printf("%s: Could not parse Button %s\n", section, value); return 0; }
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; }
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 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; }
void debug_buttons() { u32 data = ScanButtons(); while(1) { u32 val = ScanButtons(); u32 delta = val ^ data; for(int i = 1; i < BUT_LAST; i++) { if(delta & (1 << (i-1))) { printf("%s(%s) ", INPUT_ButtonName(i), (val &(1 << (i-1)))? "Down" : "Up"); } } if (delta) { printf("\n"); data = val; } if(PWR_CheckPowerSwitch()) PWR_Shutdown(); } }
const char *button_str_cb(guiObject_t *obj, const void *data) { (void)obj; int button = (long)data; return INPUT_ButtonName(button + 1); }