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()37 AboutBoxImpl::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