Entropy Piano Tuner  1.1.3 (documentation not yet complete)
An open-source experimental software for piano tuning by entropy minimization
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
optionspageaudiomidipage.cpp
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright 2015 Haye Hinrichsen, Christoph Wick
3  *
4  * This file is part of Entropy Piano Tuner.
5  *
6  * Entropy Piano Tuner is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by the
8  * Free Software Foundation, either version 3 of the License, or (at your
9  * option) any later version.
10  *
11  * Entropy Piano Tuner is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14  * more details.
15  *
16  * You should have received a copy of the GNU General Public License along with
17  * Entropy Piano Tuner. If not, see http://www.gnu.org/licenses/.
18  *****************************************************************************/
19 
21 #include <QGridLayout>
22 #include <QLabel>
23 
24 namespace options {
25 
27  : mMidiInterface(midiInterface) {
28  QGridLayout *inputLayout = new QGridLayout;
29  this->setLayout(inputLayout);
30 
31  inputLayout->setColumnStretch(1, 1);
32 
33  inputLayout->addWidget(new QLabel(tr("Midi device")), 0, 0);
34  inputLayout->addWidget(mDeviceSelection = new QComboBox(), 0, 1);
35 
36  int numberOfPorts = mMidiInterface->GetNumberOfPorts();
37  for (int i = 0; i < numberOfPorts; ++i) {
38  mDeviceSelection->addItem(QString::fromStdString(mMidiInterface->GetPortName(i)), QVariant::fromValue(i));
39  }
40 
41 
42  inputLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding), 20, 0);
43 
44  if (numberOfPorts == 0) {
45  this->setDisabled(true);
46  }
47  mDeviceSelection->setCurrentIndex(mMidiInterface->getCurrentPort());
48 
49  // notify if changes are made
50  QObject::connect(mDeviceSelection, SIGNAL(currentIndexChanged(int)), optionsDialog, SLOT(onChangesMade()));
51 }
52 
54  if (mDeviceSelection->currentIndex() >= 0) {
55  int midiPort = mDeviceSelection->currentData().toInt();
56  mMidiInterface->OpenPort(midiPort);
57  }
58 }
59 
60 } // namespace midi
PageAudioMidi(OptionsDialog *optionsDialog, MidiAdapter *midiInterface)
virtual std::string GetPortName(int i)=0
Get the name of device number i (starting with zero)
virtual bool OpenPort(int i, std::string AppName="")=0
Open Midi input device number i.
virtual int getCurrentPort() const =0
Get the current port number.
virtual int GetNumberOfPorts()=0
Get the number of available input devices.
Adapter class for reading an externally connected MIDI keyboard.
Definition: midiadapter.h:43