Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into import_zip

This commit is contained in:
Trial97 2023-11-03 12:53:23 +02:00
commit 1b2654bfa6
No known key found for this signature in database
GPG Key ID: 55EF5DA53DB36318
79 changed files with 6818 additions and 557 deletions

4
.clang-tidy Normal file
View File

@ -0,0 +1,4 @@
Checks:
- modernize-use-using
SystemHeaders: false

View File

@ -24,7 +24,7 @@ jobs:
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Create backport PRs
uses: korthout/backport-action@v1.4.0
uses: korthout/backport-action@v2.0.0
with:
# Config README: https://github.com/korthout/backport-action#backport-action
pull_description: |-

12
flake.lock generated
View File

@ -106,11 +106,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1697886341,
"narHash": "sha256-AdE67xPty9M9wn36nPVp6aDntIdigrs7UbyaGv1VAaM=",
"lastModified": 1698336494,
"narHash": "sha256-sO72WDBKyijYD1GcKPlGsycKbMBiTJMBCnmOxLAs880=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "44881e03af1c730cbb1d72a4d41274a2c957813a",
"rev": "808c0d8c53c7ae50f82aca8e7df263225cf235bf",
"type": "github"
},
"original": {
@ -153,11 +153,11 @@
]
},
"locked": {
"lastModified": 1697746376,
"narHash": "sha256-gu77VkgdfaHgNCVufeb6WP9oqFLjwK4jHcoPZmBVF3E=",
"lastModified": 1698227354,
"narHash": "sha256-Fi5H9jbaQLmLw9qBi/mkR33CoFjNbobo5xWdX4tKz1Q=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "8cc349bfd082da8782b989cad2158c9ad5bd70fd",
"rev": "bd38df3d508dfcdff52cd243d297f218ed2257bf",
"type": "github"
},
"original": {

View File

@ -58,6 +58,7 @@
#include "ui/pages/global/APIPage.h"
#include "ui/pages/global/AccountListPage.h"
#include "ui/pages/global/CustomCommandsPage.h"
#include "ui/pages/global/EnvironmentVariablesPage.h"
#include "ui/pages/global/ExternalToolsPage.h"
#include "ui/pages/global/JavaPage.h"
#include "ui/pages/global/LanguagePage.h"
@ -719,6 +720,8 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv)
m_settings->registerSetting("CloseAfterLaunch", false);
m_settings->registerSetting("QuitAfterGameStop", false);
m_settings->registerSetting("Env", QVariant(QMap<QString, QVariant>()));
// Custom Microsoft Authentication Client ID
m_settings->registerSetting("MSAClientIDOverride", "");
@ -744,6 +747,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv)
m_globalSettingsProvider->addPage<JavaPage>();
m_globalSettingsProvider->addPage<LanguagePage>();
m_globalSettingsProvider->addPage<CustomCommandsPage>();
m_globalSettingsProvider->addPage<EnvironmentVariablesPage>();
m_globalSettingsProvider->addPage<ProxyPage>();
m_globalSettingsProvider->addPage<ExternalToolsPage>();
m_globalSettingsProvider->addPage<AccountListPage>();

View File

@ -64,7 +64,7 @@ class LaunchTask;
class BaseInstance;
// pointer for lazy people
typedef std::shared_ptr<BaseInstance> InstancePtr;
using InstancePtr = std::shared_ptr<BaseInstance>;
/*!
* \brief Base class for instances.

View File

@ -51,7 +51,7 @@ class BaseVersionList : public QAbstractListModel {
ArchitectureRole,
SortRole
};
typedef QList<int> RoleList;
using RoleList = QList<int>;
explicit BaseVersionList(QObject* parent = 0);

View File

@ -889,6 +889,8 @@ SET(LAUNCHER_SOURCES
ui/pages/global/AccountListPage.h
ui/pages/global/CustomCommandsPage.cpp
ui/pages/global/CustomCommandsPage.h
ui/pages/global/EnvironmentVariablesPage.cpp
ui/pages/global/EnvironmentVariablesPage.h
ui/pages/global/ExternalToolsPage.cpp
ui/pages/global/ExternalToolsPage.h
ui/pages/global/JavaPage.cpp
@ -1040,6 +1042,8 @@ SET(LAUNCHER_SOURCES
ui/widgets/Common.h
ui/widgets/CustomCommands.cpp
ui/widgets/CustomCommands.h
ui/widgets/EnvironmentVariables.cpp
ui/widgets/EnvironmentVariables.h
ui/widgets/DropLabel.cpp
ui/widgets/DropLabel.h
ui/widgets/FocusLineEdit.cpp
@ -1150,6 +1154,7 @@ qt_wrap_ui(LAUNCHER_UI
ui/pages/modplatform/technic/TechnicPage.ui
ui/widgets/InstanceCardWidget.ui
ui/widgets/CustomCommands.ui
ui/widgets/EnvironmentVariables.ui
ui/widgets/InfoFrame.ui
ui/widgets/ModFilterWidget.ui
ui/widgets/SubTaskProgressBar.ui

View File

@ -123,26 +123,35 @@ namespace fs = ghc::filesystem;
#if defined(__MINGW32__)
typedef struct _DUPLICATE_EXTENTS_DATA {
struct _DUPLICATE_EXTENTS_DATA {
HANDLE FileHandle;
LARGE_INTEGER SourceFileOffset;
LARGE_INTEGER TargetFileOffset;
LARGE_INTEGER ByteCount;
} DUPLICATE_EXTENTS_DATA, *PDUPLICATE_EXTENTS_DATA;
};
typedef struct _FSCTL_GET_INTEGRITY_INFORMATION_BUFFER {
using DUPLICATE_EXTENTS_DATA = _DUPLICATE_EXTENTS_DATA;
using PDUPLICATE_EXTENTS_DATA = _DUPLICATE_EXTENTS_DATA*;
struct _FSCTL_GET_INTEGRITY_INFORMATION_BUFFER {
WORD ChecksumAlgorithm; // Checksum algorithm. e.g. CHECKSUM_TYPE_UNCHANGED, CHECKSUM_TYPE_NONE, CHECKSUM_TYPE_CRC32
WORD Reserved; // Must be 0
DWORD Flags; // FSCTL_INTEGRITY_FLAG_xxx
DWORD ChecksumChunkSizeInBytes;
DWORD ClusterSizeInBytes;
} FSCTL_GET_INTEGRITY_INFORMATION_BUFFER, *PFSCTL_GET_INTEGRITY_INFORMATION_BUFFER;
};
typedef struct _FSCTL_SET_INTEGRITY_INFORMATION_BUFFER {
using FSCTL_GET_INTEGRITY_INFORMATION_BUFFER = _FSCTL_GET_INTEGRITY_INFORMATION_BUFFER;
using PFSCTL_GET_INTEGRITY_INFORMATION_BUFFER = _FSCTL_GET_INTEGRITY_INFORMATION_BUFFER*;
struct _FSCTL_SET_INTEGRITY_INFORMATION_BUFFER {
WORD ChecksumAlgorithm; // Checksum algorithm. e.g. CHECKSUM_TYPE_UNCHANGED, CHECKSUM_TYPE_NONE, CHECKSUM_TYPE_CRC32
WORD Reserved; // Must be 0
DWORD Flags; // FSCTL_INTEGRITY_FLAG_xxx
} FSCTL_SET_INTEGRITY_INFORMATION_BUFFER, *PFSCTL_SET_INTEGRITY_INFORMATION_BUFFER;
};
using FSCTL_SET_INTEGRITY_INFORMATION_BUFFER = _FSCTL_SET_INTEGRITY_INFORMATION_BUFFER;
using PFSCTL_SET_INTEGRITY_INFORMATION_BUFFER = _FSCTL_SET_INTEGRITY_INFORMATION_BUFFER*;
#endif

View File

@ -290,7 +290,7 @@ void InstanceList::deleteGroup(const GroupId& name)
qDebug() << "Remove" << instID << "from group" << name;
removed = true;
auto idx = getInstIndex(instance.get());
if (idx > 0)
if (idx >= 0)
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;
modified = true;
auto idx = getInstIndex(instance.get());
if (idx > 0)
if (idx >= 0)
emit dataChanged(index(idx), index(idx), { GroupRole });
}
}
@ -947,9 +947,12 @@ QString InstanceList::getStagedInstancePath()
bool InstanceList::commitStagedInstance(const QString& path,
InstanceName const& instanceName,
const QString& groupName,
QString groupName,
InstanceTask const& commiting)
{
if (groupName.isEmpty() && !groupName.isNull())
groupName = QString();
QDir dir;
QString instID;
InstancePtr inst;

View File

@ -130,7 +130,7 @@ class InstanceList : public QAbstractListModel {
* should_override is used when another similar instance already exists, and we want to override 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.

View File

@ -172,7 +172,7 @@ class ExportToZipTask : public Task {
void setExcludeFiles(QStringList excludeFiles) { m_exclude_files = excludeFiles; }
void addExtraFile(QString fileName, QByteArray data) { m_extra_files.insert(fileName, data); }
typedef std::optional<QString> ZipResult;
using ZipResult = std::optional<QString>;
protected:
virtual void executeTask() override;

View File

@ -10,7 +10,7 @@ class VersionProxyModel : public QAbstractProxyModel {
Q_OBJECT
public:
enum Column { Name, ParentVersion, Branch, Type, Architecture, Path, Time };
typedef QHash<BaseVersionList::ModelRoles, std::shared_ptr<Filter>> FilterMap;
using FilterMap = QHash<BaseVersionList::ModelRoles, std::shared_ptr<Filter>>;
public:
VersionProxyModel(QObject* parent = 0);

View File

@ -22,8 +22,8 @@ struct JavaCheckResult {
enum class Validity { Errored, ReturnedInvalidData, Valid } validity = Validity::Errored;
};
typedef shared_qobject_ptr<QProcess> QProcessPtr;
typedef shared_qobject_ptr<JavaChecker> JavaCheckerPtr;
using QProcessPtr = shared_qobject_ptr<QProcess>;
using JavaCheckerPtr = shared_qobject_ptr<JavaChecker>;
class JavaChecker : public QObject {
Q_OBJECT
public:

View File

@ -20,7 +20,7 @@
#include "tasks/Task.h"
class JavaCheckerJob;
typedef shared_qobject_ptr<JavaCheckerJob> JavaCheckerJobPtr;
using JavaCheckerJobPtr = shared_qobject_ptr<JavaCheckerJob>;
// FIXME: this just seems horribly redundant
class JavaCheckerJob : public Task {

View File

@ -42,4 +42,4 @@ struct JavaInstall : public BaseVersion {
bool recommended = false;
};
typedef std::shared_ptr<JavaInstall> JavaInstallPtr;
using JavaInstallPtr = std::shared_ptr<JavaInstall>;

View File

@ -335,6 +335,7 @@ QList<QString> JavaUtils::FindJavaPaths()
}
}
candidates.append(getMinecraftJavaBundle());
candidates = addJavasFromEnv(candidates);
candidates.removeDuplicates();
return candidates;
@ -360,6 +361,7 @@ QList<QString> JavaUtils::FindJavaPaths()
javas.append(systemLibraryJVMDir.absolutePath() + "/" + java + "/Contents/Home/bin/java");
javas.append(systemLibraryJVMDir.absolutePath() + "/" + java + "/Contents/Commands/java");
}
javas.append(getMinecraftJavaBundle());
javas = addJavasFromEnv(javas);
javas.removeDuplicates();
return javas;
@ -411,6 +413,7 @@ QList<QString> JavaUtils::FindJavaPaths()
// javas downloaded by sdkman
scanJavaDirs(FS::PathCombine(home, ".sdkman/candidates/java"));
javas.append(getMinecraftJavaBundle());
javas = addJavasFromEnv(javas);
javas.removeDuplicates();
return javas;
@ -423,6 +426,7 @@ QList<QString> JavaUtils::FindJavaPaths()
QList<QString> javas;
javas.append(this->GetDefaultJava()->path);
javas.append(getMinecraftJavaBundle());
return addJavasFromEnv(javas);
}
#endif
@ -431,3 +435,42 @@ QString JavaUtils::getJavaCheckPath()
{
return APPLICATION->getJarPath("JavaCheck.jar");
}
QStringList getMinecraftJavaBundle()
{
QString partialPath;
QString executable = "java";
#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";
#else
partialPath = QDir::homePath();
#endif
auto minecraftPath = FS::PathCombine(partialPath, ".minecraft", "runtime");
QStringList javas;
QStringList processpaths{ minecraftPath };
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;
}

View File

@ -26,6 +26,7 @@
QString stripVariableEntries(QString name, QString target, QString remove);
QProcessEnvironment CleanEnviroment();
QStringList getMinecraftJavaBundle();
class JavaUtils : public QObject {
Q_OBJECT

View File

@ -6,7 +6,7 @@
class Agent;
typedef std::shared_ptr<Agent> AgentPtr;
using AgentPtr = std::shared_ptr<Agent>;
class Agent {
public:

View File

@ -105,4 +105,4 @@ class Component : public QObject, public ProblemProvider {
bool m_loaded = false;
};
typedef shared_qobject_ptr<Component> ComponentPtr;
using ComponentPtr = shared_qobject_ptr<Component>;

View File

@ -52,7 +52,7 @@
class Library;
class MinecraftInstance;
typedef std::shared_ptr<Library> LibraryPtr;
using LibraryPtr = std::shared_ptr<Library>;
class Library {
friend class OneSixVersionFormat;

View File

@ -188,6 +188,9 @@ void MinecraftInstance::loadSpecificSettings()
auto legacySettings = m_settings->registerSetting("OverrideLegacySettings", false);
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");
}
@ -548,6 +551,7 @@ QMap<QString, QString> MinecraftInstance::getVariables()
out.insert("INST_MC_DIR", QDir::toNativeSeparators(QDir(gameRoot()).absolutePath()));
out.insert("INST_JAVA", settings()->get("JavaPath").toString());
out.insert("INST_JAVA_ARGS", javaArguments().join(' '));
out.insert("NO_COLOR", "1");
return out;
}
@ -598,6 +602,23 @@ QProcessEnvironment MinecraftInstance::createLaunchEnvironment()
}
#endif
// 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;
}

View File

@ -174,4 +174,4 @@ class MinecraftInstance : public BaseInstance {
mutable std::shared_ptr<GameOptions> m_game_options;
};
typedef std::shared_ptr<MinecraftInstance> MinecraftInstancePtr;
using MinecraftInstancePtr = std::shared_ptr<MinecraftInstance>;

View File

@ -5,7 +5,7 @@
struct MojangDownloadInfo {
// types
typedef std::shared_ptr<MojangDownloadInfo> Ptr;
using Ptr = std::shared_ptr<MojangDownloadInfo>;
// data
/// Local filesystem path. WARNING: not used, only here so we can pass through mojang files unmolested!
@ -23,7 +23,7 @@ struct MojangLibraryDownloadInfo {
MojangLibraryDownloadInfo() {}
// types
typedef std::shared_ptr<MojangLibraryDownloadInfo> Ptr;
using Ptr = std::shared_ptr<MojangLibraryDownloadInfo>;
// methods
MojangDownloadInfo* getDownloadInfo(QString classifier)
@ -42,7 +42,7 @@ struct MojangLibraryDownloadInfo {
struct MojangAssetIndexInfo : public MojangDownloadInfo {
// types
typedef std::shared_ptr<MojangAssetIndexInfo> Ptr;
using Ptr = std::shared_ptr<MojangAssetIndexInfo>;
// methods
MojangAssetIndexInfo() {}

View File

@ -38,7 +38,7 @@
#include "VersionFile.h"
namespace ProfileUtils {
typedef QStringList PatchOrder;
using PatchOrder = QStringList;
/// Read and parse a OneSix format order file
bool readOverrideOrders(QString path, PatchOrder& order);

View File

@ -43,4 +43,4 @@ struct AuthSession {
bool demo = false;
};
typedef std::shared_ptr<AuthSession> AuthSessionPtr;
using AuthSessionPtr = std::shared_ptr<AuthSession>;

View File

@ -54,7 +54,7 @@ class Task;
class AccountTask;
class MinecraftAccount;
typedef shared_qobject_ptr<MinecraftAccount> MinecraftAccountPtr;
using MinecraftAccountPtr = shared_qobject_ptr<MinecraftAccount>;
Q_DECLARE_METATYPE(MinecraftAccountPtr)
/**

View File

@ -26,4 +26,4 @@ struct MinecraftServerTarget {
static MinecraftServerTarget parse(const QString& fullAddress);
};
typedef std::shared_ptr<MinecraftServerTarget> MinecraftServerTargetPtr;
using MinecraftServerTargetPtr = std::shared_ptr<MinecraftServerTarget>;

View File

@ -688,6 +688,7 @@ bool loadIconFile(const Mod& mod)
return png_invalid(); // icon invalid
}
}
return false;
}
case ResourceType::ZIPFILE: {
QuaZip zip(mod.fileinfo().filePath());
@ -714,6 +715,7 @@ bool loadIconFile(const Mod& mod)
} else {
return png_invalid(); // could not set icon as current file.
}
return false;
}
case ResourceType::LITEMOD: {
return false; // can lightmods even have icons?

View File

@ -232,10 +232,9 @@ bool processPackPNG(const ResourcePack& pack)
} else {
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: {
Q_ASSERT(pack.type() == ResourceType::ZIPFILE);
QuaZip zip(pack.fileinfo().filePath());
if (!zip.open(QuaZip::mdUnzip))
return false; // can't open zip file
@ -259,6 +258,7 @@ bool processPackPNG(const ResourcePack& pack)
} else {
return png_invalid(); // could not set pack.mcmeta as current file.
}
return false; // not processed correctly; https://github.com/PrismLauncher/PrismLauncher/issues/1740
}
default:
qWarning() << "Invalid type for resource pack parse task!";

View File

@ -186,10 +186,9 @@ bool processPackPNG(const TexturePack& pack)
} else {
return png_invalid(); // pack.png does not exists or is not a valid file.
}
return false;
}
case ResourceType::ZIPFILE: {
Q_ASSERT(pack.type() == ResourceType::ZIPFILE);
QuaZip zip(pack.fileinfo().filePath());
if (!zip.open(QuaZip::mdUnzip))
return false; // can't open zip file
@ -215,6 +214,7 @@ bool processPackPNG(const TexturePack& pack)
zip.close();
return png_invalid(); // could not set pack.mcmeta as current file.
}
return false;
}
default:
qWarning() << "Invalid type for resource pack parse task!";

View File

@ -4,7 +4,7 @@
#include <QtNetwork/QtNetwork>
#include "tasks/Task.h"
typedef shared_qobject_ptr<class SkinDelete> SkinDeletePtr;
using SkinDeletePtr = shared_qobject_ptr<class SkinDelete>;
class SkinDelete : public Task {
Q_OBJECT

View File

@ -5,7 +5,7 @@
#include <memory>
#include "tasks/Task.h"
typedef shared_qobject_ptr<class SkinUpload> SkinUploadPtr;
using SkinUploadPtr = shared_qobject_ptr<class SkinUpload>;
class SkinUpload : public Task {
Q_OBJECT

View File

@ -45,7 +45,7 @@ struct Modpack {
QIcon icon;
};
typedef QList<Modpack> ModpackList;
using ModpackList = QList<Modpack>;
Modpack parseDirectory(QString path);

View File

@ -31,7 +31,7 @@ struct Modpack {
QString packCode;
};
typedef QList<Modpack> ModpackList;
using ModpackList = QList<Modpack>;
} // namespace LegacyFTB

View File

@ -87,7 +87,7 @@ class NetRequest : public NetAction {
std::unique_ptr<Sink> m_sink;
Options m_options;
typedef const QLoggingCategory& (*logCatFunc)();
using logCatFunc = const QLoggingCategory& (*)();
logCatFunc logCat = taskUploadLogC;
std::chrono::steady_clock m_clock;

View File

@ -51,4 +51,4 @@ class NewsEntry : public QObject {
QString link;
};
typedef std::shared_ptr<NewsEntry> NewsEntryPtr;
using NewsEntryPtr = std::shared_ptr<NewsEntry>;

View File

@ -4,7 +4,7 @@
class IPathMatcher {
public:
typedef std::shared_ptr<IPathMatcher> Ptr;
using Ptr = std::shared_ptr<IPathMatcher>;
public:
virtual ~IPathMatcher() {}

View File

@ -9,6 +9,7 @@
<file>scalable/copy.svg</file>
<file>scalable/coremods.svg</file>
<file>scalable/custom-commands.svg</file>
<file>scalable/environment-variables.svg</file>
<file>scalable/discord.svg</file>
<file>scalable/externaltools.svg</file>
<file>scalable/help.svg</file>

View 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

View File

@ -9,6 +9,7 @@
<file>scalable/copy.svg</file>
<file>scalable/coremods.svg</file>
<file>scalable/custom-commands.svg</file>
<file>scalable/environment-variables.svg</file>
<file>scalable/discord.svg</file>
<file>scalable/externaltools.svg</file>
<file>scalable/help.svg</file>

View 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

View File

@ -11,6 +11,7 @@
<file>scalable/copy.svg</file>
<file>scalable/coremods.svg</file>
<file>scalable/custom-commands.svg</file>
<file>scalable/environment-variables.svg</file>
<file>scalable/discord.svg</file>
<file>scalable/externaltools.svg</file>
<file>scalable/help.svg</file>

View File

@ -1,86 +1 @@
<?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>
<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>

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 391 B

View 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

View File

@ -11,6 +11,7 @@
<file>scalable/copy.svg</file>
<file>scalable/coremods.svg</file>
<file>scalable/custom-commands.svg</file>
<file>scalable/environment-variables.svg</file>
<file>scalable/discord.svg</file>
<file>scalable/externaltools.svg</file>
<file>scalable/help.svg</file>

View File

@ -1,86 +1 @@
<?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>
<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>

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 391 B

View File

@ -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

View File

@ -73,8 +73,8 @@
<file>64x64/screenshots.png</file>
<file>scalable/screenshots.svg</file>
<!-- Custom commands. -->
<file>scalable/custom-commands.svg</file>
<file>scalable/environment-variables.svg</file>
<!-- The cat button. Freeware, http://findicons.com/icon/73096/black_cat -->
<file>16x16/cat.png</file>

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 113 KiB

View 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

View File

@ -10,6 +10,7 @@
<file>scalable/copy.svg</file>
<file>scalable/coremods.svg</file>
<file>scalable/custom-commands.svg</file>
<file>scalable/environment-variables.svg</file>
<file>scalable/externaltools.svg</file>
<file>scalable/help.svg</file>
<file>scalable/instance-settings.svg</file>

View 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

View File

@ -10,6 +10,7 @@
<file>scalable/copy.svg</file>
<file>scalable/coremods.svg</file>
<file>scalable/custom-commands.svg</file>
<file>scalable/environment-variables.svg</file>
<file>scalable/externaltools.svg</file>
<file>scalable/help.svg</file>
<file>scalable/instance-settings.svg</file>

View 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

View File

@ -10,6 +10,7 @@
<file>scalable/copy.svg</file>
<file>scalable/coremods.svg</file>
<file>scalable/custom-commands.svg</file>
<file>scalable/environment-variables.svg</file>
<file>scalable/externaltools.svg</file>
<file>scalable/help.svg</file>
<file>scalable/instance-settings.svg</file>

View 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

View File

@ -10,6 +10,7 @@
<file>scalable/copy.svg</file>
<file>scalable/coremods.svg</file>
<file>scalable/custom-commands.svg</file>
<file>scalable/environment-variables.svg</file>
<file>scalable/externaltools.svg</file>
<file>scalable/help.svg</file>
<file>scalable/instance-settings.svg</file>

View 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

View File

@ -26,8 +26,8 @@
class Setting;
class SettingsObject;
typedef std::shared_ptr<SettingsObject> SettingsObjectPtr;
typedef std::weak_ptr<SettingsObject> SettingsObjectWeakPtr;
using SettingsObjectPtr = std::shared_ptr<SettingsObject>;
using SettingsObjectWeakPtr = std::weak_ptr<SettingsObject>;
/*!
* \brief The SettingsObject handles communicating settings between the application and a

View File

@ -77,7 +77,7 @@ struct TaskStepProgress {
Q_DECLARE_METATYPE(TaskStepProgress)
typedef QList<std::shared_ptr<TaskStepProgress>> TaskStepProgressList;
using TaskStepProgressList = QList<std::shared_ptr<TaskStepProgress>>;
class Task : public QObject, public QRunnable {
Q_OBJECT

View File

@ -43,7 +43,7 @@
#include "FileIgnoreProxy.h"
class BaseInstance;
typedef std::shared_ptr<BaseInstance> InstancePtr;
using InstancePtr = std::shared_ptr<BaseInstance>;
namespace Ui {
class ExportInstanceDialog;

View File

@ -59,7 +59,7 @@ class AccessibleInstanceView : public QAccessibleTableInterface, public QAccessi
protected:
// maybe vector
typedef QHash<int, QAccessible::Id> ChildCache;
using ChildCache = QHash<int, QAccessible::Id>;
mutable ChildCache childToId;
virtual ~AccessibleInstanceView();

View File

@ -77,4 +77,4 @@ class BasePage {
bool isOpened = false;
};
typedef std::shared_ptr<BasePage> BasePagePtr;
using BasePagePtr = std::shared_ptr<BasePage>;

View File

@ -26,7 +26,7 @@ class BasePageProvider {
};
class GenericPageProvider : public BasePageProvider {
typedef std::function<BasePage*()> PageCreator;
using PageCreator = std::function<BasePage*()>;
public:
explicit GenericPageProvider(const QString& dialogTitle) : m_dialogTitle(dialogTitle) {}

View 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();
}

View 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;
};

View File

@ -90,6 +90,9 @@ void InstanceSettingsPage::globalSettingsButtonClicked(bool)
case 2:
APPLICATION->ShowGlobalSettings(this, "custom-commands");
return;
case 3:
APPLICATION->ShowGlobalSettings(this, "environment-variables");
return;
default:
APPLICATION->ShowGlobalSettings(this, "minecraft-settings");
return;
@ -199,6 +202,14 @@ void InstanceSettingsPage::applySettings()
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
bool workarounds = ui->nativeWorkaroundsGroupBox->isChecked();
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(),
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
ui->nativeWorkaroundsGroupBox->setChecked(m_settings->get("OverrideNativeWorkarounds").toBool());
ui->useNativeGLFWCheck->setChecked(m_settings->get("UseNativeGLFW").toBool());
@ -484,6 +498,7 @@ void InstanceSettingsPage::retranslate()
{
ui->retranslateUi(this);
ui->customCommands->retranslate(); // TODO: why is this seperate from the others?
ui->environmentVariables->retranslate();
}
void InstanceSettingsPage::updateThresholds()

View File

@ -35,13 +35,10 @@
</item>
<item>
<widget class="QTabWidget" name="settingsTabs">
<property name="tabShape">
<enum>QTabWidget::Rounded</enum>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="minecraftTab">
<widget class="QWidget" name="minecraftPage">
<attribute name="title">
<string notr="true">Java</string>
</attribute>
@ -254,7 +251,7 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="javaTab">
<widget class="QWidget" name="javaPage">
<attribute name="title">
<string>Game windows</string>
</attribute>
@ -414,7 +411,7 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="tab">
<widget class="QWidget" name="customCommandsPage">
<attribute name="title">
<string>Custom commands</string>
</attribute>
@ -424,6 +421,16 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="environmentVariablesPage">
<attribute name="title">
<string>Environment variables</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_16">
<item>
<widget class="EnvironmentVariables" name="environmentVariables" native="true"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="workaroundsPage">
<attribute name="title">
<string>Workarounds</string>
@ -736,6 +743,12 @@
<header>ui/widgets/CustomCommands.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>EnvironmentVariables</class>
<extends>QWidget</extends>
<header>ui/widgets/EnvironmentVariables.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<tabstops>
<tabstop>openGlobalJavaSettingsButton</tabstop>

View File

@ -68,8 +68,8 @@
#include <FileSystem.h>
#include "RWStorage.h"
typedef RWStorage<QString, QIcon> SharedIconCache;
typedef std::shared_ptr<SharedIconCache> SharedIconCachePtr;
using SharedIconCache = RWStorage<QString, QIcon>;
using SharedIconCachePtr = std::shared_ptr<SharedIconCache>;
class ThumbnailingResult : public QObject {
Q_OBJECT

View File

@ -24,8 +24,8 @@
namespace Atl {
typedef QMap<QString, QIcon> LogoMap;
typedef std::function<void(QString)> LogoCallback;
using LogoMap = QMap<QString, QIcon>;
using LogoCallback = std::function<void(QString)>;
class ListModel : public QAbstractListModel {
Q_OBJECT

View File

@ -19,8 +19,8 @@
namespace Flame {
typedef QMap<QString, QIcon> LogoMap;
typedef std::function<void(QString)> LogoCallback;
using LogoMap = QMap<QString, QIcon>;
using LogoCallback = std::function<void(QString)>;
class ListModel : public QAbstractListModel {
Q_OBJECT

View File

@ -13,8 +13,8 @@
namespace LegacyFTB {
typedef QMap<QString, QIcon> FTBLogoMap;
typedef std::function<void(QString)> LogoCallback;
using FTBLogoMap = QMap<QString, QIcon>;
using LogoCallback = std::function<void(QString)>;
class FilterModel : public QSortFilterProxyModel {
Q_OBJECT

View File

@ -42,7 +42,7 @@
namespace Technic {
typedef std::function<void(QString)> LogoCallback;
using LogoCallback = std::function<void(QString)>;
class ListModel : public QAbstractListModel {
Q_OBJECT

View File

@ -64,8 +64,7 @@ bool JavaWizardPage::validatePage()
}
case JavaSettingsWidget::ValidationStatus::AllOK: {
settings->set("JavaPath", m_java_widget->javaPath());
return true;
}
} /* fallthrough */
case JavaSettingsWidget::ValidationStatus::JavaBad: {
// Memory
auto s = APPLICATION->settings();

View File

@ -0,0 +1,110 @@
// 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 <QKeyEvent>
#include "Application.h"
#include "EnvironmentVariables.h"
#include "ui/dialogs/CustomMessageBox.h"
#include "ui_EnvironmentVariables.h"
EnvironmentVariables::EnvironmentVariables(QWidget* parent) : QWidget(parent), ui(new Ui::EnvironmentVariables)
{
ui->setupUi(this);
ui->list->installEventFilter(this);
ui->list->sortItems(0, Qt::AscendingOrder);
ui->list->setSortingEnabled(true);
ui->list->header()->resizeSections(QHeaderView::Interactive);
ui->list->header()->resizeSection(0, 200);
connect(ui->add, &QPushButton::clicked, this, [this] {
auto item = new QTreeWidgetItem(ui->list);
item->setText(0, "ENV_VAR");
item->setText(1, "value");
item->setFlags(item->flags() | Qt::ItemIsEditable);
ui->list->addTopLevelItem(item);
ui->list->selectionModel()->select(ui->list->model()->index(ui->list->indexOfTopLevelItem(item), 0),
QItemSelectionModel::ClearAndSelect | QItemSelectionModel::SelectionFlag::Rows);
ui->list->editItem(item);
});
connect(ui->remove, &QPushButton::clicked, this, [this] {
for (QTreeWidgetItem* item : ui->list->selectedItems())
ui->list->takeTopLevelItem(ui->list->indexOfTopLevelItem(item));
});
connect(ui->clear, &QPushButton::clicked, this, [this] { ui->list->clear(); });
}
EnvironmentVariables::~EnvironmentVariables()
{
delete ui;
}
void EnvironmentVariables::initialize(bool instance, bool override, const QMap<QString, QVariant>& value)
{
// update widgets to settings
ui->groupBox->setCheckable(instance);
ui->groupBox->setChecked(override);
// populate
ui->list->clear();
for (auto iter = value.begin(); iter != value.end(); iter++) {
auto item = new QTreeWidgetItem(ui->list);
item->setText(0, iter.key());
item->setText(1, iter.value().toString());
item->setFlags(item->flags() | Qt::ItemIsEditable);
ui->list->addTopLevelItem(item);
}
}
bool EnvironmentVariables::eventFilter(QObject* watched, QEvent* event)
{
if (watched == ui->list && event->type() == QEvent::KeyPress) {
const QKeyEvent* keyEvent = (QKeyEvent*)event;
if (keyEvent->key() == Qt::Key_Delete) {
emit ui->remove->clicked();
return true;
}
}
return QObject::eventFilter(watched, event);
}
void EnvironmentVariables::retranslate()
{
ui->retranslateUi(this);
}
bool EnvironmentVariables::override() const
{
if (!ui->groupBox->isCheckable())
return false;
return ui->groupBox->isChecked();
}
QMap<QString, QVariant> EnvironmentVariables::value() const
{
QMap<QString, QVariant> result;
QTreeWidgetItem* item = ui->list->topLevelItem(0);
for (int i = 1; item != nullptr; item = ui->list->topLevelItem(i++))
result[item->text(0)] = item->text(1);
return result;
}

View File

@ -0,0 +1,43 @@
// 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 <QMap>
#include <QWidget>
namespace Ui {
class EnvironmentVariables;
}
class EnvironmentVariables : public QWidget {
Q_OBJECT
public:
explicit EnvironmentVariables(QWidget* state = nullptr);
~EnvironmentVariables() override;
void initialize(bool instance, bool override, const QMap<QString, QVariant>& value);
bool eventFilter(QObject* watched, QEvent* event) override;
void retranslate();
bool override() const;
QMap<QString, QVariant> value() const;
private:
Ui::EnvironmentVariables* ui;
};

View File

@ -0,0 +1,115 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>EnvironmentVariables</class>
<widget class="QWidget" name="EnvironmentVariables">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>565</width>
<height>410</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>&amp;Environment Variables</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QTreeWidget" name="list">
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
<property name="rootIsDecorated">
<bool>false</bool>
</property>
<property name="itemsExpandable">
<bool>false</bool>
</property>
<property name="animated">
<bool>true</bool>
</property>
<property name="expandsOnDoubleClick">
<bool>false</bool>
</property>
<column>
<property name="text">
<string>Name</string>
</property>
</column>
<column>
<property name="text">
<string>Value</string>
</property>
</column>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="buttons">
<item>
<widget class="QPushButton" name="add">
<property name="text">
<string>&amp;Add</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="remove">
<property name="text">
<string>&amp;Remove</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="clear">
<property name="text">
<string>&amp;Clear</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

2
libraries/.clang-tidy Normal file
View File

@ -0,0 +1,2 @@
# We don't care about linting third-party code.
Checks: -*

View File

@ -16,12 +16,6 @@
<description>Custom Minecraft launcher for managing multiple installs.</description>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates app support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!--The ID below indicates app support for Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!--The ID below indicates app support for Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!--The ID below indicates app support for Windows 10/11 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
</application>