summaryrefslogtreecommitdiffstats
path: root/gui/dialogs
diff options
context:
space:
mode:
authorJan Dalheimer <jan@dalheimer.de>2014-02-15 14:19:35 +0100
committerJan Dalheimer <jan@dalheimer.de>2014-02-15 14:19:35 +0100
commitefa8e26a3f3f7ba5e536cd10e86303b4fe1baba0 (patch)
tree4fcd3e9f210c92dbeac9f820f2ab1fd2d6dd9e58 /gui/dialogs
parent5cf599673db88b39100ffca78e10bbe5e10200d7 (diff)
downloadMultiMC-efa8e26a3f3f7ba5e536cd10e86303b4fe1baba0.tar
MultiMC-efa8e26a3f3f7ba5e536cd10e86303b4fe1baba0.tar.gz
MultiMC-efa8e26a3f3f7ba5e536cd10e86303b4fe1baba0.tar.lz
MultiMC-efa8e26a3f3f7ba5e536cd10e86303b4fe1baba0.tar.xz
MultiMC-efa8e26a3f3f7ba5e536cd10e86303b4fe1baba0.zip
Profiler support. Currently JProfiler and JVisualVM are implemented.
Diffstat (limited to 'gui/dialogs')
-rw-r--r--gui/dialogs/SettingsDialog.cpp85
-rw-r--r--gui/dialogs/SettingsDialog.h5
-rw-r--r--gui/dialogs/SettingsDialog.ui112
3 files changed, 201 insertions, 1 deletions
diff --git a/gui/dialogs/SettingsDialog.cpp b/gui/dialogs/SettingsDialog.cpp
index ef363f02..3039acc1 100644
--- a/gui/dialogs/SettingsDialog.cpp
+++ b/gui/dialogs/SettingsDialog.cpp
@@ -29,6 +29,8 @@
#include "logic/updater/UpdateChecker.h"
+#include "logic/profiler/BaseProfiler.h"
+
#include <settingsobject.h>
#include <pathutils.h>
#include <QFileDialog>
@@ -368,6 +370,22 @@ void SettingsDialog::applySettings(SettingsObject *s)
}
s->set("PostExitCommand", ui->postExitCmdTextBox->text());
+
+ // Profilers
+ s->set("JProfilerPath", ui->jprofilerPathEdit->text());
+ s->set("JVisualVMPath", ui->jvisualvmPathEdit->text());
+ if (ui->profilerNoneBtn->isChecked())
+ {
+ s->set("CurrentProfiler", QString());
+ }
+ else if (ui->jprofilerBtn->isChecked())
+ {
+ s->set("CurrentProfiler", "jprofiler");
+ }
+ else if (ui->jvisualvmBtn->isChecked())
+ {
+ s->set("CurrentProfiler", "jvisualvm");
+ }
}
void SettingsDialog::loadSettings(SettingsObject *s)
@@ -447,6 +465,23 @@ void SettingsDialog::loadSettings(SettingsObject *s)
// Custom Commands
ui->preLaunchCmdTextBox->setText(s->get("PreLaunchCommand").toString());
ui->postExitCmdTextBox->setText(s->get("PostExitCommand").toString());
+
+ // Profilers
+ ui->jprofilerPathEdit->setText(s->get("JProfilerPath").toString());
+ ui->jvisualvmPathEdit->setText(s->get("JVisualVMPath").toString());
+ const QString currentProfiler = s->get("CurrentProfiler").toString();
+ if (currentProfiler.isEmpty())
+ {
+ ui->profilerNoneBtn->setChecked(true);
+ }
+ else if (currentProfiler == "jprofiler")
+ {
+ ui->jprofilerBtn->setChecked(true);
+ }
+ else if (currentProfiler == "jvisualvm")
+ {
+ ui->jvisualvmBtn->setChecked(true);
+ }
}
void SettingsDialog::on_javaDetectBtn_clicked()
@@ -503,3 +538,53 @@ void SettingsDialog::checkFinished(JavaCheckResult result)
"or set the path to the java executable."));
}
}
+
+void SettingsDialog::on_jprofilerPathBtn_clicked()
+{
+ QString raw_dir = QFileDialog::getExistingDirectory(this, tr("JProfiler Directory"),
+ ui->jprofilerPathEdit->text());
+ QString cooked_dir = NormalizePath(raw_dir);
+
+ // do not allow current dir - it's dirty. Do not allow dirs that don't exist
+ if (!cooked_dir.isEmpty() && QDir(cooked_dir).exists())
+ {
+ ui->jprofilerPathEdit->setText(cooked_dir);
+ }
+}
+void SettingsDialog::on_jprofilerCheckBtn_clicked()
+{
+ if (!ui->jprofilerPathEdit->text().isEmpty())
+ {
+ QString error;
+ if (!MMC->profilers()["jprofiler"]->check(ui->jprofilerPathEdit->text(), &error))
+ {
+ QMessageBox::critical(this, tr("Error"),
+ tr("Error while checking JProfiler install:\n%1").arg(error));
+ }
+ }
+}
+
+void SettingsDialog::on_jvisualvmPathBtn_clicked()
+{
+ QString raw_dir = QFileDialog::getOpenFileName(this, tr("JVisualVM Executable"),
+ ui->jvisualvmPathEdit->text());
+ QString cooked_dir = NormalizePath(raw_dir);
+
+ // do not allow current dir - it's dirty. Do not allow dirs that don't exist
+ if (!cooked_dir.isEmpty() && QDir(cooked_dir).exists())
+ {
+ ui->jvisualvmPathEdit->setText(cooked_dir);
+ }
+}
+void SettingsDialog::on_jvisualvmCheckBtn_clicked()
+{
+ if (!ui->jvisualvmPathEdit->text().isEmpty())
+ {
+ QString error;
+ if (!MMC->profilers()["jvisualvm"]->check(ui->jvisualvmPathEdit->text(), &error))
+ {
+ QMessageBox::critical(this, tr("Error"),
+ tr("Error while checking JVisualVM install:\n%1").arg(error));
+ }
+ }
+}
diff --git a/gui/dialogs/SettingsDialog.h b/gui/dialogs/SettingsDialog.h
index d7bbbeb3..60d569f9 100644
--- a/gui/dialogs/SettingsDialog.h
+++ b/gui/dialogs/SettingsDialog.h
@@ -75,6 +75,11 @@ slots:
void checkFinished(JavaCheckResult result);
+ void on_jprofilerPathBtn_clicked();
+ void on_jprofilerCheckBtn_clicked();
+ void on_jvisualvmPathBtn_clicked();
+ void on_jvisualvmCheckBtn_clicked();
+
/*!
* Updates the list of update channels in the combo box.
*/
diff --git a/gui/dialogs/SettingsDialog.ui b/gui/dialogs/SettingsDialog.ui
index 54e7db7a..29cbbcba 100644
--- a/gui/dialogs/SettingsDialog.ui
+++ b/gui/dialogs/SettingsDialog.ui
@@ -863,6 +863,116 @@
</item>
</layout>
</widget>
+ <widget class="QWidget" name="profilingTab">
+ <attribute name="title">
+ <string>Profiling</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="verticalLayout_13">
+ <item>
+ <widget class="QGroupBox" name="groupBox_4">
+ <property name="title">
+ <string>Active profiler</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_12">
+ <item>
+ <widget class="QRadioButton" name="profilerNoneBtn">
+ <property name="text">
+ <string>None</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="jprofilerBtn">
+ <property name="text">
+ <string>JProfiler</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="jvisualvmBtn">
+ <property name="text">
+ <string>JVisualVM</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_2">
+ <property name="title">
+ <string>JProfiler</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_10">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <item>
+ <widget class="QLineEdit" name="jprofilerPathEdit"/>
+ </item>
+ <item>
+ <widget class="QPushButton" name="jprofilerPathBtn">
+ <property name="text">
+ <string>...</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QPushButton" name="jprofilerCheckBtn">
+ <property name="text">
+ <string>Check</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_3">
+ <property name="title">
+ <string>JVisualVM</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_11">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_5">
+ <item>
+ <widget class="QLineEdit" name="jvisualvmPathEdit"/>
+ </item>
+ <item>
+ <widget class="QPushButton" name="jvisualvmPathBtn">
+ <property name="text">
+ <string>...</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QPushButton" name="jvisualvmCheckBtn">
+ <property name="text">
+ <string>Check</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
</widget>
</item>
<item>
@@ -938,7 +1048,7 @@
</connection>
</connections>
<buttongroups>
- <buttongroup name="proxyGroup"/>
<buttongroup name="sortingModeGroup"/>
+ <buttongroup name="proxyGroup"/>
</buttongroups>
</ui>