Merge branch 'PrismLauncher:develop' into develop

This commit is contained in:
he3als 2022-10-22 15:30:40 +01:00 committed by GitHub
commit 89fd84d916
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
146 changed files with 3529 additions and 1074 deletions

2
.github/FUNDING.yml vendored
View File

@ -1 +1 @@
open_collective: polymc open_collective: prismlauncher

View File

@ -8,9 +8,9 @@ body:
If you need help with running Minecraft, please visit us on our Discord before making a bug report. If you need help with running Minecraft, please visit us on our Discord before making a bug report.
Before submitting a bug report, please make sure you have read this *entire* form, and that: Before submitting a bug report, please make sure you have read this *entire* form, and that:
* You have read the [PolyMC wiki](https://polymc.org/wiki/) and it has not answered your question. * You have read the [Prism Launcher wiki](https://prismlauncher.org/wiki/) and it has not answered your question.
* Your bug is not caused by Minecraft or any mods you have installed. * Your bug is not caused by Minecraft or any mods you have installed.
* Your issue has not been reported before, [make sure to use the search function!](https://github.com/PolyMC/PolyMC/issues) * Your issue has not been reported before, [make sure to use the search function!](https://github.com/PrismLauncher/PrismLauncher/issues)
**Do not forget to give your issue a descriptive title.** "Bug in the instance screen" makes it hard to distinguish issues at a glance. **Do not forget to give your issue a descriptive title.** "Bug in the instance screen" makes it hard to distinguish issues at a glance.
- type: dropdown - type: dropdown
@ -25,15 +25,15 @@ body:
- Other - Other
- type: textarea - type: textarea
attributes: attributes:
label: Version of PolyMC label: Version of Prism Launcher
description: The version of PolyMC used in the bug report. description: The version of Prism Launcher used in the bug report.
placeholder: PolyMC 1.4.1 placeholder: Prism Launcher 5.0
validations: validations:
required: true required: true
- type: textarea - type: textarea
attributes: attributes:
label: Version of Qt label: Version of Qt
description: The version of Qt used in the bug report. You can find it in Help -> About PolyMC -> About Qt. description: The version of Qt used in the bug report. You can find it in Help -> About Prism Launcher -> About Qt.
placeholder: Qt 6.3.0 placeholder: Qt 6.3.0
validations: validations:
required: true required: true

View File

@ -1,5 +1,5 @@
blank_issues_enabled: true blank_issues_enabled: true
contact_links: contact_links:
- name: PolyMC Matrix Support Room - name: Prism Launcher Matrix Support Room
url: https://matrix.to/#/#support:polymc.org url: https://matrix.to/#/#prism-support:matrix.org
about: Please ask for support here before opening an issue. about: Please ask for support here before opening an issue.

View File

@ -6,7 +6,7 @@ body:
- type: markdown - type: markdown
attributes: attributes:
value: | value: |
### Use this form to suggest a larger change for PolyMC. ### Use this form to suggest a larger change for Prism Launcher.
- type: textarea - type: textarea
attributes: attributes:
label: Goal label: Goal
@ -18,7 +18,7 @@ body:
attributes: attributes:
label: Motivation label: Motivation
description: | description: |
Introduce the topic. If this is a not-well-known section of PolyMC, a detailed explanation of the background is recommended. Introduce the topic. If this is a not-well-known section of Prism Launcher, a detailed explanation of the background is recommended.
Some example points of discussion: Some example points of discussion:
- What specific problems are you facing right now that you're trying to address? - What specific problems are you facing right now that you're trying to address?
- Are there any previous discussions? Link to them and summarize them (don't force your readers to read them though!). - Are there any previous discussions? Link to them and summarize them (don't force your readers to read them though!).

View File

@ -5,25 +5,25 @@ body:
- type: markdown - type: markdown
attributes: attributes:
value: | value: |
### Use this form to suggest a feature for PolyMC. ### Use this form to suggest a feature for Prism Launcher.
- type: input - type: input
attributes: attributes:
label: Role label: Role
description: In what way do you use PolyMC that needs this feature? description: In what way do you use Prism Launcher that needs this feature?
placeholder: I play modded Minecraft. placeholder: I play modded Minecraft.
validations: validations:
required: true required: true
- type: input - type: input
attributes: attributes:
label: Suggestion label: Suggestion
description: What do you want PolyMC to do? description: What do you want Prism Launcher to do?
placeholder: I want the cat button to meow. placeholder: I want the cat button to meow.
validations: validations:
required: true required: true
- type: input - type: input
attributes: attributes:
label: Benefit label: Benefit
description: Why do you need PolyMC to do this? description: Why do you need Prism Launcher to do this?
placeholder: so that I can always hear a cat when I need to. placeholder: so that I can always hear a cat when I need to.
validations: validations:
required: true required: true

9
.github/pull_request_template.md vendored Normal file
View File

@ -0,0 +1,9 @@
<!--
Hey there! Thanks for your contribution.
Please make sure that your commits are signed off first.
If you don't know how that works, check out our contribution guidelines: https://github.com/PrismLauncher/PrismLauncher/blob/develop/CONTRIBUTING.md#signing-your-work
If you already created your commits, you can run `git rebase --signoff develop` to retroactively sign-off all your commits and `git push --force` to override what you have pushed already.
Note that signing and signing-off are two different things!
-->

View File

@ -104,7 +104,7 @@ jobs:
- name: Setup ccache - name: Setup ccache
if: runner.os != 'Windows' && inputs.build_type == 'Debug' if: runner.os != 'Windows' && inputs.build_type == 'Debug'
uses: hendrikmuhs/ccache-action@v1.2.1 uses: hendrikmuhs/ccache-action@v1.2.3
with: with:
key: ${{ matrix.os }}-qt${{ matrix.qt_ver }} key: ${{ matrix.os }}-qt${{ matrix.qt_ver }}
@ -126,7 +126,7 @@ jobs:
- name: Retrieve ccache cache (Windows) - name: Retrieve ccache cache (Windows)
if: runner.os == 'Windows' && inputs.build_type == 'Debug' if: runner.os == 'Windows' && inputs.build_type == 'Debug'
uses: actions/cache@v3.0.2 uses: actions/cache@v3.0.11
with: with:
path: '${{ github.workspace }}\.ccache' path: '${{ github.workspace }}\.ccache'
key: ${{ matrix.os }}-qt${{ matrix.qt_ver }} key: ${{ matrix.os }}-qt${{ matrix.qt_ver }}

View File

@ -3,7 +3,7 @@ name: Build Application
on: on:
push: push:
branches-ignore: branches-ignore:
- 'stable' - 'renovate/**'
paths-ignore: paths-ignore:
- '**.md' - '**.md'
- '**/LICENSE' - '**/LICENSE'

View File

@ -65,7 +65,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with: with:
tag_name: ${{ github.ref }} tag_name: ${{ github.ref }}
name: PrismLauncher ${{ env.VERSION }} name: Prism Launcher ${{ env.VERSION }}
draft: true draft: true
prerelease: false prerelease: false
files: | files: |

View File

@ -71,7 +71,7 @@ endif()
##################################### Set Application options ##################################### ##################################### Set Application options #####################################
######## Set URLs ######## ######## Set URLs ########
set(Launcher_NEWS_RSS_URL "https://prismlauncher.org/feed/feed.xml" CACHE STRING "URL to fetch PrismLauncher's news RSS feed from.") set(Launcher_NEWS_RSS_URL "https://prismlauncher.org/feed/feed.xml" CACHE STRING "URL to fetch Prism Launcher's news RSS feed from.")
set(Launcher_NEWS_OPEN_URL "https://prismlauncher.org/news" CACHE STRING "URL that gets opened when the user clicks 'More News'") set(Launcher_NEWS_OPEN_URL "https://prismlauncher.org/news" CACHE STRING "URL that gets opened when the user clicks 'More News'")
set(Launcher_HELP_URL "https://prismlauncher.org/wiki/help-pages/%1" CACHE STRING "URL (with arg %1 to be substituted with page-id) that gets opened when the user requests help") set(Launcher_HELP_URL "https://prismlauncher.org/wiki/help-pages/%1" CACHE STRING "URL (with arg %1 to be substituted with page-id) that gets opened when the user requests help")
@ -99,7 +99,7 @@ set(Launcher_IMGUR_CLIENT_ID "5b97b0713fba4a3" CACHE STRING "Client ID you can g
set(Launcher_BUG_TRACKER_URL "https://github.com/PrismLauncher/PrismLauncher/issues" CACHE STRING "URL for the bug tracker.") set(Launcher_BUG_TRACKER_URL "https://github.com/PrismLauncher/PrismLauncher/issues" CACHE STRING "URL for the bug tracker.")
# Translations Platform URL # Translations Platform URL
set(Launcher_TRANSLATIONS_URL "https://hosted.weblate.org/projects/prismlauncher/prismlauncher/" CACHE STRING "URL for the translations platform.") set(Launcher_TRANSLATIONS_URL "https://hosted.weblate.org/projects/prismlauncher/launcher/" CACHE STRING "URL for the translations platform.")
# Matrix Space # Matrix Space
set(Launcher_MATRIX_URL "https://matrix.to/#/#prismlauncher:matrix.org" CACHE STRING "URL to the Matrix Space") set(Launcher_MATRIX_URL "https://matrix.to/#/#prismlauncher:matrix.org" CACHE STRING "URL to the Matrix Space")
@ -249,7 +249,7 @@ if(UNIX AND APPLE)
elseif(UNIX) elseif(UNIX)
set(BINARY_DEST_DIR "bin") set(BINARY_DEST_DIR "bin")
set(LIBRARY_DEST_DIR "lib${LIB_SUFFIX}") set(LIBRARY_DEST_DIR "lib${LIB_SUFFIX}")
set(JARS_DEST_DIR "share/jars") set(JARS_DEST_DIR "share/${Launcher_APP_BINARY_NAME}")
set(LAUNCHER_DESKTOP_DEST_DIR "share/applications" CACHE STRING "Path to the desktop file directory") set(LAUNCHER_DESKTOP_DEST_DIR "share/applications" CACHE STRING "Path to the desktop file directory")
set(LAUNCHER_METAINFO_DEST_DIR "share/metainfo" CACHE STRING "Path to the metainfo directory") set(LAUNCHER_METAINFO_DEST_DIR "share/metainfo" CACHE STRING "Path to the metainfo directory")
set(LAUNCHER_ICON_DEST_DIR "share/icons/hicolor/scalable/apps" CACHE STRING "Path to the scalable icon directory") set(LAUNCHER_ICON_DEST_DIR "share/icons/hicolor/scalable/apps" CACHE STRING "Path to the scalable icon directory")

View File

@ -1,24 +1,87 @@
# Prism Launcher <p align="center">
<img src="./program_info/org.prismlauncher.PrismLauncher.logo.svg#gh-light-mode-only" alt="Prism Launcher logo" width="50%"/>
<img src="./program_info/org.prismlauncher.PrismLauncher.logo-darkmode.svg#gh-dark-mode-only" alt="Prism Launcher logo" width="50%"/>
</p>
Prism Launcher is a custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once. Prism Launcher is a custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once.
We are working on a website and other media, for more info we have a [Discord server](https://discord.gg/hX4g537UNE). Logo and branding also coming soon. This is a **fork** of the MultiMC Launcher and not endorsed by MultiMC.
## Installation ## Installation
- All downloads and instructions for Prism Launcher will soon be available. - All downloads and instructions for Prism Launcher can be found [on our website](https://prismlauncher.org/download/).
- Last build status: <https://github.com/PrismLauncher/PrismLauncher/actions> - Last build status can be found [here](https://github.com/PrismLauncher/PrismLauncher/actions).
### Development Builds ### Development Builds
There are development builds available [here](https://github.com/PrismLauncher/PrismLauncher/actions). These have debug information in the binaries, so their file sizes are relatively larger. There are development builds available [here](https://github.com/PrismLauncher/PrismLauncher/actions). These have debug information in the binaries, so their file sizes are relatively larger.
Portable builds are provided for AppImage on Linux, Windows, and macOS. Portable builds are provided for on Linux, Windows, and macOS.
For Debian and Arch, you can use these packages for the latest development versions:
[![prismlauncher-git](https://img.shields.io/badge/aur-prismlauncher--git-blue)](https://aur.archlinux.org/packages/prismlauncher-git/)
[![prismlauncher-git](https://img.shields.io/badge/mpr-prismlauncher--git-orange)](https://mpr.makedeb.org/packages/prismlauncher-git)
## Help & Support ## Help & Support
- Join the [Discord Server](https://discord.gg/hX4g537UNE) for now. Feel free to create an issue if you need help. However, you might find it easier to ask in the Discord server.
[![Prism Launcher Discord server](https://discordapp.com/api/guilds/1031648380885147709/widget.png?style=banner3)](https://discord.gg/prismlauncher)
We will also soon be opening up our Matrix channels.
You can already join our Matrix space:
[![PrismLauncher Space](https://img.shields.io/matrix/prismlauncher:matrix.org?label=PrismLauncher%20space)](https://matrix.to/#/#prismlauncher:matrix.org)
We also have a subreddit you can post your issues and suggestions on:
[r/PrismLauncher](https://www.reddit.com/r/PrismLauncher/)
## Building
If you want to build Prism Launcher yourself, check [Build Instructions](https://prismlauncher.org/wiki/development/build-instructions/) for build instructions.
## Translations
The translation effort for PrismLauncher is hosted on [Weblate](https://hosted.weblate.org/projects/prismlauncher/launcher/) and information about translating Prism Launcher is available at <https://github.com/PrismLauncher/Translations>
## Forking/Redistributing/Custom builds policy
We don't care what you do with your fork/custom build as long as you follow the terms of the [license](LICENSE) (this is a legal responsibility), and if you made code changes rather than just packaging a custom build, please do the following as a basic courtesy:
- Make it clear that your fork is not PrismLauncher and is not endorsed by or affiliated with the PrismLauncher project (<https://prismlauncher.org>).
- Go through [CMakeLists.txt](CMakeLists.txt) and change PrismLauncher's API keys to your own or set them to empty strings (`""`) to disable them (this way the program will still compile but the functionality requiring those keys will be disabled).
If you have any questions or want any clarification on the above conditions please make an issue and ask us.
Be aware that if you build this software without removing the provided API keys in [CMakeLists.txt](CMakeLists.txt) you are accepting the following terms and conditions:
- [Microsoft Identity Platform Terms of Use](https://docs.microsoft.com/en-us/legal/microsoft-identity-platform/terms-of-use)
- [CurseForge 3rd Party API Terms and Conditions](https://support.curseforge.com/en/support/solutions/articles/9000207405-curse-forge-3rd-party-api-terms-and-conditions)
If you do not agree with these terms and conditions, then remove the associated API keys from the [CMakeLists.txt](CMakeLists.txt) file by setting them to an empty string (`""`).
## License ## License
All launcher code is available under the GPL-3.0-only license. All launcher code is available under the GPL-3.0-only license.
The logo and related assets are under the CC BY-SA 4.0 license.
## Sponsors
Thanks to JetBrains for providing us a few licenses for all their products, as part of their [Open Source program](https://www.jetbrains.com/opensource/).
[![JetBrains](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.svg)](https://www.jetbrains.com/opensource/)
Thanks to Weblate for hosting our translation efforts.
<a href="https://hosted.weblate.org/engage/prismlauncher/">
<img src="https://hosted.weblate.org/widgets/prismlauncher/-/open-graph.png" alt="Translation status" width="300" />
</a>
Thanks to Netlify for providing us their excellent web services, as part of their [Open Source program](https://www.netlify.com/open-source/)
<a href="https://www.netlify.com"> <img src="https://www.netlify.com/v3/img/components/netlify-color-accent.svg" alt="Deploys by Netlify" /> </a>
Thanks to the awesome people over at [MacStadium](https://www.macstadium.com/), for providing M1-Macs for development purposes!
<a href="https://www.macstadium.com"><img src="https://uploads-ssl.webflow.com/5ac3c046c82724970fc60918/5c019d917bba312af7553b49_MacStadium-developerlogo.png" alt="Powered by MacStadium" width="300"></a>

View File

@ -42,6 +42,7 @@ Config::Config()
{ {
// Name and copyright // Name and copyright
LAUNCHER_NAME = "@Launcher_Name@"; LAUNCHER_NAME = "@Launcher_Name@";
LAUNCHER_APP_BINARY_NAME = "@Launcher_APP_BINARY_NAME@";
LAUNCHER_DISPLAYNAME = "@Launcher_DisplayName@"; LAUNCHER_DISPLAYNAME = "@Launcher_DisplayName@";
LAUNCHER_COPYRIGHT = "@Launcher_Copyright@"; LAUNCHER_COPYRIGHT = "@Launcher_Copyright@";
LAUNCHER_DOMAIN = "@Launcher_Domain@"; LAUNCHER_DOMAIN = "@Launcher_Domain@";

View File

@ -44,6 +44,7 @@ class Config {
public: public:
Config(); Config();
QString LAUNCHER_NAME; QString LAUNCHER_NAME;
QString LAUNCHER_APP_BINARY_NAME;
QString LAUNCHER_DISPLAYNAME; QString LAUNCHER_DISPLAYNAME;
QString LAUNCHER_COPYRIGHT; QString LAUNCHER_COPYRIGHT;
QString LAUNCHER_DOMAIN; QString LAUNCHER_DOMAIN;

View File

@ -488,7 +488,8 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
// Initialize application settings // Initialize application settings
{ {
m_settings.reset(new INISettingsObject(BuildConfig.LAUNCHER_CONFIGFILE, this)); // Provide a fallback for migration from PolyMC
m_settings.reset(new INISettingsObject({ BuildConfig.LAUNCHER_CONFIGFILE, "polymc.cfg", "multimc.cfg" }, this));
// Updates // Updates
// Multiple channels are separated by spaces // Multiple channels are separated by spaces
m_settings->registerSetting("UpdateChannel", BuildConfig.VERSION_CHANNEL); m_settings->registerSetting("UpdateChannel", BuildConfig.VERSION_CHANNEL);
@ -815,6 +816,7 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
m_metacache->addBase("FlamePacks", QDir("cache/FlamePacks").absolutePath()); m_metacache->addBase("FlamePacks", QDir("cache/FlamePacks").absolutePath());
m_metacache->addBase("FlameMods", QDir("cache/FlameMods").absolutePath()); m_metacache->addBase("FlameMods", QDir("cache/FlameMods").absolutePath());
m_metacache->addBase("ModrinthPacks", QDir("cache/ModrinthPacks").absolutePath()); m_metacache->addBase("ModrinthPacks", QDir("cache/ModrinthPacks").absolutePath());
m_metacache->addBase("ModrinthModpacks", QDir("cache/ModrinthModpacks").absolutePath());
m_metacache->addBase("root", QDir::currentPath()); m_metacache->addBase("root", QDir::currentPath());
m_metacache->addBase("translations", QDir("translations").absolutePath()); m_metacache->addBase("translations", QDir("translations").absolutePath());
m_metacache->addBase("icons", QDir("cache/icons").absolutePath()); m_metacache->addBase("icons", QDir("cache/icons").absolutePath());
@ -1569,7 +1571,7 @@ QString Application::getJarPath(QString jarFile)
{ {
QStringList potentialPaths = { QStringList potentialPaths = {
#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD) || defined(Q_OS_OPENBSD) #if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD) || defined(Q_OS_OPENBSD)
FS::PathCombine(m_rootPath, "share/jars"), FS::PathCombine(m_rootPath, "share/" + BuildConfig.LAUNCHER_APP_BINARY_NAME),
#endif #endif
FS::PathCombine(m_rootPath, "jars"), FS::PathCombine(m_rootPath, "jars"),
FS::PathCombine(applicationDirPath(), "jars") FS::PathCombine(applicationDirPath(), "jars")

View File

@ -854,6 +854,10 @@ SET(LAUNCHER_SOURCES
ui/widgets/PageContainer.cpp ui/widgets/PageContainer.cpp
ui/widgets/PageContainer.h ui/widgets/PageContainer.h
ui/widgets/PageContainer_p.h ui/widgets/PageContainer_p.h
ui/widgets/ProjectDescriptionPage.h
ui/widgets/ProjectDescriptionPage.cpp
ui/widgets/VariableSizedImageObject.h
ui/widgets/VariableSizedImageObject.cpp
ui/widgets/ProjectItem.h ui/widgets/ProjectItem.h
ui/widgets/ProjectItem.cpp ui/widgets/ProjectItem.cpp
ui/widgets/VersionListView.cpp ui/widgets/VersionListView.cpp

View File

@ -441,7 +441,7 @@ QList<QString> JavaUtils::FindJavaPaths()
scanJavaDir("/usr/lib/jvm"); scanJavaDir("/usr/lib/jvm");
scanJavaDir("/usr/lib64/jvm"); scanJavaDir("/usr/lib64/jvm");
scanJavaDir("/usr/lib32/jvm"); scanJavaDir("/usr/lib32/jvm");
// javas stored in PolyMC's folder // javas stored in Prism Launcher's folder
scanJavaDir("java"); scanJavaDir("java");
// manually installed JDKs in /opt // manually installed JDKs in /opt
scanJavaDir("/opt/jdk"); scanJavaDir("/opt/jdk");

View File

@ -194,7 +194,7 @@ public: /* methods */
QString getCompatibleNative(const RuntimeContext & runtimeContext) const; QString getCompatibleNative(const RuntimeContext & runtimeContext) const;
private: /* methods */ private: /* methods */
/// the default storage prefix used by PolyMC /// the default storage prefix used by Prism Launcher
static QString defaultStoragePrefix(); static QString defaultStoragePrefix();
/// Get the prefix - root of the storage to be used /// Get the prefix - root of the storage to be used
@ -215,23 +215,23 @@ protected: /* data */
/// DEPRECATED URL prefix of the maven repo where the file can be downloaded /// DEPRECATED URL prefix of the maven repo where the file can be downloaded
QString m_repositoryURL; QString m_repositoryURL;
/// DEPRECATED: PolyMC-specific absolute URL. takes precedence over the implicit maven repo URL, if defined /// DEPRECATED: Prism Launcher-specific absolute URL. takes precedence over the implicit maven repo URL, if defined
QString m_absoluteURL; QString m_absoluteURL;
/// PolyMC extension - filename override /// Prism Launcher extension - filename override
QString m_filename; QString m_filename;
/// DEPRECATED PolyMC extension - display name /// DEPRECATED Prism Launcher extension - display name
QString m_displayname; QString m_displayname;
/** /**
* PolyMC-specific type hint - modifies how the library is treated * Prism Launcher-specific type hint - modifies how the library is treated
*/ */
QString m_hint; QString m_hint;
/** /**
* storage - by default the local libraries folder in polymc, but could be elsewhere * storage - by default the local libraries folder in Prism Launcher, but could be elsewhere
* PolyMC specific, because of FTB. * Prism Launcher specific, because of FTB.
*/ */
QString m_storagePrefix; QString m_storagePrefix;

View File

@ -62,19 +62,19 @@ public: /* methods */
void applyTo(LaunchProfile* profile, const RuntimeContext & runtimeContext); void applyTo(LaunchProfile* profile, const RuntimeContext & runtimeContext);
public: /* data */ public: /* data */
/// PolyMC: order hint for this version file if no explicit order is set /// Prism Launcher: order hint for this version file if no explicit order is set
int order = 0; int order = 0;
/// PolyMC: human readable name of this package /// Prism Launcher: human readable name of this package
QString name; QString name;
/// PolyMC: package ID of this package /// Prism Launcher: package ID of this package
QString uid; QString uid;
/// PolyMC: version of this package /// Prism Launcher: version of this package
QString version; QString version;
/// PolyMC: DEPRECATED dependency on a Minecraft version /// Prism Launcher: DEPRECATED dependency on a Minecraft version
QString dependsOnMinecraftVersion; QString dependsOnMinecraftVersion;
/// Mojang: DEPRECATED used to version the Mojang version format /// Mojang: DEPRECATED used to version the Mojang version format
@ -86,13 +86,13 @@ public: /* data */
/// Mojang: class to launch Minecraft with /// Mojang: class to launch Minecraft with
QString mainClass; QString mainClass;
/// PolyMC: class to launch legacy Minecraft with (embed in a custom window) /// Prism Launcher: class to launch legacy Minecraft with (embed in a custom window)
QString appletClass; QString appletClass;
/// Mojang: Minecraft launch arguments (may contain placeholders for variable substitution) /// Mojang: Minecraft launch arguments (may contain placeholders for variable substitution)
QString minecraftArguments; QString minecraftArguments;
/// PolyMC: Additional JVM launch arguments /// Prism Launcher: Additional JVM launch arguments
QStringList addnJvmArguments; QStringList addnJvmArguments;
/// Mojang: list of compatible java majors /// Mojang: list of compatible java majors
@ -110,38 +110,38 @@ public: /* data */
/// Mojang: DEPRECATED asset group to be used with Minecraft /// Mojang: DEPRECATED asset group to be used with Minecraft
QString assets; QString assets;
/// PolyMC: list of tweaker mod arguments for launchwrapper /// Prism Launcher: list of tweaker mod arguments for launchwrapper
QStringList addTweakers; QStringList addTweakers;
/// Mojang: list of libraries to add to the version /// Mojang: list of libraries to add to the version
QList<LibraryPtr> libraries; QList<LibraryPtr> libraries;
/// PolyMC: list of maven files to put in the libraries folder, but not in classpath /// Prism Launcher: list of maven files to put in the libraries folder, but not in classpath
QList<LibraryPtr> mavenFiles; QList<LibraryPtr> mavenFiles;
/// PolyMC: list of agents to add to JVM arguments /// Prism Launcher: list of agents to add to JVM arguments
QList<AgentPtr> agents; QList<AgentPtr> agents;
/// The main jar (Minecraft version library, normally) /// The main jar (Minecraft version library, normally)
LibraryPtr mainJar; LibraryPtr mainJar;
/// PolyMC: list of attached traits of this version file - used to enable features /// Prism Launcher: list of attached traits of this version file - used to enable features
QSet<QString> traits; QSet<QString> traits;
/// PolyMC: list of jar mods added to this version /// Prism Launcher: list of jar mods added to this version
QList<LibraryPtr> jarMods; QList<LibraryPtr> jarMods;
/// PolyMC: list of mods added to this version /// Prism Launcher: list of mods added to this version
QList<LibraryPtr> mods; QList<LibraryPtr> mods;
/** /**
* PolyMC: set of packages this depends on * Prism Launcher: set of packages this depends on
* NOTE: this is shared with the meta format!!! * NOTE: this is shared with the meta format!!!
*/ */
Meta::RequireSet requires; Meta::RequireSet requires;
/** /**
* PolyMC: set of packages this conflicts with * Prism Launcher: set of packages this conflicts with
* NOTE: this is shared with the meta format!!! * NOTE: this is shared with the meta format!!!
*/ */
Meta::RequireSet conflicts; Meta::RequireSet conflicts;

View File

@ -44,7 +44,7 @@
/*! /*!
* List of available Mojang accounts. * List of available Mojang accounts.
* This should be loaded in the background by PolyMC on startup. * This should be loaded in the background by Prism Launcher on startup.
*/ */
class AccountList : public QAbstractListModel class AccountList : public QAbstractListModel
{ {

View File

@ -61,7 +61,7 @@ Q_DECLARE_METATYPE(MinecraftAccountPtr)
* A profile within someone's Mojang account. * A profile within someone's Mojang account.
* *
* Currently, the profile system has not been implemented by Mojang yet, * Currently, the profile system has not been implemented by Mojang yet,
* but we might as well add some things for it in PolyMC right now so * but we might as well add some things for it in Prism Launcher right now so
* we don't have to rip the code to pieces to add it later. * we don't have to rip the code to pieces to add it later.
*/ */
struct AccountProfile struct AccountProfile

View File

@ -154,7 +154,7 @@ void LauncherPartLaunch::executeTask()
#else #else
args << classPath.join(':'); args << classPath.join(':');
#endif #endif
args << "org.polymc.EntryPoint"; args << "org.prismlauncher.EntryPoint";
qDebug() << args.join(' '); qDebug() << args.join(' ');

View File

@ -23,7 +23,7 @@ MinecraftServerTarget MinecraftServerTarget::parse(const QString &fullAddress) {
// The logic below replicates the exact logic minecraft uses for parsing server addresses. // The logic below replicates the exact logic minecraft uses for parsing server addresses.
// While the conversion is not lossless and eats errors, it ensures the same behavior // While the conversion is not lossless and eats errors, it ensures the same behavior
// within Minecraft and PolyMC when entering server addresses. // within Minecraft and Prism Launcher when entering server addresses.
if (fullAddress.startsWith("[")) if (fullAddress.startsWith("["))
{ {
int bracket = fullAddress.indexOf("]"); int bracket = fullAddress.indexOf("]");

View File

@ -736,7 +736,12 @@ void PackInstallTask::downloadMods()
QVector<QString> selectedMods; QVector<QString> selectedMods;
if (!optionalMods.isEmpty()) { if (!optionalMods.isEmpty()) {
setStatus(tr("Selecting optional mods...")); setStatus(tr("Selecting optional mods..."));
selectedMods = m_support->chooseOptionalMods(m_version, optionalMods); auto mods = m_support->chooseOptionalMods(m_version, optionalMods);
if (!mods.has_value()) {
emitAborted();
return;
}
selectedMods = mods.value();
} }
setStatus(tr("Downloading mods...")); setStatus(tr("Downloading mods..."));

View File

@ -62,7 +62,7 @@ public:
/** /**
* Requests a user interaction to select which optional mods should be installed. * Requests a user interaction to select which optional mods should be installed.
*/ */
virtual QVector<QString> chooseOptionalMods(PackVersion version, QVector<ATLauncher::VersionMod> mods) = 0; virtual std::optional<QVector<QString>> chooseOptionalMods(PackVersion version, QVector<ATLauncher::VersionMod> mods) = 0;
/** /**
* Requests a user interaction to select a component version from a given version list * Requests a user interaction to select a component version from a given version list

View File

@ -9,9 +9,12 @@ Flame::FileResolvingTask::FileResolvingTask(const shared_qobject_ptr<QNetworkAcc
bool Flame::FileResolvingTask::abort() bool Flame::FileResolvingTask::abort()
{ {
bool aborted = true;
if (m_dljob) if (m_dljob)
return m_dljob->abort(); aborted &= m_dljob->abort();
return true; if (m_checkJob)
aborted &= m_checkJob->abort();
return aborted ? Task::abort() : false;
} }
void Flame::FileResolvingTask::executeTask() void Flame::FileResolvingTask::executeTask()
@ -39,7 +42,7 @@ void Flame::FileResolvingTask::netJobFinished()
setProgress(1, 3); setProgress(1, 3);
int index = 0; int index = 0;
// job to check modrinth for blocked projects // job to check modrinth for blocked projects
auto job = new NetJob("Modrinth check", m_network); m_checkJob = new NetJob("Modrinth check", m_network);
blockedProjects = QMap<File *,QByteArray *>(); blockedProjects = QMap<File *,QByteArray *>();
auto doc = Json::requireDocument(*result); auto doc = Json::requireDocument(*result);
auto array = Json::requireArray(doc.object()["data"]); auto array = Json::requireArray(doc.object()["data"]);
@ -59,15 +62,15 @@ void Flame::FileResolvingTask::netJobFinished()
out.resolved = true; out.resolved = true;
}); });
job->addNetAction(dl); m_checkJob->addNetAction(dl);
blockedProjects.insert(&out, output); blockedProjects.insert(&out, output);
} }
} }
index++; index++;
} }
connect(job, &NetJob::finished, this, &Flame::FileResolvingTask::modrinthCheckFinished); connect(m_checkJob.get(), &NetJob::finished, this, &Flame::FileResolvingTask::modrinthCheckFinished);
job->start(); m_checkJob->start();
} }
void Flame::FileResolvingTask::modrinthCheckFinished() { void Flame::FileResolvingTask::modrinthCheckFinished() {

View File

@ -32,6 +32,7 @@ private: /* data */
Flame::Manifest m_toProcess; Flame::Manifest m_toProcess;
std::shared_ptr<QByteArray> result; std::shared_ptr<QByteArray> result;
NetJob::Ptr m_dljob; NetJob::Ptr m_dljob;
NetJob::Ptr m_checkJob;
void modrinthCheckFinished(); void modrinthCheckFinished();

View File

@ -65,48 +65,42 @@ void PackInstallTask::executeTask()
void PackInstallTask::downloadPack() void PackInstallTask::downloadPack()
{ {
setStatus(tr("Downloading zip for %1").arg(m_pack.name)); setStatus(tr("Downloading zip for %1").arg(m_pack.name));
setAbortable(false);
archivePath = QString("%1/%2/%3").arg(m_pack.dir, m_version.replace(".", "_"), m_pack.file);
auto packoffset = QString("%1/%2/%3").arg(m_pack.dir, m_version.replace(".", "_"), m_pack.file);
auto entry = APPLICATION->metacache()->resolveEntry("FTBPacks", packoffset);
netJobContainer = new NetJob("Download FTB Pack", m_network); netJobContainer = new NetJob("Download FTB Pack", m_network);
entry->setStale(true);
QString url; QString url;
if(m_pack.type == PackType::Private) if (m_pack.type == PackType::Private) {
{ url = QString(BuildConfig.LEGACY_FTB_CDN_BASE_URL + "privatepacks/%1").arg(archivePath);
url = QString(BuildConfig.LEGACY_FTB_CDN_BASE_URL + "privatepacks/%1").arg(packoffset); } else {
url = QString(BuildConfig.LEGACY_FTB_CDN_BASE_URL + "modpacks/%1").arg(archivePath);
} }
else netJobContainer->addNetAction(Net::Download::makeFile(url, archivePath));
{
url = QString(BuildConfig.LEGACY_FTB_CDN_BASE_URL + "modpacks/%1").arg(packoffset);
}
netJobContainer->addNetAction(Net::Download::makeCached(url, entry));
archivePath = entry->getFullPath();
connect(netJobContainer.get(), &NetJob::succeeded, this, &PackInstallTask::onDownloadSucceeded); connect(netJobContainer.get(), &NetJob::succeeded, this, &PackInstallTask::onDownloadSucceeded);
connect(netJobContainer.get(), &NetJob::failed, this, &PackInstallTask::onDownloadFailed); connect(netJobContainer.get(), &NetJob::failed, this, &PackInstallTask::onDownloadFailed);
connect(netJobContainer.get(), &NetJob::progress, this, &PackInstallTask::onDownloadProgress); connect(netJobContainer.get(), &NetJob::progress, this, &PackInstallTask::onDownloadProgress);
connect(netJobContainer.get(), &NetJob::aborted, this, &PackInstallTask::onDownloadAborted); connect(netJobContainer.get(), &NetJob::aborted, this, &PackInstallTask::onDownloadAborted);
netJobContainer->start(); netJobContainer->start();
setAbortable(true);
progress(1, 4); progress(1, 4);
} }
void PackInstallTask::onDownloadSucceeded() void PackInstallTask::onDownloadSucceeded()
{ {
abortable = false;
unzip(); unzip();
} }
void PackInstallTask::onDownloadFailed(QString reason) void PackInstallTask::onDownloadFailed(QString reason)
{ {
abortable = false;
emitFailed(reason); emitFailed(reason);
} }
void PackInstallTask::onDownloadProgress(qint64 current, qint64 total) void PackInstallTask::onDownloadProgress(qint64 current, qint64 total)
{ {
abortable = true;
progress(current, total * 4); progress(current, total * 4);
setStatus(tr("Downloading zip for %1 (%2%)").arg(m_pack.name).arg(current / 10)); setStatus(tr("Downloading zip for %1 (%2%)").arg(m_pack.name).arg(current / 10));
} }
@ -118,8 +112,10 @@ void PackInstallTask::onDownloadAborted()
void PackInstallTask::unzip() void PackInstallTask::unzip()
{ {
progress(2, 4);
setStatus(tr("Extracting modpack")); setStatus(tr("Extracting modpack"));
setAbortable(false);
progress(2, 4);
QDir extractDir(m_stagingPath); QDir extractDir(m_stagingPath);
m_packZip.reset(new QuaZip(archivePath)); m_packZip.reset(new QuaZip(archivePath));
@ -151,8 +147,8 @@ void PackInstallTask::onUnzipCanceled()
void PackInstallTask::install() void PackInstallTask::install()
{ {
progress(3, 4);
setStatus(tr("Installing modpack")); setStatus(tr("Installing modpack"));
progress(3, 4);
QDir unzipMcDir(m_stagingPath + "/unzip/minecraft"); QDir unzipMcDir(m_stagingPath + "/unzip/minecraft");
if(unzipMcDir.exists()) if(unzipMcDir.exists())
{ {
@ -247,11 +243,12 @@ void PackInstallTask::install()
bool PackInstallTask::abort() bool PackInstallTask::abort()
{ {
if(abortable) if (!canAbort()) {
{
return netJobContainer->abort();
}
return false; return false;
}
netJobContainer->abort();
return InstanceTask::abort();
} }
} }

View File

@ -58,6 +58,9 @@ PackInstallTask::PackInstallTask(Modpack pack, QString version, QWidget* parent)
bool PackInstallTask::abort() bool PackInstallTask::abort()
{ {
if (!canAbort())
return false;
bool aborted = true; bool aborted = true;
if (m_net_job) if (m_net_job)
@ -65,15 +68,13 @@ bool PackInstallTask::abort()
if (m_mod_id_resolver_task) if (m_mod_id_resolver_task)
aborted &= m_mod_id_resolver_task->abort(); aborted &= m_mod_id_resolver_task->abort();
if (aborted) return aborted ? InstanceTask::abort() : false;
emitAborted();
return aborted;
} }
void PackInstallTask::executeTask() void PackInstallTask::executeTask()
{ {
setStatus(tr("Getting the manifest...")); setStatus(tr("Getting the manifest..."));
setAbortable(false);
// Find pack version // Find pack version
auto version_it = std::find_if(m_pack.versions.constBegin(), m_pack.versions.constEnd(), auto version_it = std::find_if(m_pack.versions.constBegin(), m_pack.versions.constEnd(),
@ -93,10 +94,12 @@ void PackInstallTask::executeTask()
QObject::connect(netJob, &NetJob::succeeded, this, &PackInstallTask::onManifestDownloadSucceeded); QObject::connect(netJob, &NetJob::succeeded, this, &PackInstallTask::onManifestDownloadSucceeded);
QObject::connect(netJob, &NetJob::failed, this, &PackInstallTask::onManifestDownloadFailed); QObject::connect(netJob, &NetJob::failed, this, &PackInstallTask::onManifestDownloadFailed);
QObject::connect(netJob, &NetJob::aborted, this, &PackInstallTask::abort);
QObject::connect(netJob, &NetJob::progress, this, &PackInstallTask::setProgress); QObject::connect(netJob, &NetJob::progress, this, &PackInstallTask::setProgress);
m_net_job = netJob; m_net_job = netJob;
setAbortable(true);
netJob->start(); netJob->start();
} }
@ -130,6 +133,7 @@ void PackInstallTask::onManifestDownloadSucceeded()
void PackInstallTask::resolveMods() void PackInstallTask::resolveMods()
{ {
setStatus(tr("Resolving mods...")); setStatus(tr("Resolving mods..."));
setAbortable(false);
setProgress(0, 100); setProgress(0, 100);
m_file_id_map.clear(); m_file_id_map.clear();
@ -162,15 +166,16 @@ void PackInstallTask::resolveMods()
connect(m_mod_id_resolver_task.get(), &Flame::FileResolvingTask::succeeded, this, &PackInstallTask::onResolveModsSucceeded); connect(m_mod_id_resolver_task.get(), &Flame::FileResolvingTask::succeeded, this, &PackInstallTask::onResolveModsSucceeded);
connect(m_mod_id_resolver_task.get(), &Flame::FileResolvingTask::failed, this, &PackInstallTask::onResolveModsFailed); connect(m_mod_id_resolver_task.get(), &Flame::FileResolvingTask::failed, this, &PackInstallTask::onResolveModsFailed);
connect(m_mod_id_resolver_task.get(), &Flame::FileResolvingTask::aborted, this, &PackInstallTask::abort);
connect(m_mod_id_resolver_task.get(), &Flame::FileResolvingTask::progress, this, &PackInstallTask::setProgress); connect(m_mod_id_resolver_task.get(), &Flame::FileResolvingTask::progress, this, &PackInstallTask::setProgress);
setAbortable(true);
m_mod_id_resolver_task->start(); m_mod_id_resolver_task->start();
} }
void PackInstallTask::onResolveModsSucceeded() void PackInstallTask::onResolveModsSucceeded()
{ {
m_abortable = false;
QString text; QString text;
QList<QUrl> urls; QList<QUrl> urls;
auto anyBlocked = false; auto anyBlocked = false;
@ -209,94 +214,23 @@ void PackInstallTask::onResolveModsSucceeded()
urls); urls);
if (message_dialog->exec() == QDialog::Accepted) if (message_dialog->exec() == QDialog::Accepted)
downloadPack(); createInstance();
else else
abort(); abort();
} else { } else {
downloadPack(); createInstance();
} }
} }
void PackInstallTask::downloadPack() void PackInstallTask::createInstance()
{ {
setStatus(tr("Downloading mods...")); setAbortable(false);
auto* jobPtr = new NetJob(tr("Mod download"), APPLICATION->network()); setStatus(tr("Creating the instance..."));
for (auto const& file : m_version.files) {
if (file.serverOnly || file.url.isEmpty())
continue;
QFileInfo file_info(file.name);
auto cacheName = file_info.completeBaseName() + "-" + file.sha1 + "." + file_info.suffix();
auto entry = APPLICATION->metacache()->resolveEntry("ModpacksCHPacks", cacheName);
entry->setStale(true);
auto relpath = FS::PathCombine("minecraft", file.path, file.name);
auto path = FS::PathCombine(m_stagingPath, relpath);
if (m_files_to_copy.contains(path)) {
qWarning() << "Ignoring" << file.url << "as a file of that path is already downloading.";
continue;
}
qDebug() << "Will download" << file.url << "to" << path;
m_files_to_copy[path] = entry->getFullPath();
auto dl = Net::Download::makeCached(file.url, entry);
if (!file.sha1.isEmpty()) {
auto rawSha1 = QByteArray::fromHex(file.sha1.toLatin1());
dl->addValidator(new Net::ChecksumValidator(QCryptographicHash::Sha1, rawSha1));
}
jobPtr->addNetAction(dl);
}
connect(jobPtr, &NetJob::succeeded, this, &PackInstallTask::onModDownloadSucceeded);
connect(jobPtr, &NetJob::failed, this, &PackInstallTask::onModDownloadFailed);
connect(jobPtr, &NetJob::progress, this, &PackInstallTask::setProgress);
m_net_job = jobPtr;
jobPtr->start();
m_abortable = true;
}
void PackInstallTask::onModDownloadSucceeded()
{
m_net_job.reset();
install();
}
void PackInstallTask::install()
{
setStatus(tr("Copying modpack files..."));
setProgress(0, m_files_to_copy.size());
QCoreApplication::processEvents();
m_abortable = false;
int i = 0;
for (auto iter = m_files_to_copy.constBegin(); iter != m_files_to_copy.constEnd(); iter++) {
auto& to = iter.key();
auto& from = iter.value();
FS::copy fileCopyOperation(from, to);
if (!fileCopyOperation()) {
qWarning() << "Failed to copy" << from << "to" << to;
emitFailed(tr("Failed to copy files"));
return;
}
setProgress(i++, m_files_to_copy.size());
QCoreApplication::processEvents();
}
setStatus(tr("Installing modpack..."));
QCoreApplication::processEvents(); QCoreApplication::processEvents();
auto instanceConfigPath = FS::PathCombine(m_stagingPath, "instance.cfg"); auto instanceConfigPath = FS::PathCombine(m_stagingPath, "instance.cfg");
auto instanceSettings = std::make_shared<INISettingsObject>(instanceConfigPath); auto instanceSettings = std::make_shared<INISettingsObject>(instanceConfigPath);
instanceSettings->suspendSave();
MinecraftInstance instance(m_globalSettings, instanceSettings, m_stagingPath); MinecraftInstance instance(m_globalSettings, instanceSettings, m_stagingPath);
auto components = instance.getPackProfile(); auto components = instance.getPackProfile();
@ -337,8 +271,55 @@ void PackInstallTask::install()
instance.setName(name()); instance.setName(name());
instance.setIconKey(m_instIcon); instance.setIconKey(m_instIcon);
instance.setManagedPack("modpacksch", QString::number(m_pack.id), m_pack.name, QString::number(m_version.id), m_version.name); instance.setManagedPack("modpacksch", QString::number(m_pack.id), m_pack.name, QString::number(m_version.id), m_version.name);
instanceSettings->resumeSave();
instance.saveNow();
onCreateInstanceSucceeded();
}
void PackInstallTask::onCreateInstanceSucceeded()
{
downloadPack();
}
void PackInstallTask::downloadPack()
{
setStatus(tr("Downloading mods..."));
setAbortable(false);
auto* jobPtr = new NetJob(tr("Mod download"), APPLICATION->network());
for (auto const& file : m_version.files) {
if (file.serverOnly || file.url.isEmpty())
continue;
auto path = FS::PathCombine(m_stagingPath, ".minecraft", file.path, file.name);
qDebug() << "Will try to download" << file.url << "to" << path;
QFileInfo file_info(file.name);
auto dl = Net::Download::makeFile(file.url, path);
if (!file.sha1.isEmpty()) {
auto rawSha1 = QByteArray::fromHex(file.sha1.toLatin1());
dl->addValidator(new Net::ChecksumValidator(QCryptographicHash::Sha1, rawSha1));
}
jobPtr->addNetAction(dl);
}
connect(jobPtr, &NetJob::succeeded, this, &PackInstallTask::onModDownloadSucceeded);
connect(jobPtr, &NetJob::failed, this, &PackInstallTask::onModDownloadFailed);
connect(jobPtr, &NetJob::aborted, this, &PackInstallTask::abort);
connect(jobPtr, &NetJob::progress, this, &PackInstallTask::setProgress);
m_net_job = jobPtr;
setAbortable(true);
jobPtr->start();
}
void PackInstallTask::onModDownloadSucceeded()
{
m_net_job.reset();
emitSucceeded(); emitSucceeded();
} }
@ -352,6 +333,10 @@ void PackInstallTask::onResolveModsFailed(QString reason)
m_net_job.reset(); m_net_job.reset();
emitFailed(reason); emitFailed(reason);
} }
void PackInstallTask::onCreateInstanceFailed(QString reason)
{
emitFailed(reason);
}
void PackInstallTask::onModDownloadFailed(QString reason) void PackInstallTask::onModDownloadFailed(QString reason)
{ {
m_net_job.reset(); m_net_job.reset();

View File

@ -56,7 +56,6 @@ public:
explicit PackInstallTask(Modpack pack, QString version, QWidget* parent = nullptr); explicit PackInstallTask(Modpack pack, QString version, QWidget* parent = nullptr);
~PackInstallTask() override = default; ~PackInstallTask() override = default;
bool canAbort() const override { return m_abortable; }
bool abort() override; bool abort() override;
protected: protected:
@ -65,20 +64,20 @@ protected:
private slots: private slots:
void onManifestDownloadSucceeded(); void onManifestDownloadSucceeded();
void onResolveModsSucceeded(); void onResolveModsSucceeded();
void onCreateInstanceSucceeded();
void onModDownloadSucceeded(); void onModDownloadSucceeded();
void onManifestDownloadFailed(QString reason); void onManifestDownloadFailed(QString reason);
void onResolveModsFailed(QString reason); void onResolveModsFailed(QString reason);
void onCreateInstanceFailed(QString reason);
void onModDownloadFailed(QString reason); void onModDownloadFailed(QString reason);
private: private:
void resolveMods(); void resolveMods();
void createInstance();
void downloadPack(); void downloadPack();
void install();
private: private:
bool m_abortable = true;
NetJob::Ptr m_net_job = nullptr; NetJob::Ptr m_net_job = nullptr;
shared_qobject_ptr<Flame::FileResolvingTask> m_mod_id_resolver_task = nullptr; shared_qobject_ptr<Flame::FileResolvingTask> m_mod_id_resolver_task = nullptr;

View File

@ -34,5 +34,9 @@
<file>scalable/status-yellow.svg</file> <file>scalable/status-yellow.svg</file>
<file>scalable/viewfolder.svg</file> <file>scalable/viewfolder.svg</file>
<file>scalable/worlds.svg</file> <file>scalable/worlds.svg</file>
<file>scalable/delete.svg</file>
<file>scalable/tag.svg</file>
<file>scalable/export.svg</file>
<file>scalable/rename.svg</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs13" />
<rect
fill-rule="evenodd"
clip-rule="evenodd"
fill="none"
width="32"
height="32"
id="rect2" />
<path
fill="#B6B5B6"
d="M30,28H2c-1.1,0-2-0.9-2-2V8c0-1.1,0.9-2,2-2h28c1.1,0,2,0.9,2,2v18C32,27.1,31.1,28,30,28z"
id="path4" />
<path
fill="#FBFBFB"
d="M30,27H2c-1.1,0-2-0.9-2-2V8c0-1.1,0.9-2,2-2h28c1.1,0,2,0.9,2,2v17C32,26.1,31.1,27,30,27z"
id="path6" />
<g
id="g19002"
transform="matrix(0.61347029,0,0,0.61364877,6.1844752,6.6215364)"
style="stroke-width:1.62983"><g
id="g9250"
transform="matrix(0.97069724,0,0,1.1763237,-0.10468178,-4.8181425)"
style="stroke-width:1.52524"><path
style="color:#000000;fill:#585858;fill-opacity:1;stroke-width:1.52524;stroke-linecap:round;-inkscape-stroke:none"
d="m 6.7324219,10.556641 v 0.820312 15.230469 c 0,1.649975 1.3558838,3.003906 3.0058594,3.003906 H 23.443359 c 1.649976,0 3.00586,-1.353931 3.00586,-3.003906 V 10.556641 Z m 1.6386719,1.638672 H 24.810547 v 14.412109 c 0,0.764319 -0.602868,1.365234 -1.367188,1.365234 H 9.7382813 c -0.7643194,0 -1.3671876,-0.600915 -1.3671875,-1.365234 z"
id="rect2395" /><path
id="path8117"
style="fill:none;stroke:#585858;stroke-width:2.28785;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
d="m 13.353409,15.259086 v 9.466797 z m 6.474609,0.183594 v 9.466797 z" /></g><path
style="fill:none;fill-opacity:1;stroke:#585858;stroke-width:2.44476;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="M 3.0114815,4.6293617 H 28.988519"
id="path9281" /><path
style="fill:none;stroke:#585858;stroke-width:2.44476;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 10.431403,3.4038387 H 21.568596"
id="path9283" /></g></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs7209" />
<rect
fill-rule="evenodd"
clip-rule="evenodd"
fill="none"
width="32"
height="32"
id="rect7195" />
<path
fill="#B6B5B6"
d="M30,28.4H2c-1.1,0-2-0.9-2-2v-18c0-1.1,0.9-2,2-2h28c1.1,0,2,0.9,2,2v18C32,27.5,31.1,28.4,30,28.4z"
id="path7197" />
<path
fill="#FBFBFB"
d="M30,27.4H2c-1.1,0-2-0.9-2-2v-17c0-1.1,0.9-2,2-2h28c1.1,0,2,0.9,2,2v17C32,26.5,31.1,27.4,30,27.4z"
id="path7199" />
<g
id="_x36__6_">
<g
id="g7203">
<path
fill="#585858"
d="M22,11.4h-7c0-1.1-0.9-2-2-2h-3c-1.1,0-2,0.9-2,2v12c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2v-10 C24,12.3,23.1,11.4,22,11.4z M23,23.4c0,0.6-0.4,1-1,1H10c-0.6,0-1-0.4-1-1v-8h14V23.4z M23,14.4H9v-3c0-0.6,0.4-1,1-1h3 c0.6,0,1,0.4,1,1v1h8c0.6,0,1,0.4,1,1V14.4z"
id="path7201" />
</g>
</g>
<g
id="g7346"
transform="matrix(0.60195183,0,0,0.60195183,6.3687707,6.8734131)"
style="fill:#585858;fill-opacity:1;stroke-width:1.66127"><g
id="_x36__4_"
style="fill:#585858;fill-opacity:1;stroke-width:1.66127">
<g
id="g849"
style="fill:#585858;fill-opacity:1;stroke-width:1.66127">
</g>
</g><g
id="g1052"
transform="rotate(-90,15.237227,22.237227)"
style="fill:#585858;fill-opacity:1;stroke-width:1.66127"><g
id="_x37__7_"
style="fill:#585858;fill-opacity:1;stroke-width:1.66127">
<g
id="g1038"
style="fill:#585858;fill-opacity:1;stroke-width:1.66127">
<path
d="m 21.7,25.4 c -0.4,-0.4 -1,-0.4 -1.4,0 L 17,28.7 V 15 c 0,-0.6 -0.4,-1 -1,-1 -0.6,0 -1,0.4 -1,1 v 13.6 l -3.3,-3.2 c -0.4,-0.4 -1,-0.4 -1.4,0 -0.4,0.4 -0.4,1 0,1.4 l 4.9,4.9 c 0.2,0.2 0.5,0.3 0.8,0.3 0.3,0 0.6,-0.1 0.8,-0.3 l 4.9,-4.9 c 0.4,-0.4 0.4,-1 0,-1.4 z"
id="path1036"
style="fill:#585858;fill-opacity:1;stroke-width:2.62304" />
</g>
</g></g></g></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -1,21 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="64" height="64" version="1.1" viewBox="0 0 16.933 16.933" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg width="48" height="48" version="1.1" viewBox="0 0 12.7 12.7" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<defs> <title>Prism Launcher Logo</title>
<linearGradient id="linearGradient84726" x1="4.4979" x2="12.435" y1="3.8011" y2="9.5681" gradientUnits="userSpaceOnUse"> <g stroke-width=".26458">
<stop stop-color="#88b858" offset="0"/> <path d="m6.35 6.35" fill="#99cd61"/>
<stop stop-color="#72b147" offset=".5"/> <path d="m6.35 0.52917-2.5208 4.3656 2.5208 1.4552 2.5203-1.4552 0.10955-3.0996c-1.1511-0.66459-2.3388-1.2661-2.6298-1.2661z" fill="#df6277"/>
<stop stop-color="#5a9a30" offset="1"/> <path d="m8.9798 1.7952-2.6298 4.5548 2.5203 1.4552 2.5208-4.3656c-0.14552-0.25205-1.2601-0.97975-2.4112-1.6443z" fill="#fb9168"/>
</linearGradient> <path d="m11.391 3.4396-5.041 2.9104 2.5203 1.4552 2.7389-1.4552c0-1.3292-0.072554-2.6584-0.21808-2.9104z" fill="#f3db6c"/>
</defs> <path d="m6.35 6.35v2.9104h5.041c0.14552-0.25205 0.21807-1.5812 0.21808-2.9104h-5.2591z" fill="#7ab392"/>
<g> <path d="m6.35 6.35v2.9104l2.6298 1.6443c1.1511-0.66459 2.2657-1.3923 2.4112-1.6443l-5.041-2.9104z" fill="#4b7cbc"/>
<path d="m3.561 16.016s0-3.5642 4.9056-3.5642c4.9069 0 4.9056 3.5642 4.9056 3.5642z" fill="#765338"/> <path d="m6.35 6.35-2.5208 1.4552 2.5208 4.3656c0.29104 0 1.4787-0.60148 2.6298-1.2661l-2.6298-4.5548z" fill="#6f488c"/>
<path d="m8.4667 12.452-4.9056 3.5642-3.0319-9.3311z" fill="#b7835a"/> <path d="m3.8292 4.8948-2.5203 4.3656c0.29104 0.5041 4.459 2.9104 5.041 2.9104v-5.8208l-2.5208-1.4552z" fill="#4d3f33"/>
<path d="m8.4667 12.452 7.9375-5.7669-3.0319 9.3311z" fill="#5b422d"/> <path d="m1.309 3.4396c-0.29104 0.5041-0.29104 5.3167 0 5.8208l5.041-2.9104v-2.9104h-5.041z" fill="#7a573b"/>
<path d="m8.8308 12.716-0.36417 0.26458-0.36417-0.26458c0-0.26458 0.36417-0.26458 0.36417-0.26458s0.36417 0 0.36417 0.26458z" fill="#72b147"/> <path d="m6.35 0.52917c-0.58208-2e-8 -4.75 2.4063-5.041 2.9104l5.041 2.9104v-5.8208z" fill="#99cd61"/>
<path d="m8.4667 12.452s-2e-7 -5.7669 7.9375-5.7669l-0.22507 0.69269-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819z" fill="#5a9a30"/>
<path d="m8.1025 12.716-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.22507-0.69269c7.9375 1e-7 7.9375 5.7669 7.9375 5.7669z" fill="#88b858"/>
<path d="m0.52917 6.6846 7.9375 5.7669 7.9375-5.7669-7.9375-5.7669z" fill="url(#linearGradient84726)"/>
</g> </g>
<path d="m0.75424 7.3773-0.22507-0.69269 7.9375 5.7669 7.9375-5.7669-0.22507 0.69269-7.7124 5.6034z" fill-opacity="0"/> <g transform="matrix(.88 0 0 .88 -10.906 -1.2421)">
<g transform="translate(13.26 2.2776)">
<path transform="matrix(.96975 0 0 .96975 .1921 .1921)" d="m6.3498 2.9393c-0.34105 0-2.7827 1.4099-2.9532 1.7052l2.9532 5.1157 2.9538-5.1157c-0.17052-0.29535-2.6127-1.7052-2.9538-1.7052z" fill="#fff" stroke-width=".26458"/>
</g>
<path d="m16.746 6.9737 2.8639 4.9609c0.33073 0 2.6991-1.3672 2.8644-1.6536 0.16536-0.28642 0.16536-3.0209 0-3.3073l-2.8644 1.6536z" fill="#dfdfdf" stroke-width=".26458"/>
</g>
<path d="m3.8299 4.8948c-0.14551 0.25205-0.14553 2.6584 0 2.9104 0.14553 0.25204 2.2292 1.4552 2.5203 1.4552v-2.9104z" fill="#d6d2d2" stroke-width=".26458"/>
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:title>Prism Launcher Logo</dc:title>
<dc:date>19/10/2022</dc:date>
<dc:creator>
<cc:Agent>
<dc:title>Prism Launcher</dc:title>
</cc:Agent>
</dc:creator>
<dc:contributor>
<cc:Agent>
<dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title>
</cc:Agent>
</dc:contributor>
<dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source>
<dc:rights>
<cc:Agent>
<dc:title>CC BY-SA 4.0</dc:title>
</cc:Agent>
</dc:rights>
<dc:publisher>
<cc:Agent>
<dc:title>Prism Launcher</dc:title>
</cc:Agent>
</dc:publisher>
</cc:Work>
</rdf:RDF>
</metadata>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 24 24"
enable-background="new 0 0 24 24"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs11868" />
<rect
fill="none"
width="24"
height="24"
id="rect11854" />
<g
id="g15058"
transform="matrix(1.2018036,0,0,1.2018036,9.1890033,-5.9659463)"
style="stroke-width:0.832083"><path
style="fill:#cccccc;fill-opacity:1;stroke:#585858;stroke-width:0.832083;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
d="m -4.635309,18.83508 -1.6867847,4.775149 4.7751492,-1.686784 z"
id="path14640" /><path
style="fill:#f2f2f2;fill-opacity:1;stroke:#585858;stroke-width:0.832083;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
d="M 7.6468491,6.2880897 -3.1410372,17.075975 0.21216023,20.429172 11.000046,9.6412872 Z"
id="rect291" /></g></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs13" />
<rect
fill-rule="evenodd"
clip-rule="evenodd"
fill="none"
width="32"
height="32"
id="rect2" />
<path
fill="#B6B5B6"
d="M30,28H2c-1.1,0-2-0.9-2-2V8c0-1.1,0.9-2,2-2h28c1.1,0,2,0.9,2,2v18C32,27.1,31.1,28,30,28z"
id="path4" />
<path
fill="#FBFBFB"
d="M30,27H2c-1.1,0-2-0.9-2-2V8c0-1.1,0.9-2,2-2h28c1.1,0,2,0.9,2,2v17C32,26.1,31.1,27,30,27z"
id="path6" />
<path
style="fill:none;fill-opacity:1;stroke:#585858;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
d="m 15.90395,8.3243241 -8.037878,0.04174 -0.04175,8.0378789 8.752925,8.079624 7.406322,-7.406322 z m -3.366509,2.6932089 c 1.114988,0 2.019906,0.904918 2.019906,2.019906 0,1.114988 -0.904918,2.019906 -2.019906,2.019906 -1.114988,0 -2.019906,-0.904918 -2.019906,-2.019906 0,-1.114988 0.904918,-2.019906 2.019906,-2.019906"
class="ColorScheme-Text"
id="path4838" /></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -42,5 +42,9 @@
<file>scalable/status-yellow.svg</file> <file>scalable/status-yellow.svg</file>
<file>scalable/viewfolder.svg</file> <file>scalable/viewfolder.svg</file>
<file>scalable/worlds.svg</file> <file>scalable/worlds.svg</file>
<file>scalable/delete.svg</file>
<file>scalable/tag.svg</file>
<file>scalable/export.svg</file>
<file>scalable/rename.svg</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@ -0,0 +1 @@
<svg fill="#757575" xmlns="http://www.w3.org/2000/svg" height="48" width="48"><path d="M13.05 42q-1.2 0-2.1-.9-.9-.9-.9-2.1V10.5H8v-3h9.4V6h13.2v1.5H40v3h-2.05V39q0 1.2-.9 2.1-.9.9-2.1.9Zm5.3-7.3h3V14.75h-3Zm8.3 0h3V14.75h-3Z"/></svg>

After

Width:  |  Height:  |  Size: 235 B

View File

@ -0,0 +1 @@
<svg fill="#757575" xmlns="http://www.w3.org/2000/svg" height="48" width="48"><path d="M24.65 33.35 32 26l-7.35-7.35-2.1 2.1 3.75 3.75H16v3h10.3l-3.75 3.75ZM7.05 40q-1.2 0-2.1-.925-.9-.925-.9-2.075V11q0-1.15.9-2.075Q5.85 8 7.05 8h14l3 3h17q1.15 0 2.075.925.925.925.925 2.075v23q0 1.15-.925 2.075Q42.2 40 41.05 40Z"/></svg>

After

Width:  |  Height:  |  Size: 323 B

View File

@ -1,21 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="64" height="64" version="1.1" viewBox="0 0 16.933 16.933" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg width="48" height="48" version="1.1" viewBox="0 0 12.7 12.7" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<defs> <title>Prism Launcher Logo</title>
<linearGradient id="linearGradient84726" x1="4.4979" x2="12.435" y1="3.8011" y2="9.5681" gradientUnits="userSpaceOnUse"> <g stroke-width=".26458">
<stop stop-color="#88b858" offset="0"/> <path d="m6.35 6.35" fill="#99cd61"/>
<stop stop-color="#72b147" offset=".5"/> <path d="m6.35 0.52917-2.5208 4.3656 2.5208 1.4552 2.5203-1.4552 0.10955-3.0996c-1.1511-0.66459-2.3388-1.2661-2.6298-1.2661z" fill="#df6277"/>
<stop stop-color="#5a9a30" offset="1"/> <path d="m8.9798 1.7952-2.6298 4.5548 2.5203 1.4552 2.5208-4.3656c-0.14552-0.25205-1.2601-0.97975-2.4112-1.6443z" fill="#fb9168"/>
</linearGradient> <path d="m11.391 3.4396-5.041 2.9104 2.5203 1.4552 2.7389-1.4552c0-1.3292-0.072554-2.6584-0.21808-2.9104z" fill="#f3db6c"/>
</defs> <path d="m6.35 6.35v2.9104h5.041c0.14552-0.25205 0.21807-1.5812 0.21808-2.9104h-5.2591z" fill="#7ab392"/>
<g> <path d="m6.35 6.35v2.9104l2.6298 1.6443c1.1511-0.66459 2.2657-1.3923 2.4112-1.6443l-5.041-2.9104z" fill="#4b7cbc"/>
<path d="m3.561 16.016s0-3.5642 4.9056-3.5642c4.9069 0 4.9056 3.5642 4.9056 3.5642z" fill="#765338"/> <path d="m6.35 6.35-2.5208 1.4552 2.5208 4.3656c0.29104 0 1.4787-0.60148 2.6298-1.2661l-2.6298-4.5548z" fill="#6f488c"/>
<path d="m8.4667 12.452-4.9056 3.5642-3.0319-9.3311z" fill="#b7835a"/> <path d="m3.8292 4.8948-2.5203 4.3656c0.29104 0.5041 4.459 2.9104 5.041 2.9104v-5.8208l-2.5208-1.4552z" fill="#4d3f33"/>
<path d="m8.4667 12.452 7.9375-5.7669-3.0319 9.3311z" fill="#5b422d"/> <path d="m1.309 3.4396c-0.29104 0.5041-0.29104 5.3167 0 5.8208l5.041-2.9104v-2.9104h-5.041z" fill="#7a573b"/>
<path d="m8.8308 12.716-0.36417 0.26458-0.36417-0.26458c0-0.26458 0.36417-0.26458 0.36417-0.26458s0.36417 0 0.36417 0.26458z" fill="#72b147"/> <path d="m6.35 0.52917c-0.58208-2e-8 -4.75 2.4063-5.041 2.9104l5.041 2.9104v-5.8208z" fill="#99cd61"/>
<path d="m8.4667 12.452s-2e-7 -5.7669 7.9375-5.7669l-0.22507 0.69269-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819z" fill="#5a9a30"/>
<path d="m8.1025 12.716-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.22507-0.69269c7.9375 1e-7 7.9375 5.7669 7.9375 5.7669z" fill="#88b858"/>
<path d="m0.52917 6.6846 7.9375 5.7669 7.9375-5.7669-7.9375-5.7669z" fill="url(#linearGradient84726)"/>
</g> </g>
<path d="m0.75424 7.3773-0.22507-0.69269 7.9375 5.7669 7.9375-5.7669-0.22507 0.69269-7.7124 5.6034z" fill-opacity="0"/> <g transform="matrix(.88 0 0 .88 -10.906 -1.2421)">
<g transform="translate(13.26 2.2776)">
<path transform="matrix(.96975 0 0 .96975 .1921 .1921)" d="m6.3498 2.9393c-0.34105 0-2.7827 1.4099-2.9532 1.7052l2.9532 5.1157 2.9538-5.1157c-0.17052-0.29535-2.6127-1.7052-2.9538-1.7052z" fill="#fff" stroke-width=".26458"/>
</g>
<path d="m16.746 6.9737 2.8639 4.9609c0.33073 0 2.6991-1.3672 2.8644-1.6536 0.16536-0.28642 0.16536-3.0209 0-3.3073l-2.8644 1.6536z" fill="#dfdfdf" stroke-width=".26458"/>
</g>
<path d="m3.8299 4.8948c-0.14551 0.25205-0.14553 2.6584 0 2.9104 0.14553 0.25204 2.2292 1.4552 2.5203 1.4552v-2.9104z" fill="#d6d2d2" stroke-width=".26458"/>
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:title>Prism Launcher Logo</dc:title>
<dc:date>19/10/2022</dc:date>
<dc:creator>
<cc:Agent>
<dc:title>Prism Launcher</dc:title>
</cc:Agent>
</dc:creator>
<dc:contributor>
<cc:Agent>
<dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title>
</cc:Agent>
</dc:contributor>
<dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source>
<dc:rights>
<cc:Agent>
<dc:title>CC BY-SA 4.0</dc:title>
</cc:Agent>
</dc:rights>
<dc:publisher>
<cc:Agent>
<dc:title>Prism Launcher</dc:title>
</cc:Agent>
</dc:publisher>
</cc:Work>
</rdf:RDF>
</metadata>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1 @@
<svg fill="#757575" xmlns="http://www.w3.org/2000/svg" height="48" width="48"><path d="m39.7 14.7-6.4-6.4 2.1-2.1q.85-.85 2.125-.825 1.275.025 2.125.875L41.8 8.4q.85.85.85 2.1t-.85 2.1Zm-2.1 2.1L12.4 42H6v-6.4l25.2-25.2Z"/></svg>

After

Width:  |  Height:  |  Size: 230 B

View File

@ -0,0 +1 @@
<svg fill="#757575" xmlns="http://www.w3.org/2000/svg" height="48" width="48"><path d="M27.95 43.15q-.9.9-2.175.9t-2.175-.9L4.85 24.4q-.5-.5-.675-1.05Q4 22.8 4 22.2V7q0-1.3.85-2.15Q5.7 4 7 4h15.2q.6 0 1.2.175t1.1.675L43.15 23.5q.95.95.95 2.225 0 1.275-.95 2.225ZM12.25 14.8q1.05 0 1.825-.775.775-.775.775-1.825 0-1.05-.775-1.825Q13.3 9.6 12.25 9.6q-1.05 0-1.825.775-.775.775-.775 1.825 0 1.05.775 1.825.775.775 1.825.775Z"/></svg>

After

Width:  |  Height:  |  Size: 431 B

View File

@ -34,5 +34,9 @@
<file>scalable/status-yellow.svg</file> <file>scalable/status-yellow.svg</file>
<file>scalable/viewfolder.svg</file> <file>scalable/viewfolder.svg</file>
<file>scalable/worlds.svg</file> <file>scalable/worlds.svg</file>
<file>scalable/delete.svg</file>
<file>scalable/tag.svg</file>
<file>scalable/export.svg</file>
<file>scalable/rename.svg</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs855" />
<g
id="g19002"
transform="matrix(1.142151,0,0,1.1420676,-2.2744167,-2.2900782)"
style="stroke-width:0.875573"><g
id="g9250"
transform="matrix(0.97069724,0,0,1.1763237,-0.10468178,-4.8181425)"
style="stroke-width:0.819383"><path
style="color:#000000;fill:#3366cc;stroke-linecap:round;-inkscape-stroke:none"
d="m 6.7324219,10.556641 v 0.820312 15.230469 c 0,1.649975 1.3558838,3.003906 3.0058594,3.003906 H 23.443359 c 1.649976,0 3.00586,-1.353931 3.00586,-3.003906 V 10.556641 Z m 1.6386719,1.638672 H 24.810547 v 14.412109 c 0,0.764319 -0.602868,1.365234 -1.367188,1.365234 H 9.7382813 c -0.7643194,0 -1.3671876,-0.600915 -1.3671875,-1.365234 z"
id="rect2395" /><path
id="path8117"
style="fill:none;stroke:#3366cc;stroke-width:1.63877;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
d="m 13.353409,15.259086 v 9.466797 z m 6.474609,0.183594 v 9.466797 z" /></g><path
style="fill:none;fill-opacity:1;stroke:#3366cc;stroke-width:1.75115;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="M 3.0114815,4.6293617 H 28.988519"
id="path9281" /><path
style="fill:none;stroke:#3366cc;stroke-width:1.75115;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 10.431403,2.9656366 H 21.568596"
id="path9283" /></g></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs855" />
<g
id="_x36__4_">
<g
id="g849">
<path
fill="#3366CC"
d="M28,4H14c0-2.2-1.8-4-4-4H4C1.8,0,0,1.8,0,4v24c0,2.2,1.8,4,4,4h24c2.2,0,4-1.8,4-4V8C32,5.8,30.2,4,28,4z M30,28c0,1.1-0.9,2-2,2H4c-1.1,0-2-0.9-2-2V12h28V28z M30,10H2V4c0-1.1,0.9-2,2-2h6c1.1,0,2,0.9,2,2v2h16c1.1,0,2,0.9,2,2V10z"
id="path847" />
</g>
</g>
<g
id="g1052"
transform="rotate(-90,15.237227,22.237227)"><g
id="_x37__7_">
<g
id="g1038">
<path
fill="#3366cc"
d="m 21.7,25.4 c -0.4,-0.4 -1,-0.4 -1.4,0 L 17,28.7 V 15 c 0,-0.6 -0.4,-1 -1,-1 -0.6,0 -1,0.4 -1,1 v 13.6 l -3.3,-3.2 c -0.4,-0.4 -1,-0.4 -1.4,0 -0.4,0.4 -0.4,1 0,1.4 l 4.9,4.9 c 0.2,0.2 0.5,0.3 0.8,0.3 0.3,0 0.6,-0.1 0.8,-0.3 l 4.9,-4.9 c 0.4,-0.4 0.4,-1 0,-1.4 z"
id="path1036" />
</g>
</g></g></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,21 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="64" height="64" version="1.1" viewBox="0 0 16.933 16.933" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg width="48" height="48" version="1.1" viewBox="0 0 12.7 12.7" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<defs> <title>Prism Launcher Logo</title>
<linearGradient id="linearGradient84726" x1="4.4979" x2="12.435" y1="3.8011" y2="9.5681" gradientUnits="userSpaceOnUse"> <g stroke-width=".26458">
<stop stop-color="#88b858" offset="0"/> <path d="m6.35 6.35" fill="#99cd61"/>
<stop stop-color="#72b147" offset=".5"/> <path d="m6.35 0.52917-2.5208 4.3656 2.5208 1.4552 2.5203-1.4552 0.10955-3.0996c-1.1511-0.66459-2.3388-1.2661-2.6298-1.2661z" fill="#df6277"/>
<stop stop-color="#5a9a30" offset="1"/> <path d="m8.9798 1.7952-2.6298 4.5548 2.5203 1.4552 2.5208-4.3656c-0.14552-0.25205-1.2601-0.97975-2.4112-1.6443z" fill="#fb9168"/>
</linearGradient> <path d="m11.391 3.4396-5.041 2.9104 2.5203 1.4552 2.7389-1.4552c0-1.3292-0.072554-2.6584-0.21808-2.9104z" fill="#f3db6c"/>
</defs> <path d="m6.35 6.35v2.9104h5.041c0.14552-0.25205 0.21807-1.5812 0.21808-2.9104h-5.2591z" fill="#7ab392"/>
<g> <path d="m6.35 6.35v2.9104l2.6298 1.6443c1.1511-0.66459 2.2657-1.3923 2.4112-1.6443l-5.041-2.9104z" fill="#4b7cbc"/>
<path d="m3.561 16.016s0-3.5642 4.9056-3.5642c4.9069 0 4.9056 3.5642 4.9056 3.5642z" fill="#765338"/> <path d="m6.35 6.35-2.5208 1.4552 2.5208 4.3656c0.29104 0 1.4787-0.60148 2.6298-1.2661l-2.6298-4.5548z" fill="#6f488c"/>
<path d="m8.4667 12.452-4.9056 3.5642-3.0319-9.3311z" fill="#b7835a"/> <path d="m3.8292 4.8948-2.5203 4.3656c0.29104 0.5041 4.459 2.9104 5.041 2.9104v-5.8208l-2.5208-1.4552z" fill="#4d3f33"/>
<path d="m8.4667 12.452 7.9375-5.7669-3.0319 9.3311z" fill="#5b422d"/> <path d="m1.309 3.4396c-0.29104 0.5041-0.29104 5.3167 0 5.8208l5.041-2.9104v-2.9104h-5.041z" fill="#7a573b"/>
<path d="m8.8308 12.716-0.36417 0.26458-0.36417-0.26458c0-0.26458 0.36417-0.26458 0.36417-0.26458s0.36417 0 0.36417 0.26458z" fill="#72b147"/> <path d="m6.35 0.52917c-0.58208-2e-8 -4.75 2.4063-5.041 2.9104l5.041 2.9104v-5.8208z" fill="#99cd61"/>
<path d="m8.4667 12.452s-2e-7 -5.7669 7.9375-5.7669l-0.22507 0.69269-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819z" fill="#5a9a30"/>
<path d="m8.1025 12.716-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.22507-0.69269c7.9375 1e-7 7.9375 5.7669 7.9375 5.7669z" fill="#88b858"/>
<path d="m0.52917 6.6846 7.9375 5.7669 7.9375-5.7669-7.9375-5.7669z" fill="url(#linearGradient84726)"/>
</g> </g>
<path d="m0.75424 7.3773-0.22507-0.69269 7.9375 5.7669 7.9375-5.7669-0.22507 0.69269-7.7124 5.6034z" fill-opacity="0"/> <g transform="matrix(.88 0 0 .88 -10.906 -1.2421)">
<g transform="translate(13.26 2.2776)">
<path transform="matrix(.96975 0 0 .96975 .1921 .1921)" d="m6.3498 2.9393c-0.34105 0-2.7827 1.4099-2.9532 1.7052l2.9532 5.1157 2.9538-5.1157c-0.17052-0.29535-2.6127-1.7052-2.9538-1.7052z" fill="#fff" stroke-width=".26458"/>
</g>
<path d="m16.746 6.9737 2.8639 4.9609c0.33073 0 2.6991-1.3672 2.8644-1.6536 0.16536-0.28642 0.16536-3.0209 0-3.3073l-2.8644 1.6536z" fill="#dfdfdf" stroke-width=".26458"/>
</g>
<path d="m3.8299 4.8948c-0.14551 0.25205-0.14553 2.6584 0 2.9104 0.14553 0.25204 2.2292 1.4552 2.5203 1.4552v-2.9104z" fill="#d6d2d2" stroke-width=".26458"/>
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:title>Prism Launcher Logo</dc:title>
<dc:date>19/10/2022</dc:date>
<dc:creator>
<cc:Agent>
<dc:title>Prism Launcher</dc:title>
</cc:Agent>
</dc:creator>
<dc:contributor>
<cc:Agent>
<dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title>
</cc:Agent>
</dc:contributor>
<dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source>
<dc:rights>
<cc:Agent>
<dc:title>CC BY-SA 4.0</dc:title>
</cc:Agent>
</dc:rights>
<dc:publisher>
<cc:Agent>
<dc:title>Prism Launcher</dc:title>
</cc:Agent>
</dc:publisher>
</cc:Work>
</rdf:RDF>
</metadata>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs855" />
<path
id="rect291"
style="fill:none;stroke:#3366cc;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;paint-order:fill markers stroke"
d="M 25.192659,0.99995946 6.5091864,19.68343 12.316568,25.490811 31.00004,6.8073412 Z M 3.9212666,22.730012 0.99993513,31.000063 9.2699855,28.078732 Z" /></svg>

After

Width:  |  Height:  |  Size: 617 B

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs855" />
<g
style="fill:none;stroke:#3366cc;stroke-width:1.48328703;stroke-dasharray:none;stroke-opacity:1"
id="g35489"
transform="matrix(1.3483567,0,0,1.3483567,-0.37239014,-0.37239021)"><path
style="fill:none;fill-opacity:1;stroke:#3366cc;stroke-width:1.48328703;stroke-dasharray:none;stroke-opacity:1"
d="M 12,2.4960934 2.5451968,2.5451969 2.4960933,12 12.791992,21.503907 21.503907,12.791992 Z M 8.0400388,5.6640622 c 1.3115393,0 2.3759772,1.0644375 2.3759772,2.3759766 0,1.3115391 -1.0644379,2.3759772 -2.3759772,2.3759772 -1.3115392,0 -2.3759767,-1.0644381 -2.3759767,-2.3759772 0,-1.3115391 1.0644375,-2.3759766 2.3759767,-2.3759766"
class="ColorScheme-Text"
id="path4838" /></g></svg>

After

Width:  |  Height:  |  Size: 1018 B

View File

@ -311,6 +311,6 @@
<file>scalable/instances/fox.svg</file> <file>scalable/instances/fox.svg</file>
<file>scalable/instances/bee.svg</file> <file>scalable/instances/bee.svg</file>
<file>scalable/instances/polymc.svg</file> <file>scalable/instances/prismlauncher.svg</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@ -1,21 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="64" height="64" version="1.1" viewBox="0 0 16.933 16.933" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<linearGradient id="linearGradient84726" x1="4.4979" x2="12.435" y1="3.8011" y2="9.5681" gradientUnits="userSpaceOnUse">
<stop stop-color="#88b858" offset="0"/>
<stop stop-color="#72b147" offset=".5"/>
<stop stop-color="#5a9a30" offset="1"/>
</linearGradient>
</defs>
<g>
<path d="m3.561 16.016s0-3.5642 4.9056-3.5642c4.9069 0 4.9056 3.5642 4.9056 3.5642z" fill="#765338"/>
<path d="m8.4667 12.452-4.9056 3.5642-3.0319-9.3311z" fill="#b7835a"/>
<path d="m8.4667 12.452 7.9375-5.7669-3.0319 9.3311z" fill="#5b422d"/>
<path d="m8.8308 12.716-0.36417 0.26458-0.36417-0.26458c0-0.26458 0.36417-0.26458 0.36417-0.26458s0.36417 0 0.36417 0.26458z" fill="#72b147"/>
<path d="m8.4667 12.452s-2e-7 -5.7669 7.9375-5.7669l-0.22507 0.69269-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819z" fill="#5a9a30"/>
<path d="m8.1025 12.716-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.22507-0.69269c7.9375 1e-7 7.9375 5.7669 7.9375 5.7669z" fill="#88b858"/>
<path d="m0.52917 6.6846 7.9375 5.7669 7.9375-5.7669-7.9375-5.7669z" fill="url(#linearGradient84726)"/>
</g>
<path d="m0.75424 7.3773-0.22507-0.69269 7.9375 5.7669 7.9375-5.7669-0.22507 0.69269-7.7124 5.6034z" fill-opacity="0"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="512" height="512" version="1.1" viewBox="0 0 135.47 135.47" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1.3386 0 0 1.3386 16.155 10.174)">
<path d="m18.78 50.126c0 1.342 0.356 2.6345 1.0008 3.758l-18.279 10.617c-0.96723-1.6842-1.5023-3.6252-1.5023-5.6404v-31.721c0-2.0152 0.53511-3.9517 1.5001-5.6382l18.281 10.614c-0.6448 1.1235-1.0008 2.416-1.0008 3.7602z" fill="#7a573b"/>
<path d="m77.065 27.139v15.861h-18.78v-7.1243c0-1.342-0.3559-2.6367-1.003-3.7602l18.279-10.614c0.9694 1.6843 1.5023 3.6252 1.5023 5.6404z" fill="#f3db6c"/>
<path d="m77.065 43v15.861c0 2.0152-0.5351 3.9562-1.5023 5.6404l-17.278-10.031-1.003-0.5832c0.6471-1.1236 1.003-2.4183 1.003-3.7603v-7.1265z" fill="#7ab392"/>
<path d="m75.563 64.501c-0.9695 1.6843-2.3711 3.1208-4.1062 4.1296l-13.658 7.9303-9.3924-16.356 6.1392-3.5644c1.1553-0.6733 2.089-1.628 2.736-2.7516l18.279 10.614z" fill="#4b7cbc"/>
<path d="m57.799 76.559-13.658 7.9303c-1.7352 1.0065-3.6719 1.5109-5.6086 1.5109v-21.226c1.2896 0 2.5792-0.3355 3.739-1.0088l6.1348-3.5644 9.3924 16.356z" fill="#6f488c"/>
<path d="m57.799 9.4412-9.3924 16.356-6.1348-3.5644c-1.1598-0.6732-2.4494-1.0065-3.739-1.0065v-21.226c1.9367 0 3.8734 0.50437 5.6086 1.5109z" fill="#df6277"/>
<path d="m38.532 0v21.226c-1.2896 0-2.5793 0.3333-3.7391 1.0065l-12.274 7.1288c-1.1576 0.671-2.0912 1.6279-2.7383 2.7538l-18.281-10.614c0.96947-1.6865 2.3733-3.1208 4.1085-4.1295l27.315-15.861c1.7352-1.0065 3.6719-1.5109 5.6086-1.5109z" fill="#99cd61"/>
<path d="m75.563 21.501-18.279 10.614c-0.647-1.1236-1.5807-2.0806-2.736-2.7516l-6.1392-3.5644 9.3924-16.356 13.658 7.9303c1.7352 1.0065 3.1368 2.4431 4.1062 4.1296z" fill="#fb9168"/>
<path d="m38.532 64.776v21.226c-1.9367 0-3.8733-0.5044-5.6085-1.5109l-27.315-15.863c-1.7352-1.0087-3.1368-2.443-4.1062-4.1295l18.279-10.614c0.647 1.1236 1.5807 2.0783 2.736 2.7516l12.274 7.1287c1.1598 0.6733 2.4495 1.0088 3.7391 1.0088z" fill="#4d3f33"/>
<path d="m58.285 35.876v14.251c0 2.6885-1.424 5.1698-3.7391 6.5118l-12.274 7.1288c-1.1597 0.6732-2.4494 1.0087-3.739 1.0087-1.2897 0-2.5793-0.3355-3.7391-1.0087l-12.274-7.1288c-2.3151-1.342-3.7391-3.8233-3.7391-6.5118v-14.251c0-2.6884 1.424-5.1698 3.7391-6.5118l12.274-7.1287c1.1598-0.6733 2.4494-1.0065 3.7391-1.0065 1.2896 0 2.5793 0.3355 3.739 1.0065l6.1348 3.5643 6.1392 3.5644c1.1553 0.6733 2.089 1.628 2.736 2.7516 0.6471 1.1235 1.0031 2.4182 1.0031 3.7602z" fill="#fff"/>
<path d="m58.285 35.876v14.251c0 1.342-0.356 2.6367-1.0031 3.7603s-1.5807 2.0783-2.736 2.7515l-6.1392 3.5644-6.1348 3.5644c-1.1598 0.6732-2.4494 1.0087-3.739 1.0087v-21.774l14.728-8.5495 4.0234-2.335c0.6471 1.1236 1.0031 2.4183 1.0031 3.7603z" fill="#dfdfdf"/>
<path d="m38.532 43v21.774c-1.2897 0-2.5793-0.3355-3.7391-1.0088l-12.274-7.1287c-1.1553-0.6733-2.089-1.628-2.7361-2.7516-0.647-1.1235-1.003-2.4182-1.003-3.7602v-14.251c0-1.342 0.356-2.6367 1.003-3.7603l18.751 10.884z" fill="#d6d2d2"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -1,21 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="64" height="64" version="1.1" viewBox="0 0 16.933 16.933" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg width="48" height="48" version="1.1" viewBox="0 0 12.7 12.7" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<defs> <title>Prism Launcher Logo</title>
<linearGradient id="linearGradient84726" x1="4.4979" x2="12.435" y1="3.8011" y2="9.5681" gradientUnits="userSpaceOnUse"> <g stroke-width=".26458">
<stop stop-color="#88b858" offset="0"/> <path d="m6.35 6.35" fill="#99cd61"/>
<stop stop-color="#72b147" offset=".5"/> <path d="m6.35 0.52917-2.5208 4.3656 2.5208 1.4552 2.5203-1.4552 0.10955-3.0996c-1.1511-0.66459-2.3388-1.2661-2.6298-1.2661z" fill="#df6277"/>
<stop stop-color="#5a9a30" offset="1"/> <path d="m8.9798 1.7952-2.6298 4.5548 2.5203 1.4552 2.5208-4.3656c-0.14552-0.25205-1.2601-0.97975-2.4112-1.6443z" fill="#fb9168"/>
</linearGradient> <path d="m11.391 3.4396-5.041 2.9104 2.5203 1.4552 2.7389-1.4552c0-1.3292-0.072554-2.6584-0.21808-2.9104z" fill="#f3db6c"/>
</defs> <path d="m6.35 6.35v2.9104h5.041c0.14552-0.25205 0.21807-1.5812 0.21808-2.9104h-5.2591z" fill="#7ab392"/>
<g> <path d="m6.35 6.35v2.9104l2.6298 1.6443c1.1511-0.66459 2.2657-1.3923 2.4112-1.6443l-5.041-2.9104z" fill="#4b7cbc"/>
<path d="m3.561 16.016s0-3.5642 4.9056-3.5642c4.9069 0 4.9056 3.5642 4.9056 3.5642z" fill="#765338"/> <path d="m6.35 6.35-2.5208 1.4552 2.5208 4.3656c0.29104 0 1.4787-0.60148 2.6298-1.2661l-2.6298-4.5548z" fill="#6f488c"/>
<path d="m8.4667 12.452-4.9056 3.5642-3.0319-9.3311z" fill="#b7835a"/> <path d="m3.8292 4.8948-2.5203 4.3656c0.29104 0.5041 4.459 2.9104 5.041 2.9104v-5.8208l-2.5208-1.4552z" fill="#4d3f33"/>
<path d="m8.4667 12.452 7.9375-5.7669-3.0319 9.3311z" fill="#5b422d"/> <path d="m1.309 3.4396c-0.29104 0.5041-0.29104 5.3167 0 5.8208l5.041-2.9104v-2.9104h-5.041z" fill="#7a573b"/>
<path d="m8.8308 12.716-0.36417 0.26458-0.36417-0.26458c0-0.26458 0.36417-0.26458 0.36417-0.26458s0.36417 0 0.36417 0.26458z" fill="#72b147"/> <path d="m6.35 0.52917c-0.58208-2e-8 -4.75 2.4063-5.041 2.9104l5.041 2.9104v-5.8208z" fill="#99cd61"/>
<path d="m8.4667 12.452s-2e-7 -5.7669 7.9375-5.7669l-0.22507 0.69269-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819z" fill="#5a9a30"/>
<path d="m8.1025 12.716-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.22507-0.69269c7.9375 1e-7 7.9375 5.7669 7.9375 5.7669z" fill="#88b858"/>
<path d="m0.52917 6.6846 7.9375 5.7669 7.9375-5.7669-7.9375-5.7669z" fill="url(#linearGradient84726)"/>
</g> </g>
<path d="m0.75424 7.3773-0.22507-0.69269 7.9375 5.7669 7.9375-5.7669-0.22507 0.69269-7.7124 5.6034z" fill-opacity="0"/> <g transform="matrix(.88 0 0 .88 -10.906 -1.2421)">
<g transform="translate(13.26 2.2776)">
<path transform="matrix(.96975 0 0 .96975 .1921 .1921)" d="m6.3498 2.9393c-0.34105 0-2.7827 1.4099-2.9532 1.7052l2.9532 5.1157 2.9538-5.1157c-0.17052-0.29535-2.6127-1.7052-2.9538-1.7052z" fill="#fff" stroke-width=".26458"/>
</g>
<path d="m16.746 6.9737 2.8639 4.9609c0.33073 0 2.6991-1.3672 2.8644-1.6536 0.16536-0.28642 0.16536-3.0209 0-3.3073l-2.8644 1.6536z" fill="#dfdfdf" stroke-width=".26458"/>
</g>
<path d="m3.8299 4.8948c-0.14551 0.25205-0.14553 2.6584 0 2.9104 0.14553 0.25204 2.2292 1.4552 2.5203 1.4552v-2.9104z" fill="#d6d2d2" stroke-width=".26458"/>
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:title>Prism Launcher Logo</dc:title>
<dc:date>19/10/2022</dc:date>
<dc:creator>
<cc:Agent>
<dc:title>Prism Launcher</dc:title>
</cc:Agent>
</dc:creator>
<dc:contributor>
<cc:Agent>
<dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title>
</cc:Agent>
</dc:contributor>
<dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source>
<dc:rights>
<cc:Agent>
<dc:title>CC BY-SA 4.0</dc:title>
</cc:Agent>
</dc:rights>
<dc:publisher>
<cc:Agent>
<dc:title>Prism Launcher</dc:title>
</cc:Agent>
</dc:publisher>
</cc:Work>
</rdf:RDF>
</metadata>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -34,5 +34,9 @@
<file>scalable/status-yellow.svg</file> <file>scalable/status-yellow.svg</file>
<file>scalable/viewfolder.svg</file> <file>scalable/viewfolder.svg</file>
<file>scalable/worlds.svg</file> <file>scalable/worlds.svg</file>
<file>scalable/delete.svg</file>
<file>scalable/tag.svg</file>
<file>scalable/export.svg</file>
<file>scalable/rename.svg</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs21">
</defs>
<g
id="g17358"
transform="translate(0.73129773)"><rect
style="fill:#daeeff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect15793"
width="17.548431"
height="20.8389"
x="6.4944863"
y="7.1611009" /><path
d="M 18.455476,4.1064849 V 2.071966 c 0,-0.8979555 0.387777,-0.8011866 -2.488293,-0.8011866 h -1.397072 c -2.876069,0 -2.488293,-0.1289149 -2.488293,0.8011866 v 2.0345189"
id="path10"
style="fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:2;stroke-dasharray:none;stroke-opacity:1" /><g
id="g2238"
transform="translate(-0.9858234)"><path
d="m 22.885931,26.821028 c -0.0782,1.097217 -0.9,1.178972 -2,1.178972 H 11.62312 c -1.1,0 -2.0000002,-0.07897 -2.0000002,-1.178972 L 8.2218981,7.1611009 H 4.2241361 L 5.6231198,26.821028 C 5.8573527,30.112705 8.3231198,32 11.62312,32 h 9.262811 c 3.3,0 5.765767,-1.887295 6,-5.178972 L 28.284915,7.1611009 h -3.997763 z"
id="path12"
style="fill:#3366cc;fill-opacity:1" /></g><rect
style="fill:#3366cc;fill-opacity:1;stroke:none;stroke-width:0.000000879999;stroke-linecap:round;stroke-linejoin:round"
id="rect587"
width="29.264914"
height="3.9999995"
x="0.63624543"
y="3.2609999"
rx="2.1756897"
ry="1.9999998" /><g
id="g72186"
transform="matrix(1,0,0,0.89022438,-0.25830466,0.83279537)"
style="stroke-width:1.05986"><g
id="g92780"
transform="translate(-0.2948263)"><g
id="g92786"
transform="translate(-0.39497401)"><g
id="g24025"
transform="matrix(1,0,0,1.4771202,-0.16968376,-9.6959051)"
style="stroke-width:0.872052"><rect
style="fill:#3366cc;fill-opacity:1;stroke:none;stroke-width:3.49043;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect24019"
width="2.1505656"
height="10.38496"
x="10.206384"
y="14.677745"
rx="1.0752828"
ry="1.0752828"
transform="matrix(0.99908133,-0.04285447,0.09318226,0.99564907,0,0)" /></g><g
id="g72180"
transform="matrix(-1,0,0,1.4771202,32.603298,-9.6959051)"
style="stroke-width:0.872052"><rect
style="fill:#3366cc;fill-opacity:1;stroke:none;stroke-width:3.49043;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect72178"
width="2.1505656"
height="10.38496"
x="10.206384"
y="14.677745"
rx="1.0752828"
ry="1.0752828"
transform="matrix(0.99908133,-0.04285447,0.09318226,0.99564907,0,0)" /></g></g></g></g></g></svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs14" />
<g
id="g7954"><g
id="g22579"><path
d="M 28,10 C 28,8.9 27.1,8 26,8 H 16 V 6 C 16,4.9 15.1,4 14,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="path22556"
style="fill:#daeeff;fill-opacity:1" /><rect
x="0"
fill="none"
width="32"
height="32"
id="rect22558"
y="0" /><g
id="g22566">
<path
fill="none"
d="M 26,8 H 16 V 6 C 16,4.9 15.1,4 14,4 H 6 C 4.9,4 4,4.9 4,6 v 3 17 c 0,1.1 0.9,2 2,2 h 20 c 1.1,0 2,-0.9 2,-2 V 10 C 28,9.6 27.9,9.3 27.7,9 27.4,8.4 26.7,8 26,8 Z"
id="path22560" />
<path
id="path22562"
d="M 6 0 C 2.7000033 0 0 2.7000033 0 6 L 0 9 L 0 26 C 0 29.299997 2.7000033 32 6 32 L 26 32 C 29.299997 32 32 29.299997 32 26 L 32 10 C 32 9.7000003 32.000391 9.2999997 31.900391 9 C 31.400391 6.2000028 28.999997 4 26 4 L 19.599609 4 C 18.79961 1.7000023 16.599997 0 14 0 L 6 0 z M 6 4 L 14 4 C 15.099999 4 16 4.9000011 16 6 L 16 8 L 26 8 C 26.699999 8 27.399219 8.4000006 27.699219 9 C 27.899219 9.2999997 28 9.6000004 28 10 L 28 26 C 28 27.099999 27.099999 28 26 28 L 6 28 C 4.9000011 28 4 27.099999 4 26 L 4 9 L 4 6 C 4 4.9000011 4.9000011 4 6 4 z "
style="fill:#3366cc;fill-opacity:1" />
</g></g><path
fill-rule="evenodd"
clip-rule="evenodd"
d="m 19.283635,21.196352 c -0.312728,0.234545 -0.625454,0.312728 -0.938181,0.312728 -0.234546,0 -0.469091,-0.07819 -0.703637,-0.156365 -0.547272,-0.234544 -0.859999,-0.781818 -0.859999,-1.407271 v -1.485455 -0.07817 c -4.925453,0 -9.1472686,3.283635 -10.4763592,7.818178 C 5.9927316,25.18363 5.836368,24.167266 5.836368,23.07272 c 0,-6.019996 4.925452,-10.945449 10.94545,-10.945449 v -1.563635 c 0,-0.625454 0.312727,-1.172727 0.859999,-1.407272 C 17.876363,9.078184 18.110908,9 18.345454,9 c 0.312727,0 0.625453,0.07817 0.938181,0.312727 l 6.254542,4.690906 c 0.390909,0.312728 0.625455,0.781818 0.625455,1.250909 0,0.469092 -0.234546,0.938182 -0.625455,1.250908 z"
id="path22733"
style="stroke-width:1;fill:#666666;fill-opacity:1" /></g></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -1,21 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="64" height="64" version="1.1" viewBox="0 0 16.933 16.933" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg width="48" height="48" version="1.1" viewBox="0 0 12.7 12.7" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<defs> <title>Prism Launcher Logo</title>
<linearGradient id="linearGradient84726" x1="4.4979" x2="12.435" y1="3.8011" y2="9.5681" gradientUnits="userSpaceOnUse"> <g stroke-width=".26458">
<stop stop-color="#88b858" offset="0"/> <path d="m6.35 6.35" fill="#99cd61"/>
<stop stop-color="#72b147" offset=".5"/> <path d="m6.35 0.52917-2.5208 4.3656 2.5208 1.4552 2.5203-1.4552 0.10955-3.0996c-1.1511-0.66459-2.3388-1.2661-2.6298-1.2661z" fill="#df6277"/>
<stop stop-color="#5a9a30" offset="1"/> <path d="m8.9798 1.7952-2.6298 4.5548 2.5203 1.4552 2.5208-4.3656c-0.14552-0.25205-1.2601-0.97975-2.4112-1.6443z" fill="#fb9168"/>
</linearGradient> <path d="m11.391 3.4396-5.041 2.9104 2.5203 1.4552 2.7389-1.4552c0-1.3292-0.072554-2.6584-0.21808-2.9104z" fill="#f3db6c"/>
</defs> <path d="m6.35 6.35v2.9104h5.041c0.14552-0.25205 0.21807-1.5812 0.21808-2.9104h-5.2591z" fill="#7ab392"/>
<g> <path d="m6.35 6.35v2.9104l2.6298 1.6443c1.1511-0.66459 2.2657-1.3923 2.4112-1.6443l-5.041-2.9104z" fill="#4b7cbc"/>
<path d="m3.561 16.016s0-3.5642 4.9056-3.5642c4.9069 0 4.9056 3.5642 4.9056 3.5642z" fill="#765338"/> <path d="m6.35 6.35-2.5208 1.4552 2.5208 4.3656c0.29104 0 1.4787-0.60148 2.6298-1.2661l-2.6298-4.5548z" fill="#6f488c"/>
<path d="m8.4667 12.452-4.9056 3.5642-3.0319-9.3311z" fill="#b7835a"/> <path d="m3.8292 4.8948-2.5203 4.3656c0.29104 0.5041 4.459 2.9104 5.041 2.9104v-5.8208l-2.5208-1.4552z" fill="#4d3f33"/>
<path d="m8.4667 12.452 7.9375-5.7669-3.0319 9.3311z" fill="#5b422d"/> <path d="m1.309 3.4396c-0.29104 0.5041-0.29104 5.3167 0 5.8208l5.041-2.9104v-2.9104h-5.041z" fill="#7a573b"/>
<path d="m8.8308 12.716-0.36417 0.26458-0.36417-0.26458c0-0.26458 0.36417-0.26458 0.36417-0.26458s0.36417 0 0.36417 0.26458z" fill="#72b147"/> <path d="m6.35 0.52917c-0.58208-2e-8 -4.75 2.4063-5.041 2.9104l5.041 2.9104v-5.8208z" fill="#99cd61"/>
<path d="m8.4667 12.452s-2e-7 -5.7669 7.9375-5.7669l-0.22507 0.69269-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819z" fill="#5a9a30"/>
<path d="m8.1025 12.716-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.22507-0.69269c7.9375 1e-7 7.9375 5.7669 7.9375 5.7669z" fill="#88b858"/>
<path d="m0.52917 6.6846 7.9375 5.7669 7.9375-5.7669-7.9375-5.7669z" fill="url(#linearGradient84726)"/>
</g> </g>
<path d="m0.75424 7.3773-0.22507-0.69269 7.9375 5.7669 7.9375-5.7669-0.22507 0.69269-7.7124 5.6034z" fill-opacity="0"/> <g transform="matrix(.88 0 0 .88 -10.906 -1.2421)">
<g transform="translate(13.26 2.2776)">
<path transform="matrix(.96975 0 0 .96975 .1921 .1921)" d="m6.3498 2.9393c-0.34105 0-2.7827 1.4099-2.9532 1.7052l2.9532 5.1157 2.9538-5.1157c-0.17052-0.29535-2.6127-1.7052-2.9538-1.7052z" fill="#fff" stroke-width=".26458"/>
</g>
<path d="m16.746 6.9737 2.8639 4.9609c0.33073 0 2.6991-1.3672 2.8644-1.6536 0.16536-0.28642 0.16536-3.0209 0-3.3073l-2.8644 1.6536z" fill="#dfdfdf" stroke-width=".26458"/>
</g>
<path d="m3.8299 4.8948c-0.14551 0.25205-0.14553 2.6584 0 2.9104 0.14553 0.25204 2.2292 1.4552 2.5203 1.4552v-2.9104z" fill="#d6d2d2" stroke-width=".26458"/>
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:title>Prism Launcher Logo</dc:title>
<dc:date>19/10/2022</dc:date>
<dc:creator>
<cc:Agent>
<dc:title>Prism Launcher</dc:title>
</cc:Agent>
</dc:creator>
<dc:contributor>
<cc:Agent>
<dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title>
</cc:Agent>
</dc:contributor>
<dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source>
<dc:rights>
<cc:Agent>
<dc:title>CC BY-SA 4.0</dc:title>
</cc:Agent>
</dc:rights>
<dc:publisher>
<cc:Agent>
<dc:title>Prism Launcher</dc:title>
</cc:Agent>
</dc:publisher>
</cc:Work>
</rdf:RDF>
</metadata>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs38" />
<g
id="g70305"
transform="matrix(0.87995311,0.87998288,-0.87995311,0.87998288,15.409106,-7.1812248)"
style="stroke-width:0.80356"><path
id="path66642"
style="fill:#daeeff;stroke:#3366cc;stroke-width:3.21424;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;fill-opacity:1"
d="M 10.272393,0.15880016 C 9.9282548,0.48303193 9.701946,1.0320027 9.701946,1.6547804 l 7.713e-4,20.0058326 2.7787647,5.932786 c 0.483272,1.031938 1.566339,1.032889 2.049746,0.0011 l 2.780076,-5.93399 0.0014,-20.0058323 c 0,-0.99644441 -0.579446,-1.80446494 -1.293962,-1.80446494 l -5.022821,8.497e-5 c -0.267943,0 -0.517093,0.11398937 -0.723576,0.30852843 z" /></g></svg>

After

Width:  |  Height:  |  Size: 984 B

View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs45" />
<g
id="g7954"><path
fill="none"
d="M 8.9659036,28 H 22.965904 c 1.1,0 2,-0.9 2,-2 V 15 14 H 6.9659036 v 1 11 c 0,1.1 0.9,2 2,2 z"
id="path8" /><rect
style="fill:#000000;fill-opacity:0;stroke:none;stroke-width:0.000000879999;stroke-linecap:round;stroke-linejoin:round"
id="rect2311"
width="29.020048"
height="4"
x="1.4899759"
y="7.1611009" /><path
id="path2-6"
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"
clip-rule="evenodd"
fill-rule="evenodd"
style="fill:#daeeff;fill-opacity:1" /><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-7"
d="M 6 0 C 2.7000033 0 0 2.7000033 0 6 L 0 9 L 0 26 C 0 29.299997 2.7000033 32 6 32 L 26 32 C 29.299997 32 32 29.299997 32 26 L 32 9 L 32 6 C 32 2.7000033 29.299997 0 26 0 L 6 0 z M 6 4 L 26 4 C 27.099999 4 28 4.9000011 28 6 L 28 9 L 28 26 C 28 27.099999 27.099999 28 26 28 L 6 28 C 4.9000011 28 4 27.099999 4 26 L 4 9 L 4 6 C 4 4.9000011 4.9000011 4 6 4 z "
style="fill:#3366cc;fill-opacity:1" /></g><path
style="fill:#666666;fill-opacity:1;stroke:none;stroke-width:1"
d="m 16,7.1611009 -8.793231,0.045668 -0.045668,8.7932321 9.575474,8.838898 8.102324,-8.102324 z m -3.682875,2.9463001 c 1.219769,0 2.209725,0.989956 2.209725,2.209725 0,1.219769 -0.989956,2.209725 -2.209725,2.209725 -1.219766,0 -2.209724,-0.989956 -2.209724,-2.209725 0,-1.219769 0.989958,-2.209725 2.209724,-2.209725"
id="path6042" /></g></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -34,5 +34,9 @@
<file>scalable/status-yellow.svg</file> <file>scalable/status-yellow.svg</file>
<file>scalable/viewfolder.svg</file> <file>scalable/viewfolder.svg</file>
<file>scalable/worlds.svg</file> <file>scalable/worlds.svg</file>
<file>scalable/delete.svg</file>
<file>scalable/tag.svg</file>
<file>scalable/export.svg</file>
<file>scalable/rename.svg</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs21">
</defs>
<g
id="g17358"
transform="translate(0.73129773)"><rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect15793"
width="17.548431"
height="20.8389"
x="6.4944863"
y="7.1611009" /><path
d="M 18.455476,4.1064849 V 2.071966 c 0,-0.8979555 0.387777,-0.8011866 -2.488293,-0.8011866 h -1.397072 c -2.876069,0 -2.488293,-0.1289149 -2.488293,0.8011866 v 2.0345189"
id="path10"
style="fill:#39b54a;fill-opacity:1;stroke:#39b54a;stroke-width:2;stroke-dasharray:none;stroke-opacity:1" /><g
id="g2238"
transform="translate(-0.9858234)"><path
fill="#8c6239"
d="m 22.885931,26.821028 c -0.0782,1.097217 -0.9,1.178972 -2,1.178972 H 11.62312 c -1.1,0 -2.0000002,-0.07897 -2.0000002,-1.178972 L 8.2218981,7.1611009 H 4.2241361 L 5.6231198,26.821028 C 5.8573527,30.112705 8.3231198,32 11.62312,32 h 9.262811 c 3.3,0 5.765767,-1.887295 6,-5.178972 L 28.284915,7.1611009 h -3.997763 z"
id="path12" /></g><rect
style="fill:#39b54a;fill-opacity:1;stroke:none;stroke-width:8.79999e-07;stroke-linecap:round;stroke-linejoin:round"
id="rect587"
width="29.264914"
height="3.9999995"
x="0.63624543"
y="3.2609999"
rx="2.1756897"
ry="1.9999998" /><g
id="g72186"
transform="matrix(1,0,0,0.89022438,-0.25830466,0.83279537)"
style="stroke-width:1.05986"><g
id="g92780"
transform="translate(-0.2948263)"><g
id="g92786"
transform="translate(-0.39497401)"><g
id="g24025"
transform="matrix(1,0,0,1.4771202,-0.16968376,-9.6959051)"
style="stroke-width:0.872052"><rect
style="fill:#8c6239;fill-opacity:1;stroke:none;stroke-width:3.49043;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect24019"
width="2.1505656"
height="10.38496"
x="10.206384"
y="14.677745"
rx="1.0752828"
ry="1.0752828"
transform="matrix(0.99908133,-0.04285447,0.09318226,0.99564907,0,0)" /></g><g
id="g72180"
transform="matrix(-1,0,0,1.4771202,32.603298,-9.6959051)"
style="stroke-width:0.872052"><rect
style="fill:#8c6239;fill-opacity:1;stroke:none;stroke-width:3.49043;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect72178"
width="2.1505656"
height="10.38496"
x="10.206384"
y="14.677745"
rx="1.0752828"
ry="1.0752828"
transform="matrix(0.99908133,-0.04285447,0.09318226,0.99564907,0,0)" /></g></g></g></g></g></svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<g
id="g7954"><g
id="g22579"><path
fill="#f2f2f2"
d="M 28,10 C 28,8.9 27.1,8 26,8 H 16 V 6 C 16,4.9 15.1,4 14,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="path22556" /><rect
x="0"
fill="none"
width="32"
height="32"
id="rect22558"
y="0" /><g
id="g22566">
<path
fill="none"
d="M 26,8 H 16 V 6 C 16,4.9 15.1,4 14,4 H 6 C 4.9,4 4,4.9 4,6 v 3 17 c 0,1.1 0.9,2 2,2 h 20 c 1.1,0 2,-0.9 2,-2 V 10 C 28,9.6 27.9,9.3 27.7,9 27.4,8.4 26.7,8 26,8 Z"
id="path22560" />
<path
fill="#39b54a"
d="M 4,6 C 4,4.9 4.9,4 6,4 h 8 c 1.1,0 2,0.9 2,2 v 2 h 10 c 0.7,0 1.4,0.4 1.7,1 h 4.2 C 31.4,6.2 29,4 26,4 H 19.6 C 18.8,1.7 16.6,0 14,0 H 6 C 2.7,0 0,2.7 0,6 v 3 h 4 z"
id="path22562" />
<path
fill="#8c6239"
d="m 27.7,9 c 0.2,0.3 0.3,0.6 0.3,1 v 16 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 10 C 32,9.7 32,9.3 31.9,9 Z"
id="path22564" />
</g></g><path
fill-rule="evenodd"
clip-rule="evenodd"
fill="#009245"
d="m 19.283635,21.196352 c -0.312728,0.234545 -0.625454,0.312728 -0.938181,0.312728 -0.234546,0 -0.469091,-0.07819 -0.703637,-0.156365 -0.547272,-0.234544 -0.859999,-0.781818 -0.859999,-1.407271 v -1.485455 -0.07817 c -4.925453,0 -9.1472686,3.283635 -10.4763592,7.818178 C 5.9927316,25.18363 5.836368,24.167266 5.836368,23.07272 c 0,-6.019996 4.925452,-10.945449 10.94545,-10.945449 v -1.563635 c 0,-0.625454 0.312727,-1.172727 0.859999,-1.407272 C 17.876363,9.078184 18.110908,9 18.345454,9 c 0.312727,0 0.625453,0.07817 0.938181,0.312727 l 6.254542,4.690906 c 0.390909,0.312728 0.625455,0.781818 0.625455,1.250909 0,0.469092 -0.234546,0.938182 -0.625455,1.250908 z"
id="path22733"
style="stroke-width:1" /></g></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -1,21 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="64" height="64" version="1.1" viewBox="0 0 16.933 16.933" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg width="48" height="48" version="1.1" viewBox="0 0 12.7 12.7" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<defs> <title>Prism Launcher Logo</title>
<linearGradient id="linearGradient84726" x1="4.4979" x2="12.435" y1="3.8011" y2="9.5681" gradientUnits="userSpaceOnUse"> <g stroke-width=".26458">
<stop stop-color="#88b858" offset="0"/> <path d="m6.35 6.35" fill="#99cd61"/>
<stop stop-color="#72b147" offset=".5"/> <path d="m6.35 0.52917-2.5208 4.3656 2.5208 1.4552 2.5203-1.4552 0.10955-3.0996c-1.1511-0.66459-2.3388-1.2661-2.6298-1.2661z" fill="#df6277"/>
<stop stop-color="#5a9a30" offset="1"/> <path d="m8.9798 1.7952-2.6298 4.5548 2.5203 1.4552 2.5208-4.3656c-0.14552-0.25205-1.2601-0.97975-2.4112-1.6443z" fill="#fb9168"/>
</linearGradient> <path d="m11.391 3.4396-5.041 2.9104 2.5203 1.4552 2.7389-1.4552c0-1.3292-0.072554-2.6584-0.21808-2.9104z" fill="#f3db6c"/>
</defs> <path d="m6.35 6.35v2.9104h5.041c0.14552-0.25205 0.21807-1.5812 0.21808-2.9104h-5.2591z" fill="#7ab392"/>
<g> <path d="m6.35 6.35v2.9104l2.6298 1.6443c1.1511-0.66459 2.2657-1.3923 2.4112-1.6443l-5.041-2.9104z" fill="#4b7cbc"/>
<path d="m3.561 16.016s0-3.5642 4.9056-3.5642c4.9069 0 4.9056 3.5642 4.9056 3.5642z" fill="#765338"/> <path d="m6.35 6.35-2.5208 1.4552 2.5208 4.3656c0.29104 0 1.4787-0.60148 2.6298-1.2661l-2.6298-4.5548z" fill="#6f488c"/>
<path d="m8.4667 12.452-4.9056 3.5642-3.0319-9.3311z" fill="#b7835a"/> <path d="m3.8292 4.8948-2.5203 4.3656c0.29104 0.5041 4.459 2.9104 5.041 2.9104v-5.8208l-2.5208-1.4552z" fill="#4d3f33"/>
<path d="m8.4667 12.452 7.9375-5.7669-3.0319 9.3311z" fill="#5b422d"/> <path d="m1.309 3.4396c-0.29104 0.5041-0.29104 5.3167 0 5.8208l5.041-2.9104v-2.9104h-5.041z" fill="#7a573b"/>
<path d="m8.8308 12.716-0.36417 0.26458-0.36417-0.26458c0-0.26458 0.36417-0.26458 0.36417-0.26458s0.36417 0 0.36417 0.26458z" fill="#72b147"/> <path d="m6.35 0.52917c-0.58208-2e-8 -4.75 2.4063-5.041 2.9104l5.041 2.9104v-5.8208z" fill="#99cd61"/>
<path d="m8.4667 12.452s-2e-7 -5.7669 7.9375-5.7669l-0.22507 0.69269-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819z" fill="#5a9a30"/>
<path d="m8.1025 12.716-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.22507-0.69269c7.9375 1e-7 7.9375 5.7669 7.9375 5.7669z" fill="#88b858"/>
<path d="m0.52917 6.6846 7.9375 5.7669 7.9375-5.7669-7.9375-5.7669z" fill="url(#linearGradient84726)"/>
</g> </g>
<path d="m0.75424 7.3773-0.22507-0.69269 7.9375 5.7669 7.9375-5.7669-0.22507 0.69269-7.7124 5.6034z" fill-opacity="0"/> <g transform="matrix(.88 0 0 .88 -10.906 -1.2421)">
<g transform="translate(13.26 2.2776)">
<path transform="matrix(.96975 0 0 .96975 .1921 .1921)" d="m6.3498 2.9393c-0.34105 0-2.7827 1.4099-2.9532 1.7052l2.9532 5.1157 2.9538-5.1157c-0.17052-0.29535-2.6127-1.7052-2.9538-1.7052z" fill="#fff" stroke-width=".26458"/>
</g>
<path d="m16.746 6.9737 2.8639 4.9609c0.33073 0 2.6991-1.3672 2.8644-1.6536 0.16536-0.28642 0.16536-3.0209 0-3.3073l-2.8644 1.6536z" fill="#dfdfdf" stroke-width=".26458"/>
</g>
<path d="m3.8299 4.8948c-0.14551 0.25205-0.14553 2.6584 0 2.9104 0.14553 0.25204 2.2292 1.4552 2.5203 1.4552v-2.9104z" fill="#d6d2d2" stroke-width=".26458"/>
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:title>Prism Launcher Logo</dc:title>
<dc:date>19/10/2022</dc:date>
<dc:creator>
<cc:Agent>
<dc:title>Prism Launcher</dc:title>
</cc:Agent>
</dc:creator>
<dc:contributor>
<cc:Agent>
<dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title>
</cc:Agent>
</dc:contributor>
<dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source>
<dc:rights>
<cc:Agent>
<dc:title>CC BY-SA 4.0</dc:title>
</cc:Agent>
</dc:rights>
<dc:publisher>
<cc:Agent>
<dc:title>Prism Launcher</dc:title>
</cc:Agent>
</dc:publisher>
</cc:Work>
</rdf:RDF>
</metadata>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs38" />
<g
id="g70305"
transform="matrix(0.87995311,0.87998288,-0.87995311,0.87998288,15.409106,-7.1812248)"
style="stroke-width:0.80356"><path
id="path66642"
style="fill:#f2f2f2;stroke:#8c6239;stroke-width:3.21424;stroke-linecap:butt;stroke-linejoin:round"
d="m 9.7027425,6.192769 v 15.467882 l 2.7787125,5.933433 c 0.483272,1.031939 1.567304,1.032078 2.050712,2.63e-4 L 17.31212,21.660651 V 6.192769" /><path
id="rect61208"
style="fill:#f2f2f2;stroke:#39b54a;stroke-width:3.21424;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="m 17.31212,6.8348105 v -5.180077 c 0,-0.99644538 -0.579229,-1.80422399 -1.293746,-1.80422399 h -5.021885 c -0.714516,0 -1.2937465,0.80777861 -1.2937465,1.80422399 v 5.195776" /></g></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs45" />
<g
id="g7954"><path
fill="none"
d="M 8.9659036,28 H 22.965904 c 1.1,0 2,-0.9 2,-2 V 15 14 H 6.9659036 v 1 11 c 0,1.1 0.9,2 2,2 z"
id="path8" /><rect
style="fill:#000000;fill-opacity:0;stroke:none;stroke-width:0.000000879999;stroke-linecap:round;stroke-linejoin:round"
id="rect2311"
width="29.020048"
height="4"
x="1.4899759"
y="7.1611009" /><path
id="path2-6"
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
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-7"
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-5"
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><path
style="fill:#009245;fill-opacity:1;stroke:none;stroke-width:1"
d="m 16,7.1611009 -8.793231,0.045668 -0.045668,8.7932321 9.575474,8.838898 8.102324,-8.102324 z m -3.682875,2.9463001 c 1.219769,0 2.209725,0.989956 2.209725,2.209725 0,1.219769 -0.989956,2.209725 -2.209725,2.209725 -1.219766,0 -2.209724,-0.989956 -2.209724,-2.209725 0,-1.219769 0.989958,-2.209725 2.209724,-2.209725"
id="path6042" /></g></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -34,5 +34,9 @@
<file>scalable/status-yellow.svg</file> <file>scalable/status-yellow.svg</file>
<file>scalable/viewfolder.svg</file> <file>scalable/viewfolder.svg</file>
<file>scalable/worlds.svg</file> <file>scalable/worlds.svg</file>
<file>scalable/delete.svg</file>
<file>scalable/tag.svg</file>
<file>scalable/export.svg</file>
<file>scalable/rename.svg</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs21">
</defs>
<g
id="g17358"
transform="translate(0.73129773)"><rect
style="fill:none;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect15793"
width="17.548431"
height="20.8389"
x="6.4944863"
y="7.1611009" /><path
d="M 18.455476,4.1064849 V 2.071966 c 0,-0.8979555 0.387777,-0.8011866 -2.488293,-0.8011866 h -1.397072 c -2.876069,0 -2.488293,-0.1289149 -2.488293,0.8011866 v 2.0345189"
id="path10"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-dasharray:none;stroke-opacity:1" /><g
id="g2238"
transform="translate(-0.9858234)"><path
d="m 22.885931,26.821028 c -0.0782,1.097217 -0.9,1.178972 -2,1.178972 H 11.62312 c -1.1,0 -2.0000002,-0.07897 -2.0000002,-1.178972 L 8.2218981,7.1611009 H 4.2241361 L 5.6231198,26.821028 C 5.8573527,30.112705 8.3231198,32 11.62312,32 h 9.262811 c 3.3,0 5.765767,-1.887295 6,-5.178972 L 28.284915,7.1611009 h -3.997763 z"
id="path12"
style="fill:#000000" /></g><rect
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.000000879999;stroke-linecap:round;stroke-linejoin:round"
id="rect587"
width="29.264914"
height="3.9999995"
x="0.63624543"
y="3.2609999"
rx="2.1756897"
ry="1.9999998" /><g
id="g72186"
transform="matrix(1,0,0,0.89022438,-0.25830466,0.83279537)"
style="stroke-width:1.05986"><g
id="g92780"
transform="translate(-0.2948263)"><g
id="g92786"
transform="translate(-0.39497401)"><g
id="g24025"
transform="matrix(1,0,0,1.4771202,-0.16968376,-9.6959051)"
style="stroke-width:0.872052"><rect
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.49043;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect24019"
width="2.1505656"
height="10.38496"
x="10.206384"
y="14.677745"
rx="1.0752828"
ry="1.0752828"
transform="matrix(0.99908133,-0.04285447,0.09318226,0.99564907,0,0)" /></g><g
id="g72180"
transform="matrix(-1,0,0,1.4771202,32.603298,-9.6959051)"
style="stroke-width:0.872052"><rect
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.49043;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect72178"
width="2.1505656"
height="10.38496"
x="10.206384"
y="14.677745"
rx="1.0752828"
ry="1.0752828"
transform="matrix(0.99908133,-0.04285447,0.09318226,0.99564907,0,0)" /></g></g></g></g></g></svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs14" />
<g
id="g7954"><g
id="g22579"><rect
x="0"
fill="none"
width="32"
height="32"
id="rect22558"
y="0" /><g
id="g22566">
<path
fill="none"
d="M 26,8 H 16 V 6 C 16,4.9 15.1,4 14,4 H 6 C 4.9,4 4,4.9 4,6 v 3 17 c 0,1.1 0.9,2 2,2 h 20 c 1.1,0 2,-0.9 2,-2 V 10 C 28,9.6 27.9,9.3 27.7,9 27.4,8.4 26.7,8 26,8 Z"
id="path22560" />
<path
id="path22562"
d="M 6 0 C 2.7000033 0 0 2.7000033 0 6 L 0 9 L 0 26 C 0 29.299997 2.7000033 32 6 32 L 26 32 C 29.299997 32 32 29.299997 32 26 L 32 10 C 32 9.7000003 32.000391 9.2999997 31.900391 9 C 31.400391 6.2000028 28.999997 4 26 4 L 19.599609 4 C 18.79961 1.7000023 16.599997 0 14 0 L 6 0 z M 6 4 L 14 4 C 15.099999 4 16 4.9000011 16 6 L 16 8 L 26 8 C 26.699999 8 27.399219 8.4000006 27.699219 9 C 27.899219 9.2999997 28 9.6000004 28 10 L 28 26 C 28 27.099999 27.099999 28 26 28 L 6 28 C 4.9000011 28 4 27.099999 4 26 L 4 9 L 4 6 C 4 4.9000011 4.9000011 4 6 4 z " />
</g></g><path
fill-rule="evenodd"
clip-rule="evenodd"
d="m 19.283635,21.196352 c -0.312728,0.234545 -0.625454,0.312728 -0.938181,0.312728 -0.234546,0 -0.469091,-0.07819 -0.703637,-0.156365 -0.547272,-0.234544 -0.859999,-0.781818 -0.859999,-1.407271 v -1.485455 -0.07817 c -4.925453,0 -9.1472686,3.283635 -10.4763592,7.818178 C 5.9927316,25.18363 5.836368,24.167266 5.836368,23.07272 c 0,-6.019996 4.925452,-10.945449 10.94545,-10.945449 v -1.563635 c 0,-0.625454 0.312727,-1.172727 0.859999,-1.407272 C 17.876363,9.078184 18.110908,9 18.345454,9 c 0.312727,0 0.625453,0.07817 0.938181,0.312727 l 6.254542,4.690906 c 0.390909,0.312728 0.625455,0.781818 0.625455,1.250909 0,0.469092 -0.234546,0.938182 -0.625455,1.250908 z"
id="path22733"
style="stroke-width:1;fill:#666666;fill-opacity:1" /></g></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -1,21 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="64" height="64" version="1.1" viewBox="0 0 16.933 16.933" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg width="48" height="48" version="1.1" viewBox="0 0 12.7 12.7" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<defs> <title>Prism Launcher Logo</title>
<linearGradient id="linearGradient84726" x1="4.4979" x2="12.435" y1="3.8011" y2="9.5681" gradientUnits="userSpaceOnUse"> <g stroke-width=".26458">
<stop stop-color="#88b858" offset="0"/> <path d="m6.35 6.35" fill="#99cd61"/>
<stop stop-color="#72b147" offset=".5"/> <path d="m6.35 0.52917-2.5208 4.3656 2.5208 1.4552 2.5203-1.4552 0.10955-3.0996c-1.1511-0.66459-2.3388-1.2661-2.6298-1.2661z" fill="#df6277"/>
<stop stop-color="#5a9a30" offset="1"/> <path d="m8.9798 1.7952-2.6298 4.5548 2.5203 1.4552 2.5208-4.3656c-0.14552-0.25205-1.2601-0.97975-2.4112-1.6443z" fill="#fb9168"/>
</linearGradient> <path d="m11.391 3.4396-5.041 2.9104 2.5203 1.4552 2.7389-1.4552c0-1.3292-0.072554-2.6584-0.21808-2.9104z" fill="#f3db6c"/>
</defs> <path d="m6.35 6.35v2.9104h5.041c0.14552-0.25205 0.21807-1.5812 0.21808-2.9104h-5.2591z" fill="#7ab392"/>
<g> <path d="m6.35 6.35v2.9104l2.6298 1.6443c1.1511-0.66459 2.2657-1.3923 2.4112-1.6443l-5.041-2.9104z" fill="#4b7cbc"/>
<path d="m3.561 16.016s0-3.5642 4.9056-3.5642c4.9069 0 4.9056 3.5642 4.9056 3.5642z" fill="#765338"/> <path d="m6.35 6.35-2.5208 1.4552 2.5208 4.3656c0.29104 0 1.4787-0.60148 2.6298-1.2661l-2.6298-4.5548z" fill="#6f488c"/>
<path d="m8.4667 12.452-4.9056 3.5642-3.0319-9.3311z" fill="#b7835a"/> <path d="m3.8292 4.8948-2.5203 4.3656c0.29104 0.5041 4.459 2.9104 5.041 2.9104v-5.8208l-2.5208-1.4552z" fill="#4d3f33"/>
<path d="m8.4667 12.452 7.9375-5.7669-3.0319 9.3311z" fill="#5b422d"/> <path d="m1.309 3.4396c-0.29104 0.5041-0.29104 5.3167 0 5.8208l5.041-2.9104v-2.9104h-5.041z" fill="#7a573b"/>
<path d="m8.8308 12.716-0.36417 0.26458-0.36417-0.26458c0-0.26458 0.36417-0.26458 0.36417-0.26458s0.36417 0 0.36417 0.26458z" fill="#72b147"/> <path d="m6.35 0.52917c-0.58208-2e-8 -4.75 2.4063-5.041 2.9104l5.041 2.9104v-5.8208z" fill="#99cd61"/>
<path d="m8.4667 12.452s-2e-7 -5.7669 7.9375-5.7669l-0.22507 0.69269-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819z" fill="#5a9a30"/>
<path d="m8.1025 12.716-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.22507-0.69269c7.9375 1e-7 7.9375 5.7669 7.9375 5.7669z" fill="#88b858"/>
<path d="m0.52917 6.6846 7.9375 5.7669 7.9375-5.7669-7.9375-5.7669z" fill="url(#linearGradient84726)"/>
</g> </g>
<path d="m0.75424 7.3773-0.22507-0.69269 7.9375 5.7669 7.9375-5.7669-0.22507 0.69269-7.7124 5.6034z" fill-opacity="0"/> <g transform="matrix(.88 0 0 .88 -10.906 -1.2421)">
<g transform="translate(13.26 2.2776)">
<path transform="matrix(.96975 0 0 .96975 .1921 .1921)" d="m6.3498 2.9393c-0.34105 0-2.7827 1.4099-2.9532 1.7052l2.9532 5.1157 2.9538-5.1157c-0.17052-0.29535-2.6127-1.7052-2.9538-1.7052z" fill="#fff" stroke-width=".26458"/>
</g>
<path d="m16.746 6.9737 2.8639 4.9609c0.33073 0 2.6991-1.3672 2.8644-1.6536 0.16536-0.28642 0.16536-3.0209 0-3.3073l-2.8644 1.6536z" fill="#dfdfdf" stroke-width=".26458"/>
</g>
<path d="m3.8299 4.8948c-0.14551 0.25205-0.14553 2.6584 0 2.9104 0.14553 0.25204 2.2292 1.4552 2.5203 1.4552v-2.9104z" fill="#d6d2d2" stroke-width=".26458"/>
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:title>Prism Launcher Logo</dc:title>
<dc:date>19/10/2022</dc:date>
<dc:creator>
<cc:Agent>
<dc:title>Prism Launcher</dc:title>
</cc:Agent>
</dc:creator>
<dc:contributor>
<cc:Agent>
<dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title>
</cc:Agent>
</dc:contributor>
<dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source>
<dc:rights>
<cc:Agent>
<dc:title>CC BY-SA 4.0</dc:title>
</cc:Agent>
</dc:rights>
<dc:publisher>
<cc:Agent>
<dc:title>Prism Launcher</dc:title>
</cc:Agent>
</dc:publisher>
</cc:Work>
</rdf:RDF>
</metadata>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs38" />
<g
id="g70305"
transform="matrix(0.87995311,0.87998288,-0.87995311,0.87998288,15.409106,-7.1812248)"
style="stroke-width:0.80356"><path
id="path66642"
style="fill:#f2f2f2;stroke:#000000;stroke-width:3.21424;stroke-linecap:butt;stroke-linejoin:round"
d="M 10.272393,0.15880016 C 9.9282548,0.48303193 9.701946,1.0320027 9.701946,1.6547804 l 7.713e-4,20.0058326 2.7787647,5.932786 c 0.483272,1.031938 1.566339,1.032889 2.049746,0.0011 l 2.780076,-5.93399 0.0014,-20.0058323 c 0,-0.99644441 -0.579446,-1.80446494 -1.293962,-1.80446494 l -5.022821,8.497e-5 c -0.267943,0 -0.517093,0.11398937 -0.723576,0.30852843 z" /></g></svg>

After

Width:  |  Height:  |  Size: 952 B

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs45" />
<g
id="g7954"><rect
style="fill:#000000;fill-opacity:0;stroke:none;stroke-width:0.000000879999;stroke-linecap:round;stroke-linejoin:round"
id="rect2311"
width="29.020048"
height="4"
x="1.4899759"
y="7.1611009" /><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-7"
d="M 6 0 C 2.7000033 0 0 2.7000033 0 6 L 0 9 L 0 26 C 0 29.299997 2.7000033 32 6 32 L 26 32 C 29.299997 32 32 29.299997 32 26 L 32 9 L 32 6 C 32 2.7000033 29.299997 0 26 0 L 6 0 z M 6 4 L 26 4 C 27.099999 4 28 4.9000011 28 6 L 28 9 L 28 26 C 28 27.099999 27.099999 28 26 28 L 6 28 C 4.9000011 28 4 27.099999 4 26 L 4 9 L 4 6 C 4 4.9000011 4.9000011 4 6 4 z " /></g><path
style="fill:#666666;fill-opacity:1;stroke:none;stroke-width:1"
d="m 16,7.1611009 -8.793231,0.045668 -0.045668,8.7932321 9.575474,8.838898 8.102324,-8.102324 z m -3.682875,2.9463001 c 1.219769,0 2.209725,0.989956 2.209725,2.209725 0,1.219769 -0.989956,2.209725 -2.209725,2.209725 -1.219766,0 -2.209724,-0.989956 -2.209724,-2.209725 0,-1.219769 0.989958,-2.209725 2.209724,-2.209725"
id="path6042" /></g></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -34,5 +34,9 @@
<file>scalable/status-yellow.svg</file> <file>scalable/status-yellow.svg</file>
<file>scalable/viewfolder.svg</file> <file>scalable/viewfolder.svg</file>
<file>scalable/worlds.svg</file> <file>scalable/worlds.svg</file>
<file>scalable/delete.svg</file>
<file>scalable/tag.svg</file>
<file>scalable/export.svg</file>
<file>scalable/rename.svg</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs21">
</defs>
<g
id="g17358"
transform="translate(0.73129773)"><rect
style="fill:none;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect15793"
width="17.548431"
height="20.8389"
x="6.4944863"
y="7.1611009" /><path
d="M 18.455476,4.1064849 V 2.071966 c 0,-0.8979555 0.387777,-0.8011866 -2.488293,-0.8011866 h -1.397072 c -2.876069,0 -2.488293,-0.1289149 -2.488293,0.8011866 v 2.0345189"
id="path10"
style="fill:#f2f2f2;fill-opacity:1;stroke:#f2f2f2;stroke-width:2;stroke-dasharray:none;stroke-opacity:1" /><g
id="g2238"
transform="translate(-0.9858234)"><path
d="m 22.885931,26.821028 c -0.0782,1.097217 -0.9,1.178972 -2,1.178972 H 11.62312 c -1.1,0 -2.0000002,-0.07897 -2.0000002,-1.178972 L 8.2218981,7.1611009 H 4.2241361 L 5.6231198,26.821028 C 5.8573527,30.112705 8.3231198,32 11.62312,32 h 9.262811 c 3.3,0 5.765767,-1.887295 6,-5.178972 L 28.284915,7.1611009 h -3.997763 z"
id="path12"
style="fill:#f2f2f2;fill-opacity:1" /></g><rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:0.000000879999;stroke-linecap:round;stroke-linejoin:round"
id="rect587"
width="29.264914"
height="3.9999995"
x="0.63624543"
y="3.2609999"
rx="2.1756897"
ry="1.9999998" /><g
id="g72186"
transform="matrix(1,0,0,0.89022438,-0.25830466,0.83279537)"
style="stroke-width:1.05986"><g
id="g92780"
transform="translate(-0.2948263)"><g
id="g92786"
transform="translate(-0.39497401)"><g
id="g24025"
transform="matrix(1,0,0,1.4771202,-0.16968376,-9.6959051)"
style="stroke-width:0.872052"><rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:3.49043;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect24019"
width="2.1505656"
height="10.38496"
x="10.206384"
y="14.677745"
rx="1.0752828"
ry="1.0752828"
transform="matrix(0.99908133,-0.04285447,0.09318226,0.99564907,0,0)" /></g><g
id="g72180"
transform="matrix(-1,0,0,1.4771202,32.603298,-9.6959051)"
style="stroke-width:0.872052"><rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:3.49043;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect72178"
width="2.1505656"
height="10.38496"
x="10.206384"
y="14.677745"
rx="1.0752828"
ry="1.0752828"
transform="matrix(0.99908133,-0.04285447,0.09318226,0.99564907,0,0)" /></g></g></g></g></g></svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs14" />
<g
id="g7954"><g
id="g22579"><rect
x="0"
fill="none"
width="32"
height="32"
id="rect22558"
y="0" /><g
id="g22566">
<path
fill="none"
d="M 26,8 H 16 V 6 C 16,4.9 15.1,4 14,4 H 6 C 4.9,4 4,4.9 4,6 v 3 17 c 0,1.1 0.9,2 2,2 h 20 c 1.1,0 2,-0.9 2,-2 V 10 C 28,9.6 27.9,9.3 27.7,9 27.4,8.4 26.7,8 26,8 Z"
id="path22560" />
<path
id="path22562"
d="M 6 0 C 2.7000033 0 0 2.7000033 0 6 L 0 9 L 0 26 C 0 29.299997 2.7000033 32 6 32 L 26 32 C 29.299997 32 32 29.299997 32 26 L 32 10 C 32 9.7000003 32.000391 9.2999997 31.900391 9 C 31.400391 6.2000028 28.999997 4 26 4 L 19.599609 4 C 18.79961 1.7000023 16.599997 0 14 0 L 6 0 z M 6 4 L 14 4 C 15.099999 4 16 4.9000011 16 6 L 16 8 L 26 8 C 26.699999 8 27.399219 8.4000006 27.699219 9 C 27.899219 9.2999997 28 9.6000004 28 10 L 28 26 C 28 27.099999 27.099999 28 26 28 L 6 28 C 4.9000011 28 4 27.099999 4 26 L 4 9 L 4 6 C 4 4.9000011 4.9000011 4 6 4 z "
style="fill:#f2f2f2;fill-opacity:1" />
</g></g><path
fill-rule="evenodd"
clip-rule="evenodd"
d="m 19.283635,21.196352 c -0.312728,0.234545 -0.625454,0.312728 -0.938181,0.312728 -0.234546,0 -0.469091,-0.07819 -0.703637,-0.156365 -0.547272,-0.234544 -0.859999,-0.781818 -0.859999,-1.407271 v -1.485455 -0.07817 c -4.925453,0 -9.1472686,3.283635 -10.4763592,7.818178 C 5.9927316,25.18363 5.836368,24.167266 5.836368,23.07272 c 0,-6.019996 4.925452,-10.945449 10.94545,-10.945449 v -1.563635 c 0,-0.625454 0.312727,-1.172727 0.859999,-1.407272 C 17.876363,9.078184 18.110908,9 18.345454,9 c 0.312727,0 0.625453,0.07817 0.938181,0.312727 l 6.254542,4.690906 c 0.390909,0.312728 0.625455,0.781818 0.625455,1.250909 0,0.469092 -0.234546,0.938182 -0.625455,1.250908 z"
id="path22733"
style="stroke-width:1;fill:#cccccc;fill-opacity:1" /></g></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -1,21 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="64" height="64" version="1.1" viewBox="0 0 16.933 16.933" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg width="48" height="48" version="1.1" viewBox="0 0 12.7 12.7" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<defs> <title>Prism Launcher Logo</title>
<linearGradient id="linearGradient84726" x1="4.4979" x2="12.435" y1="3.8011" y2="9.5681" gradientUnits="userSpaceOnUse"> <g stroke-width=".26458">
<stop stop-color="#dedede" offset="0"/> <path d="m6.35 6.35" fill="#99cd61"/>
<stop stop-color="#d2d2d2" offset=".5"/> <path d="m6.35 0.52917-2.5208 4.3656 2.5208 1.4552 2.5203-1.4552 0.10955-3.0996c-1.1511-0.66459-2.3388-1.2661-2.6298-1.2661z" fill="#df6277"/>
<stop stop-color="#c0c0c0" offset="1"/> <path d="m8.9798 1.7952-2.6298 4.5548 2.5203 1.4552 2.5208-4.3656c-0.14552-0.25205-1.2601-0.97975-2.4112-1.6443z" fill="#fb9168"/>
</linearGradient> <path d="m11.391 3.4396-5.041 2.9104 2.5203 1.4552 2.7389-1.4552c0-1.3292-0.072554-2.6584-0.21808-2.9104z" fill="#f3db6c"/>
</defs> <path d="m6.35 6.35v2.9104h5.041c0.14552-0.25205 0.21807-1.5812 0.21808-2.9104h-5.2591z" fill="#7ab392"/>
<g> <path d="m6.35 6.35v2.9104l2.6298 1.6443c1.1511-0.66459 2.2657-1.3923 2.4112-1.6443l-5.041-2.9104z" fill="#4b7cbc"/>
<path d="m3.561 16.016s0-3.5642 4.9056-3.5642c4.9069 0 4.9056 3.5642 4.9056 3.5642z" fill="#8f8f8f"/> <path d="m6.35 6.35-2.5208 1.4552 2.5208 4.3656c0.29104 0 1.4787-0.60148 2.6298-1.2661l-2.6298-4.5548z" fill="#6f488c"/>
<path d="m8.4667 12.452-4.9056 3.5642-3.0319-9.3311z" fill="#c2c2c2"/> <path d="m3.8292 4.8948-2.5203 4.3656c0.29104 0.5041 4.459 2.9104 5.041 2.9104v-5.8208l-2.5208-1.4552z" fill="#4d3f33"/>
<path d="m8.4667 12.452 7.9375-5.7669-3.0319 9.3311z" fill="#7c7c7c"/> <path d="m1.309 3.4396c-0.29104 0.5041-0.29104 5.3167 0 5.8208l5.041-2.9104v-2.9104h-5.041z" fill="#7a573b"/>
<path d="m8.8308 12.716-0.36417 0.26458-0.36417-0.26458c0-0.26458 0.36417-0.26458 0.36417-0.26458s0.36417 0 0.36417 0.26458z" fill="#d3d3d3"/> <path d="m6.35 0.52917c-0.58208-2e-8 -4.75 2.4063-5.041 2.9104l5.041 2.9104v-5.8208z" fill="#99cd61"/>
<path d="m8.4667 12.452s-2e-7 -5.7669 7.9375-5.7669l-0.22507 0.69269-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819-0.91853 1.1965-0.91853 0.13819z" fill="#bcbcbc"/>
<path d="m8.1025 12.716-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.91853-0.13819-0.91853-1.1965-0.22507-0.69269c7.9375 1e-7 7.9375 5.7669 7.9375 5.7669z" fill="#dedede"/>
<path d="m0.52917 6.6846 7.9375 5.7669 7.9375-5.7669-7.9375-5.7669z" fill="url(#linearGradient84726)"/>
</g> </g>
<path d="m0.75424 7.3773-0.22507-0.69269 7.9375 5.7669 7.9375-5.7669-0.22507 0.69269-7.7124 5.6034z" fill-opacity="0"/> <g transform="matrix(.88 0 0 .88 -10.906 -1.2421)">
<g transform="translate(13.26 2.2776)">
<path transform="matrix(.96975 0 0 .96975 .1921 .1921)" d="m6.3498 2.9393c-0.34105 0-2.7827 1.4099-2.9532 1.7052l2.9532 5.1157 2.9538-5.1157c-0.17052-0.29535-2.6127-1.7052-2.9538-1.7052z" fill="#fff" stroke-width=".26458"/>
</g>
<path d="m16.746 6.9737 2.8639 4.9609c0.33073 0 2.6991-1.3672 2.8644-1.6536 0.16536-0.28642 0.16536-3.0209 0-3.3073l-2.8644 1.6536z" fill="#dfdfdf" stroke-width=".26458"/>
</g>
<path d="m3.8299 4.8948c-0.14551 0.25205-0.14553 2.6584 0 2.9104 0.14553 0.25204 2.2292 1.4552 2.5203 1.4552v-2.9104z" fill="#d6d2d2" stroke-width=".26458"/>
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:title>Prism Launcher Logo</dc:title>
<dc:date>19/10/2022</dc:date>
<dc:creator>
<cc:Agent>
<dc:title>Prism Launcher</dc:title>
</cc:Agent>
</dc:creator>
<dc:contributor>
<cc:Agent>
<dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title>
</cc:Agent>
</dc:contributor>
<dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source>
<dc:rights>
<cc:Agent>
<dc:title>CC BY-SA 4.0</dc:title>
</cc:Agent>
</dc:rights>
<dc:publisher>
<cc:Agent>
<dc:title>Prism Launcher</dc:title>
</cc:Agent>
</dc:publisher>
</cc:Work>
</rdf:RDF>
</metadata>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs38" />
<g
id="g70305"
transform="matrix(0.87995311,0.87998288,-0.87995311,0.87998288,15.409106,-7.1812248)"
style="stroke-width:0.80356;fill:#4d4d4d;fill-opacity:1"><path
id="path66642"
style="fill:#4d4d4d;stroke:#ffffff;stroke-width:3.21424;stroke-linecap:butt;stroke-linejoin:round;fill-opacity:1"
d="M 10.272393,0.15880016 C 9.9282548,0.48303193 9.701946,1.0320027 9.701946,1.6547804 l 7.713e-4,20.0058326 2.7787647,5.932786 c 0.483272,1.031938 1.566339,1.032889 2.049746,0.0011 l 2.780076,-5.93399 0.0014,-20.0058323 c 0,-0.99644441 -0.579446,-1.80446494 -1.293962,-1.80446494 l -5.022821,8.497e-5 c -0.267943,0 -0.517093,0.11398937 -0.723576,0.30852843 z" /></g></svg>

After

Width:  |  Height:  |  Size: 995 B

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Calque_1"
x="0px"
y="0px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs45" />
<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-7"
d="M 6,0 C 2.7000033,0 0,2.7000033 0,6 v 3 17 c 0,3.299997 2.7000033,6 6,6 h 20 c 3.299997,0 6,-2.700003 6,-6 V 9 6 C 32,2.7000033 29.299997,0 26,0 Z m 0,4 h 20 c 1.099999,0 2,0.9000011 2,2 v 3 17 c 0,1.099999 -0.900001,2 -2,2 H 6 C 4.9000011,28 4,27.099999 4,26 V 9 6 C 4,4.9000011 4.9000011,4 6,4 Z"
style="fill:#f2f2f2;fill-opacity:1" /><path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1"
d="m 16,7.1611009 -8.793231,0.045668 -0.045668,8.7932321 9.575474,8.838898 8.102324,-8.102324 z m -3.682875,2.9463001 c 1.219769,0 2.209725,0.989956 2.209725,2.209725 0,1.219769 -0.989956,2.209725 -2.209725,2.209725 -1.219766,0 -2.209724,-0.989956 -2.209724,-2.209725 0,-1.219769 0.989958,-2.209725 2.209724,-2.209725"
id="path6042" /></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -16,7 +16,30 @@
#include "INISettingsObject.h" #include "INISettingsObject.h"
#include "Setting.h" #include "Setting.h"
INISettingsObject::INISettingsObject(const QString &path, QObject *parent) #include <QDebug>
#include <QFile>
INISettingsObject::INISettingsObject(QStringList paths, QObject *parent)
: SettingsObject(parent)
{
auto first_path = paths.constFirst();
for (auto path : paths) {
if (!QFile::exists(path))
continue;
if (path != first_path && QFile::exists(path)) {
// Copy the fallback to the preferred path.
QFile::copy(path, first_path);
qDebug() << "Copied settings from" << path << "to" << first_path;
break;
}
}
m_filePath = first_path;
m_ini.loadFile(first_path);
}
INISettingsObject::INISettingsObject(QString path, QObject* parent)
: SettingsObject(parent) : SettingsObject(parent)
{ {
m_filePath = path; m_filePath = path;

View File

@ -28,7 +28,10 @@ class INISettingsObject : public SettingsObject
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit INISettingsObject(const QString &path, QObject *parent = 0); /** 'paths' is a list of INI files to try, in order, for fallback support. */
explicit INISettingsObject(QStringList paths, QObject* parent = nullptr);
explicit INISettingsObject(QString path, QObject* parent = nullptr);
/*! /*!
* \brief Gets the path to the INI file. * \brief Gets the path to the INI file.

View File

@ -33,7 +33,7 @@ public:
* Construct a Setting * Construct a Setting
* *
* Synonyms are all the possible names used in the settings object, in order of preference. * Synonyms are all the possible names used in the settings object, in order of preference.
* First synonym is the ID, which identifies the setting in PolyMC. * First synonym is the ID, which identifies the setting in Prism Launcher.
* *
* defVal is the default value that will be returned when the settings object * defVal is the default value that will be returned when the settings object
* doesn't have any value for this setting. * doesn't have any value for this setting.

View File

@ -643,6 +643,7 @@ public:
actionRenameInstance->setObjectName(QStringLiteral("actionRenameInstance")); actionRenameInstance->setObjectName(QStringLiteral("actionRenameInstance"));
actionRenameInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Rename")); actionRenameInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Rename"));
actionRenameInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Rename the selected instance.")); actionRenameInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Rename the selected instance."));
actionRenameInstance->setIcon(APPLICATION->getThemedIcon("rename"));
all_actions.append(&actionRenameInstance); all_actions.append(&actionRenameInstance);
// the rename label is inside the rename tool button // the rename label is inside the rename tool button
@ -675,6 +676,7 @@ public:
actionKillInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&Kill")); actionKillInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&Kill"));
actionKillInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Kill the running instance")); actionKillInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Kill the running instance"));
actionKillInstance->setShortcut(QKeySequence(tr("Ctrl+K"))); actionKillInstance->setShortcut(QKeySequence(tr("Ctrl+K")));
actionKillInstance->setIcon(APPLICATION->getThemedIcon("status-bad"));
all_actions.append(&actionKillInstance); all_actions.append(&actionKillInstance);
actionEditInstance = TranslatedAction(MainWindow); actionEditInstance = TranslatedAction(MainWindow);
@ -682,6 +684,7 @@ public:
actionEditInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&Edit...")); actionEditInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&Edit..."));
actionEditInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Change the instance settings, mods and versions.")); actionEditInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Change the instance settings, mods and versions."));
actionEditInstance->setShortcut(QKeySequence(tr("Ctrl+I"))); actionEditInstance->setShortcut(QKeySequence(tr("Ctrl+I")));
actionEditInstance->setIcon(APPLICATION->getThemedIcon("settings-configure"));
all_actions.append(&actionEditInstance); all_actions.append(&actionEditInstance);
actionChangeInstGroup = TranslatedAction(MainWindow); actionChangeInstGroup = TranslatedAction(MainWindow);
@ -689,12 +692,14 @@ public:
actionChangeInstGroup.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&Change Group...")); actionChangeInstGroup.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&Change Group..."));
actionChangeInstGroup.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Change the selected instance's group.")); actionChangeInstGroup.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Change the selected instance's group."));
actionChangeInstGroup->setShortcut(QKeySequence(tr("Ctrl+G"))); actionChangeInstGroup->setShortcut(QKeySequence(tr("Ctrl+G")));
actionChangeInstGroup->setIcon(APPLICATION->getThemedIcon("tag"));
all_actions.append(&actionChangeInstGroup); all_actions.append(&actionChangeInstGroup);
actionViewSelectedInstFolder = TranslatedAction(MainWindow); actionViewSelectedInstFolder = TranslatedAction(MainWindow);
actionViewSelectedInstFolder->setObjectName(QStringLiteral("actionViewSelectedInstFolder")); actionViewSelectedInstFolder->setObjectName(QStringLiteral("actionViewSelectedInstFolder"));
actionViewSelectedInstFolder.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&Folder")); actionViewSelectedInstFolder.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&Folder"));
actionViewSelectedInstFolder.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open the selected instance's root folder in a file browser.")); actionViewSelectedInstFolder.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open the selected instance's root folder in a file browser."));
actionViewSelectedInstFolder->setIcon(APPLICATION->getThemedIcon("viewfolder"));
all_actions.append(&actionViewSelectedInstFolder); all_actions.append(&actionViewSelectedInstFolder);
actionExportInstance = TranslatedAction(MainWindow); actionExportInstance = TranslatedAction(MainWindow);
@ -702,6 +707,7 @@ public:
actionExportInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "E&xport...")); actionExportInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "E&xport..."));
actionExportInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Export the selected instance as a zip file.")); actionExportInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Export the selected instance as a zip file."));
actionExportInstance->setShortcut(QKeySequence(tr("Ctrl+E"))); actionExportInstance->setShortcut(QKeySequence(tr("Ctrl+E")));
actionExportInstance->setIcon(APPLICATION->getThemedIcon("export"));
all_actions.append(&actionExportInstance); all_actions.append(&actionExportInstance);
actionDeleteInstance = TranslatedAction(MainWindow); actionDeleteInstance = TranslatedAction(MainWindow);
@ -710,14 +716,15 @@ public:
actionDeleteInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Delete the selected instance.")); actionDeleteInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Delete the selected instance."));
actionDeleteInstance->setShortcuts({QKeySequence(tr("Backspace")), QKeySequence::Delete}); actionDeleteInstance->setShortcuts({QKeySequence(tr("Backspace")), QKeySequence::Delete});
actionDeleteInstance->setAutoRepeat(false); actionDeleteInstance->setAutoRepeat(false);
actionDeleteInstance->setIcon(APPLICATION->getThemedIcon("delete"));
all_actions.append(&actionDeleteInstance); all_actions.append(&actionDeleteInstance);
actionCopyInstance = TranslatedAction(MainWindow); actionCopyInstance = TranslatedAction(MainWindow);
actionCopyInstance->setObjectName(QStringLiteral("actionCopyInstance")); actionCopyInstance->setObjectName(QStringLiteral("actionCopyInstance"));
actionCopyInstance->setIcon(APPLICATION->getThemedIcon("copy"));
actionCopyInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Cop&y...")); actionCopyInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Cop&y..."));
actionCopyInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Copy the selected instance.")); actionCopyInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Copy the selected instance."));
actionCopyInstance->setShortcut(QKeySequence(tr("Ctrl+D"))); actionCopyInstance->setShortcut(QKeySequence(tr("Ctrl+D")));
actionCopyInstance->setIcon(APPLICATION->getThemedIcon("copy"));
all_actions.append(&actionCopyInstance); all_actions.append(&actionCopyInstance);
setInstanceActionsEnabled(false); setInstanceActionsEnabled(false);
@ -1860,7 +1867,7 @@ void MainWindow::globalSettingsClosed()
updateToolsMenu(); updateToolsMenu();
updateStatusCenter(); updateStatusCenter();
// This needs to be done to prevent UI elements disappearing in the event the config is changed // This needs to be done to prevent UI elements disappearing in the event the config is changed
// but PolyMC exits abnormally, causing the window state to never be saved: // but Prism Launcher exits abnormally, causing the window state to never be saved:
APPLICATION->settings()->set("MainWindowState", saveState().toBase64()); APPLICATION->settings()->set("MainWindowState", saveState().toBase64());
update(); update();
} }

View File

@ -69,7 +69,7 @@ QString getCreditsHtml()
#endif #endif
stream << "<center>\n"; stream << "<center>\n";
//: %1 is the name of the launcher, determined at build time, e.g. "PolyMC Developers" //: %1 is the name of the launcher, determined at build time, e.g. "Prism Launcher Developers"
stream << "<h3>" << QObject::tr("%1 Developers", "About Credits").arg(BuildConfig.LAUNCHER_DISPLAYNAME) << "</h3>\n"; stream << "<h3>" << QObject::tr("%1 Developers", "About Credits").arg(BuildConfig.LAUNCHER_DISPLAYNAME) << "</h3>\n";
stream << QString("<p>Sefa Eyeoglu (Scrumplex) %1</p>\n") .arg(getWebsite("https://scrumplex.net")); stream << QString("<p>Sefa Eyeoglu (Scrumplex) %1</p>\n") .arg(getWebsite("https://scrumplex.net"));
stream << QString("<p>dada513 %1</p>\n") .arg(getGitHub("dada513")); stream << QString("<p>dada513 %1</p>\n") .arg(getGitHub("dada513"));
@ -79,7 +79,7 @@ QString getCreditsHtml()
stream << QString("<p>cozyGalvinism %1</p>\n") .arg(getGitHub("cozyGalvinism")); stream << QString("<p>cozyGalvinism %1</p>\n") .arg(getGitHub("cozyGalvinism"));
stream << "<br />\n"; stream << "<br />\n";
//: %1 is the name of the launcher, determined at build time, e.g. "PolyMC Contributors" //: %1 is the name of the launcher, determined at build time, e.g. "Prism Launcher Contributors"
stream << "<h3>" << QObject::tr("%1 Contributors", "About Credits").arg(BuildConfig.LAUNCHER_DISPLAYNAME) << "</h3>\n"; stream << "<h3>" << QObject::tr("%1 Contributors", "About Credits").arg(BuildConfig.LAUNCHER_DISPLAYNAME) << "</h3>\n";
stream << QString("<p>DioEgizio %1</p>\n") .arg(getGitHub("DioEgizio")); stream << QString("<p>DioEgizio %1</p>\n") .arg(getGitHub("DioEgizio"));
stream << QString("<p>flowln %1</p>\n") .arg(getGitHub("flowln")); stream << QString("<p>flowln %1</p>\n") .arg(getGitHub("flowln"));
@ -87,7 +87,7 @@ QString getCreditsHtml()
stream << "<br />\n"; stream << "<br />\n";
// TODO: possibly retrieve from git history at build time? // TODO: possibly retrieve from git history at build time?
//: %1 is the name of the launcher, determined at build time, e.g. "PolyMC Developers" //: %1 is the name of the launcher, determined at build time, e.g. "Prism Launcher Developers"
stream << "<h3>" << QObject::tr("%1 Developers", "About Credits").arg("MultiMC") << "</h3>\n"; stream << "<h3>" << QObject::tr("%1 Developers", "About Credits").arg("MultiMC") << "</h3>\n";
stream << "<p>Andrew Okin &lt;<a href='mailto:forkk@forkk.net'>forkk@forkk.net</a>&gt;</p>\n"; stream << "<p>Andrew Okin &lt;<a href='mailto:forkk@forkk.net'>forkk@forkk.net</a>&gt;</p>\n";
stream << QString("<p>Petr Mrázek &lt;<a href='mailto:peterix@gmail.com'>peterix@gmail.com</a>&gt;</p>\n"); stream << QString("<p>Petr Mrázek &lt;<a href='mailto:peterix@gmail.com'>peterix@gmail.com</a>&gt;</p>\n");
@ -97,12 +97,20 @@ QString getCreditsHtml()
stream << "<br />\n"; stream << "<br />\n";
stream << "<h3>" << QObject::tr("With thanks to", "About Credits") << "</h3>\n"; stream << "<h3>" << QObject::tr("With thanks to", "About Credits") << "</h3>\n";
stream << QString("<p>Boba %1</p>\n") .arg(getWebsite("https://cmdplusv.neocities.org/"));
stream << QString("<p>Davi Rafael %1</p>\n") .arg(getWebsite("https://auti.one/"));
stream << QString("<p>Fulmine %1</p>\n") .arg(getWebsite("https://www.fulmine.xyz/"));
stream << QString("<p>ely %1</p>\n") .arg(getGitHub("elyrodso"));
stream << QString("<p>gon sawa %1</p>\n") .arg(getGitHub("gonsawa"));
stream << QString("<p>Pankakes</p>\n");
stream << QString("<p>tobimori %1</p>\n") .arg(getGitHub("tobimori"));
stream << "<p>Orochimarufan &lt;<a href='mailto:orochimarufan.x3@gmail.com'>orochimarufan.x3@gmail.com</a>&gt;</p>\n"; stream << "<p>Orochimarufan &lt;<a href='mailto:orochimarufan.x3@gmail.com'>orochimarufan.x3@gmail.com</a>&gt;</p>\n";
stream << "<p>TakSuyu &lt;<a href='mailto:taksuyu@gmail.com'>taksuyu@gmail.com</a>&gt;</p>\n"; stream << "<p>TakSuyu &lt;<a href='mailto:taksuyu@gmail.com'>taksuyu@gmail.com</a>&gt;</p>\n";
stream << "<p>Kilobyte &lt;<a href='mailto:stiepen22@gmx.de'>stiepen22@gmx.de</a>&gt;</p>\n"; stream << "<p>Kilobyte &lt;<a href='mailto:stiepen22@gmx.de'>stiepen22@gmx.de</a>&gt;</p>\n";
stream << "<p>Rootbear75 &lt;<a href='https://twitter.com/rootbear75'>@rootbear75</a>&gt;</p>\n"; stream << "<p>Rootbear75 &lt;<a href='https://twitter.com/rootbear75'>@rootbear75</a>&gt;</p>\n";
stream << "<p>Zeker Zhayard &lt;<a href='https://twitter.com/zeker_zhayard'>@Zeker_Zhayard</a>&gt;</p>\n"; stream << "<p>Zeker Zhayard &lt;<a href='https://twitter.com/zeker_zhayard'>@Zeker_Zhayard</a>&gt;</p>\n";
stream << "<p>Everyone else who <a href='https://github.com/PolyMC/PolyMC/graphs/contributors'>contributed</a>!</p>\n"; stream << "<p>Everyone who helped establish our branding!</p>\n";
stream << "<p>And everyone else who <a href='https://github.com/PrismLauncher/PrismLauncher/graphs/contributors'>contributed</a>!</p>\n";
stream << "<br />\n"; stream << "<br />\n";
stream << "</center>\n"; stream << "</center>\n";
@ -164,7 +172,7 @@ AboutDialog::AboutDialog(QWidget *parent) : QDialog(parent), ui(new Ui::AboutDia
QString urlText("<html><head/><body><p><a href=\"%1\">%1</a></p></body></html>"); QString urlText("<html><head/><body><p><a href=\"%1\">%1</a></p></body></html>");
ui->urlLabel->setText(urlText.arg(BuildConfig.LAUNCHER_GIT)); ui->urlLabel->setText(urlText.arg(BuildConfig.LAUNCHER_GIT));
QString copyText("© 2021-2022 %1"); QString copyText("© 2022 %1");
ui->copyLabel->setText(copyText.arg(BuildConfig.LAUNCHER_COPYRIGHT)); ui->copyLabel->setText(copyText.arg(BuildConfig.LAUNCHER_COPYRIGHT));
connect(ui->closeButton, SIGNAL(clicked()), SLOT(close())); connect(ui->closeButton, SIGNAL(clicked()), SLOT(close()));

View File

@ -139,6 +139,10 @@ NewInstanceDialog::NewInstanceDialog(const QString & initialGroup, const QString
void NewInstanceDialog::reject() void NewInstanceDialog::reject()
{ {
APPLICATION->settings()->set("NewInstanceGeometry", saveGeometry().toBase64()); APPLICATION->settings()->set("NewInstanceGeometry", saveGeometry().toBase64());
// This is just so that the pages get the close() call and can react to it, if needed.
m_container->prepareToClose();
QDialog::reject(); QDialog::reject();
} }
@ -146,6 +150,10 @@ void NewInstanceDialog::accept()
{ {
APPLICATION->settings()->set("NewInstanceGeometry", saveGeometry().toBase64()); APPLICATION->settings()->set("NewInstanceGeometry", saveGeometry().toBase64());
importIconNow(); importIconNow();
// This is just so that the pages get the close() call and can react to it, if needed.
m_container->prepareToClose();
QDialog::accept(); QDialog::accept();
} }

View File

@ -20,7 +20,9 @@ NewsDialog::NewsDialog(QList<NewsEntryPtr> entries, QWidget* parent) : QDialog(p
auto article_entry = m_entries.constFind(first_item->text()).value(); auto article_entry = m_entries.constFind(first_item->text()).value();
ui->articleTitleLabel->setText(QString("<a href='%1'>%2</a>").arg(article_entry->link, first_item->text())); ui->articleTitleLabel->setText(QString("<a href='%1'>%2</a>").arg(article_entry->link, first_item->text()));
ui->currentArticleContentBrowser->setText(article_entry->content); ui->currentArticleContentBrowser->setText(article_entry->content);
ui->currentArticleContentBrowser->flush();
} }
NewsDialog::~NewsDialog() NewsDialog::~NewsDialog()
@ -33,7 +35,9 @@ void NewsDialog::selectedArticleChanged(const QString& new_title)
auto const& article_entry = m_entries.constFind(new_title).value(); auto const& article_entry = m_entries.constFind(new_title).value();
ui->articleTitleLabel->setText(QString("<a href='%1'>%2</a>").arg(article_entry->link, new_title)); ui->articleTitleLabel->setText(QString("<a href='%1'>%2</a>").arg(article_entry->link, new_title));
ui->currentArticleContentBrowser->setText(article_entry->content); ui->currentArticleContentBrowser->setText(article_entry->content);
ui->currentArticleContentBrowser->flush();
} }
void NewsDialog::toggleArticleList() void NewsDialog::toggleArticleList()

View File

@ -49,7 +49,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QTextBrowser" name="currentArticleContentBrowser"> <widget class="ProjectDescriptionPage" name="currentArticleContentBrowser">
<property name="textInteractionFlags"> <property name="textInteractionFlags">
<set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> <set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property> </property>
@ -91,6 +91,13 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<customwidgets>
<customwidget>
<class>ProjectDescriptionPage</class>
<extends>QTextBrowser</extends>
<header>ui/widgets/ProjectDescriptionPage.h</header>
</customwidget>
</customwidgets>
<resources/> <resources/>
<connections> <connections>
<connection> <connection>

View File

@ -25,6 +25,7 @@ ProgressDialog::ProgressDialog(QWidget* parent) : QDialog(parent), ui(new Ui::Pr
{ {
ui->setupUi(this); ui->setupUi(this);
this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint); this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
setAttribute(Qt::WidgetAttribute::WA_QuitOnClose, true);
setSkipButton(false); setSkipButton(false);
changeProgress(0, 100); changeProgress(0, 100);
} }
@ -67,7 +68,7 @@ int ProgressDialog::execWithTask(Task* task)
return QDialog::DialogCode::Accepted; return QDialog::DialogCode::Accepted;
} }
QDialog::DialogCode result; QDialog::DialogCode result {};
if (handleImmediateResult(result)) { if (handleImmediateResult(result)) {
return result; return result;
} }
@ -80,7 +81,7 @@ int ProgressDialog::execWithTask(Task* task)
connect(task, &Task::stepStatus, this, &ProgressDialog::changeStatus); connect(task, &Task::stepStatus, this, &ProgressDialog::changeStatus);
connect(task, &Task::progress, this, &ProgressDialog::changeProgress); connect(task, &Task::progress, this, &ProgressDialog::changeProgress);
connect(task, &Task::aborted, [this] { QDialog::reject(); }); connect(task, &Task::aborted, this, &ProgressDialog::hide);
connect(task, &Task::abortStatusChanged, ui->skipButton, &QPushButton::setEnabled); connect(task, &Task::abortStatusChanged, ui->skipButton, &QPushButton::setEnabled);
m_is_multi_step = task->isMultiStep(); m_is_multi_step = task->isMultiStep();
@ -135,11 +136,13 @@ void ProgressDialog::onTaskStarted() {}
void ProgressDialog::onTaskFailed(QString failure) void ProgressDialog::onTaskFailed(QString failure)
{ {
reject(); reject();
hide();
} }
void ProgressDialog::onTaskSucceeded() void ProgressDialog::onTaskSucceeded()
{ {
accept(); accept();
hide();
} }
void ProgressDialog::changeStatus(const QString& status) void ProgressDialog::changeStatus(const QString& status)

View File

@ -73,12 +73,12 @@ void UpdateDialog::loadChangelog()
QString url; QString url;
if(channel == "stable") if(channel == "stable")
{ {
url = QString("https://raw.githubusercontent.com/PolyMC/PolyMC/%1/changelog.md").arg(channel); url = QString("https://raw.githubusercontent.com/PrismLauncher/PrismLauncher/%1/changelog.md").arg(channel);
m_changelogType = CHANGELOG_MARKDOWN; m_changelogType = CHANGELOG_MARKDOWN;
} }
else else
{ {
url = QString("https://api.github.com/repos/PolyMC/PolyMC/compare/%1...%2").arg(BuildConfig.GIT_COMMIT, channel); url = QString("https://api.github.com/repos/PrismLauncher/PrismLauncher/compare/%1...%2").arg(BuildConfig.GIT_COMMIT, channel);
m_changelogType = CHANGELOG_COMMITS; m_changelogType = CHANGELOG_COMMITS;
} }
dljob->addNetAction(Net::Download::makeByteArray(QUrl(url), &changelogData)); dljob->addNetAction(Net::Download::makeByteArray(QUrl(url), &changelogData));
@ -93,7 +93,7 @@ QString reprocessMarkdown(QByteArray markdown)
QString output = hoedown.process(markdown); QString output = hoedown.process(markdown);
// HACK: easier than customizing hoedown // HACK: easier than customizing hoedown
output.replace(QRegularExpression("GH-([0-9]+)"), "<a href=\"https://github.com/PolyMC/PolyMC/issues/\\1\">GH-\\1</a>"); output.replace(QRegularExpression("GH-([0-9]+)"), "<a href=\"https://github.com/PrismLauncher/PrismLauncher/issues/\\1\">GH-\\1</a>");
qDebug() << output; qDebug() << output;
return output; return output;
} }
@ -135,7 +135,7 @@ QString reprocessCommits(QByteArray json)
result += "<tr><td>"; result += "<tr><td>";
if(issuenr.length()) if(issuenr.length())
{ {
result += QString("<a href=\"https://github.com/PolyMC/PolyMC/issues/%1\">GH-%2</a>").arg(issuenr, issuenr); result += QString("<a href=\"https://github.com/PrismLauncher/PrismLauncher/issues/%1\">GH-%2</a>").arg(issuenr, issuenr);
} }
else if(prefix.length()) else if(prefix.length())
{ {

View File

@ -147,7 +147,7 @@ void LauncherPage::on_instDirBrowseBtn_clicked()
{ {
QMessageBox warning; QMessageBox warning;
warning.setText(tr("You're trying to specify an instance folder " warning.setText(tr("You're trying to specify an instance folder "
"which was granted temporaily via Flatpak.\n" "which was granted temporarily via Flatpak.\n"
"This is known to cause problems. " "This is known to cause problems. "
"After a restart the launcher might break, " "After a restart the launcher might break, "
"because it will no longer have access to that directory.\n\n" "because it will no longer have access to that directory.\n\n"

View File

@ -103,10 +103,6 @@ void ExternalResourcesPage::runningStateChanged(bool running)
return; return;
m_controlsEnabled = !running; m_controlsEnabled = !running;
ui->actionAddItem->setEnabled(m_controlsEnabled);
ui->actionDisableItem->setEnabled(m_controlsEnabled);
ui->actionEnableItem->setEnabled(m_controlsEnabled);
ui->actionRemoveItem->setEnabled(m_controlsEnabled);
} }
bool ExternalResourcesPage::shouldDisplay() const bool ExternalResourcesPage::shouldDisplay() const

View File

@ -117,6 +117,10 @@ void ModFolderPage::runningStateChanged(bool running)
ExternalResourcesPage::runningStateChanged(running); ExternalResourcesPage::runningStateChanged(running);
ui->actionDownloadItem->setEnabled(!running); ui->actionDownloadItem->setEnabled(!running);
ui->actionUpdateItem->setEnabled(!running); ui->actionUpdateItem->setEnabled(!running);
ui->actionAddItem->setEnabled(!running);
ui->actionEnableItem->setEnabled(!running);
ui->actionDisableItem->setEnabled(!running);
ui->actionRemoveItem->setEnabled(!running);
} }
bool ModFolderPage::shouldDisplay() const bool ModFolderPage::shouldDisplay() const

View File

@ -352,4 +352,5 @@ void ModPage::updateUi()
HoeDown h; HoeDown h;
ui->packDescription->setHtml(text + (current.extraData.body.isEmpty() ? current.description : h.process(current.extraData.body.toUtf8()))); ui->packDescription->setHtml(text + (current.extraData.body.isEmpty() ? current.description : h.process(current.extraData.body.toUtf8())));
ui->packDescription->flush();
} }

View File

@ -14,7 +14,7 @@
<item row="1" column="0" colspan="4"> <item row="1" column="0" colspan="4">
<layout class="QGridLayout" name="gridLayout_3"> <layout class="QGridLayout" name="gridLayout_3">
<item row="1" column="2"> <item row="1" column="2">
<widget class="QTextBrowser" name="packDescription"> <widget class="ProjectDescriptionPage" name="packDescription">
<property name="openExternalLinks"> <property name="openExternalLinks">
<bool>true</bool> <bool>true</bool>
</property> </property>
@ -98,6 +98,13 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<customwidgets>
<customwidget>
<class>ProjectDescriptionPage</class>
<extends>QTextBrowser</extends>
<header>ui/widgets/ProjectDescriptionPage.h</header>
</customwidget>
</customwidgets>
<tabstops> <tabstops>
<tabstop>searchEdit</tabstop> <tabstop>searchEdit</tabstop>
<tabstop>searchButton</tabstop> <tabstop>searchButton</tabstop>

View File

@ -43,10 +43,13 @@ AtlUserInteractionSupportImpl::AtlUserInteractionSupportImpl(QWidget *parent) :
{ {
} }
QVector<QString> AtlUserInteractionSupportImpl::chooseOptionalMods(ATLauncher::PackVersion version, QVector<ATLauncher::VersionMod> mods) std::optional<QVector<QString>> AtlUserInteractionSupportImpl::chooseOptionalMods(ATLauncher::PackVersion version, QVector<ATLauncher::VersionMod> mods)
{ {
AtlOptionalModDialog optionalModDialog(m_parent, version, mods); AtlOptionalModDialog optionalModDialog(m_parent, version, mods);
optionalModDialog.exec(); auto result = optionalModDialog.exec();
if (result == QDialog::Rejected) {
return {};
}
return optionalModDialog.getResult(); return optionalModDialog.getResult();
} }

View File

@ -47,7 +47,7 @@ public:
private: private:
QString chooseVersion(Meta::VersionListPtr vlist, QString minecraftVersion) override; QString chooseVersion(Meta::VersionListPtr vlist, QString minecraftVersion) override;
QVector<QString> chooseOptionalMods(ATLauncher::PackVersion version, QVector<ATLauncher::VersionMod> mods) override; std::optional<QVector<QString>> chooseOptionalMods(ATLauncher::PackVersion version, QVector<ATLauncher::VersionMod> mods) override;
void displayMessage(QString message) override; void displayMessage(QString message) override;
private: private:

View File

@ -59,6 +59,8 @@ FlameModPage::FlameModPage(ModDownloadDialog* dialog, BaseInstance* instance)
connect(ui->packView->selectionModel(), &QItemSelectionModel::currentChanged, this, &FlameModPage::onSelectionChanged); connect(ui->packView->selectionModel(), &QItemSelectionModel::currentChanged, this, &FlameModPage::onSelectionChanged);
connect(ui->versionSelectionBox, &QComboBox::currentTextChanged, this, &FlameModPage::onVersionSelectionChanged); connect(ui->versionSelectionBox, &QComboBox::currentTextChanged, this, &FlameModPage::onVersionSelectionChanged);
connect(ui->modSelectionButton, &QPushButton::clicked, this, &FlameModPage::onModSelected); connect(ui->modSelectionButton, &QPushButton::clicked, this, &FlameModPage::onModSelected);
ui->packDescription->setMetaEntry(metaEntryBase());
} }
auto FlameModPage::validateVersion(ModPlatform::IndexedVersion& ver, QString mineVer, ModAPI::ModLoaderTypes loaders) const -> bool auto FlameModPage::validateVersion(ModPlatform::IndexedVersion& ver, QString mineVer, ModAPI::ModLoaderTypes loaders) const -> bool

View File

@ -1,6 +1,7 @@
#include "FlameModel.h" #include "FlameModel.h"
#include <Json.h> #include <Json.h>
#include "Application.h" #include "Application.h"
#include "ui/widgets/ProjectItem.h"
#include <MMCStrings.h> #include <MMCStrings.h>
#include <Version.h> #include <Version.h>
@ -31,9 +32,8 @@ QVariant ListModel::data(const QModelIndex& index, int role) const
} }
IndexedPack pack = modpacks.at(pos); IndexedPack pack = modpacks.at(pos);
if (role == Qt::DisplayRole) { switch (role) {
return pack.name; case Qt::ToolTipRole: {
} else if (role == Qt::ToolTipRole) {
if (pack.description.length() > 100) { if (pack.description.length() > 100) {
// some magic to prevent to long tooltips and replace html linebreaks // some magic to prevent to long tooltips and replace html linebreaks
QString edit = pack.description.left(97); QString edit = pack.description.left(97);
@ -41,19 +41,29 @@ QVariant ListModel::data(const QModelIndex& index, int role) const
return edit; return edit;
} }
return pack.description; return pack.description;
} else if (role == Qt::DecorationRole) { } case Qt::DecorationRole: {
if (m_logoMap.contains(pack.logoName)) { if (m_logoMap.contains(pack.logoName)) {
return (m_logoMap.value(pack.logoName)); return (m_logoMap.value(pack.logoName));
} }
QIcon icon = APPLICATION->getThemedIcon("screenshot-placeholder"); QIcon icon = APPLICATION->getThemedIcon("screenshot-placeholder");
((ListModel*)this)->requestLogo(pack.logoName, pack.logoUrl); ((ListModel*)this)->requestLogo(pack.logoName, pack.logoUrl);
return icon; return icon;
} else if (role == Qt::UserRole) { } case Qt::UserRole: {
QVariant v; QVariant v;
v.setValue(pack); v.setValue(pack);
return v; return v;
} }
case Qt::SizeHintRole:
return QSize(0, 58);
case UserDataTypes::TITLE:
return pack.name;
case UserDataTypes::DESCRIPTION:
return pack.description;
case UserDataTypes::SELECTED:
return false;
default:
break;
}
return QVariant(); return QVariant();
} }

View File

@ -43,6 +43,10 @@
#include "InstanceImportTask.h" #include "InstanceImportTask.h"
#include "Json.h" #include "Json.h"
#include "ui/dialogs/NewInstanceDialog.h" #include "ui/dialogs/NewInstanceDialog.h"
#include "ui/widgets/ProjectItem.h"
#include "modplatform/flame/FlameAPI.h"
static FlameAPI api;
FlamePage::FlamePage(NewInstanceDialog* dialog, QWidget* parent) : QWidget(parent), ui(new Ui::FlamePage), dialog(dialog) FlamePage::FlamePage(NewInstanceDialog* dialog, QWidget* parent) : QWidget(parent), ui(new Ui::FlamePage), dialog(dialog)
{ {
@ -66,6 +70,9 @@ FlamePage::FlamePage(NewInstanceDialog* dialog, QWidget* parent) : QWidget(paren
connect(ui->sortByBox, SIGNAL(currentIndexChanged(int)), this, SLOT(triggerSearch())); connect(ui->sortByBox, SIGNAL(currentIndexChanged(int)), this, SLOT(triggerSearch()));
connect(ui->packView->selectionModel(), &QItemSelectionModel::currentChanged, this, &FlamePage::onSelectionChanged); connect(ui->packView->selectionModel(), &QItemSelectionModel::currentChanged, this, &FlamePage::onSelectionChanged);
connect(ui->versionSelectionBox, &QComboBox::currentTextChanged, this, &FlamePage::onVersionSelectionChanged); connect(ui->versionSelectionBox, &QComboBox::currentTextChanged, this, &FlamePage::onVersionSelectionChanged);
ui->packView->setItemDelegate(new ProjectItemDelegate(this));
ui->packDescription->setMetaEntry("FlamePacks");
} }
FlamePage::~FlamePage() FlamePage::~FlamePage()
@ -250,7 +257,10 @@ void FlamePage::updateUi()
text += "- " + tr("Source code: <a href=%1>%1</a>").arg(current.extra.sourceUrl) + "<br>"; text += "- " + tr("Source code: <a href=%1>%1</a>").arg(current.extra.sourceUrl) + "<br>";
} }
text += "<hr>"; text += "<hr>";
text += api.getModDescription(current.addonId).toUtf8();
ui->packDescription->setHtml(text + current.description); ui->packDescription->setHtml(text + current.description);
ui->packDescription->flush();
} }

View File

@ -66,7 +66,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QTextBrowser" name="packDescription"> <widget class="ProjectDescriptionPage" name="packDescription">
<property name="openExternalLinks"> <property name="openExternalLinks">
<bool>true</bool> <bool>true</bool>
</property> </property>
@ -99,6 +99,13 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<customwidgets>
<customwidget>
<class>ProjectDescriptionPage</class>
<extends>QTextBrowser</extends>
<header>ui/widgets/ProjectDescriptionPage.h</header>
</customwidget>
</customwidgets>
<tabstops> <tabstops>
<tabstop>packView</tabstop> <tabstop>packView</tabstop>
<tabstop>packDescription</tabstop> <tabstop>packDescription</tabstop>

View File

@ -103,6 +103,8 @@ void ListModel::getLogo(const QString &logo, const QString &logoUrl, LogoCallbac
void ListModel::request() void ListModel::request()
{ {
m_aborted = false;
beginResetModel(); beginResetModel();
modpacks.clear(); modpacks.clear();
endResetModel(); endResetModel();
@ -117,6 +119,12 @@ void ListModel::request()
QObject::connect(netJob, &NetJob::failed, this, &ListModel::requestFailed); QObject::connect(netJob, &NetJob::failed, this, &ListModel::requestFailed);
} }
void ListModel::abortRequest()
{
m_aborted = jobPtr->abort();
jobPtr.reset();
}
void ListModel::requestFinished() void ListModel::requestFinished()
{ {
jobPtr.reset(); jobPtr.reset();
@ -162,6 +170,9 @@ void ListModel::requestPack()
void ListModel::packRequestFinished() void ListModel::packRequestFinished()
{ {
if (!jobPtr || m_aborted)
return;
jobPtr.reset(); jobPtr.reset();
remainingPacks.removeOne(currentPack); remainingPacks.removeOne(currentPack);

View File

@ -47,9 +47,13 @@ public:
QVariant data(const QModelIndex &index, int role) const override; QVariant data(const QModelIndex &index, int role) const override;
void request(); void request();
void abortRequest();
void getLogo(const QString &logo, const QString &logoUrl, LogoCallback callback); void getLogo(const QString &logo, const QString &logoUrl, LogoCallback callback);
[[nodiscard]] bool isMakingRequest() const { return jobPtr.get(); }
[[nodiscard]] bool wasAborted() const { return m_aborted; }
private slots: private slots:
void requestFinished(); void requestFinished();
void requestFailed(QString reason); void requestFailed(QString reason);
@ -65,6 +69,8 @@ private:
void requestLogo(QString file, QString url); void requestLogo(QString file, QString url);
private: private:
bool m_aborted = false;
QList<ModpacksCH::Modpack> modpacks; QList<ModpacksCH::Modpack> modpacks;
LogoMap m_logoMap; LogoMap m_logoMap;

View File

@ -73,6 +73,8 @@ FtbPage::FtbPage(NewInstanceDialog* dialog, QWidget *parent)
connect(ui->sortByBox, &QComboBox::currentTextChanged, this, &FtbPage::onSortingSelectionChanged); connect(ui->sortByBox, &QComboBox::currentTextChanged, this, &FtbPage::onSortingSelectionChanged);
connect(ui->packView->selectionModel(), &QItemSelectionModel::currentChanged, this, &FtbPage::onSelectionChanged); connect(ui->packView->selectionModel(), &QItemSelectionModel::currentChanged, this, &FtbPage::onSelectionChanged);
connect(ui->versionSelectionBox, &QComboBox::currentTextChanged, this, &FtbPage::onVersionSelectionChanged); connect(ui->versionSelectionBox, &QComboBox::currentTextChanged, this, &FtbPage::onVersionSelectionChanged);
ui->packDescription->setMetaEntry("FTBPacks");
} }
FtbPage::~FtbPage() FtbPage::~FtbPage()
@ -105,7 +107,7 @@ void FtbPage::retranslate()
void FtbPage::openedImpl() void FtbPage::openedImpl()
{ {
if(!initialised) if(!initialised || listModel->wasAborted())
{ {
listModel->request(); listModel->request();
initialised = true; initialised = true;
@ -114,6 +116,12 @@ void FtbPage::openedImpl()
suggestCurrent(); suggestCurrent();
} }
void FtbPage::closedImpl()
{
if (listModel->isMakingRequest())
listModel->abortRequest();
}
void FtbPage::suggestCurrent() void FtbPage::suggestCurrent()
{ {
if(!isOpened) if(!isOpened)

View File

@ -78,6 +78,7 @@ public:
void retranslate() override; void retranslate() override;
void openedImpl() override; void openedImpl() override;
void closedImpl() override;
bool eventFilter(QObject * watched, QEvent * event) override; bool eventFilter(QObject * watched, QEvent * event) override;

Some files were not shown because too many files have changed in this diff Show More