X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=midi_mapping_dialog.cpp;h=4a4ecfbfee7c2218910412df584c0f7fc5cc0af7;hb=96cb6414f85e0ef4d660b7bd56267303e80fcd05;hp=95de0d97c2150916270aeb673549e7b702c63525;hpb=7a81f05c63a992acf4a859fd1136700e1d8b98ac;p=nageru diff --git a/midi_mapping_dialog.cpp b/midi_mapping_dialog.cpp index 95de0d9..4a4ecfb 100644 --- a/midi_mapping_dialog.cpp +++ b/midi_mapping_dialog.cpp @@ -1,18 +1,30 @@ #include "midi_mapping_dialog.h" -#include "midi_mapper.h" -#include "midi_mapping.pb.h" -#include "post_to_main_thread.h" -#include "ui_midi_mapping.h" - +#include +#include +#include #include +#include #include #include +#include #include - +#include +#include +#include #include +#include +#include +#include #include +#include "midi_mapper.h" +#include "midi_mapping.pb.h" +#include "post_to_main_thread.h" +#include "ui_midi_mapping.h" + +class QObject; + using namespace google::protobuf; using namespace std; @@ -26,6 +38,8 @@ vector per_bus_controllers = { { "Fader", MIDIMappingBusProto::kFaderFieldNumber, MIDIMappingProto::kFaderBankFieldNumber } }; vector per_bus_buttons = { + { "Toggle mute", MIDIMappingBusProto::kToggleMuteFieldNumber, + MIDIMappingProto::kToggleMuteBankFieldNumber }, { "Toggle locut", MIDIMappingBusProto::kToggleLocutFieldNumber, MIDIMappingProto::kToggleLocutBankFieldNumber }, { "Togle auto gain staging", MIDIMappingBusProto::kToggleAutoGainStagingFieldNumber, @@ -36,6 +50,7 @@ vector per_bus_buttons = { MIDIMappingProto::kClearPeakBankFieldNumber } }; vector per_bus_lights = { + { "Is muted", MIDIMappingBusProto::kIsMutedFieldNumber, 0 }, { "Locut is on", MIDIMappingBusProto::kLocutIsOnFieldNumber, 0 }, { "Auto gain staging is on", MIDIMappingBusProto::kAutoGainStagingIsOnFieldNumber, 0 }, { "Compressor is on", MIDIMappingBusProto::kCompressorIsOnFieldNumber, 0 }, @@ -225,7 +240,7 @@ void MIDIMappingDialog::guess_clicked(bool limit_to_group) QSpinBox *source_spinner = spinners[source_bus_idx][field_number].spinner; assert(spinners[source_bus_idx][field_number].group == this_spinner_group); - if (source_spinner->value() != 0) { + if (source_spinner->value() != -1) { spinner->setValue(source_spinner->value() + offset); } } @@ -315,7 +330,7 @@ unique_ptr MIDIMappingDialog::construct_mapping_proto_from_ui( unique_ptr mapping_proto(new MIDIMappingProto); for (const InstantiatedSpinner &is : controller_spinners) { const int val = is.spinner->value(); - if (val == 0) { + if (val == -1) { continue; } @@ -325,7 +340,7 @@ unique_ptr MIDIMappingDialog::construct_mapping_proto_from_ui( } for (const InstantiatedSpinner &is : button_spinners) { const int val = is.spinner->value(); - if (val == 0) { + if (val == -1) { continue; } @@ -335,7 +350,7 @@ unique_ptr MIDIMappingDialog::construct_mapping_proto_from_ui( } for (const InstantiatedSpinner &is : light_spinners) { const int val = is.spinner->value(); - if (val == 0) { + if (val == -1) { continue; } @@ -391,7 +406,7 @@ void MIDIMappingDialog::add_controls(const string &heading, for (unsigned bus_idx = 0; bus_idx < num_buses; ++bus_idx) { QSpinBox *spinner = new QSpinBox(this); - spinner->setRange(0, 127); + spinner->setRange(-1, 127); spinner->setAutoFillBackground(true); spinner->setSpecialValueText("\u200d"); // Zero-width joiner (ie., empty). spinner->installEventFilter(this); // So we know when the focus changes. @@ -416,13 +431,13 @@ void MIDIMappingDialog::add_controls(const string &heading, void MIDIMappingDialog::fill_controls_from_mapping(const MIDIMappingProto &mapping_proto) { for (const InstantiatedSpinner &is : controller_spinners) { - is.spinner->setValue(get_controller_mapping(mapping_proto, is.bus_idx, is.field_number, 0)); + is.spinner->setValue(get_controller_mapping(mapping_proto, is.bus_idx, is.field_number, -1)); } for (const InstantiatedSpinner &is : button_spinners) { - is.spinner->setValue(get_button_mapping(mapping_proto, is.bus_idx, is.field_number, 0)); + is.spinner->setValue(get_button_mapping(mapping_proto, is.bus_idx, is.field_number, -1)); } for (const InstantiatedSpinner &is : light_spinners) { - is.spinner->setValue(get_light_mapping(mapping_proto, is.bus_idx, is.field_number, 0)); + is.spinner->setValue(get_light_mapping(mapping_proto, is.bus_idx, is.field_number, -1)); } for (const InstantiatedComboBox &ic : bank_combo_boxes) { ic.combo_box->setCurrentIndex(get_bank(mapping_proto, ic.field_number, -1) + 1); @@ -431,28 +446,32 @@ void MIDIMappingDialog::fill_controls_from_mapping(const MIDIMappingProto &mappi void MIDIMappingDialog::controller_changed(unsigned controller) { - for (const InstantiatedSpinner &is : controller_spinners) { - if (is.spinner->hasFocus()) { - is.spinner->setValue(controller); - is.spinner->selectAll(); + post_to_main_thread([=]{ + for (const InstantiatedSpinner &is : controller_spinners) { + if (is.spinner->hasFocus()) { + is.spinner->setValue(controller); + is.spinner->selectAll(); + } } - } + }); } void MIDIMappingDialog::note_on(unsigned note) { - for (const InstantiatedSpinner &is : button_spinners) { - if (is.spinner->hasFocus()) { - is.spinner->setValue(note); - is.spinner->selectAll(); + post_to_main_thread([=]{ + for (const InstantiatedSpinner &is : button_spinners) { + if (is.spinner->hasFocus()) { + is.spinner->setValue(note); + is.spinner->selectAll(); + } } - } - for (const InstantiatedSpinner &is : light_spinners) { - if (is.spinner->hasFocus()) { - is.spinner->setValue(note); - is.spinner->selectAll(); + for (const InstantiatedSpinner &is : light_spinners) { + if (is.spinner->hasFocus()) { + is.spinner->setValue(note); + is.spinner->selectAll(); + } } - } + }); } pair MIDIMappingDialog::guess_offset(unsigned bus_idx, MIDIMappingDialog::SpinnerGroup spinner_group) @@ -490,8 +509,8 @@ pair MIDIMappingDialog::guess_offset(unsigned bus_idx, MIDIMappingDial spinner_group != this_spinner_group) { continue; } - if (spinner->value() == 0) { - if (source_spinner->value() != 0) { + if (spinner->value() == -1) { + if (source_spinner->value() != -1) { // If the source value is e.g. 3, offset can't be less than -2 or larger than 124. // Otherwise, we'd extrapolate values outside [1..127]. minimum_allowed_offset = max(minimum_allowed_offset, 1 - source_spinner->value()); @@ -499,7 +518,7 @@ pair MIDIMappingDialog::guess_offset(unsigned bus_idx, MIDIMappingDial } continue; } - if (source_spinner->value() == 0) { + if (source_spinner->value() == -1) { // The bus has a controller set that the source bus doesn't set. return not_found; } @@ -534,7 +553,7 @@ bool MIDIMappingDialog::bus_is_empty(unsigned bus_idx, SpinnerGroup spinner_grou spinner_group != this_spinner_group) { continue; } - if (spinner->value() != 0) { + if (spinner->value() != -1) { return false; } }