From 18b559ff13898e8e96275b7e329bfa23b7394f6f Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Fri, 20 Oct 2017 05:36:40 +0200 Subject: spline: allow switch pitch mapping max Y 90/180 --- gui/mapping-window.cpp | 42 ++++++++++++++++++++++++++++++++++-------- gui/mapping-window.ui | 33 +++++++++++++++++++++++++++------ 2 files changed, 61 insertions(+), 14 deletions(-) (limited to 'gui') diff --git a/gui/mapping-window.cpp b/gui/mapping-window.cpp index 127929fe..0726186a 100644 --- a/gui/mapping-window.cpp +++ b/gui/mapping-window.cpp @@ -56,12 +56,14 @@ MapWidget::MapWidget(Mappings& m) : m(m), widgets{} tie_setting(s.a_y.altp, ui.ty_altp); tie_setting(s.a_z.altp, ui.tz_altp); - tie_setting(s.a_yaw.clamp, ui.max_yaw_rotation); - tie_setting(s.a_pitch.clamp, ui.max_pitch_rotation); - tie_setting(s.a_roll.clamp, ui.max_roll_rotation); - tie_setting(s.a_x.clamp, ui.max_x_translation); - tie_setting(s.a_y.clamp, ui.max_y_translation); - tie_setting(s.a_z.clamp, ui.max_z_translation); + tie_setting(s.a_yaw.clamp_x, ui.max_yaw_rotation); + tie_setting(s.a_pitch.clamp_x, ui.max_pitch_rotation); + tie_setting(s.a_roll.clamp_x, ui.max_roll_rotation); + tie_setting(s.a_x.clamp_x, ui.max_x_translation); + tie_setting(s.a_y.clamp_x, ui.max_y_translation); + tie_setting(s.a_z.clamp_x, ui.max_z_translation); + + tie_setting(s.a_pitch.clamp_y, ui.max_pitch_output); } void MapWidget::load() @@ -88,6 +90,9 @@ void MapWidget::load() { nullptr, Yaw, nullptr, false } }; + ui.max_pitch_output->setItemData(0, int(axis_opts::o_r180)); + ui.max_pitch_output->setItemData(1, int(axis_opts::o_r90)); + using a = axis_opts::max_clamp; for (QComboBox* x : { ui.max_yaw_rotation, ui.max_pitch_rotation, ui.max_roll_rotation }) @@ -98,6 +103,8 @@ void MapWidget::load() for (a y : { a::t30, a::t20, a::t15, a::t10, a::t100 }) x->addItem(QStringLiteral("%1 cm").arg(int(y)), y); + // XXX TODO add tie_setting overload for spline_widget!!! -sh 20171020 + for (int i = 0; qfcs[i].qfc; i++) { const bool altp = qfcs[i].altp; @@ -116,7 +123,7 @@ void MapWidget::load() qfc.force_redraw(); } - connect(&axis.opts.clamp, base_value::signal_fun(), + connect(&axis.opts.clamp_x, base_value::signal_fun(), &qfc, [i, &conf, &qfc](int value) { conf.set_max_input(value); qfc.reload_spline(); @@ -133,11 +140,30 @@ void MapWidget::load() // force signal to avoid duplicating the slot's logic qfc.setConfig(&conf); - axis.opts.clamp.valueChanged(axis.opts.clamp); + axis.opts.clamp_x.valueChanged(axis.opts.clamp_x); widgets[i % 6][altp ? 1 : 0] = &qfc; } + { + value& val = s.a_pitch.clamp_y; + + Map& axis = m(Pitch); + + connect(&val, base_value::signal_fun(), this, [&](int x) { + x = std::abs(x); + + spline* splines[] { &axis.spline_main, &axis.spline_alt }; + + for (spline* spl : splines) + spl->set_max_output(x); + + ui.ryconfig->setConfig(&axis.spline_main); + ui.ryconfig_alt->setConfig(&axis.spline_alt); + }); + + axis.opts.clamp_y.valueChanged(axis.opts.clamp_y); + } } void MapWidget::closeEvent(QCloseEvent*) diff --git a/gui/mapping-window.ui b/gui/mapping-window.ui index c37c4b3e..7db6f425 100644 --- a/gui/mapping-window.ui +++ b/gui/mapping-window.ui @@ -67,7 +67,7 @@ - Max rotation + Max input @@ -141,7 +141,7 @@ - Max rotation + Max input @@ -155,6 +155,27 @@ + + + + Max output + + + + + + + + 180° + + + + + 90° + + + + @@ -215,7 +236,7 @@ - Max rotation + Max input @@ -293,7 +314,7 @@ - Max translation + Max input @@ -367,7 +388,7 @@ - Max translation + Max input @@ -441,7 +462,7 @@ - Max translation + Max input -- cgit v1.2.3