Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fix_duplicate_mod
@ -1,4 +1,5 @@
|
|||||||
Checks:
|
Checks:
|
||||||
- modernize-use-using
|
- modernize-use-using
|
||||||
|
- readability-avoid-const-params-in-decls
|
||||||
|
|
||||||
SystemHeaders: false
|
SystemHeaders: false
|
||||||
|
2
.github/workflows/backport.yml
vendored
@ -24,7 +24,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
- name: Create backport PRs
|
- name: Create backport PRs
|
||||||
uses: korthout/backport-action@v1.4.0
|
uses: korthout/backport-action@v2.1.1
|
||||||
with:
|
with:
|
||||||
# Config README: https://github.com/korthout/backport-action#backport-action
|
# Config README: https://github.com/korthout/backport-action#backport-action
|
||||||
pull_description: |-
|
pull_description: |-
|
||||||
|
2
.github/workflows/build.yml
vendored
@ -594,7 +594,7 @@ jobs:
|
|||||||
flatpak:
|
flatpak:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container:
|
container:
|
||||||
image: bilelmoussaoui/flatpak-github-actions:kde-5.15-22.08
|
image: bilelmoussaoui/flatpak-github-actions:kde-5.15-23.08
|
||||||
options: --privileged
|
options: --privileged
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
|
11
README.md
@ -18,11 +18,18 @@
|
|||||||
</a>
|
</a>
|
||||||
|
|
||||||
- All downloads and instructions for Prism Launcher can be found on our [Website](https://prismlauncher.org/download).
|
- All downloads and instructions for Prism Launcher can be found on our [Website](https://prismlauncher.org/download).
|
||||||
- Last build status can be found in the [GitHub Actions](https://github.com/PrismLauncher/PrismLauncher/actions).
|
- Last build status can be found in the [GitHub Actions](https://github.com/PrismLauncher/PrismLauncher/actions) tab (this also includes the pull requests status).
|
||||||
|
|
||||||
### Development Builds
|
### Development Builds
|
||||||
|
|
||||||
There are development builds available [here](https://github.com/PrismLauncher/PrismLauncher/actions). These have debug information in the binaries, so their file sizes are relatively larger.
|
Please understand that these builds are not intended for most users. There may be bugs, and other instabilities. You have been warned.
|
||||||
|
|
||||||
|
There are development builds available through:
|
||||||
|
|
||||||
|
- [GitHub Actions](https://github.com/PrismLauncher/PrismLauncher/actions) (includes builds from pull requests opened by contribuitors)
|
||||||
|
- [nightly.link](https://nightly.link/PrismLauncher/PrismLauncher/workflows/trigger_builds/develop) (this will always point only to the latest version of develop)
|
||||||
|
|
||||||
|
These have debug information in the binaries, so their file sizes are relatively larger.
|
||||||
|
|
||||||
Prebuilt Development builds are provided for **Linux**, **Windows** and **macOS**.
|
Prebuilt Development builds are provided for **Linux**, **Windows** and **macOS**.
|
||||||
|
|
||||||
|
@ -68,6 +68,8 @@ function(
|
|||||||
/w14906 # string literal cast to 'LPWSTR'
|
/w14906 # string literal cast to 'LPWSTR'
|
||||||
/w14928 # illegal copy-initialization; more than one user-defined conversion has been implicitly applied
|
/w14928 # illegal copy-initialization; more than one user-defined conversion has been implicitly applied
|
||||||
/permissive- # standards conformance mode for MSVC compiler.
|
/permissive- # standards conformance mode for MSVC compiler.
|
||||||
|
|
||||||
|
/we4062 # forbid omitting a possible value of an enum in a switch statement
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -93,6 +95,8 @@ function(
|
|||||||
# in a lot of noise. This warning is only notifying us that clang is emulating the GCC behaviour
|
# in a lot of noise. This warning is only notifying us that clang is emulating the GCC behaviour
|
||||||
# instead of the exact standard wording so we can safely ignore it
|
# instead of the exact standard wording so we can safely ignore it
|
||||||
-Wno-gnu-zero-variadic-macro-arguments
|
-Wno-gnu-zero-variadic-macro-arguments
|
||||||
|
|
||||||
|
-Werror=switch # forbid omitting a possible value of an enum in a switch statement
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -104,6 +108,8 @@ function(
|
|||||||
-Wduplicated-branches # warn if if / else branches have duplicated code
|
-Wduplicated-branches # warn if if / else branches have duplicated code
|
||||||
-Wlogical-op # warn about logical operations being used where bitwise were probably wanted
|
-Wlogical-op # warn about logical operations being used where bitwise were probably wanted
|
||||||
-Wuseless-cast # warn if you perform a cast to the same type
|
-Wuseless-cast # warn if you perform a cast to the same type
|
||||||
|
|
||||||
|
-Werror=switch # forbid omitting a possible value of an enum in a switch statement
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -128,6 +134,8 @@ function(
|
|||||||
-Woverloaded-virtual
|
-Woverloaded-virtual
|
||||||
-Wuseless-cast
|
-Wuseless-cast
|
||||||
-Wextra-semi
|
-Wextra-semi
|
||||||
|
|
||||||
|
-Werror=switch # forbid omitting a possible value of an enum in a switch statement
|
||||||
)
|
)
|
||||||
|
|
||||||
target_compile_options(
|
target_compile_options(
|
||||||
|
30
flake.lock
generated
@ -21,11 +21,11 @@
|
|||||||
"nixpkgs-lib": "nixpkgs-lib"
|
"nixpkgs-lib": "nixpkgs-lib"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1696343447,
|
"lastModified": 1698882062,
|
||||||
"narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=",
|
"narHash": "sha256-HkhafUayIqxXyHH1X8d9RDl1M2CkFgZLjKD3MzabiEo=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4",
|
"rev": "8c9fa2545007b49a5db5f650ae91f227672c3877",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -76,11 +76,11 @@
|
|||||||
"libnbtplusplus": {
|
"libnbtplusplus": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1690036783,
|
"lastModified": 1699286814,
|
||||||
"narHash": "sha256-A5kTgICnx+Qdq3Fir/bKTfdTt/T1NQP2SC+nhN1ENug=",
|
"narHash": "sha256-yy0q+bky80LtK1GWzz7qpM+aAGrOqLuewbid8WT1ilk=",
|
||||||
"owner": "PrismLauncher",
|
"owner": "PrismLauncher",
|
||||||
"repo": "libnbtplusplus",
|
"repo": "libnbtplusplus",
|
||||||
"rev": "a5e8fd52b8bf4ab5d5bcc042b2a247867589985f",
|
"rev": "23b955121b8217c1c348a9ed2483167a6f3ff4ad",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -106,11 +106,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1697886341,
|
"lastModified": 1700108881,
|
||||||
"narHash": "sha256-AdE67xPty9M9wn36nPVp6aDntIdigrs7UbyaGv1VAaM=",
|
"narHash": "sha256-+Lqybl8kj0+nD/IlAWPPG/RDTa47gff9nbei0u7BntE=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "44881e03af1c730cbb1d72a4d41274a2c957813a",
|
"rev": "7414e9ee0b3e9903c24d3379f577a417f0aae5f1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -123,11 +123,11 @@
|
|||||||
"nixpkgs-lib": {
|
"nixpkgs-lib": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"dir": "lib",
|
"dir": "lib",
|
||||||
"lastModified": 1696019113,
|
"lastModified": 1698611440,
|
||||||
"narHash": "sha256-X3+DKYWJm93DRSdC5M6K5hLqzSya9BjibtBsuARoPco=",
|
"narHash": "sha256-jPjHjrerhYDy3q9+s5EAsuhyhuknNfowY6yt6pjn9pc=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "f5892ddac112a1e9b3612c39af1b72987ee5783a",
|
"rev": "0cbe9f69c234a7700596e943bfae7ef27a31b735",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -153,11 +153,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1697746376,
|
"lastModified": 1700064067,
|
||||||
"narHash": "sha256-gu77VkgdfaHgNCVufeb6WP9oqFLjwK4jHcoPZmBVF3E=",
|
"narHash": "sha256-1ZWNDzhu8UlVCK7+DUN9dVQfiHX1bv6OQP9VxstY/gs=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "pre-commit-hooks.nix",
|
"repo": "pre-commit-hooks.nix",
|
||||||
"rev": "8cc349bfd082da8782b989cad2158c9ad5bd70fd",
|
"rev": "e558068cba67b23b4fbc5537173dbb43748a17e8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
id: org.prismlauncher.PrismLauncher
|
id: org.prismlauncher.PrismLauncher
|
||||||
runtime: org.kde.Platform
|
runtime: org.kde.Platform
|
||||||
runtime-version: "5.15-22.08"
|
runtime-version: "5.15-23.08"
|
||||||
sdk: org.kde.Sdk
|
sdk: org.kde.Sdk
|
||||||
sdk-extensions:
|
sdk-extensions:
|
||||||
- org.freedesktop.Sdk.Extension.openjdk17
|
- org.freedesktop.Sdk.Extension.openjdk17
|
||||||
@ -113,6 +113,9 @@ modules:
|
|||||||
version-query: .tag_name
|
version-query: .tag_name
|
||||||
url-query: .tarball_url
|
url-query: .tarball_url
|
||||||
timestamp-query: .published_at
|
timestamp-query: .published_at
|
||||||
|
# from https://github.com/flathub/net.gaijin.WarThunder/blob/7ea6f7a9f84b9c77150c003a7059dc03f8dcbc7f/gamemode.patch
|
||||||
|
- type: patch
|
||||||
|
path: patches/gamemode.patch
|
||||||
cleanup:
|
cleanup:
|
||||||
- /include
|
- /include
|
||||||
- /lib/pkgconfig
|
- /lib/pkgconfig
|
||||||
|
12
flatpak/patches/gamemode.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -ruN a/common/common-pidfds.c b/common/common-pidfds.c
|
||||||
|
--- a/common/common-pidfds.c 2021-02-18 20:00:12.000000000 +0100
|
||||||
|
+++ b/common/common-pidfds.c 2023-09-07 08:57:42.954362763 +0200
|
||||||
|
@@ -58,6 +58,8 @@
|
||||||
|
{
|
||||||
|
return (int)syscall(__NR_pidfd_open, pid, flags);
|
||||||
|
}
|
||||||
|
+#else
|
||||||
|
+#include <sys/pidfd.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* pidfd functions */
|
@ -1,5 +1,6 @@
|
|||||||
builds:
|
builds:
|
||||||
exclude: []
|
exclude:
|
||||||
|
- "*.x86_64-darwin.*"
|
||||||
include:
|
include:
|
||||||
- "checks.x86_64-linux.*"
|
- "checks.x86_64-linux.*"
|
||||||
- "devShells.*.*"
|
- "devShells.*.*"
|
||||||
|
@ -58,6 +58,7 @@
|
|||||||
#include "ui/pages/global/APIPage.h"
|
#include "ui/pages/global/APIPage.h"
|
||||||
#include "ui/pages/global/AccountListPage.h"
|
#include "ui/pages/global/AccountListPage.h"
|
||||||
#include "ui/pages/global/CustomCommandsPage.h"
|
#include "ui/pages/global/CustomCommandsPage.h"
|
||||||
|
#include "ui/pages/global/EnvironmentVariablesPage.h"
|
||||||
#include "ui/pages/global/ExternalToolsPage.h"
|
#include "ui/pages/global/ExternalToolsPage.h"
|
||||||
#include "ui/pages/global/JavaPage.h"
|
#include "ui/pages/global/JavaPage.h"
|
||||||
#include "ui/pages/global/LanguagePage.h"
|
#include "ui/pages/global/LanguagePage.h"
|
||||||
@ -643,6 +644,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv)
|
|||||||
|
|
||||||
// Minecraft mods
|
// Minecraft mods
|
||||||
m_settings->registerSetting("ModMetadataDisabled", false);
|
m_settings->registerSetting("ModMetadataDisabled", false);
|
||||||
|
m_settings->registerSetting("ModDependenciesDisabled", false);
|
||||||
|
|
||||||
// Minecraft offline player name
|
// Minecraft offline player name
|
||||||
m_settings->registerSetting("LastOfflinePlayerName", "");
|
m_settings->registerSetting("LastOfflinePlayerName", "");
|
||||||
@ -719,6 +721,8 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv)
|
|||||||
m_settings->registerSetting("CloseAfterLaunch", false);
|
m_settings->registerSetting("CloseAfterLaunch", false);
|
||||||
m_settings->registerSetting("QuitAfterGameStop", false);
|
m_settings->registerSetting("QuitAfterGameStop", false);
|
||||||
|
|
||||||
|
m_settings->registerSetting("Env", QVariant(QMap<QString, QVariant>()));
|
||||||
|
|
||||||
// Custom Microsoft Authentication Client ID
|
// Custom Microsoft Authentication Client ID
|
||||||
m_settings->registerSetting("MSAClientIDOverride", "");
|
m_settings->registerSetting("MSAClientIDOverride", "");
|
||||||
|
|
||||||
@ -744,6 +748,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv)
|
|||||||
m_globalSettingsProvider->addPage<JavaPage>();
|
m_globalSettingsProvider->addPage<JavaPage>();
|
||||||
m_globalSettingsProvider->addPage<LanguagePage>();
|
m_globalSettingsProvider->addPage<LanguagePage>();
|
||||||
m_globalSettingsProvider->addPage<CustomCommandsPage>();
|
m_globalSettingsProvider->addPage<CustomCommandsPage>();
|
||||||
|
m_globalSettingsProvider->addPage<EnvironmentVariablesPage>();
|
||||||
m_globalSettingsProvider->addPage<ProxyPage>();
|
m_globalSettingsProvider->addPage<ProxyPage>();
|
||||||
m_globalSettingsProvider->addPage<ExternalToolsPage>();
|
m_globalSettingsProvider->addPage<ExternalToolsPage>();
|
||||||
m_globalSettingsProvider->addPage<AccountListPage>();
|
m_globalSettingsProvider->addPage<AccountListPage>();
|
||||||
|
@ -889,6 +889,8 @@ SET(LAUNCHER_SOURCES
|
|||||||
ui/pages/global/AccountListPage.h
|
ui/pages/global/AccountListPage.h
|
||||||
ui/pages/global/CustomCommandsPage.cpp
|
ui/pages/global/CustomCommandsPage.cpp
|
||||||
ui/pages/global/CustomCommandsPage.h
|
ui/pages/global/CustomCommandsPage.h
|
||||||
|
ui/pages/global/EnvironmentVariablesPage.cpp
|
||||||
|
ui/pages/global/EnvironmentVariablesPage.h
|
||||||
ui/pages/global/ExternalToolsPage.cpp
|
ui/pages/global/ExternalToolsPage.cpp
|
||||||
ui/pages/global/ExternalToolsPage.h
|
ui/pages/global/ExternalToolsPage.h
|
||||||
ui/pages/global/JavaPage.cpp
|
ui/pages/global/JavaPage.cpp
|
||||||
@ -1040,6 +1042,8 @@ SET(LAUNCHER_SOURCES
|
|||||||
ui/widgets/Common.h
|
ui/widgets/Common.h
|
||||||
ui/widgets/CustomCommands.cpp
|
ui/widgets/CustomCommands.cpp
|
||||||
ui/widgets/CustomCommands.h
|
ui/widgets/CustomCommands.h
|
||||||
|
ui/widgets/EnvironmentVariables.cpp
|
||||||
|
ui/widgets/EnvironmentVariables.h
|
||||||
ui/widgets/DropLabel.cpp
|
ui/widgets/DropLabel.cpp
|
||||||
ui/widgets/DropLabel.h
|
ui/widgets/DropLabel.h
|
||||||
ui/widgets/FocusLineEdit.cpp
|
ui/widgets/FocusLineEdit.cpp
|
||||||
@ -1150,6 +1154,7 @@ qt_wrap_ui(LAUNCHER_UI
|
|||||||
ui/pages/modplatform/technic/TechnicPage.ui
|
ui/pages/modplatform/technic/TechnicPage.ui
|
||||||
ui/widgets/InstanceCardWidget.ui
|
ui/widgets/InstanceCardWidget.ui
|
||||||
ui/widgets/CustomCommands.ui
|
ui/widgets/CustomCommands.ui
|
||||||
|
ui/widgets/EnvironmentVariables.ui
|
||||||
ui/widgets/InfoFrame.ui
|
ui/widgets/InfoFrame.ui
|
||||||
ui/widgets/ModFilterWidget.ui
|
ui/widgets/ModFilterWidget.ui
|
||||||
ui/widgets/SubTaskProgressBar.ui
|
ui/widgets/SubTaskProgressBar.ui
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
class DataMigrationTask : public Task {
|
class DataMigrationTask : public Task {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit DataMigrationTask(QObject* parent, const QString& sourcePath, const QString& targetPath, const IPathMatcher::Ptr pathmatcher);
|
explicit DataMigrationTask(QObject* parent, const QString& sourcePath, const QString& targetPath, IPathMatcher::Ptr pathmatcher);
|
||||||
~DataMigrationTask() override = default;
|
~DataMigrationTask() override = default;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -108,12 +108,9 @@ bool openDirectory(const QString& path, [[maybe_unused]] bool ensureExists)
|
|||||||
#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
|
#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
|
||||||
if (!isSandbox()) {
|
if (!isSandbox()) {
|
||||||
return IndirectOpen(f);
|
return IndirectOpen(f);
|
||||||
} else {
|
|
||||||
return f();
|
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
return f();
|
|
||||||
#endif
|
#endif
|
||||||
|
return f();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool openFile(const QString& path)
|
bool openFile(const QString& path)
|
||||||
|
@ -943,6 +943,8 @@ bool createShortcut(QString destination, QString target, QStringList args, QStri
|
|||||||
<< "\n";
|
<< "\n";
|
||||||
stream << "Type=Application"
|
stream << "Type=Application"
|
||||||
<< "\n";
|
<< "\n";
|
||||||
|
stream << "Categories=Game;ActionGame;AdventureGame;Simulation"
|
||||||
|
<< "\n";
|
||||||
stream << "Exec=\"" << target.toLocal8Bit() << "\"" << argstring.toLocal8Bit() << "\n";
|
stream << "Exec=\"" << target.toLocal8Bit() << "\"" << argstring.toLocal8Bit() << "\n";
|
||||||
stream << "Name=" << name.toLocal8Bit() << "\n";
|
stream << "Name=" << name.toLocal8Bit() << "\n";
|
||||||
if (!icon.isEmpty()) {
|
if (!icon.isEmpty()) {
|
||||||
|
@ -59,7 +59,7 @@
|
|||||||
|
|
||||||
#include <quazip/quazipdir.h>
|
#include <quazip/quazipdir.h>
|
||||||
|
|
||||||
InstanceImportTask::InstanceImportTask(const QUrl sourceUrl, QWidget* parent, QMap<QString, QString>&& extra_info)
|
InstanceImportTask::InstanceImportTask(const QUrl& sourceUrl, QWidget* parent, QMap<QString, QString>&& extra_info)
|
||||||
: m_sourceUrl(sourceUrl), m_extra_info(extra_info), m_parent(parent)
|
: m_sourceUrl(sourceUrl), m_extra_info(extra_info), m_parent(parent)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ class FileResolvingTask;
|
|||||||
class InstanceImportTask : public InstanceTask {
|
class InstanceImportTask : public InstanceTask {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit InstanceImportTask(const QUrl sourceUrl, QWidget* parent = nullptr, QMap<QString, QString>&& extra_info = {});
|
explicit InstanceImportTask(const QUrl& sourceUrl, QWidget* parent = nullptr, QMap<QString, QString>&& extra_info = {});
|
||||||
|
|
||||||
bool abort() override;
|
bool abort() override;
|
||||||
const QVector<Flame::File>& getBlockedFiles() const { return m_blockedMods; }
|
const QVector<Flame::File>& getBlockedFiles() const { return m_blockedMods; }
|
||||||
|
@ -290,7 +290,7 @@ void InstanceList::deleteGroup(const GroupId& name)
|
|||||||
qDebug() << "Remove" << instID << "from group" << name;
|
qDebug() << "Remove" << instID << "from group" << name;
|
||||||
removed = true;
|
removed = true;
|
||||||
auto idx = getInstIndex(instance.get());
|
auto idx = getInstIndex(instance.get());
|
||||||
if (idx > 0)
|
if (idx >= 0)
|
||||||
emit dataChanged(index(idx), index(idx), { GroupRole });
|
emit dataChanged(index(idx), index(idx), { GroupRole });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -315,7 +315,7 @@ void InstanceList::renameGroup(const QString& src, const QString& dst)
|
|||||||
qDebug() << "Set" << instID << "group to" << dst;
|
qDebug() << "Set" << instID << "group to" << dst;
|
||||||
modified = true;
|
modified = true;
|
||||||
auto idx = getInstIndex(instance.get());
|
auto idx = getInstIndex(instance.get());
|
||||||
if (idx > 0)
|
if (idx >= 0)
|
||||||
emit dataChanged(index(idx), index(idx), { GroupRole });
|
emit dataChanged(index(idx), index(idx), { GroupRole });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -823,6 +823,9 @@ void InstanceList::on_InstFolderChanged([[maybe_unused]] const Setting& setting,
|
|||||||
}
|
}
|
||||||
m_instDir = newInstDir;
|
m_instDir = newInstDir;
|
||||||
m_groupsLoaded = false;
|
m_groupsLoaded = false;
|
||||||
|
beginRemoveRows(QModelIndex(), 0, count());
|
||||||
|
m_instances.erase(m_instances.begin(), m_instances.end());
|
||||||
|
endRemoveRows();
|
||||||
emit instancesChanged();
|
emit instancesChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -947,9 +950,12 @@ QString InstanceList::getStagedInstancePath()
|
|||||||
|
|
||||||
bool InstanceList::commitStagedInstance(const QString& path,
|
bool InstanceList::commitStagedInstance(const QString& path,
|
||||||
InstanceName const& instanceName,
|
InstanceName const& instanceName,
|
||||||
const QString& groupName,
|
QString groupName,
|
||||||
InstanceTask const& commiting)
|
InstanceTask const& commiting)
|
||||||
{
|
{
|
||||||
|
if (groupName.isEmpty() && !groupName.isNull())
|
||||||
|
groupName = QString();
|
||||||
|
|
||||||
QDir dir;
|
QDir dir;
|
||||||
QString instID;
|
QString instID;
|
||||||
InstancePtr inst;
|
InstancePtr inst;
|
||||||
|
@ -130,7 +130,7 @@ class InstanceList : public QAbstractListModel {
|
|||||||
* should_override is used when another similar instance already exists, and we want to override it
|
* should_override is used when another similar instance already exists, and we want to override it
|
||||||
* - for instance, when updating it.
|
* - for instance, when updating it.
|
||||||
*/
|
*/
|
||||||
bool commitStagedInstance(const QString& keyPath, const InstanceName& instanceName, const QString& groupName, const InstanceTask&);
|
bool commitStagedInstance(const QString& keyPath, const InstanceName& instanceName, QString groupName, const InstanceTask&);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Destroy a previously created staging area given by @keyPath - used when creation fails.
|
* Destroy a previously created staging area given by @keyPath - used when creation fails.
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
|
|
||||||
#include "LaunchController.h"
|
#include "LaunchController.h"
|
||||||
#include "Application.h"
|
#include "Application.h"
|
||||||
|
#include "minecraft/auth/AccountData.h"
|
||||||
#include "minecraft/auth/AccountList.h"
|
#include "minecraft/auth/AccountList.h"
|
||||||
|
|
||||||
#include "ui/InstanceWindow.h"
|
#include "ui/InstanceWindow.h"
|
||||||
@ -89,7 +90,7 @@ void LaunchController::decideAccount()
|
|||||||
// Tell the user they need to log in at least one account in order to play.
|
// Tell the user they need to log in at least one account in order to play.
|
||||||
auto reply = CustomMessageBox::selectable(m_parentWidget, tr("No Accounts"),
|
auto reply = CustomMessageBox::selectable(m_parentWidget, tr("No Accounts"),
|
||||||
tr("In order to play Minecraft, you must have at least one Microsoft "
|
tr("In order to play Minecraft, you must have at least one Microsoft "
|
||||||
"account which owns Minecraft logged in."
|
"account which owns Minecraft logged in. "
|
||||||
"Would you like to open the account manager to add an account now?"),
|
"Would you like to open the account manager to add an account now?"),
|
||||||
QMessageBox::Information, QMessageBox::Yes | QMessageBox::No)
|
QMessageBox::Information, QMessageBox::Yes | QMessageBox::No)
|
||||||
->exec();
|
->exec();
|
||||||
@ -161,7 +162,7 @@ void LaunchController::login()
|
|||||||
m_accountToUse->fillSession(m_session);
|
m_accountToUse->fillSession(m_session);
|
||||||
|
|
||||||
// Launch immediately in true offline mode
|
// Launch immediately in true offline mode
|
||||||
if (m_accountToUse->isOffline()) {
|
if (m_accountToUse->accountType() == AccountType::Offline) {
|
||||||
launchInstance();
|
launchInstance();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
|
|
||||||
namespace MMCZip {
|
namespace MMCZip {
|
||||||
// ours
|
// ours
|
||||||
bool mergeZipFiles(QuaZip* into, QFileInfo from, QSet<QString>& contained, const FilterFunction filter)
|
bool mergeZipFiles(QuaZip* into, QFileInfo from, QSet<QString>& contained, const FilterFunction& filter)
|
||||||
{
|
{
|
||||||
QuaZip modZip(from.filePath());
|
QuaZip modZip(from.filePath());
|
||||||
modZip.open(QuaZip::mdUnzip);
|
modZip.open(QuaZip::mdUnzip);
|
||||||
|
@ -60,7 +60,7 @@ using FilterFunction = std::function<bool(const QString&)>;
|
|||||||
/**
|
/**
|
||||||
* Merge two zip files, using a filter function
|
* Merge two zip files, using a filter function
|
||||||
*/
|
*/
|
||||||
bool mergeZipFiles(QuaZip* into, QFileInfo from, QSet<QString>& contained, const FilterFunction filter = nullptr);
|
bool mergeZipFiles(QuaZip* into, QFileInfo from, QSet<QString>& contained, const FilterFunction& filter = nullptr);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compress directory, by providing a list of files to compress
|
* Compress directory, by providing a list of files to compress
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#include <QPixmapCache>
|
#include <QPixmapCache>
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
#include <QTime>
|
#include <QTime>
|
||||||
|
#include <limits>
|
||||||
|
|
||||||
#define GET_TYPE() \
|
#define GET_TYPE() \
|
||||||
Qt::ConnectionType type; \
|
Qt::ConnectionType type; \
|
||||||
@ -100,10 +101,14 @@ class PixmapCache final : public QObject {
|
|||||||
*/
|
*/
|
||||||
bool _markCacheMissByEviciton()
|
bool _markCacheMissByEviciton()
|
||||||
{
|
{
|
||||||
|
static constexpr uint maxInt = static_cast<uint>(std::numeric_limits<int>::max());
|
||||||
|
static constexpr uint step = 10240;
|
||||||
|
static constexpr int oneSecond = 1000;
|
||||||
|
|
||||||
auto now = QTime::currentTime();
|
auto now = QTime::currentTime();
|
||||||
if (!m_last_cache_miss_by_eviciton.isNull()) {
|
if (!m_last_cache_miss_by_eviciton.isNull()) {
|
||||||
auto diff = m_last_cache_miss_by_eviciton.msecsTo(now);
|
auto diff = m_last_cache_miss_by_eviciton.msecsTo(now);
|
||||||
if (diff < 1000) { // less than a second ago
|
if (diff < oneSecond) { // less than a second ago
|
||||||
++m_consecutive_fast_evicitons;
|
++m_consecutive_fast_evicitons;
|
||||||
} else {
|
} else {
|
||||||
m_consecutive_fast_evicitons = 0;
|
m_consecutive_fast_evicitons = 0;
|
||||||
@ -111,11 +116,17 @@ class PixmapCache final : public QObject {
|
|||||||
}
|
}
|
||||||
m_last_cache_miss_by_eviciton = now;
|
m_last_cache_miss_by_eviciton = now;
|
||||||
if (m_consecutive_fast_evicitons >= m_consecutive_fast_evicitons_threshold) {
|
if (m_consecutive_fast_evicitons >= m_consecutive_fast_evicitons_threshold) {
|
||||||
// double the cache size
|
// increase the cache size
|
||||||
auto newSize = _cacheLimit() * 2;
|
uint newSize = _cacheLimit() + step;
|
||||||
qDebug() << m_consecutive_fast_evicitons << "pixmap cache misses by eviction happened too fast, doubling cache size to"
|
if (newSize >= maxInt) { // increase it until you overflow :D
|
||||||
<< newSize;
|
newSize = maxInt;
|
||||||
_setCacheLimit(newSize);
|
qDebug() << m_consecutive_fast_evicitons
|
||||||
|
<< tr("pixmap cache misses by eviction happened too fast, doing nothing as the cache size reached it's limit");
|
||||||
|
} else {
|
||||||
|
qDebug() << m_consecutive_fast_evicitons
|
||||||
|
<< tr("pixmap cache misses by eviction happened too fast, increasing cache size to") << static_cast<int>(newSize);
|
||||||
|
}
|
||||||
|
_setCacheLimit(static_cast<int>(newSize));
|
||||||
m_consecutive_fast_evicitons = 0;
|
m_consecutive_fast_evicitons = 0;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@ class RecursiveFileSystemWatcher : public QObject {
|
|||||||
QDir rootDir() const { return m_root; }
|
QDir rootDir() const { return m_root; }
|
||||||
|
|
||||||
// WARNING: setting this to true may be bad for performance
|
// WARNING: setting this to true may be bad for performance
|
||||||
void setWatchFiles(const bool watchFiles);
|
void setWatchFiles(bool watchFiles);
|
||||||
bool watchFiles() const { return m_watchFiles; }
|
bool watchFiles() const { return m_watchFiles; }
|
||||||
|
|
||||||
void setMatcher(IPathMatcher::Ptr matcher) { m_matcher = matcher; }
|
void setMatcher(IPathMatcher::Ptr matcher) { m_matcher = matcher; }
|
||||||
|
@ -32,7 +32,7 @@ class ResourceDownloadTask : public SequentialTask {
|
|||||||
public:
|
public:
|
||||||
explicit ResourceDownloadTask(ModPlatform::IndexedPack::Ptr pack,
|
explicit ResourceDownloadTask(ModPlatform::IndexedPack::Ptr pack,
|
||||||
ModPlatform::IndexedVersion version,
|
ModPlatform::IndexedVersion version,
|
||||||
const std::shared_ptr<ResourceFolderModel> packs,
|
std::shared_ptr<ResourceFolderModel> packs,
|
||||||
bool is_indexed = true,
|
bool is_indexed = true,
|
||||||
QString custom_target_folder = {});
|
QString custom_target_folder = {});
|
||||||
const QString& getFilename() const { return m_pack_version.fileName; }
|
const QString& getFilename() const { return m_pack_version.fileName; }
|
||||||
|
@ -28,7 +28,7 @@ class VersionProxyModel : public QAbstractProxyModel {
|
|||||||
|
|
||||||
const FilterMap& filters() const;
|
const FilterMap& filters() const;
|
||||||
const QString& search() const;
|
const QString& search() const;
|
||||||
void setFilter(const BaseVersionList::ModelRoles column, Filter* filter);
|
void setFilter(BaseVersionList::ModelRoles column, Filter* filter);
|
||||||
void setSearch(const QString& search);
|
void setSearch(const QString& search);
|
||||||
void clearFilters();
|
void clearFilters();
|
||||||
QModelIndex getRecommended() const;
|
QModelIndex getRecommended() const;
|
||||||
|
@ -67,7 +67,7 @@ class IconList : public QAbstractListModel {
|
|||||||
virtual Qt::ItemFlags flags(const QModelIndex& index) const override;
|
virtual Qt::ItemFlags flags(const QModelIndex& index) const override;
|
||||||
|
|
||||||
bool addThemeIcon(const QString& key);
|
bool addThemeIcon(const QString& key);
|
||||||
bool addIcon(const QString& key, const QString& name, const QString& path, const IconType type);
|
bool addIcon(const QString& key, const QString& name, const QString& path, IconType type);
|
||||||
void saveIcon(const QString& key, const QString& path, const char* format) const;
|
void saveIcon(const QString& key, const QString& path, const char* format) const;
|
||||||
bool deleteIcon(const QString& key);
|
bool deleteIcon(const QString& key);
|
||||||
bool trashIcon(const QString& key);
|
bool trashIcon(const QString& key);
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
#include <QFileInfo>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
|
|
||||||
@ -335,6 +336,7 @@ QList<QString> JavaUtils::FindJavaPaths()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
candidates.append(getMinecraftJavaBundle());
|
||||||
candidates = addJavasFromEnv(candidates);
|
candidates = addJavasFromEnv(candidates);
|
||||||
candidates.removeDuplicates();
|
candidates.removeDuplicates();
|
||||||
return candidates;
|
return candidates;
|
||||||
@ -360,6 +362,7 @@ QList<QString> JavaUtils::FindJavaPaths()
|
|||||||
javas.append(systemLibraryJVMDir.absolutePath() + "/" + java + "/Contents/Home/bin/java");
|
javas.append(systemLibraryJVMDir.absolutePath() + "/" + java + "/Contents/Home/bin/java");
|
||||||
javas.append(systemLibraryJVMDir.absolutePath() + "/" + java + "/Contents/Commands/java");
|
javas.append(systemLibraryJVMDir.absolutePath() + "/" + java + "/Contents/Commands/java");
|
||||||
}
|
}
|
||||||
|
javas.append(getMinecraftJavaBundle());
|
||||||
javas = addJavasFromEnv(javas);
|
javas = addJavasFromEnv(javas);
|
||||||
javas.removeDuplicates();
|
javas.removeDuplicates();
|
||||||
return javas;
|
return javas;
|
||||||
@ -411,6 +414,7 @@ QList<QString> JavaUtils::FindJavaPaths()
|
|||||||
// javas downloaded by sdkman
|
// javas downloaded by sdkman
|
||||||
scanJavaDirs(FS::PathCombine(home, ".sdkman/candidates/java"));
|
scanJavaDirs(FS::PathCombine(home, ".sdkman/candidates/java"));
|
||||||
|
|
||||||
|
javas.append(getMinecraftJavaBundle());
|
||||||
javas = addJavasFromEnv(javas);
|
javas = addJavasFromEnv(javas);
|
||||||
javas.removeDuplicates();
|
javas.removeDuplicates();
|
||||||
return javas;
|
return javas;
|
||||||
@ -423,6 +427,7 @@ QList<QString> JavaUtils::FindJavaPaths()
|
|||||||
QList<QString> javas;
|
QList<QString> javas;
|
||||||
javas.append(this->GetDefaultJava()->path);
|
javas.append(this->GetDefaultJava()->path);
|
||||||
|
|
||||||
|
javas.append(getMinecraftJavaBundle());
|
||||||
return addJavasFromEnv(javas);
|
return addJavasFromEnv(javas);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -431,3 +436,50 @@ QString JavaUtils::getJavaCheckPath()
|
|||||||
{
|
{
|
||||||
return APPLICATION->getJarPath("JavaCheck.jar");
|
return APPLICATION->getJarPath("JavaCheck.jar");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QStringList getMinecraftJavaBundle()
|
||||||
|
{
|
||||||
|
QString partialPath;
|
||||||
|
QString executable = "java";
|
||||||
|
QStringList processpaths;
|
||||||
|
#if defined(Q_OS_OSX)
|
||||||
|
partialPath = FS::PathCombine(QDir::homePath(), "Library/Application Support");
|
||||||
|
#elif defined(Q_OS_WIN32)
|
||||||
|
partialPath = QProcessEnvironment::systemEnvironment().value("LOCALAPPDATA", "");
|
||||||
|
executable += "w.exe";
|
||||||
|
|
||||||
|
// add the microsoft store version of the launcher to the search. the current path is:
|
||||||
|
// C:\Users\USERNAME\AppData\Local\Packages\Microsoft.4297127D64EC6_8wekyb3d8bbwe\LocalCache\Local\runtime
|
||||||
|
auto minecraftMSStorePath =
|
||||||
|
FS::PathCombine(QFileInfo(partialPath).absolutePath(), "Local", "Packages", "Microsoft.4297127D64EC6_8wekyb3d8bbwe");
|
||||||
|
minecraftMSStorePath = FS::PathCombine(minecraftMSStorePath, "LocalCache", "Local", "runtime");
|
||||||
|
processpaths << minecraftMSStorePath;
|
||||||
|
#else
|
||||||
|
partialPath = QDir::homePath();
|
||||||
|
#endif
|
||||||
|
auto minecraftDataPath = FS::PathCombine(partialPath, ".minecraft", "runtime");
|
||||||
|
processpaths << minecraftDataPath;
|
||||||
|
|
||||||
|
QStringList javas;
|
||||||
|
while (!processpaths.isEmpty()) {
|
||||||
|
auto dirPath = processpaths.takeFirst();
|
||||||
|
QDir dir(dirPath);
|
||||||
|
if (!dir.exists())
|
||||||
|
continue;
|
||||||
|
auto entries = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot);
|
||||||
|
auto binFound = false;
|
||||||
|
for (auto& entry : entries) {
|
||||||
|
if (entry.baseName() == "bin") {
|
||||||
|
javas.append(FS::PathCombine(entry.canonicalFilePath(), executable));
|
||||||
|
binFound = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!binFound) {
|
||||||
|
for (auto& entry : entries) {
|
||||||
|
processpaths << entry.canonicalFilePath();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return javas;
|
||||||
|
}
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
QString stripVariableEntries(QString name, QString target, QString remove);
|
QString stripVariableEntries(QString name, QString target, QString remove);
|
||||||
QProcessEnvironment CleanEnviroment();
|
QProcessEnvironment CleanEnviroment();
|
||||||
|
QStringList getMinecraftJavaBundle();
|
||||||
|
|
||||||
class JavaUtils : public QObject {
|
class JavaUtils : public QObject {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -55,6 +55,6 @@ class Index : public QAbstractListModel, public BaseEntity {
|
|||||||
QVector<VersionList::Ptr> m_lists;
|
QVector<VersionList::Ptr> m_lists;
|
||||||
QHash<QString, VersionList::Ptr> m_uids;
|
QHash<QString, VersionList::Ptr> m_uids;
|
||||||
|
|
||||||
void connectVersionList(const int row, const VersionList::Ptr& list);
|
void connectVersionList(int row, const VersionList::Ptr& list);
|
||||||
};
|
};
|
||||||
} // namespace Meta
|
} // namespace Meta
|
||||||
|
@ -64,7 +64,7 @@ class Version : public QObject, public BaseVersion, public BaseEntity {
|
|||||||
|
|
||||||
public: // for usage by format parsers only
|
public: // for usage by format parsers only
|
||||||
void setType(const QString& type);
|
void setType(const QString& type);
|
||||||
void setTime(const qint64 time);
|
void setTime(qint64 time);
|
||||||
void setRequires(const Meta::RequireSet& reqs, const Meta::RequireSet& conflicts);
|
void setRequires(const Meta::RequireSet& reqs, const Meta::RequireSet& conflicts);
|
||||||
void setVolatile(bool volatile_);
|
void setVolatile(bool volatile_);
|
||||||
void setRecommended(bool recommended);
|
void setRecommended(bool recommended);
|
||||||
|
@ -79,7 +79,7 @@ class VersionList : public BaseVersionList, public BaseEntity {
|
|||||||
|
|
||||||
Version::Ptr m_recommended;
|
Version::Ptr m_recommended;
|
||||||
|
|
||||||
void setupAddedVersion(const int row, const Version::Ptr& version);
|
void setupAddedVersion(int row, const Version::Ptr& version);
|
||||||
};
|
};
|
||||||
} // namespace Meta
|
} // namespace Meta
|
||||||
Q_DECLARE_METATYPE(Meta::VersionList::Ptr)
|
Q_DECLARE_METATYPE(Meta::VersionList::Ptr)
|
||||||
|
@ -188,6 +188,9 @@ void MinecraftInstance::loadSpecificSettings()
|
|||||||
auto legacySettings = m_settings->registerSetting("OverrideLegacySettings", false);
|
auto legacySettings = m_settings->registerSetting("OverrideLegacySettings", false);
|
||||||
m_settings->registerOverride(global_settings->getSetting("OnlineFixes"), legacySettings);
|
m_settings->registerOverride(global_settings->getSetting("OnlineFixes"), legacySettings);
|
||||||
|
|
||||||
|
auto envSetting = m_settings->registerSetting("OverrideEnv", false);
|
||||||
|
m_settings->registerOverride(global_settings->getSetting("Env"), envSetting);
|
||||||
|
|
||||||
m_settings->set("InstanceType", "OneSix");
|
m_settings->set("InstanceType", "OneSix");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -548,6 +551,7 @@ QMap<QString, QString> MinecraftInstance::getVariables()
|
|||||||
out.insert("INST_MC_DIR", QDir::toNativeSeparators(QDir(gameRoot()).absolutePath()));
|
out.insert("INST_MC_DIR", QDir::toNativeSeparators(QDir(gameRoot()).absolutePath()));
|
||||||
out.insert("INST_JAVA", settings()->get("JavaPath").toString());
|
out.insert("INST_JAVA", settings()->get("JavaPath").toString());
|
||||||
out.insert("INST_JAVA_ARGS", javaArguments().join(' '));
|
out.insert("INST_JAVA_ARGS", javaArguments().join(' '));
|
||||||
|
out.insert("NO_COLOR", "1");
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -561,6 +565,22 @@ QProcessEnvironment MinecraftInstance::createEnvironment()
|
|||||||
for (auto it = variables.begin(); it != variables.end(); ++it) {
|
for (auto it = variables.begin(); it != variables.end(); ++it) {
|
||||||
env.insert(it.key(), it.value());
|
env.insert(it.key(), it.value());
|
||||||
}
|
}
|
||||||
|
// custom env
|
||||||
|
|
||||||
|
auto insertEnv = [&env](QMap<QString, QVariant> envMap) {
|
||||||
|
if (envMap.isEmpty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (auto iter = envMap.begin(); iter != envMap.end(); iter++)
|
||||||
|
env.insert(iter.key(), iter.value().toString());
|
||||||
|
};
|
||||||
|
|
||||||
|
bool overrideEnv = settings()->get("OverrideEnv").toBool();
|
||||||
|
|
||||||
|
if (!overrideEnv)
|
||||||
|
insertEnv(APPLICATION->settings()->get("Env").toMap());
|
||||||
|
else
|
||||||
|
insertEnv(settings()->get("Env").toMap());
|
||||||
return env;
|
return env;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -571,16 +591,27 @@ QProcessEnvironment MinecraftInstance::createLaunchEnvironment()
|
|||||||
|
|
||||||
#ifdef Q_OS_LINUX
|
#ifdef Q_OS_LINUX
|
||||||
if (settings()->get("EnableMangoHud").toBool() && APPLICATION->capabilities() & Application::SupportsMangoHud) {
|
if (settings()->get("EnableMangoHud").toBool() && APPLICATION->capabilities() & Application::SupportsMangoHud) {
|
||||||
auto preloadList = env.value("LD_PRELOAD").split(QLatin1String(":"));
|
QStringList preloadList;
|
||||||
auto libPaths = env.value("LD_LIBRARY_PATH").split(QLatin1String(":"));
|
if (auto value = env.value("LD_PRELOAD"); !value.isEmpty())
|
||||||
|
preloadList = value.split(QLatin1String(":"));
|
||||||
|
QStringList libPaths;
|
||||||
|
if (auto value = env.value("LD_LIBRARY_PATH"); !value.isEmpty())
|
||||||
|
libPaths = value.split(QLatin1String(":"));
|
||||||
|
|
||||||
auto mangoHudLibString = MangoHud::getLibraryString();
|
auto mangoHudLibString = MangoHud::getLibraryString();
|
||||||
if (!mangoHudLibString.isEmpty()) {
|
if (!mangoHudLibString.isEmpty()) {
|
||||||
QFileInfo mangoHudLib(mangoHudLibString);
|
QFileInfo mangoHudLib(mangoHudLibString);
|
||||||
|
QString libPath = mangoHudLib.absolutePath();
|
||||||
|
auto appendLib = [libPath, &preloadList](QString fileName) {
|
||||||
|
if (QFileInfo(FS::PathCombine(libPath, fileName)).exists())
|
||||||
|
preloadList << fileName;
|
||||||
|
};
|
||||||
|
|
||||||
// dlsym variant is only needed for OpenGL and not included in the vulkan layer
|
// dlsym variant is only needed for OpenGL and not included in the vulkan layer
|
||||||
preloadList << "libMangoHud_dlsym.so" << mangoHudLib.fileName();
|
appendLib("libMangoHud_dlsym.so");
|
||||||
libPaths << mangoHudLib.absolutePath();
|
appendLib("libMangoHud_opengl.so");
|
||||||
|
appendLib(mangoHudLib.fileName());
|
||||||
|
libPaths << libPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
env.insert("LD_PRELOAD", preloadList.join(QLatin1String(":")));
|
env.insert("LD_PRELOAD", preloadList.join(QLatin1String(":")));
|
||||||
@ -597,7 +628,6 @@ QProcessEnvironment MinecraftInstance::createLaunchEnvironment()
|
|||||||
env.insert("__GLX_VENDOR_LIBRARY_NAME", "nvidia");
|
env.insert("__GLX_VENDOR_LIBRARY_NAME", "nvidia");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return env;
|
return env;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
class OneSixVersionFormat {
|
class OneSixVersionFormat {
|
||||||
public:
|
public:
|
||||||
// version files / profile patches
|
// version files / profile patches
|
||||||
static VersionFilePtr versionFileFromJson(const QJsonDocument& doc, const QString& filename, const bool requireOrder);
|
static VersionFilePtr versionFileFromJson(const QJsonDocument& doc, const QString& filename, bool requireOrder);
|
||||||
static QJsonDocument versionFileToJson(const VersionFilePtr& patch);
|
static QJsonDocument versionFileToJson(const VersionFilePtr& patch);
|
||||||
|
|
||||||
// libraries
|
// libraries
|
||||||
|
@ -430,7 +430,7 @@ bool PackProfile::remove(const int index)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PackProfile::remove(const QString id)
|
bool PackProfile::remove(const QString& id)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (auto patch : d->components) {
|
for (auto patch : d->components) {
|
||||||
|
@ -89,13 +89,13 @@ class PackProfile : public QAbstractListModel {
|
|||||||
|
|
||||||
enum MoveDirection { MoveUp, MoveDown };
|
enum MoveDirection { MoveUp, MoveDown };
|
||||||
/// move component file # up or down the list
|
/// move component file # up or down the list
|
||||||
void move(const int index, const MoveDirection direction);
|
void move(int index, MoveDirection direction);
|
||||||
|
|
||||||
/// remove component file # - including files/records
|
/// remove component file # - including files/records
|
||||||
bool remove(const int index);
|
bool remove(int index);
|
||||||
|
|
||||||
/// remove component file by id - including files/records
|
/// remove component file by id - including files/records
|
||||||
bool remove(const QString id);
|
bool remove(const QString& id);
|
||||||
|
|
||||||
bool customize(int index);
|
bool customize(int index);
|
||||||
|
|
||||||
|
@ -140,7 +140,7 @@ VersionFilePtr parseJsonFile(const QFileInfo& fileInfo, const bool requireOrder)
|
|||||||
return guardedParseJson(doc, fileInfo.completeBaseName(), fileInfo.absoluteFilePath(), requireOrder);
|
return guardedParseJson(doc, fileInfo.completeBaseName(), fileInfo.absoluteFilePath(), requireOrder);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool saveJsonFile(const QJsonDocument doc, const QString& filename)
|
bool saveJsonFile(const QJsonDocument& doc, const QString& filename)
|
||||||
{
|
{
|
||||||
auto data = doc.toJson();
|
auto data = doc.toJson();
|
||||||
QSaveFile jsonFile(filename);
|
QSaveFile jsonFile(filename);
|
||||||
|
@ -47,10 +47,10 @@ bool readOverrideOrders(QString path, PatchOrder& order);
|
|||||||
bool writeOverrideOrders(QString path, const PatchOrder& order);
|
bool writeOverrideOrders(QString path, const PatchOrder& order);
|
||||||
|
|
||||||
/// Parse a version file in JSON format
|
/// Parse a version file in JSON format
|
||||||
VersionFilePtr parseJsonFile(const QFileInfo& fileInfo, const bool requireOrder);
|
VersionFilePtr parseJsonFile(const QFileInfo& fileInfo, bool requireOrder);
|
||||||
|
|
||||||
/// Save a JSON file (in any format)
|
/// Save a JSON file (in any format)
|
||||||
bool saveJsonFile(const QJsonDocument doc, const QString& filename);
|
bool saveJsonFile(const QJsonDocument& doc, const QString& filename);
|
||||||
|
|
||||||
/// Remove LWJGL from a patch file. This is applied to all Mojang-like profile files.
|
/// Remove LWJGL from a patch file. This is applied to all Mojang-like profile files.
|
||||||
void removeLwjglFromPatch(VersionFilePtr patch);
|
void removeLwjglFromPatch(VersionFilePtr patch);
|
||||||
|
@ -283,9 +283,15 @@ QVariant AccountList::data(const QModelIndex& index, int role) const
|
|||||||
return account->accountDisplayString();
|
return account->accountDisplayString();
|
||||||
|
|
||||||
case TypeColumn: {
|
case TypeColumn: {
|
||||||
auto typeStr = account->typeString();
|
switch (account->accountType()) {
|
||||||
typeStr[0] = typeStr[0].toUpper();
|
case AccountType::MSA: {
|
||||||
return typeStr;
|
return tr("MSA", "Account type");
|
||||||
|
}
|
||||||
|
case AccountType::Offline: {
|
||||||
|
return tr("Offline", "Account type");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return tr("Unknown", "Account type");
|
||||||
}
|
}
|
||||||
|
|
||||||
case StatusColumn: {
|
case StatusColumn: {
|
||||||
|
@ -75,7 +75,7 @@ class AccountList : public QAbstractListModel {
|
|||||||
virtual Qt::ItemFlags flags(const QModelIndex& index) const override;
|
virtual Qt::ItemFlags flags(const QModelIndex& index) const override;
|
||||||
virtual bool setData(const QModelIndex& index, const QVariant& value, int role) override;
|
virtual bool setData(const QModelIndex& index, const QVariant& value, int role) override;
|
||||||
|
|
||||||
void addAccount(const MinecraftAccountPtr account);
|
void addAccount(MinecraftAccountPtr account);
|
||||||
void removeAccount(QModelIndex index);
|
void removeAccount(QModelIndex index);
|
||||||
int findAccountByProfileId(const QString& profileId) const;
|
int findAccountByProfileId(const QString& profileId) const;
|
||||||
MinecraftAccountPtr getAccountByProfileName(const QString& profileName) const;
|
MinecraftAccountPtr getAccountByProfileName(const QString& profileName) const;
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
|
|
||||||
#include "flows/MSA.h"
|
#include "flows/MSA.h"
|
||||||
#include "flows/Offline.h"
|
#include "flows/Offline.h"
|
||||||
|
#include "minecraft/auth/AccountData.h"
|
||||||
|
|
||||||
MinecraftAccount::MinecraftAccount(QObject* parent) : QObject(parent)
|
MinecraftAccount::MinecraftAccount(QObject* parent) : QObject(parent)
|
||||||
{
|
{
|
||||||
@ -185,7 +186,7 @@ void MinecraftAccount::authFailed(QString reason)
|
|||||||
// NOTE: this doesn't do much. There was an error of some sort.
|
// NOTE: this doesn't do much. There was an error of some sort.
|
||||||
} break;
|
} break;
|
||||||
case AccountTaskState::STATE_FAILED_HARD: {
|
case AccountTaskState::STATE_FAILED_HARD: {
|
||||||
if (isMSA()) {
|
if (accountType() == AccountType::MSA) {
|
||||||
data.msaToken.token = QString();
|
data.msaToken.token = QString();
|
||||||
data.msaToken.refresh_token = QString();
|
data.msaToken.refresh_token = QString();
|
||||||
data.msaToken.validity = Katabasis::Validity::None;
|
data.msaToken.validity = Katabasis::Validity::None;
|
||||||
|
@ -118,9 +118,7 @@ class MinecraftAccount : public QObject, public Usable {
|
|||||||
|
|
||||||
bool isActive() const;
|
bool isActive() const;
|
||||||
|
|
||||||
bool isMSA() const { return data.type == AccountType::MSA; }
|
[[nodiscard]] AccountType accountType() const noexcept { return data.type; }
|
||||||
|
|
||||||
bool isOffline() const { return data.type == AccountType::Offline; }
|
|
||||||
|
|
||||||
bool ownsMinecraft() const { return data.minecraftEntitlement.ownsMinecraft; }
|
bool ownsMinecraft() const { return data.minecraftEntitlement.ownsMinecraft; }
|
||||||
|
|
||||||
|
@ -37,9 +37,9 @@
|
|||||||
#include "ModFolderModel.h"
|
#include "ModFolderModel.h"
|
||||||
|
|
||||||
#include <FileSystem.h>
|
#include <FileSystem.h>
|
||||||
#include <qheaderview.h>
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QFileSystemWatcher>
|
#include <QFileSystemWatcher>
|
||||||
|
#include <QHeaderView>
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
#include <QMimeData>
|
#include <QMimeData>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
@ -65,8 +65,8 @@ ModFolderModel::ModFolderModel(const QString& dir, BaseInstance* instance, bool
|
|||||||
m_column_names = QStringList({ "Enable", "Image", "Name", "Version", "Last Modified", "Provider" });
|
m_column_names = QStringList({ "Enable", "Image", "Name", "Version", "Last Modified", "Provider" });
|
||||||
m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Version"), tr("Last Modified"), tr("Provider") });
|
m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Version"), tr("Last Modified"), tr("Provider") });
|
||||||
m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::VERSION, SortType::DATE, SortType::PROVIDER };
|
m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::VERSION, SortType::DATE, SortType::PROVIDER };
|
||||||
m_column_resize_modes = { QHeaderView::ResizeToContents, QHeaderView::Interactive, QHeaderView::Stretch,
|
m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Stretch,
|
||||||
QHeaderView::ResizeToContents, QHeaderView::ResizeToContents, QHeaderView::ResizeToContents };
|
QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Interactive };
|
||||||
m_columnsHideable = { false, true, false, true, true, true };
|
m_columnsHideable = { false, true, false, true, true, true };
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,6 +131,11 @@ QVariant ModFolderModel::data(const QModelIndex& index, int role) const
|
|||||||
}
|
}
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
case Qt::SizeHintRole:
|
||||||
|
if (column == ImageColumn) {
|
||||||
|
return QSize(32, 32);
|
||||||
|
}
|
||||||
|
return {};
|
||||||
case Qt::CheckStateRole:
|
case Qt::CheckStateRole:
|
||||||
switch (column) {
|
switch (column) {
|
||||||
case ActiveColumn:
|
case ActiveColumn:
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
|
#include <QHeaderView>
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <QMimeData>
|
#include <QMimeData>
|
||||||
@ -45,7 +46,7 @@ ResourceFolderModel::~ResourceFolderModel()
|
|||||||
QCoreApplication::processEvents();
|
QCoreApplication::processEvents();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ResourceFolderModel::startWatching(const QStringList paths)
|
bool ResourceFolderModel::startWatching(const QStringList& paths)
|
||||||
{
|
{
|
||||||
if (m_is_watching)
|
if (m_is_watching)
|
||||||
return false;
|
return false;
|
||||||
@ -64,7 +65,7 @@ bool ResourceFolderModel::startWatching(const QStringList paths)
|
|||||||
return m_is_watching;
|
return m_is_watching;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ResourceFolderModel::stopWatching(const QStringList paths)
|
bool ResourceFolderModel::stopWatching(const QStringList& paths)
|
||||||
{
|
{
|
||||||
if (!m_is_watching)
|
if (!m_is_watching)
|
||||||
return false;
|
return false;
|
||||||
@ -457,9 +458,9 @@ bool ResourceFolderModel::setData(const QModelIndex& index, [[maybe_unused]] con
|
|||||||
if (role == Qt::CheckStateRole) {
|
if (role == Qt::CheckStateRole) {
|
||||||
if (m_instance != nullptr && m_instance->isRunning()) {
|
if (m_instance != nullptr && m_instance->isRunning()) {
|
||||||
auto response =
|
auto response =
|
||||||
CustomMessageBox::selectable(nullptr, "Confirm toggle",
|
CustomMessageBox::selectable(nullptr, tr("Confirm toggle"),
|
||||||
"If you enable/disable this resource while the game is running it may crash your game.\n"
|
tr("If you enable/disable this resource while the game is running it may crash your game.\n"
|
||||||
"Are you sure you want to do this?",
|
"Are you sure you want to do this?"),
|
||||||
QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No)
|
QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No)
|
||||||
->exec();
|
->exec();
|
||||||
|
|
||||||
@ -513,36 +514,22 @@ void ResourceFolderModel::setupHeaderAction(QAction* act, int column)
|
|||||||
act->setText(columnNames().at(column));
|
act->setText(columnNames().at(column));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResourceFolderModel::saveHiddenColumn(int column, bool hidden)
|
void ResourceFolderModel::saveColumns(QTreeView* tree)
|
||||||
{
|
{
|
||||||
auto const setting_name = QString("UI/%1_Page/HiddenColumns").arg(id());
|
auto const setting_name = QString("UI/%1_Page/Columns").arg(id());
|
||||||
auto setting = (m_instance->settings()->contains(setting_name)) ? m_instance->settings()->getSetting(setting_name)
|
auto setting = (m_instance->settings()->contains(setting_name)) ? m_instance->settings()->getSetting(setting_name)
|
||||||
: m_instance->settings()->registerSetting(setting_name);
|
: m_instance->settings()->registerSetting(setting_name);
|
||||||
|
|
||||||
auto hiddenColumns = setting->get().toStringList();
|
setting->set(tree->header()->saveState());
|
||||||
auto name = columnNames(false).at(column);
|
|
||||||
auto index = hiddenColumns.indexOf(name);
|
|
||||||
if (index >= 0 && !hidden) {
|
|
||||||
hiddenColumns.removeAt(index);
|
|
||||||
} else if (index < 0 && hidden) {
|
|
||||||
hiddenColumns.append(name);
|
|
||||||
}
|
|
||||||
setting->set(hiddenColumns);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResourceFolderModel::loadHiddenColumns(QTreeView* tree)
|
void ResourceFolderModel::loadColumns(QTreeView* tree)
|
||||||
{
|
{
|
||||||
auto const setting_name = QString("UI/%1_Page/HiddenColumns").arg(id());
|
auto const setting_name = QString("UI/%1_Page/Columns").arg(id());
|
||||||
auto setting = (m_instance->settings()->contains(setting_name)) ? m_instance->settings()->getSetting(setting_name)
|
auto setting = (m_instance->settings()->contains(setting_name)) ? m_instance->settings()->getSetting(setting_name)
|
||||||
: m_instance->settings()->registerSetting(setting_name);
|
: m_instance->settings()->registerSetting(setting_name);
|
||||||
|
|
||||||
auto hiddenColumns = setting->get().toStringList();
|
tree->header()->restoreState(setting->get().toByteArray());
|
||||||
auto col_names = columnNames(false);
|
|
||||||
for (auto col_name : hiddenColumns) {
|
|
||||||
auto index = col_names.indexOf(col_name);
|
|
||||||
if (index >= 0)
|
|
||||||
tree->setColumnHidden(index, true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QMenu* ResourceFolderModel::createHeaderContextMenu(QTreeView* tree)
|
QMenu* ResourceFolderModel::createHeaderContextMenu(QTreeView* tree)
|
||||||
@ -567,7 +554,7 @@ QMenu* ResourceFolderModel::createHeaderContextMenu(QTreeView* tree)
|
|||||||
if (m_column_resize_modes.at(c) == QHeaderView::ResizeToContents)
|
if (m_column_resize_modes.at(c) == QHeaderView::ResizeToContents)
|
||||||
tree->resizeColumnToContents(c);
|
tree->resizeColumnToContents(c);
|
||||||
}
|
}
|
||||||
saveHiddenColumn(col, !toggled);
|
saveColumns(tree);
|
||||||
});
|
});
|
||||||
|
|
||||||
menu->addAction(act);
|
menu->addAction(act);
|
||||||
|
@ -39,14 +39,14 @@ class ResourceFolderModel : public QAbstractListModel {
|
|||||||
* Returns whether starting to watch all the paths was successful.
|
* Returns whether starting to watch all the paths was successful.
|
||||||
* If one or more fails, it returns false.
|
* If one or more fails, it returns false.
|
||||||
*/
|
*/
|
||||||
bool startWatching(const QStringList paths);
|
bool startWatching(const QStringList& paths);
|
||||||
|
|
||||||
/** Stops watching the paths for changes.
|
/** Stops watching the paths for changes.
|
||||||
*
|
*
|
||||||
* Returns whether stopping to watch all the paths was successful.
|
* Returns whether stopping to watch all the paths was successful.
|
||||||
* If one or more fails, it returns false.
|
* If one or more fails, it returns false.
|
||||||
*/
|
*/
|
||||||
bool stopWatching(const QStringList paths);
|
bool stopWatching(const QStringList& paths);
|
||||||
|
|
||||||
/* Helper methods for subclasses, using a predetermined list of paths. */
|
/* Helper methods for subclasses, using a predetermined list of paths. */
|
||||||
virtual bool startWatching() { return startWatching({ m_dir.absolutePath() }); }
|
virtual bool startWatching() { return startWatching({ m_dir.absolutePath() }); }
|
||||||
@ -117,8 +117,8 @@ class ResourceFolderModel : public QAbstractListModel {
|
|||||||
[[nodiscard]] QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
|
[[nodiscard]] QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
|
||||||
|
|
||||||
void setupHeaderAction(QAction* act, int column);
|
void setupHeaderAction(QAction* act, int column);
|
||||||
void saveHiddenColumn(int column, bool hidden);
|
void saveColumns(QTreeView* tree);
|
||||||
void loadHiddenColumns(QTreeView* tree);
|
void loadColumns(QTreeView* tree);
|
||||||
QMenu* createHeaderContextMenu(QTreeView* tree);
|
QMenu* createHeaderContextMenu(QTreeView* tree);
|
||||||
|
|
||||||
/** This creates a proxy model to filter / sort the model for a UI.
|
/** This creates a proxy model to filter / sort the model for a UI.
|
||||||
@ -201,8 +201,7 @@ class ResourceFolderModel : public QAbstractListModel {
|
|||||||
QList<SortType> m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::DATE };
|
QList<SortType> m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::DATE };
|
||||||
QStringList m_column_names = { "Enable", "Name", "Last Modified" };
|
QStringList m_column_names = { "Enable", "Name", "Last Modified" };
|
||||||
QStringList m_column_names_translated = { tr("Enable"), tr("Name"), tr("Last Modified") };
|
QStringList m_column_names_translated = { tr("Enable"), tr("Name"), tr("Last Modified") };
|
||||||
QList<QHeaderView::ResizeMode> m_column_resize_modes = { QHeaderView::ResizeToContents, QHeaderView::Stretch,
|
QList<QHeaderView::ResizeMode> m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::Interactive };
|
||||||
QHeaderView::ResizeToContents };
|
|
||||||
QList<bool> m_columnsHideable = { false, false, true };
|
QList<bool> m_columnsHideable = { false, false, true };
|
||||||
|
|
||||||
QDir m_dir;
|
QDir m_dir;
|
||||||
|
@ -52,8 +52,8 @@ ResourcePackFolderModel::ResourcePackFolderModel(const QString& dir, BaseInstanc
|
|||||||
m_column_names = QStringList({ "Enable", "Image", "Name", "Pack Format", "Last Modified" });
|
m_column_names = QStringList({ "Enable", "Image", "Name", "Pack Format", "Last Modified" });
|
||||||
m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Pack Format"), tr("Last Modified") });
|
m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Pack Format"), tr("Last Modified") });
|
||||||
m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::PACK_FORMAT, SortType::DATE };
|
m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::PACK_FORMAT, SortType::DATE };
|
||||||
m_column_resize_modes = { QHeaderView::ResizeToContents, QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::ResizeToContents,
|
m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::Interactive,
|
||||||
QHeaderView::ResizeToContents };
|
QHeaderView::Interactive };
|
||||||
m_columnsHideable = { false, true, false, true, true };
|
m_columnsHideable = { false, true, false, true, true };
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,6 +117,11 @@ QVariant ResourcePackFolderModel::data(const QModelIndex& index, int role) const
|
|||||||
}
|
}
|
||||||
return m_resources[row]->internal_id();
|
return m_resources[row]->internal_id();
|
||||||
}
|
}
|
||||||
|
case Qt::SizeHintRole:
|
||||||
|
if (column == ImageColumn) {
|
||||||
|
return QSize(32, 32);
|
||||||
|
}
|
||||||
|
return {};
|
||||||
case Qt::CheckStateRole:
|
case Qt::CheckStateRole:
|
||||||
switch (column) {
|
switch (column) {
|
||||||
case ActiveColumn:
|
case ActiveColumn:
|
||||||
|
@ -47,8 +47,7 @@ TexturePackFolderModel::TexturePackFolderModel(const QString& dir, BaseInstance*
|
|||||||
m_column_names = QStringList({ "Enable", "Image", "Name", "Last Modified" });
|
m_column_names = QStringList({ "Enable", "Image", "Name", "Last Modified" });
|
||||||
m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Last Modified") });
|
m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Last Modified") });
|
||||||
m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::DATE };
|
m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::DATE };
|
||||||
m_column_resize_modes = { QHeaderView::ResizeToContents, QHeaderView::Interactive, QHeaderView::Stretch,
|
m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::Interactive };
|
||||||
QHeaderView::ResizeToContents };
|
|
||||||
m_columnsHideable = { false, true, false, true };
|
m_columnsHideable = { false, true, false, true };
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,6 +103,11 @@ QVariant TexturePackFolderModel::data(const QModelIndex& index, int role) const
|
|||||||
}
|
}
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
case Qt::SizeHintRole:
|
||||||
|
if (column == ImageColumn) {
|
||||||
|
return QSize(32, 32);
|
||||||
|
}
|
||||||
|
return {};
|
||||||
case Qt::CheckStateRole:
|
case Qt::CheckStateRole:
|
||||||
if (column == ActiveColumn) {
|
if (column == ActiveColumn) {
|
||||||
return m_resources[row]->enabled() ? Qt::Checked : Qt::Unchecked;
|
return m_resources[row]->enabled() ? Qt::Checked : Qt::Unchecked;
|
||||||
|
@ -137,10 +137,11 @@ Task::Ptr GetModDependenciesTask::getProjectInfoTask(std::shared_ptr<PackDepende
|
|||||||
auto provider = pDep->pack->provider == m_flame_provider.name ? m_flame_provider : m_modrinth_provider;
|
auto provider = pDep->pack->provider == m_flame_provider.name ? m_flame_provider : m_modrinth_provider;
|
||||||
auto responseInfo = std::make_shared<QByteArray>();
|
auto responseInfo = std::make_shared<QByteArray>();
|
||||||
auto info = provider.api->getProject(pDep->pack->addonId.toString(), responseInfo);
|
auto info = provider.api->getProject(pDep->pack->addonId.toString(), responseInfo);
|
||||||
QObject::connect(info.get(), &NetJob::succeeded, [responseInfo, provider, pDep] {
|
QObject::connect(info.get(), &NetJob::succeeded, [this, responseInfo, provider, pDep] {
|
||||||
QJsonParseError parse_error{};
|
QJsonParseError parse_error{};
|
||||||
QJsonDocument doc = QJsonDocument::fromJson(*responseInfo, &parse_error);
|
QJsonDocument doc = QJsonDocument::fromJson(*responseInfo, &parse_error);
|
||||||
if (parse_error.error != QJsonParseError::NoError) {
|
if (parse_error.error != QJsonParseError::NoError) {
|
||||||
|
removePack(pDep->pack->addonId);
|
||||||
qWarning() << "Error while parsing JSON response for mod info at " << parse_error.offset
|
qWarning() << "Error while parsing JSON response for mod info at " << parse_error.offset
|
||||||
<< " reason: " << parse_error.errorString();
|
<< " reason: " << parse_error.errorString();
|
||||||
qDebug() << *responseInfo;
|
qDebug() << *responseInfo;
|
||||||
@ -151,6 +152,7 @@ Task::Ptr GetModDependenciesTask::getProjectInfoTask(std::shared_ptr<PackDepende
|
|||||||
: Json::requireObject(doc);
|
: Json::requireObject(doc);
|
||||||
provider.mod->loadIndexedPack(*pDep->pack, obj);
|
provider.mod->loadIndexedPack(*pDep->pack, obj);
|
||||||
} catch (const JSONValidationError& e) {
|
} catch (const JSONValidationError& e) {
|
||||||
|
removePack(pDep->pack->addonId);
|
||||||
qDebug() << doc;
|
qDebug() << doc;
|
||||||
qWarning() << "Error while reading mod info: " << e.cause();
|
qWarning() << "Error while reading mod info: " << e.cause();
|
||||||
}
|
}
|
||||||
@ -211,11 +213,13 @@ Task::Ptr GetModDependenciesTask::prepareDependencyTask(const ModPlatform::Depen
|
|||||||
pDep->pack->versionsLoaded = true;
|
pDep->pack->versionsLoaded = true;
|
||||||
|
|
||||||
} catch (const JSONValidationError& e) {
|
} catch (const JSONValidationError& e) {
|
||||||
|
removePack(dep.addonId);
|
||||||
qDebug() << doc;
|
qDebug() << doc;
|
||||||
qWarning() << "Error while reading mod version: " << e.cause();
|
qWarning() << "Error while reading mod version: " << e.cause();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (level == 0) {
|
if (level == 0) {
|
||||||
|
removePack(dep.addonId);
|
||||||
qWarning() << "Dependency cycle exceeded";
|
qWarning() << "Dependency cycle exceeded";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -238,7 +242,7 @@ Task::Ptr GetModDependenciesTask::prepareDependencyTask(const ModPlatform::Depen
|
|||||||
return tasks;
|
return tasks;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GetModDependenciesTask::removePack(const QVariant addonId)
|
void GetModDependenciesTask::removePack(const QVariant& addonId)
|
||||||
{
|
{
|
||||||
auto pred = [addonId](const std::shared_ptr<PackDependency>& v) { return v->pack->addonId == addonId; };
|
auto pred = [addonId](const std::shared_ptr<PackDependency>& v) { return v->pack->addonId == addonId; };
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 1, 0)
|
#if QT_VERSION >= QT_VERSION_CHECK(6, 1, 0)
|
||||||
|
@ -65,13 +65,13 @@ class GetModDependenciesTask : public SequentialTask {
|
|||||||
QHash<QString, QStringList> getRequiredBy();
|
QHash<QString, QStringList> getRequiredBy();
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
Task::Ptr prepareDependencyTask(const ModPlatform::Dependency&, const ModPlatform::ResourceProvider, int);
|
Task::Ptr prepareDependencyTask(const ModPlatform::Dependency&, ModPlatform::ResourceProvider, int);
|
||||||
QList<ModPlatform::Dependency> getDependenciesForVersion(const ModPlatform::IndexedVersion&,
|
QList<ModPlatform::Dependency> getDependenciesForVersion(const ModPlatform::IndexedVersion&,
|
||||||
const ModPlatform::ResourceProvider providerName);
|
ModPlatform::ResourceProvider providerName);
|
||||||
void prepare();
|
void prepare();
|
||||||
Task::Ptr getProjectInfoTask(std::shared_ptr<PackDependency> pDep);
|
Task::Ptr getProjectInfoTask(std::shared_ptr<PackDependency> pDep);
|
||||||
ModPlatform::Dependency getOverride(const ModPlatform::Dependency&, const ModPlatform::ResourceProvider providerName);
|
ModPlatform::Dependency getOverride(const ModPlatform::Dependency&, ModPlatform::ResourceProvider providerName);
|
||||||
void removePack(const QVariant addonId);
|
void removePack(const QVariant& addonId);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QList<std::shared_ptr<PackDependency>> m_pack_dependencies;
|
QList<std::shared_ptr<PackDependency>> m_pack_dependencies;
|
||||||
|
@ -688,6 +688,7 @@ bool loadIconFile(const Mod& mod)
|
|||||||
return png_invalid(); // icon invalid
|
return png_invalid(); // icon invalid
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
case ResourceType::ZIPFILE: {
|
case ResourceType::ZIPFILE: {
|
||||||
QuaZip zip(mod.fileinfo().filePath());
|
QuaZip zip(mod.fileinfo().filePath());
|
||||||
@ -714,6 +715,7 @@ bool loadIconFile(const Mod& mod)
|
|||||||
} else {
|
} else {
|
||||||
return png_invalid(); // could not set icon as current file.
|
return png_invalid(); // could not set icon as current file.
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
case ResourceType::LITEMOD: {
|
case ResourceType::LITEMOD: {
|
||||||
return false; // can lightmods even have icons?
|
return false; // can lightmods even have icons?
|
||||||
|
@ -232,10 +232,9 @@ bool processPackPNG(const ResourcePack& pack)
|
|||||||
} else {
|
} else {
|
||||||
return png_invalid(); // pack.png does not exists or is not a valid file.
|
return png_invalid(); // pack.png does not exists or is not a valid file.
|
||||||
}
|
}
|
||||||
|
return false; // not processed correctly; https://github.com/PrismLauncher/PrismLauncher/issues/1740
|
||||||
}
|
}
|
||||||
case ResourceType::ZIPFILE: {
|
case ResourceType::ZIPFILE: {
|
||||||
Q_ASSERT(pack.type() == ResourceType::ZIPFILE);
|
|
||||||
|
|
||||||
QuaZip zip(pack.fileinfo().filePath());
|
QuaZip zip(pack.fileinfo().filePath());
|
||||||
if (!zip.open(QuaZip::mdUnzip))
|
if (!zip.open(QuaZip::mdUnzip))
|
||||||
return false; // can't open zip file
|
return false; // can't open zip file
|
||||||
@ -259,6 +258,7 @@ bool processPackPNG(const ResourcePack& pack)
|
|||||||
} else {
|
} else {
|
||||||
return png_invalid(); // could not set pack.mcmeta as current file.
|
return png_invalid(); // could not set pack.mcmeta as current file.
|
||||||
}
|
}
|
||||||
|
return false; // not processed correctly; https://github.com/PrismLauncher/PrismLauncher/issues/1740
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
qWarning() << "Invalid type for resource pack parse task!";
|
qWarning() << "Invalid type for resource pack parse task!";
|
||||||
|
@ -186,10 +186,9 @@ bool processPackPNG(const TexturePack& pack)
|
|||||||
} else {
|
} else {
|
||||||
return png_invalid(); // pack.png does not exists or is not a valid file.
|
return png_invalid(); // pack.png does not exists or is not a valid file.
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
case ResourceType::ZIPFILE: {
|
case ResourceType::ZIPFILE: {
|
||||||
Q_ASSERT(pack.type() == ResourceType::ZIPFILE);
|
|
||||||
|
|
||||||
QuaZip zip(pack.fileinfo().filePath());
|
QuaZip zip(pack.fileinfo().filePath());
|
||||||
if (!zip.open(QuaZip::mdUnzip))
|
if (!zip.open(QuaZip::mdUnzip))
|
||||||
return false; // can't open zip file
|
return false; // can't open zip file
|
||||||
@ -215,6 +214,7 @@ bool processPackPNG(const TexturePack& pack)
|
|||||||
zip.close();
|
zip.close();
|
||||||
return png_invalid(); // could not set pack.mcmeta as current file.
|
return png_invalid(); // could not set pack.mcmeta as current file.
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
qWarning() << "Invalid type for resource pack parse task!";
|
qWarning() << "Invalid type for resource pack parse task!";
|
||||||
|
@ -208,17 +208,15 @@ Task::Ptr FlameAPI::getFile(const QString& addonId, const QString& fileId, std::
|
|||||||
return netJob;
|
return netJob;
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://docs.curseforge.com/?python#tocS_ModsSearchSortField
|
|
||||||
static QList<ResourceAPI::SortingMethod> s_sorts = { { 1, "Featured", QObject::tr("Sort by Featured") },
|
|
||||||
{ 2, "Popularity", QObject::tr("Sort by Popularity") },
|
|
||||||
{ 3, "LastUpdated", QObject::tr("Sort by Last Updated") },
|
|
||||||
{ 4, "Name", QObject::tr("Sort by Name") },
|
|
||||||
{ 5, "Author", QObject::tr("Sort by Author") },
|
|
||||||
{ 6, "TotalDownloads", QObject::tr("Sort by Downloads") },
|
|
||||||
{ 7, "Category", QObject::tr("Sort by Category") },
|
|
||||||
{ 8, "GameVersion", QObject::tr("Sort by Game Version") } };
|
|
||||||
|
|
||||||
QList<ResourceAPI::SortingMethod> FlameAPI::getSortingMethods() const
|
QList<ResourceAPI::SortingMethod> FlameAPI::getSortingMethods() const
|
||||||
{
|
{
|
||||||
return s_sorts;
|
// https://docs.curseforge.com/?python#tocS_ModsSearchSortField
|
||||||
|
return { { 1, "Featured", QObject::tr("Sort by Featured") },
|
||||||
|
{ 2, "Popularity", QObject::tr("Sort by Popularity") },
|
||||||
|
{ 3, "LastUpdated", QObject::tr("Sort by Last Updated") },
|
||||||
|
{ 4, "Name", QObject::tr("Sort by Name") },
|
||||||
|
{ 5, "Author", QObject::tr("Sort by Author") },
|
||||||
|
{ 6, "TotalDownloads", QObject::tr("Sort by Downloads") },
|
||||||
|
{ 7, "Category", QObject::tr("Sort by Category") },
|
||||||
|
{ 8, "GameVersion", QObject::tr("Sort by Game Version") } };
|
||||||
}
|
}
|
||||||
|
@ -111,14 +111,12 @@ Task::Ptr ModrinthAPI::getProjects(QStringList addonIds, std::shared_ptr<QByteAr
|
|||||||
return netJob;
|
return netJob;
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://docs.modrinth.com/api-spec/#tag/projects/operation/searchProjects
|
|
||||||
static QList<ResourceAPI::SortingMethod> s_sorts = { { 1, "relevance", QObject::tr("Sort by Relevance") },
|
|
||||||
{ 2, "downloads", QObject::tr("Sort by Downloads") },
|
|
||||||
{ 3, "follows", QObject::tr("Sort by Follows") },
|
|
||||||
{ 4, "newest", QObject::tr("Sort by Last Updated") },
|
|
||||||
{ 5, "updated", QObject::tr("Sort by Newest") } };
|
|
||||||
|
|
||||||
QList<ResourceAPI::SortingMethod> ModrinthAPI::getSortingMethods() const
|
QList<ResourceAPI::SortingMethod> ModrinthAPI::getSortingMethods() const
|
||||||
{
|
{
|
||||||
return s_sorts;
|
// https://docs.modrinth.com/api-spec/#tag/projects/operation/searchProjects
|
||||||
|
return { { 1, "relevance", QObject::tr("Sort by Relevance") },
|
||||||
|
{ 2, "downloads", QObject::tr("Sort by Downloads") },
|
||||||
|
{ 3, "follows", QObject::tr("Sort by Follows") },
|
||||||
|
{ 4, "newest", QObject::tr("Sort by Newest") },
|
||||||
|
{ 5, "updated", QObject::tr("Sort by Last Updated") } };
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ class ModrinthPackExportTask : public Task {
|
|||||||
void collectFiles();
|
void collectFiles();
|
||||||
void collectHashes();
|
void collectHashes();
|
||||||
void makeApiRequest();
|
void makeApiRequest();
|
||||||
void parseApiResponse(const std::shared_ptr<QByteArray> response);
|
void parseApiResponse(std::shared_ptr<QByteArray> response);
|
||||||
void buildZip();
|
void buildZip();
|
||||||
|
|
||||||
QByteArray generateIndex();
|
QByteArray generateIndex();
|
||||||
|
@ -33,6 +33,6 @@ class TechnicPackProcessor : public QObject {
|
|||||||
const QString& instIcon,
|
const QString& instIcon,
|
||||||
const QString& stagingPath,
|
const QString& stagingPath,
|
||||||
const QString& minecraftVersion = QString(),
|
const QString& minecraftVersion = QString(),
|
||||||
const bool isSolder = false);
|
bool isSolder = false);
|
||||||
};
|
};
|
||||||
} // namespace Technic
|
} // namespace Technic
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
<file>scalable/copy.svg</file>
|
<file>scalable/copy.svg</file>
|
||||||
<file>scalable/coremods.svg</file>
|
<file>scalable/coremods.svg</file>
|
||||||
<file>scalable/custom-commands.svg</file>
|
<file>scalable/custom-commands.svg</file>
|
||||||
|
<file>scalable/environment-variables.svg</file>
|
||||||
<file>scalable/discord.svg</file>
|
<file>scalable/discord.svg</file>
|
||||||
<file>scalable/externaltools.svg</file>
|
<file>scalable/externaltools.svg</file>
|
||||||
<file>scalable/help.svg</file>
|
<file>scalable/help.svg</file>
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
|
||||||
|
<defs id="defs3051">
|
||||||
|
<style type="text/css" id="current-color-scheme">
|
||||||
|
.ColorScheme-Text {
|
||||||
|
color:#eff0f1;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</defs>
|
||||||
|
<path style="fill:currentColor;fill-opacity:1;stroke:none"
|
||||||
|
d="M 6 2 C 4.895478 2 4 2.8954778 4 4 L 4 6 L 4 7 C 4 7.2761493 3.7761423 7.5 3.5 7.5 L 3 7.5 L 3 8.5 L 3.5 8.5 C 3.7761423 8.5 4 8.7238507 4 9 L 4 10 L 4 11 L 4 12 C 4 13.104597 4.8954307 14 6 14 L 7 14 L 7 13 L 6 13 C 5.4477157 13 5 12.552299 5 12 L 5 11 L 5 10 L 5 9 C 5 8.617501 4.8607153 8.2649743 4.625 8 C 4.8607153 7.7350257 5 7.382499 5 7 L 5 6 L 5 5.71875 L 5 4 C 5 3.4477014 5.4477765 3 6 3 L 7 3 L 7 2 L 6 2 z M 9 2 L 9 3 L 10 3 C 10.552224 3 11 3.4477014 11 4 L 11 5.71875 L 11 6 L 11 7 C 11 7.382499 11.139285 7.7350257 11.375 8 C 11.139285 8.2649743 11 8.617501 11 9 L 11 10 L 11 11 L 11 12 C 11 12.552299 10.552284 13 10 13 L 9 13 L 9 14 L 10 14 C 11.104569 14 12 13.104597 12 12 L 12 11 L 12 10 L 12 9 C 12 8.7238507 12.223858 8.5 12.5 8.5 L 13 8.5 L 13 7.5 L 12.5 7.5 C 12.223858 7.5 12 7.2761493 12 7 L 12 6 L 12 4 C 12 2.8954778 11.104522 2 10 2 L 9 2 z "
|
||||||
|
class="ColorScheme-Text"
|
||||||
|
/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
@ -9,6 +9,7 @@
|
|||||||
<file>scalable/copy.svg</file>
|
<file>scalable/copy.svg</file>
|
||||||
<file>scalable/coremods.svg</file>
|
<file>scalable/coremods.svg</file>
|
||||||
<file>scalable/custom-commands.svg</file>
|
<file>scalable/custom-commands.svg</file>
|
||||||
|
<file>scalable/environment-variables.svg</file>
|
||||||
<file>scalable/discord.svg</file>
|
<file>scalable/discord.svg</file>
|
||||||
<file>scalable/externaltools.svg</file>
|
<file>scalable/externaltools.svg</file>
|
||||||
<file>scalable/help.svg</file>
|
<file>scalable/help.svg</file>
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
|
||||||
|
<defs id="defs3051">
|
||||||
|
<style type="text/css" id="current-color-scheme">
|
||||||
|
.ColorScheme-Text {
|
||||||
|
color:#232629;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</defs>
|
||||||
|
<path style="fill:currentColor;fill-opacity:1;stroke:none"
|
||||||
|
d="M 6 2 C 4.895478 2 4 2.8954778 4 4 L 4 6 L 4 7 C 4 7.2761493 3.7761423 7.5 3.5 7.5 L 3 7.5 L 3 8.5 L 3.5 8.5 C 3.7761423 8.5 4 8.7238507 4 9 L 4 10 L 4 11 L 4 12 C 4 13.104597 4.8954307 14 6 14 L 7 14 L 7 13 L 6 13 C 5.4477157 13 5 12.552299 5 12 L 5 11 L 5 10 L 5 9 C 5 8.617501 4.8607153 8.2649743 4.625 8 C 4.8607153 7.7350257 5 7.382499 5 7 L 5 6 L 5 5.71875 L 5 4 C 5 3.4477014 5.4477765 3 6 3 L 7 3 L 7 2 L 6 2 z M 9 2 L 9 3 L 10 3 C 10.552224 3 11 3.4477014 11 4 L 11 5.71875 L 11 6 L 11 7 C 11 7.382499 11.139285 7.7350257 11.375 8 C 11.139285 8.2649743 11 8.617501 11 9 L 11 10 L 11 11 L 11 12 C 11 12.552299 10.552284 13 10 13 L 9 13 L 9 14 L 10 14 C 11.104569 14 12 13.104597 12 12 L 12 11 L 12 10 L 12 9 C 12 8.7238507 12.223858 8.5 12.5 8.5 L 13 8.5 L 13 7.5 L 12.5 7.5 C 12.223858 7.5 12 7.2761493 12 7 L 12 6 L 12 4 C 12 2.8954778 11.104522 2 10 2 L 9 2 z "
|
||||||
|
class="ColorScheme-Text"
|
||||||
|
/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
@ -11,6 +11,7 @@
|
|||||||
<file>scalable/copy.svg</file>
|
<file>scalable/copy.svg</file>
|
||||||
<file>scalable/coremods.svg</file>
|
<file>scalable/coremods.svg</file>
|
||||||
<file>scalable/custom-commands.svg</file>
|
<file>scalable/custom-commands.svg</file>
|
||||||
|
<file>scalable/environment-variables.svg</file>
|
||||||
<file>scalable/discord.svg</file>
|
<file>scalable/discord.svg</file>
|
||||||
<file>scalable/externaltools.svg</file>
|
<file>scalable/externaltools.svg</file>
|
||||||
<file>scalable/help.svg</file>
|
<file>scalable/help.svg</file>
|
||||||
|
@ -1,86 +1 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="#757575"><g><rect fill="none" height="24" width="24"/></g><g><path d="M20,4H4C2.89,4,2,4.9,2,6v12c0,1.1,0.89,2,2,2h16c1.1,0,2-0.9,2-2V6C22,4.9,21.11,4,20,4z M20,18H4V8h16V18z M18,17h-6v-2 h6V17z M7.5,17l-1.41-1.41L8.67,13l-2.59-2.59L7.5,9l4,4L7.5,17z"/></g></svg>
|
||||||
<svg
|
|
||||||
fill="#757575"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
width="24"
|
|
||||||
version="1.1"
|
|
||||||
id="svg4"
|
|
||||||
sodipodi:docname="custom-commands.svg"
|
|
||||||
inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
|
||||||
<metadata
|
|
||||||
id="metadata10">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<defs
|
|
||||||
id="defs8" />
|
|
||||||
<sodipodi:namedview
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1"
|
|
||||||
objecttolerance="10"
|
|
||||||
gridtolerance="10"
|
|
||||||
guidetolerance="10"
|
|
||||||
inkscape:pageopacity="0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:window-width="3440"
|
|
||||||
inkscape:window-height="1382"
|
|
||||||
id="namedview6"
|
|
||||||
showgrid="true"
|
|
||||||
showguides="true"
|
|
||||||
inkscape:guide-bbox="true"
|
|
||||||
inkscape:zoom="39.333333"
|
|
||||||
inkscape:cx="11.38983"
|
|
||||||
inkscape:cy="13.283898"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="32"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="svg4"
|
|
||||||
inkscape:pagecheckerboard="0">
|
|
||||||
<inkscape:grid
|
|
||||||
type="xygrid"
|
|
||||||
id="grid981" />
|
|
||||||
<sodipodi:guide
|
|
||||||
position="-8,11.440678"
|
|
||||||
orientation="1,0"
|
|
||||||
id="guide1060"
|
|
||||||
inkscape:locked="false" />
|
|
||||||
<sodipodi:guide
|
|
||||||
position="-28.34375,24"
|
|
||||||
orientation="0,1"
|
|
||||||
id="guide1062"
|
|
||||||
inkscape:locked="false" />
|
|
||||||
</sodipodi:namedview>
|
|
||||||
<g
|
|
||||||
style="fill:#000000"
|
|
||||||
id="g821"
|
|
||||||
transform="matrix(0.0322459,0,0,0.0322459,-17.878956,30.647558)">
|
|
||||||
<g
|
|
||||||
style="fill:#000000"
|
|
||||||
id="g819" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g503">
|
|
||||||
<path
|
|
||||||
d="M 0,0 H 24 V 24 H 0 Z"
|
|
||||||
fill="none"
|
|
||||||
id="path491" />
|
|
||||||
<path
|
|
||||||
d="M 8.7,15.9 4.8,12 8.7,8.1 C 9.09,7.71 9.09,7.09 8.7,6.7 8.31,6.31 7.69,6.31 7.3,6.7 l -4.59,4.59 c -0.39,0.39 -0.39,1.02 0,1.41 l 4.59,4.6 c 0.39,0.39 1.01,0.39 1.4,0 0.39,-0.39 0.39,-1.01 0,-1.4 z m 6.6,0 3.9,-3.9 -3.9,-3.9 c -0.39,-0.39 -0.39,-1.01 0,-1.4 0.39,-0.39 1.01,-0.39 1.4,0 l 4.59,4.59 c 0.39,0.39 0.39,1.02 0,1.41 l -4.59,4.6 c -0.39,0.39 -1.01,0.39 -1.4,0 -0.39,-0.39 -0.39,-1.01 0,-1.4 z"
|
|
||||||
id="path493" />
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 391 B |
86
launcher/resources/flat/scalable/environment-variables.svg
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
fill="#757575"
|
||||||
|
height="24"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
width="24"
|
||||||
|
version="1.1"
|
||||||
|
id="svg4"
|
||||||
|
sodipodi:docname="custom-commands.svg"
|
||||||
|
inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<metadata
|
||||||
|
id="metadata10">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs8" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="3440"
|
||||||
|
inkscape:window-height="1382"
|
||||||
|
id="namedview6"
|
||||||
|
showgrid="true"
|
||||||
|
showguides="true"
|
||||||
|
inkscape:guide-bbox="true"
|
||||||
|
inkscape:zoom="39.333333"
|
||||||
|
inkscape:cx="11.38983"
|
||||||
|
inkscape:cy="13.283898"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="32"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg4"
|
||||||
|
inkscape:pagecheckerboard="0">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid981" />
|
||||||
|
<sodipodi:guide
|
||||||
|
position="-8,11.440678"
|
||||||
|
orientation="1,0"
|
||||||
|
id="guide1060"
|
||||||
|
inkscape:locked="false" />
|
||||||
|
<sodipodi:guide
|
||||||
|
position="-28.34375,24"
|
||||||
|
orientation="0,1"
|
||||||
|
id="guide1062"
|
||||||
|
inkscape:locked="false" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<g
|
||||||
|
style="fill:#000000"
|
||||||
|
id="g821"
|
||||||
|
transform="matrix(0.0322459,0,0,0.0322459,-17.878956,30.647558)">
|
||||||
|
<g
|
||||||
|
style="fill:#000000"
|
||||||
|
id="g819" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g503">
|
||||||
|
<path
|
||||||
|
d="M 0,0 H 24 V 24 H 0 Z"
|
||||||
|
fill="none"
|
||||||
|
id="path491" />
|
||||||
|
<path
|
||||||
|
d="M 8.7,15.9 4.8,12 8.7,8.1 C 9.09,7.71 9.09,7.09 8.7,6.7 8.31,6.31 7.69,6.31 7.3,6.7 l -4.59,4.59 c -0.39,0.39 -0.39,1.02 0,1.41 l 4.59,4.6 c 0.39,0.39 1.01,0.39 1.4,0 0.39,-0.39 0.39,-1.01 0,-1.4 z m 6.6,0 3.9,-3.9 -3.9,-3.9 c -0.39,-0.39 -0.39,-1.01 0,-1.4 0.39,-0.39 1.01,-0.39 1.4,0 l 4.59,4.59 c 0.39,0.39 0.39,1.02 0,1.41 l -4.59,4.6 c -0.39,0.39 -1.01,0.39 -1.4,0 -0.39,-0.39 -0.39,-1.01 0,-1.4 z"
|
||||||
|
id="path493" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.6 KiB |
@ -11,6 +11,7 @@
|
|||||||
<file>scalable/copy.svg</file>
|
<file>scalable/copy.svg</file>
|
||||||
<file>scalable/coremods.svg</file>
|
<file>scalable/coremods.svg</file>
|
||||||
<file>scalable/custom-commands.svg</file>
|
<file>scalable/custom-commands.svg</file>
|
||||||
|
<file>scalable/environment-variables.svg</file>
|
||||||
<file>scalable/discord.svg</file>
|
<file>scalable/discord.svg</file>
|
||||||
<file>scalable/externaltools.svg</file>
|
<file>scalable/externaltools.svg</file>
|
||||||
<file>scalable/help.svg</file>
|
<file>scalable/help.svg</file>
|
||||||
|
@ -1,86 +1 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="#eeeeee"><g><rect fill="none" height="24" width="24"/></g><g><path d="M20,4H4C2.89,4,2,4.9,2,6v12c0,1.1,0.89,2,2,2h16c1.1,0,2-0.9,2-2V6C22,4.9,21.11,4,20,4z M20,18H4V8h16V18z M18,17h-6v-2 h6V17z M7.5,17l-1.41-1.41L8.67,13l-2.59-2.59L7.5,9l4,4L7.5,17z"/></g></svg>
|
||||||
<svg
|
|
||||||
fill="#eeeeee"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
width="24"
|
|
||||||
version="1.1"
|
|
||||||
id="svg4"
|
|
||||||
sodipodi:docname="custom-commands.svg"
|
|
||||||
inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
|
||||||
<metadata
|
|
||||||
id="metadata10">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<defs
|
|
||||||
id="defs8" />
|
|
||||||
<sodipodi:namedview
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1"
|
|
||||||
objecttolerance="10"
|
|
||||||
gridtolerance="10"
|
|
||||||
guidetolerance="10"
|
|
||||||
inkscape:pageopacity="0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:window-width="3440"
|
|
||||||
inkscape:window-height="1382"
|
|
||||||
id="namedview6"
|
|
||||||
showgrid="true"
|
|
||||||
showguides="true"
|
|
||||||
inkscape:guide-bbox="true"
|
|
||||||
inkscape:zoom="39.333333"
|
|
||||||
inkscape:cx="11.38983"
|
|
||||||
inkscape:cy="13.283898"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="32"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="svg4"
|
|
||||||
inkscape:pagecheckerboard="0">
|
|
||||||
<inkscape:grid
|
|
||||||
type="xygrid"
|
|
||||||
id="grid981" />
|
|
||||||
<sodipodi:guide
|
|
||||||
position="-8,11.440678"
|
|
||||||
orientation="1,0"
|
|
||||||
id="guide1060"
|
|
||||||
inkscape:locked="false" />
|
|
||||||
<sodipodi:guide
|
|
||||||
position="-28.34375,24"
|
|
||||||
orientation="0,1"
|
|
||||||
id="guide1062"
|
|
||||||
inkscape:locked="false" />
|
|
||||||
</sodipodi:namedview>
|
|
||||||
<g
|
|
||||||
style="fill:#000000"
|
|
||||||
id="g821"
|
|
||||||
transform="matrix(0.0322459,0,0,0.0322459,-17.878956,30.647558)">
|
|
||||||
<g
|
|
||||||
style="fill:#000000"
|
|
||||||
id="g819" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g503">
|
|
||||||
<path
|
|
||||||
d="M 0,0 H 24 V 24 H 0 Z"
|
|
||||||
fill="none"
|
|
||||||
id="path491" />
|
|
||||||
<path
|
|
||||||
d="M 8.7,15.9 4.8,12 8.7,8.1 C 9.09,7.71 9.09,7.09 8.7,6.7 8.31,6.31 7.69,6.31 7.3,6.7 l -4.59,4.59 c -0.39,0.39 -0.39,1.02 0,1.41 l 4.59,4.6 c 0.39,0.39 1.01,0.39 1.4,0 0.39,-0.39 0.39,-1.01 0,-1.4 z m 6.6,0 3.9,-3.9 -3.9,-3.9 c -0.39,-0.39 -0.39,-1.01 0,-1.4 0.39,-0.39 1.01,-0.39 1.4,0 l 4.59,4.59 c 0.39,0.39 0.39,1.02 0,1.41 l -4.59,4.6 c -0.39,0.39 -1.01,0.39 -1.4,0 -0.39,-0.39 -0.39,-1.01 0,-1.4 z"
|
|
||||||
id="path493" />
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 391 B |
@ -0,0 +1,86 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
fill="#eeeeee"
|
||||||
|
height="24"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
width="24"
|
||||||
|
version="1.1"
|
||||||
|
id="svg4"
|
||||||
|
sodipodi:docname="custom-commands.svg"
|
||||||
|
inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<metadata
|
||||||
|
id="metadata10">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs8" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="3440"
|
||||||
|
inkscape:window-height="1382"
|
||||||
|
id="namedview6"
|
||||||
|
showgrid="true"
|
||||||
|
showguides="true"
|
||||||
|
inkscape:guide-bbox="true"
|
||||||
|
inkscape:zoom="39.333333"
|
||||||
|
inkscape:cx="11.38983"
|
||||||
|
inkscape:cy="13.283898"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="32"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg4"
|
||||||
|
inkscape:pagecheckerboard="0">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid981" />
|
||||||
|
<sodipodi:guide
|
||||||
|
position="-8,11.440678"
|
||||||
|
orientation="1,0"
|
||||||
|
id="guide1060"
|
||||||
|
inkscape:locked="false" />
|
||||||
|
<sodipodi:guide
|
||||||
|
position="-28.34375,24"
|
||||||
|
orientation="0,1"
|
||||||
|
id="guide1062"
|
||||||
|
inkscape:locked="false" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<g
|
||||||
|
style="fill:#000000"
|
||||||
|
id="g821"
|
||||||
|
transform="matrix(0.0322459,0,0,0.0322459,-17.878956,30.647558)">
|
||||||
|
<g
|
||||||
|
style="fill:#000000"
|
||||||
|
id="g819" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g503">
|
||||||
|
<path
|
||||||
|
d="M 0,0 H 24 V 24 H 0 Z"
|
||||||
|
fill="none"
|
||||||
|
id="path491" />
|
||||||
|
<path
|
||||||
|
d="M 8.7,15.9 4.8,12 8.7,8.1 C 9.09,7.71 9.09,7.09 8.7,6.7 8.31,6.31 7.69,6.31 7.3,6.7 l -4.59,4.59 c -0.39,0.39 -0.39,1.02 0,1.41 l 4.59,4.6 c 0.39,0.39 1.01,0.39 1.4,0 0.39,-0.39 0.39,-1.01 0,-1.4 z m 6.6,0 3.9,-3.9 -3.9,-3.9 c -0.39,-0.39 -0.39,-1.01 0,-1.4 0.39,-0.39 1.01,-0.39 1.4,0 l 4.59,4.59 c 0.39,0.39 0.39,1.02 0,1.41 l -4.59,4.6 c -0.39,0.39 -1.01,0.39 -1.4,0 -0.39,-0.39 -0.39,-1.01 0,-1.4 z"
|
||||||
|
id="path493" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.6 KiB |
@ -73,8 +73,8 @@
|
|||||||
<file>64x64/screenshots.png</file>
|
<file>64x64/screenshots.png</file>
|
||||||
<file>scalable/screenshots.svg</file>
|
<file>scalable/screenshots.svg</file>
|
||||||
|
|
||||||
<!-- Custom commands. -->
|
|
||||||
<file>scalable/custom-commands.svg</file>
|
<file>scalable/custom-commands.svg</file>
|
||||||
|
<file>scalable/environment-variables.svg</file>
|
||||||
|
|
||||||
<!-- The cat button. Freeware, http://findicons.com/icon/73096/black_cat -->
|
<!-- The cat button. Freeware, http://findicons.com/icon/73096/black_cat -->
|
||||||
<file>16x16/cat.png</file>
|
<file>16x16/cat.png</file>
|
||||||
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 113 KiB |
346
launcher/resources/multimc/scalable/environment-variables.svg
Normal file
@ -0,0 +1,346 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
id="svg2"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.47pre3 r22311"
|
||||||
|
version="1.0"
|
||||||
|
sodipodi:docname="code-context.svgz"
|
||||||
|
inkscape:output_extension="org.inkscape.output.svgz.inkscape"
|
||||||
|
inkscape:export-filename="/home/pinheiro/pics/oxygen-icons/scalable/actions/small/48x48/context.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="linearGradient5440">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop5442" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop5444" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient5342">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#232221;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop5344" />
|
||||||
|
<stop
|
||||||
|
id="stop5394"
|
||||||
|
offset="0.10646833"
|
||||||
|
style="stop-color:#555350;stop-opacity:1;" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#918d88;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop5346" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3857"
|
||||||
|
inkscape:collect="always">
|
||||||
|
<stop
|
||||||
|
id="stop3859"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||||
|
<stop
|
||||||
|
id="stop3861"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient5342"
|
||||||
|
id="linearGradient5348"
|
||||||
|
x1="80.151077"
|
||||||
|
y1="-120.00011"
|
||||||
|
x2="80.151077"
|
||||||
|
y2="-15.919633"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.85712143,0,0,0.85712149,15.99961,-9.1458159)" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3857"
|
||||||
|
id="linearGradient5378"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.85712141,0,0,-0.85442216,15.99961,9.407114)"
|
||||||
|
x1="76"
|
||||||
|
y1="-4"
|
||||||
|
x2="76"
|
||||||
|
y2="-124" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3857"
|
||||||
|
id="radialGradient5386"
|
||||||
|
cx="64"
|
||||||
|
cy="136"
|
||||||
|
fx="64"
|
||||||
|
fy="136"
|
||||||
|
r="48"
|
||||||
|
gradientTransform="matrix(1.3086619,0,0,0.65227042,-19.755964,19.661784)"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="filter5416"
|
||||||
|
x="-0.21917803"
|
||||||
|
width="1.4383561"
|
||||||
|
y="-0.21917814"
|
||||||
|
height="1.4383563">
|
||||||
|
<feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="1.4611876"
|
||||||
|
id="feGaussianBlur5418" />
|
||||||
|
</filter>
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath5420">
|
||||||
|
<path
|
||||||
|
style="fill:url(#radialGradient5424);fill-opacity:1;stroke:none"
|
||||||
|
d="m 108,8 c -52,0 -36,4 0,4 3.57143,0 8,2.700959 8,8 0,24 4,24 4,0 0,-5.923499 -4.70207,-12 -12,-12 z"
|
||||||
|
id="path5422"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
|
</clipPath>
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3857"
|
||||||
|
id="radialGradient5424"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.70743936,0.70677405,-0.99807448,0.99901401,48.73805,-79.148369)"
|
||||||
|
cx="112.00771"
|
||||||
|
cy="15.99981"
|
||||||
|
fx="112.00771"
|
||||||
|
fy="15.99981"
|
||||||
|
r="8.0077057" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3857"
|
||||||
|
id="radialGradient5426"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.70727305,0.70694048,-1.9971123,1.9980518,64.741093,-95.151426)"
|
||||||
|
cx="112.00771"
|
||||||
|
cy="15.99981"
|
||||||
|
fx="112.00771"
|
||||||
|
fy="15.99981"
|
||||||
|
r="8.0077057" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3857"
|
||||||
|
id="radialGradient5430"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.70727305,0.70694048,-1.9971123,1.9980518,64.741093,-95.151426)"
|
||||||
|
cx="112.00771"
|
||||||
|
cy="15.99981"
|
||||||
|
fx="112.00771"
|
||||||
|
fy="15.99981"
|
||||||
|
r="8.0077057" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3857"
|
||||||
|
id="radialGradient5436"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.70727305,0.70694048,-1.9971123,1.9980518,64.741093,-95.151426)"
|
||||||
|
cx="112.00771"
|
||||||
|
cy="15.99981"
|
||||||
|
fx="112.00771"
|
||||||
|
fy="15.99981"
|
||||||
|
r="8.0077057" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3857"
|
||||||
|
id="radialGradient5438"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.70727305,0.70694048,-1.9971123,1.9980518,64.741093,-95.151426)"
|
||||||
|
cx="112.00771"
|
||||||
|
cy="15.99981"
|
||||||
|
fx="112.00771"
|
||||||
|
fy="15.99981"
|
||||||
|
r="8.0077057" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient5440"
|
||||||
|
id="linearGradient5451"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="71.937897"
|
||||||
|
y1="31.666744"
|
||||||
|
x2="71.937897"
|
||||||
|
y2="184.00002"
|
||||||
|
gradientTransform="matrix(0.49730883,0,0,0.49574271,32.172236,26.323555)" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3857"
|
||||||
|
id="linearGradient5453"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.85712141,0,0,-0.85442216,15.99961,9.25759)"
|
||||||
|
x1="76"
|
||||||
|
y1="-8"
|
||||||
|
x2="76"
|
||||||
|
y2="-72.117546" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3857"
|
||||||
|
id="radialGradient5480"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.70727305,0.70694048,-1.9971123,1.9980518,64.741093,-95.151426)"
|
||||||
|
cx="112.00771"
|
||||||
|
cy="15.99981"
|
||||||
|
fx="112.00771"
|
||||||
|
fy="15.99981"
|
||||||
|
r="8.0077057" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3857"
|
||||||
|
id="radialGradient5482"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.70727305,0.70694048,-1.9971123,1.9980518,64.741093,-95.151426)"
|
||||||
|
cx="112.00771"
|
||||||
|
cy="15.99981"
|
||||||
|
fx="112.00771"
|
||||||
|
fy="15.99981"
|
||||||
|
r="8.0077057" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
gridtolerance="10000"
|
||||||
|
guidetolerance="10"
|
||||||
|
objecttolerance="10"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="3.4029514"
|
||||||
|
inkscape:cx="135.41032"
|
||||||
|
inkscape:cy="66.337315"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
width="128px"
|
||||||
|
height="128px"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:window-width="1040"
|
||||||
|
inkscape:window-height="728"
|
||||||
|
inkscape:window-x="374"
|
||||||
|
inkscape:window-y="333"
|
||||||
|
showguides="true"
|
||||||
|
inkscape:guide-bbox="true"
|
||||||
|
inkscape:snap-nodes="false"
|
||||||
|
inkscape:snap-bbox="true"
|
||||||
|
inkscape:window-maximized="0">
|
||||||
|
<inkscape:grid
|
||||||
|
id="GridFromPre046Settings"
|
||||||
|
type="xygrid"
|
||||||
|
originx="0px"
|
||||||
|
originy="0px"
|
||||||
|
spacingx="2.6666px"
|
||||||
|
spacingy="2.6666px"
|
||||||
|
color="#0000ff"
|
||||||
|
empcolor="#0000ff"
|
||||||
|
opacity="0.2"
|
||||||
|
empopacity="0.4"
|
||||||
|
empspacing="2"
|
||||||
|
visible="true"
|
||||||
|
enabled="true" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:url(#linearGradient5348);fill-opacity:1;stroke:none"
|
||||||
|
id="rect3888"
|
||||||
|
width="95.997589"
|
||||||
|
height="95.997597"
|
||||||
|
x="15.999609"
|
||||||
|
y="-112.0004"
|
||||||
|
rx="10.285457"
|
||||||
|
ry="10.285458"
|
||||||
|
transform="scale(1,-1)" />
|
||||||
|
<path
|
||||||
|
style="opacity:0.60465118;fill:url(#linearGradient5453);fill-opacity:1;stroke:none"
|
||||||
|
d="m 25.485068,18.710656 c -3.798763,0 -6.856972,3.048578 -6.856972,6.835377 l 0.8,37.219744 c 6.539821,0.759062 16.86475,1.174831 23.9994,1.174831 25.561145,0 52.250262,-5.22011 65.841214,-13.190143 l 0,-25.104432 c 0,-3.786799 -3.05819,-6.835377 -6.85697,-6.835377 l -76.926672,-0.1 z"
|
||||||
|
id="rect5352"
|
||||||
|
sodipodi:nodetypes="cccscccc" />
|
||||||
|
<path
|
||||||
|
style="font-size:113.80991364px;fill:url(#linearGradient5451);fill-opacity:1"
|
||||||
|
d="m 56.043058,38.22138 c -4.502355,0.02208 -8.022848,0.601203 -9.573194,1.921002 -1.562598,1.327923 -2.331149,4.004842 -2.331134,8.024838 l 0,6.537605 c -1.5e-5,2.710357 -0.456344,4.708001 -1.460845,5.763007 -0.985927,1.036861 -2.157584,1.549216 -4.817681,1.549196 l -1.7095,0 0,3.965943 1.7095,0 c 2.641495,1.6e-5 3.81315,0.463195 4.817681,1.518211 1.004501,1.055044 1.46083,2.861382 1.460845,5.608091 l 0,2.556172 c -1.5e-5,4.020026 0.768536,10.660189 2.331134,12.006269 1.550346,1.319827 5.070839,2.077935 9.573194,2.106906 l 0,-3.965941 c -2.581373,-0.01061 -5.752521,-0.464158 -6.54272,-1.254849 -0.799914,-0.800372 -1.19667,-6.451506 -1.196649,-9.016319 l 0,-2.788555 C 48.303668,69.915298 47.928575,67.94064 47.091497,66.649126 46.254384,65.357638 45.51975,64.49115 43.454931,64 c 2.046218,-0.454739 2.768369,-1.342112 3.605484,-2.633634 0.855681,-1.291479 1.243253,-3.464838 1.243274,-6.32072 l 0,-6.769983 c -2.1e-5,-2.564784 0.396735,-4.249978 1.196649,-5.050381 0.790199,-0.790653 3.961347,-1.030684 6.54272,-1.037961 l 0,-3.965941 z m 15.913882,0 0,3.965941 c 2.581375,0.0072 5.752523,0.247308 6.542722,1.037961 0.799912,0.800403 1.19667,2.485597 1.196648,5.050381 l 0,6.769983 c 2.2e-5,2.855882 0.387593,5.029241 1.243273,6.32072 0.837117,1.291522 1.55927,2.178895 3.605488,2.633634 -2.064821,0.49115 -2.799455,1.357638 -3.636568,2.649126 -0.837078,1.291514 -1.212171,3.266172 -1.212193,6.10383 l 0,2.788555 c 2.2e-5,2.564813 -0.396736,8.215947 -1.196648,9.016319 -0.790199,0.790691 -3.961347,1.244092 -6.542722,1.254849 l 0,3.965941 c 4.502355,-0.02897 8.02285,-0.787079 9.573197,-2.106906 1.562597,-1.34608 2.33115,-7.986243 2.331135,-12.006269 l 0,-2.556172 c 1.5e-5,-2.746709 0.456342,-4.553047 1.460846,-5.608091 1.004528,-1.055016 2.176183,-1.518195 4.817678,-1.518211 l 1.7095,0 0,-3.965943 -1.7095,0 c -2.660094,2e-5 -3.831749,-0.512335 -4.817678,-1.549196 -1.004504,-1.055006 -1.460831,-3.05265 -1.460846,-5.763007 l 0,-6.537605 c 1.5e-5,-4.019996 -0.768538,-6.696915 -2.331135,-8.024838 C 79.97979,38.822583 76.459295,38.243453 71.95694,38.22138 z"
|
||||||
|
id="path3006"
|
||||||
|
sodipodi:nodetypes="csccsccccscccccsccsccccsccccsccccsccscccccsccccsccsc" />
|
||||||
|
<path
|
||||||
|
style="fill:url(#linearGradient5378);fill-opacity:1;stroke:none"
|
||||||
|
d="m 107.87589,25.774638 c 0.72539,1.084602 1.12497,2.38464 1.12497,3.791498 l 0,20.986745 c -13.590951,7.970031 -40.28007,13.190143 -65.841216,13.190143 -7.038772,0 -13.841689,-0.408385 -20.303062,-1.148132 l 0,0.320409 c 6.539821,0.759061 13.436264,1.17483 20.570914,1.17483 25.561145,0 52.250262,-5.22011 65.841214,-13.19014 l 0,-20.986745 c 0,-1.559831 -0.517,-2.990759 -1.39282,-4.138608 z"
|
||||||
|
id="path5369"
|
||||||
|
sodipodi:nodetypes="cccsccsccc" />
|
||||||
|
<path
|
||||||
|
id="path5380"
|
||||||
|
d="m 25.485068,109.37056 c -3.798763,0 -6.856972,-3.04858 -6.856972,-6.83539 l 0,-33.002043 c 6.539821,-0.759061 13.436266,-1.174829 20.570912,-1.174829 25.561149,0 56.57875,-25.058477 70.169702,-17.088444 l 0,51.265316 c 0,3.78681 -3.05819,6.83539 -6.85697,6.83539 l -77.026672,0 z"
|
||||||
|
style="opacity:0.4;fill:url(#radialGradient5386);fill-opacity:1;stroke:none"
|
||||||
|
sodipodi:nodetypes="cccscccc" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
id="path5414"
|
||||||
|
d="m 108,8 -4,8 c 3.30365,-0.176594 7.9579,2.481149 8,8 l 8,-4 C 120.007,14.388483 115.55603,8.131068 108,8 z"
|
||||||
|
style="fill:url(#radialGradient5426);fill-opacity:1;stroke:none;filter:url(#filter5416)"
|
||||||
|
clip-path="url(#clipPath5420)"
|
||||||
|
transform="matrix(0.85712141,0,0,0.85442216,9.142639,9.25759)" />
|
||||||
|
<path
|
||||||
|
clip-path="url(#clipPath5420)"
|
||||||
|
style="fill:url(#radialGradient5430);fill-opacity:1;stroke:none;filter:url(#filter5416)"
|
||||||
|
d="m 108,8 -4,8 c 3.30365,-0.176594 7.9579,2.481149 8,8 l 8,-4 C 120.007,14.388483 115.55603,8.131068 108,8 z"
|
||||||
|
id="path5428"
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
transform="matrix(-0.85712141,0,0,0.85442216,118.85417,9.25759)" />
|
||||||
|
<path
|
||||||
|
clip-path="url(#clipPath5420)"
|
||||||
|
style="opacity:0.52558139;fill:url(#radialGradient5436);fill-opacity:1;stroke:none;filter:url(#filter5416)"
|
||||||
|
d="m 108,8 -4,8 c 3.30365,-0.176594 7.9579,2.481149 8,8 l 8,-4 C 120.007,14.388483 115.55603,8.131068 108,8 z"
|
||||||
|
id="path5432"
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
transform="matrix(0.85712141,0,0,-0.85442216,9.142639,118.83578)" />
|
||||||
|
<path
|
||||||
|
transform="matrix(-0.85712141,0,0,-0.85442216,118.85417,118.83578)"
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
id="path5434"
|
||||||
|
d="m 108,8 -4,8 c 3.30365,-0.176594 7.9579,2.481149 8,8 l 8,-4 C 120.007,14.388483 115.55603,8.131068 108,8 z"
|
||||||
|
style="opacity:0.52558139;fill:url(#radialGradient5438);fill-opacity:1;stroke:none;filter:url(#filter5416)"
|
||||||
|
clip-path="url(#clipPath5420)" />
|
||||||
|
<path
|
||||||
|
clip-path="url(#clipPath5420)"
|
||||||
|
style="fill:url(#radialGradient5482);fill-opacity:1;stroke:none;filter:url(#filter5416)"
|
||||||
|
d="m 108,8 -4,8 c 3.30365,-0.176594 7.9579,2.481149 8,8 l 8,-4 C 120.007,14.388483 115.55603,8.131068 108,8 z"
|
||||||
|
id="path5455"
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
transform="matrix(0.85712141,0,0,0.85442216,9.142639,9.25759)" />
|
||||||
|
<path
|
||||||
|
transform="matrix(-0.85712141,0,0,0.85442216,118.85417,9.25759)"
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
id="path5457"
|
||||||
|
d="m 108,8 -4,8 c 3.30365,-0.176594 7.9579,2.481149 8,8 l 8,-4 C 120.007,14.388483 115.55603,8.131068 108,8 z"
|
||||||
|
style="fill:url(#radialGradient5480);fill-opacity:1;stroke:none;filter:url(#filter5416)"
|
||||||
|
clip-path="url(#clipPath5420)" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 14 KiB |
@ -10,6 +10,7 @@
|
|||||||
<file>scalable/copy.svg</file>
|
<file>scalable/copy.svg</file>
|
||||||
<file>scalable/coremods.svg</file>
|
<file>scalable/coremods.svg</file>
|
||||||
<file>scalable/custom-commands.svg</file>
|
<file>scalable/custom-commands.svg</file>
|
||||||
|
<file>scalable/environment-variables.svg</file>
|
||||||
<file>scalable/externaltools.svg</file>
|
<file>scalable/externaltools.svg</file>
|
||||||
<file>scalable/help.svg</file>
|
<file>scalable/help.svg</file>
|
||||||
<file>scalable/instance-settings.svg</file>
|
<file>scalable/instance-settings.svg</file>
|
||||||
|
345
launcher/resources/pe_blue/scalable/environment-variables.svg
Normal file
@ -0,0 +1,345 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
id="svg2"
|
||||||
|
height="32"
|
||||||
|
width="32"
|
||||||
|
version="1.1"
|
||||||
|
sodipodi:docname="environment-variables.svg"
|
||||||
|
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1011"
|
||||||
|
id="namedview52"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="7.375"
|
||||||
|
inkscape:cx="21.559322"
|
||||||
|
inkscape:cy="-2.9830509"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="32"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg2"
|
||||||
|
inkscape:snap-bbox="true"
|
||||||
|
inkscape:bbox-paths="true"
|
||||||
|
inkscape:snap-bbox-edge-midpoints="true"
|
||||||
|
inkscape:snap-bbox-midpoints="true"
|
||||||
|
inkscape:bbox-nodes="true"
|
||||||
|
inkscape:pagecheckerboard="true"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:deskcolor="#505050">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid858" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3931">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0"
|
||||||
|
id="stop3933" />
|
||||||
|
<stop
|
||||||
|
offset="0.69999987"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.10396039"
|
||||||
|
id="stop3939" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.14356436"
|
||||||
|
id="stop3935" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3900">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#f6f6f6;stop-opacity:1"
|
||||||
|
id="stop3902" />
|
||||||
|
<stop
|
||||||
|
offset="0.75714284"
|
||||||
|
style="stop-color:#494949;stop-opacity:1"
|
||||||
|
id="stop3904" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#2c2c2c;stop-opacity:1"
|
||||||
|
id="stop3906" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3808">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#333333;stop-opacity:1"
|
||||||
|
id="stop3810" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#c8c8c8;stop-opacity:1"
|
||||||
|
id="stop3812" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3030">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#000000;stop-opacity:1"
|
||||||
|
id="stop3032" />
|
||||||
|
<stop
|
||||||
|
offset="0.75714284"
|
||||||
|
style="stop-color:#333333;stop-opacity:1"
|
||||||
|
id="stop3038" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#4d4d4d;stop-opacity:1"
|
||||||
|
id="stop3034" />
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient
|
||||||
|
gradientTransform="matrix(0.67596238,0.94191445,-0.76796117,0.55112488,7.7178628,-19.890271)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3030"
|
||||||
|
id="radialGradient3036"
|
||||||
|
fy="14.242621"
|
||||||
|
fx="29.381905"
|
||||||
|
r="16.375"
|
||||||
|
cy="14.242621"
|
||||||
|
cx="29.381905" />
|
||||||
|
<linearGradient
|
||||||
|
gradientTransform="matrix(1.5,0,0,1,-16,4)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3808"
|
||||||
|
id="linearGradient3824"
|
||||||
|
y2="1033.8622"
|
||||||
|
x2="34"
|
||||||
|
y1="1033.8622"
|
||||||
|
x1="30" />
|
||||||
|
<linearGradient
|
||||||
|
gradientTransform="matrix(0.82142857,0,0,1.500001,6.7142857,-522.68214)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3808"
|
||||||
|
id="linearGradient3834"
|
||||||
|
y2="1039.3622"
|
||||||
|
x2="32"
|
||||||
|
y1="1043.3622"
|
||||||
|
x1="32" />
|
||||||
|
<radialGradient
|
||||||
|
gradientTransform="matrix(6.479993,1.9525666,-10.415476,2.1794781,10657.845,-1282.8793)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3900"
|
||||||
|
id="radialGradient3844"
|
||||||
|
fy="1039.813"
|
||||||
|
fx="30.724609"
|
||||||
|
r="3"
|
||||||
|
cy="1039.813"
|
||||||
|
cx="30.724609" />
|
||||||
|
<radialGradient
|
||||||
|
gradientTransform="matrix(2.5191507,2.9862959,-4.0491019,3.333339,4186.8847,-2518.44)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3900"
|
||||||
|
id="radialGradient3852"
|
||||||
|
fy="1039.813"
|
||||||
|
fx="30.724609"
|
||||||
|
r="3"
|
||||||
|
cy="1039.813"
|
||||||
|
cx="30.724609" />
|
||||||
|
<radialGradient
|
||||||
|
gradientTransform="matrix(-2.5191507,2.9863064,4.0491022,3.3333507,-4122.8849,-2518.4524)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3900"
|
||||||
|
id="radialGradient3857"
|
||||||
|
fy="1039.813"
|
||||||
|
fx="30.724609"
|
||||||
|
r="3"
|
||||||
|
cy="1039.813"
|
||||||
|
cx="30.724609" />
|
||||||
|
<radialGradient
|
||||||
|
gradientTransform="matrix(-0.69414478,2.3073251,-1.6952184,-0.67174747,96.941544,960.82172)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3900"
|
||||||
|
id="radialGradient3937"
|
||||||
|
fy="21.976955"
|
||||||
|
fx="31.946348"
|
||||||
|
r="19.25"
|
||||||
|
cy="21.976955"
|
||||||
|
cx="31.946348" />
|
||||||
|
</defs>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
fill="#3366cc"
|
||||||
|
d="M 26,32 H 6 C 2.7,32 0,29.3 0,26 V 6 C 0,2.7 2.7,0 6,0 h 20 c 3.3,0 6,2.7 6,6 v 20 c 0,3.3 -2.7,6 -6,6 z"
|
||||||
|
id="path2" />
|
||||||
|
<path
|
||||||
|
fill="#daeeff"
|
||||||
|
fill-rule="evenodd"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
d="M 28,6 C 28,4.9 27.1,4 26,4 H 6 C 4.9,4 4,4.9 4,6 v 20 c 0,1.1 0.9,2 2,2 h 20 c 1.1,0 2,-0.9 2,-2 z"
|
||||||
|
id="path4" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g869"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g871"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g873"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g875"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g877"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g879"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g881"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g883"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g885"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g887"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g889"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g891"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g893"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g895"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g897"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
id="g856"
|
||||||
|
style="fill:#c1272d;fill-opacity:1"
|
||||||
|
transform="matrix(0.0361121,0,0,0.0361121,6.5218379,6.0218363)">
|
||||||
|
<g
|
||||||
|
id="g854"
|
||||||
|
style="fill:#c1272d;fill-opacity:1">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path850"
|
||||||
|
d="m -14.4505,276.30781 c 0,-6.995 2.705,-13.403 7.846,-18.556 l 156.788,-156.782 c 5.128,-5.140997 11.554,-7.851997 18.568,-7.851997 7.026,0 13.452,2.717 18.556,7.845997 l 16.83,16.83 c 5.129,5.135 7.84,11.549 7.84,18.538 0,7.026 -2.717,13.452 -7.846,18.556 l -121.415001,121.42 121.427001,121.433 c 5.129,5.135 7.84,11.555 7.84,18.55 0,7.02 -2.717,13.439 -7.846,18.544 l -16.775,16.774 c -5.116,5.165 -11.555,7.895 -18.611,7.895 -7.044,0 -13.47,-2.723 -18.556,-7.846 l -156.813,-156.8 c -5.128,-5.14 -7.833,-11.549 -7.833,-18.55 z"
|
||||||
|
style="fill:#c1272d;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path322"
|
||||||
|
d="m 539.38069,276.30781 c 0,-6.995 -2.705,-13.403 -7.846,-18.556 l -156.788,-156.782 c -5.128,-5.140997 -11.554,-7.851997 -18.568,-7.851997 -7.026,0 -13.452,2.717 -18.556,7.845997 l -16.83,16.83 c -5.129,5.135 -7.84,11.549 -7.84,18.538 0,7.026 2.717,13.452 7.846,18.556 l 121.415,121.42 -121.427,121.433 c -5.129,5.135 -7.84,11.555 -7.84,18.55 0,7.02 2.717,13.439 7.846,18.544 l 16.775,16.774 c 5.116,5.165 11.555,7.895 18.611,7.895 7.044,0 13.47,-2.723 18.556,-7.846 l 156.813,-156.8 c 5.128,-5.14 7.833,-11.549 7.833,-18.55 z"
|
||||||
|
style="fill:#c1272d;fill-opacity:1" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g858"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g860"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g862"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g864"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g866"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g868"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g870"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g872"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g874"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g876"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g878"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g880"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g882"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g884"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g886"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g12">
|
||||||
|
<path
|
||||||
|
id="path6"
|
||||||
|
d="m 6,28 h 20 c 1.1,0 2,-0.9 2,-2 V 9 6 C 28,4.9 27.1,4 26,4 H 6 C 4.9,4 4,4.9 4,6 v 3 17 c 0,1.1 0.9,2 2,2 z"
|
||||||
|
fill="none" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 11 KiB |
@ -10,6 +10,7 @@
|
|||||||
<file>scalable/copy.svg</file>
|
<file>scalable/copy.svg</file>
|
||||||
<file>scalable/coremods.svg</file>
|
<file>scalable/coremods.svg</file>
|
||||||
<file>scalable/custom-commands.svg</file>
|
<file>scalable/custom-commands.svg</file>
|
||||||
|
<file>scalable/environment-variables.svg</file>
|
||||||
<file>scalable/externaltools.svg</file>
|
<file>scalable/externaltools.svg</file>
|
||||||
<file>scalable/help.svg</file>
|
<file>scalable/help.svg</file>
|
||||||
<file>scalable/instance-settings.svg</file>
|
<file>scalable/instance-settings.svg</file>
|
||||||
|
347
launcher/resources/pe_colored/scalable/environment-variables.svg
Normal file
@ -0,0 +1,347 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
id="svg2"
|
||||||
|
height="32"
|
||||||
|
width="32"
|
||||||
|
version="1.1"
|
||||||
|
sodipodi:docname="environment-variables.svg"
|
||||||
|
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1011"
|
||||||
|
id="namedview52"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="10.429825"
|
||||||
|
inkscape:cx="3.4995793"
|
||||||
|
inkscape:cy="11.793103"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="32"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg2"
|
||||||
|
inkscape:snap-bbox="true"
|
||||||
|
inkscape:bbox-paths="true"
|
||||||
|
inkscape:snap-bbox-edge-midpoints="true"
|
||||||
|
inkscape:snap-bbox-midpoints="true"
|
||||||
|
inkscape:bbox-nodes="true"
|
||||||
|
inkscape:pagecheckerboard="true"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:deskcolor="#505050">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid858" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3931">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0"
|
||||||
|
id="stop3933" />
|
||||||
|
<stop
|
||||||
|
offset="0.69999987"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.10396039"
|
||||||
|
id="stop3939" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.14356436"
|
||||||
|
id="stop3935" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3900">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#f6f6f6;stop-opacity:1"
|
||||||
|
id="stop3902" />
|
||||||
|
<stop
|
||||||
|
offset="0.75714284"
|
||||||
|
style="stop-color:#494949;stop-opacity:1"
|
||||||
|
id="stop3904" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#2c2c2c;stop-opacity:1"
|
||||||
|
id="stop3906" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3808">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#333333;stop-opacity:1"
|
||||||
|
id="stop3810" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#c8c8c8;stop-opacity:1"
|
||||||
|
id="stop3812" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3030">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#000000;stop-opacity:1"
|
||||||
|
id="stop3032" />
|
||||||
|
<stop
|
||||||
|
offset="0.75714284"
|
||||||
|
style="stop-color:#333333;stop-opacity:1"
|
||||||
|
id="stop3038" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#4d4d4d;stop-opacity:1"
|
||||||
|
id="stop3034" />
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient
|
||||||
|
gradientTransform="matrix(0.67596238,0.94191445,-0.76796117,0.55112488,7.7178628,-19.890271)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3030"
|
||||||
|
id="radialGradient3036"
|
||||||
|
fy="14.242621"
|
||||||
|
fx="29.381905"
|
||||||
|
r="16.375"
|
||||||
|
cy="14.242621"
|
||||||
|
cx="29.381905" />
|
||||||
|
<linearGradient
|
||||||
|
gradientTransform="matrix(1.5,0,0,1,-16,4)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3808"
|
||||||
|
id="linearGradient3824"
|
||||||
|
y2="1033.8622"
|
||||||
|
x2="34"
|
||||||
|
y1="1033.8622"
|
||||||
|
x1="30" />
|
||||||
|
<linearGradient
|
||||||
|
gradientTransform="matrix(0.82142857,0,0,1.500001,6.7142857,-522.68214)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3808"
|
||||||
|
id="linearGradient3834"
|
||||||
|
y2="1039.3622"
|
||||||
|
x2="32"
|
||||||
|
y1="1043.3622"
|
||||||
|
x1="32" />
|
||||||
|
<radialGradient
|
||||||
|
gradientTransform="matrix(6.479993,1.9525666,-10.415476,2.1794781,10657.845,-1282.8793)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3900"
|
||||||
|
id="radialGradient3844"
|
||||||
|
fy="1039.813"
|
||||||
|
fx="30.724609"
|
||||||
|
r="3"
|
||||||
|
cy="1039.813"
|
||||||
|
cx="30.724609" />
|
||||||
|
<radialGradient
|
||||||
|
gradientTransform="matrix(2.5191507,2.9862959,-4.0491019,3.333339,4186.8847,-2518.44)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3900"
|
||||||
|
id="radialGradient3852"
|
||||||
|
fy="1039.813"
|
||||||
|
fx="30.724609"
|
||||||
|
r="3"
|
||||||
|
cy="1039.813"
|
||||||
|
cx="30.724609" />
|
||||||
|
<radialGradient
|
||||||
|
gradientTransform="matrix(-2.5191507,2.9863064,4.0491022,3.3333507,-4122.8849,-2518.4524)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3900"
|
||||||
|
id="radialGradient3857"
|
||||||
|
fy="1039.813"
|
||||||
|
fx="30.724609"
|
||||||
|
r="3"
|
||||||
|
cy="1039.813"
|
||||||
|
cx="30.724609" />
|
||||||
|
<radialGradient
|
||||||
|
gradientTransform="matrix(-0.69414478,2.3073251,-1.6952184,-0.67174747,96.941544,960.82172)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3900"
|
||||||
|
id="radialGradient3937"
|
||||||
|
fy="21.976955"
|
||||||
|
fx="31.946348"
|
||||||
|
r="19.25"
|
||||||
|
cy="21.976955"
|
||||||
|
cx="31.946348" />
|
||||||
|
</defs>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<path
|
||||||
|
id="path2"
|
||||||
|
d="M 28,6 C 28,4.9 27.1,4 26,4 H 6 C 4.9,4 4,4.9 4,6 v 20 c 0,1.1 0.9,2 2,2 h 20 c 1.1,0 2,-0.9 2,-2 z"
|
||||||
|
fill="#f2f2f2"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
fill-rule="evenodd" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g869"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g871"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g873"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g875"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g877"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g879"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g881"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g883"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g885"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g887"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g889"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g891"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g893"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g895"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g897"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
id="g856"
|
||||||
|
style="fill:#c1272d;fill-opacity:1"
|
||||||
|
transform="matrix(0.0361121,0,0,0.0361121,6.5218379,6.0218363)">
|
||||||
|
<g
|
||||||
|
id="g854"
|
||||||
|
style="fill:#c1272d;fill-opacity:1">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path850"
|
||||||
|
d="m -14.4505,276.30781 c 0,-6.995 2.705,-13.403 7.846,-18.556 l 156.788,-156.782 c 5.128,-5.140997 11.554,-7.851997 18.568,-7.851997 7.026,0 13.452,2.717 18.556,7.845997 l 16.83,16.83 c 5.129,5.135 7.84,11.549 7.84,18.538 0,7.026 -2.717,13.452 -7.846,18.556 l -121.415001,121.42 121.427001,121.433 c 5.129,5.135 7.84,11.555 7.84,18.55 0,7.02 -2.717,13.439 -7.846,18.544 l -16.775,16.774 c -5.116,5.165 -11.555,7.895 -18.611,7.895 -7.044,0 -13.47,-2.723 -18.556,-7.846 l -156.813,-156.8 c -5.128,-5.14 -7.833,-11.549 -7.833,-18.55 z"
|
||||||
|
style="fill:#c1272d;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path322"
|
||||||
|
d="m 539.38069,276.30781 c 0,-6.995 -2.705,-13.403 -7.846,-18.556 l -156.788,-156.782 c -5.128,-5.140997 -11.554,-7.851997 -18.568,-7.851997 -7.026,0 -13.452,2.717 -18.556,7.845997 l -16.83,16.83 c -5.129,5.135 -7.84,11.549 -7.84,18.538 0,7.026 2.717,13.452 7.846,18.556 l 121.415,121.42 -121.427,121.433 c -5.129,5.135 -7.84,11.555 -7.84,18.55 0,7.02 2.717,13.439 7.846,18.544 l 16.775,16.774 c 5.116,5.165 11.555,7.895 18.611,7.895 7.044,0 13.47,-2.723 18.556,-7.846 l 156.813,-156.8 c 5.128,-5.14 7.833,-11.549 7.833,-18.55 z"
|
||||||
|
style="fill:#c1272d;fill-opacity:1" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g858"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g860"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g862"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g864"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g866"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g868"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g870"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g872"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g874"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g876"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g878"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g880"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g882"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g884"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g886"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g12">
|
||||||
|
<path
|
||||||
|
id="path6"
|
||||||
|
d="m 6,28 h 20 c 1.1,0 2,-0.9 2,-2 V 9 6 C 28,4.9 27.1,4 26,4 H 6 C 4.9,4 4,4.9 4,6 v 3 17 c 0,1.1 0.9,2 2,2 z"
|
||||||
|
fill="none" />
|
||||||
|
<path
|
||||||
|
id="path8"
|
||||||
|
d="M 26,0 H 6 C 2.7,0 0,2.7 0,6 V 9 H 4 V 6 C 4,4.9 4.9,4 6,4 h 20 c 1.1,0 2,0.9 2,2 v 3 h 4 V 6 C 32,2.7 29.3,0 26,0 Z"
|
||||||
|
fill="#39b54a" />
|
||||||
|
<path
|
||||||
|
id="path10"
|
||||||
|
d="m 28,26 c 0,1.1 -0.9,2 -2,2 H 6 C 4.9,28 4,27.1 4,26 V 9 H 0 v 17 c 0,3.3 2.7,6 6,6 h 20 c 3.3,0 6,-2.7 6,-6 V 9 h -4 z"
|
||||||
|
fill="#8c6239" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 11 KiB |
@ -10,6 +10,7 @@
|
|||||||
<file>scalable/copy.svg</file>
|
<file>scalable/copy.svg</file>
|
||||||
<file>scalable/coremods.svg</file>
|
<file>scalable/coremods.svg</file>
|
||||||
<file>scalable/custom-commands.svg</file>
|
<file>scalable/custom-commands.svg</file>
|
||||||
|
<file>scalable/environment-variables.svg</file>
|
||||||
<file>scalable/externaltools.svg</file>
|
<file>scalable/externaltools.svg</file>
|
||||||
<file>scalable/help.svg</file>
|
<file>scalable/help.svg</file>
|
||||||
<file>scalable/instance-settings.svg</file>
|
<file>scalable/instance-settings.svg</file>
|
||||||
|
345
launcher/resources/pe_dark/scalable/environment-variables.svg
Normal file
@ -0,0 +1,345 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
id="svg2"
|
||||||
|
height="32"
|
||||||
|
width="32"
|
||||||
|
version="1.1"
|
||||||
|
sodipodi:docname="environment-variables.svg"
|
||||||
|
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1720"
|
||||||
|
inkscape:window-height="749"
|
||||||
|
id="namedview52"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="14.75"
|
||||||
|
inkscape:cx="20.305085"
|
||||||
|
inkscape:cy="19.79661"
|
||||||
|
inkscape:window-x="153"
|
||||||
|
inkscape:window-y="287"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
inkscape:current-layer="svg2"
|
||||||
|
inkscape:snap-bbox="true"
|
||||||
|
inkscape:bbox-paths="true"
|
||||||
|
inkscape:snap-bbox-edge-midpoints="true"
|
||||||
|
inkscape:snap-bbox-midpoints="true"
|
||||||
|
inkscape:bbox-nodes="true"
|
||||||
|
inkscape:pagecheckerboard="true"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:deskcolor="#505050">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid858" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3931">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0"
|
||||||
|
id="stop3933" />
|
||||||
|
<stop
|
||||||
|
offset="0.69999987"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.10396039"
|
||||||
|
id="stop3939" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.14356436"
|
||||||
|
id="stop3935" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3900">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#f6f6f6;stop-opacity:1"
|
||||||
|
id="stop3902" />
|
||||||
|
<stop
|
||||||
|
offset="0.75714284"
|
||||||
|
style="stop-color:#494949;stop-opacity:1"
|
||||||
|
id="stop3904" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#2c2c2c;stop-opacity:1"
|
||||||
|
id="stop3906" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3808">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#333333;stop-opacity:1"
|
||||||
|
id="stop3810" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#c8c8c8;stop-opacity:1"
|
||||||
|
id="stop3812" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3030">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#000000;stop-opacity:1"
|
||||||
|
id="stop3032" />
|
||||||
|
<stop
|
||||||
|
offset="0.75714284"
|
||||||
|
style="stop-color:#333333;stop-opacity:1"
|
||||||
|
id="stop3038" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#4d4d4d;stop-opacity:1"
|
||||||
|
id="stop3034" />
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient
|
||||||
|
gradientTransform="matrix(0.67596238,0.94191445,-0.76796117,0.55112488,7.7178628,-19.890271)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3030"
|
||||||
|
id="radialGradient3036"
|
||||||
|
fy="14.242621"
|
||||||
|
fx="29.381905"
|
||||||
|
r="16.375"
|
||||||
|
cy="14.242621"
|
||||||
|
cx="29.381905" />
|
||||||
|
<linearGradient
|
||||||
|
gradientTransform="matrix(1.5,0,0,1,-16,4)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3808"
|
||||||
|
id="linearGradient3824"
|
||||||
|
y2="1033.8622"
|
||||||
|
x2="34"
|
||||||
|
y1="1033.8622"
|
||||||
|
x1="30" />
|
||||||
|
<linearGradient
|
||||||
|
gradientTransform="matrix(0.82142857,0,0,1.500001,6.7142857,-522.68214)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3808"
|
||||||
|
id="linearGradient3834"
|
||||||
|
y2="1039.3622"
|
||||||
|
x2="32"
|
||||||
|
y1="1043.3622"
|
||||||
|
x1="32" />
|
||||||
|
<radialGradient
|
||||||
|
gradientTransform="matrix(6.479993,1.9525666,-10.415476,2.1794781,10657.845,-1282.8793)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3900"
|
||||||
|
id="radialGradient3844"
|
||||||
|
fy="1039.813"
|
||||||
|
fx="30.724609"
|
||||||
|
r="3"
|
||||||
|
cy="1039.813"
|
||||||
|
cx="30.724609" />
|
||||||
|
<radialGradient
|
||||||
|
gradientTransform="matrix(2.5191507,2.9862959,-4.0491019,3.333339,4186.8847,-2518.44)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3900"
|
||||||
|
id="radialGradient3852"
|
||||||
|
fy="1039.813"
|
||||||
|
fx="30.724609"
|
||||||
|
r="3"
|
||||||
|
cy="1039.813"
|
||||||
|
cx="30.724609" />
|
||||||
|
<radialGradient
|
||||||
|
gradientTransform="matrix(-2.5191507,2.9863064,4.0491022,3.3333507,-4122.8849,-2518.4524)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3900"
|
||||||
|
id="radialGradient3857"
|
||||||
|
fy="1039.813"
|
||||||
|
fx="30.724609"
|
||||||
|
r="3"
|
||||||
|
cy="1039.813"
|
||||||
|
cx="30.724609" />
|
||||||
|
<radialGradient
|
||||||
|
gradientTransform="matrix(-0.69414478,2.3073251,-1.6952184,-0.67174747,96.941544,960.82172)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3900"
|
||||||
|
id="radialGradient3937"
|
||||||
|
fy="21.976955"
|
||||||
|
fx="31.946348"
|
||||||
|
r="19.25"
|
||||||
|
cy="21.976955"
|
||||||
|
cx="31.946348" />
|
||||||
|
</defs>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
d="M 26,32 H 6 C 2.7,32 0,29.3 0,26 V 6 C 0,2.7 2.7,0 6,0 h 20 c 3.3,0 6,2.7 6,6 v 20 c 0,3.3 -2.7,6 -6,6 z"
|
||||||
|
id="path2"
|
||||||
|
style="fill-opacity:1;fill:#010101" />
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
fill="#f2f2f2"
|
||||||
|
d="M 28,6 C 28,4.9 27.1,4 26,4 H 6 C 4.9,4 4,4.9 4,6 v 20 c 0,1.1 0.9,2 2,2 h 20 c 1.1,0 2,-0.9 2,-2 z"
|
||||||
|
id="path4" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g869"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g871"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g873"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g875"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g877"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g879"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g881"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g883"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g885"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g887"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g889"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g891"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g893"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g895"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g897"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
id="g856"
|
||||||
|
style="fill:#666666;fill-opacity:1"
|
||||||
|
transform="matrix(0.0361121,0,0,0.0361121,6.5218379,6.0218363)">
|
||||||
|
<g
|
||||||
|
id="g854"
|
||||||
|
style="fill:#666666;fill-opacity:1">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path850"
|
||||||
|
d="m -14.4505,276.30781 c 0,-6.995 2.705,-13.403 7.846,-18.556 l 156.788,-156.782 c 5.128,-5.140997 11.554,-7.851997 18.568,-7.851997 7.026,0 13.452,2.717 18.556,7.845997 l 16.83,16.83 c 5.129,5.135 7.84,11.549 7.84,18.538 0,7.026 -2.717,13.452 -7.846,18.556 l -121.415001,121.42 121.427001,121.433 c 5.129,5.135 7.84,11.555 7.84,18.55 0,7.02 -2.717,13.439 -7.846,18.544 l -16.775,16.774 c -5.116,5.165 -11.555,7.895 -18.611,7.895 -7.044,0 -13.47,-2.723 -18.556,-7.846 l -156.813,-156.8 c -5.128,-5.14 -7.833,-11.549 -7.833,-18.55 z"
|
||||||
|
style="fill:#666666;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path322"
|
||||||
|
d="m 539.38069,276.30781 c 0,-6.995 -2.705,-13.403 -7.846,-18.556 l -156.788,-156.782 c -5.128,-5.140997 -11.554,-7.851997 -18.568,-7.851997 -7.026,0 -13.452,2.717 -18.556,7.845997 l -16.83,16.83 c -5.129,5.135 -7.84,11.549 -7.84,18.538 0,7.026 2.717,13.452 7.846,18.556 l 121.415,121.42 -121.427,121.433 c -5.129,5.135 -7.84,11.555 -7.84,18.55 0,7.02 2.717,13.439 7.846,18.544 l 16.775,16.774 c 5.116,5.165 11.555,7.895 18.611,7.895 7.044,0 13.47,-2.723 18.556,-7.846 l 156.813,-156.8 c 5.128,-5.14 7.833,-11.549 7.833,-18.55 z"
|
||||||
|
style="fill:#666666;fill-opacity:1" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g858"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g860"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g862"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g864"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g866"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g868"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g870"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g872"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g874"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g876"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g878"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g880"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g882"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g884"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g886"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g12">
|
||||||
|
<path
|
||||||
|
id="path6"
|
||||||
|
d="m 6,28 h 20 c 1.1,0 2,-0.9 2,-2 V 9 6 C 28,4.9 27.1,4 26,4 H 6 C 4.9,4 4,4.9 4,6 v 3 17 c 0,1.1 0.9,2 2,2 z"
|
||||||
|
fill="none" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 11 KiB |
@ -10,6 +10,7 @@
|
|||||||
<file>scalable/copy.svg</file>
|
<file>scalable/copy.svg</file>
|
||||||
<file>scalable/coremods.svg</file>
|
<file>scalable/coremods.svg</file>
|
||||||
<file>scalable/custom-commands.svg</file>
|
<file>scalable/custom-commands.svg</file>
|
||||||
|
<file>scalable/environment-variables.svg</file>
|
||||||
<file>scalable/externaltools.svg</file>
|
<file>scalable/externaltools.svg</file>
|
||||||
<file>scalable/help.svg</file>
|
<file>scalable/help.svg</file>
|
||||||
<file>scalable/instance-settings.svg</file>
|
<file>scalable/instance-settings.svg</file>
|
||||||
|
345
launcher/resources/pe_light/scalable/environment-variables.svg
Normal file
@ -0,0 +1,345 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
id="svg2"
|
||||||
|
height="32"
|
||||||
|
width="32"
|
||||||
|
version="1.1"
|
||||||
|
sodipodi:docname="environment-variables.svg"
|
||||||
|
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1011"
|
||||||
|
id="namedview52"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="11.313709"
|
||||||
|
inkscape:cx="5.5242717"
|
||||||
|
inkscape:cy="12.28598"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="32"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg2"
|
||||||
|
inkscape:snap-bbox="true"
|
||||||
|
inkscape:bbox-paths="true"
|
||||||
|
inkscape:snap-bbox-edge-midpoints="true"
|
||||||
|
inkscape:snap-bbox-midpoints="true"
|
||||||
|
inkscape:bbox-nodes="true"
|
||||||
|
inkscape:pagecheckerboard="true"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:deskcolor="#505050">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid858" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3931">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0"
|
||||||
|
id="stop3933" />
|
||||||
|
<stop
|
||||||
|
offset="0.69999987"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.10396039"
|
||||||
|
id="stop3939" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.14356436"
|
||||||
|
id="stop3935" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3900">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#f6f6f6;stop-opacity:1"
|
||||||
|
id="stop3902" />
|
||||||
|
<stop
|
||||||
|
offset="0.75714284"
|
||||||
|
style="stop-color:#494949;stop-opacity:1"
|
||||||
|
id="stop3904" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#2c2c2c;stop-opacity:1"
|
||||||
|
id="stop3906" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3808">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#333333;stop-opacity:1"
|
||||||
|
id="stop3810" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#c8c8c8;stop-opacity:1"
|
||||||
|
id="stop3812" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3030">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#000000;stop-opacity:1"
|
||||||
|
id="stop3032" />
|
||||||
|
<stop
|
||||||
|
offset="0.75714284"
|
||||||
|
style="stop-color:#333333;stop-opacity:1"
|
||||||
|
id="stop3038" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#4d4d4d;stop-opacity:1"
|
||||||
|
id="stop3034" />
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient
|
||||||
|
gradientTransform="matrix(0.67596238,0.94191445,-0.76796117,0.55112488,7.7178628,-19.890271)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3030"
|
||||||
|
id="radialGradient3036"
|
||||||
|
fy="14.242621"
|
||||||
|
fx="29.381905"
|
||||||
|
r="16.375"
|
||||||
|
cy="14.242621"
|
||||||
|
cx="29.381905" />
|
||||||
|
<linearGradient
|
||||||
|
gradientTransform="matrix(1.5,0,0,1,-16,4)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3808"
|
||||||
|
id="linearGradient3824"
|
||||||
|
y2="1033.8622"
|
||||||
|
x2="34"
|
||||||
|
y1="1033.8622"
|
||||||
|
x1="30" />
|
||||||
|
<linearGradient
|
||||||
|
gradientTransform="matrix(0.82142857,0,0,1.500001,6.7142857,-522.68214)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3808"
|
||||||
|
id="linearGradient3834"
|
||||||
|
y2="1039.3622"
|
||||||
|
x2="32"
|
||||||
|
y1="1043.3622"
|
||||||
|
x1="32" />
|
||||||
|
<radialGradient
|
||||||
|
gradientTransform="matrix(6.479993,1.9525666,-10.415476,2.1794781,10657.845,-1282.8793)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3900"
|
||||||
|
id="radialGradient3844"
|
||||||
|
fy="1039.813"
|
||||||
|
fx="30.724609"
|
||||||
|
r="3"
|
||||||
|
cy="1039.813"
|
||||||
|
cx="30.724609" />
|
||||||
|
<radialGradient
|
||||||
|
gradientTransform="matrix(2.5191507,2.9862959,-4.0491019,3.333339,4186.8847,-2518.44)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3900"
|
||||||
|
id="radialGradient3852"
|
||||||
|
fy="1039.813"
|
||||||
|
fx="30.724609"
|
||||||
|
r="3"
|
||||||
|
cy="1039.813"
|
||||||
|
cx="30.724609" />
|
||||||
|
<radialGradient
|
||||||
|
gradientTransform="matrix(-2.5191507,2.9863064,4.0491022,3.3333507,-4122.8849,-2518.4524)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3900"
|
||||||
|
id="radialGradient3857"
|
||||||
|
fy="1039.813"
|
||||||
|
fx="30.724609"
|
||||||
|
r="3"
|
||||||
|
cy="1039.813"
|
||||||
|
cx="30.724609" />
|
||||||
|
<radialGradient
|
||||||
|
gradientTransform="matrix(-0.69414478,2.3073251,-1.6952184,-0.67174747,96.941544,960.82172)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
xlink:href="#linearGradient3900"
|
||||||
|
id="radialGradient3937"
|
||||||
|
fy="21.976955"
|
||||||
|
fx="31.946348"
|
||||||
|
r="19.25"
|
||||||
|
cy="21.976955"
|
||||||
|
cx="31.946348" />
|
||||||
|
</defs>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
d="M 26,32 H 6 C 2.7,32 0,29.3 0,26 V 6 C 0,2.7 2.7,0 6,0 h 20 c 3.3,0 6,2.7 6,6 v 20 c 0,3.3 -2.7,6 -6,6 z"
|
||||||
|
id="path2"
|
||||||
|
style="fill-opacity:1;fill:#f2f2f2" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g869"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g871"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g873"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g875"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g877"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g879"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g881"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g883"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g885"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g887"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g889"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g891"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g893"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g895"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<g
|
||||||
|
style="fill:#008000"
|
||||||
|
id="g897"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499946,5.2499965)" />
|
||||||
|
<path
|
||||||
|
id="path2-3"
|
||||||
|
d="M 28,6 C 28,4.9 27.1,4 26,4 H 6 C 4.9,4 4,4.9 4,6 v 20.000001 c 0,1.1 0.9,2 2,2 h 20 c 1.1,0 2,-0.9 2,-2 z"
|
||||||
|
fill="#4d4d4d"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
fill-rule="evenodd" />
|
||||||
|
<g
|
||||||
|
id="g856"
|
||||||
|
style="fill:#ffffff;fill-opacity:1"
|
||||||
|
transform="matrix(0.0361121,0,0,0.0361121,6.5218379,6.0218363)">
|
||||||
|
<g
|
||||||
|
id="g854"
|
||||||
|
style="fill:#ffffff;fill-opacity:1">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path850"
|
||||||
|
d="m -14.4505,276.30781 c 0,-6.995 2.705,-13.403 7.846,-18.556 l 156.788,-156.782 c 5.128,-5.140997 11.554,-7.851997 18.568,-7.851997 7.026,0 13.452,2.717 18.556,7.845997 l 16.83,16.83 c 5.129,5.135 7.84,11.549 7.84,18.538 0,7.026 -2.717,13.452 -7.846,18.556 l -121.415001,121.42 121.427001,121.433 c 5.129,5.135 7.84,11.555 7.84,18.55 0,7.02 -2.717,13.439 -7.846,18.544 l -16.775,16.774 c -5.116,5.165 -11.555,7.895 -18.611,7.895 -7.044,0 -13.47,-2.723 -18.556,-7.846 l -156.813,-156.8 c -5.128,-5.14 -7.833,-11.549 -7.833,-18.55 z"
|
||||||
|
style="fill:#ffffff;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path322"
|
||||||
|
d="m 539.38069,276.30781 c 0,-6.995 -2.705,-13.403 -7.846,-18.556 l -156.788,-156.782 c -5.128,-5.140997 -11.554,-7.851997 -18.568,-7.851997 -7.026,0 -13.452,2.717 -18.556,7.845997 l -16.83,16.83 c -5.129,5.135 -7.84,11.549 -7.84,18.538 0,7.026 2.717,13.452 7.846,18.556 l 121.415,121.42 -121.427,121.433 c -5.129,5.135 -7.84,11.555 -7.84,18.55 0,7.02 2.717,13.439 7.846,18.544 l 16.775,16.774 c 5.116,5.165 11.555,7.895 18.611,7.895 7.044,0 13.47,-2.723 18.556,-7.846 l 156.813,-156.8 c 5.128,-5.14 7.833,-11.549 7.833,-18.55 z"
|
||||||
|
style="fill:#ffffff;fill-opacity:1" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g858"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g860"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g862"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g864"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g866"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g868"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g870"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g872"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g874"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g876"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g878"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g880"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g882"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g884"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g886"
|
||||||
|
style="fill:#00ff00"
|
||||||
|
transform="matrix(0.04286288,0,0,0.04286288,4.7499948,4.2499932)" />
|
||||||
|
<g
|
||||||
|
id="g12">
|
||||||
|
<path
|
||||||
|
id="path6"
|
||||||
|
d="m 6,28 h 20 c 1.1,0 2,-0.9 2,-2 V 9 6 C 28,4.9 27.1,4 26,4 H 6 C 4.9,4 4,4.9 4,6 v 3 17 c 0,1.1 0.9,2 2,2 z"
|
||||||
|
fill="none" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 11 KiB |
@ -1198,17 +1198,27 @@ void MainWindow::on_actionViewCentralModsFolder_triggered()
|
|||||||
|
|
||||||
void MainWindow::on_actionViewIconThemeFolder_triggered()
|
void MainWindow::on_actionViewIconThemeFolder_triggered()
|
||||||
{
|
{
|
||||||
DesktopServices::openDirectory(APPLICATION->themeManager()->getIconThemesFolder().path());
|
DesktopServices::openDirectory(APPLICATION->themeManager()->getIconThemesFolder().path(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_actionViewWidgetThemeFolder_triggered()
|
void MainWindow::on_actionViewWidgetThemeFolder_triggered()
|
||||||
{
|
{
|
||||||
DesktopServices::openDirectory(APPLICATION->themeManager()->getApplicationThemesFolder().path());
|
DesktopServices::openDirectory(APPLICATION->themeManager()->getApplicationThemesFolder().path(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_actionViewCatPackFolder_triggered()
|
void MainWindow::on_actionViewCatPackFolder_triggered()
|
||||||
{
|
{
|
||||||
DesktopServices::openDirectory(APPLICATION->themeManager()->getCatPacksFolder().path());
|
DesktopServices::openDirectory(APPLICATION->themeManager()->getCatPacksFolder().path(), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_actionViewIconsFolder_triggered()
|
||||||
|
{
|
||||||
|
DesktopServices::openDirectory(APPLICATION->icons()->getDirectory(), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_actionViewLogsFolder_triggered()
|
||||||
|
{
|
||||||
|
DesktopServices::openDirectory("logs", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::refreshInstances()
|
void MainWindow::refreshInstances()
|
||||||
|
@ -117,6 +117,8 @@ class MainWindow : public QMainWindow {
|
|||||||
void on_actionViewIconThemeFolder_triggered();
|
void on_actionViewIconThemeFolder_triggered();
|
||||||
void on_actionViewWidgetThemeFolder_triggered();
|
void on_actionViewWidgetThemeFolder_triggered();
|
||||||
void on_actionViewCatPackFolder_triggered();
|
void on_actionViewCatPackFolder_triggered();
|
||||||
|
void on_actionViewIconsFolder_triggered();
|
||||||
|
void on_actionViewLogsFolder_triggered();
|
||||||
|
|
||||||
void on_actionViewSelectedInstFolder_triggered();
|
void on_actionViewSelectedInstFolder_triggered();
|
||||||
|
|
||||||
|
@ -194,6 +194,9 @@
|
|||||||
<addaction name="actionViewIconThemeFolder"/>
|
<addaction name="actionViewIconThemeFolder"/>
|
||||||
<addaction name="actionViewWidgetThemeFolder"/>
|
<addaction name="actionViewWidgetThemeFolder"/>
|
||||||
<addaction name="actionViewCatPackFolder"/>
|
<addaction name="actionViewCatPackFolder"/>
|
||||||
|
<addaction name="actionViewIconsFolder"/>
|
||||||
|
<addaction name="separator"/>
|
||||||
|
<addaction name="actionViewLogsFolder"/>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QMenu" name="accountsMenu">
|
<widget class="QMenu" name="accountsMenu">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
@ -545,10 +548,10 @@
|
|||||||
<normaloff>.</normaloff>.</iconset>
|
<normaloff>.</normaloff>.</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>View &Instance Folder</string>
|
<string>&Instances</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Open the instance folder in a file browser.</string>
|
<string>Open the instances folder in a file browser.</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="actionViewLauncherRootFolder">
|
<action name="actionViewLauncherRootFolder">
|
||||||
@ -557,7 +560,7 @@
|
|||||||
<normaloff>.</normaloff>.</iconset>
|
<normaloff>.</normaloff>.</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>View Launcher &Root Folder</string>
|
<string>Launcher &Root</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Open the launcher's root folder in a file browser.</string>
|
<string>Open the launcher's root folder in a file browser.</string>
|
||||||
@ -569,12 +572,36 @@
|
|||||||
<normaloff>.</normaloff>.</iconset>
|
<normaloff>.</normaloff>.</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>View &Central Mods Folder</string>
|
<string>&Central Mods</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Open the central mods folder in a file browser.</string>
|
<string>Open the central mods folder in a file browser.</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
|
<action name="actionViewIconsFolder">
|
||||||
|
<property name="icon">
|
||||||
|
<iconset theme="viewfolder">
|
||||||
|
<normaloff>.</normaloff>.</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Instance Icons</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Open the instance icons folder in a file browser.</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="actionViewLogsFolder">
|
||||||
|
<property name="icon">
|
||||||
|
<iconset theme="viewfolder">
|
||||||
|
<normaloff>.</normaloff>.</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Logs</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Open the logs folder in a file browser.</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
<action name="actionChangeTheme">
|
<action name="actionChangeTheme">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Themes</string>
|
<string>Themes</string>
|
||||||
@ -718,10 +745,10 @@
|
|||||||
<normaloff>.</normaloff>.</iconset>
|
<normaloff>.</normaloff>.</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>View &Widget Themes Folder</string>
|
<string>&Widget Themes</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>View Widget Theme Folder</string>
|
<string>Open the widget themes folder in a file browser.</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="actionViewIconThemeFolder">
|
<action name="actionViewIconThemeFolder">
|
||||||
@ -730,18 +757,22 @@
|
|||||||
<normaloff>.</normaloff>.</iconset>
|
<normaloff>.</normaloff>.</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>View I&con Theme Folder</string>
|
<string>I&con Theme</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>View Icon Theme Folder</string>
|
<string>Open the icon theme folder in a file browser.</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="actionViewCatPackFolder">
|
<action name="actionViewCatPackFolder">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="viewfolder"/>
|
<iconset theme="viewfolder">
|
||||||
|
<normaloff>.</normaloff>.</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>View Cat Packs Folder</string>
|
<string>Cat Packs</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Open the cat packs folder in a file browser.</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
|
@ -101,7 +101,7 @@ QString getCreditsHtml()
|
|||||||
stream << "<h3>" << QObject::tr("With thanks to", "About Credits") << "</h3>\n";
|
stream << "<h3>" << QObject::tr("With thanks to", "About Credits") << "</h3>\n";
|
||||||
stream << QString("<p>Boba %1</p>\n").arg(getWebsite("https://bobaonline.neocities.org/"));
|
stream << QString("<p>Boba %1</p>\n").arg(getWebsite("https://bobaonline.neocities.org/"));
|
||||||
stream << QString("<p>Davi Rafael %1</p>\n").arg(getWebsite("https://auti.one/"));
|
stream << QString("<p>Davi Rafael %1</p>\n").arg(getWebsite("https://auti.one/"));
|
||||||
stream << QString("<p>Fulmine %1</p>\n").arg(getWebsite("https://www.fulmine.xyz/"));
|
stream << QString("<p>Fulmine %1</p>\n").arg(getWebsite("https://fulmine.xyz/"));
|
||||||
stream << QString("<p>ely %1</p>\n").arg(getGitHub("elyrodso"));
|
stream << QString("<p>ely %1</p>\n").arg(getGitHub("elyrodso"));
|
||||||
stream << QString("<p>gon sawa %1</p>\n").arg(getGitHub("gonsawa"));
|
stream << QString("<p>gon sawa %1</p>\n").arg(getGitHub("gonsawa"));
|
||||||
stream << QString("<p>Pankakes</p>\n");
|
stream << QString("<p>Pankakes</p>\n");
|
||||||
|
@ -13,7 +13,6 @@ enum class ResourceProvider;
|
|||||||
|
|
||||||
class Mod;
|
class Mod;
|
||||||
class NetJob;
|
class NetJob;
|
||||||
class ModUpdateDialog;
|
|
||||||
|
|
||||||
class ChooseProviderDialog : public QDialog {
|
class ChooseProviderDialog : public QDialog {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -214,10 +214,11 @@ void ExportToModListDialog::addExtra(ExportToModList::OptionalData option)
|
|||||||
void ExportToModListDialog::enableCustom(bool enabled)
|
void ExportToModListDialog::enableCustom(bool enabled)
|
||||||
{
|
{
|
||||||
ui->authorsCheckBox->setHidden(enabled);
|
ui->authorsCheckBox->setHidden(enabled);
|
||||||
ui->versionCheckBox->setHidden(enabled);
|
|
||||||
ui->urlCheckBox->setHidden(enabled);
|
|
||||||
|
|
||||||
ui->authorsButton->setHidden(!enabled);
|
ui->authorsButton->setHidden(!enabled);
|
||||||
|
|
||||||
|
ui->versionCheckBox->setHidden(enabled);
|
||||||
ui->versionButton->setHidden(!enabled);
|
ui->versionButton->setHidden(!enabled);
|
||||||
|
|
||||||
|
ui->urlCheckBox->setHidden(enabled);
|
||||||
ui->urlButton->setHidden(!enabled);
|
ui->urlButton->setHidden(!enabled);
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>650</width>
|
<width>650</width>
|
||||||
<height>446</height>
|
<height>522</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@ -61,18 +61,37 @@
|
|||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="1" column="0">
|
||||||
<widget class="QGroupBox" name="templateGroup">
|
<widget class="QGroupBox" name="templateGroup">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Template</string>
|
<string>Template</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QTextEdit" name="templateText"/>
|
<widget class="QTextEdit" name="templateText">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Maximum">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
<item row="1" column="1">
|
||||||
<widget class="QGroupBox" name="optionsGroup">
|
<widget class="QGroupBox" name="optionsGroup">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Optional Info</string>
|
<string>Optional Info</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -105,8 +105,16 @@ void MSALoginDialog::showVerificationUriAndCode(const QUrl& uri, const QString&
|
|||||||
|
|
||||||
QString urlString = uri.toString();
|
QString urlString = uri.toString();
|
||||||
QString linkString = QString("<a href=\"%1\">%2</a>").arg(urlString, urlString);
|
QString linkString = QString("<a href=\"%1\">%2</a>").arg(urlString, urlString);
|
||||||
ui->label->setText(
|
if (urlString == "https://www.microsoft.com/link" && !code.isEmpty()) {
|
||||||
tr("<p>Please open up %1 in a browser and put in the code <b>%2</b> to proceed with login.</p>").arg(linkString, code));
|
urlString += QString("?otc=%1").arg(code);
|
||||||
|
DesktopServices::openUrl(urlString);
|
||||||
|
ui->label->setText(tr("<p>Please login in the opened browser. If no browser was opened, please open up %1 in "
|
||||||
|
"a browser and put in the code <b>%2</b> to proceed with login.</p>")
|
||||||
|
.arg(linkString, code));
|
||||||
|
} else {
|
||||||
|
ui->label->setText(
|
||||||
|
tr("<p>Please open up %1 in a browser and put in the code <b>%2</b> to proceed with login.</p>").arg(linkString, code));
|
||||||
|
}
|
||||||
ui->actionButton->setVisible(true);
|
ui->actionButton->setVisible(true);
|
||||||
connect(ui->actionButton, &QPushButton::clicked, [=]() {
|
connect(ui->actionButton, &QPushButton::clicked, [=]() {
|
||||||
DesktopServices::openUrl(uri);
|
DesktopServices::openUrl(uri);
|
||||||
|
@ -39,7 +39,8 @@ static std::optional<ModPlatform::ModLoaderTypes> mcLoaders(BaseInstance* inst)
|
|||||||
ModUpdateDialog::ModUpdateDialog(QWidget* parent,
|
ModUpdateDialog::ModUpdateDialog(QWidget* parent,
|
||||||
BaseInstance* instance,
|
BaseInstance* instance,
|
||||||
const std::shared_ptr<ModFolderModel> mods,
|
const std::shared_ptr<ModFolderModel> mods,
|
||||||
QList<Mod*>& search_for)
|
QList<Mod*>& search_for,
|
||||||
|
bool includeDeps)
|
||||||
: ReviewMessageBox(parent, tr("Confirm mods to update"), "")
|
: ReviewMessageBox(parent, tr("Confirm mods to update"), "")
|
||||||
, m_parent(parent)
|
, m_parent(parent)
|
||||||
, m_mod_model(mods)
|
, m_mod_model(mods)
|
||||||
@ -47,6 +48,7 @@ ModUpdateDialog::ModUpdateDialog(QWidget* parent,
|
|||||||
, m_second_try_metadata(
|
, m_second_try_metadata(
|
||||||
new ConcurrentTask(nullptr, "Second Metadata Search", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()))
|
new ConcurrentTask(nullptr, "Second Metadata Search", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()))
|
||||||
, m_instance(instance)
|
, m_instance(instance)
|
||||||
|
, m_include_deps(includeDeps)
|
||||||
{
|
{
|
||||||
ReviewMessageBox::setGeometry(0, 0, 800, 600);
|
ReviewMessageBox::setGeometry(0, 0, 800, 600);
|
||||||
|
|
||||||
@ -186,7 +188,7 @@ void ModUpdateDialog::checkCandidates()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
{ // dependencies
|
if (m_include_deps && !APPLICATION->settings()->get("ModDependenciesDisabled").toBool()) { // dependencies
|
||||||
auto depTask = makeShared<GetModDependenciesTask>(this, m_instance, m_mod_model.get(), selectedVers);
|
auto depTask = makeShared<GetModDependenciesTask>(this, m_instance, m_mod_model.get(), selectedVers);
|
||||||
|
|
||||||
connect(depTask.get(), &Task::failed, this,
|
connect(depTask.get(), &Task::failed, this,
|
||||||
|
@ -16,10 +16,12 @@ class ConcurrentTask;
|
|||||||
class ModUpdateDialog final : public ReviewMessageBox {
|
class ModUpdateDialog final : public ReviewMessageBox {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
|
explicit ModUpdateDialog(QWidget* parent, BaseInstance* instance, std::shared_ptr<ModFolderModel> mod_model, QList<Mod*>& search_for);
|
||||||
explicit ModUpdateDialog(QWidget* parent,
|
explicit ModUpdateDialog(QWidget* parent,
|
||||||
BaseInstance* instance,
|
BaseInstance* instance,
|
||||||
const std::shared_ptr<ModFolderModel> mod_model,
|
std::shared_ptr<ModFolderModel> mod_model,
|
||||||
QList<Mod*>& search_for);
|
QList<Mod*>& search_for,
|
||||||
|
bool includeDeps);
|
||||||
|
|
||||||
void checkCandidates();
|
void checkCandidates();
|
||||||
|
|
||||||
@ -61,4 +63,5 @@ class ModUpdateDialog final : public ReviewMessageBox {
|
|||||||
|
|
||||||
bool m_no_updates = false;
|
bool m_no_updates = false;
|
||||||
bool m_aborted = false;
|
bool m_aborted = false;
|
||||||
|
bool m_include_deps = false;
|
||||||
};
|
};
|
||||||
|
@ -270,13 +270,15 @@ QList<BasePage*> ModDownloadDialog::getPages()
|
|||||||
|
|
||||||
GetModDependenciesTask::Ptr ModDownloadDialog::getModDependenciesTask()
|
GetModDependenciesTask::Ptr ModDownloadDialog::getModDependenciesTask()
|
||||||
{
|
{
|
||||||
if (auto model = dynamic_cast<ModFolderModel*>(getBaseModel().get()); model) {
|
if (!APPLICATION->settings()->get("ModDependenciesDisabled").toBool()) { // dependencies
|
||||||
QList<std::shared_ptr<GetModDependenciesTask::PackDependency>> selectedVers;
|
if (auto model = dynamic_cast<ModFolderModel*>(getBaseModel().get()); model) {
|
||||||
for (auto& selected : getTasks()) {
|
QList<std::shared_ptr<GetModDependenciesTask::PackDependency>> selectedVers;
|
||||||
selectedVers.append(std::make_shared<GetModDependenciesTask::PackDependency>(selected->getPack(), selected->getVersion()));
|
for (auto& selected : getTasks()) {
|
||||||
}
|
selectedVers.append(std::make_shared<GetModDependenciesTask::PackDependency>(selected->getPack(), selected->getVersion()));
|
||||||
|
}
|
||||||
|
|
||||||
return makeShared<GetModDependenciesTask>(this, m_instance, model, selectedVers);
|
return makeShared<GetModDependenciesTask>(this, m_instance, model, selectedVers);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@ class ResourceDownloadDialog : public QDialog, public BasePageProvider {
|
|||||||
public:
|
public:
|
||||||
using DownloadTaskPtr = shared_qobject_ptr<ResourceDownloadTask>;
|
using DownloadTaskPtr = shared_qobject_ptr<ResourceDownloadTask>;
|
||||||
|
|
||||||
ResourceDownloadDialog(QWidget* parent, const std::shared_ptr<ResourceFolderModel> base_model);
|
ResourceDownloadDialog(QWidget* parent, std::shared_ptr<ResourceFolderModel> base_model);
|
||||||
|
|
||||||
void initializeContainer();
|
void initializeContainer();
|
||||||
void connectButtons();
|
void connectButtons();
|
||||||
|
@ -278,12 +278,14 @@ void InstanceView::mousePressEvent(QMouseEvent* event)
|
|||||||
m_pressedAlreadySelected = selectionModel()->isSelected(m_pressedIndex);
|
m_pressedAlreadySelected = selectionModel()->isSelected(m_pressedIndex);
|
||||||
m_pressedPosition = geometryPos;
|
m_pressedPosition = geometryPos;
|
||||||
|
|
||||||
VisualGroup::HitResults hitResult;
|
if (event->button() == Qt::LeftButton) {
|
||||||
m_pressedCategory = categoryAt(geometryPos, hitResult);
|
VisualGroup::HitResults hitResult;
|
||||||
if (m_pressedCategory && hitResult & VisualGroup::CheckboxHit) {
|
m_pressedCategory = categoryAt(geometryPos, hitResult);
|
||||||
setState(m_pressedCategory->collapsed ? ExpandingState : CollapsingState);
|
if (m_pressedCategory && hitResult & VisualGroup::CheckboxHit) {
|
||||||
event->accept();
|
setState(m_pressedCategory->collapsed ? ExpandingState : CollapsingState);
|
||||||
return;
|
event->accept();
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (index.isValid() && (index.flags() & Qt::ItemIsEnabled)) {
|
if (index.isValid() && (index.flags() & Qt::ItemIsEnabled)) {
|
||||||
@ -366,10 +368,7 @@ void InstanceView::mouseReleaseEvent(QMouseEvent* event)
|
|||||||
|
|
||||||
VisualGroup::HitResults hitResult;
|
VisualGroup::HitResults hitResult;
|
||||||
|
|
||||||
bool click =
|
if (event->button() == Qt::LeftButton && m_pressedCategory != nullptr && m_pressedCategory == categoryAt(geometryPos, hitResult)) {
|
||||||
(index == m_pressedIndex && index.isValid()) || (m_pressedCategory && m_pressedCategory == categoryAt(geometryPos, hitResult));
|
|
||||||
|
|
||||||
if (click && m_pressedCategory) {
|
|
||||||
if (state() == ExpandingState) {
|
if (state() == ExpandingState) {
|
||||||
m_pressedCategory->collapsed = false;
|
m_pressedCategory->collapsed = false;
|
||||||
emit groupStateChanged(m_pressedCategory->text, false);
|
emit groupStateChanged(m_pressedCategory->text, false);
|
||||||
@ -397,7 +396,7 @@ void InstanceView::mouseReleaseEvent(QMouseEvent* event)
|
|||||||
|
|
||||||
setState(NoState);
|
setState(NoState);
|
||||||
|
|
||||||
if (click) {
|
if (index == m_pressedIndex && index.isValid()) {
|
||||||
if (event->button() == Qt::LeftButton) {
|
if (event->button() == Qt::LeftButton) {
|
||||||
emit clicked(index);
|
emit clicked(index);
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,7 @@ class InstanceView : public QAbstractItemView {
|
|||||||
/// get the model index at the specified visual point
|
/// get the model index at the specified visual point
|
||||||
virtual QModelIndex indexAt(const QPoint& point) const override;
|
virtual QModelIndex indexAt(const QPoint& point) const override;
|
||||||
QString groupNameAt(const QPoint& point);
|
QString groupNameAt(const QPoint& point);
|
||||||
void setSelection(const QRect& rect, const QItemSelectionModel::SelectionFlags commands) override;
|
void setSelection(const QRect& rect, QItemSelectionModel::SelectionFlags commands) override;
|
||||||
|
|
||||||
virtual int horizontalOffset() const override;
|
virtual int horizontalOffset() const override;
|
||||||
virtual int verticalOffset() const override;
|
virtual int verticalOffset() const override;
|
||||||
|
@ -209,6 +209,9 @@
|
|||||||
<property name="text">
|
<property name="text">
|
||||||
<string><html><head/><body><p>Note: you only need to set this to access private data. Read the <a href="https://docs.modrinth.com/api-spec/#section/Authentication">documentation</a> for more information.</p></body></html></string>
|
<string><html><head/><body><p>Note: you only need to set this to access private data. Read the <a href="https://docs.modrinth.com/api-spec/#section/Authentication">documentation</a> for more information.</p></body></html></string>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="openExternalLinks">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0">
|
<item row="2" column="0">
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AccountListPage.h"
|
#include "AccountListPage.h"
|
||||||
|
#include "minecraft/auth/AccountData.h"
|
||||||
#include "ui_AccountListPage.h"
|
#include "ui_AccountListPage.h"
|
||||||
|
|
||||||
#include <QItemSelectionModel>
|
#include <QItemSelectionModel>
|
||||||
@ -42,22 +43,17 @@
|
|||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
#include "net/NetJob.h"
|
|
||||||
|
|
||||||
#include "ui/dialogs/CustomMessageBox.h"
|
#include "ui/dialogs/CustomMessageBox.h"
|
||||||
#include "ui/dialogs/MSALoginDialog.h"
|
#include "ui/dialogs/MSALoginDialog.h"
|
||||||
#include "ui/dialogs/OfflineLoginDialog.h"
|
#include "ui/dialogs/OfflineLoginDialog.h"
|
||||||
#include "ui/dialogs/ProgressDialog.h"
|
#include "ui/dialogs/ProgressDialog.h"
|
||||||
#include "ui/dialogs/SkinUploadDialog.h"
|
#include "ui/dialogs/SkinUploadDialog.h"
|
||||||
|
|
||||||
#include "minecraft/auth/AccountTask.h"
|
|
||||||
#include "minecraft/services/SkinDelete.h"
|
#include "minecraft/services/SkinDelete.h"
|
||||||
#include "tasks/Task.h"
|
#include "tasks/Task.h"
|
||||||
|
|
||||||
#include "Application.h"
|
#include "Application.h"
|
||||||
|
|
||||||
#include "BuildConfig.h"
|
|
||||||
|
|
||||||
AccountListPage::AccountListPage(QWidget* parent) : QMainWindow(parent), ui(new Ui::AccountListPage)
|
AccountListPage::AccountListPage(QWidget* parent) : QMainWindow(parent), ui(new Ui::AccountListPage)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
@ -172,6 +168,12 @@ void AccountListPage::on_actionAddOffline_triggered()
|
|||||||
|
|
||||||
void AccountListPage::on_actionRemove_triggered()
|
void AccountListPage::on_actionRemove_triggered()
|
||||||
{
|
{
|
||||||
|
auto response = CustomMessageBox::selectable(this, tr("Remove account?"), tr("Do you really want to delete this account?"),
|
||||||
|
QMessageBox::Question, QMessageBox::Yes | QMessageBox::No, QMessageBox::No)
|
||||||
|
->exec();
|
||||||
|
if (response != QMessageBox::Yes) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
QModelIndexList selection = ui->listView->selectionModel()->selectedIndexes();
|
QModelIndexList selection = ui->listView->selectionModel()->selectedIndexes();
|
||||||
if (selection.size() > 0) {
|
if (selection.size() > 0) {
|
||||||
QModelIndex selected = selection.first();
|
QModelIndex selected = selection.first();
|
||||||
@ -215,7 +217,7 @@ void AccountListPage::updateButtonStates()
|
|||||||
QModelIndex selected = selection.first();
|
QModelIndex selected = selection.first();
|
||||||
MinecraftAccountPtr account = selected.data(AccountList::PointerRole).value<MinecraftAccountPtr>();
|
MinecraftAccountPtr account = selected.data(AccountList::PointerRole).value<MinecraftAccountPtr>();
|
||||||
accountIsReady = !account->isActive();
|
accountIsReady = !account->isActive();
|
||||||
accountIsOnline = !account->isOffline();
|
accountIsOnline = account->accountType() != AccountType::Offline;
|
||||||
}
|
}
|
||||||
ui->actionRemove->setEnabled(accountIsReady);
|
ui->actionRemove->setEnabled(accountIsReady);
|
||||||
ui->actionSetDefault->setEnabled(accountIsReady);
|
ui->actionSetDefault->setEnabled(accountIsReady);
|
||||||
@ -230,6 +232,7 @@ void AccountListPage::updateButtonStates()
|
|||||||
ui->actionNoDefault->setEnabled(true);
|
ui->actionNoDefault->setEnabled(true);
|
||||||
ui->actionNoDefault->setChecked(false);
|
ui->actionNoDefault->setChecked(false);
|
||||||
}
|
}
|
||||||
|
ui->listView->resizeColumnToContents(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AccountListPage::on_actionUploadSkin_triggered()
|
void AccountListPage::on_actionUploadSkin_triggered()
|
||||||
|
71
launcher/ui/pages/global/EnvironmentVariablesPage.cpp
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
/*
|
||||||
|
* Prism Launcher - Minecraft Launcher
|
||||||
|
* Copyright (C) 2023 TheKodeToad <TheKodeToad@proton.me>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, version 3.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <QTabBar>
|
||||||
|
#include <QTabWidget>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
|
#include "EnvironmentVariablesPage.h"
|
||||||
|
|
||||||
|
EnvironmentVariablesPage::EnvironmentVariablesPage(QWidget* parent) : QWidget(parent)
|
||||||
|
{
|
||||||
|
auto verticalLayout = new QVBoxLayout(this);
|
||||||
|
verticalLayout->setObjectName(QStringLiteral("verticalLayout"));
|
||||||
|
verticalLayout->setContentsMargins(0, 0, 0, 0);
|
||||||
|
|
||||||
|
auto tabWidget = new QTabWidget(this);
|
||||||
|
tabWidget->setObjectName(QStringLiteral("tabWidget"));
|
||||||
|
variables = new EnvironmentVariables(this);
|
||||||
|
variables->setContentsMargins(6, 6, 6, 6);
|
||||||
|
tabWidget->addTab(variables, "Foo");
|
||||||
|
tabWidget->tabBar()->hide();
|
||||||
|
verticalLayout->addWidget(tabWidget);
|
||||||
|
|
||||||
|
variables->initialize(false, false, APPLICATION->settings()->get("Env").toMap());
|
||||||
|
}
|
||||||
|
|
||||||
|
QString EnvironmentVariablesPage::displayName() const
|
||||||
|
{
|
||||||
|
return tr("Environment Variables");
|
||||||
|
}
|
||||||
|
|
||||||
|
QIcon EnvironmentVariablesPage::icon() const
|
||||||
|
{
|
||||||
|
return APPLICATION->getThemedIcon("environment-variables");
|
||||||
|
}
|
||||||
|
|
||||||
|
QString EnvironmentVariablesPage::id() const
|
||||||
|
{
|
||||||
|
return "environment-variables";
|
||||||
|
}
|
||||||
|
|
||||||
|
QString EnvironmentVariablesPage::helpPage() const
|
||||||
|
{
|
||||||
|
return "Environment-variables";
|
||||||
|
}
|
||||||
|
|
||||||
|
bool EnvironmentVariablesPage::apply()
|
||||||
|
{
|
||||||
|
APPLICATION->settings()->set("Env", variables->value());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void EnvironmentVariablesPage::retranslate()
|
||||||
|
{
|
||||||
|
variables->retranslate();
|
||||||
|
}
|
42
launcher/ui/pages/global/EnvironmentVariablesPage.h
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
/*
|
||||||
|
* Prism Launcher - Minecraft Launcher
|
||||||
|
* Copyright (C) 2023 TheKodeToad <TheKodeToad@proton.me>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, version 3.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <Application.h>
|
||||||
|
|
||||||
|
#include "ui/pages/BasePage.h"
|
||||||
|
#include "ui/widgets/EnvironmentVariables.h"
|
||||||
|
|
||||||
|
class EnvironmentVariablesPage : public QWidget, public BasePage {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit EnvironmentVariablesPage(QWidget* parent = nullptr);
|
||||||
|
|
||||||
|
QString displayName() const override;
|
||||||
|
QIcon icon() const override;
|
||||||
|
QString id() const override;
|
||||||
|
QString helpPage() const override;
|
||||||
|
|
||||||
|
bool apply() override;
|
||||||
|
void retranslate() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
EnvironmentVariables* variables;
|
||||||
|
};
|
@ -84,7 +84,7 @@
|
|||||||
<string notr="true"> MiB</string>
|
<string notr="true"> MiB</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="minimum">
|
<property name="minimum">
|
||||||
<number>128</number>
|
<number>8</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>1048576</number>
|
<number>1048576</number>
|
||||||
@ -106,7 +106,7 @@
|
|||||||
<string notr="true"> MiB</string>
|
<string notr="true"> MiB</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="minimum">
|
<property name="minimum">
|
||||||
<number>128</number>
|
<number>8</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>1048576</number>
|
<number>1048576</number>
|
||||||
@ -128,7 +128,7 @@
|
|||||||
<string notr="true"> MiB</string>
|
<string notr="true"> MiB</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="minimum">
|
<property name="minimum">
|
||||||
<number>64</number>
|
<number>4</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>999999999</number>
|
<number>999999999</number>
|
||||||
|
@ -223,6 +223,7 @@ void LauncherPage::applySettings()
|
|||||||
|
|
||||||
// Mods
|
// Mods
|
||||||
s->set("ModMetadataDisabled", ui->metadataDisableBtn->isChecked());
|
s->set("ModMetadataDisabled", ui->metadataDisableBtn->isChecked());
|
||||||
|
s->set("ModDependenciesDisabled", ui->dependenciesDisableBtn->isChecked());
|
||||||
}
|
}
|
||||||
void LauncherPage::loadSettings()
|
void LauncherPage::loadSettings()
|
||||||
{
|
{
|
||||||
@ -278,6 +279,7 @@ void LauncherPage::loadSettings()
|
|||||||
// Mods
|
// Mods
|
||||||
ui->metadataDisableBtn->setChecked(s->get("ModMetadataDisabled").toBool());
|
ui->metadataDisableBtn->setChecked(s->get("ModMetadataDisabled").toBool());
|
||||||
ui->metadataWarningLabel->setHidden(!ui->metadataDisableBtn->isChecked());
|
ui->metadataWarningLabel->setHidden(!ui->metadataDisableBtn->isChecked());
|
||||||
|
ui->dependenciesDisableBtn->setChecked(s->get("ModDependenciesDisabled").toBool());
|
||||||
}
|
}
|
||||||
|
|
||||||
void LauncherPage::refreshFontPreview()
|
void LauncherPage::refreshFontPreview()
|
||||||
|
@ -186,6 +186,16 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="dependenciesDisableBtn">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Disable the automatic detection, installation, and updating of mod dependencies.</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Disable automatic mod dependency management</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -42,6 +42,7 @@
|
|||||||
#include "minecraft/mod/ResourceFolderModel.h"
|
#include "minecraft/mod/ResourceFolderModel.h"
|
||||||
#include "ui/GuiUtil.h"
|
#include "ui/GuiUtil.h"
|
||||||
|
|
||||||
|
#include <QHeaderView>
|
||||||
#include <QKeyEvent>
|
#include <QKeyEvent>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
@ -95,7 +96,8 @@ ExternalResourcesPage::ExternalResourcesPage(BaseInstance* instance, std::shared
|
|||||||
|
|
||||||
connect(viewHeader, &QHeaderView::customContextMenuRequested, this, &ExternalResourcesPage::ShowHeaderContextMenu);
|
connect(viewHeader, &QHeaderView::customContextMenuRequested, this, &ExternalResourcesPage::ShowHeaderContextMenu);
|
||||||
|
|
||||||
m_model->loadHiddenColumns(ui->treeView);
|
m_model->loadColumns(ui->treeView);
|
||||||
|
connect(ui->treeView->header(), &QHeaderView::sectionResized, this, [this] { m_model->saveColumns(ui->treeView); });
|
||||||
}
|
}
|
||||||
|
|
||||||
ExternalResourcesPage::~ExternalResourcesPage()
|
ExternalResourcesPage::~ExternalResourcesPage()
|
||||||
@ -252,9 +254,9 @@ void ExternalResourcesPage::removeItem()
|
|||||||
void ExternalResourcesPage::removeItems(const QItemSelection& selection)
|
void ExternalResourcesPage::removeItems(const QItemSelection& selection)
|
||||||
{
|
{
|
||||||
if (m_instance != nullptr && m_instance->isRunning()) {
|
if (m_instance != nullptr && m_instance->isRunning()) {
|
||||||
auto response = CustomMessageBox::selectable(this, "Confirm Delete",
|
auto response = CustomMessageBox::selectable(this, tr("Confirm Delete"),
|
||||||
"If you remove this resource while the game is running it may crash your game.\n"
|
tr("If you remove this resource while the game is running it may crash your game.\n"
|
||||||
"Are you sure you want to do this?",
|
"Are you sure you want to do this?"),
|
||||||
QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No)
|
QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No)
|
||||||
->exec();
|
->exec();
|
||||||
|
|
||||||
@ -273,9 +275,9 @@ void ExternalResourcesPage::enableItem()
|
|||||||
void ExternalResourcesPage::disableItem()
|
void ExternalResourcesPage::disableItem()
|
||||||
{
|
{
|
||||||
if (m_instance != nullptr && m_instance->isRunning()) {
|
if (m_instance != nullptr && m_instance->isRunning()) {
|
||||||
auto response = CustomMessageBox::selectable(this, "Confirm disable",
|
auto response = CustomMessageBox::selectable(this, tr("Confirm disable"),
|
||||||
"If you disable this resource while the game is running it may crash your game.\n"
|
tr("If you disable this resource while the game is running it may crash your game.\n"
|
||||||
"Are you sure you want to do this?",
|
"Are you sure you want to do this?"),
|
||||||
QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No)
|
QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No)
|
||||||
->exec();
|
->exec();
|
||||||
|
|
||||||
|
@ -70,6 +70,9 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="WideBar" name="actionsToolbar">
|
<widget class="WideBar" name="actionsToolbar">
|
||||||
|
<property name="useDefaultAction" stdset="0">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Actions</string>
|
<string>Actions</string>
|
||||||
</property>
|
</property>
|
||||||
@ -146,17 +149,6 @@
|
|||||||
<string>Download a new resource</string>
|
<string>Download a new resource</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="actionUpdateItem">
|
|
||||||
<property name="enabled">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Check for &Updates</string>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Try to check or update all selected resources (all resources if none are selected)</string>
|
|
||||||
</property>
|
|
||||||
</action>
|
|
||||||
<action name="actionVisitItemPage">
|
<action name="actionVisitItemPage">
|
||||||
<property name="enabled">
|
<property name="enabled">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
@ -168,15 +160,15 @@
|
|||||||
<string>Go to mods home page</string>
|
<string>Go to mods home page</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="actionRemoveItemMetadata">
|
<action name="actionUpdateItem">
|
||||||
<property name="enabled">
|
<property name="enabled">
|
||||||
<bool>false</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Remove metadata</string>
|
<string>Check for &Updates</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Remove mod's metadata</string>
|
<string>Try to check or update all selected resources (all resources if none are selected)</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
|
@ -90,6 +90,9 @@ void InstanceSettingsPage::globalSettingsButtonClicked(bool)
|
|||||||
case 2:
|
case 2:
|
||||||
APPLICATION->ShowGlobalSettings(this, "custom-commands");
|
APPLICATION->ShowGlobalSettings(this, "custom-commands");
|
||||||
return;
|
return;
|
||||||
|
case 3:
|
||||||
|
APPLICATION->ShowGlobalSettings(this, "environment-variables");
|
||||||
|
return;
|
||||||
default:
|
default:
|
||||||
APPLICATION->ShowGlobalSettings(this, "minecraft-settings");
|
APPLICATION->ShowGlobalSettings(this, "minecraft-settings");
|
||||||
return;
|
return;
|
||||||
@ -199,6 +202,14 @@ void InstanceSettingsPage::applySettings()
|
|||||||
m_settings->reset("PostExitCommand");
|
m_settings->reset("PostExitCommand");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Environment Variables
|
||||||
|
auto env = ui->environmentVariables->override();
|
||||||
|
m_settings->set("OverrideEnv", env);
|
||||||
|
if (env)
|
||||||
|
m_settings->set("Env", ui->environmentVariables->value());
|
||||||
|
else
|
||||||
|
m_settings->reset("Env");
|
||||||
|
|
||||||
// Workarounds
|
// Workarounds
|
||||||
bool workarounds = ui->nativeWorkaroundsGroupBox->isChecked();
|
bool workarounds = ui->nativeWorkaroundsGroupBox->isChecked();
|
||||||
m_settings->set("OverrideNativeWorkarounds", workarounds);
|
m_settings->set("OverrideNativeWorkarounds", workarounds);
|
||||||
@ -318,6 +329,9 @@ void InstanceSettingsPage::loadSettings()
|
|||||||
ui->customCommands->initialize(true, m_settings->get("OverrideCommands").toBool(), m_settings->get("PreLaunchCommand").toString(),
|
ui->customCommands->initialize(true, m_settings->get("OverrideCommands").toBool(), m_settings->get("PreLaunchCommand").toString(),
|
||||||
m_settings->get("WrapperCommand").toString(), m_settings->get("PostExitCommand").toString());
|
m_settings->get("WrapperCommand").toString(), m_settings->get("PostExitCommand").toString());
|
||||||
|
|
||||||
|
// Environment variables
|
||||||
|
ui->environmentVariables->initialize(true, m_settings->get("OverrideEnv").toBool(), m_settings->get("Env").toMap());
|
||||||
|
|
||||||
// Workarounds
|
// Workarounds
|
||||||
ui->nativeWorkaroundsGroupBox->setChecked(m_settings->get("OverrideNativeWorkarounds").toBool());
|
ui->nativeWorkaroundsGroupBox->setChecked(m_settings->get("OverrideNativeWorkarounds").toBool());
|
||||||
ui->useNativeGLFWCheck->setChecked(m_settings->get("UseNativeGLFW").toBool());
|
ui->useNativeGLFWCheck->setChecked(m_settings->get("UseNativeGLFW").toBool());
|
||||||
@ -484,6 +498,7 @@ void InstanceSettingsPage::retranslate()
|
|||||||
{
|
{
|
||||||
ui->retranslateUi(this);
|
ui->retranslateUi(this);
|
||||||
ui->customCommands->retranslate(); // TODO: why is this seperate from the others?
|
ui->customCommands->retranslate(); // TODO: why is this seperate from the others?
|
||||||
|
ui->environmentVariables->retranslate();
|
||||||
}
|
}
|
||||||
|
|
||||||
void InstanceSettingsPage::updateThresholds()
|
void InstanceSettingsPage::updateThresholds()
|
||||||
|