/* Advanced Standard Row1 Timer Timer Row2 Switch Switch Row3 Reset(perm)/ResetSwitch Reset(perm)/Start Row4 Start/Set-to Set-to */ static int row_cb(int absrow, int relrow, int y, void *data) { (void)data; (void)relrow; u8 space = LINE_SPACE; //Row 1 GUI_CreateLabelBox(&gui->name, LABEL_X, y, LABEL_WIDTH, LINE_HEIGHT, &DEFAULT_FONT, timer_str_cb, NULL, (void *)(long)absrow); GUI_CreateTextSelectPlate(&gui->type, TEXTSEL_X, y, TEXTSEL_WIDTH, LINE_HEIGHT, &DEFAULT_FONT, NULL, set_timertype_cb, (void *)(long)absrow); //Row 2 y += space; GUI_CreateLabelBox(&gui->switchlbl, LABEL_X, y, LABEL_WIDTH, LINE_HEIGHT,&DEFAULT_FONT, switch_str_cb, NULL, (void *)(long)absrow); GUI_CreateTextSourcePlate(&gui->src, TEXTSEL_X, y, TEXTSEL_WIDTH, LINE_HEIGHT, &DEFAULT_FONT, toggle_source_cb, set_source_cb, set_input_source_cb, (void *)(long)absrow); //Row 3 y += space; /*prem-timer reset */ GUI_CreateLabelBox(&gui->resetpermlbl, LABEL_X, y , LABEL_WIDTH, LINE_HEIGHT, &DEFAULT_FONT, NULL, NULL, _tr("Reset")); GUI_CreateButtonPlateText(&gui->resetperm, RESET_X, y , RESET_WIDTH, LINE_HEIGHT,&DEFAULT_FONT, show_timerperm_cb, 0x0000, reset_timerperm_cb,(void *)(long)absrow); if(Model.mixer_mode != MIXER_STANDARD) { /* or Reset switch */ GUI_CreateLabelBox(&gui->resetlbl, LABEL_X, y , LABEL_WIDTH, LINE_HEIGHT,&DEFAULT_FONT, NULL, NULL, _tr("Reset sw")); GUI_CreateTextSourcePlate(&gui->resetsrc, TEXTSEL_X, y , TEXTSEL_WIDTH, LINE_HEIGHT, &DEFAULT_FONT, toggle_resetsrc_cb, set_resetsrc_cb, set_input_rstsrc_cb, (void *)(long)absrow); y += space; } //Row 4 GUI_CreateLabelBox(&gui->startlbl, LABEL_X, y, START_WIDTH, // bug fix: label width and height can't be 0, otherwise, the label couldn't be hidden dynamically LINE_HEIGHT, &DEFAULT_FONT, NULL, NULL, _tr("Start")); GUI_CreateTextSelectPlate(&gui->start, TEXTSEL_X, y, TEXTSEL_WIDTH, LINE_HEIGHT, &DEFAULT_FONT,NULL, set_start_cb, (void *)(long)absrow); // don't include this in Devo7e due to memory restrictions #if HAS_PERMANENT_TIMER if(Model.mixer_mode == MIXER_STANDARD) y+= space; GUI_CreateButtonPlateText(&gui->setperm, RESET_X, y, RESET_WIDTH, LINE_HEIGHT,&DEFAULT_FONT, show_timerperm_cb, 0x0000, reset_timerperm_cb,(void *)(long)(absrow | 0x80)); #endif update_countdown(absrow); int selectable = (Model.timer[absrow].type < TIMER_COUNTDOWN) ? 2 : 3; if (Model.mixer_mode == MIXER_ADVANCED) selectable++; #if HAS_PERMANENT_TIMER if (Model.timer[absrow].type == TIMER_PERMANENT) selectable = 4; #endif return selectable; }
static int row4_cb(int absrow, int relrow, int y, void *data) { (void)data; void *ts = NULL; void *input_ts = NULL; void *ts_press = NULL; void *ts_data = NULL; char *label = NULL; switch (absrow) { case 0: label = _tr_noop("Video Enable"); ts = set_source_cb; ts_press = sourceselect_cb; ts_data = (void *)&Model.videosrc; input_ts = set_input_source_cb; break; case 1: label = _tr_noop("Video Channel"); ts = set_videoch_cb; break; case 2: label = _tr_noop("Contrast"); ts = set_videocontrast_cb; break; case 3: label = _tr_noop("Brightness"); ts = set_videobrightness_cb; break; } GUI_CreateLabelBox(&gui->label[relrow], LABEL_X, y, LABEL_WIDTH, LINE_HEIGHT, &DEFAULT_FONT, NULL, NULL, _tr(label)); GUI_CreateTextSourcePlate(&gui->value[relrow], SELECT_X, y, SELECT_WIDTH, LINE_HEIGHT, &DEFAULT_FONT, ts_press, ts, input_ts, ts_data); return 1; }
static int row2_cb(int absrow, int relrow, int y, void *data) { data = NULL; const void *label = ""; void *value = NULL; void *input_value = NULL; switch(absrow) { case ITEM_INPUT: label = _tr_noop("Input"); value = set_source_cb; data = &tp->trim.src; input_value = set_input_source_cb; break; case ITEM_TRIMNEG: label = _tr_noop("Trim -"); value = set_trim_cb; data = &tp->trim.neg; break; case ITEM_TRIMPOS: label = _tr_noop("Trim +"); value = set_trim_cb; data = &tp->trim.pos; break; case ITEM_TRIMSTEP: label = _tr_noop("Trim Step"); value = set_trimstep_cb; data = (void *)(long)(tp->index + 0x100); //0x100: Use tp->trim break; case ITEM_TRIMSWITCH: label = _tr_noop("Switch"); value = set_switch_cb; data = &tp->trim.sw; input_value = set_input_switch_cb; break; } GUI_CreateLabelBox(&guit->label[relrow], LABEL2_X, y, LABEL2_WIDTH, LINE_HEIGHT, &LABEL_FONT, GUI_Localize, NULL, label); GUI_CreateTextSourcePlate(&guit->value[relrow], TEXTSEL2_X, y, TEXTSEL2_WIDTH, LINE_HEIGHT, &TEXTSEL_FONT, NULL, value, input_value, data); return 1; }
static int row_cb(int absrow, int relrow, int y, void *data) { (void)data; void * tgl = NULL; void * label_cb = NULL; const void * label = NULL; void * disp = NULL; void * input_disp = NULL; void * value = NULL; switch(absrow) { case ITEM_REVERSE: label = _tr("Reverse"); tgl = toggle_reverse_cb; disp = reverse_cb; value = (void *)((long)mp->channel); break; case ITEM_FAILSAFE: label = _tr("Fail-safe"); tgl = toggle_failsafe_cb; disp = set_failsafe_cb; break; case ITEM_SAFETY: label = _tr("Safety"); tgl = sourceselect_cb; disp = set_source_cb; value = &mp->limit->safetysw; input_disp = set_input_source_cb; break; case ITEM_SAFEVAL: label = _tr("Safe Val"); disp = set_safeval_cb; break; case ITEM_MINLIMIT: label = _tr("Min Limit"); disp = set_limits_cb; value = &mp->limit->min; break; case ITEM_MAXLIMIT: label = _tr("Max Limit"); disp = set_limits_cb; value = &mp->limit->max; break; case ITEM_SCALEPOS: label_cb = scalestring_cb; label = (void *)1L; disp = set_limitsscale_cb; value = &mp->limit->servoscale; break; case ITEM_SCALENEG: label_cb = scalestring_cb; label = (void *)0L; disp = set_limitsscale_cb; value = &mp->limit->servoscale_neg; break; case ITEM_SUBTRIM: label = _tr("Subtrim"); disp = set_trimstep_cb; value = &mp->limit->subtrim; break; case ITEM_SPEED: label = _tr("Speed"); disp = set_limits_cb; value = &mp->limit->speed; break; } GUI_CreateLabelBox(&gui->label[relrow], LABEL_X, y, LABEL_W, LINE_HEIGHT, &LABEL_FONT, label_cb, NULL, label); GUI_CreateTextSourcePlate(&gui->value[relrow], TEXTSEL_X, y, TEXTSEL_W, LINE_HEIGHT, &TEXTSEL_FONT, tgl, disp, input_disp, value); if(absrow == ITEM_SAFEVAL) GUI_TextSelectEnable(&gui->value[relrow], mp->limit->safetysw); return 1; }
static int row3_cb(int absrow, int relrow, int y, void *data) { (void)data; void *ts; void *input_ts = NULL; void *ts_press = NULL; void *ts_data = NULL; char *label = NULL; void *label_cmd = NULL; switch (absrow) { case 0: label = _tr_noop("Center PW"); ts = set_train_cb; ts_data = (void *)1L; break; case 1: label = _tr_noop("Delta PW"); ts = set_train_cb; ts_data = (void *)2L; break; case 2: if (PPMin_Mode() != PPM_IN_SOURCE) { label = _tr_noop("Trainer Sw"); ts = set_source_cb; ts_press = sourceselect_cb; ts_data = (void *)&Model.train_sw; input_ts = set_input_source_cb; } else { label = _tr_noop("Num Channels"); ts = set_train_cb; ts_data = (void *)0L; } break; default: label_cmd = input_chname_cb; label = (void *)((long)absrow - 3); ts = set_chmap_cb; ts_data = label; break; } GUI_CreateLabelBox(&gui->label[relrow], LABEL_X, y, LABEL_WIDTH, LINE_HEIGHT, &DEFAULT_FONT, label_cmd, NULL, label_cmd ? label : _tr(label)); GUI_CreateTextSourcePlate(&gui->value[relrow], SELECT_X, y, SELECT_WIDTH, LINE_HEIGHT, &DEFAULT_FONT, ts_press, ts, input_ts, ts_data); return 1; }