File indexing completed on 2024-04-28 04:38:54

0001 /*
0002     SPDX-FileCopyrightText: 2017 Anton Anikin <anton.anikin@htower.ru>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "visualizer.h"
0008 
0009 #include "debug.h"
0010 #include "globalsettings.h"
0011 #include "utils.h"
0012 // KDevPlatform
0013 #include <interfaces/icore.h>
0014 #include <interfaces/iuicontroller.h>
0015 #include <sublime/message.h>
0016 #include <util/path.h>
0017 // KF
0018 #include <KLocalizedString>
0019 // Qt
0020 #include <QFile>
0021 
0022 namespace Heaptrack
0023 {
0024 
0025 Visualizer::Visualizer(const QString& resultsFile, QObject* parent)
0026     : QProcess(parent)
0027     , m_resultsFile(resultsFile)
0028 {
0029     connect(this, &QProcess::errorOccurred,
0030             this, [this](QProcess::ProcessError error) {
0031         QString errorMessage;
0032         if (error == QProcess::FailedToStart) {
0033             errorMessage = i18n("Failed to start Heaptrack visualizer from \"%1\".", program())
0034                            + QLatin1String("\n\n")
0035                            + i18n("Check your settings and install the visualizer if necessary.");
0036         } else {
0037             errorMessage = i18n("Error during Heaptrack visualizer execution:")
0038                            + QLatin1String("\n\n")
0039                            + errorString();
0040         }
0041         auto* message = new Sublime::Message(errorMessage, Sublime::Message::Error);
0042         KDevelop::ICore::self()->uiController()->postMessage(message);
0043     });
0044 
0045     connect(this, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
0046             this, [this]() {
0047                 deleteLater();
0048             });
0049 
0050     setProgram(KDevelop::Path(GlobalSettings::heaptrackGuiExecutable()).toLocalFile());
0051     setArguments({ resultsFile });
0052 }
0053 
0054 Visualizer::~Visualizer()
0055 {
0056     QFile::remove(m_resultsFile);
0057 }
0058 
0059 }
0060 
0061 #include "moc_visualizer.cpp"