Rework tools page

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
This commit is contained in:
TheKodeToad 2025-03-23 13:04:14 +00:00
parent 411161fe49
commit 8852b5823b
No known key found for this signature in database
GPG key ID: 5E39D70B4C93C38E
6 changed files with 247 additions and 174 deletions

View file

@ -24,7 +24,7 @@ JVisualVM::JVisualVM(SettingsObjectPtr settings, InstancePtr instance, QObject*
void JVisualVM::profilerStarted()
{
emit readyToLaunch(tr("JVisualVM started"));
emit readyToLaunch(tr("VisualVM started"));
}
void JVisualVM::profilerFinished([[maybe_unused]] int exit, QProcess::ExitStatus status)
@ -82,7 +82,7 @@ bool JVisualVMFactory::check(const QString& path, QString* error)
}
QFileInfo finfo(path);
if (!finfo.isExecutable() || !finfo.fileName().contains("visualvm")) {
*error = QObject::tr("Invalid path to JVisualVM");
*error = QObject::tr("Invalid path to VisualVM");
return false;
}
return true;

View file

@ -4,7 +4,7 @@
class JVisualVMFactory : public BaseProfilerFactory {
public:
QString name() const override { return "JVisualVM"; }
QString name() const override { return "VisualVM"; }
void registerSettings(SettingsObjectPtr settings) override;
BaseExternalTool* createTool(InstancePtr instance, QObject* parent = 0) override;
bool check(QString* error) override;

View file

@ -50,7 +50,6 @@
ExternalToolsPage::ExternalToolsPage(QWidget* parent) : QWidget(parent), ui(new Ui::ExternalToolsPage)
{
ui->setupUi(this);
ui->tabWidget->tabBar()->hide();
ui->jsonEditorTextBox->setClearButtonEnabled(true);
@ -128,13 +127,13 @@ void ExternalToolsPage::on_jvisualvmPathBtn_clicked()
QString raw_dir = ui->jvisualvmPathEdit->text();
QString error;
do {
raw_dir = QFileDialog::getOpenFileName(this, tr("JVisualVM Executable"), raw_dir);
raw_dir = QFileDialog::getOpenFileName(this, tr("VisualVM Executable"), raw_dir);
if (raw_dir.isEmpty()) {
break;
}
QString cooked_dir = FS::NormalizePath(raw_dir);
if (!APPLICATION->profilers()["jvisualvm"]->check(cooked_dir, &error)) {
QMessageBox::critical(this, tr("Error"), tr("Error while checking JVisualVM install:\n%1").arg(error));
QMessageBox::critical(this, tr("Error"), tr("Error while checking VisualVM install:\n%1").arg(error));
continue;
} else {
ui->jvisualvmPathEdit->setText(cooked_dir);
@ -146,9 +145,9 @@ void ExternalToolsPage::on_jvisualvmCheckBtn_clicked()
{
QString error;
if (!APPLICATION->profilers()["jvisualvm"]->check(ui->jvisualvmPathEdit->text(), &error)) {
QMessageBox::critical(this, tr("Error"), tr("Error while checking JVisualVM install:\n%1").arg(error));
QMessageBox::critical(this, tr("Error"), tr("Error while checking VisualVM install:\n%1").arg(error));
} else {
QMessageBox::information(this, tr("OK"), tr("JVisualVM setup seems to be OK"));
QMessageBox::information(this, tr("OK"), tr("VisualVM setup seems to be OK"));
}
}
@ -187,7 +186,7 @@ void ExternalToolsPage::on_mceditCheckBtn_clicked()
void ExternalToolsPage::on_jsonEditorBrowseBtn_clicked()
{
QString raw_file = QFileDialog::getOpenFileName(this, tr("JSON Editor"),
QString raw_file = QFileDialog::getOpenFileName(this, tr("Text Editor"),
ui->jsonEditorTextBox->text().isEmpty()
#if defined(Q_OS_LINUX)
? QString("/usr/bin")

View file

@ -51,7 +51,7 @@ class ExternalToolsPage : public QWidget, public BasePage {
explicit ExternalToolsPage(QWidget* parent = 0);
~ExternalToolsPage();
QString displayName() const override { return tr("External Tools"); }
QString displayName() const override { return tr("Tools"); }
QIcon icon() const override
{
auto icon = APPLICATION->getThemedIcon("externaltools");

View file

@ -7,45 +7,48 @@
<x>0</x>
<y>0</y>
<width>673</width>
<height>751</height>
<height>823</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
<widget class="QScrollArea" name="scrollArea">
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string notr="true">Tab 1</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<widget class="QWidget" name="scrollAreaWidgetContents_2">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>653</width>
<height>803</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QGroupBox" name="groupBox_2">
<widget class="QGroupBox" name="editorsBox">
<property name="title">
<string notr="true">J&amp;Profiler</string>
<string>&amp;Editors</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_10">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<widget class="QLabel" name="label_3">
<property name="text">
<string>&amp;Text Editor</string>
</property>
<property name="buddy">
<cstring>jsonEditorTextBox</cstring>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLineEdit" name="jprofilerPathEdit"/>
<widget class="QLineEdit" name="jsonEditorTextBox"/>
</item>
<item>
<widget class="QPushButton" name="jprofilerPathBtn">
<widget class="QPushButton" name="jsonEditorBrowseBtn">
<property name="text">
<string>Browse</string>
</property>
@ -54,70 +57,50 @@
</layout>
</item>
<item>
<widget class="QPushButton" name="jprofilerCheckBtn">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Check</string>
<string>Used to edit component JSON files.</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="jprofilerLink">
<spacer name="verticalSpacer_7">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>6</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="mceditLabel">
<property name="text">
<string notr="true">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;a href=&quot;https://www.ej-technologies.com/products/jprofiler/overview.html&quot;&gt;https://www.ej-technologies.com/products/jprofiler/overview.html&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&amp;MCEdit</string>
</property>
<property name="buddy">
<cstring>mceditPathEdit</cstring>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string notr="true">J&amp;VisualVM</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>Browse</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QPushButton" name="jvisualvmCheckBtn">
<property name="text">
<string>Check</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="jvisualvmLink">
<property name="text">
<string notr="true">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;a href=&quot;https://visualvm.github.io/&quot;&gt;https://visualvm.github.io/&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_4">
<property name="title">
<string notr="true">&amp;MCEdit</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_12">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<widget class="QLineEdit" name="mceditPathEdit"/>
</item>
<item>
<widget class="QPushButton" name="mceditCheckBtn">
<property name="text">
<string>Check</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mceditPathBtn">
<property name="text">
@ -127,17 +110,10 @@
</item>
</layout>
</item>
<item>
<widget class="QPushButton" name="mceditCheckBtn">
<property name="text">
<string>Check</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="mceditLink">
<property name="text">
<string notr="true">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;a href=&quot;https://www.mcedit.net/&quot;&gt;https://www.mcedit.net/&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string notr="true">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;a href=&quot;https://www.mcedit.net/&quot;&gt;MCEdit Website&lt;/a&gt; - Used as world editor in the instance Worlds menu.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
@ -145,28 +121,126 @@
</widget>
</item>
<item>
<widget class="QGroupBox" name="editorsBox">
<widget class="QGroupBox" name="profilersBox">
<property name="title">
<string>External Editors (leave empty for system default)</string>
<string>&amp;Profilers</string>
</property>
<layout class="QGridLayout" name="foldersBoxLayout_2">
<item row="0" column="1">
<widget class="QLineEdit" name="jsonEditorTextBox"/>
</item>
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QLabel" name="labelJsonEditor">
<property name="text">
<string>&amp;Text Editor:</string>
<string>Profilers are accessible through the Launch dropdown menu.</string>
</property>
<property name="buddy">
<cstring>jsonEditorTextBox</cstring>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QToolButton" name="jsonEditorBrowseBtn">
<item>
<spacer name="verticalSpacer_9">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>6</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Browse</string>
<string>J&amp;Profiler</string>
</property>
<property name="buddy">
<cstring>jprofilerPathEdit</cstring>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLineEdit" name="jprofilerPathEdit"/>
</item>
<item>
<widget class="QPushButton" name="jprofilerCheckBtn">
<property name="text">
<string>Check</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="jprofilerPathBtn">
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="jprofilerLink">
<property name="text">
<string notr="true">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;a href=&quot;https://www.ej-technologies.com/products/jprofiler/overview.html&quot;&gt;JProfiler Website&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_8">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>6</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>&amp;VisualVM</string>
</property>
<property name="buddy">
<cstring>jvisualvmPathEdit</cstring>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLineEdit" name="jvisualvmPathEdit"/>
</item>
<item>
<widget class="QPushButton" name="jvisualvmCheckBtn">
<property name="text">
<string>Check</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="jvisualvmPathBtn">
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="jvisualvmLink">
<property name="text">
<string notr="true">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;a href=&quot;https://visualvm.github.io/&quot;&gt;VisualVM Website&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
@ -180,8 +254,8 @@
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>216</height>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>

View file

@ -167,46 +167,13 @@
<string>Folders</string>
</property>
<layout class="QGridLayout" name="foldersBoxLayout">
<item row="1" column="0">
<widget class="QLabel" name="labelModsDir">
<item row="3" column="0">
<widget class="QLabel" name="labelJavaDir">
<property name="text">
<string>&amp;Mods</string>
<string>&amp;Java</string>
</property>
<property name="buddy">
<cstring>modsDirTextBox</cstring>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QLineEdit" name="downloadsDirTextBox"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="labelIconsDir">
<property name="text">
<string>&amp;Icons</string>
</property>
<property name="buddy">
<cstring>iconsDirTextBox</cstring>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="labelDownloadsDir">
<property name="text">
<string>&amp;Downloads</string>
</property>
<property name="buddy">
<cstring>downloadsDirTextBox</cstring>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="labelSkinsDir">
<property name="text">
<string>&amp;Skins</string>
</property>
<property name="buddy">
<cstring>skinsDirTextBox</cstring>
<cstring>javaDirTextBox</cstring>
</property>
</widget>
</item>
@ -220,40 +187,84 @@
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="skinsDirTextBox"/>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="instDirTextBox"/>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="iconsDirTextBox"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="labelJavaDir">
<item row="8" column="0">
<widget class="QLabel" name="labelDownloadsDir">
<property name="text">
<string>&amp;Java</string>
<string>&amp;Downloads</string>
</property>
<property name="buddy">
<cstring>javaDirTextBox</cstring>
<cstring>downloadsDirTextBox</cstring>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="labelIconsDir">
<property name="text">
<string>&amp;Icons</string>
</property>
<property name="buddy">
<cstring>iconsDirTextBox</cstring>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="skinsDirTextBox"/>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="modsDirBrowseBtn">
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="javaDirTextBox"/>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="modsDirTextBox"/>
<item row="8" column="1">
<widget class="QLineEdit" name="downloadsDirTextBox"/>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="instDirBrowseBtn">
<item row="8" column="2">
<widget class="QPushButton" name="downloadsDirBrowseBtn">
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="modsDirBrowseBtn">
<item row="1" column="1">
<widget class="QLineEdit" name="modsDirTextBox"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="labelModsDir">
<property name="text">
<string>&amp;Mods</string>
</property>
<property name="buddy">
<cstring>modsDirTextBox</cstring>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QPushButton" name="javaDirBrowseBtn">
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="labelSkinsDir">
<property name="text">
<string>&amp;Skins</string>
</property>
<property name="buddy">
<cstring>skinsDirTextBox</cstring>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="instDirBrowseBtn">
<property name="text">
<string>Browse</string>
</property>
@ -266,13 +277,6 @@
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QPushButton" name="javaDirBrowseBtn">
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QPushButton" name="skinsDirBrowseBtn">
<property name="text">
@ -280,12 +284,8 @@
</property>
</widget>
</item>
<item row="8" column="2">
<widget class="QPushButton" name="downloadsDirBrowseBtn">
<property name="text">
<string>Browse</string>
</property>
</widget>
<item row="0" column="1">
<widget class="QLineEdit" name="instDirTextBox"/>
</item>
</layout>
</widget>