1 #ifndef _MIDI_MAPPING_DIALOG_H
2 #define _MIDI_MAPPING_DIALOG_H
9 #include "audio_mixer.h"
13 class MIDIMappingDialog;
17 class MIDIMappingProto;
20 class QTreeWidgetItem;
22 class MIDIMappingDialog : public QDialog
27 MIDIMappingDialog(MIDIMapper *mapper);
30 // For use in midi_mapping_dialog.cpp only.
33 int field_number; // In MIDIMappingBusProto.
34 int bank_field_number; // In MIDIMappingProto.
39 void cancel_clicked();
42 static constexpr unsigned num_buses = 8;
44 void add_bank_selector(QTreeWidgetItem *item, const MIDIMappingProto &mapping_proto, int bank_field_number);
46 enum class ControlType { CONTROLLER, BUTTON };
47 void add_controls(const std::string &heading, ControlType control_type,
48 const MIDIMappingProto &mapping_proto, const std::vector<Control> &controls);
50 std::unique_ptr<MIDIMappingProto> construct_mapping_proto_from_ui();
53 Ui::MIDIMappingDialog *ui;
56 // All controllers actually laid out on the grid (we need to store them
57 // so that we can read its values back into the new protobuf).
58 struct InstantiatedSpinner {
61 int field_number; // In MIDIMappingBusProto.
63 struct InstantiatedComboBox {
65 int field_number; // In MIDIMappingProto.
67 std::vector<InstantiatedSpinner> controller_spinners;
68 std::vector<InstantiatedSpinner> button_spinners;
69 std::vector<InstantiatedComboBox> bank_combo_boxes;
72 #endif // !defined(_MIDI_MAPPING_DIALOG_H)