int main( const int argc, char** argv) { if (decodeCommandLine(argc, argv)) { if (ensureEncodingSet()) { if (readXmlDatabase()) { while (handleRequest()) ; /* EMPTY */ } } } return _exitStatus; }
QtWindow::QtWindow() { QCoreApplication::setOrganizationName("Instrument-Trainer"); QCoreApplication::setOrganizationDomain("github.com/joshelser/Instrument-Trainer"); QCoreApplication::setApplicationName("Instrument Trainer"); m_settings = new CSettings(this); setWindowIcon(QIcon(":/images/Logo32x32.png")); setWindowTitle(tr("Instrument Trainer")); decodeCommandLine(); if (Cfg::experimentalSwapInterval != -1) { QGLFormat fmt; fmt.setSwapInterval(Cfg::experimentalSwapInterval); int value = fmt.swapInterval(); ppLogInfo("Open GL Swap Interval %d", value); QGLFormat::setDefaultFormat(fmt); } #if USE_REALTIME_PRIORITY int rt_prio = sched_get_priority_max(SCHED_FIFO); set_realtime_priority(SCHED_FIFO, rt_prio); #endif m_glWidget = new CGLView(this, m_settings); m_song = m_glWidget->getSongObject(); m_score = m_glWidget->getScoreObject(); QHBoxLayout *mainLayout = new QHBoxLayout; QVBoxLayout *columnLayout = new QVBoxLayout; m_sidePanel = new GuiSidePanel(this, m_settings); m_topBar = new GuiTopBar(this, m_settings); m_settings->init(m_song, m_sidePanel, m_topBar); mainLayout->addWidget(m_sidePanel); columnLayout->addWidget(m_topBar); columnLayout->addWidget(m_glWidget); mainLayout->addLayout(columnLayout); m_song->init(m_score, m_settings); m_glWidget->init(); m_sidePanel->init(m_song, m_song->getTrackList(), m_topBar); m_topBar->init(m_song, m_song->getTrackList()); createActions(); createMenus(); readSettings(); QWidget *centralWin = new QWidget(); centralWin->setLayout(mainLayout); setCentralWidget(centralWin); m_glWidget->setFocus(Qt::ActiveWindowFocusReason); m_song->setPianoSoundPatches(m_settings->value("Keyboard/RightSound", Cfg::defaultRightPatch()).toInt() - 1, m_settings->value("Keyboard/WrongSound", Cfg::defaultWrongPatch()).toInt() - 1, true); QString midiInputName = m_settings->value("Midi/Input").toString(); if (midiInputName.startsWith("None")) CChord::setPianoRange(PC_KEY_LOWEST_NOTE, PC_KEY_HIGHEST_NOTE); else CChord::setPianoRange(m_settings->value("Keyboard/LowestNote", 0).toInt(), m_settings->value("Keyboard/HighestNote", 127).toInt()); m_song->setLatencyFix(m_settings->value("Midi/Latency", 0).toInt()); #ifdef _WIN32 m_glWidget->m_cfg_openGlOptimise = true; // don't default to true on windows #else m_glWidget->m_cfg_openGlOptimise = true; // changed to default to false on platforms #endif m_glWidget->m_cfg_openGlOptimise = m_settings->value("Display/OpenGlOptimise", m_glWidget->m_cfg_openGlOptimise ).toBool(); m_song->cfg_timingMarkersFlag = m_settings->value("Score/TimingMarkers", m_song->cfg_timingMarkersFlag ).toBool(); m_song->cfg_stopPointMode = static_cast<stopPointMode_t> (m_settings->value("Score/StopPointMode", m_song->cfg_stopPointMode ).toInt()); m_song->openMidiPort(CMidiDevice::MIDI_INPUT, midiInputName); m_song->openMidiPort(CMidiDevice::MIDI_OUTPUT,m_settings->value("midi/output").toString()); m_settings->loadSettings(); show(); }