#include <limits>
#include <string>
-#include "controller_spin_box.h"
+#include "shared/controller_spin_box.h"
#include "midi_mapper.h"
#include "nageru_midi_mapping.pb.h"
+#include "shared/midi_mapper_util.h"
#include "shared/post_to_main_thread.h"
#include "ui_midi_mapping.h"
{ "Auto makeup gain is on", MIDIMappingBusProto::kAutoMakeupGainIsOnFieldNumber, 0 },
};
+vector<MIDIMappingDialog::Control> global_video = {
+ { "Switch video channel", MIDIMappingBusProto::kSwitchVideoChannelFieldNumber, MIDIMappingProto::kSwitchVideoChannelBankFieldNumber },
+ { "Apply transition", MIDIMappingBusProto::kApplyTransitionFieldNumber, MIDIMappingProto::kApplyTransitionBankFieldNumber },
+};
+
+vector<MIDIMappingDialog::Control> main_ui = {
+ { "Previous audio view", MIDIMappingBusProto::kPrevAudioViewFieldNumber, MIDIMappingProto::kPrevAudioViewBankFieldNumber },
+ { "Next audio view", MIDIMappingBusProto::kNextAudioViewFieldNumber, MIDIMappingProto::kNextAudioViewBankFieldNumber },
+ { "Begin new video segment", MIDIMappingBusProto::kBeginNewVideoSegmentFieldNumber, MIDIMappingProto::kBeginNewVideoSegmentBankFieldNumber },
+ { "Exit Nageru", MIDIMappingBusProto::kExitFieldNumber, MIDIMappingProto::kExitBankFieldNumber },
+};
+
namespace {
int get_bank(const MIDIMappingProto &mapping_proto, int bank_field_number, int default_value)
if (bus_idx >= size_t(mapping_proto.bus_mapping_size())) {
return default_value;
}
-
const MIDIMappingBusProto &bus_mapping = mapping_proto.bus_mapping(bus_idx);
- const FieldDescriptor *descriptor = bus_mapping.GetDescriptor()->FindFieldByNumber(field_number);
- const Reflection *bus_reflection = bus_mapping.GetReflection();
- if (!bus_reflection->HasField(bus_mapping, descriptor)) {
- return default_value;
- }
- const MIDIControllerProto &controller_proto =
- static_cast<const MIDIControllerProto &>(bus_reflection->GetMessage(bus_mapping, descriptor));
- return controller_proto.controller_number();
+ return get_controller_mapping_helper(bus_mapping, field_number, default_value);
}
int get_button_mapping(const MIDIMappingProto &mapping_proto, size_t bus_idx, int field_number, int default_value)
}
const MIDIMappingBusProto &bus_mapping = mapping_proto.bus_mapping(bus_idx);
- const FieldDescriptor *descriptor = bus_mapping.GetDescriptor()->FindFieldByNumber(field_number);
- const Reflection *bus_reflection = bus_mapping.GetReflection();
- if (!bus_reflection->HasField(bus_mapping, descriptor)) {
- return default_value;
- }
- const MIDIButtonProto &bus_proto =
- static_cast<const MIDIButtonProto &>(bus_reflection->GetMessage(bus_mapping, descriptor));
- return bus_proto.note_number();
+ return get_button_mapping_helper(bus_mapping, field_number, default_value);
}
int get_light_mapping(const MIDIMappingProto &mapping_proto, size_t bus_idx, int field_number, int default_value)
add_controls("Per-bus controllers", ControlType::CONTROLLER, SpinnerGroup::PER_BUS_CONTROLLERS, mapping_proto, per_bus_controllers);
add_controls("Per-bus buttons", ControlType::BUTTON, SpinnerGroup::PER_BUS_BUTTONS, mapping_proto, per_bus_buttons);
add_controls("Per-bus lights", ControlType::LIGHT, SpinnerGroup::PER_BUS_LIGHTS, mapping_proto, per_bus_lights);
+ add_controls("Video mixing", ControlType::BUTTON, SpinnerGroup::GLOBAL_BUTTONS, mapping_proto, global_video);
add_controls("Global controllers", ControlType::CONTROLLER, SpinnerGroup::GLOBAL_CONTROLLERS, mapping_proto, global_controllers);
add_controls("Global buttons", ControlType::BUTTON, SpinnerGroup::GLOBAL_BUTTONS, mapping_proto, global_buttons);
+ add_controls("Main UI", ControlType::BUTTON, SpinnerGroup::GLOBAL_BUTTONS, mapping_proto, main_ui);
add_controls("Global lights", ControlType::LIGHT, SpinnerGroup::GLOBAL_LIGHTS, mapping_proto, global_lights);
fill_controls_from_mapping(mapping_proto);