1 //========================================================= 2 // MusE 3 // Linux Music Editor 4 // $Id: ./muse/widgets/aboutbox_impl.cpp $ 5 // 6 // Copyright (C) 1999-2011 by Werner Schweer and others 7 // 8 // This program is free software; you can redistribute it and/or 9 // modify it under the terms of the GNU General Public License 10 // as published by the Free Software Foundation; version 2 of 11 // the License, or (at your option) any later version. 12 // 13 // This program is distributed in the hope that it will be useful, 14 // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 // GNU General Public License for more details. 17 // 18 // You should have received a copy of the GNU General Public License 19 // along with this program; if not, write to the Free Software 20 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 21 // 22 //========================================================= 23 #include "aboutbox_impl.h" 24 #include "config.h" 25 #include "icons.h" 26 #include "globals.h" 27 #include "audio.h" 28 #include "midiseq.h" 29 #include "audiodev.h" 30 #ifdef HAVE_RTAUDIO 31 #include "driver/rtaudio.h" 32 #endif 33 34 35 namespace MusEGui { 36 AboutBoxImpl()37AboutBoxImpl::AboutBoxImpl() 38 { 39 setupUi(this); 40 41 imageLabel->setPixmap(*aboutMuseImage); 42 43 QString version(VERSION); 44 QString gitstring(GITSTRING); 45 46 QString verStr("Version: " + version); 47 if (!qEnvironmentVariableIsEmpty("APPDIR")) 48 verStr += " (AppImage)"; 49 if (!gitstring.isEmpty()) 50 verStr += "\ngit: " + gitstring; 51 52 versionLabel->setText(verStr); 53 54 /* System info tab */ 55 internalDebugInformation->append("\n*** Build info ***"); 56 57 if (!gitstring.isEmpty()) { 58 QStringList sl = gitstring.split(" | "); 59 internalDebugInformation->append(QString("Branch:\t\t%1").arg(sl.at(0))); 60 internalDebugInformation->append(QString("Tag:\t\t%1").arg(sl.at(1))); 61 internalDebugInformation->append(QString("Commit timestamp:\t%1").arg(sl.at(2))); 62 } 63 64 #ifdef LV2_SUPPORT 65 internalDebugInformation->append("LV2 support:\t\tEnabled"); 66 #endif 67 #ifdef DSSI_SUPPORT 68 internalDebugInformation->append("DSSI support:\t\tEnabled"); 69 #endif 70 #ifdef VST_NATIVE_SUPPORT 71 #ifdef VST_VESTIGE_SUPPORT 72 internalDebugInformation->append("Native VST support:\tEnabled (using VESTIGE compatibility layer)"); 73 #else 74 internalDebugInformation->append("Native VST support:\tEnabled (using Steinberg VSTSDK)"); 75 #endif 76 #endif 77 78 internalDebugInformation->append("\n*** Runtime information ***"); 79 internalDebugInformation->append(QString("Running audio driver:\t%1").arg(MusEGlobal::audioDevice->driverName())); 80 81 #ifdef HAVE_RTAUDIO 82 if (MusEGlobal::audioDevice->deviceType() == MusECore::AudioDevice::RTAUDIO_AUDIO) { 83 internalDebugInformation->append(QString("RT audio driver:\t%1").arg(((MusECore::RtAudioDevice*)MusEGlobal::audioDevice)->driverBackendName())); 84 } 85 #endif 86 internalDebugInformation->append(QString("Sample rate:\t\t%1").arg(MusEGlobal::sampleRate)); 87 internalDebugInformation->append(QString("Segment size:\t%1").arg(MusEGlobal::segmentSize)); 88 internalDebugInformation->append(QString("Segment count:\t%1").arg(MusEGlobal::segmentCount)); 89 90 internalDebugInformation->append("\n*** Timer ***"); 91 if ((MusEGlobal::midiSeq)) { 92 internalDebugInformation->append(QString("Type:\t\t%1").arg(MusEGlobal::midiSeq->getTimer()->getTimerName())); 93 internalDebugInformation->append(QString("Frequency:\t\t%1").arg(MusEGlobal::midiSeq->getTimer()->getTimerFreq())); 94 } else { 95 internalDebugInformation->append("No timer information available as midiSeq is not instantiated."); 96 } 97 98 internalDebugInformation->append("\n*** Miscellaneous ***"); 99 internalDebugInformation->append(QString("debugMode:\t\t%1").arg(MusEGlobal::debugMode?"true":"false")); 100 internalDebugInformation->append(QString("midInputTrace:\t%1").arg(MusEGlobal::midiInputTrace?"true":"false")); 101 internalDebugInformation->append(QString("midiOutputTrace:\t%1").arg(MusEGlobal::midiOutputTrace?"true":"false")); 102 internalDebugInformation->append(QString("unityWorkaround:\t%1").arg(MusEGlobal::unityWorkaround?"true":"false")); 103 internalDebugInformation->append(QString("debugMsg:\t\t%1").arg(MusEGlobal::debugMsg?"true":"false")); 104 internalDebugInformation->append(QString("heavyDebugMsg:\t%1").arg(MusEGlobal::heavyDebugMsg?"true":"false")); 105 internalDebugInformation->append(QString("debugSync:\t\t%1").arg(MusEGlobal::debugSync?"true":"false")); 106 internalDebugInformation->append(QString("loadPlugins:\t\t%1").arg(MusEGlobal::loadPlugins?"true":"false")); 107 internalDebugInformation->append(QString("loadMESS:\t\t%1").arg(MusEGlobal::loadMESS?"true":"false")); 108 internalDebugInformation->append(QString("loadVST:\t\t%1").arg(MusEGlobal::loadVST?"true":"false")); 109 internalDebugInformation->append(QString("loadNativeVST:\t%1").arg(MusEGlobal::loadNativeVST?"true":"false")); 110 internalDebugInformation->append(QString("loadDSSI:\t\t%1").arg(MusEGlobal::loadDSSI?"true":"false")); 111 internalDebugInformation->append(QString("usePythonBridge:\t%1").arg(MusEGlobal::usePythonBridge?"true":"false")); 112 113 internalDebugInformation->append(QString("useLASH:\t\t%1").arg(MusEGlobal::useLASH?"true":"false")); 114 internalDebugInformation->append(QString("loadLV2:\t\t%1").arg(MusEGlobal::loadLV2?"true":"false")); 115 internalDebugInformation->append(QString("useAlsaWithJack:\t%1").arg(MusEGlobal::useAlsaWithJack?"true":"false")); 116 internalDebugInformation->append(QString("noAutoStartJack:\t%1").arg(MusEGlobal::noAutoStartJack?"true":"false")); 117 internalDebugInformation->append(QString("populateMidiPortsOnStart:\t%1").arg(MusEGlobal::populateMidiPortsOnStart?"true":"false")); 118 internalDebugInformation->append(QString("realtimeScheduling:\t%1").arg(MusEGlobal::realTimeScheduling?"true":"false")); 119 internalDebugInformation->append(QString("midiRTPrioOverride:\t%1").arg(MusEGlobal::midiRTPrioOverride?"true":"false")); 120 internalDebugInformation->append(QString("realtimePriority:\t%1").arg(MusEGlobal::realTimePriority)); 121 122 internalDebugInformation->append(QString("midiSeqRunning:\t%1").arg(MusEGlobal::midiSeqRunning?"true":"false")); 123 internalDebugInformation->append(QString("automation:\t\t%1").arg(MusEGlobal::automation?"true":"false")); 124 125 QTextCursor cursor = internalDebugInformation->textCursor(); 126 cursor.setPosition(0); 127 internalDebugInformation->setTextCursor(cursor); 128 } 129 130 } 131