73 QString nameFromPorts()
const;
76 void applyAutoName(
const QString& name);
78 static QString defaultName();
82 void refreshAutoName();
85 void populateDeviceMaps();
86 QString selectedMap()
const;
89 QString chosenMap()
const;
93 QString genericLabel(
const QString& identity)
const;
97 void addChosenDevice(
const QString& identity,
int channel,
bool level =
true);
101 int freeChannel()
const;
104 void updateAddEnabled();
107 void updatePreview();
108 static QTreeWidgetItem* childNamed(QTreeWidgetItem* parent,
const QString& name);
109 QTreeWidgetItem* topNamed(
const QString& name);
110 static QString uniqueChild(QTreeWidgetItem* parent,
const QString& name);
111 void selectMap(
const QString& identity);
112 void updateDeviceMapSummary();
115 void addInput(
const libremidi::input_port& p);
116 void addOutput(
const libremidi::output_port& p);
119 template <
typename Port>
121 removePort(QComboBox& combo,
const std::vector<Port>& ports,
const Port& gone);
125 QComboBox* m_midiin{};
126 QComboBox* m_midiout{};
129 QWidget* m_instrumentBox{};
130 QLineEdit* m_search{};
131 QTreeView* m_instruments{};
132 QStandardItemModel* m_instrumentModel{};
133 QSortFilterProxyModel* m_instrumentFilter{};
134 QTreeWidget* m_chosen{};
137 QTreeWidget* m_preview{};
150 bool m_listEmptied{};
152 QPushButton* m_add{};
160 libremidi::API m_api{};
164 bool m_portsResolved{};
166 std::unique_ptr<libremidi::observer> m_observer{};
168 std::vector<libremidi::input_port> m_ins;
169 std::vector<libremidi::output_port> m_outs;