diff options
Diffstat (limited to 'application')
739 files changed, 0 insertions, 55895 deletions
diff --git a/application/CMakeLists.txt b/application/CMakeLists.txt deleted file mode 100644 index ab2b9960..00000000 --- a/application/CMakeLists.txt +++ /dev/null @@ -1,417 +0,0 @@ -project(application) - -################################ FILES ################################ - -######## Sources and headers ######## -SET(MULTIMC_SOURCES - # Application base - main.cpp - MultiMC.h - MultiMC.cpp - UpdateController.cpp - UpdateController.h - - # GUI - general utilities - GuiUtil.h - GuiUtil.cpp - ColumnResizer.h - ColumnResizer.cpp - InstanceProxyModel.h - InstanceProxyModel.cpp - VersionProxyModel.h - VersionProxyModel.cpp - ColorCache.h - ColorCache.cpp - HoeDown.h - - # Super secret! - KonamiCode.h - KonamiCode.cpp - - # GUI - windows - MainWindow.h - MainWindow.cpp - InstanceWindow.h - InstanceWindow.cpp - - # GUI - setup wizard - setupwizard/SetupWizard.h - setupwizard/SetupWizard.cpp - setupwizard/AnalyticsWizardPage.cpp - setupwizard/AnalyticsWizardPage.h - setupwizard/BaseWizardPage.h - setupwizard/JavaWizardPage.cpp - setupwizard/JavaWizardPage.h - setupwizard/LanguageWizardPage.cpp - setupwizard/LanguageWizardPage.h - - # GUI - themes - themes/FusionTheme.cpp - themes/FusionTheme.h - themes/BrightTheme.cpp - themes/BrightTheme.h - themes/CustomTheme.cpp - themes/CustomTheme.h - themes/DarkTheme.cpp - themes/DarkTheme.h - themes/ITheme.cpp - themes/ITheme.h - themes/SystemTheme.cpp - themes/SystemTheme.h - - # Processes - LaunchController.h - LaunchController.cpp - - # page provider for instances - InstancePageProvider.h - - # Common java checking UI - JavaCommon.h - JavaCommon.cpp - - # GUI - paged dialog base - pages/BasePage.h - pages/BasePageContainer.h - pages/BasePageProvider.h - - # GUI - instance pages - pages/instance/GameOptionsPage.cpp - pages/instance/GameOptionsPage.h - pages/instance/VersionPage.cpp - pages/instance/VersionPage.h - pages/instance/TexturePackPage.h - pages/instance/ResourcePackPage.h - pages/instance/ModFolderPage.cpp - pages/instance/ModFolderPage.h - pages/instance/NotesPage.cpp - pages/instance/NotesPage.h - pages/instance/LogPage.cpp - pages/instance/LogPage.h - pages/instance/InstanceSettingsPage.cpp - pages/instance/InstanceSettingsPage.h - pages/instance/ScreenshotsPage.cpp - pages/instance/ScreenshotsPage.h - pages/instance/OtherLogsPage.cpp - pages/instance/OtherLogsPage.h - pages/instance/ServersPage.cpp - pages/instance/ServersPage.h - pages/instance/LegacyUpgradePage.cpp - pages/instance/LegacyUpgradePage.h - pages/instance/WorldListPage.cpp - pages/instance/WorldListPage.h - - # GUI - global settings pages - pages/global/AccountListPage.cpp - pages/global/AccountListPage.h - pages/global/CustomCommandsPage.cpp - pages/global/CustomCommandsPage.h - pages/global/ExternalToolsPage.cpp - pages/global/ExternalToolsPage.h - pages/global/JavaPage.cpp - pages/global/JavaPage.h - pages/global/LanguagePage.cpp - pages/global/LanguagePage.h - pages/global/MinecraftPage.cpp - pages/global/MinecraftPage.h - pages/global/MultiMCPage.cpp - pages/global/MultiMCPage.h - pages/global/ProxyPage.cpp - pages/global/ProxyPage.h - pages/global/PasteEEPage.cpp - pages/global/PasteEEPage.h - - # GUI - platform pages - pages/modplatform/VanillaPage.cpp - pages/modplatform/VanillaPage.h - - pages/modplatform/atlauncher/AtlFilterModel.cpp - pages/modplatform/atlauncher/AtlFilterModel.h - pages/modplatform/atlauncher/AtlListModel.cpp - pages/modplatform/atlauncher/AtlListModel.h - pages/modplatform/atlauncher/AtlOptionalModDialog.cpp - pages/modplatform/atlauncher/AtlOptionalModDialog.h - pages/modplatform/atlauncher/AtlPage.cpp - pages/modplatform/atlauncher/AtlPage.h - - pages/modplatform/ftb/FtbFilterModel.cpp - pages/modplatform/ftb/FtbFilterModel.h - pages/modplatform/ftb/FtbListModel.cpp - pages/modplatform/ftb/FtbListModel.h - pages/modplatform/ftb/FtbPage.cpp - pages/modplatform/ftb/FtbPage.h - - pages/modplatform/legacy_ftb/Page.cpp - pages/modplatform/legacy_ftb/Page.h - pages/modplatform/legacy_ftb/ListModel.h - pages/modplatform/legacy_ftb/ListModel.cpp - - pages/modplatform/flame/FlameModel.cpp - pages/modplatform/flame/FlameModel.h - pages/modplatform/flame/FlamePage.cpp - pages/modplatform/flame/FlamePage.h - - pages/modplatform/technic/TechnicModel.cpp - pages/modplatform/technic/TechnicModel.h - pages/modplatform/technic/TechnicPage.cpp - pages/modplatform/technic/TechnicPage.h - - pages/modplatform/ImportPage.cpp - pages/modplatform/ImportPage.h - - # GUI - dialogs - dialogs/AboutDialog.cpp - dialogs/AboutDialog.h - dialogs/ProfileSelectDialog.cpp - dialogs/ProfileSelectDialog.h - dialogs/CopyInstanceDialog.cpp - dialogs/CopyInstanceDialog.h - dialogs/CustomMessageBox.cpp - dialogs/CustomMessageBox.h - dialogs/EditAccountDialog.cpp - dialogs/EditAccountDialog.h - dialogs/ExportInstanceDialog.cpp - dialogs/ExportInstanceDialog.h - dialogs/IconPickerDialog.cpp - dialogs/IconPickerDialog.h - dialogs/LoginDialog.cpp - dialogs/LoginDialog.h - dialogs/NewComponentDialog.cpp - dialogs/NewComponentDialog.h - dialogs/NewInstanceDialog.cpp - dialogs/NewInstanceDialog.h - dialogs/NotificationDialog.cpp - dialogs/NotificationDialog.h - pagedialog/PageDialog.cpp - pagedialog/PageDialog.h - dialogs/ProgressDialog.cpp - dialogs/ProgressDialog.h - dialogs/UpdateDialog.cpp - dialogs/UpdateDialog.h - dialogs/VersionSelectDialog.cpp - dialogs/VersionSelectDialog.h - dialogs/SkinUploadDialog.cpp - dialogs/SkinUploadDialog.h - - - # GUI - widgets - widgets/Common.cpp - widgets/Common.h - widgets/CustomCommands.cpp - widgets/CustomCommands.h - widgets/DropLabel.cpp - widgets/DropLabel.h - widgets/FocusLineEdit.cpp - widgets/FocusLineEdit.h - widgets/IconLabel.cpp - widgets/IconLabel.h - widgets/JavaSettingsWidget.cpp - widgets/JavaSettingsWidget.h - widgets/LabeledToolButton.cpp - widgets/LabeledToolButton.h - widgets/LanguageSelectionWidget.cpp - widgets/LanguageSelectionWidget.h - widgets/LineSeparator.cpp - widgets/LineSeparator.h - widgets/LogView.cpp - widgets/LogView.h - widgets/MCModInfoFrame.cpp - widgets/MCModInfoFrame.h - widgets/ModListView.cpp - widgets/ModListView.h - widgets/PageContainer.cpp - widgets/PageContainer.h - widgets/PageContainer_p.h - widgets/ServerStatus.cpp - widgets/ServerStatus.h - widgets/VersionListView.cpp - widgets/VersionListView.h - widgets/VersionSelectWidget.cpp - widgets/VersionSelectWidget.h - widgets/ProgressWidget.h - widgets/ProgressWidget.cpp - widgets/WideBar.h - widgets/WideBar.cpp - - # GUI - instance group view - groupview/GroupedProxyModel.cpp - groupview/GroupedProxyModel.h - groupview/AccessibleGroupView.cpp - groupview/AccessibleGroupView.h - groupview/AccessibleGroupView_p.h - groupview/GroupView.cpp - groupview/GroupView.h - groupview/InstanceDelegate.cpp - groupview/InstanceDelegate.h - groupview/VisualGroup.cpp - groupview/VisualGroup.h - ) - -######## UIs ######## -SET(MULTIMC_UIS - # Instance pages - pages/instance/GameOptionsPage.ui - pages/instance/VersionPage.ui - pages/instance/ModFolderPage.ui - pages/instance/LogPage.ui - pages/instance/InstanceSettingsPage.ui - pages/instance/NotesPage.ui - pages/instance/ScreenshotsPage.ui - pages/instance/OtherLogsPage.ui - pages/instance/LegacyUpgradePage.ui - pages/instance/ServersPage.ui - pages/instance/WorldListPage.ui - - # Global settings pages - pages/global/AccountListPage.ui - pages/global/ExternalToolsPage.ui - pages/global/JavaPage.ui - pages/global/MinecraftPage.ui - pages/global/MultiMCPage.ui - pages/global/ProxyPage.ui - pages/global/PasteEEPage.ui - - # Platform pages - pages/modplatform/VanillaPage.ui - pages/modplatform/atlauncher/AtlPage.ui - pages/modplatform/ftb/FtbPage.ui - pages/modplatform/legacy_ftb/Page.ui - pages/modplatform/flame/FlamePage.ui - pages/modplatform/technic/TechnicPage.ui - pages/modplatform/ImportPage.ui - - # Platform Dialogs - pages/modplatform/atlauncher/AtlOptionalModDialog.ui - - # Dialogs - dialogs/CopyInstanceDialog.ui - dialogs/NewComponentDialog.ui - dialogs/NewInstanceDialog.ui - dialogs/AboutDialog.ui - dialogs/ProgressDialog.ui - dialogs/IconPickerDialog.ui - dialogs/ProfileSelectDialog.ui - dialogs/EditAccountDialog.ui - dialogs/ExportInstanceDialog.ui - dialogs/LoginDialog.ui - dialogs/UpdateDialog.ui - dialogs/NotificationDialog.ui - dialogs/SkinUploadDialog.ui - - # Widgets/other - widgets/CustomCommands.ui - widgets/MCModInfoFrame.ui -) - -set(MULTIMC_QRCS - resources/backgrounds/backgrounds.qrc - resources/multimc/multimc.qrc - resources/pe_dark/pe_dark.qrc - resources/pe_light/pe_light.qrc - resources/pe_colored/pe_colored.qrc - resources/pe_blue/pe_blue.qrc - resources/OSX/OSX.qrc - resources/iOS/iOS.qrc - resources/flat/flat.qrc - resources/documents/documents.qrc -) - -######## Windows resource files ######## -if(WIN32) - set(MULTIMC_RCS resources/multimc.rc) -endif() - -# Qt 5 stuff -qt5_wrap_ui(MULTIMC_UI ${MULTIMC_UIS}) -qt5_add_resources(MULTIMC_RESOURCES ${MULTIMC_QRCS}) - -# Add executable -add_executable(MultiMC MACOSX_BUNDLE WIN32 ${MULTIMC_SOURCES} ${MULTIMC_UI} ${MULTIMC_RESOURCES} ${MULTIMC_RCS}) -target_link_libraries(MultiMC MultiMC_gui ${QUAZIP_LIBRARIES} hoedown MultiMC_rainbow LocalPeer ganalytics) -if(DEFINED MultiMC_APP_BINARY_NAME) - set_target_properties(MultiMC PROPERTIES OUTPUT_NAME "${MultiMC_APP_BINARY_NAME}") -endif() -if(DEFINED MultiMC_BINARY_RPATH) - SET_TARGET_PROPERTIES(MultiMC PROPERTIES INSTALL_RPATH "${MultiMC_BINARY_RPATH}") -endif() -if(DEFINED MultiMC_APP_BINARY_DEFS) - target_compile_definitions(MultiMC PRIVATE ${MultiMC_APP_BINARY_DEFS}) -endif() - -install(TARGETS MultiMC - BUNDLE DESTINATION ${BUNDLE_DEST_DIR} COMPONENT Runtime - LIBRARY DESTINATION ${LIBRARY_DEST_DIR} COMPONENT Runtime - RUNTIME DESTINATION ${BINARY_DEST_DIR} COMPONENT Runtime -) - -#### The MultiMC bundle mess! #### -# Bundle utilities are used to complete the portable packages - they add all the libraries that would otherwise be missing on the target system. -# NOTE: it seems that this absolutely has to be here, and nowhere else. -if(INSTALL_BUNDLE STREQUAL "full") - # Add qt.conf - this makes Qt stop looking for things outside the bundle - install( - CODE "file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${RESOURCES_DEST_DIR}/qt.conf\" \" \")" - COMPONENT Runtime - ) - # Bundle plugins - if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") - # Image formats - install( - DIRECTORY "${QT_PLUGINS_DIR}/imageformats" - DESTINATION ${PLUGIN_DEST_DIR} - COMPONENT Runtime - REGEX "tga|tiff|mng|webp" EXCLUDE - ) - # Icon engines - install( - DIRECTORY "${QT_PLUGINS_DIR}/iconengines" - DESTINATION ${PLUGIN_DEST_DIR} - COMPONENT Runtime - REGEX "fontawesome" EXCLUDE - ) - # Platform plugins - install( - DIRECTORY "${QT_PLUGINS_DIR}/platforms" - DESTINATION ${PLUGIN_DEST_DIR} - COMPONENT Runtime - REGEX "minimal|linuxfb|offscreen" EXCLUDE - ) - else() - # Image formats - install( - DIRECTORY "${QT_PLUGINS_DIR}/imageformats" - DESTINATION ${PLUGIN_DEST_DIR} - COMPONENT Runtime - REGEX "tga|tiff|mng|webp" EXCLUDE - REGEX "d\\." EXCLUDE - REGEX "_debug\\." EXCLUDE - REGEX "\\.dSYM" EXCLUDE - ) - # Icon engines - install( - DIRECTORY "${QT_PLUGINS_DIR}/iconengines" - DESTINATION ${PLUGIN_DEST_DIR} - COMPONENT Runtime - REGEX "fontawesome" EXCLUDE - REGEX "d\\." EXCLUDE - REGEX "_debug\\." EXCLUDE - REGEX "\\.dSYM" EXCLUDE - ) - # Platform plugins - install( - DIRECTORY "${QT_PLUGINS_DIR}/platforms" - DESTINATION ${PLUGIN_DEST_DIR} - COMPONENT Runtime - REGEX "minimal|linuxfb|offscreen" EXCLUDE - REGEX "d\\." EXCLUDE - REGEX "_debug\\." EXCLUDE - REGEX "\\.dSYM" EXCLUDE - ) - endif() - configure_file( - "${CMAKE_CURRENT_SOURCE_DIR}/install_prereqs.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/install_prereqs.cmake" - @ONLY - ) - install(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/install_prereqs.cmake" COMPONENT Runtime) -endif() diff --git a/application/ColorCache.cpp b/application/ColorCache.cpp deleted file mode 100644 index ef268dd2..00000000 --- a/application/ColorCache.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include "ColorCache.h" - - -/** - * Blend the color with the front color, adapting to the back color - */ -QColor ColorCache::blend(QColor color) -{ - if (Rainbow::luma(m_front) > Rainbow::luma(m_back)) - { - // for dark color schemes, produce a fitting color first - color = Rainbow::tint(m_front, color, 0.5); - } - // adapt contrast - return Rainbow::mix(m_front, color, m_bias); -} - -/** - * Blend the color with the back color - */ -QColor ColorCache::blendBackground(QColor color) -{ - // adapt contrast - return Rainbow::mix(m_back, color, m_bias); -} - -void ColorCache::recolorAll() -{ - auto iter = m_colors.begin(); - while(iter != m_colors.end()) - { - iter->front = blend(iter->original); - iter->back = blendBackground(iter->original); - } -} diff --git a/application/ColorCache.h b/application/ColorCache.h deleted file mode 100644 index 6ae633b9..00000000 --- a/application/ColorCache.h +++ /dev/null @@ -1,119 +0,0 @@ -#pragma once -#include <QtGui/QColor> -#include <rainbow.h> -#include <MessageLevel.h> -#include <QMap> - -class ColorCache -{ -public: - ColorCache(QColor front, QColor back, qreal bias) - { - m_front = front; - m_back = back; - m_bias = bias; - }; - - void addColor(int key, QColor color) - { - m_colors[key] = {color, blend(color), blendBackground(color)}; - } - - void setForeground(QColor front) - { - if(m_front != front) - { - m_front = front; - recolorAll(); - } - } - - void setBackground(QColor back) - { - if(m_back != back) - { - m_back = back; - recolorAll(); - } - } - - QColor getFront(int key) - { - auto iter = m_colors.find(key); - if(iter == m_colors.end()) - { - return QColor(); - } - return (*iter).front; - } - - QColor getBack(int key) - { - auto iter = m_colors.find(key); - if(iter == m_colors.end()) - { - return QColor(); - } - return (*iter).back; - } - - /** - * Blend the color with the front color, adapting to the back color - */ - QColor blend(QColor color); - - /** - * Blend the color with the back color - */ - QColor blendBackground(QColor color); - -protected: - void recolorAll(); - -protected: - struct ColorEntry - { - QColor original; - QColor front; - QColor back; - }; - -protected: - qreal m_bias; - QColor m_front; - QColor m_back; - QMap<int, ColorEntry> m_colors; -}; - -class LogColorCache : public ColorCache -{ -public: - LogColorCache(QColor front, QColor back) - : ColorCache(front, back, 1.0) - { - addColor((int)MessageLevel::MultiMC, QColor("purple")); - addColor((int)MessageLevel::Debug, QColor("green")); - addColor((int)MessageLevel::Warning, QColor("orange")); - addColor((int)MessageLevel::Error, QColor("red")); - addColor((int)MessageLevel::Fatal, QColor("red")); - addColor((int)MessageLevel::Message, front); - } - - QColor getFront(MessageLevel::Enum level) - { - if(!m_colors.contains((int) level)) - { - return ColorCache::getFront((int)MessageLevel::Message); - } - return ColorCache::getFront((int)level); - } - - QColor getBack(MessageLevel::Enum level) - { - if(level == MessageLevel::Fatal) - { - return QColor(Qt::black); - } - return QColor(Qt::transparent); - } -}; diff --git a/application/ColumnResizer.cpp b/application/ColumnResizer.cpp deleted file mode 100644 index fe415067..00000000 --- a/application/ColumnResizer.cpp +++ /dev/null @@ -1,199 +0,0 @@ -/* -* Copyright 2011 Aurélien Gâteau <agateau@kde.org> -* License: BSD-3-Clause -*/ -#include <ColumnResizer.h> - -#include <QDebug> -#include <QEvent> -#include <QFormLayout> -#include <QGridLayout> -#include <QTimer> -#include <QWidget> - -class FormLayoutWidgetItem : public QWidgetItem -{ -public: - FormLayoutWidgetItem(QWidget* widget, QFormLayout* formLayout, QFormLayout::ItemRole itemRole) - : QWidgetItem(widget) - , m_width(-1) - , m_formLayout(formLayout) - , m_itemRole(itemRole) - {} - - QSize sizeHint() const - { - QSize size = QWidgetItem::sizeHint(); - if (m_width != -1) { - size.setWidth(m_width); - } - return size; - } - - QSize minimumSize() const - { - QSize size = QWidgetItem::minimumSize(); - if (m_width != -1) { - size.setWidth(m_width); - } - return size; - } - - QSize maximumSize() const - { - QSize size = QWidgetItem::maximumSize(); - if (m_width != -1) { - size.setWidth(m_width); - } - return size; - } - - void setWidth(int width) - { - if (width != m_width) { - m_width = width; - invalidate(); - } - } - - void setGeometry(const QRect& _rect) - { - QRect rect = _rect; - int width = widget()->sizeHint().width(); - if (m_itemRole == QFormLayout::LabelRole && m_formLayout->labelAlignment() & Qt::AlignRight) { - rect.setLeft(rect.right() - width); - } - QWidgetItem::setGeometry(rect); - } - - QFormLayout* formLayout() const - { - return m_formLayout; - } - -private: - int m_width; - QFormLayout* m_formLayout; - QFormLayout::ItemRole m_itemRole; -}; - -typedef QPair<QGridLayout*, int> GridColumnInfo; - -class ColumnResizerPrivate -{ -public: - ColumnResizerPrivate(ColumnResizer* q_ptr) - : q(q_ptr) - , m_updateTimer(new QTimer(q)) - { - m_updateTimer->setSingleShot(true); - m_updateTimer->setInterval(0); - QObject::connect(m_updateTimer, SIGNAL(timeout()), q, SLOT(updateWidth())); - } - - void scheduleWidthUpdate() - { - m_updateTimer->start(); - } - - ColumnResizer* q; - QTimer* m_updateTimer; - QList<QWidget*> m_widgets; - QList<FormLayoutWidgetItem*> m_wrWidgetItemList; - QList<GridColumnInfo> m_gridColumnInfoList; -}; - -ColumnResizer::ColumnResizer(QObject* parent) -: QObject(parent) -, d(new ColumnResizerPrivate(this)) -{} - -ColumnResizer::~ColumnResizer() -{ - delete d; -} - -void ColumnResizer::addWidget(QWidget* widget) -{ - d->m_widgets.append(widget); - widget->installEventFilter(this); - d->scheduleWidthUpdate(); -} - -void ColumnResizer::updateWidth() -{ - int width = 0; - Q_FOREACH(QWidget* widget, d->m_widgets) { - width = qMax(widget->sizeHint().width(), width); - } - Q_FOREACH(FormLayoutWidgetItem* item, d->m_wrWidgetItemList) { - item->setWidth(width); - item->formLayout()->update(); - } - Q_FOREACH(GridColumnInfo info, d->m_gridColumnInfoList) { - info.first->setColumnMinimumWidth(info.second, width); - } -} - -bool ColumnResizer::eventFilter(QObject*, QEvent* event) -{ - if (event->type() == QEvent::Resize) { - d->scheduleWidthUpdate(); - } - return false; -} - -void ColumnResizer::addWidgetsFromLayout(QLayout* layout, int column) -{ - Q_ASSERT(column >= 0); - QGridLayout* gridLayout = qobject_cast<QGridLayout*>(layout); - QFormLayout* formLayout = qobject_cast<QFormLayout*>(layout); - if (gridLayout) { - addWidgetsFromGridLayout(gridLayout, column); - } else if (formLayout) { - if (column > QFormLayout::SpanningRole) { - qCritical() << "column should not be more than" << QFormLayout::SpanningRole << "for QFormLayout"; - return; - } - QFormLayout::ItemRole role = static_cast<QFormLayout::ItemRole>(column); - addWidgetsFromFormLayout(formLayout, role); - } else { - qCritical() << "Don't know how to handle layout" << layout; - } -} - -void ColumnResizer::addWidgetsFromGridLayout(QGridLayout* layout, int column) -{ - for (int row = 0; row < layout->rowCount(); ++row) { - QLayoutItem* item = layout->itemAtPosition(row, column); - if (!item) { - continue; - } - QWidget* widget = item->widget(); - if (!widget) { - continue; - } - addWidget(widget); - } - d->m_gridColumnInfoList << GridColumnInfo(layout, column); -} - -void ColumnResizer::addWidgetsFromFormLayout(QFormLayout* layout, QFormLayout::ItemRole role) -{ - for (int row = 0; row < layout->rowCount(); ++row) { - QLayoutItem* item = layout->itemAt(row, role); - if (!item) { - continue; - } - QWidget* widget = item->widget(); - if (!widget) { - continue; - } - layout->removeItem(item); - delete item; - FormLayoutWidgetItem* newItem = new FormLayoutWidgetItem(widget, layout, role); - layout->setItem(row, role, newItem); - addWidget(widget); - d->m_wrWidgetItemList << newItem; - } -} diff --git a/application/ColumnResizer.h b/application/ColumnResizer.h deleted file mode 100644 index 8c920f01..00000000 --- a/application/ColumnResizer.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -* Copyright 2011 Aurélien Gâteau <agateau@kde.org> -* License: BSD-3-Clause -*/ -#ifndef COLUMNRESIZER_H -#define COLUMNRESIZER_H - -#include <QFormLayout> - -#include <QtCore/QObject> -#include <QtCore/QList> - -class QEvent; -class QGridLayout; -class QLayout; -class QWidget; - -class ColumnResizerPrivate; -class ColumnResizer : public QObject -{ - Q_OBJECT -public: - ColumnResizer(QObject* parent = 0); - ~ColumnResizer(); - - void addWidget(QWidget* widget); - void addWidgetsFromLayout(QLayout*, int column); - void addWidgetsFromGridLayout(QGridLayout*, int column); - void addWidgetsFromFormLayout(QFormLayout*, QFormLayout::ItemRole role); - -private Q_SLOTS: - void updateWidth(); - -protected: - bool eventFilter(QObject*, QEvent* event); - -private: - ColumnResizerPrivate* const d; -}; - -#endif /* COLUMNRESIZER_H */ diff --git a/application/GuiUtil.cpp b/application/GuiUtil.cpp deleted file mode 100644 index 302206f5..00000000 --- a/application/GuiUtil.cpp +++ /dev/null @@ -1,131 +0,0 @@ -#include "GuiUtil.h" - -#include <QClipboard> -#include <QApplication> -#include <QFileDialog> - -#include "dialogs/ProgressDialog.h" -#include "net/PasteUpload.h" -#include "dialogs/CustomMessageBox.h" - -#include "MultiMC.h" -#include <settings/SettingsObject.h> -#include <DesktopServices.h> -#include <BuildConfig.h> - -QString GuiUtil::uploadPaste(const QString &text, QWidget *parentWidget) -{ - ProgressDialog dialog(parentWidget); - auto APIKeySetting = MMC->settings()->get("PasteEEAPIKey").toString(); - if(APIKeySetting == "multimc") - { - APIKeySetting = BuildConfig.PASTE_EE_KEY; - } - std::unique_ptr<PasteUpload> paste(new PasteUpload(parentWidget, text, APIKeySetting)); - - if (!paste->validateText()) - { - CustomMessageBox::selectable( - parentWidget, QObject::tr("Upload failed"), - QObject::tr("The log file is too big. You'll have to upload it manually."), - QMessageBox::Warning)->exec(); - return QString(); - } - - dialog.execWithTask(paste.get()); - if (!paste->wasSuccessful()) - { - CustomMessageBox::selectable(parentWidget, QObject::tr("Upload failed"), - paste->failReason(), QMessageBox::Critical)->exec(); - return QString(); - } - else - { - const QString link = paste->pasteLink(); - setClipboardText(link); - CustomMessageBox::selectable( - parentWidget, QObject::tr("Upload finished"), - QObject::tr("The <a href=\"%1\">link to the uploaded log</a> has been placed in your clipboard.").arg(link), - QMessageBox::Information)->exec(); - return link; - } -} - -void GuiUtil::setClipboardText(const QString &text) -{ - QApplication::clipboard()->setText(text); -} - -static QStringList BrowseForFileInternal(QString context, QString caption, QString filter, QString defaultPath, QWidget *parentWidget, bool single) -{ - static QMap<QString, QString> savedPaths; - - QFileDialog w(parentWidget, caption); - QSet<QString> locations; - auto f = [&](QStandardPaths::StandardLocation l) - { - QString location = QStandardPaths::writableLocation(l); - QFileInfo finfo(location); - if (!finfo.exists()) - return; - locations.insert(location); - }; - f(QStandardPaths::DesktopLocation); - f(QStandardPaths::DocumentsLocation); - f(QStandardPaths::DownloadLocation); - f(QStandardPaths::HomeLocation); - QList<QUrl> urls; - for (auto location : locations) - { - urls.append(QUrl::fromLocalFile(location)); - } - urls.append(QUrl::fromLocalFile(defaultPath)); - - w.setFileMode(single ? QFileDialog::ExistingFile : QFileDialog::ExistingFiles); - w.setAcceptMode(QFileDialog::AcceptOpen); - w.setNameFilter(filter); - - QString pathToOpen; - if(savedPaths.contains(context)) - { - pathToOpen = savedPaths[context]; - } - else - { - pathToOpen = defaultPath; - } - if(!pathToOpen.isEmpty()) - { - QFileInfo finfo(pathToOpen); - if(finfo.exists() && finfo.isDir()) - { - w.setDirectory(finfo.absoluteFilePath()); - } - } - - w.setSidebarUrls(urls); - - if (w.exec()) - { - savedPaths[context] = w.directory().absolutePath(); - return w.selectedFiles(); - } - savedPaths[context] = w.directory().absolutePath(); - return {}; -} - -QString GuiUtil::BrowseForFile(QString context, QString caption, QString filter, QString defaultPath, QWidget *parentWidget) -{ - auto resultList = BrowseForFileInternal(context, caption, filter, defaultPath, parentWidget, true); - if(resultList.size()) - { - return resultList[0]; - } - return QString(); -} - - -QStringList GuiUtil::BrowseForFiles(QString context, QString caption, QString filter, QString defaultPath, QWidget *parentWidget) -{ - return BrowseForFileInternal(context, caption, filter, defaultPath, parentWidget, false); -} diff --git a/application/GuiUtil.h b/application/GuiUtil.h deleted file mode 100644 index 5e109383..00000000 --- a/application/GuiUtil.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#include <QWidget> - -namespace GuiUtil -{ -QString uploadPaste(const QString &text, QWidget *parentWidget); -void setClipboardText(const QString &text); -QStringList BrowseForFiles(QString context, QString caption, QString filter, QString defaultPath, QWidget *parentWidget); -QString BrowseForFile(QString context, QString caption, QString filter, QString defaultPath, QWidget *parentWidget); -} diff --git a/application/HoeDown.h b/application/HoeDown.h deleted file mode 100644 index b9e06ffb..00000000 --- a/application/HoeDown.h +++ /dev/null @@ -1,76 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once -#include <hoedown/html.h> -#include <hoedown/document.h> -#include <QString> -#include <QByteArray> - -/** - * hoedown wrapper, because dealing with resource lifetime in C is stupid - */ -class HoeDown -{ -public: - class buffer - { - public: - buffer(size_t unit = 4096) - { - buf = hoedown_buffer_new(unit); - } - ~buffer() - { - hoedown_buffer_free(buf); - } - const char * cstr() - { - return hoedown_buffer_cstr(buf); - } - void put(QByteArray input) - { - hoedown_buffer_put(buf, (uint8_t *) input.data(), input.size()); - } - const uint8_t * data() const - { - return buf->data; - } - size_t size() const - { - return buf->size; - } - hoedown_buffer * buf; - } ib, ob; - HoeDown() - { - renderer = hoedown_html_renderer_new((hoedown_html_flags) 0,0); - document = hoedown_document_new(renderer, (hoedown_extensions) 0, 8); - } - ~HoeDown() - { - hoedown_document_free(document); - hoedown_html_renderer_free(renderer); - } - QString process(QByteArray input) - { - ib.put(input); - hoedown_document_render(document, ob.buf, ib.data(), ib.size()); - return ob.cstr(); - } -private: - hoedown_document * document; - hoedown_renderer * renderer; -}; diff --git a/application/InstancePageProvider.h b/application/InstancePageProvider.h deleted file mode 100644 index 3cb723c4..00000000 --- a/application/InstancePageProvider.h +++ /dev/null @@ -1,76 +0,0 @@ -#pragma once -#include "minecraft/MinecraftInstance.h" -#include "minecraft/legacy/LegacyInstance.h" -#include <FileSystem.h> -#include "pages/BasePage.h" -#include "pages/BasePageProvider.h" -#include "pages/instance/LogPage.h" -#include "pages/instance/VersionPage.h" -#include "pages/instance/ModFolderPage.h" -#include "pages/instance/ResourcePackPage.h" -#include "pages/instance/TexturePackPage.h" -#include "pages/instance/NotesPage.h" -#include "pages/instance/ScreenshotsPage.h" -#include "pages/instance/InstanceSettingsPage.h" -#include "pages/instance/OtherLogsPage.h" -#include "pages/instance/LegacyUpgradePage.h" -#include "pages/instance/WorldListPage.h" -#include "pages/instance/ServersPage.h" -#include "pages/instance/GameOptionsPage.h" - -#include "Env.h" - -class InstancePageProvider : public QObject, public BasePageProvider -{ - Q_OBJECT -public: - explicit InstancePageProvider(InstancePtr parent) - { - inst = parent; - } - - virtual ~InstancePageProvider() {}; - virtual QList<BasePage *> getPages() override - { - QList<BasePage *> values; - values.append(new LogPage(inst)); - std::shared_ptr<MinecraftInstance> onesix = std::dynamic_pointer_cast<MinecraftInstance>(inst); - if(onesix) - { - values.append(new VersionPage(onesix.get())); - auto modsPage = new ModFolderPage(onesix.get(), onesix->loaderModList(), "mods", "loadermods", tr("Loader mods"), "Loader-mods"); - modsPage->setFilter("%1 (*.zip *.jar *.litemod)"); - values.append(modsPage); - values.append(new CoreModFolderPage(onesix.get(), onesix->coreModList(), "coremods", "coremods", tr("Core mods"), "Core-mods")); - values.append(new ResourcePackPage(onesix.get())); - values.append(new TexturePackPage(onesix.get())); - values.append(new NotesPage(onesix.get())); - values.append(new WorldListPage(onesix.get(), onesix->worldList())); - values.append(new ServersPage(onesix)); - // values.append(new GameOptionsPage(onesix.get())); - values.append(new ScreenshotsPage(FS::PathCombine(onesix->gameRoot(), "screenshots"))); - values.append(new InstanceSettingsPage(onesix.get())); - } - std::shared_ptr<LegacyInstance> legacy = std::dynamic_pointer_cast<LegacyInstance>(inst); - if(legacy) - { - values.append(new LegacyUpgradePage(legacy)); - values.append(new NotesPage(legacy.get())); - values.append(new WorldListPage(legacy.get(), legacy->worldList())); - values.append(new ScreenshotsPage(FS::PathCombine(legacy->gameRoot(), "screenshots"))); - } - auto logMatcher = inst->getLogFileMatcher(); - if(logMatcher) - { - values.append(new OtherLogsPage(inst->getLogFileRoot(), logMatcher)); - } - return values; - } - - virtual QString dialogTitle() override - { - return tr("Edit Instance (%1)").arg(inst->name()); - } -protected: - InstancePtr inst; -}; diff --git a/application/InstanceProxyModel.cpp b/application/InstanceProxyModel.cpp deleted file mode 100644 index 5317f60c..00000000 --- a/application/InstanceProxyModel.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include "InstanceProxyModel.h" -#include "MultiMC.h" -#include <BaseInstance.h> -#include <icons/IconList.h> - -InstanceProxyModel::InstanceProxyModel(QObject *parent) : GroupedProxyModel(parent) -{ -} - -QVariant InstanceProxyModel::data(const QModelIndex & index, int role) const -{ - QVariant data = QSortFilterProxyModel::data(index, role); - if(role == Qt::DecorationRole) - { - return QVariant(MMC->icons()->getIcon(data.toString())); - } - return data; -} - -bool InstanceProxyModel::subSortLessThan(const QModelIndex &left, - const QModelIndex &right) const -{ - BaseInstance *pdataLeft = static_cast<BaseInstance *>(left.internalPointer()); - BaseInstance *pdataRight = static_cast<BaseInstance *>(right.internalPointer()); - QString sortMode = MMC->settings()->get("InstSortMode").toString(); - if (sortMode == "LastLaunch") - { - return pdataLeft->lastLaunch() > pdataRight->lastLaunch(); - } - else - { - return QString::localeAwareCompare(pdataLeft->name(), pdataRight->name()) < 0; - } -} diff --git a/application/InstanceProxyModel.h b/application/InstanceProxyModel.h deleted file mode 100644 index fab6f834..00000000 --- a/application/InstanceProxyModel.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include "groupview/GroupedProxyModel.h" - -/** - * A proxy model that is responsible for sorting instances into groups - */ -class InstanceProxyModel : public GroupedProxyModel -{ -public: - explicit InstanceProxyModel(QObject *parent = 0); - QVariant data(const QModelIndex & index, int role) const override; - -protected: - virtual bool subSortLessThan(const QModelIndex &left, const QModelIndex &right) const override; -}; diff --git a/application/InstanceWindow.cpp b/application/InstanceWindow.cpp deleted file mode 100644 index 015ffe1c..00000000 --- a/application/InstanceWindow.cpp +++ /dev/null @@ -1,236 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "InstanceWindow.h" -#include "MultiMC.h" - -#include <QScrollBar> -#include <QMessageBox> -#include <QHBoxLayout> -#include <QPushButton> -#include <qlayoutitem.h> -#include <QCloseEvent> - -#include <dialogs/CustomMessageBox.h> -#include <dialogs/ProgressDialog.h> -#include "widgets/PageContainer.h" -#include "InstancePageProvider.h" - -#include "icons/IconList.h" - -InstanceWindow::InstanceWindow(InstancePtr instance, QWidget *parent) - : QMainWindow(parent), m_instance(instance) -{ - setAttribute(Qt::WA_DeleteOnClose); - - auto icon = MMC->icons()->getIcon(m_instance->iconKey()); - QString windowTitle = tr("Console window for ") + m_instance->name(); - - // Set window properties - { - setWindowIcon(icon); - setWindowTitle(windowTitle); - } - - // Add page container - { - auto provider = std::make_shared<InstancePageProvider>(m_instance); - m_container = new PageContainer(provider.get(), "console", this); - m_container->setParentContainer(this); - setCentralWidget(m_container); - setContentsMargins(0, 0, 0, 0); - } - - // Add custom buttons to the page container layout. - { - auto horizontalLayout = new QHBoxLayout(); - horizontalLayout->setObjectName(QStringLiteral("horizontalLayout")); - horizontalLayout->setContentsMargins(6, -1, 6, -1); - - auto btnHelp = new QPushButton(); - btnHelp->setText(tr("Help")); - horizontalLayout->addWidget(btnHelp); - connect(btnHelp, SIGNAL(clicked(bool)), m_container, SLOT(help())); - - auto spacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); - horizontalLayout->addSpacerItem(spacer); - - m_killButton = new QPushButton(); - horizontalLayout->addWidget(m_killButton); - connect(m_killButton, SIGNAL(clicked(bool)), SLOT(on_btnKillMinecraft_clicked())); - - m_launchOfflineButton = new QPushButton(); - horizontalLayout->addWidget(m_launchOfflineButton); - m_launchOfflineButton->setText(tr("Launch Offline")); - updateLaunchButtons(); - connect(m_launchOfflineButton, SIGNAL(clicked(bool)), SLOT(on_btnLaunchMinecraftOffline_clicked())); - - m_closeButton = new QPushButton(); - m_closeButton->setText(tr("Close")); - horizontalLayout->addWidget(m_closeButton); - connect(m_closeButton, SIGNAL(clicked(bool)), SLOT(on_closeButton_clicked())); - - m_container->addButtons(horizontalLayout); - } - - // restore window state - { - auto base64State = MMC->settings()->get("ConsoleWindowState").toByteArray(); - restoreState(QByteArray::fromBase64(base64State)); - auto base64Geometry = MMC->settings()->get("ConsoleWindowGeometry").toByteArray(); - restoreGeometry(QByteArray::fromBase64(base64Geometry)); - } - - // set up instance and launch process recognition - { - auto launchTask = m_instance->getLaunchTask(); - on_InstanceLaunchTask_changed(launchTask); - connect(m_instance.get(), &BaseInstance::launchTaskChanged, this, &InstanceWindow::on_InstanceLaunchTask_changed); - connect(m_instance.get(), &BaseInstance::runningStatusChanged, this, &InstanceWindow::on_RunningState_changed); - } - - // set up instance destruction detection - { - connect(m_instance.get(), &BaseInstance::statusChanged, this, &InstanceWindow::on_instanceStatusChanged); - } - show(); -} - -void InstanceWindow::on_instanceStatusChanged(BaseInstance::Status, BaseInstance::Status newStatus) -{ - if(newStatus == BaseInstance::Status::Gone) - { - m_doNotSave = true; - close(); - } -} - -void InstanceWindow::updateLaunchButtons() -{ - if(m_instance->isRunning()) - { - m_launchOfflineButton->setEnabled(false); - m_killButton->setText(tr("Kill")); - m_killButton->setObjectName("killButton"); - m_killButton->setToolTip(tr("Kill the running instance")); - } - else if(!m_instance->canLaunch()) - { - m_launchOfflineButton->setEnabled(false); - m_killButton->setText(tr("Launch")); - m_killButton->setObjectName("launchButton"); - m_killButton->setToolTip(tr("Launch the instance")); - m_killButton->setEnabled(false); - } - else - { - m_launchOfflineButton->setEnabled(true); - m_killButton->setText(tr("Launch")); - m_killButton->setObjectName("launchButton"); - m_killButton->setToolTip(tr("Launch the instance")); - } - // NOTE: this is a hack to force the button to recalculate its style - m_killButton->setStyleSheet("/* */"); - m_killButton->setStyleSheet(QString()); -} - -void InstanceWindow::on_btnLaunchMinecraftOffline_clicked() -{ - MMC->launch(m_instance, false, nullptr); -} - -void InstanceWindow::on_InstanceLaunchTask_changed(shared_qobject_ptr<LaunchTask> proc) -{ - m_proc = proc; -} - -void InstanceWindow::on_RunningState_changed(bool running) -{ - updateLaunchButtons(); - m_container->refreshContainer(); - if(running) { - selectPage("log"); - } -} - -void InstanceWindow::on_closeButton_clicked() -{ - close(); -} - -void InstanceWindow::closeEvent(QCloseEvent *event) -{ - bool proceed = true; - if(!m_doNotSave) - { - proceed &= m_container->prepareToClose(); - } - - if(!proceed) - { - return; - } - - MMC->settings()->set("ConsoleWindowState", saveState().toBase64()); - MMC->settings()->set("ConsoleWindowGeometry", saveGeometry().toBase64()); - emit isClosing(); - event->accept(); -} - -bool InstanceWindow::saveAll() -{ - return m_container->saveAll(); -} - -void InstanceWindow::on_btnKillMinecraft_clicked() -{ - if(m_instance->isRunning()) - { - MMC->kill(m_instance); - } - else - { - MMC->launch(m_instance, true, nullptr); - } -} - -QString InstanceWindow::instanceId() -{ - return m_instance->id(); -} - -bool InstanceWindow::selectPage(QString pageId) -{ - return m_container->selectPage(pageId); -} - -void InstanceWindow::refreshContainer() -{ - m_container->refreshContainer(); -} - -InstanceWindow::~InstanceWindow() -{ -} - -bool InstanceWindow::requestClose() -{ - if(m_container->prepareToClose()) - { - close(); - return true; - } - return false; -} diff --git a/application/InstanceWindow.h b/application/InstanceWindow.h deleted file mode 100644 index cd7d2494..00000000 --- a/application/InstanceWindow.h +++ /dev/null @@ -1,73 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QMainWindow> -#include "LaunchController.h" -#include <QObjectPtr.h> -#include <QSystemTrayIcon> -#include "launch/LaunchTask.h" -#include "pages/BasePageContainer.h" - -class QPushButton; -class PageContainer; -class InstanceWindow : public QMainWindow, public BasePageContainer -{ - Q_OBJECT - -public: - explicit InstanceWindow(InstancePtr proc, QWidget *parent = 0); - virtual ~InstanceWindow(); - - bool selectPage(QString pageId) override; - void refreshContainer() override; - - QString instanceId(); - - // save all settings and changes (prepare for launch) - bool saveAll(); - - // request closing the window (from a page) - bool requestClose() override; - -signals: - void isClosing(); - -private -slots: - void on_closeButton_clicked(); - void on_btnKillMinecraft_clicked(); - void on_btnLaunchMinecraftOffline_clicked(); - - void on_InstanceLaunchTask_changed(shared_qobject_ptr<LaunchTask> proc); - void on_RunningState_changed(bool running); - void on_instanceStatusChanged(BaseInstance::Status, BaseInstance::Status newStatus); - -protected: - void closeEvent(QCloseEvent *) override; - -private: - void updateLaunchButtons(); - -private: - shared_qobject_ptr<LaunchTask> m_proc; - InstancePtr m_instance; - bool m_doNotSave = false; - PageContainer *m_container = nullptr; - QPushButton *m_closeButton = nullptr; - QPushButton *m_killButton = nullptr; - QPushButton *m_launchOfflineButton = nullptr; -}; diff --git a/application/JavaCommon.cpp b/application/JavaCommon.cpp deleted file mode 100644 index 92a058f0..00000000 --- a/application/JavaCommon.cpp +++ /dev/null @@ -1,104 +0,0 @@ -#include "JavaCommon.h" -#include "dialogs/CustomMessageBox.h" -#include <MMCStrings.h> - -bool JavaCommon::checkJVMArgs(QString jvmargs, QWidget *parent) -{ - if (jvmargs.contains("-XX:PermSize=") || jvmargs.contains(QRegExp("-Xm[sx]")) - || jvmargs.contains("-XX-MaxHeapSize") || jvmargs.contains("-XX:InitialHeapSize")) - { - auto warnStr = QObject::tr( - "You tried to manually set a JVM memory option (using \"-XX:PermSize\", \"-XX-MaxHeapSize\", \"-XX:InitialHeapSize\", \"-Xmx\" or \"-Xms\").\n" - "There are dedicated boxes for these in the settings (Java tab, in the Memory group at the top).\n" - "This message will be displayed until you remove them from the JVM arguments."); - CustomMessageBox::selectable( - parent, QObject::tr("JVM arguments warning"), - warnStr, - QMessageBox::Warning)->exec(); - return false; - } - return true; -} - -void JavaCommon::javaWasOk(QWidget *parent, JavaCheckResult result) -{ - QString text; - text += QObject::tr("Java test succeeded!<br />Platform reported: %1<br />Java version " - "reported: %2<br />Java vendor " - "reported: %3<br />").arg(result.realPlatform, result.javaVersion.toString(), result.javaVendor); - if (result.errorLog.size()) - { - auto htmlError = result.errorLog; - htmlError.replace('\n', "<br />"); - text += QObject::tr("<br />Warnings:<br /><font color=\"orange\">%1</font>").arg(htmlError); - } - CustomMessageBox::selectable(parent, QObject::tr("Java test success"), text, QMessageBox::Information)->show(); -} - -void JavaCommon::javaArgsWereBad(QWidget *parent, JavaCheckResult result) -{ - auto htmlError = result.errorLog; - QString text; - htmlError.replace('\n', "<br />"); - text += QObject::tr("The specified java binary didn't work with the arguments you provided:<br />"); - text += QString("<font color=\"red\">%1</font>").arg(htmlError); - CustomMessageBox::selectable(parent, QObject::tr("Java test failure"), text, QMessageBox::Warning)->show(); -} - -void JavaCommon::javaBinaryWasBad(QWidget *parent, JavaCheckResult result) -{ - QString text; - text += QObject::tr( - "The specified java binary didn't work.<br />You should use the auto-detect feature, " - "or set the path to the java executable.<br />"); - CustomMessageBox::selectable(parent, QObject::tr("Java test failure"), text, QMessageBox::Warning)->show(); -} - -void JavaCommon::TestCheck::run() -{ - if (!JavaCommon::checkJVMArgs(m_args, m_parent)) - { - emit finished(); - return; - } - checker.reset(new JavaChecker()); - connect(checker.get(), SIGNAL(checkFinished(JavaCheckResult)), this, - SLOT(checkFinished(JavaCheckResult))); - checker->m_path = m_path; - checker->performCheck(); -} - -void JavaCommon::TestCheck::checkFinished(JavaCheckResult result) -{ - if (result.validity != JavaCheckResult::Validity::Valid) - { - javaBinaryWasBad(m_parent, result); - emit finished(); - return; - } - checker.reset(new JavaChecker()); - connect(checker.get(), SIGNAL(checkFinished(JavaCheckResult)), this, - SLOT(checkFinishedWithArgs(JavaCheckResult))); - checker->m_path = m_path; - checker->m_args = m_args; - checker->m_minMem = m_minMem; - checker->m_maxMem = m_maxMem; - if (result.javaVersion.requiresPermGen()) - { - checker->m_permGen = m_permGen; - } - checker->performCheck(); -} - -void JavaCommon::TestCheck::checkFinishedWithArgs(JavaCheckResult result) -{ - if (result.validity == JavaCheckResult::Validity::Valid) - { - javaWasOk(m_parent, result); - emit finished(); - return; - } - javaArgsWereBad(m_parent, result); - emit finished(); -} - diff --git a/application/JavaCommon.h b/application/JavaCommon.h deleted file mode 100644 index ca98145c..00000000 --- a/application/JavaCommon.h +++ /dev/null @@ -1,48 +0,0 @@ -#pragma once -#include <java/JavaChecker.h> - -class QWidget; - -/** - * Common UI bits for the java pages to use. - */ -namespace JavaCommon -{ - bool checkJVMArgs(QString args, QWidget *parent); - - // Show a dialog saying that the Java binary was not usable - void javaBinaryWasBad(QWidget *parent, JavaCheckResult result); - // Show a dialog saying that the Java binary was not usable because of bad options - void javaArgsWereBad(QWidget *parent, JavaCheckResult result); - // Show a dialog saying that the Java binary was usable - void javaWasOk(QWidget *parent, JavaCheckResult result); - - class TestCheck : public QObject - { - Q_OBJECT - public: - TestCheck(QWidget *parent, QString path, QString args, int minMem, int maxMem, int permGen) - :m_parent(parent), m_path(path), m_args(args), m_minMem(minMem), m_maxMem(maxMem), m_permGen(permGen) - { - } - virtual ~TestCheck() {}; - - void run(); - - signals: - void finished(); - - private slots: - void checkFinished(JavaCheckResult result); - void checkFinishedWithArgs(JavaCheckResult result); - - private: - std::shared_ptr<JavaChecker> checker; - QWidget *m_parent = nullptr; - QString m_path; - QString m_args; - int m_minMem = 0; - int m_maxMem = 0; - int m_permGen = 64; - }; -} diff --git a/application/KonamiCode.cpp b/application/KonamiCode.cpp deleted file mode 100644 index 46a2a0b2..00000000 --- a/application/KonamiCode.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include "KonamiCode.h" - -#include <array> -#include <QDebug> - -namespace { -const std::array<Qt::Key, 10> konamiCode = -{ - { - Qt::Key_Up, Qt::Key_Up, - Qt::Key_Down, Qt::Key_Down, - Qt::Key_Left, Qt::Key_Right, - Qt::Key_Left, Qt::Key_Right, - Qt::Key_B, Qt::Key_A - } -}; -} - -KonamiCode::KonamiCode(QObject* parent) : QObject(parent) -{ -} - - -void KonamiCode::input(QEvent* event) -{ - if( event->type() == QEvent::KeyPress ) - { - QKeyEvent *keyEvent = static_cast<QKeyEvent*>( event ); - auto key = Qt::Key(keyEvent->key()); - if(key == konamiCode[m_progress]) - { - m_progress ++; - } - else - { - m_progress = 0; - } - if(m_progress == static_cast<int>(konamiCode.size())) - { - m_progress = 0; - emit triggered(); - } - } -} diff --git a/application/KonamiCode.h b/application/KonamiCode.h deleted file mode 100644 index 3d320ae7..00000000 --- a/application/KonamiCode.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#include <QKeyEvent> - -class KonamiCode : public QObject -{ - Q_OBJECT -public: - KonamiCode(QObject *parent = 0); - void input(QEvent *event); - -signals: - void triggered(); - -private: - int m_progress = 0; -}; diff --git a/application/LaunchController.cpp b/application/LaunchController.cpp deleted file mode 100644 index ee764082..00000000 --- a/application/LaunchController.cpp +++ /dev/null @@ -1,353 +0,0 @@ -#include "LaunchController.h" -#include "MainWindow.h" -#include <minecraft/auth/MojangAccountList.h> -#include "MultiMC.h" -#include "dialogs/CustomMessageBox.h" -#include "dialogs/ProfileSelectDialog.h" -#include "dialogs/ProgressDialog.h" -#include "dialogs/EditAccountDialog.h" -#include "InstanceWindow.h" -#include "BuildConfig.h" -#include "JavaCommon.h" -#include <QLineEdit> -#include <QInputDialog> -#include <tasks/Task.h> -#include <minecraft/auth/YggdrasilTask.h> -#include <launch/steps/TextPrint.h> -#include <QStringList> -#include <QHostInfo> -#include <QList> -#include <QHostAddress> - -LaunchController::LaunchController(QObject *parent) : Task(parent) -{ -} - -void LaunchController::executeTask() -{ - if (!m_instance) - { - emitFailed(tr("No instance specified!")); - return; - } - - login(); -} - -// FIXME: minecraft specific -void LaunchController::login() -{ - JavaCommon::checkJVMArgs(m_instance->settings()->get("JvmArgs").toString(), m_parentWidget); - - // Find an account to use. - std::shared_ptr<MojangAccountList> accounts = MMC->accounts(); - MojangAccountPtr account = accounts->activeAccount(); - if (accounts->count() <= 0) - { - // Tell the user they need to log in at least one account in order to play. - auto reply = CustomMessageBox::selectable( - m_parentWidget, tr("No Accounts"), - tr("In order to play Minecraft, you must have at least one Mojang or Minecraft " - "account logged in to MultiMC." - "Would you like to open the account manager to add an account now?"), - QMessageBox::Information, QMessageBox::Yes | QMessageBox::No)->exec(); - - if (reply == QMessageBox::Yes) - { - // Open the account manager. - MMC->ShowGlobalSettings(m_parentWidget, "accounts"); - } - } - else if (account.get() == nullptr) - { - // If no default account is set, ask the user which one to use. - ProfileSelectDialog selectDialog(tr("Which profile would you like to use?"), - ProfileSelectDialog::GlobalDefaultCheckbox, m_parentWidget); - - selectDialog.exec(); - - // Launch the instance with the selected account. - account = selectDialog.selectedAccount(); - - // If the user said to use the account as default, do that. - if (selectDialog.useAsGlobalDefault() && account.get() != nullptr) - accounts->setActiveAccount(account->username()); - } - - // if no account is selected, we bail - if (!account.get()) - { - emitFailed(tr("No account selected for launch.")); - return; - } - - // we try empty password first :) - QString password; - // we loop until the user succeeds in logging in or gives up - bool tryagain = true; - // the failure. the default failure. - const QString needLoginAgain = tr("Your account is currently not logged in. Please enter your password to log in again. <br /> <br /> This could be caused by a password change."); - QString failReason = needLoginAgain; - - while (tryagain) - { - m_session = std::make_shared<AuthSession>(); - m_session->wants_online = m_online; - auto task = account->login(m_session, password); - if (task) - { - // We'll need to validate the access token to make sure the account - // is still logged in. - ProgressDialog progDialog(m_parentWidget); - if (m_online) - { - progDialog.setSkipButton(true, tr("Play Offline")); - } - progDialog.execWithTask(task.get()); - if (!task->wasSuccessful()) - { - auto failReasonNew = task->failReason(); - if(failReasonNew == "Invalid token.") - { - account->invalidateClientToken(); - failReason = needLoginAgain; - } - else failReason = failReasonNew; - } - } - switch (m_session->status) - { - case AuthSession::Undetermined: - { - qCritical() << "Received undetermined session status during login. Bye."; - tryagain = false; - emitFailed(tr("Received undetermined session status during login.")); - break; - } - case AuthSession::RequiresPassword: - { - EditAccountDialog passDialog(failReason, m_parentWidget, EditAccountDialog::PasswordField); - auto username = m_session->username; - auto chopN = [](QString toChop, int N) -> QString - { - if(toChop.size() > N) - { - auto left = toChop.left(N); - left += QString("\u25CF").repeated(toChop.size() - N); - return left; - } - return toChop; - }; - - if(username.contains('@')) - { - auto parts = username.split('@'); - auto mailbox = chopN(parts[0],3); - QString domain = chopN(parts[1], 3); - username = mailbox + '@' + domain; - } - passDialog.setUsername(username); - if (passDialog.exec() == QDialog::Accepted) - { - password = passDialog.password(); - } - else - { - tryagain = false; - } - break; - } - case AuthSession::PlayableOffline: - { - // we ask the user for a player name - bool ok = false; - QString usedname = m_session->player_name; - QString name = QInputDialog::getText(m_parentWidget, tr("Player name"), - tr("Choose your offline mode player name."), - QLineEdit::Normal, m_session->player_name, &ok); - if (!ok) - { - tryagain = false; - break; - } - if (name.length()) - { - usedname = name; - } - m_session->MakeOffline(usedname); - // offline flavored game from here :3 - } - case AuthSession::PlayableOnline: - { - launchInstance(); - tryagain = false; - return; - } - } - } - emitFailed(tr("Failed to launch.")); -} - -void LaunchController::launchInstance() -{ - Q_ASSERT_X(m_instance != NULL, "launchInstance", "instance is NULL"); - Q_ASSERT_X(m_session.get() != nullptr, "launchInstance", "session is NULL"); - - if(!m_instance->reloadSettings()) - { - QMessageBox::critical(m_parentWidget, tr("Error!"), tr("Couldn't load the instance profile.")); - emitFailed(tr("Couldn't load the instance profile.")); - return; - } - - m_launcher = m_instance->createLaunchTask(m_session, m_serverToJoin); - if (!m_launcher) - { - emitFailed(tr("Couldn't instantiate a launcher.")); - return; - } - - auto console = qobject_cast<InstanceWindow *>(m_parentWidget); - auto showConsole = m_instance->settings()->get("ShowConsole").toBool(); - if(!console && showConsole) - { - MMC->showInstanceWindow(m_instance); - } - connect(m_launcher.get(), &LaunchTask::readyForLaunch, this, &LaunchController::readyForLaunch); - connect(m_launcher.get(), &LaunchTask::succeeded, this, &LaunchController::onSucceeded); - connect(m_launcher.get(), &LaunchTask::failed, this, &LaunchController::onFailed); - connect(m_launcher.get(), &LaunchTask::requestProgress, this, &LaunchController::onProgressRequested); - - // Prepend Online and Auth Status - QString online_mode; - if(m_session->wants_online) { - online_mode = "online"; - - // Prepend Server Status - QStringList servers = {"authserver.mojang.com", "session.minecraft.net", "textures.minecraft.net", "api.mojang.com"}; - QString resolved_servers = ""; - QHostInfo host_info; - - for(QString server : servers) { - host_info = QHostInfo::fromName(server); - resolved_servers = resolved_servers + server + " resolves to:\n ["; - if(!host_info.addresses().isEmpty()) { - for(QHostAddress address : host_info.addresses()) { - resolved_servers = resolved_servers + address.toString(); - if(!host_info.addresses().endsWith(address)) { - resolved_servers = resolved_servers + ", "; - } - } - } else { - resolved_servers = resolved_servers + "N/A"; - } - resolved_servers = resolved_servers + "]\n\n"; - } - m_launcher->prependStep(new TextPrint(m_launcher.get(), resolved_servers, MessageLevel::MultiMC)); - } else { - online_mode = "offline"; - } - - QString auth_server_status; - if(m_session->auth_server_online) { - auth_server_status = "online"; - } else { - auth_server_status = "offline"; - } - - m_launcher->prependStep(new TextPrint(m_launcher.get(), "Launched instance in " + online_mode + " mode\nAuthentication server is " + auth_server_status + "\n", MessageLevel::MultiMC)); - - // Prepend Version - m_launcher->prependStep(new TextPrint(m_launcher.get(), "MultiMC version: " + BuildConfig.printableVersionString() + "\n\n", MessageLevel::MultiMC)); - m_launcher->start(); -} - -void LaunchController::readyForLaunch() -{ - if (!m_profiler) - { - m_launcher->proceed(); - return; - } - - QString error; - if (!m_profiler->check(&error)) - { - m_launcher->abort(); - QMessageBox::critical(m_parentWidget, tr("Error!"), tr("Couldn't start profiler: %1").arg(error)); - emitFailed("Profiler startup failed!"); - return; - } - BaseProfiler *profilerInstance = m_profiler->createProfiler(m_launcher->instance(), this); - - connect(profilerInstance, &BaseProfiler::readyToLaunch, [this](const QString & message) - { - QMessageBox msg; - msg.setText(tr("The game launch is delayed until you press the " - "button. This is the right time to setup the profiler, as the " - "profiler server is running now.\n\n%1").arg(message)); - msg.setWindowTitle(tr("Waiting.")); - msg.setIcon(QMessageBox::Information); - msg.addButton(tr("Launch"), QMessageBox::AcceptRole); - msg.setModal(true); - msg.exec(); - m_launcher->proceed(); - }); - connect(profilerInstance, &BaseProfiler::abortLaunch, [this](const QString & message) - { - QMessageBox msg; - msg.setText(tr("Couldn't start the profiler: %1").arg(message)); - msg.setWindowTitle(tr("Error")); - msg.setIcon(QMessageBox::Critical); - msg.addButton(QMessageBox::Ok); - msg.setModal(true); - msg.exec(); - m_launcher->abort(); - emitFailed("Profiler startup failed!"); - }); - profilerInstance->beginProfiling(m_launcher); -} - -void LaunchController::onSucceeded() -{ - emitSucceeded(); -} - -void LaunchController::onFailed(QString reason) -{ - if(m_instance->settings()->get("ShowConsoleOnError").toBool()) - { - MMC->showInstanceWindow(m_instance, "console"); - } - emitFailed(reason); -} - -void LaunchController::onProgressRequested(Task* task) -{ - ProgressDialog progDialog(m_parentWidget); - progDialog.setSkipButton(true, tr("Abort")); - m_launcher->proceed(); - progDialog.execWithTask(task); -} - -bool LaunchController::abort() -{ - if(!m_launcher) - { - return true; - } - if(!m_launcher->canAbort()) - { - return false; - } - auto response = CustomMessageBox::selectable( - m_parentWidget, tr("Kill Minecraft?"), - tr("This can cause the instance to get corrupted and should only be used if Minecraft " - "is frozen for some reason"), - QMessageBox::Question, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes)->exec(); - if (response == QMessageBox::Yes) - { - return m_launcher->abort(); - } - return false; -} diff --git a/application/LaunchController.h b/application/LaunchController.h deleted file mode 100644 index 5f177e00..00000000 --- a/application/LaunchController.h +++ /dev/null @@ -1,68 +0,0 @@ -#pragma once -#include <QObject> -#include <BaseInstance.h> -#include <tools/BaseProfiler.h> - -#include "minecraft/launch/MinecraftServerTarget.h" - -class InstanceWindow; -class LaunchController: public Task -{ - Q_OBJECT -public: - void executeTask() override; - - LaunchController(QObject * parent = nullptr); - virtual ~LaunchController(){}; - - void setInstance(InstancePtr instance) - { - m_instance = instance; - } - InstancePtr instance() - { - return m_instance; - } - void setOnline(bool online) - { - m_online = online; - } - void setProfiler(BaseProfilerFactory *profiler) - { - m_profiler = profiler; - } - void setParentWidget(QWidget * widget) - { - m_parentWidget = widget; - } - void setServerToJoin(MinecraftServerTargetPtr serverToJoin) - { - m_serverToJoin = std::move(serverToJoin); - } - QString id() - { - return m_instance->id(); - } - bool abort() override; - -private: - void login(); - void launchInstance(); - -private slots: - void readyForLaunch(); - - void onSucceeded(); - void onFailed(QString reason); - void onProgressRequested(Task *task); - -private: - BaseProfilerFactory *m_profiler = nullptr; - bool m_online = true; - InstancePtr m_instance; - QWidget * m_parentWidget = nullptr; - InstanceWindow *m_console = nullptr; - AuthSessionPtr m_session; - shared_qobject_ptr<LaunchTask> m_launcher; - MinecraftServerTargetPtr m_serverToJoin; -}; diff --git a/application/MainWindow.cpp b/application/MainWindow.cpp deleted file mode 100644 index 9225193e..00000000 --- a/application/MainWindow.cpp +++ /dev/null @@ -1,1952 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Authors: Andrew Okin - * Peterix - * Orochimarufan <orochimarufan.x3@gmail.com> - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "MultiMC.h" -#include "BuildConfig.h" - -#include "MainWindow.h" - -#include <QtCore/QVariant> -#include <QtCore/QUrl> -#include <QtCore/QDir> -#include <QtCore/QFileInfo> - -#include <QtGui/QKeyEvent> - -#include <QtWidgets/QAction> -#include <QtWidgets/QApplication> -#include <QtWidgets/QButtonGroup> -#include <QtWidgets/QHBoxLayout> -#include <QtWidgets/QHeaderView> -#include <QtWidgets/QMainWindow> -#include <QtWidgets/QStatusBar> -#include <QtWidgets/QToolBar> -#include <QtWidgets/QWidget> -#include <QtWidgets/QMenu> -#include <QtWidgets/QMessageBox> -#include <QtWidgets/QInputDialog> -#include <QtWidgets/QLabel> -#include <QtWidgets/QToolButton> -#include <QtWidgets/QWidgetAction> -#include <QtWidgets/QProgressDialog> -#include <QtWidgets/QShortcut> - -#include <BaseInstance.h> -#include <Env.h> -#include <InstanceList.h> -#include <MMCZip.h> -#include <icons/IconList.h> -#include <java/JavaUtils.h> -#include <java/JavaInstallList.h> -#include <launch/LaunchTask.h> -#include <minecraft/auth/MojangAccountList.h> -#include <SkinUtils.h> -#include <BuildConfig.h> -#include <net/NetJob.h> -#include <net/Download.h> -#include <news/NewsChecker.h> -#include <notifications/NotificationChecker.h> -#include <tools/BaseProfiler.h> -#include <updater/DownloadTask.h> -#include <updater/UpdateChecker.h> -#include <DesktopServices.h> -#include "InstanceWindow.h" -#include "InstancePageProvider.h" -#include "InstanceProxyModel.h" -#include "JavaCommon.h" -#include "LaunchController.h" -#include "groupview/GroupView.h" -#include "groupview/InstanceDelegate.h" -#include "widgets/LabeledToolButton.h" -#include "widgets/ServerStatus.h" -#include "dialogs/NewInstanceDialog.h" -#include "dialogs/ProgressDialog.h" -#include "dialogs/AboutDialog.h" -#include "dialogs/VersionSelectDialog.h" -#include "dialogs/CustomMessageBox.h" -#include "dialogs/IconPickerDialog.h" -#include "dialogs/CopyInstanceDialog.h" -#include "dialogs/UpdateDialog.h" -#include "dialogs/EditAccountDialog.h" -#include "dialogs/NotificationDialog.h" -#include "dialogs/ExportInstanceDialog.h" -#include <InstanceImportTask.h> -#include "UpdateController.h" -#include "KonamiCode.h" -#include <InstanceCopyTask.h> - -// WHY: to hold the pre-translation strings together with the T pointer, so it can be retranslated without a lot of ugly code -template <typename T> -class Translated -{ -public: - Translated(){} - Translated(QWidget *parent) - { - m_contained = new T(parent); - } - void setTooltipId(const char * tooltip) - { - m_tooltip = tooltip; - } - void setTextId(const char * text) - { - m_text = text; - } - operator T*() - { - return m_contained; - } - T * operator->() - { - return m_contained; - } - void retranslate() - { - if(m_text) - { - m_contained->setText(QApplication::translate("MainWindow", m_text)); - } - if(m_tooltip) - { - m_contained->setToolTip(QApplication::translate("MainWindow", m_tooltip)); - } - } -private: - T * m_contained = nullptr; - const char * m_text = nullptr; - const char * m_tooltip = nullptr; -}; -using TranslatedAction = Translated<QAction>; -using TranslatedToolButton = Translated<QToolButton>; - -class TranslatedToolbar -{ -public: - TranslatedToolbar(){} - TranslatedToolbar(QWidget *parent) - { - m_contained = new QToolBar(parent); - } - void setWindowTitleId(const char * title) - { - m_title = title; - } - operator QToolBar*() - { - return m_contained; - } - QToolBar * operator->() - { - return m_contained; - } - void retranslate() - { - if(m_title) - { - m_contained->setWindowTitle(QApplication::translate("MainWindow", m_title)); - } - } -private: - QToolBar * m_contained = nullptr; - const char * m_title = nullptr; -}; - -class MainWindow::Ui -{ -public: - TranslatedAction actionAddInstance; - //TranslatedAction actionRefresh; - TranslatedAction actionCheckUpdate; - TranslatedAction actionSettings; - TranslatedAction actionPatreon; - TranslatedAction actionMoreNews; - TranslatedAction actionManageAccounts; - TranslatedAction actionLaunchInstance; - TranslatedAction actionRenameInstance; - TranslatedAction actionChangeInstGroup; - TranslatedAction actionChangeInstIcon; - TranslatedAction actionEditInstNotes; - TranslatedAction actionEditInstance; - TranslatedAction actionWorlds; - TranslatedAction actionViewSelectedInstFolder; - TranslatedAction actionViewSelectedMCFolder; - TranslatedAction actionDeleteInstance; - TranslatedAction actionConfig_Folder; - TranslatedAction actionCAT; - TranslatedAction actionCopyInstance; - TranslatedAction actionLaunchInstanceOffline; - TranslatedAction actionScreenshots; - TranslatedAction actionExportInstance; - QVector<TranslatedAction *> all_actions; - - LabeledToolButton *renameButton = nullptr; - LabeledToolButton *changeIconButton = nullptr; - - QMenu * foldersMenu = nullptr; - TranslatedToolButton foldersMenuButton; - TranslatedAction actionViewInstanceFolder; - TranslatedAction actionViewCentralModsFolder; - - QMenu * helpMenu = nullptr; - TranslatedToolButton helpMenuButton; - TranslatedAction actionReportBug; - TranslatedAction actionDISCORD; - TranslatedAction actionREDDIT; - TranslatedAction actionAbout; - - QVector<TranslatedToolButton *> all_toolbuttons; - - QWidget *centralWidget = nullptr; - QHBoxLayout *horizontalLayout = nullptr; - QStatusBar *statusBar = nullptr; - - TranslatedToolbar mainToolBar; - TranslatedToolbar instanceToolBar; - TranslatedToolbar newsToolBar; - QVector<TranslatedToolbar *> all_toolbars; - bool m_kill = false; - - void updateLaunchAction() - { - if(m_kill) - { - actionLaunchInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Kill")); - actionLaunchInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Kill the running instance")); - } - else - { - actionLaunchInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Launch")); - actionLaunchInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Launch the selected instance.")); - } - actionLaunchInstance.retranslate(); - } - void setLaunchAction(bool kill) - { - m_kill = kill; - updateLaunchAction(); - } - - void createMainToolbar(QMainWindow *MainWindow) - { - mainToolBar = TranslatedToolbar(MainWindow); - mainToolBar->setObjectName(QStringLiteral("mainToolBar")); - mainToolBar->setMovable(false); - mainToolBar->setAllowedAreas(Qt::TopToolBarArea); - mainToolBar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); - mainToolBar->setFloatable(false); - mainToolBar.setWindowTitleId(QT_TRANSLATE_NOOP("MainWindow", "Main Toolbar")); - - actionAddInstance = TranslatedAction(MainWindow); - actionAddInstance->setObjectName(QStringLiteral("actionAddInstance")); - actionAddInstance->setIcon(MMC->getThemedIcon("new")); - actionAddInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Add Instance")); - actionAddInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Add a new instance.")); - all_actions.append(&actionAddInstance); - mainToolBar->addAction(actionAddInstance); - - mainToolBar->addSeparator(); - - foldersMenu = new QMenu(MainWindow); - foldersMenu->setToolTipsVisible(true); - - actionViewInstanceFolder = TranslatedAction(MainWindow); - actionViewInstanceFolder->setObjectName(QStringLiteral("actionViewInstanceFolder")); - actionViewInstanceFolder->setIcon(MMC->getThemedIcon("viewfolder")); - actionViewInstanceFolder.setTextId(QT_TRANSLATE_NOOP("MainWindow", "View Instance Folder")); - actionViewInstanceFolder.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open the instance folder in a file browser.")); - all_actions.append(&actionViewInstanceFolder); - foldersMenu->addAction(actionViewInstanceFolder); - - actionViewCentralModsFolder = TranslatedAction(MainWindow); - actionViewCentralModsFolder->setObjectName(QStringLiteral("actionViewCentralModsFolder")); - actionViewCentralModsFolder->setIcon(MMC->getThemedIcon("centralmods")); - actionViewCentralModsFolder.setTextId(QT_TRANSLATE_NOOP("MainWindow", "View Central Mods Folder")); - actionViewCentralModsFolder.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open the central mods folder in a file browser.")); - all_actions.append(&actionViewCentralModsFolder); - foldersMenu->addAction(actionViewCentralModsFolder); - - foldersMenuButton = TranslatedToolButton(MainWindow); - foldersMenuButton.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Folders")); - foldersMenuButton.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open one of the folders shared between instances.")); - foldersMenuButton->setMenu(foldersMenu); - foldersMenuButton->setPopupMode(QToolButton::InstantPopup); - foldersMenuButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); - foldersMenuButton->setIcon(MMC->getThemedIcon("viewfolder")); - foldersMenuButton->setFocusPolicy(Qt::NoFocus); - all_toolbuttons.append(&foldersMenuButton); - QWidgetAction* foldersButtonAction = new QWidgetAction(MainWindow); - foldersButtonAction->setDefaultWidget(foldersMenuButton); - mainToolBar->addAction(foldersButtonAction); - - actionSettings = TranslatedAction(MainWindow); - actionSettings->setObjectName(QStringLiteral("actionSettings")); - actionSettings->setIcon(MMC->getThemedIcon("settings")); - actionSettings->setMenuRole(QAction::PreferencesRole); - actionSettings.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Settings")); - actionSettings.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Change settings.")); - all_actions.append(&actionSettings); - mainToolBar->addAction(actionSettings); - - helpMenu = new QMenu(MainWindow); - helpMenu->setToolTipsVisible(true); - - if (!BuildConfig.BUG_TRACKER_URL.isEmpty()) { - actionReportBug = TranslatedAction(MainWindow); - actionReportBug->setObjectName(QStringLiteral("actionReportBug")); - actionReportBug->setIcon(MMC->getThemedIcon("bug")); - actionReportBug.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Report a Bug")); - actionReportBug.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open the bug tracker to report a bug with MultiMC.")); - all_actions.append(&actionReportBug); - helpMenu->addAction(actionReportBug); - } - - if (!BuildConfig.DISCORD_URL.isEmpty()) { - actionDISCORD = TranslatedAction(MainWindow); - actionDISCORD->setObjectName(QStringLiteral("actionDISCORD")); - actionDISCORD->setIcon(MMC->getThemedIcon("discord")); - actionDISCORD.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Discord")); - actionDISCORD.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open MultiMC discord voice chat.")); - all_actions.append(&actionDISCORD); - helpMenu->addAction(actionDISCORD); - } - - if (!BuildConfig.SUBREDDIT_URL.isEmpty()) { - actionREDDIT = TranslatedAction(MainWindow); - actionREDDIT->setObjectName(QStringLiteral("actionREDDIT")); - actionREDDIT->setIcon(MMC->getThemedIcon("reddit-alien")); - actionREDDIT.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Reddit")); - actionREDDIT.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open MultiMC subreddit.")); - all_actions.append(&actionREDDIT); - helpMenu->addAction(actionREDDIT); - } - - actionAbout = TranslatedAction(MainWindow); - actionAbout->setObjectName(QStringLiteral("actionAbout")); - actionAbout->setIcon(MMC->getThemedIcon("about")); - actionAbout->setMenuRole(QAction::AboutRole); - actionAbout.setTextId(QT_TRANSLATE_NOOP("MainWindow", "About MultiMC")); - actionAbout.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "View information about MultiMC.")); - all_actions.append(&actionAbout); - helpMenu->addAction(actionAbout); - - helpMenuButton = TranslatedToolButton(MainWindow); - helpMenuButton.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Help")); - helpMenuButton.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Get help with MultiMC or Minecraft.")); - helpMenuButton->setMenu(helpMenu); - helpMenuButton->setPopupMode(QToolButton::InstantPopup); - helpMenuButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); - helpMenuButton->setIcon(MMC->getThemedIcon("help")); - helpMenuButton->setFocusPolicy(Qt::NoFocus); - all_toolbuttons.append(&helpMenuButton); - QWidgetAction* helpButtonAction = new QWidgetAction(MainWindow); - helpButtonAction->setDefaultWidget(helpMenuButton); - mainToolBar->addAction(helpButtonAction); - - if(BuildConfig.UPDATER_ENABLED) - { - actionCheckUpdate = TranslatedAction(MainWindow); - actionCheckUpdate->setObjectName(QStringLiteral("actionCheckUpdate")); - actionCheckUpdate->setIcon(MMC->getThemedIcon("checkupdate")); - actionCheckUpdate.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Update")); - actionCheckUpdate.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Check for new updates for MultiMC.")); - all_actions.append(&actionCheckUpdate); - mainToolBar->addAction(actionCheckUpdate); - } - - mainToolBar->addSeparator(); - - actionPatreon = TranslatedAction(MainWindow); - actionPatreon->setObjectName(QStringLiteral("actionPatreon")); - actionPatreon->setIcon(MMC->getThemedIcon("patreon")); - actionPatreon.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Support MultiMC")); - actionPatreon.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open the MultiMC Patreon page.")); - all_actions.append(&actionPatreon); - mainToolBar->addAction(actionPatreon); - - actionCAT = TranslatedAction(MainWindow); - actionCAT->setObjectName(QStringLiteral("actionCAT")); - actionCAT->setCheckable(true); - actionCAT->setIcon(MMC->getThemedIcon("cat")); - actionCAT.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Meow")); - actionCAT.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "It's a fluffy kitty :3")); - actionCAT->setPriority(QAction::LowPriority); - all_actions.append(&actionCAT); - mainToolBar->addAction(actionCAT); - - // profile menu and its actions - actionManageAccounts = TranslatedAction(MainWindow); - actionManageAccounts->setObjectName(QStringLiteral("actionManageAccounts")); - actionManageAccounts.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Manage Accounts")); - // FIXME: no tooltip! - actionManageAccounts->setCheckable(false); - actionManageAccounts->setIcon(MMC->getThemedIcon("accounts")); - all_actions.append(&actionManageAccounts); - - all_toolbars.append(&mainToolBar); - MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar); - } - - void createStatusBar(QMainWindow *MainWindow) - { - statusBar = new QStatusBar(MainWindow); - statusBar->setObjectName(QStringLiteral("statusBar")); - MainWindow->setStatusBar(statusBar); - } - - void createNewsToolbar(QMainWindow *MainWindow) - { - newsToolBar = TranslatedToolbar(MainWindow); - newsToolBar->setObjectName(QStringLiteral("newsToolBar")); - newsToolBar->setMovable(false); - newsToolBar->setAllowedAreas(Qt::BottomToolBarArea); - newsToolBar->setIconSize(QSize(16, 16)); - newsToolBar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); - newsToolBar->setFloatable(false); - newsToolBar->setWindowTitle(QT_TRANSLATE_NOOP("MainWindow", "News Toolbar")); - - actionMoreNews = TranslatedAction(MainWindow); - actionMoreNews->setObjectName(QStringLiteral("actionMoreNews")); - actionMoreNews->setIcon(MMC->getThemedIcon("news")); - actionMoreNews.setTextId(QT_TRANSLATE_NOOP("MainWindow", "More news...")); - actionMoreNews.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open the MultiMC development blog to read more news about MultiMC.")); - all_actions.append(&actionMoreNews); - newsToolBar->addAction(actionMoreNews); - - all_toolbars.append(&newsToolBar); - MainWindow->addToolBar(Qt::BottomToolBarArea, newsToolBar); - } - - void createInstanceToolbar(QMainWindow *MainWindow) - { - instanceToolBar = TranslatedToolbar(MainWindow); - instanceToolBar->setObjectName(QStringLiteral("instanceToolBar")); - // disabled until we have an instance selected - instanceToolBar->setEnabled(false); - instanceToolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea); - instanceToolBar->setToolButtonStyle(Qt::ToolButtonTextOnly); - instanceToolBar->setFloatable(false); - instanceToolBar->setWindowTitle(QT_TRANSLATE_NOOP("MainWindow", "Instance Toolbar")); - - // NOTE: not added to toolbar, but used for instance context menu (right click) - actionChangeInstIcon = TranslatedAction(MainWindow); - actionChangeInstIcon->setObjectName(QStringLiteral("actionChangeInstIcon")); - actionChangeInstIcon->setIcon(QIcon(":/icons/instances/infinity")); - actionChangeInstIcon->setIconVisibleInMenu(true); - actionChangeInstIcon.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Change Icon")); - actionChangeInstIcon.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Change the selected instance's icon.")); - all_actions.append(&actionChangeInstIcon); - - changeIconButton = new LabeledToolButton(MainWindow); - changeIconButton->setObjectName(QStringLiteral("changeIconButton")); - changeIconButton->setIcon(MMC->getThemedIcon("news")); - changeIconButton->setToolTip(actionChangeInstIcon->toolTip()); - changeIconButton->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); - instanceToolBar->addWidget(changeIconButton); - - // NOTE: not added to toolbar, but used for instance context menu (right click) - actionRenameInstance = TranslatedAction(MainWindow); - actionRenameInstance->setObjectName(QStringLiteral("actionRenameInstance")); - actionRenameInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Rename")); - actionRenameInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Rename the selected instance.")); - all_actions.append(&actionRenameInstance); - - // the rename label is inside the rename tool button - renameButton = new LabeledToolButton(MainWindow); - renameButton->setObjectName(QStringLiteral("renameButton")); - renameButton->setToolTip(actionRenameInstance->toolTip()); - renameButton->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); - instanceToolBar->addWidget(renameButton); - - instanceToolBar->addSeparator(); - - actionLaunchInstance = TranslatedAction(MainWindow); - actionLaunchInstance->setObjectName(QStringLiteral("actionLaunchInstance")); - all_actions.append(&actionLaunchInstance); - instanceToolBar->addAction(actionLaunchInstance); - - actionLaunchInstanceOffline = TranslatedAction(MainWindow); - actionLaunchInstanceOffline->setObjectName(QStringLiteral("actionLaunchInstanceOffline")); - actionLaunchInstanceOffline.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Launch Offline")); - actionLaunchInstanceOffline.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Launch the selected instance in offline mode.")); - all_actions.append(&actionLaunchInstanceOffline); - instanceToolBar->addAction(actionLaunchInstanceOffline); - - instanceToolBar->addSeparator(); - - actionEditInstance = TranslatedAction(MainWindow); - actionEditInstance->setObjectName(QStringLiteral("actionEditInstance")); - actionEditInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Edit Instance")); - actionEditInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Change the instance settings, mods and versions.")); - all_actions.append(&actionEditInstance); - instanceToolBar->addAction(actionEditInstance); - - actionEditInstNotes = TranslatedAction(MainWindow); - actionEditInstNotes->setObjectName(QStringLiteral("actionEditInstNotes")); - actionEditInstNotes.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Edit Notes")); - actionEditInstNotes.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Edit the notes for the selected instance.")); - all_actions.append(&actionEditInstNotes); - instanceToolBar->addAction(actionEditInstNotes); - - actionWorlds = TranslatedAction(MainWindow); - actionWorlds->setObjectName(QStringLiteral("actionWorlds")); - actionWorlds.setTextId(QT_TRANSLATE_NOOP("MainWindow", "View Worlds")); - actionWorlds.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "View the worlds of this instance.")); - all_actions.append(&actionWorlds); - instanceToolBar->addAction(actionWorlds); - - actionScreenshots = TranslatedAction(MainWindow); - actionScreenshots->setObjectName(QStringLiteral("actionScreenshots")); - actionScreenshots.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Manage Screenshots")); - actionScreenshots.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "View and upload screenshots for this instance.")); - all_actions.append(&actionScreenshots); - instanceToolBar->addAction(actionScreenshots); - - actionChangeInstGroup = TranslatedAction(MainWindow); - actionChangeInstGroup->setObjectName(QStringLiteral("actionChangeInstGroup")); - actionChangeInstGroup.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Change Group")); - actionChangeInstGroup.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Change the selected instance's group.")); - all_actions.append(&actionChangeInstGroup); - instanceToolBar->addAction(actionChangeInstGroup); - - instanceToolBar->addSeparator(); - - actionViewSelectedMCFolder = TranslatedAction(MainWindow); - actionViewSelectedMCFolder->setObjectName(QStringLiteral("actionViewSelectedMCFolder")); - actionViewSelectedMCFolder.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Minecraft Folder")); - actionViewSelectedMCFolder.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open the selected instance's minecraft folder in a file browser.")); - all_actions.append(&actionViewSelectedMCFolder); - instanceToolBar->addAction(actionViewSelectedMCFolder); - - actionConfig_Folder = TranslatedAction(MainWindow); - actionConfig_Folder->setObjectName(QStringLiteral("actionConfig_Folder")); - actionConfig_Folder.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Config Folder")); - actionConfig_Folder.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open the instance's config folder.")); - all_actions.append(&actionConfig_Folder); - instanceToolBar->addAction(actionConfig_Folder); - - actionViewSelectedInstFolder = TranslatedAction(MainWindow); - actionViewSelectedInstFolder->setObjectName(QStringLiteral("actionViewSelectedInstFolder")); - actionViewSelectedInstFolder.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Instance Folder")); - actionViewSelectedInstFolder.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open the selected instance's root folder in a file browser.")); - all_actions.append(&actionViewSelectedInstFolder); - instanceToolBar->addAction(actionViewSelectedInstFolder); - - instanceToolBar->addSeparator(); - - actionExportInstance = TranslatedAction(MainWindow); - actionExportInstance->setObjectName(QStringLiteral("actionExportInstance")); - actionExportInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Export Instance")); - // FIXME: missing tooltip - all_actions.append(&actionExportInstance); - instanceToolBar->addAction(actionExportInstance); - - actionDeleteInstance = TranslatedAction(MainWindow); - actionDeleteInstance->setObjectName(QStringLiteral("actionDeleteInstance")); - actionDeleteInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Delete")); - actionDeleteInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Delete the selected instance.")); - all_actions.append(&actionDeleteInstance); - instanceToolBar->addAction(actionDeleteInstance); - - actionCopyInstance = TranslatedAction(MainWindow); - actionCopyInstance->setObjectName(QStringLiteral("actionCopyInstance")); - actionCopyInstance->setIcon(MMC->getThemedIcon("copy")); - actionCopyInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Copy Instance")); - actionCopyInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Copy the selected instance.")); - all_actions.append(&actionCopyInstance); - instanceToolBar->addAction(actionCopyInstance); - - all_toolbars.append(&instanceToolBar); - MainWindow->addToolBar(Qt::RightToolBarArea, instanceToolBar); - } - - void setupUi(QMainWindow *MainWindow) - { - if (MainWindow->objectName().isEmpty()) - { - MainWindow->setObjectName(QStringLiteral("MainWindow")); - } - MainWindow->resize(800, 600); - MainWindow->setWindowIcon(MMC->getThemedIcon("logo")); - MainWindow->setWindowTitle("MultiMC 5"); -#ifndef QT_NO_ACCESSIBILITY - MainWindow->setAccessibleName("MultiMC"); -#endif - - createMainToolbar(MainWindow); - - centralWidget = new QWidget(MainWindow); - centralWidget->setObjectName(QStringLiteral("centralWidget")); - horizontalLayout = new QHBoxLayout(centralWidget); - horizontalLayout->setSpacing(0); - horizontalLayout->setObjectName(QStringLiteral("horizontalLayout")); - horizontalLayout->setSizeConstraint(QLayout::SetDefaultConstraint); - horizontalLayout->setContentsMargins(0, 0, 0, 0); - MainWindow->setCentralWidget(centralWidget); - - createStatusBar(MainWindow); - createNewsToolbar(MainWindow); - createInstanceToolbar(MainWindow); - - retranslateUi(MainWindow); - - QMetaObject::connectSlotsByName(MainWindow); - } // setupUi - - void retranslateUi(QMainWindow *MainWindow) - { - QString winTitle = tr("MultiMC 5 - Version %1").arg(BuildConfig.printableVersionString()); - if (!BuildConfig.BUILD_PLATFORM.isEmpty()) - { - winTitle += tr(" on %1", "on platform, as in operating system").arg(BuildConfig.BUILD_PLATFORM); - } - MainWindow->setWindowTitle(winTitle); - // all the actions - for(auto * item: all_actions) - { - item->retranslate(); - } - for(auto * item: all_toolbars) - { - item->retranslate(); - } - for(auto * item: all_toolbuttons) - { - item->retranslate(); - } - // submenu buttons - foldersMenuButton->setText(tr("Folders")); - helpMenuButton->setText(tr("Help")); - } // retranslateUi -}; - -MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new MainWindow::Ui) -{ - ui->setupUi(this); - - // OSX magic. - setUnifiedTitleAndToolBarOnMac(true); - - // Global shortcuts - { - // FIXME: This is kinda weird. and bad. We need some kind of managed shutdown. - auto q = new QShortcut(QKeySequence::Quit, this); - connect(q, SIGNAL(activated()), qApp, SLOT(quit())); - } - - // Konami Code - { - secretEventFilter = new KonamiCode(this); - connect(secretEventFilter, &KonamiCode::triggered, this, &MainWindow::konamiTriggered); - } - - // Add the news label to the news toolbar. - { - m_newsChecker.reset(new NewsChecker(BuildConfig.NEWS_RSS_URL)); - newsLabel = new QToolButton(); - newsLabel->setIcon(MMC->getThemedIcon("news")); - newsLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); - newsLabel->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); - newsLabel->setFocusPolicy(Qt::NoFocus); - ui->newsToolBar->insertWidget(ui->actionMoreNews, newsLabel); - QObject::connect(newsLabel, &QAbstractButton::clicked, this, &MainWindow::newsButtonClicked); - QObject::connect(m_newsChecker.get(), &NewsChecker::newsLoaded, this, &MainWindow::updateNewsLabel); - updateNewsLabel(); - } - - // Create the instance list widget - { - view = new GroupView(ui->centralWidget); - - view->setSelectionMode(QAbstractItemView::SingleSelection); - // FIXME: leaks ListViewDelegate - view->setItemDelegate(new ListViewDelegate(this)); - view->setFrameShape(QFrame::NoFrame); - // do not show ugly blue border on the mac - view->setAttribute(Qt::WA_MacShowFocusRect, false); - - view->installEventFilter(this); - view->setContextMenuPolicy(Qt::CustomContextMenu); - connect(view, &QWidget::customContextMenuRequested, this, &MainWindow::showInstanceContextMenu); - connect(view, &GroupView::droppedURLs, this, &MainWindow::droppedURLs, Qt::QueuedConnection); - - proxymodel = new InstanceProxyModel(this); - proxymodel->setSourceModel(MMC->instances().get()); - proxymodel->sort(0); - connect(proxymodel, &InstanceProxyModel::dataChanged, this, &MainWindow::instanceDataChanged); - - view->setModel(proxymodel); - view->setSourceOfGroupCollapseStatus([](const QString & groupName)->bool { - return MMC->instances()->isGroupCollapsed(groupName); - }); - connect(view, &GroupView::groupStateChanged, MMC->instances().get(), &InstanceList::on_GroupStateChanged); - ui->horizontalLayout->addWidget(view); - } - // The cat background - { - bool cat_enable = MMC->settings()->get("TheCat").toBool(); - ui->actionCAT->setChecked(cat_enable); - // NOTE: calling the operator like that is an ugly hack to appease ancient gcc... - connect(ui->actionCAT.operator->(), SIGNAL(toggled(bool)), SLOT(onCatToggled(bool))); - setCatBackground(cat_enable); - } - // start instance when double-clicked - connect(view, &GroupView::activated, this, &MainWindow::instanceActivated); - - // track the selection -- update the instance toolbar - connect(view->selectionModel(), &QItemSelectionModel::currentChanged, this, &MainWindow::instanceChanged); - - // track icon changes and update the toolbar! - connect(MMC->icons().get(), &IconList::iconUpdated, this, &MainWindow::iconUpdated); - - // model reset -> selection is invalid. All the instance pointers are wrong. - connect(MMC->instances().get(), &InstanceList::dataIsInvalid, this, &MainWindow::selectionBad); - - // handle newly added instances - connect(MMC->instances().get(), &InstanceList::instanceSelectRequest, this, &MainWindow::instanceSelectRequest); - - // When the global settings page closes, we want to know about it and update our state - connect(MMC, &MultiMC::globalSettingsClosed, this, &MainWindow::globalSettingsClosed); - - m_statusLeft = new QLabel(tr("No instance selected"), this); - m_statusCenter = new QLabel(tr("Total playtime: 0s."), this); - m_statusRight = new ServerStatus(this); - statusBar()->addPermanentWidget(m_statusLeft, 1); - statusBar()->addPermanentWidget(m_statusCenter, 1); - statusBar()->addPermanentWidget(m_statusRight, 0); - - // Add "manage accounts" button, right align - QWidget *spacer = new QWidget(); - spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - ui->mainToolBar->addWidget(spacer); - - accountMenu = new QMenu(this); - - repopulateAccountsMenu(); - - accountMenuButton = new QToolButton(this); - accountMenuButton->setMenu(accountMenu); - accountMenuButton->setPopupMode(QToolButton::InstantPopup); - accountMenuButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); - accountMenuButton->setIcon(MMC->getThemedIcon("noaccount")); - - QWidgetAction *accountMenuButtonAction = new QWidgetAction(this); - accountMenuButtonAction->setDefaultWidget(accountMenuButton); - - ui->mainToolBar->addAction(accountMenuButtonAction); - - // Update the menu when the active account changes. - // Shouldn't have to use lambdas here like this, but if I don't, the compiler throws a fit. - // Template hell sucks... - connect(MMC->accounts().get(), &MojangAccountList::activeAccountChanged, [this] - { - activeAccountChanged(); - }); - connect(MMC->accounts().get(), &MojangAccountList::listChanged, [this] - { - repopulateAccountsMenu(); - }); - - // Show initial account - activeAccountChanged(); - - auto accounts = MMC->accounts(); - - QList<Net::Download::Ptr> skin_dls; - for (int i = 0; i < accounts->count(); i++) - { - auto account = accounts->at(i); - if (!account) - { - qWarning() << "Null account at index" << i; - continue; - } - for (auto profile : account->profiles()) - { - auto meta = Env::getInstance().metacache()->resolveEntry("skins", profile.id + ".png"); - auto action = Net::Download::makeCached(QUrl(BuildConfig.SKINS_BASE + profile.id + ".png"), meta); - skin_dls.append(action); - meta->setStale(true); - } - } - if (!skin_dls.isEmpty()) - { - auto job = new NetJob("Startup player skins download"); - connect(job, &NetJob::succeeded, this, &MainWindow::skinJobFinished); - connect(job, &NetJob::failed, this, &MainWindow::skinJobFinished); - for (auto action : skin_dls) - { - job->addNetAction(action); - } - skin_download_job.reset(job); - job->start(); - } - - // load the news - { - m_newsChecker->reloadNews(); - updateNewsLabel(); - } - - - if(BuildConfig.UPDATER_ENABLED) - { - bool updatesAllowed = MMC->updatesAreAllowed(); - updatesAllowedChanged(updatesAllowed); - - // NOTE: calling the operator like that is an ugly hack to appease ancient gcc... - connect(ui->actionCheckUpdate.operator->(), &QAction::triggered, this, &MainWindow::checkForUpdates); - - // set up the updater object. - auto updater = MMC->updateChecker(); - connect(updater.get(), &UpdateChecker::updateAvailable, this, &MainWindow::updateAvailable); - connect(updater.get(), &UpdateChecker::noUpdateFound, this, &MainWindow::updateNotAvailable); - // if automatic update checks are allowed, start one. - if (MMC->settings()->get("AutoUpdate").toBool() && updatesAllowed) - { - updater->checkForUpdate(MMC->settings()->get("UpdateChannel").toString(), false); - } - } - - { - auto checker = new NotificationChecker(); - checker->setNotificationsUrl(QUrl(BuildConfig.NOTIFICATION_URL)); - checker->setApplicationChannel(BuildConfig.VERSION_CHANNEL); - checker->setApplicationPlatform(BuildConfig.BUILD_PLATFORM); - checker->setApplicationFullVersion(BuildConfig.FULL_VERSION_STR); - m_notificationChecker.reset(checker); - connect(m_notificationChecker.get(), &NotificationChecker::notificationCheckFinished, this, &MainWindow::notificationsChanged); - checker->checkForNotifications(); - } - - setSelectedInstanceById(MMC->settings()->get("SelectedInstance").toString()); - - // removing this looks stupid - view->setFocus(); - - retranslateUi(); -} - -void MainWindow::retranslateUi() -{ - accountMenuButton->setText(tr("Profiles")); - - if (m_selectedInstance) { - m_statusLeft->setText(m_selectedInstance->getStatusbarDescription()); - } else { - m_statusLeft->setText(tr("No instance selected")); - } - - ui->retranslateUi(this); -} - -MainWindow::~MainWindow() -{ -} - -QMenu * MainWindow::createPopupMenu() -{ - QMenu* filteredMenu = QMainWindow::createPopupMenu(); - filteredMenu->removeAction( ui->mainToolBar->toggleViewAction() ); - return filteredMenu; -} - -void MainWindow::konamiTriggered() -{ - // ENV.enableFeature("NewModsPage"); - qDebug() << "Super Secret Mode ACTIVATED!"; -} - -void MainWindow::skinJobFinished() -{ - activeAccountChanged(); - skin_download_job.reset(); -} - -void MainWindow::showInstanceContextMenu(const QPoint &pos) -{ - QList<QAction *> actions; - - QAction *actionSep = new QAction("", this); - actionSep->setSeparator(true); - - bool onInstance = view->indexAt(pos).isValid(); - if (onInstance) - { - actions = ui->instanceToolBar->actions(); - - // replace the change icon widget with an actual action - actions.replace(0, ui->actionChangeInstIcon); - - // replace the rename widget with an actual action - actions.replace(1, ui->actionRenameInstance); - - // add header - actions.prepend(actionSep); - QAction *actionVoid = new QAction(m_selectedInstance->name(), this); - actionVoid->setEnabled(false); - actions.prepend(actionVoid); - } - else - { - auto group = view->groupNameAt(pos); - - QAction *actionVoid = new QAction("MultiMC", this); - actionVoid->setEnabled(false); - - QAction *actionCreateInstance = new QAction(tr("Create instance"), this); - actionCreateInstance->setToolTip(ui->actionAddInstance->toolTip()); - if(!group.isNull()) - { - QVariantMap data; - data["group"] = group; - actionCreateInstance->setData(data); - } - - connect(actionCreateInstance, SIGNAL(triggered(bool)), SLOT(on_actionAddInstance_triggered())); - - actions.prepend(actionSep); - actions.prepend(actionVoid); - actions.append(actionCreateInstance); - if(!group.isNull()) - { - QAction *actionDeleteGroup = new QAction(tr("Delete group '%1'").arg(group), this); - QVariantMap data; - data["group"] = group; - actionDeleteGroup->setData(data); - connect(actionDeleteGroup, SIGNAL(triggered(bool)), SLOT(deleteGroup())); - actions.append(actionDeleteGroup); - } - } - QMenu myMenu; - myMenu.addActions(actions); - /* - if (onInstance) - myMenu.setEnabled(m_selectedInstance->canLaunch()); - */ - myMenu.exec(view->mapToGlobal(pos)); -} - -void MainWindow::updateToolsMenu() -{ - QToolButton *launchButton = dynamic_cast<QToolButton*>(ui->instanceToolBar->widgetForAction(ui->actionLaunchInstance)); - QToolButton *launchOfflineButton = dynamic_cast<QToolButton*>(ui->instanceToolBar->widgetForAction(ui->actionLaunchInstanceOffline)); - - if(!m_selectedInstance || m_selectedInstance->isRunning()) - { - ui->actionLaunchInstance->setMenu(nullptr); - ui->actionLaunchInstanceOffline->setMenu(nullptr); - launchButton->setPopupMode(QToolButton::InstantPopup); - launchOfflineButton->setPopupMode(QToolButton::InstantPopup); - return; - } - - QMenu *launchMenu = ui->actionLaunchInstance->menu(); - QMenu *launchOfflineMenu = ui->actionLaunchInstanceOffline->menu(); - launchButton->setPopupMode(QToolButton::MenuButtonPopup); - launchOfflineButton->setPopupMode(QToolButton::MenuButtonPopup); - if (launchMenu) - { - launchMenu->clear(); - } - else - { - launchMenu = new QMenu(this); - } - if (launchOfflineMenu) { - launchOfflineMenu->clear(); - } - else - { - launchOfflineMenu = new QMenu(this); - } - - QAction *normalLaunch = launchMenu->addAction(tr("Launch")); - QAction *normalLaunchOffline = launchOfflineMenu->addAction(tr("Launch Offline")); - connect(normalLaunch, &QAction::triggered, [this]() - { - MMC->launch(m_selectedInstance, true); - }); - connect(normalLaunchOffline, &QAction::triggered, [this]() - { - MMC->launch(m_selectedInstance, false); - }); - QString profilersTitle = tr("Profilers"); - launchMenu->addSeparator()->setText(profilersTitle); - launchOfflineMenu->addSeparator()->setText(profilersTitle); - for (auto profiler : MMC->profilers().values()) - { - QAction *profilerAction = launchMenu->addAction(profiler->name()); - QAction *profilerOfflineAction = launchOfflineMenu->addAction(profiler->name()); - QString error; - if (!profiler->check(&error)) - { - profilerAction->setDisabled(true); - profilerOfflineAction->setDisabled(true); - QString profilerToolTip = tr("Profiler not setup correctly. Go into settings, \"External Tools\"."); - profilerAction->setToolTip(profilerToolTip); - profilerOfflineAction->setToolTip(profilerToolTip); - } - else - { - connect(profilerAction, &QAction::triggered, [this, profiler]() - { - MMC->launch(m_selectedInstance, true, profiler.get()); - }); - connect(profilerOfflineAction, &QAction::triggered, [this, profiler]() - { - MMC->launch(m_selectedInstance, false, profiler.get()); - }); - } - } - ui->actionLaunchInstance->setMenu(launchMenu); - ui->actionLaunchInstanceOffline->setMenu(launchOfflineMenu); -} - -QString profileInUseFilter(const QString & profile, bool used) -{ - if(used) - { - return profile + QObject::tr(" (in use)"); - } - else - { - return profile; - } -} - -void MainWindow::repopulateAccountsMenu() -{ - accountMenu->clear(); - - std::shared_ptr<MojangAccountList> accounts = MMC->accounts(); - MojangAccountPtr active_account = accounts->activeAccount(); - - QString active_username = ""; - if (active_account != nullptr) - { - active_username = active_account->username(); - const AccountProfile *profile = active_account->currentProfile(); - // this can be called before accountMenuButton exists - if (profile != nullptr && accountMenuButton) - { - auto profileLabel = profileInUseFilter(profile->name, active_account->isInUse()); - accountMenuButton->setText(profileLabel); - } - } - - if (accounts->count() <= 0) - { - QAction *action = new QAction(tr("No accounts added!"), this); - action->setEnabled(false); - accountMenu->addAction(action); - } - else - { - // TODO: Nicer way to iterate? - for (int i = 0; i < accounts->count(); i++) - { - MojangAccountPtr account = accounts->at(i); - for (auto profile : account->profiles()) - { - auto profileLabel = profileInUseFilter(profile.name, account->isInUse()); - QAction *action = new QAction(profileLabel, this); - action->setData(account->username()); - action->setCheckable(true); - if (active_username == account->username()) - { - action->setChecked(true); - } - - action->setIcon(SkinUtils::getFaceFromCache(profile.id)); - accountMenu->addAction(action); - connect(action, SIGNAL(triggered(bool)), SLOT(changeActiveAccount())); - } - } - } - - accountMenu->addSeparator(); - - QAction *action = new QAction(tr("No Default Account"), this); - action->setCheckable(true); - action->setIcon(MMC->getThemedIcon("noaccount")); - action->setData(""); - if (active_username.isEmpty()) - { - action->setChecked(true); - } - - accountMenu->addAction(action); - connect(action, SIGNAL(triggered(bool)), SLOT(changeActiveAccount())); - - accountMenu->addSeparator(); - accountMenu->addAction(ui->actionManageAccounts); -} - -void MainWindow::updatesAllowedChanged(bool allowed) -{ - if(!BuildConfig.UPDATER_ENABLED) - { - return; - } - ui->actionCheckUpdate->setEnabled(allowed); -} - -/* - * Assumes the sender is a QAction - */ -void MainWindow::changeActiveAccount() -{ - QAction *sAction = (QAction *)sender(); - // Profile's associated Mojang username - // Will need to change when profiles are properly implemented - if (sAction->data().type() != QVariant::Type::String) - return; - - QVariant data = sAction->data(); - QString id = ""; - if (!data.isNull()) - { - id = data.toString(); - } - - MMC->accounts()->setActiveAccount(id); - - activeAccountChanged(); -} - -void MainWindow::activeAccountChanged() -{ - repopulateAccountsMenu(); - - MojangAccountPtr account = MMC->accounts()->activeAccount(); - - if (account != nullptr && account->username() != "") - { - const AccountProfile *profile = account->currentProfile(); - if (profile != nullptr) - { - auto profileLabel = profileInUseFilter(profile->name, account->isInUse()); - accountMenuButton->setIcon(SkinUtils::getFaceFromCache(profile->id)); - accountMenuButton->setText(profileLabel); - return; - } - } - - // Set the icon to the "no account" icon. - accountMenuButton->setIcon(MMC->getThemedIcon("noaccount")); - accountMenuButton->setText(tr("Profiles")); -} - -bool MainWindow::eventFilter(QObject *obj, QEvent *ev) -{ - if (obj == view) - { - if (ev->type() == QEvent::KeyPress) - { - secretEventFilter->input(ev); - QKeyEvent *keyEvent = static_cast<QKeyEvent *>(ev); - switch (keyEvent->key()) - { - /* - case Qt::Key_Enter: - case Qt::Key_Return: - activateInstance(m_selectedInstance); - return true; - */ - case Qt::Key_Delete: - on_actionDeleteInstance_triggered(); - return true; - case Qt::Key_F5: - refreshInstances(); - return true; - case Qt::Key_F2: - on_actionRenameInstance_triggered(); - return true; - default: - break; - } - } - } - return QMainWindow::eventFilter(obj, ev); -} - -void MainWindow::updateNewsLabel() -{ - if (m_newsChecker->isLoadingNews()) - { - newsLabel->setText(tr("Loading news...")); - newsLabel->setEnabled(false); - } - else - { - QList<NewsEntryPtr> entries = m_newsChecker->getNewsEntries(); - if (entries.length() > 0) - { - newsLabel->setText(entries[0]->title); - newsLabel->setEnabled(true); - } - else - { - newsLabel->setText(tr("No news available.")); - newsLabel->setEnabled(false); - } - } -} - -void MainWindow::updateAvailable(GoUpdate::Status status) -{ - if(!MMC->updatesAreAllowed()) - { - updateNotAvailable(); - return; - } - UpdateDialog dlg(true, this); - UpdateAction action = (UpdateAction)dlg.exec(); - switch (action) - { - case UPDATE_LATER: - qDebug() << "Update will be installed later."; - break; - case UPDATE_NOW: - downloadUpdates(status); - break; - } -} - -void MainWindow::updateNotAvailable() -{ - UpdateDialog dlg(false, this); - dlg.exec(); -} - -QList<int> stringToIntList(const QString &string) -{ - QStringList split = string.split(',', QString::SkipEmptyParts); - QList<int> out; - for (int i = 0; i < split.size(); ++i) - { - out.append(split.at(i).toInt()); - } - return out; -} -QString intListToString(const QList<int> &list) -{ - QStringList slist; - for (int i = 0; i < list.size(); ++i) - { - slist.append(QString::number(list.at(i))); - } - return slist.join(','); -} -void MainWindow::notificationsChanged() -{ - QList<NotificationChecker::NotificationEntry> entries = m_notificationChecker->notificationEntries(); - QList<int> shownNotifications = stringToIntList(MMC->settings()->get("ShownNotifications").toString()); - for (auto it = entries.begin(); it != entries.end(); ++it) - { - NotificationChecker::NotificationEntry entry = *it; - if (!shownNotifications.contains(entry.id)) - { - NotificationDialog dialog(entry, this); - if (dialog.exec() == NotificationDialog::DontShowAgain) - { - shownNotifications.append(entry.id); - } - } - } - MMC->settings()->set("ShownNotifications", intListToString(shownNotifications)); -} - -void MainWindow::downloadUpdates(GoUpdate::Status status) -{ - if(!MMC->updatesAreAllowed()) - { - return; - } - qDebug() << "Downloading updates."; - ProgressDialog updateDlg(this); - status.rootPath = MMC->root(); - - auto dlPath = FS::PathCombine(MMC->root(), "update", "XXXXXX"); - if (!FS::ensureFilePathExists(dlPath)) - { - CustomMessageBox::selectable(this, tr("Error"), tr("Couldn't create folder for update downloads:\n%1").arg(dlPath), QMessageBox::Warning)->show(); - } - GoUpdate::DownloadTask updateTask(status, dlPath, &updateDlg); - // If the task succeeds, install the updates. - if (updateDlg.execWithTask(&updateTask)) - { - /** - * NOTE: This disables launching instances until the update either succeeds (and this process exits) - * or the update fails (and the control leaves this scope). - */ - MMC->updateIsRunning(true); - UpdateController update(this, MMC->root(), updateTask.updateFilesDir(), updateTask.operations()); - update.installUpdates(); - MMC->updateIsRunning(false); - } - else - { - CustomMessageBox::selectable(this, tr("Error"), updateTask.failReason(), QMessageBox::Warning)->show(); - } -} - -void MainWindow::onCatToggled(bool state) -{ - setCatBackground(state); - MMC->settings()->set("TheCat", state); -} - -namespace { -template <typename T> -T non_stupid_abs(T in) -{ - if (in < 0) - return -in; - return in; -} -} - -void MainWindow::setCatBackground(bool enabled) -{ - if (enabled) - { - QDateTime now = QDateTime::currentDateTime(); - QDateTime xmas(QDate(now.date().year(), 12, 25), QTime(0, 0)); - QString cat = (non_stupid_abs(now.daysTo(xmas)) <= 4) ? "catmas" : "kitteh"; - view->setStyleSheet(QString(R"( -GroupView -{ - background-image: url(:/backgrounds/%1); - background-attachment: fixed; - background-clip: padding; - background-position: top right; - background-repeat: none; - background-color:palette(base); -})").arg(cat)); - } - else - { - view->setStyleSheet(QString()); - } -} - -void MainWindow::runModalTask(Task *task) -{ - connect(task, &Task::failed, [this](QString reason) - { - CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); - }); - connect(task, &Task::succeeded, [this, task]() - { - QStringList warnings = task->warnings(); - if(warnings.count()) - { - CustomMessageBox::selectable(this, tr("Warnings"), warnings.join('\n'), QMessageBox::Warning)->show(); - } - }); - ProgressDialog loadDialog(this); - loadDialog.setSkipButton(true, tr("Abort")); - loadDialog.execWithTask(task); -} - -void MainWindow::instanceFromInstanceTask(InstanceTask *rawTask) -{ - unique_qobject_ptr<Task> task(MMC->instances()->wrapInstanceTask(rawTask)); - runModalTask(task.get()); -} - -void MainWindow::on_actionCopyInstance_triggered() -{ - if (!m_selectedInstance) - return; - - CopyInstanceDialog copyInstDlg(m_selectedInstance, this); - if (!copyInstDlg.exec()) - return; - - auto copyTask = new InstanceCopyTask(m_selectedInstance, copyInstDlg.shouldCopySaves(), copyInstDlg.shouldKeepPlaytime()); - copyTask->setName(copyInstDlg.instName()); - copyTask->setGroup(copyInstDlg.instGroup()); - copyTask->setIcon(copyInstDlg.iconKey()); - unique_qobject_ptr<Task> task(MMC->instances()->wrapInstanceTask(copyTask)); - runModalTask(task.get()); -} - -void MainWindow::finalizeInstance(InstancePtr inst) -{ - view->updateGeometries(); - setSelectedInstanceById(inst->id()); - if (MMC->accounts()->anyAccountIsValid()) - { - ProgressDialog loadDialog(this); - auto update = inst->createUpdateTask(Net::Mode::Online); - connect(update.get(), &Task::failed, [this](QString reason) - { - QString error = QString("Instance load failed: %1").arg(reason); - CustomMessageBox::selectable(this, tr("Error"), error, QMessageBox::Warning)->show(); - }); - if(update) - { - loadDialog.setSkipButton(true, tr("Abort")); - loadDialog.execWithTask(update.get()); - } - } - else - { - CustomMessageBox::selectable(this, tr("Error"), tr("MultiMC cannot download Minecraft or update instances unless you have at least " - "one account added.\nPlease add your Mojang or Minecraft account."), - QMessageBox::Warning) - ->show(); - } -} - -void MainWindow::addInstance(QString url) -{ - QString groupName; - do - { - QObject* obj = sender(); - if(!obj) - break; - QAction *action = qobject_cast<QAction *>(obj); - if(!action) - break; - auto map = action->data().toMap(); - if(!map.contains("group")) - break; - groupName = map["group"].toString(); - } while(0); - - if(groupName.isEmpty()) - { - groupName = MMC->settings()->get("LastUsedGroupForNewInstance").toString(); - } - - NewInstanceDialog newInstDlg(groupName, url, this); - if (!newInstDlg.exec()) - return; - - MMC->settings()->set("LastUsedGroupForNewInstance", newInstDlg.instGroup()); - - InstanceTask * creationTask = newInstDlg.extractTask(); - if(creationTask) - { - instanceFromInstanceTask(creationTask); - } -} - -void MainWindow::on_actionAddInstance_triggered() -{ - addInstance(); -} - -void MainWindow::droppedURLs(QList<QUrl> urls) -{ - for(auto & url:urls) - { - if(url.isLocalFile()) - { - addInstance(url.toLocalFile()); - } - else - { - addInstance(url.toString()); - } - // Only process one dropped file... - break; - } -} - -void MainWindow::on_actionREDDIT_triggered() -{ - DesktopServices::openUrl(QUrl(BuildConfig.SUBREDDIT_URL)); -} - -void MainWindow::on_actionDISCORD_triggered() -{ - DesktopServices::openUrl(QUrl(BuildConfig.DISCORD_URL)); -} - -void MainWindow::on_actionChangeInstIcon_triggered() -{ - if (!m_selectedInstance) - return; - - IconPickerDialog dlg(this); - dlg.execWithSelection(m_selectedInstance->iconKey()); - if (dlg.result() == QDialog::Accepted) - { - m_selectedInstance->setIconKey(dlg.selectedIconKey); - auto icon = MMC->icons()->getIcon(dlg.selectedIconKey); - ui->actionChangeInstIcon->setIcon(icon); - ui->changeIconButton->setIcon(icon); - } -} - -void MainWindow::iconUpdated(QString icon) -{ - if (icon == m_currentInstIcon) - { - auto icon = MMC->icons()->getIcon(m_currentInstIcon); - ui->actionChangeInstIcon->setIcon(icon); - ui->changeIconButton->setIcon(icon); - } -} - -void MainWindow::updateInstanceToolIcon(QString new_icon) -{ - m_currentInstIcon = new_icon; - auto icon = MMC->icons()->getIcon(m_currentInstIcon); - ui->actionChangeInstIcon->setIcon(icon); - ui->changeIconButton->setIcon(icon); -} - -void MainWindow::setSelectedInstanceById(const QString &id) -{ - if (id.isNull()) - return; - const QModelIndex index = MMC->instances()->getInstanceIndexById(id); - if (index.isValid()) - { - QModelIndex selectionIndex = proxymodel->mapFromSource(index); - view->selectionModel()->setCurrentIndex(selectionIndex, QItemSelectionModel::ClearAndSelect); - updateStatusCenter(); - } -} - -void MainWindow::on_actionChangeInstGroup_triggered() -{ - if (!m_selectedInstance) - return; - - bool ok = false; - InstanceId instId = m_selectedInstance->id(); - QString name(MMC->instances()->getInstanceGroup(instId)); - auto groups = MMC->instances()->getGroups(); - groups.insert(0, ""); - groups.sort(Qt::CaseInsensitive); - int foo = groups.indexOf(name); - - name = QInputDialog::getItem(this, tr("Group name"), tr("Enter a new group name."), groups, foo, true, &ok); - name = name.simplified(); - if (ok) - { - MMC->instances()->setInstanceGroup(instId, name); - } -} - -void MainWindow::deleteGroup() -{ - QObject* obj = sender(); - if(!obj) - return; - QAction *action = qobject_cast<QAction *>(obj); - if(!action) - return; - auto map = action->data().toMap(); - if(!map.contains("group")) - return; - QString groupName = map["group"].toString(); - if(!groupName.isEmpty()) - { - auto reply = QMessageBox::question(this, tr("Delete group"), tr("Are you sure you want to delete the group %1") - .arg(groupName), QMessageBox::Yes | QMessageBox::No); - if(reply == QMessageBox::Yes) - { - MMC->instances()->deleteGroup(groupName); - } - } -} - -void MainWindow::on_actionViewInstanceFolder_triggered() -{ - QString str = MMC->settings()->get("InstanceDir").toString(); - DesktopServices::openDirectory(str); -} - -void MainWindow::refreshInstances() -{ - MMC->instances()->loadList(); -} - -void MainWindow::on_actionViewCentralModsFolder_triggered() -{ - DesktopServices::openDirectory(MMC->settings()->get("CentralModsDir").toString(), true); -} - -void MainWindow::on_actionConfig_Folder_triggered() -{ - if (m_selectedInstance) - { - QString str = m_selectedInstance->instanceConfigFolder(); - DesktopServices::openDirectory(QDir(str).absolutePath()); - } -} - -void MainWindow::checkForUpdates() -{ - if(BuildConfig.UPDATER_ENABLED) - { - auto updater = MMC->updateChecker(); - updater->checkForUpdate(MMC->settings()->get("UpdateChannel").toString(), true); - } - else - { - qWarning() << "Updater not set up. Cannot check for updates."; - } -} - -void MainWindow::on_actionSettings_triggered() -{ - MMC->ShowGlobalSettings(this, "global-settings"); -} - -void MainWindow::globalSettingsClosed() -{ - // FIXME: quick HACK to make this work. improve, optimize. - MMC->instances()->loadList(); - proxymodel->invalidate(); - proxymodel->sort(0); - updateToolsMenu(); - update(); -} - -void MainWindow::on_actionInstanceSettings_triggered() -{ - MMC->showInstanceWindow(m_selectedInstance, "settings"); -} - -void MainWindow::on_actionEditInstNotes_triggered() -{ - MMC->showInstanceWindow(m_selectedInstance, "notes"); -} - -void MainWindow::on_actionWorlds_triggered() -{ - MMC->showInstanceWindow(m_selectedInstance, "worlds"); -} - -void MainWindow::on_actionEditInstance_triggered() -{ - MMC->showInstanceWindow(m_selectedInstance); -} - -void MainWindow::on_actionScreenshots_triggered() -{ - MMC->showInstanceWindow(m_selectedInstance, "screenshots"); -} - -void MainWindow::on_actionManageAccounts_triggered() -{ - MMC->ShowGlobalSettings(this, "accounts"); -} - -void MainWindow::on_actionReportBug_triggered() -{ - DesktopServices::openUrl(QUrl(BuildConfig.BUG_TRACKER_URL)); -} - -void MainWindow::on_actionPatreon_triggered() -{ - DesktopServices::openUrl(QUrl("https://www.patreon.com/multimc")); -} - -void MainWindow::on_actionMoreNews_triggered() -{ - DesktopServices::openUrl(QUrl("https://multimc.org/posts.html")); -} - -void MainWindow::newsButtonClicked() -{ - QList<NewsEntryPtr> entries = m_newsChecker->getNewsEntries(); - if (entries.count() > 0) - { - DesktopServices::openUrl(QUrl(entries[0]->link)); - } - else - { - DesktopServices::openUrl(QUrl("https://multimc.org/posts.html")); - } -} - -void MainWindow::on_actionAbout_triggered() -{ - AboutDialog dialog(this); - dialog.exec(); -} - -void MainWindow::on_actionDeleteInstance_triggered() -{ - if (!m_selectedInstance) - { - return; - } - auto id = m_selectedInstance->id(); - auto response = CustomMessageBox::selectable( - this, - tr("CAREFUL!"), - tr("About to delete: %1\nThis is permanent and will completely delete the instance.\n\nAre you sure?").arg(m_selectedInstance->name()), - QMessageBox::Warning, - QMessageBox::Yes | QMessageBox::No, - QMessageBox::No - )->exec(); - if (response == QMessageBox::Yes) - { - MMC->instances()->deleteInstance(id); - } -} - -void MainWindow::on_actionExportInstance_triggered() -{ - if (m_selectedInstance) - { - ExportInstanceDialog dlg(m_selectedInstance, this); - dlg.exec(); - } -} - -void MainWindow::on_actionRenameInstance_triggered() -{ - if (m_selectedInstance) - { - view->edit(view->currentIndex()); - } -} - -void MainWindow::on_actionViewSelectedInstFolder_triggered() -{ - if (m_selectedInstance) - { - QString str = m_selectedInstance->instanceRoot(); - DesktopServices::openDirectory(QDir(str).absolutePath()); - } -} - -void MainWindow::on_actionViewSelectedMCFolder_triggered() -{ - if (m_selectedInstance) - { - QString str = m_selectedInstance->gameRoot(); - if (!FS::ensureFilePathExists(str)) - { - // TODO: report error - return; - } - DesktopServices::openDirectory(QDir(str).absolutePath()); - } -} - - -void MainWindow::closeEvent(QCloseEvent *event) -{ - // Save the window state and geometry. - MMC->settings()->set("MainWindowState", saveState().toBase64()); - MMC->settings()->set("MainWindowGeometry", saveGeometry().toBase64()); - event->accept(); - emit isClosing(); -} - -void MainWindow::changeEvent(QEvent* event) -{ - if (event->type() == QEvent::LanguageChange) - { - retranslateUi(); - } - QMainWindow::changeEvent(event); -} - -void MainWindow::instanceActivated(QModelIndex index) -{ - if (!index.isValid()) - return; - QString id = index.data(InstanceList::InstanceIDRole).toString(); - InstancePtr inst = MMC->instances()->getInstanceById(id); - if (!inst) - return; - - activateInstance(inst); -} - -void MainWindow::on_actionLaunchInstance_triggered() -{ - if (!m_selectedInstance) - { - return; - } - if(m_selectedInstance->isRunning()) - { - MMC->kill(m_selectedInstance); - } - else - { - MMC->launch(m_selectedInstance); - } -} - -void MainWindow::activateInstance(InstancePtr instance) -{ - MMC->launch(instance); -} - -void MainWindow::on_actionLaunchInstanceOffline_triggered() -{ - if (m_selectedInstance) - { - MMC->launch(m_selectedInstance, false); - } -} - -void MainWindow::taskEnd() -{ - QObject *sender = QObject::sender(); - if (sender == m_versionLoadTask) - m_versionLoadTask = NULL; - - sender->deleteLater(); -} - -void MainWindow::startTask(Task *task) -{ - connect(task, SIGNAL(succeeded()), SLOT(taskEnd())); - connect(task, SIGNAL(failed(QString)), SLOT(taskEnd())); - task->start(); -} - -void MainWindow::instanceChanged(const QModelIndex ¤t, const QModelIndex &previous) -{ - if (!current.isValid()) - { - MMC->settings()->set("SelectedInstance", QString()); - selectionBad(); - return; - } - QString id = current.data(InstanceList::InstanceIDRole).toString(); - m_selectedInstance = MMC->instances()->getInstanceById(id); - if (m_selectedInstance) - { - ui->instanceToolBar->setEnabled(true); - if(m_selectedInstance->isRunning()) - { - ui->actionLaunchInstance->setEnabled(true); - ui->setLaunchAction(true); - } - else - { - ui->actionLaunchInstance->setEnabled(m_selectedInstance->canLaunch()); - ui->setLaunchAction(false); - } - ui->actionLaunchInstanceOffline->setEnabled(m_selectedInstance->canLaunch()); - ui->actionExportInstance->setEnabled(m_selectedInstance->canExport()); - ui->renameButton->setText(m_selectedInstance->name()); - m_statusLeft->setText(m_selectedInstance->getStatusbarDescription()); - updateStatusCenter(); - updateInstanceToolIcon(m_selectedInstance->iconKey()); - - updateToolsMenu(); - - MMC->settings()->set("SelectedInstance", m_selectedInstance->id()); - } - else - { - ui->instanceToolBar->setEnabled(false); - MMC->settings()->set("SelectedInstance", QString()); - selectionBad(); - return; - } -} - -void MainWindow::instanceSelectRequest(QString id) -{ - setSelectedInstanceById(id); -} - -void MainWindow::instanceDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight) -{ - auto current = view->selectionModel()->currentIndex(); - QItemSelection test(topLeft, bottomRight); - if (test.contains(current)) - { - instanceChanged(current, current); - } -} - -void MainWindow::selectionBad() -{ - // start by reseting everything... - m_selectedInstance = nullptr; - - statusBar()->clearMessage(); - ui->instanceToolBar->setEnabled(false); - ui->renameButton->setText(tr("Rename Instance")); - updateInstanceToolIcon("infinity"); - - // ...and then see if we can enable the previously selected instance - setSelectedInstanceById(MMC->settings()->get("SelectedInstance").toString()); -} - -void MainWindow::checkInstancePathForProblems() -{ - QString instanceFolder = MMC->settings()->get("InstanceDir").toString(); - if (FS::checkProblemticPathJava(QDir(instanceFolder))) - { - QMessageBox warning(this); - warning.setText(tr("Your instance folder contains \'!\' and this is known to cause Java problems!")); - warning.setInformativeText(tr("You have now two options: <br/>" - " - change the instance folder in the settings <br/>" - " - move this installation of MultiMC5 to a different folder")); - warning.setDefaultButton(QMessageBox::Ok); - warning.exec(); - } - auto tempFolderText = tr("This is a problem: <br/>" - " - MultiMC will likely be deleted without warning by the operating system <br/>" - " - close MultiMC now and extract it to a real location, not a temporary folder"); - QString pathfoldername = QDir(instanceFolder).absolutePath(); - if (pathfoldername.contains("Rar$", Qt::CaseInsensitive)) - { - QMessageBox warning(this); - warning.setText(tr("Your instance folder contains \'Rar$\' - that means you haven't extracted the MultiMC zip!")); - warning.setInformativeText(tempFolderText); - warning.setDefaultButton(QMessageBox::Ok); - warning.exec(); - } - else if (pathfoldername.startsWith(QDir::tempPath()) || pathfoldername.contains("/TempState/")) - { - QMessageBox warning(this); - warning.setText(tr("Your instance folder is in a temporary folder: \'%1\'!").arg(QDir::tempPath())); - warning.setInformativeText(tempFolderText); - warning.setDefaultButton(QMessageBox::Ok); - warning.exec(); - } -} - -void MainWindow::updateStatusCenter() -{ - int timeplayed = MMC->instances()->getTotalPlayTime(); - int minutesTotal = timeplayed / 60; - int seconds = timeplayed % 60; - int minutes = minutesTotal % 60; - int hours = minutesTotal / 60; - if(hours != 0) - m_statusCenter->setText(tr("Total playtime: %1h %2m %3s").arg(hours).arg(minutes).arg(seconds)); - else if(minutes != 0) - m_statusCenter->setText(tr("Total playtime: %1m %2s").arg(minutes).arg(seconds)); - else if(seconds != 0) - m_statusCenter->setText(tr("Total playtime: %1s").arg(seconds)); -} diff --git a/application/MainWindow.h b/application/MainWindow.h deleted file mode 100644 index c992ab94..00000000 --- a/application/MainWindow.h +++ /dev/null @@ -1,226 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <memory> - -#include <QMainWindow> -#include <QProcess> -#include <QTimer> - -#include "BaseInstance.h" -#include "minecraft/auth/MojangAccount.h" -#include "net/NetJob.h" -#include "updater/GoUpdate.h" - -class LaunchController; -class NewsChecker; -class NotificationChecker; -class QToolButton; -class InstanceProxyModel; -class LabeledToolButton; -class QLabel; -class MinecraftLauncher; -class BaseProfilerFactory; -class GroupView; -class ServerStatus; -class KonamiCode; -class InstanceTask; - -class MainWindow : public QMainWindow -{ - Q_OBJECT - - class Ui; - -public: - explicit MainWindow(QWidget *parent = 0); - ~MainWindow(); - - bool eventFilter(QObject *obj, QEvent *ev) override; - void closeEvent(QCloseEvent *event) override; - void changeEvent(QEvent * event) override; - - void checkInstancePathForProblems(); - - void updatesAllowedChanged(bool allowed); - - void droppedURLs(QList<QUrl> urls); -signals: - void isClosing(); - -protected: - QMenu * createPopupMenu() override; - -private slots: - void onCatToggled(bool); - - void on_actionAbout_triggered(); - - void on_actionAddInstance_triggered(); - - void on_actionREDDIT_triggered(); - - void on_actionDISCORD_triggered(); - - void on_actionCopyInstance_triggered(); - - void on_actionChangeInstGroup_triggered(); - - void on_actionChangeInstIcon_triggered(); - void on_changeIconButton_clicked(bool) - { - on_actionChangeInstIcon_triggered(); - } - - void on_actionViewInstanceFolder_triggered(); - - void on_actionConfig_Folder_triggered(); - - void on_actionViewSelectedInstFolder_triggered(); - - void on_actionViewSelectedMCFolder_triggered(); - - void refreshInstances(); - - void on_actionViewCentralModsFolder_triggered(); - - void checkForUpdates(); - - void on_actionSettings_triggered(); - - void on_actionInstanceSettings_triggered(); - - void on_actionManageAccounts_triggered(); - - void on_actionReportBug_triggered(); - - void on_actionPatreon_triggered(); - - void on_actionMoreNews_triggered(); - - void newsButtonClicked(); - - void on_actionLaunchInstance_triggered(); - - void on_actionLaunchInstanceOffline_triggered(); - - void on_actionDeleteInstance_triggered(); - - void deleteGroup(); - - void on_actionExportInstance_triggered(); - - void on_actionRenameInstance_triggered(); - void on_renameButton_clicked(bool) - { - on_actionRenameInstance_triggered(); - } - - void on_actionEditInstance_triggered(); - - void on_actionEditInstNotes_triggered(); - - void on_actionWorlds_triggered(); - - void on_actionScreenshots_triggered(); - - void taskEnd(); - - /** - * called when an icon is changed in the icon model. - */ - void iconUpdated(QString); - - void showInstanceContextMenu(const QPoint &); - - void updateToolsMenu(); - - void skinJobFinished(); - - void instanceActivated(QModelIndex); - - void instanceChanged(const QModelIndex ¤t, const QModelIndex &previous); - - void instanceSelectRequest(QString id); - - void instanceDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight); - - void selectionBad(); - - void startTask(Task *task); - - void updateAvailable(GoUpdate::Status status); - - void updateNotAvailable(); - - void notificationsChanged(); - - void activeAccountChanged(); - - void changeActiveAccount(); - - void repopulateAccountsMenu(); - - void updateNewsLabel(); - - /*! - * Runs the DownloadTask and installs updates. - */ - void downloadUpdates(GoUpdate::Status status); - - void konamiTriggered(); - - void globalSettingsClosed(); - -private: - void retranslateUi(); - - void addInstance(QString url = QString()); - void activateInstance(InstancePtr instance); - void setCatBackground(bool enabled); - void updateInstanceToolIcon(QString new_icon); - void setSelectedInstanceById(const QString &id); - void updateStatusCenter(); - - void runModalTask(Task *task); - void instanceFromInstanceTask(InstanceTask *task); - void finalizeInstance(InstancePtr inst); - -private: - std::unique_ptr<Ui> ui; - - // these are managed by Qt's memory management model! - GroupView *view = nullptr; - InstanceProxyModel *proxymodel = nullptr; - QToolButton *newsLabel = nullptr; - QLabel *m_statusLeft = nullptr; - QLabel *m_statusCenter = nullptr; - ServerStatus *m_statusRight = nullptr; - QMenu *accountMenu = nullptr; - QToolButton *accountMenuButton = nullptr; - KonamiCode * secretEventFilter = nullptr; - - unique_qobject_ptr<NetJob> skin_download_job; - unique_qobject_ptr<NewsChecker> m_newsChecker; - unique_qobject_ptr<NotificationChecker> m_notificationChecker; - - InstancePtr m_selectedInstance; - QString m_currentInstIcon; - - // managed by the application object - Task *m_versionLoadTask = nullptr; -}; diff --git a/application/MultiMC.cpp b/application/MultiMC.cpp deleted file mode 100644 index 932c7a76..00000000 --- a/application/MultiMC.cpp +++ /dev/null @@ -1,1448 +0,0 @@ -#include "MultiMC.h" -#include "BuildConfig.h" -#include "MainWindow.h" -#include "InstanceWindow.h" - -#include "groupview/AccessibleGroupView.h" -#include <QAccessible> - -#include "pages/BasePageProvider.h" -#include "pages/global/MultiMCPage.h" -#include "pages/global/MinecraftPage.h" -#include "pages/global/JavaPage.h" -#include "pages/global/LanguagePage.h" -#include "pages/global/ProxyPage.h" -#include "pages/global/ExternalToolsPage.h" -#include "pages/global/AccountListPage.h" -#include "pages/global/PasteEEPage.h" -#include "pages/global/CustomCommandsPage.h" - -#include "themes/ITheme.h" -#include "themes/SystemTheme.h" -#include "themes/DarkTheme.h" -#include "themes/BrightTheme.h" -#include "themes/CustomTheme.h" - -#include "setupwizard/SetupWizard.h" -#include "setupwizard/LanguageWizardPage.h" -#include "setupwizard/JavaWizardPage.h" -#include "setupwizard/AnalyticsWizardPage.h" - -#include <iostream> -#include <QDir> -#include <QFileInfo> -#include <QNetworkAccessManager> -#include <QTranslator> -#include <QLibraryInfo> -#include <QList> -#include <QStringList> -#include <QDebug> -#include <QStyleFactory> - -#include "dialogs/CustomMessageBox.h" -#include "InstanceList.h" - -#include <minecraft/auth/MojangAccountList.h> -#include "icons/IconList.h" -#include "net/HttpMetaCache.h" -#include "Env.h" - -#include "java/JavaUtils.h" - -#include "updater/UpdateChecker.h" - -#include "tools/JProfiler.h" -#include "tools/JVisualVM.h" -#include "tools/MCEditTool.h" - -#include <xdgicon.h> -#include "settings/INISettingsObject.h" -#include "settings/Setting.h" - -#include "translations/TranslationsModel.h" - -#include <Commandline.h> -#include <FileSystem.h> -#include <DesktopServices.h> -#include <LocalPeer.h> - -#include <ganalytics.h> -#include <sys.h> - -#include "pagedialog/PageDialog.h" - - -#if defined Q_OS_WIN32 -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include <windows.h> -#include <stdio.h> -#endif - -#define STRINGIFY(x) #x -#define TOSTRING(x) STRINGIFY(x) - -static const QLatin1String liveCheckFile("live.check"); - -using namespace Commandline; - -#define MACOS_HINT "If you are on macOS Sierra, you might have to move MultiMC.app to your /Applications or ~/Applications folder. "\ - "This usually fixes the problem and you can move the application elsewhere afterwards.\n"\ - "\n" - -static void appDebugOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg) -{ - const char *levels = "DWCFIS"; - const QString format("%1 %2 %3\n"); - - qint64 msecstotal = MMC->timeSinceStart(); - qint64 seconds = msecstotal / 1000; - qint64 msecs = msecstotal % 1000; - QString foo; - char buf[1025] = {0}; - ::snprintf(buf, 1024, "%5lld.%03lld", seconds, msecs); - - QString out = format.arg(buf).arg(levels[type]).arg(msg); - - MMC->logFile->write(out.toUtf8()); - MMC->logFile->flush(); - QTextStream(stderr) << out.toLocal8Bit(); - fflush(stderr); -} - -MultiMC::MultiMC(int &argc, char **argv) : QApplication(argc, argv) -{ -#if defined Q_OS_WIN32 - // attach the parent console - if(AttachConsole(ATTACH_PARENT_PROCESS)) - { - // if attach succeeds, reopen and sync all the i/o - if(freopen("CON", "w", stdout)) - { - std::cout.sync_with_stdio(); - } - if(freopen("CON", "w", stderr)) - { - std::cerr.sync_with_stdio(); - } - if(freopen("CON", "r", stdin)) - { - std::cin.sync_with_stdio(); - } - auto out = GetStdHandle (STD_OUTPUT_HANDLE); - DWORD written; - const char * endline = "\n"; - WriteConsole(out, endline, strlen(endline), &written, NULL); - consoleAttached = true; - } -#endif - setOrganizationName("MultiMC"); - setOrganizationDomain("multimc.org"); - setApplicationName("MultiMC5"); - setApplicationDisplayName("MultiMC 5"); - setApplicationVersion(BuildConfig.printableVersionString()); - - startTime = QDateTime::currentDateTime(); - -#ifdef Q_OS_LINUX - { - QFile osrelease("/proc/sys/kernel/osrelease"); - if (osrelease.open(QFile::ReadOnly | QFile::Text)) { - QTextStream in(&osrelease); - auto contents = in.readAll(); - if( - contents.contains("WSL", Qt::CaseInsensitive) || - contents.contains("Microsoft", Qt::CaseInsensitive) - ) { - showFatalErrorMessage( - "Unsupported system detected!", - "Linux-on-Windows distributions are not supported.\n\n" - "Please use the Windows MultiMC binary when playing on Windows." - ); - return; - } - } - } -#endif - - // Don't quit on hiding the last window - this->setQuitOnLastWindowClosed(false); - - // Commandline parsing - QHash<QString, QVariant> args; - { - Parser parser(FlagStyle::GNU, ArgumentStyle::SpaceAndEquals); - - // --help - parser.addSwitch("help"); - parser.addShortOpt("help", 'h'); - parser.addDocumentation("help", "Display this help and exit."); - // --version - parser.addSwitch("version"); - parser.addShortOpt("version", 'V'); - parser.addDocumentation("version", "Display program version and exit."); - // --dir - parser.addOption("dir"); - parser.addShortOpt("dir", 'd'); - parser.addDocumentation("dir", "Use the supplied folder as MultiMC root instead of " - "the binary location (use '.' for current)"); - // --launch - parser.addOption("launch"); - parser.addShortOpt("launch", 'l'); - parser.addDocumentation("launch", "Launch the specified instance (by instance ID)"); - // --server - parser.addOption("server"); - parser.addShortOpt("server", 's'); - parser.addDocumentation("server", "Join the specified server on launch " - "(only valid in combination with --launch)"); - // --alive - parser.addSwitch("alive"); - parser.addDocumentation("alive", "Write a small '" + liveCheckFile + "' file after MultiMC starts"); - // --import - parser.addOption("import"); - parser.addShortOpt("import", 'I'); - parser.addDocumentation("import", "Import instance from specified zip (local path or URL)"); - - // parse the arguments - try - { - args = parser.parse(arguments()); - } - catch (const ParsingError &e) - { - std::cerr << "CommandLineError: " << e.what() << std::endl; - if(argc > 0) - std::cerr << "Try '" << argv[0] << " -h' to get help on MultiMC's command line parameters." - << std::endl; - m_status = MultiMC::Failed; - return; - } - - // display help and exit - if (args["help"].toBool()) - { - std::cout << qPrintable(parser.compileHelp(arguments()[0])); - m_status = MultiMC::Succeeded; - return; - } - - // display version and exit - if (args["version"].toBool()) - { - std::cout << "Version " << BuildConfig.printableVersionString().toStdString() << std::endl; - std::cout << "Git " << BuildConfig.GIT_COMMIT.toStdString() << std::endl; - m_status = MultiMC::Succeeded; - return; - } - } - m_instanceIdToLaunch = args["launch"].toString(); - m_serverToJoin = args["server"].toString(); - m_liveCheck = args["alive"].toBool(); - m_zipToImport = args["import"].toUrl(); - - QString origcwdPath = QDir::currentPath(); - QString binPath = applicationDirPath(); - QString adjustedBy; - QString dataPath; - // change folder - QString dirParam = args["dir"].toString(); - if (!dirParam.isEmpty()) - { - // the dir param. it makes multimc data path point to whatever the user specified - // on command line - adjustedBy += "Command line " + dirParam; - dataPath = dirParam; - } - else - { -#ifdef MULTIMC_LINUX_DATADIR - QString xdgDataHome = QFile::decodeName(qgetenv("XDG_DATA_HOME")); - if (xdgDataHome.isEmpty()) - xdgDataHome = QDir::homePath() + QLatin1String("/.local/share"); - dataPath = xdgDataHome + "/multimc"; - adjustedBy += "XDG standard " + dataPath; -#elif defined(Q_OS_MAC) - QDir foo(FS::PathCombine(applicationDirPath(), "../../Data")); - dataPath = foo.absolutePath(); - adjustedBy += "Fallback to special Mac location " + dataPath; -#else - dataPath = applicationDirPath(); - adjustedBy += "Fallback to binary path " + dataPath; -#endif - } - - if (!FS::ensureFolderPathExists(dataPath)) - { - showFatalErrorMessage( - "MultiMC data folder could not be created.", - "MultiMC data folder could not be created.\n" - "\n" -#if defined(Q_OS_MAC) - MACOS_HINT -#endif - "Make sure you have the right permissions to the MultiMC data folder and any folder needed to access it.\n" - "\n" - "MultiMC cannot continue until you fix this problem." - ); - return; - } - if (!QDir::setCurrent(dataPath)) - { - showFatalErrorMessage( - "MultiMC data folder could not be opened.", - "MultiMC data folder could not be opened.\n" - "\n" -#if defined(Q_OS_MAC) - MACOS_HINT -#endif - "Make sure you have the right permissions to the MultiMC data folder.\n" - "\n" - "MultiMC cannot continue until you fix this problem." - ); - return; - } - - if(m_instanceIdToLaunch.isEmpty() && !m_serverToJoin.isEmpty()) - { - std::cerr << "--server can only be used in combination with --launch!" << std::endl; - m_status = MultiMC::Failed; - return; - } - -#if defined(Q_OS_MAC) - // move user data to new location if on macOS and it still exists in Contents/MacOS - QDir fi(applicationDirPath()); - QString originalData = fi.absolutePath(); - // if the config file exists in Contents/MacOS, then user data is still there and needs to moved - if (QFileInfo::exists(FS::PathCombine(originalData, "multimc.cfg"))) - { - if (!QFileInfo::exists(FS::PathCombine(originalData, "dontmovemacdata"))) - { - QMessageBox::StandardButton askMoveDialogue; - askMoveDialogue = QMessageBox::question(nullptr, "MultiMC 5", "Would you like to move application data to a new data location? It will improve MultiMC's performance, but if you switch to older versions it will look like instances have disappeared. If you select no, you can migrate later in settings. You should select yes unless you're commonly switching between different versions of MultiMC (eg. develop and stable).", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); - if (askMoveDialogue == QMessageBox::Yes) - { - qDebug() << "On macOS and found config file in old location, moving user data..."; - QDir dir; - QStringList dataFiles { - "*.log", // MultiMC-@.log - "accounts.json", - "accounts", - "assets", - "cache", - "icons", - "instances", - "libraries", - "meta", - "metacache", - "mods", - "multimc.cfg", - "themes", - "translations" - }; - QDirIterator files(originalData, dataFiles); - while (files.hasNext()) { - QString filePath(files.next()); - QString fileName(files.fileName()); - if (!dir.rename(filePath, FS::PathCombine(dataPath, fileName))) - { - qWarning() << "Failed to move " << fileName; - } - } - } - else - { - dataPath = originalData; - QDir::setCurrent(dataPath); - QFile file(originalData + "/dontmovemacdata"); - file.open(QIODevice::WriteOnly); - } - } - else - { - dataPath = originalData; - QDir::setCurrent(dataPath); - } - } -#endif - - /* - * Establish the mechanism for communication with an already running MultiMC that uses the same data path. - * If there is one, tell it what the user actually wanted to do and exit. - * We want to initialize this before logging to avoid messing with the log of a potential already running copy. - */ - auto appID = ApplicationId::fromPathAndVersion(QDir::currentPath(), BuildConfig.printableVersionString()); - { - // FIXME: you can run the same binaries with multiple data dirs and they won't clash. This could cause issues for updates. - m_peerInstance = new LocalPeer(this, appID); - connect(m_peerInstance, &LocalPeer::messageReceived, this, &MultiMC::messageReceived); - if(m_peerInstance->isClient()) - { - int timeout = 2000; - - if(m_instanceIdToLaunch.isEmpty()) - { - m_peerInstance->sendMessage("activate", timeout); - - if(!m_zipToImport.isEmpty()) - { - m_peerInstance->sendMessage("import " + m_zipToImport.toString(), timeout); - } - } - else - { - if(!m_serverToJoin.isEmpty()) - { - m_peerInstance->sendMessage( - "launch-with-server " + m_instanceIdToLaunch + " " + m_serverToJoin, timeout); - } - else - { - m_peerInstance->sendMessage("launch " + m_instanceIdToLaunch, timeout); - } - } - m_status = MultiMC::Succeeded; - return; - } - } - - // init the logger - { - static const QString logBase = "MultiMC-%0.log"; - auto moveFile = [](const QString &oldName, const QString &newName) - { - QFile::remove(newName); - QFile::copy(oldName, newName); - QFile::remove(oldName); - }; - - moveFile(logBase.arg(3), logBase.arg(4)); - moveFile(logBase.arg(2), logBase.arg(3)); - moveFile(logBase.arg(1), logBase.arg(2)); - moveFile(logBase.arg(0), logBase.arg(1)); - - logFile = std::unique_ptr<QFile>(new QFile(logBase.arg(0))); - if(!logFile->open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate)) - { - showFatalErrorMessage( - "MultiMC data folder is not writable!", - "MultiMC couldn't create a log file - the MultiMC data folder is not writable.\n" - "\n" - #if defined(Q_OS_MAC) - MACOS_HINT - #endif - "Make sure you have write permissions to the MultiMC data folder.\n" - "\n" - "MultiMC cannot continue until you fix this problem." - ); - return; - } - qInstallMessageHandler(appDebugOutput); - qDebug() << "<> Log initialized."; - } - - // Set up paths - { - // Root path is used for updates. -#ifdef Q_OS_LINUX - QDir foo(FS::PathCombine(binPath, "..")); - m_rootPath = foo.absolutePath(); -#elif defined(Q_OS_WIN32) - m_rootPath = binPath; -#elif defined(Q_OS_MAC) - QDir foo(FS::PathCombine(binPath, "../..")); - m_rootPath = foo.absolutePath(); - // on macOS, touch the root to force Finder to reload the .app metadata (and fix any icon change issues) - FS::updateTimestamp(m_rootPath); -#endif - -#ifdef MULTIMC_JARS_LOCATION - ENV.setJarsPath( TOSTRING(MULTIMC_JARS_LOCATION) ); -#endif - - qDebug() << "MultiMC 5, (c) 2013-2021 MultiMC Contributors"; - qDebug() << "Version : " << BuildConfig.printableVersionString(); - qDebug() << "Git commit : " << BuildConfig.GIT_COMMIT; - qDebug() << "Git refspec : " << BuildConfig.GIT_REFSPEC; - if (adjustedBy.size()) - { - qDebug() << "Work dir before adjustment : " << origcwdPath; - qDebug() << "Work dir after adjustment : " << QDir::currentPath(); - qDebug() << "Adjusted by : " << adjustedBy; - } - else - { - qDebug() << "Work dir : " << QDir::currentPath(); - } - qDebug() << "Binary path : " << binPath; - qDebug() << "Application root path : " << m_rootPath; - if(!m_instanceIdToLaunch.isEmpty()) - { - qDebug() << "ID of instance to launch : " << m_instanceIdToLaunch; - } - if(!m_serverToJoin.isEmpty()) - { - qDebug() << "Address of server to join :" << m_serverToJoin; - } - qDebug() << "<> Paths set."; - } - - do // once - { - if(m_liveCheck) - { - QFile check(liveCheckFile); - if(!check.open(QIODevice::WriteOnly | QIODevice::Truncate)) - { - qWarning() << "Could not open" << liveCheckFile << "for writing!"; - break; - } - auto payload = appID.toString().toUtf8(); - if(check.write(payload) != payload.size()) - { - qWarning() << "Could not write into" << liveCheckFile << "!"; - check.remove(); - break; - } - check.close(); - } - } while(false); - - // Initialize application settings - { - m_settings.reset(new INISettingsObject("multimc.cfg", this)); - // Updates - m_settings->registerSetting("UpdateChannel", BuildConfig.VERSION_CHANNEL); - m_settings->registerSetting("AutoUpdate", true); - - // Theming - m_settings->registerSetting("IconTheme", QString("multimc")); - m_settings->registerSetting("ApplicationTheme", QString("system")); - - // Notifications - m_settings->registerSetting("ShownNotifications", QString()); - - // Remembered state - m_settings->registerSetting("LastUsedGroupForNewInstance", QString()); - - QString defaultMonospace; - int defaultSize = 11; -#ifdef Q_OS_WIN32 - defaultMonospace = "Courier"; - defaultSize = 10; -#elif defined(Q_OS_MAC) - defaultMonospace = "Menlo"; -#else - defaultMonospace = "Monospace"; -#endif - - // resolve the font so the default actually matches - QFont consoleFont; - consoleFont.setFamily(defaultMonospace); - consoleFont.setStyleHint(QFont::Monospace); - consoleFont.setFixedPitch(true); - QFontInfo consoleFontInfo(consoleFont); - QString resolvedDefaultMonospace = consoleFontInfo.family(); - QFont resolvedFont(resolvedDefaultMonospace); - qDebug() << "Detected default console font:" << resolvedDefaultMonospace - << ", substitutions:" << resolvedFont.substitutions().join(','); - - m_settings->registerSetting("ConsoleFont", resolvedDefaultMonospace); - m_settings->registerSetting("ConsoleFontSize", defaultSize); - m_settings->registerSetting("ConsoleMaxLines", 100000); - m_settings->registerSetting("ConsoleOverflowStop", true); - - // Folders - m_settings->registerSetting("InstanceDir", "instances"); - m_settings->registerSetting({"CentralModsDir", "ModsDir"}, "mods"); - m_settings->registerSetting("IconsDir", "icons"); - - // Editors - m_settings->registerSetting("JsonEditor", QString()); - - // Language - m_settings->registerSetting("Language", QString()); - - // Console - m_settings->registerSetting("ShowConsole", false); - m_settings->registerSetting("AutoCloseConsole", false); - m_settings->registerSetting("ShowConsoleOnError", true); - m_settings->registerSetting("LogPrePostOutput", true); - - // Window Size - m_settings->registerSetting({"LaunchMaximized", "MCWindowMaximize"}, false); - m_settings->registerSetting({"MinecraftWinWidth", "MCWindowWidth"}, 854); - m_settings->registerSetting({"MinecraftWinHeight", "MCWindowHeight"}, 480); - - // Proxy Settings - m_settings->registerSetting("ProxyType", "None"); - m_settings->registerSetting({"ProxyAddr", "ProxyHostName"}, "127.0.0.1"); - m_settings->registerSetting("ProxyPort", 8080); - m_settings->registerSetting({"ProxyUser", "ProxyUsername"}, ""); - m_settings->registerSetting({"ProxyPass", "ProxyPassword"}, ""); - - // Memory - m_settings->registerSetting({"MinMemAlloc", "MinMemoryAlloc"}, 512); - m_settings->registerSetting({"MaxMemAlloc", "MaxMemoryAlloc"}, 1024); - m_settings->registerSetting("PermGen", 128); - - // Java Settings - m_settings->registerSetting("JavaPath", ""); - m_settings->registerSetting("JavaTimestamp", 0); - m_settings->registerSetting("JavaArchitecture", ""); - m_settings->registerSetting("JavaVersion", ""); - m_settings->registerSetting("JavaVendor", ""); - m_settings->registerSetting("LastHostname", ""); - m_settings->registerSetting("JvmArgs", ""); - - // Native library workarounds - m_settings->registerSetting("UseNativeOpenAL", false); - m_settings->registerSetting("UseNativeGLFW", false); - - // Game time - m_settings->registerSetting("ShowGameTime", true); - m_settings->registerSetting("RecordGameTime", true); - - // Minecraft launch method - m_settings->registerSetting("MCLaunchMethod", "LauncherPart"); - - // Wrapper command for launch - m_settings->registerSetting("WrapperCommand", ""); - - // Custom Commands - m_settings->registerSetting({"PreLaunchCommand", "PreLaunchCmd"}, ""); - m_settings->registerSetting({"PostExitCommand", "PostExitCmd"}, ""); - - // The cat - m_settings->registerSetting("TheCat", false); - - m_settings->registerSetting("InstSortMode", "Name"); - m_settings->registerSetting("SelectedInstance", QString()); - - // Window state and geometry - m_settings->registerSetting("MainWindowState", ""); - m_settings->registerSetting("MainWindowGeometry", ""); - - m_settings->registerSetting("ConsoleWindowState", ""); - m_settings->registerSetting("ConsoleWindowGeometry", ""); - - m_settings->registerSetting("SettingsGeometry", ""); - - m_settings->registerSetting("PagedGeometry", ""); - - m_settings->registerSetting("NewInstanceGeometry", ""); - - m_settings->registerSetting("UpdateDialogGeometry", ""); - - // paste.ee API key - m_settings->registerSetting("PasteEEAPIKey", "multimc"); - - if(!BuildConfig.ANALYTICS_ID.isEmpty()) - { - // Analytics - m_settings->registerSetting("Analytics", true); - m_settings->registerSetting("AnalyticsSeen", 0); - m_settings->registerSetting("AnalyticsClientID", QString()); - } - - // Init page provider - { - m_globalSettingsProvider = std::make_shared<GenericPageProvider>(tr("Settings")); - m_globalSettingsProvider->addPage<MultiMCPage>(); - m_globalSettingsProvider->addPage<MinecraftPage>(); - m_globalSettingsProvider->addPage<JavaPage>(); - m_globalSettingsProvider->addPage<LanguagePage>(); - m_globalSettingsProvider->addPage<CustomCommandsPage>(); - m_globalSettingsProvider->addPage<ProxyPage>(); - m_globalSettingsProvider->addPage<ExternalToolsPage>(); - m_globalSettingsProvider->addPage<AccountListPage>(); - m_globalSettingsProvider->addPage<PasteEEPage>(); - } - qDebug() << "<> Settings loaded."; - } - -#ifndef QT_NO_ACCESSIBILITY - QAccessible::installFactory(groupViewAccessibleFactory); -#endif /* !QT_NO_ACCESSIBILITY */ - - // load translations - { - m_translations.reset(new TranslationsModel("translations")); - auto bcp47Name = m_settings->get("Language").toString(); - m_translations->selectLanguage(bcp47Name); - qDebug() << "Your language is" << bcp47Name; - qDebug() << "<> Translations loaded."; - } - - // initialize the updater - if(BuildConfig.UPDATER_ENABLED) - { - m_updateChecker.reset(new UpdateChecker(BuildConfig.CHANLIST_URL, BuildConfig.VERSION_CHANNEL, BuildConfig.VERSION_BUILD)); - qDebug() << "<> Updater started."; - } - - // Instance icons - { - auto setting = MMC->settings()->getSetting("IconsDir"); - QStringList instFolders = - { - ":/icons/multimc/32x32/instances/", - ":/icons/multimc/50x50/instances/", - ":/icons/multimc/128x128/instances/", - ":/icons/multimc/scalable/instances/" - }; - m_icons.reset(new IconList(instFolders, setting->get().toString())); - connect(setting.get(), &Setting::SettingChanged,[&](const Setting &, QVariant value) - { - m_icons->directoryChanged(value.toString()); - }); - ENV.registerIconList(m_icons); - qDebug() << "<> Instance icons intialized."; - } - - // Icon themes - { - // TODO: icon themes and instance icons do not mesh well together. Rearrange and fix discrepancies! - // set icon theme search path! - auto searchPaths = QIcon::themeSearchPaths(); - searchPaths.append("iconthemes"); - QIcon::setThemeSearchPaths(searchPaths); - qDebug() << "<> Icon themes initialized."; - } - - // Initialize widget themes - { - auto insertTheme = [this](ITheme * theme) - { - m_themes.insert(std::make_pair(theme->id(), std::unique_ptr<ITheme>(theme))); - }; - auto darkTheme = new DarkTheme(); - insertTheme(new SystemTheme()); - insertTheme(darkTheme); - insertTheme(new BrightTheme()); - insertTheme(new CustomTheme(darkTheme, "custom")); - qDebug() << "<> Widget themes initialized."; - } - - // initialize and load all instances - { - auto InstDirSetting = m_settings->getSetting("InstanceDir"); - // instance path: check for problems with '!' in instance path and warn the user in the log - // and remember that we have to show him a dialog when the gui starts (if it does so) - QString instDir = InstDirSetting->get().toString(); - qDebug() << "Instance path : " << instDir; - if (FS::checkProblemticPathJava(QDir(instDir))) - { - qWarning() << "Your instance path contains \'!\' and this is known to cause java problems!"; - } - m_instances.reset(new InstanceList(m_settings, instDir, this)); - connect(InstDirSetting.get(), &Setting::SettingChanged, m_instances.get(), &InstanceList::on_InstFolderChanged); - qDebug() << "Loading Instances..."; - m_instances->loadList(); - qDebug() << "<> Instances loaded."; - } - - // and accounts - { - m_accounts.reset(new MojangAccountList(this)); - qDebug() << "Loading accounts..."; - m_accounts->setListFilePath("accounts.json", true); - m_accounts->loadList(); - qDebug() << "<> Accounts loaded."; - } - - // init the http meta cache - { - ENV.initHttpMetaCache(); - qDebug() << "<> Cache initialized."; - } - - // init proxy settings - { - QString proxyTypeStr = settings()->get("ProxyType").toString(); - QString addr = settings()->get("ProxyAddr").toString(); - int port = settings()->get("ProxyPort").value<qint16>(); - QString user = settings()->get("ProxyUser").toString(); - QString pass = settings()->get("ProxyPass").toString(); - ENV.updateProxySettings(proxyTypeStr, addr, port, user, pass); - qDebug() << "<> Proxy settings done."; - } - - // now we have network, download translation updates - m_translations->downloadIndex(); - - //FIXME: what to do with these? - m_profilers.insert("jprofiler", std::shared_ptr<BaseProfilerFactory>(new JProfilerFactory())); - m_profilers.insert("jvisualvm", std::shared_ptr<BaseProfilerFactory>(new JVisualVMFactory())); - for (auto profiler : m_profilers.values()) - { - profiler->registerSettings(m_settings); - } - - // Create the MCEdit thing... why is this here? - { - m_mcedit.reset(new MCEditTool(m_settings)); - } - - connect(this, &MultiMC::aboutToQuit, [this](){ - if(m_instances) - { - // save any remaining instance state - m_instances->saveNow(); - } - if(logFile) - { - logFile->flush(); - logFile->close(); - } - }); - - { - setIconTheme(settings()->get("IconTheme").toString()); - qDebug() << "<> Icon theme set."; - setApplicationTheme(settings()->get("ApplicationTheme").toString(), true); - qDebug() << "<> Application theme set."; - } - - // Initialize analytics - [this]() - { - const int analyticsVersion = 2; - if(BuildConfig.ANALYTICS_ID.isEmpty()) - { - return; - } - - auto analyticsSetting = m_settings->getSetting("Analytics"); - connect(analyticsSetting.get(), &Setting::SettingChanged, this, &MultiMC::analyticsSettingChanged); - QString clientID = m_settings->get("AnalyticsClientID").toString(); - if(clientID.isEmpty()) - { - clientID = QUuid::createUuid().toString(); - clientID.remove(QLatin1Char('{')); - clientID.remove(QLatin1Char('}')); - m_settings->set("AnalyticsClientID", clientID); - } - m_analytics = new GAnalytics(BuildConfig.ANALYTICS_ID, clientID, analyticsVersion, this); - m_analytics->setLogLevel(GAnalytics::Debug); - m_analytics->setAnonymizeIPs(true); - m_analytics->setNetworkAccessManager(&ENV.qnam()); - - if(m_settings->get("AnalyticsSeen").toInt() < m_analytics->version()) - { - qDebug() << "Analytics info not seen by user yet (or old version)."; - return; - } - if(!m_settings->get("Analytics").toBool()) - { - qDebug() << "Analytics disabled by user."; - return; - } - - m_analytics->enable(); - qDebug() << "<> Initialized analytics with tid" << BuildConfig.ANALYTICS_ID; - }(); - - if(createSetupWizard()) - { - return; - } - performMainStartupAction(); -} - -bool MultiMC::createSetupWizard() -{ - bool javaRequired = [&]() - { - QString currentHostName = QHostInfo::localHostName(); - QString oldHostName = settings()->get("LastHostname").toString(); - if (currentHostName != oldHostName) - { - settings()->set("LastHostname", currentHostName); - return true; - } - QString currentJavaPath = settings()->get("JavaPath").toString(); - QString actualPath = FS::ResolveExecutable(currentJavaPath); - if (actualPath.isNull()) - { - return true; - } - return false; - }(); - bool analyticsRequired = [&]() - { - if(BuildConfig.ANALYTICS_ID.isEmpty()) - { - return false; - } - if (!settings()->get("Analytics").toBool()) - { - return false; - } - if (settings()->get("AnalyticsSeen").toInt() < analytics()->version()) - { - return true; - } - return false; - }(); - bool languageRequired = [&]() - { - if (settings()->get("Language").toString().isEmpty()) - return true; - return false; - }(); - bool wizardRequired = javaRequired || analyticsRequired || languageRequired; - - if(wizardRequired) - { - m_setupWizard = new SetupWizard(nullptr); - if (languageRequired) - { - m_setupWizard->addPage(new LanguageWizardPage(m_setupWizard)); - } - if (javaRequired) - { - m_setupWizard->addPage(new JavaWizardPage(m_setupWizard)); - } - if(analyticsRequired) - { - m_setupWizard->addPage(new AnalyticsWizardPage(m_setupWizard)); - } - connect(m_setupWizard, &QDialog::finished, this, &MultiMC::setupWizardFinished); - m_setupWizard->show(); - return true; - } - return false; -} - -void MultiMC::setupWizardFinished(int status) -{ - qDebug() << "Wizard result =" << status; - performMainStartupAction(); -} - -void MultiMC::performMainStartupAction() -{ - m_status = MultiMC::Initialized; - if(!m_instanceIdToLaunch.isEmpty()) - { - auto inst = instances()->getInstanceById(m_instanceIdToLaunch); - if(inst) - { - MinecraftServerTargetPtr serverToJoin = nullptr; - - if(!m_serverToJoin.isEmpty()) - { - serverToJoin.reset(new MinecraftServerTarget(MinecraftServerTarget::parse(m_serverToJoin))); - qDebug() << "<> Instance" << m_instanceIdToLaunch << "launching with server" << m_serverToJoin; - } - else - { - qDebug() << "<> Instance" << m_instanceIdToLaunch << "launching"; - } - - launch(inst, true, nullptr, serverToJoin); - return; - } - } - if(!m_mainWindow) - { - // normal main window - showMainWindow(false); - qDebug() << "<> Main window shown."; - } - if(!m_zipToImport.isEmpty()) - { - qDebug() << "<> Importing instance from zip:" << m_zipToImport; - m_mainWindow->droppedURLs({ m_zipToImport }); - } -} - -void MultiMC::showFatalErrorMessage(const QString& title, const QString& content) -{ - m_status = MultiMC::Failed; - auto dialog = CustomMessageBox::selectable(nullptr, title, content, QMessageBox::Critical); - dialog->exec(); -} - -MultiMC::~MultiMC() -{ - // kill the other globals. - Env::dispose(); - - // Shut down logger by setting the logger function to nothing - qInstallMessageHandler(nullptr); - -#if defined Q_OS_WIN32 - // Detach from Windows console - if(consoleAttached) - { - fclose(stdout); - fclose(stdin); - fclose(stderr); - FreeConsole(); - } -#endif -} - -void MultiMC::messageReceived(const QString& message) -{ - if(status() != Initialized) - { - qDebug() << "Received message" << message << "while still initializing. It will be ignored."; - return; - } - - QString command = message.section(' ', 0, 0); - - if(command == "activate") - { - showMainWindow(); - } - else if(command == "import") - { - QString arg = message.section(' ', 1); - if(arg.isEmpty()) - { - qWarning() << "Received" << command << "message without a zip path/URL."; - return; - } - m_mainWindow->droppedURLs({ QUrl(arg) }); - } - else if(command == "launch") - { - QString arg = message.section(' ', 1); - if(arg.isEmpty()) - { - qWarning() << "Received" << command << "message without an instance ID."; - return; - } - auto inst = instances()->getInstanceById(arg); - if(inst) - { - launch(inst, true, nullptr); - } - } - else if(command == "launch-with-server") - { - QString instanceID = message.section(' ', 1, 1); - QString serverToJoin = message.section(' ', 2, 2); - if(instanceID.isEmpty()) - { - qWarning() << "Received" << command << "message without an instance ID."; - return; - } - if(serverToJoin.isEmpty()) - { - qWarning() << "Received" << command << "message without a server to join."; - return; - } - auto inst = instances()->getInstanceById(instanceID); - if(inst) - { - launch( - inst, - true, - nullptr, - std::make_shared<MinecraftServerTarget>(MinecraftServerTarget::parse(serverToJoin)) - ); - } - } - else - { - qWarning() << "Received invalid message" << message; - } -} - -void MultiMC::analyticsSettingChanged(const Setting&, QVariant value) -{ - if(!m_analytics) - return; - bool enabled = value.toBool(); - if(enabled) - { - qDebug() << "Analytics enabled by user."; - } - else - { - qDebug() << "Analytics disabled by user."; - } - m_analytics->enable(enabled); -} - -std::shared_ptr<TranslationsModel> MultiMC::translations() -{ - return m_translations; -} - -std::shared_ptr<JavaInstallList> MultiMC::javalist() -{ - if (!m_javalist) - { - m_javalist.reset(new JavaInstallList()); - } - return m_javalist; -} - -std::vector<ITheme *> MultiMC::getValidApplicationThemes() -{ - std::vector<ITheme *> ret; - auto iter = m_themes.cbegin(); - while (iter != m_themes.cend()) - { - ret.push_back((*iter).second.get()); - iter++; - } - return ret; -} - -void MultiMC::setApplicationTheme(const QString& name, bool initial) -{ - auto systemPalette = qApp->palette(); - auto themeIter = m_themes.find(name); - if(themeIter != m_themes.end()) - { - auto & theme = (*themeIter).second; - theme->apply(initial); - } - else - { - qWarning() << "Tried to set invalid theme:" << name; - } -} - -void MultiMC::setIconTheme(const QString& name) -{ - XdgIcon::setThemeName(name); -} - -QIcon MultiMC::getThemedIcon(const QString& name) -{ - return XdgIcon::fromTheme(name); -} - -bool MultiMC::openJsonEditor(const QString &filename) -{ - const QString file = QDir::current().absoluteFilePath(filename); - if (m_settings->get("JsonEditor").toString().isEmpty()) - { - return DesktopServices::openUrl(QUrl::fromLocalFile(file)); - } - else - { - //return DesktopServices::openFile(m_settings->get("JsonEditor").toString(), file); - return DesktopServices::run(m_settings->get("JsonEditor").toString(), {file}); - } -} - -bool MultiMC::launch( - InstancePtr instance, - bool online, - BaseProfilerFactory *profiler, - MinecraftServerTargetPtr serverToJoin -) { - if(m_updateRunning) - { - qDebug() << "Cannot launch instances while an update is running. Please try again when updates are completed."; - } - else if(instance->canLaunch()) - { - auto & extras = m_instanceExtras[instance->id()]; - auto & window = extras.window; - if(window) - { - if(!window->saveAll()) - { - return false; - } - } - auto & controller = extras.controller; - controller.reset(new LaunchController()); - controller->setInstance(instance); - controller->setOnline(online); - controller->setProfiler(profiler); - controller->setServerToJoin(serverToJoin); - if(window) - { - controller->setParentWidget(window); - } - else if(m_mainWindow) - { - controller->setParentWidget(m_mainWindow); - } - connect(controller.get(), &LaunchController::succeeded, this, &MultiMC::controllerSucceeded); - connect(controller.get(), &LaunchController::failed, this, &MultiMC::controllerFailed); - addRunningInstance(); - controller->start(); - return true; - } - else if (instance->isRunning()) - { - showInstanceWindow(instance, "console"); - return true; - } - else if (instance->canEdit()) - { - showInstanceWindow(instance); - return true; - } - return false; -} - -bool MultiMC::kill(InstancePtr instance) -{ - if (!instance->isRunning()) - { - qWarning() << "Attempted to kill instance" << instance->id() << ", which isn't running."; - return false; - } - auto & extras = m_instanceExtras[instance->id()]; - // NOTE: copy of the shared pointer keeps it alive - auto controller = extras.controller; - if(controller) - { - return controller->abort(); - } - return true; -} - -void MultiMC::addRunningInstance() -{ - m_runningInstances ++; - if(m_runningInstances == 1) - { - emit updateAllowedChanged(false); - } -} - -void MultiMC::subRunningInstance() -{ - if(m_runningInstances == 0) - { - qCritical() << "Something went really wrong and we now have less than 0 running instances... WTF"; - return; - } - m_runningInstances --; - if(m_runningInstances == 0) - { - emit updateAllowedChanged(true); - } -} - -bool MultiMC::shouldExitNow() const -{ - return m_runningInstances == 0 && m_openWindows == 0; -} - -bool MultiMC::updatesAreAllowed() -{ - return m_runningInstances == 0; -} - -void MultiMC::updateIsRunning(bool running) -{ - m_updateRunning = running; -} - - -void MultiMC::controllerSucceeded() -{ - auto controller = qobject_cast<LaunchController *>(QObject::sender()); - if(!controller) - return; - auto id = controller->id(); - auto & extras = m_instanceExtras[id]; - - // on success, do... - if (controller->instance()->settings()->get("AutoCloseConsole").toBool()) - { - if(extras.window) - { - extras.window->close(); - } - } - extras.controller.reset(); - subRunningInstance(); - - // quit when there are no more windows. - if(shouldExitNow()) - { - m_status = Status::Succeeded; - exit(0); - } -} - -void MultiMC::controllerFailed(const QString& error) -{ - Q_UNUSED(error); - auto controller = qobject_cast<LaunchController *>(QObject::sender()); - if(!controller) - return; - auto id = controller->id(); - auto & extras = m_instanceExtras[id]; - - // on failure, do... nothing - extras.controller.reset(); - subRunningInstance(); - - // quit when there are no more windows. - if(shouldExitNow()) - { - m_status = Status::Failed; - exit(1); - } -} - -void MultiMC::ShowGlobalSettings(class QWidget* parent, QString open_page) -{ - if(!m_globalSettingsProvider) { - return; - } - emit globalSettingsAboutToOpen(); - { - SettingsObject::Lock lock(MMC->settings()); - PageDialog dlg(m_globalSettingsProvider.get(), open_page, parent); - dlg.exec(); - } - emit globalSettingsClosed(); -} - -MainWindow* MultiMC::showMainWindow(bool minimized) -{ - if(m_mainWindow) - { - m_mainWindow->setWindowState(m_mainWindow->windowState() & ~Qt::WindowMinimized); - m_mainWindow->raise(); - m_mainWindow->activateWindow(); - } - else - { - m_mainWindow = new MainWindow(); - m_mainWindow->restoreState(QByteArray::fromBase64(MMC->settings()->get("MainWindowState").toByteArray())); - m_mainWindow->restoreGeometry(QByteArray::fromBase64(MMC->settings()->get("MainWindowGeometry").toByteArray())); - if(minimized) - { - m_mainWindow->showMinimized(); - } - else - { - m_mainWindow->show(); - } - - m_mainWindow->checkInstancePathForProblems(); - connect(this, &MultiMC::updateAllowedChanged, m_mainWindow, &MainWindow::updatesAllowedChanged); - connect(m_mainWindow, &MainWindow::isClosing, this, &MultiMC::on_windowClose); - m_openWindows++; - } - // FIXME: move this somewhere else... - if(m_analytics) - { - auto windowSize = m_mainWindow->size(); - auto sizeString = QString("%1x%2").arg(windowSize.width()).arg(windowSize.height()); - qDebug() << "Viewport size" << sizeString; - m_analytics->setViewportSize(sizeString); - /* - * cm1 = java min heap [MB] - * cm2 = java max heap [MB] - * cm3 = system RAM [MB] - * - * cd1 = java version - * cd2 = java architecture - * cd3 = system architecture - * cd4 = CPU architecture - */ - QVariantMap customValues; - int min = m_settings->get("MinMemAlloc").toInt(); - int max = m_settings->get("MaxMemAlloc").toInt(); - if(min < max) - { - customValues["cm1"] = min; - customValues["cm2"] = max; - } - else - { - customValues["cm1"] = max; - customValues["cm2"] = min; - } - - constexpr uint64_t Mega = 1024ull * 1024ull; - int ramSize = int(Sys::getSystemRam() / Mega); - qDebug() << "RAM size is" << ramSize << "MB"; - customValues["cm3"] = ramSize; - - customValues["cd1"] = m_settings->get("JavaVersion"); - customValues["cd2"] = m_settings->get("JavaArchitecture"); - customValues["cd3"] = Sys::isSystem64bit() ? "64":"32"; - customValues["cd4"] = Sys::isCPU64bit() ? "64":"32"; - auto kernelInfo = Sys::getKernelInfo(); - customValues["cd5"] = kernelInfo.kernelName; - customValues["cd6"] = kernelInfo.kernelVersion; - auto distInfo = Sys::getDistributionInfo(); - if(!distInfo.distributionName.isEmpty()) - { - customValues["cd7"] = distInfo.distributionName; - } - if(!distInfo.distributionVersion.isEmpty()) - { - customValues["cd8"] = distInfo.distributionVersion; - } - m_analytics->sendScreenView("Main Window", customValues); - } - return m_mainWindow; -} - -InstanceWindow *MultiMC::showInstanceWindow(InstancePtr instance, QString page) -{ - if(!instance) - return nullptr; - auto id = instance->id(); - auto & extras = m_instanceExtras[id]; - auto & window = extras.window; - - if(window) - { - window->raise(); - window->activateWindow(); - } - else - { - window = new InstanceWindow(instance); - m_openWindows ++; - connect(window, &InstanceWindow::isClosing, this, &MultiMC::on_windowClose); - } - if(!page.isEmpty()) - { - window->selectPage(page); - } - if(extras.controller) - { - extras.controller->setParentWidget(window); - } - return window; -} - -void MultiMC::on_windowClose() -{ - m_openWindows--; - auto instWindow = qobject_cast<InstanceWindow *>(QObject::sender()); - if(instWindow) - { - auto & extras = m_instanceExtras[instWindow->instanceId()]; - extras.window = nullptr; - if(extras.controller) - { - extras.controller->setParentWidget(m_mainWindow); - } - } - auto mainWindow = qobject_cast<MainWindow *>(QObject::sender()); - if(mainWindow) - { - m_mainWindow = nullptr; - } - // quit when there are no more windows. - if(shouldExitNow()) - { - exit(0); - } -} diff --git a/application/MultiMC.h b/application/MultiMC.h deleted file mode 100644 index af2b41c1..00000000 --- a/application/MultiMC.h +++ /dev/null @@ -1,235 +0,0 @@ -#pragma once - -#include <QApplication> -#include <memory> -#include <QDebug> -#include <QFlag> -#include <QIcon> -#include <QDateTime> -#include <QUrl> -#include <updater/GoUpdate.h> - -#include <BaseInstance.h> - -#include "minecraft/launch/MinecraftServerTarget.h" - -class LaunchController; -class LocalPeer; -class InstanceWindow; -class MainWindow; -class SetupWizard; -class FolderInstanceProvider; -class GenericPageProvider; -class QFile; -class HttpMetaCache; -class SettingsObject; -class InstanceList; -class MojangAccountList; -class IconList; -class QNetworkAccessManager; -class JavaInstallList; -class UpdateChecker; -class BaseProfilerFactory; -class BaseDetachedToolFactory; -class TranslationsModel; -class ITheme; -class MCEditTool; -class GAnalytics; - -#if defined(MMC) -#undef MMC -#endif -#define MMC (static_cast<MultiMC *>(QCoreApplication::instance())) - -class MultiMC : public QApplication -{ - // friends for the purpose of limiting access to deprecated stuff - Q_OBJECT -public: - enum Status - { - StartingUp, - Failed, - Succeeded, - Initialized - }; - -public: - MultiMC(int &argc, char **argv); - virtual ~MultiMC(); - - GAnalytics *analytics() const - { - return m_analytics; - } - - std::shared_ptr<SettingsObject> settings() const - { - return m_settings; - } - - qint64 timeSinceStart() const - { - return startTime.msecsTo(QDateTime::currentDateTime()); - } - - QIcon getThemedIcon(const QString& name); - - void setIconTheme(const QString& name); - - std::vector<ITheme *> getValidApplicationThemes(); - - void setApplicationTheme(const QString& name, bool initial); - - // DownloadUpdateTask - std::shared_ptr<UpdateChecker> updateChecker() - { - return m_updateChecker; - } - - std::shared_ptr<TranslationsModel> translations(); - - std::shared_ptr<JavaInstallList> javalist(); - - std::shared_ptr<InstanceList> instances() const - { - return m_instances; - } - - FolderInstanceProvider * folderProvider() const - { - return m_instanceFolder; - } - - std::shared_ptr<IconList> icons() const - { - return m_icons; - } - - MCEditTool *mcedit() const - { - return m_mcedit.get(); - } - - std::shared_ptr<MojangAccountList> accounts() const - { - return m_accounts; - } - - Status status() const - { - return m_status; - } - - const QMap<QString, std::shared_ptr<BaseProfilerFactory>> &profilers() const - { - return m_profilers; - } - - /// this is the root of the 'installation'. Used for automatic updates - const QString &root() - { - return m_rootPath; - } - - /*! - * Opens a json file using either a system default editor, or, if not empty, the editor - * specified in the settings - */ - bool openJsonEditor(const QString &filename); - - InstanceWindow *showInstanceWindow(InstancePtr instance, QString page = QString()); - MainWindow *showMainWindow(bool minimized = false); - - void updateIsRunning(bool running); - bool updatesAreAllowed(); - - void ShowGlobalSettings(class QWidget * parent, QString open_page = QString()); - -signals: - void updateAllowedChanged(bool status); - void globalSettingsAboutToOpen(); - void globalSettingsClosed(); - -public slots: - bool launch( - InstancePtr instance, - bool online = true, - BaseProfilerFactory *profiler = nullptr, - MinecraftServerTargetPtr serverToJoin = nullptr - ); - bool kill(InstancePtr instance); - -private slots: - void on_windowClose(); - void messageReceived(const QString & message); - void controllerSucceeded(); - void controllerFailed(const QString & error); - void analyticsSettingChanged(const Setting &setting, QVariant value); - void setupWizardFinished(int status); - -private: - bool createSetupWizard(); - void performMainStartupAction(); - - // sets the fatal error message and m_status to Failed. - void showFatalErrorMessage(const QString & title, const QString & content); - -private: - void addRunningInstance(); - void subRunningInstance(); - bool shouldExitNow() const; - -private: - QDateTime startTime; - - std::shared_ptr<SettingsObject> m_settings; - std::shared_ptr<InstanceList> m_instances; - FolderInstanceProvider * m_instanceFolder = nullptr; - std::shared_ptr<IconList> m_icons; - std::shared_ptr<UpdateChecker> m_updateChecker; - std::shared_ptr<MojangAccountList> m_accounts; - std::shared_ptr<JavaInstallList> m_javalist; - std::shared_ptr<TranslationsModel> m_translations; - std::shared_ptr<GenericPageProvider> m_globalSettingsProvider; - std::map<QString, std::unique_ptr<ITheme>> m_themes; - std::unique_ptr<MCEditTool> m_mcedit; - - QMap<QString, std::shared_ptr<BaseProfilerFactory>> m_profilers; - - QString m_rootPath; - Status m_status = MultiMC::StartingUp; - -#if defined Q_OS_WIN32 - // used on Windows to attach the standard IO streams - bool consoleAttached = false; -#endif - - // FIXME: attach to instances instead. - struct InstanceXtras - { - InstanceWindow * window = nullptr; - shared_qobject_ptr<LaunchController> controller; - }; - std::map<QString, InstanceXtras> m_instanceExtras; - - // main state variables - size_t m_openWindows = 0; - size_t m_runningInstances = 0; - bool m_updateRunning = false; - - // main window, if any - MainWindow * m_mainWindow = nullptr; - - // peer MultiMC instance connector - used to implement single instance MultiMC and signalling - LocalPeer * m_peerInstance = nullptr; - - GAnalytics * m_analytics = nullptr; - SetupWizard * m_setupWizard = nullptr; -public: - QString m_instanceIdToLaunch; - QString m_serverToJoin; - bool m_liveCheck = false; - QUrl m_zipToImport; - std::unique_ptr<QFile> logFile; -}; diff --git a/application/UpdateController.cpp b/application/UpdateController.cpp deleted file mode 100644 index 0309ad93..00000000 --- a/application/UpdateController.cpp +++ /dev/null @@ -1,449 +0,0 @@ -#include <QFile> -#include <QMessageBox> -#include <FileSystem.h> -#include <updater/GoUpdate.h> -#include "UpdateController.h" -#include <QApplication> -#include <thread> -#include <chrono> -#include <LocalPeer.h> - -// from <sys/stat.h> -#ifndef S_IRUSR -#define __S_IREAD 0400 /* Read by owner. */ -#define __S_IWRITE 0200 /* Write by owner. */ -#define __S_IEXEC 0100 /* Execute by owner. */ -#define S_IRUSR __S_IREAD /* Read by owner. */ -#define S_IWUSR __S_IWRITE /* Write by owner. */ -#define S_IXUSR __S_IEXEC /* Execute by owner. */ - -#define S_IRGRP (S_IRUSR >> 3) /* Read by group. */ -#define S_IWGRP (S_IWUSR >> 3) /* Write by group. */ -#define S_IXGRP (S_IXUSR >> 3) /* Execute by group. */ - -#define S_IROTH (S_IRGRP >> 3) /* Read by others. */ -#define S_IWOTH (S_IWGRP >> 3) /* Write by others. */ -#define S_IXOTH (S_IXGRP >> 3) /* Execute by others. */ -#endif -static QFile::Permissions unixModeToPermissions(const int mode) -{ - QFile::Permissions perms; - - if (mode & S_IRUSR) - { - perms |= QFile::ReadUser; - } - if (mode & S_IWUSR) - { - perms |= QFile::WriteUser; - } - if (mode & S_IXUSR) - { - perms |= QFile::ExeUser; - } - - if (mode & S_IRGRP) - { - perms |= QFile::ReadGroup; - } - if (mode & S_IWGRP) - { - perms |= QFile::WriteGroup; - } - if (mode & S_IXGRP) - { - perms |= QFile::ExeGroup; - } - - if (mode & S_IROTH) - { - perms |= QFile::ReadOther; - } - if (mode & S_IWOTH) - { - perms |= QFile::WriteOther; - } - if (mode & S_IXOTH) - { - perms |= QFile::ExeOther; - } - return perms; -} - -static const QLatin1String liveCheckFile("live.check"); - -UpdateController::UpdateController(QWidget * parent, const QString& root, const QString updateFilesDir, GoUpdate::OperationList operations) -{ - m_parent = parent; - m_root = root; - m_updateFilesDir = updateFilesDir; - m_operations = operations; -} - - -void UpdateController::installUpdates() -{ - qint64 pid = -1; - QStringList args; - bool started = false; - - qDebug() << "Installing updates."; -#ifdef Q_OS_WIN - QString finishCmd = QApplication::applicationFilePath(); -#elif defined Q_OS_LINUX - QString finishCmd = FS::PathCombine(m_root, "MultiMC"); -#elif defined Q_OS_MAC - QString finishCmd = QApplication::applicationFilePath(); -#else -#error Unsupported operating system. -#endif - - QString backupPath = FS::PathCombine(m_root, "update", "backup"); - QDir origin(m_root); - - // clean up the backup folder. it should be empty before we start - if(!FS::deletePath(backupPath)) - { - qWarning() << "couldn't remove previous backup folder" << backupPath; - } - // and it should exist. - if(!FS::ensureFolderPathExists(backupPath)) - { - qWarning() << "couldn't create folder" << backupPath; - return; - } - - bool useXPHack = false; - QString exePath; - QString exeOrigin; - QString exeBackup; - - // perform the update operations - for(auto op: m_operations) - { - switch(op.type) - { - // replace = move original out to backup, if it exists, move the new file in its place - case GoUpdate::Operation::OP_REPLACE: - { -#ifdef Q_OS_WIN32 - // hack for people renaming the .exe because ... reasons :) - if(op.destination == "MultiMC.exe") - { - op.destination = QFileInfo(QApplication::applicationFilePath()).fileName(); - } -#endif - QFileInfo destination (FS::PathCombine(m_root, op.destination)); -#ifdef Q_OS_WIN32 - if(QSysInfo::windowsVersion() < QSysInfo::WV_VISTA) - { - if(destination.fileName() == "MultiMC.exe") - { - QDir rootDir(m_root); - exeOrigin = rootDir.relativeFilePath(op.source); - exePath = rootDir.relativeFilePath(op.destination); - exeBackup = rootDir.relativeFilePath(FS::PathCombine(backupPath, destination.fileName())); - useXPHack = true; - continue; - } - } -#endif - if(destination.exists()) - { - QString backupName = op.destination; - backupName.replace('/', '_'); - QString backupFilePath = FS::PathCombine(backupPath, backupName); - if(!QFile::rename(destination.absoluteFilePath(), backupFilePath)) - { - qWarning() << "Couldn't move:" << destination.absoluteFilePath() << "to" << backupFilePath; - m_failedOperationType = Replace; - m_failedFile = op.destination; - fail(); - return; - } - BackupEntry be; - be.original = destination.absoluteFilePath(); - be.backup = backupFilePath; - be.update = op.source; - m_replace_backups.append(be); - } - // make sure the folder we are putting this into exists - if(!FS::ensureFilePathExists(destination.absoluteFilePath())) - { - qWarning() << "REPLACE: Couldn't create folder:" << destination.absoluteFilePath(); - m_failedOperationType = Replace; - m_failedFile = op.destination; - fail(); - return; - } - // now move the new file in - if(!QFile::rename(op.source, destination.absoluteFilePath())) - { - qWarning() << "REPLACE: Couldn't move:" << op.source << "to" << destination.absoluteFilePath(); - m_failedOperationType = Replace; - m_failedFile = op.destination; - fail(); - return; - } - QFile::setPermissions(destination.absoluteFilePath(), unixModeToPermissions(op.destinationMode)); - } - break; - // delete = move original to backup - case GoUpdate::Operation::OP_DELETE: - { - QString destFilePath = FS::PathCombine(m_root, op.destination); - if(QFile::exists(destFilePath)) - { - QString backupName = op.destination; - backupName.replace('/', '_'); - QString trashFilePath = FS::PathCombine(backupPath, backupName); - - if(!QFile::rename(destFilePath, trashFilePath)) - { - qWarning() << "DELETE: Couldn't move:" << op.destination << "to" << trashFilePath; - m_failedFile = op.destination; - m_failedOperationType = Delete; - fail(); - return; - } - BackupEntry be; - be.original = destFilePath; - be.backup = trashFilePath; - m_delete_backups.append(be); - } - } - break; - } - } - - // try to start the new binary - args = qApp->arguments(); - args.removeFirst(); - - // on old Windows, do insane things... no error checking here, this is just to have something. - if(useXPHack) - { - QString script; - auto nativePath = QDir::toNativeSeparators(exePath); - auto nativeOriginPath = QDir::toNativeSeparators(exeOrigin); - auto nativeBackupPath = QDir::toNativeSeparators(exeBackup); - - // so we write this vbscript thing... - QTextStream out(&script); - out << "WScript.Sleep 1000\n"; - out << "Set fso=CreateObject(\"Scripting.FileSystemObject\")\n"; - out << "Set shell=CreateObject(\"WScript.Shell\")\n"; - out << "fso.MoveFile \"" << nativePath << "\", \"" << nativeBackupPath << "\"\n"; - out << "fso.MoveFile \"" << nativeOriginPath << "\", \"" << nativePath << "\"\n"; - out << "shell.Run \"" << nativePath << "\"\n"; - - QString scriptPath = FS::PathCombine(m_root, "update", "update.vbs"); - - // we save it - QFile scriptFile(scriptPath); - scriptFile.open(QIODevice::WriteOnly); - scriptFile.write(script.toLocal8Bit().replace("\n", "\r\n")); - scriptFile.close(); - - // we run it - started = QProcess::startDetached("wscript", {scriptPath}, m_root); - - // and we quit. conscious thought. - qApp->quit(); - return; - } - bool doLiveCheck = true; - bool startFailed = false; - - // remove live check file, if any - if(QFile::exists(liveCheckFile)) - { - if(!QFile::remove(liveCheckFile)) - { - qWarning() << "Couldn't remove the" << liveCheckFile << "file! We will proceed without :("; - doLiveCheck = false; - } - } - - if(doLiveCheck) - { - if(!args.contains("--alive")) - { - args.append("--alive"); - } - } - - // FIXME: reparse args and construct a safe variant from scratch. This is a workaround for GH-1874: - QStringList realargs; - int skip = 0; - for(auto & arg: args) - { - if(skip) - { - skip--; - continue; - } - if(arg == "-l") - { - skip = 1; - continue; - } - realargs.append(arg); - } - - // start the updated application - started = QProcess::startDetached(finishCmd, realargs, QDir::currentPath(), &pid); - // much dumber check - just find out if the call - if(!started || pid == -1) - { - qWarning() << "Couldn't start new process properly!"; - startFailed = true; - } - if(!startFailed && doLiveCheck) - { - int attempts = 0; - while(attempts < 10) - { - attempts++; - QString key; - std::this_thread::sleep_for(std::chrono::milliseconds(250)); - if(!QFile::exists(liveCheckFile)) - { - qWarning() << "Couldn't find the" << liveCheckFile << "file!"; - startFailed = true; - continue; - } - try - { - key = QString::fromUtf8(FS::read(liveCheckFile)); - auto id = ApplicationId::fromRawString(key); - LocalPeer peer(nullptr, id); - if(peer.isClient()) - { - startFailed = false; - qDebug() << "Found process started with key " << key; - break; - } - else - { - startFailed = true; - qDebug() << "Process started with key " << key << "apparently died or is not reponding..."; - break; - } - } - catch (const Exception &e) - { - qWarning() << "Couldn't read the" << liveCheckFile << "file!"; - startFailed = true; - continue; - } - } - } - if(startFailed) - { - m_failedOperationType = Start; - fail(); - return; - } - else - { - origin.rmdir(m_updateFilesDir); - qApp->quit(); - return; - } -} - -void UpdateController::fail() -{ - qWarning() << "Update failed!"; - - QString msg; - bool doRollback = false; - QString failTitle = QObject::tr("Update failed!"); - QString rollFailTitle = QObject::tr("Rollback failed!"); - switch (m_failedOperationType) - { - case Replace: - { - msg = QObject::tr("Couldn't replace file %1. Changes will be reverted.\n" - "See the MultiMC log file for details.").arg(m_failedFile); - doRollback = true; - QMessageBox::critical(m_parent, failTitle, msg); - break; - } - case Delete: - { - msg = QObject::tr("Couldn't remove file %1. Changes will be reverted.\n" - "See the MultiMC log file for details.").arg(m_failedFile); - doRollback = true; - QMessageBox::critical(m_parent, failTitle, msg); - break; - } - case Start: - { - msg = QObject::tr("The new version didn't start or is too old and doesn't respond to startup checks.\n" - "\n" - "Roll back to previous version?"); - auto result = QMessageBox::critical( - m_parent, - failTitle, - msg, - QMessageBox::Yes | QMessageBox::No, - QMessageBox::Yes - ); - doRollback = (result == QMessageBox::Yes); - break; - } - case Nothing: - default: - return; - } - if(doRollback) - { - auto rollbackOK = rollback(); - if(!rollbackOK) - { - msg = QObject::tr("The rollback failed too.\n" - "You will have to repair MultiMC manually.\n" - "Please let us know why and how this happened.").arg(m_failedFile); - QMessageBox::critical(m_parent, rollFailTitle, msg); - qApp->quit(); - } - } - else - { - qApp->quit(); - } -} - -bool UpdateController::rollback() -{ - bool revertOK = true; - // if the above failed, roll back changes - for(auto backup:m_replace_backups) - { - qWarning() << "restoring" << backup.original << "from" << backup.backup; - if(!QFile::rename(backup.original, backup.update)) - { - revertOK = false; - qWarning() << "moving new" << backup.original << "back to" << backup.update << "failed!"; - continue; - } - - if(!QFile::rename(backup.backup, backup.original)) - { - revertOK = false; - qWarning() << "restoring" << backup.original << "failed!"; - } - } - for(auto backup:m_delete_backups) - { - qWarning() << "restoring" << backup.original << "from" << backup.backup; - if(!QFile::rename(backup.backup, backup.original)) - { - revertOK = false; - qWarning() << "restoring" << backup.original << "failed!"; - } - } - return revertOK; -} diff --git a/application/UpdateController.h b/application/UpdateController.h deleted file mode 100644 index 715554e5..00000000 --- a/application/UpdateController.h +++ /dev/null @@ -1,44 +0,0 @@ -#pragma once - -#include <QString> -#include <QList> -#include <updater/GoUpdate.h> - -class QWidget; - -class UpdateController -{ -public: - UpdateController(QWidget * parent, const QString &root, const QString updateFilesDir, GoUpdate::OperationList operations); - void installUpdates(); - -private: - void fail(); - bool rollback(); - -private: - QString m_root; - QString m_updateFilesDir; - GoUpdate::OperationList m_operations; - QWidget * m_parent; - - struct BackupEntry - { - // path where we got the new file from - QString update; - // path of what is being actually updated - QString original; - // path where the backup of the updated file was placed - QString backup; - }; - QList <BackupEntry> m_replace_backups; - QList <BackupEntry> m_delete_backups; - enum Failure - { - Replace, - Delete, - Start, - Nothing - } m_failedOperationType = Nothing; - QString m_failedFile; -}; diff --git a/application/VersionProxyModel.cpp b/application/VersionProxyModel.cpp deleted file mode 100644 index 5587136f..00000000 --- a/application/VersionProxyModel.cpp +++ /dev/null @@ -1,447 +0,0 @@ -#include "VersionProxyModel.h" -#include "MultiMC.h" -#include <QSortFilterProxyModel> -#include <QPixmapCache> -#include <Version.h> -#include <meta/VersionList.h> - -class VersionFilterModel : public QSortFilterProxyModel -{ - Q_OBJECT -public: - VersionFilterModel(VersionProxyModel *parent) : QSortFilterProxyModel(parent) - { - m_parent = parent; - setSortRole(BaseVersionList::SortRole); - sort(0, Qt::DescendingOrder); - } - - bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const - { - const auto &filters = m_parent->filters(); - for (auto it = filters.begin(); it != filters.end(); ++it) - { - auto idx = sourceModel()->index(source_row, 0, source_parent); - auto data = sourceModel()->data(idx, it.key()); - auto match = data.toString(); - if(!it.value()->accepts(match)) - { - return false; - } - } - return true; - } - - void filterChanged() - { - invalidateFilter(); - } -private: - VersionProxyModel *m_parent; -}; - -VersionProxyModel::VersionProxyModel(QObject *parent) : QAbstractProxyModel(parent) -{ - filterModel = new VersionFilterModel(this); - connect(filterModel, &QAbstractItemModel::dataChanged, this, &VersionProxyModel::sourceDataChanged); - connect(filterModel, &QAbstractItemModel::rowsAboutToBeInserted, this, &VersionProxyModel::sourceRowsAboutToBeInserted); - connect(filterModel, &QAbstractItemModel::rowsInserted, this, &VersionProxyModel::sourceRowsInserted); - connect(filterModel, &QAbstractItemModel::rowsAboutToBeRemoved, this, &VersionProxyModel::sourceRowsAboutToBeRemoved); - connect(filterModel, &QAbstractItemModel::rowsRemoved, this, &VersionProxyModel::sourceRowsRemoved); - // FIXME: implement when needed - /* - connect(replacing, &QAbstractItemModel::rowsAboutToBeMoved, this, &VersionProxyModel::sourceRowsAboutToBeMoved); - connect(replacing, &QAbstractItemModel::rowsMoved, this, &VersionProxyModel::sourceRowsMoved); - connect(replacing, &QAbstractItemModel::layoutAboutToBeChanged, this, &VersionProxyModel::sourceLayoutAboutToBeChanged); - connect(replacing, &QAbstractItemModel::layoutChanged, this, &VersionProxyModel::sourceLayoutChanged); - */ - connect(filterModel, &QAbstractItemModel::modelAboutToBeReset, this, &VersionProxyModel::sourceAboutToBeReset); - connect(filterModel, &QAbstractItemModel::modelReset, this, &VersionProxyModel::sourceReset); - - QAbstractProxyModel::setSourceModel(filterModel); -} - -QVariant VersionProxyModel::headerData(int section, Qt::Orientation orientation, int role) const -{ - if(section < 0 || section >= m_columns.size()) - return QVariant(); - if(orientation != Qt::Horizontal) - return QVariant(); - auto column = m_columns[section]; - if(role == Qt::DisplayRole) - { - switch(column) - { - case Name: - return tr("Version"); - case ParentVersion: - return tr("Minecraft"); //FIXME: this should come from metadata - case Branch: - return tr("Branch"); - case Type: - return tr("Type"); - case Architecture: - return tr("Architecture"); - case Path: - return tr("Path"); - case Time: - return tr("Released"); - } - } - else if(role == Qt::ToolTipRole) - { - switch(column) - { - case Name: - return tr("The name of the version."); - case ParentVersion: - return tr("Minecraft version"); //FIXME: this should come from metadata - case Branch: - return tr("The version's branch"); - case Type: - return tr("The version's type"); - case Architecture: - return tr("CPU Architecture"); - case Path: - return tr("Filesystem path to this version"); - case Time: - return tr("Release date of this version"); - } - } - return QVariant(); -} - -QVariant VersionProxyModel::data(const QModelIndex &index, int role) const -{ - if(!index.isValid()) - { - return QVariant(); - } - auto column = m_columns[index.column()]; - auto parentIndex = mapToSource(index); - switch(role) - { - case Qt::DisplayRole: - { - switch(column) - { - case Name: - { - QString version = sourceModel()->data(parentIndex, BaseVersionList::VersionRole).toString(); - if(version == m_currentVersion) - { - return tr("%1 (installed)").arg(version); - } - return version; - } - case ParentVersion: - return sourceModel()->data(parentIndex, BaseVersionList::ParentVersionRole); - case Branch: - return sourceModel()->data(parentIndex, BaseVersionList::BranchRole); - case Type: - return sourceModel()->data(parentIndex, BaseVersionList::TypeRole); - case Architecture: - return sourceModel()->data(parentIndex, BaseVersionList::ArchitectureRole); - case Path: - return sourceModel()->data(parentIndex, BaseVersionList::PathRole); - case Time: - return sourceModel()->data(parentIndex, Meta::VersionList::TimeRole).toDate(); - default: - return QVariant(); - } - } - case Qt::ToolTipRole: - { - switch(column) - { - case Name: - { - if(hasRecommended) - { - auto value = sourceModel()->data(parentIndex, BaseVersionList::RecommendedRole); - if(value.toBool()) - { - return tr("Recommended"); - } - else if(hasLatest) - { - auto value = sourceModel()->data(parentIndex, BaseVersionList::LatestRole); - if(value.toBool()) - { - return tr("Latest"); - } - } - else if(index.row() == 0) - { - return tr("Latest"); - } - } - } - default: - { - return sourceModel()->data(parentIndex, BaseVersionList::VersionIdRole); - } - } - } - case Qt::DecorationRole: - { - switch(column) - { - case Name: - { - if(hasRecommended) - { - auto value = sourceModel()->data(parentIndex, BaseVersionList::RecommendedRole); - if(value.toBool()) - { - return MMC->getThemedIcon("star"); - } - else if(hasLatest) - { - auto value = sourceModel()->data(parentIndex, BaseVersionList::LatestRole); - if(value.toBool()) - { - return MMC->getThemedIcon("bug"); - } - } - else if(index.row() == 0) - { - return MMC->getThemedIcon("bug"); - } - auto pixmap = QPixmapCache::find("placeholder"); - if(!pixmap) - { - QPixmap px(16,16); - px.fill(Qt::transparent); - QPixmapCache::insert("placeholder", px); - return px; - } - return *pixmap; - } - } - default: - { - return QVariant(); - } - } - } - default: - { - if(roles.contains((BaseVersionList::ModelRoles)role)) - { - return sourceModel()->data(parentIndex, role); - } - return QVariant(); - } - } -} - -QModelIndex VersionProxyModel::parent(const QModelIndex &child) const -{ - return QModelIndex(); -} - -QModelIndex VersionProxyModel::mapFromSource(const QModelIndex &sourceIndex) const -{ - if(sourceIndex.isValid()) - { - return index(sourceIndex.row(), 0); - } - return QModelIndex(); -} - -QModelIndex VersionProxyModel::mapToSource(const QModelIndex &proxyIndex) const -{ - if(proxyIndex.isValid()) - { - return sourceModel()->index(proxyIndex.row(), 0); - } - return QModelIndex(); -} - -QModelIndex VersionProxyModel::index(int row, int column, const QModelIndex &parent) const -{ - // no trees here... shoo - if(parent.isValid()) - { - return QModelIndex(); - } - if(row < 0 || row >= sourceModel()->rowCount()) - return QModelIndex(); - if(column < 0 || column >= columnCount()) - return QModelIndex(); - return QAbstractItemModel::createIndex(row, column); -} - -int VersionProxyModel::columnCount(const QModelIndex &parent) const -{ - return m_columns.size(); -} - -int VersionProxyModel::rowCount(const QModelIndex &parent) const -{ - if(sourceModel()) - { - return sourceModel()->rowCount(); - } - return 0; -} - -void VersionProxyModel::sourceDataChanged(const QModelIndex &source_top_left, - const QModelIndex &source_bottom_right) -{ - if(source_top_left.parent() != source_bottom_right.parent()) - return; - - // whole row is getting changed - auto topLeft = createIndex(source_top_left.row(), 0); - auto bottomRight = createIndex(source_bottom_right.row(), columnCount() - 1); - emit dataChanged(topLeft, bottomRight); -} - -void VersionProxyModel::setSourceModel(QAbstractItemModel *replacingRaw) -{ - auto replacing = dynamic_cast<BaseVersionList *>(replacingRaw); - beginResetModel(); - - m_columns.clear(); - if(!replacing) - { - roles.clear(); - filterModel->setSourceModel(replacing); - return; - } - - roles = replacing->providesRoles(); - if(roles.contains(BaseVersionList::VersionRole)) - { - m_columns.push_back(Name); - } - /* - if(roles.contains(BaseVersionList::ParentVersionRole)) - { - m_columns.push_back(ParentVersion); - } - */ - if(roles.contains(BaseVersionList::ArchitectureRole)) - { - m_columns.push_back(Architecture); - } - if(roles.contains(BaseVersionList::PathRole)) - { - m_columns.push_back(Path); - } - if(roles.contains(Meta::VersionList::TimeRole)) - { - m_columns.push_back(Time); - } - if(roles.contains(BaseVersionList::BranchRole)) - { - m_columns.push_back(Branch); - } - if(roles.contains(BaseVersionList::TypeRole)) - { - m_columns.push_back(Type); - } - if(roles.contains(BaseVersionList::RecommendedRole)) - { - hasRecommended = true; - } - if(roles.contains(BaseVersionList::LatestRole)) - { - hasLatest = true; - } - filterModel->setSourceModel(replacing); - - endResetModel(); -} - -QModelIndex VersionProxyModel::getRecommended() const -{ - if(!roles.contains(BaseVersionList::RecommendedRole)) - { - return index(0, 0); - } - int recommended = 0; - for (int i = 0; i < rowCount(); i++) - { - auto value = sourceModel()->data(mapToSource(index(i, 0)), BaseVersionList::RecommendedRole); - if (value.toBool()) - { - recommended = i; - } - } - return index(recommended, 0); -} - -QModelIndex VersionProxyModel::getVersion(const QString& version) const -{ - int found = -1; - for (int i = 0; i < rowCount(); i++) - { - auto value = sourceModel()->data(mapToSource(index(i, 0)), BaseVersionList::VersionRole); - if (value.toString() == version) - { - found = i; - } - } - if(found == -1) - { - return QModelIndex(); - } - return index(found, 0); -} - -void VersionProxyModel::clearFilters() -{ - m_filters.clear(); - filterModel->filterChanged(); -} - -void VersionProxyModel::setFilter(const BaseVersionList::ModelRoles column, Filter * f) -{ - m_filters[column].reset(f); - filterModel->filterChanged(); -} - -const VersionProxyModel::FilterMap &VersionProxyModel::filters() const -{ - return m_filters; -} - -void VersionProxyModel::sourceAboutToBeReset() -{ - beginResetModel(); -} - -void VersionProxyModel::sourceReset() -{ - endResetModel(); -} - -void VersionProxyModel::sourceRowsAboutToBeInserted(const QModelIndex& parent, int first, int last) -{ - beginInsertRows(parent, first, last); -} - -void VersionProxyModel::sourceRowsInserted(const QModelIndex& parent, int first, int last) -{ - endInsertRows(); -} - -void VersionProxyModel::sourceRowsAboutToBeRemoved(const QModelIndex& parent, int first, int last) -{ - beginRemoveRows(parent, first, last); -} - -void VersionProxyModel::sourceRowsRemoved(const QModelIndex& parent, int first, int last) -{ - endRemoveRows(); -} - -void VersionProxyModel::setCurrentVersion(const QString &version) -{ - m_currentVersion = version; -} - -#include "VersionProxyModel.moc" diff --git a/application/VersionProxyModel.h b/application/VersionProxyModel.h deleted file mode 100644 index 8991c31b..00000000 --- a/application/VersionProxyModel.h +++ /dev/null @@ -1,67 +0,0 @@ -#pragma once -#include <QAbstractProxyModel> -#include "BaseVersionList.h" - -#include <Filter.h> - -class VersionFilterModel; - -class VersionProxyModel: public QAbstractProxyModel -{ - Q_OBJECT -public: - - enum Column - { - Name, - ParentVersion, - Branch, - Type, - Architecture, - Path, - Time - }; - typedef QHash<BaseVersionList::ModelRoles, std::shared_ptr<Filter>> FilterMap; - -public: - VersionProxyModel ( QObject* parent = 0 ); - virtual ~VersionProxyModel() {}; - - virtual int columnCount(const QModelIndex &parent = QModelIndex()) const override; - virtual int rowCount(const QModelIndex &parent = QModelIndex()) const override; - virtual QModelIndex mapFromSource(const QModelIndex &sourceIndex) const override; - virtual QModelIndex mapToSource(const QModelIndex &proxyIndex) const override; - virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; - virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; - virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; - virtual QModelIndex parent(const QModelIndex &child) const override; - virtual void setSourceModel(QAbstractItemModel *sourceModel) override; - - const FilterMap &filters() const; - void setFilter(const BaseVersionList::ModelRoles column, Filter * filter); - void clearFilters(); - QModelIndex getRecommended() const; - QModelIndex getVersion(const QString & version) const; - void setCurrentVersion(const QString &version); -private slots: - - void sourceDataChanged(const QModelIndex &source_top_left,const QModelIndex &source_bottom_right); - - void sourceAboutToBeReset(); - void sourceReset(); - - void sourceRowsAboutToBeInserted(const QModelIndex &parent, int first, int last); - void sourceRowsInserted(const QModelIndex &parent, int first, int last); - - void sourceRowsAboutToBeRemoved(const QModelIndex &parent, int first, int last); - void sourceRowsRemoved(const QModelIndex &parent, int first, int last); - -private: - QList<Column> m_columns; - FilterMap m_filters; - BaseVersionList::RoleList roles; - VersionFilterModel * filterModel; - bool hasRecommended = false; - bool hasLatest = false; - QString m_currentVersion; -}; diff --git a/application/dialogs/AboutDialog.cpp b/application/dialogs/AboutDialog.cpp deleted file mode 100644 index c97c471e..00000000 --- a/application/dialogs/AboutDialog.cpp +++ /dev/null @@ -1,138 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "AboutDialog.h" -#include "ui_AboutDialog.h" -#include <QIcon> -#include "MultiMC.h" -#include "BuildConfig.h" - -#include <net/NetJob.h> - -#include "HoeDown.h" - -namespace { -// Credits -// This is a hack, but I can't think of a better way to do this easily without screwing with QTextDocument... -QString getCreditsHtml(QStringList patrons) -{ - QString patronsHeading = QObject::tr("Patrons", "About Credits"); - QString output; - QTextStream stream(&output); - stream << "<center>\n"; - // TODO: possibly retrieve from git history at build time? - stream << "<h3>" << QObject::tr("MultiMC Developers", "About Credits") << "</h3>\n"; - stream << "<p>Andrew Okin <<a href='mailto:forkk@forkk.net'>forkk@forkk.net</a>></p>\n"; - stream << "<p>Petr Mrázek <<a href='mailto:peterix@gmail.com'>peterix@gmail.com</a>></p>\n"; - stream << "<p>Sky Welch <<a href='mailto:multimc@bunnies.io'>multimc@bunnies.io</a>></p>\n"; - stream << "<p>Jan (02JanDal) <<a href='mailto:02jandal@gmail.com'>02jandal@gmail.com</a>></p>\n"; - stream << "<p>RoboSky <<a href='https://twitter.com/RoboSky_'>@RoboSky_</a>></p>\n"; - stream << "<br />\n"; - - stream << "<h3>" << QObject::tr("With thanks to", "About Credits") << "</h3>\n"; - stream << "<p>Orochimarufan <<a href='mailto:orochimarufan.x3@gmail.com'>orochimarufan.x3@gmail.com</a>></p>\n"; - stream << "<p>TakSuyu <<a href='mailto:taksuyu@gmail.com'>taksuyu@gmail.com</a>></p>\n"; - stream << "<p>Kilobyte <<a href='mailto:stiepen22@gmx.de'>stiepen22@gmx.de</a>></p>\n"; - stream << "<p>Rootbear75 <<a href='https://twitter.com/rootbear75'>@rootbear75</a>></p>\n"; - stream << "<p>Zeker Zhayard <<a href='https://twitter.com/zeker_zhayard'>@Zeker_Zhayard</a>></p>\n"; - stream << "<br />\n"; - - if(!patrons.isEmpty()) { - stream << "<h3>" << QObject::tr("Patrons", "About Credits") << "</h3>\n"; - for (QString patron : patrons) - { - stream << "<p>" << patron << "</p>\n"; - } - } - stream << "</center>\n"; - return output; -} - -QString getLicenseHtml() -{ - HoeDown hoedown; - QFile dataFile(":/documents/COPYING.md"); - dataFile.open(QIODevice::ReadOnly); - QString output = hoedown.process(dataFile.readAll()); - return output; -} - -} - -AboutDialog::AboutDialog(QWidget *parent) : QDialog(parent), ui(new Ui::AboutDialog) -{ - ui->setupUi(this); - - QString chtml = getCreditsHtml(QStringList()); - ui->creditsText->setHtml(chtml); - - QString lhtml = getLicenseHtml(); - ui->licenseText->setHtml(lhtml); - - ui->urlLabel->setOpenExternalLinks(true); - - ui->icon->setPixmap(MMC->getThemedIcon("logo").pixmap(64)); - ui->title->setText("MultiMC 5"); - - ui->versionLabel->setText(tr("Version") +": " + BuildConfig.printableVersionString()); - ui->platformLabel->setText(tr("Platform") +": " + BuildConfig.BUILD_PLATFORM); - - if (BuildConfig.VERSION_BUILD >= 0) - ui->buildNumLabel->setText(tr("Build Number") +": " + QString::number(BuildConfig.VERSION_BUILD)); - else - ui->buildNumLabel->setVisible(false); - - if (!BuildConfig.VERSION_CHANNEL.isEmpty()) - ui->channelLabel->setText(tr("Channel") +": " + BuildConfig.VERSION_CHANNEL); - else - ui->channelLabel->setVisible(false); - - ui->redistributionText->setHtml(tr( -"<p>We keep MultiMC open source because we think it's important to be able to see the source code for a project like this, and we do so using the Apache license.</p>\n" -"<p>Part of the reason for using the Apache license is we don't want people using the "MultiMC" name when redistributing the project. " -"This means people must take the time to go through the source code and remove all references to "MultiMC", including but not limited to the project " -"icon and the title of windows, (no <b>MultiMC-fork</b> in the title).</p>\n" -"<p>The Apache license covers reasonable use for the name - a mention of the project's origins in the About dialog and the license is acceptable. " -"However, it should be abundantly clear that the project is a fork <b>without</b> implying that you have our blessing.</p>" - )); - - connect(ui->closeButton, SIGNAL(clicked()), SLOT(close())); - - connect(ui->aboutQt, &QPushButton::clicked, &QApplication::aboutQt); - - loadPatronList(); -} - -AboutDialog::~AboutDialog() -{ - delete ui; -} - -void AboutDialog::loadPatronList() -{ - netJob.reset(new NetJob("Patreon Patron List")); - netJob->addNetAction(Net::Download::makeByteArray(QUrl("https://files.multimc.org/patrons.txt"), &dataSink)); - connect(netJob.get(), &NetJob::succeeded, this, &AboutDialog::patronListLoaded); - netJob->start(); -} - -void AboutDialog::patronListLoaded() -{ - QString patronListStr(dataSink); - dataSink.clear(); - QString html = getCreditsHtml(patronListStr.split("\n", QString::SkipEmptyParts)); - ui->creditsText->setHtml(html); -} - diff --git a/application/dialogs/AboutDialog.h b/application/dialogs/AboutDialog.h deleted file mode 100644 index c7621c37..00000000 --- a/application/dialogs/AboutDialog.h +++ /dev/null @@ -1,47 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QDialog> -#include <net/NetJob.h> - -namespace Ui -{ -class AboutDialog; -} - -class AboutDialog : public QDialog -{ - Q_OBJECT - -public: - explicit AboutDialog(QWidget *parent = 0); - ~AboutDialog(); - -public -slots: - /// Starts loading a list of Patreon patrons. - void loadPatronList(); - - /// Slot for when the patron list loads successfully. - void patronListLoaded(); - -private: - Ui::AboutDialog *ui; - - NetJobPtr netJob; - QByteArray dataSink; -}; diff --git a/application/dialogs/AboutDialog.ui b/application/dialogs/AboutDialog.ui deleted file mode 100644 index c6de9ebb..00000000 --- a/application/dialogs/AboutDialog.ui +++ /dev/null @@ -1,312 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>AboutDialog</class> - <widget class="QDialog" name="AboutDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>783</width> - <height>843</height> - </rect> - </property> - <property name="minimumSize"> - <size> - <width>450</width> - <height>400</height> - </size> - </property> - <property name="windowTitle"> - <string>About MultiMC</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QLabel" name="icon"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize"> - <size> - <width>64</width> - <height>64</height> - </size> - </property> - <property name="baseSize"> - <size> - <width>64</width> - <height>64</height> - </size> - </property> - <property name="text"> - <string/> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer_2"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item> - <widget class="QLabel" name="title"> - <property name="font"> - <font> - <pointsize>15</pointsize> - </font> - </property> - <property name="text"> - <string notr="true">MultiMC 5</string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - </widget> - </item> - <item> - <widget class="QTabWidget" name="tabWidget"> - <property name="currentIndex"> - <number>0</number> - </property> - <widget class="QWidget" name="aboutTab"> - <attribute name="title"> - <string>About</string> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout_5"> - <item> - <widget class="QLabel" name="versionLabel"> - <property name="text"> - <string>Version:</string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="platformLabel"> - <property name="text"> - <string>Platform:</string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="buildNumLabel"> - <property name="text"> - <string>Build Number:</string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="channelLabel"> - <property name="text"> - <string>Channel:</string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="aboutLabel"> - <property name="enabled"> - <bool>true</bool> - </property> - <property name="text"> - <string><html><head/><body><p>MultiMC is a custom launcher that makes managing Minecraft easier by allowing you to have multiple instances of Minecraft at once.</p></body></html></string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="copyLabel"> - <property name="font"> - <font> - <pointsize>8</pointsize> - <kerning>true</kerning> - </font> - </property> - <property name="text"> - <string>© 2012-2021 MultiMC Contributors</string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="urlLabel"> - <property name="font"> - <font> - <pointsize>10</pointsize> - </font> - </property> - <property name="text"> - <string notr="true"><html><head/><body><p><a href="https://github.com/MultiMC/MultiMC5">https://github.com/MultiMC/MultiMC5</a></p></body></html></string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - </widget> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>212</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - <widget class="QWidget" name="creditsTab"> - <attribute name="title"> - <string>Credits</string> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QTextEdit" name="creditsText"> - <property name="readOnly"> - <bool>true</bool> - </property> - <property name="textInteractionFlags"> - <set>Qt::TextBrowserInteraction</set> - </property> - </widget> - </item> - </layout> - </widget> - <widget class="QWidget" name="licenseTab"> - <attribute name="title"> - <string>License</string> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout_3"> - <item> - <widget class="QTextEdit" name="licenseText"> - <property name="minimumSize"> - <size> - <width>0</width> - <height>0</height> - </size> - </property> - <property name="font"> - <font> - <family>DejaVu Sans Mono</family> - </font> - </property> - <property name="readOnly"> - <bool>true</bool> - </property> - <property name="textInteractionFlags"> - <set>Qt::TextBrowserInteraction</set> - </property> - </widget> - </item> - </layout> - </widget> - <widget class="QWidget" name="forkingTab"> - <attribute name="title"> - <string>Forking/Redistribution</string> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout_4"> - <item> - <widget class="QTextEdit" name="redistributionText"> - <property name="textInteractionFlags"> - <set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> - </property> - </widget> - </item> - </layout> - </widget> - </widget> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <item> - <widget class="QPushButton" name="aboutQt"> - <property name="autoFillBackground"> - <bool>false</bool> - </property> - <property name="text"> - <string>About Qt</string> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer_3"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="closeButton"> - <property name="text"> - <string>Close</string> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - <tabstops> - <tabstop>tabWidget</tabstop> - <tabstop>creditsText</tabstop> - <tabstop>licenseText</tabstop> - <tabstop>redistributionText</tabstop> - <tabstop>aboutQt</tabstop> - <tabstop>closeButton</tabstop> - </tabstops> - <resources/> - <connections/> -</ui> diff --git a/application/dialogs/CopyInstanceDialog.cpp b/application/dialogs/CopyInstanceDialog.cpp deleted file mode 100644 index 5fe90334..00000000 --- a/application/dialogs/CopyInstanceDialog.cpp +++ /dev/null @@ -1,144 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <QLayout> -#include <QPushButton> - -#include "MultiMC.h" -#include "CopyInstanceDialog.h" -#include "ui_CopyInstanceDialog.h" - -#include "dialogs/IconPickerDialog.h" - -#include "BaseVersion.h" -#include "icons/IconList.h" -#include "tasks/Task.h" -#include "BaseInstance.h" -#include "InstanceList.h" - -CopyInstanceDialog::CopyInstanceDialog(InstancePtr original, QWidget *parent) - :QDialog(parent), ui(new Ui::CopyInstanceDialog), m_original(original) -{ - ui->setupUi(this); - resize(minimumSizeHint()); - layout()->setSizeConstraint(QLayout::SetFixedSize); - - InstIconKey = original->iconKey(); - ui->iconButton->setIcon(MMC->icons()->getIcon(InstIconKey)); - ui->instNameTextBox->setText(original->name()); - ui->instNameTextBox->setFocus(); - auto groups = MMC->instances()->getGroups().toSet(); - auto groupList = QStringList(groups.toList()); - groupList.sort(Qt::CaseInsensitive); - groupList.removeOne(""); - groupList.push_front(""); - ui->groupBox->addItems(groupList); - int index = groupList.indexOf(MMC->instances()->getInstanceGroup(m_original->id())); - if(index == -1) - { - index = 0; - } - ui->groupBox->setCurrentIndex(index); - ui->groupBox->lineEdit()->setPlaceholderText(tr("No group")); - ui->copySavesCheckbox->setChecked(m_copySaves); - ui->keepPlaytimeCheckbox->setChecked(m_keepPlaytime); -} - -CopyInstanceDialog::~CopyInstanceDialog() -{ - delete ui; -} - -void CopyInstanceDialog::updateDialogState() -{ - auto allowOK = !instName().isEmpty(); - auto OkButton = ui->buttonBox->button(QDialogButtonBox::Ok); - if(OkButton->isEnabled() != allowOK) - { - OkButton->setEnabled(allowOK); - } -} - -QString CopyInstanceDialog::instName() const -{ - auto result = ui->instNameTextBox->text().trimmed(); - if(result.size()) - { - return result; - } - return QString(); -} - -QString CopyInstanceDialog::iconKey() const -{ - return InstIconKey; -} - -QString CopyInstanceDialog::instGroup() const -{ - return ui->groupBox->currentText(); -} - -void CopyInstanceDialog::on_iconButton_clicked() -{ - IconPickerDialog dlg(this); - dlg.execWithSelection(InstIconKey); - - if (dlg.result() == QDialog::Accepted) - { - InstIconKey = dlg.selectedIconKey; - ui->iconButton->setIcon(MMC->icons()->getIcon(InstIconKey)); - } -} - -void CopyInstanceDialog::on_instNameTextBox_textChanged(const QString &arg1) -{ - updateDialogState(); -} - -bool CopyInstanceDialog::shouldCopySaves() const -{ - return m_copySaves; -} - -void CopyInstanceDialog::on_copySavesCheckbox_stateChanged(int state) -{ - if(state == Qt::Unchecked) - { - m_copySaves = false; - } - else if(state == Qt::Checked) - { - m_copySaves = true; - } -} - -bool CopyInstanceDialog::shouldKeepPlaytime() const -{ - return m_keepPlaytime; -} - - -void CopyInstanceDialog::on_keepPlaytimeCheckbox_stateChanged(int state) -{ - if(state == Qt::Unchecked) - { - m_keepPlaytime = false; - } - else if(state == Qt::Checked) - { - m_keepPlaytime = true; - } -} diff --git a/application/dialogs/CopyInstanceDialog.h b/application/dialogs/CopyInstanceDialog.h deleted file mode 100644 index bf3cd920..00000000 --- a/application/dialogs/CopyInstanceDialog.h +++ /dev/null @@ -1,58 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QDialog> -#include "BaseVersion.h" -#include <BaseInstance.h> - -class BaseInstance; - -namespace Ui -{ -class CopyInstanceDialog; -} - -class CopyInstanceDialog : public QDialog -{ - Q_OBJECT - -public: - explicit CopyInstanceDialog(InstancePtr original, QWidget *parent = 0); - ~CopyInstanceDialog(); - - void updateDialogState(); - - QString instName() const; - QString instGroup() const; - QString iconKey() const; - bool shouldCopySaves() const; - bool shouldKeepPlaytime() const; - -private -slots: - void on_iconButton_clicked(); - void on_instNameTextBox_textChanged(const QString &arg1); - void on_copySavesCheckbox_stateChanged(int state); - void on_keepPlaytimeCheckbox_stateChanged(int state); - -private: - Ui::CopyInstanceDialog *ui; - QString InstIconKey; - InstancePtr m_original; - bool m_copySaves = true; - bool m_keepPlaytime = true; -}; diff --git a/application/dialogs/CopyInstanceDialog.ui b/application/dialogs/CopyInstanceDialog.ui deleted file mode 100644 index fa675455..00000000 --- a/application/dialogs/CopyInstanceDialog.ui +++ /dev/null @@ -1,182 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>CopyInstanceDialog</class> - <widget class="QDialog" name="CopyInstanceDialog"> - <property name="windowModality"> - <enum>Qt::ApplicationModal</enum> - </property> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>345</width> - <height>323</height> - </rect> - </property> - <property name="windowTitle"> - <string>Copy Instance</string> - </property> - <property name="windowIcon"> - <iconset> - <normaloff>:/icons/toolbar/copy</normaloff>:/icons/toolbar/copy</iconset> - </property> - <property name="modal"> - <bool>true</bool> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <layout class="QHBoxLayout" name="iconBtnLayout"> - <item> - <spacer name="iconBtnLeftSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QToolButton" name="iconButton"> - <property name="icon"> - <iconset> - <normaloff>:/icons/instances/infinity</normaloff>:/icons/instances/infinity</iconset> - </property> - <property name="iconSize"> - <size> - <width>80</width> - <height>80</height> - </size> - </property> - </widget> - </item> - <item> - <spacer name="iconBtnRightSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item> - <widget class="QLineEdit" name="instNameTextBox"> - <property name="placeholderText"> - <string>Name</string> - </property> - </widget> - </item> - <item> - <widget class="Line" name="line"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - </widget> - </item> - <item> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <widget class="QLabel" name="labelVersion_3"> - <property name="text"> - <string>&Group</string> - </property> - <property name="buddy"> - <cstring>groupBox</cstring> - </property> - </widget> - </item> - <item row="0" column="1" colspan="2"> - <widget class="QComboBox" name="groupBox"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="editable"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </item> - <item> - <widget class="QCheckBox" name="copySavesCheckbox"> - <property name="text"> - <string>Copy saves</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="keepPlaytimeCheckbox"> - <property name="text"> - <string>Keep play time</string> - </property> - </widget> - </item> - <item> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="standardButtons"> - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> - </property> - </widget> - </item> - </layout> - </widget> - <tabstops> - <tabstop>iconButton</tabstop> - <tabstop>instNameTextBox</tabstop> - <tabstop>groupBox</tabstop> - <tabstop>copySavesCheckbox</tabstop> - <tabstop>keepPlaytimeCheckbox</tabstop> - </tabstops> - <resources> - <include location="../../graphics.qrc"/> - </resources> - <connections> - <connection> - <sender>buttonBox</sender> - <signal>accepted()</signal> - <receiver>CopyInstanceDialog</receiver> - <slot>accept()</slot> - <hints> - <hint type="sourcelabel"> - <x>248</x> - <y>254</y> - </hint> - <hint type="destinationlabel"> - <x>157</x> - <y>274</y> - </hint> - </hints> - </connection> - <connection> - <sender>buttonBox</sender> - <signal>rejected()</signal> - <receiver>CopyInstanceDialog</receiver> - <slot>reject()</slot> - <hints> - <hint type="sourcelabel"> - <x>316</x> - <y>260</y> - </hint> - <hint type="destinationlabel"> - <x>286</x> - <y>274</y> - </hint> - </hints> - </connection> - </connections> -</ui> diff --git a/application/dialogs/CustomMessageBox.cpp b/application/dialogs/CustomMessageBox.cpp deleted file mode 100644 index 19029f68..00000000 --- a/application/dialogs/CustomMessageBox.cpp +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "CustomMessageBox.h" - -namespace CustomMessageBox -{ -QMessageBox *selectable(QWidget *parent, const QString &title, const QString &text, - QMessageBox::Icon icon, QMessageBox::StandardButtons buttons, - QMessageBox::StandardButton defaultButton) -{ - QMessageBox *messageBox = new QMessageBox(parent); - messageBox->setWindowTitle(title); - messageBox->setText(text); - messageBox->setStandardButtons(buttons); - messageBox->setDefaultButton(defaultButton); - messageBox->setTextInteractionFlags(Qt::TextSelectableByMouse); - messageBox->setIcon(icon); - messageBox->setTextInteractionFlags(Qt::TextBrowserInteraction); - - return messageBox; -} -} diff --git a/application/dialogs/CustomMessageBox.h b/application/dialogs/CustomMessageBox.h deleted file mode 100644 index 712c6518..00000000 --- a/application/dialogs/CustomMessageBox.h +++ /dev/null @@ -1,26 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QMessageBox> - -namespace CustomMessageBox -{ -QMessageBox *selectable(QWidget *parent, const QString &title, const QString &text, - QMessageBox::Icon icon = QMessageBox::NoIcon, - QMessageBox::StandardButtons buttons = QMessageBox::Ok, - QMessageBox::StandardButton defaultButton = QMessageBox::NoButton); -} diff --git a/application/dialogs/EditAccountDialog.cpp b/application/dialogs/EditAccountDialog.cpp deleted file mode 100644 index 002c064b..00000000 --- a/application/dialogs/EditAccountDialog.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "EditAccountDialog.h" -#include "ui_EditAccountDialog.h" -#include <DesktopServices.h> -#include <QUrl> - -EditAccountDialog::EditAccountDialog(const QString &text, QWidget *parent, int flags) - : QDialog(parent), ui(new Ui::EditAccountDialog) -{ - ui->setupUi(this); - - ui->label->setText(text); - ui->label->setVisible(!text.isEmpty()); - - ui->userTextBox->setEnabled(flags & UsernameField); - ui->passTextBox->setEnabled(flags & PasswordField); -} - -EditAccountDialog::~EditAccountDialog() -{ - delete ui; -} - -void EditAccountDialog::on_label_linkActivated(const QString &link) -{ - DesktopServices::openUrl(QUrl(link)); -} - -void EditAccountDialog::setUsername(const QString & user) const -{ - ui->userTextBox->setText(user); -} - -QString EditAccountDialog::username() const -{ - return ui->userTextBox->text(); -} - -void EditAccountDialog::setPassword(const QString & pass) const -{ - ui->passTextBox->setText(pass); -} - -QString EditAccountDialog::password() const -{ - return ui->passTextBox->text(); -} diff --git a/application/dialogs/EditAccountDialog.h b/application/dialogs/EditAccountDialog.h deleted file mode 100644 index 6b5eb4aa..00000000 --- a/application/dialogs/EditAccountDialog.h +++ /dev/null @@ -1,56 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QDialog> - -namespace Ui -{ -class EditAccountDialog; -} - -class EditAccountDialog : public QDialog -{ - Q_OBJECT - -public: - explicit EditAccountDialog(const QString &text = "", QWidget *parent = 0, - int flags = UsernameField | PasswordField); - ~EditAccountDialog(); - - void setUsername(const QString & user) const; - void setPassword(const QString & pass) const; - - QString username() const; - QString password() const; - - enum Flags - { - NoFlags = 0, - - //! Specifies that the dialog should have a username field. - UsernameField, - - //! Specifies that the dialog should have a password field. - PasswordField, - }; - -private slots: - void on_label_linkActivated(const QString &link); - -private: - Ui::EditAccountDialog *ui; -}; diff --git a/application/dialogs/EditAccountDialog.ui b/application/dialogs/EditAccountDialog.ui deleted file mode 100644 index e87509bc..00000000 --- a/application/dialogs/EditAccountDialog.ui +++ /dev/null @@ -1,94 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>EditAccountDialog</class> - <widget class="QDialog" name="EditAccountDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>400</width> - <height>148</height> - </rect> - </property> - <property name="windowTitle"> - <string>Login</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QLabel" name="label"> - <property name="text"> - <string notr="true">Message label placeholder.</string> - </property> - <property name="textFormat"> - <enum>Qt::RichText</enum> - </property> - <property name="textInteractionFlags"> - <set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> - </property> - </widget> - </item> - <item> - <widget class="QLineEdit" name="userTextBox"> - <property name="placeholderText"> - <string>Email</string> - </property> - </widget> - </item> - <item> - <widget class="QLineEdit" name="passTextBox"> - <property name="echoMode"> - <enum>QLineEdit::Password</enum> - </property> - <property name="placeholderText"> - <string>Password</string> - </property> - </widget> - </item> - <item> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="standardButtons"> - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> - </property> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections> - <connection> - <sender>buttonBox</sender> - <signal>accepted()</signal> - <receiver>EditAccountDialog</receiver> - <slot>accept()</slot> - <hints> - <hint type="sourcelabel"> - <x>248</x> - <y>254</y> - </hint> - <hint type="destinationlabel"> - <x>157</x> - <y>274</y> - </hint> - </hints> - </connection> - <connection> - <sender>buttonBox</sender> - <signal>rejected()</signal> - <receiver>EditAccountDialog</receiver> - <slot>reject()</slot> - <hints> - <hint type="sourcelabel"> - <x>316</x> - <y>260</y> - </hint> - <hint type="destinationlabel"> - <x>286</x> - <y>274</y> - </hint> - </hints> - </connection> - </connections> -</ui> diff --git a/application/dialogs/ExportInstanceDialog.cpp b/application/dialogs/ExportInstanceDialog.cpp deleted file mode 100644 index a42779d4..00000000 --- a/application/dialogs/ExportInstanceDialog.cpp +++ /dev/null @@ -1,482 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "ExportInstanceDialog.h" -#include "ui_ExportInstanceDialog.h" -#include <BaseInstance.h> -#include <MMCZip.h> -#include <QFileDialog> -#include <QMessageBox> -#include <qfilesystemmodel.h> - -#include <QSortFilterProxyModel> -#include <QDebug> -#include <qstack.h> -#include <QSaveFile> -#include "MMCStrings.h" -#include "SeparatorPrefixTree.h" -#include "MultiMC.h" -#include <icons/IconList.h> -#include <FileSystem.h> - -class PackIgnoreProxy : public QSortFilterProxyModel -{ - Q_OBJECT - -public: - PackIgnoreProxy(InstancePtr instance, QObject *parent) : QSortFilterProxyModel(parent) - { - m_instance = instance; - } - // NOTE: Sadly, we have to do sorting ourselves. - bool lessThan(const QModelIndex &left, const QModelIndex &right) const - { - QFileSystemModel *fsm = qobject_cast<QFileSystemModel *>(sourceModel()); - if (!fsm) - { - return QSortFilterProxyModel::lessThan(left, right); - } - bool asc = sortOrder() == Qt::AscendingOrder ? true : false; - - QFileInfo leftFileInfo = fsm->fileInfo(left); - QFileInfo rightFileInfo = fsm->fileInfo(right); - - if (!leftFileInfo.isDir() && rightFileInfo.isDir()) - { - return !asc; - } - if (leftFileInfo.isDir() && !rightFileInfo.isDir()) - { - return asc; - } - - // sort and proxy model breaks the original model... - if (sortColumn() == 0) - { - return Strings::naturalCompare(leftFileInfo.fileName(), rightFileInfo.fileName(), - Qt::CaseInsensitive) < 0; - } - if (sortColumn() == 1) - { - auto leftSize = leftFileInfo.size(); - auto rightSize = rightFileInfo.size(); - if ((leftSize == rightSize) || (leftFileInfo.isDir() && rightFileInfo.isDir())) - { - return Strings::naturalCompare(leftFileInfo.fileName(), - rightFileInfo.fileName(), - Qt::CaseInsensitive) < 0 - ? asc - : !asc; - } - return leftSize < rightSize; - } - return QSortFilterProxyModel::lessThan(left, right); - } - - virtual Qt::ItemFlags flags(const QModelIndex &index) const - { - if (!index.isValid()) - return Qt::NoItemFlags; - - auto sourceIndex = mapToSource(index); - Qt::ItemFlags flags = sourceIndex.flags(); - if (index.column() == 0) - { - flags |= Qt::ItemIsUserCheckable; - if (sourceIndex.model()->hasChildren(sourceIndex)) - { - flags |= Qt::ItemIsTristate; - } - } - - return flags; - } - - virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const - { - QModelIndex sourceIndex = mapToSource(index); - - if (index.column() == 0 && role == Qt::CheckStateRole) - { - QFileSystemModel *fsm = qobject_cast<QFileSystemModel *>(sourceModel()); - auto blockedPath = relPath(fsm->filePath(sourceIndex)); - auto cover = blocked.cover(blockedPath); - if (!cover.isNull()) - { - return QVariant(Qt::Unchecked); - } - else if (blocked.exists(blockedPath)) - { - return QVariant(Qt::PartiallyChecked); - } - else - { - return QVariant(Qt::Checked); - } - } - - return sourceIndex.data(role); - } - - virtual bool setData(const QModelIndex &index, const QVariant &value, - int role = Qt::EditRole) - { - if (index.column() == 0 && role == Qt::CheckStateRole) - { - Qt::CheckState state = static_cast<Qt::CheckState>(value.toInt()); - return setFilterState(index, state); - } - - QModelIndex sourceIndex = mapToSource(index); - return QSortFilterProxyModel::sourceModel()->setData(sourceIndex, value, role); - } - - QString relPath(const QString &path) const - { - QString prefix = QDir().absoluteFilePath(m_instance->instanceRoot()); - prefix += '/'; - if (!path.startsWith(prefix)) - { - return QString(); - } - return path.mid(prefix.size()); - } - - bool setFilterState(QModelIndex index, Qt::CheckState state) - { - QFileSystemModel *fsm = qobject_cast<QFileSystemModel *>(sourceModel()); - - if (!fsm) - { - return false; - } - - QModelIndex sourceIndex = mapToSource(index); - auto blockedPath = relPath(fsm->filePath(sourceIndex)); - bool changed = false; - if (state == Qt::Unchecked) - { - // blocking a path - auto &node = blocked.insert(blockedPath); - // get rid of all blocked nodes below - node.clear(); - changed = true; - } - else if (state == Qt::Checked || state == Qt::PartiallyChecked) - { - if (!blocked.remove(blockedPath)) - { - auto cover = blocked.cover(blockedPath); - qDebug() << "Blocked by cover" << cover; - // uncover - blocked.remove(cover); - // block all contents, except for any cover - QModelIndex rootIndex = - fsm->index(FS::PathCombine(m_instance->instanceRoot(), cover)); - QModelIndex doing = rootIndex; - int row = 0; - QStack<QModelIndex> todo; - while (1) - { - auto node = doing.child(row, 0); - if (!node.isValid()) - { - if (!todo.size()) - { - break; - } - else - { - doing = todo.pop(); - row = 0; - continue; - } - } - auto relpath = relPath(fsm->filePath(node)); - if (blockedPath.startsWith(relpath)) // cover found? - { - // continue processing cover later - todo.push(node); - } - else - { - // or just block this one. - blocked.insert(relpath); - } - row++; - } - } - changed = true; - } - if (changed) - { - // update the thing - emit dataChanged(index, index, {Qt::CheckStateRole}); - // update everything above index - QModelIndex up = index.parent(); - while (1) - { - if (!up.isValid()) - break; - emit dataChanged(up, up, {Qt::CheckStateRole}); - up = up.parent(); - } - // and everything below the index - QModelIndex doing = index; - int row = 0; - QStack<QModelIndex> todo; - while (1) - { - auto node = doing.child(row, 0); - if (!node.isValid()) - { - if (!todo.size()) - { - break; - } - else - { - doing = todo.pop(); - row = 0; - continue; - } - } - emit dataChanged(node, node, {Qt::CheckStateRole}); - todo.push(node); - row++; - } - // siblings and unrelated nodes are ignored - } - return true; - } - - bool shouldExpand(QModelIndex index) - { - QModelIndex sourceIndex = mapToSource(index); - QFileSystemModel *fsm = qobject_cast<QFileSystemModel *>(sourceModel()); - if (!fsm) - { - return false; - } - auto blockedPath = relPath(fsm->filePath(sourceIndex)); - auto found = blocked.find(blockedPath); - if(found) - { - return !found->leaf(); - } - return false; - } - - void setBlockedPaths(QStringList paths) - { - beginResetModel(); - blocked.clear(); - blocked.insert(paths); - endResetModel(); - } - - const SeparatorPrefixTree<'/'> & blockedPaths() const - { - return blocked; - } - -protected: - bool filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const - { - Q_UNUSED(source_parent) - - // adjust the columns you want to filter out here - // return false for those that will be hidden - if (source_column == 2 || source_column == 3) - return false; - - return true; - } - -private: - InstancePtr m_instance; - SeparatorPrefixTree<'/'> blocked; -}; - -ExportInstanceDialog::ExportInstanceDialog(InstancePtr instance, QWidget *parent) - : QDialog(parent), ui(new Ui::ExportInstanceDialog), m_instance(instance) -{ - ui->setupUi(this); - auto model = new QFileSystemModel(this); - proxyModel = new PackIgnoreProxy(m_instance, this); - loadPackIgnore(); - proxyModel->setSourceModel(model); - auto root = instance->instanceRoot(); - ui->treeView->setModel(proxyModel); - ui->treeView->setRootIndex(proxyModel->mapFromSource(model->index(root))); - ui->treeView->sortByColumn(0, Qt::AscendingOrder); - - connect(proxyModel, SIGNAL(rowsInserted(QModelIndex,int,int)), SLOT(rowsInserted(QModelIndex,int,int))); - - model->setFilter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Hidden); - model->setRootPath(root); - auto headerView = ui->treeView->header(); - headerView->setSectionResizeMode(QHeaderView::ResizeToContents); - headerView->setSectionResizeMode(0, QHeaderView::Stretch); -} - -ExportInstanceDialog::~ExportInstanceDialog() -{ - delete ui; -} - -/// Save icon to instance's folder is needed -void SaveIcon(InstancePtr m_instance) -{ - auto iconKey = m_instance->iconKey(); - auto iconList = MMC->icons(); - auto mmcIcon = iconList->icon(iconKey); - if(!mmcIcon || mmcIcon->isBuiltIn()) { - return; - } - auto path = mmcIcon->getFilePath(); - if(!path.isNull()) { - QFileInfo inInfo (path); - FS::copy(path, FS::PathCombine(m_instance->instanceRoot(), inInfo.fileName())) (); - return; - } - auto & image = mmcIcon->m_images[mmcIcon->type()]; - auto & icon = image.icon; - auto sizes = icon.availableSizes(); - if(sizes.size() == 0) - { - return; - } - auto areaOf = [](QSize size) - { - return size.width() * size.height(); - }; - QSize largest = sizes[0]; - // find variant with largest area - for(auto size: sizes) - { - if(areaOf(largest) < areaOf(size)) - { - largest = size; - } - } - auto pixmap = icon.pixmap(largest); - pixmap.save(FS::PathCombine(m_instance->instanceRoot(), iconKey + ".png")); -} - -bool ExportInstanceDialog::doExport() -{ - auto name = FS::RemoveInvalidFilenameChars(m_instance->name()); - - const QString output = QFileDialog::getSaveFileName( - this, tr("Export %1").arg(m_instance->name()), - FS::PathCombine(QDir::homePath(), name + ".zip"), "Zip (*.zip)", nullptr, QFileDialog::DontConfirmOverwrite); - if (output.isEmpty()) - { - return false; - } - if (QFile::exists(output)) - { - int ret = - QMessageBox::question(this, tr("Overwrite?"), - tr("This file already exists. Do you want to overwrite it?"), - QMessageBox::No, QMessageBox::Yes); - if (ret == QMessageBox::No) - { - return false; - } - } - - SaveIcon(m_instance); - - auto & blocked = proxyModel->blockedPaths(); - using std::placeholders::_1; - if (!JlCompress::compressDir(output, m_instance->instanceRoot(), name, std::bind(&SeparatorPrefixTree<'/'>::covers, blocked, _1))) - { - QMessageBox::warning(this, tr("Error"), tr("Unable to export instance")); - return false; - } - return true; -} - -void ExportInstanceDialog::done(int result) -{ - savePackIgnore(); - if (result == QDialog::Accepted) - { - if (doExport()) - { - QDialog::done(QDialog::Accepted); - return; - } - else - { - return; - } - } - QDialog::done(result); -} - -void ExportInstanceDialog::rowsInserted(QModelIndex parent, int top, int bottom) -{ - //WARNING: possible off-by-one? - for(int i = top; i < bottom; i++) - { - auto node = parent.child(i, 0); - if(proxyModel->shouldExpand(node)) - { - auto expNode = node.parent(); - if(!expNode.isValid()) - { - continue; - } - ui->treeView->expand(node); - } - } -} - -QString ExportInstanceDialog::ignoreFileName() -{ - return FS::PathCombine(m_instance->instanceRoot(), ".packignore"); -} - -void ExportInstanceDialog::loadPackIgnore() -{ - auto filename = ignoreFileName(); - QFile ignoreFile(filename); - if(!ignoreFile.open(QIODevice::ReadOnly)) - { - return; - } - auto data = ignoreFile.readAll(); - auto string = QString::fromUtf8(data); - proxyModel->setBlockedPaths(string.split('\n', QString::SkipEmptyParts)); -} - -void ExportInstanceDialog::savePackIgnore() -{ - auto data = proxyModel->blockedPaths().toStringList().join('\n').toUtf8(); - auto filename = ignoreFileName(); - try - { - FS::write(filename, data); - } - catch (const Exception &e) - { - qWarning() << e.cause(); - } -} - -#include "ExportInstanceDialog.moc" diff --git a/application/dialogs/ExportInstanceDialog.h b/application/dialogs/ExportInstanceDialog.h deleted file mode 100644 index dea02d1b..00000000 --- a/application/dialogs/ExportInstanceDialog.h +++ /dev/null @@ -1,54 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QDialog> -#include <QModelIndex> -#include <memory> - -class BaseInstance; -class PackIgnoreProxy; -typedef std::shared_ptr<BaseInstance> InstancePtr; - -namespace Ui -{ -class ExportInstanceDialog; -} - -class ExportInstanceDialog : public QDialog -{ - Q_OBJECT - -public: - explicit ExportInstanceDialog(InstancePtr instance, QWidget *parent = 0); - ~ExportInstanceDialog(); - - virtual void done(int result); - -private: - bool doExport(); - void loadPackIgnore(); - void savePackIgnore(); - QString ignoreFileName(); - -private: - Ui::ExportInstanceDialog *ui; - InstancePtr m_instance; - PackIgnoreProxy * proxyModel; - -private slots: - void rowsInserted(QModelIndex parent, int top, int bottom); -}; diff --git a/application/dialogs/ExportInstanceDialog.ui b/application/dialogs/ExportInstanceDialog.ui deleted file mode 100644 index bcd4e84a..00000000 --- a/application/dialogs/ExportInstanceDialog.ui +++ /dev/null @@ -1,83 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>ExportInstanceDialog</class> - <widget class="QDialog" name="ExportInstanceDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>720</width> - <height>625</height> - </rect> - </property> - <property name="windowTitle"> - <string>Export Instance</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QTreeView" name="treeView"> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - <property name="selectionMode"> - <enum>QAbstractItemView::ExtendedSelection</enum> - </property> - <property name="sortingEnabled"> - <bool>true</bool> - </property> - <attribute name="headerStretchLastSection"> - <bool>false</bool> - </attribute> - </widget> - </item> - <item> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="standardButtons"> - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> - </property> - </widget> - </item> - </layout> - </widget> - <tabstops> - <tabstop>treeView</tabstop> - </tabstops> - <resources/> - <connections> - <connection> - <sender>buttonBox</sender> - <signal>accepted()</signal> - <receiver>ExportInstanceDialog</receiver> - <slot>accept()</slot> - <hints> - <hint type="sourcelabel"> - <x>248</x> - <y>254</y> - </hint> - <hint type="destinationlabel"> - <x>157</x> - <y>274</y> - </hint> - </hints> - </connection> - <connection> - <sender>buttonBox</sender> - <signal>rejected()</signal> - <receiver>ExportInstanceDialog</receiver> - <slot>reject()</slot> - <hints> - <hint type="sourcelabel"> - <x>316</x> - <y>260</y> - </hint> - <hint type="destinationlabel"> - <x>286</x> - <y>274</y> - </hint> - </hints> - </connection> - </connections> -</ui> diff --git a/application/dialogs/IconPickerDialog.cpp b/application/dialogs/IconPickerDialog.cpp deleted file mode 100644 index 90436554..00000000 --- a/application/dialogs/IconPickerDialog.cpp +++ /dev/null @@ -1,163 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <QKeyEvent> -#include <QPushButton> -#include <QFileDialog> - -#include "MultiMC.h" - -#include "IconPickerDialog.h" -#include "ui_IconPickerDialog.h" - -#include "groupview/InstanceDelegate.h" - -#include "icons/IconList.h" -#include "icons/IconUtils.h" -#include <DesktopServices.h> - -IconPickerDialog::IconPickerDialog(QWidget *parent) - : QDialog(parent), ui(new Ui::IconPickerDialog) -{ - ui->setupUi(this); - setWindowModality(Qt::WindowModal); - - auto contentsWidget = ui->iconView; - contentsWidget->setViewMode(QListView::IconMode); - contentsWidget->setFlow(QListView::LeftToRight); - contentsWidget->setIconSize(QSize(48, 48)); - contentsWidget->setMovement(QListView::Static); - contentsWidget->setResizeMode(QListView::Adjust); - contentsWidget->setSelectionMode(QAbstractItemView::SingleSelection); - contentsWidget->setSpacing(5); - contentsWidget->setWordWrap(false); - contentsWidget->setWrapping(true); - contentsWidget->setUniformItemSizes(true); - contentsWidget->setTextElideMode(Qt::ElideRight); - contentsWidget->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); - contentsWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); - contentsWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - contentsWidget->setItemDelegate(new ListViewDelegate()); - - // contentsWidget->setAcceptDrops(true); - contentsWidget->setDropIndicatorShown(true); - contentsWidget->viewport()->setAcceptDrops(true); - contentsWidget->setDragDropMode(QAbstractItemView::DropOnly); - contentsWidget->setDefaultDropAction(Qt::CopyAction); - - contentsWidget->installEventFilter(this); - - contentsWidget->setModel(MMC->icons().get()); - - // NOTE: ResetRole forces the button to be on the left, while the OK/Cancel ones are on the right. We win. - auto buttonAdd = ui->buttonBox->addButton(tr("Add Icon"), QDialogButtonBox::ResetRole); - auto buttonRemove = ui->buttonBox->addButton(tr("Remove Icon"), QDialogButtonBox::ResetRole); - - connect(buttonAdd, SIGNAL(clicked(bool)), SLOT(addNewIcon())); - connect(buttonRemove, SIGNAL(clicked(bool)), SLOT(removeSelectedIcon())); - - connect(contentsWidget, SIGNAL(doubleClicked(QModelIndex)), SLOT(activated(QModelIndex))); - - connect(contentsWidget->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)), SLOT(selectionChanged(QItemSelection, QItemSelection))); - - auto buttonFolder = ui->buttonBox->addButton(tr("Open Folder"), QDialogButtonBox::ResetRole); - connect(buttonFolder, &QPushButton::clicked, this, &IconPickerDialog::openFolder); -} - -bool IconPickerDialog::eventFilter(QObject *obj, QEvent *evt) -{ - if (obj != ui->iconView) - return QDialog::eventFilter(obj, evt); - if (evt->type() != QEvent::KeyPress) - { - return QDialog::eventFilter(obj, evt); - } - QKeyEvent *keyEvent = static_cast<QKeyEvent *>(evt); - switch (keyEvent->key()) - { - case Qt::Key_Delete: - removeSelectedIcon(); - return true; - case Qt::Key_Plus: - addNewIcon(); - return true; - default: - break; - } - return QDialog::eventFilter(obj, evt); -} - -void IconPickerDialog::addNewIcon() -{ - //: The title of the select icons open file dialog - QString selectIcons = tr("Select Icons"); - //: The type of icon files - auto filter = IconUtils::getIconFilter(); - QStringList fileNames = QFileDialog::getOpenFileNames(this, selectIcons, QString(), tr("Icons %1").arg(filter)); - MMC->icons()->installIcons(fileNames); -} - -void IconPickerDialog::removeSelectedIcon() -{ - MMC->icons()->deleteIcon(selectedIconKey); -} - -void IconPickerDialog::activated(QModelIndex index) -{ - selectedIconKey = index.data(Qt::UserRole).toString(); - accept(); -} - -void IconPickerDialog::selectionChanged(QItemSelection selected, QItemSelection deselected) -{ - if (selected.empty()) - return; - - QString key = selected.first().indexes().first().data(Qt::UserRole).toString(); - if (!key.isEmpty()) - selectedIconKey = key; -} - -int IconPickerDialog::execWithSelection(QString selection) -{ - auto list = MMC->icons(); - auto contentsWidget = ui->iconView; - selectedIconKey = selection; - - int index_nr = list->getIconIndex(selection); - auto model_index = list->index(index_nr); - contentsWidget->selectionModel()->select( - model_index, QItemSelectionModel::Current | QItemSelectionModel::Select); - - QMetaObject::invokeMethod(this, "delayed_scroll", Qt::QueuedConnection, - Q_ARG(QModelIndex, model_index)); - return QDialog::exec(); -} - -void IconPickerDialog::delayed_scroll(QModelIndex model_index) -{ - auto contentsWidget = ui->iconView; - contentsWidget->scrollTo(model_index); -} - -IconPickerDialog::~IconPickerDialog() -{ - delete ui; -} - -void IconPickerDialog::openFolder() -{ - DesktopServices::openDirectory(MMC->icons()->getDirectory(), true); -} diff --git a/application/dialogs/IconPickerDialog.h b/application/dialogs/IconPickerDialog.h deleted file mode 100644 index 9af6a678..00000000 --- a/application/dialogs/IconPickerDialog.h +++ /dev/null @@ -1,49 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once -#include <QDialog> -#include <QItemSelection> - -namespace Ui -{ -class IconPickerDialog; -} - -class IconPickerDialog : public QDialog -{ - Q_OBJECT - -public: - explicit IconPickerDialog(QWidget *parent = 0); - ~IconPickerDialog(); - int execWithSelection(QString selection); - QString selectedIconKey; - -protected: - virtual bool eventFilter(QObject *, QEvent *); - -private: - Ui::IconPickerDialog *ui; - -private -slots: - void selectionChanged(QItemSelection, QItemSelection); - void activated(QModelIndex); - void delayed_scroll(QModelIndex); - void addNewIcon(); - void removeSelectedIcon(); - void openFolder(); -}; diff --git a/application/dialogs/IconPickerDialog.ui b/application/dialogs/IconPickerDialog.ui deleted file mode 100644 index c548edfb..00000000 --- a/application/dialogs/IconPickerDialog.ui +++ /dev/null @@ -1,67 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>IconPickerDialog</class> - <widget class="QDialog" name="IconPickerDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>676</width> - <height>555</height> - </rect> - </property> - <property name="windowTitle"> - <string>Pick icon</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QListView" name="iconView"/> - </item> - <item> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="standardButtons"> - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> - </property> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections> - <connection> - <sender>buttonBox</sender> - <signal>accepted()</signal> - <receiver>IconPickerDialog</receiver> - <slot>accept()</slot> - <hints> - <hint type="sourcelabel"> - <x>248</x> - <y>254</y> - </hint> - <hint type="destinationlabel"> - <x>157</x> - <y>274</y> - </hint> - </hints> - </connection> - <connection> - <sender>buttonBox</sender> - <signal>rejected()</signal> - <receiver>IconPickerDialog</receiver> - <slot>reject()</slot> - <hints> - <hint type="sourcelabel"> - <x>316</x> - <y>260</y> - </hint> - <hint type="destinationlabel"> - <x>286</x> - <y>274</y> - </hint> - </hints> - </connection> - </connections> -</ui> diff --git a/application/dialogs/LoginDialog.cpp b/application/dialogs/LoginDialog.cpp deleted file mode 100644 index 32f8a48f..00000000 --- a/application/dialogs/LoginDialog.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "LoginDialog.h" -#include "ui_LoginDialog.h" - -#include "minecraft/auth/YggdrasilTask.h" - -#include <QtWidgets/QPushButton> - -LoginDialog::LoginDialog(QWidget *parent) : QDialog(parent), ui(new Ui::LoginDialog) -{ - ui->setupUi(this); - ui->progressBar->setVisible(false); - ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); - - connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); - connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); -} - -LoginDialog::~LoginDialog() -{ - delete ui; -} - -// Stage 1: User interaction -void LoginDialog::accept() -{ - setUserInputsEnabled(false); - ui->progressBar->setVisible(true); - - // Setup the login task and start it - m_account = MojangAccount::createFromUsername(ui->userTextBox->text()); - m_loginTask = m_account->login(nullptr, ui->passTextBox->text()); - connect(m_loginTask.get(), &Task::failed, this, &LoginDialog::onTaskFailed); - connect(m_loginTask.get(), &Task::succeeded, this, - &LoginDialog::onTaskSucceeded); - connect(m_loginTask.get(), &Task::status, this, &LoginDialog::onTaskStatus); - connect(m_loginTask.get(), &Task::progress, this, &LoginDialog::onTaskProgress); - m_loginTask->start(); -} - -void LoginDialog::setUserInputsEnabled(bool enable) -{ - ui->userTextBox->setEnabled(enable); - ui->passTextBox->setEnabled(enable); - ui->buttonBox->setEnabled(enable); -} - -// Enable the OK button only when both textboxes contain something. -void LoginDialog::on_userTextBox_textEdited(const QString &newText) -{ - ui->buttonBox->button(QDialogButtonBox::Ok) - ->setEnabled(!newText.isEmpty() && !ui->passTextBox->text().isEmpty()); -} -void LoginDialog::on_passTextBox_textEdited(const QString &newText) -{ - ui->buttonBox->button(QDialogButtonBox::Ok) - ->setEnabled(!newText.isEmpty() && !ui->userTextBox->text().isEmpty()); -} - -void LoginDialog::onTaskFailed(const QString &reason) -{ - // Set message - ui->label->setText("<span style='color:red'>" + reason + "</span>"); - - // Re-enable user-interaction - setUserInputsEnabled(true); - ui->progressBar->setVisible(false); -} - -void LoginDialog::onTaskSucceeded() -{ - QDialog::accept(); -} - -void LoginDialog::onTaskStatus(const QString &status) -{ - ui->label->setText(status); -} - -void LoginDialog::onTaskProgress(qint64 current, qint64 total) -{ - ui->progressBar->setMaximum(total); - ui->progressBar->setValue(current); -} - -// Public interface -MojangAccountPtr LoginDialog::newAccount(QWidget *parent, QString msg) -{ - LoginDialog dlg(parent); - dlg.ui->label->setText(msg); - if (dlg.exec() == QDialog::Accepted) - { - return dlg.m_account; - } - return 0; -} diff --git a/application/dialogs/LoginDialog.h b/application/dialogs/LoginDialog.h deleted file mode 100644 index 16bdddfb..00000000 --- a/application/dialogs/LoginDialog.h +++ /dev/null @@ -1,58 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QtWidgets/QDialog> -#include <QtCore/QEventLoop> - -#include "minecraft/auth/MojangAccount.h" - -namespace Ui -{ -class LoginDialog; -} - -class LoginDialog : public QDialog -{ - Q_OBJECT - -public: - ~LoginDialog(); - - static MojangAccountPtr newAccount(QWidget *parent, QString message); - -private: - explicit LoginDialog(QWidget *parent = 0); - - void setUserInputsEnabled(bool enable); - -protected -slots: - void accept(); - - void onTaskFailed(const QString &reason); - void onTaskSucceeded(); - void onTaskStatus(const QString &status); - void onTaskProgress(qint64 current, qint64 total); - - void on_userTextBox_textEdited(const QString &newText); - void on_passTextBox_textEdited(const QString &newText); - -private: - Ui::LoginDialog *ui; - MojangAccountPtr m_account; - std::shared_ptr<Task> m_loginTask; -}; diff --git a/application/dialogs/LoginDialog.ui b/application/dialogs/LoginDialog.ui deleted file mode 100644 index dbdb3b93..00000000 --- a/application/dialogs/LoginDialog.ui +++ /dev/null @@ -1,87 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>LoginDialog</class> - <widget class="QDialog" name="LoginDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>421</width> - <height>238</height> - </rect> - </property> - <property name="sizePolicy"> - <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="windowTitle"> - <string>Add Account</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QLabel" name="microsoftAccountsNoticeLabel"> - <property name="text"> - <string>NOTICE: MultiMC does not currently support Microsoft accounts. This means that accounts created from December 2020 onwards cannot be used.</string> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="label"> - <property name="text"> - <string notr="true">Message label placeholder.</string> - </property> - <property name="textFormat"> - <enum>Qt::RichText</enum> - </property> - <property name="textInteractionFlags"> - <set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> - </property> - </widget> - </item> - <item> - <widget class="QLineEdit" name="userTextBox"> - <property name="placeholderText"> - <string>Email</string> - </property> - </widget> - </item> - <item> - <widget class="QLineEdit" name="passTextBox"> - <property name="echoMode"> - <enum>QLineEdit::Password</enum> - </property> - <property name="placeholderText"> - <string>Password</string> - </property> - </widget> - </item> - <item> - <widget class="QProgressBar" name="progressBar"> - <property name="value"> - <number>24</number> - </property> - <property name="textVisible"> - <bool>false</bool> - </property> - </widget> - </item> - <item> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="standardButtons"> - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> - </property> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/application/dialogs/NewComponentDialog.cpp b/application/dialogs/NewComponentDialog.cpp deleted file mode 100644 index f4d6274f..00000000 --- a/application/dialogs/NewComponentDialog.cpp +++ /dev/null @@ -1,106 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "MultiMC.h" -#include "NewComponentDialog.h" -#include "ui_NewComponentDialog.h" - -#include <BaseVersion.h> -#include <icons/IconList.h> -#include <tasks/Task.h> -#include <InstanceList.h> - -#include "VersionSelectDialog.h" -#include "ProgressDialog.h" -#include "IconPickerDialog.h" - -#include <QLayout> -#include <QPushButton> -#include <QFileDialog> -#include <QValidator> - -#include <meta/Index.h> -#include <meta/VersionList.h> - -NewComponentDialog::NewComponentDialog(const QString & initialName, const QString & initialUid, QWidget *parent) - : QDialog(parent), ui(new Ui::NewComponentDialog) -{ - ui->setupUi(this); - resize(minimumSizeHint()); - - ui->nameTextBox->setText(initialName); - ui->uidTextBox->setText(initialUid); - - connect(ui->nameTextBox, &QLineEdit::textChanged, this, &NewComponentDialog::updateDialogState); - connect(ui->uidTextBox, &QLineEdit::textChanged, this, &NewComponentDialog::updateDialogState); - - auto groups = MMC->instances()->getGroups().toSet(); - ui->nameTextBox->setFocus(); - - originalPlaceholderText = ui->uidTextBox->placeholderText(); - updateDialogState(); -} - -NewComponentDialog::~NewComponentDialog() -{ - delete ui; -} - -void NewComponentDialog::updateDialogState() -{ - auto protoUid = ui->nameTextBox->text().toLower(); - protoUid.remove(QRegularExpression("[^a-z]")); - if(protoUid.isEmpty()) - { - ui->uidTextBox->setPlaceholderText(originalPlaceholderText); - } - else - { - QString suggestedUid = "org.multimc.custom." + protoUid; - ui->uidTextBox->setPlaceholderText(suggestedUid); - } - bool allowOK = !name().isEmpty() && !uid().isEmpty() && !uidBlacklist.contains(uid()); - ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(allowOK); -} - -QString NewComponentDialog::name() const -{ - auto result = ui->nameTextBox->text(); - if(result.size()) - { - return result.trimmed(); - } - return QString(); -} - -QString NewComponentDialog::uid() const -{ - auto result = ui->uidTextBox->text(); - if(result.size()) - { - return result.trimmed(); - } - result = ui->uidTextBox->placeholderText(); - if(result.size() && result != originalPlaceholderText) - { - return result.trimmed(); - } - return QString(); -} - -void NewComponentDialog::setBlacklist(QStringList badUids) -{ - uidBlacklist = badUids; -} diff --git a/application/dialogs/NewComponentDialog.h b/application/dialogs/NewComponentDialog.h deleted file mode 100644 index 8c790beb..00000000 --- a/application/dialogs/NewComponentDialog.h +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QDialog> - -#include <QString> -#include <QStringList> - -namespace Ui -{ -class NewComponentDialog; -} - -class NewComponentDialog : public QDialog -{ - Q_OBJECT - -public: - explicit NewComponentDialog(const QString & initialName = QString(), const QString & initialUid = QString(), QWidget *parent = 0); - virtual ~NewComponentDialog(); - void setBlacklist(QStringList badUids); - - QString name() const; - QString uid() const; - -private slots: - void updateDialogState(); - -private: - Ui::NewComponentDialog *ui; - - QString originalPlaceholderText; - QStringList uidBlacklist; -}; diff --git a/application/dialogs/NewComponentDialog.ui b/application/dialogs/NewComponentDialog.ui deleted file mode 100644 index 03b0d222..00000000 --- a/application/dialogs/NewComponentDialog.ui +++ /dev/null @@ -1,101 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>NewComponentDialog</class> - <widget class="QDialog" name="NewComponentDialog"> - <property name="windowModality"> - <enum>Qt::ApplicationModal</enum> - </property> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>345</width> - <height>146</height> - </rect> - </property> - <property name="windowTitle"> - <string>Add Empty Component</string> - </property> - <property name="windowIcon"> - <iconset> - <normaloff>:/icons/toolbar/copy</normaloff>:/icons/toolbar/copy</iconset> - </property> - <property name="modal"> - <bool>true</bool> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QLineEdit" name="nameTextBox"> - <property name="placeholderText"> - <string>Name</string> - </property> - </widget> - </item> - <item> - <widget class="QLineEdit" name="uidTextBox"> - <property name="placeholderText"> - <string>uid</string> - </property> - </widget> - </item> - <item> - <widget class="Line" name="line"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - </widget> - </item> - <item> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="standardButtons"> - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> - </property> - </widget> - </item> - </layout> - </widget> - <tabstops> - <tabstop>nameTextBox</tabstop> - <tabstop>uidTextBox</tabstop> - </tabstops> - <resources> - <include location="../../graphics.qrc"/> - </resources> - <connections> - <connection> - <sender>buttonBox</sender> - <signal>accepted()</signal> - <receiver>NewComponentDialog</receiver> - <slot>accept()</slot> - <hints> - <hint type="sourcelabel"> - <x>248</x> - <y>254</y> - </hint> - <hint type="destinationlabel"> - <x>157</x> - <y>274</y> - </hint> - </hints> - </connection> - <connection> - <sender>buttonBox</sender> - <signal>rejected()</signal> - <receiver>NewComponentDialog</receiver> - <slot>reject()</slot> - <hints> - <hint type="sourcelabel"> - <x>316</x> - <y>260</y> - </hint> - <hint type="destinationlabel"> - <x>286</x> - <y>274</y> - </hint> - </hints> - </connection> - </connections> -</ui> diff --git a/application/dialogs/NewInstanceDialog.cpp b/application/dialogs/NewInstanceDialog.cpp deleted file mode 100644 index 86963149..00000000 --- a/application/dialogs/NewInstanceDialog.cpp +++ /dev/null @@ -1,255 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "MultiMC.h" -#include "NewInstanceDialog.h" -#include "ui_NewInstanceDialog.h" - -#include <BaseVersion.h> -#include <icons/IconList.h> -#include <tasks/Task.h> -#include <InstanceList.h> - -#include "VersionSelectDialog.h" -#include "ProgressDialog.h" -#include "IconPickerDialog.h" - -#include <QLayout> -#include <QPushButton> -#include <QFileDialog> -#include <QValidator> -#include <QDialogButtonBox> - -#include "widgets/PageContainer.h" -#include <pages/modplatform/VanillaPage.h> -#include <pages/modplatform/atlauncher/AtlPage.h> -#include <pages/modplatform/ftb/FtbPage.h> -#include <pages/modplatform/legacy_ftb/Page.h> -#include <pages/modplatform/flame/FlamePage.h> -#include <pages/modplatform/ImportPage.h> -#include <pages/modplatform/technic/TechnicPage.h> - - - -NewInstanceDialog::NewInstanceDialog(const QString & initialGroup, const QString & url, QWidget *parent) - : QDialog(parent), ui(new Ui::NewInstanceDialog) -{ - ui->setupUi(this); - - setWindowIcon(MMC->getThemedIcon("new")); - - InstIconKey = "default"; - ui->iconButton->setIcon(MMC->icons()->getIcon(InstIconKey)); - - auto groups = MMC->instances()->getGroups().toSet(); - auto groupList = QStringList(groups.toList()); - groupList.sort(Qt::CaseInsensitive); - groupList.removeOne(""); - groupList.push_front(initialGroup); - groupList.push_front(""); - ui->groupBox->addItems(groupList); - int index = groupList.indexOf(initialGroup); - if(index == -1) - { - index = 0; - } - ui->groupBox->setCurrentIndex(index); - ui->groupBox->lineEdit()->setPlaceholderText(tr("No group")); - - - // NOTE: m_buttons must be initialized before PageContainer, because it indirectly accesses m_buttons through setSuggestedPack! Do not move this below. - m_buttons = new QDialogButtonBox(QDialogButtonBox::Help | QDialogButtonBox::Ok | QDialogButtonBox::Cancel); - - m_container = new PageContainer(this); - m_container->setSizePolicy(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Expanding); - m_container->layout()->setContentsMargins(0, 0, 0, 0); - ui->verticalLayout->insertWidget(2, m_container); - - m_container->addButtons(m_buttons); - - // Bonk Qt over its stupid head and make sure it understands which button is the default one... - // See: https://stackoverflow.com/questions/24556831/qbuttonbox-set-default-button - auto OkButton = m_buttons->button(QDialogButtonBox::Ok); - OkButton->setDefault(true); - OkButton->setAutoDefault(true); - connect(OkButton, &QPushButton::clicked, this, &NewInstanceDialog::accept); - - auto CancelButton = m_buttons->button(QDialogButtonBox::Cancel); - CancelButton->setDefault(false); - CancelButton->setAutoDefault(false); - connect(CancelButton, &QPushButton::clicked, this, &NewInstanceDialog::reject); - - auto HelpButton = m_buttons->button(QDialogButtonBox::Help); - HelpButton->setDefault(false); - HelpButton->setAutoDefault(false); - connect(HelpButton, &QPushButton::clicked, m_container, &PageContainer::help); - - if(!url.isEmpty()) - { - QUrl actualUrl(url); - m_container->selectPage("import"); - importPage->setUrl(url); - } - - updateDialogState(); - - restoreGeometry(QByteArray::fromBase64(MMC->settings()->get("NewInstanceGeometry").toByteArray())); -} - -void NewInstanceDialog::reject() -{ - MMC->settings()->set("NewInstanceGeometry", saveGeometry().toBase64()); - QDialog::reject(); -} - -void NewInstanceDialog::accept() -{ - MMC->settings()->set("NewInstanceGeometry", saveGeometry().toBase64()); - importIconNow(); - QDialog::accept(); -} - -QList<BasePage *> NewInstanceDialog::getPages() -{ - importPage = new ImportPage(this); - flamePage = new FlamePage(this); - auto technicPage = new TechnicPage(this); - return - { - new VanillaPage(this), - importPage, - new AtlPage(this), - flamePage, - new FtbPage(this), - new LegacyFTB::Page(this), - technicPage - }; -} - -QString NewInstanceDialog::dialogTitle() -{ - return tr("New Instance"); -} - -NewInstanceDialog::~NewInstanceDialog() -{ - delete ui; -} - -void NewInstanceDialog::setSuggestedPack(const QString& name, InstanceTask* task) -{ - creationTask.reset(task); - ui->instNameTextBox->setPlaceholderText(name); - - if(!task) - { - ui->iconButton->setIcon(MMC->icons()->getIcon("default")); - importIcon = false; - } - - auto allowOK = task && !instName().isEmpty(); - m_buttons->button(QDialogButtonBox::Ok)->setEnabled(allowOK); -} - -void NewInstanceDialog::setSuggestedIconFromFile(const QString &path, const QString &name) -{ - importIcon = true; - importIconPath = path; - importIconName = name; - - //Hmm, for some reason they can be to small - ui->iconButton->setIcon(QIcon(path)); -} - -void NewInstanceDialog::setSuggestedIcon(const QString &key) -{ - auto icon = MMC->icons()->getIcon(key); - importIcon = false; - - ui->iconButton->setIcon(icon); -} - -InstanceTask * NewInstanceDialog::extractTask() -{ - InstanceTask * extracted = creationTask.get(); - creationTask.release(); - extracted->setName(instName()); - extracted->setGroup(instGroup()); - extracted->setIcon(iconKey()); - return extracted; -} - -void NewInstanceDialog::updateDialogState() -{ - auto allowOK = creationTask && !instName().isEmpty(); - auto OkButton = m_buttons->button(QDialogButtonBox::Ok); - if(OkButton->isEnabled() != allowOK) - { - OkButton->setEnabled(allowOK); - } -} - -QString NewInstanceDialog::instName() const -{ - auto result = ui->instNameTextBox->text().trimmed(); - if(result.size()) - { - return result; - } - result = ui->instNameTextBox->placeholderText().trimmed(); - if(result.size()) - { - return result; - } - return QString(); -} - -QString NewInstanceDialog::instGroup() const -{ - return ui->groupBox->currentText(); -} -QString NewInstanceDialog::iconKey() const -{ - return InstIconKey; -} - -void NewInstanceDialog::on_iconButton_clicked() -{ - importIconNow(); //so the user can switch back - IconPickerDialog dlg(this); - dlg.execWithSelection(InstIconKey); - - if (dlg.result() == QDialog::Accepted) - { - InstIconKey = dlg.selectedIconKey; - ui->iconButton->setIcon(MMC->icons()->getIcon(InstIconKey)); - importIcon = false; - } -} - -void NewInstanceDialog::on_instNameTextBox_textChanged(const QString &arg1) -{ - updateDialogState(); -} - -void NewInstanceDialog::importIconNow() -{ - if(importIcon) { - MMC->icons()->installIcon(importIconPath, importIconName); - InstIconKey = importIconName; - importIcon = false; - } - MMC->settings()->set("NewInstanceGeometry", saveGeometry().toBase64()); -} diff --git a/application/dialogs/NewInstanceDialog.h b/application/dialogs/NewInstanceDialog.h deleted file mode 100644 index 53abf8cf..00000000 --- a/application/dialogs/NewInstanceDialog.h +++ /dev/null @@ -1,80 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QDialog> - -#include "BaseVersion.h" -#include "pages/BasePageProvider.h" -#include "InstanceTask.h" - -namespace Ui -{ -class NewInstanceDialog; -} - -class PageContainer; -class QDialogButtonBox; -class ImportPage; -class FlamePage; - -class NewInstanceDialog : public QDialog, public BasePageProvider -{ - Q_OBJECT - -public: - explicit NewInstanceDialog(const QString & initialGroup, const QString & url = QString(), QWidget *parent = 0); - ~NewInstanceDialog(); - - void updateDialogState(); - - void setSuggestedPack(const QString & name = QString(), InstanceTask * task = nullptr); - void setSuggestedIconFromFile(const QString &path, const QString &name); - void setSuggestedIcon(const QString &key); - - InstanceTask * extractTask(); - - QString dialogTitle() override; - QList<BasePage *> getPages() override; - - QString instName() const; - QString instGroup() const; - QString iconKey() const; - -public slots: - void accept() override; - void reject() override; - -private slots: - void on_iconButton_clicked(); - void on_instNameTextBox_textChanged(const QString &arg1); - -private: - Ui::NewInstanceDialog *ui = nullptr; - PageContainer * m_container = nullptr; - QDialogButtonBox * m_buttons = nullptr; - - QString InstIconKey; - ImportPage *importPage = nullptr; - FlamePage *flamePage = nullptr; - std::unique_ptr<InstanceTask> creationTask; - - bool importIcon = false; - QString importIconPath; - QString importIconName; - - void importIconNow(); -}; diff --git a/application/dialogs/NewInstanceDialog.ui b/application/dialogs/NewInstanceDialog.ui deleted file mode 100644 index 7fb19ff5..00000000 --- a/application/dialogs/NewInstanceDialog.ui +++ /dev/null @@ -1,87 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>NewInstanceDialog</class> - <widget class="QDialog" name="NewInstanceDialog"> - <property name="windowModality"> - <enum>Qt::ApplicationModal</enum> - </property> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>730</width> - <height>127</height> - </rect> - </property> - <property name="windowTitle"> - <string>New Instance</string> - </property> - <property name="windowIcon"> - <iconset> - <normaloff>:/icons/toolbar/new</normaloff>:/icons/toolbar/new</iconset> - </property> - <property name="modal"> - <bool>true</bool> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="1" column="2"> - <widget class="QComboBox" name="groupBox"> - <property name="editable"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLabel" name="groupLabel"> - <property name="text"> - <string>&Group:</string> - </property> - <property name="buddy"> - <cstring>groupBox</cstring> - </property> - </widget> - </item> - <item row="0" column="2"> - <widget class="QLineEdit" name="instNameTextBox"/> - </item> - <item row="0" column="1"> - <widget class="QLabel" name="nameLabel"> - <property name="text"> - <string>&Name:</string> - </property> - <property name="buddy"> - <cstring>instNameTextBox</cstring> - </property> - </widget> - </item> - <item row="0" column="0" rowspan="2"> - <widget class="QToolButton" name="iconButton"> - <property name="iconSize"> - <size> - <width>80</width> - <height>80</height> - </size> - </property> - </widget> - </item> - </layout> - </item> - <item> - <widget class="Line" name="line"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - </widget> - </item> - </layout> - </widget> - <tabstops> - <tabstop>iconButton</tabstop> - <tabstop>instNameTextBox</tabstop> - <tabstop>groupBox</tabstop> - </tabstops> - <resources/> - <connections/> -</ui> diff --git a/application/dialogs/NotificationDialog.cpp b/application/dialogs/NotificationDialog.cpp deleted file mode 100644 index f2a35ae2..00000000 --- a/application/dialogs/NotificationDialog.cpp +++ /dev/null @@ -1,86 +0,0 @@ -#include "NotificationDialog.h" -#include "ui_NotificationDialog.h" - -#include <QTimerEvent> -#include <QStyle> - -NotificationDialog::NotificationDialog(const NotificationChecker::NotificationEntry &entry, QWidget *parent) : - QDialog(parent, Qt::MSWindowsFixedSizeDialogHint | Qt::WindowTitleHint | Qt::CustomizeWindowHint), - ui(new Ui::NotificationDialog) -{ - ui->setupUi(this); - - QStyle::StandardPixmap icon; - switch (entry.type) - { - case NotificationChecker::NotificationEntry::Critical: - icon = QStyle::SP_MessageBoxCritical; - break; - case NotificationChecker::NotificationEntry::Warning: - icon = QStyle::SP_MessageBoxWarning; - break; - default: - case NotificationChecker::NotificationEntry::Information: - icon = QStyle::SP_MessageBoxInformation; - break; - } - ui->iconLabel->setPixmap(style()->standardPixmap(icon, 0, this)); - ui->messageLabel->setText(entry.message); - - m_dontShowAgainText = tr("Don't show again"); - m_closeText = tr("Close"); - - ui->dontShowAgainBtn->setText(m_dontShowAgainText + QString(" (%1)").arg(m_dontShowAgainTime)); - ui->closeBtn->setText(m_closeText + QString(" (%1)").arg(m_closeTime)); - - startTimer(1000); -} - -NotificationDialog::~NotificationDialog() -{ - delete ui; -} - -void NotificationDialog::timerEvent(QTimerEvent *event) -{ - if (m_dontShowAgainTime > 0) - { - m_dontShowAgainTime--; - if (m_dontShowAgainTime == 0) - { - ui->dontShowAgainBtn->setText(m_dontShowAgainText); - ui->dontShowAgainBtn->setEnabled(true); - } - else - { - ui->dontShowAgainBtn->setText(m_dontShowAgainText + QString(" (%1)").arg(m_dontShowAgainTime)); - } - } - if (m_closeTime > 0) - { - m_closeTime--; - if (m_closeTime == 0) - { - ui->closeBtn->setText(m_closeText); - ui->closeBtn->setEnabled(true); - } - else - { - ui->closeBtn->setText(m_closeText + QString(" (%1)").arg(m_closeTime)); - } - } - - if (m_closeTime == 0 && m_dontShowAgainTime == 0) - { - killTimer(event->timerId()); - } -} - -void NotificationDialog::on_dontShowAgainBtn_clicked() -{ - done(DontShowAgain); -} -void NotificationDialog::on_closeBtn_clicked() -{ - done(Normal); -} diff --git a/application/dialogs/NotificationDialog.h b/application/dialogs/NotificationDialog.h deleted file mode 100644 index e1cbb9fa..00000000 --- a/application/dialogs/NotificationDialog.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef NOTIFICATIONDIALOG_H -#define NOTIFICATIONDIALOG_H - -#include <QDialog> - -#include "notifications/NotificationChecker.h" - -namespace Ui { -class NotificationDialog; -} - -class NotificationDialog : public QDialog -{ - Q_OBJECT - -public: - explicit NotificationDialog(const NotificationChecker::NotificationEntry &entry, QWidget *parent = 0); - ~NotificationDialog(); - - enum ExitCode - { - Normal, - DontShowAgain - }; - -protected: - void timerEvent(QTimerEvent *event); - -private: - Ui::NotificationDialog *ui; - - int m_dontShowAgainTime = 10; - int m_closeTime = 5; - - QString m_dontShowAgainText; - QString m_closeText; - -private -slots: - void on_dontShowAgainBtn_clicked(); - void on_closeBtn_clicked(); -}; - -#endif // NOTIFICATIONDIALOG_H diff --git a/application/dialogs/NotificationDialog.ui b/application/dialogs/NotificationDialog.ui deleted file mode 100644 index 3e6c22bc..00000000 --- a/application/dialogs/NotificationDialog.ui +++ /dev/null @@ -1,85 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>NotificationDialog</class> - <widget class="QDialog" name="NotificationDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>320</width> - <height>240</height> - </rect> - </property> - <property name="windowTitle"> - <string>Notification</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout" stretch="1,0"> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_2" stretch="0,1"> - <item> - <widget class="QLabel" name="iconLabel"> - <property name="text"> - <string notr="true">TextLabel</string> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="messageLabel"> - <property name="text"> - <string notr="true">TextLabel</string> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - <property name="openExternalLinks"> - <bool>true</bool> - </property> - <property name="textInteractionFlags"> - <set>Qt::TextBrowserInteraction</set> - </property> - </widget> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="dontShowAgainBtn"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Don't show again</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="closeBtn"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Close</string> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/application/dialogs/ProfileSelectDialog.cpp b/application/dialogs/ProfileSelectDialog.cpp deleted file mode 100644 index ae34709f..00000000 --- a/application/dialogs/ProfileSelectDialog.cpp +++ /dev/null @@ -1,116 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "ProfileSelectDialog.h" -#include <SkinUtils.h> -#include "ui_ProfileSelectDialog.h" - -#include <QItemSelectionModel> - -#include <QDebug> - -#include <dialogs/ProgressDialog.h> - -#include <MultiMC.h> - -ProfileSelectDialog::ProfileSelectDialog(const QString &message, int flags, QWidget *parent) - : QDialog(parent), ui(new Ui::ProfileSelectDialog) -{ - ui->setupUi(this); - - m_accounts = MMC->accounts(); - auto view = ui->listView; - //view->setModel(m_accounts.get()); - //view->hideColumn(MojangAccountList::ActiveColumn); - view->setColumnCount(1); - view->setRootIsDecorated(false); - if(QTreeWidgetItem* header = view->headerItem()) - { - header->setText(0, tr("Name")); - } - else - { - view->setHeaderLabel(tr("Name")); - } - QList <QTreeWidgetItem *> items; - for (int i = 0; i < m_accounts->count(); i++) - { - MojangAccountPtr account = m_accounts->at(i); - for (auto profile : account->profiles()) - { - auto profileLabel = profile.name; - if(account->isInUse()) - { - profileLabel += tr(" (in use)"); - } - auto item = new QTreeWidgetItem(view); - item->setText(0, profileLabel); - item->setIcon(0, SkinUtils::getFaceFromCache(profile.id)); - item->setData(0, MojangAccountList::PointerRole, QVariant::fromValue(account)); - items.append(item); - } - } - view->addTopLevelItems(items); - - // Set the message label. - ui->msgLabel->setVisible(!message.isEmpty()); - ui->msgLabel->setText(message); - - // Flags... - ui->globalDefaultCheck->setVisible(flags & GlobalDefaultCheckbox); - ui->instDefaultCheck->setVisible(flags & InstanceDefaultCheckbox); - qDebug() << flags; - - // Select the first entry in the list. - ui->listView->setCurrentIndex(ui->listView->model()->index(0, 0)); - - connect(ui->listView, SIGNAL(doubleClicked(QModelIndex)), SLOT(on_buttonBox_accepted())); -} - -ProfileSelectDialog::~ProfileSelectDialog() -{ - delete ui; -} - -MojangAccountPtr ProfileSelectDialog::selectedAccount() const -{ - return m_selected; -} - -bool ProfileSelectDialog::useAsGlobalDefault() const -{ - return ui->globalDefaultCheck->isChecked(); -} - -bool ProfileSelectDialog::useAsInstDefaullt() const -{ - return ui->instDefaultCheck->isChecked(); -} - -void ProfileSelectDialog::on_buttonBox_accepted() -{ - QModelIndexList selection = ui->listView->selectionModel()->selectedIndexes(); - if (selection.size() > 0) - { - QModelIndex selected = selection.first(); - m_selected = selected.data(MojangAccountList::PointerRole).value<MojangAccountPtr>(); - } - close(); -} - -void ProfileSelectDialog::on_buttonBox_rejected() -{ - close(); -} diff --git a/application/dialogs/ProfileSelectDialog.h b/application/dialogs/ProfileSelectDialog.h deleted file mode 100644 index 9f95830c..00000000 --- a/application/dialogs/ProfileSelectDialog.h +++ /dev/null @@ -1,90 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QDialog> - -#include <memory> - -#include "minecraft/auth/MojangAccountList.h" - -namespace Ui -{ -class ProfileSelectDialog; -} - -class ProfileSelectDialog : public QDialog -{ - Q_OBJECT -public: - enum Flags - { - NoFlags = 0, - - /*! - * Shows a check box on the dialog that allows the user to specify that the account - * they've selected should be used as the global default for all instances. - */ - GlobalDefaultCheckbox, - - /*! - * Shows a check box on the dialog that allows the user to specify that the account - * they've selected should be used as the default for the instance they are currently launching. - * This is not currently implemented. - */ - InstanceDefaultCheckbox, - }; - - /*! - * Constructs a new account select dialog with the given parent and message. - * The message will be shown at the top of the dialog. It is an empty string by default. - */ - explicit ProfileSelectDialog(const QString& message="", int flags=0, QWidget *parent = 0); - ~ProfileSelectDialog(); - - /*! - * Gets a pointer to the account that the user selected. - * This is null if the user clicked cancel or hasn't clicked OK yet. - */ - MojangAccountPtr selectedAccount() const; - - /*! - * Returns true if the user checked the "use as global default" checkbox. - * If the checkbox wasn't shown, this function returns false. - */ - bool useAsGlobalDefault() const; - - /*! - * Returns true if the user checked the "use as instance default" checkbox. - * If the checkbox wasn't shown, this function returns false. - */ - bool useAsInstDefaullt() const; - -public -slots: - void on_buttonBox_accepted(); - - void on_buttonBox_rejected(); - -protected: - std::shared_ptr<MojangAccountList> m_accounts; - - //! The account that was selected when the user clicked OK. - MojangAccountPtr m_selected; - -private: - Ui::ProfileSelectDialog *ui; -}; diff --git a/application/dialogs/ProfileSelectDialog.ui b/application/dialogs/ProfileSelectDialog.ui deleted file mode 100644 index e779b51b..00000000 --- a/application/dialogs/ProfileSelectDialog.ui +++ /dev/null @@ -1,62 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>ProfileSelectDialog</class> - <widget class="QDialog" name="ProfileSelectDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>465</width> - <height>300</height> - </rect> - </property> - <property name="windowTitle"> - <string>Select an Account</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QLabel" name="msgLabel"> - <property name="text"> - <string>Select a profile.</string> - </property> - </widget> - </item> - <item> - <widget class="QTreeWidget" name="listView"> - <column> - <property name="text"> - <string notr="true">1</string> - </property> - </column> - </widget> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QCheckBox" name="globalDefaultCheck"> - <property name="text"> - <string>Use as default?</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="instDefaultCheck"> - <property name="text"> - <string>Use as default for this instance only?</string> - </property> - </widget> - </item> - </layout> - </item> - <item> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="standardButtons"> - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> - </property> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/application/dialogs/ProgressDialog.cpp b/application/dialogs/ProgressDialog.cpp deleted file mode 100644 index 4b092859..00000000 --- a/application/dialogs/ProgressDialog.cpp +++ /dev/null @@ -1,196 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "ProgressDialog.h" -#include "ui_ProgressDialog.h" - -#include <QKeyEvent> -#include <QDebug> - -#include "tasks/Task.h" - -ProgressDialog::ProgressDialog(QWidget *parent) : QDialog(parent), ui(new Ui::ProgressDialog) -{ - ui->setupUi(this); - this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint); - setSkipButton(false); - changeProgress(0, 100); -} - -void ProgressDialog::setSkipButton(bool present, QString label) -{ - ui->skipButton->setAutoDefault(false); - ui->skipButton->setDefault(false); - ui->skipButton->setFocusPolicy(Qt::ClickFocus); - ui->skipButton->setEnabled(present); - ui->skipButton->setVisible(present); - ui->skipButton->setText(label); - updateSize(); -} - -void ProgressDialog::on_skipButton_clicked(bool checked) -{ - Q_UNUSED(checked); - task->abort(); -} - -ProgressDialog::~ProgressDialog() -{ - delete ui; -} - -void ProgressDialog::updateSize() -{ - QSize qSize = QSize(480, minimumSizeHint().height()); - resize(qSize); - setFixedSize(qSize); -} - -int ProgressDialog::execWithTask(Task *task) -{ - this->task = task; - QDialog::DialogCode result; - - if(!task) - { - qDebug() << "Programmer error: progress dialog created with null task."; - return Accepted; - } - - if(handleImmediateResult(result)) - { - return result; - } - - // Connect signals. - connect(task, SIGNAL(started()), SLOT(onTaskStarted())); - connect(task, SIGNAL(failed(QString)), SLOT(onTaskFailed(QString))); - connect(task, SIGNAL(succeeded()), SLOT(onTaskSucceeded())); - connect(task, SIGNAL(status(QString)), SLOT(changeStatus(const QString &))); - connect(task, SIGNAL(progress(qint64, qint64)), SLOT(changeProgress(qint64, qint64))); - - // if this didn't connect to an already running task, invoke start - if(!task->isRunning()) - { - task->start(); - } - if(task->isRunning()) - { - changeProgress(task->getProgress(), task->getTotalProgress()); - changeStatus(task->getStatus()); - return QDialog::exec(); - } - else if(handleImmediateResult(result)) - { - return result; - } - else - { - return QDialog::Rejected; - } -} - -// TODO: only provide the unique_ptr overloads -int ProgressDialog::execWithTask(std::unique_ptr<Task> &&task) -{ - connect(this, &ProgressDialog::destroyed, task.get(), &Task::deleteLater); - return execWithTask(task.release()); -} -int ProgressDialog::execWithTask(std::unique_ptr<Task> &task) -{ - connect(this, &ProgressDialog::destroyed, task.get(), &Task::deleteLater); - return execWithTask(task.release()); -} - -bool ProgressDialog::handleImmediateResult(QDialog::DialogCode &result) -{ - if(task->isFinished()) - { - if(task->wasSuccessful()) - { - result = QDialog::Accepted; - } - else - { - result = QDialog::Rejected; - } - return true; - } - return false; -} - -Task *ProgressDialog::getTask() -{ - return task; -} - -void ProgressDialog::onTaskStarted() -{ -} - -void ProgressDialog::onTaskFailed(QString failure) -{ - reject(); -} - -void ProgressDialog::onTaskSucceeded() -{ - accept(); -} - -void ProgressDialog::changeStatus(const QString &status) -{ - ui->statusLabel->setText(status); - updateSize(); -} - -void ProgressDialog::changeProgress(qint64 current, qint64 total) -{ - ui->taskProgressBar->setMaximum(total); - ui->taskProgressBar->setValue(current); -} - -void ProgressDialog::keyPressEvent(QKeyEvent *e) -{ - if(ui->skipButton->isVisible()) - { - if (e->key() == Qt::Key_Escape) - { - on_skipButton_clicked(true); - return; - } - else if(e->key() == Qt::Key_Tab) - { - ui->skipButton->setFocusPolicy(Qt::StrongFocus); - ui->skipButton->setFocus(); - ui->skipButton->setAutoDefault(true); - ui->skipButton->setDefault(true); - return; - } - } - QDialog::keyPressEvent(e); -} - -void ProgressDialog::closeEvent(QCloseEvent *e) -{ - if (task && task->isRunning()) - { - e->ignore(); - } - else - { - QDialog::closeEvent(e); - } -} diff --git a/application/dialogs/ProgressDialog.h b/application/dialogs/ProgressDialog.h deleted file mode 100644 index b28ad4fa..00000000 --- a/application/dialogs/ProgressDialog.h +++ /dev/null @@ -1,71 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QDialog> -#include <memory> - -class Task; - -namespace Ui -{ -class ProgressDialog; -} - -class ProgressDialog : public QDialog -{ - Q_OBJECT - -public: - explicit ProgressDialog(QWidget *parent = 0); - ~ProgressDialog(); - - void updateSize(); - - int execWithTask(Task *task); - int execWithTask(std::unique_ptr<Task> &&task); - int execWithTask(std::unique_ptr<Task> &task); - - void setSkipButton(bool present, QString label = QString()); - - Task *getTask(); - -public -slots: - void onTaskStarted(); - void onTaskFailed(QString failure); - void onTaskSucceeded(); - - void changeStatus(const QString &status); - void changeProgress(qint64 current, qint64 total); - - -private -slots: - void on_skipButton_clicked(bool checked); - -protected: - virtual void keyPressEvent(QKeyEvent *e); - virtual void closeEvent(QCloseEvent *e); - -private: - bool handleImmediateResult(QDialog::DialogCode &result); - -private: - Ui::ProgressDialog *ui; - - Task *task; -}; diff --git a/application/dialogs/ProgressDialog.ui b/application/dialogs/ProgressDialog.ui deleted file mode 100644 index 04b8fef3..00000000 --- a/application/dialogs/ProgressDialog.ui +++ /dev/null @@ -1,66 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>ProgressDialog</class> - <widget class="QDialog" name="ProgressDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>400</width> - <height>100</height> - </rect> - </property> - <property name="minimumSize"> - <size> - <width>400</width> - <height>0</height> - </size> - </property> - <property name="maximumSize"> - <size> - <width>600</width> - <height>16777215</height> - </size> - </property> - <property name="windowTitle"> - <string>Please wait...</string> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <widget class="QLabel" name="statusLabel"> - <property name="text"> - <string>Task Status...</string> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QProgressBar" name="taskProgressBar"> - <property name="value"> - <number>24</number> - </property> - <property name="textVisible"> - <bool>false</bool> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QPushButton" name="skipButton"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>Skip</string> - </property> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/application/dialogs/SkinUploadDialog.cpp b/application/dialogs/SkinUploadDialog.cpp deleted file mode 100644 index 56133529..00000000 --- a/application/dialogs/SkinUploadDialog.cpp +++ /dev/null @@ -1,114 +0,0 @@ -#include <QFileInfo> -#include <QFileDialog> -#include <FileSystem.h> -#include <minecraft/services/SkinUpload.h> -#include "SkinUploadDialog.h" -#include "ui_SkinUploadDialog.h" -#include "ProgressDialog.h" -#include "CustomMessageBox.h" - -void SkinUploadDialog::on_buttonBox_rejected() -{ - close(); -} - -void SkinUploadDialog::on_buttonBox_accepted() -{ - AuthSessionPtr session = std::make_shared<AuthSession>(); - auto login = m_acct->login(session); - ProgressDialog prog(this); - if (prog.execWithTask((Task*)login.get()) != QDialog::Accepted) - { - //FIXME: recover with password prompt - CustomMessageBox::selectable(this, tr("Skin Upload"), tr("Failed to login!"), QMessageBox::Warning)->exec(); - close(); - return; - } - QString fileName; - QString input = ui->skinPathTextBox->text(); - QRegExp urlPrefixMatcher("^([a-z]+)://.+$"); - bool isLocalFile = false; - // it has an URL prefix -> it is an URL - if(urlPrefixMatcher.exactMatch(input)) - { - QUrl fileURL = input; - if(fileURL.isValid()) - { - // local? - if(fileURL.isLocalFile()) - { - isLocalFile = true; - fileName = fileURL.toLocalFile(); - } - else - { - CustomMessageBox::selectable( - this, - tr("Skin Upload"), - tr("Using remote URLs for setting skins is not implemented yet."), - QMessageBox::Warning - )->exec(); - close(); - return; - } - } - else - { - CustomMessageBox::selectable( - this, - tr("Skin Upload"), - tr("You cannot use an invalid URL for uploading skins."), - QMessageBox::Warning - )->exec(); - close(); - return; - } - } - else - { - // just assume it's a path then - isLocalFile = true; - fileName = ui->skinPathTextBox->text(); - } - if (isLocalFile && !QFile::exists(fileName)) - { - CustomMessageBox::selectable(this, tr("Skin Upload"), tr("Skin file does not exist!"), QMessageBox::Warning)->exec(); - close(); - return; - } - SkinUpload::Model model = SkinUpload::STEVE; - if (ui->steveBtn->isChecked()) - { - model = SkinUpload::STEVE; - } - else if (ui->alexBtn->isChecked()) - { - model = SkinUpload::ALEX; - } - SkinUploadPtr upload = std::make_shared<SkinUpload>(this, session, FS::read(fileName), model); - if (prog.execWithTask((Task*)upload.get()) != QDialog::Accepted) - { - CustomMessageBox::selectable(this, tr("Skin Upload"), tr("Failed to upload skin!"), QMessageBox::Warning)->exec(); - close(); - return; - } - CustomMessageBox::selectable(this, tr("Skin Upload"), tr("Success"), QMessageBox::Information)->exec(); - close(); -} - -void SkinUploadDialog::on_skinBrowseBtn_clicked() -{ - QString raw_path = QFileDialog::getOpenFileName(this, tr("Select Skin Texture"), QString(), "*.png"); - if (raw_path.isEmpty() || !QFileInfo::exists(raw_path)) - { - return; - } - QString cooked_path = FS::NormalizePath(raw_path); - ui->skinPathTextBox->setText(cooked_path); -} - -SkinUploadDialog::SkinUploadDialog(MojangAccountPtr acct, QWidget *parent) - :QDialog(parent), m_acct(acct), ui(new Ui::SkinUploadDialog) -{ - ui->setupUi(this); -} diff --git a/application/dialogs/SkinUploadDialog.h b/application/dialogs/SkinUploadDialog.h deleted file mode 100644 index deb44eac..00000000 --- a/application/dialogs/SkinUploadDialog.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include <QDialog> -#include <minecraft/auth/MojangAccount.h> - -namespace Ui -{ - class SkinUploadDialog; -} - -class SkinUploadDialog : public QDialog { - Q_OBJECT -public: - explicit SkinUploadDialog(MojangAccountPtr acct, QWidget *parent = 0); - virtual ~SkinUploadDialog() {}; - -public slots: - void on_buttonBox_accepted(); - - void on_buttonBox_rejected(); - - void on_skinBrowseBtn_clicked(); - -protected: - MojangAccountPtr m_acct; - -private: - Ui::SkinUploadDialog *ui; -}; diff --git a/application/dialogs/SkinUploadDialog.ui b/application/dialogs/SkinUploadDialog.ui deleted file mode 100644 index 6f5307e3..00000000 --- a/application/dialogs/SkinUploadDialog.ui +++ /dev/null @@ -1,85 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>SkinUploadDialog</class> - <widget class="QDialog" name="SkinUploadDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>413</width> - <height>300</height> - </rect> - </property> - <property name="windowTitle"> - <string>Skin Upload</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QGroupBox" name="fileBox"> - <property name="title"> - <string>Skin File</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QLineEdit" name="skinPathTextBox"/> - </item> - <item> - <widget class="QPushButton" name="skinBrowseBtn"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="maximumSize"> - <size> - <width>28</width> - <height>16777215</height> - </size> - </property> - <property name="text"> - <string notr="true">...</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="modelBox"> - <property name="title"> - <string>Player Model</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_1"> - <item> - <widget class="QRadioButton" name="steveBtn"> - <property name="text"> - <string>Steve Model</string> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QRadioButton" name="alexBtn"> - <property name="text"> - <string>Alex Model</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="standardButtons"> - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> - </property> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/application/dialogs/UpdateDialog.cpp b/application/dialogs/UpdateDialog.cpp deleted file mode 100644 index 2baaf5e9..00000000 --- a/application/dialogs/UpdateDialog.cpp +++ /dev/null @@ -1,182 +0,0 @@ -#include "UpdateDialog.h" -#include "ui_UpdateDialog.h" -#include <QDebug> -#include "MultiMC.h" -#include <settings/SettingsObject.h> -#include <Json.h> - -#include "BuildConfig.h" -#include "HoeDown.h" - -UpdateDialog::UpdateDialog(bool hasUpdate, QWidget *parent) : QDialog(parent), ui(new Ui::UpdateDialog) -{ - ui->setupUi(this); - auto channel = MMC->settings()->get("UpdateChannel").toString(); - if(hasUpdate) - { - ui->label->setText(tr("A new %1 update is available!").arg(channel)); - } - else - { - ui->label->setText(tr("No %1 updates found. You are running the latest version.").arg(channel)); - ui->btnUpdateNow->setHidden(true); - ui->btnUpdateLater->setText(tr("Close")); - } - ui->changelogBrowser->setHtml(tr("<center><h1>Loading changelog...</h1></center>")); - loadChangelog(); - restoreGeometry(QByteArray::fromBase64(MMC->settings()->get("UpdateDialogGeometry").toByteArray())); -} - -UpdateDialog::~UpdateDialog() -{ -} - -void UpdateDialog::loadChangelog() -{ - auto channel = MMC->settings()->get("UpdateChannel").toString(); - dljob.reset(new NetJob("Changelog")); - QString url; - if(channel == "stable") - { - url = QString("https://raw.githubusercontent.com/MultiMC/MultiMC5/%1/changelog.md").arg(channel); - m_changelogType = CHANGELOG_MARKDOWN; - } - else - { - url = QString("https://api.github.com/repos/MultiMC/MultiMC5/compare/%1...%2").arg(BuildConfig.GIT_COMMIT, channel); - m_changelogType = CHANGELOG_COMMITS; - } - dljob->addNetAction(Net::Download::makeByteArray(QUrl(url), &changelogData)); - connect(dljob.get(), &NetJob::succeeded, this, &UpdateDialog::changelogLoaded); - connect(dljob.get(), &NetJob::failed, this, &UpdateDialog::changelogFailed); - dljob->start(); -} - -QString reprocessMarkdown(QByteArray markdown) -{ - HoeDown hoedown; - QString output = hoedown.process(markdown); - - // HACK: easier than customizing hoedown - output.replace(QRegExp("GH-([0-9]+)"), "<a href=\"https://github.com/MultiMC/MultiMC5/issues/\\1\">GH-\\1</a>"); - qDebug() << output; - return output; -} - -QString reprocessCommits(QByteArray json) -{ - auto channel = MMC->settings()->get("UpdateChannel").toString(); - try - { - QString result; - auto document = Json::requireDocument(json); - auto rootobject = Json::requireObject(document); - auto status = Json::requireString(rootobject, "status"); - auto diff_url = Json::requireString(rootobject, "html_url"); - - auto print_commits = [&]() - { - result += "<table cellspacing=0 cellpadding=2 style='border-width: 1px; border-style: solid'>"; - auto commitarray = Json::requireArray(rootobject, "commits"); - for(int i = commitarray.size() - 1; i >= 0; i--) - { - const auto & commitval = commitarray[i]; - auto commitobj = Json::requireObject(commitval); - auto parents_info = Json::ensureArray(commitobj, "parents"); - // NOTE: this ignores merge commits, because they have more than one parent - if(parents_info.size() > 1) - { - continue; - } - auto commit_url = Json::requireString(commitobj, "html_url"); - auto commit_info = Json::requireObject(commitobj, "commit"); - auto commit_message = Json::requireString(commit_info, "message"); - auto lines = commit_message.split('\n'); - QRegularExpression regexp("(?<prefix>(GH-(?<issuenr>[0-9]+))|(NOISSUE)|(SCRATCH))? *(?<rest>.*) *"); - auto match = regexp.match(lines.takeFirst(), 0, QRegularExpression::NormalMatch); - auto issuenr = match.captured("issuenr"); - auto prefix = match.captured("prefix"); - auto rest = match.captured("rest"); - result += "<tr><td>"; - if(issuenr.length()) - { - result += QString("<a href=\"https://github.com/MultiMC/MultiMC5/issues/%1\">GH-%2</a>").arg(issuenr, issuenr); - } - else if(prefix.length()) - { - result += QString("<a href=\"%1\">%2</a>").arg(commit_url, prefix); - } - else - { - result += QString("<a href=\"%1\">NOISSUE</a>").arg(commit_url); - } - result += "</td>"; - lines.prepend(rest); - result += "<td><p>" + lines.join("<br />") + "</p></td></tr>"; - } - result += "</table>"; - }; - - if(status == "identical") - { - return QObject::tr("<p>There are no code changes between your current version and latest %1.</p>").arg(channel); - } - else if(status == "ahead") - { - result += QObject::tr("<p>Following commits were added since last update:</p>"); - print_commits(); - } - else if(status == "diverged") - { - auto commit_ahead = Json::requireInteger(rootobject, "ahead_by"); - auto commit_behind = Json::requireInteger(rootobject, "behind_by"); - result += QObject::tr("<p>The update removes %1 commits and adds the following %2:</p>").arg(commit_behind).arg(commit_ahead); - print_commits(); - } - result += QObject::tr("<p>You can <a href=\"%1\">look at the changes on github</a>.</p>").arg(diff_url); - return result; - } - catch (const JSONValidationError &e) - { - qWarning() << "Got an unparseable commit log from github:" << e.what(); - qDebug() << json; - } - return QString(); -} - -void UpdateDialog::changelogLoaded() -{ - QString result; - switch(m_changelogType) - { - case CHANGELOG_COMMITS: - result = reprocessCommits(changelogData); - break; - case CHANGELOG_MARKDOWN: - result = reprocessMarkdown(changelogData); - break; - } - changelogData.clear(); - ui->changelogBrowser->setHtml(result); -} - -void UpdateDialog::changelogFailed(QString reason) -{ - ui->changelogBrowser->setHtml(tr("<p align=\"center\" <span style=\"font-size:22pt;\">Failed to fetch changelog... Error: %1</span></p>").arg(reason)); -} - -void UpdateDialog::on_btnUpdateLater_clicked() -{ - reject(); -} - -void UpdateDialog::on_btnUpdateNow_clicked() -{ - done(UPDATE_NOW); -} - -void UpdateDialog::closeEvent(QCloseEvent* evt) -{ - MMC->settings()->set("UpdateDialogGeometry", saveGeometry().toBase64()); - QDialog::closeEvent(evt); -} diff --git a/application/dialogs/UpdateDialog.h b/application/dialogs/UpdateDialog.h deleted file mode 100644 index ae1799c3..00000000 --- a/application/dialogs/UpdateDialog.h +++ /dev/null @@ -1,67 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QDialog> -#include "net/NetJob.h" - -namespace Ui -{ -class UpdateDialog; -} - -enum UpdateAction -{ - UPDATE_LATER = QDialog::Rejected, - UPDATE_NOW = QDialog::Accepted, -}; - -enum ChangelogType -{ - CHANGELOG_MARKDOWN, - CHANGELOG_COMMITS -}; - -class UpdateDialog : public QDialog -{ - Q_OBJECT - -public: - explicit UpdateDialog(bool hasUpdate = true, QWidget *parent = 0); - ~UpdateDialog(); - -public slots: - void on_btnUpdateNow_clicked(); - void on_btnUpdateLater_clicked(); - - /// Starts loading the changelog - void loadChangelog(); - - /// Slot for when the chengelog loads successfully. - void changelogLoaded(); - - /// Slot for when the chengelog fails to load... - void changelogFailed(QString reason); - -protected: - void closeEvent(QCloseEvent * ) override; - -private: - Ui::UpdateDialog *ui; - QByteArray changelogData; - NetJobPtr dljob; - ChangelogType m_changelogType = CHANGELOG_MARKDOWN; -}; diff --git a/application/dialogs/UpdateDialog.ui b/application/dialogs/UpdateDialog.ui deleted file mode 100644 index b0b3dd83..00000000 --- a/application/dialogs/UpdateDialog.ui +++ /dev/null @@ -1,91 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>UpdateDialog</class> - <widget class="QDialog" name="UpdateDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>657</width> - <height>673</height> - </rect> - </property> - <property name="windowTitle"> - <string>MultiMC Update</string> - </property> - <property name="windowIcon"> - <iconset> - <normaloff>:/icons/toolbar/checkupdate</normaloff>:/icons/toolbar/checkupdate</iconset> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <item> - <widget class="QLabel" name="label"> - <property name="font"> - <font> - <pointsize>14</pointsize> - </font> - </property> - <property name="text"> - <string/> - </property> - <property name="alignment"> - <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> - </property> - <property name="buddy"> - <cstring>changelogBrowser</cstring> - </property> - </widget> - </item> - </layout> - </item> - <item> - <widget class="QTextBrowser" name="changelogBrowser"> - <property name="openExternalLinks"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <widget class="QPushButton" name="btnUpdateNow"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>Update now</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QPushButton" name="btnUpdateLater"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>Don't update yet</string> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - <tabstops> - <tabstop>changelogBrowser</tabstop> - <tabstop>btnUpdateNow</tabstop> - <tabstop>btnUpdateLater</tabstop> - </tabstops> - <resources> - <include location="../../resources/multimc/multimc.qrc"/> - </resources> - <connections/> -</ui> diff --git a/application/dialogs/VersionSelectDialog.cpp b/application/dialogs/VersionSelectDialog.cpp deleted file mode 100644 index ed1210ba..00000000 --- a/application/dialogs/VersionSelectDialog.cpp +++ /dev/null @@ -1,141 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "VersionSelectDialog.h" - -#include <QtWidgets/QButtonGroup> -#include <QtWidgets/QDialogButtonBox> -#include <QtWidgets/QHBoxLayout> -#include <QtWidgets/QPushButton> -#include <QtWidgets/QVBoxLayout> - -#include <dialogs/ProgressDialog.h> -#include "CustomMessageBox.h" - -#include <BaseVersion.h> -#include <BaseVersionList.h> -#include <tasks/Task.h> -#include <QDebug> -#include "MultiMC.h" -#include <VersionProxyModel.h> -#include <widgets/VersionSelectWidget.h> - -VersionSelectDialog::VersionSelectDialog(BaseVersionList *vlist, QString title, QWidget *parent, bool cancelable) - : QDialog(parent) -{ - setObjectName(QStringLiteral("VersionSelectDialog")); - resize(400, 347); - m_verticalLayout = new QVBoxLayout(this); - m_verticalLayout->setObjectName(QStringLiteral("verticalLayout")); - - m_versionWidget = new VersionSelectWidget(parent); - m_verticalLayout->addWidget(m_versionWidget); - - m_horizontalLayout = new QHBoxLayout(); - m_horizontalLayout->setObjectName(QStringLiteral("horizontalLayout")); - - m_refreshButton = new QPushButton(this); - m_refreshButton->setObjectName(QStringLiteral("refreshButton")); - m_horizontalLayout->addWidget(m_refreshButton); - - m_buttonBox = new QDialogButtonBox(this); - m_buttonBox->setObjectName(QStringLiteral("buttonBox")); - m_buttonBox->setOrientation(Qt::Horizontal); - m_buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok); - m_horizontalLayout->addWidget(m_buttonBox); - - m_verticalLayout->addLayout(m_horizontalLayout); - - retranslate(); - - QObject::connect(m_buttonBox, SIGNAL(accepted()), this, SLOT(accept())); - QObject::connect(m_buttonBox, SIGNAL(rejected()), this, SLOT(reject())); - - QMetaObject::connectSlotsByName(this); - setWindowModality(Qt::WindowModal); - setWindowTitle(title); - - m_vlist = vlist; - - if (!cancelable) - { - m_buttonBox->button(QDialogButtonBox::Cancel)->setEnabled(false); - } -} - -void VersionSelectDialog::retranslate() -{ - // FIXME: overrides custom title given in constructor! - setWindowTitle(tr("Choose Version")); - m_refreshButton->setToolTip(tr("Reloads the version list.")); - m_refreshButton->setText(tr("&Refresh")); -} - -void VersionSelectDialog::setCurrentVersion(const QString& version) -{ - m_currentVersion = version; - m_versionWidget->setCurrentVersion(version); -} - -void VersionSelectDialog::setEmptyString(QString emptyString) -{ - m_versionWidget->setEmptyString(emptyString); -} - -void VersionSelectDialog::setEmptyErrorString(QString emptyErrorString) -{ - m_versionWidget->setEmptyErrorString(emptyErrorString); -} - -void VersionSelectDialog::setResizeOn(int column) -{ - resizeOnColumn = column; -} - -int VersionSelectDialog::exec() -{ - QDialog::open(); - m_versionWidget->initialize(m_vlist); - if(resizeOnColumn != -1) - { - m_versionWidget->setResizeOn(resizeOnColumn); - } - return QDialog::exec(); -} - -void VersionSelectDialog::selectRecommended() -{ - m_versionWidget->selectRecommended(); -} - -BaseVersionPtr VersionSelectDialog::selectedVersion() const -{ - return m_versionWidget->selectedVersion(); -} - -void VersionSelectDialog::on_refreshButton_clicked() -{ - m_versionWidget->loadList(); -} - -void VersionSelectDialog::setExactFilter(BaseVersionList::ModelRoles role, QString filter) -{ - m_versionWidget->setExactFilter(role, filter); -} - -void VersionSelectDialog::setFuzzyFilter(BaseVersionList::ModelRoles role, QString filter) -{ - m_versionWidget->setFuzzyFilter(role, filter); -} diff --git a/application/dialogs/VersionSelectDialog.h b/application/dialogs/VersionSelectDialog.h deleted file mode 100644 index ed30d3f3..00000000 --- a/application/dialogs/VersionSelectDialog.h +++ /dev/null @@ -1,78 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QDialog> -#include <QSortFilterProxyModel> - - -#include "BaseVersionList.h" - -class QVBoxLayout; -class QHBoxLayout; -class QDialogButtonBox; -class VersionSelectWidget; -class QPushButton; - -namespace Ui -{ -class VersionSelectDialog; -} - -class VersionProxyModel; - -class VersionSelectDialog : public QDialog -{ - Q_OBJECT - -public: - explicit VersionSelectDialog(BaseVersionList *vlist, QString title, QWidget *parent = 0, bool cancelable = true); - virtual ~VersionSelectDialog() {}; - - int exec() override; - - BaseVersionPtr selectedVersion() const; - - void setCurrentVersion(const QString & version); - void setFuzzyFilter(BaseVersionList::ModelRoles role, QString filter); - void setExactFilter(BaseVersionList::ModelRoles role, QString filter); - void setEmptyString(QString emptyString); - void setEmptyErrorString(QString emptyErrorString); - void setResizeOn(int column); - -private slots: - void on_refreshButton_clicked(); - -private: - void retranslate(); - void selectRecommended(); - -private: - QString m_currentVersion; - VersionSelectWidget *m_versionWidget = nullptr; - QVBoxLayout *m_verticalLayout = nullptr; - QHBoxLayout *m_horizontalLayout = nullptr; - QPushButton *m_refreshButton = nullptr; - QDialogButtonBox *m_buttonBox = nullptr; - - BaseVersionList *m_vlist = nullptr; - - VersionProxyModel *m_proxyModel = nullptr; - - int resizeOnColumn = -1; - - Task * loadTask = nullptr; -}; diff --git a/application/groupview/AccessibleGroupView.cpp b/application/groupview/AccessibleGroupView.cpp deleted file mode 100644 index c6541f18..00000000 --- a/application/groupview/AccessibleGroupView.cpp +++ /dev/null @@ -1,778 +0,0 @@ -#include "GroupView.h" -#include "AccessibleGroupView.h" -#include "AccessibleGroupView_p.h" - -#include <qvariant.h> -#include <qaccessible.h> -#include <qheaderview.h> - -#ifndef QT_NO_ACCESSIBILITY - -QAccessibleInterface *groupViewAccessibleFactory(const QString &classname, QObject *object) -{ - QAccessibleInterface *iface = 0; - if (!object || !object->isWidgetType()) - return iface; - - QWidget *widget = static_cast<QWidget*>(object); - - if (classname == QLatin1String("GroupView")) { - iface = new AccessibleGroupView((GroupView *)widget); - } - return iface; -} - - -QAbstractItemView *AccessibleGroupView::view() const -{ - return qobject_cast<QAbstractItemView*>(object()); -} - -int AccessibleGroupView::logicalIndex(const QModelIndex &index) const -{ - if (!view()->model() || !index.isValid()) - return -1; - return index.row() * (index.model()->columnCount()) + index.column(); -} - -AccessibleGroupView::AccessibleGroupView(QWidget *w) - : QAccessibleObject(w) -{ - Q_ASSERT(view()); -} - -bool AccessibleGroupView::isValid() const -{ - return view(); -} - -AccessibleGroupView::~AccessibleGroupView() -{ - for (QAccessible::Id id : childToId) { - QAccessible::deleteAccessibleInterface(id); - } -} - -QAccessibleInterface *AccessibleGroupView::cellAt(int row, int column) const -{ - if (!view()->model()) { - return 0; - } - - QModelIndex index = view()->model()->index(row, column, view()->rootIndex()); - if (Q_UNLIKELY(!index.isValid())) { - qWarning() << "AccessibleGroupView::cellAt: invalid index: " << index << " for " << view(); - return 0; - } - - return child(logicalIndex(index)); -} - -QAccessibleInterface *AccessibleGroupView::caption() const -{ - return 0; -} - -QString AccessibleGroupView::columnDescription(int column) const -{ - if (!view()->model()) - return QString(); - - return view()->model()->headerData(column, Qt::Horizontal).toString(); -} - -int AccessibleGroupView::columnCount() const -{ - if (!view()->model()) - return 0; - return 1; -} - -int AccessibleGroupView::rowCount() const -{ - if (!view()->model()) - return 0; - return view()->model()->rowCount(); -} - -int AccessibleGroupView::selectedCellCount() const -{ - if (!view()->selectionModel()) - return 0; - return view()->selectionModel()->selectedIndexes().count(); -} - -int AccessibleGroupView::selectedColumnCount() const -{ - if (!view()->selectionModel()) - return 0; - return view()->selectionModel()->selectedColumns().count(); -} - -int AccessibleGroupView::selectedRowCount() const -{ - if (!view()->selectionModel()) - return 0; - return view()->selectionModel()->selectedRows().count(); -} - -QString AccessibleGroupView::rowDescription(int row) const -{ - if (!view()->model()) - return QString(); - return view()->model()->headerData(row, Qt::Vertical).toString(); -} - -QList<QAccessibleInterface *> AccessibleGroupView::selectedCells() const -{ - QList<QAccessibleInterface*> cells; - if (!view()->selectionModel()) - return cells; - const QModelIndexList selectedIndexes = view()->selectionModel()->selectedIndexes(); - cells.reserve(selectedIndexes.size()); - for (const QModelIndex &index : selectedIndexes) - cells.append(child(logicalIndex(index))); - return cells; -} - -QList<int> AccessibleGroupView::selectedColumns() const -{ - if (!view()->selectionModel()) { - return QList<int>(); - } - - const QModelIndexList selectedColumns = view()->selectionModel()->selectedColumns(); - - QList<int> columns; - columns.reserve(selectedColumns.size()); - for (const QModelIndex &index : selectedColumns) { - columns.append(index.column()); - } - - return columns; -} - -QList<int> AccessibleGroupView::selectedRows() const -{ - if (!view()->selectionModel()) { - return QList<int>(); - } - - QList<int> rows; - - const QModelIndexList selectedRows = view()->selectionModel()->selectedRows(); - - rows.reserve(selectedRows.size()); - for (const QModelIndex &index : selectedRows) { - rows.append(index.row()); - } - - return rows; -} - -QAccessibleInterface *AccessibleGroupView::summary() const -{ - return 0; -} - -bool AccessibleGroupView::isColumnSelected(int column) const -{ - if (!view()->selectionModel()) { - return false; - } - - return view()->selectionModel()->isColumnSelected(column, QModelIndex()); -} - -bool AccessibleGroupView::isRowSelected(int row) const -{ - if (!view()->selectionModel()) { - return false; - } - - return view()->selectionModel()->isRowSelected(row, QModelIndex()); -} - -bool AccessibleGroupView::selectRow(int row) -{ - if (!view()->model() || !view()->selectionModel()) { - return false; - } - QModelIndex index = view()->model()->index(row, 0, view()->rootIndex()); - - if (!index.isValid() || view()->selectionBehavior() == QAbstractItemView::SelectColumns) { - return false; - } - - switch (view()->selectionMode()) { - case QAbstractItemView::NoSelection: { - return false; - } - case QAbstractItemView::SingleSelection: { - if (view()->selectionBehavior() != QAbstractItemView::SelectRows && columnCount() > 1 ) - return false; - view()->clearSelection(); - break; - } - case QAbstractItemView::ContiguousSelection: { - if ((!row || !view()->selectionModel()->isRowSelected(row - 1, view()->rootIndex())) && !view()->selectionModel()->isRowSelected(row + 1, view()->rootIndex())) { - view()->clearSelection(); - } - break; - } - default: { - break; - } - } - - view()->selectionModel()->select(index, QItemSelectionModel::Select | QItemSelectionModel::Rows); - return true; -} - -bool AccessibleGroupView::selectColumn(int column) -{ - if (!view()->model() || !view()->selectionModel()) { - return false; - } - QModelIndex index = view()->model()->index(0, column, view()->rootIndex()); - - if (!index.isValid() || view()->selectionBehavior() == QAbstractItemView::SelectRows) { - return false; - } - - switch (view()->selectionMode()) { - case QAbstractItemView::NoSelection: { - return false; - } - case QAbstractItemView::SingleSelection: { - if (view()->selectionBehavior() != QAbstractItemView::SelectColumns && rowCount() > 1) { - return false; - } - // fallthrough intentional - } - case QAbstractItemView::ContiguousSelection: { - if ((!column || !view()->selectionModel()->isColumnSelected(column - 1, view()->rootIndex())) && !view()->selectionModel()->isColumnSelected(column + 1, view()->rootIndex())) { - view()->clearSelection(); - } - break; - } - default: { - break; - } - } - - view()->selectionModel()->select(index, QItemSelectionModel::Select | QItemSelectionModel::Columns); - return true; -} - -bool AccessibleGroupView::unselectRow(int row) -{ - if (!view()->model() || !view()->selectionModel()) { - return false; - } - - QModelIndex index = view()->model()->index(row, 0, view()->rootIndex()); - if (!index.isValid()) { - return false; - } - - QItemSelection selection(index, index); - auto selectionModel = view()->selectionModel(); - - switch (view()->selectionMode()) { - case QAbstractItemView::SingleSelection: - // no unselect - if (selectedRowCount() == 1) { - return false; - } - break; - case QAbstractItemView::ContiguousSelection: { - // no unselect - if (selectedRowCount() == 1) { - return false; - } - - - if ((!row || selectionModel->isRowSelected(row - 1, view()->rootIndex())) && selectionModel->isRowSelected(row + 1, view()->rootIndex())) { - //If there are rows selected both up the current row and down the current rown, - //the ones which are down the current row will be deselected - selection = QItemSelection(index, view()->model()->index(rowCount() - 1, 0, view()->rootIndex())); - } - } - default: { - break; - } - } - - selectionModel->select(selection, QItemSelectionModel::Deselect | QItemSelectionModel::Rows); - return true; -} - -bool AccessibleGroupView::unselectColumn(int column) -{ - auto model = view()->model(); - if (!model || !view()->selectionModel()) { - return false; - } - - QModelIndex index = model->index(0, column, view()->rootIndex()); - if (!index.isValid()) { - return false; - } - - QItemSelection selection(index, index); - - switch (view()->selectionMode()) { - case QAbstractItemView::SingleSelection: { - //In SingleSelection and ContiguousSelection once an item - //is selected, there's no way for the user to unselect all items - if (selectedColumnCount() == 1) { - return false; - } - break; - } - case QAbstractItemView::ContiguousSelection: - if (selectedColumnCount() == 1) { - return false; - } - - if ((!column || view()->selectionModel()->isColumnSelected(column - 1, view()->rootIndex())) - && view()->selectionModel()->isColumnSelected(column + 1, view()->rootIndex())) { - //If there are columns selected both at the left of the current row and at the right - //of the current row, the ones which are at the right will be deselected - selection = QItemSelection(index, model->index(0, columnCount() - 1, view()->rootIndex())); - } - default: - break; - } - - view()->selectionModel()->select(selection, QItemSelectionModel::Deselect | QItemSelectionModel::Columns); - return true; -} - -QAccessible::Role AccessibleGroupView::role() const -{ - return QAccessible::List; -} - -QAccessible::State AccessibleGroupView::state() const -{ - return QAccessible::State(); -} - -QAccessibleInterface *AccessibleGroupView::childAt(int x, int y) const -{ - QPoint viewportOffset = view()->viewport()->mapTo(view(), QPoint(0,0)); - QPoint indexPosition = view()->mapFromGlobal(QPoint(x, y) - viewportOffset); - // FIXME: if indexPosition < 0 in one coordinate, return header - - QModelIndex index = view()->indexAt(indexPosition); - if (index.isValid()) { - return child(logicalIndex(index)); - } - return 0; -} - -int AccessibleGroupView::childCount() const -{ - if (!view()->model()) { - return 0; - } - return (view()->model()->rowCount()) * (view()->model()->columnCount()); -} - -int AccessibleGroupView::indexOfChild(const QAccessibleInterface *iface) const -{ - if (!view()->model()) - return -1; - QAccessibleInterface *parent = iface->parent(); - if (parent->object() != view()) - return -1; - - Q_ASSERT(iface->role() != QAccessible::TreeItem); // should be handled by tree class - if (iface->role() == QAccessible::Cell || iface->role() == QAccessible::ListItem) { - const AccessibleGroupViewItem* cell = static_cast<const AccessibleGroupViewItem*>(iface); - return logicalIndex(cell->m_index); - } else if (iface->role() == QAccessible::Pane) { - return 0; // corner button - } else { - qWarning() << "AccessibleGroupView::indexOfChild has a child with unknown role..." << iface->role() << iface->text(QAccessible::Name); - } - // FIXME: we are in denial of our children. this should stop. - return -1; -} - -QString AccessibleGroupView::text(QAccessible::Text t) const -{ - if (t == QAccessible::Description) - return view()->accessibleDescription(); - return view()->accessibleName(); -} - -QRect AccessibleGroupView::rect() const -{ - if (!view()->isVisible()) - return QRect(); - QPoint pos = view()->mapToGlobal(QPoint(0, 0)); - return QRect(pos.x(), pos.y(), view()->width(), view()->height()); -} - -QAccessibleInterface *AccessibleGroupView::parent() const -{ - if (view() && view()->parent()) { - if (qstrcmp("QComboBoxPrivateContainer", view()->parent()->metaObject()->className()) == 0) { - return QAccessible::queryAccessibleInterface(view()->parent()->parent()); - } - return QAccessible::queryAccessibleInterface(view()->parent()); - } - return 0; -} - -QAccessibleInterface *AccessibleGroupView::child(int logicalIndex) const -{ - if (!view()->model()) - return 0; - - auto id = childToId.constFind(logicalIndex); - if (id != childToId.constEnd()) - return QAccessible::accessibleInterface(id.value()); - - int columns = view()->model()->columnCount(); - - int row = logicalIndex / columns; - int column = logicalIndex % columns; - - QAccessibleInterface *iface = 0; - - QModelIndex index = view()->model()->index(row, column, view()->rootIndex()); - if (Q_UNLIKELY(!index.isValid())) { - qWarning("AccessibleGroupView::child: Invalid index at: %d %d", row, column); - return 0; - } - iface = new AccessibleGroupViewItem(view(), index); - - QAccessible::registerAccessibleInterface(iface); - childToId.insert(logicalIndex, QAccessible::uniqueId(iface)); - return iface; -} - -void *AccessibleGroupView::interface_cast(QAccessible::InterfaceType t) -{ - if (t == QAccessible::TableInterface) - return static_cast<QAccessibleTableInterface*>(this); - return 0; -} - -void AccessibleGroupView::modelChange(QAccessibleTableModelChangeEvent *event) -{ - // if there is no cache yet, we don't update anything - if (childToId.isEmpty()) - return; - - switch (event->modelChangeType()) { - case QAccessibleTableModelChangeEvent::ModelReset: - for (QAccessible::Id id : childToId) - QAccessible::deleteAccessibleInterface(id); - childToId.clear(); - break; - - // rows are inserted: move every row after that - case QAccessibleTableModelChangeEvent::RowsInserted: - case QAccessibleTableModelChangeEvent::ColumnsInserted: { - - ChildCache newCache; - ChildCache::ConstIterator iter = childToId.constBegin(); - - while (iter != childToId.constEnd()) { - QAccessible::Id id = iter.value(); - QAccessibleInterface *iface = QAccessible::accessibleInterface(id); - Q_ASSERT(iface); - if (indexOfChild(iface) >= 0) { - newCache.insert(indexOfChild(iface), id); - } else { - // ### This should really not happen, - // but it might if the view has a root index set. - // This needs to be fixed. - QAccessible::deleteAccessibleInterface(id); - } - ++iter; - } - childToId = newCache; - break; - } - - case QAccessibleTableModelChangeEvent::ColumnsRemoved: - case QAccessibleTableModelChangeEvent::RowsRemoved: { - ChildCache newCache; - ChildCache::ConstIterator iter = childToId.constBegin(); - while (iter != childToId.constEnd()) { - QAccessible::Id id = iter.value(); - QAccessibleInterface *iface = QAccessible::accessibleInterface(id); - Q_ASSERT(iface); - if (iface->role() == QAccessible::Cell || iface->role() == QAccessible::ListItem) { - Q_ASSERT(iface->tableCellInterface()); - AccessibleGroupViewItem *cell = static_cast<AccessibleGroupViewItem*>(iface->tableCellInterface()); - // Since it is a QPersistentModelIndex, we only need to check if it is valid - if (cell->m_index.isValid()) - newCache.insert(indexOfChild(cell), id); - else - QAccessible::deleteAccessibleInterface(id); - } - ++iter; - } - childToId = newCache; - break; - } - - case QAccessibleTableModelChangeEvent::DataChanged: - // nothing to do in this case - break; - } -} - -// TABLE CELL - -AccessibleGroupViewItem::AccessibleGroupViewItem(QAbstractItemView *view_, const QModelIndex &index_) - : view(view_), m_index(index_) -{ - if (Q_UNLIKELY(!index_.isValid())) - qWarning() << "AccessibleGroupViewItem::AccessibleGroupViewItem with invalid index: " << index_; -} - -void *AccessibleGroupViewItem::interface_cast(QAccessible::InterfaceType t) -{ - if (t == QAccessible::TableCellInterface) - return static_cast<QAccessibleTableCellInterface*>(this); - if (t == QAccessible::ActionInterface) - return static_cast<QAccessibleActionInterface*>(this); - return 0; -} - -int AccessibleGroupViewItem::columnExtent() const { return 1; } -int AccessibleGroupViewItem::rowExtent() const { return 1; } - -QList<QAccessibleInterface*> AccessibleGroupViewItem::rowHeaderCells() const -{ - return {}; -} - -QList<QAccessibleInterface*> AccessibleGroupViewItem::columnHeaderCells() const -{ - return {}; -} - -int AccessibleGroupViewItem::columnIndex() const -{ - if (!isValid()) { - return -1; - } - - return m_index.column(); -} - -int AccessibleGroupViewItem::rowIndex() const -{ - if (!isValid()) { - return -1; - } - - return m_index.row(); -} - -bool AccessibleGroupViewItem::isSelected() const -{ - if (!isValid()) { - return false; - } - - return view->selectionModel()->isSelected(m_index); -} - -QStringList AccessibleGroupViewItem::actionNames() const -{ - QStringList names; - names << toggleAction(); - return names; -} - -void AccessibleGroupViewItem::doAction(const QString& actionName) -{ - if (actionName == toggleAction()) { - if (isSelected()) { - unselectCell(); - } - else { - selectCell(); - } - } -} - -QStringList AccessibleGroupViewItem::keyBindingsForAction(const QString &) const -{ - return QStringList(); -} - - -void AccessibleGroupViewItem::selectCell() -{ - if (!isValid()) { - return; - } - QAbstractItemView::SelectionMode selectionMode = view->selectionMode(); - if (selectionMode == QAbstractItemView::NoSelection) { - return; - } - - Q_ASSERT(table()); - QAccessibleTableInterface *cellTable = table()->tableInterface(); - - switch (view->selectionBehavior()) { - case QAbstractItemView::SelectItems: - break; - case QAbstractItemView::SelectColumns: - if (cellTable) - cellTable->selectColumn(m_index.column()); - return; - case QAbstractItemView::SelectRows: - if (cellTable) - cellTable->selectRow(m_index.row()); - return; - } - - if (selectionMode == QAbstractItemView::SingleSelection) { - view->clearSelection(); - } - - view->selectionModel()->select(m_index, QItemSelectionModel::Select); -} - -void AccessibleGroupViewItem::unselectCell() -{ - if (!isValid()) - return; - QAbstractItemView::SelectionMode selectionMode = view->selectionMode(); - if (selectionMode == QAbstractItemView::NoSelection) - return; - - QAccessibleTableInterface *cellTable = table()->tableInterface(); - - switch (view->selectionBehavior()) { - case QAbstractItemView::SelectItems: - break; - case QAbstractItemView::SelectColumns: - if (cellTable) - cellTable->unselectColumn(m_index.column()); - return; - case QAbstractItemView::SelectRows: - if (cellTable) - cellTable->unselectRow(m_index.row()); - return; - } - - //If the mode is not MultiSelection or ExtendedSelection and only - //one cell is selected it cannot be unselected by the user - if ((selectionMode != QAbstractItemView::MultiSelection) && (selectionMode != QAbstractItemView::ExtendedSelection) && (view->selectionModel()->selectedIndexes().count() <= 1)) - return; - - view->selectionModel()->select(m_index, QItemSelectionModel::Deselect); -} - -QAccessibleInterface *AccessibleGroupViewItem::table() const -{ - return QAccessible::queryAccessibleInterface(view); -} - -QAccessible::Role AccessibleGroupViewItem::role() const -{ - return QAccessible::ListItem; -} - -QAccessible::State AccessibleGroupViewItem::state() const -{ - QAccessible::State st; - if (!isValid()) - return st; - - QRect globalRect = view->rect(); - globalRect.translate(view->mapToGlobal(QPoint(0,0))); - if (!globalRect.intersects(rect())) - st.invisible = true; - - if (view->selectionModel()->isSelected(m_index)) - st.selected = true; - if (view->selectionModel()->currentIndex() == m_index) - st.focused = true; - if (m_index.model()->data(m_index, Qt::CheckStateRole).toInt() == Qt::Checked) - st.checked = true; - - Qt::ItemFlags flags = m_index.flags(); - if (flags & Qt::ItemIsSelectable) { - st.selectable = true; - st.focusable = true; - if (view->selectionMode() == QAbstractItemView::MultiSelection) - st.multiSelectable = true; - if (view->selectionMode() == QAbstractItemView::ExtendedSelection) - st.extSelectable = true; - } - return st; -} - - -QRect AccessibleGroupViewItem::rect() const -{ - QRect r; - if (!isValid()) - return r; - r = view->visualRect(m_index); - - if (!r.isNull()) { - r.translate(view->viewport()->mapTo(view, QPoint(0,0))); - r.translate(view->mapToGlobal(QPoint(0, 0))); - } - return r; -} - -QString AccessibleGroupViewItem::text(QAccessible::Text t) const -{ - QString value; - if (!isValid()) - return value; - QAbstractItemModel *model = view->model(); - switch (t) { - case QAccessible::Name: - value = model->data(m_index, Qt::AccessibleTextRole).toString(); - if (value.isEmpty()) - value = model->data(m_index, Qt::DisplayRole).toString(); - break; - case QAccessible::Description: - value = model->data(m_index, Qt::AccessibleDescriptionRole).toString(); - break; - default: - break; - } - return value; -} - -void AccessibleGroupViewItem::setText(QAccessible::Text /*t*/, const QString &text) -{ - if (!isValid() || !(m_index.flags() & Qt::ItemIsEditable)) - return; - view->model()->setData(m_index, text); -} - -bool AccessibleGroupViewItem::isValid() const -{ - return view && view->model() && m_index.isValid(); -} - -QAccessibleInterface *AccessibleGroupViewItem::parent() const -{ - return QAccessible::queryAccessibleInterface(view); -} - -QAccessibleInterface *AccessibleGroupViewItem::child(int) const -{ - return 0; -} - -#endif /* !QT_NO_ACCESSIBILITY */ diff --git a/application/groupview/AccessibleGroupView.h b/application/groupview/AccessibleGroupView.h deleted file mode 100644 index 9bfd1745..00000000 --- a/application/groupview/AccessibleGroupView.h +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once - -#include <QString> -class QAccessibleInterface; - -QAccessibleInterface *groupViewAccessibleFactory(const QString &classname, QObject *object); diff --git a/application/groupview/AccessibleGroupView_p.h b/application/groupview/AccessibleGroupView_p.h deleted file mode 100644 index e74da3be..00000000 --- a/application/groupview/AccessibleGroupView_p.h +++ /dev/null @@ -1,118 +0,0 @@ -#pragma once - -#include "QtCore/qpointer.h" -#include <QtGui/qaccessible.h> -#include <QAccessibleWidget> -#include <QAbstractItemView> -#ifndef QT_NO_ACCESSIBILITY -#include "GroupView.h" -// #include <QHeaderView> - -class QAccessibleTableCell; -class QAccessibleTableHeaderCell; - -class AccessibleGroupView :public QAccessibleTableInterface, public QAccessibleObject -{ -public: - explicit AccessibleGroupView(QWidget *w); - bool isValid() const override; - - QAccessible::Role role() const override; - QAccessible::State state() const override; - QString text(QAccessible::Text t) const override; - QRect rect() const override; - - QAccessibleInterface *childAt(int x, int y) const override; - int childCount() const override; - int indexOfChild(const QAccessibleInterface *) const override; - - QAccessibleInterface *parent() const override; - QAccessibleInterface *child(int index) const override; - - void *interface_cast(QAccessible::InterfaceType t) override; - - // table interface - QAccessibleInterface *cellAt(int row, int column) const override; - QAccessibleInterface *caption() const override; - QAccessibleInterface *summary() const override; - QString columnDescription(int column) const override; - QString rowDescription(int row) const override; - int columnCount() const override; - int rowCount() const override; - - // selection - int selectedCellCount() const override; - int selectedColumnCount() const override; - int selectedRowCount() const override; - QList<QAccessibleInterface*> selectedCells() const override; - QList<int> selectedColumns() const override; - QList<int> selectedRows() const override; - bool isColumnSelected(int column) const override; - bool isRowSelected(int row) const override; - bool selectRow(int row) override; - bool selectColumn(int column) override; - bool unselectRow(int row) override; - bool unselectColumn(int column) override; - - QAbstractItemView *view() const; - - void modelChange(QAccessibleTableModelChangeEvent *event) override; - -protected: - // maybe vector - typedef QHash<int, QAccessible::Id> ChildCache; - mutable ChildCache childToId; - - virtual ~AccessibleGroupView(); - -private: - inline int logicalIndex(const QModelIndex &index) const; -}; - -class AccessibleGroupViewItem: public QAccessibleInterface, public QAccessibleTableCellInterface, public QAccessibleActionInterface -{ -public: - AccessibleGroupViewItem(QAbstractItemView *view, const QModelIndex &m_index); - - void *interface_cast(QAccessible::InterfaceType t) override; - QObject *object() const override { return nullptr; } - QAccessible::Role role() const override; - QAccessible::State state() const override; - QRect rect() const override; - bool isValid() const override; - - QAccessibleInterface *childAt(int, int) const override { return nullptr; } - int childCount() const override { return 0; } - int indexOfChild(const QAccessibleInterface *) const override { return -1; } - - QString text(QAccessible::Text t) const override; - void setText(QAccessible::Text t, const QString &text) override; - - QAccessibleInterface *parent() const override; - QAccessibleInterface *child(int) const override; - - // cell interface - int columnExtent() const override; - QList<QAccessibleInterface*> columnHeaderCells() const override; - int columnIndex() const override; - int rowExtent() const override; - QList<QAccessibleInterface*> rowHeaderCells() const override; - int rowIndex() const override; - bool isSelected() const override; - QAccessibleInterface* table() const override; - - //action interface - QStringList actionNames() const override; - void doAction(const QString &actionName) override; - QStringList keyBindingsForAction(const QString &actionName) const override; - -private: - QPointer<QAbstractItemView > view; - QPersistentModelIndex m_index; - - void selectCell(); - void unselectCell(); - - friend class AccessibleGroupView; -}; -#endif /* !QT_NO_ACCESSIBILITY */ diff --git a/application/groupview/GroupView.cpp b/application/groupview/GroupView.cpp deleted file mode 100644 index 6bfc9381..00000000 --- a/application/groupview/GroupView.cpp +++ /dev/null @@ -1,1020 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "GroupView.h" - -#include <QPainter> -#include <QApplication> -#include <QtMath> -#include <QMouseEvent> -#include <QListView> -#include <QPersistentModelIndex> -#include <QDrag> -#include <QMimeData> -#include <QCache> -#include <QScrollBar> -#include <QAccessible> - -#include "VisualGroup.h" -#include <QDebug> - -template <typename T> bool listsIntersect(const QList<T> &l1, const QList<T> t2) -{ - for (auto &item : l1) - { - if (t2.contains(item)) - { - return true; - } - } - return false; -} - -GroupView::GroupView(QWidget *parent) - : QAbstractItemView(parent) -{ - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); - setAcceptDrops(true); - setAutoScroll(true); -} - -GroupView::~GroupView() -{ - qDeleteAll(m_groups); - m_groups.clear(); -} - -void GroupView::setModel(QAbstractItemModel *model) -{ - QAbstractItemView::setModel(model); - connect(model, &QAbstractItemModel::modelReset, this, &GroupView::modelReset); - connect(model, &QAbstractItemModel::rowsRemoved, this, &GroupView::rowsRemoved); -} - -void GroupView::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, - const QVector<int> &roles) -{ - scheduleDelayedItemsLayout(); -} -void GroupView::rowsInserted(const QModelIndex &parent, int start, int end) -{ - scheduleDelayedItemsLayout(); -} - -void GroupView::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) -{ - scheduleDelayedItemsLayout(); -} - -void GroupView::modelReset() -{ - scheduleDelayedItemsLayout(); -} - -void GroupView::rowsRemoved() -{ - scheduleDelayedItemsLayout(); -} - -void GroupView::currentChanged(const QModelIndex& current, const QModelIndex& previous) -{ - QAbstractItemView::currentChanged(current, previous); - // TODO: for accessibility support, implement+register a factory, steal QAccessibleTable from Qt and return an instance of it for GroupView. -#ifndef QT_NO_ACCESSIBILITY - if (QAccessible::isActive() && current.isValid()) { - QAccessibleEvent event(this, QAccessible::Focus); - event.setChild(current.row()); - QAccessible::updateAccessibility(&event); - } -#endif /* !QT_NO_ACCESSIBILITY */ -} - - -class LocaleString : public QString -{ -public: - LocaleString(const char *s) : QString(s) - { - } - LocaleString(const QString &s) : QString(s) - { - } -}; - -inline bool operator<(const LocaleString &lhs, const LocaleString &rhs) -{ - return (QString::localeAwareCompare(lhs, rhs) < 0); -} - -void GroupView::updateScrollbar() -{ - int previousScroll = verticalScrollBar()->value(); - if (m_groups.isEmpty()) - { - verticalScrollBar()->setRange(0, 0); - } - else - { - int totalHeight = 0; - // top margin - totalHeight += m_categoryMargin; - int itemScroll = 0; - for (auto category : m_groups) - { - category->m_verticalPosition = totalHeight; - totalHeight += category->totalHeight() + m_categoryMargin; - if(!itemScroll && category->totalHeight() != 0) - { - itemScroll = category->contentHeight() / category->numRows(); - } - } - // do not divide by zero - if(itemScroll == 0) - itemScroll = 64; - - totalHeight += m_bottomMargin; - verticalScrollBar()->setSingleStep ( itemScroll ); - const int rowsPerPage = qMax ( viewport()->height() / itemScroll, 1 ); - verticalScrollBar()->setPageStep ( rowsPerPage * itemScroll ); - - verticalScrollBar()->setRange(0, totalHeight - height()); - } - - verticalScrollBar()->setValue(qMin(previousScroll, verticalScrollBar()->maximum())); -} - -void GroupView::updateGeometries() -{ - geometryCache.clear(); - - QMap<LocaleString, VisualGroup *> cats; - - for (int i = 0; i < model()->rowCount(); ++i) - { - const QString groupName = model()->index(i, 0).data(GroupViewRoles::GroupRole).toString(); - if (!cats.contains(groupName)) - { - VisualGroup *old = this->category(groupName); - if (old) - { - auto cat = new VisualGroup(old); - cats.insert(groupName, cat); - cat->update(); - } - else - { - auto cat = new VisualGroup(groupName, this); - if(fVisibility) { - cat->collapsed = fVisibility(groupName); - } - cats.insert(groupName, cat); - cat->update(); - } - } - } - - qDeleteAll(m_groups); - m_groups = cats.values(); - updateScrollbar(); - viewport()->update(); -} - -bool GroupView::isIndexHidden(const QModelIndex &index) const -{ - VisualGroup *cat = category(index); - if (cat) - { - return cat->collapsed; - } - else - { - return false; - } -} - -VisualGroup *GroupView::category(const QModelIndex &index) const -{ - return category(index.data(GroupViewRoles::GroupRole).toString()); -} - -VisualGroup *GroupView::category(const QString &cat) const -{ - for (auto group : m_groups) - { - if (group->text == cat) - { - return group; - } - } - return nullptr; -} - -VisualGroup *GroupView::categoryAt(const QPoint &pos, VisualGroup::HitResults & result) const -{ - for (auto group : m_groups) - { - result = group->hitScan(pos); - if(result != VisualGroup::NoHit) - { - return group; - } - } - result = VisualGroup::NoHit; - return nullptr; -} - -QString GroupView::groupNameAt(const QPoint &point) -{ - executeDelayedItemsLayout(); - - VisualGroup::HitResults hitresult; - auto group = categoryAt(point + offset(), hitresult); - if(group && (hitresult & (VisualGroup::HeaderHit | VisualGroup::BodyHit))) - { - return group->text; - } - return QString(); -} - -int GroupView::calculateItemsPerRow() const -{ - return qFloor((qreal)(contentWidth()) / (qreal)(itemWidth() + m_spacing)); -} - -int GroupView::contentWidth() const -{ - return width() - m_leftMargin - m_rightMargin; -} - -int GroupView::itemWidth() const -{ - return m_itemWidth; -} - -void GroupView::mousePressEvent(QMouseEvent *event) -{ - executeDelayedItemsLayout(); - - QPoint visualPos = event->pos(); - QPoint geometryPos = event->pos() + offset(); - - QPersistentModelIndex index = indexAt(visualPos); - - m_pressedIndex = index; - m_pressedAlreadySelected = selectionModel()->isSelected(m_pressedIndex); - m_pressedPosition = geometryPos; - - VisualGroup::HitResults hitresult; - m_pressedCategory = categoryAt(geometryPos, hitresult); - if (m_pressedCategory && hitresult & VisualGroup::CheckboxHit) - { - setState(m_pressedCategory->collapsed ? ExpandingState : CollapsingState); - event->accept(); - return; - } - - if (index.isValid() && (index.flags() & Qt::ItemIsEnabled)) - { - if(index != currentIndex()) - { - // FIXME: better! - m_currentCursorColumn = -1; - } - // we disable scrollTo for mouse press so the item doesn't change position - // when the user is interacting with it (ie. clicking on it) - bool autoScroll = hasAutoScroll(); - setAutoScroll(false); - selectionModel()->setCurrentIndex(index, QItemSelectionModel::NoUpdate); - - setAutoScroll(autoScroll); - QRect rect(visualPos, visualPos); - setSelection(rect, QItemSelectionModel::ClearAndSelect); - - // signal handlers may change the model - emit pressed(index); - } - else - { - // Forces a finalize() even if mouse is pressed, but not on a item - selectionModel()->select(QModelIndex(), QItemSelectionModel::Select); - } -} - -void GroupView::mouseMoveEvent(QMouseEvent *event) -{ - executeDelayedItemsLayout(); - - QPoint topLeft; - QPoint visualPos = event->pos(); - QPoint geometryPos = event->pos() + offset(); - - if (state() == ExpandingState || state() == CollapsingState) - { - return; - } - - if (state() == DraggingState) - { - topLeft = m_pressedPosition - offset(); - if ((topLeft - event->pos()).manhattanLength() > QApplication::startDragDistance()) - { - m_pressedIndex = QModelIndex(); - startDrag(model()->supportedDragActions()); - setState(NoState); - stopAutoScroll(); - } - return; - } - - if (selectionMode() != SingleSelection) - { - topLeft = m_pressedPosition - offset(); - } - else - { - topLeft = geometryPos; - } - - if (m_pressedIndex.isValid() && (state() != DragSelectingState) && - (event->buttons() != Qt::NoButton) && !selectedIndexes().isEmpty()) - { - setState(DraggingState); - return; - } - - if ((event->buttons() & Qt::LeftButton) && selectionModel()) - { - setState(DragSelectingState); - - setSelection(QRect(visualPos, visualPos), QItemSelectionModel::ClearAndSelect); - QModelIndex index = indexAt(visualPos); - - // set at the end because it might scroll the view - if (index.isValid() && (index != selectionModel()->currentIndex()) && - (index.flags() & Qt::ItemIsEnabled)) - { - selectionModel()->setCurrentIndex(index, QItemSelectionModel::NoUpdate); - } - } -} - -void GroupView::mouseReleaseEvent(QMouseEvent *event) -{ - executeDelayedItemsLayout(); - - QPoint visualPos = event->pos(); - QPoint geometryPos = event->pos() + offset(); - QPersistentModelIndex index = indexAt(visualPos); - - VisualGroup::HitResults hitresult; - - bool click = (index == m_pressedIndex && index.isValid()) || - (m_pressedCategory && m_pressedCategory == categoryAt(geometryPos, hitresult)); - - if (click && m_pressedCategory) - { - if (state() == ExpandingState) - { - m_pressedCategory->collapsed = false; - emit groupStateChanged(m_pressedCategory->text, false); - - updateGeometries(); - viewport()->update(); - event->accept(); - m_pressedCategory = nullptr; - setState(NoState); - return; - } - else if (state() == CollapsingState) - { - m_pressedCategory->collapsed = true; - emit groupStateChanged(m_pressedCategory->text, true); - - updateGeometries(); - viewport()->update(); - event->accept(); - m_pressedCategory = nullptr; - setState(NoState); - return; - } - } - - m_ctrlDragSelectionFlag = QItemSelectionModel::NoUpdate; - - setState(NoState); - - if (click) - { - if (event->button() == Qt::LeftButton) - { - emit clicked(index); - } - QStyleOptionViewItem option = viewOptions(); - if (m_pressedAlreadySelected) - { - option.state |= QStyle::State_Selected; - } - if ((model()->flags(index) & Qt::ItemIsEnabled) && - style()->styleHint(QStyle::SH_ItemView_ActivateItemOnSingleClick, &option, this)) - { - emit activated(index); - } - } -} - -void GroupView::mouseDoubleClickEvent(QMouseEvent *event) -{ - executeDelayedItemsLayout(); - - QModelIndex index = indexAt(event->pos()); - if (!index.isValid() || !(index.flags() & Qt::ItemIsEnabled) || (m_pressedIndex != index)) - { - QMouseEvent me(QEvent::MouseButtonPress, event->localPos(), event->windowPos(), - event->screenPos(), event->button(), event->buttons(), - event->modifiers()); - mousePressEvent(&me); - return; - } - // signal handlers may change the model - QPersistentModelIndex persistent = index; - emit doubleClicked(persistent); - - QStyleOptionViewItem option = viewOptions(); - if ((model()->flags(index) & Qt::ItemIsEnabled) && !style()->styleHint(QStyle::SH_ItemView_ActivateItemOnSingleClick, &option, this)) - { - emit activated(index); - } -} - -void GroupView::paintEvent(QPaintEvent *event) -{ - executeDelayedItemsLayout(); - - QPainter painter(this->viewport()); - - QStyleOptionViewItem option(viewOptions()); - option.widget = this; - - int wpWidth = viewport()->width(); - option.rect.setWidth(wpWidth); - for (int i = 0; i < m_groups.size(); ++i) - { - VisualGroup *category = m_groups.at(i); - int y = category->verticalPosition(); - y -= verticalOffset(); - QRect backup = option.rect; - int height = category->totalHeight(); - option.rect.setTop(y); - option.rect.setHeight(height); - option.rect.setLeft(m_leftMargin); - option.rect.setRight(wpWidth - m_rightMargin); - category->drawHeader(&painter, option); - y += category->totalHeight() + m_categoryMargin; - option.rect = backup; - } - - for (int i = 0; i < model()->rowCount(); ++i) - { - const QModelIndex index = model()->index(i, 0); - if (isIndexHidden(index)) - { - continue; - } - Qt::ItemFlags flags = index.flags(); - option.rect = visualRect(index); - option.features |= QStyleOptionViewItem::WrapText; - if (flags & Qt::ItemIsSelectable && selectionModel()->isSelected(index)) - { - option.state |= selectionModel()->isSelected(index) ? QStyle::State_Selected - : QStyle::State_None; - } - else - { - option.state &= ~QStyle::State_Selected; - } - option.state |= (index == currentIndex()) ? QStyle::State_HasFocus : QStyle::State_None; - if (!(flags & Qt::ItemIsEnabled)) - { - option.state &= ~QStyle::State_Enabled; - } - itemDelegate()->paint(&painter, option, index); - } - - /* - * Drop indicators for manual reordering... - */ -#if 0 - if (!m_lastDragPosition.isNull()) - { - QPair<Group *, int> pair = rowDropPos(m_lastDragPosition); - Group *category = pair.first; - int row = pair.second; - if (category) - { - int internalRow = row - category->firstItemIndex; - QLine line; - if (internalRow >= category->numItems()) - { - QRect toTheRightOfRect = visualRect(category->lastItem()); - line = QLine(toTheRightOfRect.topRight(), toTheRightOfRect.bottomRight()); - } - else - { - QRect toTheLeftOfRect = visualRect(model()->index(row, 0)); - line = QLine(toTheLeftOfRect.topLeft(), toTheLeftOfRect.bottomLeft()); - } - painter.save(); - painter.setPen(QPen(Qt::black, 3)); - painter.drawLine(line); - painter.restore(); - } - } -#endif -} - -void GroupView::resizeEvent(QResizeEvent *event) -{ - int newItemsPerRow = calculateItemsPerRow(); - if(newItemsPerRow != m_currentItemsPerRow) - { - m_currentCursorColumn = -1; - m_currentItemsPerRow = newItemsPerRow; - updateGeometries(); - } - else - { - updateScrollbar(); - } -} - -void GroupView::dragEnterEvent(QDragEnterEvent *event) -{ - executeDelayedItemsLayout(); - - if (!isDragEventAccepted(event)) - { - return; - } - m_lastDragPosition = event->pos() + offset(); - viewport()->update(); - event->accept(); -} - -void GroupView::dragMoveEvent(QDragMoveEvent *event) -{ - executeDelayedItemsLayout(); - - if (!isDragEventAccepted(event)) - { - return; - } - m_lastDragPosition = event->pos() + offset(); - viewport()->update(); - event->accept(); -} - -void GroupView::dragLeaveEvent(QDragLeaveEvent *event) -{ - executeDelayedItemsLayout(); - - m_lastDragPosition = QPoint(); - viewport()->update(); -} - -void GroupView::dropEvent(QDropEvent *event) -{ - executeDelayedItemsLayout(); - - m_lastDragPosition = QPoint(); - - stopAutoScroll(); - setState(NoState); - - if (event->source() == this) - { - if(event->possibleActions() & Qt::MoveAction) - { - QPair<VisualGroup *, int> dropPos = rowDropPos(event->pos() + offset()); - const VisualGroup *category = dropPos.first; - const int row = dropPos.second; - - if (row == -1) - { - viewport()->update(); - return; - } - - const QString categoryText = category->text; - if (model()->dropMimeData(event->mimeData(), Qt::MoveAction, row, 0, QModelIndex())) - { - model()->setData(model()->index(row, 0), categoryText, GroupViewRoles::GroupRole); - event->setDropAction(Qt::MoveAction); - event->accept(); - } - updateGeometries(); - viewport()->update(); - } - } - auto mimedata = event->mimeData(); - - // check if the action is supported - if (!mimedata) - { - return; - } - - // files dropped from outside? - if (mimedata->hasUrls()) - { - auto urls = mimedata->urls(); - event->accept(); - emit droppedURLs(urls); - } -} - -void GroupView::startDrag(Qt::DropActions supportedActions) -{ - executeDelayedItemsLayout(); - - QModelIndexList indexes = selectionModel()->selectedIndexes(); - if(indexes.count() == 0) - return; - - QMimeData *data = model()->mimeData(indexes); - if (!data) - { - return; - } - QRect rect; - QPixmap pixmap = renderToPixmap(indexes, &rect); - //rect.translate(offset()); - // rect.adjust(horizontalOffset(), verticalOffset(), 0, 0); - QDrag *drag = new QDrag(this); - drag->setPixmap(pixmap); - drag->setMimeData(data); - Qt::DropAction defaultDropAction = Qt::IgnoreAction; - if (this->defaultDropAction() != Qt::IgnoreAction && - (supportedActions & this->defaultDropAction())) - { - defaultDropAction = this->defaultDropAction(); - } - if (drag->exec(supportedActions, defaultDropAction) == Qt::MoveAction) - { - const QItemSelection selection = selectionModel()->selection(); - - for (auto it = selection.constBegin(); it != selection.constEnd(); ++it) - { - QModelIndex parent = (*it).parent(); - if ((*it).left() != 0) - { - continue; - } - if ((*it).right() != (model()->columnCount(parent) - 1)) - { - continue; - } - int count = (*it).bottom() - (*it).top() + 1; - model()->removeRows((*it).top(), count, parent); - } - } -} - -QRect GroupView::visualRect(const QModelIndex &index) const -{ - const_cast<GroupView*>(this)->executeDelayedItemsLayout(); - - return geometryRect(index).translated(-offset()); -} - -QRect GroupView::geometryRect(const QModelIndex &index) const -{ - const_cast<GroupView*>(this)->executeDelayedItemsLayout(); - - if (!index.isValid() || isIndexHidden(index) || index.column() > 0) - { - return QRect(); - } - - int row = index.row(); - if(geometryCache.contains(row)) - { - return *geometryCache[row]; - } - - const VisualGroup *cat = category(index); - QPair<int, int> pos = cat->positionOf(index); - int x = pos.first; - // int y = pos.second; - - QRect out; - out.setTop(cat->verticalPosition() + cat->headerHeight() + 5 + cat->rowTopOf(index)); - out.setLeft(m_spacing + x * (itemWidth() + m_spacing)); - out.setSize(itemDelegate()->sizeHint(viewOptions(), index)); - geometryCache.insert(row, new QRect(out)); - return out; -} - -QModelIndex GroupView::indexAt(const QPoint &point) const -{ - const_cast<GroupView*>(this)->executeDelayedItemsLayout(); - - for (int i = 0; i < model()->rowCount(); ++i) - { - QModelIndex index = model()->index(i, 0); - if (visualRect(index).contains(point)) - { - return index; - } - } - return QModelIndex(); -} - -void GroupView::setSelection(const QRect &rect, const QItemSelectionModel::SelectionFlags commands) -{ - executeDelayedItemsLayout(); - - for (int i = 0; i < model()->rowCount(); ++i) - { - QModelIndex index = model()->index(i, 0); - QRect itemRect = visualRect(index); - if (itemRect.intersects(rect)) - { - selectionModel()->select(index, commands); - update(itemRect.translated(-offset())); - } - } -} - -QPixmap GroupView::renderToPixmap(const QModelIndexList &indices, QRect *r) const -{ - Q_ASSERT(r); - auto paintPairs = draggablePaintPairs(indices, r); - if (paintPairs.isEmpty()) - { - return QPixmap(); - } - QPixmap pixmap(r->size()); - pixmap.fill(Qt::transparent); - QPainter painter(&pixmap); - QStyleOptionViewItem option = viewOptions(); - option.state |= QStyle::State_Selected; - for (int j = 0; j < paintPairs.count(); ++j) - { - option.rect = paintPairs.at(j).first.translated(-r->topLeft()); - const QModelIndex ¤t = paintPairs.at(j).second; - itemDelegate()->paint(&painter, option, current); - } - return pixmap; -} - -QList<QPair<QRect, QModelIndex>> GroupView::draggablePaintPairs(const QModelIndexList &indices, QRect *r) const -{ - Q_ASSERT(r); - QRect &rect = *r; - QList<QPair<QRect, QModelIndex>> ret; - for (int i = 0; i < indices.count(); ++i) - { - const QModelIndex &index = indices.at(i); - const QRect current = geometryRect(index); - ret += qMakePair(current, index); - rect |= current; - } - return ret; -} - -bool GroupView::isDragEventAccepted(QDropEvent *event) -{ - return true; -} - -QPair<VisualGroup *, int> GroupView::rowDropPos(const QPoint &pos) -{ - return qMakePair<VisualGroup*, int>(nullptr, -1); -} - -QPoint GroupView::offset() const -{ - return QPoint(horizontalOffset(), verticalOffset()); -} - -QRegion GroupView::visualRegionForSelection(const QItemSelection &selection) const -{ - QRegion region; - for (auto &range : selection) - { - int start_row = range.top(); - int end_row = range.bottom(); - for (int row = start_row; row <= end_row; ++row) - { - int start_column = range.left(); - int end_column = range.right(); - for (int column = start_column; column <= end_column; ++column) - { - QModelIndex index = model()->index(row, column, rootIndex()); - region += visualRect(index); // OK - } - } - } - return region; -} - -QModelIndex GroupView::moveCursor(QAbstractItemView::CursorAction cursorAction, - Qt::KeyboardModifiers modifiers) -{ - auto current = currentIndex(); - if(!current.isValid()) - { - return current; - } - auto cat = category(current); - int group_index = m_groups.indexOf(cat); - if(group_index < 0) - return current; - - auto real_group = m_groups[group_index]; - int beginning_row = 0; - for(auto group: m_groups) - { - if(group == real_group) - break; - beginning_row += group->numRows(); - } - - QPair<int, int> pos = cat->positionOf(current); - int column = pos.first; - int row = pos.second; - if(m_currentCursorColumn < 0) - { - m_currentCursorColumn = column; - } - switch(cursorAction) - { - case MoveUp: - { - if(row == 0) - { - int prevgroupindex = group_index-1; - while(prevgroupindex >= 0) - { - auto prevgroup = m_groups[prevgroupindex]; - if(prevgroup->collapsed) - { - prevgroupindex--; - continue; - } - int newRow = prevgroup->numRows() - 1; - int newRowSize = prevgroup->rows[newRow].size(); - int newColumn = m_currentCursorColumn; - if (m_currentCursorColumn >= newRowSize) - { - newColumn = newRowSize - 1; - } - return prevgroup->rows[newRow][newColumn]; - } - } - else - { - int newRow = row - 1; - int newRowSize = cat->rows[newRow].size(); - int newColumn = m_currentCursorColumn; - if (m_currentCursorColumn >= newRowSize) - { - newColumn = newRowSize - 1; - } - return cat->rows[newRow][newColumn]; - } - return current; - } - case MoveDown: - { - if(row == cat->rows.size() - 1) - { - int nextgroupindex = group_index+1; - while (nextgroupindex < m_groups.size()) - { - auto nextgroup = m_groups[nextgroupindex]; - if(nextgroup->collapsed) - { - nextgroupindex++; - continue; - } - int newRowSize = nextgroup->rows[0].size(); - int newColumn = m_currentCursorColumn; - if (m_currentCursorColumn >= newRowSize) - { - newColumn = newRowSize - 1; - } - return nextgroup->rows[0][newColumn]; - } - } - else - { - int newRow = row + 1; - int newRowSize = cat->rows[newRow].size(); - int newColumn = m_currentCursorColumn; - if (m_currentCursorColumn >= newRowSize) - { - newColumn = newRowSize - 1; - } - return cat->rows[newRow][newColumn]; - } - return current; - } - case MoveLeft: - { - if(column > 0) - { - m_currentCursorColumn = column - 1; - return cat->rows[row][column - 1]; - } - // TODO: moving to previous line - return current; - } - case MoveRight: - { - if(column < cat->rows[row].size() - 1) - { - m_currentCursorColumn = column + 1; - return cat->rows[row][column + 1]; - } - // TODO: moving to next line - return current; - } - case MoveHome: - { - m_currentCursorColumn = 0; - return cat->rows[row][0]; - } - case MoveEnd: - { - auto last = cat->rows[row].size() - 1; - m_currentCursorColumn = last; - return cat->rows[row][last]; - } - default: - break; - } - return current; -} - -int GroupView::horizontalOffset() const -{ - return horizontalScrollBar()->value(); -} - -int GroupView::verticalOffset() const -{ - return verticalScrollBar()->value(); -} - -void GroupView::scrollContentsBy(int dx, int dy) -{ - scrollDirtyRegion(dx, dy); - viewport()->scroll(dx, dy); -} - -void GroupView::scrollTo(const QModelIndex &index, ScrollHint hint) -{ - if (!index.isValid()) - return; - - const QRect rect = visualRect(index); - if (hint == EnsureVisible && viewport()->rect().contains(rect)) - { - viewport()->update(rect); - return; - } - - verticalScrollBar()->setValue(verticalScrollToValue(index, rect, hint)); -} - -int GroupView::verticalScrollToValue(const QModelIndex &index, const QRect &rect, - QListView::ScrollHint hint) const -{ - const QRect area = viewport()->rect(); - const bool above = (hint == QListView::EnsureVisible && rect.top() < area.top()); - const bool below = (hint == QListView::EnsureVisible && rect.bottom() > area.bottom()); - - int verticalValue = verticalScrollBar()->value(); - QRect adjusted = rect.adjusted(-spacing(), -spacing(), spacing(), spacing()); - if (hint == QListView::PositionAtTop || above) - verticalValue += adjusted.top(); - else if (hint == QListView::PositionAtBottom || below) - verticalValue += qMin(adjusted.top(), adjusted.bottom() - area.height() + 1); - else if (hint == QListView::PositionAtCenter) - verticalValue += adjusted.top() - ((area.height() - adjusted.height()) / 2); - return verticalValue; -} diff --git a/application/groupview/GroupView.h b/application/groupview/GroupView.h deleted file mode 100644 index cc5a58aa..00000000 --- a/application/groupview/GroupView.h +++ /dev/null @@ -1,157 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QListView> -#include <QLineEdit> -#include <QScrollBar> -#include <QCache> -#include "VisualGroup.h" -#include <functional> - -struct GroupViewRoles -{ - enum - { - GroupRole = Qt::UserRole, - ProgressValueRole, - ProgressMaximumRole - }; -}; - -class GroupView : public QAbstractItemView -{ - Q_OBJECT - -public: - GroupView(QWidget *parent = 0); - ~GroupView(); - - void setModel(QAbstractItemModel *model) override; - - using visibilityFunction = std::function<bool(const QString &)>; - void setSourceOfGroupCollapseStatus(visibilityFunction f) { - fVisibility = f; - } - - /// return geometry rectangle occupied by the specified model item - QRect geometryRect(const QModelIndex &index) const; - /// return visual rectangle occupied by the specified model item - virtual QRect visualRect(const QModelIndex &index) const override; - /// get the model index at the specified visual point - virtual QModelIndex indexAt(const QPoint &point) const override; - QString groupNameAt(const QPoint &point); - void setSelection(const QRect &rect, const QItemSelectionModel::SelectionFlags commands) override; - - virtual int horizontalOffset() const override; - virtual int verticalOffset() const override; - virtual void scrollContentsBy(int dx, int dy) override; - virtual void scrollTo(const QModelIndex &index, ScrollHint hint = EnsureVisible) override; - - virtual QModelIndex moveCursor(CursorAction cursorAction, - Qt::KeyboardModifiers modifiers) override; - - virtual QRegion visualRegionForSelection(const QItemSelection &selection) const override; - - int spacing() const - { - return m_spacing; - }; - -public slots: - virtual void updateGeometries() override; - -protected slots: - virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, - const QVector<int> &roles) override; - virtual void rowsInserted(const QModelIndex &parent, int start, int end) override; - virtual void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) override; - void modelReset(); - void rowsRemoved(); - void currentChanged(const QModelIndex ¤t, const QModelIndex &previous) override; - -signals: - void droppedURLs(QList<QUrl> urls); - void groupStateChanged(QString group, bool collapsed); - -protected: - virtual bool isIndexHidden(const QModelIndex &index) const override; - void mousePressEvent(QMouseEvent *event) override; - void mouseMoveEvent(QMouseEvent *event) override; - void mouseReleaseEvent(QMouseEvent *event) override; - void mouseDoubleClickEvent(QMouseEvent *event) override; - void paintEvent(QPaintEvent *event) override; - void resizeEvent(QResizeEvent *event) override; - - void dragEnterEvent(QDragEnterEvent *event) override; - void dragMoveEvent(QDragMoveEvent *event) override; - void dragLeaveEvent(QDragLeaveEvent *event) override; - void dropEvent(QDropEvent *event) override; - - void startDrag(Qt::DropActions supportedActions) override; - - void updateScrollbar(); - -private: - friend struct VisualGroup; - QList<VisualGroup *> m_groups; - - visibilityFunction fVisibility; - - // geometry - int m_leftMargin = 5; - int m_rightMargin = 5; - int m_bottomMargin = 5; - int m_categoryMargin = 5; - int m_spacing = 5; - int m_itemWidth = 100; - int m_currentItemsPerRow = -1; - int m_currentCursorColumn= -1; - mutable QCache<int, QRect> geometryCache; - - // point where the currently active mouse action started in geometry coordinates - QPoint m_pressedPosition; - QPersistentModelIndex m_pressedIndex; - bool m_pressedAlreadySelected; - VisualGroup *m_pressedCategory; - QItemSelectionModel::SelectionFlag m_ctrlDragSelectionFlag; - QPoint m_lastDragPosition; - - VisualGroup *category(const QModelIndex &index) const; - VisualGroup *category(const QString &cat) const; - VisualGroup *categoryAt(const QPoint &pos, VisualGroup::HitResults & result) const; - - int itemsPerRow() const - { - return m_currentItemsPerRow; - }; - int contentWidth() const; - -private: /* methods */ - int itemWidth() const; - int calculateItemsPerRow() const; - int verticalScrollToValue(const QModelIndex &index, const QRect &rect, - QListView::ScrollHint hint) const; - QPixmap renderToPixmap(const QModelIndexList &indices, QRect *r) const; - QList<QPair<QRect, QModelIndex>> draggablePaintPairs(const QModelIndexList &indices, - QRect *r) const; - - bool isDragEventAccepted(QDropEvent *event); - - QPair<VisualGroup *, int> rowDropPos(const QPoint &pos); - - QPoint offset() const; -}; diff --git a/application/groupview/GroupedProxyModel.cpp b/application/groupview/GroupedProxyModel.cpp deleted file mode 100644 index dc4212d5..00000000 --- a/application/groupview/GroupedProxyModel.cpp +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "GroupedProxyModel.h" - -#include "GroupView.h" -#include <QDebug> - -GroupedProxyModel::GroupedProxyModel(QObject *parent) : QSortFilterProxyModel(parent) -{ -} - -bool GroupedProxyModel::lessThan(const QModelIndex &left, const QModelIndex &right) const -{ - const QString leftCategory = left.data(GroupViewRoles::GroupRole).toString(); - const QString rightCategory = right.data(GroupViewRoles::GroupRole).toString(); - if (leftCategory == rightCategory) - { - return subSortLessThan(left, right); - } - else - { - // FIXME: real group sorting happens in GroupView::updateGeometries(), see LocaleString - auto result = leftCategory.localeAwareCompare(rightCategory); - if(result == 0) - { - return subSortLessThan(left, right); - } - return result < 0; - } -} - -bool GroupedProxyModel::subSortLessThan(const QModelIndex &left, const QModelIndex &right) const -{ - return left.row() < right.row(); -} diff --git a/application/groupview/GroupedProxyModel.h b/application/groupview/GroupedProxyModel.h deleted file mode 100644 index fabf11c1..00000000 --- a/application/groupview/GroupedProxyModel.h +++ /dev/null @@ -1,30 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QSortFilterProxyModel> - -class GroupedProxyModel : public QSortFilterProxyModel -{ - Q_OBJECT - -public: - GroupedProxyModel(QObject *parent = 0); - -protected: - virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const override; - virtual bool subSortLessThan(const QModelIndex &left, const QModelIndex &right) const; -}; diff --git a/application/groupview/InstanceDelegate.cpp b/application/groupview/InstanceDelegate.cpp deleted file mode 100644 index fc959565..00000000 --- a/application/groupview/InstanceDelegate.cpp +++ /dev/null @@ -1,428 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "InstanceDelegate.h" -#include <QPainter> -#include <QTextOption> -#include <QTextLayout> -#include <QApplication> -#include <QtMath> -#include <QDebug> - -#include "GroupView.h" -#include "BaseInstance.h" -#include "InstanceList.h" -#include <xdgicon.h> -#include <QTextEdit> - -// Origin: Qt -static void viewItemTextLayout(QTextLayout &textLayout, int lineWidth, qreal &height, - qreal &widthUsed) -{ - height = 0; - widthUsed = 0; - textLayout.beginLayout(); - QString str = textLayout.text(); - while (true) - { - QTextLine line = textLayout.createLine(); - if (!line.isValid()) - break; - if (line.textLength() == 0) - break; - line.setLineWidth(lineWidth); - line.setPosition(QPointF(0, height)); - height += line.height(); - widthUsed = qMax(widthUsed, line.naturalTextWidth()); - } - textLayout.endLayout(); -} - -ListViewDelegate::ListViewDelegate(QObject *parent) : QStyledItemDelegate(parent) -{ -} - -void drawSelectionRect(QPainter *painter, const QStyleOptionViewItem &option, - const QRect &rect) -{ - if ((option.state & QStyle::State_Selected)) - painter->fillRect(rect, option.palette.brush(QPalette::Highlight)); - else - { - QColor backgroundColor = option.palette.color(QPalette::Background); - backgroundColor.setAlpha(160); - painter->fillRect(rect, QBrush(backgroundColor)); - } -} - -void drawFocusRect(QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) -{ - if (!(option.state & QStyle::State_HasFocus)) - return; - QStyleOptionFocusRect opt; - opt.direction = option.direction; - opt.fontMetrics = option.fontMetrics; - opt.palette = option.palette; - opt.rect = rect; - // opt.state = option.state | QStyle::State_KeyboardFocusChange | - // QStyle::State_Item; - auto col = option.state & QStyle::State_Selected ? QPalette::Highlight : QPalette::Base; - opt.backgroundColor = option.palette.color(col); - // Apparently some widget styles expect this hint to not be set - painter->setRenderHint(QPainter::Antialiasing, false); - - QStyle *style = option.widget ? option.widget->style() : QApplication::style(); - - style->drawPrimitive(QStyle::PE_FrameFocusRect, &opt, painter, option.widget); - - painter->setRenderHint(QPainter::Antialiasing); -} - -// TODO this can be made a lot prettier -void drawProgressOverlay(QPainter *painter, const QStyleOptionViewItem &option, - const int value, const int maximum) -{ - if (maximum == 0 || value == maximum) - { - return; - } - - painter->save(); - - qreal percent = (qreal)value / (qreal)maximum; - QColor color = option.palette.color(QPalette::Dark); - color.setAlphaF(0.70f); - painter->setBrush(color); - painter->setPen(QPen(QBrush(), 0)); - painter->drawPie(option.rect, 90 * 16, -percent * 360 * 16); - - painter->restore(); -} - -void drawBadges(QPainter *painter, const QStyleOptionViewItem &option, BaseInstance *instance, QIcon::Mode mode, QIcon::State state) -{ - QList<QString> pixmaps; - if (instance->isRunning()) - { - pixmaps.append("status-running"); - } - else if (instance->hasCrashed() || instance->hasVersionBroken()) - { - pixmaps.append("status-bad"); - } - if (instance->hasUpdateAvailable()) - { - pixmaps.append("checkupdate"); - } - - static const int itemSide = 24; - static const int spacing = 1; - const int itemsPerRow = qMax(1, qFloor(double(option.rect.width() + spacing) / double(itemSide + spacing))); - const int rows = qCeil((double)pixmaps.size() / (double)itemsPerRow); - QListIterator<QString> it(pixmaps); - painter->translate(option.rect.topLeft()); - for (int y = 0; y < rows; ++y) - { - for (int x = 0; x < itemsPerRow; ++x) - { - if (!it.hasNext()) - { - return; - } - // FIXME: inject this. - auto icon = XdgIcon::fromTheme(it.next()); - // opt.icon.paint(painter, iconbox, Qt::AlignCenter, mode, state); - const QPixmap pixmap; - // itemSide - QRect badgeRect( - option.rect.width() - x * itemSide + qMax(x - 1, 0) * spacing - itemSide, - y * itemSide + qMax(y - 1, 0) * spacing, - itemSide, - itemSide - ); - icon.paint(painter, badgeRect, Qt::AlignCenter, mode, state); - } - } - painter->translate(-option.rect.topLeft()); -} - -static QSize viewItemTextSize(const QStyleOptionViewItem *option) -{ - QStyle *style = option->widget ? option->widget->style() : QApplication::style(); - QTextOption textOption; - textOption.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); - QTextLayout textLayout; - textLayout.setTextOption(textOption); - textLayout.setFont(option->font); - textLayout.setText(option->text); - const int textMargin = style->pixelMetric(QStyle::PM_FocusFrameHMargin, option, option->widget) + 1; - QRect bounds(0, 0, 100 - 2 * textMargin, 600); - qreal height = 0, widthUsed = 0; - viewItemTextLayout(textLayout, bounds.width(), height, widthUsed); - const QSize size(qCeil(widthUsed), qCeil(height)); - return QSize(size.width() + 2 * textMargin, size.height()); -} - -void ListViewDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, - const QModelIndex &index) const -{ - QStyleOptionViewItem opt = option; - initStyleOption(&opt, index); - painter->save(); - painter->setClipRect(opt.rect); - - opt.features |= QStyleOptionViewItem::WrapText; - opt.text = index.data().toString(); - opt.textElideMode = Qt::ElideRight; - opt.displayAlignment = Qt::AlignTop | Qt::AlignHCenter; - - QStyle *style = opt.widget ? opt.widget->style() : QApplication::style(); - - // const int iconSize = style->pixelMetric(QStyle::PM_IconViewIconSize); - const int iconSize = 48; - QRect iconbox = opt.rect; - const int textMargin = style->pixelMetric(QStyle::PM_FocusFrameHMargin, 0, opt.widget) + 1; - QRect textRect = opt.rect; - QRect textHighlightRect = textRect; - // clip the decoration on top, remove width padding - textRect.adjust(textMargin, iconSize + textMargin + 5, -textMargin, 0); - - textHighlightRect.adjust(0, iconSize + 5, 0, 0); - - // draw background - { - // FIXME: unused - // QSize textSize = viewItemTextSize ( &opt ); - drawSelectionRect(painter, opt, textHighlightRect); - /* - QPalette::ColorGroup cg; - QStyleOptionViewItem opt2(opt); - - if ((opt.widget && opt.widget->isEnabled()) || (opt.state & QStyle::State_Enabled)) - { - if (!(opt.state & QStyle::State_Active)) - cg = QPalette::Inactive; - else - cg = QPalette::Normal; - } - else - { - cg = QPalette::Disabled; - } - */ - /* - opt2.palette.setCurrentColorGroup(cg); - - // fill in background, if any - - - if (opt.backgroundBrush.style() != Qt::NoBrush) - { - QPointF oldBO = painter->brushOrigin(); - painter->setBrushOrigin(opt.rect.topLeft()); - painter->fillRect(opt.rect, opt.backgroundBrush); - painter->setBrushOrigin(oldBO); - } - - drawSelectionRect(painter, opt2, textHighlightRect); - */ - - /* - if (opt.showDecorationSelected) - { - drawSelectionRect(painter, opt2, opt.rect); - drawFocusRect(painter, opt2, opt.rect); - // painter->fillRect ( opt.rect, opt.palette.brush ( cg, QPalette::Highlight ) ); - } - else - { - - // if ( opt.state & QStyle::State_Selected ) - { - // QRect textRect = subElementRect ( QStyle::SE_ItemViewItemText, opt, - // opt.widget ); - // painter->fillRect ( textHighlightRect, opt.palette.brush ( cg, - // QPalette::Highlight ) ); - drawSelectionRect(painter, opt2, textHighlightRect); - drawFocusRect(painter, opt2, textHighlightRect); - } - } - */ - } - - // icon mode and state, also used for badges - QIcon::Mode mode = QIcon::Normal; - if (!(opt.state & QStyle::State_Enabled)) - mode = QIcon::Disabled; - else if (opt.state & QStyle::State_Selected) - mode = QIcon::Selected; - QIcon::State state = opt.state & QStyle::State_Open ? QIcon::On : QIcon::Off; - - // draw the icon - { - iconbox.setHeight(iconSize); - opt.icon.paint(painter, iconbox, Qt::AlignCenter, mode, state); - } - // set the text colors - QPalette::ColorGroup cg = - opt.state & QStyle::State_Enabled ? QPalette::Normal : QPalette::Disabled; - if (cg == QPalette::Normal && !(opt.state & QStyle::State_Active)) - cg = QPalette::Inactive; - if (opt.state & QStyle::State_Selected) - { - painter->setPen(opt.palette.color(cg, QPalette::HighlightedText)); - } - else - { - painter->setPen(opt.palette.color(cg, QPalette::Text)); - } - - // draw the text - QTextOption textOption; - textOption.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); - textOption.setTextDirection(opt.direction); - textOption.setAlignment(QStyle::visualAlignment(opt.direction, opt.displayAlignment)); - QTextLayout textLayout; - textLayout.setTextOption(textOption); - textLayout.setFont(opt.font); - textLayout.setText(opt.text); - - qreal width, height; - viewItemTextLayout(textLayout, textRect.width(), height, width); - - const int lineCount = textLayout.lineCount(); - - const QRect layoutRect = QStyle::alignedRect( - opt.direction, opt.displayAlignment, QSize(textRect.width(), int(height)), textRect); - const QPointF position = layoutRect.topLeft(); - for (int i = 0; i < lineCount; ++i) - { - const QTextLine line = textLayout.lineAt(i); - line.draw(painter, position); - } - - // FIXME: this really has no business of being here. Make generic. - auto instance = (BaseInstance*)index.data(InstanceList::InstancePointerRole) - .value<void *>(); - if (instance) - { - drawBadges(painter, opt, instance, mode, state); - } - - drawProgressOverlay(painter, opt, index.data(GroupViewRoles::ProgressValueRole).toInt(), - index.data(GroupViewRoles::ProgressMaximumRole).toInt()); - - painter->restore(); -} - -QSize ListViewDelegate::sizeHint(const QStyleOptionViewItem &option, - const QModelIndex &index) const -{ - QStyleOptionViewItem opt = option; - initStyleOption(&opt, index); - opt.features |= QStyleOptionViewItem::WrapText; - opt.text = index.data().toString(); - opt.textElideMode = Qt::ElideRight; - opt.displayAlignment = Qt::AlignTop | Qt::AlignHCenter; - - QStyle *style = opt.widget ? opt.widget->style() : QApplication::style(); - const int textMargin = style->pixelMetric(QStyle::PM_FocusFrameHMargin, &option, opt.widget) + 1; - int height = 48 + textMargin * 2 + 5; // TODO: turn constants into variables - QSize szz = viewItemTextSize(&opt); - height += szz.height(); - // FIXME: maybe the icon items could scale and keep proportions? - QSize sz(100, height); - return sz; -} - -class NoReturnTextEdit: public QTextEdit -{ - Q_OBJECT -public: - explicit NoReturnTextEdit(QWidget *parent) : QTextEdit(parent) - { - setTextInteractionFlags(Qt::TextEditorInteraction); - setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOff); - setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOff); - } - bool event(QEvent * event) override - { - auto eventType = event->type(); - if(eventType == QEvent::KeyPress || eventType == QEvent::KeyRelease) - { - QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event); - auto key = keyEvent->key(); - if (key == Qt::Key_Return || key == Qt::Key_Enter) - { - emit editingDone(); - return true; - } - if(key == Qt::Key_Tab) - { - return true; - } - } - return QTextEdit::event(event); - } -signals: - void editingDone(); -}; - -void ListViewDelegate::updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& index) const -{ - const int iconSize = 48; - QRect textRect = option.rect; - // QStyle *style = option.widget ? option.widget->style() : QApplication::style(); - textRect.adjust(0, iconSize + 5, 0, 0); - editor->setGeometry(textRect); -} - -void ListViewDelegate::setEditorData(QWidget* editor, const QModelIndex& index) const -{ - auto text = index.data(Qt::EditRole).toString(); - QTextEdit * realeditor = qobject_cast<NoReturnTextEdit *>(editor); - realeditor->setAlignment(Qt::AlignHCenter | Qt::AlignTop); - realeditor->append(text); - realeditor->selectAll(); - realeditor->document()->clearUndoRedoStacks(); -} - -void ListViewDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const -{ - QTextEdit * realeditor = qobject_cast<NoReturnTextEdit *>(editor); - QString text = realeditor->toPlainText(); - text.replace(QChar('\n'), QChar(' ')); - text = text.trimmed(); - if(text.size() != 0) - { - model->setData(index, text); - } -} - -QWidget * ListViewDelegate::createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const -{ - auto editor = new NoReturnTextEdit(parent); - connect(editor, &NoReturnTextEdit::editingDone, this, &ListViewDelegate::editingDone); - return editor; -} - -void ListViewDelegate::editingDone() -{ - NoReturnTextEdit *editor = qobject_cast<NoReturnTextEdit *>(sender()); - emit commitData(editor); - emit closeEditor(editor); -} - -#include "InstanceDelegate.moc" diff --git a/application/groupview/InstanceDelegate.h b/application/groupview/InstanceDelegate.h deleted file mode 100644 index d95279f3..00000000 --- a/application/groupview/InstanceDelegate.h +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QStyledItemDelegate> -#include <QCache> - -class ListViewDelegate : public QStyledItemDelegate -{ - Q_OBJECT - -public: - explicit ListViewDelegate(QObject *parent = 0); - virtual ~ListViewDelegate() {} - - void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; - QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override; - void updateEditorGeometry(QWidget * editor, const QStyleOptionViewItem & option, const QModelIndex & index) const override; - QWidget * createEditor(QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index) const override; - - void setEditorData(QWidget * editor, const QModelIndex & index) const override; - void setModelData(QWidget * editor, QAbstractItemModel * model, const QModelIndex & index) const override; - -private slots: - void editingDone(); -}; diff --git a/application/groupview/VisualGroup.cpp b/application/groupview/VisualGroup.cpp deleted file mode 100644 index 76bf8678..00000000 --- a/application/groupview/VisualGroup.cpp +++ /dev/null @@ -1,317 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "VisualGroup.h" - -#include <QModelIndex> -#include <QPainter> -#include <QtMath> -#include <QApplication> -#include <QDebug> - -#include "GroupView.h" - -VisualGroup::VisualGroup(const QString &text, GroupView *view) : view(view), text(text), collapsed(false) -{ -} - -VisualGroup::VisualGroup(const VisualGroup *other) - : view(other->view), text(other->text), collapsed(other->collapsed) -{ -} - -void VisualGroup::update() -{ - auto temp_items = items(); - auto itemsPerRow = view->itemsPerRow(); - - int numRows = qMax(1, qCeil((qreal)temp_items.size() / (qreal)itemsPerRow)); - rows = QVector<VisualRow>(numRows); - - int maxRowHeight = 0; - int positionInRow = 0; - int currentRow = 0; - int offsetFromTop = 0; - for (auto item: temp_items) - { - if(positionInRow == itemsPerRow) - { - rows[currentRow].height = maxRowHeight; - rows[currentRow].top = offsetFromTop; - currentRow ++; - offsetFromTop += maxRowHeight + 5; - positionInRow = 0; - maxRowHeight = 0; - } - auto itemHeight = view->itemDelegate()->sizeHint(view->viewOptions(), item).height(); - if(itemHeight > maxRowHeight) - { - maxRowHeight = itemHeight; - } - rows[currentRow].items.append(item); - positionInRow++; - } - rows[currentRow].height = maxRowHeight; - rows[currentRow].top = offsetFromTop; -} - -QPair<int, int> VisualGroup::positionOf(const QModelIndex &index) const -{ - int y = 0; - for (auto & row: rows) - { - for(auto x = 0; x < row.items.size(); x++) - { - if(row.items[x] == index) - { - return qMakePair(x,y); - } - } - y++; - } - qWarning() << "Item" << index.row() << index.data(Qt::DisplayRole).toString() << "not found in visual group" << text; - return qMakePair(0, 0); -} - -int VisualGroup::rowTopOf(const QModelIndex &index) const -{ - auto position = positionOf(index); - return rows[position.second].top; -} - -int VisualGroup::rowHeightOf(const QModelIndex &index) const -{ - auto position = positionOf(index); - return rows[position.second].height; -} - -VisualGroup::HitResults VisualGroup::hitScan(const QPoint &pos) const -{ - VisualGroup::HitResults results = VisualGroup::NoHit; - int y_start = verticalPosition(); - int body_start = y_start + headerHeight(); - int body_end = body_start + contentHeight() + 5; // FIXME: wtf is this 5? - int y = pos.y(); - // int x = pos.x(); - if (y < y_start) - { - results = VisualGroup::NoHit; - } - else if (y < body_start) - { - results = VisualGroup::HeaderHit; - int collapseSize = headerHeight() - 4; - - // the icon - QRect iconRect = QRect(view->m_leftMargin + 2, 2 + y_start, collapseSize, collapseSize); - if (iconRect.contains(pos)) - { - results |= VisualGroup::CheckboxHit; - } - } - else if (y < body_end) - { - results |= VisualGroup::BodyHit; - } - return results; -} - -void VisualGroup::drawHeader(QPainter *painter, const QStyleOptionViewItem &option) -{ - painter->setRenderHint(QPainter::Antialiasing); - - const QRect optRect = option.rect; - QFont font(QApplication::font()); - font.setBold(true); - const QFontMetrics fontMetrics = QFontMetrics(font); - - QColor outlineColor = option.palette.text().color(); - outlineColor.setAlphaF(0.35); - - //BEGIN: top left corner - { - painter->save(); - painter->setPen(outlineColor); - const QPointF topLeft(optRect.topLeft()); - QRectF arc(topLeft, QSizeF(4, 4)); - arc.translate(0.5, 0.5); - painter->drawArc(arc, 1440, 1440); - painter->restore(); - } - //END: top left corner - - //BEGIN: left vertical line - { - QPoint start(optRect.topLeft()); - start.ry() += 3; - QPoint verticalGradBottom(optRect.topLeft()); - verticalGradBottom.ry() += fontMetrics.height() + 5; - QLinearGradient gradient(start, verticalGradBottom); - gradient.setColorAt(0, outlineColor); - gradient.setColorAt(1, Qt::transparent); - painter->fillRect(QRect(start, QSize(1, fontMetrics.height() + 5)), gradient); - } - //END: left vertical line - - //BEGIN: horizontal line - { - QPoint start(optRect.topLeft()); - start.rx() += 3; - QPoint horizontalGradTop(optRect.topLeft()); - horizontalGradTop.rx() += optRect.width() - 6; - painter->fillRect(QRect(start, QSize(optRect.width() - 6, 1)), outlineColor); - } - //END: horizontal line - - //BEGIN: top right corner - { - painter->save(); - painter->setPen(outlineColor); - QPointF topRight(optRect.topRight()); - topRight.rx() -= 4; - QRectF arc(topRight, QSizeF(4, 4)); - arc.translate(0.5, 0.5); - painter->drawArc(arc, 0, 1440); - painter->restore(); - } - //END: top right corner - - //BEGIN: right vertical line - { - QPoint start(optRect.topRight()); - start.ry() += 3; - QPoint verticalGradBottom(optRect.topRight()); - verticalGradBottom.ry() += fontMetrics.height() + 5; - QLinearGradient gradient(start, verticalGradBottom); - gradient.setColorAt(0, outlineColor); - gradient.setColorAt(1, Qt::transparent); - painter->fillRect(QRect(start, QSize(1, fontMetrics.height() + 5)), gradient); - } - //END: right vertical line - - //BEGIN: checkboxy thing - { - painter->save(); - painter->setRenderHint(QPainter::Antialiasing, false); - painter->setFont(font); - QColor penColor(option.palette.text().color()); - penColor.setAlphaF(0.6); - painter->setPen(penColor); - QRect iconSubRect(option.rect); - iconSubRect.setTop(iconSubRect.top() + 7); - iconSubRect.setLeft(iconSubRect.left() + 7); - - int sizing = fontMetrics.height(); - int even = ( (sizing - 1) % 2 ); - - iconSubRect.setHeight(sizing - even); - iconSubRect.setWidth(sizing - even); - painter->drawRect(iconSubRect); - - - /* - if(collapsed) - painter->drawText(iconSubRect, Qt::AlignHCenter | Qt::AlignVCenter, "+"); - else - painter->drawText(iconSubRect, Qt::AlignHCenter | Qt::AlignVCenter, "-"); - */ - painter->setBrush(option.palette.text()); - painter->fillRect(iconSubRect.x(), iconSubRect.y() + iconSubRect.height() / 2, - iconSubRect.width(), 2, penColor); - if (collapsed) - { - painter->fillRect(iconSubRect.x() + iconSubRect.width() / 2, iconSubRect.y(), 2, - iconSubRect.height(), penColor); - } - - painter->restore(); - } - //END: checkboxy thing - - //BEGIN: text - { - QRect textRect(option.rect); - textRect.setTop(textRect.top() + 7); - textRect.setLeft(textRect.left() + 7 + fontMetrics.height() + 7); - textRect.setHeight(fontMetrics.height()); - textRect.setRight(textRect.right() - 7); - - painter->save(); - painter->setFont(font); - QColor penColor(option.palette.text().color()); - penColor.setAlphaF(0.6); - painter->setPen(penColor); - painter->drawText(textRect, Qt::AlignLeft | Qt::AlignVCenter, text); - painter->restore(); - } - //END: text -} - -int VisualGroup::totalHeight() const -{ - return headerHeight() + 5 + contentHeight(); // FIXME: wtf is that '5'? -} - -int VisualGroup::headerHeight() const -{ - QFont font(QApplication::font()); - font.setBold(true); - QFontMetrics fontMetrics(font); - - const int height = fontMetrics.height() + 1 /* 1 pixel-width gradient */ - + 11 /* top and bottom separation */; - return height; - /* - int raw = view->viewport()->fontMetrics().height() + 4; - // add english. maybe. depends on font height. - if (raw % 2 == 0) - raw++; - return std::min(raw, 25); - */ -} - -int VisualGroup::contentHeight() const -{ - if (collapsed) - { - return 0; - } - auto last = rows[numRows() - 1]; - return last.top + last.height; -} - -int VisualGroup::numRows() const -{ - return rows.size(); -} - -int VisualGroup::verticalPosition() const -{ - return m_verticalPosition; -} - -QList<QModelIndex> VisualGroup::items() const -{ - QList<QModelIndex> indices; - for (int i = 0; i < view->model()->rowCount(); ++i) - { - const QModelIndex index = view->model()->index(i, 0); - if (index.data(GroupViewRoles::GroupRole).toString() == text) - { - indices.append(index); - } - } - return indices; -} diff --git a/application/groupview/VisualGroup.h b/application/groupview/VisualGroup.h deleted file mode 100644 index 239ee9d7..00000000 --- a/application/groupview/VisualGroup.h +++ /dev/null @@ -1,106 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QString> -#include <QRect> -#include <QVector> -#include <QStyleOption> - -class GroupView; -class QPainter; -class QModelIndex; - -struct VisualRow -{ - QList<QModelIndex> items; - int height = 0; - int top = 0; - inline int size() const - { - return items.size(); - } - inline QModelIndex &operator[](int i) - { - return items[i]; - } -}; - -struct VisualGroup -{ -/* constructors */ - VisualGroup(const QString &text, GroupView *view); - VisualGroup(const VisualGroup *other); - -/* data */ - GroupView *view = nullptr; - QString text; - bool collapsed = false; - QVector<VisualRow> rows; - int firstItemIndex = 0; - int m_verticalPosition = 0; - -/* logic */ - /// update the internal list of items and flow them into the rows. - void update(); - - /// draw the header at y-position. - void drawHeader(QPainter *painter, const QStyleOptionViewItem &option); - - /// height of the group, in total. includes a small bit of padding. - int totalHeight() const; - - /// height of the group header, in pixels - int headerHeight() const; - - /// height of the group content, in pixels - int contentHeight() const; - - /// the number of visual rows this group has - int numRows() const; - - /// actually calculate the above value - int calculateNumRows() const; - - /// the height at which this group starts, in pixels - int verticalPosition() const; - - /// relative geometry - top of the row of the given item - int rowTopOf(const QModelIndex &index) const; - - /// height of the row of the given item - int rowHeightOf(const QModelIndex &index) const; - - /// x/y position of the given item inside the group (in items!) - QPair<int, int> positionOf(const QModelIndex &index) const; - - enum HitResult - { - NoHit = 0x0, - TextHit = 0x1, - CheckboxHit = 0x2, - HeaderHit = 0x4, - BodyHit = 0x8 - }; - Q_DECLARE_FLAGS(HitResults, HitResult) - - /// shoot! BANG! what did we hit? - HitResults hitScan (const QPoint &pos) const; - - QList<QModelIndex> items() const; -}; - -Q_DECLARE_OPERATORS_FOR_FLAGS(VisualGroup::HitResults) diff --git a/application/install_prereqs.cmake.in b/application/install_prereqs.cmake.in deleted file mode 100644 index e4408d16..00000000 --- a/application/install_prereqs.cmake.in +++ /dev/null @@ -1,27 +0,0 @@ -set(CMAKE_MODULE_PATH "@CMAKE_MODULE_PATH@") - -file(GLOB_RECURSE QTPLUGINS "${CMAKE_INSTALL_PREFIX}/@PLUGIN_DEST_DIR@/*@CMAKE_SHARED_LIBRARY_SUFFIX@") -function(gp_resolved_file_type_override resolved_file type_var) - if(resolved_file MATCHES "^/(usr/)?lib/libQt") - set(${type_var} other PARENT_SCOPE) - elseif(resolved_file MATCHES "^/(usr/)?lib(.+)?/libxcb-") - set(${type_var} other PARENT_SCOPE) - elseif(resolved_file MATCHES "^/(usr/)?lib(.+)?/libicu") - set(${type_var} other PARENT_SCOPE) - elseif(resolved_file MATCHES "^/(usr/)?lib(.+)?/libpng") - set(${type_var} other PARENT_SCOPE) - elseif(resolved_file MATCHES "^/(usr/)?lib(.+)?/libproxy") - set(${type_var} other PARENT_SCOPE) - elseif((resolved_file MATCHES "^/(usr/)?lib(.+)?/libstdc\\+\\+") AND (UNIX AND NOT APPLE)) - set(${type_var} other PARENT_SCOPE) - endif() -endfunction() - -set(gp_tool "@CMAKE_GP_TOOL@") -set(gp_cmd_paths ${gp_cmd_paths} - "@CMAKE_GP_CMD_PATHS@" -) - -include(BundleUtilities) -fixup_bundle("@APPS@" "${QTPLUGINS}" "@DIRS@") - diff --git a/application/main.cpp b/application/main.cpp deleted file mode 100644 index b0360c7e..00000000 --- a/application/main.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#include "MultiMC.h" -#include "MainWindow.h" -#include "LaunchController.h" -#include <InstanceList.h> -#include <QDebug> - -// #define BREAK_INFINITE_LOOP -// #define BREAK_EXCEPTION -// #define BREAK_RETURN - -#ifdef BREAK_INFINITE_LOOP -#include <thread> -#include <chrono> -#endif - -int main(int argc, char *argv[]) -{ -#ifdef BREAK_INFINITE_LOOP - while(true) - { - std::this_thread::sleep_for(std::chrono::milliseconds(250)); - } -#endif -#ifdef BREAK_EXCEPTION - throw 42; -#endif -#ifdef BREAK_RETURN - return 42; -#endif - -#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) - QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); - QGuiApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); -#endif - - // initialize Qt - MultiMC app(argc, argv); - - switch (app.status()) - { - case MultiMC::StartingUp: - case MultiMC::Initialized: - { - Q_INIT_RESOURCE(multimc); - Q_INIT_RESOURCE(backgrounds); - - Q_INIT_RESOURCE(pe_dark); - Q_INIT_RESOURCE(pe_light); - Q_INIT_RESOURCE(pe_blue); - Q_INIT_RESOURCE(pe_colored); - Q_INIT_RESOURCE(OSX); - Q_INIT_RESOURCE(iOS); - Q_INIT_RESOURCE(flat); - return app.exec(); - } - case MultiMC::Failed: - return 1; - case MultiMC::Succeeded: - return 0; - } -} diff --git a/application/package/linux/MultiMC b/application/package/linux/MultiMC deleted file mode 100755 index da6373bc..00000000 --- a/application/package/linux/MultiMC +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/bash -# Basic start script for running MultiMC with the libs packaged with it. - -function printerror { - printf "$1" - if which zenity >/dev/null; then zenity --error --text="$1" &>/dev/null; - elif which kdialog >/dev/null; then kdialog --error "$1" &>/dev/null; - fi -} - -if [[ $EUID -eq 0 ]]; then - printerror "This program should not be run using sudo or as the root user!\n" - exit 1 -fi - - -MMC_DIR="$(dirname "$(readlink -f "$0")")" -echo "MultiMC Dir: ${MMC_DIR}" - -# Set up env - filter out input LD_ variables but pass them in under different names -export GAME_LIBRARY_PATH=${GAME_LIBRARY_PATH-${LD_LIBRARY_PATH}} -export GAME_PRELOAD=${GAME_PRELOAD-${LD_PRELOAD}} -export LD_LIBRARY_PATH="${MMC_DIR}/bin":$MMC_LIBRARY_PATH -export LD_PRELOAD=$MMC_PRELOAD -export QT_PLUGIN_PATH="${MMC_DIR}/plugins" -export QT_FONTPATH="${MMC_DIR}/fonts" - -# Detect missing dependencies... -DEPS_LIST=`ldd "${MMC_DIR}"/plugins/*/*.so 2>/dev/null | grep "not found" | sort -u | awk -vORS=", " '{ print $1 }'` -if [ "x$DEPS_LIST" = "x" ]; then - # We have all our dependencies. Run MultiMC. - echo "No missing dependencies found." - - # Just to be sure... - chmod +x "${MMC_DIR}/bin/MultiMC" - - # Run MultiMC - "${MMC_DIR}/bin/MultiMC" -d "${MMC_DIR}" "$@" - - # Run MultiMC in valgrind - # valgrind --log-file="valgrind.log" --leak-check=full --track-origins=yes "${MMC_DIR}/bin/MultiMC" -d "${MMC_DIR}" "$@" - - # Run MultiMC with callgrind, delay instrumentation - # valgrind --log-file="valgrind.log" --tool=callgrind --instr-atstart=no "${MMC_DIR}/bin/MultiMC" -d "${MMC_DIR}" "$@" - # use callgrind_control -i on/off to profile actions - - # Exit with MultiMC's exit code. - exit $? -else - # apt - if which apt-file &>/dev/null; then - LIBRARIES=`echo "$DEPS_LIST" | grep -oP "[^, ]*" | sort -u` - COMMAND_LIBS=`for LIBRARY in $LIBRARIES; do apt-file -l search $LIBRARY; done` - COMMAND_LIBS=`echo "$COMMAND_LIBS" | sort -u | awk -vORS=" " '{ print $1 }'` - INSTALL_CMD="sudo apt-get install $COMMAND_LIBS" - # pacman - elif which pkgfile &>/dev/null; then - LIBRARIES=`echo "$DEPS_LIST" | grep -oP "[^, ]*" | sort -u` - COMMAND_LIBS=`for LIBRARY in $LIBRARIES; do pkgfile $LIBRARY; done` - COMMAND_LIBS=`echo "$COMMAND_LIBS" | sort -u | awk -vORS=" " '{ print $1 }'` - INSTALL_CMD="sudo pacman -S $COMMAND_LIBS" - # dnf - elif which dnf &>/dev/null; then - LIBRARIES=`echo "$DEPS_LIST" | grep -oP "[^, ]*" | sort -u` - COMMAND_LIBS=`for LIBRARY in $LIBRARIES; do dnf whatprovides -q $LIBRARY; done` - COMMAND_LIBS=`echo "$COMMAND_LIBS" | grep -v 'Repo' | sort -u | awk -vORS=" " '{ print $1 }'` - INSTALL_CMD="sudo dnf install $COMMAND_LIBS" - # yum - elif which yum &>/dev/null; then - LIBRARIES=`echo "$DEPS_LIST" | grep -oP "[^, ]*" | sort -u` - COMMAND_LIBS=`for LIBRARY in $LIBRARIES; do yum whatprovides $LIBRARY; done` - COMMAND_LIBS=`echo "$COMMAND_LIBS" | sort -u | awk -vORS=" " '{ print $1 }'` - INSTALL_CMD="sudo yum install $COMMAND_LIBS" - # zypper - elif which zypper &>/dev/null; then - LIBRARIES=`echo "$DEPS_LIST" | grep -oP "[^, ]*" | sort -u` - COMMAND_LIBS=`for LIBRARY in $LIBRARIES; do zypper wp $LIBRARY; done` - COMMAND_LIBS=`echo "$COMMAND_LIBS" | sort -u | awk -vORS=" " '{ print $1 }'` - INSTALL_CMD="sudo zypper install $COMMAND_LIBS" - # emerge - elif which pfl &>/dev/null; then - LIBRARIES=`echo "$DEPS_LIST" | grep -oP "[^, ]*" | sort -u` - COMMAND_LIBS=`for LIBRARY in $LIBRARIES; do pfl $LIBRARY; done` - COMMAND_LIBS=`echo "$COMMAND_LIBS" | sort -u | awk -vORS=" " '{ print $1 }'` - INSTALL_CMD="sudo emerge $COMMAND_LIBS" - fi - - MESSAGE="Error: MultiMC is missing the following libraries that it needs to work correctly:\n\t${DEPS_LIST}\nPlease install them from your distribution's package manager." - MESSAGE="$MESSAGE\n\nHint (please apply common sense): $INSTALL_CMD\n" - - printerror "$MESSAGE" - exit 1 -fi diff --git a/application/package/linux/multimc.desktop b/application/package/linux/multimc.desktop deleted file mode 100755 index c25be047..00000000 --- a/application/package/linux/multimc.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=MultiMC -GenericName=Minecraft Launcher -Comment=Free, open source launcher and instance manager for Minecraft. -Type=Application -Terminal=false -Exec=multimc -Icon=multimc -Categories=Game -Keywords=game;minecraft; diff --git a/application/package/rpm/MultiMC5.spec b/application/package/rpm/MultiMC5.spec deleted file mode 100644 index 78b9000e..00000000 --- a/application/package/rpm/MultiMC5.spec +++ /dev/null @@ -1,47 +0,0 @@ -Name: MultiMC5 -Version: 1.4 -Release: 2%{?dist} -Summary: A local install wrapper for MultiMC - -License: ASL 2.0 -URL: https://multimc.org -BuildArch: x86_64 - -Requires: zenity qt5-qtbase wget xrandr -Provides: multimc MultiMC multimc5 - -%description -A local install wrapper for MultiMC - -%prep - - -%build - - -%install -mkdir -p %{buildroot}/opt/multimc -install -m 0644 ../ubuntu/multimc/opt/multimc/icon.svg %{buildroot}/opt/multimc/icon.svg -install -m 0755 ../ubuntu/multimc/opt/multimc/run.sh %{buildroot}/opt/multimc/run.sh -mkdir -p %{buildroot}/%{_datadir}/applications -install -m 0644 ../ubuntu/multimc/usr/share/applications/multimc.desktop %{buildroot}/%{_datadir}/applications/multimc.desktop -mkdir -p %{buildroot}/%{_metainfodir} -install -m 0644 ../ubuntu/multimc/usr/share/metainfo/multimc.metainfo.xml %{buildroot}/%{_metainfodir}/multimc.metainfo.xml - -%files -%dir /opt/multimc -/opt/multimc/icon.svg -/opt/multimc/run.sh -%{_datadir}/applications/multimc.desktop -%{_metainfodir}/multimc.metainfo.xml - - -%changelog -* Tue Jun 01 2021 kb1000 <fedora@kb1000.de> - 1.4-2 -- Add xrandr to the dependencies - -* Tue Dec 08 00:34:35 CET 2020 joshua-stone <joshua.gage.stone@gmail.com> -- Add metainfo.xml for improving package metadata - -* Wed Nov 25 22:53:59 CET 2020 kb1000 <fedora@kb1000.de> -- Initial version of the RPM package, based on the Ubuntu package diff --git a/application/package/rpm/README.md b/application/package/rpm/README.md deleted file mode 100644 index 0c2b1e49..00000000 --- a/application/package/rpm/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# What is this? -A simple RPM package for MultiMC that contains a script that downloads and installs real MultiMC on Red Hat based systems. - -It contains a `.desktop` file, a `.metainfo.xml` file, an icon, and a simple script that does the heavy lifting. - -# How to build this? -You need the `rpm-build` package. Switch into this directory, then run: -``` -rpmbuild --build-in-place -bb MultiMC5.spec -``` - -Replace the version with whatever is appropriate. diff --git a/application/package/ubuntu/README.md b/application/package/ubuntu/README.md deleted file mode 100644 index 892abd12..00000000 --- a/application/package/ubuntu/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# What is this? -A simple Ubuntu package for MultiMC that contains a script that downloads and installs real MultiMC on Ubuntu based systems. - -It contains a `.desktop` file, an icon, and a simple script that does the heavy lifting. - -This is also the source for the files in the [RPM package](../rpm). If you rename, create or delete files here, you'll likely also have to update the RPM spec file there. - -# How to build this? -You need dpkg utils. Rename the `multimc` folder to `multimc_1.5-1` and then run: -``` -fakeroot dpkg-deb --build multimc_1.5-1 -``` - -Replace the version with whatever is appropriate. diff --git a/application/package/ubuntu/multimc/DEBIAN/control b/application/package/ubuntu/multimc/DEBIAN/control deleted file mode 100644 index 3e0f570c..00000000 --- a/application/package/ubuntu/multimc/DEBIAN/control +++ /dev/null @@ -1,12 +0,0 @@ -Package: multimc -Version: 1.5-1 -Architecture: all -Maintainer: Petr Mrázek <peterix@gmail.com> -Section: games -Priority: optional -Installed-Size: 75 -Depends: zenity, desktop-file-utils, libqt5widgets5, libqt5gui5, libqt5network5, libqt5core5a, libqt5xml5, libqt5concurrent5, wget -Recommends: openjdk-8-jre -Homepage: http://multimc.org -Description: A local install wrapper for MultiMC - diff --git a/application/package/ubuntu/multimc/DEBIAN/postrm b/application/package/ubuntu/multimc/DEBIAN/postrm deleted file mode 100755 index f9bbc8a7..00000000 --- a/application/package/ubuntu/multimc/DEBIAN/postrm +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -set -e -update-desktop-database diff --git a/application/package/ubuntu/multimc/opt/multimc/icon.svg b/application/package/ubuntu/multimc/opt/multimc/icon.svg deleted file mode 100644 index 8bb0e289..00000000 --- a/application/package/ubuntu/multimc/opt/multimc/icon.svg +++ /dev/null @@ -1,353 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="68.26667" - height="68.26667" - id="svg4427" - version="1.1" - inkscape:version="0.92.1 r" - sodipodi:docname="multimc-smooth-biginfinity.svg" - inkscape:export-filename="/home/peterix/playground/MultiMC-icons/multimc-smooth-biginfinity.png" - inkscape:export-xdpi="180" - inkscape:export-ydpi="180"> - <defs - id="defs4429"> - <linearGradient - inkscape:collect="always" - id="linearGradient4809"> - <stop - style="stop-color:#98c867;stop-opacity:1" - offset="0" - id="stop4805" /> - <stop - style="stop-color:#5c9a33;stop-opacity:1" - offset="1" - id="stop4807" /> - </linearGradient> - <linearGradient - id="linearGradient5668" - inkscape:collect="always"> - <stop - id="stop5670" - offset="0" - style="stop-color:#75b54b;stop-opacity:1;" /> - <stop - id="stop5672" - offset="1" - style="stop-color:#75b54b;stop-opacity:0.6" /> - </linearGradient> - <linearGradient - id="linearGradient5084" - inkscape:collect="always"> - <stop - id="stop5086" - offset="0" - style="stop-color:#000000;stop-opacity:0.8" /> - <stop - id="stop5088" - offset="1" - style="stop-color:#000000;stop-opacity:0.35" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5668" - id="linearGradient5072" - x1="6.7342591" - y1="28.510933" - x2="50.506943" - y2="61.773685" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-0.01532073,-0.00938002)" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5084" - id="linearGradient5082" - x1="14.312115" - y1="9.7948904" - x2="44.097023" - y2="82.973114" - gradientUnits="userSpaceOnUse" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5668" - id="linearGradient3281" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-0.01532073,-0.00938002)" - x1="6.7342591" - y1="28.510933" - x2="50.506943" - y2="61.773685" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5668" - id="linearGradient3283" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-0.01532073,-0.00938002)" - x1="6.7342591" - y1="28.510933" - x2="50.506943" - y2="61.773685" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5668" - id="linearGradient3286" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.2671525,0,0,0.89790119,-0.01941371,-0.00842234)" - x1="6.7342591" - y1="28.510933" - x2="50.506943" - y2="61.773685" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5084" - id="linearGradient3288" - gradientUnits="userSpaceOnUse" - x1="14.312115" - y1="9.7948904" - x2="44.097023" - y2="82.973114" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5084" - id="linearGradient3290" - gradientUnits="userSpaceOnUse" - x1="14.312115" - y1="9.7948904" - x2="44.097023" - y2="82.973114" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5084" - id="linearGradient3293" - gradientUnits="userSpaceOnUse" - x1="14.312115" - y1="9.7948904" - x2="44.097023" - y2="82.973114" - gradientTransform="scale(1.2671525,0.89790119)" /> - <linearGradient - inkscape:collect="always" - id="linearGradient5580"> - <stop - style="stop-color:#000000;stop-opacity:0.0627451" - offset="0" - id="stop5576" /> - <stop - style="stop-color:#322217;stop-opacity:0.58823532" - offset="1" - id="stop5578" /> - </linearGradient> - <linearGradient - id="linearGradient3999" - inkscape:collect="always"> - <stop - id="stop3995" - offset="0" - style="stop-color:#a3704b;stop-opacity:1" /> - <stop - id="stop3997" - offset="1" - style="stop-color:#6a4a33;stop-opacity:1" /> - </linearGradient> - <linearGradient - id="linearGradient2727" - inkscape:collect="always"> - <stop - id="stop2723" - offset="0" - style="stop-color:#966c4a;stop-opacity:1" /> - <stop - id="stop2725" - offset="1" - style="stop-color:#593d29;stop-opacity:1" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2727" - id="linearGradient2050" - gradientUnits="userSpaceOnUse" - x1="36.546478" - y1="33.80484" - x2="86.415741" - y2="97.065842" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3999" - id="radialGradient2052" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-9.105292e-4,-0.00104444)" - cx="34.133331" - cy="34.133335" - fx="34.133331" - fy="34.133335" - r="29.866665" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5580" - id="linearGradient2140" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-0.0010513,-9.083059e-4)" - x1="29.866674" - y1="29.867579" - x2="38.400005" - y2="38.400913" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5084" - id="linearGradient4790" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.2671525,0,0,0.89790119,-0.82864077,-1.0012743)" - x1="14.312115" - y1="9.7948904" - x2="44.097023" - y2="82.973114" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4809" - id="radialGradient4803" - cx="-42.66758" - cy="-34.134373" - fx="-42.66758" - fy="-34.134373" - r="34.132812" - gradientTransform="matrix(1.7500268,0.1250019,-0.01781176,0.24936465,95.393964,18.110151)" - gradientUnits="userSpaceOnUse" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="3.6203867" - inkscape:cx="52.171166" - inkscape:cy="11.292073" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:document-units="px" - inkscape:grid-bbox="true" - inkscape:window-width="1368" - inkscape:window-height="905" - inkscape:window-x="2452" - inkscape:window-y="723" - inkscape:window-maximized="0" - inkscape:snap-bbox="true" - inkscape:bbox-paths="false" - inkscape:snap-bbox-edge-midpoints="false" - inkscape:bbox-nodes="true" - inkscape:snap-bbox-midpoints="false" - inkscape:snap-smooth-nodes="true" - inkscape:snap-midpoints="false" - inkscape:snap-intersection-paths="true" - inkscape:object-paths="true" - inkscape:snap-object-midpoints="true" - inkscape:snap-text-baseline="true" - inkscape:snap-center="true"> - <inkscape:grid - type="xygrid" - id="grid4446" - empspacing="16" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" - spacingx="4.2666667" - spacingy="4.2666667" - originx="0" - originy="0" /> - </sodipodi:namedview> - <metadata - id="metadata4432"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="layer1" - inkscape:label="Layer 1" - inkscape:groupmode="layer"> - <g - id="g2048" - transform="translate(9.113e-4,0.00104183)"> - <rect - rx="8.5333338" - ry="8.5333338" - style="fill:url(#linearGradient2050);fill-opacity:1;stroke:none;stroke-width:17.06666756" - id="rect2026" - width="68.26667" - height="68.26667" - x="-1.3322676e-15" - y="3.0270508e-06" /> - <rect - rx="4.2666626" - y="4.2656283" - x="4.2657552" - height="59.733334" - width="59.73333" - id="rect2028" - style="fill:url(#radialGradient2052);fill-opacity:1;stroke:none;stroke-width:14.93333435" - ry="4.2666669" /> - <path - inkscape:connector-curvature="0" - id="path4811" - d="m 4.2669272,4.2645856 -9.11e-4,8.5333334 h 4.267577 v 4.267579 h 8.5332038 v 4.265625 h 4.265625 V 8.5322946 H 25.6 v 8.5332034 h 4.265625 v -4.267579 h 4.267578 v 8.533204 h 4.265625 v -4.265625 h 4.267578 v 4.265625 h 4.267579 v -4.265625 h 4.265624 v -4.267579 h 4.267579 v 4.267579 h 8.533203 l -1.3e-4,-12.8009124 z" - style="opacity:0.6;fill:#593d29;fill-opacity:1;stroke:none;stroke-width:17.06666756" - sodipodi:nodetypes="ccccccccccccccccccccccccccc" /> - <path - style="fill:url(#radialGradient4803);fill-opacity:1;stroke:none;stroke-width:17.06666756" - d="m 8.5329442,-0.0018207 c -4.7274675,0 -8.5332035,3.805736 -8.5332035,8.533203 v 4.2675787 h 4.265625 V 8.5313823 c 0,-0.521698 0.105433,-1.01339 0.27539,-1.47461 -0.169616,0.460814 -0.27539,0.953462 -0.27539,1.47461 h 4.2675785 v 4.2675787 h 4.2656248 4.267578 v 4.265625 h 4.265625 V 12.798961 8.5313823 4.2657573 h 4.267578 v 4.265625 4.2675787 h 4.265625 V 8.5313823 h 4.267578 v 4.2675787 4.265625 h 4.265625 v -4.265625 h 4.267578 v 4.265625 h 4.267579 v -4.265625 h 4.265624 V 8.5313823 h 4.267579 v 4.2675787 h 4.265625 4.267578 V 8.5313823 h 4.265625 c 0,-4.727467 -3.805737,-8.533203 -8.533203,-8.533203 z m -3.019531,5.513671 c -0.318089,0.317888 -0.570428,0.695824 -0.7753915,1.101563 0.2048795,-0.405231 0.4576385,-0.784012 0.7753915,-1.101563 z" - id="path4794" - inkscape:connector-curvature="0" /> - <path - style="opacity:1;fill:url(#linearGradient2140);fill-opacity:1;stroke:none;stroke-width:17.06666756" - d="m 8.5322887,-9.083059e-4 c -4.72747,0 -8.5332,3.8057359059 -8.5332,8.5332029059 V 59.731515 c 0,4.727467 3.80573,8.535156 8.5332,8.535156 H 59.731502 c 4.72747,0 8.5332,-3.807689 8.5332,-8.535156 V 8.5322946 c 0,-4.727467 -3.80573,-8.5332029059 -8.5332,-8.5332029059 z m 0,4.2675779059 H 59.731502 c 2.36373,0 4.26758,1.901892 4.26758,4.265625 V 59.731515 c 0,2.363733 -1.90385,4.267578 -4.26758,4.267578 H 8.5322887 c -2.36373,0 -4.26758,-1.903845 -4.26758,-4.267578 V 8.5322946 c 0,-2.363733 1.90385,-4.265625 4.26758,-4.265625 z" - id="path2046" - inkscape:connector-curvature="0" /> - </g> - <g - id="g1092"> - <path - inkscape:connector-curvature="0" - id="path4786" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:76.18933868px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient4790);fill-opacity:1;stroke:none;stroke-width:1.06666672;opacity:0.5" - d="m 38.886673,44.940882 c -0.974277,-0.801673 -2.231353,-2.137814 -3.771231,-4.008427 -2.105641,2.672298 -4.085536,4.598569 -5.939688,5.778816 -2.325625,1.425227 -5.295467,2.137836 -8.909534,2.137828 -4.242656,8e-6 -7.762467,-1.124578 -10.5594458,-3.37376 C 6.7526311,43.114834 5.275567,39.986037 5.2755773,36.088937 5.275567,32.347763 6.7526311,29.207831 9.7067742,26.669132 12.346618,24.419991 15.897857,23.295407 20.360501,23.295373 c 2.294138,3.4e-5 4.289747,0.334069 5.986829,1.002107 1.979863,0.73491 3.645488,1.737016 4.996881,3.00632 1.257039,1.135751 2.514115,2.471891 3.771231,4.008428 2.105563,-2.672257 4.085457,-4.598527 5.939689,-5.778816 2.325544,-1.425186 5.295385,-2.137794 8.909533,-2.137828 4.242577,3.4e-5 7.762388,1.124618 10.559447,3.37376 2.954063,2.360546 4.431127,5.489343 4.431197,9.386401 -7e-5,3.741216 -1.477134,6.881147 -4.431197,9.419806 -2.639925,2.24918 -6.191163,3.373767 -10.653727,3.373758 -2.294219,9e-6 -4.289826,-0.334026 -5.98683,-1.002106 -1.697101,-0.601255 -3.362726,-1.603361 -4.996881,-3.006321 M 19.747676,44.473233 c 5.185412,1.1e-5 9.333763,-2.672271 12.445062,-8.016856 -3.991253,-5.834464 -8.139602,-8.751705 -12.445062,-8.751733 -3.142715,2.8e-5 -5.515446,0.801713 -7.118198,2.405057 -1.728498,1.71474 -2.592737,3.707818 -2.592722,5.979236 -1.5e-5,2.494152 0.864224,4.509499 2.592722,6.046046 1.759887,1.558846 4.132618,2.338261 7.118198,2.33825 M 50.483209,27.77145 c -4.682663,2.9e-5 -8.831013,2.672312 -12.445062,8.016856 3.959745,5.834503 8.108095,8.751746 12.445062,8.751733 3.142633,1.3e-5 5.515364,-0.801671 7.118198,-2.405056 1.728416,-1.714701 2.592656,-3.707778 2.592722,-5.979238 -6.6e-5,-2.49411 -0.864306,-4.509456 -2.592722,-6.046044 -1.759968,-1.558805 -4.132699,-2.338222 -7.118198,-2.338251" /> - <path - d="m 39.715314,45.942156 c -0.974277,-0.801673 -2.231353,-2.137814 -3.771231,-4.008427 -2.105641,2.672298 -4.085536,4.598569 -5.939688,5.778816 -2.325625,1.425227 -5.295467,2.137836 -8.909534,2.137828 -4.242656,8e-6 -7.762467,-1.124578 -10.559446,-3.37376 -2.9541431,-2.360505 -4.4312072,-5.489302 -4.4311969,-9.386402 -1.03e-5,-3.741174 1.4770538,-6.881106 4.4311969,-9.419805 2.639844,-2.249141 6.191083,-3.373725 10.653727,-3.373759 2.294138,3.4e-5 4.289747,0.334069 5.986829,1.002107 1.979863,0.73491 3.645488,1.737016 4.996881,3.00632 1.257039,1.135751 2.514115,2.471891 3.771231,4.008428 2.105563,-2.672257 4.085457,-4.598527 5.939689,-5.778816 2.325544,-1.425186 5.295385,-2.137794 8.909533,-2.137828 4.242577,3.4e-5 7.762388,1.124618 10.559447,3.37376 2.954063,2.360546 4.431127,5.489343 4.431197,9.386401 -7e-5,3.741216 -1.477134,6.881147 -4.431197,9.419806 -2.639925,2.24918 -6.191163,3.373767 -10.653727,3.373758 -2.294219,9e-6 -4.289826,-0.334026 -5.98683,-1.002106 -1.697101,-0.601255 -3.362726,-1.603361 -4.996881,-3.006321 M 20.576317,45.474507 c 5.185412,1.1e-5 9.333763,-2.672271 12.445062,-8.016856 -3.991253,-5.834464 -8.139602,-8.751705 -12.445062,-8.751733 -3.142715,2.8e-5 -5.515446,0.801713 -7.118198,2.405057 -1.728498,1.71474 -2.592737,3.707818 -2.592722,5.979236 -1.5e-5,2.494152 0.864224,4.509499 2.592722,6.046046 1.759887,1.558846 4.132618,2.338261 7.118198,2.33825 M 51.31185,28.772724 c -4.682663,2.9e-5 -8.831013,2.672312 -12.445062,8.016856 3.959745,5.834503 8.108095,8.751746 12.445062,8.751733 3.142633,1.3e-5 5.515364,-0.801671 7.118198,-2.405056 1.728416,-1.714701 2.592656,-3.707778 2.592722,-5.979238 -6.6e-5,-2.49411 -0.864306,-4.509456 -2.592722,-6.046044 C 56.67008,29.55217 54.297349,28.772753 51.31185,28.772724" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:76.18933868px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient3293);fill-opacity:1;stroke:none;stroke-width:1.06666672;opacity:0.5" - id="path3279" - inkscape:connector-curvature="0" /> - <path - d="m 37.904564,42.951873 c -0.974278,-0.801672 -2.231352,-2.137814 -3.771231,-4.008428 -2.105642,2.672298 -4.085537,4.598568 -5.939688,5.778817 -2.325625,1.425227 -5.295466,2.137836 -8.909534,2.137828 -4.242656,8e-6 -7.762467,-1.124577 -10.5594464,-3.37376 -2.9541428,-2.360505 -4.4312068,-5.489302 -4.4311963,-9.386401 -1.05e-5,-3.741175 1.4770535,-6.881107 4.4311963,-9.419805 2.6398444,-2.249142 6.1910824,-3.373727 10.6537284,-3.37376 2.294137,3.3e-5 4.289745,0.334068 5.986829,1.002107 1.979863,0.734909 3.645487,1.737016 4.99688,3.00632 1.257039,1.13575 2.514116,2.471891 3.771231,4.008428 2.105562,-2.672257 4.085456,-4.598528 5.939689,-5.778817 2.325544,-1.425185 5.295387,-2.137795 8.909534,-2.137828 4.242576,3.3e-5 7.762387,1.12462 10.559446,3.373761 2.954062,2.360545 4.431127,5.489343 4.431197,9.386401 -7e-5,3.741216 -1.477135,6.881148 -4.431197,9.419805 -2.639924,2.249182 -6.191164,3.373767 -10.653728,3.37376 -2.294217,7e-6 -4.289826,-0.334028 -5.986828,-1.002107 -1.697101,-0.601254 -3.362727,-1.603361 -4.996882,-3.006321 m -19.138997,-0.46765 c 5.185412,1.3e-5 9.333762,-2.67227 12.445062,-8.016856 -3.991252,-5.834462 -8.139602,-8.751704 -12.445062,-8.751733 -3.142714,2.9e-5 -5.515444,0.801714 -7.118198,2.405056 -1.7284972,1.714743 -2.5927368,3.707819 -2.5927216,5.979239 -1.52e-5,2.49415 0.8642244,4.509496 2.5927216,6.046045 1.759888,1.558845 4.132618,2.338262 7.118198,2.338249 M 49.5011,25.782442 c -4.682663,2.8e-5 -8.831014,2.672311 -12.445063,8.016855 3.959745,5.834504 8.108096,8.751745 12.445063,8.751733 3.142634,1.2e-5 5.515365,-0.801673 7.118198,-2.405056 1.728417,-1.7147 2.592657,-3.707778 2.592721,-5.979238 -6.4e-5,-2.49411 -0.864304,-4.509456 -2.592721,-6.046046 C 54.85933,26.561886 52.486599,25.78247 49.5011,25.782442" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:76.18933868px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient3286);fill-opacity:1;stroke:none;stroke-width:1.06666672" - id="path3272" - inkscape:connector-curvature="0" /> - <path - sodipodi:nodetypes="ccscsccccccccccccccccccccscscccccsccscccccc" - inkscape:connector-curvature="0" - id="text5100" - d="m 19.4,21.166667 c -4.462644,3.3e-5 -8.026822,1.150858 -10.6666667,3.4 -2.9541428,2.538698 -4.4333436,5.658825 -4.4333333,9.4 -1.03e-5,3.897098 1.4791905,7.039495 4.4333333,9.4 -1.622701,-2.044271 -2.433341,-4.51168 -2.4333333,-7.4 -1.03e-5,-3.741175 1.4791905,-6.861302 4.433333,-9.4 2.639845,-2.249142 6.204023,-3.399967 10.666667,-3.4 2.294138,3.3e-5 4.302916,0.365295 6,1.033333 1.979862,0.73491 3.615274,1.730695 4.966667,3 0.06836,0.06177 0.131637,0.137049 0.2,0.2 -0.731813,-0.797005 -1.468213,-1.538822 -2.2,-2.2 -1.351393,-1.269305 -2.986805,-2.26509 -4.966667,-3 -1.697084,-0.668038 -3.705862,-1.0333 -6,-1.033333 z m 29.6,0.1 c -3.614148,3.3e-5 -6.574457,0.74148 -8.9,2.166666 -1.818222,1.157367 -3.923451,3.291388 -5.983333,5.883334 0.618278,0.658774 1.248369,1.377605 1.866666,2.133333 2.105562,-2.672257 4.262434,-4.836378 6.116667,-6.016667 2.325543,-1.425186 5.285852,-2.166633 8.9,-2.166666 4.242576,3.3e-5 7.769607,1.150858 10.566667,3.4 -0.570388,-0.722129 -1.227721,-1.382884 -2,-2 C 56.769607,22.417525 53.242576,21.2667 49,21.266667 Z m 8.866667,8.1 c 0.9092,1.305235 1.366619,2.857751 1.366666,4.666666 -6.5e-5,2.271461 -0.871584,4.285301 -2.6,6 -1.602834,1.603384 -3.957366,2.400012 -7.1,2.4 -2.653707,8e-6 -5.320858,-1.032242 -7.833333,-3.216666 3.136636,3.509305 6.469807,5.216676 9.833333,5.216666 3.142634,1.2e-5 5.497166,-0.796616 7.1,-2.4 1.728416,-1.714699 2.599935,-3.728539 2.6,-6 -6.5e-5,-2.49411 -0.871584,-4.496744 -2.6,-6.033333 -0.24943,-0.220921 -0.49262,-0.443723 -0.766666,-0.633333 z m -26.633334,4.966666 c -3.1113,5.344585 -7.247921,8.033345 -12.433333,8.033334 -2.58055,1e-5 -4.543473,-0.352086 -6.208333,-1.516667 0.348871,0.50642 0.590094,0.752276 1.075,1.183333 1.759888,1.558846 4.147753,2.333345 7.133333,2.333334 5.185412,1.1e-5 9.322033,-2.688749 12.433333,-8.033334 z m 4.933334,6.5 c -0.04103,0.05207 -0.09239,0.08182 -0.133334,0.133334 0.687326,0.744419 1.306949,1.359747 1.833334,1.8 -0.529404,-0.580895 -1.078447,-1.178283 -1.7,-1.933334 z" - style="font-style:normal;font-weight:normal;font-size:76.18933868px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;opacity:0.3;fill:#ccff00;fill-opacity:1;stroke:none;stroke-width:1.06666672" /> - <path - sodipodi:nodetypes="ccsccscccccccccccccccccccscscccccsccsccccccc" - id="text5058-0" - d="m 19.730474,21.54714 c -4.462645,3.3e-5 -8.026823,1.150859 -10.6666669,3.4 -2.9541429,2.538699 -4.433344,5.658826 -4.4333333,9.4 -1.07e-5,3.897099 1.4791904,7.039495 4.4333333,9.4 0.042837,0.03444 0.090155,0.06608 0.1333334,0.1 -2.2392086,-2.228193 -3.3666752,-5.040417 -3.3666667,-8.433333 -1.07e-5,-3.741174 1.4791904,-6.861301 4.4333332,-9.4 2.639844,-2.249141 6.204022,-3.399967 10.666667,-3.4 2.294137,3.3e-5 4.302916,0.365295 6,1.033333 1.870874,0.694455 3.42364,1.628367 4.733333,2.8 -0.314265,-0.308986 -0.652406,-0.582729 -0.966667,-0.866666 -1.351393,-1.269305 -2.986804,-2.265091 -4.966666,-3 -1.697084,-0.668039 -3.705863,-1.033301 -6,-1.033334 z m 29.6,0.1 c -3.614149,3.3e-5 -6.574457,0.741481 -8.9,2.166667 -1.813279,1.154221 -3.963039,3.235656 -6.016667,5.816667 0.355649,0.402628 0.711011,0.798625 1.066667,1.233333 2.105561,-2.672257 4.295767,-4.803044 6.15,-5.983333 2.325543,-1.425187 5.285851,-2.166634 8.9,-2.166667 4.22442,3.3e-5 7.742084,1.136734 10.533333,3.366667 -0.36096,-0.367566 -0.745726,-0.696967 -1.166667,-1.033334 -2.797059,-2.249141 -6.32409,-3.399967 -10.566666,-3.4 z m 8.233333,7.333334 c 1.323326,1.449243 1.999942,3.250987 2,5.433333 -6.5e-5,2.27146 -0.871584,4.2853 -2.6,6 -1.602834,1.603383 -3.957366,2.400012 -7.1,2.4 -2.406328,6e-6 -4.776468,-0.90386 -7.066667,-2.7 2.669147,2.483838 5.436929,3.766674 8.266667,3.766667 3.142634,1.1e-5 5.497166,-0.796617 7.1,-2.4 1.728416,-1.7147 2.599935,-3.72854 2.6,-6 -6.5e-5,-2.49411 -0.871584,-4.496745 -2.6,-6.033334 -0.185641,-0.164422 -0.400724,-0.319587 -0.6,-0.466666 z m -26,5.733333 c -3.1113,5.344584 -7.247921,8.033345 -12.433333,8.033333 -2.612382,1.1e-5 -4.759372,-0.60651 -6.433334,-1.8 0.166027,0.176488 0.313947,0.367942 0.5,0.533334 1.759888,1.558845 4.147754,2.333345 7.133334,2.333333 5.185412,1.2e-5 9.322033,-2.688749 12.433333,-8.033333 z m 4.133333,5.566667 c -0.04657,0.05909 -0.08689,0.108298 -0.133333,0.166666 1.038571,1.18897 1.9748,2.169945 2.7,2.766667 0.06249,0.05364 0.137426,0.08086 0.2,0.133333 -0.792178,-0.781249 -1.706288,-1.778539 -2.766667,-3.066666 z" - style="font-style:normal;font-weight:normal;font-size:76.18933868px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;opacity:0.6;fill:#ccff00;fill-opacity:1;stroke:none;stroke-width:1.06666672" - inkscape:connector-curvature="0" /> - </g> - </g> -</svg> diff --git a/application/package/ubuntu/multimc/opt/multimc/run.sh b/application/package/ubuntu/multimc/opt/multimc/run.sh deleted file mode 100755 index c493a513..00000000 --- a/application/package/ubuntu/multimc/opt/multimc/run.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash - -INSTDIR="${XDG_DATA_HOME-$HOME/.local/share}/multimc" - -if [ `getconf LONG_BIT` = "64" ] -then - PACKAGE="mmc-stable-lin64.tar.gz" -else - PACKAGE="mmc-stable-lin32.tar.gz" -fi - -deploy() { - mkdir -p $INSTDIR - cd ${INSTDIR} - - wget --progress=dot:force "https://files.multimc.org/downloads/${PACKAGE}" 2>&1 | sed -u 's/.* \([0-9]\+%\)\ \+\([0-9.]\+.\) \(.*\)/\1\n# Downloading at \2\/s, ETA \3/' | zenity --progress --auto-close --auto-kill --title="Downloading MultiMC..." - - tar -xzf ${PACKAGE} --transform='s,MultiMC/,,' - rm ${PACKAGE} - chmod +x MultiMC -} - -runmmc() { - cd ${INSTDIR} - ./MultiMC "$@" -} - -if [[ ! -f ${INSTDIR}/MultiMC ]]; then - deploy - runmmc "$@" -else - runmmc "$@" -fi diff --git a/application/package/ubuntu/multimc/usr/share/applications/multimc.desktop b/application/package/ubuntu/multimc/usr/share/applications/multimc.desktop deleted file mode 100755 index e0456f89..00000000 --- a/application/package/ubuntu/multimc/usr/share/applications/multimc.desktop +++ /dev/null @@ -1,16 +0,0 @@ -[Desktop Entry] -Categories=Game; -Exec=/opt/multimc/run.sh -Icon=/opt/multimc/icon.svg -Keywords=game;Minecraft; -MimeType= -Name=MultiMC 5 -Path= -StartupNotify=true -Terminal=false -TerminalOptions= -Type=Application -X-DBUS-ServiceName= -X-DBUS-StartupType= -X-KDE-SubstituteUID=false -X-KDE-Username= diff --git a/application/package/ubuntu/multimc/usr/share/metainfo/multimc.metainfo.xml b/application/package/ubuntu/multimc/usr/share/metainfo/multimc.metainfo.xml deleted file mode 100644 index 4c6b7450..00000000 --- a/application/package/ubuntu/multimc/usr/share/metainfo/multimc.metainfo.xml +++ /dev/null @@ -1,54 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<component type="desktop"> - <id>multimc</id> - <launchable type="desktop-id">multimc.desktop</launchable> - <name>MultiMC</name> - <summary>Manage Minecraft instances with ease</summary> - <description> - <p>Overview</p> - <p>MultiMC is a free, open source launcher for Minecraft. It allows you to have multiple, cleanly separated instances of Minecraft (each with their own mods, texture packs, saves, etc) and helps you manage them and their associated options with a simple and powerful interface.</p> - <p>Features</p> - <ul> - <li>Manage multiple instances of Minecraft at once</li> - <li>Start Minecraft with a custom resolution</li> - <li>Change Java's runtime options (including memory options)</li> - <li>Shows Minecraft's console output in a colour coded window</li> - <li>Kill Minecraft easily if it crashes / freezes</li> - <li>Custom icons and groups for instances</li> - <li>Forge integration (automatic installation, version downloads, mod management)</li> - <li>Minecraft world management</li> - <li>Import and export Minecraft instances to share them with anyone</li> - <li>Supports every version of Minecraft that the vanilla launcher does</li> - </ul> - </description> - <screenshots> - <screenshot type="default"> - <image type="source" width="936" height="921">https://multimc.org/images/screenshots/main.png</image> - </screenshot> - <screenshot> - <image type="source" width="936" height="998">https://multimc.org/images/screenshots/editmods.png</image> - </screenshot> - <screenshot> - <image type="source" width="936" height="998">https://multimc.org/images/screenshots/version.png</image> - </screenshot> - <screenshot> - <image type="source" width="936" height="998">https://multimc.org/images/screenshots/console.png</image> - </screenshot> - <screenshot> - <image type="source" width="936" height="921">https://multimc.org/images/screenshots/settings.png</image> - </screenshot> - </screenshots> - <releases> - <release date="2021-01-07" version="5"/> - </releases> - <url type="homepage">https://multimc.org/</url> - <url type="help">https://discord.com/invite/0k2zsXGNHs0fE4Wm</url> - <url type="faq">https://github.com/MultiMC/MultiMC5/wiki/FAQ</url> - <url type="bugtracker">https://github.com/MultiMC/MultiMC5/issues</url> - <url type="translate">https://translate.multimc.org/</url> - <url type="donation">https://www.patreon.com/multimc</url> - <developer_name>The MultiMC Team</developer_name> - <metadata_license>CC0-1.0</metadata_license> - <project_license>Apache-2.0</project_license> - <update_contact>peterix_at_gmail.com</update_contact> -</component> diff --git a/application/pagedialog/PageDialog.cpp b/application/pagedialog/PageDialog.cpp deleted file mode 100644 index fd5d36d4..00000000 --- a/application/pagedialog/PageDialog.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "PageDialog.h" - -#include <QDialogButtonBox> -#include <QPushButton> -#include <QVBoxLayout> -#include <QKeyEvent> - -#include "MultiMC.h" -#include "settings/SettingsObject.h" -#include "widgets/IconLabel.h" -#include "widgets/PageContainer.h" - -PageDialog::PageDialog(BasePageProvider *pageProvider, QString defaultId, QWidget *parent) - : QDialog(parent) -{ - setWindowTitle(pageProvider->dialogTitle()); - m_container = new PageContainer(pageProvider, defaultId, this); - - QVBoxLayout *mainLayout = new QVBoxLayout; - mainLayout->addWidget(m_container); - mainLayout->setSpacing(0); - mainLayout->setContentsMargins(0, 0, 0, 0); - setLayout(mainLayout); - - QDialogButtonBox *buttons = new QDialogButtonBox(QDialogButtonBox::Help | QDialogButtonBox::Close); - buttons->button(QDialogButtonBox::Close)->setDefault(true); - buttons->setContentsMargins(6, 0, 6, 0); - m_container->addButtons(buttons); - - connect(buttons->button(QDialogButtonBox::Close), SIGNAL(clicked()), this, SLOT(close())); - connect(buttons->button(QDialogButtonBox::Help), SIGNAL(clicked()), m_container, SLOT(help())); - - restoreGeometry(QByteArray::fromBase64(MMC->settings()->get("PagedGeometry").toByteArray())); -} - -void PageDialog::closeEvent(QCloseEvent *event) -{ - qDebug() << "Paged dialog close requested"; - if (m_container->prepareToClose()) - { - qDebug() << "Paged dialog close approved"; - MMC->settings()->set("PagedGeometry", saveGeometry().toBase64()); - qDebug() << "Paged dialog geometry saved"; - QDialog::closeEvent(event); - } -} diff --git a/application/pagedialog/PageDialog.h b/application/pagedialog/PageDialog.h deleted file mode 100644 index 1029bc30..00000000 --- a/application/pagedialog/PageDialog.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QDialog> -#include "pages/BasePageProvider.h" - -class PageContainer; -class PageDialog : public QDialog -{ - Q_OBJECT -public: - explicit PageDialog(BasePageProvider *pageProvider, QString defaultId = QString(), QWidget *parent = 0); - virtual ~PageDialog() {} - -private -slots: - virtual void closeEvent(QCloseEvent *event); - -private: - PageContainer * m_container; -}; diff --git a/application/pages/BasePage.h b/application/pages/BasePage.h deleted file mode 100644 index 408965d0..00000000 --- a/application/pages/BasePage.h +++ /dev/null @@ -1,58 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QString> -#include <QIcon> -#include <memory> - -#include "BasePageContainer.h" - -class BasePage -{ -public: - virtual ~BasePage() {} - virtual QString id() const = 0; - virtual QString displayName() const = 0; - virtual QIcon icon() const = 0; - virtual bool apply() { return true; } - virtual bool shouldDisplay() const { return true; } - virtual QString helpPage() const { return QString(); } - void opened() - { - isOpened = true; - openedImpl(); - } - void closed() - { - isOpened = false; - closedImpl(); - } - virtual void openedImpl() {} - virtual void closedImpl() {} - virtual void setParentContainer(BasePageContainer * container) - { - m_container = container; - }; -public: - int stackIndex = -1; - int listIndex = -1; -protected: - BasePageContainer * m_container = nullptr; - bool isOpened = false; -}; - -typedef std::shared_ptr<BasePage> BasePagePtr; diff --git a/application/pages/BasePageContainer.h b/application/pages/BasePageContainer.h deleted file mode 100644 index f8c7adeb..00000000 --- a/application/pages/BasePageContainer.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -class BasePageContainer -{ -public: - virtual ~BasePageContainer(){}; - virtual bool selectPage(QString pageId) = 0; - virtual void refreshContainer() = 0; - virtual bool requestClose() = 0; -}; diff --git a/application/pages/BasePageProvider.h b/application/pages/BasePageProvider.h deleted file mode 100644 index 7bfaaf3b..00000000 --- a/application/pages/BasePageProvider.h +++ /dev/null @@ -1,68 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "pages/BasePage.h" -#include <memory> -#include <functional> - -class BasePageProvider -{ -public: - virtual QList<BasePage *> getPages() = 0; - virtual QString dialogTitle() = 0; -}; - -class GenericPageProvider : public BasePageProvider -{ - typedef std::function<BasePage *()> PageCreator; -public: - explicit GenericPageProvider(const QString &dialogTitle) - : m_dialogTitle(dialogTitle) - { - } - virtual ~GenericPageProvider() {} - - QList<BasePage *> getPages() override - { - QList<BasePage *> pages; - for (PageCreator creator : m_creators) - { - pages.append(creator()); - } - return pages; - } - QString dialogTitle() override { return m_dialogTitle; } - - void setDialogTitle(const QString &title) - { - m_dialogTitle = title; - } - void addPageCreator(PageCreator page) - { - m_creators.append(page); - } - - template<typename PageClass> - void addPage() - { - addPageCreator([](){return new PageClass();}); - } - -private: - QList<PageCreator> m_creators; - QString m_dialogTitle; -}; diff --git a/application/pages/global/AccountListPage.cpp b/application/pages/global/AccountListPage.cpp deleted file mode 100644 index ff3736ed..00000000 --- a/application/pages/global/AccountListPage.cpp +++ /dev/null @@ -1,217 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "AccountListPage.h" -#include "ui_AccountListPage.h" - -#include <QItemSelectionModel> -#include <QMenu> - -#include <QDebug> - -#include "net/NetJob.h" -#include "Env.h" - -#include "dialogs/ProgressDialog.h" -#include "dialogs/LoginDialog.h" -#include "dialogs/CustomMessageBox.h" -#include "dialogs/SkinUploadDialog.h" -#include "tasks/Task.h" -#include "minecraft/auth/YggdrasilTask.h" -#include "minecraft/services/SkinDelete.h" - -#include "MultiMC.h" - -#include "BuildConfig.h" - -AccountListPage::AccountListPage(QWidget *parent) - : QMainWindow(parent), ui(new Ui::AccountListPage) -{ - ui->setupUi(this); - ui->listView->setEmptyString(tr( - "Welcome!\n" - "If you're new here, you can click the \"Add\" button to add your Mojang or Minecraft account." - )); - ui->listView->setEmptyMode(VersionListView::String); - ui->listView->setContextMenuPolicy(Qt::CustomContextMenu); - - m_accounts = MMC->accounts(); - - ui->listView->setModel(m_accounts.get()); - ui->listView->header()->setSectionResizeMode(QHeaderView::ResizeToContents); - ui->listView->setSelectionMode(QAbstractItemView::SingleSelection); - - // Expand the account column - ui->listView->header()->setSectionResizeMode(1, QHeaderView::Stretch); - - QItemSelectionModel *selectionModel = ui->listView->selectionModel(); - - connect(selectionModel, &QItemSelectionModel::selectionChanged, [this](const QItemSelection &sel, const QItemSelection &dsel) { - updateButtonStates(); - }); - connect(ui->listView, &VersionListView::customContextMenuRequested, this, &AccountListPage::ShowContextMenu); - - connect(m_accounts.get(), SIGNAL(listChanged()), SLOT(listChanged())); - connect(m_accounts.get(), SIGNAL(activeAccountChanged()), SLOT(listChanged())); - - updateButtonStates(); -} - -AccountListPage::~AccountListPage() -{ - delete ui; -} - -void AccountListPage::ShowContextMenu(const QPoint& pos) -{ - auto menu = ui->toolBar->createContextMenu(this, tr("Context menu")); - menu->exec(ui->listView->mapToGlobal(pos)); - delete menu; -} - -void AccountListPage::changeEvent(QEvent* event) -{ - if (event->type() == QEvent::LanguageChange) - { - ui->retranslateUi(this); - } - QMainWindow::changeEvent(event); -} - -QMenu * AccountListPage::createPopupMenu() -{ - QMenu* filteredMenu = QMainWindow::createPopupMenu(); - filteredMenu->removeAction(ui->toolBar->toggleViewAction() ); - return filteredMenu; -} - - -void AccountListPage::listChanged() -{ - updateButtonStates(); -} - -void AccountListPage::on_actionAdd_triggered() -{ - addAccount(tr("Please enter your Minecraft account email and password to add your account.")); -} - -void AccountListPage::on_actionRemove_triggered() -{ - QModelIndexList selection = ui->listView->selectionModel()->selectedIndexes(); - if (selection.size() > 0) - { - QModelIndex selected = selection.first(); - m_accounts->removeAccount(selected); - } -} - -void AccountListPage::on_actionSetDefault_triggered() -{ - QModelIndexList selection = ui->listView->selectionModel()->selectedIndexes(); - if (selection.size() > 0) - { - QModelIndex selected = selection.first(); - MojangAccountPtr account = - selected.data(MojangAccountList::PointerRole).value<MojangAccountPtr>(); - m_accounts->setActiveAccount(account->username()); - } -} - -void AccountListPage::on_actionNoDefault_triggered() -{ - m_accounts->setActiveAccount(""); -} - -void AccountListPage::updateButtonStates() -{ - // If there is no selection, disable buttons that require something selected. - QModelIndexList selection = ui->listView->selectionModel()->selectedIndexes(); - - ui->actionRemove->setEnabled(selection.size() > 0); - ui->actionSetDefault->setEnabled(selection.size() > 0); - ui->actionUploadSkin->setEnabled(selection.size() > 0); - ui->actionDeleteSkin->setEnabled(selection.size() > 0); - - if(m_accounts->activeAccount().get() == nullptr) { - ui->actionNoDefault->setEnabled(false); - ui->actionNoDefault->setChecked(true); - } - else { - ui->actionNoDefault->setEnabled(true); - ui->actionNoDefault->setChecked(false); - } - -} - -void AccountListPage::addAccount(const QString &errMsg) -{ - // TODO: The login dialog isn't quite done yet - MojangAccountPtr account = LoginDialog::newAccount(this, errMsg); - - if (account != nullptr) - { - m_accounts->addAccount(account); - if (m_accounts->count() == 1) - m_accounts->setActiveAccount(account->username()); - - // Grab associated player skins - auto job = new NetJob("Player skins: " + account->username()); - - for (AccountProfile profile : account->profiles()) - { - auto meta = Env::getInstance().metacache()->resolveEntry("skins", profile.id + ".png"); - auto action = Net::Download::makeCached(QUrl(BuildConfig.SKINS_BASE + profile.id + ".png"), meta); - job->addNetAction(action); - meta->setStale(true); - } - - job->start(); - } -} - -void AccountListPage::on_actionUploadSkin_triggered() -{ - QModelIndexList selection = ui->listView->selectionModel()->selectedIndexes(); - if (selection.size() > 0) - { - QModelIndex selected = selection.first(); - MojangAccountPtr account = selected.data(MojangAccountList::PointerRole).value<MojangAccountPtr>(); - SkinUploadDialog dialog(account, this); - dialog.exec(); - } -} - -void AccountListPage::on_actionDeleteSkin_triggered() -{ - QModelIndexList selection = ui->listView->selectionModel()->selectedIndexes(); - if (selection.size() <= 0) - return; - - QModelIndex selected = selection.first(); - AuthSessionPtr session = std::make_shared<AuthSession>(); - MojangAccountPtr account = selected.data(MojangAccountList::PointerRole).value<MojangAccountPtr>(); - auto login = account->login(session); - ProgressDialog prog(this); - if (prog.execWithTask((Task*)login.get()) != QDialog::Accepted) { - CustomMessageBox::selectable(this, tr("Skin Delete"), tr("Failed to login!"), QMessageBox::Warning)->exec(); - return; - } - auto deleteSkinTask = std::make_shared<SkinDelete>(this, session); - if (prog.execWithTask((Task*)deleteSkinTask.get()) != QDialog::Accepted) { - CustomMessageBox::selectable(this, tr("Skin Delete"), tr("Failed to delete current skin!"), QMessageBox::Warning)->exec(); - return; - } -} diff --git a/application/pages/global/AccountListPage.h b/application/pages/global/AccountListPage.h deleted file mode 100644 index fba1833f..00000000 --- a/application/pages/global/AccountListPage.h +++ /dev/null @@ -1,84 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QMainWindow> -#include <memory> - -#include "pages/BasePage.h" - -#include "minecraft/auth/MojangAccountList.h" -#include "MultiMC.h" - -namespace Ui -{ -class AccountListPage; -} - -class AuthenticateTask; - -class AccountListPage : public QMainWindow, public BasePage -{ - Q_OBJECT -public: - explicit AccountListPage(QWidget *parent = 0); - ~AccountListPage(); - - QString displayName() const override - { - return tr("Accounts"); - } - QIcon icon() const override - { - auto icon = MMC->getThemedIcon("accounts"); - if(icon.isNull()) - { - icon = MMC->getThemedIcon("noaccount"); - } - return icon; - } - QString id() const override - { - return "accounts"; - } - QString helpPage() const override - { - return "Getting-Started#adding-an-account"; - } - -public slots: - void on_actionAdd_triggered(); - void on_actionRemove_triggered(); - void on_actionSetDefault_triggered(); - void on_actionNoDefault_triggered(); - void on_actionUploadSkin_triggered(); - void on_actionDeleteSkin_triggered(); - - void listChanged(); - - //! Updates the states of the dialog's buttons. - void updateButtonStates(); - -protected slots: - void ShowContextMenu(const QPoint &pos); - void addAccount(const QString& errMsg=""); - -private: - void changeEvent(QEvent * event) override; - QMenu * createPopupMenu() override; - std::shared_ptr<MojangAccountList> m_accounts; - Ui::AccountListPage *ui; -}; diff --git a/application/pages/global/AccountListPage.ui b/application/pages/global/AccountListPage.ui deleted file mode 100644 index 71647db3..00000000 --- a/application/pages/global/AccountListPage.ui +++ /dev/null @@ -1,98 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>AccountListPage</class> - <widget class="QMainWindow" name="AccountListPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>800</width> - <height>600</height> - </rect> - </property> - <widget class="QWidget" name="centralwidget"> - <layout class="QHBoxLayout" name="horizontalLayout"> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <widget class="VersionListView" name="listView"/> - </item> - </layout> - </widget> - <widget class="WideBar" name="toolBar"> - <attribute name="toolBarArea"> - <enum>RightToolBarArea</enum> - </attribute> - <attribute name="toolBarBreak"> - <bool>false</bool> - </attribute> - <addaction name="actionAdd"/> - <addaction name="actionRemove"/> - <addaction name="actionSetDefault"/> - <addaction name="actionNoDefault"/> - <addaction name="separator"/> - <addaction name="actionUploadSkin"/> - <addaction name="actionDeleteSkin"/> - </widget> - <action name="actionAdd"> - <property name="text"> - <string>Add</string> - </property> - </action> - <action name="actionRemove"> - <property name="text"> - <string>Remove</string> - </property> - </action> - <action name="actionSetDefault"> - <property name="text"> - <string>Set Default</string> - </property> - </action> - <action name="actionNoDefault"> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="text"> - <string>No Default</string> - </property> - </action> - <action name="actionUploadSkin"> - <property name="text"> - <string>Upload Skin</string> - </property> - </action> - <action name="actionDeleteSkin"> - <property name="text"> - <string>Delete Skin</string> - </property> - <property name="toolTip"> - <string>Delete the currently active skin and go back to the default one</string> - </property> - </action> - </widget> - <customwidgets> - <customwidget> - <class>VersionListView</class> - <extends>QTreeView</extends> - <header>widgets/VersionListView.h</header> - </customwidget> - <customwidget> - <class>WideBar</class> - <extends>QToolBar</extends> - <header>widgets/WideBar.h</header> - </customwidget> - </customwidgets> - <resources/> - <connections/> -</ui> diff --git a/application/pages/global/CustomCommandsPage.cpp b/application/pages/global/CustomCommandsPage.cpp deleted file mode 100644 index 3b182319..00000000 --- a/application/pages/global/CustomCommandsPage.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include "CustomCommandsPage.h" -#include <QVBoxLayout> -#include <QTabWidget> -#include <QTabBar> - -CustomCommandsPage::CustomCommandsPage(QWidget* parent): QWidget(parent) -{ - - auto verticalLayout = new QVBoxLayout(this); - verticalLayout->setObjectName(QStringLiteral("verticalLayout")); - verticalLayout->setContentsMargins(0, 0, 0, 0); - - auto tabWidget = new QTabWidget(this); - tabWidget->setObjectName(QStringLiteral("tabWidget")); - commands = new CustomCommands(this); - commands->setContentsMargins(6, 6, 6, 6); - tabWidget->addTab(commands, "Foo"); - tabWidget->tabBar()->hide(); - verticalLayout->addWidget(tabWidget); - loadSettings(); -} - -CustomCommandsPage::~CustomCommandsPage() -{ -} - -bool CustomCommandsPage::apply() -{ - applySettings(); - return true; -} - -void CustomCommandsPage::applySettings() -{ - auto s = MMC->settings(); - s->set("PreLaunchCommand", commands->prelaunchCommand()); - s->set("WrapperCommand", commands->wrapperCommand()); - s->set("PostExitCommand", commands->postexitCommand()); -} - -void CustomCommandsPage::loadSettings() -{ - auto s = MMC->settings(); - commands->initialize( - false, - true, - s->get("PreLaunchCommand").toString(), - s->get("WrapperCommand").toString(), - s->get("PostExitCommand").toString() - ); -} diff --git a/application/pages/global/CustomCommandsPage.h b/application/pages/global/CustomCommandsPage.h deleted file mode 100644 index 414c3259..00000000 --- a/application/pages/global/CustomCommandsPage.h +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright 2018-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <memory> -#include <QDialog> - -#include "pages/BasePage.h" -#include <MultiMC.h> -#include "widgets/CustomCommands.h" - -class CustomCommandsPage : public QWidget, public BasePage -{ - Q_OBJECT - -public: - explicit CustomCommandsPage(QWidget *parent = 0); - ~CustomCommandsPage(); - - QString displayName() const override - { - return tr("Custom Commands"); - } - QIcon icon() const override - { - return MMC->getThemedIcon("custom-commands"); - } - QString id() const override - { - return "custom-commands"; - } - QString helpPage() const override - { - return "Custom-commands"; - } - bool apply() override; - -private: - void applySettings(); - void loadSettings(); - CustomCommands * commands; -}; diff --git a/application/pages/global/ExternalToolsPage.cpp b/application/pages/global/ExternalToolsPage.cpp deleted file mode 100644 index 6a0a38be..00000000 --- a/application/pages/global/ExternalToolsPage.cpp +++ /dev/null @@ -1,233 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "ExternalToolsPage.h" -#include "ui_ExternalToolsPage.h" - -#include <QMessageBox> -#include <QFileDialog> -#include <QStandardPaths> -#include <QTabBar> - -#include "settings/SettingsObject.h" -#include "tools/BaseProfiler.h" -#include <FileSystem.h> -#include "MultiMC.h" -#include <tools/MCEditTool.h> - -ExternalToolsPage::ExternalToolsPage(QWidget *parent) : - QWidget(parent), - ui(new Ui::ExternalToolsPage) -{ - ui->setupUi(this); - ui->tabWidget->tabBar()->hide(); - - #if QT_VERSION >= QT_VERSION_CHECK(5, 2, 0) - ui->jsonEditorTextBox->setClearButtonEnabled(true); - #endif - - ui->mceditLink->setOpenExternalLinks(true); - ui->jvisualvmLink->setOpenExternalLinks(true); - ui->jprofilerLink->setOpenExternalLinks(true); - loadSettings(); -} - -ExternalToolsPage::~ExternalToolsPage() -{ - delete ui; -} - -void ExternalToolsPage::loadSettings() -{ - auto s = MMC->settings(); - ui->jprofilerPathEdit->setText(s->get("JProfilerPath").toString()); - ui->jvisualvmPathEdit->setText(s->get("JVisualVMPath").toString()); - ui->mceditPathEdit->setText(s->get("MCEditPath").toString()); - - // Editors - ui->jsonEditorTextBox->setText(s->get("JsonEditor").toString()); -} -void ExternalToolsPage::applySettings() -{ - auto s = MMC->settings(); - - s->set("JProfilerPath", ui->jprofilerPathEdit->text()); - s->set("JVisualVMPath", ui->jvisualvmPathEdit->text()); - s->set("MCEditPath", ui->mceditPathEdit->text()); - - // Editors - QString jsonEditor = ui->jsonEditorTextBox->text(); - if (!jsonEditor.isEmpty() && - (!QFileInfo(jsonEditor).exists() || !QFileInfo(jsonEditor).isExecutable())) - { - QString found = QStandardPaths::findExecutable(jsonEditor); - if (!found.isEmpty()) - { - jsonEditor = found; - } - } - s->set("JsonEditor", jsonEditor); -} - -void ExternalToolsPage::on_jprofilerPathBtn_clicked() -{ - QString raw_dir = ui->jprofilerPathEdit->text(); - QString error; - do - { - raw_dir = QFileDialog::getExistingDirectory(this, tr("JProfiler Folder"), raw_dir); - if (raw_dir.isEmpty()) - { - break; - } - QString cooked_dir = FS::NormalizePath(raw_dir); - if (!MMC->profilers()["jprofiler"]->check(cooked_dir, &error)) - { - QMessageBox::critical(this, tr("Error"), tr("Error while checking JProfiler install:\n%1").arg(error)); - continue; - } - else - { - ui->jprofilerPathEdit->setText(cooked_dir); - break; - } - } while (1); -} -void ExternalToolsPage::on_jprofilerCheckBtn_clicked() -{ - QString error; - if (!MMC->profilers()["jprofiler"]->check(ui->jprofilerPathEdit->text(), &error)) - { - QMessageBox::critical(this, tr("Error"), tr("Error while checking JProfiler install:\n%1").arg(error)); - } - else - { - QMessageBox::information(this, tr("OK"), tr("JProfiler setup seems to be OK")); - } -} - -void ExternalToolsPage::on_jvisualvmPathBtn_clicked() -{ - QString raw_dir = ui->jvisualvmPathEdit->text(); - QString error; - do - { - raw_dir = QFileDialog::getOpenFileName(this, tr("JVisualVM Executable"), raw_dir); - if (raw_dir.isEmpty()) - { - break; - } - QString cooked_dir = FS::NormalizePath(raw_dir); - if (!MMC->profilers()["jvisualvm"]->check(cooked_dir, &error)) - { - QMessageBox::critical(this, tr("Error"), tr("Error while checking JVisualVM install:\n%1").arg(error)); - continue; - } - else - { - ui->jvisualvmPathEdit->setText(cooked_dir); - break; - } - } while (1); -} -void ExternalToolsPage::on_jvisualvmCheckBtn_clicked() -{ - QString error; - if (!MMC->profilers()["jvisualvm"]->check(ui->jvisualvmPathEdit->text(), &error)) - { - QMessageBox::critical(this, tr("Error"), tr("Error while checking JVisualVM install:\n%1").arg(error)); - } - else - { - QMessageBox::information(this, tr("OK"), tr("JVisualVM setup seems to be OK")); - } -} - -void ExternalToolsPage::on_mceditPathBtn_clicked() -{ - QString raw_dir = ui->mceditPathEdit->text(); - QString error; - do - { -#ifdef Q_OS_OSX - raw_dir = QFileDialog::getOpenFileName(this, tr("MCEdit Application"), raw_dir); -#else - raw_dir = QFileDialog::getExistingDirectory(this, tr("MCEdit Folder"), raw_dir); -#endif - if (raw_dir.isEmpty()) - { - break; - } - QString cooked_dir = FS::NormalizePath(raw_dir); - if (!MMC->mcedit()->check(cooked_dir, error)) - { - QMessageBox::critical(this, tr("Error"), tr("Error while checking MCEdit install:\n%1").arg(error)); - continue; - } - else - { - ui->mceditPathEdit->setText(cooked_dir); - break; - } - } while (1); -} -void ExternalToolsPage::on_mceditCheckBtn_clicked() -{ - QString error; - if (!MMC->mcedit()->check(ui->mceditPathEdit->text(), error)) - { - QMessageBox::critical(this, tr("Error"), tr("Error while checking MCEdit install:\n%1").arg(error)); - } - else - { - QMessageBox::information(this, tr("OK"), tr("MCEdit setup seems to be OK")); - } -} - -void ExternalToolsPage::on_jsonEditorBrowseBtn_clicked() -{ - QString raw_file = QFileDialog::getOpenFileName( - this, tr("JSON Editor"), - ui->jsonEditorTextBox->text().isEmpty() -#if defined(Q_OS_LINUX) - ? QString("/usr/bin") -#else - ? QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation).first() -#endif - : ui->jsonEditorTextBox->text()); - - if (raw_file.isEmpty()) - { - return; - } - QString cooked_file = FS::NormalizePath(raw_file); - - // it has to exist and be an executable - if (QFileInfo(cooked_file).exists() && QFileInfo(cooked_file).isExecutable()) - { - ui->jsonEditorTextBox->setText(cooked_file); - } - else - { - QMessageBox::warning(this, tr("Invalid"), - tr("The file chosen does not seem to be an executable")); - } -} - -bool ExternalToolsPage::apply() -{ - applySettings(); - return true; -} diff --git a/application/pages/global/ExternalToolsPage.h b/application/pages/global/ExternalToolsPage.h deleted file mode 100644 index 0fc8ebe1..00000000 --- a/application/pages/global/ExternalToolsPage.h +++ /dev/null @@ -1,74 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QWidget> - -#include "pages/BasePage.h" -#include <MultiMC.h> - -namespace Ui { -class ExternalToolsPage; -} - -class ExternalToolsPage : public QWidget, public BasePage -{ - Q_OBJECT - -public: - explicit ExternalToolsPage(QWidget *parent = 0); - ~ExternalToolsPage(); - - QString displayName() const override - { - return tr("External Tools"); - } - QIcon icon() const override - { - auto icon = MMC->getThemedIcon("externaltools"); - if(icon.isNull()) - { - icon = MMC->getThemedIcon("loadermods"); - } - return icon; - } - QString id() const override - { - return "external-tools"; - } - QString helpPage() const override - { - return "Tools"; - } - virtual bool apply() override; - -private: - void loadSettings(); - void applySettings(); - -private: - Ui::ExternalToolsPage *ui; - -private -slots: - void on_jprofilerPathBtn_clicked(); - void on_jprofilerCheckBtn_clicked(); - void on_jvisualvmPathBtn_clicked(); - void on_jvisualvmCheckBtn_clicked(); - void on_mceditPathBtn_clicked(); - void on_mceditCheckBtn_clicked(); - void on_jsonEditorBrowseBtn_clicked(); -}; diff --git a/application/pages/global/ExternalToolsPage.ui b/application/pages/global/ExternalToolsPage.ui deleted file mode 100644 index e79e9388..00000000 --- a/application/pages/global/ExternalToolsPage.ui +++ /dev/null @@ -1,194 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>ExternalToolsPage</class> - <widget class="QWidget" name="ExternalToolsPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>673</width> - <height>751</height> - </rect> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <widget class="QTabWidget" name="tabWidget"> - <property name="currentIndex"> - <number>0</number> - </property> - <widget class="QWidget" name="tab"> - <attribute name="title"> - <string notr="true">Tab 1</string> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QGroupBox" name="groupBox_2"> - <property name="title"> - <string notr="true">JProfiler</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_10"> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_4"> - <item> - <widget class="QLineEdit" name="jprofilerPathEdit"/> - </item> - <item> - <widget class="QPushButton" name="jprofilerPathBtn"> - <property name="text"> - <string notr="true">...</string> - </property> - </widget> - </item> - </layout> - </item> - <item> - <widget class="QPushButton" name="jprofilerCheckBtn"> - <property name="text"> - <string>Check</string> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="jprofilerLink"> - <property name="text"> - <string notr="true"><html><head/><body><p><a href="https://www.ej-technologies.com/products/jprofiler/overview.html">https://www.ej-technologies.com/products/jprofiler/overview.html</a></p></body></html></string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_3"> - <property name="title"> - <string notr="true">JVisualVM</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_11"> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_5"> - <item> - <widget class="QLineEdit" name="jvisualvmPathEdit"/> - </item> - <item> - <widget class="QPushButton" name="jvisualvmPathBtn"> - <property name="text"> - <string notr="true">...</string> - </property> - </widget> - </item> - </layout> - </item> - <item> - <widget class="QPushButton" name="jvisualvmCheckBtn"> - <property name="text"> - <string>Check</string> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="jvisualvmLink"> - <property name="text"> - <string notr="true"><html><head/><body><p><a href="https://visualvm.github.io/">https://visualvm.github.io/</a></p></body></html></string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_4"> - <property name="title"> - <string notr="true">MCEdit</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_12"> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_6"> - <item> - <widget class="QLineEdit" name="mceditPathEdit"/> - </item> - <item> - <widget class="QPushButton" name="mceditPathBtn"> - <property name="text"> - <string notr="true">...</string> - </property> - </widget> - </item> - </layout> - </item> - <item> - <widget class="QPushButton" name="mceditCheckBtn"> - <property name="text"> - <string>Check</string> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="mceditLink"> - <property name="text"> - <string notr="true"><html><head/><body><p><a href="https://www.mcedit.net/">https://www.mcedit.net/</a></p></body></html></string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="editorsBox"> - <property name="title"> - <string>External Editors (leave empty for system default)</string> - </property> - <layout class="QGridLayout" name="foldersBoxLayout_2"> - <item row="0" column="1"> - <widget class="QLineEdit" name="jsonEditorTextBox"/> - </item> - <item row="0" column="0"> - <widget class="QLabel" name="labelJsonEditor"> - <property name="text"> - <string>Text Editor:</string> - </property> - </widget> - </item> - <item row="0" column="2"> - <widget class="QToolButton" name="jsonEditorBrowseBtn"> - <property name="text"> - <string notr="true">...</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>216</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/application/pages/global/JavaPage.cpp b/application/pages/global/JavaPage.cpp deleted file mode 100644 index cde0e035..00000000 --- a/application/pages/global/JavaPage.cpp +++ /dev/null @@ -1,153 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "JavaPage.h" -#include "JavaCommon.h" -#include "ui_JavaPage.h" - -#include <QFileDialog> -#include <QMessageBox> -#include <QDir> -#include <QTabBar> - -#include "dialogs/VersionSelectDialog.h" - -#include "java/JavaUtils.h" -#include "java/JavaInstallList.h" - -#include "settings/SettingsObject.h" -#include <FileSystem.h> -#include "MultiMC.h" -#include <sys.h> - -JavaPage::JavaPage(QWidget *parent) : QWidget(parent), ui(new Ui::JavaPage) -{ - ui->setupUi(this); - ui->tabWidget->tabBar()->hide(); - - auto sysMiB = Sys::getSystemRam() / Sys::mebibyte; - ui->maxMemSpinBox->setMaximum(sysMiB); - loadSettings(); -} - -JavaPage::~JavaPage() -{ - delete ui; -} - -bool JavaPage::apply() -{ - applySettings(); - return true; -} - -void JavaPage::applySettings() -{ - auto s = MMC->settings(); - - // Memory - int min = ui->minMemSpinBox->value(); - int max = ui->maxMemSpinBox->value(); - if(min < max) - { - s->set("MinMemAlloc", min); - s->set("MaxMemAlloc", max); - } - else - { - s->set("MinMemAlloc", max); - s->set("MaxMemAlloc", min); - } - s->set("PermGen", ui->permGenSpinBox->value()); - - // Java Settings - s->set("JavaPath", ui->javaPathTextBox->text()); - s->set("JvmArgs", ui->jvmArgsTextBox->text()); - JavaCommon::checkJVMArgs(s->get("JvmArgs").toString(), this->parentWidget()); -} -void JavaPage::loadSettings() -{ - auto s = MMC->settings(); - // Memory - int min = s->get("MinMemAlloc").toInt(); - int max = s->get("MaxMemAlloc").toInt(); - if(min < max) - { - ui->minMemSpinBox->setValue(min); - ui->maxMemSpinBox->setValue(max); - } - else - { - ui->minMemSpinBox->setValue(max); - ui->maxMemSpinBox->setValue(min); - } - ui->permGenSpinBox->setValue(s->get("PermGen").toInt()); - - // Java Settings - ui->javaPathTextBox->setText(s->get("JavaPath").toString()); - ui->jvmArgsTextBox->setText(s->get("JvmArgs").toString()); -} - -void JavaPage::on_javaDetectBtn_clicked() -{ - JavaInstallPtr java; - - VersionSelectDialog vselect(MMC->javalist().get(), tr("Select a Java version"), this, true); - vselect.setResizeOn(2); - vselect.exec(); - - if (vselect.result() == QDialog::Accepted && vselect.selectedVersion()) - { - java = std::dynamic_pointer_cast<JavaInstall>(vselect.selectedVersion()); - ui->javaPathTextBox->setText(java->path); - } -} - -void JavaPage::on_javaBrowseBtn_clicked() -{ - QString raw_path = QFileDialog::getOpenFileName(this, tr("Find Java executable")); - - // do not allow current dir - it's dirty. Do not allow dirs that don't exist - if(raw_path.isEmpty()) - { - return; - } - - QString cooked_path = FS::NormalizePath(raw_path); - QFileInfo javaInfo(cooked_path);; - if(!javaInfo.exists() || !javaInfo.isExecutable()) - { - return; - } - ui->javaPathTextBox->setText(cooked_path); -} - -void JavaPage::on_javaTestBtn_clicked() -{ - if(checker) - { - return; - } - checker.reset(new JavaCommon::TestCheck( - this, ui->javaPathTextBox->text(), ui->jvmArgsTextBox->text(), - ui->minMemSpinBox->value(), ui->maxMemSpinBox->value(), ui->permGenSpinBox->value())); - connect(checker.get(), SIGNAL(finished()), SLOT(checkerFinished())); - checker->run(); -} - -void JavaPage::checkerFinished() -{ - checker.reset(); -} diff --git a/application/pages/global/JavaPage.h b/application/pages/global/JavaPage.h deleted file mode 100644 index 832f460b..00000000 --- a/application/pages/global/JavaPage.h +++ /dev/null @@ -1,72 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <memory> -#include <QDialog> -#include "pages/BasePage.h" -#include "JavaCommon.h" -#include <MultiMC.h> -#include <QObjectPtr.h> - -class SettingsObject; - -namespace Ui -{ -class JavaPage; -} - -class JavaPage : public QWidget, public BasePage -{ - Q_OBJECT - -public: - explicit JavaPage(QWidget *parent = 0); - ~JavaPage(); - - QString displayName() const override - { - return tr("Java"); - } - QIcon icon() const override - { - return MMC->getThemedIcon("java"); - } - QString id() const override - { - return "java-settings"; - } - QString helpPage() const override - { - return "Java-settings"; - } - bool apply() override; - -private: - void applySettings(); - void loadSettings(); - -private -slots: - void on_javaDetectBtn_clicked(); - void on_javaTestBtn_clicked(); - void on_javaBrowseBtn_clicked(); - void checkerFinished(); - -private: - Ui::JavaPage *ui; - unique_qobject_ptr<JavaCommon::TestCheck> checker; -}; diff --git a/application/pages/global/JavaPage.ui b/application/pages/global/JavaPage.ui deleted file mode 100644 index b67e9994..00000000 --- a/application/pages/global/JavaPage.ui +++ /dev/null @@ -1,260 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>JavaPage</class> - <widget class="QWidget" name="JavaPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>545</width> - <height>580</height> - </rect> - </property> - <property name="sizePolicy"> - <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <widget class="QTabWidget" name="tabWidget"> - <property name="currentIndex"> - <number>0</number> - </property> - <widget class="QWidget" name="tab"> - <attribute name="title"> - <string notr="true">Tab 1</string> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QGroupBox" name="memoryGroupBox"> - <property name="title"> - <string>Memory</string> - </property> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="1" column="1"> - <widget class="QSpinBox" name="maxMemSpinBox"> - <property name="toolTip"> - <string>The maximum amount of memory Minecraft is allowed to use.</string> - </property> - <property name="suffix"> - <string notr="true"> MiB</string> - </property> - <property name="minimum"> - <number>128</number> - </property> - <property name="maximum"> - <number>65536</number> - </property> - <property name="singleStep"> - <number>128</number> - </property> - <property name="value"> - <number>1024</number> - </property> - </widget> - </item> - <item row="0" column="0"> - <widget class="QLabel" name="labelMinMem"> - <property name="text"> - <string>Minimum memory allocation:</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="labelMaxMem"> - <property name="text"> - <string>Maximum memory allocation:</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QSpinBox" name="minMemSpinBox"> - <property name="toolTip"> - <string>The amount of memory Minecraft is started with.</string> - </property> - <property name="suffix"> - <string notr="true"> MiB</string> - </property> - <property name="minimum"> - <number>128</number> - </property> - <property name="maximum"> - <number>65536</number> - </property> - <property name="singleStep"> - <number>128</number> - </property> - <property name="value"> - <number>256</number> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="labelPermGen"> - <property name="text"> - <string notr="true">PermGen:</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QSpinBox" name="permGenSpinBox"> - <property name="toolTip"> - <string>The amount of memory available to store loaded Java classes.</string> - </property> - <property name="suffix"> - <string notr="true"> MiB</string> - </property> - <property name="minimum"> - <number>64</number> - </property> - <property name="maximum"> - <number>999999999</number> - </property> - <property name="singleStep"> - <number>8</number> - </property> - <property name="value"> - <number>64</number> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="javaSettingsGroupBox"> - <property name="title"> - <string>Java Runtime</string> - </property> - <layout class="QGridLayout" name="gridLayout_3"> - <item row="0" column="0"> - <widget class="QLabel" name="labelJavaPath"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Fixed" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>Java path:</string> - </property> - </widget> - </item> - <item row="0" column="1" colspan="2"> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QLineEdit" name="javaPathTextBox"/> - </item> - <item> - <widget class="QPushButton" name="javaBrowseBtn"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="maximumSize"> - <size> - <width>28</width> - <height>16777215</height> - </size> - </property> - <property name="text"> - <string notr="true">...</string> - </property> - </widget> - </item> - </layout> - </item> - <item row="2" column="1" colspan="2"> - <widget class="QLineEdit" name="jvmArgsTextBox"/> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="labelJVMArgs"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Fixed" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>JVM arguments:</string> - </property> - </widget> - </item> - <item row="3" column="1"> - <widget class="QPushButton" name="javaDetectBtn"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>Auto-detect...</string> - </property> - </widget> - </item> - <item row="3" column="2"> - <widget class="QPushButton" name="javaTestBtn"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>Test</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - </widget> - </item> - </layout> - </widget> - <tabstops> - <tabstop>minMemSpinBox</tabstop> - <tabstop>maxMemSpinBox</tabstop> - <tabstop>permGenSpinBox</tabstop> - <tabstop>javaBrowseBtn</tabstop> - <tabstop>javaPathTextBox</tabstop> - <tabstop>jvmArgsTextBox</tabstop> - <tabstop>javaDetectBtn</tabstop> - <tabstop>javaTestBtn</tabstop> - <tabstop>tabWidget</tabstop> - </tabstops> - <resources/> - <connections/> -</ui> diff --git a/application/pages/global/LanguagePage.cpp b/application/pages/global/LanguagePage.cpp deleted file mode 100644 index ae3168cc..00000000 --- a/application/pages/global/LanguagePage.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include "LanguagePage.h" - -#include "widgets/LanguageSelectionWidget.h" -#include <QVBoxLayout> - -LanguagePage::LanguagePage(QWidget* parent) : - QWidget(parent) -{ - setObjectName(QStringLiteral("languagePage")); - auto layout = new QVBoxLayout(this); - mainWidget = new LanguageSelectionWidget(this); - layout->setContentsMargins(0,0,0,0); - layout->addWidget(mainWidget); - retranslate(); -} - -LanguagePage::~LanguagePage() -{ -} - -bool LanguagePage::apply() -{ - applySettings(); - return true; -} - -void LanguagePage::applySettings() -{ - auto settings = MMC->settings(); - QString key = mainWidget->getSelectedLanguageKey(); - settings->set("Language", key); -} - -void LanguagePage::loadSettings() -{ - // NIL -} - -void LanguagePage::retranslate() -{ - mainWidget->retranslate(); -} - -void LanguagePage::changeEvent(QEvent* event) -{ - if (event->type() == QEvent::LanguageChange) - { - retranslate(); - } - QWidget::changeEvent(event); -} diff --git a/application/pages/global/LanguagePage.h b/application/pages/global/LanguagePage.h deleted file mode 100644 index ca8eecc6..00000000 --- a/application/pages/global/LanguagePage.h +++ /dev/null @@ -1,60 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <memory> -#include "pages/BasePage.h" -#include <MultiMC.h> -#include <QWidget> - -class LanguageSelectionWidget; - -class LanguagePage : public QWidget, public BasePage -{ - Q_OBJECT - -public: - explicit LanguagePage(QWidget *parent = 0); - virtual ~LanguagePage(); - - QString displayName() const override - { - return tr("Language"); - } - QIcon icon() const override - { - return MMC->getThemedIcon("language"); - } - QString id() const override - { - return "language-settings"; - } - QString helpPage() const override - { - return "Language-settings"; - } - bool apply() override; - - void changeEvent(QEvent * ) override; - -private: - void applySettings(); - void loadSettings(); - void retranslate(); - -private: - LanguageSelectionWidget *mainWidget; -}; diff --git a/application/pages/global/MinecraftPage.cpp b/application/pages/global/MinecraftPage.cpp deleted file mode 100644 index 6c9bd307..00000000 --- a/application/pages/global/MinecraftPage.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "MinecraftPage.h" -#include "ui_MinecraftPage.h" - -#include <QMessageBox> -#include <QDir> -#include <QTabBar> - -#include "settings/SettingsObject.h" -#include "MultiMC.h" - -MinecraftPage::MinecraftPage(QWidget *parent) : QWidget(parent), ui(new Ui::MinecraftPage) -{ - ui->setupUi(this); - ui->tabWidget->tabBar()->hide(); - loadSettings(); - updateCheckboxStuff(); -} - -MinecraftPage::~MinecraftPage() -{ - delete ui; -} - -bool MinecraftPage::apply() -{ - applySettings(); - return true; -} - -void MinecraftPage::updateCheckboxStuff() -{ - ui->windowWidthSpinBox->setEnabled(!ui->maximizedCheckBox->isChecked()); - ui->windowHeightSpinBox->setEnabled(!ui->maximizedCheckBox->isChecked()); -} - -void MinecraftPage::on_maximizedCheckBox_clicked(bool checked) -{ - Q_UNUSED(checked); - updateCheckboxStuff(); -} - - -void MinecraftPage::applySettings() -{ - auto s = MMC->settings(); - - // Window Size - s->set("LaunchMaximized", ui->maximizedCheckBox->isChecked()); - s->set("MinecraftWinWidth", ui->windowWidthSpinBox->value()); - s->set("MinecraftWinHeight", ui->windowHeightSpinBox->value()); - - // Native library workarounds - s->set("UseNativeOpenAL", ui->useNativeOpenALCheck->isChecked()); - s->set("UseNativeGLFW", ui->useNativeGLFWCheck->isChecked()); - - // Game time - s->set("ShowGameTime", ui->showGameTime->isChecked()); - s->set("RecordGameTime", ui->recordGameTime->isChecked()); -} - -void MinecraftPage::loadSettings() -{ - auto s = MMC->settings(); - - // Window Size - ui->maximizedCheckBox->setChecked(s->get("LaunchMaximized").toBool()); - ui->windowWidthSpinBox->setValue(s->get("MinecraftWinWidth").toInt()); - ui->windowHeightSpinBox->setValue(s->get("MinecraftWinHeight").toInt()); - - ui->useNativeOpenALCheck->setChecked(s->get("UseNativeOpenAL").toBool()); - ui->useNativeGLFWCheck->setChecked(s->get("UseNativeGLFW").toBool()); - - ui->showGameTime->setChecked(s->get("ShowGameTime").toBool()); - ui->recordGameTime->setChecked(s->get("RecordGameTime").toBool()); -} diff --git a/application/pages/global/MinecraftPage.h b/application/pages/global/MinecraftPage.h deleted file mode 100644 index 5e781aed..00000000 --- a/application/pages/global/MinecraftPage.h +++ /dev/null @@ -1,70 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <memory> -#include <QDialog> - -#include "java/JavaChecker.h" -#include "pages/BasePage.h" -#include <MultiMC.h> - -class SettingsObject; - -namespace Ui -{ -class MinecraftPage; -} - -class MinecraftPage : public QWidget, public BasePage -{ - Q_OBJECT - -public: - explicit MinecraftPage(QWidget *parent = 0); - ~MinecraftPage(); - - QString displayName() const override - { - return tr("Minecraft"); - } - QIcon icon() const override - { - return MMC->getThemedIcon("minecraft"); - } - QString id() const override - { - return "minecraft-settings"; - } - QString helpPage() const override - { - return "Minecraft-settings"; - } - bool apply() override; - -private: - void updateCheckboxStuff(); - void applySettings(); - void loadSettings(); - -private -slots: - void on_maximizedCheckBox_clicked(bool checked); - -private: - Ui::MinecraftPage *ui; - -}; diff --git a/application/pages/global/MinecraftPage.ui b/application/pages/global/MinecraftPage.ui deleted file mode 100644 index 2abd4bd4..00000000 --- a/application/pages/global/MinecraftPage.ui +++ /dev/null @@ -1,189 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>MinecraftPage</class> - <widget class="QWidget" name="MinecraftPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>936</width> - <height>1134</height> - </rect> - </property> - <property name="sizePolicy"> - <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <layout class="QVBoxLayout" name="mainLayout"> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <widget class="QTabWidget" name="tabWidget"> - <property name="tabShape"> - <enum>QTabWidget::Rounded</enum> - </property> - <property name="currentIndex"> - <number>0</number> - </property> - <widget class="QWidget" name="minecraftTab"> - <attribute name="title"> - <string notr="true">Minecraft</string> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout_3"> - <item> - <widget class="QGroupBox" name="windowSizeGroupBox"> - <property name="title"> - <string>Window Size</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_4"> - <item> - <widget class="QCheckBox" name="maximizedCheckBox"> - <property name="text"> - <string>Start Minecraft maximized?</string> - </property> - </widget> - </item> - <item> - <layout class="QGridLayout" name="gridLayoutWindowSize"> - <item row="1" column="0"> - <widget class="QLabel" name="labelWindowHeight"> - <property name="text"> - <string>Window hei&ght:</string> - </property> - <property name="buddy"> - <cstring>windowHeightSpinBox</cstring> - </property> - </widget> - </item> - <item row="0" column="0"> - <widget class="QLabel" name="labelWindowWidth"> - <property name="text"> - <string>W&indow width:</string> - </property> - <property name="buddy"> - <cstring>windowWidthSpinBox</cstring> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QSpinBox" name="windowWidthSpinBox"> - <property name="minimum"> - <number>1</number> - </property> - <property name="maximum"> - <number>65536</number> - </property> - <property name="singleStep"> - <number>1</number> - </property> - <property name="value"> - <number>854</number> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QSpinBox" name="windowHeightSpinBox"> - <property name="minimum"> - <number>1</number> - </property> - <property name="maximum"> - <number>65536</number> - </property> - <property name="value"> - <number>480</number> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="nativeLibWorkaroundGroupBox"> - <property name="title"> - <string>Native library workarounds</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_5"> - <item> - <widget class="QCheckBox" name="useNativeGLFWCheck"> - <property name="text"> - <string>Use system installation of GLFW</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="useNativeOpenALCheck"> - <property name="text"> - <string>Use system installation of OpenAL</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="gameTimeGroupBox"> - <property name="title"> - <string>Game time</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_6"> - <item> - <widget class="QCheckBox" name="showGameTime"> - <property name="text"> - <string>Show time spent playing instances</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="recordGameTime"> - <property name="text"> - <string>Record time spent playing instances</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <spacer name="verticalSpacerMinecraft"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>0</width> - <height>0</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - </widget> - </item> - </layout> - </widget> - <tabstops> - <tabstop>tabWidget</tabstop> - <tabstop>maximizedCheckBox</tabstop> - <tabstop>windowWidthSpinBox</tabstop> - <tabstop>windowHeightSpinBox</tabstop> - <tabstop>useNativeGLFWCheck</tabstop> - <tabstop>useNativeOpenALCheck</tabstop> - </tabstops> - <resources/> - <connections/> -</ui> diff --git a/application/pages/global/MultiMCPage.cpp b/application/pages/global/MultiMCPage.cpp deleted file mode 100644 index d383e6ed..00000000 --- a/application/pages/global/MultiMCPage.cpp +++ /dev/null @@ -1,467 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "MultiMCPage.h" -#include "ui_MultiMCPage.h" - -#include <QFileDialog> -#include <QMessageBox> -#include <QDir> -#include <QTextCharFormat> - -#include "updater/UpdateChecker.h" - -#include "settings/SettingsObject.h" -#include <FileSystem.h> -#include "MultiMC.h" -#include "BuildConfig.h" -#include "themes/ITheme.h" - -#include <QApplication> -#include <QProcess> - -// FIXME: possibly move elsewhere -enum InstSortMode -{ - // Sort alphabetically by name. - Sort_Name, - // Sort by which instance was launched most recently. - Sort_LastLaunch -}; - -MultiMCPage::MultiMCPage(QWidget *parent) : QWidget(parent), ui(new Ui::MultiMCPage) -{ - ui->setupUi(this); - auto origForeground = ui->fontPreview->palette().color(ui->fontPreview->foregroundRole()); - auto origBackground = ui->fontPreview->palette().color(ui->fontPreview->backgroundRole()); - m_colors.reset(new LogColorCache(origForeground, origBackground)); - - ui->sortingModeGroup->setId(ui->sortByNameBtn, Sort_Name); - ui->sortingModeGroup->setId(ui->sortLastLaunchedBtn, Sort_LastLaunch); - - defaultFormat = new QTextCharFormat(ui->fontPreview->currentCharFormat()); - - m_languageModel = MMC->translations(); - loadSettings(); - - if(BuildConfig.UPDATER_ENABLED) - { - QObject::connect(MMC->updateChecker().get(), &UpdateChecker::channelListLoaded, this, - &MultiMCPage::refreshUpdateChannelList); - - if (MMC->updateChecker()->hasChannels()) - { - refreshUpdateChannelList(); - } - else - { - MMC->updateChecker()->updateChanList(false); - } - } - else - { - ui->updateSettingsBox->setHidden(true); - } - // Analytics - if(BuildConfig.ANALYTICS_ID.isEmpty()) - { - ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->analyticsTab)); - } - connect(ui->fontSizeBox, SIGNAL(valueChanged(int)), SLOT(refreshFontPreview())); - connect(ui->consoleFont, SIGNAL(currentFontChanged(QFont)), SLOT(refreshFontPreview())); - - //move mac data button - QFile file(QDir::current().absolutePath() + "/dontmovemacdata"); - if (!file.exists()) - { - ui->migrateDataFolderMacBtn->setVisible(false); - } -} - -MultiMCPage::~MultiMCPage() -{ - delete ui; - delete defaultFormat; -} - -bool MultiMCPage::apply() -{ - applySettings(); - return true; -} - -void MultiMCPage::on_instDirBrowseBtn_clicked() -{ - QString raw_dir = QFileDialog::getExistingDirectory(this, tr("Instance Folder"), ui->instDirTextBox->text()); - - // do not allow current dir - it's dirty. Do not allow dirs that don't exist - if (!raw_dir.isEmpty() && QDir(raw_dir).exists()) - { - QString cooked_dir = FS::NormalizePath(raw_dir); - if (FS::checkProblemticPathJava(QDir(cooked_dir))) - { - QMessageBox warning; - warning.setText(tr("You're trying to specify an instance folder which\'s path " - "contains at least one \'!\'. " - "Java is known to cause problems if that is the case, your " - "instances (probably) won't start!")); - warning.setInformativeText( - tr("Do you really want to use this path? " - "Selecting \"No\" will close this and not alter your instance path.")); - warning.setStandardButtons(QMessageBox::Yes | QMessageBox::No); - int result = warning.exec(); - if (result == QMessageBox::Yes) - { - ui->instDirTextBox->setText(cooked_dir); - } - } - else - { - ui->instDirTextBox->setText(cooked_dir); - } - } -} - -void MultiMCPage::on_iconsDirBrowseBtn_clicked() -{ - QString raw_dir = QFileDialog::getExistingDirectory(this, tr("Icons Folder"), ui->iconsDirTextBox->text()); - - // do not allow current dir - it's dirty. Do not allow dirs that don't exist - if (!raw_dir.isEmpty() && QDir(raw_dir).exists()) - { - QString cooked_dir = FS::NormalizePath(raw_dir); - ui->iconsDirTextBox->setText(cooked_dir); - } -} -void MultiMCPage::on_modsDirBrowseBtn_clicked() -{ - QString raw_dir = QFileDialog::getExistingDirectory(this, tr("Mods Folder"), ui->modsDirTextBox->text()); - - // do not allow current dir - it's dirty. Do not allow dirs that don't exist - if (!raw_dir.isEmpty() && QDir(raw_dir).exists()) - { - QString cooked_dir = FS::NormalizePath(raw_dir); - ui->modsDirTextBox->setText(cooked_dir); - } -} -void MultiMCPage::on_migrateDataFolderMacBtn_clicked() -{ - QFile file(QDir::current().absolutePath() + "/dontmovemacdata"); - file.remove(); - QProcess::startDetached(qApp->arguments()[0]); - qApp->quit(); -} - -void MultiMCPage::refreshUpdateChannelList() -{ - // Stop listening for selection changes. It's going to change a lot while we update it and - // we don't need to update the - // description label constantly. - QObject::disconnect(ui->updateChannelComboBox, SIGNAL(currentIndexChanged(int)), this, - SLOT(updateChannelSelectionChanged(int))); - - QList<UpdateChecker::ChannelListEntry> channelList = MMC->updateChecker()->getChannelList(); - ui->updateChannelComboBox->clear(); - int selection = -1; - for (int i = 0; i < channelList.count(); i++) - { - UpdateChecker::ChannelListEntry entry = channelList.at(i); - - // When it comes to selection, we'll rely on the indexes of a channel entry being the - // same in the - // combo box as it is in the update checker's channel list. - // This probably isn't very safe, but the channel list doesn't change often enough (or - // at all) for - // this to be a big deal. Hope it doesn't break... - ui->updateChannelComboBox->addItem(entry.name); - - // If the update channel we just added was the selected one, set the current index in - // the combo box to it. - if (entry.id == m_currentUpdateChannel) - { - qDebug() << "Selected index" << i << "channel id" << m_currentUpdateChannel; - selection = i; - } - } - - ui->updateChannelComboBox->setCurrentIndex(selection); - - // Start listening for selection changes again and update the description label. - QObject::connect(ui->updateChannelComboBox, SIGNAL(currentIndexChanged(int)), this, - SLOT(updateChannelSelectionChanged(int))); - refreshUpdateChannelDesc(); - - // Now that we've updated the channel list, we can enable the combo box. - // It starts off disabled so that if the channel list hasn't been loaded, it will be - // disabled. - ui->updateChannelComboBox->setEnabled(true); -} - -void MultiMCPage::updateChannelSelectionChanged(int index) -{ - refreshUpdateChannelDesc(); -} - -void MultiMCPage::refreshUpdateChannelDesc() -{ - // Get the channel list. - QList<UpdateChecker::ChannelListEntry> channelList = MMC->updateChecker()->getChannelList(); - int selectedIndex = ui->updateChannelComboBox->currentIndex(); - if (selectedIndex < 0) - { - return; - } - if (selectedIndex < channelList.count()) - { - // Find the channel list entry with the given index. - UpdateChecker::ChannelListEntry selected = channelList.at(selectedIndex); - - // Set the description text. - ui->updateChannelDescLabel->setText(selected.description); - - // Set the currently selected channel ID. - m_currentUpdateChannel = selected.id; - } -} - -void MultiMCPage::applySettings() -{ - auto s = MMC->settings(); - - if (ui->resetNotificationsBtn->isChecked()) - { - s->set("ShownNotifications", QString()); - } - - // Updates - s->set("AutoUpdate", ui->autoUpdateCheckBox->isChecked()); - s->set("UpdateChannel", m_currentUpdateChannel); - auto original = s->get("IconTheme").toString(); - //FIXME: make generic - switch (ui->themeComboBox->currentIndex()) - { - case 1: - s->set("IconTheme", "pe_dark"); - break; - case 2: - s->set("IconTheme", "pe_light"); - break; - case 3: - s->set("IconTheme", "pe_blue"); - break; - case 4: - s->set("IconTheme", "pe_colored"); - break; - case 5: - s->set("IconTheme", "OSX"); - break; - case 6: - s->set("IconTheme", "iOS"); - break; - case 7: - s->set("IconTheme", "flat"); - break; - case 8: - s->set("IconTheme", "custom"); - break; - case 0: - default: - s->set("IconTheme", "multimc"); - break; - } - - if(original != s->get("IconTheme")) - { - MMC->setIconTheme(s->get("IconTheme").toString()); - } - - auto originalAppTheme = s->get("ApplicationTheme").toString(); - auto newAppTheme = ui->themeComboBoxColors->currentData().toString(); - if(originalAppTheme != newAppTheme) - { - s->set("ApplicationTheme", newAppTheme); - MMC->setApplicationTheme(newAppTheme, false); - } - - // Console settings - s->set("ShowConsole", ui->showConsoleCheck->isChecked()); - s->set("AutoCloseConsole", ui->autoCloseConsoleCheck->isChecked()); - s->set("ShowConsoleOnError", ui->showConsoleErrorCheck->isChecked()); - QString consoleFontFamily = ui->consoleFont->currentFont().family(); - s->set("ConsoleFont", consoleFontFamily); - s->set("ConsoleFontSize", ui->fontSizeBox->value()); - s->set("ConsoleMaxLines", ui->lineLimitSpinBox->value()); - s->set("ConsoleOverflowStop", ui->checkStopLogging->checkState() != Qt::Unchecked); - - // Folders - // TODO: Offer to move instances to new instance folder. - s->set("InstanceDir", ui->instDirTextBox->text()); - s->set("CentralModsDir", ui->modsDirTextBox->text()); - s->set("IconsDir", ui->iconsDirTextBox->text()); - - auto sortMode = (InstSortMode)ui->sortingModeGroup->checkedId(); - switch (sortMode) - { - case Sort_LastLaunch: - s->set("InstSortMode", "LastLaunch"); - break; - case Sort_Name: - default: - s->set("InstSortMode", "Name"); - break; - } - - // Analytics - if(!BuildConfig.ANALYTICS_ID.isEmpty()) - { - s->set("Analytics", ui->analyticsCheck->isChecked()); - } -} -void MultiMCPage::loadSettings() -{ - auto s = MMC->settings(); - // Updates - ui->autoUpdateCheckBox->setChecked(s->get("AutoUpdate").toBool()); - m_currentUpdateChannel = s->get("UpdateChannel").toString(); - //FIXME: make generic - auto theme = s->get("IconTheme").toString(); - if (theme == "pe_dark") - { - ui->themeComboBox->setCurrentIndex(1); - } - else if (theme == "pe_light") - { - ui->themeComboBox->setCurrentIndex(2); - } - else if (theme == "pe_blue") - { - ui->themeComboBox->setCurrentIndex(3); - } - else if (theme == "pe_colored") - { - ui->themeComboBox->setCurrentIndex(4); - } - else if (theme == "OSX") - { - ui->themeComboBox->setCurrentIndex(5); - } - else if (theme == "iOS") - { - ui->themeComboBox->setCurrentIndex(6); - } - else if (theme == "flat") - { - ui->themeComboBox->setCurrentIndex(7); - } - else if (theme == "custom") - { - ui->themeComboBox->setCurrentIndex(8); - } - else - { - ui->themeComboBox->setCurrentIndex(0); - } - - { - auto currentTheme = s->get("ApplicationTheme").toString(); - auto themes = MMC->getValidApplicationThemes(); - int idx = 0; - for(auto &theme: themes) - { - ui->themeComboBoxColors->addItem(theme->name(), theme->id()); - if(currentTheme == theme->id()) - { - ui->themeComboBoxColors->setCurrentIndex(idx); - } - idx++; - } - } - - // Console settings - ui->showConsoleCheck->setChecked(s->get("ShowConsole").toBool()); - ui->autoCloseConsoleCheck->setChecked(s->get("AutoCloseConsole").toBool()); - ui->showConsoleErrorCheck->setChecked(s->get("ShowConsoleOnError").toBool()); - QString fontFamily = MMC->settings()->get("ConsoleFont").toString(); - QFont consoleFont(fontFamily); - ui->consoleFont->setCurrentFont(consoleFont); - - bool conversionOk = true; - int fontSize = MMC->settings()->get("ConsoleFontSize").toInt(&conversionOk); - if(!conversionOk) - { - fontSize = 11; - } - ui->fontSizeBox->setValue(fontSize); - refreshFontPreview(); - ui->lineLimitSpinBox->setValue(s->get("ConsoleMaxLines").toInt()); - ui->checkStopLogging->setChecked(s->get("ConsoleOverflowStop").toBool()); - - // Folders - ui->instDirTextBox->setText(s->get("InstanceDir").toString()); - ui->modsDirTextBox->setText(s->get("CentralModsDir").toString()); - ui->iconsDirTextBox->setText(s->get("IconsDir").toString()); - - QString sortMode = s->get("InstSortMode").toString(); - - if (sortMode == "LastLaunch") - { - ui->sortLastLaunchedBtn->setChecked(true); - } - else - { - ui->sortByNameBtn->setChecked(true); - } - - // Analytics - if(!BuildConfig.ANALYTICS_ID.isEmpty()) - { - ui->analyticsCheck->setChecked(s->get("Analytics").toBool()); - } -} - -void MultiMCPage::refreshFontPreview() -{ - int fontSize = ui->fontSizeBox->value(); - QString fontFamily = ui->consoleFont->currentFont().family(); - ui->fontPreview->clear(); - defaultFormat->setFont(QFont(fontFamily, fontSize)); - { - QTextCharFormat format(*defaultFormat); - format.setForeground(m_colors->getFront(MessageLevel::Error)); - // append a paragraph/line - auto workCursor = ui->fontPreview->textCursor(); - workCursor.movePosition(QTextCursor::End); - workCursor.insertText(tr("[Something/ERROR] A spooky error!"), format); - workCursor.insertBlock(); - } - { - QTextCharFormat format(*defaultFormat); - format.setForeground(m_colors->getFront(MessageLevel::Message)); - // append a paragraph/line - auto workCursor = ui->fontPreview->textCursor(); - workCursor.movePosition(QTextCursor::End); - workCursor.insertText(tr("[Test/INFO] A harmless message..."), format); - workCursor.insertBlock(); - } - { - QTextCharFormat format(*defaultFormat); - format.setForeground(m_colors->getFront(MessageLevel::Warning)); - // append a paragraph/line - auto workCursor = ui->fontPreview->textCursor(); - workCursor.movePosition(QTextCursor::End); - workCursor.insertText(tr("[Something/WARN] A not so spooky warning."), format); - workCursor.insertBlock(); - } -} diff --git a/application/pages/global/MultiMCPage.h b/application/pages/global/MultiMCPage.h deleted file mode 100644 index fae75bf2..00000000 --- a/application/pages/global/MultiMCPage.h +++ /dev/null @@ -1,103 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <memory> -#include <QDialog> - -#include "java/JavaChecker.h" -#include "pages/BasePage.h" -#include <MultiMC.h> -#include "ColorCache.h" -#include <translations/TranslationsModel.h> - -class QTextCharFormat; -class SettingsObject; - -namespace Ui -{ -class MultiMCPage; -} - -class MultiMCPage : public QWidget, public BasePage -{ - Q_OBJECT - -public: - explicit MultiMCPage(QWidget *parent = 0); - ~MultiMCPage(); - - QString displayName() const override - { - return "MultiMC"; - } - QIcon icon() const override - { - return MMC->getThemedIcon("multimc"); - } - QString id() const override - { - return "multimc-settings"; - } - QString helpPage() const override - { - return "MultiMC-settings"; - } - bool apply() override; - -private: - void applySettings(); - void loadSettings(); - -private -slots: - void on_instDirBrowseBtn_clicked(); - void on_modsDirBrowseBtn_clicked(); - void on_iconsDirBrowseBtn_clicked(); - void on_migrateDataFolderMacBtn_clicked(); - - /*! - * Updates the list of update channels in the combo box. - */ - void refreshUpdateChannelList(); - - /*! - * Updates the channel description label. - */ - void refreshUpdateChannelDesc(); - - /*! - * Updates the font preview - */ - void refreshFontPreview(); - - void updateChannelSelectionChanged(int index); - -private: - Ui::MultiMCPage *ui; - - /*! - * Stores the currently selected update channel. - */ - QString m_currentUpdateChannel; - - // default format for the font preview... - QTextCharFormat *defaultFormat; - - std::unique_ptr<LogColorCache> m_colors; - - std::shared_ptr<TranslationsModel> m_languageModel; -}; diff --git a/application/pages/global/MultiMCPage.ui b/application/pages/global/MultiMCPage.ui deleted file mode 100644 index 4ad20242..00000000 --- a/application/pages/global/MultiMCPage.ui +++ /dev/null @@ -1,584 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>MultiMCPage</class> - <widget class="QWidget" name="MultiMCPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>514</width> - <height>629</height> - </rect> - </property> - <property name="sizePolicy"> - <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <layout class="QVBoxLayout" name="mainLayout"> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <widget class="QTabWidget" name="tabWidget"> - <property name="toolTip"> - <string notr="true"/> - </property> - <property name="tabShape"> - <enum>QTabWidget::Rounded</enum> - </property> - <property name="currentIndex"> - <number>0</number> - </property> - <widget class="QWidget" name="featuresTab"> - <attribute name="title"> - <string>Features</string> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout_9"> - <item> - <widget class="QGroupBox" name="updateSettingsBox"> - <property name="title"> - <string>Update Settings</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_7"> - <item> - <widget class="QCheckBox" name="autoUpdateCheckBox"> - <property name="text"> - <string>Check for updates when MultiMC starts?</string> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="updateChannelLabel"> - <property name="text"> - <string>Up&date Channel:</string> - </property> - <property name="buddy"> - <cstring>updateChannelComboBox</cstring> - </property> - </widget> - </item> - <item> - <widget class="QComboBox" name="updateChannelComboBox"> - <property name="enabled"> - <bool>false</bool> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="updateChannelDescLabel"> - <property name="text"> - <string>No channel selected.</string> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="foldersBox"> - <property name="title"> - <string>Folders</string> - </property> - <layout class="QGridLayout" name="foldersBoxLayout"> - <item row="0" column="0"> - <widget class="QLabel" name="labelInstDir"> - <property name="text"> - <string>I&nstances:</string> - </property> - <property name="buddy"> - <cstring>instDirTextBox</cstring> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLineEdit" name="instDirTextBox"/> - </item> - <item row="0" column="2"> - <widget class="QToolButton" name="instDirBrowseBtn"> - <property name="text"> - <string notr="true">...</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="labelModsDir"> - <property name="text"> - <string>&Mods:</string> - </property> - <property name="buddy"> - <cstring>modsDirTextBox</cstring> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLineEdit" name="modsDirTextBox"/> - </item> - <item row="1" column="2"> - <widget class="QToolButton" name="modsDirBrowseBtn"> - <property name="text"> - <string notr="true">...</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QLineEdit" name="iconsDirTextBox"/> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="labelIconsDir"> - <property name="text"> - <string>&Icons:</string> - </property> - <property name="buddy"> - <cstring>iconsDirTextBox</cstring> - </property> - </widget> - </item> - <item row="2" column="2"> - <widget class="QToolButton" name="iconsDirBrowseBtn"> - <property name="text"> - <string notr="true">...</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QPushButton" name="migrateDataFolderMacBtn"> - <property name="text"> - <string>Move MultiMC data to new location (will restart MultiMC)</string> - </property> - </widget> - </item> - <item> - <spacer name="verticalSpacer_2"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>0</width> - <height>0</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - <widget class="QWidget" name="generalTab"> - <attribute name="title"> - <string>User Interface</string> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout_6"> - <item> - <widget class="QGroupBox" name="groupBox_3"> - <property name="title"> - <string>MultiMC notifications</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_5"> - <item> - <widget class="QPushButton" name="resetNotificationsBtn"> - <property name="text"> - <string>Reset hidden notifications</string> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="sortingModeBox"> - <property name="enabled"> - <bool>true</bool> - </property> - <property name="title"> - <string>Instance view sorting mode</string> - </property> - <layout class="QHBoxLayout" name="sortingModeBoxLayout"> - <item> - <widget class="QRadioButton" name="sortLastLaunchedBtn"> - <property name="text"> - <string>By &last launched</string> - </property> - <attribute name="buttonGroup"> - <string notr="true">sortingModeGroup</string> - </attribute> - </widget> - </item> - <item> - <widget class="QRadioButton" name="sortByNameBtn"> - <property name="text"> - <string>By &name</string> - </property> - <attribute name="buttonGroup"> - <string notr="true">sortingModeGroup</string> - </attribute> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="themeBox"> - <property name="title"> - <string>Theme</string> - </property> - <layout class="QFormLayout" name="formLayout"> - <item row="0" column="0"> - <widget class="QLabel" name="label_3"> - <property name="text"> - <string>&Icons</string> - </property> - <property name="buddy"> - <cstring>themeComboBox</cstring> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QComboBox" name="themeComboBox"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="focusPolicy"> - <enum>Qt::StrongFocus</enum> - </property> - <item> - <property name="text"> - <string>Default</string> - </property> - </item> - <item> - <property name="text"> - <string>Simple (Dark Icons)</string> - </property> - </item> - <item> - <property name="text"> - <string>Simple (Light Icons)</string> - </property> - </item> - <item> - <property name="text"> - <string>Simple (Blue Icons)</string> - </property> - </item> - <item> - <property name="text"> - <string>Simple (Colored Icons)</string> - </property> - </item> - <item> - <property name="text"> - <string notr="true">OSX</string> - </property> - </item> - <item> - <property name="text"> - <string notr="true">iOS</string> - </property> - </item> - <item> - <property name="text"> - <string notr="true">Flat</string> - </property> - </item> - <item> - <property name="text"> - <string>Custom</string> - </property> - </item> - </widget> - </item> - <item row="1" column="1"> - <widget class="QComboBox" name="themeComboBoxColors"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="focusPolicy"> - <enum>Qt::StrongFocus</enum> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_4"> - <property name="text"> - <string>Colors</string> - </property> - <property name="buddy"> - <cstring>themeComboBoxColors</cstring> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <spacer name="generalTabSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>0</width> - <height>0</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - <widget class="QWidget" name="consoleTab"> - <attribute name="title"> - <string>Console</string> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QGroupBox" name="consoleSettingsBox"> - <property name="title"> - <string>Console Settings</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_3"> - <item> - <widget class="QCheckBox" name="showConsoleCheck"> - <property name="text"> - <string>Show console while the game is running?</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="autoCloseConsoleCheck"> - <property name="text"> - <string>Automatically close console when the game quits?</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="showConsoleErrorCheck"> - <property name="text"> - <string>Show console when the game crashes?</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_4"> - <property name="title"> - <string>History limit</string> - </property> - <layout class="QGridLayout" name="gridLayout_3"> - <item row="1" column="0"> - <widget class="QCheckBox" name="checkStopLogging"> - <property name="text"> - <string>Stop logging when log overflows</string> - </property> - </widget> - </item> - <item row="0" column="0"> - <widget class="QSpinBox" name="lineLimitSpinBox"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="suffix"> - <string> lines</string> - </property> - <property name="minimum"> - <number>10000</number> - </property> - <property name="maximum"> - <number>1000000</number> - </property> - <property name="singleStep"> - <number>10000</number> - </property> - <property name="value"> - <number>100000</number> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="themeBox_2"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="title"> - <string>Console font</string> - </property> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="1" column="0" colspan="2"> - <widget class="QTextEdit" name="fontPreview"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="horizontalScrollBarPolicy"> - <enum>Qt::ScrollBarAlwaysOff</enum> - </property> - <property name="undoRedoEnabled"> - <bool>false</bool> - </property> - <property name="textInteractionFlags"> - <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> - </property> - </widget> - </item> - <item row="0" column="0"> - <widget class="QFontComboBox" name="consoleFont"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QSpinBox" name="fontSizeBox"> - <property name="minimum"> - <number>5</number> - </property> - <property name="maximum"> - <number>16</number> - </property> - <property name="value"> - <number>11</number> - </property> - </widget> - </item> - </layout> - </widget> - </item> - </layout> - </widget> - <widget class="QWidget" name="analyticsTab"> - <attribute name="title"> - <string>Analytics</string> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout_8"> - <item> - <widget class="QGroupBox" name="consoleSettingsBox_2"> - <property name="title"> - <string>Analytics Settings</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_4"> - <item> - <widget class="QCheckBox" name="analyticsCheck"> - <property name="text"> - <string>Send anonymous usage statistics?</string> - </property> - </widget> - </item> - <item> - <widget class="Line" name="line"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="label_5"> - <property name="text"> - <string><html><head/> -<body> -<p>MultiMC sends anonymous usage statistics on every start of the application.</p><p>The following data is collected:</p> -<ul> -<li>MultiMC version.</li> -<li>Operating system name, version and architecture.</li> -<li>CPU architecture (kernel architecture on linux).</li> -<li>Size of system memory.</li> -<li>Java version, architecture and memory settings.</li> -</ul> -</body></html></string> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - </widget> - </item> - </layout> - </widget> - <tabstops> - <tabstop>tabWidget</tabstop> - <tabstop>autoUpdateCheckBox</tabstop> - <tabstop>updateChannelComboBox</tabstop> - <tabstop>instDirTextBox</tabstop> - <tabstop>instDirBrowseBtn</tabstop> - <tabstop>modsDirTextBox</tabstop> - <tabstop>modsDirBrowseBtn</tabstop> - <tabstop>iconsDirTextBox</tabstop> - <tabstop>iconsDirBrowseBtn</tabstop> - <tabstop>resetNotificationsBtn</tabstop> - <tabstop>sortLastLaunchedBtn</tabstop> - <tabstop>sortByNameBtn</tabstop> - <tabstop>themeComboBox</tabstop> - <tabstop>themeComboBoxColors</tabstop> - <tabstop>showConsoleCheck</tabstop> - <tabstop>autoCloseConsoleCheck</tabstop> - <tabstop>showConsoleErrorCheck</tabstop> - <tabstop>lineLimitSpinBox</tabstop> - <tabstop>checkStopLogging</tabstop> - <tabstop>consoleFont</tabstop> - <tabstop>fontSizeBox</tabstop> - <tabstop>fontPreview</tabstop> - </tabstops> - <resources/> - <connections/> - <buttongroups> - <buttongroup name="sortingModeGroup"/> - </buttongroups> -</ui> diff --git a/application/pages/global/PasteEEPage.cpp b/application/pages/global/PasteEEPage.cpp deleted file mode 100644 index f932dede..00000000 --- a/application/pages/global/PasteEEPage.cpp +++ /dev/null @@ -1,81 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "PasteEEPage.h" -#include "ui_PasteEEPage.h" - -#include <QMessageBox> -#include <QFileDialog> -#include <QStandardPaths> -#include <QTabBar> - -#include "settings/SettingsObject.h" -#include "tools/BaseProfiler.h" -#include "MultiMC.h" - -PasteEEPage::PasteEEPage(QWidget *parent) : - QWidget(parent), - ui(new Ui::PasteEEPage) -{ - ui->setupUi(this); - ui->tabWidget->tabBar()->hide();\ - connect(ui->customAPIkeyEdit, &QLineEdit::textEdited, this, &PasteEEPage::textEdited); - loadSettings(); -} - -PasteEEPage::~PasteEEPage() -{ - delete ui; -} - -void PasteEEPage::loadSettings() -{ - auto s = MMC->settings(); - QString keyToUse = s->get("PasteEEAPIKey").toString(); - if(keyToUse == "multimc") - { - ui->multimcButton->setChecked(true); - } - else - { - ui->customButton->setChecked(true); - ui->customAPIkeyEdit->setText(keyToUse); - } -} - -void PasteEEPage::applySettings() -{ - auto s = MMC->settings(); - - QString pasteKeyToUse; - if (ui->customButton->isChecked()) - pasteKeyToUse = ui->customAPIkeyEdit->text(); - else - { - pasteKeyToUse = "multimc"; - } - s->set("PasteEEAPIKey", pasteKeyToUse); -} - -bool PasteEEPage::apply() -{ - applySettings(); - return true; -} - -void PasteEEPage::textEdited(const QString& text) -{ - ui->customButton->setChecked(true); -} diff --git a/application/pages/global/PasteEEPage.h b/application/pages/global/PasteEEPage.h deleted file mode 100644 index 001decdb..00000000 --- a/application/pages/global/PasteEEPage.h +++ /dev/null @@ -1,62 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QWidget> - -#include "pages/BasePage.h" -#include <MultiMC.h> - -namespace Ui { -class PasteEEPage; -} - -class PasteEEPage : public QWidget, public BasePage -{ - Q_OBJECT - -public: - explicit PasteEEPage(QWidget *parent = 0); - ~PasteEEPage(); - - QString displayName() const override - { - return tr("Log Upload"); - } - QIcon icon() const override - { - return MMC->getThemedIcon("log"); - } - QString id() const override - { - return "log-upload"; - } - QString helpPage() const override - { - return "Log-Upload"; - } - virtual bool apply() override; - -private: - void loadSettings(); - void applySettings(); - -private slots: - void textEdited(const QString &text); - -private: - Ui::PasteEEPage *ui; -}; diff --git a/application/pages/global/PasteEEPage.ui b/application/pages/global/PasteEEPage.ui deleted file mode 100644 index 10883781..00000000 --- a/application/pages/global/PasteEEPage.ui +++ /dev/null @@ -1,128 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>PasteEEPage</class> - <widget class="QWidget" name="PasteEEPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>491</width> - <height>474</height> - </rect> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <widget class="QTabWidget" name="tabWidget"> - <property name="currentIndex"> - <number>0</number> - </property> - <widget class="QWidget" name="tab"> - <attribute name="title"> - <string notr="true">Tab 1</string> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QGroupBox" name="groupBox_2"> - <property name="title"> - <string>paste.ee API key</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_10"> - <item> - <widget class="QRadioButton" name="multimcButton"> - <property name="text"> - <string>MultiMC key - 12MB &upload limit</string> - </property> - <attribute name="buttonGroup"> - <string notr="true">pasteButtonGroup</string> - </attribute> - </widget> - </item> - <item> - <widget class="QRadioButton" name="customButton"> - <property name="text"> - <string>&Your own key - 12MB upload limit:</string> - </property> - <attribute name="buttonGroup"> - <string notr="true">pasteButtonGroup</string> - </attribute> - </widget> - </item> - <item> - <widget class="QLineEdit" name="customAPIkeyEdit"> - <property name="echoMode"> - <enum>QLineEdit::Password</enum> - </property> - <property name="placeholderText"> - <string>Paste your API key here!</string> - </property> - </widget> - </item> - <item> - <widget class="Line" name="line"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="label"> - <property name="text"> - <string><html><head/><body><p><a href="https://paste.ee">paste.ee</a> is used by MultiMC for log uploads. If you have a <a href="https://paste.ee">paste.ee</a> account, you can add your API key here and have your uploaded logs paired with your account.</p></body></html></string> - </property> - <property name="textFormat"> - <enum>Qt::RichText</enum> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - <property name="openExternalLinks"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>216</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - </widget> - </item> - </layout> - </widget> - <tabstops> - <tabstop>tabWidget</tabstop> - <tabstop>multimcButton</tabstop> - <tabstop>customButton</tabstop> - <tabstop>customAPIkeyEdit</tabstop> - </tabstops> - <resources/> - <connections/> - <buttongroups> - <buttongroup name="pasteButtonGroup"/> - </buttongroups> -</ui> diff --git a/application/pages/global/ProxyPage.cpp b/application/pages/global/ProxyPage.cpp deleted file mode 100644 index 809059ff..00000000 --- a/application/pages/global/ProxyPage.cpp +++ /dev/null @@ -1,101 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "ProxyPage.h" -#include "ui_ProxyPage.h" - -#include <QTabBar> - -#include "settings/SettingsObject.h" -#include "MultiMC.h" -#include "Env.h" - -ProxyPage::ProxyPage(QWidget *parent) : QWidget(parent), ui(new Ui::ProxyPage) -{ - ui->setupUi(this); - ui->tabWidget->tabBar()->hide(); - loadSettings(); - updateCheckboxStuff(); - - connect(ui->proxyGroup, SIGNAL(buttonClicked(int)), SLOT(proxyChanged(int))); -} - -ProxyPage::~ProxyPage() -{ - delete ui; -} - -bool ProxyPage::apply() -{ - applySettings(); - return true; -} - -void ProxyPage::updateCheckboxStuff() -{ - ui->proxyAddrBox->setEnabled(!ui->proxyNoneBtn->isChecked() && - !ui->proxyDefaultBtn->isChecked()); - ui->proxyAuthBox->setEnabled(!ui->proxyNoneBtn->isChecked() && - !ui->proxyDefaultBtn->isChecked()); -} - -void ProxyPage::proxyChanged(int) -{ - updateCheckboxStuff(); -} - -void ProxyPage::applySettings() -{ - auto s = MMC->settings(); - - // Proxy - QString proxyType = "None"; - if (ui->proxyDefaultBtn->isChecked()) - proxyType = "Default"; - else if (ui->proxyNoneBtn->isChecked()) - proxyType = "None"; - else if (ui->proxySOCKS5Btn->isChecked()) - proxyType = "SOCKS5"; - else if (ui->proxyHTTPBtn->isChecked()) - proxyType = "HTTP"; - - s->set("ProxyType", proxyType); - s->set("ProxyAddr", ui->proxyAddrEdit->text()); - s->set("ProxyPort", ui->proxyPortEdit->value()); - s->set("ProxyUser", ui->proxyUserEdit->text()); - s->set("ProxyPass", ui->proxyPassEdit->text()); - - ENV.updateProxySettings(proxyType, ui->proxyAddrEdit->text(), ui->proxyPortEdit->value(), - ui->proxyUserEdit->text(), ui->proxyPassEdit->text()); -} -void ProxyPage::loadSettings() -{ - auto s = MMC->settings(); - // Proxy - QString proxyType = s->get("ProxyType").toString(); - if (proxyType == "Default") - ui->proxyDefaultBtn->setChecked(true); - else if (proxyType == "None") - ui->proxyNoneBtn->setChecked(true); - else if (proxyType == "SOCKS5") - ui->proxySOCKS5Btn->setChecked(true); - else if (proxyType == "HTTP") - ui->proxyHTTPBtn->setChecked(true); - - ui->proxyAddrEdit->setText(s->get("ProxyAddr").toString()); - ui->proxyPortEdit->setValue(s->get("ProxyPort").value<uint16_t>()); - ui->proxyUserEdit->setText(s->get("ProxyUser").toString()); - ui->proxyPassEdit->setText(s->get("ProxyPass").toString()); -} diff --git a/application/pages/global/ProxyPage.h b/application/pages/global/ProxyPage.h deleted file mode 100644 index ff94ec49..00000000 --- a/application/pages/global/ProxyPage.h +++ /dev/null @@ -1,66 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <memory> -#include <QDialog> - -#include "pages/BasePage.h" -#include <MultiMC.h> - -namespace Ui -{ -class ProxyPage; -} - -class ProxyPage : public QWidget, public BasePage -{ - Q_OBJECT - -public: - explicit ProxyPage(QWidget *parent = 0); - ~ProxyPage(); - - QString displayName() const override - { - return tr("Proxy"); - } - QIcon icon() const override - { - return MMC->getThemedIcon("proxy"); - } - QString id() const override - { - return "proxy-settings"; - } - QString helpPage() const override - { - return "Proxy-settings"; - } - bool apply() override; - -private: - void updateCheckboxStuff(); - void applySettings(); - void loadSettings(); - -private -slots: - void proxyChanged(int); - -private: - Ui::ProxyPage *ui; -}; diff --git a/application/pages/global/ProxyPage.ui b/application/pages/global/ProxyPage.ui deleted file mode 100644 index 69fcef1e..00000000 --- a/application/pages/global/ProxyPage.ui +++ /dev/null @@ -1,203 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>ProxyPage</class> - <widget class="QWidget" name="ProxyPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>598</width> - <height>617</height> - </rect> - </property> - <property name="sizePolicy"> - <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <widget class="QTabWidget" name="tabWidget"> - <widget class="QWidget" name="tabWidgetPage1"> - <attribute name="title"> - <string notr="true"/> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QLabel" name="proxyPlainTextWarningLabel_2"> - <property name="text"> - <string>This only applies to MultiMC. Minecraft does not accept proxy settings.</string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QGroupBox" name="proxyTypeBox"> - <property name="title"> - <string>Type</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_3"> - <item> - <widget class="QRadioButton" name="proxyDefaultBtn"> - <property name="toolTip"> - <string>Uses your system's default proxy settings.</string> - </property> - <property name="text"> - <string>&Default</string> - </property> - <attribute name="buttonGroup"> - <string notr="true">proxyGroup</string> - </attribute> - </widget> - </item> - <item> - <widget class="QRadioButton" name="proxyNoneBtn"> - <property name="text"> - <string>&None</string> - </property> - <attribute name="buttonGroup"> - <string notr="true">proxyGroup</string> - </attribute> - </widget> - </item> - <item> - <widget class="QRadioButton" name="proxySOCKS5Btn"> - <property name="text"> - <string>SOC&KS5</string> - </property> - <attribute name="buttonGroup"> - <string notr="true">proxyGroup</string> - </attribute> - </widget> - </item> - <item> - <widget class="QRadioButton" name="proxyHTTPBtn"> - <property name="text"> - <string>H&TTP</string> - </property> - <attribute name="buttonGroup"> - <string notr="true">proxyGroup</string> - </attribute> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="proxyAddrBox"> - <property name="title"> - <string>Address and Port</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <item> - <widget class="QLineEdit" name="proxyAddrEdit"> - <property name="placeholderText"> - <string notr="true">127.0.0.1</string> - </property> - </widget> - </item> - <item> - <widget class="QSpinBox" name="proxyPortEdit"> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - <property name="buttonSymbols"> - <enum>QAbstractSpinBox::PlusMinus</enum> - </property> - <property name="maximum"> - <number>65535</number> - </property> - <property name="value"> - <number>8080</number> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="proxyAuthBox"> - <property name="title"> - <string>Authentication</string> - </property> - <layout class="QGridLayout" name="gridLayout_5"> - <item row="0" column="1"> - <widget class="QLineEdit" name="proxyUserEdit"/> - </item> - <item row="0" column="0"> - <widget class="QLabel" name="proxyUsernameLabel"> - <property name="text"> - <string>Username:</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="proxyPasswordLabel"> - <property name="text"> - <string>Password:</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLineEdit" name="proxyPassEdit"> - <property name="echoMode"> - <enum>QLineEdit::Password</enum> - </property> - </widget> - </item> - <item row="2" column="0" colspan="2"> - <widget class="QLabel" name="proxyPlainTextWarningLabel"> - <property name="text"> - <string>Note: Proxy username and password are stored in plain text inside MultiMC's configuration file!</string> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections/> - <buttongroups> - <buttongroup name="proxyGroup"/> - </buttongroups> -</ui> diff --git a/application/pages/instance/GameOptionsPage.cpp b/application/pages/instance/GameOptionsPage.cpp deleted file mode 100644 index 782f2ab3..00000000 --- a/application/pages/instance/GameOptionsPage.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include "GameOptionsPage.h" -#include "ui_GameOptionsPage.h" -#include "minecraft/MinecraftInstance.h" -#include "minecraft/gameoptions/GameOptions.h" - -GameOptionsPage::GameOptionsPage(MinecraftInstance * inst, QWidget* parent) - : QWidget(parent), ui(new Ui::GameOptionsPage) -{ - ui->setupUi(this); - ui->tabWidget->tabBar()->hide(); - m_model = inst->gameOptionsModel(); - ui->optionsView->setModel(m_model.get()); - auto head = ui->optionsView->header(); - if(head->count()) - { - head->setSectionResizeMode(0, QHeaderView::ResizeToContents); - for(int i = 1; i < head->count(); i++) - { - head->setSectionResizeMode(i, QHeaderView::Stretch); - } - } -} - -GameOptionsPage::~GameOptionsPage() -{ - // m_model->save(); -} - -void GameOptionsPage::openedImpl() -{ - // m_model->observe(); -} - -void GameOptionsPage::closedImpl() -{ - // m_model->unobserve(); -} diff --git a/application/pages/instance/GameOptionsPage.h b/application/pages/instance/GameOptionsPage.h deleted file mode 100644 index 0fd2fbff..00000000 --- a/application/pages/instance/GameOptionsPage.h +++ /dev/null @@ -1,63 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QWidget> -#include <QString> - -#include "pages/BasePage.h" -#include <MultiMC.h> - -namespace Ui -{ -class GameOptionsPage; -} - -class GameOptions; -class MinecraftInstance; - -class GameOptionsPage : public QWidget, public BasePage -{ - Q_OBJECT - -public: - explicit GameOptionsPage(MinecraftInstance *inst, QWidget *parent = 0); - virtual ~GameOptionsPage(); - - void openedImpl() override; - void closedImpl() override; - - virtual QString displayName() const override - { - return tr("Game Options"); - } - virtual QIcon icon() const override - { - return MMC->getThemedIcon("settings"); - } - virtual QString id() const override - { - return "gameoptions"; - } - virtual QString helpPage() const override - { - return "Game-Options-management"; - } - -private: // data - Ui::GameOptionsPage *ui = nullptr; - std::shared_ptr<GameOptions> m_model; -}; diff --git a/application/pages/instance/GameOptionsPage.ui b/application/pages/instance/GameOptionsPage.ui deleted file mode 100644 index f0a5ce0e..00000000 --- a/application/pages/instance/GameOptionsPage.ui +++ /dev/null @@ -1,88 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>GameOptionsPage</class> - <widget class="QWidget" name="GameOptionsPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>706</width> - <height>575</height> - </rect> - </property> - <layout class="QGridLayout" name="gridLayout"> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item row="0" column="0"> - <widget class="QTabWidget" name="tabWidget"> - <property name="currentIndex"> - <number>0</number> - </property> - <widget class="QWidget" name="tab"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <attribute name="title"> - <string notr="true">Tab 1</string> - </attribute> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="0" column="0" colspan="2"> - <widget class="QTreeView" name="optionsView"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="acceptDrops"> - <bool>true</bool> - </property> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - <property name="selectionMode"> - <enum>QAbstractItemView::SingleSelection</enum> - </property> - <property name="selectionBehavior"> - <enum>QAbstractItemView::SelectRows</enum> - </property> - <property name="iconSize"> - <size> - <width>64</width> - <height>64</height> - </size> - </property> - <property name="rootIsDecorated"> - <bool>false</bool> - </property> - <attribute name="headerStretchLastSection"> - <bool>false</bool> - </attribute> - </widget> - </item> - </layout> - </widget> - </widget> - </item> - </layout> - </widget> - <tabstops> - <tabstop>tabWidget</tabstop> - <tabstop>optionsView</tabstop> - </tabstops> - <resources/> - <connections/> -</ui> diff --git a/application/pages/instance/InstanceSettingsPage.cpp b/application/pages/instance/InstanceSettingsPage.cpp deleted file mode 100644 index 7bd424c0..00000000 --- a/application/pages/instance/InstanceSettingsPage.cpp +++ /dev/null @@ -1,338 +0,0 @@ -#include "InstanceSettingsPage.h" -#include "ui_InstanceSettingsPage.h" - -#include <QFileDialog> -#include <QDialog> -#include <QMessageBox> - -#include "dialogs/VersionSelectDialog.h" -#include "JavaCommon.h" -#include "MultiMC.h" - -#include <java/JavaInstallList.h> -#include <FileSystem.h> -#include <sys.h> -#include <widgets/CustomCommands.h> - -InstanceSettingsPage::InstanceSettingsPage(BaseInstance *inst, QWidget *parent) - : QWidget(parent), ui(new Ui::InstanceSettingsPage), m_instance(inst) -{ - m_settings = inst->settings(); - ui->setupUi(this); - auto sysMB = Sys::getSystemRam() / Sys::mebibyte; - ui->maxMemSpinBox->setMaximum(sysMB); - connect(ui->openGlobalJavaSettingsButton, &QCommandLinkButton::clicked, this, &InstanceSettingsPage::globalSettingsButtonClicked); - connect(MMC, &MultiMC::globalSettingsAboutToOpen, this, &InstanceSettingsPage::applySettings); - connect(MMC, &MultiMC::globalSettingsClosed, this, &InstanceSettingsPage::loadSettings); - loadSettings(); -} - -bool InstanceSettingsPage::shouldDisplay() const -{ - return !m_instance->isRunning(); -} - -InstanceSettingsPage::~InstanceSettingsPage() -{ - delete ui; -} - -void InstanceSettingsPage::globalSettingsButtonClicked(bool) -{ - switch(ui->settingsTabs->currentIndex()) { - case 0: - MMC->ShowGlobalSettings(this, "java-settings"); - return; - case 1: - MMC->ShowGlobalSettings(this, "minecraft-settings"); - return; - case 2: - MMC->ShowGlobalSettings(this, "custom-commands"); - return; - } -} - -bool InstanceSettingsPage::apply() -{ - applySettings(); - return true; -} - -void InstanceSettingsPage::applySettings() -{ - SettingsObject::Lock lock(m_settings); - - // Console - bool console = ui->consoleSettingsBox->isChecked(); - m_settings->set("OverrideConsole", console); - if (console) - { - m_settings->set("ShowConsole", ui->showConsoleCheck->isChecked()); - m_settings->set("AutoCloseConsole", ui->autoCloseConsoleCheck->isChecked()); - m_settings->set("ShowConsoleOnError", ui->showConsoleErrorCheck->isChecked()); - } - else - { - m_settings->reset("ShowConsole"); - m_settings->reset("AutoCloseConsole"); - m_settings->reset("ShowConsoleOnError"); - } - - // Window Size - bool window = ui->windowSizeGroupBox->isChecked(); - m_settings->set("OverrideWindow", window); - if (window) - { - m_settings->set("LaunchMaximized", ui->maximizedCheckBox->isChecked()); - m_settings->set("MinecraftWinWidth", ui->windowWidthSpinBox->value()); - m_settings->set("MinecraftWinHeight", ui->windowHeightSpinBox->value()); - } - else - { - m_settings->reset("LaunchMaximized"); - m_settings->reset("MinecraftWinWidth"); - m_settings->reset("MinecraftWinHeight"); - } - - // Memory - bool memory = ui->memoryGroupBox->isChecked(); - m_settings->set("OverrideMemory", memory); - if (memory) - { - int min = ui->minMemSpinBox->value(); - int max = ui->maxMemSpinBox->value(); - if(min < max) - { - m_settings->set("MinMemAlloc", min); - m_settings->set("MaxMemAlloc", max); - } - else - { - m_settings->set("MinMemAlloc", max); - m_settings->set("MaxMemAlloc", min); - } - m_settings->set("PermGen", ui->permGenSpinBox->value()); - } - else - { - m_settings->reset("MinMemAlloc"); - m_settings->reset("MaxMemAlloc"); - m_settings->reset("PermGen"); - } - - // Java Install Settings - bool javaInstall = ui->javaSettingsGroupBox->isChecked(); - m_settings->set("OverrideJavaLocation", javaInstall); - if (javaInstall) - { - m_settings->set("JavaPath", ui->javaPathTextBox->text()); - } - else - { - m_settings->reset("JavaPath"); - } - - // Java arguments - bool javaArgs = ui->javaArgumentsGroupBox->isChecked(); - m_settings->set("OverrideJavaArgs", javaArgs); - if(javaArgs) - { - m_settings->set("JvmArgs", ui->jvmArgsTextBox->toPlainText().replace("\n", " ")); - JavaCommon::checkJVMArgs(m_settings->get("JvmArgs").toString(), this->parentWidget()); - } - else - { - m_settings->reset("JvmArgs"); - } - - // old generic 'override both' is removed. - m_settings->reset("OverrideJava"); - - // Custom Commands - bool custcmd = ui->customCommands->checked(); - m_settings->set("OverrideCommands", custcmd); - if (custcmd) - { - m_settings->set("PreLaunchCommand", ui->customCommands->prelaunchCommand()); - m_settings->set("WrapperCommand", ui->customCommands->wrapperCommand()); - m_settings->set("PostExitCommand", ui->customCommands->postexitCommand()); - } - else - { - m_settings->reset("PreLaunchCommand"); - m_settings->reset("WrapperCommand"); - m_settings->reset("PostExitCommand"); - } - - // Workarounds - bool workarounds = ui->nativeWorkaroundsGroupBox->isChecked(); - m_settings->set("OverrideNativeWorkarounds", workarounds); - if(workarounds) - { - m_settings->set("UseNativeOpenAL", ui->useNativeOpenALCheck->isChecked()); - m_settings->set("UseNativeGLFW", ui->useNativeGLFWCheck->isChecked()); - } - else - { - m_settings->reset("UseNativeOpenAL"); - m_settings->reset("UseNativeGLFW"); - } - - // Game time - bool gameTime = ui->gameTimeGroupBox->isChecked(); - m_settings->set("OverrideGameTime", gameTime); - if (gameTime) - { - m_settings->set("ShowGameTime", ui->showGameTime->isChecked()); - m_settings->set("RecordGameTime", ui->recordGameTime->isChecked()); - } - else - { - m_settings->reset("ShowGameTime"); - m_settings->reset("RecordGameTime"); - } - - // Join server on launch - bool joinServerOnLaunch = ui->serverJoinGroupBox->isChecked(); - m_settings->set("JoinServerOnLaunch", joinServerOnLaunch); - if (joinServerOnLaunch) - { - m_settings->set("JoinServerOnLaunchAddress", ui->serverJoinAddress->text()); - } - else - { - m_settings->reset("JoinServerOnLaunchAddress"); - } -} - -void InstanceSettingsPage::loadSettings() -{ - // Console - ui->consoleSettingsBox->setChecked(m_settings->get("OverrideConsole").toBool()); - ui->showConsoleCheck->setChecked(m_settings->get("ShowConsole").toBool()); - ui->autoCloseConsoleCheck->setChecked(m_settings->get("AutoCloseConsole").toBool()); - ui->showConsoleErrorCheck->setChecked(m_settings->get("ShowConsoleOnError").toBool()); - - // Window Size - ui->windowSizeGroupBox->setChecked(m_settings->get("OverrideWindow").toBool()); - ui->maximizedCheckBox->setChecked(m_settings->get("LaunchMaximized").toBool()); - ui->windowWidthSpinBox->setValue(m_settings->get("MinecraftWinWidth").toInt()); - ui->windowHeightSpinBox->setValue(m_settings->get("MinecraftWinHeight").toInt()); - - // Memory - ui->memoryGroupBox->setChecked(m_settings->get("OverrideMemory").toBool()); - int min = m_settings->get("MinMemAlloc").toInt(); - int max = m_settings->get("MaxMemAlloc").toInt(); - if(min < max) - { - ui->minMemSpinBox->setValue(min); - ui->maxMemSpinBox->setValue(max); - } - else - { - ui->minMemSpinBox->setValue(max); - ui->maxMemSpinBox->setValue(min); - } - ui->permGenSpinBox->setValue(m_settings->get("PermGen").toInt()); - bool permGenVisible = m_settings->get("PermGenVisible").toBool(); - ui->permGenSpinBox->setVisible(permGenVisible); - ui->labelPermGen->setVisible(permGenVisible); - ui->labelPermgenNote->setVisible(permGenVisible); - - - // Java Settings - bool overrideJava = m_settings->get("OverrideJava").toBool(); - bool overrideLocation = m_settings->get("OverrideJavaLocation").toBool() || overrideJava; - bool overrideArgs = m_settings->get("OverrideJavaArgs").toBool() || overrideJava; - - ui->javaSettingsGroupBox->setChecked(overrideLocation); - ui->javaPathTextBox->setText(m_settings->get("JavaPath").toString()); - - ui->javaArgumentsGroupBox->setChecked(overrideArgs); - ui->jvmArgsTextBox->setPlainText(m_settings->get("JvmArgs").toString()); - - // Custom commands - ui->customCommands->initialize( - true, - m_settings->get("OverrideCommands").toBool(), - m_settings->get("PreLaunchCommand").toString(), - m_settings->get("WrapperCommand").toString(), - m_settings->get("PostExitCommand").toString() - ); - - // Workarounds - ui->nativeWorkaroundsGroupBox->setChecked(m_settings->get("OverrideNativeWorkarounds").toBool()); - ui->useNativeGLFWCheck->setChecked(m_settings->get("UseNativeGLFW").toBool()); - ui->useNativeOpenALCheck->setChecked(m_settings->get("UseNativeOpenAL").toBool()); - - // Miscellanous - ui->gameTimeGroupBox->setChecked(m_settings->get("OverrideGameTime").toBool()); - ui->showGameTime->setChecked(m_settings->get("ShowGameTime").toBool()); - ui->recordGameTime->setChecked(m_settings->get("RecordGameTime").toBool()); - - ui->serverJoinGroupBox->setChecked(m_settings->get("JoinServerOnLaunch").toBool()); - ui->serverJoinAddress->setText(m_settings->get("JoinServerOnLaunchAddress").toString()); -} - -void InstanceSettingsPage::on_javaDetectBtn_clicked() -{ - JavaInstallPtr java; - - VersionSelectDialog vselect(MMC->javalist().get(), tr("Select a Java version"), this, true); - vselect.setResizeOn(2); - vselect.exec(); - - if (vselect.result() == QDialog::Accepted && vselect.selectedVersion()) - { - java = std::dynamic_pointer_cast<JavaInstall>(vselect.selectedVersion()); - ui->javaPathTextBox->setText(java->path); - bool visible = java->id.requiresPermGen() && m_settings->get("OverrideMemory").toBool(); - ui->permGenSpinBox->setVisible(visible); - ui->labelPermGen->setVisible(visible); - ui->labelPermgenNote->setVisible(visible); - m_settings->set("PermGenVisible", visible); - } -} - -void InstanceSettingsPage::on_javaBrowseBtn_clicked() -{ - QString raw_path = QFileDialog::getOpenFileName(this, tr("Find Java executable")); - - // do not allow current dir - it's dirty. Do not allow dirs that don't exist - if(raw_path.isEmpty()) - { - return; - } - QString cooked_path = FS::NormalizePath(raw_path); - - QFileInfo javaInfo(cooked_path); - if(!javaInfo.exists() || !javaInfo.isExecutable()) - { - return; - } - ui->javaPathTextBox->setText(cooked_path); - - // custom Java could be anything... enable perm gen option - ui->permGenSpinBox->setVisible(true); - ui->labelPermGen->setVisible(true); - ui->labelPermgenNote->setVisible(true); - m_settings->set("PermGenVisible", true); -} - -void InstanceSettingsPage::on_javaTestBtn_clicked() -{ - if(checker) - { - return; - } - checker.reset(new JavaCommon::TestCheck( - this, ui->javaPathTextBox->text(), ui->jvmArgsTextBox->toPlainText().replace("\n", " "), - ui->minMemSpinBox->value(), ui->maxMemSpinBox->value(), ui->permGenSpinBox->value())); - connect(checker.get(), SIGNAL(finished()), SLOT(checkerFinished())); - checker->run(); -} - -void InstanceSettingsPage::checkerFinished() -{ - checker.reset(); -} diff --git a/application/pages/instance/InstanceSettingsPage.h b/application/pages/instance/InstanceSettingsPage.h deleted file mode 100644 index 068213a8..00000000 --- a/application/pages/instance/InstanceSettingsPage.h +++ /dev/null @@ -1,76 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QWidget> - -#include "java/JavaChecker.h" -#include "BaseInstance.h" -#include <QObjectPtr.h> -#include "pages/BasePage.h" -#include "JavaCommon.h" -#include "MultiMC.h" - -class JavaChecker; -namespace Ui -{ -class InstanceSettingsPage; -} - -class InstanceSettingsPage : public QWidget, public BasePage -{ - Q_OBJECT - -public: - explicit InstanceSettingsPage(BaseInstance *inst, QWidget *parent = 0); - virtual ~InstanceSettingsPage(); - virtual QString displayName() const override - { - return tr("Settings"); - } - virtual QIcon icon() const override - { - return MMC->getThemedIcon("instance-settings"); - } - virtual QString id() const override - { - return "settings"; - } - virtual bool apply() override; - virtual QString helpPage() const override - { - return "Instance-settings"; - } - virtual bool shouldDisplay() const override; - -private slots: - void on_javaDetectBtn_clicked(); - void on_javaTestBtn_clicked(); - void on_javaBrowseBtn_clicked(); - - void applySettings(); - void loadSettings(); - - void checkerFinished(); - - void globalSettingsButtonClicked(bool checked); - -private: - Ui::InstanceSettingsPage *ui; - BaseInstance *m_instance; - SettingsObjectPtr m_settings; - unique_qobject_ptr<JavaCommon::TestCheck> checker; -}; diff --git a/application/pages/instance/InstanceSettingsPage.ui b/application/pages/instance/InstanceSettingsPage.ui deleted file mode 100644 index e569ce56..00000000 --- a/application/pages/instance/InstanceSettingsPage.ui +++ /dev/null @@ -1,548 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>InstanceSettingsPage</class> - <widget class="QWidget" name="InstanceSettingsPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>691</width> - <height>581</height> - </rect> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <widget class="QCommandLinkButton" name="openGlobalJavaSettingsButton"> - <property name="text"> - <string>Open Global Settings</string> - </property> - <property name="description"> - <string>The settings here are overrides for global settings.</string> - </property> - </widget> - </item> - <item> - <widget class="QTabWidget" name="settingsTabs"> - <property name="tabShape"> - <enum>QTabWidget::Rounded</enum> - </property> - <property name="currentIndex"> - <number>0</number> - </property> - <widget class="QWidget" name="minecraftTab"> - <attribute name="title"> - <string notr="true">Java</string> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout_5"> - <item> - <widget class="QGroupBox" name="javaSettingsGroupBox"> - <property name="enabled"> - <bool>true</bool> - </property> - <property name="title"> - <string>Java insta&llation</string> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="checked"> - <bool>false</bool> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0" colspan="3"> - <widget class="QLineEdit" name="javaPathTextBox"/> - </item> - <item row="1" column="0"> - <widget class="QPushButton" name="javaDetectBtn"> - <property name="text"> - <string>Auto-detect...</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QPushButton" name="javaBrowseBtn"> - <property name="text"> - <string>Browse...</string> - </property> - </widget> - </item> - <item row="1" column="2"> - <widget class="QPushButton" name="javaTestBtn"> - <property name="text"> - <string>Test</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="memoryGroupBox"> - <property name="enabled"> - <bool>true</bool> - </property> - <property name="title"> - <string>Memor&y</string> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="checked"> - <bool>false</bool> - </property> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="0" column="0"> - <widget class="QLabel" name="labelMinMem"> - <property name="text"> - <string>Minimum memory allocation:</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QSpinBox" name="maxMemSpinBox"> - <property name="toolTip"> - <string>The maximum amount of memory Minecraft is allowed to use.</string> - </property> - <property name="suffix"> - <string notr="true"> MiB</string> - </property> - <property name="minimum"> - <number>128</number> - </property> - <property name="maximum"> - <number>65536</number> - </property> - <property name="singleStep"> - <number>128</number> - </property> - <property name="value"> - <number>1024</number> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QSpinBox" name="minMemSpinBox"> - <property name="toolTip"> - <string>The amount of memory Minecraft is started with.</string> - </property> - <property name="suffix"> - <string notr="true"> MiB</string> - </property> - <property name="minimum"> - <number>128</number> - </property> - <property name="maximum"> - <number>65536</number> - </property> - <property name="singleStep"> - <number>128</number> - </property> - <property name="value"> - <number>256</number> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QSpinBox" name="permGenSpinBox"> - <property name="toolTip"> - <string>The amount of memory available to store loaded Java classes.</string> - </property> - <property name="suffix"> - <string notr="true"> MiB</string> - </property> - <property name="minimum"> - <number>64</number> - </property> - <property name="maximum"> - <number>999999999</number> - </property> - <property name="singleStep"> - <number>8</number> - </property> - <property name="value"> - <number>64</number> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="labelPermGen"> - <property name="text"> - <string notr="true">PermGen:</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="labelMaxMem"> - <property name="text"> - <string>Maximum memory allocation:</string> - </property> - </widget> - </item> - <item row="3" column="0" colspan="2"> - <widget class="QLabel" name="labelPermgenNote"> - <property name="text"> - <string>Note: Permgen is set automatically by Java 8 and later</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="javaArgumentsGroupBox"> - <property name="enabled"> - <bool>true</bool> - </property> - <property name="title"> - <string>Java argumen&ts</string> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="checked"> - <bool>false</bool> - </property> - <layout class="QGridLayout" name="gridLayout_5"> - <item row="1" column="1"> - <widget class="QPlainTextEdit" name="jvmArgsTextBox"/> - </item> - </layout> - </widget> - </item> - </layout> - </widget> - <widget class="QWidget" name="javaTab"> - <attribute name="title"> - <string>Game windows</string> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout_3"> - <item> - <widget class="QGroupBox" name="windowSizeGroupBox"> - <property name="enabled"> - <bool>true</bool> - </property> - <property name="title"> - <string>Game Window</string> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="checked"> - <bool>false</bool> - </property> - <layout class="QVBoxLayout" name="verticalLayout_4"> - <item> - <widget class="QCheckBox" name="maximizedCheckBox"> - <property name="text"> - <string>Start Minecraft maximized?</string> - </property> - </widget> - </item> - <item> - <layout class="QGridLayout" name="gridLayoutWindowSize"> - <item row="1" column="0"> - <widget class="QLabel" name="labelWindowHeight"> - <property name="text"> - <string>Window height:</string> - </property> - </widget> - </item> - <item row="0" column="0"> - <widget class="QLabel" name="labelWindowWidth"> - <property name="text"> - <string>Window width:</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QSpinBox" name="windowWidthSpinBox"> - <property name="minimum"> - <number>1</number> - </property> - <property name="maximum"> - <number>65536</number> - </property> - <property name="singleStep"> - <number>1</number> - </property> - <property name="value"> - <number>854</number> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QSpinBox" name="windowHeightSpinBox"> - <property name="minimum"> - <number>1</number> - </property> - <property name="maximum"> - <number>65536</number> - </property> - <property name="value"> - <number>480</number> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="consoleSettingsBox"> - <property name="enabled"> - <bool>true</bool> - </property> - <property name="title"> - <string>Conso&le Settings</string> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="checked"> - <bool>false</bool> - </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QCheckBox" name="showConsoleCheck"> - <property name="text"> - <string>Show console while the game is running?</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="autoCloseConsoleCheck"> - <property name="text"> - <string>Automatically close console when the game quits?</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="showConsoleErrorCheck"> - <property name="text"> - <string>Show console when the game crashes?</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <spacer name="verticalSpacerMinecraft_2"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>88</width> - <height>125</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - <widget class="QWidget" name="tab"> - <attribute name="title"> - <string>Custom commands</string> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout_6"> - <item> - <widget class="CustomCommands" name="customCommands" native="true"/> - </item> - </layout> - </widget> - <widget class="QWidget" name="workaroundsPage"> - <attribute name="title"> - <string>Workarounds</string> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout_8"> - <item> - <widget class="QGroupBox" name="nativeWorkaroundsGroupBox"> - <property name="enabled"> - <bool>true</bool> - </property> - <property name="title"> - <string>Native libraries</string> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="checked"> - <bool>false</bool> - </property> - <layout class="QVBoxLayout" name="verticalLayout_7"> - <item> - <widget class="QCheckBox" name="useNativeGLFWCheck"> - <property name="text"> - <string>Use system installation of GLFW</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="useNativeOpenALCheck"> - <property name="text"> - <string>Use system installation of OpenAL</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - <widget class="QWidget" name="miscellanousPage"> - <attribute name="title"> - <string>Miscellanous</string> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout_9"> - <item> - <widget class="QGroupBox" name="gameTimeGroupBox"> - <property name="enabled"> - <bool>true</bool> - </property> - <property name="title"> - <string>Override global game time settings</string> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="checked"> - <bool>false</bool> - </property> - <layout class="QVBoxLayout" name="verticalLayout_10"> - <item> - <widget class="QCheckBox" name="showGameTime"> - <property name="text"> - <string>Show time spent playing this instance</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="recordGameTime"> - <property name="text"> - <string>Record time spent playing this instance</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="serverJoinGroupBox"> - <property name="title"> - <string>Set a server to join on launch</string> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="checked"> - <bool>false</bool> - </property> - <layout class="QVBoxLayout" name="verticalLayout_11"> - <item> - <layout class="QGridLayout" name="serverJoinLayout"> - <item row="0" column="0"> - <widget class="QLabel" name="serverJoinAddressLabel"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>Server address:</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLineEdit" name="serverJoinAddress"/> - </item> - </layout> - </item> - </layout> - </widget> - </item> - <item> - <spacer name="verticalSpacerMiscellanous"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - </widget> - </item> - </layout> - </widget> - <customwidgets> - <customwidget> - <class>CustomCommands</class> - <extends>QWidget</extends> - <header>widgets/CustomCommands.h</header> - <container>1</container> - </customwidget> - </customwidgets> - <tabstops> - <tabstop>openGlobalJavaSettingsButton</tabstop> - <tabstop>settingsTabs</tabstop> - <tabstop>javaSettingsGroupBox</tabstop> - <tabstop>javaPathTextBox</tabstop> - <tabstop>javaDetectBtn</tabstop> - <tabstop>javaBrowseBtn</tabstop> - <tabstop>javaTestBtn</tabstop> - <tabstop>memoryGroupBox</tabstop> - <tabstop>minMemSpinBox</tabstop> - <tabstop>maxMemSpinBox</tabstop> - <tabstop>permGenSpinBox</tabstop> - <tabstop>javaArgumentsGroupBox</tabstop> - <tabstop>jvmArgsTextBox</tabstop> - <tabstop>windowSizeGroupBox</tabstop> - <tabstop>maximizedCheckBox</tabstop> - <tabstop>windowWidthSpinBox</tabstop> - <tabstop>windowHeightSpinBox</tabstop> - <tabstop>consoleSettingsBox</tabstop> - <tabstop>showConsoleCheck</tabstop> - <tabstop>autoCloseConsoleCheck</tabstop> - <tabstop>showConsoleErrorCheck</tabstop> - <tabstop>nativeWorkaroundsGroupBox</tabstop> - <tabstop>useNativeGLFWCheck</tabstop> - <tabstop>useNativeOpenALCheck</tabstop> - <tabstop>showGameTime</tabstop> - <tabstop>recordGameTime</tabstop> - </tabstops> - <resources/> - <connections/> -</ui> diff --git a/application/pages/instance/LegacyUpgradePage.cpp b/application/pages/instance/LegacyUpgradePage.cpp deleted file mode 100644 index af800b03..00000000 --- a/application/pages/instance/LegacyUpgradePage.cpp +++ /dev/null @@ -1,50 +0,0 @@ -#include "LegacyUpgradePage.h" -#include "ui_LegacyUpgradePage.h" - -#include "InstanceList.h" -#include "minecraft/legacy/LegacyInstance.h" -#include "minecraft/legacy/LegacyUpgradeTask.h" -#include "MultiMC.h" -#include "dialogs/CustomMessageBox.h" -#include "dialogs/ProgressDialog.h" - -LegacyUpgradePage::LegacyUpgradePage(InstancePtr inst, QWidget *parent) - : QWidget(parent), ui(new Ui::LegacyUpgradePage), m_inst(inst) -{ - ui->setupUi(this); -} - -LegacyUpgradePage::~LegacyUpgradePage() -{ - delete ui; -} - -void LegacyUpgradePage::runModalTask(Task *task) -{ - connect(task, &Task::failed, [this](QString reason) - { - CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Warning)->show(); - }); - ProgressDialog loadDialog(this); - loadDialog.setSkipButton(true, tr("Abort")); - if(loadDialog.execWithTask(task) == QDialog::Accepted) - { - m_container->requestClose(); - } -} - -void LegacyUpgradePage::on_upgradeButton_clicked() -{ - QString newName = tr("%1 (Migrated)").arg(m_inst->name()); - auto upgradeTask = new LegacyUpgradeTask(m_inst); - upgradeTask->setName(newName); - upgradeTask->setGroup(MMC->instances()->getInstanceGroup(m_inst->id())); - upgradeTask->setIcon(m_inst->iconKey()); - unique_qobject_ptr<Task> task(MMC->instances()->wrapInstanceTask(upgradeTask)); - runModalTask(task.get()); -} - -bool LegacyUpgradePage::shouldDisplay() const -{ - return !m_inst->isRunning(); -} diff --git a/application/pages/instance/LegacyUpgradePage.h b/application/pages/instance/LegacyUpgradePage.h deleted file mode 100644 index df34e33a..00000000 --- a/application/pages/instance/LegacyUpgradePage.h +++ /dev/null @@ -1,64 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QWidget> - -#include "minecraft/legacy/LegacyInstance.h" -#include "pages/BasePage.h" -#include <MultiMC.h> -#include "tasks/Task.h" - -namespace Ui -{ -class LegacyUpgradePage; -} - -class LegacyUpgradePage : public QWidget, public BasePage -{ - Q_OBJECT - -public: - explicit LegacyUpgradePage(InstancePtr inst, QWidget *parent = 0); - virtual ~LegacyUpgradePage(); - virtual QString displayName() const override - { - return tr("Upgrade"); - } - virtual QIcon icon() const override - { - return MMC->getThemedIcon("checkupdate"); - } - virtual QString id() const override - { - return "upgrade"; - } - virtual QString helpPage() const override - { - return "Legacy-upgrade"; - } - virtual bool shouldDisplay() const override; - -private slots: - void on_upgradeButton_clicked(); - -private: - void runModalTask(Task *task); - -private: - Ui::LegacyUpgradePage *ui; - InstancePtr m_inst; -}; diff --git a/application/pages/instance/LegacyUpgradePage.ui b/application/pages/instance/LegacyUpgradePage.ui deleted file mode 100644 index a94ee039..00000000 --- a/application/pages/instance/LegacyUpgradePage.ui +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>LegacyUpgradePage</class> - <widget class="QWidget" name="LegacyUpgradePage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>546</width> - <height>405</height> - </rect> - </property> - <layout class="QVBoxLayout" name="verticalLayout_5"> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <widget class="QTextBrowser" name="textBrowser"> - <property name="html"> - <string><html><body><h1>Upgrade is required</h1><p>MultiMC now supports old Minecraft versions and all the required features in the new (OneSix) instance format. As a consequence, the old (Legacy) format has been entirely disabled and old instances need to be upgraded.</p><p>The upgrade will create a new instance with the same contents as the current one, in the new format. The original instance will remain untouched, in case anything goes wrong in the process.</p><p>Please report any issues on our <a href="https://github.com/MultiMC/MultiMC5/issues">github issues page</a>.</p><p>There is also a <a href="https://discord.gg/GtPmv93">discord channel for testing here</a>.</p></body></html></string> - </property> - <property name="openExternalLinks"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QCommandLinkButton" name="upgradeButton"> - <property name="text"> - <string>Upgrade the instance</string> - </property> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/application/pages/instance/LogPage.cpp b/application/pages/instance/LogPage.cpp deleted file mode 100644 index 3d2085c6..00000000 --- a/application/pages/instance/LogPage.cpp +++ /dev/null @@ -1,312 +0,0 @@ -#include "LogPage.h" -#include "ui_LogPage.h" - -#include "MultiMC.h" - -#include <QIcon> -#include <QScrollBar> -#include <QShortcut> - -#include "launch/LaunchTask.h" -#include <settings/Setting.h> -#include "GuiUtil.h" -#include <ColorCache.h> - -class LogFormatProxyModel : public QIdentityProxyModel -{ -public: - LogFormatProxyModel(QObject* parent = nullptr) : QIdentityProxyModel(parent) - { - } - QVariant data(const QModelIndex &index, int role) const override - { - switch(role) - { - case Qt::FontRole: - return m_font; - case Qt::TextColorRole: - { - MessageLevel::Enum level = (MessageLevel::Enum) QIdentityProxyModel::data(index, LogModel::LevelRole).toInt(); - return m_colors->getFront(level); - } - case Qt::BackgroundRole: - { - MessageLevel::Enum level = (MessageLevel::Enum) QIdentityProxyModel::data(index, LogModel::LevelRole).toInt(); - return m_colors->getBack(level); - } - default: - return QIdentityProxyModel::data(index, role); - } - } - - void setFont(QFont font) - { - m_font = font; - } - - void setColors(LogColorCache* colors) - { - m_colors.reset(colors); - } - - QModelIndex find(const QModelIndex &start, const QString &value, bool reverse) const - { - QModelIndex parentIndex = parent(start); - auto compare = [&](int r) -> QModelIndex - { - QModelIndex idx = index(r, start.column(), parentIndex); - if (!idx.isValid() || idx == start) - { - return QModelIndex(); - } - QVariant v = data(idx, Qt::DisplayRole); - QString t = v.toString(); - if (t.contains(value, Qt::CaseInsensitive)) - return idx; - return QModelIndex(); - }; - if(reverse) - { - int from = start.row(); - int to = 0; - - for (int i = 0; i < 2; ++i) - { - for (int r = from; (r >= to); --r) - { - auto idx = compare(r); - if(idx.isValid()) - return idx; - } - // prepare for the next iteration - from = rowCount() - 1; - to = start.row(); - } - } - else - { - int from = start.row(); - int to = rowCount(parentIndex); - - for (int i = 0; i < 2; ++i) - { - for (int r = from; (r < to); ++r) - { - auto idx = compare(r); - if(idx.isValid()) - return idx; - } - // prepare for the next iteration - from = 0; - to = start.row(); - } - } - return QModelIndex(); - } -private: - QFont m_font; - std::unique_ptr<LogColorCache> m_colors; -}; - -LogPage::LogPage(InstancePtr instance, QWidget *parent) - : QWidget(parent), ui(new Ui::LogPage), m_instance(instance) -{ - ui->setupUi(this); - ui->tabWidget->tabBar()->hide(); - - m_proxy = new LogFormatProxyModel(this); - // set up text colors in the log proxy and adapt them to the current theme foreground and background - { - auto origForeground = ui->text->palette().color(ui->text->foregroundRole()); - auto origBackground = ui->text->palette().color(ui->text->backgroundRole()); - m_proxy->setColors(new LogColorCache(origForeground, origBackground)); - } - - // set up fonts in the log proxy - { - QString fontFamily = MMC->settings()->get("ConsoleFont").toString(); - bool conversionOk = false; - int fontSize = MMC->settings()->get("ConsoleFontSize").toInt(&conversionOk); - if(!conversionOk) - { - fontSize = 11; - } - m_proxy->setFont(QFont(fontFamily, fontSize)); - } - - ui->text->setModel(m_proxy); - - // set up instance and launch process recognition - { - auto launchTask = m_instance->getLaunchTask(); - if(launchTask) - { - setInstanceLaunchTaskChanged(launchTask, true); - } - connect(m_instance.get(), &BaseInstance::launchTaskChanged, this, &LogPage::onInstanceLaunchTaskChanged); - } - - auto findShortcut = new QShortcut(QKeySequence(QKeySequence::Find), this); - connect(findShortcut, SIGNAL(activated()), SLOT(findActivated())); - auto findNextShortcut = new QShortcut(QKeySequence(QKeySequence::FindNext), this); - connect(findNextShortcut, SIGNAL(activated()), SLOT(findNextActivated())); - connect(ui->searchBar, SIGNAL(returnPressed()), SLOT(on_findButton_clicked())); - auto findPreviousShortcut = new QShortcut(QKeySequence(QKeySequence::FindPrevious), this); - connect(findPreviousShortcut, SIGNAL(activated()), SLOT(findPreviousActivated())); -} - -LogPage::~LogPage() -{ - delete ui; -} - -void LogPage::modelStateToUI() -{ - if(m_model->wrapLines()) - { - ui->text->setWordWrap(true); - ui->wrapCheckbox->setCheckState(Qt::Checked); - } - else - { - ui->text->setWordWrap(false); - ui->wrapCheckbox->setCheckState(Qt::Unchecked); - } - if(m_model->suspended()) - { - ui->trackLogCheckbox->setCheckState(Qt::Unchecked); - } - else - { - ui->trackLogCheckbox->setCheckState(Qt::Checked); - } -} - -void LogPage::UIToModelState() -{ - if(!m_model) - { - return; - } - m_model->setLineWrap(ui->wrapCheckbox->checkState() == Qt::Checked); - m_model->suspend(ui->trackLogCheckbox->checkState() != Qt::Checked); -} - -void LogPage::setInstanceLaunchTaskChanged(shared_qobject_ptr<LaunchTask> proc, bool initial) -{ - m_process = proc; - if(m_process) - { - m_model = proc->getLogModel(); - m_proxy->setSourceModel(m_model.get()); - if(initial) - { - modelStateToUI(); - } - else - { - UIToModelState(); - } - } - else - { - m_proxy->setSourceModel(nullptr); - m_model.reset(); - } -} - -void LogPage::onInstanceLaunchTaskChanged(shared_qobject_ptr<LaunchTask> proc) -{ - setInstanceLaunchTaskChanged(proc, false); -} - -bool LogPage::apply() -{ - return true; -} - -bool LogPage::shouldDisplay() const -{ - return m_instance->isRunning() || m_proxy->rowCount() > 0; -} - -void LogPage::on_btnPaste_clicked() -{ - if(!m_model) - return; - - //FIXME: turn this into a proper task and move the upload logic out of GuiUtil! - m_model->append(MessageLevel::MultiMC, QString("MultiMC: Log upload triggered at: %1").arg(QDateTime::currentDateTime().toString(Qt::RFC2822Date))); - auto url = GuiUtil::uploadPaste(m_model->toPlainText(), this); - if(!url.isEmpty()) - { - m_model->append(MessageLevel::MultiMC, QString("MultiMC: Log uploaded to: %1").arg(url)); - } - else - { - m_model->append(MessageLevel::Error, "MultiMC: Log upload failed!"); - } -} - -void LogPage::on_btnCopy_clicked() -{ - if(!m_model) - return; - m_model->append(MessageLevel::MultiMC, QString("Clipboard copy at: %1").arg(QDateTime::currentDateTime().toString(Qt::RFC2822Date))); - GuiUtil::setClipboardText(m_model->toPlainText()); -} - -void LogPage::on_btnClear_clicked() -{ - if(!m_model) - return; - m_model->clear(); - m_container->refreshContainer(); -} - -void LogPage::on_btnBottom_clicked() -{ - ui->text->scrollToBottom(); -} - -void LogPage::on_trackLogCheckbox_clicked(bool checked) -{ - if(!m_model) - return; - m_model->suspend(!checked); -} - -void LogPage::on_wrapCheckbox_clicked(bool checked) -{ - ui->text->setWordWrap(checked); - if(!m_model) - return; - m_model->setLineWrap(checked); -} - -void LogPage::on_findButton_clicked() -{ - auto modifiers = QApplication::keyboardModifiers(); - bool reverse = modifiers & Qt::ShiftModifier; - ui->text->findNext(ui->searchBar->text(), reverse); -} - -void LogPage::findNextActivated() -{ - ui->text->findNext(ui->searchBar->text(), false); -} - -void LogPage::findPreviousActivated() -{ - ui->text->findNext(ui->searchBar->text(), true); -} - -void LogPage::findActivated() -{ - // focus the search bar if it doesn't have focus - if (!ui->searchBar->hasFocus()) - { - ui->searchBar->setFocus(); - ui->searchBar->selectAll(); - } -} diff --git a/application/pages/instance/LogPage.h b/application/pages/instance/LogPage.h deleted file mode 100644 index b0b0e04b..00000000 --- a/application/pages/instance/LogPage.h +++ /dev/null @@ -1,86 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QWidget> - -#include "BaseInstance.h" -#include "launch/LaunchTask.h" -#include "pages/BasePage.h" -#include <MultiMC.h> - -namespace Ui -{ -class LogPage; -} -class QTextCharFormat; -class LogFormatProxyModel; - -class LogPage : public QWidget, public BasePage -{ - Q_OBJECT - -public: - explicit LogPage(InstancePtr instance, QWidget *parent = 0); - virtual ~LogPage(); - virtual QString displayName() const override - { - return tr("Minecraft Log"); - } - virtual QIcon icon() const override - { - return MMC->getThemedIcon("log"); - } - virtual QString id() const override - { - return "console"; - } - virtual bool apply() override; - virtual QString helpPage() const override - { - return "Minecraft-Logs"; - } - virtual bool shouldDisplay() const override; - -private slots: - void on_btnPaste_clicked(); - void on_btnCopy_clicked(); - void on_btnClear_clicked(); - void on_btnBottom_clicked(); - - void on_trackLogCheckbox_clicked(bool checked); - void on_wrapCheckbox_clicked(bool checked); - - void on_findButton_clicked(); - void findActivated(); - void findNextActivated(); - void findPreviousActivated(); - - void onInstanceLaunchTaskChanged(shared_qobject_ptr<LaunchTask> proc); - -private: - void modelStateToUI(); - void UIToModelState(); - void setInstanceLaunchTaskChanged(shared_qobject_ptr<LaunchTask> proc, bool initial); - -private: - Ui::LogPage *ui; - InstancePtr m_instance; - shared_qobject_ptr<LaunchTask> m_process; - - LogFormatProxyModel * m_proxy; - shared_qobject_ptr <LogModel> m_model; -}; diff --git a/application/pages/instance/LogPage.ui b/application/pages/instance/LogPage.ui deleted file mode 100644 index 4843d7c3..00000000 --- a/application/pages/instance/LogPage.ui +++ /dev/null @@ -1,182 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>LogPage</class> - <widget class="QWidget" name="LogPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>825</width> - <height>782</height> - </rect> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <widget class="QTabWidget" name="tabWidget"> - <property name="currentIndex"> - <number>0</number> - </property> - <widget class="QWidget" name="tab"> - <attribute name="title"> - <string notr="true">Tab 1</string> - </attribute> - <layout class="QGridLayout" name="gridLayout"> - <item row="1" column="0" colspan="5"> - <widget class="LogView" name="text"> - <property name="undoRedoEnabled"> - <bool>false</bool> - </property> - <property name="readOnly"> - <bool>true</bool> - </property> - <property name="plainText"> - <string notr="true"/> - </property> - <property name="textInteractionFlags"> - <set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> - </property> - <property name="centerOnScroll"> - <bool>false</bool> - </property> - </widget> - </item> - <item row="0" column="0" colspan="5"> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QCheckBox" name="trackLogCheckbox"> - <property name="text"> - <string>Keep updating</string> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="wrapCheckbox"> - <property name="text"> - <string>Wrap lines</string> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="btnCopy"> - <property name="toolTip"> - <string>Copy the whole log into the clipboard</string> - </property> - <property name="text"> - <string>&Copy</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="btnPaste"> - <property name="toolTip"> - <string>Upload the log to paste.ee - it will stay online for a month</string> - </property> - <property name="text"> - <string>Upload</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="btnClear"> - <property name="toolTip"> - <string>Clear the log</string> - </property> - <property name="text"> - <string>Clear</string> - </property> - </widget> - </item> - </layout> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Search:</string> - </property> - </widget> - </item> - <item row="2" column="2"> - <widget class="QPushButton" name="findButton"> - <property name="text"> - <string>Find</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QLineEdit" name="searchBar"/> - </item> - <item row="2" column="4"> - <widget class="QPushButton" name="btnBottom"> - <property name="toolTip"> - <string>Scroll all the way to bottom</string> - </property> - <property name="text"> - <string>Bottom</string> - </property> - </widget> - </item> - <item row="2" column="3"> - <widget class="Line" name="line"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - </widget> - </item> - </layout> - </widget> - </widget> - </item> - </layout> - </widget> - <customwidgets> - <customwidget> - <class>LogView</class> - <extends>QPlainTextEdit</extends> - <header>widgets/LogView.h</header> - </customwidget> - </customwidgets> - <tabstops> - <tabstop>tabWidget</tabstop> - <tabstop>trackLogCheckbox</tabstop> - <tabstop>wrapCheckbox</tabstop> - <tabstop>btnCopy</tabstop> - <tabstop>btnPaste</tabstop> - <tabstop>btnClear</tabstop> - <tabstop>text</tabstop> - <tabstop>searchBar</tabstop> - <tabstop>findButton</tabstop> - </tabstops> - <resources/> - <connections/> -</ui> diff --git a/application/pages/instance/ModFolderPage.cpp b/application/pages/instance/ModFolderPage.cpp deleted file mode 100644 index 98f20e77..00000000 --- a/application/pages/instance/ModFolderPage.cpp +++ /dev/null @@ -1,363 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "ModFolderPage.h" -#include "ui_ModFolderPage.h" - -#include <QMessageBox> -#include <QEvent> -#include <QKeyEvent> -#include <QAbstractItemModel> -#include <QMenu> - -#include "MultiMC.h" -#include "dialogs/CustomMessageBox.h" -#include <GuiUtil.h> -#include "minecraft/mod/ModFolderModel.h" -#include "minecraft/mod/Mod.h" -#include "minecraft/VersionFilterData.h" -#include "minecraft/PackProfile.h" -#include <DesktopServices.h> - -#include <QSortFilterProxyModel> -#include "Version.h" - -namespace { - // FIXME: wasteful - void RemoveThePrefix(QString & string) { - QRegularExpression regex(QStringLiteral("^(([Tt][Hh][eE])|([Tt][eE][Hh])) +")); - string.remove(regex); - string = string.trimmed(); - } -} - -class ModSortProxy : public QSortFilterProxyModel -{ -public: - explicit ModSortProxy(QObject *parent = 0) : QSortFilterProxyModel(parent) - { - } - -protected: - bool filterAcceptsRow(int source_row, const QModelIndex & source_parent) const override { - ModFolderModel *model = qobject_cast<ModFolderModel *>(sourceModel()); - if(!model) { - return false; - } - const auto &mod = model->at(source_row); - if(mod.name().contains(filterRegExp())) { - return true; - } - if(mod.description().contains(filterRegExp())) { - return true; - } - for(auto & author: mod.authors()) { - if (author.contains(filterRegExp())) { - return true; - } - } - return false; - } - - bool lessThan(const QModelIndex & source_left, const QModelIndex & source_right) const override - { - ModFolderModel *model = qobject_cast<ModFolderModel *>(sourceModel()); - if( - !model || - !source_left.isValid() || - !source_right.isValid() || - source_left.column() != source_right.column() - ) { - return QSortFilterProxyModel::lessThan(source_left, source_right); - } - - // we are now guaranteed to have two valid indexes in the same column... we love the provided invariants unconditionally and proceed. - - auto column = (ModFolderModel::Columns) source_left.column(); - bool invert = false; - switch(column) { - // GH-2550 - sort by enabled/disabled - case ModFolderModel::ActiveColumn: { - auto dataL = source_left.data(Qt::CheckStateRole).toBool(); - auto dataR = source_right.data(Qt::CheckStateRole).toBool(); - if(dataL != dataR) { - return dataL > dataR; - } - // fallthrough - invert = sortOrder() == Qt::DescendingOrder; - } - // GH-2722 - sort mod names in a way that discards "The" prefixes - case ModFolderModel::NameColumn: { - auto dataL = model->data(model->index(source_left.row(), ModFolderModel::NameColumn)).toString(); - RemoveThePrefix(dataL); - auto dataR = model->data(model->index(source_right.row(), ModFolderModel::NameColumn)).toString(); - RemoveThePrefix(dataR); - - auto less = dataL.compare(dataR, sortCaseSensitivity()); - if(less != 0) { - return invert ? (less > 0) : (less < 0); - } - // fallthrough - invert = sortOrder() == Qt::DescendingOrder; - } - // GH-2762 - sort versions by parsing them as versions - case ModFolderModel::VersionColumn: { - auto dataL = Version(model->data(model->index(source_left.row(), ModFolderModel::VersionColumn)).toString()); - auto dataR = Version(model->data(model->index(source_right.row(), ModFolderModel::VersionColumn)).toString()); - return invert ? (dataL > dataR) : (dataL < dataR); - } - default: { - return QSortFilterProxyModel::lessThan(source_left, source_right); - } - } - } -}; - -ModFolderPage::ModFolderPage( - BaseInstance *inst, - std::shared_ptr<ModFolderModel> mods, - QString id, - QString iconName, - QString displayName, - QString helpPage, - QWidget *parent -) : - QMainWindow(parent), - ui(new Ui::ModFolderPage) -{ - ui->setupUi(this); - ui->actionsToolbar->insertSpacer(ui->actionView_configs); - - m_inst = inst; - on_RunningState_changed(m_inst && m_inst->isRunning()); - m_mods = mods; - m_id = id; - m_displayName = displayName; - m_iconName = iconName; - m_helpName = helpPage; - m_fileSelectionFilter = "%1 (*.zip *.jar)"; - m_filterModel = new ModSortProxy(this); - m_filterModel->setDynamicSortFilter(true); - m_filterModel->setFilterCaseSensitivity(Qt::CaseInsensitive); - m_filterModel->setSortCaseSensitivity(Qt::CaseInsensitive); - m_filterModel->setSourceModel(m_mods.get()); - m_filterModel->setFilterKeyColumn(-1); - ui->modTreeView->setModel(m_filterModel); - ui->modTreeView->installEventFilter(this); - ui->modTreeView->sortByColumn(1, Qt::AscendingOrder); - ui->modTreeView->setContextMenuPolicy(Qt::CustomContextMenu); - connect(ui->modTreeView, &ModListView::customContextMenuRequested, this, &ModFolderPage::ShowContextMenu); - connect(ui->modTreeView, &ModListView::activated, this, &ModFolderPage::modItemActivated); - - auto smodel = ui->modTreeView->selectionModel(); - connect(smodel, &QItemSelectionModel::currentChanged, this, &ModFolderPage::modCurrent); - connect(ui->filterEdit, &QLineEdit::textChanged, this, &ModFolderPage::on_filterTextChanged); - connect(m_inst, &BaseInstance::runningStatusChanged, this, &ModFolderPage::on_RunningState_changed); -} - -void ModFolderPage::modItemActivated(const QModelIndex&) -{ - if(!m_controlsEnabled) { - return; - } - auto selection = m_filterModel->mapSelectionToSource(ui->modTreeView->selectionModel()->selection()); - m_mods->setModStatus(selection.indexes(), ModFolderModel::Toggle); -} - -QMenu * ModFolderPage::createPopupMenu() -{ - QMenu* filteredMenu = QMainWindow::createPopupMenu(); - filteredMenu->removeAction(ui->actionsToolbar->toggleViewAction() ); - return filteredMenu; -} - -void ModFolderPage::ShowContextMenu(const QPoint& pos) -{ - auto menu = ui->actionsToolbar->createContextMenu(this, tr("Context menu")); - menu->exec(ui->modTreeView->mapToGlobal(pos)); - delete menu; -} - -void ModFolderPage::openedImpl() -{ - m_mods->startWatching(); -} - -void ModFolderPage::closedImpl() -{ - m_mods->stopWatching(); -} - -void ModFolderPage::on_filterTextChanged(const QString& newContents) -{ - m_viewFilter = newContents; - m_filterModel->setFilterFixedString(m_viewFilter); -} - - -CoreModFolderPage::CoreModFolderPage(BaseInstance *inst, std::shared_ptr<ModFolderModel> mods, - QString id, QString iconName, QString displayName, - QString helpPage, QWidget *parent) - : ModFolderPage(inst, mods, id, iconName, displayName, helpPage, parent) -{ -} - -ModFolderPage::~ModFolderPage() -{ - m_mods->stopWatching(); - delete ui; -} - -void ModFolderPage::on_RunningState_changed(bool running) -{ - if(m_controlsEnabled == !running) { - return; - } - m_controlsEnabled = !running; - ui->actionAdd->setEnabled(m_controlsEnabled); - ui->actionDisable->setEnabled(m_controlsEnabled); - ui->actionEnable->setEnabled(m_controlsEnabled); - ui->actionRemove->setEnabled(m_controlsEnabled); -} - -bool ModFolderPage::shouldDisplay() const -{ - return true; -} - -bool CoreModFolderPage::shouldDisplay() const -{ - if (ModFolderPage::shouldDisplay()) - { - auto inst = dynamic_cast<MinecraftInstance *>(m_inst); - if (!inst) - return true; - auto version = inst->getPackProfile(); - if (!version) - return true; - if(!version->getComponent("net.minecraftforge")) - { - return false; - } - if(!version->getComponent("net.minecraft")) - { - return false; - } - if(version->getComponent("net.minecraft")->getReleaseDateTime() < g_VersionFilterData.legacyCutoffDate) - { - return true; - } - } - return false; -} - -bool ModFolderPage::modListFilter(QKeyEvent *keyEvent) -{ - switch (keyEvent->key()) - { - case Qt::Key_Delete: - on_actionRemove_triggered(); - return true; - case Qt::Key_Plus: - on_actionAdd_triggered(); - return true; - default: - break; - } - return QWidget::eventFilter(ui->modTreeView, keyEvent); -} - -bool ModFolderPage::eventFilter(QObject *obj, QEvent *ev) -{ - if (ev->type() != QEvent::KeyPress) - { - return QWidget::eventFilter(obj, ev); - } - QKeyEvent *keyEvent = static_cast<QKeyEvent *>(ev); - if (obj == ui->modTreeView) - return modListFilter(keyEvent); - return QWidget::eventFilter(obj, ev); -} - -void ModFolderPage::on_actionAdd_triggered() -{ - if(!m_controlsEnabled) { - return; - } - auto list = GuiUtil::BrowseForFiles( - m_helpName, - tr("Select %1", - "Select whatever type of files the page contains. Example: 'Loader Mods'") - .arg(m_displayName), - m_fileSelectionFilter.arg(m_displayName), MMC->settings()->get("CentralModsDir").toString(), - this->parentWidget()); - if (!list.empty()) - { - for (auto filename : list) - { - m_mods->installMod(filename); - } - } -} - -void ModFolderPage::on_actionEnable_triggered() -{ - if(!m_controlsEnabled) { - return; - } - auto selection = m_filterModel->mapSelectionToSource(ui->modTreeView->selectionModel()->selection()); - m_mods->setModStatus(selection.indexes(), ModFolderModel::Enable); -} - -void ModFolderPage::on_actionDisable_triggered() -{ - if(!m_controlsEnabled) { - return; - } - auto selection = m_filterModel->mapSelectionToSource(ui->modTreeView->selectionModel()->selection()); - m_mods->setModStatus(selection.indexes(), ModFolderModel::Disable); -} - -void ModFolderPage::on_actionRemove_triggered() -{ - if(!m_controlsEnabled) { - return; - } - auto selection = m_filterModel->mapSelectionToSource(ui->modTreeView->selectionModel()->selection()); - m_mods->deleteMods(selection.indexes()); -} - -void ModFolderPage::on_actionView_configs_triggered() -{ - DesktopServices::openDirectory(m_inst->instanceConfigFolder(), true); -} - -void ModFolderPage::on_actionView_Folder_triggered() -{ - DesktopServices::openDirectory(m_mods->dir().absolutePath(), true); -} - -void ModFolderPage::modCurrent(const QModelIndex ¤t, const QModelIndex &previous) -{ - if (!current.isValid()) - { - ui->frame->clear(); - return; - } - auto sourceCurrent = m_filterModel->mapToSource(current); - int row = sourceCurrent.row(); - Mod &m = m_mods->operator[](row); - ui->frame->updateWithMod(m); -} diff --git a/application/pages/instance/ModFolderPage.h b/application/pages/instance/ModFolderPage.h deleted file mode 100644 index f653a8c0..00000000 --- a/application/pages/instance/ModFolderPage.h +++ /dev/null @@ -1,119 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QMainWindow> - -#include "minecraft/MinecraftInstance.h" -#include "pages/BasePage.h" -#include <MultiMC.h> - -class ModFolderModel; -namespace Ui -{ -class ModFolderPage; -} - -class ModFolderPage : public QMainWindow, public BasePage -{ - Q_OBJECT - -public: - explicit ModFolderPage( - BaseInstance *inst, - std::shared_ptr<ModFolderModel> mods, - QString id, - QString iconName, - QString displayName, - QString helpPage = "", - QWidget *parent = 0 - ); - virtual ~ModFolderPage(); - - void setFilter(const QString & filter) - { - m_fileSelectionFilter = filter; - } - - virtual QString displayName() const override - { - return m_displayName; - } - virtual QIcon icon() const override - { - return MMC->getThemedIcon(m_iconName); - } - virtual QString id() const override - { - return m_id; - } - virtual QString helpPage() const override - { - return m_helpName; - } - virtual bool shouldDisplay() const override; - - virtual void openedImpl() override; - virtual void closedImpl() override; -protected: - bool eventFilter(QObject *obj, QEvent *ev) override; - bool modListFilter(QKeyEvent *ev); - QMenu * createPopupMenu() override; - -protected: - BaseInstance *m_inst = nullptr; - -protected: - Ui::ModFolderPage *ui = nullptr; - std::shared_ptr<ModFolderModel> m_mods; - QSortFilterProxyModel *m_filterModel = nullptr; - QString m_iconName; - QString m_id; - QString m_displayName; - QString m_helpName; - QString m_fileSelectionFilter; - QString m_viewFilter; - bool m_controlsEnabled = true; - -public -slots: - void modCurrent(const QModelIndex ¤t, const QModelIndex &previous); - -private -slots: - void modItemActivated(const QModelIndex &index); - void on_filterTextChanged(const QString & newContents); - void on_RunningState_changed(bool running); - void on_actionAdd_triggered(); - void on_actionRemove_triggered(); - void on_actionEnable_triggered(); - void on_actionDisable_triggered(); - void on_actionView_Folder_triggered(); - void on_actionView_configs_triggered(); - void ShowContextMenu(const QPoint &pos); -}; - -class CoreModFolderPage : public ModFolderPage -{ -public: - explicit CoreModFolderPage(BaseInstance *inst, std::shared_ptr<ModFolderModel> mods, QString id, - QString iconName, QString displayName, QString helpPage = "", - QWidget *parent = 0); - virtual ~CoreModFolderPage() - { - } - virtual bool shouldDisplay() const; -}; diff --git a/application/pages/instance/ModFolderPage.ui b/application/pages/instance/ModFolderPage.ui deleted file mode 100644 index 954a0167..00000000 --- a/application/pages/instance/ModFolderPage.ui +++ /dev/null @@ -1,164 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>ModFolderPage</class> - <widget class="QMainWindow" name="ModFolderPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>1042</width> - <height>501</height> - </rect> - </property> - <widget class="QWidget" name="centralwidget"> - <layout class="QGridLayout" name="gridLayout"> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item row="4" column="1" colspan="3"> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="0" column="1"> - <widget class="QLineEdit" name="filterEdit"> - <property name="clearButtonEnabled"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="0" column="0"> - <widget class="QLabel" name="filterLabel"> - <property name="text"> - <string>Filter:</string> - </property> - </widget> - </item> - </layout> - </item> - <item row="2" column="1" colspan="3"> - <widget class="MCModInfoFrame" name="frame"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Minimum"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - <item row="1" column="1" colspan="3"> - <widget class="ModListView" name="modTreeView"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="acceptDrops"> - <bool>true</bool> - </property> - <property name="dragDropMode"> - <enum>QAbstractItemView::DropOnly</enum> - </property> - </widget> - </item> - </layout> - </widget> - <widget class="WideBar" name="actionsToolbar"> - <property name="windowTitle"> - <string>Actions</string> - </property> - <property name="toolButtonStyle"> - <enum>Qt::ToolButtonTextOnly</enum> - </property> - <attribute name="toolBarArea"> - <enum>RightToolBarArea</enum> - </attribute> - <attribute name="toolBarBreak"> - <bool>false</bool> - </attribute> - <addaction name="actionAdd"/> - <addaction name="separator"/> - <addaction name="actionRemove"/> - <addaction name="actionEnable"/> - <addaction name="actionDisable"/> - <addaction name="actionView_configs"/> - <addaction name="actionView_Folder"/> - </widget> - <action name="actionAdd"> - <property name="text"> - <string>&Add</string> - </property> - <property name="toolTip"> - <string>Add mods</string> - </property> - </action> - <action name="actionRemove"> - <property name="text"> - <string>&Remove</string> - </property> - <property name="toolTip"> - <string>Remove selected mods</string> - </property> - </action> - <action name="actionEnable"> - <property name="text"> - <string>&Enable</string> - </property> - <property name="toolTip"> - <string>Enable selected mods</string> - </property> - </action> - <action name="actionDisable"> - <property name="text"> - <string>&Disable</string> - </property> - <property name="toolTip"> - <string>Disable selected mods</string> - </property> - </action> - <action name="actionView_configs"> - <property name="text"> - <string>View &Configs</string> - </property> - <property name="toolTip"> - <string>Open the 'config' folder in the system file manager.</string> - </property> - </action> - <action name="actionView_Folder"> - <property name="text"> - <string>View &Folder</string> - </property> - </action> - </widget> - <customwidgets> - <customwidget> - <class>ModListView</class> - <extends>QTreeView</extends> - <header>widgets/ModListView.h</header> - </customwidget> - <customwidget> - <class>MCModInfoFrame</class> - <extends>QFrame</extends> - <header>widgets/MCModInfoFrame.h</header> - <container>1</container> - </customwidget> - <customwidget> - <class>WideBar</class> - <extends>QToolBar</extends> - <header>widgets/WideBar.h</header> - </customwidget> - </customwidgets> - <tabstops> - <tabstop>modTreeView</tabstop> - <tabstop>filterEdit</tabstop> - </tabstops> - <resources/> - <connections/> -</ui> diff --git a/application/pages/instance/NotesPage.cpp b/application/pages/instance/NotesPage.cpp deleted file mode 100644 index fa966c91..00000000 --- a/application/pages/instance/NotesPage.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "NotesPage.h" -#include "ui_NotesPage.h" -#include <QTabBar> - -NotesPage::NotesPage(BaseInstance *inst, QWidget *parent) - : QWidget(parent), ui(new Ui::NotesPage), m_inst(inst) -{ - ui->setupUi(this); - ui->noteEditor->setText(m_inst->notes()); -} - -NotesPage::~NotesPage() -{ - delete ui; -} - -bool NotesPage::apply() -{ - m_inst->setNotes(ui->noteEditor->toPlainText()); - return true; -} diff --git a/application/pages/instance/NotesPage.h b/application/pages/instance/NotesPage.h deleted file mode 100644 index d0c00ac1..00000000 --- a/application/pages/instance/NotesPage.h +++ /dev/null @@ -1,60 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QWidget> - -#include "BaseInstance.h" -#include "pages/BasePage.h" -#include <MultiMC.h> - -namespace Ui -{ -class NotesPage; -} - -class NotesPage : public QWidget, public BasePage -{ - Q_OBJECT - -public: - explicit NotesPage(BaseInstance *inst, QWidget *parent = 0); - virtual ~NotesPage(); - virtual QString displayName() const override - { - return tr("Notes"); - } - virtual QIcon icon() const override - { - auto icon = MMC->getThemedIcon("notes"); - if(icon.isNull()) - icon = MMC->getThemedIcon("news"); - return icon; - } - virtual QString id() const override - { - return "notes"; - } - virtual bool apply() override; - virtual QString helpPage() const override - { - return "Notes"; - } - -private: - Ui::NotesPage *ui; - BaseInstance *m_inst; -}; diff --git a/application/pages/instance/NotesPage.ui b/application/pages/instance/NotesPage.ui deleted file mode 100644 index 67cb261c..00000000 --- a/application/pages/instance/NotesPage.ui +++ /dev/null @@ -1,49 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>NotesPage</class> - <widget class="QWidget" name="NotesPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>731</width> - <height>538</height> - </rect> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <widget class="QTextEdit" name="noteEditor"> - <property name="verticalScrollBarPolicy"> - <enum>Qt::ScrollBarAlwaysOn</enum> - </property> - <property name="tabChangesFocus"> - <bool>true</bool> - </property> - <property name="acceptRichText"> - <bool>false</bool> - </property> - <property name="textInteractionFlags"> - <set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextEditable|Qt::TextEditorInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> - </property> - </widget> - </item> - </layout> - </widget> - <tabstops> - <tabstop>noteEditor</tabstop> - </tabstops> - <resources/> - <connections/> -</ui> diff --git a/application/pages/instance/OtherLogsPage.cpp b/application/pages/instance/OtherLogsPage.cpp deleted file mode 100644 index b67b84bd..00000000 --- a/application/pages/instance/OtherLogsPage.cpp +++ /dev/null @@ -1,313 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "OtherLogsPage.h" -#include "ui_OtherLogsPage.h" - -#include <QMessageBox> - -#include "GuiUtil.h" -#include "RecursiveFileSystemWatcher.h" -#include <GZip.h> -#include <FileSystem.h> -#include <QShortcut> - -OtherLogsPage::OtherLogsPage(QString path, IPathMatcher::Ptr fileFilter, QWidget *parent) - : QWidget(parent), ui(new Ui::OtherLogsPage), m_path(path), m_fileFilter(fileFilter), - m_watcher(new RecursiveFileSystemWatcher(this)) -{ - ui->setupUi(this); - ui->tabWidget->tabBar()->hide(); - - m_watcher->setMatcher(fileFilter); - m_watcher->setRootDir(QDir::current().absoluteFilePath(m_path)); - - connect(m_watcher, &RecursiveFileSystemWatcher::filesChanged, this, &OtherLogsPage::populateSelectLogBox); - populateSelectLogBox(); - - auto findShortcut = new QShortcut(QKeySequence(QKeySequence::Find), this); - connect(findShortcut, &QShortcut::activated, this, &OtherLogsPage::findActivated); - - auto findNextShortcut = new QShortcut(QKeySequence(QKeySequence::FindNext), this); - connect(findNextShortcut, &QShortcut::activated, this, &OtherLogsPage::findNextActivated); - - auto findPreviousShortcut = new QShortcut(QKeySequence(QKeySequence::FindPrevious), this); - connect(findPreviousShortcut, &QShortcut::activated, this, &OtherLogsPage::findPreviousActivated); - - connect(ui->searchBar, &QLineEdit::returnPressed, this, &OtherLogsPage::on_findButton_clicked); -} - -OtherLogsPage::~OtherLogsPage() -{ - delete ui; -} - -void OtherLogsPage::openedImpl() -{ - m_watcher->enable(); -} -void OtherLogsPage::closedImpl() -{ - m_watcher->disable(); -} - -void OtherLogsPage::populateSelectLogBox() -{ - ui->selectLogBox->clear(); - ui->selectLogBox->addItems(m_watcher->files()); - if (m_currentFile.isEmpty()) - { - setControlsEnabled(false); - ui->selectLogBox->setCurrentIndex(-1); - } - else - { - const int index = ui->selectLogBox->findText(m_currentFile); - if (index != -1) - { - ui->selectLogBox->setCurrentIndex(index); - setControlsEnabled(true); - } - else - { - setControlsEnabled(false); - } - } -} - -void OtherLogsPage::on_selectLogBox_currentIndexChanged(const int index) -{ - QString file; - if (index != -1) - { - file = ui->selectLogBox->itemText(index); - } - - if (file.isEmpty() || !QFile::exists(FS::PathCombine(m_path, file))) - { - m_currentFile = QString(); - ui->text->clear(); - setControlsEnabled(false); - } - else - { - m_currentFile = file; - on_btnReload_clicked(); - setControlsEnabled(true); - } -} - -void OtherLogsPage::on_btnReload_clicked() -{ - if(m_currentFile.isEmpty()) - { - setControlsEnabled(false); - return; - } - QFile file(FS::PathCombine(m_path, m_currentFile)); - if (!file.open(QFile::ReadOnly)) - { - setControlsEnabled(false); - ui->btnReload->setEnabled(true); // allow reload - m_currentFile = QString(); - QMessageBox::critical(this, tr("Error"), tr("Unable to open %1 for reading: %2") - .arg(m_currentFile, file.errorString())); - } - else - { - auto setPlainText = [&](const QString & text) - { - QString fontFamily = MMC->settings()->get("ConsoleFont").toString(); - bool conversionOk = false; - int fontSize = MMC->settings()->get("ConsoleFontSize").toInt(&conversionOk); - if(!conversionOk) - { - fontSize = 11; - } - QTextDocument *doc = ui->text->document(); - doc->setDefaultFont(QFont(fontFamily, fontSize)); - ui->text->setPlainText(text); - }; - auto showTooBig = [&]() - { - setPlainText( - tr("The file (%1) is too big. You may want to open it in a viewer optimized " - "for large files.").arg(file.fileName())); - }; - if(file.size() > (1024ll * 1024ll * 12ll)) - { - showTooBig(); - return; - } - QString content; - if(file.fileName().endsWith(".gz")) - { - QByteArray temp; - if(!GZip::unzip(file.readAll(), temp)) - { - setPlainText( - tr("The file (%1) is not readable.").arg(file.fileName())); - return; - } - content = QString::fromUtf8(temp); - } - else - { - content = QString::fromUtf8(file.readAll()); - } - if (content.size() >= 50000000ll) - { - showTooBig(); - return; - } - setPlainText(content); - } -} - -void OtherLogsPage::on_btnPaste_clicked() -{ - GuiUtil::uploadPaste(ui->text->toPlainText(), this); -} - -void OtherLogsPage::on_btnCopy_clicked() -{ - GuiUtil::setClipboardText(ui->text->toPlainText()); -} - -void OtherLogsPage::on_btnDelete_clicked() -{ - if(m_currentFile.isEmpty()) - { - setControlsEnabled(false); - return; - } - if (QMessageBox::question(this, tr("Delete"), - tr("Do you really want to delete %1?").arg(m_currentFile), - QMessageBox::Yes, QMessageBox::No) == QMessageBox::No) - { - return; - } - QFile file(FS::PathCombine(m_path, m_currentFile)); - if (!file.remove()) - { - QMessageBox::critical(this, tr("Error"), tr("Unable to delete %1: %2") - .arg(m_currentFile, file.errorString())); - } -} - - - -void OtherLogsPage::on_btnClean_clicked() -{ - auto toDelete = m_watcher->files(); - if(toDelete.isEmpty()) - { - return; - } - QMessageBox *messageBox = new QMessageBox(this); - messageBox->setWindowTitle(tr("Clean up")); - if(toDelete.size() > 5) - { - messageBox->setText(tr("Do you really want to delete all log files?")); - messageBox->setDetailedText(toDelete.join('\n')); - } - else - { - messageBox->setText(tr("Do you really want to delete these files?\n%1").arg(toDelete.join('\n'))); - } - messageBox->setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); - messageBox->setDefaultButton(QMessageBox::Ok); - messageBox->setTextInteractionFlags(Qt::TextSelectableByMouse); - messageBox->setIcon(QMessageBox::Question); - messageBox->setTextInteractionFlags(Qt::TextBrowserInteraction); - - if (messageBox->exec() != QMessageBox::Ok) - { - return; - } - QStringList failed; - for(auto item: toDelete) - { - QFile file(FS::PathCombine(m_path, item)); - if (!file.remove()) - { - failed.push_back(item); - } - } - if(!failed.empty()) - { - QMessageBox *messageBox = new QMessageBox(this); - messageBox->setWindowTitle(tr("Error")); - if(failed.size() > 5) - { - messageBox->setText(tr("Couldn't delete some files!")); - messageBox->setDetailedText(failed.join('\n')); - } - else - { - messageBox->setText(tr("Couldn't delete some files:\n%1").arg(failed.join('\n'))); - } - messageBox->setStandardButtons(QMessageBox::Ok); - messageBox->setDefaultButton(QMessageBox::Ok); - messageBox->setTextInteractionFlags(Qt::TextSelectableByMouse); - messageBox->setIcon(QMessageBox::Critical); - messageBox->setTextInteractionFlags(Qt::TextBrowserInteraction); - messageBox->exec(); - } -} - - -void OtherLogsPage::setControlsEnabled(const bool enabled) -{ - ui->btnReload->setEnabled(enabled); - ui->btnDelete->setEnabled(enabled); - ui->btnCopy->setEnabled(enabled); - ui->btnPaste->setEnabled(enabled); - ui->text->setEnabled(enabled); - ui->btnClean->setEnabled(enabled); -} - -// FIXME: HACK, use LogView instead? -static void findNext(QPlainTextEdit * _this, const QString& what, bool reverse) -{ - _this->find(what, reverse ? QTextDocument::FindFlag::FindBackward : QTextDocument::FindFlag(0)); -} - -void OtherLogsPage::on_findButton_clicked() -{ - auto modifiers = QApplication::keyboardModifiers(); - bool reverse = modifiers & Qt::ShiftModifier; - findNext(ui->text, ui->searchBar->text(), reverse); -} - -void OtherLogsPage::findNextActivated() -{ - findNext(ui->text, ui->searchBar->text(), false); -} - -void OtherLogsPage::findPreviousActivated() -{ - findNext(ui->text, ui->searchBar->text(), true); -} - -void OtherLogsPage::findActivated() -{ - // focus the search bar if it doesn't have focus - if (!ui->searchBar->hasFocus()) - { - ui->searchBar->setFocus(); - ui->searchBar->selectAll(); - } -} diff --git a/application/pages/instance/OtherLogsPage.h b/application/pages/instance/OtherLogsPage.h deleted file mode 100644 index 7f21c0fa..00000000 --- a/application/pages/instance/OtherLogsPage.h +++ /dev/null @@ -1,81 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QWidget> - -#include "pages/BasePage.h" -#include <MultiMC.h> -#include <pathmatcher/IPathMatcher.h> - -namespace Ui -{ -class OtherLogsPage; -} - -class RecursiveFileSystemWatcher; - -class OtherLogsPage : public QWidget, public BasePage -{ - Q_OBJECT - -public: - explicit OtherLogsPage(QString path, IPathMatcher::Ptr fileFilter, QWidget *parent = 0); - ~OtherLogsPage(); - - QString id() const override - { - return "logs"; - } - QString displayName() const override - { - return tr("Other logs"); - } - QIcon icon() const override - { - return MMC->getThemedIcon("log"); - } - QString helpPage() const override - { - return "Minecraft-Logs"; - } - void openedImpl() override; - void closedImpl() override; - -private slots: - void populateSelectLogBox(); - void on_selectLogBox_currentIndexChanged(const int index); - void on_btnReload_clicked(); - void on_btnPaste_clicked(); - void on_btnCopy_clicked(); - void on_btnDelete_clicked(); - void on_btnClean_clicked(); - - void on_findButton_clicked(); - void findActivated(); - void findNextActivated(); - void findPreviousActivated(); - -private: - void setControlsEnabled(const bool enabled); - -private: - Ui::OtherLogsPage *ui; - QString m_path; - QString m_currentFile; - IPathMatcher::Ptr m_fileFilter; - RecursiveFileSystemWatcher *m_watcher; -}; diff --git a/application/pages/instance/OtherLogsPage.ui b/application/pages/instance/OtherLogsPage.ui deleted file mode 100644 index 56ff3b62..00000000 --- a/application/pages/instance/OtherLogsPage.ui +++ /dev/null @@ -1,150 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>OtherLogsPage</class> - <widget class="QWidget" name="OtherLogsPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>657</width> - <height>538</height> - </rect> - </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <widget class="QTabWidget" name="tabWidget"> - <property name="currentIndex"> - <number>0</number> - </property> - <widget class="QWidget" name="tab"> - <attribute name="title"> - <string notr="true">Tab 1</string> - </attribute> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="2" column="1"> - <widget class="QLineEdit" name="searchBar"/> - </item> - <item row="2" column="2"> - <widget class="QPushButton" name="findButton"> - <property name="text"> - <string>Find</string> - </property> - </widget> - </item> - <item row="1" column="0" colspan="4"> - <widget class="QPlainTextEdit" name="text"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="verticalScrollBarPolicy"> - <enum>Qt::ScrollBarAlwaysOn</enum> - </property> - <property name="readOnly"> - <bool>true</bool> - </property> - <property name="textInteractionFlags"> - <set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> - </property> - </widget> - </item> - <item row="0" column="0" colspan="4"> - <layout class="QGridLayout" name="gridLayout"> - <item row="3" column="1"> - <widget class="QPushButton" name="btnCopy"> - <property name="toolTip"> - <string>Copy the whole log into the clipboard</string> - </property> - <property name="text"> - <string>&Copy</string> - </property> - </widget> - </item> - <item row="3" column="3"> - <widget class="QPushButton" name="btnDelete"> - <property name="toolTip"> - <string>Clear the log</string> - </property> - <property name="text"> - <string>Delete</string> - </property> - </widget> - </item> - <item row="3" column="2"> - <widget class="QPushButton" name="btnPaste"> - <property name="toolTip"> - <string>Upload the log to paste.ee - it will stay online for a month</string> - </property> - <property name="text"> - <string>Upload</string> - </property> - </widget> - </item> - <item row="3" column="4"> - <widget class="QPushButton" name="btnClean"> - <property name="toolTip"> - <string>Clear the log</string> - </property> - <property name="text"> - <string>Clean</string> - </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QPushButton" name="btnReload"> - <property name="text"> - <string>Reload</string> - </property> - </widget> - </item> - <item row="0" column="0" colspan="5"> - <widget class="QComboBox" name="selectLogBox"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - </layout> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Search:</string> - </property> - </widget> - </item> - </layout> - </widget> - </widget> - </item> - </layout> - </widget> - <tabstops> - <tabstop>tabWidget</tabstop> - <tabstop>selectLogBox</tabstop> - <tabstop>btnReload</tabstop> - <tabstop>btnCopy</tabstop> - <tabstop>btnPaste</tabstop> - <tabstop>btnDelete</tabstop> - <tabstop>btnClean</tabstop> - <tabstop>text</tabstop> - <tabstop>searchBar</tabstop> - <tabstop>findButton</tabstop> - </tabstops> - <resources/> - <connections/> -</ui> diff --git a/application/pages/instance/ResourcePackPage.h b/application/pages/instance/ResourcePackPage.h deleted file mode 100644 index 1486bf52..00000000 --- a/application/pages/instance/ResourcePackPage.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include "ModFolderPage.h" -#include "ui_ModFolderPage.h" - -class ResourcePackPage : public ModFolderPage -{ - Q_OBJECT -public: - explicit ResourcePackPage(MinecraftInstance *instance, QWidget *parent = 0) - : ModFolderPage(instance, instance->resourcePackList(), "resourcepacks", - "resourcepacks", tr("Resource packs"), "Resource-packs", parent) - { - ui->actionView_configs->setVisible(false); - } - virtual ~ResourcePackPage() {} - - virtual bool shouldDisplay() const override - { - return !m_inst->traits().contains("no-texturepacks") && - !m_inst->traits().contains("texturepacks"); - } -}; diff --git a/application/pages/instance/ScreenshotsPage.cpp b/application/pages/instance/ScreenshotsPage.cpp deleted file mode 100644 index efa0f9f2..00000000 --- a/application/pages/instance/ScreenshotsPage.cpp +++ /dev/null @@ -1,422 +0,0 @@ -#include "ScreenshotsPage.h" -#include "ui_ScreenshotsPage.h" - -#include <QModelIndex> -#include <QMutableListIterator> -#include <QMap> -#include <QSet> -#include <QFileIconProvider> -#include <QFileSystemModel> -#include <QStyledItemDelegate> -#include <QLineEdit> -#include <QEvent> -#include <QPainter> -#include <QClipboard> -#include <QKeyEvent> -#include <QMenu> - -#include <MultiMC.h> - -#include "dialogs/ProgressDialog.h" -#include "dialogs/CustomMessageBox.h" -#include "net/NetJob.h" -#include "screenshots/ImgurUpload.h" -#include "screenshots/ImgurAlbumCreation.h" -#include "tasks/SequentialTask.h" - -#include "RWStorage.h" -#include <FileSystem.h> -#include <DesktopServices.h> - -typedef RWStorage<QString, QIcon> SharedIconCache; -typedef std::shared_ptr<SharedIconCache> SharedIconCachePtr; - -class ThumbnailingResult : public QObject -{ - Q_OBJECT -public slots: - inline void emitResultsReady(const QString &path) { emit resultsReady(path); } - inline void emitResultsFailed(const QString &path) { emit resultsFailed(path); } -signals: - void resultsReady(const QString &path); - void resultsFailed(const QString &path); -}; - -class ThumbnailRunnable : public QRunnable -{ -public: - ThumbnailRunnable(QString path, SharedIconCachePtr cache) - { - m_path = path; - m_cache = cache; - } - void run() - { - QFileInfo info(m_path); - if (info.isDir()) - return; - if ((info.suffix().compare("png", Qt::CaseInsensitive) != 0)) - return; - int tries = 5; - while (tries) - { - if (!m_cache->stale(m_path)) - return; - QImage image(m_path); - if (image.isNull()) - { - QThread::msleep(500); - tries--; - continue; - } - QImage small; - if (image.width() > image.height()) - small = image.scaledToWidth(512).scaledToWidth(256, Qt::SmoothTransformation); - else - small = image.scaledToHeight(512).scaledToHeight(256, Qt::SmoothTransformation); - QPoint offset((256 - small.width()) / 2, (256 - small.height()) / 2); - QImage square(QSize(256, 256), QImage::Format_ARGB32); - square.fill(Qt::transparent); - - QPainter painter(&square); - painter.drawImage(offset, small); - painter.end(); - - QIcon icon(QPixmap::fromImage(square)); - m_cache->add(m_path, icon); - m_resultEmitter.emitResultsReady(m_path); - return; - } - m_resultEmitter.emitResultsFailed(m_path); - } - QString m_path; - SharedIconCachePtr m_cache; - ThumbnailingResult m_resultEmitter; -}; - -// this is about as elegant and well written as a bag of bricks with scribbles done by insane -// asylum patients. -class FilterModel : public QIdentityProxyModel -{ - Q_OBJECT -public: - explicit FilterModel(QObject *parent = 0) : QIdentityProxyModel(parent) - { - m_thumbnailingPool.setMaxThreadCount(4); - m_thumbnailCache = std::make_shared<SharedIconCache>(); - m_thumbnailCache->add("placeholder", MMC->getThemedIcon("screenshot-placeholder")); - connect(&watcher, SIGNAL(fileChanged(QString)), SLOT(fileChanged(QString))); - // FIXME: the watched file set is not updated when files are removed - } - virtual ~FilterModel() { m_thumbnailingPool.waitForDone(500); } - virtual QVariant data(const QModelIndex &proxyIndex, int role = Qt::DisplayRole) const - { - auto model = sourceModel(); - if (!model) - return QVariant(); - if (role == Qt::DisplayRole || role == Qt::EditRole) - { - QVariant result = sourceModel()->data(mapToSource(proxyIndex), role); - return result.toString().remove(QRegExp("\\.png$")); - } - if (role == Qt::DecorationRole) - { - QVariant result = - sourceModel()->data(mapToSource(proxyIndex), QFileSystemModel::FilePathRole); - QString filePath = result.toString(); - QIcon temp; - if (!watched.contains(filePath)) - { - ((QFileSystemWatcher &)watcher).addPath(filePath); - ((QSet<QString> &)watched).insert(filePath); - } - if (m_thumbnailCache->get(filePath, temp)) - { - return temp; - } - if (!m_failed.contains(filePath)) - { - ((FilterModel *)this)->thumbnailImage(filePath); - } - return (m_thumbnailCache->get("placeholder")); - } - return sourceModel()->data(mapToSource(proxyIndex), role); - } - virtual bool setData(const QModelIndex &index, const QVariant &value, - int role = Qt::EditRole) - { - auto model = sourceModel(); - if (!model) - return false; - if (role != Qt::EditRole) - return false; - // FIXME: this is a workaround for a bug in QFileSystemModel, where it doesn't - // sort after renames - { - ((QFileSystemModel *)model)->setNameFilterDisables(true); - ((QFileSystemModel *)model)->setNameFilterDisables(false); - } - return model->setData(mapToSource(index), value.toString() + ".png", role); - } - -private: - void thumbnailImage(QString path) - { - auto runnable = new ThumbnailRunnable(path, m_thumbnailCache); - connect(&(runnable->m_resultEmitter), SIGNAL(resultsReady(QString)), - SLOT(thumbnailReady(QString))); - connect(&(runnable->m_resultEmitter), SIGNAL(resultsFailed(QString)), - SLOT(thumbnailFailed(QString))); - ((QThreadPool &)m_thumbnailingPool).start(runnable); - } -private slots: - void thumbnailReady(QString path) { emit layoutChanged(); } - void thumbnailFailed(QString path) { m_failed.insert(path); } - void fileChanged(QString filepath) - { - m_thumbnailCache->setStale(filepath); - thumbnailImage(filepath); - // reinsert the path... - watcher.removePath(filepath); - watcher.addPath(filepath); - } - -private: - SharedIconCachePtr m_thumbnailCache; - QThreadPool m_thumbnailingPool; - QSet<QString> m_failed; - QSet<QString> watched; - QFileSystemWatcher watcher; -}; - -class CenteredEditingDelegate : public QStyledItemDelegate -{ -public: - explicit CenteredEditingDelegate(QObject *parent = 0) : QStyledItemDelegate(parent) {} - virtual ~CenteredEditingDelegate() {} - virtual QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, - const QModelIndex &index) const - { - auto widget = QStyledItemDelegate::createEditor(parent, option, index); - auto foo = dynamic_cast<QLineEdit *>(widget); - if (foo) - { - foo->setAlignment(Qt::AlignHCenter); - foo->setFrame(true); - foo->setMaximumWidth(192); - } - return widget; - } -}; - -ScreenshotsPage::ScreenshotsPage(QString path, QWidget *parent) - : QMainWindow(parent), ui(new Ui::ScreenshotsPage) -{ - m_model.reset(new QFileSystemModel()); - m_filterModel.reset(new FilterModel()); - m_filterModel->setSourceModel(m_model.get()); - m_model->setFilter(QDir::Files | QDir::Writable | QDir::Readable); - m_model->setReadOnly(false); - m_model->setNameFilters({"*.png"}); - m_model->setNameFilterDisables(false); - m_folder = path; - m_valid = FS::ensureFolderPathExists(m_folder); - - ui->setupUi(this); - ui->toolBar->insertSpacer(ui->actionView_Folder); - - ui->listView->setIconSize(QSize(128, 128)); - ui->listView->setGridSize(QSize(192, 160)); - ui->listView->setSpacing(9); - // ui->listView->setUniformItemSizes(true); - ui->listView->setLayoutMode(QListView::Batched); - ui->listView->setViewMode(QListView::IconMode); - ui->listView->setResizeMode(QListView::Adjust); - ui->listView->installEventFilter(this); - ui->listView->setEditTriggers(0); - ui->listView->setItemDelegate(new CenteredEditingDelegate(this)); - ui->listView->setContextMenuPolicy(Qt::CustomContextMenu); - connect(ui->listView, &QListView::customContextMenuRequested, this, &ScreenshotsPage::ShowContextMenu); - connect(ui->listView, SIGNAL(activated(QModelIndex)), SLOT(onItemActivated(QModelIndex))); -} - -bool ScreenshotsPage::eventFilter(QObject *obj, QEvent *evt) -{ - if (obj != ui->listView) - return QWidget::eventFilter(obj, evt); - if (evt->type() != QEvent::KeyPress) - { - return QWidget::eventFilter(obj, evt); - } - QKeyEvent *keyEvent = static_cast<QKeyEvent *>(evt); - switch (keyEvent->key()) - { - case Qt::Key_Delete: - on_actionDelete_triggered(); - return true; - case Qt::Key_F2: - on_actionRename_triggered(); - return true; - default: - break; - } - return QWidget::eventFilter(obj, evt); -} - -ScreenshotsPage::~ScreenshotsPage() -{ - delete ui; -} - -void ScreenshotsPage::ShowContextMenu(const QPoint& pos) -{ - auto menu = ui->toolBar->createContextMenu(this, tr("Context menu")); - menu->exec(ui->listView->mapToGlobal(pos)); - delete menu; -} - -QMenu * ScreenshotsPage::createPopupMenu() -{ - QMenu* filteredMenu = QMainWindow::createPopupMenu(); - filteredMenu->removeAction( ui->toolBar->toggleViewAction() ); - return filteredMenu; -} - -void ScreenshotsPage::onItemActivated(QModelIndex index) -{ - if (!index.isValid()) - return; - auto info = m_model->fileInfo(index); - QString fileName = info.absoluteFilePath(); - DesktopServices::openFile(info.absoluteFilePath()); -} - -void ScreenshotsPage::on_actionView_Folder_triggered() -{ - DesktopServices::openDirectory(m_folder, true); -} - -void ScreenshotsPage::on_actionUpload_triggered() -{ - auto selection = ui->listView->selectionModel()->selectedRows(); - if (selection.isEmpty()) - return; - - QList<ScreenshotPtr> uploaded; - auto job = NetJobPtr(new NetJob("Screenshot Upload")); - if(selection.size() < 2) - { - auto item = selection.at(0); - auto info = m_model->fileInfo(item); - auto screenshot = std::make_shared<ScreenShot>(info); - job->addNetAction(ImgurUpload::make(screenshot)); - - m_uploadActive = true; - ProgressDialog dialog(this); - if(dialog.execWithTask(job.get()) != QDialog::Accepted) - { - CustomMessageBox::selectable(this, tr("Failed to upload screenshots!"), - tr("Unknown error"), QMessageBox::Warning)->exec(); - } - else - { - auto link = screenshot->m_url; - QClipboard *clipboard = QApplication::clipboard(); - clipboard->setText(link); - CustomMessageBox::selectable( - this, - tr("Upload finished"), - tr("The <a href=\"%1\">link to the uploaded screenshot</a> has been placed in your clipboard.") - .arg(link), - QMessageBox::Information - )->exec(); - } - - m_uploadActive = false; - return; - } - - for (auto item : selection) - { - auto info = m_model->fileInfo(item); - auto screenshot = std::make_shared<ScreenShot>(info); - uploaded.push_back(screenshot); - job->addNetAction(ImgurUpload::make(screenshot)); - } - SequentialTask task; - auto albumTask = NetJobPtr(new NetJob("Imgur Album Creation")); - auto imgurAlbum = ImgurAlbumCreation::make(uploaded); - albumTask->addNetAction(imgurAlbum); - task.addTask(job.unwrap()); - task.addTask(albumTask.unwrap()); - m_uploadActive = true; - ProgressDialog prog(this); - if (prog.execWithTask(&task) != QDialog::Accepted) - { - CustomMessageBox::selectable(this, tr("Failed to upload screenshots!"), - tr("Unknown error"), QMessageBox::Warning)->exec(); - } - else - { - auto link = QString("https://imgur.com/a/%1").arg(imgurAlbum->id()); - QClipboard *clipboard = QApplication::clipboard(); - clipboard->setText(link); - CustomMessageBox::selectable( - this, - tr("Upload finished"), - tr("The <a href=\"%1\">link to the uploaded album</a> has been placed in your clipboard.") .arg(link), - QMessageBox::Information - )->exec(); - } - m_uploadActive = false; -} - -void ScreenshotsPage::on_actionDelete_triggered() -{ - auto mbox = CustomMessageBox::selectable( - this, tr("Are you sure?"), tr("This will delete all selected screenshots."), - QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No); - std::unique_ptr<QMessageBox> box(mbox); - - if (box->exec() != QMessageBox::Yes) - return; - - auto selected = ui->listView->selectionModel()->selectedIndexes(); - for (auto item : selected) - { - m_model->remove(item); - } -} - -void ScreenshotsPage::on_actionRename_triggered() -{ - auto selection = ui->listView->selectionModel()->selectedIndexes(); - if (selection.isEmpty()) - return; - ui->listView->edit(selection[0]); - // TODO: mass renaming -} - -void ScreenshotsPage::openedImpl() -{ - if(!m_valid) - { - m_valid = FS::ensureFolderPathExists(m_folder); - } - if (m_valid) - { - QString path = QDir(m_folder).absolutePath(); - auto idx = m_model->setRootPath(path); - if(idx.isValid()) - { - ui->listView->setModel(m_filterModel.get()); - ui->listView->setRootIndex(m_filterModel->mapFromSource(idx)); - } - else - { - ui->listView->setModel(nullptr); - } - } -} - -#include "ScreenshotsPage.moc" diff --git a/application/pages/instance/ScreenshotsPage.h b/application/pages/instance/ScreenshotsPage.h deleted file mode 100644 index 03a809de..00000000 --- a/application/pages/instance/ScreenshotsPage.h +++ /dev/null @@ -1,89 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QMainWindow> - -#include "pages/BasePage.h" -#include <MultiMC.h> - -class QFileSystemModel; -class QIdentityProxyModel; -namespace Ui -{ -class ScreenshotsPage; -} - -struct ScreenShot; -class ScreenshotList; -class ImgurAlbumCreation; - -class ScreenshotsPage : public QMainWindow, public BasePage -{ - Q_OBJECT - -public: - explicit ScreenshotsPage(QString path, QWidget *parent = 0); - virtual ~ScreenshotsPage(); - - virtual void openedImpl() override; - - enum - { - NothingDone = 0x42 - }; - - virtual bool eventFilter(QObject *, QEvent *) override; - virtual QString displayName() const override - { - return tr("Screenshots"); - } - virtual QIcon icon() const override - { - return MMC->getThemedIcon("screenshots"); - } - virtual QString id() const override - { - return "screenshots"; - } - virtual QString helpPage() const override - { - return "Screenshots-management"; - } - virtual bool apply() override - { - return !m_uploadActive; - } - -protected: - QMenu * createPopupMenu() override; - -private slots: - void on_actionUpload_triggered(); - void on_actionDelete_triggered(); - void on_actionRename_triggered(); - void on_actionView_Folder_triggered(); - void onItemActivated(QModelIndex); - void ShowContextMenu(const QPoint &pos); - -private: - Ui::ScreenshotsPage *ui; - std::shared_ptr<QFileSystemModel> m_model; - std::shared_ptr<QIdentityProxyModel> m_filterModel; - QString m_folder; - bool m_valid = false; - bool m_uploadActive = false; -}; diff --git a/application/pages/instance/ScreenshotsPage.ui b/application/pages/instance/ScreenshotsPage.ui deleted file mode 100644 index f11f4cd4..00000000 --- a/application/pages/instance/ScreenshotsPage.ui +++ /dev/null @@ -1,87 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>ScreenshotsPage</class> - <widget class="QMainWindow" name="ScreenshotsPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>800</width> - <height>600</height> - </rect> - </property> - <widget class="QWidget" name="centralwidget"> - <layout class="QHBoxLayout" name="horizontalLayout"> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <widget class="QListView" name="listView"> - <property name="selectionMode"> - <enum>QAbstractItemView::ExtendedSelection</enum> - </property> - <property name="selectionBehavior"> - <enum>QAbstractItemView::SelectRows</enum> - </property> - </widget> - </item> - </layout> - </widget> - <widget class="WideBar" name="toolBar"> - <property name="windowTitle"> - <string>Actions</string> - </property> - <property name="toolButtonStyle"> - <enum>Qt::ToolButtonTextOnly</enum> - </property> - <attribute name="toolBarArea"> - <enum>RightToolBarArea</enum> - </attribute> - <attribute name="toolBarBreak"> - <bool>false</bool> - </attribute> - <addaction name="actionUpload"/> - <addaction name="actionDelete"/> - <addaction name="actionRename"/> - <addaction name="actionView_Folder"/> - </widget> - <action name="actionUpload"> - <property name="text"> - <string>Upload</string> - </property> - </action> - <action name="actionDelete"> - <property name="text"> - <string>Delete</string> - </property> - </action> - <action name="actionRename"> - <property name="text"> - <string>Rename</string> - </property> - </action> - <action name="actionView_Folder"> - <property name="text"> - <string>View Folder</string> - </property> - </action> - </widget> - <customwidgets> - <customwidget> - <class>WideBar</class> - <extends>QToolBar</extends> - <header>widgets/WideBar.h</header> - </customwidget> - </customwidgets> - <resources/> - <connections/> -</ui> diff --git a/application/pages/instance/ServersPage.cpp b/application/pages/instance/ServersPage.cpp deleted file mode 100644 index d63c6e70..00000000 --- a/application/pages/instance/ServersPage.cpp +++ /dev/null @@ -1,768 +0,0 @@ -#include "ServersPage.h" -#include "ui_ServersPage.h" - -#include <FileSystem.h> -#include <sstream> -#include <io/stream_reader.h> -#include <tag_string.h> -#include <tag_primitive.h> -#include <tag_list.h> -#include <tag_compound.h> -#include <minecraft/MinecraftInstance.h> - -#include <QFileSystemWatcher> -#include <QMenu> - -static const int COLUMN_COUNT = 2; // 3 , TBD: latency and other nice things. - -struct Server -{ - // Types - enum class AcceptsTextures : int - { - ASK = 0, - ALWAYS = 1, - NEVER = 2 - }; - - // Methods - Server() - { - m_name = QObject::tr("Minecraft Server"); - } - Server(const QString & name, const QString & address) - { - m_name = name; - m_address = address; - } - Server(nbt::tag_compound& server) - { - std::string addressStr(server["ip"]); - m_address = QString::fromUtf8(addressStr.c_str()); - - std::string nameStr(server["name"]); - m_name = QString::fromUtf8(nameStr.c_str()); - - if(server["icon"]) - { - std::string base64str(server["icon"]); - m_icon = QByteArray::fromBase64(base64str.c_str()); - } - - if(server.has_key("acceptTextures", nbt::tag_type::Byte)) - { - bool value = server["acceptTextures"].as<nbt::tag_byte>().get(); - if(value) - { - m_acceptsTextures = AcceptsTextures::ALWAYS; - } - else - { - m_acceptsTextures = AcceptsTextures::NEVER; - } - } - } - - void serialize(nbt::tag_compound& server) - { - server.insert("name", m_name.trimmed().toUtf8().toStdString()); - server.insert("ip", m_address.trimmed().toUtf8().toStdString()); - if(m_icon.size()) - { - server.insert("icon", m_icon.toBase64().toStdString()); - } - if(m_acceptsTextures != AcceptsTextures::ASK) - { - server.insert("acceptTextures", nbt::tag_byte(m_acceptsTextures == AcceptsTextures::ALWAYS)); - } - } - - // Data - persistent and user changeable - QString m_name; - QString m_address; - AcceptsTextures m_acceptsTextures = AcceptsTextures::ASK; - - // Data - persistent and automatically updated - QByteArray m_icon; - - // Data - temporary - bool m_checked = false; - bool m_up = false; - QString m_motd; // https://mctools.org/motd-creator - int m_ping = 0; - int m_currentPlayers = 0; - int m_maxPlayers = 0; -}; - -static std::unique_ptr <nbt::tag_compound> parseServersDat(const QString& filename) -{ - try - { - QByteArray input = FS::read(filename); - std::istringstream foo(std::string(input.constData(), input.size())); - auto pair = nbt::io::read_compound(foo); - - if(pair.first != "") - return nullptr; - - if(pair.second == nullptr) - return nullptr; - - return std::move(pair.second); - } - catch (...) - { - return nullptr; - } -} - -static bool serializeServerDat(const QString& filename, nbt::tag_compound * levelInfo) -{ - try - { - if(!FS::ensureFilePathExists(filename)) - { - return false; - } - std::ostringstream s; - nbt::io::write_tag("", *levelInfo, s); - QByteArray val(s.str().data(), (int) s.str().size() ); - FS::write(filename, val); - return true; - } - catch (...) - { - return false; - } -} - -class ServersModel: public QAbstractListModel -{ - Q_OBJECT -public: - enum Roles - { - ServerPtrRole = Qt::UserRole, - }; - explicit ServersModel(const QString &path, QObject *parent = 0) - : QAbstractListModel(parent) - { - m_path = path; - m_watcher = new QFileSystemWatcher(this); - connect(m_watcher, &QFileSystemWatcher::fileChanged, this, &ServersModel::fileChanged); - connect(m_watcher, &QFileSystemWatcher::directoryChanged, this, &ServersModel::dirChanged); - m_saveTimer.setSingleShot(true); - m_saveTimer.setInterval(5000); - connect(&m_saveTimer, &QTimer::timeout, this, &ServersModel::save_internal); - } - virtual ~ServersModel() {}; - - void observe() - { - if(m_observed) - { - return; - } - m_observed = true; - - if(!m_loaded) - { - load(); - } - - updateFSObserver(); - } - - void unobserve() - { - if(!m_observed) - { - return; - } - m_observed = false; - - updateFSObserver(); - } - - void lock() - { - if(m_locked) - { - return; - } - saveNow(); - - m_locked = true; - updateFSObserver(); - } - - void unlock() - { - if(!m_locked) - { - return; - } - m_locked = false; - - updateFSObserver(); - } - - int addEmptyRow(int position) - { - if(m_locked) - { - return -1; - } - if(position < 0 || position >= rowCount()) - { - position = rowCount(); - } - beginInsertRows(QModelIndex(), position, position); - m_servers.insert(position, Server()); - endInsertRows(); - scheduleSave(); - return position; - } - - bool removeRow(int row) - { - if(m_locked) - { - return false; - } - if(row < 0 || row >= rowCount()) - { - return false; - } - beginRemoveRows(QModelIndex(), row, row); - m_servers.removeAt(row); - endRemoveRows(); // does absolutely nothing, the selected server stays as the next line... - scheduleSave(); - return true; - } - - bool moveUp(int row) - { - if(m_locked) - { - return false; - } - if(row <= 0) - { - return false; - } - beginMoveRows(QModelIndex(), row, row, QModelIndex(), row - 1); - m_servers.swap(row-1, row); - endMoveRows(); - scheduleSave(); - return true; - } - - bool moveDown(int row) - { - if(m_locked) - { - return false; - } - int count = rowCount(); - if(row + 1 >= count) - { - return false; - } - beginMoveRows(QModelIndex(), row, row, QModelIndex(), row + 2); - m_servers.swap(row+1, row); - endMoveRows(); - scheduleSave(); - return true; - } - - QVariant headerData(int section, Qt::Orientation orientation, int role) const override - { - if (section < 0 || section >= COLUMN_COUNT) - return QVariant(); - - if(role == Qt::DisplayRole) - { - switch(section) - { - case 0: - return tr("Name"); - case 1: - return tr("Address"); - case 2: - return tr("Latency"); - } - } - - return QAbstractListModel::headerData(section, orientation, role); - } - - virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override - { - if (!index.isValid()) - return QVariant(); - - int row = index.row(); - int column = index.column(); - if(column < 0 || column >= COLUMN_COUNT) - return QVariant(); - - if (row < 0 || row >= m_servers.size()) - return QVariant(); - - switch(column) - { - case 0: - switch (role) - { - case Qt::DecorationRole: - { - auto & bytes = m_servers[row].m_icon; - if(bytes.size()) - { - QPixmap px; - if(px.loadFromData(bytes)) - return QIcon(px); - } - return MMC->getThemedIcon("unknown_server"); - } - case Qt::DisplayRole: - return m_servers[row].m_name; - case ServerPtrRole: - return QVariant::fromValue<void *>((void *)&m_servers[row]); - default: - return QVariant(); - } - case 1: - switch (role) - { - case Qt::DisplayRole: - return m_servers[row].m_address; - default: - return QVariant(); - } - case 2: - switch (role) - { - case Qt::DisplayRole: - return m_servers[row].m_ping; - default: - return QVariant(); - } - default: - return QVariant(); - } - } - - virtual int rowCount(const QModelIndex &parent = QModelIndex()) const override - { - return m_servers.size(); - } - int columnCount(const QModelIndex & parent) const override - { - return COLUMN_COUNT; - } - - Server * at(int index) - { - if(index < 0 || index >= rowCount()) - { - return nullptr; - } - return &m_servers[index]; - } - - void setName(int row, const QString & name) - { - if(m_locked) - { - return; - } - auto server = at(row); - if(!server || server->m_name == name) - { - return; - } - server->m_name = name; - emit dataChanged(index(row, 0), index(row, COLUMN_COUNT - 1)); - scheduleSave(); - } - - void setAddress(int row, const QString & address) - { - if(m_locked) - { - return; - } - auto server = at(row); - if(!server || server->m_address == address) - { - return; - } - server->m_address = address; - emit dataChanged(index(row, 0), index(row, COLUMN_COUNT - 1)); - scheduleSave(); - } - - void setAcceptsTextures(int row, Server::AcceptsTextures textures) - { - if(m_locked) - { - return; - } - auto server = at(row); - if(!server || server->m_acceptsTextures == textures) - { - return; - } - server->m_acceptsTextures = textures; - emit dataChanged(index(row, 0), index(row, COLUMN_COUNT - 1)); - scheduleSave(); - } - - void load() - { - cancelSave(); - beginResetModel(); - QList<Server> servers; - auto serversDat = parseServersDat(serversPath()); - if(serversDat) - { - auto &serversList = serversDat->at("servers").as<nbt::tag_list>(); - for(auto iter = serversList.begin(); iter != serversList.end(); iter++) - { - auto & serverTag = (*iter).as<nbt::tag_compound>(); - Server s(serverTag); - servers.append(s); - } - } - m_servers.swap(servers); - m_loaded = true; - endResetModel(); - } - - void saveNow() - { - if(saveIsScheduled()) - { - save_internal(); - } - } - - -public slots: - void dirChanged(const QString& path) - { - qDebug() << "Changed:" << path; - load(); - } - void fileChanged(const QString& path) - { - qDebug() << "Changed:" << path; - } - -private slots: - void save_internal() - { - cancelSave(); - QString path = serversPath(); - qDebug() << "Server list about to be saved to" << path; - - nbt::tag_compound out; - nbt::tag_list list; - for(auto & server: m_servers) - { - nbt::tag_compound serverNbt; - server.serialize(serverNbt); - list.push_back(std::move(serverNbt)); - } - out.insert("servers", nbt::value(std::move(list))); - - if(!serializeServerDat(path, &out)) - { - qDebug() << "Failed to save server list:" << path << "Will try again."; - scheduleSave(); - } - } - -private: - void scheduleSave() - { - if(!m_loaded) - { - qDebug() << "Server list should never save if it didn't successfully load, path:" << m_path; - return; - } - if(!m_dirty) - { - m_dirty = true; - qDebug() << "Server list save is scheduled for" << m_path; - } - m_saveTimer.start(); - } - - void cancelSave() - { - m_dirty = false; - m_saveTimer.stop(); - } - - bool saveIsScheduled() const - { - return m_dirty; - } - - void updateFSObserver() - { - bool observingFS = m_watcher->directories().contains(m_path); - if(m_observed && m_locked) - { - if(!observingFS) - { - qWarning() << "Will watch" << m_path; - if(!m_watcher->addPath(m_path)) - { - qWarning() << "Failed to start watching" << m_path; - } - } - } - else - { - if(observingFS) - { - qWarning() << "Will stop watching" << m_path; - if(!m_watcher->removePath(m_path)) - { - qWarning() << "Failed to stop watching" << m_path; - } - } - } - } - - QString serversPath() - { - QFileInfo foo(FS::PathCombine(m_path, "servers.dat")); - return foo.filePath(); - } - -private: - bool m_loaded = false; - bool m_locked = false; - bool m_observed = false; - bool m_dirty = false; - QString m_path; - QList<Server> m_servers; - QFileSystemWatcher *m_watcher = nullptr; - QTimer m_saveTimer; -}; - -ServersPage::ServersPage(InstancePtr inst, QWidget* parent) - : QMainWindow(parent), ui(new Ui::ServersPage) -{ - ui->setupUi(this); - m_inst = inst; - m_model = new ServersModel(inst->gameRoot(), this); - ui->serversView->setIconSize(QSize(64,64)); - ui->serversView->setModel(m_model); - ui->serversView->setContextMenuPolicy(Qt::CustomContextMenu); - connect(ui->serversView, &QTreeView::customContextMenuRequested, this, &ServersPage::ShowContextMenu); - - auto head = ui->serversView->header(); - if(head->count()) - { - head->setSectionResizeMode(0, QHeaderView::Stretch); - for(int i = 1; i < head->count(); i++) - { - head->setSectionResizeMode(i, QHeaderView::ResizeToContents); - } - } - - auto selectionModel = ui->serversView->selectionModel(); - connect(selectionModel, &QItemSelectionModel::currentChanged, this, &ServersPage::currentChanged); - connect(m_inst.get(), &MinecraftInstance::runningStatusChanged, this, &ServersPage::on_RunningState_changed); - connect(ui->nameLine, &QLineEdit::textEdited, this, &ServersPage::nameEdited); - connect(ui->addressLine, &QLineEdit::textEdited, this, &ServersPage::addressEdited); - connect(ui->resourceComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(resourceIndexChanged(int))); - connect(m_model, &QAbstractItemModel::rowsRemoved, this, &ServersPage::rowsRemoved); - - m_locked = m_inst->isRunning(); - if(m_locked) - { - m_model->lock(); - } - - updateState(); -} - -ServersPage::~ServersPage() -{ - m_model->saveNow(); - delete ui; -} - -void ServersPage::ShowContextMenu(const QPoint& pos) -{ - auto menu = ui->toolBar->createContextMenu(this, tr("Context menu")); - menu->exec(ui->serversView->mapToGlobal(pos)); - delete menu; -} - -QMenu * ServersPage::createPopupMenu() -{ - QMenu* filteredMenu = QMainWindow::createPopupMenu(); - filteredMenu->removeAction( ui->toolBar->toggleViewAction() ); - return filteredMenu; -} - -void ServersPage::on_RunningState_changed(bool running) -{ - if(m_locked == running) - { - return; - } - m_locked = running; - if(m_locked) - { - m_model->lock(); - } - else - { - m_model->unlock(); - } - updateState(); -} - -void ServersPage::currentChanged(const QModelIndex ¤t, const QModelIndex &previous) -{ - int nextServer = -1; - if (!current.isValid()) - { - nextServer = -1; - } - else - { - nextServer = current.row(); - } - currentServer = nextServer; - updateState(); -} - -// WARNING: this is here because currentChanged is not accurate when removing rows. the current item needs to be fixed up after removal. -void ServersPage::rowsRemoved(const QModelIndex& parent, int first, int last) -{ - if(currentServer < first) - { - // current was before the removal - return; - } - else if(currentServer >= first && currentServer <= last) - { - // current got removed... - return; - } - else - { - // current was past the removal - int count = last - first + 1; - currentServer -= count; - } -} - -void ServersPage::nameEdited(const QString& name) -{ - m_model->setName(currentServer, name); -} - -void ServersPage::addressEdited(const QString& address) -{ - m_model->setAddress(currentServer, address); -} - -void ServersPage::resourceIndexChanged(int index) -{ - auto acceptsTextures = Server::AcceptsTextures(index); - m_model->setAcceptsTextures(currentServer, acceptsTextures); -} - -void ServersPage::updateState() -{ - auto server = m_model->at(currentServer); - - bool serverEditEnabled = server && !m_locked; - ui->addressLine->setEnabled(serverEditEnabled); - ui->nameLine->setEnabled(serverEditEnabled); - ui->resourceComboBox->setEnabled(serverEditEnabled); - ui->actionMove_Down->setEnabled(serverEditEnabled); - ui->actionMove_Up->setEnabled(serverEditEnabled); - ui->actionRemove->setEnabled(serverEditEnabled); - ui->actionJoin->setEnabled(serverEditEnabled); - - if(server) - { - ui->addressLine->setText(server->m_address); - ui->nameLine->setText(server->m_name); - ui->resourceComboBox->setCurrentIndex(int(server->m_acceptsTextures)); - } - else - { - ui->addressLine->setText(QString()); - ui->nameLine->setText(QString()); - ui->resourceComboBox->setCurrentIndex(0); - } - - ui->actionAdd->setDisabled(m_locked); -} - -void ServersPage::openedImpl() -{ - m_model->observe(); -} - -void ServersPage::closedImpl() -{ - m_model->unobserve(); -} - -void ServersPage::on_actionAdd_triggered() -{ - int position = m_model->addEmptyRow(currentServer + 1); - if(position < 0) - { - return; - } - // select the new row - ui->serversView->selectionModel()->setCurrentIndex( - m_model->index(position), - QItemSelectionModel::SelectCurrent | QItemSelectionModel::Clear | QItemSelectionModel::Rows - ); - currentServer = position; -} - -void ServersPage::on_actionRemove_triggered() -{ - m_model->removeRow(currentServer); -} - -void ServersPage::on_actionMove_Up_triggered() -{ - if(m_model->moveUp(currentServer)) - { - currentServer --; - } -} - -void ServersPage::on_actionMove_Down_triggered() -{ - if(m_model->moveDown(currentServer)) - { - currentServer ++; - } -} - -void ServersPage::on_actionJoin_triggered() -{ - const auto &address = m_model->at(currentServer)->m_address; - MMC->launch(m_inst, true, nullptr, std::make_shared<MinecraftServerTarget>(MinecraftServerTarget::parse(address))); -} - -#include "ServersPage.moc" diff --git a/application/pages/instance/ServersPage.h b/application/pages/instance/ServersPage.h deleted file mode 100644 index 8c5b7eb8..00000000 --- a/application/pages/instance/ServersPage.h +++ /dev/null @@ -1,94 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QMainWindow> -#include <QString> - -#include "pages/BasePage.h" -#include <MultiMC.h> - -namespace Ui -{ -class ServersPage; -} - -struct Server; -class ServersModel; -class MinecraftInstance; - -class ServersPage : public QMainWindow, public BasePage -{ - Q_OBJECT - -public: - explicit ServersPage(InstancePtr inst, QWidget *parent = 0); - virtual ~ServersPage(); - - void openedImpl() override; - void closedImpl() override; - - virtual QString displayName() const override - { - return tr("Servers"); - } - virtual QIcon icon() const override - { - return MMC->getThemedIcon("unknown_server"); - } - virtual QString id() const override - { - return "servers"; - } - virtual QString helpPage() const override - { - return "Servers-management"; - } - -protected: - QMenu * createPopupMenu() override; - -private: - void updateState(); - void scheduleSave(); - bool saveIsScheduled() const; - -private slots: - void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); - void rowsRemoved(const QModelIndex &parent, int first, int last); - - void on_actionAdd_triggered(); - void on_actionRemove_triggered(); - void on_actionMove_Up_triggered(); - void on_actionMove_Down_triggered(); - void on_actionJoin_triggered(); - - void on_RunningState_changed(bool running); - - void nameEdited(const QString & name); - void addressEdited(const QString & address); - void resourceIndexChanged(int index);\ - - void ShowContextMenu(const QPoint &pos); - -private: // data - int currentServer = -1; - bool m_locked = true; - Ui::ServersPage *ui = nullptr; - ServersModel * m_model = nullptr; - InstancePtr m_inst = nullptr; -}; - diff --git a/application/pages/instance/ServersPage.ui b/application/pages/instance/ServersPage.ui deleted file mode 100644 index d89b7cba..00000000 --- a/application/pages/instance/ServersPage.ui +++ /dev/null @@ -1,194 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>ServersPage</class> - <widget class="QMainWindow" name="ServersPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>1318</width> - <height>879</height> - </rect> - </property> - <widget class="QWidget" name="centralwidget"> - <layout class="QVBoxLayout" name="verticalLayout"> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <widget class="QTreeView" name="serversView"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="acceptDrops"> - <bool>true</bool> - </property> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - <property name="selectionMode"> - <enum>QAbstractItemView::SingleSelection</enum> - </property> - <property name="selectionBehavior"> - <enum>QAbstractItemView::SelectRows</enum> - </property> - <property name="iconSize"> - <size> - <width>64</width> - <height>64</height> - </size> - </property> - <property name="rootIsDecorated"> - <bool>false</bool> - </property> - <attribute name="headerStretchLastSection"> - <bool>false</bool> - </attribute> - </widget> - </item> - <item> - <layout class="QGridLayout" name="gridLayout_2"> - <property name="leftMargin"> - <number>6</number> - </property> - <property name="rightMargin"> - <number>6</number> - </property> - <item row="0" column="0"> - <widget class="QLabel" name="nameLabel"> - <property name="text"> - <string>&Name</string> - </property> - <property name="buddy"> - <cstring>nameLine</cstring> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLineEdit" name="nameLine"/> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="addressLabel"> - <property name="text"> - <string>Address</string> - </property> - <property name="buddy"> - <cstring>addressLine</cstring> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLineEdit" name="addressLine"/> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="resourcesLabel"> - <property name="text"> - <string>Reso&urces</string> - </property> - <property name="buddy"> - <cstring>resourceComboBox</cstring> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QComboBox" name="resourceComboBox"> - <item> - <property name="text"> - <string>Ask to download</string> - </property> - </item> - <item> - <property name="text"> - <string>Always download</string> - </property> - </item> - <item> - <property name="text"> - <string>Never download</string> - </property> - </item> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - <widget class="WideBar" name="toolBar"> - <property name="windowTitle"> - <string>Actions</string> - </property> - <property name="allowedAreas"> - <set>Qt::LeftToolBarArea|Qt::RightToolBarArea</set> - </property> - <property name="toolButtonStyle"> - <enum>Qt::ToolButtonTextOnly</enum> - </property> - <property name="floatable"> - <bool>false</bool> - </property> - <attribute name="toolBarArea"> - <enum>RightToolBarArea</enum> - </attribute> - <attribute name="toolBarBreak"> - <bool>false</bool> - </attribute> - <addaction name="actionAdd"/> - <addaction name="actionRemove"/> - <addaction name="actionMove_Up"/> - <addaction name="actionMove_Down"/> - <addaction name="actionJoin"/> - </widget> - <action name="actionAdd"> - <property name="text"> - <string>Add</string> - </property> - </action> - <action name="actionRemove"> - <property name="text"> - <string>Remove</string> - </property> - </action> - <action name="actionMove_Up"> - <property name="text"> - <string>Move Up</string> - </property> - </action> - <action name="actionMove_Down"> - <property name="text"> - <string>Move Down</string> - </property> - </action> - <action name="actionJoin"> - <property name="text"> - <string>Join</string> - </property> - </action> - </widget> - <customwidgets> - <customwidget> - <class>WideBar</class> - <extends>QToolBar</extends> - <header>widgets/WideBar.h</header> - </customwidget> - </customwidgets> - <tabstops> - <tabstop>serversView</tabstop> - <tabstop>nameLine</tabstop> - <tabstop>addressLine</tabstop> - <tabstop>resourceComboBox</tabstop> - </tabstops> - <resources/> - <connections/> -</ui> diff --git a/application/pages/instance/TexturePackPage.h b/application/pages/instance/TexturePackPage.h deleted file mode 100644 index 3f04997d..00000000 --- a/application/pages/instance/TexturePackPage.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include "ModFolderPage.h" -#include "ui_ModFolderPage.h" - -class TexturePackPage : public ModFolderPage -{ - Q_OBJECT -public: - explicit TexturePackPage(MinecraftInstance *instance, QWidget *parent = 0) - : ModFolderPage(instance, instance->texturePackList(), "texturepacks", "resourcepacks", - tr("Texture packs"), "Texture-packs", parent) - { - ui->actionView_configs->setVisible(false); - } - virtual ~TexturePackPage() {} - - virtual bool shouldDisplay() const override - { - return m_inst->traits().contains("texturepacks"); - } -}; diff --git a/application/pages/instance/VersionPage.cpp b/application/pages/instance/VersionPage.cpp deleted file mode 100644 index a98bfb7d..00000000 --- a/application/pages/instance/VersionPage.cpp +++ /dev/null @@ -1,642 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "MultiMC.h" - -#include <QMessageBox> -#include <QLabel> -#include <QEvent> -#include <QKeyEvent> -#include <QMenu> - -#include "VersionPage.h" -#include "ui_VersionPage.h" - -#include "dialogs/CustomMessageBox.h" -#include "dialogs/VersionSelectDialog.h" -#include "dialogs/NewComponentDialog.h" - -#include "dialogs/ProgressDialog.h" -#include <GuiUtil.h> - -#include <QAbstractItemModel> -#include <QMessageBox> -#include <QListView> -#include <QString> -#include <QUrl> - -#include "minecraft/PackProfile.h" -#include "minecraft/auth/MojangAccountList.h" -#include "minecraft/mod/Mod.h" -#include "icons/IconList.h" -#include "Exception.h" -#include "Version.h" -#include "DesktopServices.h" - -#include <meta/Index.h> -#include <meta/VersionList.h> - -class IconProxy : public QIdentityProxyModel -{ - Q_OBJECT -public: - - IconProxy(QWidget *parentWidget) : QIdentityProxyModel(parentWidget) - { - connect(parentWidget, &QObject::destroyed, this, &IconProxy::widgetGone); - m_parentWidget = parentWidget; - } - - virtual QVariant data(const QModelIndex &proxyIndex, int role = Qt::DisplayRole) const override - { - QVariant var = QIdentityProxyModel::data(proxyIndex, role); - int column = proxyIndex.column(); - if(column == 0 && role == Qt::DecorationRole && m_parentWidget) - { - if(!var.isNull()) - { - auto string = var.toString(); - if(string == "warning") - { - return MMC->getThemedIcon("status-yellow"); - } - else if(string == "error") - { - return MMC->getThemedIcon("status-bad"); - } - } - return MMC->getThemedIcon("status-good"); - } - return var; - } -private slots: - void widgetGone() - { - m_parentWidget = nullptr; - } - -private: - QWidget *m_parentWidget = nullptr; -}; - -QIcon VersionPage::icon() const -{ - return MMC->icons()->getIcon(m_inst->iconKey()); -} -bool VersionPage::shouldDisplay() const -{ - return true; -} - -QMenu * VersionPage::createPopupMenu() -{ - QMenu* filteredMenu = QMainWindow::createPopupMenu(); - filteredMenu->removeAction( ui->toolBar->toggleViewAction() ); - return filteredMenu; -} - -VersionPage::VersionPage(MinecraftInstance *inst, QWidget *parent) - : QMainWindow(parent), ui(new Ui::VersionPage), m_inst(inst) -{ - ui->setupUi(this); - - ui->toolBar->insertSpacer(ui->actionReload); - - m_profile = m_inst->getPackProfile(); - - reloadPackProfile(); - - auto proxy = new IconProxy(ui->packageView); - proxy->setSourceModel(m_profile.get()); - - m_filterModel = new QSortFilterProxyModel(); - m_filterModel->setDynamicSortFilter(true); - m_filterModel->setFilterCaseSensitivity(Qt::CaseInsensitive); - m_filterModel->setSortCaseSensitivity(Qt::CaseInsensitive); - m_filterModel->setSourceModel(proxy); - m_filterModel->setFilterKeyColumn(-1); - - ui->packageView->setModel(m_filterModel); - ui->packageView->installEventFilter(this); - ui->packageView->setSelectionMode(QAbstractItemView::SingleSelection); - ui->packageView->setContextMenuPolicy(Qt::CustomContextMenu); - - connect(ui->packageView->selectionModel(), &QItemSelectionModel::currentChanged, this, &VersionPage::versionCurrent); - auto smodel = ui->packageView->selectionModel(); - connect(smodel, &QItemSelectionModel::currentChanged, this, &VersionPage::packageCurrent); - - connect(m_profile.get(), &PackProfile::minecraftChanged, this, &VersionPage::updateVersionControls); - controlsEnabled = !m_inst->isRunning(); - updateVersionControls(); - preselect(0); - connect(m_inst, &BaseInstance::runningStatusChanged, this, &VersionPage::updateRunningStatus); - connect(ui->packageView, &ModListView::customContextMenuRequested, this, &VersionPage::showContextMenu); - connect(ui->filterEdit, &QLineEdit::textChanged, this, &VersionPage::onFilterTextChanged); -} - -VersionPage::~VersionPage() -{ - delete ui; -} - -void VersionPage::showContextMenu(const QPoint& pos) -{ - auto menu = ui->toolBar->createContextMenu(this, tr("Context menu")); - menu->exec(ui->packageView->mapToGlobal(pos)); - delete menu; -} - -void VersionPage::packageCurrent(const QModelIndex ¤t, const QModelIndex &previous) -{ - if (!current.isValid()) - { - ui->frame->clear(); - return; - } - int row = current.row(); - auto patch = m_profile->getComponent(row); - auto severity = patch->getProblemSeverity(); - switch(severity) - { - case ProblemSeverity::Warning: - ui->frame->setModText(tr("%1 possibly has issues.").arg(patch->getName())); - break; - case ProblemSeverity::Error: - ui->frame->setModText(tr("%1 has issues!").arg(patch->getName())); - break; - default: - case ProblemSeverity::None: - ui->frame->clear(); - return; - } - - auto &problems = patch->getProblems(); - QString problemOut; - for (auto &problem: problems) - { - if(problem.m_severity == ProblemSeverity::Error) - { - problemOut += tr("Error: "); - } - else if(problem.m_severity == ProblemSeverity::Warning) - { - problemOut += tr("Warning: "); - } - problemOut += problem.m_description; - problemOut += "\n"; - } - ui->frame->setModDescription(problemOut); -} - -void VersionPage::updateRunningStatus(bool running) -{ - if(controlsEnabled == running) { - controlsEnabled = !running; - updateVersionControls(); - } -} - -void VersionPage::updateVersionControls() -{ - // FIXME: this is a dirty hack - auto minecraftVersion = Version(m_profile->getComponentVersion("net.minecraft")); - - bool supportsFabric = minecraftVersion >= Version("1.14"); - ui->actionInstall_Fabric->setEnabled(controlsEnabled && supportsFabric); - - bool supportsForge = minecraftVersion <= Version("1.16.5"); - ui->actionInstall_Forge->setEnabled(controlsEnabled && supportsForge); - - bool supportsLiteLoader = minecraftVersion <= Version("1.12.2"); - ui->actionInstall_LiteLoader->setEnabled(controlsEnabled && supportsLiteLoader); - - updateButtons(); -} - -void VersionPage::updateButtons(int row) -{ - if(row == -1) - row = currentRow(); - auto patch = m_profile->getComponent(row); - ui->actionRemove->setEnabled(controlsEnabled && patch && patch->isRemovable()); - ui->actionMove_down->setEnabled(controlsEnabled && patch && patch->isMoveable()); - ui->actionMove_up->setEnabled(controlsEnabled && patch && patch->isMoveable()); - ui->actionChange_version->setEnabled(controlsEnabled && patch && patch->isVersionChangeable()); - ui->actionEdit->setEnabled(controlsEnabled && patch && patch->isCustom()); - ui->actionCustomize->setEnabled(controlsEnabled && patch && patch->isCustomizable()); - ui->actionRevert->setEnabled(controlsEnabled && patch && patch->isRevertible()); - ui->actionDownload_All->setEnabled(controlsEnabled); - ui->actionAdd_Empty->setEnabled(controlsEnabled); - ui->actionReload->setEnabled(controlsEnabled); - ui->actionInstall_mods->setEnabled(controlsEnabled); - ui->actionReplace_Minecraft_jar->setEnabled(controlsEnabled); - ui->actionAdd_to_Minecraft_jar->setEnabled(controlsEnabled); -} - -bool VersionPage::reloadPackProfile() -{ - try - { - m_profile->reload(Net::Mode::Online); - return true; - } - catch (const Exception &e) - { - QMessageBox::critical(this, tr("Error"), e.cause()); - return false; - } - catch (...) - { - QMessageBox::critical( - this, tr("Error"), - tr("Couldn't load the instance profile.")); - return false; - } -} - -void VersionPage::on_actionReload_triggered() -{ - reloadPackProfile(); - m_container->refreshContainer(); -} - -void VersionPage::on_actionRemove_triggered() -{ - if (ui->packageView->currentIndex().isValid()) - { - // FIXME: use actual model, not reloading. - if (!m_profile->remove(ui->packageView->currentIndex().row())) - { - QMessageBox::critical(this, tr("Error"), tr("Couldn't remove file")); - } - } - updateButtons(); - reloadPackProfile(); - m_container->refreshContainer(); -} - -void VersionPage::on_actionInstall_mods_triggered() -{ - if(m_container) - { - m_container->selectPage("mods"); - } -} - -void VersionPage::on_actionAdd_to_Minecraft_jar_triggered() -{ - auto list = GuiUtil::BrowseForFiles("jarmod", tr("Select jar mods"), tr("Minecraft.jar mods (*.zip *.jar)"), MMC->settings()->get("CentralModsDir").toString(), this->parentWidget()); - if(!list.empty()) - { - m_profile->installJarMods(list); - } - updateButtons(); -} - -void VersionPage::on_actionReplace_Minecraft_jar_triggered() -{ - auto jarPath = GuiUtil::BrowseForFile("jar", tr("Select jar"), tr("Minecraft.jar replacement (*.jar)"), MMC->settings()->get("CentralModsDir").toString(), this->parentWidget()); - if(!jarPath.isEmpty()) - { - m_profile->installCustomJar(jarPath); - } - updateButtons(); -} - -void VersionPage::on_actionMove_up_triggered() -{ - try - { - m_profile->move(currentRow(), PackProfile::MoveUp); - } - catch (const Exception &e) - { - QMessageBox::critical(this, tr("Error"), e.cause()); - } - updateButtons(); -} - -void VersionPage::on_actionMove_down_triggered() -{ - try - { - m_profile->move(currentRow(), PackProfile::MoveDown); - } - catch (const Exception &e) - { - QMessageBox::critical(this, tr("Error"), e.cause()); - } - updateButtons(); -} - -void VersionPage::on_actionChange_version_triggered() -{ - auto versionRow = currentRow(); - if(versionRow == -1) - { - return; - } - auto patch = m_profile->getComponent(versionRow); - auto name = patch->getName(); - auto list = patch->getVersionList(); - if(!list) - { - return; - } - auto uid = list->uid(); - // FIXME: this is a horrible HACK. Get version filtering information from the actual metadata... - if(uid == "net.minecraftforge") - { - on_actionInstall_Forge_triggered(); - return; - } - else if (uid == "com.mumfrey.liteloader") - { - on_actionInstall_LiteLoader_triggered(); - return; - } - VersionSelectDialog vselect(list.get(), tr("Change %1 version").arg(name), this); - if (uid == "net.fabricmc.intermediary") - { - vselect.setEmptyString(tr("No intermediary mappings versions are currently available.")); - vselect.setEmptyErrorString(tr("Couldn't load or download the intermediary mappings version lists!")); - vselect.setExactFilter(BaseVersionList::ParentVersionRole, m_profile->getComponentVersion("net.minecraft")); - } - auto currentVersion = patch->getVersion(); - if(!currentVersion.isEmpty()) - { - vselect.setCurrentVersion(currentVersion); - } - if (!vselect.exec() || !vselect.selectedVersion()) - return; - - qDebug() << "Change" << uid << "to" << vselect.selectedVersion()->descriptor(); - bool important = false; - if(uid == "net.minecraft") - { - important = true; - } - m_profile->setComponentVersion(uid, vselect.selectedVersion()->descriptor(), important); - m_profile->resolve(Net::Mode::Online); - m_container->refreshContainer(); -} - -void VersionPage::on_actionDownload_All_triggered() -{ - if (!MMC->accounts()->anyAccountIsValid()) - { - CustomMessageBox::selectable( - this, tr("Error"), - tr("MultiMC cannot download Minecraft or update instances unless you have at least " - "one account added.\nPlease add your Mojang or Minecraft account."), - QMessageBox::Warning)->show(); - return; - } - - auto updateTask = m_inst->createUpdateTask(Net::Mode::Online); - if (!updateTask) - { - return; - } - ProgressDialog tDialog(this); - connect(updateTask.get(), SIGNAL(failed(QString)), SLOT(onGameUpdateError(QString))); - // FIXME: unused return value - tDialog.execWithTask(updateTask.get()); - updateButtons(); - m_container->refreshContainer(); -} - -void VersionPage::on_actionInstall_Forge_triggered() -{ - auto vlist = ENV.metadataIndex()->get("net.minecraftforge"); - if(!vlist) - { - return; - } - VersionSelectDialog vselect(vlist.get(), tr("Select Forge version"), this); - vselect.setExactFilter(BaseVersionList::ParentVersionRole, m_profile->getComponentVersion("net.minecraft")); - vselect.setEmptyString(tr("No Forge versions are currently available for Minecraft ") + m_profile->getComponentVersion("net.minecraft")); - vselect.setEmptyErrorString(tr("Couldn't load or download the Forge version lists!")); - - auto currentVersion = m_profile->getComponentVersion("net.minecraftforge"); - if(!currentVersion.isEmpty()) - { - vselect.setCurrentVersion(currentVersion); - } - - if (vselect.exec() && vselect.selectedVersion()) - { - auto vsn = vselect.selectedVersion(); - m_profile->setComponentVersion("net.minecraftforge", vsn->descriptor()); - m_profile->resolve(Net::Mode::Online); - // m_profile->installVersion(); - preselect(m_profile->rowCount(QModelIndex())-1); - m_container->refreshContainer(); - } -} - -void VersionPage::on_actionInstall_Fabric_triggered() -{ - auto vlist = ENV.metadataIndex()->get("net.fabricmc.fabric-loader"); - if(!vlist) - { - return; - } - VersionSelectDialog vselect(vlist.get(), tr("Select Fabric Loader version"), this); - vselect.setEmptyString(tr("No Fabric Loader versions are currently available.")); - vselect.setEmptyErrorString(tr("Couldn't load or download the Fabric Loader version lists!")); - - auto currentVersion = m_profile->getComponentVersion("net.fabricmc.fabric-loader"); - if(!currentVersion.isEmpty()) - { - vselect.setCurrentVersion(currentVersion); - } - - if (vselect.exec() && vselect.selectedVersion()) - { - auto vsn = vselect.selectedVersion(); - m_profile->setComponentVersion("net.fabricmc.fabric-loader", vsn->descriptor()); - m_profile->resolve(Net::Mode::Online); - preselect(m_profile->rowCount(QModelIndex())-1); - m_container->refreshContainer(); - } -} - -void VersionPage::on_actionAdd_Empty_triggered() -{ - NewComponentDialog compdialog(QString(), QString(), this); - QStringList blacklist; - for(int i = 0; i < m_profile->rowCount(); i++) - { - auto comp = m_profile->getComponent(i); - blacklist.push_back(comp->getID()); - } - compdialog.setBlacklist(blacklist); - if (compdialog.exec()) - { - qDebug() << "name:" << compdialog.name(); - qDebug() << "uid:" << compdialog.uid(); - m_profile->installEmpty(compdialog.uid(), compdialog.name()); - } -} - -void VersionPage::on_actionInstall_LiteLoader_triggered() -{ - auto vlist = ENV.metadataIndex()->get("com.mumfrey.liteloader"); - if(!vlist) - { - return; - } - VersionSelectDialog vselect(vlist.get(), tr("Select LiteLoader version"), this); - vselect.setExactFilter(BaseVersionList::ParentVersionRole, m_profile->getComponentVersion("net.minecraft")); - vselect.setEmptyString(tr("No LiteLoader versions are currently available for Minecraft ") + m_profile->getComponentVersion("net.minecraft")); - vselect.setEmptyErrorString(tr("Couldn't load or download the LiteLoader version lists!")); - - auto currentVersion = m_profile->getComponentVersion("com.mumfrey.liteloader"); - if(!currentVersion.isEmpty()) - { - vselect.setCurrentVersion(currentVersion); - } - - if (vselect.exec() && vselect.selectedVersion()) - { - auto vsn = vselect.selectedVersion(); - m_profile->setComponentVersion("com.mumfrey.liteloader", vsn->descriptor()); - m_profile->resolve(Net::Mode::Online); - // m_profile->installVersion(vselect.selectedVersion()); - preselect(m_profile->rowCount(QModelIndex())-1); - m_container->refreshContainer(); - } -} - -void VersionPage::on_actionLibrariesFolder_triggered() -{ - DesktopServices::openDirectory(m_inst->getLocalLibraryPath(), true); -} - -void VersionPage::on_actionMinecraftFolder_triggered() -{ - DesktopServices::openDirectory(m_inst->gameRoot(), true); -} - -void VersionPage::versionCurrent(const QModelIndex ¤t, const QModelIndex &previous) -{ - currentIdx = current.row(); - updateButtons(currentIdx); -} - -void VersionPage::preselect(int row) -{ - if(row < 0) - { - row = 0; - } - if(row >= m_profile->rowCount(QModelIndex())) - { - row = m_profile->rowCount(QModelIndex()) - 1; - } - if(row < 0) - { - return; - } - auto model_index = m_profile->index(row); - ui->packageView->selectionModel()->select(model_index, QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows); - updateButtons(row); -} - -void VersionPage::onGameUpdateError(QString error) -{ - CustomMessageBox::selectable(this, tr("Error updating instance"), error, QMessageBox::Warning)->show(); -} - -Component * VersionPage::current() -{ - auto row = currentRow(); - if(row < 0) - { - return nullptr; - } - return m_profile->getComponent(row); -} - -int VersionPage::currentRow() -{ - if (ui->packageView->selectionModel()->selectedRows().isEmpty()) - { - return -1; - } - return ui->packageView->selectionModel()->selectedRows().first().row(); -} - -void VersionPage::on_actionCustomize_triggered() -{ - auto version = currentRow(); - if(version == -1) - { - return; - } - auto patch = m_profile->getComponent(version); - if(!patch->getVersionFile()) - { - // TODO: wait for the update task to finish here... - return; - } - if(!m_profile->customize(version)) - { - // TODO: some error box here - } - updateButtons(); - preselect(currentIdx); -} - -void VersionPage::on_actionEdit_triggered() -{ - auto version = current(); - if(!version) - { - return; - } - auto filename = version->getFilename(); - if(!QFileInfo::exists(filename)) - { - qWarning() << "file" << filename << "can't be opened for editing, doesn't exist!"; - return; - } - MMC->openJsonEditor(filename); -} - -void VersionPage::on_actionRevert_triggered() -{ - auto version = currentRow(); - if(version == -1) - { - return; - } - if(!m_profile->revertToBase(version)) - { - // TODO: some error box here - } - updateButtons(); - preselect(currentIdx); - m_container->refreshContainer(); -} - -void VersionPage::onFilterTextChanged(const QString &newContents) -{ - m_filterModel->setFilterFixedString(newContents); -} - -#include "VersionPage.moc" - diff --git a/application/pages/instance/VersionPage.h b/application/pages/instance/VersionPage.h deleted file mode 100644 index b5b4a6f5..00000000 --- a/application/pages/instance/VersionPage.h +++ /dev/null @@ -1,104 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QMainWindow> - -#include "minecraft/MinecraftInstance.h" -#include "minecraft/PackProfile.h" -#include "pages/BasePage.h" - -namespace Ui -{ -class VersionPage; -} - -class VersionPage : public QMainWindow, public BasePage -{ - Q_OBJECT - -public: - explicit VersionPage(MinecraftInstance *inst, QWidget *parent = 0); - virtual ~VersionPage(); - virtual QString displayName() const override - { - return tr("Version"); - } - virtual QIcon icon() const override; - virtual QString id() const override - { - return "version"; - } - virtual QString helpPage() const override - { - return "Instance-Version"; - } - virtual bool shouldDisplay() const override; - -private slots: - void on_actionChange_version_triggered(); - void on_actionInstall_Forge_triggered(); - void on_actionInstall_Fabric_triggered(); - void on_actionAdd_Empty_triggered(); - void on_actionInstall_LiteLoader_triggered(); - void on_actionReload_triggered(); - void on_actionRemove_triggered(); - void on_actionMove_up_triggered(); - void on_actionMove_down_triggered(); - void on_actionAdd_to_Minecraft_jar_triggered(); - void on_actionReplace_Minecraft_jar_triggered(); - void on_actionRevert_triggered(); - void on_actionEdit_triggered(); - void on_actionInstall_mods_triggered(); - void on_actionCustomize_triggered(); - void on_actionDownload_All_triggered(); - - void on_actionMinecraftFolder_triggered(); - void on_actionLibrariesFolder_triggered(); - - void updateVersionControls(); - -private: - Component * current(); - int currentRow(); - void updateButtons(int row = -1); - void preselect(int row = 0); - int doUpdate(); - -protected: - QMenu * createPopupMenu() override; - - /// FIXME: this shouldn't be necessary! - bool reloadPackProfile(); - -private: - Ui::VersionPage *ui; - QSortFilterProxyModel *m_filterModel; - std::shared_ptr<PackProfile> m_profile; - MinecraftInstance *m_inst; - int currentIdx = 0; - bool controlsEnabled = false; - -public slots: - void versionCurrent(const QModelIndex ¤t, const QModelIndex &previous); - -private slots: - void updateRunningStatus(bool running); - void onGameUpdateError(QString error); - void packageCurrent(const QModelIndex ¤t, const QModelIndex &previous); - void showContextMenu(const QPoint &pos); - void onFilterTextChanged(const QString & newContents); -}; diff --git a/application/pages/instance/VersionPage.ui b/application/pages/instance/VersionPage.ui deleted file mode 100644 index 84d06e2e..00000000 --- a/application/pages/instance/VersionPage.ui +++ /dev/null @@ -1,285 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>VersionPage</class> - <widget class="QMainWindow" name="VersionPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>961</width> - <height>1091</height> - </rect> - </property> - <widget class="QWidget" name="centralwidget"> - <layout class="QHBoxLayout" name="horizontalLayout"> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="ModListView" name="packageView"> - <property name="verticalScrollBarPolicy"> - <enum>Qt::ScrollBarAlwaysOn</enum> - </property> - <property name="horizontalScrollBarPolicy"> - <enum>Qt::ScrollBarAlwaysOff</enum> - </property> - <property name="sortingEnabled"> - <bool>false</bool> - </property> - <property name="headerHidden"> - <bool>false</bool> - </property> - <attribute name="headerVisible"> - <bool>true</bool> - </attribute> - </widget> - </item> - <item> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="0" column="1"> - <widget class="QLineEdit" name="filterEdit"> - <property name="clearButtonEnabled"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="0" column="0"> - <widget class="QLabel" name="filterLabel"> - <property name="text"> - <string>Filter:</string> - </property> - </widget> - </item> - </layout> - </item> - <item> - <widget class="MCModInfoFrame" name="frame"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Minimum"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - <widget class="WideBar" name="toolBar"> - <property name="windowTitle"> - <string>Actions</string> - </property> - <property name="allowedAreas"> - <set>Qt::LeftToolBarArea|Qt::RightToolBarArea</set> - </property> - <property name="toolButtonStyle"> - <enum>Qt::ToolButtonTextOnly</enum> - </property> - <property name="floatable"> - <bool>false</bool> - </property> - <attribute name="toolBarArea"> - <enum>RightToolBarArea</enum> - </attribute> - <attribute name="toolBarBreak"> - <bool>false</bool> - </attribute> - <addaction name="actionChange_version"/> - <addaction name="actionMove_up"/> - <addaction name="actionMove_down"/> - <addaction name="actionRemove"/> - <addaction name="separator"/> - <addaction name="actionCustomize"/> - <addaction name="actionEdit"/> - <addaction name="actionRevert"/> - <addaction name="separator"/> - <addaction name="actionInstall_Forge"/> - <addaction name="actionInstall_Fabric"/> - <addaction name="actionInstall_LiteLoader"/> - <addaction name="actionInstall_mods"/> - <addaction name="separator"/> - <addaction name="actionAdd_to_Minecraft_jar"/> - <addaction name="actionReplace_Minecraft_jar"/> - <addaction name="actionAdd_Empty"/> - <addaction name="separator"/> - <addaction name="actionMinecraftFolder"/> - <addaction name="actionLibrariesFolder"/> - <addaction name="separator"/> - <addaction name="actionReload"/> - <addaction name="actionDownload_All"/> - </widget> - <action name="actionChange_version"> - <property name="text"> - <string>Change version</string> - </property> - <property name="toolTip"> - <string>Change version of the selected package.</string> - </property> - </action> - <action name="actionMove_up"> - <property name="text"> - <string>Move up</string> - </property> - <property name="toolTip"> - <string>Make the selected package apply sooner.</string> - </property> - </action> - <action name="actionMove_down"> - <property name="text"> - <string>Move down</string> - </property> - <property name="toolTip"> - <string>Make the selected package apply later.</string> - </property> - </action> - <action name="actionRemove"> - <property name="text"> - <string>Remove</string> - </property> - <property name="toolTip"> - <string>Remove selected package from the instance.</string> - </property> - </action> - <action name="actionCustomize"> - <property name="text"> - <string>Customize</string> - </property> - <property name="toolTip"> - <string>Customize selected package.</string> - </property> - </action> - <action name="actionEdit"> - <property name="text"> - <string>Edit</string> - </property> - <property name="toolTip"> - <string>Edit selected package.</string> - </property> - </action> - <action name="actionRevert"> - <property name="text"> - <string>Revert</string> - </property> - <property name="toolTip"> - <string>Revert the selected package to default.</string> - </property> - </action> - <action name="actionInstall_Forge"> - <property name="text"> - <string>Install Forge</string> - </property> - <property name="toolTip"> - <string>Install the Minecraft Forge package.</string> - </property> - </action> - <action name="actionInstall_Fabric"> - <property name="text"> - <string>Install Fabric</string> - </property> - <property name="toolTip"> - <string>Install the Fabric Loader package.</string> - </property> - </action> - <action name="actionInstall_LiteLoader"> - <property name="text"> - <string>Install LiteLoader</string> - </property> - <property name="toolTip"> - <string>Install the LiteLoader package.</string> - </property> - </action> - <action name="actionInstall_mods"> - <property name="text"> - <string>Install mods</string> - </property> - <property name="toolTip"> - <string>Install normal mods.</string> - </property> - </action> - <action name="actionAdd_to_Minecraft_jar"> - <property name="text"> - <string>Add to Minecraft.jar</string> - </property> - <property name="toolTip"> - <string>Add a mod into the Minecraft jar file.</string> - </property> - </action> - <action name="actionReplace_Minecraft_jar"> - <property name="text"> - <string>Replace Minecraft.jar</string> - </property> - </action> - <action name="actionAdd_Empty"> - <property name="text"> - <string>Add Empty</string> - </property> - <property name="toolTip"> - <string>Add an empty custom package.</string> - </property> - </action> - <action name="actionReload"> - <property name="text"> - <string>Reload</string> - </property> - <property name="toolTip"> - <string>Reload all packages.</string> - </property> - </action> - <action name="actionDownload_All"> - <property name="text"> - <string>Download All</string> - </property> - <property name="toolTip"> - <string>Download the files needed to launch the instance now.</string> - </property> - </action> - <action name="actionMinecraftFolder"> - <property name="text"> - <string>Open .minecraft</string> - </property> - <property name="toolTip"> - <string>Open the instance's .minecraft folder.</string> - </property> - </action> - <action name="actionLibrariesFolder"> - <property name="text"> - <string>Open libraries</string> - </property> - <property name="toolTip"> - <string>Open the instance's local libraries folder.</string> - </property> - </action> - </widget> - <customwidgets> - <customwidget> - <class>ModListView</class> - <extends>QTreeView</extends> - <header>widgets/ModListView.h</header> - </customwidget> - <customwidget> - <class>MCModInfoFrame</class> - <extends>QFrame</extends> - <header>widgets/MCModInfoFrame.h</header> - <container>1</container> - </customwidget> - <customwidget> - <class>WideBar</class> - <extends>QToolBar</extends> - <header>widgets/WideBar.h</header> - </customwidget> - </customwidgets> - <resources/> - <connections/> -</ui> diff --git a/application/pages/instance/WorldListPage.cpp b/application/pages/instance/WorldListPage.cpp deleted file mode 100644 index 119cff3e..00000000 --- a/application/pages/instance/WorldListPage.cpp +++ /dev/null @@ -1,408 +0,0 @@ -/* Copyright 2015-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "WorldListPage.h" -#include "ui_WorldListPage.h" -#include "minecraft/WorldList.h" -#include <DesktopServices.h> -#include <QEvent> -#include <QMenu> -#include <QKeyEvent> -#include <QClipboard> -#include <QMessageBox> -#include <QTreeView> -#include <QInputDialog> -#include <tools/MCEditTool.h> - -#include "MultiMC.h" -#include <GuiUtil.h> -#include <QProcess> -#include <FileSystem.h> - -class WorldListProxyModel : public QSortFilterProxyModel -{ - Q_OBJECT - -public: - WorldListProxyModel(QObject *parent) : QSortFilterProxyModel(parent) {} - - virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const - { - QModelIndex sourceIndex = mapToSource(index); - - if (index.column() == 0 && role == Qt::DecorationRole) - { - WorldList *worlds = qobject_cast<WorldList *>(sourceModel()); - auto iconFile = worlds->data(sourceIndex, WorldList::IconFileRole).toString(); - if(iconFile.isNull()) { - // NOTE: Minecraft uses the same placeholder for servers AND worlds - return MMC->getThemedIcon("unknown_server"); - } - return QIcon(iconFile); - } - - return sourceIndex.data(role); - } -}; - - -WorldListPage::WorldListPage(BaseInstance *inst, std::shared_ptr<WorldList> worlds, QWidget *parent) - : QMainWindow(parent), m_inst(inst), ui(new Ui::WorldListPage), m_worlds(worlds) -{ - ui->setupUi(this); - - ui->toolBar->insertSpacer(ui->actionRefresh); - - WorldListProxyModel * proxy = new WorldListProxyModel(this); - proxy->setSortCaseSensitivity(Qt::CaseInsensitive); - proxy->setSourceModel(m_worlds.get()); - ui->worldTreeView->setSortingEnabled(true); - ui->worldTreeView->setModel(proxy); - ui->worldTreeView->installEventFilter(this); - ui->worldTreeView->setContextMenuPolicy(Qt::CustomContextMenu); - ui->worldTreeView->setIconSize(QSize(64,64)); - connect(ui->worldTreeView, &QTreeView::customContextMenuRequested, this, &WorldListPage::ShowContextMenu); - - auto head = ui->worldTreeView->header(); - head->setSectionResizeMode(0, QHeaderView::Stretch); - head->setSectionResizeMode(1, QHeaderView::ResizeToContents); - - connect(ui->worldTreeView->selectionModel(), &QItemSelectionModel::currentChanged, this, &WorldListPage::worldChanged); - worldChanged(QModelIndex(), QModelIndex()); -} - -void WorldListPage::openedImpl() -{ - m_worlds->startWatching(); -} - -void WorldListPage::closedImpl() -{ - m_worlds->stopWatching(); -} - -WorldListPage::~WorldListPage() -{ - m_worlds->stopWatching(); - delete ui; -} - -void WorldListPage::ShowContextMenu(const QPoint& pos) -{ - auto menu = ui->toolBar->createContextMenu(this, tr("Context menu")); - menu->exec(ui->worldTreeView->mapToGlobal(pos)); - delete menu; -} - -QMenu * WorldListPage::createPopupMenu() -{ - QMenu* filteredMenu = QMainWindow::createPopupMenu(); - filteredMenu->removeAction( ui->toolBar->toggleViewAction() ); - return filteredMenu; -} - -bool WorldListPage::shouldDisplay() const -{ - return true; -} - -bool WorldListPage::worldListFilter(QKeyEvent *keyEvent) -{ - switch (keyEvent->key()) - { - case Qt::Key_Delete: - on_actionRemove_triggered(); - return true; - default: - break; - } - return QWidget::eventFilter(ui->worldTreeView, keyEvent); -} - -bool WorldListPage::eventFilter(QObject *obj, QEvent *ev) -{ - if (ev->type() != QEvent::KeyPress) - { - return QWidget::eventFilter(obj, ev); - } - QKeyEvent *keyEvent = static_cast<QKeyEvent *>(ev); - if (obj == ui->worldTreeView) - return worldListFilter(keyEvent); - return QWidget::eventFilter(obj, ev); -} - -void WorldListPage::on_actionRemove_triggered() -{ - auto proxiedIndex = getSelectedWorld(); - - if(!proxiedIndex.isValid()) - return; - - auto result = QMessageBox::question(this, - tr("Are you sure?"), - tr("This will remove the selected world permenantly.\n" - "The world will be gone forever (A LONG TIME).\n" - "\n" - "Do you want to continue?")); - if(result != QMessageBox::Yes) - { - return; - } - m_worlds->stopWatching(); - m_worlds->deleteWorld(proxiedIndex.row()); - m_worlds->startWatching(); -} - -void WorldListPage::on_actionView_Folder_triggered() -{ - DesktopServices::openDirectory(m_worlds->dir().absolutePath(), true); -} - -void WorldListPage::on_actionDatapacks_triggered() -{ - QModelIndex index = getSelectedWorld(); - - if (!index.isValid()) - { - return; - } - - if(!worldSafetyNagQuestion()) - return; - - auto fullPath = m_worlds->data(index, WorldList::FolderRole).toString(); - - DesktopServices::openDirectory(FS::PathCombine(fullPath, "datapacks"), true); -} - - -void WorldListPage::on_actionReset_Icon_triggered() -{ - auto proxiedIndex = getSelectedWorld(); - - if(!proxiedIndex.isValid()) - return; - - if(m_worlds->resetIcon(proxiedIndex.row())) { - ui->actionReset_Icon->setEnabled(false); - } -} - - -QModelIndex WorldListPage::getSelectedWorld() -{ - auto index = ui->worldTreeView->selectionModel()->currentIndex(); - - auto proxy = (QSortFilterProxyModel *) ui->worldTreeView->model(); - return proxy->mapToSource(index); -} - -void WorldListPage::on_actionCopy_Seed_triggered() -{ - QModelIndex index = getSelectedWorld(); - - if (!index.isValid()) - { - return; - } - int64_t seed = m_worlds->data(index, WorldList::SeedRole).toLongLong(); - MMC->clipboard()->setText(QString::number(seed)); -} - -void WorldListPage::on_actionMCEdit_triggered() -{ - if(m_mceditStarting) - return; - - auto mcedit = MMC->mcedit(); - - const QString mceditPath = mcedit->path(); - - QModelIndex index = getSelectedWorld(); - - if (!index.isValid()) - { - return; - } - - if(!worldSafetyNagQuestion()) - return; - - auto fullPath = m_worlds->data(index, WorldList::FolderRole).toString(); - - auto program = mcedit->getProgramPath(); - if(program.size()) - { -#ifdef Q_OS_WIN32 - if(!QProcess::startDetached(program, {fullPath}, mceditPath)) - { - mceditError(); - } -#else - m_mceditProcess.reset(new LoggedProcess()); - m_mceditProcess->setDetachable(true); - connect(m_mceditProcess.get(), &LoggedProcess::stateChanged, this, &WorldListPage::mceditState); - m_mceditProcess->start(program, {fullPath}); - m_mceditProcess->setWorkingDirectory(mceditPath); - m_mceditStarting = true; -#endif - } - else - { - QMessageBox::warning( - this->parentWidget(), - tr("No MCEdit found or set up!"), - tr("You do not have MCEdit set up or it was moved.\nYou can set it up in the global settings.") - ); - } -} - -void WorldListPage::mceditError() -{ - QMessageBox::warning( - this->parentWidget(), - tr("MCEdit failed to start!"), - tr("MCEdit failed to start.\nIt may be necessary to reinstall it.") - ); -} - -void WorldListPage::mceditState(LoggedProcess::State state) -{ - bool failed = false; - switch(state) - { - case LoggedProcess::NotRunning: - case LoggedProcess::Starting: - return; - case LoggedProcess::FailedToStart: - case LoggedProcess::Crashed: - case LoggedProcess::Aborted: - { - failed = true; - } - case LoggedProcess::Running: - case LoggedProcess::Finished: - { - m_mceditStarting = false; - break; - } - } - if(failed) - { - mceditError(); - } -} - -void WorldListPage::worldChanged(const QModelIndex ¤t, const QModelIndex &previous) -{ - QModelIndex index = getSelectedWorld(); - bool enable = index.isValid(); - ui->actionCopy_Seed->setEnabled(enable); - ui->actionMCEdit->setEnabled(enable); - ui->actionRemove->setEnabled(enable); - ui->actionCopy->setEnabled(enable); - ui->actionRename->setEnabled(enable); - ui->actionDatapacks->setEnabled(enable); - bool hasIcon = !index.data(WorldList::IconFileRole).isNull(); - ui->actionReset_Icon->setEnabled(enable && hasIcon); -} - -void WorldListPage::on_actionAdd_triggered() -{ - auto list = GuiUtil::BrowseForFiles( - displayName(), - tr("Select a Minecraft world zip"), - tr("Minecraft World Zip File (*.zip)"), QString(), this->parentWidget()); - if (!list.empty()) - { - m_worlds->stopWatching(); - for (auto filename : list) - { - m_worlds->installWorld(QFileInfo(filename)); - } - m_worlds->startWatching(); - } -} - -bool WorldListPage::isWorldSafe(QModelIndex) -{ - return !m_inst->isRunning(); -} - -bool WorldListPage::worldSafetyNagQuestion() -{ - if(!isWorldSafe(getSelectedWorld())) - { - auto result = QMessageBox::question(this, tr("Copy World"), tr("Changing a world while Minecraft is running is potentially unsafe.\nDo you wish to proceed?")); - if(result == QMessageBox::No) - { - return false; - } - } - return true; -} - - -void WorldListPage::on_actionCopy_triggered() -{ - QModelIndex index = getSelectedWorld(); - if (!index.isValid()) - { - return; - } - - if(!worldSafetyNagQuestion()) - return; - - auto worldVariant = m_worlds->data(index, WorldList::ObjectRole); - auto world = (World *) worldVariant.value<void *>(); - bool ok = false; - QString name = QInputDialog::getText(this, tr("World name"), tr("Enter a new name for the copy."), QLineEdit::Normal, world->name(), &ok); - - if (ok && name.length() > 0) - { - world->install(m_worlds->dir().absolutePath(), name); - } -} - -void WorldListPage::on_actionRename_triggered() -{ - QModelIndex index = getSelectedWorld(); - if (!index.isValid()) - { - return; - } - - if(!worldSafetyNagQuestion()) - return; - - auto worldVariant = m_worlds->data(index, WorldList::ObjectRole); - auto world = (World *) worldVariant.value<void *>(); - - bool ok = false; - QString name = QInputDialog::getText(this, tr("World name"), tr("Enter a new world name."), QLineEdit::Normal, world->name(), &ok); - - if (ok && name.length() > 0) - { - world->rename(name); - } -} - -void WorldListPage::on_actionRefresh_triggered() -{ - m_worlds->update(); -} - -#include "WorldListPage.moc" diff --git a/application/pages/instance/WorldListPage.h b/application/pages/instance/WorldListPage.h deleted file mode 100644 index 4fc9aa09..00000000 --- a/application/pages/instance/WorldListPage.h +++ /dev/null @@ -1,99 +0,0 @@ -/* Copyright 2015-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QMainWindow> - -#include "minecraft/MinecraftInstance.h" -#include "pages/BasePage.h" -#include <MultiMC.h> -#include <LoggedProcess.h> - -class WorldList; -namespace Ui -{ -class WorldListPage; -} - -class WorldListPage : public QMainWindow, public BasePage -{ - Q_OBJECT - -public: - explicit WorldListPage( - BaseInstance *inst, - std::shared_ptr<WorldList> worlds, - QWidget *parent = 0 - ); - virtual ~WorldListPage(); - - virtual QString displayName() const override - { - return tr("Worlds"); - } - virtual QIcon icon() const override - { - return MMC->getThemedIcon("worlds"); - } - virtual QString id() const override - { - return "worlds"; - } - virtual QString helpPage() const override - { - return "Worlds"; - } - virtual bool shouldDisplay() const override; - - virtual void openedImpl() override; - virtual void closedImpl() override; - -protected: - bool eventFilter(QObject *obj, QEvent *ev) override; - bool worldListFilter(QKeyEvent *ev); - QMenu * createPopupMenu() override; - -protected: - BaseInstance *m_inst; - -private: - QModelIndex getSelectedWorld(); - bool isWorldSafe(QModelIndex index); - bool worldSafetyNagQuestion(); - void mceditError(); - -private: - Ui::WorldListPage *ui; - std::shared_ptr<WorldList> m_worlds; - unique_qobject_ptr<LoggedProcess> m_mceditProcess; - bool m_mceditStarting = false; - -private slots: - void on_actionCopy_Seed_triggered(); - void on_actionMCEdit_triggered(); - void on_actionRemove_triggered(); - void on_actionAdd_triggered(); - void on_actionCopy_triggered(); - void on_actionRename_triggered(); - void on_actionRefresh_triggered(); - void on_actionView_Folder_triggered(); - void on_actionDatapacks_triggered(); - void on_actionReset_Icon_triggered(); - void worldChanged(const QModelIndex ¤t, const QModelIndex &previous); - void mceditState(LoggedProcess::State state); - - void ShowContextMenu(const QPoint &pos); -}; diff --git a/application/pages/instance/WorldListPage.ui b/application/pages/instance/WorldListPage.ui deleted file mode 100644 index ed078d94..00000000 --- a/application/pages/instance/WorldListPage.ui +++ /dev/null @@ -1,161 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>WorldListPage</class> - <widget class="QMainWindow" name="WorldListPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>800</width> - <height>600</height> - </rect> - </property> - <widget class="QWidget" name="centralwidget"> - <layout class="QHBoxLayout" name="horizontalLayout"> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <widget class="QTreeView" name="worldTreeView"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="acceptDrops"> - <bool>true</bool> - </property> - <property name="dragDropMode"> - <enum>QAbstractItemView::DragDrop</enum> - </property> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - <property name="rootIsDecorated"> - <bool>false</bool> - </property> - <property name="itemsExpandable"> - <bool>false</bool> - </property> - <property name="sortingEnabled"> - <bool>true</bool> - </property> - <property name="allColumnsShowFocus"> - <bool>true</bool> - </property> - <attribute name="headerStretchLastSection"> - <bool>false</bool> - </attribute> - </widget> - </item> - </layout> - </widget> - <widget class="WideBar" name="toolBar"> - <property name="windowTitle"> - <string>Actions</string> - </property> - <property name="allowedAreas"> - <set>Qt::LeftToolBarArea|Qt::RightToolBarArea</set> - </property> - <property name="toolButtonStyle"> - <enum>Qt::ToolButtonTextOnly</enum> - </property> - <property name="floatable"> - <bool>false</bool> - </property> - <attribute name="toolBarArea"> - <enum>RightToolBarArea</enum> - </attribute> - <attribute name="toolBarBreak"> - <bool>false</bool> - </attribute> - <addaction name="actionAdd"/> - <addaction name="separator"/> - <addaction name="actionRename"/> - <addaction name="actionCopy"/> - <addaction name="actionRemove"/> - <addaction name="actionMCEdit"/> - <addaction name="actionDatapacks"/> - <addaction name="actionReset_Icon"/> - <addaction name="separator"/> - <addaction name="actionCopy_Seed"/> - <addaction name="actionRefresh"/> - <addaction name="actionView_Folder"/> - </widget> - <action name="actionAdd"> - <property name="text"> - <string>Add</string> - </property> - </action> - <action name="actionRename"> - <property name="text"> - <string>Rename</string> - </property> - </action> - <action name="actionCopy"> - <property name="text"> - <string>Copy</string> - </property> - </action> - <action name="actionRemove"> - <property name="text"> - <string>Remove</string> - </property> - </action> - <action name="actionMCEdit"> - <property name="text"> - <string>MCEdit</string> - </property> - </action> - <action name="actionCopy_Seed"> - <property name="text"> - <string>Copy Seed</string> - </property> - </action> - <action name="actionRefresh"> - <property name="text"> - <string>Refresh</string> - </property> - </action> - <action name="actionView_Folder"> - <property name="text"> - <string>View Folder</string> - </property> - </action> - <action name="actionReset_Icon"> - <property name="text"> - <string>Reset Icon</string> - </property> - <property name="toolTip"> - <string>Remove world icon to make the game re-generate it on next load.</string> - </property> - </action> - <action name="actionDatapacks"> - <property name="text"> - <string>Datapacks</string> - </property> - <property name="toolTip"> - <string>Manage datapacks inside the world.</string> - </property> - </action> - </widget> - <customwidgets> - <customwidget> - <class>WideBar</class> - <extends>QToolBar</extends> - <header>widgets/WideBar.h</header> - </customwidget> - </customwidgets> - <resources/> - <connections/> -</ui> diff --git a/application/pages/modplatform/ImportPage.cpp b/application/pages/modplatform/ImportPage.cpp deleted file mode 100644 index c2369bdc..00000000 --- a/application/pages/modplatform/ImportPage.cpp +++ /dev/null @@ -1,130 +0,0 @@ -#include "ImportPage.h" -#include "ui_ImportPage.h" - -#include "MultiMC.h" -#include "dialogs/NewInstanceDialog.h" -#include <QFileDialog> -#include <QValidator> -#include <InstanceImportTask.h> - -class UrlValidator : public QValidator -{ -public: - using QValidator::QValidator; - - State validate(QString &in, int &pos) const - { - const QUrl url(in); - if (url.isValid() && !url.isRelative() && !url.isEmpty()) - { - return Acceptable; - } - else if (QFile::exists(in)) - { - return Acceptable; - } - else - { - return Intermediate; - } - } -}; - -ImportPage::ImportPage(NewInstanceDialog* dialog, QWidget *parent) - : QWidget(parent), ui(new Ui::ImportPage), dialog(dialog) -{ - ui->setupUi(this); - ui->modpackEdit->setValidator(new UrlValidator(ui->modpackEdit)); - connect(ui->modpackEdit, &QLineEdit::textChanged, this, &ImportPage::updateState); -} - -ImportPage::~ImportPage() -{ - delete ui; -} - -bool ImportPage::shouldDisplay() const -{ - return true; -} - -void ImportPage::openedImpl() -{ - updateState(); -} - -void ImportPage::updateState() -{ - if(!isOpened) - { - return; - } - if(ui->modpackEdit->hasAcceptableInput()) - { - QString input = ui->modpackEdit->text(); - auto url = QUrl::fromUserInput(input); - if(url.isLocalFile()) - { - // FIXME: actually do some validation of what's inside here... this is fake AF - QFileInfo fi(input); - if(fi.exists() && fi.suffix() == "zip") - { - QFileInfo fi(url.fileName()); - dialog->setSuggestedPack(fi.completeBaseName(), new InstanceImportTask(url)); - dialog->setSuggestedIcon("default"); - } - } - else - { - if(input.endsWith("?client=y")) { - input.chop(9); - input.append("/file"); - url = QUrl::fromUserInput(input); - } - // hook, line and sinker. - QFileInfo fi(url.fileName()); - dialog->setSuggestedPack(fi.completeBaseName(), new InstanceImportTask(url)); - dialog->setSuggestedIcon("default"); - } - } - else - { - dialog->setSuggestedPack(); - } -} - -void ImportPage::setUrl(const QString& url) -{ - ui->modpackEdit->setText(url); - updateState(); -} - -void ImportPage::on_modpackBtn_clicked() -{ - const QUrl url = QFileDialog::getOpenFileUrl(this, tr("Choose modpack"), modpackUrl(), tr("Zip (*.zip)")); - if (url.isValid()) - { - if (url.isLocalFile()) - { - ui->modpackEdit->setText(url.toLocalFile()); - } - else - { - ui->modpackEdit->setText(url.toString()); - } - } -} - - -QUrl ImportPage::modpackUrl() const -{ - const QUrl url(ui->modpackEdit->text()); - if (url.isValid() && !url.isRelative() && !url.host().isEmpty()) - { - return url; - } - else - { - return QUrl::fromLocalFile(ui->modpackEdit->text()); - } -} diff --git a/application/pages/modplatform/ImportPage.h b/application/pages/modplatform/ImportPage.h deleted file mode 100644 index 67e3c201..00000000 --- a/application/pages/modplatform/ImportPage.h +++ /dev/null @@ -1,70 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QWidget> - -#include "pages/BasePage.h" -#include <MultiMC.h> -#include "tasks/Task.h" - -namespace Ui -{ -class ImportPage; -} - -class NewInstanceDialog; - -class ImportPage : public QWidget, public BasePage -{ - Q_OBJECT - -public: - explicit ImportPage(NewInstanceDialog* dialog, QWidget *parent = 0); - virtual ~ImportPage(); - virtual QString displayName() const override - { - return tr("Import from zip"); - } - virtual QIcon icon() const override - { - return MMC->getThemedIcon("viewfolder"); - } - virtual QString id() const override - { - return "import"; - } - virtual QString helpPage() const override - { - return "Zip-import"; - } - virtual bool shouldDisplay() const override; - - void setUrl(const QString & url); - void openedImpl() override; - -private slots: - void on_modpackBtn_clicked(); - void updateState(); - -private: - QUrl modpackUrl() const; - -private: - Ui::ImportPage *ui = nullptr; - NewInstanceDialog* dialog = nullptr; -}; - diff --git a/application/pages/modplatform/ImportPage.ui b/application/pages/modplatform/ImportPage.ui deleted file mode 100644 index eb63cbe9..00000000 --- a/application/pages/modplatform/ImportPage.ui +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>ImportPage</class> - <widget class="QWidget" name="ImportPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>546</width> - <height>405</height> - </rect> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="1" column="1"> - <widget class="QPushButton" name="modpackBtn"> - <property name="text"> - <string>Browse</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLineEdit" name="modpackEdit"> - <property name="placeholderText"> - <string notr="true">http://</string> - </property> - </widget> - </item> - <item row="0" column="0" colspan="2"> - <widget class="QLabel" name="modpackLabel"> - <property name="text"> - <string>Local file or link to a direct download:</string> - </property> - </widget> - </item> - <item row="2" column="0" colspan="2"> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/application/pages/modplatform/VanillaPage.cpp b/application/pages/modplatform/VanillaPage.cpp deleted file mode 100644 index 02638315..00000000 --- a/application/pages/modplatform/VanillaPage.cpp +++ /dev/null @@ -1,104 +0,0 @@ -#include "VanillaPage.h" -#include "ui_VanillaPage.h" - -#include "MultiMC.h" - -#include <meta/Index.h> -#include <meta/VersionList.h> -#include <dialogs/NewInstanceDialog.h> -#include <Filter.h> -#include <Env.h> -#include <InstanceCreationTask.h> -#include <QTabBar> - -VanillaPage::VanillaPage(NewInstanceDialog *dialog, QWidget *parent) - : QWidget(parent), dialog(dialog), ui(new Ui::VanillaPage) -{ - ui->setupUi(this); - ui->tabWidget->tabBar()->hide(); - connect(ui->versionList, &VersionSelectWidget::selectedVersionChanged, this, &VanillaPage::setSelectedVersion); - filterChanged(); - connect(ui->alphaFilter, &QCheckBox::stateChanged, this, &VanillaPage::filterChanged); - connect(ui->betaFilter, &QCheckBox::stateChanged, this, &VanillaPage::filterChanged); - connect(ui->snapshotFilter, &QCheckBox::stateChanged, this, &VanillaPage::filterChanged); - connect(ui->oldSnapshotFilter, &QCheckBox::stateChanged, this, &VanillaPage::filterChanged); - connect(ui->releaseFilter, &QCheckBox::stateChanged, this, &VanillaPage::filterChanged); - connect(ui->experimentsFilter, &QCheckBox::stateChanged, this, &VanillaPage::filterChanged); - connect(ui->refreshBtn, &QPushButton::clicked, this, &VanillaPage::refresh); -} - -void VanillaPage::openedImpl() -{ - if(!initialized) - { - auto vlist = ENV.metadataIndex()->get("net.minecraft"); - ui->versionList->initialize(vlist.get()); - initialized = true; - } - else - { - suggestCurrent(); - } -} - -void VanillaPage::refresh() -{ - ui->versionList->loadList(); -} - -void VanillaPage::filterChanged() -{ - QStringList out; - if(ui->alphaFilter->isChecked()) - out << "(old_alpha)"; - if(ui->betaFilter->isChecked()) - out << "(old_beta)"; - if(ui->snapshotFilter->isChecked()) - out << "(snapshot)"; - if(ui->oldSnapshotFilter->isChecked()) - out << "(old_snapshot)"; - if(ui->releaseFilter->isChecked()) - out << "(release)"; - if(ui->experimentsFilter->isChecked()) - out << "(experiment)"; - auto regexp = out.join('|'); - ui->versionList->setFilter(BaseVersionList::TypeRole, new RegexpFilter(regexp, false)); -} - -VanillaPage::~VanillaPage() -{ - delete ui; -} - -bool VanillaPage::shouldDisplay() const -{ - return true; -} - -BaseVersionPtr VanillaPage::selectedVersion() const -{ - return m_selectedVersion; -} - -void VanillaPage::suggestCurrent() -{ - if (!isOpened) - { - return; - } - - if(!m_selectedVersion) - { - dialog->setSuggestedPack(); - return; - } - - dialog->setSuggestedPack(m_selectedVersion->descriptor(), new InstanceCreationTask(m_selectedVersion)); - dialog->setSuggestedIcon("default"); -} - -void VanillaPage::setSelectedVersion(BaseVersionPtr version) -{ - m_selectedVersion = version; - suggestCurrent(); -} diff --git a/application/pages/modplatform/VanillaPage.h b/application/pages/modplatform/VanillaPage.h deleted file mode 100644 index af6fd392..00000000 --- a/application/pages/modplatform/VanillaPage.h +++ /dev/null @@ -1,75 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QWidget> - -#include "pages/BasePage.h" -#include <MultiMC.h> -#include "tasks/Task.h" - -namespace Ui -{ -class VanillaPage; -} - -class NewInstanceDialog; - -class VanillaPage : public QWidget, public BasePage -{ - Q_OBJECT - -public: - explicit VanillaPage(NewInstanceDialog *dialog, QWidget *parent = 0); - virtual ~VanillaPage(); - virtual QString displayName() const override - { - return tr("Vanilla"); - } - virtual QIcon icon() const override - { - return MMC->getThemedIcon("minecraft"); - } - virtual QString id() const override - { - return "vanilla"; - } - virtual QString helpPage() const override - { - return "Vanilla-platform"; - } - virtual bool shouldDisplay() const override; - void openedImpl() override; - - BaseVersionPtr selectedVersion() const; - -public slots: - void setSelectedVersion(BaseVersionPtr version); - -private slots: - void filterChanged(); - -private: - void refresh(); - void suggestCurrent(); - -private: - bool initialized = false; - NewInstanceDialog *dialog = nullptr; - Ui::VanillaPage *ui = nullptr; - bool m_versionSetByUser = false; - BaseVersionPtr m_selectedVersion; -}; diff --git a/application/pages/modplatform/VanillaPage.ui b/application/pages/modplatform/VanillaPage.ui deleted file mode 100644 index 47effc86..00000000 --- a/application/pages/modplatform/VanillaPage.ui +++ /dev/null @@ -1,169 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>VanillaPage</class> - <widget class="QWidget" name="VanillaPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>815</width> - <height>607</height> - </rect> - </property> - <layout class="QVBoxLayout" name="verticalLayout_5"> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <widget class="QTabWidget" name="tabWidget"> - <property name="currentIndex"> - <number>0</number> - </property> - <widget class="QWidget" name="tab"> - <attribute name="title"> - <string notr="true"/> - </attribute> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="0" column="1"> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Filter</string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="releaseFilter"> - <property name="text"> - <string>Releases</string> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="snapshotFilter"> - <property name="text"> - <string>Snapshots</string> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="oldSnapshotFilter"> - <property name="text"> - <string>Old Snapshots</string> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="betaFilter"> - <property name="text"> - <string>Betas</string> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="alphaFilter"> - <property name="text"> - <string>Alphas</string> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="experimentsFilter"> - <property name="text"> - <string>Experiments</string> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="refreshBtn"> - <property name="text"> - <string>Refresh</string> - </property> - </widget> - </item> - </layout> - </item> - <item row="0" column="0"> - <widget class="VersionSelectWidget" name="versionList" native="true"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - </layout> - </widget> - </widget> - </item> - </layout> - </widget> - <customwidgets> - <customwidget> - <class>VersionSelectWidget</class> - <extends>QWidget</extends> - <header>widgets/VersionSelectWidget.h</header> - <container>1</container> - </customwidget> - </customwidgets> - <tabstops> - <tabstop>tabWidget</tabstop> - <tabstop>releaseFilter</tabstop> - <tabstop>snapshotFilter</tabstop> - <tabstop>oldSnapshotFilter</tabstop> - <tabstop>betaFilter</tabstop> - <tabstop>alphaFilter</tabstop> - <tabstop>experimentsFilter</tabstop> - <tabstop>refreshBtn</tabstop> - </tabstops> - <resources/> - <connections/> -</ui> diff --git a/application/pages/modplatform/atlauncher/AtlFilterModel.cpp b/application/pages/modplatform/atlauncher/AtlFilterModel.cpp deleted file mode 100644 index b5d8f22b..00000000 --- a/application/pages/modplatform/atlauncher/AtlFilterModel.cpp +++ /dev/null @@ -1,81 +0,0 @@ -#include "AtlFilterModel.h" - -#include <QDebug> - -#include <modplatform/atlauncher/ATLPackIndex.h> -#include <Version.h> -#include <MMCStrings.h> - -namespace Atl { - -FilterModel::FilterModel(QObject *parent) : QSortFilterProxyModel(parent) -{ - currentSorting = Sorting::ByPopularity; - sortings.insert(tr("Sort by popularity"), Sorting::ByPopularity); - sortings.insert(tr("Sort by name"), Sorting::ByName); - sortings.insert(tr("Sort by game version"), Sorting::ByGameVersion); - - searchTerm = ""; -} - -const QMap<QString, FilterModel::Sorting> FilterModel::getAvailableSortings() -{ - return sortings; -} - -QString FilterModel::translateCurrentSorting() -{ - return sortings.key(currentSorting); -} - -void FilterModel::setSorting(Sorting sorting) -{ - currentSorting = sorting; - invalidate(); -} - -FilterModel::Sorting FilterModel::getCurrentSorting() -{ - return currentSorting; -} - -void FilterModel::setSearchTerm(const QString term) -{ - searchTerm = term.trimmed(); - invalidate(); -} - -bool FilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const -{ - if (searchTerm.isEmpty()) { - return true; - } - - QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent); - ATLauncher::IndexedPack pack = sourceModel()->data(index, Qt::UserRole).value<ATLauncher::IndexedPack>(); - return pack.name.contains(searchTerm, Qt::CaseInsensitive); -} - -bool FilterModel::lessThan(const QModelIndex &left, const QModelIndex &right) const -{ - ATLauncher::IndexedPack leftPack = sourceModel()->data(left, Qt::UserRole).value<ATLauncher::IndexedPack>(); - ATLauncher::IndexedPack rightPack = sourceModel()->data(right, Qt::UserRole).value<ATLauncher::IndexedPack>(); - - if (currentSorting == ByPopularity) { - return leftPack.position > rightPack.position; - } - else if (currentSorting == ByGameVersion) { - Version lv(leftPack.versions.at(0).minecraft); - Version rv(rightPack.versions.at(0).minecraft); - return lv < rv; - } - else if (currentSorting == ByName) { - return Strings::naturalCompare(leftPack.name, rightPack.name, Qt::CaseSensitive) >= 0; - } - - // Invalid sorting set, somehow... - qWarning() << "Invalid sorting set!"; - return true; -} - -} diff --git a/application/pages/modplatform/atlauncher/AtlFilterModel.h b/application/pages/modplatform/atlauncher/AtlFilterModel.h deleted file mode 100644 index bd72ad91..00000000 --- a/application/pages/modplatform/atlauncher/AtlFilterModel.h +++ /dev/null @@ -1,34 +0,0 @@ -#pragma once - -#include <QtCore/QSortFilterProxyModel> - -namespace Atl { - -class FilterModel : public QSortFilterProxyModel -{ - Q_OBJECT -public: - FilterModel(QObject* parent = Q_NULLPTR); - enum Sorting { - ByPopularity, - ByGameVersion, - ByName, - }; - const QMap<QString, Sorting> getAvailableSortings(); - QString translateCurrentSorting(); - void setSorting(Sorting sorting); - Sorting getCurrentSorting(); - void setSearchTerm(QString term); - -protected: - bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; - bool lessThan(const QModelIndex &left, const QModelIndex &right) const override; - -private: - QMap<QString, Sorting> sortings; - Sorting currentSorting; - QString searchTerm; - -}; - -} diff --git a/application/pages/modplatform/atlauncher/AtlListModel.cpp b/application/pages/modplatform/atlauncher/AtlListModel.cpp deleted file mode 100644 index f3be6198..00000000 --- a/application/pages/modplatform/atlauncher/AtlListModel.cpp +++ /dev/null @@ -1,194 +0,0 @@ -#include "AtlListModel.h" - -#include <BuildConfig.h> -#include <MultiMC.h> -#include <Env.h> -#include <Json.h> - -namespace Atl { - -ListModel::ListModel(QObject *parent) : QAbstractListModel(parent) -{ -} - -ListModel::~ListModel() -{ -} - -int ListModel::rowCount(const QModelIndex &parent) const -{ - return modpacks.size(); -} - -int ListModel::columnCount(const QModelIndex &parent) const -{ - return 1; -} - -QVariant ListModel::data(const QModelIndex &index, int role) const -{ - int pos = index.row(); - if(pos >= modpacks.size() || pos < 0 || !index.isValid()) - { - return QString("INVALID INDEX %1").arg(pos); - } - - ATLauncher::IndexedPack pack = modpacks.at(pos); - if(role == Qt::DisplayRole) - { - return pack.name; - } - else if (role == Qt::ToolTipRole) - { - return pack.name; - } - else if(role == Qt::DecorationRole) - { - if(m_logoMap.contains(pack.safeName)) - { - return (m_logoMap.value(pack.safeName)); - } - auto icon = MMC->getThemedIcon("atlauncher-placeholder"); - - auto url = QString(BuildConfig.ATL_DOWNLOAD_SERVER_URL + "launcher/images/%1.png").arg(pack.safeName.toLower()); - ((ListModel *)this)->requestLogo(pack.safeName, url); - - return icon; - } - else if(role == Qt::UserRole) - { - QVariant v; - v.setValue(pack); - return v; - } - - return QVariant(); -} - -void ListModel::request() -{ - beginResetModel(); - modpacks.clear(); - endResetModel(); - - auto *netJob = new NetJob("Atl::Request"); - auto url = QString(BuildConfig.ATL_DOWNLOAD_SERVER_URL + "launcher/json/packsnew.json"); - netJob->addNetAction(Net::Download::makeByteArray(QUrl(url), &response)); - jobPtr = netJob; - jobPtr->start(); - - QObject::connect(netJob, &NetJob::succeeded, this, &ListModel::requestFinished); - QObject::connect(netJob, &NetJob::failed, this, &ListModel::requestFailed); -} - -void ListModel::requestFinished() -{ - jobPtr.reset(); - - QJsonParseError parse_error; - QJsonDocument doc = QJsonDocument::fromJson(response, &parse_error); - if(parse_error.error != QJsonParseError::NoError) { - qWarning() << "Error while parsing JSON response from ATL at " << parse_error.offset << " reason: " << parse_error.errorString(); - qWarning() << response; - return; - } - - QList<ATLauncher::IndexedPack> newList; - - auto packs = doc.array(); - for(auto packRaw : packs) { - auto packObj = packRaw.toObject(); - - ATLauncher::IndexedPack pack; - - try { - ATLauncher::loadIndexedPack(pack, packObj); - } - catch (const JSONValidationError &e) { - qDebug() << QString::fromUtf8(response); - qWarning() << "Error while reading pack manifest from ATLauncher: " << e.cause(); - return; - } - - // ignore packs without a published version - if(pack.versions.length() == 0) continue; - // only display public packs (for now) - if(pack.type != ATLauncher::PackType::Public) continue; - // ignore "system" packs (Vanilla, Vanilla with Forge, etc) - if(pack.system) continue; - - newList.append(pack); - } - - beginInsertRows(QModelIndex(), modpacks.size(), modpacks.size() + newList.size() - 1); - modpacks.append(newList); - endInsertRows(); -} - -void ListModel::requestFailed(QString reason) -{ - jobPtr.reset(); -} - -void ListModel::getLogo(const QString &logo, const QString &logoUrl, LogoCallback callback) -{ - if(m_logoMap.contains(logo)) - { - callback(ENV.metacache()->resolveEntry("ATLauncherPacks", QString("logos/%1").arg(logo.section(".", 0, 0)))->getFullPath()); - } - else - { - requestLogo(logo, logoUrl); - } -} - -void ListModel::logoFailed(QString logo) -{ - m_failedLogos.append(logo); - m_loadingLogos.removeAll(logo); -} - -void ListModel::logoLoaded(QString logo, QIcon out) -{ - m_loadingLogos.removeAll(logo); - m_logoMap.insert(logo, out); - - for(int i = 0; i < modpacks.size(); i++) { - if(modpacks[i].safeName == logo) { - emit dataChanged(createIndex(i, 0), createIndex(i, 0), {Qt::DecorationRole}); - } - } -} - -void ListModel::requestLogo(QString file, QString url) -{ - if(m_loadingLogos.contains(file) || m_failedLogos.contains(file)) - { - return; - } - - MetaEntryPtr entry = ENV.metacache()->resolveEntry("ATLauncherPacks", QString("logos/%1").arg(file.section(".", 0, 0))); - NetJob *job = new NetJob(QString("ATLauncher Icon Download %1").arg(file)); - job->addNetAction(Net::Download::makeCached(QUrl(url), entry)); - - auto fullPath = entry->getFullPath(); - QObject::connect(job, &NetJob::succeeded, this, [this, file, fullPath] - { - emit logoLoaded(file, QIcon(fullPath)); - if(waitingCallbacks.contains(file)) - { - waitingCallbacks.value(file)(fullPath); - } - }); - - QObject::connect(job, &NetJob::failed, this, [this, file] - { - emit logoFailed(file); - }); - - job->start(); - - m_loadingLogos.append(file); -} - -} diff --git a/application/pages/modplatform/atlauncher/AtlListModel.h b/application/pages/modplatform/atlauncher/AtlListModel.h deleted file mode 100644 index 2d30a64e..00000000 --- a/application/pages/modplatform/atlauncher/AtlListModel.h +++ /dev/null @@ -1,52 +0,0 @@ -#pragma once - -#include <QAbstractListModel> - -#include "net/NetJob.h" -#include <QIcon> -#include <modplatform/atlauncher/ATLPackIndex.h> - -namespace Atl { - -typedef QMap<QString, QIcon> LogoMap; -typedef std::function<void(QString)> LogoCallback; - -class ListModel : public QAbstractListModel -{ - Q_OBJECT - -public: - ListModel(QObject *parent); - virtual ~ListModel(); - - int rowCount(const QModelIndex &parent) const override; - int columnCount(const QModelIndex &parent) const override; - QVariant data(const QModelIndex &index, int role) const override; - - void request(); - - void getLogo(const QString &logo, const QString &logoUrl, LogoCallback callback); - -private slots: - void requestFinished(); - void requestFailed(QString reason); - - void logoFailed(QString logo); - void logoLoaded(QString logo, QIcon out); - -private: - void requestLogo(QString file, QString url); - -private: - QList<ATLauncher::IndexedPack> modpacks; - - QStringList m_failedLogos; - QStringList m_loadingLogos; - LogoMap m_logoMap; - QMap<QString, LogoCallback> waitingCallbacks; - - NetJobPtr jobPtr; - QByteArray response; -}; - -} diff --git a/application/pages/modplatform/atlauncher/AtlOptionalModDialog.cpp b/application/pages/modplatform/atlauncher/AtlOptionalModDialog.cpp deleted file mode 100644 index 14bbd18b..00000000 --- a/application/pages/modplatform/atlauncher/AtlOptionalModDialog.cpp +++ /dev/null @@ -1,209 +0,0 @@ -#include "AtlOptionalModDialog.h" -#include "ui_AtlOptionalModDialog.h" - -AtlOptionalModListModel::AtlOptionalModListModel(QWidget *parent, QVector<ATLauncher::VersionMod> mods) - : QAbstractListModel(parent), m_mods(mods) { - - // fill mod index - for (int i = 0; i < m_mods.size(); i++) { - auto mod = m_mods.at(i); - m_index[mod.name] = i; - } - // set initial state - for (int i = 0; i < m_mods.size(); i++) { - auto mod = m_mods.at(i); - m_selection[mod.name] = false; - setMod(mod, i, mod.selected, false); - } -} - -QVector<QString> AtlOptionalModListModel::getResult() { - QVector<QString> result; - - for (const auto& mod : m_mods) { - if (m_selection[mod.name]) { - result.push_back(mod.name); - } - } - - return result; -} - -int AtlOptionalModListModel::rowCount(const QModelIndex &parent) const { - return m_mods.size(); -} - -int AtlOptionalModListModel::columnCount(const QModelIndex &parent) const { - // Enabled, Name, Description - return 3; -} - -QVariant AtlOptionalModListModel::data(const QModelIndex &index, int role) const { - auto row = index.row(); - auto mod = m_mods.at(row); - - if (role == Qt::DisplayRole) { - if (index.column() == NameColumn) { - return mod.name; - } - if (index.column() == DescriptionColumn) { - return mod.description; - } - } - else if (role == Qt::ToolTipRole) { - if (index.column() == DescriptionColumn) { - return mod.description; - } - } - else if (role == Qt::CheckStateRole) { - if (index.column() == EnabledColumn) { - return m_selection[mod.name] ? Qt::Checked : Qt::Unchecked; - } - } - - return QVariant(); -} - -bool AtlOptionalModListModel::setData(const QModelIndex &index, const QVariant &value, int role) { - if (role == Qt::CheckStateRole) { - auto row = index.row(); - auto mod = m_mods.at(row); - - toggleMod(mod, row); - return true; - } - - return false; -} - -QVariant AtlOptionalModListModel::headerData(int section, Qt::Orientation orientation, int role) const { - if (role == Qt::DisplayRole && orientation == Qt::Horizontal) { - switch (section) { - case EnabledColumn: - return QString(); - case NameColumn: - return QString("Name"); - case DescriptionColumn: - return QString("Description"); - } - } - - return QVariant(); -} - -Qt::ItemFlags AtlOptionalModListModel::flags(const QModelIndex &index) const { - auto flags = QAbstractListModel::flags(index); - if (index.isValid() && index.column() == EnabledColumn) { - flags |= Qt::ItemIsUserCheckable; - } - return flags; -} - -void AtlOptionalModListModel::selectRecommended() { - for (const auto& mod : m_mods) { - m_selection[mod.name] = mod.recommended; - } - - emit dataChanged(AtlOptionalModListModel::index(0, EnabledColumn), - AtlOptionalModListModel::index(m_mods.size() - 1, EnabledColumn)); -} - -void AtlOptionalModListModel::clearAll() { - for (const auto& mod : m_mods) { - m_selection[mod.name] = false; - } - - emit dataChanged(AtlOptionalModListModel::index(0, EnabledColumn), - AtlOptionalModListModel::index(m_mods.size() - 1, EnabledColumn)); -} - -void AtlOptionalModListModel::toggleMod(ATLauncher::VersionMod mod, int index) { - setMod(mod, index, !m_selection[mod.name]); -} - -void AtlOptionalModListModel::setMod(ATLauncher::VersionMod mod, int index, bool enable, bool shouldEmit) { - if (m_selection[mod.name] == enable) return; - - m_selection[mod.name] = enable; - - // disable other mods in the group, if applicable - if (enable && !mod.group.isEmpty()) { - for (int i = 0; i < m_mods.size(); i++) { - if (index == i) continue; - auto other = m_mods.at(i); - - if (mod.group == other.group) { - setMod(other, i, false, shouldEmit); - } - } - } - - for (const auto& dependencyName : mod.depends) { - auto dependencyIndex = m_index[dependencyName]; - auto dependencyMod = m_mods.at(dependencyIndex); - - // enable/disable dependencies - if (enable) { - setMod(dependencyMod, dependencyIndex, true, shouldEmit); - } - - // if the dependency is 'effectively hidden', then track which mods - // depend on it - so we can efficiently disable it when no more dependents - // depend on it. - auto dependants = m_dependants[dependencyName]; - - if (enable) { - dependants.append(mod.name); - } - else { - dependants.removeAll(mod.name); - - // if there are no longer any dependents, let's disable the mod - if (dependencyMod.effectively_hidden && dependants.isEmpty()) { - setMod(dependencyMod, dependencyIndex, false, shouldEmit); - } - } - } - - // disable mods that depend on this one, if disabling - if (!enable) { - auto dependants = m_dependants[mod.name]; - for (const auto& dependencyName : dependants) { - auto dependencyIndex = m_index[dependencyName]; - auto dependencyMod = m_mods.at(dependencyIndex); - - setMod(dependencyMod, dependencyIndex, false, shouldEmit); - } - } - - if (shouldEmit) { - emit dataChanged(AtlOptionalModListModel::index(index, EnabledColumn), - AtlOptionalModListModel::index(index, EnabledColumn)); - } -} - - -AtlOptionalModDialog::AtlOptionalModDialog(QWidget *parent, QVector<ATLauncher::VersionMod> mods) - : QDialog(parent), ui(new Ui::AtlOptionalModDialog) { - ui->setupUi(this); - - listModel = new AtlOptionalModListModel(this, mods); - ui->treeView->setModel(listModel); - - ui->treeView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - ui->treeView->header()->setSectionResizeMode( - AtlOptionalModListModel::NameColumn, QHeaderView::ResizeToContents); - ui->treeView->header()->setSectionResizeMode( - AtlOptionalModListModel::DescriptionColumn, QHeaderView::Stretch); - - connect(ui->selectRecommendedButton, &QPushButton::pressed, - listModel, &AtlOptionalModListModel::selectRecommended); - connect(ui->clearAllButton, &QPushButton::pressed, - listModel, &AtlOptionalModListModel::clearAll); - connect(ui->installButton, &QPushButton::pressed, - this, &QDialog::close); -} - -AtlOptionalModDialog::~AtlOptionalModDialog() { - delete ui; -} diff --git a/application/pages/modplatform/atlauncher/AtlOptionalModDialog.h b/application/pages/modplatform/atlauncher/AtlOptionalModDialog.h deleted file mode 100644 index a1df43f6..00000000 --- a/application/pages/modplatform/atlauncher/AtlOptionalModDialog.h +++ /dev/null @@ -1,66 +0,0 @@ -#pragma once - -#include <QDialog> -#include <QAbstractListModel> - -#include "modplatform/atlauncher/ATLPackIndex.h" - -namespace Ui { -class AtlOptionalModDialog; -} - -class AtlOptionalModListModel : public QAbstractListModel { - Q_OBJECT - -public: - enum Columns - { - EnabledColumn = 0, - NameColumn, - DescriptionColumn, - }; - - AtlOptionalModListModel(QWidget *parent, QVector<ATLauncher::VersionMod> mods); - - QVector<QString> getResult(); - - int rowCount(const QModelIndex &parent) const override; - int columnCount(const QModelIndex &parent) const override; - - QVariant data(const QModelIndex &index, int role) const override; - bool setData(const QModelIndex &index, const QVariant &value, int role) override; - QVariant headerData(int section, Qt::Orientation orientation, int role) const override; - - Qt::ItemFlags flags(const QModelIndex &index) const override; - -public slots: - void selectRecommended(); - void clearAll(); - -private: - void toggleMod(ATLauncher::VersionMod mod, int index); - void setMod(ATLauncher::VersionMod mod, int index, bool enable, bool shouldEmit = true); - -private: - QVector<ATLauncher::VersionMod> m_mods; - QMap<QString, bool> m_selection; - QMap<QString, int> m_index; - QMap<QString, QVector<QString>> m_dependants; -}; - -class AtlOptionalModDialog : public QDialog { - Q_OBJECT - -public: - AtlOptionalModDialog(QWidget *parent, QVector<ATLauncher::VersionMod> mods); - ~AtlOptionalModDialog() override; - - QVector<QString> getResult() { - return listModel->getResult(); - } - -private: - Ui::AtlOptionalModDialog *ui; - - AtlOptionalModListModel *listModel; -}; diff --git a/application/pages/modplatform/atlauncher/AtlOptionalModDialog.ui b/application/pages/modplatform/atlauncher/AtlOptionalModDialog.ui deleted file mode 100644 index 5d3193a4..00000000 --- a/application/pages/modplatform/atlauncher/AtlOptionalModDialog.ui +++ /dev/null @@ -1,65 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>AtlOptionalModDialog</class> - <widget class="QDialog" name="AtlOptionalModDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>550</width> - <height>310</height> - </rect> - </property> - <property name="windowTitle"> - <string>Select Mods To Install</string> - </property> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="1" column="3"> - <widget class="QPushButton" name="installButton"> - <property name="text"> - <string>Install</string> - </property> - <property name="default"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QPushButton" name="selectRecommendedButton"> - <property name="text"> - <string>Select Recommended</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QPushButton" name="shareCodeButton"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Use Share Code</string> - </property> - </widget> - </item> - <item row="1" column="2"> - <widget class="QPushButton" name="clearAllButton"> - <property name="text"> - <string>Clear All</string> - </property> - </widget> - </item> - <item row="0" column="0" colspan="4"> - <widget class="ModListView" name="treeView"/> - </item> - </layout> - </widget> - <customwidgets> - <customwidget> - <class>ModListView</class> - <extends>QTreeView</extends> - <header>widgets/ModListView.h</header> - </customwidget> - </customwidgets> - <resources/> - <connections/> -</ui> diff --git a/application/pages/modplatform/atlauncher/AtlPage.cpp b/application/pages/modplatform/atlauncher/AtlPage.cpp deleted file mode 100644 index 9fdf111f..00000000 --- a/application/pages/modplatform/atlauncher/AtlPage.cpp +++ /dev/null @@ -1,175 +0,0 @@ -#include "AtlPage.h" -#include "ui_AtlPage.h" - -#include "dialogs/NewInstanceDialog.h" -#include "AtlOptionalModDialog.h" -#include <modplatform/atlauncher/ATLPackInstallTask.h> -#include <BuildConfig.h> -#include <dialogs/VersionSelectDialog.h> - -AtlPage::AtlPage(NewInstanceDialog* dialog, QWidget *parent) - : QWidget(parent), ui(new Ui::AtlPage), dialog(dialog) -{ - ui->setupUi(this); - - filterModel = new Atl::FilterModel(this); - listModel = new Atl::ListModel(this); - filterModel->setSourceModel(listModel); - ui->packView->setModel(filterModel); - ui->packView->setSortingEnabled(true); - - ui->packView->header()->hide(); - ui->packView->setIndentation(0); - - ui->versionSelectionBox->view()->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); - ui->versionSelectionBox->view()->parentWidget()->setMaximumHeight(300); - - for(int i = 0; i < filterModel->getAvailableSortings().size(); i++) - { - ui->sortByBox->addItem(filterModel->getAvailableSortings().keys().at(i)); - } - ui->sortByBox->setCurrentText(filterModel->translateCurrentSorting()); - - connect(ui->searchEdit, &QLineEdit::textChanged, this, &AtlPage::triggerSearch); - connect(ui->resetButton, &QPushButton::clicked, this, &AtlPage::resetSearch); - connect(ui->sortByBox, &QComboBox::currentTextChanged, this, &AtlPage::onSortingSelectionChanged); - connect(ui->packView->selectionModel(), &QItemSelectionModel::currentChanged, this, &AtlPage::onSelectionChanged); - connect(ui->versionSelectionBox, &QComboBox::currentTextChanged, this, &AtlPage::onVersionSelectionChanged); -} - -AtlPage::~AtlPage() -{ - delete ui; -} - -bool AtlPage::shouldDisplay() const -{ - return true; -} - -void AtlPage::openedImpl() -{ - if(!initialized) - { - listModel->request(); - initialized = true; - } - - suggestCurrent(); -} - -void AtlPage::suggestCurrent() -{ - if(!isOpened) - { - return; - } - - if (selectedVersion.isEmpty()) - { - dialog->setSuggestedPack(); - return; - } - - dialog->setSuggestedPack(selected.name, new ATLauncher::PackInstallTask(this, selected.safeName, selectedVersion)); - auto editedLogoName = selected.safeName; - auto url = QString(BuildConfig.ATL_DOWNLOAD_SERVER_URL + "launcher/images/%1.png").arg(selected.safeName.toLower()); - listModel->getLogo(selected.safeName, url, [this, editedLogoName](QString logo) - { - dialog->setSuggestedIconFromFile(logo, editedLogoName); - }); -} - -void AtlPage::triggerSearch() -{ - filterModel->setSearchTerm(ui->searchEdit->text()); -} - -void AtlPage::resetSearch() -{ - ui->searchEdit->setText(""); -} - -void AtlPage::onSortingSelectionChanged(QString data) -{ - auto toSet = filterModel->getAvailableSortings().value(data); - filterModel->setSorting(toSet); -} - -void AtlPage::onSelectionChanged(QModelIndex first, QModelIndex second) -{ - ui->versionSelectionBox->clear(); - - if(!first.isValid()) - { - if(isOpened) - { - dialog->setSuggestedPack(); - } - return; - } - - selected = filterModel->data(first, Qt::UserRole).value<ATLauncher::IndexedPack>(); - - ui->packDescription->setHtml(selected.description.replace("\n", "<br>")); - - for(const auto& version : selected.versions) { - ui->versionSelectionBox->addItem(version.version); - } - - suggestCurrent(); -} - -void AtlPage::onVersionSelectionChanged(QString data) -{ - if(data.isNull() || data.isEmpty()) - { - selectedVersion = ""; - return; - } - - selectedVersion = data; - suggestCurrent(); -} - -QVector<QString> AtlPage::chooseOptionalMods(QVector<ATLauncher::VersionMod> mods) { - AtlOptionalModDialog optionalModDialog(this, mods); - optionalModDialog.exec(); - return optionalModDialog.getResult(); -} - -QString AtlPage::chooseVersion(Meta::VersionListPtr vlist, QString minecraftVersion) { - VersionSelectDialog vselect(vlist.get(), "Choose Version", MMC->activeWindow(), false); - if (minecraftVersion != Q_NULLPTR) { - vselect.setExactFilter(BaseVersionList::ParentVersionRole, minecraftVersion); - vselect.setEmptyString(tr("No versions are currently available for Minecraft %1").arg(minecraftVersion)); - } - else { - vselect.setEmptyString(tr("No versions are currently available")); - } - vselect.setEmptyErrorString(tr("Couldn't load or download the version lists!")); - - // select recommended build - for (int i = 0; i < vlist->versions().size(); i++) { - auto version = vlist->versions().at(i); - auto reqs = version->requires(); - - // filter by minecraft version, if the loader depends on a certain version. - if (minecraftVersion != Q_NULLPTR) { - auto iter = std::find_if(reqs.begin(), reqs.end(), [](const Meta::Require &req) { - return req.uid == "net.minecraft"; - }); - if (iter == reqs.end()) continue; - if (iter->equalsVersion != minecraftVersion) continue; - } - - // first recommended build we find, we use. - if (version->isRecommended()) { - vselect.setCurrentVersion(version->descriptor()); - break; - } - } - - vselect.exec(); - return vselect.selectedVersion()->descriptor(); -} diff --git a/application/pages/modplatform/atlauncher/AtlPage.h b/application/pages/modplatform/atlauncher/AtlPage.h deleted file mode 100644 index 932ec6a6..00000000 --- a/application/pages/modplatform/atlauncher/AtlPage.h +++ /dev/null @@ -1,87 +0,0 @@ -/* Copyright 2013-2019 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "AtlFilterModel.h" -#include "AtlListModel.h" - -#include <QWidget> -#include <modplatform/atlauncher/ATLPackInstallTask.h> - -#include "MultiMC.h" -#include "pages/BasePage.h" -#include "tasks/Task.h" - -namespace Ui -{ - class AtlPage; -} - -class NewInstanceDialog; - -class AtlPage : public QWidget, public BasePage, public ATLauncher::UserInteractionSupport -{ -Q_OBJECT - -public: - explicit AtlPage(NewInstanceDialog* dialog, QWidget *parent = 0); - virtual ~AtlPage(); - virtual QString displayName() const override - { - return tr("ATLauncher"); - } - virtual QIcon icon() const override - { - return MMC->getThemedIcon("atlauncher"); - } - virtual QString id() const override - { - return "atl"; - } - virtual QString helpPage() const override - { - return "ATL-platform"; - } - virtual bool shouldDisplay() const override; - - void openedImpl() override; - -private: - void suggestCurrent(); - - QString chooseVersion(Meta::VersionListPtr vlist, QString minecraftVersion) override; - QVector<QString> chooseOptionalMods(QVector<ATLauncher::VersionMod> mods) override; - -private slots: - void triggerSearch(); - void resetSearch(); - - void onSortingSelectionChanged(QString data); - - void onSelectionChanged(QModelIndex first, QModelIndex second); - void onVersionSelectionChanged(QString data); - -private: - Ui::AtlPage *ui = nullptr; - NewInstanceDialog* dialog = nullptr; - Atl::ListModel* listModel = nullptr; - Atl::FilterModel* filterModel = nullptr; - - ATLauncher::IndexedPack selected; - QString selectedVersion; - - bool initialized = false; -}; diff --git a/application/pages/modplatform/atlauncher/AtlPage.ui b/application/pages/modplatform/atlauncher/AtlPage.ui deleted file mode 100644 index f16c24b8..00000000 --- a/application/pages/modplatform/atlauncher/AtlPage.ui +++ /dev/null @@ -1,97 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>AtlPage</class> - <widget class="QWidget" name="AtlPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>837</width> - <height>685</height> - </rect> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="1" column="0" colspan="2"> - <layout class="QGridLayout" name="gridLayout_3"> - <item row="1" column="0"> - <widget class="QTreeView" name="packView"> - <property name="iconSize"> - <size> - <width>96</width> - <height>48</height> - </size> - </property> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QTextBrowser" name="packDescription"> - <property name="openExternalLinks"> - <bool>true</bool> - </property> - <property name="openLinks"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="0" column="0" colspan="2"> - <widget class="QLabel" name="label_2"> - <property name="text"> - <string>Warning: This is still a work in progress. If you run into issues with the imported modpack, it may be a bug.</string> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </item> - <item row="2" column="0" colspan="2"> - <layout class="QGridLayout" name="gridLayout_4" columnstretch="0,0,0" rowminimumheight="0" columnminimumwidth="0,0,0"> - <item row="0" column="2"> - <widget class="QComboBox" name="versionSelectionBox"/> - </item> - <item row="0" column="1"> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Version selected:</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - </widget> - </item> - <item row="0" column="0"> - <widget class="QComboBox" name="sortByBox"/> - </item> - </layout> - </item> - <item row="0" column="1"> - <widget class="QPushButton" name="resetButton"> - <property name="text"> - <string>Reset</string> - </property> - </widget> - </item> - <item row="0" column="0"> - <widget class="QLineEdit" name="searchEdit"> - <property name="placeholderText"> - <string>Search and filter ...</string> - </property> - </widget> - </item> - </layout> - </widget> - <tabstops> - <tabstop>searchEdit</tabstop> - <tabstop>resetButton</tabstop> - <tabstop>packView</tabstop> - <tabstop>packDescription</tabstop> - <tabstop>sortByBox</tabstop> - <tabstop>versionSelectionBox</tabstop> - </tabstops> - <resources/> - <connections/> -</ui> diff --git a/application/pages/modplatform/flame/FlameModel.cpp b/application/pages/modplatform/flame/FlameModel.cpp deleted file mode 100644 index 228a88c5..00000000 --- a/application/pages/modplatform/flame/FlameModel.cpp +++ /dev/null @@ -1,259 +0,0 @@ -#include "FlameModel.h" -#include "MultiMC.h" -#include <Json.h> - -#include <MMCStrings.h> -#include <Version.h> - -#include <QtMath> -#include <QLabel> - -#include <RWStorage.h> -#include <Env.h> - -namespace Flame { - -ListModel::ListModel(QObject *parent) : QAbstractListModel(parent) -{ -} - -ListModel::~ListModel() -{ -} - -int ListModel::rowCount(const QModelIndex &parent) const -{ - return modpacks.size(); -} - -int ListModel::columnCount(const QModelIndex &parent) const -{ - return 1; -} - -QVariant ListModel::data(const QModelIndex &index, int role) const -{ - int pos = index.row(); - if(pos >= modpacks.size() || pos < 0 || !index.isValid()) - { - return QString("INVALID INDEX %1").arg(pos); - } - - IndexedPack pack = modpacks.at(pos); - if(role == Qt::DisplayRole) - { - return pack.name; - } - else if (role == Qt::ToolTipRole) - { - if(pack.description.length() > 100) - { - //some magic to prevent to long tooltips and replace html linebreaks - QString edit = pack.description.left(97); - edit = edit.left(edit.lastIndexOf("<br>")).left(edit.lastIndexOf(" ")).append("..."); - return edit; - - } - return pack.description; - } - else if(role == Qt::DecorationRole) - { - if(m_logoMap.contains(pack.logoName)) - { - return (m_logoMap.value(pack.logoName)); - } - QIcon icon = MMC->getThemedIcon("screenshot-placeholder"); - ((ListModel *)this)->requestLogo(pack.logoName, pack.logoUrl); - return icon; - } - else if(role == Qt::UserRole) - { - QVariant v; - v.setValue(pack); - return v; - } - - return QVariant(); -} - -void ListModel::logoLoaded(QString logo, QIcon out) -{ - m_loadingLogos.removeAll(logo); - m_logoMap.insert(logo, out); - for(int i = 0; i < modpacks.size(); i++) { - if(modpacks[i].logoName == logo) { - emit dataChanged(createIndex(i, 0), createIndex(i, 0), {Qt::DecorationRole}); - } - } -} - -void ListModel::logoFailed(QString logo) -{ - m_failedLogos.append(logo); - m_loadingLogos.removeAll(logo); -} - -void ListModel::requestLogo(QString logo, QString url) -{ - if(m_loadingLogos.contains(logo) || m_failedLogos.contains(logo)) - { - return; - } - - MetaEntryPtr entry = ENV.metacache()->resolveEntry("FlamePacks", QString("logos/%1").arg(logo.section(".", 0, 0))); - NetJob *job = new NetJob(QString("Flame Icon Download %1").arg(logo)); - job->addNetAction(Net::Download::makeCached(QUrl(url), entry)); - - auto fullPath = entry->getFullPath(); - QObject::connect(job, &NetJob::succeeded, this, [this, logo, fullPath] - { - emit logoLoaded(logo, QIcon(fullPath)); - if(waitingCallbacks.contains(logo)) - { - waitingCallbacks.value(logo)(fullPath); - } - }); - - QObject::connect(job, &NetJob::failed, this, [this, logo] - { - emit logoFailed(logo); - }); - - job->start(); - - m_loadingLogos.append(logo); -} - -void ListModel::getLogo(const QString &logo, const QString &logoUrl, LogoCallback callback) -{ - if(m_logoMap.contains(logo)) - { - callback(ENV.metacache()->resolveEntry("FlamePacks", QString("logos/%1").arg(logo.section(".", 0, 0)))->getFullPath()); - } - else - { - requestLogo(logo, logoUrl); - } -} - -Qt::ItemFlags ListModel::flags(const QModelIndex &index) const -{ - return QAbstractListModel::flags(index); -} - -bool ListModel::canFetchMore(const QModelIndex& parent) const -{ - return searchState == CanPossiblyFetchMore; -} - -void ListModel::fetchMore(const QModelIndex& parent) -{ - if (parent.isValid()) - return; - if(nextSearchOffset == 0) { - qWarning() << "fetchMore with 0 offset is wrong..."; - return; - } - performPaginatedSearch(); -} - -void ListModel::performPaginatedSearch() -{ - NetJob *netJob = new NetJob("Flame::Search"); - auto searchUrl = QString( - "https://addons-ecs.forgesvc.net/api/v2/addon/search?" - "categoryId=0&" - "gameId=432&" - "index=%1&" - "pageSize=25&" - "searchFilter=%2&" - "sectionId=4471&" - "sort=%3" - ).arg(nextSearchOffset).arg(currentSearchTerm).arg(currentSort); - netJob->addNetAction(Net::Download::makeByteArray(QUrl(searchUrl), &response)); - jobPtr = netJob; - jobPtr->start(); - QObject::connect(netJob, &NetJob::succeeded, this, &ListModel::searchRequestFinished); - QObject::connect(netJob, &NetJob::failed, this, &ListModel::searchRequestFailed); -} - -void ListModel::searchWithTerm(const QString& term, int sort) -{ - if(currentSearchTerm == term && currentSearchTerm.isNull() == term.isNull() && currentSort == sort) { - return; - } - currentSearchTerm = term; - currentSort = sort; - if(jobPtr) { - jobPtr->abort(); - searchState = ResetRequested; - return; - } - else { - beginResetModel(); - modpacks.clear(); - endResetModel(); - searchState = None; - } - nextSearchOffset = 0; - performPaginatedSearch(); -} - -void Flame::ListModel::searchRequestFinished() -{ - jobPtr.reset(); - - QJsonParseError parse_error; - QJsonDocument doc = QJsonDocument::fromJson(response, &parse_error); - if(parse_error.error != QJsonParseError::NoError) { - qWarning() << "Error while parsing JSON response from CurseForge at " << parse_error.offset << " reason: " << parse_error.errorString(); - qWarning() << response; - return; - } - - QList<Flame::IndexedPack> newList; - auto packs = doc.array(); - for(auto packRaw : packs) { - auto packObj = packRaw.toObject(); - - Flame::IndexedPack pack; - try - { - Flame::loadIndexedPack(pack, packObj); - newList.append(pack); - } - catch(const JSONValidationError &e) - { - qWarning() << "Error while loading pack from CurseForge: " << e.cause(); - continue; - } - } - if(packs.size() < 25) { - searchState = Finished; - } else { - nextSearchOffset += 25; - searchState = CanPossiblyFetchMore; - } - beginInsertRows(QModelIndex(), modpacks.size(), modpacks.size() + newList.size() - 1); - modpacks.append(newList); - endInsertRows(); -} - -void Flame::ListModel::searchRequestFailed(QString reason) -{ - jobPtr.reset(); - - if(searchState == ResetRequested) { - beginResetModel(); - modpacks.clear(); - endResetModel(); - - nextSearchOffset = 0; - performPaginatedSearch(); - } else { - searchState = Finished; - } -} - -} - diff --git a/application/pages/modplatform/flame/FlameModel.h b/application/pages/modplatform/flame/FlameModel.h deleted file mode 100644 index 24383db0..00000000 --- a/application/pages/modplatform/flame/FlameModel.h +++ /dev/null @@ -1,76 +0,0 @@ -#pragma once - -#include <RWStorage.h> - -#include <QAbstractListModel> -#include <QSortFilterProxyModel> -#include <QThreadPool> -#include <QIcon> -#include <QStyledItemDelegate> -#include <QList> -#include <QString> -#include <QStringList> -#include <QMetaType> - -#include <functional> -#include <net/NetJob.h> - -#include <modplatform/flame/FlamePackIndex.h> - -namespace Flame { - - -typedef QMap<QString, QIcon> LogoMap; -typedef std::function<void(QString)> LogoCallback; - -class ListModel : public QAbstractListModel -{ - Q_OBJECT - -public: - ListModel(QObject *parent); - virtual ~ListModel(); - - int rowCount(const QModelIndex &parent) const override; - int columnCount(const QModelIndex &parent) const override; - QVariant data(const QModelIndex &index, int role) const override; - Qt::ItemFlags flags(const QModelIndex &index) const override; - bool canFetchMore(const QModelIndex & parent) const override; - void fetchMore(const QModelIndex & parent) override; - - void getLogo(const QString &logo, const QString &logoUrl, LogoCallback callback); - void searchWithTerm(const QString & term, const int sort); - -private slots: - void performPaginatedSearch(); - - void logoFailed(QString logo); - void logoLoaded(QString logo, QIcon out); - - void searchRequestFinished(); - void searchRequestFailed(QString reason); - -private: - void requestLogo(QString file, QString url); - -private: - QList<IndexedPack> modpacks; - QStringList m_failedLogos; - QStringList m_loadingLogos; - LogoMap m_logoMap; - QMap<QString, LogoCallback> waitingCallbacks; - - QString currentSearchTerm; - int currentSort = 0; - int nextSearchOffset = 0; - enum SearchState { - None, - CanPossiblyFetchMore, - ResetRequested, - Finished - } searchState = None; - NetJobPtr jobPtr; - QByteArray response; -}; - -} diff --git a/application/pages/modplatform/flame/FlamePage.cpp b/application/pages/modplatform/flame/FlamePage.cpp deleted file mode 100644 index ade58431..00000000 --- a/application/pages/modplatform/flame/FlamePage.cpp +++ /dev/null @@ -1,185 +0,0 @@ -#include "FlamePage.h" -#include "ui_FlamePage.h" - -#include "MultiMC.h" -#include <Json.h> -#include "dialogs/NewInstanceDialog.h" -#include <InstanceImportTask.h> -#include "FlameModel.h" -#include <QKeyEvent> - -FlamePage::FlamePage(NewInstanceDialog* dialog, QWidget *parent) - : QWidget(parent), ui(new Ui::FlamePage), dialog(dialog) -{ - ui->setupUi(this); - connect(ui->searchButton, &QPushButton::clicked, this, &FlamePage::triggerSearch); - ui->searchEdit->installEventFilter(this); - listModel = new Flame::ListModel(this); - ui->packView->setModel(listModel); - - ui->versionSelectionBox->view()->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); - ui->versionSelectionBox->view()->parentWidget()->setMaximumHeight(300); - - // index is used to set the sorting with the curseforge api - ui->sortByBox->addItem(tr("Sort by featured")); - ui->sortByBox->addItem(tr("Sort by popularity")); - ui->sortByBox->addItem(tr("Sort by last updated")); - ui->sortByBox->addItem(tr("Sort by name")); - ui->sortByBox->addItem(tr("Sort by author")); - ui->sortByBox->addItem(tr("Sort by total downloads")); - - connect(ui->sortByBox, SIGNAL(currentIndexChanged(int)), this, SLOT(triggerSearch())); - connect(ui->packView->selectionModel(), &QItemSelectionModel::currentChanged, this, &FlamePage::onSelectionChanged); - connect(ui->versionSelectionBox, &QComboBox::currentTextChanged, this, &FlamePage::onVersionSelectionChanged); -} - -FlamePage::~FlamePage() -{ - delete ui; -} - -bool FlamePage::eventFilter(QObject* watched, QEvent* event) -{ - if (watched == ui->searchEdit && event->type() == QEvent::KeyPress) { - QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event); - if (keyEvent->key() == Qt::Key_Return) { - triggerSearch(); - keyEvent->accept(); - return true; - } - } - return QWidget::eventFilter(watched, event); -} - -bool FlamePage::shouldDisplay() const -{ - return true; -} - -void FlamePage::openedImpl() -{ - suggestCurrent(); - triggerSearch(); -} - -void FlamePage::triggerSearch() -{ - listModel->searchWithTerm(ui->searchEdit->text(), ui->sortByBox->currentIndex()); -} - -void FlamePage::onSelectionChanged(QModelIndex first, QModelIndex second) -{ - ui->versionSelectionBox->clear(); - - if(!first.isValid()) - { - if(isOpened) - { - dialog->setSuggestedPack(); - } - return; - } - - current = listModel->data(first, Qt::UserRole).value<Flame::IndexedPack>(); - QString text = ""; - QString name = current.name; - - if (current.websiteUrl.isEmpty()) - text = name; - else - text = "<a href=\"" + current.websiteUrl + "\">" + name + "</a>"; - if (!current.authors.empty()) { - auto authorToStr = [](Flame::ModpackAuthor & author) { - if(author.url.isEmpty()) { - return author.name; - } - return QString("<a href=\"%1\">%2</a>").arg(author.url, author.name); - }; - QStringList authorStrs; - for(auto & author: current.authors) { - authorStrs.push_back(authorToStr(author)); - } - text += "<br>" + tr(" by ") + authorStrs.join(", "); - } - text += "<br><br>"; - - ui->packDescription->setHtml(text + current.description); - - if (current.versionsLoaded == false) - { - qDebug() << "Loading flame modpack versions"; - NetJob *netJob = new NetJob(QString("Flame::PackVersions(%1)").arg(current.name)); - std::shared_ptr<QByteArray> response = std::make_shared<QByteArray>(); - int addonId = current.addonId; - netJob->addNetAction(Net::Download::makeByteArray(QString("https://addons-ecs.forgesvc.net/api/v2/addon/%1/files").arg(addonId), response.get())); - - QObject::connect(netJob, &NetJob::succeeded, this, [this, response] - { - QJsonParseError parse_error; - QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); - if(parse_error.error != QJsonParseError::NoError) { - qWarning() << "Error while parsing JSON response from CurseForge at " << parse_error.offset << " reason: " << parse_error.errorString(); - qWarning() << *response; - return; - } - QJsonArray arr = doc.array(); - try - { - Flame::loadIndexedPackVersions(current, arr); - } - catch(const JSONValidationError &e) - { - qDebug() << *response; - qWarning() << "Error while reading flame modpack version: " << e.cause(); - } - - for(auto version : current.versions) { - ui->versionSelectionBox->addItem(version.version, QVariant(version.downloadUrl)); - } - - suggestCurrent(); - }); - netJob->start(); - } - else - { - for(auto version : current.versions) { - ui->versionSelectionBox->addItem(version.version, QVariant(version.downloadUrl)); - } - - suggestCurrent(); - } -} - -void FlamePage::suggestCurrent() -{ - if(!isOpened) - { - return; - } - - if (selectedVersion.isEmpty()) - { - dialog->setSuggestedPack(); - return; - } - - dialog->setSuggestedPack(current.name, new InstanceImportTask(selectedVersion)); - QString editedLogoName; - editedLogoName = "curseforge_" + current.logoName.section(".", 0, 0); - listModel->getLogo(current.logoName, current.logoUrl, [this, editedLogoName](QString logo) - { - dialog->setSuggestedIconFromFile(logo, editedLogoName); - }); -} - -void FlamePage::onVersionSelectionChanged(QString data) -{ - if(data.isNull() || data.isEmpty()) - { - selectedVersion = ""; - return; - } - selectedVersion = ui->versionSelectionBox->currentData().toString(); - suggestCurrent(); -} diff --git a/application/pages/modplatform/flame/FlamePage.h b/application/pages/modplatform/flame/FlamePage.h deleted file mode 100644 index 467bb44b..00000000 --- a/application/pages/modplatform/flame/FlamePage.h +++ /dev/null @@ -1,80 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QWidget> - -#include "pages/BasePage.h" -#include <MultiMC.h> -#include "tasks/Task.h" -#include <modplatform/flame/FlamePackIndex.h> - -namespace Ui -{ -class FlamePage; -} - -class NewInstanceDialog; - -namespace Flame { - class ListModel; -} - -class FlamePage : public QWidget, public BasePage -{ - Q_OBJECT - -public: - explicit FlamePage(NewInstanceDialog* dialog, QWidget *parent = 0); - virtual ~FlamePage(); - virtual QString displayName() const override - { - return tr("CurseForge"); - } - virtual QIcon icon() const override - { - return MMC->getThemedIcon("flame"); - } - virtual QString id() const override - { - return "flame"; - } - virtual QString helpPage() const override - { - return "Flame-platform"; - } - virtual bool shouldDisplay() const override; - - void openedImpl() override; - - bool eventFilter(QObject * watched, QEvent * event) override; - -private: - void suggestCurrent(); - -private slots: - void triggerSearch(); - void onSelectionChanged(QModelIndex first, QModelIndex second); - void onVersionSelectionChanged(QString data); - -private: - Ui::FlamePage *ui = nullptr; - NewInstanceDialog* dialog = nullptr; - Flame::ListModel* listModel = nullptr; - Flame::IndexedPack current; - - QString selectedVersion; -}; diff --git a/application/pages/modplatform/flame/FlamePage.ui b/application/pages/modplatform/flame/FlamePage.ui deleted file mode 100644 index 9723815a..00000000 --- a/application/pages/modplatform/flame/FlamePage.ui +++ /dev/null @@ -1,90 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>FlamePage</class> - <widget class="QWidget" name="FlamePage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>837</width> - <height>685</height> - </rect> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="1" column="0" colspan="2"> - <layout class="QGridLayout" name="gridLayout_3"> - <item row="1" column="0"> - <widget class="QListView" name="packView"> - <property name="iconSize"> - <size> - <width>48</width> - <height>48</height> - </size> - </property> - <property name="horizontalScrollBarPolicy"> - <enum>Qt::ScrollBarAlwaysOff</enum> - </property> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QTextBrowser" name="packDescription"> - <property name="openExternalLinks"> - <bool>true</bool> - </property> - <property name="openLinks"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </item> - <item row="2" column="0" colspan="2"> - <layout class="QGridLayout" name="gridLayout_4" columnstretch="0,0,0" rowminimumheight="0" columnminimumwidth="0,0,0"> - <item row="0" column="2"> - <widget class="QComboBox" name="versionSelectionBox"/> - </item> - <item row="0" column="1"> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Version selected:</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - </widget> - </item> - <item row="0" column="0"> - <widget class="QComboBox" name="sortByBox"/> - </item> - </layout> - </item> - <item row="0" column="1"> - <widget class="QPushButton" name="searchButton"> - <property name="text"> - <string>Search</string> - </property> - </widget> - </item> - <item row="0" column="0"> - <widget class="QLineEdit" name="searchEdit"> - <property name="placeholderText"> - <string>Search and filter ...</string> - </property> - </widget> - </item> - </layout> - </widget> - <tabstops> - <tabstop>searchEdit</tabstop> - <tabstop>searchButton</tabstop> - <tabstop>packView</tabstop> - <tabstop>packDescription</tabstop> - <tabstop>sortByBox</tabstop> - <tabstop>versionSelectionBox</tabstop> - </tabstops> - <resources/> - <connections/> -</ui> diff --git a/application/pages/modplatform/ftb/FtbFilterModel.cpp b/application/pages/modplatform/ftb/FtbFilterModel.cpp deleted file mode 100644 index dec3a017..00000000 --- a/application/pages/modplatform/ftb/FtbFilterModel.cpp +++ /dev/null @@ -1,64 +0,0 @@ -#include "FtbFilterModel.h" - -#include <QDebug> - -#include "modplatform/modpacksch/FTBPackManifest.h" -#include <MMCStrings.h> - -namespace Ftb { - -FilterModel::FilterModel(QObject *parent) : QSortFilterProxyModel(parent) -{ - currentSorting = Sorting::ByPlays; - sortings.insert(tr("Sort by plays"), Sorting::ByPlays); - sortings.insert(tr("Sort by installs"), Sorting::ByInstalls); - sortings.insert(tr("Sort by name"), Sorting::ByName); -} - -const QMap<QString, FilterModel::Sorting> FilterModel::getAvailableSortings() -{ - return sortings; -} - -QString FilterModel::translateCurrentSorting() -{ - return sortings.key(currentSorting); -} - -void FilterModel::setSorting(Sorting sorting) -{ - currentSorting = sorting; - invalidate(); -} - -FilterModel::Sorting FilterModel::getCurrentSorting() -{ - return currentSorting; -} - -bool FilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const -{ - return true; -} - -bool FilterModel::lessThan(const QModelIndex &left, const QModelIndex &right) const -{ - ModpacksCH::Modpack leftPack = sourceModel()->data(left, Qt::UserRole).value<ModpacksCH::Modpack>(); - ModpacksCH::Modpack rightPack = sourceModel()->data(right, Qt::UserRole).value<ModpacksCH::Modpack>(); - - if (currentSorting == ByPlays) { - return leftPack.plays < rightPack.plays; - } - else if (currentSorting == ByInstalls) { - return leftPack.installs < rightPack.installs; - } - else if (currentSorting == ByName) { - return Strings::naturalCompare(leftPack.name, rightPack.name, Qt::CaseSensitive) >= 0; - } - - // Invalid sorting set, somehow... - qWarning() << "Invalid sorting set!"; - return true; -} - -} diff --git a/application/pages/modplatform/ftb/FtbFilterModel.h b/application/pages/modplatform/ftb/FtbFilterModel.h deleted file mode 100644 index 4fe2a274..00000000 --- a/application/pages/modplatform/ftb/FtbFilterModel.h +++ /dev/null @@ -1,33 +0,0 @@ -#pragma once - -#include <QtCore/QSortFilterProxyModel> - -namespace Ftb { - -class FilterModel : public QSortFilterProxyModel -{ - Q_OBJECT - -public: - FilterModel(QObject* parent = Q_NULLPTR); - enum Sorting { - ByPlays, - ByInstalls, - ByName, - }; - const QMap<QString, Sorting> getAvailableSortings(); - QString translateCurrentSorting(); - void setSorting(Sorting sorting); - Sorting getCurrentSorting(); - -protected: - bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; - bool lessThan(const QModelIndex &left, const QModelIndex &right) const override; - -private: - QMap<QString, Sorting> sortings; - Sorting currentSorting; - -}; - -} diff --git a/application/pages/modplatform/ftb/FtbListModel.cpp b/application/pages/modplatform/ftb/FtbListModel.cpp deleted file mode 100644 index 98973f2e..00000000 --- a/application/pages/modplatform/ftb/FtbListModel.cpp +++ /dev/null @@ -1,304 +0,0 @@ -#include "FtbListModel.h" - -#include "BuildConfig.h" -#include "Env.h" -#include "MultiMC.h" -#include "Json.h" - -#include <QPainter> - -namespace Ftb { - -ListModel::ListModel(QObject *parent) : QAbstractListModel(parent) -{ -} - -ListModel::~ListModel() -{ -} - -int ListModel::rowCount(const QModelIndex &parent) const -{ - return modpacks.size(); -} - -int ListModel::columnCount(const QModelIndex &parent) const -{ - return 1; -} - -QVariant ListModel::data(const QModelIndex &index, int role) const -{ - int pos = index.row(); - if(pos >= modpacks.size() || pos < 0 || !index.isValid()) - { - return QString("INVALID INDEX %1").arg(pos); - } - - ModpacksCH::Modpack pack = modpacks.at(pos); - if(role == Qt::DisplayRole) - { - return pack.name; - } - else if (role == Qt::ToolTipRole) - { - return pack.synopsis; - } - else if(role == Qt::DecorationRole) - { - QIcon placeholder = MMC->getThemedIcon("screenshot-placeholder"); - - auto iter = m_logoMap.find(pack.name); - if (iter != m_logoMap.end()) { - auto & logo = *iter; - if(!logo.result.isNull()) { - return logo.result; - } - return placeholder; - } - - for(auto art : pack.art) { - if(art.type == "square") { - ((ListModel *)this)->requestLogo(pack.name, art.url); - } - } - return placeholder; - } - else if(role == Qt::UserRole) - { - QVariant v; - v.setValue(pack); - return v; - } - - return QVariant(); -} - -void ListModel::performSearch() -{ - auto *netJob = new NetJob("Ftb::Search"); - QString searchUrl; - if(currentSearchTerm.isEmpty()) { - searchUrl = BuildConfig.MODPACKSCH_API_BASE_URL + "public/modpack/all"; - } - else { - searchUrl = QString(BuildConfig.MODPACKSCH_API_BASE_URL + "public/modpack/search/25?term=%1") - .arg(currentSearchTerm); - } - netJob->addNetAction(Net::Download::makeByteArray(QUrl(searchUrl), &response)); - jobPtr = netJob; - jobPtr->start(); - QObject::connect(netJob, &NetJob::succeeded, this, &ListModel::searchRequestFinished); - QObject::connect(netJob, &NetJob::failed, this, &ListModel::searchRequestFailed); -} - -void ListModel::getLogo(const QString &logo, const QString &logoUrl, LogoCallback callback) -{ - if(m_logoMap.contains(logo)) - { - callback(ENV.metacache()->resolveEntry("ModpacksCHPacks", QString("logos/%1").arg(logo.section(".", 0, 0)))->getFullPath()); - } - else - { - requestLogo(logo, logoUrl); - } -} - -void ListModel::searchWithTerm(const QString &term) -{ - if(searchState != Failed && currentSearchTerm == term && currentSearchTerm.isNull() == term.isNull()) { - // unless the search has failed, then there is no need to perform an identical search. - return; - } - currentSearchTerm = term; - - if(jobPtr) { - jobPtr->abort(); - jobPtr.reset(); - } - - beginResetModel(); - modpacks.clear(); - endResetModel(); - searchState = None; - - performSearch(); -} - -void ListModel::searchRequestFinished() -{ - jobPtr.reset(); - remainingPacks.clear(); - - QJsonParseError parse_error; - QJsonDocument doc = QJsonDocument::fromJson(response, &parse_error); - if(parse_error.error != QJsonParseError::NoError) { - qWarning() << "Error while parsing JSON response from FTB at " << parse_error.offset << " reason: " << parse_error.errorString(); - qWarning() << response; - return; - } - - auto packs = doc.object().value("packs").toArray(); - for(auto pack : packs) { - auto packId = pack.toInt(); - remainingPacks.append(packId); - } - - if(!remainingPacks.isEmpty()) { - currentPack = remainingPacks.at(0); - requestPack(); - } -} - -void ListModel::searchRequestFailed(QString reason) -{ - jobPtr.reset(); - remainingPacks.clear(); - - searchState = Failed; -} - -void ListModel::requestPack() -{ - auto *netJob = new NetJob("Ftb::Search"); - auto searchUrl = QString(BuildConfig.MODPACKSCH_API_BASE_URL + "public/modpack/%1") - .arg(currentPack); - netJob->addNetAction(Net::Download::makeByteArray(QUrl(searchUrl), &response)); - jobPtr = netJob; - jobPtr->start(); - - QObject::connect(netJob, &NetJob::succeeded, this, &ListModel::packRequestFinished); - QObject::connect(netJob, &NetJob::failed, this, &ListModel::packRequestFailed); -} - -void ListModel::packRequestFinished() -{ - jobPtr.reset(); - remainingPacks.removeOne(currentPack); - - QJsonParseError parse_error; - QJsonDocument doc = QJsonDocument::fromJson(response, &parse_error); - - if(parse_error.error != QJsonParseError::NoError) { - qWarning() << "Error while parsing JSON response from FTB at " << parse_error.offset << " reason: " << parse_error.errorString(); - qWarning() << response; - return; - } - - auto obj = doc.object(); - - ModpacksCH::Modpack pack; - try - { - ModpacksCH::loadModpack(pack, obj); - } - catch (const JSONValidationError &e) - { - qDebug() << QString::fromUtf8(response); - qWarning() << "Error while reading pack manifest from FTB: " << e.cause(); - return; - } - - // Since there is no guarantee that packs have a version, this will just - // ignore those "dud" packs. - if (pack.versions.empty()) - { - qWarning() << "FTB Pack " << pack.id << " ignored. reason: lacking any versions"; - } - else - { - beginInsertRows(QModelIndex(), modpacks.size(), modpacks.size()); - modpacks.append(pack); - endInsertRows(); - } - - if(!remainingPacks.isEmpty()) { - currentPack = remainingPacks.at(0); - requestPack(); - } -} - -void ListModel::packRequestFailed(QString reason) -{ - jobPtr.reset(); - remainingPacks.removeOne(currentPack); -} - -void ListModel::logoLoaded(QString logo, bool stale) -{ - auto & logoObj = m_logoMap[logo]; - logoObj.downloadJob.reset(); - QString smallPath = logoObj.fullpath + ".small"; - - QFileInfo smallInfo(smallPath); - - if(stale || !smallInfo.exists()) { - QImage image(logoObj.fullpath); - if (image.isNull()) - { - logoObj.failed = true; - return; - } - QImage small; - if (image.width() > image.height()) { - small = image.scaledToWidth(512).scaledToWidth(256, Qt::SmoothTransformation); - } - else { - small = image.scaledToHeight(512).scaledToHeight(256, Qt::SmoothTransformation); - } - QPoint offset((256 - small.width()) / 2, (256 - small.height()) / 2); - QImage square(QSize(256, 256), QImage::Format_ARGB32); - square.fill(Qt::transparent); - - QPainter painter(&square); - painter.drawImage(offset, small); - painter.end(); - - square.save(logoObj.fullpath + ".small", "PNG"); - } - - logoObj.result = QIcon(logoObj.fullpath + ".small"); - for(int i = 0; i < modpacks.size(); i++) { - if(modpacks[i].name == logo) { - emit dataChanged(createIndex(i, 0), createIndex(i, 0), {Qt::DecorationRole}); - } - } -} - -void ListModel::logoFailed(QString logo) -{ - m_logoMap[logo].failed = true; - m_logoMap[logo].downloadJob.reset(); -} - -void ListModel::requestLogo(QString logo, QString url) -{ - if(m_logoMap.contains(logo)) { - return; - } - - MetaEntryPtr entry = ENV.metacache()->resolveEntry("ModpacksCHPacks", QString("logos/%1").arg(logo.section(".", 0, 0))); - - bool stale = entry->isStale(); - - NetJob *job = new NetJob(QString("FTB Icon Download %1").arg(logo)); - job->addNetAction(Net::Download::makeCached(QUrl(url), entry)); - - auto fullPath = entry->getFullPath(); - QObject::connect(job, &NetJob::finished, this, [this, logo, fullPath, stale] - { - logoLoaded(logo, stale); - }); - - QObject::connect(job, &NetJob::failed, this, [this, logo] - { - logoFailed(logo); - }); - - auto &newLogoEntry = m_logoMap[logo]; - newLogoEntry.downloadJob = job; - newLogoEntry.fullpath = fullPath; - job->start(); -} - -} diff --git a/application/pages/modplatform/ftb/FtbListModel.h b/application/pages/modplatform/ftb/FtbListModel.h deleted file mode 100644 index de94e6ba..00000000 --- a/application/pages/modplatform/ftb/FtbListModel.h +++ /dev/null @@ -1,69 +0,0 @@ -#pragma once - -#include <QAbstractListModel> - -#include "modplatform/modpacksch/FTBPackManifest.h" -#include "net/NetJob.h" -#include <QIcon> - -namespace Ftb { - -struct Logo { - QString fullpath; - NetJobPtr downloadJob; - QIcon result; - bool failed = false; -}; - -typedef QMap<QString, Logo> LogoMap; -typedef std::function<void(QString)> LogoCallback; - -class ListModel : public QAbstractListModel -{ - Q_OBJECT - -public: - ListModel(QObject *parent); - virtual ~ListModel(); - - int rowCount(const QModelIndex &parent) const override; - int columnCount(const QModelIndex &parent) const override; - QVariant data(const QModelIndex &index, int role) const override; - - void getLogo(const QString &logo, const QString &logoUrl, LogoCallback callback); - void searchWithTerm(const QString & term); - -private slots: - void performSearch(); - void searchRequestFinished(); - void searchRequestFailed(QString reason); - - void requestPack(); - void packRequestFinished(); - void packRequestFailed(QString reason); - - void logoFailed(QString logo); - void logoLoaded(QString logo, bool stale); - -private: - void requestLogo(QString file, QString url); - -private: - QList<ModpacksCH::Modpack> modpacks; - LogoMap m_logoMap; - - QString currentSearchTerm; - enum SearchState { - None, - CanPossiblyFetchMore, - ResetRequested, - Finished, - Failed, - } searchState = None; - NetJobPtr jobPtr; - int currentPack; - QList<int> remainingPacks; - QByteArray response; -}; - -} diff --git a/application/pages/modplatform/ftb/FtbPage.cpp b/application/pages/modplatform/ftb/FtbPage.cpp deleted file mode 100644 index b7f35c5d..00000000 --- a/application/pages/modplatform/ftb/FtbPage.cpp +++ /dev/null @@ -1,145 +0,0 @@ -#include "FtbPage.h" -#include "ui_FtbPage.h" - -#include <QKeyEvent> - -#include "dialogs/NewInstanceDialog.h" -#include "modplatform/modpacksch/FTBPackInstallTask.h" - -#include "HoeDown.h" - -FtbPage::FtbPage(NewInstanceDialog* dialog, QWidget *parent) - : QWidget(parent), ui(new Ui::FtbPage), dialog(dialog) -{ - ui->setupUi(this); - - filterModel = new Ftb::FilterModel(this); - listModel = new Ftb::ListModel(this); - filterModel->setSourceModel(listModel); - ui->packView->setModel(filterModel); - ui->packView->setSortingEnabled(true); - ui->packView->header()->hide(); - ui->packView->setIndentation(0); - - ui->searchEdit->installEventFilter(this); - - ui->versionSelectionBox->view()->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); - ui->versionSelectionBox->view()->parentWidget()->setMaximumHeight(300); - - for(int i = 0; i < filterModel->getAvailableSortings().size(); i++) - { - ui->sortByBox->addItem(filterModel->getAvailableSortings().keys().at(i)); - } - ui->sortByBox->setCurrentText(filterModel->translateCurrentSorting()); - - connect(ui->searchButton, &QPushButton::clicked, this, &FtbPage::triggerSearch); - connect(ui->sortByBox, &QComboBox::currentTextChanged, this, &FtbPage::onSortingSelectionChanged); - connect(ui->packView->selectionModel(), &QItemSelectionModel::currentChanged, this, &FtbPage::onSelectionChanged); - connect(ui->versionSelectionBox, &QComboBox::currentTextChanged, this, &FtbPage::onVersionSelectionChanged); -} - -FtbPage::~FtbPage() -{ - delete ui; -} - -bool FtbPage::eventFilter(QObject* watched, QEvent* event) -{ - if (watched == ui->searchEdit && event->type() == QEvent::KeyPress) { - QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event); - if (keyEvent->key() == Qt::Key_Return) { - triggerSearch(); - keyEvent->accept(); - return true; - } - } - return QWidget::eventFilter(watched, event); -} - -bool FtbPage::shouldDisplay() const -{ - return true; -} - -void FtbPage::openedImpl() -{ - triggerSearch(); - suggestCurrent(); -} - -void FtbPage::suggestCurrent() -{ - if(!isOpened) - { - return; - } - - if (selectedVersion.isEmpty()) - { - dialog->setSuggestedPack(); - return; - } - - dialog->setSuggestedPack(selected.name, new ModpacksCH::PackInstallTask(selected, selectedVersion)); - for(auto art : selected.art) { - if(art.type == "square") { - QString editedLogoName; - editedLogoName = selected.name; - - listModel->getLogo(selected.name, art.url, [this, editedLogoName](QString logo) - { - dialog->setSuggestedIconFromFile(logo + ".small", editedLogoName); - }); - } - } -} - -void FtbPage::triggerSearch() -{ - listModel->searchWithTerm(ui->searchEdit->text()); -} - -void FtbPage::onSortingSelectionChanged(QString data) -{ - auto toSet = filterModel->getAvailableSortings().value(data); - filterModel->setSorting(toSet); -} - -void FtbPage::onSelectionChanged(QModelIndex first, QModelIndex second) -{ - ui->versionSelectionBox->clear(); - - if(!first.isValid()) - { - if(isOpened) - { - dialog->setSuggestedPack(); - } - return; - } - - selected = filterModel->data(first, Qt::UserRole).value<ModpacksCH::Modpack>(); - - HoeDown hoedown; - QString output = hoedown.process(selected.description.toUtf8()); - ui->packDescription->setHtml(output); - - // reverse foreach, so that the newest versions are first - for (auto i = selected.versions.size(); i--;) { - ui->versionSelectionBox->addItem(selected.versions.at(i).name); - } - - suggestCurrent(); -} - -void FtbPage::onVersionSelectionChanged(QString data) -{ - if(data.isNull() || data.isEmpty()) - { - selectedVersion = ""; - return; - } - - selectedVersion = data; - suggestCurrent(); -} diff --git a/application/pages/modplatform/ftb/FtbPage.h b/application/pages/modplatform/ftb/FtbPage.h deleted file mode 100644 index c9c93897..00000000 --- a/application/pages/modplatform/ftb/FtbPage.h +++ /dev/null @@ -1,80 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "FtbFilterModel.h" -#include "FtbListModel.h" - -#include <QWidget> - -#include "MultiMC.h" -#include "pages/BasePage.h" -#include "tasks/Task.h" - -namespace Ui -{ - class FtbPage; -} - -class NewInstanceDialog; - -class FtbPage : public QWidget, public BasePage -{ -Q_OBJECT - -public: - explicit FtbPage(NewInstanceDialog* dialog, QWidget *parent = 0); - virtual ~FtbPage(); - virtual QString displayName() const override - { - return tr("FTB"); - } - virtual QIcon icon() const override - { - return MMC->getThemedIcon("ftb_logo"); - } - virtual QString id() const override - { - return "ftb"; - } - virtual QString helpPage() const override - { - return "FTB-platform"; - } - virtual bool shouldDisplay() const override; - - void openedImpl() override; - - bool eventFilter(QObject * watched, QEvent * event) override; - -private: - void suggestCurrent(); - -private slots: - void triggerSearch(); - void onSortingSelectionChanged(QString data); - void onSelectionChanged(QModelIndex first, QModelIndex second); - void onVersionSelectionChanged(QString data); - -private: - Ui::FtbPage *ui = nullptr; - NewInstanceDialog* dialog = nullptr; - Ftb::ListModel* listModel = nullptr; - Ftb::FilterModel* filterModel = nullptr; - - ModpacksCH::Modpack selected; - QString selectedVersion; -}; diff --git a/application/pages/modplatform/ftb/FtbPage.ui b/application/pages/modplatform/ftb/FtbPage.ui deleted file mode 100644 index 135afc6d..00000000 --- a/application/pages/modplatform/ftb/FtbPage.ui +++ /dev/null @@ -1,84 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>FtbPage</class> - <widget class="QWidget" name="FtbPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>875</width> - <height>745</height> - </rect> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="2" column="0" colspan="2"> - <layout class="QGridLayout" name="gridLayout_4" columnstretch="0,0,0" rowminimumheight="0" columnminimumwidth="0,0,0"> - <item row="0" column="2"> - <widget class="QComboBox" name="versionSelectionBox"/> - </item> - <item row="0" column="1"> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Version selected:</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - </widget> - </item> - <item row="0" column="0"> - <widget class="QComboBox" name="sortByBox"/> - </item> - </layout> - </item> - <item row="0" column="0"> - <widget class="QLineEdit" name="searchEdit"> - <property name="placeholderText"> - <string>Search and filter ...</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QPushButton" name="searchButton"> - <property name="text"> - <string>Search</string> - </property> - </widget> - </item> - <item row="1" column="0" colspan="2"> - <layout class="QGridLayout" name="gridLayout_3"> - <item row="0" column="0"> - <widget class="QTreeView" name="packView"> - <property name="iconSize"> - <size> - <width>48</width> - <height>48</height> - </size> - </property> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QTextBrowser" name="packDescription"> - <property name="openExternalLinks"> - <bool>true</bool> - </property> - <property name="openLinks"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - <tabstops> - <tabstop>searchEdit</tabstop> - <tabstop>searchButton</tabstop> - <tabstop>versionSelectionBox</tabstop> - </tabstops> - <resources/> - <connections/> -</ui> diff --git a/application/pages/modplatform/legacy_ftb/ListModel.cpp b/application/pages/modplatform/legacy_ftb/ListModel.cpp deleted file mode 100644 index 32596fb3..00000000 --- a/application/pages/modplatform/legacy_ftb/ListModel.cpp +++ /dev/null @@ -1,260 +0,0 @@ -#include "ListModel.h" -#include "MultiMC.h" - -#include <MMCStrings.h> -#include <Version.h> - -#include <QtMath> -#include <QLabel> - -#include <RWStorage.h> -#include <Env.h> - -#include <BuildConfig.h> - -namespace LegacyFTB { - -FilterModel::FilterModel(QObject *parent) : QSortFilterProxyModel(parent) -{ - currentSorting = Sorting::ByGameVersion; - sortings.insert(tr("Sort by name"), Sorting::ByName); - sortings.insert(tr("Sort by game version"), Sorting::ByGameVersion); -} - -bool FilterModel::lessThan(const QModelIndex &left, const QModelIndex &right) const -{ - Modpack leftPack = sourceModel()->data(left, Qt::UserRole).value<Modpack>(); - Modpack rightPack = sourceModel()->data(right, Qt::UserRole).value<Modpack>(); - - if(currentSorting == Sorting::ByGameVersion) { - Version lv(leftPack.mcVersion); - Version rv(rightPack.mcVersion); - return lv < rv; - - } else if(currentSorting == Sorting::ByName) { - return Strings::naturalCompare(leftPack.name, rightPack.name, Qt::CaseSensitive) >= 0; - } - - //UHM, some inavlid value set?! - qWarning() << "Invalid sorting set!"; - return true; -} - -bool FilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const -{ - return true; -} - -const QMap<QString, FilterModel::Sorting> FilterModel::getAvailableSortings() -{ - return sortings; -} - -QString FilterModel::translateCurrentSorting() -{ - return sortings.key(currentSorting); -} - -void FilterModel::setSorting(Sorting s) -{ - currentSorting = s; - invalidate(); -} - -FilterModel::Sorting FilterModel::getCurrentSorting() -{ - return currentSorting; -} - -ListModel::ListModel(QObject *parent) : QAbstractListModel(parent) -{ -} - -ListModel::~ListModel() -{ -} - -QString ListModel::translatePackType(PackType type) const -{ - switch(type) - { - case PackType::Public: - return tr("Public Modpack"); - case PackType::ThirdParty: - return tr("Third Party Modpack"); - case PackType::Private: - return tr("Private Modpack"); - } - qWarning() << "Unknown FTB modpack type:" << int(type); - return QString(); -} - -int ListModel::rowCount(const QModelIndex &parent) const -{ - return modpacks.size(); -} - -int ListModel::columnCount(const QModelIndex &parent) const -{ - return 1; -} - -QVariant ListModel::data(const QModelIndex &index, int role) const -{ - int pos = index.row(); - if(pos >= modpacks.size() || pos < 0 || !index.isValid()) - { - return QString("INVALID INDEX %1").arg(pos); - } - - Modpack pack = modpacks.at(pos); - if(role == Qt::DisplayRole) - { - return pack.name + "\n" + translatePackType(pack.type); - } - else if (role == Qt::ToolTipRole) - { - if(pack.description.length() > 100) - { - //some magic to prevent to long tooltips and replace html linebreaks - QString edit = pack.description.left(97); - edit = edit.left(edit.lastIndexOf("<br>")).left(edit.lastIndexOf(" ")).append("..."); - return edit; - - } - return pack.description; - } - else if(role == Qt::DecorationRole) - { - if(m_logoMap.contains(pack.logo)) - { - return (m_logoMap.value(pack.logo)); - } - QIcon icon = MMC->getThemedIcon("screenshot-placeholder"); - ((ListModel *)this)->requestLogo(pack.logo); - return icon; - } - else if(role == Qt::TextColorRole) - { - if(pack.broken) - { - //FIXME: Hardcoded color - return QColor(255, 0, 50); - } - else if(pack.bugged) - { - //FIXME: Hardcoded color - //bugged pack, currently only indicates bugged xml - return QColor(244, 229, 66); - } - } - else if(role == Qt::UserRole) - { - QVariant v; - v.setValue(pack); - return v; - } - - return QVariant(); -} - -void ListModel::fill(ModpackList modpacks) -{ - beginResetModel(); - this->modpacks = modpacks; - endResetModel(); -} - -void ListModel::addPack(Modpack modpack) -{ - beginResetModel(); - this->modpacks.append(modpack); - endResetModel(); -} - -void ListModel::clear() -{ - beginResetModel(); - modpacks.clear(); - endResetModel(); -} - -Modpack ListModel::at(int row) -{ - return modpacks.at(row); -} - -void ListModel::remove(int row) -{ - if(row < 0 || row >= modpacks.size()) - { - qWarning() << "Attempt to remove FTB modpacks with invalid row" << row; - return; - } - beginRemoveRows(QModelIndex(), row, row); - modpacks.removeAt(row); - endRemoveRows(); -} - -void ListModel::logoLoaded(QString logo, QIcon out) -{ - m_loadingLogos.removeAll(logo); - m_logoMap.insert(logo, out); - emit dataChanged(createIndex(0, 0), createIndex(1, 0)); -} - -void ListModel::logoFailed(QString logo) -{ - m_failedLogos.append(logo); - m_loadingLogos.removeAll(logo); -} - -void ListModel::requestLogo(QString file) -{ - if(m_loadingLogos.contains(file) || m_failedLogos.contains(file)) - { - return; - } - - MetaEntryPtr entry = ENV.metacache()->resolveEntry("FTBPacks", QString("logos/%1").arg(file.section(".", 0, 0))); - NetJob *job = new NetJob(QString("FTB Icon Download for %1").arg(file)); - job->addNetAction(Net::Download::makeCached(QUrl(QString(BuildConfig.LEGACY_FTB_CDN_BASE_URL + "static/%1").arg(file)), entry)); - - auto fullPath = entry->getFullPath(); - QObject::connect(job, &NetJob::finished, this, [this, file, fullPath] - { - emit logoLoaded(file, QIcon(fullPath)); - if(waitingCallbacks.contains(file)) - { - waitingCallbacks.value(file)(fullPath); - } - }); - - QObject::connect(job, &NetJob::failed, this, [this, file] - { - emit logoFailed(file); - }); - - job->start(); - - m_loadingLogos.append(file); -} - -void ListModel::getLogo(const QString &logo, LogoCallback callback) -{ - if(m_logoMap.contains(logo)) - { - callback(ENV.metacache()->resolveEntry("FTBPacks", QString("logos/%1").arg(logo.section(".", 0, 0)))->getFullPath()); - } - else - { - requestLogo(logo); - } -} - -Qt::ItemFlags ListModel::flags(const QModelIndex &index) const -{ - return QAbstractListModel::flags(index); -} - -} diff --git a/application/pages/modplatform/legacy_ftb/ListModel.h b/application/pages/modplatform/legacy_ftb/ListModel.h deleted file mode 100644 index c55df000..00000000 --- a/application/pages/modplatform/legacy_ftb/ListModel.h +++ /dev/null @@ -1,78 +0,0 @@ -#pragma once - -#include <modplatform/legacy_ftb/PackHelpers.h> -#include <RWStorage.h> - -#include <QAbstractListModel> -#include <QSortFilterProxyModel> -#include <QThreadPool> -#include <QIcon> -#include <QStyledItemDelegate> - -#include <functional> - -namespace LegacyFTB { - -typedef QMap<QString, QIcon> FTBLogoMap; -typedef std::function<void(QString)> LogoCallback; - -class FilterModel : public QSortFilterProxyModel -{ - Q_OBJECT -public: - FilterModel(QObject* parent = Q_NULLPTR); - enum Sorting { - ByName, - ByGameVersion - }; - const QMap<QString, Sorting> getAvailableSortings(); - QString translateCurrentSorting(); - void setSorting(Sorting sorting); - Sorting getCurrentSorting(); - -protected: - bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; - bool lessThan(const QModelIndex &left, const QModelIndex &right) const override; - -private: - QMap<QString, Sorting> sortings; - Sorting currentSorting; - -}; - -class ListModel : public QAbstractListModel -{ - Q_OBJECT -private: - ModpackList modpacks; - QStringList m_failedLogos; - QStringList m_loadingLogos; - FTBLogoMap m_logoMap; - QMap<QString, LogoCallback> waitingCallbacks; - - void requestLogo(QString file); - QString translatePackType(PackType type) const; - - -private slots: - void logoFailed(QString logo); - void logoLoaded(QString logo, QIcon out); - -public: - ListModel(QObject *parent); - ~ListModel(); - int rowCount(const QModelIndex &parent) const override; - int columnCount(const QModelIndex &parent) const override; - QVariant data(const QModelIndex &index, int role) const override; - Qt::ItemFlags flags(const QModelIndex &index) const override; - - void fill(ModpackList modpacks); - void addPack(Modpack modpack); - void clear(); - void remove(int row); - - Modpack at(int row); - void getLogo(const QString &logo, LogoCallback callback); -}; - -} diff --git a/application/pages/modplatform/legacy_ftb/Page.cpp b/application/pages/modplatform/legacy_ftb/Page.cpp deleted file mode 100644 index a438f76c..00000000 --- a/application/pages/modplatform/legacy_ftb/Page.cpp +++ /dev/null @@ -1,369 +0,0 @@ -#include "Page.h" -#include "ui_Page.h" - -#include <QInputDialog> - -#include "MultiMC.h" -#include "dialogs/CustomMessageBox.h" -#include "dialogs/NewInstanceDialog.h" -#include "modplatform/legacy_ftb/PackFetchTask.h" -#include "modplatform/legacy_ftb/PackInstallTask.h" -#include "modplatform/legacy_ftb/PrivatePackManager.h" -#include "ListModel.h" - -namespace LegacyFTB { - -Page::Page(NewInstanceDialog* dialog, QWidget *parent) - : QWidget(parent), dialog(dialog), ui(new Ui::Page) -{ - ftbFetchTask.reset(new PackFetchTask()); - ftbPrivatePacks.reset(new PrivatePackManager()); - - ui->setupUi(this); - - { - publicFilterModel = new FilterModel(this); - publicListModel = new ListModel(this); - publicFilterModel->setSourceModel(publicListModel); - - ui->publicPackList->setModel(publicFilterModel); - ui->publicPackList->setSortingEnabled(true); - ui->publicPackList->header()->hide(); - ui->publicPackList->setIndentation(0); - ui->publicPackList->setIconSize(QSize(42, 42)); - - for(int i = 0; i < publicFilterModel->getAvailableSortings().size(); i++) - { - ui->sortByBox->addItem(publicFilterModel->getAvailableSortings().keys().at(i)); - } - - ui->sortByBox->setCurrentText(publicFilterModel->translateCurrentSorting()); - } - - { - thirdPartyFilterModel = new FilterModel(this); - thirdPartyModel = new ListModel(this); - thirdPartyFilterModel->setSourceModel(thirdPartyModel); - - ui->thirdPartyPackList->setModel(thirdPartyFilterModel); - ui->thirdPartyPackList->setSortingEnabled(true); - ui->thirdPartyPackList->header()->hide(); - ui->thirdPartyPackList->setIndentation(0); - ui->thirdPartyPackList->setIconSize(QSize(42, 42)); - - thirdPartyFilterModel->setSorting(publicFilterModel->getCurrentSorting()); - } - - { - privateFilterModel = new FilterModel(this); - privateListModel = new ListModel(this); - privateFilterModel->setSourceModel(privateListModel); - - ui->privatePackList->setModel(privateFilterModel); - ui->privatePackList->setSortingEnabled(true); - ui->privatePackList->header()->hide(); - ui->privatePackList->setIndentation(0); - ui->privatePackList->setIconSize(QSize(42, 42)); - - privateFilterModel->setSorting(publicFilterModel->getCurrentSorting()); - } - - ui->versionSelectionBox->view()->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); - ui->versionSelectionBox->view()->parentWidget()->setMaximumHeight(300); - - connect(ui->sortByBox, &QComboBox::currentTextChanged, this, &Page::onSortingSelectionChanged); - connect(ui->versionSelectionBox, &QComboBox::currentTextChanged, this, &Page::onVersionSelectionItemChanged); - - connect(ui->publicPackList->selectionModel(), &QItemSelectionModel::currentChanged, this, &Page::onPublicPackSelectionChanged); - connect(ui->thirdPartyPackList->selectionModel(), &QItemSelectionModel::currentChanged, this, &Page::onThirdPartyPackSelectionChanged); - connect(ui->privatePackList->selectionModel(), &QItemSelectionModel::currentChanged, this, &Page::onPrivatePackSelectionChanged); - - connect(ui->addPackBtn, &QPushButton::pressed, this, &Page::onAddPackClicked); - connect(ui->removePackBtn, &QPushButton::pressed, this, &Page::onRemovePackClicked); - - connect(ui->tabWidget, &QTabWidget::currentChanged, this, &Page::onTabChanged); - - // ui->modpackInfo->setOpenExternalLinks(true); - - ui->publicPackList->selectionModel()->reset(); - ui->thirdPartyPackList->selectionModel()->reset(); - ui->privatePackList->selectionModel()->reset(); - - onTabChanged(ui->tabWidget->currentIndex()); -} - -Page::~Page() -{ - delete ui; -} - -bool Page::shouldDisplay() const -{ - return true; -} - -void Page::openedImpl() -{ - if(!initialized) - { - connect(ftbFetchTask.get(), &PackFetchTask::finished, this, &Page::ftbPackDataDownloadSuccessfully); - connect(ftbFetchTask.get(), &PackFetchTask::failed, this, &Page::ftbPackDataDownloadFailed); - - connect(ftbFetchTask.get(), &PackFetchTask::privateFileDownloadFinished, this, &Page::ftbPrivatePackDataDownloadSuccessfully); - connect(ftbFetchTask.get(), &PackFetchTask::privateFileDownloadFailed, this, &Page::ftbPrivatePackDataDownloadFailed); - - ftbFetchTask->fetch(); - ftbPrivatePacks->load(); - ftbFetchTask->fetchPrivate(ftbPrivatePacks->getCurrentPackCodes().toList()); - initialized = true; - } - suggestCurrent(); -} - -void Page::suggestCurrent() -{ - if(!isOpened) - { - return; - } - - if(selected.broken || selectedVersion.isEmpty()) - { - dialog->setSuggestedPack(); - return; - } - - dialog->setSuggestedPack(selected.name, new PackInstallTask(selected, selectedVersion)); - QString editedLogoName; - if(selected.logo.toLower().startsWith("ftb")) - { - editedLogoName = selected.logo; - } - else - { - editedLogoName = "ftb_" + selected.logo; - } - - editedLogoName = editedLogoName.left(editedLogoName.lastIndexOf(".png")); - - if(selected.type == PackType::Public) - { - publicListModel->getLogo(selected.logo, [this, editedLogoName](QString logo) - { - dialog->setSuggestedIconFromFile(logo, editedLogoName); - }); - } - else if (selected.type == PackType::ThirdParty) - { - thirdPartyModel->getLogo(selected.logo, [this, editedLogoName](QString logo) - { - dialog->setSuggestedIconFromFile(logo, editedLogoName); - }); - } - else if (selected.type == PackType::Private) - { - privateListModel->getLogo(selected.logo, [this, editedLogoName](QString logo) - { - dialog->setSuggestedIconFromFile(logo, editedLogoName); - }); - } -} - -void Page::ftbPackDataDownloadSuccessfully(ModpackList publicPacks, ModpackList thirdPartyPacks) -{ - publicListModel->fill(publicPacks); - thirdPartyModel->fill(thirdPartyPacks); -} - -void Page::ftbPackDataDownloadFailed(QString reason) -{ - //TODO: Display the error -} - -void Page::ftbPrivatePackDataDownloadSuccessfully(Modpack pack) -{ - privateListModel->addPack(pack); -} - -void Page::ftbPrivatePackDataDownloadFailed(QString reason, QString packCode) -{ - auto reply = QMessageBox::question( - this, - tr("FTB private packs"), - tr("Failed to download pack information for code %1.\nShould it be removed now?").arg(packCode) - ); - if(reply == QMessageBox::Yes) - { - ftbPrivatePacks->remove(packCode); - } -} - -void Page::onPublicPackSelectionChanged(QModelIndex now, QModelIndex prev) -{ - if(!now.isValid()) - { - onPackSelectionChanged(); - return; - } - Modpack selectedPack = publicFilterModel->data(now, Qt::UserRole).value<Modpack>(); - onPackSelectionChanged(&selectedPack); -} - -void Page::onThirdPartyPackSelectionChanged(QModelIndex now, QModelIndex prev) -{ - if(!now.isValid()) - { - onPackSelectionChanged(); - return; - } - Modpack selectedPack = thirdPartyFilterModel->data(now, Qt::UserRole).value<Modpack>(); - onPackSelectionChanged(&selectedPack); -} - -void Page::onPrivatePackSelectionChanged(QModelIndex now, QModelIndex prev) -{ - if(!now.isValid()) - { - onPackSelectionChanged(); - return; - } - Modpack selectedPack = privateFilterModel->data(now, Qt::UserRole).value<Modpack>(); - onPackSelectionChanged(&selectedPack); -} - -void Page::onPackSelectionChanged(Modpack* pack) -{ - ui->versionSelectionBox->clear(); - if(pack) - { - currentModpackInfo->setHtml("Pack by <b>" + pack->author + "</b>" + - "<br>Minecraft " + pack->mcVersion + "<br>" + "<br>" + pack->description + "<ul><li>" + pack->mods.replace(";", "</li><li>") - + "</li></ul>"); - bool currentAdded = false; - - for(int i = 0; i < pack->oldVersions.size(); i++) - { - if(pack->currentVersion == pack->oldVersions.at(i)) - { - currentAdded = true; - } - ui->versionSelectionBox->addItem(pack->oldVersions.at(i)); - } - - if(!currentAdded) - { - ui->versionSelectionBox->addItem(pack->currentVersion); - } - selected = *pack; - } - else - { - currentModpackInfo->setHtml(""); - ui->versionSelectionBox->clear(); - if(isOpened) - { - dialog->setSuggestedPack(); - } - return; - } - suggestCurrent(); -} - -void Page::onVersionSelectionItemChanged(QString data) -{ - if(data.isNull() || data.isEmpty()) - { - selectedVersion = ""; - return; - } - - selectedVersion = data; - suggestCurrent(); -} - -void Page::onSortingSelectionChanged(QString data) -{ - FilterModel::Sorting toSet = publicFilterModel->getAvailableSortings().value(data); - publicFilterModel->setSorting(toSet); - thirdPartyFilterModel->setSorting(toSet); - privateFilterModel->setSorting(toSet); -} - -void Page::onTabChanged(int tab) -{ - if(tab == 1) - { - currentModel = thirdPartyFilterModel; - currentList = ui->thirdPartyPackList; - currentModpackInfo = ui->thirdPartyPackDescription; - } - else if(tab == 2) - { - currentModel = privateFilterModel; - currentList = ui->privatePackList; - currentModpackInfo = ui->privatePackDescription; - } - else - { - currentModel = publicFilterModel; - currentList = ui->publicPackList; - currentModpackInfo = ui->publicPackDescription; - } - - currentList->selectionModel()->reset(); - QModelIndex idx = currentList->currentIndex(); - if(idx.isValid()) - { - auto pack = currentModel->data(idx, Qt::UserRole).value<Modpack>(); - onPackSelectionChanged(&pack); - } - else - { - onPackSelectionChanged(); - } -} - -void Page::onAddPackClicked() -{ - bool ok; - QString text = QInputDialog::getText( - this, - tr("Add FTB pack"), - tr("Enter pack code:"), - QLineEdit::Normal, - QString(), - &ok - ); - if(ok && !text.isEmpty()) - { - ftbPrivatePacks->add(text); - ftbFetchTask->fetchPrivate({text}); - } -} - -void Page::onRemovePackClicked() -{ - auto index = ui->privatePackList->currentIndex(); - if(!index.isValid()) - { - return; - } - auto row = index.row(); - Modpack pack = privateListModel->at(row); - auto answer = QMessageBox::question( - this, - tr("Remove pack"), - tr("Are you sure you want to remove pack %1?").arg(pack.name), - QMessageBox::Yes | QMessageBox::No - ); - if(answer != QMessageBox::Yes) - { - return; - } - - ftbPrivatePacks->remove(pack.packCode); - privateListModel->remove(row); - onPackSelectionChanged(); -} - -} diff --git a/application/pages/modplatform/legacy_ftb/Page.h b/application/pages/modplatform/legacy_ftb/Page.h deleted file mode 100644 index e840216e..00000000 --- a/application/pages/modplatform/legacy_ftb/Page.h +++ /dev/null @@ -1,119 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QWidget> -#include <QTreeView> -#include <QTextBrowser> - -#include "pages/BasePage.h" -#include <MultiMC.h> -#include "tasks/Task.h" -#include "modplatform/legacy_ftb/PackHelpers.h" -#include "modplatform/legacy_ftb/PackFetchTask.h" -#include "QObjectPtr.h" - -class NewInstanceDialog; - -namespace LegacyFTB { - -namespace Ui -{ -class Page; -} - -class ListModel; -class FilterModel; -class PrivatePackListModel; -class PrivatePackFilterModel; -class PrivatePackManager; - -class Page : public QWidget, public BasePage -{ - Q_OBJECT - -public: - explicit Page(NewInstanceDialog * dialog, QWidget *parent = 0); - virtual ~Page(); - QString displayName() const override - { - return tr("FTB Legacy"); - } - QIcon icon() const override - { - return MMC->getThemedIcon("ftb_logo"); - } - QString id() const override - { - return "legacy_ftb"; - } - QString helpPage() const override - { - return "FTB-platform"; - } - bool shouldDisplay() const override; - void openedImpl() override; - -private: - void suggestCurrent(); - void onPackSelectionChanged(Modpack *pack = nullptr); - -private slots: - void ftbPackDataDownloadSuccessfully(ModpackList publicPacks, ModpackList thirdPartyPacks); - void ftbPackDataDownloadFailed(QString reason); - - void ftbPrivatePackDataDownloadSuccessfully(Modpack pack); - void ftbPrivatePackDataDownloadFailed(QString reason, QString packCode); - - void onSortingSelectionChanged(QString data); - void onVersionSelectionItemChanged(QString data); - - void onPublicPackSelectionChanged(QModelIndex first, QModelIndex second); - void onThirdPartyPackSelectionChanged(QModelIndex first, QModelIndex second); - void onPrivatePackSelectionChanged(QModelIndex first, QModelIndex second); - - void onTabChanged(int tab); - - void onAddPackClicked(); - void onRemovePackClicked(); - -private: - FilterModel* currentModel = nullptr; - QTreeView* currentList = nullptr; - QTextBrowser* currentModpackInfo = nullptr; - - bool initialized = false; - Modpack selected; - QString selectedVersion; - - ListModel* publicListModel = nullptr; - FilterModel* publicFilterModel = nullptr; - - ListModel *thirdPartyModel = nullptr; - FilterModel *thirdPartyFilterModel = nullptr; - - ListModel *privateListModel = nullptr; - FilterModel *privateFilterModel = nullptr; - - unique_qobject_ptr<PackFetchTask> ftbFetchTask; - std::unique_ptr<PrivatePackManager> ftbPrivatePacks; - - NewInstanceDialog* dialog = nullptr; - - Ui::Page *ui = nullptr; -}; - -} diff --git a/application/pages/modplatform/legacy_ftb/Page.ui b/application/pages/modplatform/legacy_ftb/Page.ui deleted file mode 100644 index 15e5d432..00000000 --- a/application/pages/modplatform/legacy_ftb/Page.ui +++ /dev/null @@ -1,135 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>LegacyFTB::Page</class> - <widget class="QWidget" name="LegacyFTB::Page"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>709</width> - <height>602</height> - </rect> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QTabWidget" name="tabWidget"> - <property name="currentIndex"> - <number>0</number> - </property> - <widget class="QWidget" name="tab"> - <attribute name="title"> - <string>Public</string> - </attribute> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <widget class="QTreeView" name="publicPackList"> - <property name="maximumSize"> - <size> - <width>250</width> - <height>16777215</height> - </size> - </property> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QTextBrowser" name="publicPackDescription"/> - </item> - </layout> - </widget> - <widget class="QWidget" name="tab_2"> - <attribute name="title"> - <string>3rd Party</string> - </attribute> - <layout class="QGridLayout" name="gridLayout_3"> - <item row="0" column="1"> - <widget class="QTextBrowser" name="thirdPartyPackDescription"/> - </item> - <item row="0" column="0"> - <widget class="QTreeView" name="thirdPartyPackList"> - <property name="maximumSize"> - <size> - <width>250</width> - <height>16777215</height> - </size> - </property> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - <widget class="QWidget" name="tab_3"> - <attribute name="title"> - <string>Private</string> - </attribute> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="0" column="0"> - <widget class="QTreeView" name="privatePackList"> - <property name="maximumSize"> - <size> - <width>250</width> - <height>16777215</height> - </size> - </property> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QPushButton" name="addPackBtn"> - <property name="text"> - <string>Add pack</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QPushButton" name="removePackBtn"> - <property name="text"> - <string>Remove selected pack</string> - </property> - </widget> - </item> - <item row="0" column="1" rowspan="3"> - <widget class="QTextBrowser" name="privatePackDescription"/> - </item> - </layout> - </widget> - </widget> - </item> - <item> - <layout class="QGridLayout" name="gridLayout_4"> - <item row="0" column="1"> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Version selected:</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - </widget> - </item> - <item row="0" column="2"> - <widget class="QComboBox" name="versionSelectionBox"/> - </item> - <item row="0" column="0"> - <widget class="QComboBox" name="sortByBox"> - <property name="minimumSize"> - <size> - <width>265</width> - <height>0</height> - </size> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/application/pages/modplatform/technic/TechnicData.h b/application/pages/modplatform/technic/TechnicData.h deleted file mode 100644 index 50fd75e8..00000000 --- a/application/pages/modplatform/technic/TechnicData.h +++ /dev/null @@ -1,42 +0,0 @@ -/* Copyright 2020-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QList> -#include <QString> - -namespace Technic { -struct Modpack { - QString slug; - - QString name; - QString logoUrl; - QString logoName; - - bool broken = true; - - QString url; - bool isSolder = false; - QString minecraftVersion; - - bool metadataLoaded = false; - QString websiteUrl; - QString author; - QString description; -}; -} - -Q_DECLARE_METATYPE(Technic::Modpack) diff --git a/application/pages/modplatform/technic/TechnicModel.cpp b/application/pages/modplatform/technic/TechnicModel.cpp deleted file mode 100644 index def30783..00000000 --- a/application/pages/modplatform/technic/TechnicModel.cpp +++ /dev/null @@ -1,238 +0,0 @@ -/* Copyright 2020-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "TechnicModel.h" -#include "Env.h" -#include "MultiMC.h" -#include "Json.h" - -#include <QIcon> - -Technic::ListModel::ListModel(QObject *parent) : QAbstractListModel(parent) -{ -} - -Technic::ListModel::~ListModel() -{ -} - -QVariant Technic::ListModel::data(const QModelIndex& index, int role) const -{ - int pos = index.row(); - if(pos >= modpacks.size() || pos < 0 || !index.isValid()) - { - return QString("INVALID INDEX %1").arg(pos); - } - - Modpack pack = modpacks.at(pos); - if(role == Qt::DisplayRole) - { - return pack.name; - } - else if(role == Qt::DecorationRole) - { - if(m_logoMap.contains(pack.logoName)) - { - return (m_logoMap.value(pack.logoName)); - } - QIcon icon = MMC->getThemedIcon("screenshot-placeholder"); - ((ListModel *)this)->requestLogo(pack.logoName, pack.logoUrl); - return icon; - } - else if(role == Qt::UserRole) - { - QVariant v; - v.setValue(pack); - return v; - } - return QVariant(); -} - -int Technic::ListModel::columnCount(const QModelIndex&) const -{ - return 1; -} - -int Technic::ListModel::rowCount(const QModelIndex&) const -{ - return modpacks.size(); -} - -void Technic::ListModel::searchWithTerm(const QString& term) -{ - if(currentSearchTerm == term && currentSearchTerm.isNull() == term.isNull()) { - return; - } - currentSearchTerm = term; - if(jobPtr) { - jobPtr->abort(); - searchState = ResetRequested; - return; - } - else { - beginResetModel(); - modpacks.clear(); - endResetModel(); - searchState = None; - } - performSearch(); -} - -void Technic::ListModel::performSearch() -{ - NetJob *netJob = new NetJob("Technic::Search"); - QString searchUrl = ""; - if (currentSearchTerm.isEmpty()) { - searchUrl = "https://api.technicpack.net/trending?build=multimc"; - } - else - { - searchUrl = QString( - "https://api.technicpack.net/search?build=multimc&q=%1" - ).arg(currentSearchTerm); - } - netJob->addNetAction(Net::Download::makeByteArray(QUrl(searchUrl), &response)); - jobPtr = netJob; - jobPtr->start(); - QObject::connect(netJob, &NetJob::succeeded, this, &ListModel::searchRequestFinished); - QObject::connect(netJob, &NetJob::failed, this, &ListModel::searchRequestFailed); -} - -void Technic::ListModel::searchRequestFinished() -{ - jobPtr.reset(); - - QJsonParseError parse_error; - QJsonDocument doc = QJsonDocument::fromJson(response, &parse_error); - if(parse_error.error != QJsonParseError::NoError) - { - qWarning() << "Error while parsing JSON response from Technic at " << parse_error.offset << " reason: " << parse_error.errorString(); - qWarning() << response; - return; - } - - QList<Modpack> newList; - try { - auto root = Json::requireObject(doc); - auto objs = Json::requireArray(root, "modpacks"); - for (auto technicPack: objs) { - Modpack pack; - auto technicPackObject = Json::requireObject(technicPack); - pack.name = Json::requireString(technicPackObject, "name"); - pack.slug = Json::requireString(technicPackObject, "slug"); - if (pack.slug == "vanilla") - continue; - - auto rawURL = Json::ensureString(technicPackObject, "iconUrl", "null"); - if(rawURL == "null") { - pack.logoUrl = "null"; - pack.logoName = "null"; - } - else { - pack.logoUrl = rawURL; - pack.logoName = rawURL.section(QLatin1Char('/'), -1).section(QLatin1Char('.'), 0, 0); - } - pack.broken = false; - newList.append(pack); - } - } - catch (const JSONValidationError &err) - { - qCritical() << "Couldn't parse technic search results:" << err.cause() ; - return; - } - searchState = Finished; - beginInsertRows(QModelIndex(), modpacks.size(), modpacks.size() + newList.size() - 1); - modpacks.append(newList); - endInsertRows(); -} - -void Technic::ListModel::getLogo(const QString& logo, const QString& logoUrl, Technic::LogoCallback callback) -{ - if(m_logoMap.contains(logo)) - { - callback(ENV.metacache()->resolveEntry("TechnicPacks", QString("logos/%1").arg(logo))->getFullPath()); - } - else - { - requestLogo(logo, logoUrl); - } -} - -void Technic::ListModel::searchRequestFailed() -{ - jobPtr.reset(); - - if(searchState == ResetRequested) - { - beginResetModel(); - modpacks.clear(); - endResetModel(); - - performSearch(); - } - else - { - searchState = Finished; - } -} - - -void Technic::ListModel::logoLoaded(QString logo, QString out) -{ - m_loadingLogos.removeAll(logo); - m_logoMap.insert(logo, QIcon(out)); - for(int i = 0; i < modpacks.size(); i++) - { - if(modpacks[i].logoName == logo) - { - emit dataChanged(createIndex(i, 0), createIndex(i, 0), {Qt::DecorationRole}); - } - } -} - -void Technic::ListModel::logoFailed(QString logo) -{ - m_failedLogos.append(logo); - m_loadingLogos.removeAll(logo); -} - -void Technic::ListModel::requestLogo(QString logo, QString url) -{ - if(m_loadingLogos.contains(logo) || m_failedLogos.contains(logo) || logo == "null") - { - return; - } - - MetaEntryPtr entry = ENV.metacache()->resolveEntry("TechnicPacks", QString("logos/%1").arg(logo)); - NetJob *job = new NetJob(QString("Technic Icon Download %1").arg(logo)); - job->addNetAction(Net::Download::makeCached(QUrl(url), entry)); - - auto fullPath = entry->getFullPath(); - - QObject::connect(job, &NetJob::succeeded, this, [this, logo, fullPath] - { - logoLoaded(logo, fullPath); - }); - - QObject::connect(job, &NetJob::failed, this, [this, logo] - { - logoFailed(logo); - }); - - job->start(); - - m_loadingLogos.append(logo); -} diff --git a/application/pages/modplatform/technic/TechnicModel.h b/application/pages/modplatform/technic/TechnicModel.h deleted file mode 100644 index 82a03842..00000000 --- a/application/pages/modplatform/technic/TechnicModel.h +++ /dev/null @@ -1,70 +0,0 @@ -/* Copyright 2020-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QModelIndex> - -#include "TechnicData.h" -#include "net/NetJob.h" - -namespace Technic { - -typedef std::function<void(QString)> LogoCallback; - -class ListModel : public QAbstractListModel -{ - Q_OBJECT - -public: - ListModel(QObject *parent); - virtual ~ListModel(); - - virtual QVariant data(const QModelIndex& index, int role) const; - virtual int columnCount(const QModelIndex& parent) const; - virtual int rowCount(const QModelIndex& parent) const; - - void getLogo(const QString &logo, const QString &logoUrl, LogoCallback callback); - void searchWithTerm(const QString & term); - -private slots: - void searchRequestFinished(); - void searchRequestFailed(); - - void logoFailed(QString logo); - void logoLoaded(QString logo, QString out); - -private: - void performSearch(); - void requestLogo(QString logo, QString url); - -private: - QList<Modpack> modpacks; - QStringList m_failedLogos; - QStringList m_loadingLogos; - QMap<QString, QIcon> m_logoMap; - QMap<QString, LogoCallback> waitingCallbacks; - - QString currentSearchTerm; - enum SearchState { - None, - ResetRequested, - Finished - } searchState = None; - NetJobPtr jobPtr; - QByteArray response; -}; - -} diff --git a/application/pages/modplatform/technic/TechnicPage.cpp b/application/pages/modplatform/technic/TechnicPage.cpp deleted file mode 100644 index e836f767..00000000 --- a/application/pages/modplatform/technic/TechnicPage.cpp +++ /dev/null @@ -1,198 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "TechnicPage.h" -#include "ui_TechnicPage.h" - -#include "MultiMC.h" -#include "dialogs/NewInstanceDialog.h" -#include "TechnicModel.h" -#include <QKeyEvent> -#include "modplatform/technic/SingleZipPackInstallTask.h" -#include "modplatform/technic/SolderPackInstallTask.h" -#include "Json.h" - -TechnicPage::TechnicPage(NewInstanceDialog* dialog, QWidget *parent) - : QWidget(parent), ui(new Ui::TechnicPage), dialog(dialog) -{ - ui->setupUi(this); - connect(ui->searchButton, &QPushButton::clicked, this, &TechnicPage::triggerSearch); - ui->searchEdit->installEventFilter(this); - model = new Technic::ListModel(this); - ui->packView->setModel(model); - connect(ui->packView->selectionModel(), &QItemSelectionModel::currentChanged, this, &TechnicPage::onSelectionChanged); -} - -bool TechnicPage::eventFilter(QObject* watched, QEvent* event) -{ - if (watched == ui->searchEdit && event->type() == QEvent::KeyPress) { - QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event); - if (keyEvent->key() == Qt::Key_Return) { - triggerSearch(); - keyEvent->accept(); - return true; - } - } - return QWidget::eventFilter(watched, event); -} - -TechnicPage::~TechnicPage() -{ - delete ui; -} - -bool TechnicPage::shouldDisplay() const -{ - return true; -} - -void TechnicPage::openedImpl() -{ - suggestCurrent(); - triggerSearch(); -} - -void TechnicPage::triggerSearch() { - model->searchWithTerm(ui->searchEdit->text()); -} - -void TechnicPage::onSelectionChanged(QModelIndex first, QModelIndex second) -{ - if(!first.isValid()) - { - if(isOpened) - { - dialog->setSuggestedPack(); - } - //ui->frame->clear(); - return; - } - - current = model->data(first, Qt::UserRole).value<Technic::Modpack>(); - suggestCurrent(); -} - -void TechnicPage::suggestCurrent() -{ - if (!isOpened) - { - return; - } - if (current.broken) - { - dialog->setSuggestedPack(); - return; - } - - QString editedLogoName = "technic_" + current.logoName.section(".", 0, 0); - model->getLogo(current.logoName, current.logoUrl, [this, editedLogoName](QString logo) - { - dialog->setSuggestedIconFromFile(logo, editedLogoName); - }); - - if (current.metadataLoaded) - { - metadataLoaded(); - return; - } - - NetJob *netJob = new NetJob(QString("Technic::PackMeta(%1)").arg(current.name)); - std::shared_ptr<QByteArray> response = std::make_shared<QByteArray>(); - QString slug = current.slug; - netJob->addNetAction(Net::Download::makeByteArray(QString("https://api.technicpack.net/modpack/%1?build=multimc").arg(slug), response.get())); - QObject::connect(netJob, &NetJob::succeeded, this, [this, response, slug] - { - if (current.slug != slug) - { - return; - } - QJsonParseError parse_error; - QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); - QJsonObject obj = doc.object(); - if(parse_error.error != QJsonParseError::NoError) - { - qWarning() << "Error while parsing JSON response from Technic at " << parse_error.offset << " reason: " << parse_error.errorString(); - qWarning() << *response; - return; - } - if (!obj.contains("url")) - { - qWarning() << "Json doesn't contain an url key"; - return; - } - QJsonValueRef url = obj["url"]; - if (url.isString()) - { - current.url = url.toString(); - } - else - { - if (!obj.contains("solder")) - { - qWarning() << "Json doesn't contain a valid url or solder key"; - return; - } - QJsonValueRef solderUrl = obj["solder"]; - if (solderUrl.isString()) - { - current.url = solderUrl.toString(); - current.isSolder = true; - } - else - { - qWarning() << "Json doesn't contain a valid url or solder key"; - return; - } - } - - current.minecraftVersion = Json::ensureString(obj, "minecraft", QString(), "__placeholder__"); - current.websiteUrl = Json::ensureString(obj, "platformUrl", QString(), "__placeholder__"); - current.author = Json::ensureString(obj, "user", QString(), "__placeholder__"); - current.description = Json::ensureString(obj, "description", QString(), "__placeholder__"); - current.metadataLoaded = true; - metadataLoaded(); - }); - netJob->start(); -} - -// expects current.metadataLoaded to be true -void TechnicPage::metadataLoaded() -{ - QString text = ""; - QString name = current.name; - - if (current.websiteUrl.isEmpty()) - // This allows injecting HTML here. - text = name; - else - // URL not properly escaped for inclusion in HTML. The name allows for injecting HTML. - text = "<a href=\"" + current.websiteUrl + "\">" + name + "</a>"; - if (!current.author.isEmpty()) { - // This allows injecting HTML here - text += tr(" by ") + current.author; - } - - ui->frame->setModText(text); - ui->frame->setModDescription(current.description); - if (!current.isSolder) - { - dialog->setSuggestedPack(current.name, new Technic::SingleZipPackInstallTask(current.url, current.minecraftVersion)); - } - else - { - while (current.url.endsWith('/')) current.url.chop(1); - dialog->setSuggestedPack(current.name, new Technic::SolderPackInstallTask(current.url + "/modpack/" + current.slug, current.minecraftVersion)); - } -} diff --git a/application/pages/modplatform/technic/TechnicPage.h b/application/pages/modplatform/technic/TechnicPage.h deleted file mode 100644 index 27e1258a..00000000 --- a/application/pages/modplatform/technic/TechnicPage.h +++ /dev/null @@ -1,78 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QWidget> - -#include "pages/BasePage.h" -#include <MultiMC.h> -#include "tasks/Task.h" -#include "TechnicData.h" - -namespace Ui -{ -class TechnicPage; -} - -class NewInstanceDialog; - -namespace Technic { - class ListModel; -} - -class TechnicPage : public QWidget, public BasePage -{ - Q_OBJECT - -public: - explicit TechnicPage(NewInstanceDialog* dialog, QWidget *parent = 0); - virtual ~TechnicPage(); - virtual QString displayName() const override - { - return tr("Technic"); - } - virtual QIcon icon() const override - { - return MMC->getThemedIcon("technic"); - } - virtual QString id() const override - { - return "technic"; - } - virtual QString helpPage() const override - { - return "Technic-platform"; - } - virtual bool shouldDisplay() const override; - - void openedImpl() override; - - bool eventFilter(QObject* watched, QEvent* event) override; - -private: - void suggestCurrent(); - void metadataLoaded(); - -private slots: - void triggerSearch(); - void onSelectionChanged(QModelIndex first, QModelIndex second); - -private: - Ui::TechnicPage *ui = nullptr; - NewInstanceDialog* dialog = nullptr; - Technic::ListModel* model = nullptr; - Technic::Modpack current; -}; diff --git a/application/pages/modplatform/technic/TechnicPage.ui b/application/pages/modplatform/technic/TechnicPage.ui deleted file mode 100644 index 2ca45dd2..00000000 --- a/application/pages/modplatform/technic/TechnicPage.ui +++ /dev/null @@ -1,95 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>TechnicPage</class> - <widget class="QWidget" name="TechnicPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>546</width> - <height>405</height> - </rect> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QWidget" name="widget" native="true"> - <layout class="QHBoxLayout" name="horizontalLayout"> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <widget class="QLineEdit" name="searchEdit"> - <property name="placeholderText"> - <string>Search and filter ...</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="searchButton"> - <property name="text"> - <string>Search</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QListView" name="packView"> - <property name="horizontalScrollBarPolicy"> - <enum>Qt::ScrollBarAlwaysOff</enum> - </property> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - <property name="iconSize"> - <size> - <width>48</width> - <height>48</height> - </size> - </property> - </widget> - </item> - <item> - <widget class="MCModInfoFrame" name="frame"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Minimum"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - </widget> - </item> - </layout> - </widget> - <customwidgets> - <customwidget> - <class>MCModInfoFrame</class> - <extends>QFrame</extends> - <header>widgets/MCModInfoFrame.h</header> - <container>1</container> - </customwidget> - </customwidgets> - <tabstops> - <tabstop>searchEdit</tabstop> - <tabstop>searchButton</tabstop> - <tabstop>packView</tabstop> - </tabstops> - <resources/> - <connections/> -</ui> diff --git a/application/resources/MultiMC.icns b/application/resources/MultiMC.icns Binary files differdeleted file mode 100644 index c4eb59d5..00000000 --- a/application/resources/MultiMC.icns +++ /dev/null diff --git a/application/resources/MultiMC.ico b/application/resources/MultiMC.ico Binary files differdeleted file mode 100644 index a86a1f0d..00000000 --- a/application/resources/MultiMC.ico +++ /dev/null diff --git a/application/resources/MultiMC.manifest b/application/resources/MultiMC.manifest deleted file mode 100644 index 9278f6e4..00000000 --- a/application/resources/MultiMC.manifest +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> - <assemblyIdentity name="MultiMC.Application.5" type="win32" version="5.0.0.0" /> - <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> - <security> - <requestedPrivileges> - <requestedExecutionLevel level="asInvoker" uiAccess="false"/> - </requestedPrivileges> - </security> - </trustInfo> - <dependency> - <dependentAssembly> - <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*"/> - </dependentAssembly> - </dependency> - <description>Custom Minecraft launcher for managing multiple installs.</description> - <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> - <application> - <!--The ID below indicates app support for Windows Vista --> - <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> - <!--The ID below indicates app support for Windows 7 --> - <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> - <!--The ID below indicates app support for Windows 8 --> - <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> - <!--The ID below indicates app support for Windows 8.1 --> - <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> - <!--The ID below indicates app support for Windows 10 --> - <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> - </application> - </compatibility> -</assembly>
\ No newline at end of file diff --git a/application/resources/OSX/OSX.qrc b/application/resources/OSX/OSX.qrc deleted file mode 100644 index 19fd4b6a..00000000 --- a/application/resources/OSX/OSX.qrc +++ /dev/null @@ -1,38 +0,0 @@ -<!DOCTYPE RCC> -<RCC version="1.0"> - <qresource prefix="/icons/OSX"> - <file>index.theme</file> - <file>scalable/about.svg</file> - <file>scalable/accounts.svg</file> - <file>scalable/bug.svg</file> - <file>scalable/centralmods.svg</file> - <file>scalable/checkupdate.svg</file> - <file>scalable/copy.svg</file> - <file>scalable/coremods.svg</file> - <file>scalable/externaltools.svg</file> - <file>scalable/help.svg</file> - <file>scalable/instance-settings.svg</file> - <file>scalable/jarmods.svg</file> - <file>scalable/java.svg</file> - <file>scalable/language.svg</file> - <file>scalable/loadermods.svg</file> - <file>scalable/log.svg</file> - <file>scalable/minecraft.svg</file> - <file>scalable/multimc.svg</file> - <file>scalable/new.svg</file> - <file>scalable/news.svg</file> - <file>scalable/notes.svg</file> - <file>scalable/patreon.svg</file> - <file>scalable/proxy.svg</file> - <file>scalable/quickmods.svg</file> - <file>scalable/refresh.svg</file> - <file>scalable/resourcepacks.svg</file> - <file>scalable/screenshots.svg</file> - <file>scalable/settings.svg</file> - <file>scalable/status-bad.svg</file> - <file>scalable/status-good.svg</file> - <file>scalable/status-yellow.svg</file> - <file>scalable/viewfolder.svg</file> - <file>scalable/worlds.svg</file> - </qresource> -</RCC> diff --git a/application/resources/OSX/index.theme b/application/resources/OSX/index.theme deleted file mode 100644 index 7f90a32e..00000000 --- a/application/resources/OSX/index.theme +++ /dev/null @@ -1,11 +0,0 @@ -[Icon Theme] -Name=OSX -Comment=OSX theme by pexner -Inherits=multimc -Directories=scalable - -[scalable] -Size=48 -Type=Scalable -MinSize=16 -MaxSize=256 diff --git a/application/resources/OSX/scalable/about.svg b/application/resources/OSX/scalable/about.svg deleted file mode 100644 index eb87ccf1..00000000 --- a/application/resources/OSX/scalable/about.svg +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill-rule="evenodd" clip-rule="evenodd" fill="none" width="32" height="32"/> -<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"/> -<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"/> -<g> - <polygon fill="#585858" points="17.2,20.2 17.2,15.2 14,15.2 14,16.5 15.2,16.5 15.2,20.2 14,20.2 14,21.5 18.5,21.5 18.5,20.2 - "/> - <g id="_x38__12_"> - <g> - <path fill="#585858" d="M16,9c-4.4,0-8,3.6-8,8c0,4.4,3.6,8,8,8s8-3.6,8-8C24,12.6,20.4,9,16,9z M16,24c-3.9,0-7-3.1-7-7 - c0-3.9,3.1-7,7-7s7,3.1,7,7C23,20.9,19.9,24,16,24z"/> - </g> - </g> - <circle fill="#585858" cx="16.2" cy="13.2" r="1"/> -</g> -</svg> diff --git a/application/resources/OSX/scalable/accounts.svg b/application/resources/OSX/scalable/accounts.svg deleted file mode 100644 index 163bcee0..00000000 --- a/application/resources/OSX/scalable/accounts.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve"> -<rect fill="none" width="24" height="24"/> -<g id="_x36__10_"> - <g> - <path fill="#585858" d="M21,12.2c0.6-0.9,1-2,1-3.2c0-2.8-2-5-4.5-5S13,6.2,13,9c0,1.2,0.4,2.3,1,3.2c-1.2,0.4-2,1.5-2,2.8v2 - c0,1.7,1.3,3,3,3h5c1.7,0,3-1.3,3-3v-2C23,13.7,22.2,12.6,21,12.2z"/> - </g> -</g> -<ellipse fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" cx="17.5" cy="9" rx="3.5" ry="4"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#CCCCCC" d="M22,15.2c0-1.1-0.8-1.9-1.9-2.2c-0.7,0.6-1.6,0.9-2.6,0.9 - c-1,0-1.9-0.3-2.6-0.9c-1.1,0.2-1.9,1.1-1.9,2.2v1.5c0,1.2,1.1,2.2,2.5,2.2h4.1c1.4,0,2.5-1,2.5-2.2V15.2z"/> -</svg> diff --git a/application/resources/OSX/scalable/bug.svg b/application/resources/OSX/scalable/bug.svg deleted file mode 100644 index 00565bb6..00000000 --- a/application/resources/OSX/scalable/bug.svg +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill-rule="evenodd" clip-rule="evenodd" fill="none" width="32" height="32"/> -<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"/> -<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"/> -<path fill="#585858" d="M23.5,18.9c0.3,0,0.5-0.2,0.5-0.5c0-0.3-0.2-0.5-0.5-0.5H21c0-0.1,0-0.2,0-0.3c0-0.4,0-0.7,0-1 - c0.7-0.1,1.2-0.4,1.6-0.9c1.3-1.5,0.9-4.4,0.9-4.5c0-0.3-0.3-0.4-0.5-0.4c-0.3,0-0.4,0.3-0.4,0.5c0,0,0.4,2.6-0.7,3.8 - c-0.3,0.3-0.6,0.5-1.1,0.6c-0.1-0.2-0.2-0.3-0.3-0.5c-0.2-0.2-0.4-0.3-0.7-0.4c0.2-0.3,0.4-0.6,0.4-1.1c0-1.2-0.8-2.2-2.1-2.8l0,0 - C17.9,9.8,17,9,16,9c-1,0-1.9,0.8-2,1.9l0,0v0c-1.3,0.6-2.1,1.6-2.1,2.8c0,0.5,0.1,0.8,0.4,1.1c-0.3,0.1-0.5,0.2-0.7,0.4 - c-0.1,0.1-0.2,0.3-0.3,0.5c-0.4-0.1-0.8-0.2-1.1-0.6c-1-1.2-0.7-3.7-0.7-3.8c0-0.3-0.1-0.5-0.4-0.5c-0.3,0-0.5,0.1-0.5,0.4 - c0,0.1-0.4,3,0.9,4.5c0.4,0.5,1,0.8,1.6,0.9c0,0.3,0,0.6,0,1c0,0.1,0,0.2,0,0.3H8.5c-0.3,0-0.5,0.2-0.5,0.5c0,0.3,0.2,0.5,0.5,0.5 - h2.6c0,0.6,0.1,1.2,0.3,1.7c-0.8,0.1-1.5,0.4-2,1c-1.1,1.2-0.9,3-0.9,3c0,0.2,0.2,0.4,0.5,0.4c0,0,0,0,0,0c0.3,0,0.5-0.3,0.4-0.5 - c0,0-0.1-1.4,0.7-2.3c0.4-0.4,0.9-0.6,1.6-0.7c0.9,1.8,2.5,3.1,4.3,3.1c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0c1.9,0,3.5-1.2,4.3-3.1 - c0.7,0,1.2,0.3,1.6,0.7c0.8,0.9,0.7,2.3,0.7,2.3c0,0.3,0.2,0.5,0.4,0.5c0,0,0,0,0,0c0.2,0,0.4-0.2,0.5-0.4c0-0.1,0.1-1.9-0.9-3 - c-0.5-0.5-1.1-0.9-1.9-1c0.2-0.5,0.3-1.1,0.3-1.7H23.5z M16,9.9c0.4,0,0.8,0.2,1,0.6c-0.1,0-0.2,0-0.3,0c-0.1,0-0.1,0-0.2,0 - c-0.2,0-0.4,0-0.5,0c-0.2,0-0.4,0-0.5,0c-0.1,0-0.1,0-0.2,0c-0.1,0-0.2,0-0.3,0C15.2,10.2,15.6,9.9,16,9.9z M12.8,13.7 - c0-0.9,0.7-1.7,1.8-2.1c0.9-0.3,2-0.3,2.9,0c1.1,0.4,1.8,1.2,1.8,2.1c0,0.5-0.1,0.8-1.6,0.8c-0.5,0-1,0-1.6,0c0,0,0,0,0,0 - c0,0,0,0,0,0c0,0,0,0,0,0c-0.6,0-1.1,0-1.6,0C13,14.5,12.8,14.2,12.8,13.7z M16.5,23.6v-5.1c0-0.3-0.2-0.5-0.5-0.5s-0.5,0.2-0.5,0.5 - v5.1c-2-0.3-3.5-2.5-3.5-5.1c0-0.3,0-0.6,0-0.9c0-0.9,0-1.5,0.2-1.7c0.3-0.3,1.1-0.4,2.3-0.5c0.2,0,0.4,0,0.7,0c0.6,0,1.2,0,1.7,0 - c0.3,0,0.5,0,0.8,0c1.2,0,1.9,0.2,2.2,0.5c0.3,0.3,0.2,0.8,0.2,1.7c0,0.2,0,0.5,0,0.8c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0.1 - C20,21.1,18.5,23.3,16.5,23.6z"/> -</svg> diff --git a/application/resources/OSX/scalable/centralmods.svg b/application/resources/OSX/scalable/centralmods.svg deleted file mode 100644 index 37b821e4..00000000 --- a/application/resources/OSX/scalable/centralmods.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill-rule="evenodd" clip-rule="evenodd" fill="none" width="32" height="32"/> -<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"/> -<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"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#585858" d="M22,25H10c-1.1,0-2-0.9-2-2V11c0-1.1,0.9-2,2-2h3c1.1,0,2,0.9,2,2 - h7c1.1,0,2,0.9,2,2v10C24,24.1,23.1,25,22,25z M9,23c0,0.6,0.4,1,1,1h12c0.6,0,1-0.4,1-1V13c0-0.6-0.4-1-1-1h-8v-1c0-0.6-0.4-1-1-1 - h-3c-0.6,0-1,0.4-1,1V23z"/> -<g> - <path fill="#585858" d="M19,23l-3-1.6L13,23l0.6-3.5l-2.4-2.4l3.3-0.5l1.5-3.2l1.5,3.2l3.3,0.5l-2.4,2.4L19,23z M13.3,17.8l1.4,1.4 - l-0.3,1.9l1.7-0.9l1.7,0.9l-0.3-1.9l1.4-1.4l-1.9-0.3L16,15.8l-0.8,1.7L13.3,17.8z"/> -</g> -</svg> diff --git a/application/resources/OSX/scalable/checkupdate.svg b/application/resources/OSX/scalable/checkupdate.svg deleted file mode 100644 index 30cec51f..00000000 --- a/application/resources/OSX/scalable/checkupdate.svg +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill-rule="evenodd" clip-rule="evenodd" fill="none" width="32" height="32"/> -<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"/> -<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"/> -<g> - <g id="_x37__9_"> - <g> - <path fill="#585858" d="M18.9,21.7c-0.2-0.2-0.5-0.2-0.7,0l-1.6,1.6v-6.8c0-0.3-0.2-0.5-0.5-0.5c-0.3,0-0.5,0.2-0.5,0.5v6.8 - l-1.6-1.6c-0.2-0.2-0.5-0.2-0.7,0c-0.2,0.2-0.2,0.5,0,0.7l2.5,2.5C15.7,25,15.9,25,16,25c0.1,0,0.3,0,0.4-0.1l2.5-2.5 - C19.1,22.2,19.1,21.9,18.9,21.7z"/> - </g> - </g> - <path fill="#585858" d="M18,19.5h2.5c1.3-0.8,2.6-2.1,2.5-3.5c-0.1-1.6-1.8-3.6-4.2-3.5C18.4,11,17.2,10,15.5,10 - c-2.2,0-3.5,1.9-3.5,4c-1.7,0.1-3,1.5-3,3c0,2.7,3,2.5,3,2.5s2,0,2,0c0.3,0,0.5,0.2,0.5,0.5s-0.2,0.5-0.5,0.5l-2,0 - c-2.2-0.1-4-1.4-4-3.5c0-1.8,1.3-3.3,3-3.8c0.2-2.3,2.1-4.2,4.5-4.2c1.8,0,3.3,1,4,2.5c2.5,0.1,4.5,2.2,4.5,4.7 - c0,1.9-1.8,3.5-3.5,4.2H18c-0.3,0-0.5-0.2-0.5-0.5S17.7,19.5,18,19.5z"/> -</g> -</svg> diff --git a/application/resources/OSX/scalable/copy.svg b/application/resources/OSX/scalable/copy.svg deleted file mode 100644 index 7382d6e2..00000000 --- a/application/resources/OSX/scalable/copy.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill-rule="evenodd" clip-rule="evenodd" fill="none" width="32" height="32"/> -<path fill="#B6B5B6" d="M29.9,28.4h-28c-1.1,0-2-0.9-2-2v-18c0-1.1,0.9-2,2-2h28c1.1,0,2,0.9,2,2v18C31.9,27.5,31,28.4,29.9,28.4z" - /> -<path fill="#FBFBFB" d="M29.9,27.4h-28c-1.1,0-2-0.9-2-2v-17c0-1.1,0.9-2,2-2h28c1.1,0,2,0.9,2,2v17C31.9,26.5,31,27.4,29.9,27.4z" - /> -<g id="_x33__11_"> - <g> - <path fill="#585858" d="M17.9,13.4h-8c-1.1,0-2,0.9-2,2v8c0,1.1,0.9,2,2,2h8c1.1,0,2-0.9,2-2v-8C19.9,14.3,19,13.4,17.9,13.4z - M18.9,23.4c0,0.6-0.4,1-1,1h-8c-0.6,0-1-0.4-1-1v-8c0-0.6,0.4-1,1-1h8c0.6,0,1,0.4,1,1V23.4z M21.9,9.4h-8c-1.1,0-2,0.9-2,2v1h1 - v-1c0-0.6,0.4-1,1-1h8c0.6,0,1,0.4,1,1v8c0,0.6-0.4,1-1,1h-1v1h1c1.1,0,2-0.9,2-2v-8C23.9,10.3,23,9.4,21.9,9.4z"/> - </g> -</g> -</svg> diff --git a/application/resources/OSX/scalable/coremods.svg b/application/resources/OSX/scalable/coremods.svg deleted file mode 100644 index b0df6052..00000000 --- a/application/resources/OSX/scalable/coremods.svg +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve"> -<circle fill-rule="evenodd" clip-rule="evenodd" fill="#E6E6E6" cx="14.9" cy="12.4" r="7"/> -<polygon fill="#FFFFFF" points="12.2,11.5 13.5,13 13.2,14.9 14.9,14 16.5,14.9 16.2,13 17.6,11.5 15.7,11.3 14.9,9.5 14.1,11.3 "/> -<rect fill="none" width="24" height="24"/> -<g> - <g id="_x38__4_"> - <g> - <path fill="#585858" d="M14.9,4.4c-4.4,0-8,3.6-8,8c0,4.4,3.6,8,8,8s8-3.6,8-8C22.9,8,19.3,4.4,14.9,4.4z M14.9,19.4 - c-3.9,0-7-3.1-7-7c0-3.9,3.1-7,7-7s7,3.1,7,7C21.9,16.2,18.7,19.4,14.9,19.4z"/> - </g> - </g> - <g> - <path fill="#585858" d="M17.8,16.8l-3-1.6l-3,1.6l0.6-3.5l-2.4-2.4l3.3-0.5l1.5-3.2l1.5,3.2l3.3,0.5l-2.4,2.4L17.8,16.8z - M12.2,11.5l1.4,1.4l-0.3,1.9l1.7-0.9l1.7,0.9L16.2,13l1.4-1.4l-1.9-0.3l-0.8-1.7l-0.8,1.7L12.2,11.5z"/> - </g> -</g> -</svg> diff --git a/application/resources/OSX/scalable/externaltools.svg b/application/resources/OSX/scalable/externaltools.svg deleted file mode 100644 index a2b7488e..00000000 --- a/application/resources/OSX/scalable/externaltools.svg +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve"> -<rect fill="none" width="24" height="24"/> -<g id="_x35__1_"> - <g> - <path fill="#585858" d="M9.5,9.5C9.8,9.5,10,9.2,10,9l0-2.4l7.6,7.3c0.2,0.2,0.5,0.2,0.7,0c0.2-0.2,0.2-0.5,0-0.7L10.8,6L13,6 - c0.3,0,0.5-0.2,0.5-0.5S13.3,5,13,5H9.5C9.2,5,9,5.2,9,5.5V9C9,9.2,9.2,9.5,9.5,9.5z M21,5h-5.5v1H21c0.5,0,1,0.5,1,1l0,10 - c0,0.5-0.4,1-1,1l-10,0c-0.5,0-1-0.5-1-1v-5.5H9V17c0,1.1,1.1,2,2.2,2H21c1.1,0,2-0.9,2-2V7.2C23,6.1,22.1,5,21,5z"/> - </g> -</g> -</svg> diff --git a/application/resources/OSX/scalable/help.svg b/application/resources/OSX/scalable/help.svg deleted file mode 100644 index 9d1b367c..00000000 --- a/application/resources/OSX/scalable/help.svg +++ /dev/null @@ -1,51 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xml:space="preserve" - enable-background="new 0 0 32 32" - viewBox="0 0 32 32" - y="0px" - x="0px" - id="Calque_1" - version="1.1"><metadata - id="metadata24"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs22" /><rect - id="rect2" - height="32" - width="32" - fill="none" - clip-rule="evenodd" - fill-rule="evenodd" /><path - id="path4" - 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" - fill="#B6B5B6" /><path - id="path6" - 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" - fill="#FBFBFB" /><g - id="g854"><g - id="g861" - transform="matrix(0.51850737,0,0,0.51850737,29.410453,7.662064)" - style="fill:#585858;fill-opacity:1"><g - id="text832" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:27.34714317px;line-height:85.45981598px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L';letter-spacing:0px;word-spacing:0px;fill:#585858;fill-opacity:1;stroke:none;stroke-width:3.4183929px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - aria-label="?"><path - id="path855" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Monofonto;-inkscape-font-specification:Monofonto;fill:#585858;fill-opacity:1;stroke-width:3.4183929px" - d="m -20.968435,13.920532 c 0,0.6381 -0.07293,1.239737 -0.218777,1.804911 -0.145852,0.565174 -0.401092,1.066538 -0.76572,1.504093 -0.401092,0.492249 -0.774836,0.902456 -1.121233,1.230621 -0.346397,0.328166 -0.656332,0.6381 -0.929803,0.929803 -0.25524,0.273471 -0.464902,0.556059 -0.628985,0.847762 -0.145851,0.291703 -0.218777,0.656331 -0.218777,1.093885 v 0.38286 h -3.144921 V 20.72997 c 0,-0.601637 0.136736,-1.221505 0.410207,-1.859605 0.273471,-0.656332 0.756604,-1.285316 1.449399,-1.886953 0.346397,-0.309935 0.638099,-0.583406 0.875108,-0.820415 0.237009,-0.25524 0.428439,-0.492248 0.57429,-0.711025 0.145851,-0.237009 0.246124,-0.483133 0.300819,-0.738373 0.05469,-0.273471 0.08204,-0.57429 0.08204,-0.902456 0,-0.528711 -0.12762,-0.984497 -0.38286,-1.367357 -0.237009,-0.401091 -0.656331,-0.601637 -1.257968,-0.601637 -1.057423,0 -1.640829,0.692794 -1.750218,2.078383 h -3.06288 c 0.01823,-0.747489 0.145853,-1.431167 0.38286,-2.051036 0.237009,-0.6381 0.565175,-1.185043 0.984498,-1.640829 0.419323,-0.474017 0.920687,-0.8386455 1.504092,-1.0938855 0.601637,-0.25524 1.2762,-0.38286 2.023689,-0.38286 0.838646,0 1.567903,0.1367357 2.187771,0.4102072 0.619869,0.25524 1.130349,0.6198684 1.53144,1.0938853 0.401092,0.455786 0.692795,1.002729 0.875109,1.640829 0.200546,0.619869 0.300819,1.294432 0.30082,2.023689 z" /></g><circle - id="circle6-6" - r="1.8" - cy="25.466606" - cx="-26.38899" - style="fill:#585858;fill-opacity:1" /></g><g - id="g17"><g - id="_x38__12_"><g - id="g12"><path - d="M16,9c-4.4,0-8,3.6-8,8c0,4.4,3.6,8,8,8s8-3.6,8-8C24,12.6,20.4,9,16,9z M16,24c-3.9,0-7-3.1-7-7 c0-3.9,3.1-7,7-7s7,3.1,7,7C23,20.9,19.9,24,16,24z" - id="path10" - fill="#585858" /></g></g></g></g></svg>
\ No newline at end of file diff --git a/application/resources/OSX/scalable/instance-settings.svg b/application/resources/OSX/scalable/instance-settings.svg deleted file mode 100644 index 394877f8..00000000 --- a/application/resources/OSX/scalable/instance-settings.svg +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve"> -<rect fill="none" width="24" height="24"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M22,6c0-0.6-0.4-1-1-1H9C8.4,5,8,5.4,8,6v12c0,0.6,0.4,1,1,1h12 - c0.6,0,1-0.4,1-1V6z"/> -<g id="_x32__10_"> - <g> - <path fill="#585858" d="M20,16h-5.6c-0.2-0.9-1-1.5-1.9-1.5s-1.7,0.6-1.9,1.5H10c-0.3,0-0.5,0.2-0.5,0.5c0,0.3,0.2,0.5,0.5,0.5 - h0.6c0.2,0.9,1,1.5,1.9,1.5s1.7-0.6,1.9-1.5H20c0.3,0,0.5-0.2,0.5-0.5C20.5,16.2,20.3,16,20,16z M12.5,17.7 - c-0.7,0-1.2-0.5-1.2-1.2s0.5-1.2,1.2-1.2s1.2,0.5,1.2,1.2S13.2,17.7,12.5,17.7z M21,4H9C7.9,4,7,4.9,7,6v12c0,1.1,0.9,2,2,2h12 - c1.1,0,2-0.9,2-2V6C23,4.9,22.1,4,21,4z M22,18c0,0.6-0.4,1-1,1H9c-0.6,0-1-0.4-1-1V6c0-0.6,0.4-1,1-1h12c0.6,0,1,0.4,1,1V18z - M20,8h-5.6c-0.2-0.9-1-1.5-1.9-1.5S10.8,7.1,10.6,8H10C9.7,8,9.5,8.2,9.5,8.5C9.5,8.8,9.7,9,10,9h0.6c0.2,0.9,1,1.5,1.9,1.5 - s1.7-0.6,1.9-1.5H20c0.3,0,0.5-0.2,0.5-0.5C20.5,8.2,20.3,8,20,8z M12.5,9.7c-0.7,0-1.2-0.5-1.2-1.2c0-0.7,0.5-1.2,1.2-1.2 - s1.2,0.5,1.2,1.2C13.7,9.2,13.2,9.7,12.5,9.7z M20,12h-1.1c-0.2-0.9-1-1.5-1.9-1.5s-1.7,0.6-1.9,1.5H10c-0.3,0-0.5,0.2-0.5,0.5 - c0,0.3,0.2,0.5,0.5,0.5h5.1c0.2,0.9,1,1.5,1.9,1.5s1.7-0.6,1.9-1.5H20c0.3,0,0.5-0.2,0.5-0.5C20.5,12.2,20.3,12,20,12z M17,13.7 - c-0.7,0-1.2-0.5-1.2-1.2c0-0.7,0.5-1.2,1.2-1.2s1.2,0.5,1.2,1.2C18.2,13.2,17.7,13.7,17,13.7z"/> - </g> -</g> -<circle fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" cx="12.5" cy="16.5" r="1.2"/> -<circle fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" cx="17" cy="12.5" r="1.2"/> -<circle fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" cx="12.5" cy="8.5" r="1.2"/> -</svg> diff --git a/application/resources/OSX/scalable/jarmods.svg b/application/resources/OSX/scalable/jarmods.svg deleted file mode 100644 index 213ec833..00000000 --- a/application/resources/OSX/scalable/jarmods.svg +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve"> -<rect fill="none" width="24" height="24"/> -<g> - <g> - <g> - <path fill="#585858" d="M17.2,18.4h-5.4l-2.8-6.1L9.4,12c0,0,1-0.8,2.2-0.9c0.3,0,0.5,0.2,0.5,0.5c0,0.3-0.2,0.5-0.5,0.5 - c-0.6,0-1,0.3-1.3,0.5l2.2,4.8h4.1l2.4-5.1c0.3-0.8,1.1-1.2,2-1.1c0.9,0.2,1.4,0.9,1.4,1.7c-0.1,1.8-1.4,2.4-1.4,2.4 - c-0.3,0.1-0.6,0-0.7-0.3c-0.1-0.3,0-0.6,0.3-0.7c0,0,0.7-0.4,0.8-1.6c0-0.4-0.3-0.6-0.6-0.6c-0.1,0-0.6-0.1-0.8,0.4l0,0 - L17.2,18.4z"/> - </g> - <path fill="#585858" d="M21.6,17.4c-0.3,0-0.5,0.2-0.5,0.5c0,0.4-2.2,1.5-6.6,1.5S8,18.3,8,17.9c0-0.3,0.7-0.7,2.2-1l-0.4-0.9 - C8.1,16.3,7,17,7,17.9c0,1.7,3.9,2.5,7.6,2.5s7.6-0.8,7.6-2.5C22.1,17.6,21.9,17.4,21.6,17.4z"/> - <g> - <rect x="10.4" y="13.3" fill="#585858" width="8.2" height="1"/> - </g> - <g> - <rect x="11.3" y="15.3" fill="#585858" width="6.6" height="1"/> - </g> - </g> - <g> - <g> - <polygon fill="#999999" points="18,12.4 15.5,11 13,12.4 13.5,9.5 11.5,7.4 14.2,7 15.5,4.4 16.7,7 19.5,7.4 17.5,9.5 "/> - </g> - </g> -</g> -</svg> diff --git a/application/resources/OSX/scalable/java.svg b/application/resources/OSX/scalable/java.svg deleted file mode 100644 index e1aee159..00000000 --- a/application/resources/OSX/scalable/java.svg +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve"> -<rect fill="none" width="24" height="24"/> -<g> - <g> - <path fill="#585858" d="M18,18.2h-5.3l-2.8-6.1l0.3-0.2c0,0,1-0.8,2.2-0.9c0.3,0,0.5,0.2,0.5,0.5c0,0.3-0.2,0.5-0.5,0.5 - c-0.6,0-1,0.3-1.3,0.5l2.2,4.8h4l2.3-5.1c0.3-0.8,1.1-1.2,1.9-1.1c0.9,0.2,1.4,0.9,1.4,1.7c-0.1,1.8-1.3,2.4-1.4,2.4 - c-0.3,0.1-0.6,0-0.7-0.3c-0.1-0.3,0-0.6,0.3-0.7c0,0,0.7-0.4,0.8-1.5c0-0.4-0.3-0.6-0.6-0.6c-0.1,0-0.6-0.1-0.8,0.4l0,0L18,18.2z" - /> - </g> - <g> - <path fill="#999999" d="M14.9,11.4c-0.1,0-0.3-0.1-0.4-0.2c-1-1.1-1.5-2.4-1.4-3.3c0.1-0.9,1.1-2.6,3-3.6c0.2-0.1,0.6,0,0.7,0.2 - c0.1,0.2,0,0.6-0.2,0.7C15,5.9,14.1,7.4,14.1,8c-0.1,0.5,0.3,1.5,1.2,2.6c0.2,0.2,0.2,0.5,0,0.7C15.1,11.4,15,11.4,14.9,11.4z"/> - </g> - <g> - <path fill="#999999" d="M16.5,12.5c-0.1,0-0.2,0-0.3-0.1c-0.2-0.2-0.3-0.5-0.1-0.7c0.1-0.1,0.2-0.2,0.3-0.3 - c0.5-0.4,0.5-0.6,0.3-0.9c0-0.1-0.2-0.2-0.3-0.3c-0.4-0.5-1.1-1.1-1.1-2c0-1,1.1-2,3.7-3.4c0.2-0.1,0.6,0,0.7,0.2 - c0.1,0.2,0,0.6-0.2,0.7c-2.8,1.6-3.1,2.3-3.1,2.5c0,0.4,0.5,0.9,0.8,1.3c0.2,0.2,0.3,0.3,0.4,0.4c0.7,1.1-0.1,1.8-0.4,2.2 - c-0.1,0.1-0.1,0.1-0.2,0.2C16.8,12.4,16.7,12.5,16.5,12.5z"/> - </g> - <path fill="#585858" d="M22.3,17.2c-0.3,0-0.5,0.2-0.5,0.5c0,0.4-2.2,1.5-6.5,1.5s-6.5-1-6.5-1.5c0-0.2,0.7-0.7,2.1-1l-0.4-0.9 - c-1.6,0.4-2.7,1-2.7,2c0,1.7,3.9,2.5,7.5,2.5s7.5-0.8,7.5-2.5C22.8,17.4,22.6,17.2,22.3,17.2z"/> - <g> - <rect x="11.2" y="13.2" fill="#585858" width="8.2" height="1"/> - </g> - <g> - <rect x="12" y="15.2" fill="#585858" width="6.6" height="1"/> - </g> -</g> -</svg> diff --git a/application/resources/OSX/scalable/language.svg b/application/resources/OSX/scalable/language.svg deleted file mode 100644 index 4f7d002a..00000000 --- a/application/resources/OSX/scalable/language.svg +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - 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"><metadata - id="metadata22"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs20" /><path - fill-rule="evenodd" - clip-rule="evenodd" - fill="#E6E6E6" - d="M21,20H9c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h12c1.1,0,2,0.9,2,2 v12C23,19.1,22.1,20,21,20z" - id="path2" /><rect - fill="none" - width="24" - height="24" - id="rect4" /><g - id="_x36__8_"><g - id="g8"><path - d="M 21,4 H 9 C 7.9,4 7,4.9 7,6 v 12 c 0,1.1 0.9,2 2,2 h 12 c 1.1,0 2,-0.9 2,-2 V 6 C 23,4.9 22.1,4 21,4 Z m 1,14 -1,1 H 9 L 8,18 V 6 C 8,5.4 8.4,5 9,5 h 12 c 0.6,0 1,0.4 1,1 z" - id="path6" - style="fill:#585858" /></g></g><circle - cx="-3.8492424" - cy="11.559504" - r="1" - id="circle11" - style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd" /><path - d="m 10.985086,8.5301236 c -0.285244,0 -0.531238,0.2015787 -0.587348,0.480998 L 9.2012867,14.998205 c -0.064883,0.324431 0.1450781,0.638482 0.4689122,0.703366 0.3279037,0.0672 0.6390781,-0.145078 0.7033681,-0.468911 l 0.384313,-1.91432 h 1.69195 l 0.381898,1.91432 c 0.06544,0.328662 0.388374,0.53424 0.705784,0.468911 0.323873,-0.06488 0.533795,-0.378935 0.468912,-0.703366 L 12.809973,9.0111216 c -0.05611,-0.2794193 -0.302101,-0.480998 -0.587347,-0.480998 z m 0.362559,1.3487256 h 0.256212 l 0.478579,2.3953168 h -1.21337 z m 6.429409,-1.5928481 c -0.330857,0 -0.599434,0.2698964 -0.599434,0.6018494 v 0.5994329 h -1.795884 c -0.330855,0 -0.597015,0.269898 -0.597015,0.6018506 0,0.331951 0.266159,0.599434 0.597015,0.599434 h 0.161945 c 0.340555,1.096391 0.840589,1.953495 1.401899,2.629772 -0.439717,0.403341 -0.871563,0.734012 -1.339055,1.104601 -0.25779,0.207035 -0.298799,0.58673 -0.09185,0.845975 0.205993,0.258844 0.58387,0.299404 0.841141,0.09185 0.507959,-0.402258 0.944446,-0.738141 1.421237,-1.177114 0.476792,0.438973 0.95437,0.774856 1.462328,1.177114 0.257273,0.207554 0.635147,0.166994 0.841141,-0.09185 0.206952,-0.259245 0.163525,-0.63894 -0.09426,-0.845975 -0.467495,-0.370589 -0.938012,-0.70126 -1.377731,-1.104601 0.561312,-0.676317 1.102396,-1.53342 1.442991,-2.629772 h 0.159526 c 0.330857,0 0.599433,-0.267483 0.599433,-0.599434 0,-0.3319526 -0.268576,-0.6018506 -0.599433,-0.6018506 H 18.376487 V 8.8878505 c 0,-0.331953 -0.268576,-0.6018494 -0.599433,-0.6018494 z m -0.983747,2.4025669 h 2.006168 c -0.25847,0.696576 -0.641961,1.260479 -1.022421,1.74029 -0.380459,-0.479811 -0.725279,-1.043674 -0.983747,-1.74029 z" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#585858;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.7126205;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect977" /></svg>
\ No newline at end of file diff --git a/application/resources/OSX/scalable/loadermods.svg b/application/resources/OSX/scalable/loadermods.svg deleted file mode 100644 index 76951ebd..00000000 --- a/application/resources/OSX/scalable/loadermods.svg +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve"> -<rect fill="none" width="24" height="24"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#585858" d="M22,6c0-0.6-0.4-1-1-1H9C8.4,5,8,5.4,8,6v12c0,0.6,0.4,1,1,1h12 - c0.6,0,1-0.4,1-1V6z M21,20H9c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h12c1.1,0,2,0.9,2,2v12C23,19.1,22.1,20,21,20z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#E6E6E6" d="M22,6c0-0.6-0.4-1-1-1H9C8.4,5,8,5.4,8,6v12c0,0.6,0.4,1,1,1h12 - c0.6,0,1-0.4,1-1V6z"/> -<polygon fill="#585858" points="18,16.3 15,14.7 12,16.3 12.6,12.8 10.2,10.4 13.5,9.9 15,6.7 16.5,9.9 19.8,10.4 17.4,12.8 "/> -<polygon fill="#FFFFFF" points="12.3,11.1 13.7,12.5 13.3,14.4 15,13.5 16.7,14.4 16.3,12.5 17.7,11.1 15.8,10.8 15,9.1 14.2,10.8 - "/> -</svg> diff --git a/application/resources/OSX/scalable/log.svg b/application/resources/OSX/scalable/log.svg deleted file mode 100644 index 0ac45d54..00000000 --- a/application/resources/OSX/scalable/log.svg +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve"> -<rect fill="none" width="24" height="24"/> -<g id="_x37__11_"> - <g> - <path fill="#585858" d="M21,4c0,0-2.9,0.8-5.5,1.5c-0.3,0-0.7,0-1,0C12,4.8,9,4,9,4C7.9,4,7,4.9,7,6v10.5c0,1.1,0.9,1.7,2,2 - c0,0,2.7,0.8,5.5,1.5h1c2.8-0.8,5.5-1.5,5.5-1.5c1-0.3,2-0.9,2-2V6C23,4.9,22.1,4,21,4z M14.5,19C11.8,18.3,9,17.5,9,17.5 - c-0.6-0.2-1-0.4-1-1V6c0-0.6,0.4-1,1-1l5.5,1.5V19z M22,16.5c0,0.6-0.5,0.8-1,1c0,0-2.7,0.8-5.5,1.5V6.5L21,5c0.6,0,1,0.4,1,1 - V16.5z"/> - </g> -</g> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#E6E6E6" d="M9,5C8.4,5,8,5.4,8,6v10.5c0,0.6,0.4,0.8,1,1c0,0,2.8,0.8,5.5,1.5 - V6.5L9,5z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M22,6c0-0.6-0.4-1-1-1l-5.5,1.5V19c2.8-0.7,5.5-1.5,5.5-1.5 - c0.5-0.2,1-0.4,1-1V6z"/> -</svg> diff --git a/application/resources/OSX/scalable/minecraft.svg b/application/resources/OSX/scalable/minecraft.svg deleted file mode 100644 index 86c915bc..00000000 --- a/application/resources/OSX/scalable/minecraft.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve"> -<rect fill="none" width="24" height="24"/> -<path fill="#585858" d="M15.9,4.4l-7,3.6v8.9l7,3.6l7-3.6V7.9L15.9,4.4z M21.2,8.2l-5.3,2.7l-5.3-2.7l5.3-2.7L21.2,8.2z M9.9,9 - l5.5,2.8V19l-5.5-2.8V9z M16.4,19v-7.2L21.9,9v7.2L16.4,19z"/> -<polygon fill="#FFFFFF" points="21.2,8.2 15.9,10.9 10.5,8.2 15.9,5.5 "/> -<polygon fill="#F2F2F2" points="9.9,9 15.4,11.8 15.4,19 9.9,16.2 "/> -<polygon fill="#CCCCCC" points="16.4,19 16.4,11.8 21.9,9 21.9,16.2 "/> -</svg> diff --git a/application/resources/OSX/scalable/multimc.svg b/application/resources/OSX/scalable/multimc.svg deleted file mode 100644 index caad21b5..00000000 --- a/application/resources/OSX/scalable/multimc.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve"> -<path fill="#585858" d="M6.9,4.4v16h16v-16H6.9z M21.9,5.4l0,14h-14v-14H21.9z"/> -<rect fill="none" width="24" height="24"/> -<rect x="7.9" y="5.4" fill="#F2F2F2" width="14" height="14"/> -<polygon fill="#999999" points="7.9,7.4 7.9,6.9 8.9,6.9 8.9,7.9 9.9,7.9 9.9,7.4 10.9,7.4 10.9,8.9 11.9,8.9 11.9,6.4 12.9,6.4 - 12.9,7.4 13.9,7.4 13.9,6.9 14.9,6.9 14.9,8.9 15.9,8.9 15.9,7.4 16.9,7.4 16.9,8.4 17.9,8.4 17.9,7.4 18.9,7.4 18.9,6.9 19.9,6.9 - 19.9,7.4 21.4,7.4 21.4,6.9 21.9,6.9 21.9,7.4 22.9,7.4 22.9,4.4 6.9,4.4 6.9,7.4 "/> -<g> - <path fill="#585858" d="M14.9,13.6c-0.9,0.9-1.9,2-3.4,2c-1.5,0-2.6-1.1-2.6-2.7c0-1.4,1.2-2.7,2.8-2.7c1.3,0,2.4,1.1,3.2,2 - c0.9-0.9,1.9-2,3.4-2c1.6,0,2.6,1.1,2.6,2.7c0,1.4-1.2,2.7-2.8,2.7C16.7,15.6,15.7,14.5,14.9,13.6z M14.1,12.9 - c-0.7-0.7-1.5-1.6-2.5-1.6c-0.9,0-1.6,0.7-1.6,1.6c0,0.9,0.7,1.6,1.6,1.6C12.6,14.5,13.4,13.6,14.1,12.9z M19.7,12.9 - c0-0.9-0.7-1.6-1.5-1.6c-1,0-1.9,0.9-2.6,1.6c0.7,0.7,1.5,1.6,2.5,1.6C19,14.5,19.7,13.7,19.7,12.9z"/> -</g> -</svg> diff --git a/application/resources/OSX/scalable/new.svg b/application/resources/OSX/scalable/new.svg deleted file mode 100644 index 79ee87ba..00000000 --- a/application/resources/OSX/scalable/new.svg +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill-rule="evenodd" clip-rule="evenodd" fill="none" width="32" height="32"/> -<path fill="#B6B5B6" d="M29.9,28.4h-28c-1.1,0-2-0.9-2-2v-18c0-1.1,0.9-2,2-2h28c1.1,0,2,0.9,2,2v18C31.9,27.5,31,28.4,29.9,28.4z" - /> -<path fill="#FBFBFB" d="M29.9,27.4h-28c-1.1,0-2-0.9-2-2v-17c0-1.1,0.9-2,2-2h28c1.1,0,2,0.9,2,2v17C31.9,26.5,31,27.4,29.9,27.4z" - /> -<g id="_x31__5_"> - <g> - <path fill="#585858" d="M18.9,16.9h-2.5v-2.5c0-0.3-0.2-0.5-0.5-0.5s-0.5,0.2-0.5,0.5v2.5h-2.5c-0.3,0-0.5,0.2-0.5,0.5 - c0,0.3,0.2,0.5,0.5,0.5h2.5v2.5c0,0.3,0.2,0.5,0.5,0.5s0.5-0.2,0.5-0.5v-2.5h2.5c0.3,0,0.5-0.2,0.5-0.5 - C19.4,17.1,19.1,16.9,18.9,16.9z M21.9,9.4h-12c-1.1,0-2,0.9-2,2v12c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2v-12 - C23.9,10.3,23,9.4,21.9,9.4z M22.9,23.4c0,0.6-0.4,1-1,1h-12c-0.6,0-1-0.4-1-1v-12c0-0.6,0.4-1,1-1h12c0.6,0,1,0.4,1,1V23.4z"/> - </g> -</g> -</svg> diff --git a/application/resources/OSX/scalable/news.svg b/application/resources/OSX/scalable/news.svg deleted file mode 100644 index b8ce3cd1..00000000 --- a/application/resources/OSX/scalable/news.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v14c0,1.1,0.9,2,2,2h1.3 - l2.7,4l2.7-4H26c1.1,0,2-0.9,2-2V6z"/> -<g> - <path fill-rule="evenodd" clip-rule="evenodd" fill="#585858" d="M26,26H14l-4,6l-4-6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20 - c3.3,0,6,2.7,6,6v14C32,23.3,29.3,26,26,26z M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v14c0,1.1,0.9,2,2,2h1.3l2.7,4l2.7-4H26 - c1.1,0,2-0.9,2-2V6z"/> - <rect x="8" y="12" fill-rule="evenodd" clip-rule="evenodd" fill="#585858" width="16" height="2"/> - <rect x="8" y="8" fill-rule="evenodd" clip-rule="evenodd" fill="#585858" width="16" height="2"/> - <rect x="8" y="16" fill-rule="evenodd" clip-rule="evenodd" fill="#585858" width="8" height="2"/> -</g> -</svg> diff --git a/application/resources/OSX/scalable/notes.svg b/application/resources/OSX/scalable/notes.svg deleted file mode 100644 index c2e95cfd..00000000 --- a/application/resources/OSX/scalable/notes.svg +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve"> -<rect fill="none" width="24" height="24"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#E6E6E6" d="M22,7c0-0.6-0.4-1-1-1h-1.5v2h-7V6H11c-0.6,0-1,0.4-1,1v10 - c0,0.6,0.4,1,1,1h10c0.6,0,1-0.4,1-1V7z"/> -<g id="_x38__6_"> - <g> - <path fill="#585858" d="M19.5,15h-7c-0.3,0-0.5,0.2-0.5,0.5c0,0.3,0.2,0.5,0.5,0.5h7c0.3,0,0.5-0.2,0.5-0.5 - C20,15.2,19.8,15,19.5,15z M21,5h-1.5V4h-1.3c-0.4-0.6-1.2-1-2.2-1s-1.7,0.4-2.2,1h-1.3v1H11C9.9,5,9,5.9,9,7v10c0,1.1,0.9,2,2,2 - h10c1.1,0,2-0.9,2-2V7C23,5.9,22.1,5,21,5z M13.5,5h1.1c0-0.6,0.6-1,1.4-1s1.4,0.4,1.4,1h1.1v2h-5V5z M22,17c0,0.6-0.4,1-1,1H11 - c-0.6,0-1-0.4-1-1V7c0-0.6,0.4-1,1-1h1.5v2h7V6H21c0.6,0,1,0.4,1,1V17z M19.5,12.5h-7c-0.3,0-0.5,0.2-0.5,0.5 - c0,0.3,0.2,0.5,0.5,0.5h7c0.3,0,0.5-0.2,0.5-0.5C20,12.7,19.8,12.5,19.5,12.5z M19.5,10h-7c-0.3,0-0.5,0.2-0.5,0.5 - c0,0.3,0.2,0.5,0.5,0.5h7c0.3,0,0.5-0.2,0.5-0.5C20,10.2,19.8,10,19.5,10z"/> - </g> -</g> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" d="M18.5,5h-1.1c0-0.6-0.6-1-1.4-1c-0.8,0-1.4,0.4-1.4,1h-1.1v2h5V5z" - /> -</svg> diff --git a/application/resources/OSX/scalable/patreon.svg b/application/resources/OSX/scalable/patreon.svg deleted file mode 100644 index 4f0da3e5..00000000 --- a/application/resources/OSX/scalable/patreon.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill-rule="evenodd" clip-rule="evenodd" fill="none" width="32" height="32"/> -<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"/> -<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"/> -<g> - <rect x="8" y="9" fill="none" width="16" height="16"/> - <path fill="#585858" d="M16,8.3c-4.4,0-8,3.6-8,8v8h1.9v-1.9V20v-3.7c0-3.4,2.8-6.1,6.1-6.1c3.4,0,6.1,2.8,6.1,6.1 - c0,3.3-2.6,6-5.9,6.1c-1,0-1.9-0.2-2.3-0.4v-2.6c0.6,0.4,1.3,0.6,2,0.6c2,0,3.7-1.6,3.7-3.7c0-2-1.6-3.7-3.7-3.7 - c-2,0-3.7,1.6-3.7,3.7v8h3.3c0.1,0,0.2,0,0.3,0c4.4,0,8-3.6,8-8S20.4,8.3,16,8.3z"/> -</g> -</svg> diff --git a/application/resources/OSX/scalable/proxy.svg b/application/resources/OSX/scalable/proxy.svg deleted file mode 100644 index 99acaa2b..00000000 --- a/application/resources/OSX/scalable/proxy.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve"> -<rect fill="none" width="24" height="24"/> -<path fill="#585858" d="M20.1,10.1c-0.8,0-1.5,0.4-1.9,0.9l-4.7-3c0.1-0.3,0.2-0.6,0.2-0.9c0-1.4-1.1-2.5-2.5-2.5S8.6,5.7,8.6,7.1 - s1.1,2.5,2.5,2.5c0.7,0,1.3-0.3,1.8-0.8l4.8,3.1c-0.1,0.2-0.1,0.4-0.1,0.7c0,0.2,0,0.5,0.1,0.7l-4.8,3.1c-0.5-0.5-1.1-0.8-1.8-0.8 - c-1.4,0-2.5,1.1-2.5,2.5s1.1,2.5,2.5,2.5s2.5-1.1,2.5-2.5c0-0.3-0.1-0.6-0.2-0.9l4.7-3c0.5,0.6,1.1,0.9,1.9,0.9 - c1.4,0,2.5-1.1,2.5-2.5S21.5,10.1,20.1,10.1z M11.1,8.6c-0.8,0-1.5-0.7-1.5-1.5s0.7-1.5,1.5-1.5s1.5,0.7,1.5,1.5S11.9,8.6,11.1,8.6z - M11.1,19.6c-0.8,0-1.5-0.7-1.5-1.5s0.7-1.5,1.5-1.5s1.5,0.7,1.5,1.5S11.9,19.6,11.1,19.6z M20.1,14.1c-0.8,0-1.5-0.7-1.5-1.5 - s0.7-1.5,1.5-1.5s1.5,0.7,1.5,1.5S20.9,14.1,20.1,14.1z"/> -<circle fill="#FFFFFF" cx="11.1" cy="7.1" r="1.5"/> -<circle fill="#FFFFFF" cx="11.1" cy="18.1" r="1.5"/> -<circle fill="#FFFFFF" cx="20.1" cy="12.6" r="1.5"/> -</svg> diff --git a/application/resources/OSX/scalable/quickmods.svg b/application/resources/OSX/scalable/quickmods.svg deleted file mode 100644 index e0aaad87..00000000 --- a/application/resources/OSX/scalable/quickmods.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve"> -<rect fill="none" width="24" height="24"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#E6E6E6" d="M22,6c0-0.6-0.4-1-1-1H9C8.4,5,8,5.4,8,6v12c0,0.6,0.4,1,1,1h12 - c0.6,0,1-0.4,1-1V6z"/> -<polygon fill="#FFFFFF" points="12.5,8.1 12.5,15.9 18.6,12 "/> -<g> - <path fill-rule="evenodd" clip-rule="evenodd" fill="#585858" d="M21,20H9c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h12c1.1,0,2,0.9,2,2 - v12C23,19.1,22.1,20,21,20z M22,6c0-0.6-0.4-1-1-1H9C8.4,5,8,5.4,8,6v12c0,0.6,0.4,1,1,1h12c0.6,0,1-0.4,1-1V6z"/> - <g> - <path fill="#585858" d="M12.3,17c-0.4,0-0.8-0.3-0.8-0.9V7.9c0-0.6,0.4-0.9,0.8-0.9c0.2,0,0.4,0.1,0.5,0.2l6.5,4.1 - c0.3,0.2,0.4,0.4,0.4,0.7s-0.2,0.6-0.4,0.7l-6.5,4.1C12.7,16.9,12.5,17,12.3,17z M12.5,8.1l0,7.7l6.1-3.9L12.5,8.1z"/> - </g> -</g> -</svg> diff --git a/application/resources/OSX/scalable/refresh.svg b/application/resources/OSX/scalable/refresh.svg deleted file mode 100644 index c97489c1..00000000 --- a/application/resources/OSX/scalable/refresh.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill-rule="evenodd" clip-rule="evenodd" fill="none" width="32" height="32"/> -<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"/> -<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"/> -<g id="_x32__12_"> - <g> - <path fill="#585858" d="M19.9,10h3.6c0.3,0,0.5-0.2,0.5-0.5C24,9.2,23.8,9,23.5,9h-5C18.4,9,18,9,18,9.5v5c0,0.3,0.2,0.5,0.5,0.5 - s0.5-0.2,0.5-0.5v-3.8c2.4,1.1,4,3.5,4,6.3c0,3.9-3.1,7-7,7s-7-3.1-7-7c0-3.5,2.6-6.4,6-6.9v-1c-3.9,0.5-7,3.9-7,7.9 - c0,4.4,3.6,8,8,8s8-3.6,8-8C24,14,22.3,11.4,19.9,10z"/> - </g> -</g> -</svg> diff --git a/application/resources/OSX/scalable/resourcepacks.svg b/application/resources/OSX/scalable/resourcepacks.svg deleted file mode 100644 index c85d4e3c..00000000 --- a/application/resources/OSX/scalable/resourcepacks.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve"> -<rect fill="none" width="24" height="24"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#E6E6E6" d="M22,17c0,0.6-0.4,1-1,1H9c-0.6,0-1-0.4-1-1v-5.5h5.1 - c0,0.2-0.1,0.3-0.1,0.5c0,1.1,0.9,2,2,2s2-0.9,2-2c0-0.2,0-0.3-0.1-0.5H22V17z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#E6E6E6" d="M22,10.5H8V8c0-0.6,0.4-1,1-1h12c0.6,0,1,0.4,1,1V10.5z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#585858" d="M21,6h-3V5c0-0.6-0.4-1-1-1h-4c-0.6,0-1,0.4-1,1v1H9 - C7.9,6,7,6.9,7,8v9c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2V8C23,6.9,22.1,6,21,6z M13,5.5C13,5.2,13.2,5,13.5,5h3C16.8,5,17,5.2,17,5.5 - V6c-0.3,0-3.7,0-4,0V5.5z M22,17c0,0.6-0.4,1-1,1H9c-0.6,0-1-0.4-1-1v-5.5h5.1c0,0.2-0.1,0.3-0.1,0.5c0,1.1,0.9,2,2,2s2-0.9,2-2 - c0-0.2,0-0.3-0.1-0.5H22V17z M14,12c0-0.2,0.1-0.4,0.1-0.5h1.7c0.1,0.1,0.1,0.3,0.1,0.5c0,0.6-0.4,1-1,1S14,12.6,14,12z M22,10.5H8 - V8c0-0.6,0.4-1,1-1h12c0.6,0,1,0.4,1,1V10.5z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" d="M14,12c0-0.2,0.1-0.4,0.1-0.5h1.7c0.1,0.1,0.1,0.3,0.1,0.5 - c0,0.6-0.4,1-1,1S14,12.6,14,12z"/> -</svg> diff --git a/application/resources/OSX/scalable/screenshots.svg b/application/resources/OSX/scalable/screenshots.svg deleted file mode 100644 index 12df0c88..00000000 --- a/application/resources/OSX/scalable/screenshots.svg +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#E6E6E6" d="M21,20H9c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h12c1.1,0,2,0.9,2,2 - v12C23,19.1,22.1,20,21,20z"/> -<rect fill="none" width="24" height="24"/> -<g id="_x36__8_"> - <g> - <path fill="#585858" d="M21,4H9C7.9,4,7,4.9,7,6v12c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2V6C23,4.9,22.1,4,21,4z M22,12.6l-3-3.1 - l-5,5.1l-2-2.1l-4,3.7V6c0-0.6,0.4-1,1-1h12c0.6,0,1,0.4,1,1V12.6z M11,6C9.9,6,9,6.9,9,8c0,1.1,0.9,2,2,2s2-0.9,2-2 - C13,6.9,12.1,6,11,6z M11,9c-0.6,0-1-0.4-1-1c0-0.6,0.4-1,1-1s1,0.4,1,1C12,8.6,11.6,9,11,9z"/> - </g> -</g> -<circle fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" cx="11" cy="8" r="1"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#999999" d="M21,19c0.6,0,1-0.4,1-1v-4l-3-3l-4.3,4.3l3.7,3.7H21z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#999999" d="M8,18c0,0.6,0.4,1,1,1h8l-5-5l-4,3.6V18z"/> -</svg> diff --git a/application/resources/OSX/scalable/settings.svg b/application/resources/OSX/scalable/settings.svg deleted file mode 100644 index dcdd9f1c..00000000 --- a/application/resources/OSX/scalable/settings.svg +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill-rule="evenodd" clip-rule="evenodd" fill="none" width="32" height="32"/> -<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"/> -<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"/> -<g id="_x31__16_"> - <g> - <path fill="#585858" d="M23,18.3l-1.2-0.7c0.1-0.4,0.1-0.7,0.1-1.1c0-0.4,0-0.7-0.1-1.1l1.2-0.7c0.5-0.3,0.6-0.9,0.4-1.4l-1-1.7 - c-0.3-0.5-0.9-0.6-1.4-0.4L19.9,12c-0.5-0.5-1.2-0.9-1.9-1.1V10c0-0.6-0.4-1-1-1h-2c-0.5,0-1,0.4-1,1v0.8 - c-0.7,0.2-1.3,0.6-1.9,1.1L11,11.3c-0.5-0.3-1.1-0.1-1.4,0.4l-1,1.7c-0.3,0.5-0.1,1.1,0.4,1.4l1.2,0.7c-0.1,0.4-0.1,0.7-0.1,1.1 - c0,0.4,0,0.7,0.1,1.1L9,18.3c-0.5,0.3-0.6,0.9-0.4,1.4l1,1.7c0.3,0.5,0.9,0.6,1.4,0.4l1.2-0.7c0.5,0.5,1.2,0.9,1.9,1.1V23 - c0,0.6,0.4,1,1,1h2c0.5,0,1-0.4,1-1v-0.8c0.7-0.2,1.3-0.6,1.9-1.1l1.2,0.7c0.5,0.3,1.1,0.1,1.4-0.4l1-1.7 - C23.6,19.2,23.5,18.5,23,18.3z M22.3,19.6l-0.5,0.9c-0.1,0.2-0.4,0.3-0.7,0.2l-1.4-0.8c-0.7,0.8-1.6,1.4-2.7,1.6v1.1 - c0,0.3-0.2,0.5-0.5,0.5h-1c-0.3,0-0.5-0.2-0.5-0.5v-1.1c-1.1-0.2-2-0.8-2.7-1.6l-1.4,0.8c-0.2,0.1-0.5,0.1-0.7-0.2l-0.5-0.9 - c-0.1-0.2-0.1-0.5,0.2-0.7l1.4-0.8c-0.2-0.5-0.3-1-0.3-1.6s0.1-1.1,0.3-1.6l-1.4-0.8c-0.2-0.1-0.3-0.4-0.2-0.7l0.5-0.9 - c0.1-0.2,0.4-0.3,0.7-0.2l1.4,0.8c0.7-0.8,1.6-1.4,2.7-1.6v-1.1c0-0.3,0.2-0.5,0.5-0.5h1c0.3,0,0.5,0.2,0.5,0.5v1.1 - c1.1,0.2,2,0.8,2.7,1.6l1.4-0.8c0.2-0.1,0.5-0.1,0.7,0.2l0.5,0.9c0.1,0.2,0.1,0.5-0.2,0.7l-1.4,0.8c0.2,0.5,0.3,1,0.3,1.6 - s-0.1,1.1-0.3,1.6l1.4,0.8C22.3,19,22.4,19.3,22.3,19.6z M16,14c-1.4,0-2.5,1.1-2.5,2.5c0,1.4,1.1,2.5,2.5,2.5s2.5-1.1,2.5-2.5 - C18.5,15.1,17.4,14,16,14z M16,18c-0.8,0-1.5-0.7-1.5-1.5c0-0.8,0.7-1.5,1.5-1.5s1.5,0.7,1.5,1.5C17.5,17.3,16.8,18,16,18z"/> - </g> -</g> -</svg> diff --git a/application/resources/OSX/scalable/status-bad.svg b/application/resources/OSX/scalable/status-bad.svg deleted file mode 100644 index add7a6f7..00000000 --- a/application/resources/OSX/scalable/status-bad.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#F2F2F2" d="M28,6c0-1.2-0.8-2-2-2H6C4.8,4,4,4.8,4,6v20c0,1.2,0.8,2,2,2h20c1.2,0,2-0.8,2-2V6z"/> -<path fill="#585858" d="M26,32H6c-3.4,0-6-2.6-6-6V6c0-3.4,2.6-6,6-6h20c3.4,0,6,2.6,6,6v20C32,29.4,29.4,32,26,32z M28,6 - c0-1.2-0.8-2-2-2H6C4.8,4,4,4.8,4,6v20c0,1.2,0.8,2,2,2h20c1.2,0,2-0.8,2-2V6z M21.6,21.6c-0.8,0.8-2,0.8-2.8,0L16,18.8l-2.8,2.8 - c-0.8,0.8-2,0.8-2.8,0c-0.8-0.8-0.8-2,0-2.8l2.8-2.8l-2.8-2.8c-0.8-0.8-0.8-2,0-2.8c0.8-0.8,2-0.8,2.8,0l2.8,2.8l2.8-2.8 - c0.8-0.8,2-0.8,2.8,0s0.8,2,0,2.8L18.8,16l2.8,2.8C22.4,19.6,22.4,20.8,21.6,21.6z"/> -</svg> diff --git a/application/resources/OSX/scalable/status-good.svg b/application/resources/OSX/scalable/status-good.svg deleted file mode 100644 index f10da757..00000000 --- a/application/resources/OSX/scalable/status-good.svg +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#F2F2F2" d="M28,26c0,1.2-0.8,2-2,2H6c-1.2,0-2-0.8-2-2V6c0-1.2,0.8-2,2-2h20c1.2,0,2,0.8,2,2V26z"/> -<g> - <path fill="none" d="M26,0H6C2.6,0,0,2.6,0,6v20c0,3.4,2.6,6,6,6h20c3.4,0,6-2.6,6-6V6C32,2.6,29.4,0,26,0z M28,26c0,1.2-0.8,2-2,2 - H6c-1.2,0-2-0.8-2-2V6c0-1.2,0.8-2,2-2h20c1.2,0,2,0.8,2,2V26z M21,10.4l-7,7l-2.8-2.8c-0.8-0.8-2-0.8-2.8,0s-0.8,2,0,2.8l4.2,4.2 - c0.8,0.8,2,0.8,2.8,0l8.4-8.4c0.8-0.8,0.8-2,0-2.8S21.8,9.6,21,10.4z"/> -</g> -<g> - <g> - <path fill="#585858" d="M26,0H6C2.6,0,0,2.6,0,6v20c0,3.4,2.6,6,6,6h20c3.4,0,6-2.6,6-6V6C32,2.6,29.4,0,26,0z M28,26 - c0,1.2-0.8,2-2,2H6c-1.2,0-2-0.8-2-2V6c0-1.2,0.8-2,2-2h20c1.2,0,2,0.8,2,2V26z M21,10.4l-7,7l-2.8-2.8c-0.8-0.8-2-0.8-2.8,0 - s-0.8,2,0,2.8l4.2,4.2c0.8,0.8,2,0.8,2.8,0l8.4-8.4c0.8-0.8,0.8-2,0-2.8S21.8,9.6,21,10.4z"/> - </g> -</g> -</svg> diff --git a/application/resources/OSX/scalable/status-yellow.svg b/application/resources/OSX/scalable/status-yellow.svg deleted file mode 100644 index fba697bc..00000000 --- a/application/resources/OSX/scalable/status-yellow.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <path fill="#E3A333" d="M26,0H6C2.7,0,0,2.7,0,6v20c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V6C32,2.7,29.3,0,26,0z M28,26 - c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2V26z"/> -</g> -<path fill="#585858" d="M26,0H6C2.7,0,0,2.7,0,6v20c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V6C32,2.7,29.3,0,26,0z"/> -<path fill="#F2F2F2" d="M28,26c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2V26z"/> -<g> - <path fill="#585858" d="M6,20c0-5.8,2.4-7.9,5.8-7.9c2,0,3.4,0.7,5.3,1.9c1.6,1,2.5,1.5,3.3,1.5c0.7,0,1.2-0.7,1.3-3.1H26 - c0.2,6.1-2.3,8-5.5,8c-2,0-3.5-0.8-5.3-1.9c-1.7-1-2.6-1.6-3.3-1.6c-0.8,0-1.4,0.5-1.6,3.2H6z"/> -</g> -</svg> diff --git a/application/resources/OSX/scalable/viewfolder.svg b/application/resources/OSX/scalable/viewfolder.svg deleted file mode 100644 index 682c72c7..00000000 --- a/application/resources/OSX/scalable/viewfolder.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill-rule="evenodd" clip-rule="evenodd" fill="none" width="32" height="32"/> -<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"/> -<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"/> -<g id="_x36__6_"> - <g> - <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"/> - </g> -</g> -</svg> diff --git a/application/resources/OSX/scalable/worlds.svg b/application/resources/OSX/scalable/worlds.svg deleted file mode 100644 index b1491272..00000000 --- a/application/resources/OSX/scalable/worlds.svg +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xml:space="preserve" - enable-background="new 0 0 24 24" - viewBox="0 0 24 24" - y="0px" - x="0px" - id="Calque_1" - version="1.1"><metadata - id="metadata22"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs20" /><path - id="path2" - d="M21,20H9c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h12c1.1,0,2,0.9,2,2 v12C23,19.1,22.1,20,21,20z" - fill="#E6E6E6" - clip-rule="evenodd" - fill-rule="evenodd" /><rect - id="rect4" - height="24" - width="24" - fill="none" /><g - id="_x36__8_"><g - id="g8"><path - style="fill:#585858" - id="path6" - d="M 21,4 H 9 C 7.9,4 7,4.9 7,6 v 12 c 0,1.1 0.9,2 2,2 h 12 c 1.1,0 2,-0.9 2,-2 V 6 C 23,4.9 22.1,4 21,4 Z m 1,14 -1,1 H 9 L 8,18 V 6 C 8,5.4 8.4,5 9,5 h 12 c 0.6,0 1,0.4 1,1 z" /></g></g><circle - style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd" - id="circle11" - r="1" - cy="11.559504" - cx="-3.8492424" /><g - style="stroke:#585858;stroke-width:1.55746377;stroke-opacity:1" - transform="matrix(0.55621145,0.32075232,-0.32075232,0.55621145,11.232654,-2.0314203)" - id="g881"><ellipse - ry="8.9473686" - rx="8.9473696" - cy="16" - cx="16" - id="path845" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#585858;stroke-width:1.55746377;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /><ellipse - ry="8.9473686" - rx="3.4915254" - cy="15.947369" - cx="16" - id="path845-3" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#585858;stroke-width:1.55746377;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /><path - style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#585858;stroke-width:1.55746377;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="M 8.1848294,12.430327 C 12.570183,14.790801 20.662272,13.548526 23.355,11.76263" - id="path870" /><path - id="path872" - d="M 8.2166335,20.492522 C 12.601987,18.132048 21.148735,17.776739 23.841463,19.562635" - style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#585858;stroke-width:1.55746377;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /></g></svg>
\ No newline at end of file diff --git a/application/resources/assets/underconstruction.png b/application/resources/assets/underconstruction.png Binary files differdeleted file mode 100644 index 6ae06476..00000000 --- a/application/resources/assets/underconstruction.png +++ /dev/null diff --git a/application/resources/backgrounds/backgrounds.qrc b/application/resources/backgrounds/backgrounds.qrc deleted file mode 100644 index 83505635..00000000 --- a/application/resources/backgrounds/backgrounds.qrc +++ /dev/null @@ -1,7 +0,0 @@ -<!DOCTYPE RCC> -<RCC version="1.0"> - <qresource prefix="/backgrounds"> - <file alias="kitteh">catbgrnd2.png</file> - <file alias="catmas">catmas.png</file> - </qresource> -</RCC> diff --git a/application/resources/backgrounds/catbgrnd2.png b/application/resources/backgrounds/catbgrnd2.png Binary files differdeleted file mode 100644 index e9de7f27..00000000 --- a/application/resources/backgrounds/catbgrnd2.png +++ /dev/null diff --git a/application/resources/backgrounds/catmas.png b/application/resources/backgrounds/catmas.png Binary files differdeleted file mode 100644 index 8bdb1d5c..00000000 --- a/application/resources/backgrounds/catmas.png +++ /dev/null diff --git a/application/resources/documents/documents.qrc b/application/resources/documents/documents.qrc deleted file mode 100644 index 007efcde..00000000 --- a/application/resources/documents/documents.qrc +++ /dev/null @@ -1,7 +0,0 @@ -<!DOCTYPE RCC> -<RCC version="1.0"> - <qresource prefix="/documents"> - <file>../../../COPYING.md</file> - </qresource> -</RCC> - diff --git a/application/resources/flat/flat.qrc b/application/resources/flat/flat.qrc deleted file mode 100644 index b6e2ee38..00000000 --- a/application/resources/flat/flat.qrc +++ /dev/null @@ -1,45 +0,0 @@ -<!DOCTYPE RCC> -<RCC version="1.0"> - <qresource prefix="/icons/flat"> - <file>index.theme</file> - <file>scalable/about.svg</file> - <file>scalable/accounts.svg</file> - <file>scalable/bug.svg</file> - <file>scalable/cat.svg</file> - <file>scalable/centralmods.svg</file> - <file>scalable/checkupdate.svg</file> - <file>scalable/copy.svg</file> - <file>scalable/coremods.svg</file> - <file>scalable/discord.svg</file> - <file>scalable/externaltools.svg</file> - <file>scalable/help.svg</file> - <file>scalable/instance-settings.svg</file> - <file>scalable/jarmods.svg</file> - <file>scalable/java.svg</file> - <file>scalable/language.svg</file> - <file>scalable/loadermods.svg</file> - <file>scalable/log.svg</file> - <file>scalable/minecraft.svg</file> - <file>scalable/multimc.svg</file> - <file>scalable/new.svg</file> - <file>scalable/news.svg</file> - <file>scalable/notes.svg</file> - <file>scalable/packages.svg</file> - <file>scalable/patreon.svg</file> - <file>scalable/proxy.svg</file> - <file>scalable/quickmods.svg</file> - <file>scalable/reddit-alien.svg</file> - <file>scalable/refresh.svg</file> - <file>scalable/resourcepacks.svg</file> - <file>scalable/screenshot-placeholder.svg</file> - <file>scalable/screenshots.svg</file> - <file>scalable/settings.svg</file> - <file>scalable/star.svg</file> - <file>scalable/status-bad.svg</file> - <file>scalable/status-good.svg</file> - <file>scalable/status-running.svg</file> - <file>scalable/status-yellow.svg</file> - <file>scalable/viewfolder.svg</file> - <file>scalable/worlds.svg</file> - </qresource> -</RCC> diff --git a/application/resources/flat/index.theme b/application/resources/flat/index.theme deleted file mode 100644 index 34e27aa0..00000000 --- a/application/resources/flat/index.theme +++ /dev/null @@ -1,11 +0,0 @@ -[Icon Theme] -Name=Flat -Comment=Flat icons -Inherits=multimc -Directories=scalable - -[scalable] -Size=48 -Type=Scalable -MinSize=16 -MaxSize=256 diff --git a/application/resources/flat/scalable/about.svg b/application/resources/flat/scalable/about.svg deleted file mode 100644 index 4f85045d..00000000 --- a/application/resources/flat/scalable/about.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/accounts.svg b/application/resources/flat/scalable/accounts.svg deleted file mode 100644 index e6a1328d..00000000 --- a/application/resources/flat/scalable/accounts.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M16,13C15.71,13 15.38,13 15.03,13.05C16.19,13.89 17,15 17,16.5V19H23V16.5C23,14.17 18.33,13 16,13M8,13C5.67,13 1,14.17 1,16.5V19H15V16.5C15,14.17 10.33,13 8,13M8,11A3,3 0 0,0 11,8A3,3 0 0,0 8,5A3,3 0 0,0 5,8A3,3 0 0,0 8,11M16,11A3,3 0 0,0 19,8A3,3 0 0,0 16,5A3,3 0 0,0 13,8A3,3 0 0,0 16,11Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/bug.svg b/application/resources/flat/scalable/bug.svg deleted file mode 100644 index ea370faa..00000000 --- a/application/resources/flat/scalable/bug.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M20 8h-2.81c-.45-.78-1.07-1.45-1.82-1.96L17 4.41 15.59 3l-2.17 2.17C12.96 5.06 12.49 5 12 5c-.49 0-.96.06-1.41.17L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.34-.04-.67-.09-1H20V8zm-6 8h-4v-2h4v2zm0-4h-4v-2h4v2z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/cat.svg b/application/resources/flat/scalable/cat.svg deleted file mode 100644 index e90763b5..00000000 --- a/application/resources/flat/scalable/cat.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M12,8L10.67,8.09C9.81,7.07 7.4,4.5 5,4.5C5,4.5 3.03,7.46 4.96,11.41C4.41,12.24 4.07,12.67 4,13.66L2.07,13.95L2.28,14.93L4.04,14.67L4.18,15.38L2.61,16.32L3.08,17.21L4.53,16.32C5.68,18.76 8.59,20 12,20C15.41,20 18.32,18.76 19.47,16.32L20.92,17.21L21.39,16.32L19.82,15.38L19.96,14.67L21.72,14.93L21.93,13.95L20,13.66C19.93,12.67 19.59,12.24 19.04,11.41C20.97,7.46 19,4.5 19,4.5C16.6,4.5 14.19,7.07 13.33,8.09L12,8M9,11A1,1 0 0,1 10,12A1,1 0 0,1 9,13A1,1 0 0,1 8,12A1,1 0 0,1 9,11M15,11A1,1 0 0,1 16,12A1,1 0 0,1 15,13A1,1 0 0,1 14,12A1,1 0 0,1 15,11M11,14H13L12.3,15.39C12.5,16.03 13.06,16.5 13.75,16.5A1.5,1.5 0 0,0 15.25,15H15.75A2,2 0 0,1 13.75,17C13,17 12.35,16.59 12,16V16H12C11.65,16.59 11,17 10.25,17A2,2 0 0,1 8.25,15H8.75A1.5,1.5 0 0,0 10.25,16.5C10.94,16.5 11.5,16.03 11.7,15.39L11,14Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/centralmods.svg b/application/resources/flat/scalable/centralmods.svg deleted file mode 100644 index c694662a..00000000 --- a/application/resources/flat/scalable/centralmods.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-2.06 11L15 15.28 12.06 17l.78-3.33-2.59-2.24 3.41-.29L15 8l1.34 3.14 3.41.29-2.59 2.24.78 3.33z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/checkupdate.svg b/application/resources/flat/scalable/checkupdate.svg deleted file mode 100644 index e6525a08..00000000 --- a/application/resources/flat/scalable/checkupdate.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M21 10.12h-6.78l2.74-2.82c-2.73-2.7-7.15-2.8-9.88-.1-2.73 2.71-2.73 7.08 0 9.79 2.73 2.71 7.15 2.71 9.88 0C18.32 15.65 19 14.08 19 12.1h2c0 1.98-.88 4.55-2.64 6.29-3.51 3.48-9.21 3.48-12.72 0-3.5-3.47-3.53-9.11-.02-12.58 3.51-3.47 9.14-3.47 12.65 0L21 3v7.12zM12.5 8v4.25l3.5 2.08-.72 1.21L11 13V8h1.5z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/copy.svg b/application/resources/flat/scalable/copy.svg deleted file mode 100644 index 36986e0d..00000000 --- a/application/resources/flat/scalable/copy.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-1 9h-4v4h-2v-4H9V9h4V5h2v4h4v2z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/coremods.svg b/application/resources/flat/scalable/coremods.svg deleted file mode 100644 index 21a3450e..00000000 --- a/application/resources/flat/scalable/coremods.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M22,12A10,10,0,1,1,12,2,10,10,0,0,1,22,12ZM12,4a8,8,0,1,0,8,8A8,8,0,0,0,12,4Zm4.23,14-1.12-4.82,3.73-3.23-4.92-.42L12,5,10.08,9.54,5.16,10l3.73,3.23L7.77,18,12,15.45,16.23,18"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/discord.svg b/application/resources/flat/scalable/discord.svg deleted file mode 100644 index ad63180f..00000000 --- a/application/resources/flat/scalable/discord.svg +++ /dev/null @@ -1,4 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M10.14,11.63a1.15,1.15,0,1,0,1,1.14A1.1,1.1,0,0,0,10.14,11.63Zm3.75,0a1.15,1.15,0,1,0,1,1.14A1.1,1.1,0,0,0,13.89,11.63Z"/> - <path d="M18.89,3H5.11A2.11,2.11,0,0,0,3,5.12V19a2.11,2.11,0,0,0,2.11,2.12H16.77l-.55-1.9,1.32,1.22,1.24,1.15,2.21,2V5.12A2.11,2.11,0,0,0,18.89,3Zm-4,13.43s-.37-.44-.68-.83a3.25,3.25,0,0,0,1.86-1.22,5.89,5.89,0,0,1-1.18.61,6.77,6.77,0,0,1-1.49.44,7.21,7.21,0,0,1-2.66,0A8.63,8.63,0,0,1,9.25,15a6,6,0,0,1-.75-.35l-.09-.05,0,0-.29-.17a3.2,3.2,0,0,0,1.8,1.21l-.69.85a3.73,3.73,0,0,1-3.14-1.56,13.77,13.77,0,0,1,1.48-6,5.09,5.09,0,0,1,2.89-1.08l.1.12A6.94,6.94,0,0,0,7.82,9.26s.23-.12.61-.3a7.72,7.72,0,0,1,2.33-.65l.17,0a8.7,8.7,0,0,1,2.08,0,8.38,8.38,0,0,1,3.1,1A6.85,6.85,0,0,0,13.55,8l.14-.16a5.09,5.09,0,0,1,2.89,1.08,13.77,13.77,0,0,1,1.48,6A3.76,3.76,0,0,1,14.92,16.43Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/externaltools.svg b/application/resources/flat/scalable/externaltools.svg deleted file mode 100644 index 55820dfc..00000000 --- a/application/resources/flat/scalable/externaltools.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M22.7,19L13.6,9.9C14.5,7.6 14,4.9 12.1,3C10.1,1 7.1,0.6 4.7,1.7L9,6L6,9L1.6,4.7C0.4,7.1 0.9,10.1 2.9,12.1C4.8,14 7.5,14.5 9.8,13.6L18.9,22.7C19.3,23.1 19.9,23.1 20.3,22.7L22.6,20.4C23.1,20 23.1,19.3 22.7,19Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/help.svg b/application/resources/flat/scalable/help.svg deleted file mode 100644 index 26d5d7f4..00000000 --- a/application/resources/flat/scalable/help.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - id="svg4" - version="1.1" - width="24" - viewBox="0 0 24 24" - height="24" - fill="#757575"> - <path - d="m 15.07,11.25 -0.9,0.92 C 13.45,12.89 13,13.5 13,15 h -2 v -0.5 c 0,-1.11 0.45,-2.11 1.17,-2.83 l 1.24,-1.26 C 13.78,10.049999 14,9.549999 14,9 14,7.89 13.100001,7 12,7 A 2,2 0 0 0 10,9 H 7.9999995 A 4,4 0 0 1 12,5 4,4 0 0 1 16,9 c 0,0.879999 -0.36,1.67 -0.93,2.25 M 13,19 h -2 v -2 h 2 M 12,2 A 10,10 0 0 0 1.9999995,12 10,10 0 0 0 12,22 10,10 0 0 0 22,12 C 22,6.47 17.5,2 12,2 Z" - id="path817" /> -</svg> diff --git a/application/resources/flat/scalable/instance-settings.svg b/application/resources/flat/scalable/instance-settings.svg deleted file mode 100644 index dd9d86ed..00000000 --- a/application/resources/flat/scalable/instance-settings.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/jarmods.svg b/application/resources/flat/scalable/jarmods.svg deleted file mode 100644 index db90fa34..00000000 --- a/application/resources/flat/scalable/jarmods.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M2,21H20V19H2M20,8H18V5h2m0-2H4V13a4,4,0,0,0,4,4h6a4,4,0,0,0,4-4V10h2a2,2,0,0,0,2-2V5A2,2,0,0,0,20,3ZM11,4.43l1.62,3.29,3.63.53-2.63,2.56.62,3.62L11,12.72,7.75,14.43l.62-3.62L5.74,8.25l3.63-.53Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/java.svg b/application/resources/flat/scalable/java.svg deleted file mode 100644 index dc19ee23..00000000 --- a/application/resources/flat/scalable/java.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M2,21H20V19H2M20,8H18V5H20M20,3H4V13A4,4 0 0,0 8,17H14A4,4 0 0,0 18,13V10H20A2,2 0 0,0 22,8V5C22,3.89 21.1,3 20,3Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/language.svg b/application/resources/flat/scalable/language.svg deleted file mode 100644 index f4d3f2f4..00000000 --- a/application/resources/flat/scalable/language.svg +++ /dev/null @@ -1,103 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - fill="#757575" - height="24" - viewBox="0 0 24 24" - width="24" - version="1.1" - id="svg4" - sodipodi:docname="language.svg" - inkscape:version="0.92.2 2405546, 2018-03-11"> - <metadata - id="metadata10"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <defs - id="defs8"> - - - - - - - - - - - - - - - - - - - - - - - </defs> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="3840" - inkscape:window-height="2123" - id="namedview6" - showgrid="true" - showguides="true" - inkscape:guide-bbox="true" - inkscape:zoom="6.9532167" - inkscape:cx="-18.49351" - inkscape:cy="-12.477971" - inkscape:window-x="1200" - inkscape:window-y="0" - inkscape:window-maximized="1" - inkscape:current-layer="svg4"> - <inkscape:grid - type="xygrid" - id="grid981" /> - <sodipodi:guide - position="-8,11.440678" - orientation="1,0" - id="guide1060" - inkscape:locked="false" /> - <sodipodi:guide - position="-28.34375,24" - orientation="0,1" - id="guide1062" - inkscape:locked="false" /> - </sodipodi:namedview> - <path - d="M 5,3 C 3.89,3 3,3.89 3,5 v 14 c 0,1.104569 0.895431,2 2,2 h 14 c 1.104569,0 2,-0.895431 2,-2 V 5 C 21,3.89 20.1,3 19,3 Z m 10.359375,4.505859 c 0.400344,0 0.726563,0.326845 0.726563,0.728516 v 0.724609 h 2.21875 c 0.400344,0 0.726562,0.326845 0.726562,0.728516 0,0.401669 -0.326217,0.726562 -0.726562,0.726562 h -0.191407 c -0.412128,1.326612 -1.066893,2.363281 -1.746093,3.181641 0.53207,0.488052 1.100334,0.887517 1.666015,1.335938 0.311924,0.250518 0.365651,0.709744 0.115235,1.023437 -0.249259,0.313205 -0.708226,0.362473 -1.019532,0.111328 -0.614642,-0.486742 -1.192601,-0.892661 -1.769531,-1.423828 -0.576929,0.531167 -1.104107,0.937086 -1.71875,1.423828 -0.311303,0.251148 -0.768322,0.201879 -1.017578,-0.111328 -0.250416,-0.313693 -0.200604,-0.772919 0.111328,-1.023437 0.565677,-0.448421 1.087072,-0.847886 1.619141,-1.335938 -0.679199,-0.818312 -1.283234,-1.854981 -1.695313,-3.181641 h -0.197265 c -0.400344,0 -0.720704,-0.324893 -0.720704,-0.726562 0,-0.401671 0.320361,-0.728516 0.720704,-0.728516 h 2.173828 V 8.234375 c 0,-0.401671 0.324264,-0.728516 0.724609,-0.728516 z M 7.142578,7.800781 h 1.496094 c 0.345155,0 0.643047,0.243927 0.710937,0.582031 l 1.447266,7.244141 c 0.07851,0.39257 -0.174512,0.773053 -0.566406,0.851563 -0.384074,0.07905 -0.774336,-0.168718 -0.853516,-0.566407 L 8.914062,13.595703 H 6.867188 L 6.402344,15.912109 C 6.324551,16.303955 5.947553,16.559826 5.550781,16.478516 5.158934,16.400005 4.905865,16.019523 4.984375,15.626953 L 6.431641,8.382812 C 6.499536,8.044708 6.797425,7.800781 7.142578,7.800781 Z m 0.4375,1.632813 -0.578125,2.898437 H 8.46875 L 7.890625,9.433594 Z m 6.589844,0.980468 c 0.312752,0.842923 0.729088,1.524886 1.189453,2.105469 0.460366,-0.580583 0.925527,-1.262594 1.238281,-2.105469 z" - id="path1072" - inkscape:connector-curvature="0" /> - <g - style="fill:#000000" - id="g821" - transform="matrix(0.0322459,0,0,0.0322459,-17.878956,30.647558)"> - <g - style="fill:#000000" - id="g819" /> - </g> -</svg> diff --git a/application/resources/flat/scalable/loadermods.svg b/application/resources/flat/scalable/loadermods.svg deleted file mode 100644 index 8a2fd12c..00000000 --- a/application/resources/flat/scalable/loadermods.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M16.23,18l-1.12-4.82,3.73-3.23-4.92-.42L12,5,10.08,9.54,5.16,10l3.73,3.23L7.77,18,12,15.45,16.23,18M20,4H4V20H20Zm0,18H4a2,2,0,0,1-2-2V4A2,2,0,0,1,4,2H20a2,2,0,0,1,2,2V20A2,2,0,0,1,20,22Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/log.svg b/application/resources/flat/scalable/log.svg deleted file mode 100644 index e8caa08a..00000000 --- a/application/resources/flat/scalable/log.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/minecraft.svg b/application/resources/flat/scalable/minecraft.svg deleted file mode 100644 index c17c44cd..00000000 --- a/application/resources/flat/scalable/minecraft.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L6.04,7.5L12,10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V9.21L13,12.58V19.29L19,15.91Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/multimc.svg b/application/resources/flat/scalable/multimc.svg deleted file mode 100644 index 1c1f2359..00000000 --- a/application/resources/flat/scalable/multimc.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M0,2A2,2,0,0,1,2,0H22a2,2,0,0,1,2,2V8L22,8V6H20V8H18v2H16V8H14V6H12V8H10V6H8v4H6V8H4V6H2V8H0ZM0,22a2,2,0,0,0,2,2H22a2,2,0,0,0,2-2V10H22V22H2V10H0Zm18.71-3.29a3.83,3.83,0,0,0-5.41-5.41L12,14.59l-1.29-1.29a3.83,3.83,0,1,0,0,5.41L12,17.41l1.29,1.29a3.83,3.83,0,0,0,5.41,0Zm-4-4a1.83,1.83,0,1,1,0,2.59L13.41,16Zm-5.41,0L10.59,16,9.29,17.29a1.83,1.83,0,1,1,0-2.59Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/new.svg b/application/resources/flat/scalable/new.svg deleted file mode 100644 index 01f19d7c..00000000 --- a/application/resources/flat/scalable/new.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10h-4v4h-2v-4H7v-2h4V7h2v4h4v2z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/news.svg b/application/resources/flat/scalable/news.svg deleted file mode 100644 index 8868414e..00000000 --- a/application/resources/flat/scalable/news.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M20,11H4V8H20M20,15H13V13H20M20,19H13V17H20M11,19H4V13H11M20.33,4.67L18.67,3L17,4.67L15.33,3L13.67,4.67L12,3L10.33,4.67L8.67,3L7,4.67L5.33,3L3.67,4.67L2,3V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V3L20.33,4.67Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/notes.svg b/application/resources/flat/scalable/notes.svg deleted file mode 100644 index ebe0cb5a..00000000 --- a/application/resources/flat/scalable/notes.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M14,17H7V15H14M17,13H7V11H17M17,9H7V7H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/packages.svg b/application/resources/flat/scalable/packages.svg deleted file mode 100644 index fe576a43..00000000 --- a/application/resources/flat/scalable/packages.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M5.12,5l.81-1h12l.94,1m1.67.23L19.15,3.55A1.45,1.45,0,0,0,18,3H6a1.49,1.49,0,0,0-1.16.55L3.46,5.23A1.92,1.92,0,0,0,3,6.5V19a2,2,0,0,0,2,2H19a2,2,0,0,0,2-2V6.5A1.92,1.92,0,0,0,20.54,5.23Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/patreon.svg b/application/resources/flat/scalable/patreon.svg deleted file mode 100644 index ad561f57..00000000 --- a/application/resources/flat/scalable/patreon.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M12,3h0a9,9,0,0,0-9,9v9H5.09V12a6.91,6.91,0,1,1,7.23,6.9,5.9,5.9,0,0,1-2.59-.47v-3A4.13,4.13,0,1,0,7.85,12v9H12A9,9,0,1,0,12,3Zm0,15.91h0Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/proxy.svg b/application/resources/flat/scalable/proxy.svg deleted file mode 100644 index 4956fec8..00000000 --- a/application/resources/flat/scalable/proxy.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M22 4v-.5C22 2.12 20.88 1 19.5 1S17 2.12 17 3.5V4c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm-.8 0h-3.4v-.5c0-.94.76-1.7 1.7-1.7s1.7.76 1.7 1.7V4zm-2.28 8c.04.33.08.66.08 1 0 2.08-.8 3.97-2.1 5.39-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H7v-2h2c.55 0 1-.45 1-1V8h2c1.1 0 2-.9 2-2V3.46c-.95-.3-1.95-.46-3-.46C5.48 3 1 7.48 1 13s4.48 10 10 10 10-4.48 10-10c0-.34-.02-.67-.05-1h-2.03zM10 20.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L8 16v1c0 1.1.9 2 2 2v1.93z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/quickmods.svg b/application/resources/flat/scalable/quickmods.svg deleted file mode 100644 index 952d1e0e..00000000 --- a/application/resources/flat/scalable/quickmods.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M8.75,5.5v7.15H10.7V18.5l4.55-7.8h-2.6l2.6-5.2ZM20,4H4V20H20Zm0,18H4a2,2,0,0,1-2-2V4A2,2,0,0,1,4,2H20a2,2,0,0,1,2,2V20A2,2,0,0,1,20,22Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/reddit-alien.svg b/application/resources/flat/scalable/reddit-alien.svg deleted file mode 100644 index 9bcfbedc..00000000 --- a/application/resources/flat/scalable/reddit-alien.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M20,11.86a1.76,1.76,0,0,0-1.75-1.75,1.73,1.73,0,0,0-1.22.51,9,9,0,0,0-4.67-1.38l1-3.16L16,6.71s0,0,0,0a1.46,1.46,0,1,0,.1-.53l-2.89-.68a.25.25,0,0,0-.29.17L11.83,9.23a9.16,9.16,0,0,0-4.88,1.36,1.75,1.75,0,1,0-2.07,2.79,3,3,0,0,0-.06.58C4.82,16.58,8,18.7,12,18.7s7.14-2.13,7.14-4.74a2.94,2.94,0,0,0-.05-.55A1.74,1.74,0,0,0,20,11.86ZM8.51,13.08a1.06,1.06,0,1,1,1.06,1.06A1.06,1.06,0,0,1,8.51,13.08Zm6.06,3.14A3.48,3.48,0,0,1,12,17h0a3.48,3.48,0,0,1-2.56-.79.25.25,0,0,1,.35-.35,3,3,0,0,0,2.2.65h0a3,3,0,0,0,2.2-.65.25.25,0,1,1,.35.35Zm-.13-2.08a1.06,1.06,0,1,1,1.06-1.06A1.06,1.06,0,0,1,14.44,14.14Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/refresh.svg b/application/resources/flat/scalable/refresh.svg deleted file mode 100644 index 94be1e27..00000000 --- a/application/resources/flat/scalable/refresh.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/resourcepacks.svg b/application/resources/flat/scalable/resourcepacks.svg deleted file mode 100644 index b6054baf..00000000 --- a/application/resources/flat/scalable/resourcepacks.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M19.51 3.08L3.08 19.51c.09.34.27.65.51.9.25.24.56.42.9.51L20.93 4.49c-.19-.69-.73-1.23-1.42-1.41zM11.88 3L3 11.88v2.83L14.71 3h-2.83zM5 3c-1.1 0-2 .9-2 2v2l4-4H5zm14 18c.55 0 1.05-.22 1.41-.59.37-.36.59-.86.59-1.41v-2l-4 4h2zm-9.71 0h2.83L21 12.12V9.29L9.29 21z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/screenshot-placeholder.svg b/application/resources/flat/scalable/screenshot-placeholder.svg deleted file mode 100644 index 99e0c17a..00000000 --- a/application/resources/flat/scalable/screenshot-placeholder.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M21 15h2v2h-2v-2zm0-4h2v2h-2v-2zm2 8h-2v2c1 0 2-1 2-2zM13 3h2v2h-2V3zm8 4h2v2h-2V7zm0-4v2h2c0-1-1-2-2-2zM1 7h2v2H1V7zm16-4h2v2h-2V3zm0 16h2v2h-2v-2zM3 3C2 3 1 4 1 5h2V3zm6 0h2v2H9V3zM5 3h2v2H5V3zm-4 8v8c0 1.1.9 2 2 2h12V11H1zm2 8l2.5-3.21 1.79 2.15 2.5-3.22L13 19H3z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/screenshots.svg b/application/resources/flat/scalable/screenshots.svg deleted file mode 100644 index 208bb104..00000000 --- a/application/resources/flat/scalable/screenshots.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M21 3H3C2 3 1 4 1 5v14c0 1.1.9 2 2 2h18c1 0 2-1 2-2V5c0-1-1-2-2-2zM5 17l3.5-4.5 2.5 3.01L14.5 11l4.5 6H5z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/settings.svg b/application/resources/flat/scalable/settings.svg deleted file mode 100644 index dd9d86ed..00000000 --- a/application/resources/flat/scalable/settings.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/star.svg b/application/resources/flat/scalable/star.svg deleted file mode 100644 index 878bdca8..00000000 --- a/application/resources/flat/scalable/star.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/status-bad.svg b/application/resources/flat/scalable/status-bad.svg deleted file mode 100644 index 3f8e0116..00000000 --- a/application/resources/flat/scalable/status-bad.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M12,2A10,10,0,1,0,22,12,10,10,0,0,0,12,2Zm4.24,7.17L13.41,12l2.83,2.83-1.41,1.41L12,13.41,9.17,16.24,7.76,14.83,10.59,12,7.76,9.17,9.17,7.76,12,10.59l2.83-2.83Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/status-good.svg b/application/resources/flat/scalable/status-good.svg deleted file mode 100644 index 3503d6ba..00000000 --- a/application/resources/flat/scalable/status-good.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/status-running.svg b/application/resources/flat/scalable/status-running.svg deleted file mode 100644 index 7c750319..00000000 --- a/application/resources/flat/scalable/status-running.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 14.5v-9l6 4.5-6 4.5z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/status-yellow.svg b/application/resources/flat/scalable/status-yellow.svg deleted file mode 100644 index ac2d2349..00000000 --- a/application/resources/flat/scalable/status-yellow.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/viewfolder.svg b/application/resources/flat/scalable/viewfolder.svg deleted file mode 100644 index 2f5e29c9..00000000 --- a/application/resources/flat/scalable/viewfolder.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/flat/scalable/worlds.svg b/application/resources/flat/scalable/worlds.svg deleted file mode 100644 index 95a59bd4..00000000 --- a/application/resources/flat/scalable/worlds.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> - <path d="M18.2,13a3.18,3.18,0,0,1-.84,2.16.8.8,0,0,0-.76-.56h-.4V13.4a.4.4,0,0,0-.4-.4H13.4v-.8h.8a.4.4,0,0,0,.4-.4V11h.8a.8.8,0,0,0,.8-.8V10A3.19,3.19,0,0,1,18.2,13Zm-4.4,1.6v-.4l-1.92-1.92a3.18,3.18,0,0,0,2.72,3.89V15.4A.8.8,0,0,1,13.8,14.6ZM22,8V18a2,2,0,0,1-2,2H4a2,2,0,0,1-2-2V6A2,2,0,0,1,4,4h6l2,2h8A2,2,0,0,1,22,8Zm-3,5a4,4,0,1,0-4,4A4,4,0,0,0,19,13Z"/> -</svg>
\ No newline at end of file diff --git a/application/resources/iOS/iOS.qrc b/application/resources/iOS/iOS.qrc deleted file mode 100644 index 511e390b..00000000 --- a/application/resources/iOS/iOS.qrc +++ /dev/null @@ -1,38 +0,0 @@ -<!DOCTYPE RCC> -<RCC version="1.0"> - <qresource prefix="/icons/iOS"> - <file>index.theme</file> - <file>scalable/about.svg</file> - <file>scalable/accounts.svg</file> - <file>scalable/bug.svg</file> - <file>scalable/centralmods.svg</file> - <file>scalable/checkupdate.svg</file> - <file>scalable/copy.svg</file> - <file>scalable/coremods.svg</file> - <file>scalable/externaltools.svg</file> - <file>scalable/help.svg</file> - <file>scalable/instance-settings.svg</file> - <file>scalable/jarmods.svg</file> - <file>scalable/java.svg</file> - <file>scalable/language.svg</file> - <file>scalable/loadermods.svg</file> - <file>scalable/log.svg</file> - <file>scalable/minecraft.svg</file> - <file>scalable/multimc.svg</file> - <file>scalable/new.svg</file> - <file>scalable/news.svg</file> - <file>scalable/notes.svg</file> - <file>scalable/patreon.svg</file> - <file>scalable/proxy.svg</file> - <file>scalable/quickmods.svg</file> - <file>scalable/refresh.svg</file> - <file>scalable/resourcepacks.svg</file> - <file>scalable/screenshots.svg</file> - <file>scalable/settings.svg</file> - <file>scalable/status-bad.svg</file> - <file>scalable/status-good.svg</file> - <file>scalable/status-yellow.svg</file> - <file>scalable/viewfolder.svg</file> - <file>scalable/worlds.svg</file> - </qresource> -</RCC> diff --git a/application/resources/iOS/index.theme b/application/resources/iOS/index.theme deleted file mode 100644 index b0f2f6ba..00000000 --- a/application/resources/iOS/index.theme +++ /dev/null @@ -1,11 +0,0 @@ -[Icon Theme] -Name=iOS -Comment=iOS theme by pexner -Inherits=multimc -Directories=scalable - -[scalable] -Size=48 -Type=Scalable -MinSize=16 -MaxSize=256 diff --git a/application/resources/iOS/scalable/about.svg b/application/resources/iOS/scalable/about.svg deleted file mode 100644 index c4d35471..00000000 --- a/application/resources/iOS/scalable/about.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <polygon fill="#3366CC" points="18.5,22.5 18.5,12.5 12,12.5 12,15 14.5,15 14.5,22.5 12,22.5 12,25 21,25 21,22.5 "/> - <g id="_x38__8_"> - <g> - <path fill="#3366CC" d="M16,0C7.2,0,0,7.2,0,16c0,8.8,7.2,16,16,16c8.8,0,16-7.2,16-16C32,7.2,24.8,0,16,0z M16,30 - C8.3,30,2,23.7,2,16C2,8.3,8.3,2,16,2c7.7,0,14,6.3,14,14C30,23.7,23.7,30,16,30z"/> - </g> - </g> - <circle fill="#3366CC" cx="16.5" cy="8.5" r="2"/> -</g> -</svg> diff --git a/application/resources/iOS/scalable/accounts.svg b/application/resources/iOS/scalable/accounts.svg deleted file mode 100644 index 65f76c3f..00000000 --- a/application/resources/iOS/scalable/accounts.svg +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g id="_x36__17_"> - <g> - <path fill="#3366CC" d="M23,16.4c1.3-1.7,2-3.9,2-6.4c0-5.5-4-10-9-10S7,4.5,7,10c0,2.4,0.8,4.6,2,6.4c-2.3,0.8-4,3-4,5.6v4 - c0,3.3,2.7,6,6,6h10c3.3,0,6-2.7,6-6v-4C27,19.4,25.3,17.2,23,16.4z M9,10c0-4.4,3.1-8,7-8s7,3.6,7,8c0,4.4-3.1,8-7,8S9,14.4,9,10 - z M25,25.5c0,2.5-2.2,4.5-4.9,4.5h-8.2C9.2,30,7,28,7,25.5v-3c0-2.1,1.6-3.9,3.8-4.4C12.3,19.3,14,20,16,20s3.8-0.7,5.2-1.9 - c2.2,0.5,3.8,2.2,3.8,4.4V25.5z"/> - </g> -</g> -</svg> diff --git a/application/resources/iOS/scalable/bug.svg b/application/resources/iOS/scalable/bug.svg deleted file mode 100644 index fc4a3d69..00000000 --- a/application/resources/iOS/scalable/bug.svg +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#3366CC" d="M31.1,19.8c0.5,0,0.9-0.4,0.9-0.9c0-0.5-0.4-0.9-0.9-0.9H26c0-0.2,0-0.4,0-0.6c0-0.7,0-1.4,0-2 - c1.3-0.2,2.4-0.8,3.3-1.8c2.6-3,1.8-8.8,1.8-9C31,4,30.5,3.6,30,3.7c-0.5,0.1-0.9,0.6-0.8,1.1c0,0.1,0.7,5.1-1.4,7.5 - c-0.6,0.6-1.3,1-2.2,1.1c-0.1-0.4-0.3-0.7-0.6-1c-0.4-0.4-0.8-0.6-1.4-0.9c0.4-0.5,0.7-1.2,0.7-2.2c0-2.4-1.6-4.5-4.2-5.6l-0.1,0 - C19.8,1.6,18.1,0,16,0C14,0,12.3,1.6,12,3.7l-0.1,0v0C9.3,4.9,7.7,7,7.7,9.4c0,1,0.3,1.7,0.7,2.2c-0.6,0.2-1,0.5-1.4,0.9 - c-0.3,0.3-0.5,0.6-0.6,1c-0.9-0.1-1.6-0.5-2.2-1.1C2.1,9.9,2.8,4.8,2.8,4.7c0.1-0.5-0.3-1-0.8-1.1C1.5,3.6,1,4,1,4.5 - c0,0.2-0.8,6,1.8,9c0.9,1,2,1.6,3.3,1.8c0,0.6,0,1.2,0,2c0,0.2,0,0.4,0,0.6H0.9c-0.5,0-0.9,0.4-0.9,0.9c0,0.5,0.4,0.9,0.9,0.9h5.2 - c0.1,1.2,0.3,2.3,0.6,3.4c-1.6,0.2-3,0.8-3.9,1.9c-2.2,2.4-1.9,5.9-1.9,6.1c0,0.5,0.5,0.9,0.9,0.9c0,0,0.1,0,0.1,0 - c0.5,0,0.9-0.5,0.9-1c0,0-0.2-2.9,1.4-4.6C4.9,25.5,6,25.1,7.4,25c1.7,3.7,4.9,6.2,8.6,6.2c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0 - c3.7,0,6.9-2.5,8.6-6.2c1.4,0.1,2.4,0.5,3.2,1.4c1.6,1.7,1.4,4.6,1.4,4.6c0,0.5,0.3,1,0.9,1c0,0,0.1,0,0.1,0c0.5,0,0.9-0.4,0.9-0.9 - c0-0.2,0.3-3.7-1.9-6.1c-1-1.1-2.3-1.7-3.9-1.9c0.3-1.1,0.5-2.2,0.6-3.4H31.1z M16,1.9c0.8,0,1.5,0.5,1.9,1.2 - c-0.2,0-0.4-0.1-0.5-0.1c-0.1,0-0.2,0-0.3,0c-0.4,0-0.7-0.1-1.1-0.1c-0.4,0-0.7,0-1.1,0.1c-0.1,0-0.2,0-0.3,0c-0.2,0-0.4,0-0.5,0.1 - C14.5,2.4,15.2,1.9,16,1.9z M9.6,9.4c0-1.7,1.4-3.3,3.5-4.1c1.8-0.7,3.9-0.7,5.8,0c2.1,0.8,3.5,2.4,3.5,4.1c0,1-0.2,1.5-3.1,1.6 - c-1,0-2-0.1-3.3-0.1c0,0,0,0-0.1,0c0,0,0,0,0,0c0,0,0,0,0,0c-1.2,0-2.3,0-3.2,0.1C9.9,11,9.6,10.5,9.6,9.4z M16.9,29.2V18.9 - c0-0.5-0.4-0.9-0.9-0.9c-0.5,0-0.9,0.4-0.9,0.9v10.3C11.1,28.6,8,24.3,8,19c0-0.7,0-1.3,0-1.8c0-1.8-0.1-2.9,0.4-3.4 - c0.6-0.6,2.1-0.8,4.5-0.9c0.4,0,0.9,0,1.3,0c1.1,0,2.4,0,3.5,0c0.5,0,1,0,1.5,0c2.4,0.1,3.9,0.3,4.5,0.9c0.5,0.5,0.5,1.7,0.4,3.4 - c0,0.5,0,1,0,1.6c0,0,0,0,0,0.1c0,0,0,0,0,0.1c0,0,0,0.1,0,0.1C24.1,24.3,21,28.6,16.9,29.2z"/> -</svg> diff --git a/application/resources/iOS/scalable/centralmods.svg b/application/resources/iOS/scalable/centralmods.svg deleted file mode 100644 index 1b4c4741..00000000 --- a/application/resources/iOS/scalable/centralmods.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" d="M28,32H4c-2.2,0-4-1.8-4-4V4c0-2.2,1.8-4,4-4h6c2.2,0,4,1.8,4,4h14 - c2.2,0,4,1.8,4,4v20C32,30.2,30.2,32,28,32z M2,28c0,1.1,0.9,2,2,2h24c1.1,0,2-0.9,2-2V8c0-1.1-0.9-2-2-2H12V4c0-1.1-0.9-2-2-2H4 - C2.9,2,2,2.9,2,4V28z"/> -<g> - <path fill="#3366CC" d="M21.9,26.9L16,23.7l-5.9,3.3l1.1-6.9l-4.8-4.9l6.6-1l3-6.4l3,6.4l6.6,1L20.8,20L21.9,26.9z M10.6,16.5 - l2.8,2.8l-0.6,3.9l3.3-1.8l3.3,1.8l-0.6-3.9l2.8-2.8l-3.8-0.6L16,12.5l-1.6,3.5L10.6,16.5z"/> -</g> -</svg> diff --git a/application/resources/iOS/scalable/checkupdate.svg b/application/resources/iOS/scalable/checkupdate.svg deleted file mode 100644 index 9fc983d1..00000000 --- a/application/resources/iOS/scalable/checkupdate.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g id="_x37__7_"> - <g> - <path fill="#3366CC" d="M21.7,25.4c-0.4-0.4-1-0.4-1.4,0L17,28.7V15c0-0.6-0.4-1-1-1c-0.6,0-1,0.4-1,1v13.6l-3.3-3.2 - c-0.4-0.4-1-0.4-1.4,0c-0.4,0.4-0.4,1,0,1.4l4.9,4.9c0.2,0.2,0.5,0.3,0.8,0.3c0.3,0,0.6-0.1,0.8-0.3l4.9-4.9 - C22.1,26.4,22.1,25.8,21.7,25.4z"/> - </g> -</g> -<path fill="#3366CC" d="M20,21h5c2.7-1.5,5.1-4.2,5-7c-0.2-3.3-3.5-7.2-8.5-7c-0.8-2.9-3.1-5-6.5-5c-4.3,0-7,3.9-7,8 - c-3.3,0.2-6,3-6,6c0,5.4,6,5,6,5s4,0,4,0c0.6,0,1,0.4,1,1s-0.4,1-1,1l-4,0c-4.5-0.2-8-2.7-8-7c0-3.6,2.5-6.7,6-7.7 - C6.4,3.7,10.3,0,15,0c3.5,0,6.6,2.1,8.1,5c5,0.3,8.9,4.4,8.9,9.5c0,3.9-3.6,7-7,8.5h-5c-0.6,0-1-0.4-1-1S19.4,21,20,21z"/> -</svg> diff --git a/application/resources/iOS/scalable/copy.svg b/application/resources/iOS/scalable/copy.svg deleted file mode 100644 index 3ccc2f06..00000000 --- a/application/resources/iOS/scalable/copy.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g id="_x33__7_"> - <g> - <path fill="#3366CC" d="M20,8H4c-2.2,0-4,1.8-4,4v16c0,2.2,1.8,4,4,4h16c2.2,0,4-1.8,4-4V12C24,9.8,22.2,8,20,8z M22,28 - c0,1.1-0.9,2-2,2H4c-1.1,0-2-0.9-2-2V12c0-1.1,0.9-2,2-2h16c1.1,0,2,0.9,2,2V28z M28,0H12C9.8,0,8,1.8,8,4v2h2V4c0-1.1,0.9-2,2-2 - h16c1.1,0,2,0.9,2,2v16c0,1.1-0.9,2-2,2h-2v2h2c2.2,0,4-1.8,4-4V4C32,1.8,30.2,0,28,0z"/> - </g> -</g> -</svg> diff --git a/application/resources/iOS/scalable/coremods.svg b/application/resources/iOS/scalable/coremods.svg deleted file mode 100644 index ea47872c..00000000 --- a/application/resources/iOS/scalable/coremods.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <g id="_x38__2_"> - <g> - <path fill="#3366CC" d="M16,0C7.2,0,0,7.2,0,16c0,8.8,7.2,16,16,16s16-7.2,16-16C32,7.2,24.8,0,16,0z M16,30C8.3,30,2,23.7,2,16 - C2,8.3,8.3,2,16,2s14,6.3,14,14C30,23.7,23.7,30,16,30z"/> - </g> - </g> - <g> - <path fill="#3366CC" d="M21.9,24.8L16,21.5l-5.9,3.3l1.1-6.9l-4.8-4.9l6.6-1l3-6.4l3,6.4l6.6,1l-4.8,4.9L21.9,24.8z M10.6,14.3 - l2.8,2.8L12.7,21l3.3-1.8l3.3,1.8l-0.6-3.9l2.8-2.8l-3.8-0.6L16,10.3l-1.6,3.5L10.6,14.3z"/> - </g> -</g> -</svg> diff --git a/application/resources/iOS/scalable/externaltools.svg b/application/resources/iOS/scalable/externaltools.svg deleted file mode 100644 index 16e9fa48..00000000 --- a/application/resources/iOS/scalable/externaltools.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g id="_x35__5_"> - <g> - <path fill="#3366CC" d="M3,11c0.6,0,1-0.5,1-1l0-4.8l15.2,14.5c0.4,0.4,1,0.4,1.4,0c0.4-0.4,0.4-1,0-1.4L5.6,4L10,4 - c0.6,0,1-0.5,1-1s-0.4-1-1-1H3C2.5,2,2,2.4,2,3v7C2,10.5,2.4,11,3,11z M26,2H15v2h11c1.1,0,2,0.9,2,2l0,20.1c0,1.1-0.9,2-2,2L6,28 - c-1.1,0-2-0.9-2-2V15H2v11c0,2.2,2.2,4,4.4,4h19.7c2.2,0,3.9-1.8,3.9-3.9V6.4C30,4.2,28.2,2,26,2z"/> - </g> -</g> -</svg> diff --git a/application/resources/iOS/scalable/help.svg b/application/resources/iOS/scalable/help.svg deleted file mode 100644 index 9c2d2e93..00000000 --- a/application/resources/iOS/scalable/help.svg +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xml:space="preserve" - enable-background="new 0 0 32 32" - viewBox="0 0 32 32" - y="0px" - x="0px" - id="Calque_1" - version="1.1"><metadata - id="metadata18"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs16" /><g - id="g11"><g - id="_x38__8_"><g - id="g6"><path - id="path4" - d="M16,0C7.2,0,0,7.2,0,16c0,8.8,7.2,16,16,16c8.8,0,16-7.2,16-16C32,7.2,24.8,0,16,0z M16,30 C8.3,30,2,23.7,2,16C2,8.3,8.3,2,16,2c7.7,0,14,6.3,14,14C30,23.7,23.7,30,16,30z" - fill="#3366CC" /></g></g></g><g - style="fill:#3366cc;fill-opacity:1" - transform="matrix(1.0878826,0,0,1.0878826,44.136533,-3.5919647)" - id="g861"><g - aria-label="?" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:27.34714317px;line-height:85.45981598px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L';letter-spacing:0px;word-spacing:0px;fill:#3366cc;fill-opacity:1;stroke:none;stroke-width:3.4183929px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - id="text832"><path - d="m -20.968435,13.920532 c 0,0.6381 -0.07293,1.239737 -0.218777,1.804911 -0.145852,0.565174 -0.401092,1.066538 -0.76572,1.504093 -0.401092,0.492249 -0.774836,0.902456 -1.121233,1.230621 -0.346397,0.328166 -0.656332,0.6381 -0.929803,0.929803 -0.25524,0.273471 -0.464902,0.556059 -0.628985,0.847762 -0.145851,0.291703 -0.218777,0.656331 -0.218777,1.093885 v 0.38286 h -3.144921 V 20.72997 c 0,-0.601637 0.136736,-1.221505 0.410207,-1.859605 0.273471,-0.656332 0.756604,-1.285316 1.449399,-1.886953 0.346397,-0.309935 0.638099,-0.583406 0.875108,-0.820415 0.237009,-0.25524 0.428439,-0.492248 0.57429,-0.711025 0.145851,-0.237009 0.246124,-0.483133 0.300819,-0.738373 0.05469,-0.273471 0.08204,-0.57429 0.08204,-0.902456 0,-0.528711 -0.12762,-0.984497 -0.38286,-1.367357 -0.237009,-0.401091 -0.656331,-0.601637 -1.257968,-0.601637 -1.057423,0 -1.640829,0.692794 -1.750218,2.078383 h -3.06288 c 0.01823,-0.747489 0.145853,-1.431167 0.38286,-2.051036 0.237009,-0.6381 0.565175,-1.185043 0.984498,-1.640829 0.419323,-0.474017 0.920687,-0.8386455 1.504092,-1.0938855 0.601637,-0.25524 1.2762,-0.38286 2.023689,-0.38286 0.838646,0 1.567903,0.1367357 2.187771,0.4102072 0.619869,0.25524 1.130349,0.6198684 1.53144,1.0938853 0.401092,0.455786 0.692795,1.002729 0.875109,1.640829 0.200546,0.619869 0.300819,1.294432 0.30082,2.023689 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Monofonto;-inkscape-font-specification:Monofonto;fill:#3366cc;fill-opacity:1;stroke-width:3.4183929px" - id="path855" /></g><circle - style="fill:#3366cc;fill-opacity:1" - cx="-26.38899" - cy="25.466606" - r="1.8" - id="circle6-6" /></g></svg>
\ No newline at end of file diff --git a/application/resources/iOS/scalable/instance-settings.svg b/application/resources/iOS/scalable/instance-settings.svg deleted file mode 100644 index 95b8a508..00000000 --- a/application/resources/iOS/scalable/instance-settings.svg +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g id="_x32__5_"> - <g> - <path fill="#3366CC" d="M26,24H14.9c-0.4-1.7-2-3-3.9-3s-3.4,1.3-3.9,3H6c-0.6,0-1,0.4-1,1c0,0.6,0.4,1,1,1h1.1c0.4,1.7,2,3,3.9,3 - s3.4-1.3,3.9-3H26c0.6,0,1-0.4,1-1C27,24.4,26.6,24,26,24z M11,27.4c-1.3,0-2.4-1.1-2.4-2.4c0-1.3,1.1-2.4,2.4-2.4 - s2.4,1.1,2.4,2.4C13.4,26.3,12.3,27.4,11,27.4z M26,16h-2.1c-0.4-1.7-2-3-3.9-3s-3.4,1.3-3.9,3H6c-0.6,0-1,0.4-1,1 - c0,0.6,0.4,1,1,1h10.1c0.4,1.7,2,3,3.9,3s3.4-1.3,3.9-3H26c0.6,0,1-0.4,1-1C27,16.4,26.6,16,26,16z M20,19.4 - c-1.3,0-2.4-1.1-2.4-2.4c0-1.3,1.1-2.4,2.4-2.4s2.4,1.1,2.4,2.4C22.4,18.3,21.3,19.4,20,19.4z M26,8H14.9c-0.4-1.7-2-3-3.9-3 - S7.6,6.3,7.1,8H6C5.4,8,5,8.4,5,9c0,0.6,0.4,1,1,1h1.1c0.4,1.7,2,3,3.9,3s3.4-1.3,3.9-3H26c0.6,0,1-0.4,1-1C27,8.4,26.6,8,26,8z - M11,11.4c-1.3,0-2.4-1.1-2.4-2.4c0-1.3,1.1-2.4,2.4-2.4s2.4,1.1,2.4,2.4C13.4,10.3,12.3,11.4,11,11.4z M28,0H4C1.8,0,0,1.8,0,4 - v24c0,2.2,1.8,4,4,4h24c2.2,0,4-1.8,4-4V4C32,1.8,30.2,0,28,0z M30,28c0,1.1-0.9,2-2,2H4c-1.1,0-2-0.9-2-2V4c0-1.1,0.9-2,2-2h24 - c1.1,0,2,0.9,2,2V28z"/> - </g> -</g> -</svg> diff --git a/application/resources/iOS/scalable/jarmods.svg b/application/resources/iOS/scalable/jarmods.svg deleted file mode 100644 index c4c5ca8c..00000000 --- a/application/resources/iOS/scalable/jarmods.svg +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <g> - <g> - <path fill="#3366CC" d="M20.5,28H9.8L4.2,15.9l0.6-0.5c0.1-0.1,1.9-1.7,4.5-1.8c0.6,0,1,0.4,1.1,0.9c0,0.6-0.4,1-0.9,1.1 - c-1.1,0.1-2.1,0.6-2.6,0.9l4.4,9.6h8.1l4.7-10.3c0.6-1.6,2.2-2.5,3.9-2.2c1.7,0.3,2.9,1.7,2.8,3.4c-0.2,3.7-2.7,4.8-2.8,4.8 - c-0.5,0.2-1.1,0-1.3-0.5c-0.2-0.5,0-1.1,0.5-1.3c0,0,1.5-0.7,1.6-3.1c0-0.8-0.7-1.2-1.1-1.2c-0.2,0-1.3-0.2-1.6,0.9l0,0.1 - L20.5,28z"/> - </g> - <path fill="#3366CC" d="M29.3,26c-0.6,0-1,0.5-1,1c0,0.9-4.5,2.9-13.1,2.9S2,27.9,2,27c0-0.5,1.5-1.4,4.3-2.1l-0.9-1.9 - C2.3,23.9,0,25.2,0,27c0,3.4,7.9,5,15.2,5s15.2-1.6,15.2-5C30.3,26.5,29.9,26,29.3,26z"/> - <g> - <rect x="6.8" y="17.9" fill="#3366CC" width="16.4" height="2"/> - </g> - <g> - <rect x="8.6" y="22" fill="#3366CC" width="13.3" height="2"/> - </g> - </g> - <g> - <g> - <path fill="#3366CC" d="M17,4.7l0.7,1.5l0.5,1l1.1,0.2l1.7,0.3l-1.3,1.3l-0.7,0.7l0.2,1l0.3,1.8L18,11.6L17,11l-1,0.5l-1.4,0.8 - l0.3-1.8l0.2-1l-0.7-0.7l-1.3-1.3l1.7-0.3l1.1-0.2l0.5-1L17,4.7 M17,0l-2.5,5.3L9,6.2l4,4.1L12,16.1l5-2.7l5,2.7L21,10.2l4-4.1 - l-5.5-0.8L17,0L17,0z"/> - </g> - </g> -</g> -</svg> diff --git a/application/resources/iOS/scalable/java.svg b/application/resources/iOS/scalable/java.svg deleted file mode 100644 index 8d7c2798..00000000 --- a/application/resources/iOS/scalable/java.svg +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <g> - <path fill="#3366CC" d="M20.4,28.1H9.8L4.2,15.9l0.6-0.5c0.1-0.1,1.9-1.7,4.4-1.8c0.6,0,1,0.4,1.1,0.9c0,0.6-0.4,1-0.9,1.1 - c-1.1,0.1-2.1,0.6-2.6,0.9L11,26h8.1l4.7-10.2c0.6-1.6,2.2-2.5,3.9-2.1c1.7,0.3,2.9,1.7,2.8,3.3c-0.2,3.7-2.7,4.8-2.8,4.8 - c-0.5,0.2-1.1,0-1.3-0.5c-0.2-0.5,0-1.1,0.5-1.3c0,0,1.5-0.7,1.6-3.1c0-0.8-0.7-1.2-1.1-1.2c-0.2,0-1.3-0.2-1.6,0.9l0,0.1 - L20.4,28.1z"/> - </g> - <g> - <path fill="#3366CC" d="M14.2,14.4c-0.3,0-0.6-0.1-0.8-0.3c-1.9-2.2-3.1-4.8-2.9-6.7c0.2-1.8,2.2-5.3,5.9-7.2 - C17-0.1,17.6,0,17.9,0.5C18.1,1,18,1.6,17.5,1.9c-3,1.6-4.7,4.5-4.8,5.7c-0.1,1,0.6,3.1,2.4,5.2c0.4,0.4,0.3,1.1-0.1,1.4 - C14.7,14.3,14.5,14.4,14.2,14.4z"/> - </g> - <g> - <path fill="#3366CC" d="M17.5,16.5c-0.2,0-0.4-0.1-0.6-0.2c-0.4-0.3-0.5-1-0.2-1.4c0.1-0.2,0.3-0.4,0.5-0.6c0.9-0.9,1-1.2,0.6-1.8 - c-0.1-0.1-0.3-0.4-0.6-0.6c-0.9-0.9-2.2-2.3-2.2-4c0-1.9,2.2-4,7.3-6.8c0.5-0.3,1.1-0.1,1.4,0.4c0.3,0.5,0.1,1.1-0.4,1.4 - c-5.7,3.1-6.3,4.5-6.3,5c0,0.9,1,1.9,1.6,2.6c0.3,0.3,0.6,0.6,0.8,0.9c1.4,2.1-0.2,3.7-0.9,4.4c-0.1,0.1-0.3,0.2-0.3,0.3 - C18.2,16.4,17.9,16.5,17.5,16.5z"/> - </g> - <path fill="#3366CC" d="M29.2,26c-0.6,0-1,0.5-1,1c0,0.9-4.4,2.9-13.1,2.9S2,27.9,2,27c0-0.5,1.4-1.4,4.3-2l-0.9-1.9 - C2.3,23.9,0,25.2,0,27c0,3.4,7.8,5,15.1,5s15.1-1.6,15.1-5C30.2,26.5,29.7,26,29.2,26z"/> - <g> - <rect x="6.8" y="18" fill="#3366CC" width="16.4" height="2"/> - </g> - <g> - <rect x="8.6" y="22" fill="#3366CC" width="13.2" height="2"/> - </g> -</g> -</svg> diff --git a/application/resources/iOS/scalable/language.svg b/application/resources/iOS/scalable/language.svg deleted file mode 100644 index fcc3436e..00000000 --- a/application/resources/iOS/scalable/language.svg +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xml:space="preserve" - enable-background="new 0 0 32 32" - viewBox="0 0 32 32" - y="0px" - x="0px" - id="Calque_1" - version="1.1"><metadata - id="metadata15"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs13" /> -<g - id="g8"> - - <path - id="path6" - d="M28,32H4c-2.2,0-4-1.8-4-4V4c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4 v24C32,30.2,30.2,32,28,32z M30,4c0-1.1-0.9-2-2-2H4C2.9,2,2,2.9,2,4v24c0,1.1,0.9,2,2,2h24c1.1,0,2-0.9,2-2V4z" - fill="#3366CC" - clip-rule="evenodd" - fill-rule="evenodd" /> -</g> -<path - d="m 8.8837922,9.8498439 c -0.5055801,0 -0.9415895,0.3572871 -1.0410421,0.8525411 L 5.7221093,21.314148 c -0.1150014,0.575036 0.2571428,1.131673 0.8311203,1.246676 0.5811915,0.119103 1.1327283,-0.257142 1.2466794,-0.831119 l 0.6811731,-3.393021 h 2.9988849 l 0.676892,3.393021 c 0.115982,0.582535 0.688371,0.946911 1.250962,0.831119 0.574046,-0.115001 0.94612,-0.67164 0.831119,-1.246676 L 12.118299,10.702385 C 12.018854,10.207131 11.582843,9.8498439 11.07726,9.8498439 Z m 0.642615,2.3905391 h 0.4541203 l 0.8482535,4.245562 H 8.6781534 Z M 20.922167,9.4171507 c -0.586426,0 -1.062464,0.4783758 -1.062464,1.0667433 v 1.062461 h -3.183102 c -0.58642,0 -1.058175,0.478378 -1.058175,1.066747 0,0.588364 0.471753,1.062461 1.058175,1.062461 h 0.28704 c 0.603613,1.943292 1.489894,3.462457 2.484785,4.661121 -0.779374,0.714899 -1.544795,1.300994 -2.373399,1.957842 -0.456918,0.366958 -0.529604,1.039945 -0.162795,1.499442 0.36511,0.458786 1.034877,0.530676 1.490873,0.162795 0.900329,-0.71298 1.673977,-1.308312 2.519064,-2.086367 0.845087,0.778055 1.691565,1.373387 2.591893,2.086367 0.456001,0.367877 1.125761,0.295987 1.490873,-0.162795 0.366811,-0.459497 0.289838,-1.132484 -0.167067,-1.499442 -0.82861,-0.656848 -1.662574,-1.242943 -2.441951,-1.957842 0.994894,-1.198734 1.953935,-2.7179 2.55762,-4.661121 h 0.28275 c 0.586426,0 1.062461,-0.474097 1.062461,-1.062461 0,-0.588369 -0.476035,-1.066747 -1.062461,-1.066747 h -3.251659 v -1.062461 c 0,-0.5883675 -0.476037,-1.0667433 -1.062461,-1.0667433 z m -1.743636,4.2584123 h 3.555818 c -0.458122,1.234642 -1.137838,2.234128 -1.812182,3.084565 -0.674344,-0.850437 -1.285517,-1.849853 -1.743636,-3.084565 z" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#3366cc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6.58040667;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect977" /></svg>
\ No newline at end of file diff --git a/application/resources/iOS/scalable/loadermods.svg b/application/resources/iOS/scalable/loadermods.svg deleted file mode 100644 index 010efa11..00000000 --- a/application/resources/iOS/scalable/loadermods.svg +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <g> - <path fill="#3366CC" d="M21.9,24.6L16,21.3l-5.9,3.3l1.1-6.9l-4.8-4.9l6.6-1l3-6.4l3,6.4l6.6,1l-4.8,4.9L21.9,24.6z M10.6,14.2 - l2.8,2.8l-0.6,3.9L16,19l3.3,1.8L18.7,17l2.8-2.8l-3.8-0.6L16,10.1l-1.6,3.5L10.6,14.2z"/> - </g> - <path fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" d="M28,32H4c-2.2,0-4-1.8-4-4V4c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4 - v24C32,30.2,30.2,32,28,32z M30,4c0-1.1-0.9-2-2-2H4C2.9,2,2,2.9,2,4v24c0,1.1,0.9,2,2,2h24c1.1,0,2-0.9,2-2V4z"/> -</g> -</svg> diff --git a/application/resources/iOS/scalable/log.svg b/application/resources/iOS/scalable/log.svg deleted file mode 100644 index 5d1c7f06..00000000 --- a/application/resources/iOS/scalable/log.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g id="_x37__21_"> - <g> - <path fill="#3366CC" d="M28,0c0,0-5.8,1.6-11,3c-0.7,0-1.3,0-2,0C10,1.7,4,0,4,0C1.8,0,0,1.8,0,4v21c0,2.2,1.9,3.3,4,4 - c0,0,5.4,1.5,11,3h2c5.6-1.5,11-3,11-3c2.1-0.5,4-1.8,4-4V4C32,1.8,30.2,0,28,0z M15,30c-5.5-1.5-11-3-11-3c-1.1-0.3-2-0.9-2-2V4 - c0-1.1,0.9-2,2-2l11,3V30z M30,25c0,1.1-0.9,1.7-2,2c0,0-5.4,1.5-11,3V5l11-3c1.1,0,2,0.9,2,2V25z"/> - </g> -</g> -</svg> diff --git a/application/resources/iOS/scalable/minecraft.svg b/application/resources/iOS/scalable/minecraft.svg deleted file mode 100644 index 069b4e71..00000000 --- a/application/resources/iOS/scalable/minecraft.svg +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#3366CC" d="M16,0L2,7.1v17.8L16,32l14-7.1V7.1L16,0z M26.7,7.7L16,13.1L5.3,7.7L16,2.2L26.7,7.7z M4,9.2l11,5.6v14.4 - L4,23.7V9.2z M17,29.2V14.8l11-5.6v14.4L17,29.2z"/> -</svg> diff --git a/application/resources/iOS/scalable/multimc.svg b/application/resources/iOS/scalable/multimc.svg deleted file mode 100644 index bc819433..00000000 --- a/application/resources/iOS/scalable/multimc.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#3366CC" d="M0,0v32h32V0H0z M30,30H2V5h2v2h2V6h2v3h2V4h2v2h2V5h2v4h2V6h2v2h2V6h2V5h2v1h3V5h1L30,30z"/> -<g> - <path fill="#3366CC" d="M16,18.5c-1.9,1.9-3.8,3.9-6.7,3.9C6.2,22.4,4,20.1,4,17c0-2.9,2.3-5.4,5.5-5.4c2.7,0,4.7,2.2,6.5,3.9 - c1.9-1.9,3.8-3.9,6.7-3.9c3.1,0,5.3,2.3,5.3,5.4c0,2.9-2.3,5.4-5.5,5.4C19.8,22.4,17.8,20.2,16,18.5z M14.5,17 - c-1.4-1.3-2.9-3.2-5-3.2c-1.8,0-3.2,1.5-3.2,3.2c0,1.9,1.3,3.2,3.1,3.2C11.5,20.2,13.2,18.4,14.5,17z M25.7,17 - c0-1.9-1.3-3.2-3.1-3.2c-2.1,0-3.8,1.8-5.1,3.2c1.4,1.3,2.9,3.2,5,3.2C24.3,20.2,25.7,18.7,25.7,17z"/> -</g> -</svg> diff --git a/application/resources/iOS/scalable/new.svg b/application/resources/iOS/scalable/new.svg deleted file mode 100644 index 9f221580..00000000 --- a/application/resources/iOS/scalable/new.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g id="_x31__2_"> - <g> - <path fill="#3366CC" d="M22,15h-5v-5c0-0.6-0.4-1-1-1s-1,0.4-1,1v5h-5c-0.6,0-1,0.4-1,1c0,0.6,0.4,1,1,1h5v5c0,0.6,0.4,1,1,1 - s1-0.4,1-1v-5h5c0.6,0,1-0.4,1-1C23,15.4,22.6,15,22,15z M28,0H4C1.8,0,0,1.8,0,4v24c0,2.2,1.8,4,4,4h24c2.2,0,4-1.8,4-4V4 - C32,1.8,30.2,0,28,0z M30,28c0,1.1-0.9,2-2,2H4c-1.1,0-2-0.9-2-2V4c0-1.1,0.9-2,2-2h24c1.1,0,2,0.9,2,2V28z"/> - </g> -</g> -</svg> diff --git a/application/resources/iOS/scalable/news.svg b/application/resources/iOS/scalable/news.svg deleted file mode 100644 index d3c010bb..00000000 --- a/application/resources/iOS/scalable/news.svg +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <path fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" d="M26,26H14l-4,6l-4-6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20 - c3.3,0,6,2.7,6,6v14C32,23.3,29.3,26,26,26z M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v14c0,1.1,0.9,2,2,2h1.3l2.7,4l2.7-4H26 - c1.1,0,2-0.9,2-2V6z"/> - <rect x="8" y="12" fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" width="16" height="2"/> - <rect x="8" y="8" fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" width="16" height="2"/> - <rect x="8" y="16" fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" width="8" height="2"/> -</g> -</svg> diff --git a/application/resources/iOS/scalable/notes.svg b/application/resources/iOS/scalable/notes.svg deleted file mode 100644 index b42ebeef..00000000 --- a/application/resources/iOS/scalable/notes.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g id="_x38__21_"> - <g> - <path fill="#3366CC" d="M23,24H9c-0.6,0-1,0.4-1,1c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1C24,24.4,23.6,24,23,24z M26,4h-3V2h-2.7 - c-0.9-1.2-2.5-2-4.3-2s-3.4,0.8-4.3,2H9v2H6C3.8,4,2,5.8,2,8v20c0,2.2,1.8,4,4,4h20c2.2,0,4-1.8,4-4V8C30,5.8,28.2,4,26,4z M11,4 - h2.2c0-1.1,1.2-2,2.8-2c1.5,0,2.8,0.9,2.8,2H21v4H11V4z M28,28c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2V8c0-1.1,0.9-2,2-2h3v4h14V6h3 - c1.1,0,2,0.9,2,2V28z M23,19H9c-0.6,0-1,0.4-1,1c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1C24,19.4,23.6,19,23,19z M23,14H9 - c-0.6,0-1,0.4-1,1c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1C24,14.4,23.6,14,23,14z"/> - </g> -</g> -</svg> diff --git a/application/resources/iOS/scalable/patreon.svg b/application/resources/iOS/scalable/patreon.svg deleted file mode 100644 index 1bd06f4a..00000000 --- a/application/resources/iOS/scalable/patreon.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <rect y="0" fill="none" width="32" height="32"/> - <path fill="#3366CC" d="M16,0C7.2,0,0,7.2,0,16v16h3.7v-3.7v-5V16C3.7,9.2,9.2,3.7,16,3.7c6.8,0,12.3,5.5,12.3,12.3 - c0,6.6-5.2,12-11.7,12.3c-2.1,0-3.8-0.4-4.6-0.8v-5.3c1.2,0.8,2.5,1.2,4,1.2c4.1,0,7.3-3.3,7.3-7.3c0-4.1-3.3-7.3-7.3-7.3 - c-4.1,0-7.3,3.3-7.3,7.3v16h6.7c0.2,0,0.4,0,0.7,0c8.8,0,16-7.2,16-16S24.8,0,16,0z"/> -</g> -</svg> diff --git a/application/resources/iOS/scalable/proxy.svg b/application/resources/iOS/scalable/proxy.svg deleted file mode 100644 index f6552281..00000000 --- a/application/resources/iOS/scalable/proxy.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#3366CC" d="M25,11c-1.6,0-3,0.7-3.9,1.9l-9.5-6.1C11.9,6.2,12,5.6,12,5c0-2.8-2.2-5-5-5S2,2.2,2,5s2.2,5,5,5 - c1.4,0,2.7-0.6,3.6-1.5l9.6,6.2C20.1,15.1,20,15.5,20,16c0,0.5,0.1,0.9,0.2,1.4l-9.6,6.2C9.7,22.6,8.4,22,7,22c-2.8,0-5,2.2-5,5 - s2.2,5,5,5s5-2.2,5-5c0-0.6-0.1-1.2-0.3-1.8l9.5-6.1c0.9,1.1,2.3,1.8,3.8,1.8c2.8,0,5-2.2,5-5S27.8,11,25,11z M7,8C5.3,8,4,6.7,4,5 - s1.3-3,3-3s3,1.3,3,3S8.7,8,7,8z M7,30c-1.7,0-3-1.3-3-3s1.3-3,3-3s3,1.3,3,3S8.7,30,7,30z M25,19c-1.7,0-3-1.3-3-3s1.3-3,3-3 - s3,1.3,3,3S26.7,19,25,19z"/> -</svg> diff --git a/application/resources/iOS/scalable/quickmods.svg b/application/resources/iOS/scalable/quickmods.svg deleted file mode 100644 index cd63ba71..00000000 --- a/application/resources/iOS/scalable/quickmods.svg +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <path fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" d="M28,32H4c-2.2,0-4-1.8-4-4V4c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4 - v24C32,30.2,30.2,32,28,32z M30,4c0-1.1-0.9-2-2-2H4C2.9,2,2,2.9,2,4v24c0,1.1,0.9,2,2,2h24c1.1,0,2-0.9,2-2V4z"/> - <g> - <path fill="#3366CC" d="M10.6,26C9.8,26,9,25.4,9,24.2V7.8C9,6.6,9.8,6,10.6,6c0.4,0,0.7,0.1,1.1,0.3l13,8.2 - c0.6,0.3,0.9,0.9,0.9,1.5s-0.3,1.1-0.9,1.5l-13,8.2C11.3,25.9,10.9,26,10.6,26z M11,8.3l0,15.4L23.2,16L11,8.3z"/> - </g> -</g> -</svg> diff --git a/application/resources/iOS/scalable/refresh.svg b/application/resources/iOS/scalable/refresh.svg deleted file mode 100644 index 297b79c9..00000000 --- a/application/resources/iOS/scalable/refresh.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g id="_x32__8_"> - <g> - <path fill="#3366CC" d="M23.7,2H31c0.6,0,1-0.4,1-1c0-0.6-0.4-1-1-1H21c-0.1,0-1,0-1,1v10c0,0.6,0.4,1,1,1c0.6,0,1-0.4,1-1V3.4 - c4.7,2.2,8,7.1,8,12.6c0,7.7-6.3,14-14,14C8.3,30,2,23.7,2,16C2,8.9,7.2,3.1,14,2.2v-2C6.1,1.1,0,7.8,0,16c0,8.8,7.2,16,16,16 - c8.8,0,16-7.2,16-16C32,10,28.7,4.7,23.7,2z"/> - </g> -</g> -</svg> diff --git a/application/resources/iOS/scalable/resourcepacks.svg b/application/resources/iOS/scalable/resourcepacks.svg deleted file mode 100644 index 5b359d63..00000000 --- a/application/resources/iOS/scalable/resourcepacks.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g id="_x33__19_"> - <g> - <path fill="#3366CC" d="M28,5h-6V3c0-1.1-0.9-2-2-2h-8c-1.1,0-2,0.9-2,2v2H4C1.8,5,0,6.8,0,9v18c0,2.2,1.8,4,4,4h24 - c2.2,0,4-1.8,4-4V9C32,6.8,30.2,5,28,5z M12,4c0-0.6,0.4-1,1-1h6c0.6,0,1,0.4,1,1v1h-8V4z M30,27c0,1.1-0.9,2-2,2H4 - c-1.1,0-2-0.9-2-2V16h10.1c-0.1,0.3-0.1,0.7-0.1,1c0,2.2,1.8,4,4,4s4-1.8,4-4c0-0.3-0.1-0.7-0.1-1H30V27z M14,17 - c0-0.4,0.1-0.7,0.3-1h3.4c0.2,0.3,0.3,0.6,0.3,1c0,1.1-0.9,2-2,2S14,18.1,14,17z M30,14H2V9c0-1.1,0.9-2,2-2h24c1.1,0,2,0.9,2,2 - V14z"/> - </g> -</g> -</svg> diff --git a/application/resources/iOS/scalable/screenshots.svg b/application/resources/iOS/scalable/screenshots.svg deleted file mode 100644 index 39ce7b82..00000000 --- a/application/resources/iOS/scalable/screenshots.svg +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g id="_x36__21_"> - <g> - <path fill="#3366CC" d="M28,0H4C1.8,0,0,1.8,0,4v24c0,2.2,1.8,4,4,4h24c2.2,0,4-1.8,4-4V4C32,1.8,30.2,0,28,0z M4,30 - c-1.1,0-2-0.9-2-2v-0.9l7.9-7.1L20,30H4z M30,28c0,1.1-0.9,2-2,2h-5.2l-7.4-7.5L24,14l6,6V28z M30,17.1L24,11l-9.9,10.1L10,17 - l-8,7.3V4c0-1.1,0.9-2,2-2h24c1.1,0,2,0.9,2,2V17.1z M8,4C5.8,4,4,5.8,4,8s1.8,4,4,4c2.2,0,4-1.8,4-4S10.2,4,8,4z M8,10 - c-1.1,0-2-0.9-2-2c0-1.1,0.9-2,2-2c1.1,0,2,0.9,2,2C10,9.1,9.1,10,8,10z"/> - </g> -</g> -</svg> diff --git a/application/resources/iOS/scalable/settings.svg b/application/resources/iOS/scalable/settings.svg deleted file mode 100644 index 95b8a508..00000000 --- a/application/resources/iOS/scalable/settings.svg +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g id="_x32__5_"> - <g> - <path fill="#3366CC" d="M26,24H14.9c-0.4-1.7-2-3-3.9-3s-3.4,1.3-3.9,3H6c-0.6,0-1,0.4-1,1c0,0.6,0.4,1,1,1h1.1c0.4,1.7,2,3,3.9,3 - s3.4-1.3,3.9-3H26c0.6,0,1-0.4,1-1C27,24.4,26.6,24,26,24z M11,27.4c-1.3,0-2.4-1.1-2.4-2.4c0-1.3,1.1-2.4,2.4-2.4 - s2.4,1.1,2.4,2.4C13.4,26.3,12.3,27.4,11,27.4z M26,16h-2.1c-0.4-1.7-2-3-3.9-3s-3.4,1.3-3.9,3H6c-0.6,0-1,0.4-1,1 - c0,0.6,0.4,1,1,1h10.1c0.4,1.7,2,3,3.9,3s3.4-1.3,3.9-3H26c0.6,0,1-0.4,1-1C27,16.4,26.6,16,26,16z M20,19.4 - c-1.3,0-2.4-1.1-2.4-2.4c0-1.3,1.1-2.4,2.4-2.4s2.4,1.1,2.4,2.4C22.4,18.3,21.3,19.4,20,19.4z M26,8H14.9c-0.4-1.7-2-3-3.9-3 - S7.6,6.3,7.1,8H6C5.4,8,5,8.4,5,9c0,0.6,0.4,1,1,1h1.1c0.4,1.7,2,3,3.9,3s3.4-1.3,3.9-3H26c0.6,0,1-0.4,1-1C27,8.4,26.6,8,26,8z - M11,11.4c-1.3,0-2.4-1.1-2.4-2.4c0-1.3,1.1-2.4,2.4-2.4s2.4,1.1,2.4,2.4C13.4,10.3,12.3,11.4,11,11.4z M28,0H4C1.8,0,0,1.8,0,4 - v24c0,2.2,1.8,4,4,4h24c2.2,0,4-1.8,4-4V4C32,1.8,30.2,0,28,0z M30,28c0,1.1-0.9,2-2,2H4c-1.1,0-2-0.9-2-2V4c0-1.1,0.9-2,2-2h24 - c1.1,0,2,0.9,2,2V28z"/> - </g> -</g> -</svg> diff --git a/application/resources/iOS/scalable/status-bad.svg b/application/resources/iOS/scalable/status-bad.svg deleted file mode 100644 index 4019c8da..00000000 --- a/application/resources/iOS/scalable/status-bad.svg +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#3366CC" d="M26,32H6c-3.4,0-6-2.6-6-6V6c0-3.4,2.6-6,6-6h20c3.4,0,6,2.6,6,6v20C32,29.4,29.4,32,26,32z M28,6 - c0-1.2-0.8-2-2-2H6C4.8,4,4,4.8,4,6v20c0,1.2,0.8,2,2,2h20c1.2,0,2-0.8,2-2V6z M21.6,21.6c-0.8,0.8-2,0.8-2.8,0L16,18.8l-2.8,2.8 - c-0.8,0.8-2,0.8-2.8,0c-0.8-0.8-0.8-2,0-2.8l2.8-2.8l-2.8-2.8c-0.8-0.8-0.8-2,0-2.8c0.8-0.8,2-0.8,2.8,0l2.8,2.8l2.8-2.8 - c0.8-0.8,2-0.8,2.8,0s0.8,2,0,2.8L18.8,16l2.8,2.8C22.4,19.6,22.4,20.8,21.6,21.6z"/> -</svg> diff --git a/application/resources/iOS/scalable/status-good.svg b/application/resources/iOS/scalable/status-good.svg deleted file mode 100644 index e1859113..00000000 --- a/application/resources/iOS/scalable/status-good.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <path fill="none" d="M26,0H6C2.6,0,0,2.6,0,6v20c0,3.4,2.6,6,6,6h20c3.4,0,6-2.6,6-6V6C32,2.6,29.4,0,26,0z M28,26c0,1.2-0.8,2-2,2 - H6c-1.2,0-2-0.8-2-2V6c0-1.2,0.8-2,2-2h20c1.2,0,2,0.8,2,2V26z M21,10.4l-7,7l-2.8-2.8c-0.8-0.8-2-0.8-2.8,0s-0.8,2,0,2.8l4.2,4.2 - c0.8,0.8,2,0.8,2.8,0l8.4-8.4c0.8-0.8,0.8-2,0-2.8S21.8,9.6,21,10.4z"/> -</g> -<g> - <g> - <path fill="#3366CC" d="M26,0H6C2.6,0,0,2.6,0,6v20c0,3.4,2.6,6,6,6h20c3.4,0,6-2.6,6-6V6C32,2.6,29.4,0,26,0z M28,26 - c0,1.2-0.8,2-2,2H6c-1.2,0-2-0.8-2-2V6c0-1.2,0.8-2,2-2h20c1.2,0,2,0.8,2,2V26z M21,10.4l-7,7l-2.8-2.8c-0.8-0.8-2-0.8-2.8,0 - s-0.8,2,0,2.8l4.2,4.2c0.8,0.8,2,0.8,2.8,0l8.4-8.4c0.8-0.8,0.8-2,0-2.8S21.8,9.6,21,10.4z"/> - </g> -</g> -</svg> diff --git a/application/resources/iOS/scalable/status-yellow.svg b/application/resources/iOS/scalable/status-yellow.svg deleted file mode 100644 index d8a28e23..00000000 --- a/application/resources/iOS/scalable/status-yellow.svg +++ /dev/null @@ -1,56 +0,0 @@ -<?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 - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - 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" - inkscape:version="0.48.5 r10040" - width="100%" - height="100%" - sodipodi:docname="status-yellow.svg"><metadata - id="metadata19"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs - id="defs17" /><sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1680" - inkscape:window-height="1030" - id="namedview15" - showgrid="false" - inkscape:zoom="7.375" - inkscape:cx="25.957106" - inkscape:cy="16" - inkscape:window-x="-4" - inkscape:window-y="-3" - inkscape:window-maximized="1" - inkscape:current-layer="Calque_1" /><g - id="g3"><path - fill="#E3A333" - d="M26,0H6C2.7,0,0,2.7,0,6v20c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V6C32,2.7,29.3,0,26,0z M28,26 c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2V26z" - id="path5" /></g><path - d="M 6 0 C 2.7 0 0 2.7 0 6 L 0 26 C 0 29.3 2.7 32 6 32 L 26 32 C 29.3 32 32 29.3 32 26 L 32 6 C 32 2.7 29.3 0 26 0 L 6 0 z M 6 4 L 26 4 C 27.1 4 28 4.9 28 6 L 28 26 C 28 27.1 27.1 28 26 28 L 6 28 C 4.9 28 4 27.1 4 26 L 4 6 C 4 4.9 4.9 4 6 4 z " - id="path7" - style="fill:#3366cc;fill-opacity:1" /><g - id="g11"><path - fill="#3366CC" - d="M6,20c0-5.8,2.4-7.9,5.8-7.9c2,0,3.4,0.7,5.3,1.9c1.6,1,2.5,1.5,3.3,1.5c0.7,0,1.2-0.7,1.3-3.1H26 c0.2,6.1-2.3,8-5.5,8c-2,0-3.5-0.8-5.3-1.9c-1.7-1-2.6-1.6-3.3-1.6c-0.8,0-1.4,0.5-1.6,3.2H6z" - id="path13" /></g></svg>
\ No newline at end of file diff --git a/application/resources/iOS/scalable/viewfolder.svg b/application/resources/iOS/scalable/viewfolder.svg deleted file mode 100644 index 0ae0c0b5..00000000 --- a/application/resources/iOS/scalable/viewfolder.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g id="_x36__4_"> - <g> - <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"/> - </g> -</g> -</svg> diff --git a/application/resources/iOS/scalable/worlds.svg b/application/resources/iOS/scalable/worlds.svg deleted file mode 100644 index 1596fd76..00000000 --- a/application/resources/iOS/scalable/worlds.svg +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xml:space="preserve" - enable-background="new 0 0 32 32" - viewBox="0 0 32 32" - y="0px" - x="0px" - id="Calque_1" - version="1.1"><metadata - id="metadata12"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs10" /><g - id="_x36__21_"><g - id="g4"><path - style="fill:#3366cc;fill-opacity:1" - id="path2" - d="M 4,0 C 1.8,0 0,1.8 0,4 v 24 c 0,2.2 1.8,4 4,4 h 24 c 2.2,0 4,-1.8 4,-4 V 4 C 32,1.8 30.2,0 28,0 Z m 0,2 h 24 c 0.1375,0 0.272461,0.014258 0.402344,0.041016 6.24e-4,1.264e-4 0.0013,-1.27e-4 0.002,0 0.782578,0.1593282 1.395359,0.7721094 1.554687,1.5546875 C 29.98599,3.7261594 30,3.8618476 30,4 v 24 c 0,0.1375 -0.01426,0.272461 -0.04102,0.402344 -1.26e-4,6.24e-4 1.27e-4,0.0013 0,0.002 -0.159328,0.782578 -0.772109,1.395359 -1.554687,1.554687 C 28.273841,29.98599 28.138152,30 28,30 H 4 c -0.1378377,0 -0.2724931,-0.01471 -0.4023438,-0.04102 -6.162e-4,-1.27e-4 -0.00134,1.28e-4 -0.00195,0 -0.7825781,-0.159328 -1.3953593,-0.772109 -1.5546875,-1.554687 -1.27e-4,-6.24e-4 1.264e-4,-0.0013 0,-0.002 C 2.0142578,28.272461 2,28.1375 2,28 V 4 c 0,-0.1378377 0.014708,-0.2724931 0.041016,-0.4023438 1.27e-4,-6.162e-4 -1.275e-4,-0.00134 0,-0.00195 C 2.2003438,2.813125 2.813125,2.2003438 3.5957031,2.0410156 3.7261328,2.0144609 3.8615,2 4,2 Z" /></g></g><g - style="stroke:#3366cc;stroke-width:1.63695813;stroke-opacity:1" - transform="matrix(1.0584012,0.61035173,-0.61035173,1.0584012,8.831209,-10.700046)" - id="g881"><ellipse - ry="8.9473686" - rx="8.9473696" - cy="16" - cx="16" - id="path845" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#3366cc;stroke-width:1.63695813;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /><ellipse - ry="8.9473686" - rx="3.4915254" - cy="15.947369" - cx="16" - id="path845-3" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#3366cc;stroke-width:1.63695813;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /><path - style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#3366cc;stroke-width:1.63695813;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="M 8.1848294,12.430327 C 12.570183,14.790801 20.662272,13.548526 23.355,11.76263" - id="path870" /><path - id="path872" - d="M 8.2166335,20.492522 C 12.601987,18.132048 21.148735,17.776739 23.841463,19.562635" - style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#3366cc;stroke-width:1.63695813;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /></g></svg>
\ No newline at end of file diff --git a/application/resources/multimc.rc b/application/resources/multimc.rc deleted file mode 100644 index e7340f2a..00000000 --- a/application/resources/multimc.rc +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include <windows.h> - -IDI_ICON1 ICON DISCARDABLE "MultiMC.ico" -1 RT_MANIFEST "MultiMC.manifest" - -VS_VERSION_INFO VERSIONINFO -FILEVERSION 1,0,0,0 -FILEOS VOS_NT_WINDOWS32 -FILETYPE VFT_APP -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "000004b0" - BEGIN - VALUE "CompanyName", "MultiMC Contributors" - VALUE "FileDescription", "MultiMC Launcher" - VALUE "FileVersion", "1.0.0.0" - VALUE "ProductName", "MultiMC" - VALUE "ProductVersion", "5" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0000, 0x04b0 // Unicode - END -END diff --git a/application/resources/multimc/128x128/instances/chicken.png b/application/resources/multimc/128x128/instances/chicken.png Binary files differdeleted file mode 100644 index 71f6dedc..00000000 --- a/application/resources/multimc/128x128/instances/chicken.png +++ /dev/null diff --git a/application/resources/multimc/128x128/instances/creeper.png b/application/resources/multimc/128x128/instances/creeper.png Binary files differdeleted file mode 100644 index 41b7d07d..00000000 --- a/application/resources/multimc/128x128/instances/creeper.png +++ /dev/null diff --git a/application/resources/multimc/128x128/instances/enderpearl.png b/application/resources/multimc/128x128/instances/enderpearl.png Binary files differdeleted file mode 100644 index 0a5bf91a..00000000 --- a/application/resources/multimc/128x128/instances/enderpearl.png +++ /dev/null diff --git a/application/resources/multimc/128x128/instances/flame.png b/application/resources/multimc/128x128/instances/flame.png Binary files differdeleted file mode 100644 index 8a50a0b4..00000000 --- a/application/resources/multimc/128x128/instances/flame.png +++ /dev/null diff --git a/application/resources/multimc/128x128/instances/ftb_glow.png b/application/resources/multimc/128x128/instances/ftb_glow.png Binary files differdeleted file mode 100644 index 86632b21..00000000 --- a/application/resources/multimc/128x128/instances/ftb_glow.png +++ /dev/null diff --git a/application/resources/multimc/128x128/instances/ftb_logo.png b/application/resources/multimc/128x128/instances/ftb_logo.png Binary files differdeleted file mode 100644 index e725b7fe..00000000 --- a/application/resources/multimc/128x128/instances/ftb_logo.png +++ /dev/null diff --git a/application/resources/multimc/128x128/instances/gear.png b/application/resources/multimc/128x128/instances/gear.png Binary files differdeleted file mode 100644 index 75c68a66..00000000 --- a/application/resources/multimc/128x128/instances/gear.png +++ /dev/null diff --git a/application/resources/multimc/128x128/instances/herobrine.png b/application/resources/multimc/128x128/instances/herobrine.png Binary files differdeleted file mode 100644 index 13f1494c..00000000 --- a/application/resources/multimc/128x128/instances/herobrine.png +++ /dev/null diff --git a/application/resources/multimc/128x128/instances/infinity.png b/application/resources/multimc/128x128/instances/infinity.png Binary files differdeleted file mode 100644 index cc7ca7bc..00000000 --- a/application/resources/multimc/128x128/instances/infinity.png +++ /dev/null diff --git a/application/resources/multimc/128x128/instances/magitech.png b/application/resources/multimc/128x128/instances/magitech.png Binary files differdeleted file mode 100644 index 0f81a199..00000000 --- a/application/resources/multimc/128x128/instances/magitech.png +++ /dev/null diff --git a/application/resources/multimc/128x128/instances/meat.png b/application/resources/multimc/128x128/instances/meat.png Binary files differdeleted file mode 100644 index fefc9bf1..00000000 --- a/application/resources/multimc/128x128/instances/meat.png +++ /dev/null diff --git a/application/resources/multimc/128x128/instances/netherstar.png b/application/resources/multimc/128x128/instances/netherstar.png Binary files differdeleted file mode 100644 index 132085f0..00000000 --- a/application/resources/multimc/128x128/instances/netherstar.png +++ /dev/null diff --git a/application/resources/multimc/128x128/instances/skeleton.png b/application/resources/multimc/128x128/instances/skeleton.png Binary files differdeleted file mode 100644 index 55fcf5a9..00000000 --- a/application/resources/multimc/128x128/instances/skeleton.png +++ /dev/null diff --git a/application/resources/multimc/128x128/instances/squarecreeper.png b/application/resources/multimc/128x128/instances/squarecreeper.png Binary files differdeleted file mode 100644 index c82d8406..00000000 --- a/application/resources/multimc/128x128/instances/squarecreeper.png +++ /dev/null diff --git a/application/resources/multimc/128x128/instances/steve.png b/application/resources/multimc/128x128/instances/steve.png Binary files differdeleted file mode 100644 index a07cbd2f..00000000 --- a/application/resources/multimc/128x128/instances/steve.png +++ /dev/null diff --git a/application/resources/multimc/128x128/unknown_server.png b/application/resources/multimc/128x128/unknown_server.png Binary files differdeleted file mode 100644 index ec98382d..00000000 --- a/application/resources/multimc/128x128/unknown_server.png +++ /dev/null diff --git a/application/resources/multimc/16x16/about.png b/application/resources/multimc/16x16/about.png Binary files differdeleted file mode 100644 index a6a986e1..00000000 --- a/application/resources/multimc/16x16/about.png +++ /dev/null diff --git a/application/resources/multimc/16x16/bug.png b/application/resources/multimc/16x16/bug.png Binary files differdeleted file mode 100644 index 0c5b78b4..00000000 --- a/application/resources/multimc/16x16/bug.png +++ /dev/null diff --git a/application/resources/multimc/16x16/cat.png b/application/resources/multimc/16x16/cat.png Binary files differdeleted file mode 100644 index e6e31b44..00000000 --- a/application/resources/multimc/16x16/cat.png +++ /dev/null diff --git a/application/resources/multimc/16x16/centralmods.png b/application/resources/multimc/16x16/centralmods.png Binary files differdeleted file mode 100644 index c1b91c76..00000000 --- a/application/resources/multimc/16x16/centralmods.png +++ /dev/null diff --git a/application/resources/multimc/16x16/checkupdate.png b/application/resources/multimc/16x16/checkupdate.png Binary files differdeleted file mode 100644 index f3742058..00000000 --- a/application/resources/multimc/16x16/checkupdate.png +++ /dev/null diff --git a/application/resources/multimc/16x16/copy.png b/application/resources/multimc/16x16/copy.png Binary files differdeleted file mode 100644 index ccaed9e1..00000000 --- a/application/resources/multimc/16x16/copy.png +++ /dev/null diff --git a/application/resources/multimc/16x16/coremods.png b/application/resources/multimc/16x16/coremods.png Binary files differdeleted file mode 100644 index af0f1166..00000000 --- a/application/resources/multimc/16x16/coremods.png +++ /dev/null diff --git a/application/resources/multimc/16x16/help.png b/application/resources/multimc/16x16/help.png Binary files differdeleted file mode 100644 index e6edf6ba..00000000 --- a/application/resources/multimc/16x16/help.png +++ /dev/null diff --git a/application/resources/multimc/16x16/instance-settings.png b/application/resources/multimc/16x16/instance-settings.png Binary files differdeleted file mode 100644 index b916cd24..00000000 --- a/application/resources/multimc/16x16/instance-settings.png +++ /dev/null diff --git a/application/resources/multimc/16x16/jarmods.png b/application/resources/multimc/16x16/jarmods.png Binary files differdeleted file mode 100644 index 1a97c9c0..00000000 --- a/application/resources/multimc/16x16/jarmods.png +++ /dev/null diff --git a/application/resources/multimc/16x16/loadermods.png b/application/resources/multimc/16x16/loadermods.png Binary files differdeleted file mode 100644 index b5ab3fce..00000000 --- a/application/resources/multimc/16x16/loadermods.png +++ /dev/null diff --git a/application/resources/multimc/16x16/log.png b/application/resources/multimc/16x16/log.png Binary files differdeleted file mode 100644 index efa2a0b5..00000000 --- a/application/resources/multimc/16x16/log.png +++ /dev/null diff --git a/application/resources/multimc/16x16/minecraft.png b/application/resources/multimc/16x16/minecraft.png Binary files differdeleted file mode 100644 index e9f2f2a5..00000000 --- a/application/resources/multimc/16x16/minecraft.png +++ /dev/null diff --git a/application/resources/multimc/16x16/new.png b/application/resources/multimc/16x16/new.png Binary files differdeleted file mode 100644 index 2e56f589..00000000 --- a/application/resources/multimc/16x16/new.png +++ /dev/null diff --git a/application/resources/multimc/16x16/news.png b/application/resources/multimc/16x16/news.png Binary files differdeleted file mode 100644 index 872e85db..00000000 --- a/application/resources/multimc/16x16/news.png +++ /dev/null diff --git a/application/resources/multimc/16x16/noaccount.png b/application/resources/multimc/16x16/noaccount.png Binary files differdeleted file mode 100644 index b49bcf36..00000000 --- a/application/resources/multimc/16x16/noaccount.png +++ /dev/null diff --git a/application/resources/multimc/16x16/patreon.png b/application/resources/multimc/16x16/patreon.png Binary files differdeleted file mode 100644 index 9150c478..00000000 --- a/application/resources/multimc/16x16/patreon.png +++ /dev/null diff --git a/application/resources/multimc/16x16/refresh.png b/application/resources/multimc/16x16/refresh.png Binary files differdeleted file mode 100644 index 86b6f82c..00000000 --- a/application/resources/multimc/16x16/refresh.png +++ /dev/null diff --git a/application/resources/multimc/16x16/resourcepacks.png b/application/resources/multimc/16x16/resourcepacks.png Binary files differdeleted file mode 100644 index d862f5ca..00000000 --- a/application/resources/multimc/16x16/resourcepacks.png +++ /dev/null diff --git a/application/resources/multimc/16x16/screenshots.png b/application/resources/multimc/16x16/screenshots.png Binary files differdeleted file mode 100644 index 460000d4..00000000 --- a/application/resources/multimc/16x16/screenshots.png +++ /dev/null diff --git a/application/resources/multimc/16x16/settings.png b/application/resources/multimc/16x16/settings.png Binary files differdeleted file mode 100644 index b916cd24..00000000 --- a/application/resources/multimc/16x16/settings.png +++ /dev/null diff --git a/application/resources/multimc/16x16/star.png b/application/resources/multimc/16x16/star.png Binary files differdeleted file mode 100644 index 4963e6ec..00000000 --- a/application/resources/multimc/16x16/star.png +++ /dev/null diff --git a/application/resources/multimc/16x16/status-bad.png b/application/resources/multimc/16x16/status-bad.png Binary files differdeleted file mode 100644 index 5b3f2051..00000000 --- a/application/resources/multimc/16x16/status-bad.png +++ /dev/null diff --git a/application/resources/multimc/16x16/status-good.png b/application/resources/multimc/16x16/status-good.png Binary files differdeleted file mode 100644 index 5cbdee81..00000000 --- a/application/resources/multimc/16x16/status-good.png +++ /dev/null diff --git a/application/resources/multimc/16x16/status-running.png b/application/resources/multimc/16x16/status-running.png Binary files differdeleted file mode 100644 index a4c42e39..00000000 --- a/application/resources/multimc/16x16/status-running.png +++ /dev/null diff --git a/application/resources/multimc/16x16/status-yellow.png b/application/resources/multimc/16x16/status-yellow.png Binary files differdeleted file mode 100644 index b25375d1..00000000 --- a/application/resources/multimc/16x16/status-yellow.png +++ /dev/null diff --git a/application/resources/multimc/16x16/viewfolder.png b/application/resources/multimc/16x16/viewfolder.png Binary files differdeleted file mode 100644 index 98b8a944..00000000 --- a/application/resources/multimc/16x16/viewfolder.png +++ /dev/null diff --git a/application/resources/multimc/16x16/worlds.png b/application/resources/multimc/16x16/worlds.png Binary files differdeleted file mode 100644 index 1a38f38e..00000000 --- a/application/resources/multimc/16x16/worlds.png +++ /dev/null diff --git a/application/resources/multimc/22x22/about.png b/application/resources/multimc/22x22/about.png Binary files differdeleted file mode 100644 index 57775e25..00000000 --- a/application/resources/multimc/22x22/about.png +++ /dev/null diff --git a/application/resources/multimc/22x22/bug.png b/application/resources/multimc/22x22/bug.png Binary files differdeleted file mode 100644 index 90481bba..00000000 --- a/application/resources/multimc/22x22/bug.png +++ /dev/null diff --git a/application/resources/multimc/22x22/cat.png b/application/resources/multimc/22x22/cat.png Binary files differdeleted file mode 100644 index 3ea7ba69..00000000 --- a/application/resources/multimc/22x22/cat.png +++ /dev/null diff --git a/application/resources/multimc/22x22/centralmods.png b/application/resources/multimc/22x22/centralmods.png Binary files differdeleted file mode 100644 index a10f9a2b..00000000 --- a/application/resources/multimc/22x22/centralmods.png +++ /dev/null diff --git a/application/resources/multimc/22x22/checkupdate.png b/application/resources/multimc/22x22/checkupdate.png Binary files differdeleted file mode 100644 index badb200c..00000000 --- a/application/resources/multimc/22x22/checkupdate.png +++ /dev/null diff --git a/application/resources/multimc/22x22/copy.png b/application/resources/multimc/22x22/copy.png Binary files differdeleted file mode 100644 index ea236a24..00000000 --- a/application/resources/multimc/22x22/copy.png +++ /dev/null diff --git a/application/resources/multimc/22x22/help.png b/application/resources/multimc/22x22/help.png Binary files differdeleted file mode 100644 index da79b3e3..00000000 --- a/application/resources/multimc/22x22/help.png +++ /dev/null diff --git a/application/resources/multimc/22x22/instance-settings.png b/application/resources/multimc/22x22/instance-settings.png Binary files differdeleted file mode 100644 index daf56aad..00000000 --- a/application/resources/multimc/22x22/instance-settings.png +++ /dev/null diff --git a/application/resources/multimc/22x22/new.png b/application/resources/multimc/22x22/new.png Binary files differdeleted file mode 100644 index c707fbbf..00000000 --- a/application/resources/multimc/22x22/new.png +++ /dev/null diff --git a/application/resources/multimc/22x22/news.png b/application/resources/multimc/22x22/news.png Binary files differdeleted file mode 100644 index 1953bf7b..00000000 --- a/application/resources/multimc/22x22/news.png +++ /dev/null diff --git a/application/resources/multimc/22x22/patreon.png b/application/resources/multimc/22x22/patreon.png Binary files differdeleted file mode 100644 index f2c2076c..00000000 --- a/application/resources/multimc/22x22/patreon.png +++ /dev/null diff --git a/application/resources/multimc/22x22/refresh.png b/application/resources/multimc/22x22/refresh.png Binary files differdeleted file mode 100644 index 45b5535c..00000000 --- a/application/resources/multimc/22x22/refresh.png +++ /dev/null diff --git a/application/resources/multimc/22x22/screenshots.png b/application/resources/multimc/22x22/screenshots.png Binary files differdeleted file mode 100644 index 6fb42bbd..00000000 --- a/application/resources/multimc/22x22/screenshots.png +++ /dev/null diff --git a/application/resources/multimc/22x22/settings.png b/application/resources/multimc/22x22/settings.png Binary files differdeleted file mode 100644 index daf56aad..00000000 --- a/application/resources/multimc/22x22/settings.png +++ /dev/null diff --git a/application/resources/multimc/22x22/status-bad.png b/application/resources/multimc/22x22/status-bad.png Binary files differdeleted file mode 100644 index 2707539e..00000000 --- a/application/resources/multimc/22x22/status-bad.png +++ /dev/null diff --git a/application/resources/multimc/22x22/status-good.png b/application/resources/multimc/22x22/status-good.png Binary files differdeleted file mode 100644 index f55debc3..00000000 --- a/application/resources/multimc/22x22/status-good.png +++ /dev/null diff --git a/application/resources/multimc/22x22/status-running.png b/application/resources/multimc/22x22/status-running.png Binary files differdeleted file mode 100644 index 0dffba18..00000000 --- a/application/resources/multimc/22x22/status-running.png +++ /dev/null diff --git a/application/resources/multimc/22x22/status-yellow.png b/application/resources/multimc/22x22/status-yellow.png Binary files differdeleted file mode 100644 index 481eb7f3..00000000 --- a/application/resources/multimc/22x22/status-yellow.png +++ /dev/null diff --git a/application/resources/multimc/22x22/viewfolder.png b/application/resources/multimc/22x22/viewfolder.png Binary files differdeleted file mode 100644 index b645167f..00000000 --- a/application/resources/multimc/22x22/viewfolder.png +++ /dev/null diff --git a/application/resources/multimc/22x22/worlds.png b/application/resources/multimc/22x22/worlds.png Binary files differdeleted file mode 100644 index e8825bab..00000000 --- a/application/resources/multimc/22x22/worlds.png +++ /dev/null diff --git a/application/resources/multimc/24x24/cat.png b/application/resources/multimc/24x24/cat.png Binary files differdeleted file mode 100644 index c93245f6..00000000 --- a/application/resources/multimc/24x24/cat.png +++ /dev/null diff --git a/application/resources/multimc/24x24/coremods.png b/application/resources/multimc/24x24/coremods.png Binary files differdeleted file mode 100644 index 90603d24..00000000 --- a/application/resources/multimc/24x24/coremods.png +++ /dev/null diff --git a/application/resources/multimc/24x24/jarmods.png b/application/resources/multimc/24x24/jarmods.png Binary files differdeleted file mode 100644 index 68cb8e9d..00000000 --- a/application/resources/multimc/24x24/jarmods.png +++ /dev/null diff --git a/application/resources/multimc/24x24/loadermods.png b/application/resources/multimc/24x24/loadermods.png Binary files differdeleted file mode 100644 index 250a6260..00000000 --- a/application/resources/multimc/24x24/loadermods.png +++ /dev/null diff --git a/application/resources/multimc/24x24/log.png b/application/resources/multimc/24x24/log.png Binary files differdeleted file mode 100644 index fe302053..00000000 --- a/application/resources/multimc/24x24/log.png +++ /dev/null diff --git a/application/resources/multimc/24x24/minecraft.png b/application/resources/multimc/24x24/minecraft.png Binary files differdeleted file mode 100644 index b31177c9..00000000 --- a/application/resources/multimc/24x24/minecraft.png +++ /dev/null diff --git a/application/resources/multimc/24x24/noaccount.png b/application/resources/multimc/24x24/noaccount.png Binary files differdeleted file mode 100644 index ac12437c..00000000 --- a/application/resources/multimc/24x24/noaccount.png +++ /dev/null diff --git a/application/resources/multimc/24x24/patreon.png b/application/resources/multimc/24x24/patreon.png Binary files differdeleted file mode 100644 index add80668..00000000 --- a/application/resources/multimc/24x24/patreon.png +++ /dev/null diff --git a/application/resources/multimc/24x24/resourcepacks.png b/application/resources/multimc/24x24/resourcepacks.png Binary files differdeleted file mode 100644 index 68359d39..00000000 --- a/application/resources/multimc/24x24/resourcepacks.png +++ /dev/null diff --git a/application/resources/multimc/24x24/star.png b/application/resources/multimc/24x24/star.png Binary files differdeleted file mode 100644 index 7f16618a..00000000 --- a/application/resources/multimc/24x24/star.png +++ /dev/null diff --git a/application/resources/multimc/24x24/status-bad.png b/application/resources/multimc/24x24/status-bad.png Binary files differdeleted file mode 100644 index d1547a47..00000000 --- a/application/resources/multimc/24x24/status-bad.png +++ /dev/null diff --git a/application/resources/multimc/24x24/status-good.png b/application/resources/multimc/24x24/status-good.png Binary files differdeleted file mode 100644 index 3545bc4c..00000000 --- a/application/resources/multimc/24x24/status-good.png +++ /dev/null diff --git a/application/resources/multimc/24x24/status-running.png b/application/resources/multimc/24x24/status-running.png Binary files differdeleted file mode 100644 index ecd64451..00000000 --- a/application/resources/multimc/24x24/status-running.png +++ /dev/null diff --git a/application/resources/multimc/24x24/status-yellow.png b/application/resources/multimc/24x24/status-yellow.png Binary files differdeleted file mode 100644 index dd5fde67..00000000 --- a/application/resources/multimc/24x24/status-yellow.png +++ /dev/null diff --git a/application/resources/multimc/256x256/minecraft.png b/application/resources/multimc/256x256/minecraft.png Binary files differdeleted file mode 100644 index 77e3f03e..00000000 --- a/application/resources/multimc/256x256/minecraft.png +++ /dev/null diff --git a/application/resources/multimc/32x32/about.png b/application/resources/multimc/32x32/about.png Binary files differdeleted file mode 100644 index 5174c4f1..00000000 --- a/application/resources/multimc/32x32/about.png +++ /dev/null diff --git a/application/resources/multimc/32x32/bug.png b/application/resources/multimc/32x32/bug.png Binary files differdeleted file mode 100644 index ada46653..00000000 --- a/application/resources/multimc/32x32/bug.png +++ /dev/null diff --git a/application/resources/multimc/32x32/cat.png b/application/resources/multimc/32x32/cat.png Binary files differdeleted file mode 100644 index 78ff98e9..00000000 --- a/application/resources/multimc/32x32/cat.png +++ /dev/null diff --git a/application/resources/multimc/32x32/centralmods.png b/application/resources/multimc/32x32/centralmods.png Binary files differdeleted file mode 100644 index cd2b8208..00000000 --- a/application/resources/multimc/32x32/centralmods.png +++ /dev/null diff --git a/application/resources/multimc/32x32/checkupdate.png b/application/resources/multimc/32x32/checkupdate.png Binary files differdeleted file mode 100644 index 754005f9..00000000 --- a/application/resources/multimc/32x32/checkupdate.png +++ /dev/null diff --git a/application/resources/multimc/32x32/copy.png b/application/resources/multimc/32x32/copy.png Binary files differdeleted file mode 100644 index c137b0f1..00000000 --- a/application/resources/multimc/32x32/copy.png +++ /dev/null diff --git a/application/resources/multimc/32x32/coremods.png b/application/resources/multimc/32x32/coremods.png Binary files differdeleted file mode 100644 index 770d695e..00000000 --- a/application/resources/multimc/32x32/coremods.png +++ /dev/null diff --git a/application/resources/multimc/32x32/help.png b/application/resources/multimc/32x32/help.png Binary files differdeleted file mode 100644 index b3854278..00000000 --- a/application/resources/multimc/32x32/help.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instance-settings.png b/application/resources/multimc/32x32/instance-settings.png Binary files differdeleted file mode 100644 index a9c0817c..00000000 --- a/application/resources/multimc/32x32/instance-settings.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/brick.png b/application/resources/multimc/32x32/instances/brick.png Binary files differdeleted file mode 100644 index c324fda0..00000000 --- a/application/resources/multimc/32x32/instances/brick.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/chicken.png b/application/resources/multimc/32x32/instances/chicken.png Binary files differdeleted file mode 100644 index f870467a..00000000 --- a/application/resources/multimc/32x32/instances/chicken.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/creeper.png b/application/resources/multimc/32x32/instances/creeper.png Binary files differdeleted file mode 100644 index a67ecfc3..00000000 --- a/application/resources/multimc/32x32/instances/creeper.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/diamond.png b/application/resources/multimc/32x32/instances/diamond.png Binary files differdeleted file mode 100644 index 1eb26469..00000000 --- a/application/resources/multimc/32x32/instances/diamond.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/dirt.png b/application/resources/multimc/32x32/instances/dirt.png Binary files differdeleted file mode 100644 index 9e19eb8f..00000000 --- a/application/resources/multimc/32x32/instances/dirt.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/enderpearl.png b/application/resources/multimc/32x32/instances/enderpearl.png Binary files differdeleted file mode 100644 index a818eb8e..00000000 --- a/application/resources/multimc/32x32/instances/enderpearl.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/flame.png b/application/resources/multimc/32x32/instances/flame.png Binary files differdeleted file mode 100644 index d8987338..00000000 --- a/application/resources/multimc/32x32/instances/flame.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/ftb_glow.png b/application/resources/multimc/32x32/instances/ftb_glow.png Binary files differdeleted file mode 100644 index c4e6fd5d..00000000 --- a/application/resources/multimc/32x32/instances/ftb_glow.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/ftb_logo.png b/application/resources/multimc/32x32/instances/ftb_logo.png Binary files differdeleted file mode 100644 index 20df7171..00000000 --- a/application/resources/multimc/32x32/instances/ftb_logo.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/gear.png b/application/resources/multimc/32x32/instances/gear.png Binary files differdeleted file mode 100644 index da9ba2f9..00000000 --- a/application/resources/multimc/32x32/instances/gear.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/gold.png b/application/resources/multimc/32x32/instances/gold.png Binary files differdeleted file mode 100644 index 593410fa..00000000 --- a/application/resources/multimc/32x32/instances/gold.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/grass.png b/application/resources/multimc/32x32/instances/grass.png Binary files differdeleted file mode 100644 index f1694547..00000000 --- a/application/resources/multimc/32x32/instances/grass.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/herobrine.png b/application/resources/multimc/32x32/instances/herobrine.png Binary files differdeleted file mode 100644 index e5460da3..00000000 --- a/application/resources/multimc/32x32/instances/herobrine.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/infinity.png b/application/resources/multimc/32x32/instances/infinity.png Binary files differdeleted file mode 100644 index bd94a3dc..00000000 --- a/application/resources/multimc/32x32/instances/infinity.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/iron.png b/application/resources/multimc/32x32/instances/iron.png Binary files differdeleted file mode 100644 index 3e811bd6..00000000 --- a/application/resources/multimc/32x32/instances/iron.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/magitech.png b/application/resources/multimc/32x32/instances/magitech.png Binary files differdeleted file mode 100644 index 6fd8ff60..00000000 --- a/application/resources/multimc/32x32/instances/magitech.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/meat.png b/application/resources/multimc/32x32/instances/meat.png Binary files differdeleted file mode 100644 index 6694859d..00000000 --- a/application/resources/multimc/32x32/instances/meat.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/netherstar.png b/application/resources/multimc/32x32/instances/netherstar.png Binary files differdeleted file mode 100644 index 43cb5113..00000000 --- a/application/resources/multimc/32x32/instances/netherstar.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/planks.png b/application/resources/multimc/32x32/instances/planks.png Binary files differdeleted file mode 100644 index a94b7502..00000000 --- a/application/resources/multimc/32x32/instances/planks.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/skeleton.png b/application/resources/multimc/32x32/instances/skeleton.png Binary files differdeleted file mode 100644 index 0c8d3505..00000000 --- a/application/resources/multimc/32x32/instances/skeleton.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/squarecreeper.png b/application/resources/multimc/32x32/instances/squarecreeper.png Binary files differdeleted file mode 100644 index b78c4ae0..00000000 --- a/application/resources/multimc/32x32/instances/squarecreeper.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/steve.png b/application/resources/multimc/32x32/instances/steve.png Binary files differdeleted file mode 100644 index 07c6acde..00000000 --- a/application/resources/multimc/32x32/instances/steve.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/stone.png b/application/resources/multimc/32x32/instances/stone.png Binary files differdeleted file mode 100644 index 1b6ef7a4..00000000 --- a/application/resources/multimc/32x32/instances/stone.png +++ /dev/null diff --git a/application/resources/multimc/32x32/instances/tnt.png b/application/resources/multimc/32x32/instances/tnt.png Binary files differdeleted file mode 100644 index e40d404d..00000000 --- a/application/resources/multimc/32x32/instances/tnt.png +++ /dev/null diff --git a/application/resources/multimc/32x32/jarmods.png b/application/resources/multimc/32x32/jarmods.png Binary files differdeleted file mode 100644 index 5cda173a..00000000 --- a/application/resources/multimc/32x32/jarmods.png +++ /dev/null diff --git a/application/resources/multimc/32x32/loadermods.png b/application/resources/multimc/32x32/loadermods.png Binary files differdeleted file mode 100644 index c4ca12e2..00000000 --- a/application/resources/multimc/32x32/loadermods.png +++ /dev/null diff --git a/application/resources/multimc/32x32/log.png b/application/resources/multimc/32x32/log.png Binary files differdeleted file mode 100644 index d620da12..00000000 --- a/application/resources/multimc/32x32/log.png +++ /dev/null diff --git a/application/resources/multimc/32x32/minecraft.png b/application/resources/multimc/32x32/minecraft.png Binary files differdeleted file mode 100644 index 816bec98..00000000 --- a/application/resources/multimc/32x32/minecraft.png +++ /dev/null diff --git a/application/resources/multimc/32x32/new.png b/application/resources/multimc/32x32/new.png Binary files differdeleted file mode 100644 index a3555ba4..00000000 --- a/application/resources/multimc/32x32/new.png +++ /dev/null diff --git a/application/resources/multimc/32x32/news.png b/application/resources/multimc/32x32/news.png Binary files differdeleted file mode 100644 index c579fd44..00000000 --- a/application/resources/multimc/32x32/news.png +++ /dev/null diff --git a/application/resources/multimc/32x32/noaccount.png b/application/resources/multimc/32x32/noaccount.png Binary files differdeleted file mode 100644 index a73afc94..00000000 --- a/application/resources/multimc/32x32/noaccount.png +++ /dev/null diff --git a/application/resources/multimc/32x32/patreon.png b/application/resources/multimc/32x32/patreon.png Binary files differdeleted file mode 100644 index 70085aa1..00000000 --- a/application/resources/multimc/32x32/patreon.png +++ /dev/null diff --git a/application/resources/multimc/32x32/refresh.png b/application/resources/multimc/32x32/refresh.png Binary files differdeleted file mode 100644 index afa2a9d7..00000000 --- a/application/resources/multimc/32x32/refresh.png +++ /dev/null diff --git a/application/resources/multimc/32x32/resourcepacks.png b/application/resources/multimc/32x32/resourcepacks.png Binary files differdeleted file mode 100644 index c14759ef..00000000 --- a/application/resources/multimc/32x32/resourcepacks.png +++ /dev/null diff --git a/application/resources/multimc/32x32/screenshots.png b/application/resources/multimc/32x32/screenshots.png Binary files differdeleted file mode 100644 index 4fcd6224..00000000 --- a/application/resources/multimc/32x32/screenshots.png +++ /dev/null diff --git a/application/resources/multimc/32x32/settings.png b/application/resources/multimc/32x32/settings.png Binary files differdeleted file mode 100644 index a9c0817c..00000000 --- a/application/resources/multimc/32x32/settings.png +++ /dev/null diff --git a/application/resources/multimc/32x32/star.png b/application/resources/multimc/32x32/star.png Binary files differdeleted file mode 100644 index b271f0d1..00000000 --- a/application/resources/multimc/32x32/star.png +++ /dev/null diff --git a/application/resources/multimc/32x32/status-bad.png b/application/resources/multimc/32x32/status-bad.png Binary files differdeleted file mode 100644 index 8c2c9d4f..00000000 --- a/application/resources/multimc/32x32/status-bad.png +++ /dev/null diff --git a/application/resources/multimc/32x32/status-good.png b/application/resources/multimc/32x32/status-good.png Binary files differdeleted file mode 100644 index 1a805e68..00000000 --- a/application/resources/multimc/32x32/status-good.png +++ /dev/null diff --git a/application/resources/multimc/32x32/status-running.png b/application/resources/multimc/32x32/status-running.png Binary files differdeleted file mode 100644 index f561f01a..00000000 --- a/application/resources/multimc/32x32/status-running.png +++ /dev/null diff --git a/application/resources/multimc/32x32/status-yellow.png b/application/resources/multimc/32x32/status-yellow.png Binary files differdeleted file mode 100644 index 42c68552..00000000 --- a/application/resources/multimc/32x32/status-yellow.png +++ /dev/null diff --git a/application/resources/multimc/32x32/viewfolder.png b/application/resources/multimc/32x32/viewfolder.png Binary files differdeleted file mode 100644 index 74ab8fa6..00000000 --- a/application/resources/multimc/32x32/viewfolder.png +++ /dev/null diff --git a/application/resources/multimc/32x32/worlds.png b/application/resources/multimc/32x32/worlds.png Binary files differdeleted file mode 100644 index c986596c..00000000 --- a/application/resources/multimc/32x32/worlds.png +++ /dev/null diff --git a/application/resources/multimc/48x48/about.png b/application/resources/multimc/48x48/about.png Binary files differdeleted file mode 100644 index b4ac71b8..00000000 --- a/application/resources/multimc/48x48/about.png +++ /dev/null diff --git a/application/resources/multimc/48x48/bug.png b/application/resources/multimc/48x48/bug.png Binary files differdeleted file mode 100644 index 298f9397..00000000 --- a/application/resources/multimc/48x48/bug.png +++ /dev/null diff --git a/application/resources/multimc/48x48/cat.png b/application/resources/multimc/48x48/cat.png Binary files differdeleted file mode 100644 index 25912a3c..00000000 --- a/application/resources/multimc/48x48/cat.png +++ /dev/null diff --git a/application/resources/multimc/48x48/centralmods.png b/application/resources/multimc/48x48/centralmods.png Binary files differdeleted file mode 100644 index d927e39b..00000000 --- a/application/resources/multimc/48x48/centralmods.png +++ /dev/null diff --git a/application/resources/multimc/48x48/checkupdate.png b/application/resources/multimc/48x48/checkupdate.png Binary files differdeleted file mode 100644 index 2e2c7d6b..00000000 --- a/application/resources/multimc/48x48/checkupdate.png +++ /dev/null diff --git a/application/resources/multimc/48x48/copy.png b/application/resources/multimc/48x48/copy.png Binary files differdeleted file mode 100644 index ea40e34b..00000000 --- a/application/resources/multimc/48x48/copy.png +++ /dev/null diff --git a/application/resources/multimc/48x48/help.png b/application/resources/multimc/48x48/help.png Binary files differdeleted file mode 100644 index 82d828fa..00000000 --- a/application/resources/multimc/48x48/help.png +++ /dev/null diff --git a/application/resources/multimc/48x48/instance-settings.png b/application/resources/multimc/48x48/instance-settings.png Binary files differdeleted file mode 100644 index 6674eb23..00000000 --- a/application/resources/multimc/48x48/instance-settings.png +++ /dev/null diff --git a/application/resources/multimc/48x48/log.png b/application/resources/multimc/48x48/log.png Binary files differdeleted file mode 100644 index 45f60e6b..00000000 --- a/application/resources/multimc/48x48/log.png +++ /dev/null diff --git a/application/resources/multimc/48x48/minecraft.png b/application/resources/multimc/48x48/minecraft.png Binary files differdeleted file mode 100644 index 38fc9f6c..00000000 --- a/application/resources/multimc/48x48/minecraft.png +++ /dev/null diff --git a/application/resources/multimc/48x48/new.png b/application/resources/multimc/48x48/new.png Binary files differdeleted file mode 100644 index a81753b3..00000000 --- a/application/resources/multimc/48x48/new.png +++ /dev/null diff --git a/application/resources/multimc/48x48/news.png b/application/resources/multimc/48x48/news.png Binary files differdeleted file mode 100644 index 0f82d857..00000000 --- a/application/resources/multimc/48x48/news.png +++ /dev/null diff --git a/application/resources/multimc/48x48/noaccount.png b/application/resources/multimc/48x48/noaccount.png Binary files differdeleted file mode 100644 index 4703796c..00000000 --- a/application/resources/multimc/48x48/noaccount.png +++ /dev/null diff --git a/application/resources/multimc/48x48/patreon.png b/application/resources/multimc/48x48/patreon.png Binary files differdeleted file mode 100644 index 7aec4d7d..00000000 --- a/application/resources/multimc/48x48/patreon.png +++ /dev/null diff --git a/application/resources/multimc/48x48/refresh.png b/application/resources/multimc/48x48/refresh.png Binary files differdeleted file mode 100644 index 0b08b238..00000000 --- a/application/resources/multimc/48x48/refresh.png +++ /dev/null diff --git a/application/resources/multimc/48x48/screenshots.png b/application/resources/multimc/48x48/screenshots.png Binary files differdeleted file mode 100644 index 03c0059f..00000000 --- a/application/resources/multimc/48x48/screenshots.png +++ /dev/null diff --git a/application/resources/multimc/48x48/settings.png b/application/resources/multimc/48x48/settings.png Binary files differdeleted file mode 100644 index 6674eb23..00000000 --- a/application/resources/multimc/48x48/settings.png +++ /dev/null diff --git a/application/resources/multimc/48x48/star.png b/application/resources/multimc/48x48/star.png Binary files differdeleted file mode 100644 index d9468e7e..00000000 --- a/application/resources/multimc/48x48/star.png +++ /dev/null diff --git a/application/resources/multimc/48x48/status-bad.png b/application/resources/multimc/48x48/status-bad.png Binary files differdeleted file mode 100644 index 41c9cf22..00000000 --- a/application/resources/multimc/48x48/status-bad.png +++ /dev/null diff --git a/application/resources/multimc/48x48/status-good.png b/application/resources/multimc/48x48/status-good.png Binary files differdeleted file mode 100644 index df7cb59b..00000000 --- a/application/resources/multimc/48x48/status-good.png +++ /dev/null diff --git a/application/resources/multimc/48x48/status-running.png b/application/resources/multimc/48x48/status-running.png Binary files differdeleted file mode 100644 index b8c0bf7c..00000000 --- a/application/resources/multimc/48x48/status-running.png +++ /dev/null diff --git a/application/resources/multimc/48x48/status-yellow.png b/application/resources/multimc/48x48/status-yellow.png Binary files differdeleted file mode 100644 index 4f3b11d6..00000000 --- a/application/resources/multimc/48x48/status-yellow.png +++ /dev/null diff --git a/application/resources/multimc/48x48/viewfolder.png b/application/resources/multimc/48x48/viewfolder.png Binary files differdeleted file mode 100644 index 0492a736..00000000 --- a/application/resources/multimc/48x48/viewfolder.png +++ /dev/null diff --git a/application/resources/multimc/48x48/worlds.png b/application/resources/multimc/48x48/worlds.png Binary files differdeleted file mode 100644 index 4fc33751..00000000 --- a/application/resources/multimc/48x48/worlds.png +++ /dev/null diff --git a/application/resources/multimc/50x50/instances/enderman.png b/application/resources/multimc/50x50/instances/enderman.png Binary files differdeleted file mode 100644 index 9f3a72b3..00000000 --- a/application/resources/multimc/50x50/instances/enderman.png +++ /dev/null diff --git a/application/resources/multimc/64x64/about.png b/application/resources/multimc/64x64/about.png Binary files differdeleted file mode 100644 index b83e9269..00000000 --- a/application/resources/multimc/64x64/about.png +++ /dev/null diff --git a/application/resources/multimc/64x64/bug.png b/application/resources/multimc/64x64/bug.png Binary files differdeleted file mode 100644 index 156b0315..00000000 --- a/application/resources/multimc/64x64/bug.png +++ /dev/null diff --git a/application/resources/multimc/64x64/cat.png b/application/resources/multimc/64x64/cat.png Binary files differdeleted file mode 100644 index 2cc21f80..00000000 --- a/application/resources/multimc/64x64/cat.png +++ /dev/null diff --git a/application/resources/multimc/64x64/centralmods.png b/application/resources/multimc/64x64/centralmods.png Binary files differdeleted file mode 100644 index 8831f437..00000000 --- a/application/resources/multimc/64x64/centralmods.png +++ /dev/null diff --git a/application/resources/multimc/64x64/checkupdate.png b/application/resources/multimc/64x64/checkupdate.png Binary files differdeleted file mode 100644 index dd1e29ac..00000000 --- a/application/resources/multimc/64x64/checkupdate.png +++ /dev/null diff --git a/application/resources/multimc/64x64/copy.png b/application/resources/multimc/64x64/copy.png Binary files differdeleted file mode 100644 index d12cf9c8..00000000 --- a/application/resources/multimc/64x64/copy.png +++ /dev/null diff --git a/application/resources/multimc/64x64/coremods.png b/application/resources/multimc/64x64/coremods.png Binary files differdeleted file mode 100644 index 668be334..00000000 --- a/application/resources/multimc/64x64/coremods.png +++ /dev/null diff --git a/application/resources/multimc/64x64/help.png b/application/resources/multimc/64x64/help.png Binary files differdeleted file mode 100644 index 0f3948c2..00000000 --- a/application/resources/multimc/64x64/help.png +++ /dev/null diff --git a/application/resources/multimc/64x64/instance-settings.png b/application/resources/multimc/64x64/instance-settings.png Binary files differdeleted file mode 100644 index e3ff58fa..00000000 --- a/application/resources/multimc/64x64/instance-settings.png +++ /dev/null diff --git a/application/resources/multimc/64x64/jarmods.png b/application/resources/multimc/64x64/jarmods.png Binary files differdeleted file mode 100644 index 55d1a42a..00000000 --- a/application/resources/multimc/64x64/jarmods.png +++ /dev/null diff --git a/application/resources/multimc/64x64/loadermods.png b/application/resources/multimc/64x64/loadermods.png Binary files differdeleted file mode 100644 index 24618fd0..00000000 --- a/application/resources/multimc/64x64/loadermods.png +++ /dev/null diff --git a/application/resources/multimc/64x64/log.png b/application/resources/multimc/64x64/log.png Binary files differdeleted file mode 100644 index 0f531cdf..00000000 --- a/application/resources/multimc/64x64/log.png +++ /dev/null diff --git a/application/resources/multimc/64x64/new.png b/application/resources/multimc/64x64/new.png Binary files differdeleted file mode 100644 index c3c6796c..00000000 --- a/application/resources/multimc/64x64/new.png +++ /dev/null diff --git a/application/resources/multimc/64x64/news.png b/application/resources/multimc/64x64/news.png Binary files differdeleted file mode 100644 index e306eed3..00000000 --- a/application/resources/multimc/64x64/news.png +++ /dev/null diff --git a/application/resources/multimc/64x64/patreon.png b/application/resources/multimc/64x64/patreon.png Binary files differdeleted file mode 100644 index ef5d690e..00000000 --- a/application/resources/multimc/64x64/patreon.png +++ /dev/null diff --git a/application/resources/multimc/64x64/refresh.png b/application/resources/multimc/64x64/refresh.png Binary files differdeleted file mode 100644 index 8373d819..00000000 --- a/application/resources/multimc/64x64/refresh.png +++ /dev/null diff --git a/application/resources/multimc/64x64/resourcepacks.png b/application/resources/multimc/64x64/resourcepacks.png Binary files differdeleted file mode 100644 index fb874e7d..00000000 --- a/application/resources/multimc/64x64/resourcepacks.png +++ /dev/null diff --git a/application/resources/multimc/64x64/screenshots.png b/application/resources/multimc/64x64/screenshots.png Binary files differdeleted file mode 100644 index af18e39c..00000000 --- a/application/resources/multimc/64x64/screenshots.png +++ /dev/null diff --git a/application/resources/multimc/64x64/settings.png b/application/resources/multimc/64x64/settings.png Binary files differdeleted file mode 100644 index e3ff58fa..00000000 --- a/application/resources/multimc/64x64/settings.png +++ /dev/null diff --git a/application/resources/multimc/64x64/star.png b/application/resources/multimc/64x64/star.png Binary files differdeleted file mode 100644 index 4ed5d978..00000000 --- a/application/resources/multimc/64x64/star.png +++ /dev/null diff --git a/application/resources/multimc/64x64/status-bad.png b/application/resources/multimc/64x64/status-bad.png Binary files differdeleted file mode 100644 index 64060ba0..00000000 --- a/application/resources/multimc/64x64/status-bad.png +++ /dev/null diff --git a/application/resources/multimc/64x64/status-good.png b/application/resources/multimc/64x64/status-good.png Binary files differdeleted file mode 100644 index e862ddcd..00000000 --- a/application/resources/multimc/64x64/status-good.png +++ /dev/null diff --git a/application/resources/multimc/64x64/status-running.png b/application/resources/multimc/64x64/status-running.png Binary files differdeleted file mode 100644 index 38afda0f..00000000 --- a/application/resources/multimc/64x64/status-running.png +++ /dev/null diff --git a/application/resources/multimc/64x64/status-yellow.png b/application/resources/multimc/64x64/status-yellow.png Binary files differdeleted file mode 100644 index 3d54d320..00000000 --- a/application/resources/multimc/64x64/status-yellow.png +++ /dev/null diff --git a/application/resources/multimc/64x64/viewfolder.png b/application/resources/multimc/64x64/viewfolder.png Binary files differdeleted file mode 100644 index 7d531f9c..00000000 --- a/application/resources/multimc/64x64/viewfolder.png +++ /dev/null diff --git a/application/resources/multimc/64x64/worlds.png b/application/resources/multimc/64x64/worlds.png Binary files differdeleted file mode 100644 index 1d40f1df..00000000 --- a/application/resources/multimc/64x64/worlds.png +++ /dev/null diff --git a/application/resources/multimc/8x8/noaccount.png b/application/resources/multimc/8x8/noaccount.png Binary files differdeleted file mode 100644 index 466e4c07..00000000 --- a/application/resources/multimc/8x8/noaccount.png +++ /dev/null diff --git a/application/resources/multimc/index.theme b/application/resources/multimc/index.theme deleted file mode 100644 index 6061b7f8..00000000 --- a/application/resources/multimc/index.theme +++ /dev/null @@ -1,58 +0,0 @@ -[Icon Theme] -Name=multimc -Comment=MultiMC Default Icons -Inherits=default -Directories=8x8,16x16,22x22,24x24,32x32,32x32/instances,48x48,50x50/instances,64x64,128x128/instances,256x256,scalable,scalable/instances - -[8x8] -Size=8 - -[16x16] -Size=16 - -[22x22] -Size=22 - -[24x24] -Size=24 - -[32x32] -Size=32 - -[32x32/instances] -Size=32 -MinSize=1 -MaxSize=32 - -[48x48] -Size=48 - -[50x50/instances] -Size=50 - -[64x64] -Size=64 - -[128x128] -Size=128 -MinSize=33 -MaxSize=128 - -[128x128/instances] -Size=128 -MinSize=33 -MaxSize=128 - -[256x256] -Size=256 - -[scalable] -Size=48 -Type=Scalable -MinSize=16 -MaxSize=256 - -[scalable/instances] -Size=128 -MinSize=16 -MaxSize=256 diff --git a/application/resources/multimc/multimc.qrc b/application/resources/multimc/multimc.qrc deleted file mode 100644 index 249e8e28..00000000 --- a/application/resources/multimc/multimc.qrc +++ /dev/null @@ -1,320 +0,0 @@ -<!DOCTYPE RCC> -<RCC version="1.0"> - <qresource prefix="/icons/multimc"> - <file>index.theme</file> - <!-- Logo. Our own. For use in branding. --> - <file>scalable/logo.svg</file> - - <!-- Logo. Our own. For use within the application (Settings pages and similar). --> - <file>scalable/multimc.svg</file> - - <!-- REDDIT logo icon, needs reddit license! --> - <file>scalable/reddit-alien.svg</file> - - <!-- Icon for CurseForge. Unknown license? --> - <file alias="32x32/flame.png">32x32/instances/flame.png</file> - <file alias="128x128/flame.png">128x128/instances/flame.png</file> - - <!-- technic logo icon --> - <file>scalable/technic.svg</file> - - <!-- ATLauncher logo icon (and related bits) --> - <file>scalable/atlauncher.svg</file> - <file>scalable/atlauncher-placeholder.png</file> - - <!-- A proxy icon. Our own. SSSsss --> - <file>scalable/proxy.svg</file> - - <!-- A free language icon. http://www.languageicon.org/ --> - <file>scalable/language.svg</file> - - <!-- Java icon. From Oracle, fixed because it was derpy. --> - <file>scalable/java.svg</file> - - <!-- Star, CC-BY-SA 3.0, Oxygen icons.--> - <file>16x16/star.png</file> - <file>24x24/star.png</file> - <file>32x32/star.png</file> - <file>48x48/star.png</file> - <file>64x64/star.png</file> - - <!-- "folder-remote", CC-BY-SA 3.0, Oxygen icons. Used for the worlds folder--> - <file>16x16/worlds.png</file> - <file>22x22/worlds.png</file> - <file>32x32/worlds.png</file> - <file>48x48/worlds.png</file> - <file>64x64/worlds.png</file> - - <!-- Minecraft icon. Source: http://www.minecraftforum.net/forums/show-your-creation/fan-art/1574882-icon-better-minecraft-icon --> - <file>16x16/minecraft.png</file> - <file>24x24/minecraft.png</file> - <file>32x32/minecraft.png</file> - <file>48x48/minecraft.png</file> - <file>256x256/minecraft.png</file> - - <!-- About dialog. GPLv2, http://openiconlibrary.sourceforge.net/gallery2/?./Icons/actions/help-contents.png --> - <file>16x16/about.png</file> - <file>22x22/about.png</file> - <file>32x32/about.png</file> - <file>48x48/about.png</file> - <file>64x64/about.png</file> - - <!-- Report bug. Our own. --> - <file>scalable/bug.svg</file> - <file>16x16/bug.png</file> - <file>22x22/bug.png</file> - <file>32x32/bug.png</file> - <file>48x48/bug.png</file> - <file>64x64/bug.png</file> - - <!-- Screenshots. Our own. --> - <!-- frame is adapted and simplified from http://www.wpclipart.com/page_frames/picture_frames/golden_picture_frame.png.html --> - <file>16x16/screenshots.png</file> - <file>22x22/screenshots.png</file> - <file>32x32/screenshots.png</file> - <file>48x48/screenshots.png</file> - <file>64x64/screenshots.png</file> - <file>scalable/screenshots.svg</file> - - <!-- Custom commands. --> - <file>scalable/custom-commands.svg</file> - - <!-- Patron logo. (C) 2014 Patreon, Inc., http://www.patreon.com/toolbox?ftyp=media --> - <file>16x16/patreon.png</file> - <file>22x22/patreon.png</file> - <file>24x24/patreon.png</file> - <file>32x32/patreon.png</file> - <file>48x48/patreon.png</file> - <file>64x64/patreon.png</file> - - <!-- The cat button. Freeware, http://findicons.com/icon/73096/black_cat --> - <file>16x16/cat.png</file> - <file>22x22/cat.png</file> - <file>24x24/cat.png</file> - <file>32x32/cat.png</file> - <file>48x48/cat.png</file> - <file>64x64/cat.png</file> - - <!-- Show mods folder. CC-BY-SA 3.0 http://openiconlibrary.sourceforge.net/gallery2/?./Icons/places/oxygen-style/folder-favorites.png --> - <file>scalable/centralmods.svg</file> - <file>16x16/centralmods.png</file> - <file>22x22/centralmods.png</file> - <file>32x32/centralmods.png</file> - <file>48x48/centralmods.png</file> - <file>64x64/centralmods.png</file> - - <!-- Update. GPLv2, https://code.google.com/p/gnome-colors/ --> - <file>scalable/checkupdate.svg</file> - <file>16x16/checkupdate.png</file> - <file>22x22/checkupdate.png</file> - <file>32x32/checkupdate.png</file> - <file>48x48/checkupdate.png</file> - <file>64x64/checkupdate.png</file> - - <!-- copy instance. CC-BY-SA 3.0, http://openiconlibrary.sourceforge.net/gallery2/?./Icons/actions/edit-copy-6.png --> - <file>16x16/copy.png</file> - <file>22x22/copy.png</file> - <file>32x32/copy.png</file> - <file>48x48/copy.png</file> - <file>64x64/copy.png</file> - - <!-- Help. CC-BY-SA 3.0, http://openiconlibrary.sourceforge.net/gallery2/?./Icons/actions/help.png --> - <file>16x16/help.png</file> - <file>22x22/help.png</file> - <file>32x32/help.png</file> - <file>48x48/help.png</file> - <file>64x64/help.png</file> - - <!-- New instance. GPLv2, http://openiconlibrary.sourceforge.net/gallery2/?./Icons/actions/document-new-3.png --> - <file>16x16/new.png</file> - <file>22x22/new.png</file> - <file>32x32/new.png</file> - <file>48x48/new.png</file> - <file>64x64/new.png</file> - - <!-- Open news. Our own. --> - <file>scalable/news.svg</file> - <file>16x16/news.png</file> - <file>22x22/news.png</file> - <file>32x32/news.png</file> - <file>48x48/news.png</file> - <file>64x64/news.png</file> - - <!-- Bad status. Our own. --> - <file>16x16/status-bad.png</file> - <file>24x24/status-bad.png</file> - <file>22x22/status-bad.png</file> - <file>32x32/status-bad.png</file> - <file>48x48/status-bad.png</file> - <file>64x64/status-bad.png</file> - - <!-- Good status. Our own. --> - <file>16x16/status-good.png</file> - <file>24x24/status-good.png</file> - <file>22x22/status-good.png</file> - <file>32x32/status-good.png</file> - <file>48x48/status-good.png</file> - <file>64x64/status-good.png</file> - - <!-- Yellow status. Whatever that means... Our own. --> - <file>16x16/status-yellow.png</file> - <file>24x24/status-yellow.png</file> - <file>22x22/status-yellow.png</file> - <file>32x32/status-yellow.png</file> - <file>48x48/status-yellow.png</file> - <file>64x64/status-yellow.png</file> - - <!-- A status icon for things that are in progress/running... Our own. --> - <file>16x16/status-running.png</file> - <file>24x24/status-running.png</file> - <file>22x22/status-running.png</file> - <file>32x32/status-running.png</file> - <file>48x48/status-running.png</file> - <file>64x64/status-running.png</file> - <file>scalable/status-running.svg</file> - - <!-- Plugin (blue recolor), CC-BY-SA 3.0, Oxygen icons. --> - <file>16x16/loadermods.png</file> - <file>24x24/loadermods.png</file> - <file>32x32/loadermods.png</file> - <file>64x64/loadermods.png</file> - - <!-- Plugin (red recolor), CC-BY-SA 3.0, Oxygen icons. --> - <file>16x16/jarmods.png</file> - <file>24x24/jarmods.png</file> - <file>32x32/jarmods.png</file> - <file>64x64/jarmods.png</file> - - <!-- Plugin (green original), CC-BY-SA 3.0, Oxygen icons. --> - <file>16x16/coremods.png</file> - <file>24x24/coremods.png</file> - <file>32x32/coremods.png</file> - <file>64x64/coremods.png</file> - - <!-- Resource packs, CC-BY-SA 3.0, Oxygen icons. --> - <file>16x16/resourcepacks.png</file> - <file>24x24/resourcepacks.png</file> - <file>32x32/resourcepacks.png</file> - <file>64x64/resourcepacks.png</file> - - <!-- Refresh, CC-BY-SA 3.0, Oxygen icons. --> - <file>16x16/refresh.png</file> - <file>22x22/refresh.png</file> - <file>32x32/refresh.png</file> - <file>48x48/refresh.png</file> - <file>64x64/refresh.png</file> - - <!-- Settings, LGPL-2.1, http://openiconlibrary.sourceforge.net/gallery2/?./Icons/apps/system-settings-3.png --> - <file>16x16/settings.png</file> - <file>22x22/settings.png</file> - <file>32x32/settings.png</file> - <file>48x48/settings.png</file> - <file>64x64/settings.png</file> - - <!-- Same, used for instance settings --> - <file>16x16/instance-settings.png</file> - <file>22x22/instance-settings.png</file> - <file>32x32/instance-settings.png</file> - <file>48x48/instance-settings.png</file> - <file>64x64/instance-settings.png</file> - - <!-- View folder. CC-BY-SA 3.0, http://openiconlibrary.sourceforge.net/gallery2/?./Icons/actions/document-open-folder.png --> - <file>scalable/viewfolder.svg</file> - <file>16x16/viewfolder.png</file> - <file>22x22/viewfolder.png</file> - <file>32x32/viewfolder.png</file> - <file>48x48/viewfolder.png</file> - <file>64x64/viewfolder.png</file> - - <!-- Default minecraft skin, desaturated, cutout of head, Mojang --> - <file>8x8/noaccount.png</file> - <file>16x16/noaccount.png</file> - <file>24x24/noaccount.png</file> - <file>32x32/noaccount.png</file> - <file>48x48/noaccount.png</file> - - <!-- and the same again. TODO: make a nice accounts icon --> - <file alias="8x8/accounts.png">8x8/noaccount.png</file> - <file alias="16x16/accounts.png">16x16/noaccount.png</file> - <file alias="24x24/accounts.png">24x24/noaccount.png</file> - <file alias="32x32/accounts.png">32x32/noaccount.png</file> - <file alias="48x48/accounts.png">48x48/noaccount.png</file> - - <!-- Log file, LGPL, http://www.iconarchive.com/show/crystal-clear-icons-by-everaldo/Mimetype-text-icon.html --> - <file>16x16/log.png</file> - <file>24x24/log.png</file> - <file>32x32/log.png</file> - <file>48x48/log.png</file> - <file>64x64/log.png</file> - - <!-- placeholder for minecraft servers --> - <file>128x128/unknown_server.png</file> - - <!-- placeholder when loading screenshot images --> - <file>scalable/screenshot-placeholder.svg</file> - - <!-- discord logo icon thing. from discord. traced from bitmap --> - <file>scalable/discord.svg</file> - - <!-- instance icons --> - <file>32x32/instances/chicken.png</file> - <file>128x128/instances/chicken.png</file> - - <file>32x32/instances/creeper.png</file> - <file>128x128/instances/creeper.png</file> - - <file>32x32/instances/enderpearl.png</file> - <file>128x128/instances/enderpearl.png</file> - - <file>32x32/instances/ftb_glow.png</file> - <file>128x128/instances/ftb_glow.png</file> - - <file>32x32/instances/ftb_logo.png</file> - <file>128x128/instances/ftb_logo.png</file> - - <file>32x32/instances/flame.png</file> - <file>128x128/instances/flame.png</file> - - <file>32x32/instances/gear.png</file> - <file>128x128/instances/gear.png</file> - - <file>32x32/instances/herobrine.png</file> - <file>128x128/instances/herobrine.png</file> - - <file>32x32/instances/infinity.png</file> - <file>128x128/instances/infinity.png</file> - - <file>32x32/instances/magitech.png</file> - <file>128x128/instances/magitech.png</file> - - <file>32x32/instances/meat.png</file> - <file>128x128/instances/meat.png</file> - - <file>32x32/instances/netherstar.png</file> - <file>128x128/instances/netherstar.png</file> - - <file>32x32/instances/skeleton.png</file> - <file>128x128/instances/skeleton.png</file> - - <file>32x32/instances/squarecreeper.png</file> - <file>128x128/instances/squarecreeper.png</file> - - <file>32x32/instances/steve.png</file> - <file>128x128/instances/steve.png</file> - - <file>32x32/instances/brick.png</file> - <file>32x32/instances/diamond.png</file> - <file>32x32/instances/dirt.png</file> - <file>32x32/instances/gold.png</file> - <file>32x32/instances/grass.png</file> - <file>32x32/instances/iron.png</file> - <file>32x32/instances/planks.png</file> - <file>32x32/instances/stone.png</file> - <file>32x32/instances/tnt.png</file> - - <file>50x50/instances/enderman.png</file> - - <file>scalable/instances/fox.svg</file> - <file>scalable/instances/bee.svg</file> - </qresource> -</RCC> diff --git a/application/resources/multimc/scalable/atlauncher-placeholder.png b/application/resources/multimc/scalable/atlauncher-placeholder.png Binary files differdeleted file mode 100644 index f4314c43..00000000 --- a/application/resources/multimc/scalable/atlauncher-placeholder.png +++ /dev/null diff --git a/application/resources/multimc/scalable/atlauncher.svg b/application/resources/multimc/scalable/atlauncher.svg deleted file mode 100644 index 1bb5f359..00000000 --- a/application/resources/multimc/scalable/atlauncher.svg +++ /dev/null @@ -1,15 +0,0 @@ -<svg viewBox="0 0 2084 2084" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" - stroke-linejoin="round" stroke-miterlimit="2"> - <g fill-rule="nonzero"> - <path d="M1041.67 81.38l272.437 159.032-825.246 478.685-272.438-157.971L1041.67 81.38zm87.28 371.074l274.024-159.032 463.937 271.945-276.14 153.73-461.821-266.643z" - fill="#3b3b3b"/> - <path d="M216.42 561.126v961.081l825.247 479.746V1684.95l-551.222-321.774-1.587-644.079L216.42 561.126z" - fill="#2e2e2e"/> - <path d="M1866.91 1517.97l-825.246 483.986v-317.003l550.164-320.714-1.058-645.139 276.14-153.73v952.6z" - fill="#333"/> - <path d="M1590.77 719.097l-549.106 310.112v165.393l214.246-122.984v488.757l138.599-81.106V989.451l196.261-115.563V719.097z" - fill="#89c236"/> - <path d="M488.858 719.097l1.587 644.079 152.353 90.118v-198.79l230.645 132.527v199.319l168.753 98.6v-655.741L488.858 719.097zm383.527 531.166l-227.471-131.466v-150.02l227.471 127.225v154.261z" - fill="#7baf31"/> - </g> -</svg> diff --git a/application/resources/multimc/scalable/bug.svg b/application/resources/multimc/scalable/bug.svg deleted file mode 100644 index 178e3c23..00000000 --- a/application/resources/multimc/scalable/bug.svg +++ /dev/null @@ -1,387 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="32" - height="32" - id="svg2" - version="1.1" - inkscape:version="0.48.4 r9939" - sodipodi:docname="bug.svg" - inkscape:export-filename="/home/peterix/minecraft/src/MultiMC5/resources/multimc/64x64/bug.png" - inkscape:export-xdpi="180" - inkscape:export-ydpi="180"> - <defs - id="defs4"> - <linearGradient - id="linearGradient4218"> - <stop - id="stop4220" - offset="0" - style="stop-color:#000000;stop-opacity:0.18222222" /> - <stop - id="stop4222" - offset="1" - style="stop-color:#ffffff;stop-opacity:0" /> - </linearGradient> - <linearGradient - id="linearGradient4204"> - <stop - style="stop-color:#ffffff;stop-opacity:0.2;" - offset="0" - id="stop4206" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4208" /> - </linearGradient> - <linearGradient - id="linearGradient3928"> - <stop - style="stop-color:#ee2200;stop-opacity:1;" - offset="0" - id="stop3930" /> - <stop - style="stop-color:#5d0000;stop-opacity:1" - offset="1" - id="stop3932" /> - </linearGradient> - <linearGradient - id="linearGradient3914"> - <stop - style="stop-color:#d41e00;stop-opacity:1;" - offset="0" - id="stop3916" /> - <stop - style="stop-color:#560000;stop-opacity:1" - offset="1" - id="stop3918" /> - </linearGradient> - <filter - inkscape:collect="always" - id="filter3982" - x="-0.1382716" - width="1.2765432" - y="-0.1382716" - height="1.2765432"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.17283951" - id="feGaussianBlur3984" /> - </filter> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3928" - id="radialGradient4007" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.1999988,1.6000096,-0.64514251,0.48385298,660.86724,457.21535)" - cx="50" - cy="1039.8744" - fx="50" - fy="1039.8744" - r="5" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3914" - id="radialGradient4009" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.9840484,3.4721317,-1.0766621,0.61522625,1063.4143,213.8808)" - cx="53.469341" - cy="1036.8372" - fx="53.469341" - fy="1036.8372" - r="4.0321208" /> - <filter - inkscape:collect="always" - id="filter4097"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.55555556" - id="feGaussianBlur4099" /> - </filter> - <filter - inkscape:collect="always" - id="filter4161"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.12345679" - id="feGaussianBlur4163" /> - </filter> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3928" - id="radialGradient4174" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(-1.195069,-1.6036951,1.3789506,-1.0275877,-1295.4553,2174.0912)" - cx="49.742828" - cy="1033.5878" - fx="49.742828" - fy="1033.5878" - r="5" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4204" - id="linearGradient4212" - x1="70.5" - y1="1035.3622" - x2="69" - y2="1036.8622" - gradientUnits="userSpaceOnUse" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4218" - id="linearGradient4216" - x1="84" - y1="1035.3622" - x2="85" - y2="1034.3622" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-15,-1.5)" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3928" - id="radialGradient4237" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(-1.195069,-1.6036951,1.3789506,-1.0275877,-1295.4553,2174.0912)" - cx="49.742828" - cy="1033.5878" - fx="49.742828" - fy="1033.5878" - r="5" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4204" - id="linearGradient4239" - gradientUnits="userSpaceOnUse" - x1="70.5" - y1="1035.3622" - x2="69" - y2="1036.8622" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4218" - id="linearGradient4241" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-15,-1.5)" - x1="84" - y1="1035.3622" - x2="85" - y2="1034.3622" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="1" - inkscape:cx="-143.08597" - inkscape:cy="-12.323554" - inkscape:document-units="px" - inkscape:current-layer="g3986" - showgrid="false" - inkscape:window-width="1680" - inkscape:window-height="1026" - inkscape:window-x="-3" - inkscape:window-y="-4" - inkscape:window-maximized="1"> - <inkscape:grid - type="xygrid" - id="grid2985" - empspacing="4" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-1020.3622)"> - <path - inkscape:connector-curvature="0" - id="rect4013" - d="m 10.25,1022.0497 0,4 -4,4 -4,0 0,2 4,0 0,2 c 2e-6,1.4503 0.117423,2.7742 0.3125,4 l -4.3125,0 0,2 4.75,0 c 0.379006,1.4252 0.851671,2.6914 1.46875,3.7813 l -2.21875,2.2187 0,2 2,0 1.875,-1.875 c 1.218087,1.3481 2.651451,2.2896 4.125,2.9375 l 0,2.9375 2,0 0,-2.25 c 5.000011,1.25 10.000061,-0.7499 10,-3.75 2.599309,0 4.428024,-3.7452 4.0625,-8 l 1.9375,0 0,-2 -2.25,0 c -0.338089,-1.3524 -0.923138,-2.7153 -1.78125,-3.9687 l 2.03125,-2.0313 0,-2 -2,0 -1.875,1.875 c -1.104498,-0.9979 -2.47625,-1.8385 -4.125,-2.5 l 0,-3.375 -2,0 0,2.75 c -1.736548,-0.4618 -3.716809,-0.75 -6,-0.75 l -2,0 0,-4 -2,0 z" - style="opacity:0.69037655;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter4097)" /> - <g - id="g3986" - transform="matrix(2,0,0,2,-89,-1043.3622)"> - <rect - transform="translate(0,1020.3622)" - y="24" - x="51" - height="3" - width="1" - id="rect3876" - style="fill:#000000;fill-opacity:1;stroke:none" /> - <rect - y="1040.3622" - x="45.5" - height="1" - width="2.5" - id="rect3874" - style="fill:#000000;fill-opacity:1;stroke:none" /> - <path - transform="translate(0,1020.3622)" - inkscape:connector-curvature="0" - id="path3878" - d="m 46.5,24.5 1,0.5 2,-2 0.5,0 -1,-1 z" - style="fill:#000000;stroke:none" - sodipodi:nodetypes="cccccc" /> - <rect - transform="translate(0,1020.3622)" - y="19" - x="58" - height="1" - width="2" - id="rect3870" - style="fill:#000000;fill-opacity:1;stroke:none" /> - <path - transform="translate(0,1020.3622)" - inkscape:connector-curvature="0" - id="path3868" - d="M 57,16.5 58.5,15 59,16 57.5,17.5 C 56.533856,16.56406 55.788428,17.105786 57,16.5 z" - style="fill:#000000;stroke:none" - sodipodi:nodetypes="ccccc" /> - <path - transform="translate(0,1020.3622)" - inkscape:connector-curvature="0" - id="path3866" - d="m 47,18 0,-2 2,-2 2,0 c 0.815212,1.242754 1.053351,2.549628 0,4 -1.239551,0.522502 -2.476067,1.061913 -4,0 z" - style="fill:#333333;stroke:none" - sodipodi:nodetypes="cccccc" /> - <rect - transform="translate(0,1020.3622)" - y="13" - x="54" - height="2" - width="1" - id="rect3872" - style="fill:#000000;fill-opacity:1;stroke:none" /> - <rect - transform="translate(0,1020.3622)" - y="12" - x="49" - height="3" - width="1" - id="rect3880" - style="fill:#000000;fill-opacity:1;stroke:none" /> - <rect - transform="translate(0,1020.3622)" - y="16" - x="45" - height="1" - width="3" - id="rect3882" - style="fill:#000000;fill-opacity:1;stroke:none" /> - <path - sodipodi:nodetypes="ccccccc" - style="opacity:0.80753138;fill:#1a1a1a;stroke:none;filter:url(#filter3982)" - d="m 47.75,1039.1747 0.140625,-2.1562 0.640625,-1.2032 1.125,-0.8125 2.03125,-0.062 -0.21875,3.9375 z" - id="path3948" - inkscape:connector-curvature="0" /> - <g - id="g4232" - transform="translate(-17,5.5)"> - <path - inkscape:connector-curvature="0" - id="path4165" - d="m 68,1028.8622 c 0.803076,1.5119 0.470137,2.7762 0,4 -1.461682,0.7487 -2.788281,0.7094 -4,0 1.5e-5,10 10.000061,9.0001 10,6 3.000056,0 4.000023,-10 -6,-10 z" - style="fill:url(#radialGradient4237);fill-opacity:1;stroke:none" /> - <path - style="fill:url(#linearGradient4239);fill-opacity:1;stroke:none" - d="m 68,1032.8622 6,6 c 6.1e-5,3.0001 -9.999985,4 -10,-6 1.211719,0.7094 2.538318,0.7487 4,0 z" - id="path4194" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccc" /> - <path - sodipodi:nodetypes="cccc" - inkscape:connector-curvature="0" - id="path4196" - d="m 68,1032.8622 5.999942,6 c 3.000056,0 4.000029,-10 -5.999994,-10 0.803076,1.5119 0.470189,2.7762 5.2e-5,4 z" - style="fill:url(#linearGradient4241);fill-opacity:1;stroke:none" /> - </g> - <path - transform="matrix(1.5,0,0,1.5,-27.5,1011.8622)" - d="M 54,16.5 C 54,16.776142 53.776142,17 53.5,17 53.223858,17 53,16.776142 53,16.5 53,16.223858 53.223858,16 53.5,16 c 0.276142,0 0.5,0.223858 0.5,0.5 z" - sodipodi:ry="0.5" - sodipodi:rx="0.5" - sodipodi:cy="16.5" - sodipodi:cx="53.5" - id="path3936" - style="fill:#000000;fill-opacity:1;stroke:none" - sodipodi:type="arc" /> - <path - transform="matrix(1.5,0,0,1.5,-28,1010.8622)" - d="M 56,18.5 C 56,18.776142 55.776142,19 55.5,19 55.223858,19 55,18.776142 55,18.5 55,18.223858 55.223858,18 55.5,18 c 0.276142,0 0.5,0.223858 0.5,0.5 z" - sodipodi:ry="0.5" - sodipodi:rx="0.5" - sodipodi:cy="18.5" - sodipodi:cx="55.5" - id="path3938" - style="fill:#000000;fill-opacity:1;stroke:none" - sodipodi:type="arc" /> - <path - transform="matrix(1.5,0,0,1.5,-25,1009.3622)" - d="M 50,20.5 C 50,20.776142 49.776142,21 49.5,21 49.223858,21 49,20.776142 49,20.5 49,20.223858 49.223858,20 49.5,20 c 0.276142,0 0.5,0.223858 0.5,0.5 z" - sodipodi:ry="0.5" - sodipodi:rx="0.5" - sodipodi:cy="20.5" - sodipodi:cx="49.5" - id="path3940" - style="fill:#000000;fill-opacity:1;stroke:none" - sodipodi:type="arc" /> - <path - transform="matrix(1.5,0,0,1.5,-26,1008.8622)" - d="M 52,22.5 C 52,22.776142 51.776142,23 51.5,23 51.223858,23 51,22.776142 51,22.5 51,22.223858 51.223858,22 51.5,22 c 0.276142,0 0.5,0.223858 0.5,0.5 z" - sodipodi:ry="0.5" - sodipodi:rx="0.5" - sodipodi:cy="22.5" - sodipodi:cx="51.5" - id="path3942" - style="fill:#000000;fill-opacity:1;stroke:none" - sodipodi:type="arc" /> - <path - transform="matrix(1.5,0,0,1.5,-26.5,1009.3622)" - d="M 54,23.5 C 54,23.776142 53.776142,24 53.5,24 53.223858,24 53,23.776142 53,23.5 53,23.223858 53.223858,23 53.5,23 c 0.276142,0 0.5,0.223858 0.5,0.5 z" - sodipodi:ry="0.5" - sodipodi:rx="0.5" - sodipodi:cy="23.5" - sodipodi:cx="53.5" - id="path3944" - style="fill:#000000;fill-opacity:1;stroke:none" - sodipodi:type="arc" /> - <path - transform="matrix(1.5,0,0,1.5,-27.5,1010.3622)" - d="M 57,20.5 C 57,20.776142 56.776142,21 56.5,21 56.223858,21 56,20.776142 56,20.5 56,20.223858 56.223858,20 56.5,20 c 0.276142,0 0.5,0.223858 0.5,0.5 z" - sodipodi:ry="0.5" - sodipodi:rx="0.5" - sodipodi:cy="20.5" - sodipodi:cx="56.5" - id="path3946" - style="fill:#000000;fill-opacity:1;stroke:none" - sodipodi:type="arc" /> - </g> - </g> -</svg> diff --git a/application/resources/multimc/scalable/centralmods.svg b/application/resources/multimc/scalable/centralmods.svg deleted file mode 100644 index a8b123d0..00000000 --- a/application/resources/multimc/scalable/centralmods.svg +++ /dev/null @@ -1,346 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --><svg height="128" id="svg2811" inkscape:export-filename="/home/pinheiro/pics/oxygen/scalable/places/folder-bookmarks.png" inkscape:export-xdpi="360" inkscape:export-ydpi="360" inkscape:output_extension="org.inkscape.output.svgz.inkscape" inkscape:version="0.46" sodipodi:docbase="/home/david/oxygen/trunk/scalable/places" sodipodi:docname="folder-bookmarks.svgz" sodipodi:version="0.32" version="1.0" width="128" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <metadata> - <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> - <cc:Work rdf:about=""> - <dc:title></dc:title> - <dc:description></dc:description> - <dc:subject> - <rdf:Bag> - <rdf:li>unsorted</rdf:li> - </rdf:Bag> - </dc:subject> - <dc:publisher> - <cc:Agent rdf:about="http://www.openclipart.org/"> - <dc:title>Open Clip Art Library, Source: Oxygen Icons, Source: Oxygen Icons, Source: Oxygen Icons, Source: Oxygen Icons</dc:title> - </cc:Agent> - </dc:publisher> - <dc:creator> - <cc:Agent> - <dc:title></dc:title> - </cc:Agent> - </dc:creator> - <dc:rights> - <cc:Agent> - <dc:title></dc:title> - </cc:Agent> - </dc:rights> - <dc:date></dc:date> - <dc:format>image/svg+xml</dc:format> - <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> - <cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/ or http://creativecommons.org/licenses/LGPL/2.1/"/> - <dc:language>en</dc:language> - </cc:Work> - </rdf:RDF> - </metadata> - <defs id="defs2813"> - <linearGradient id="linearGradient3629" inkscape:collect="always"> - <stop id="stop3631" offset="0" style="stop-color:#ffda36;stop-opacity:1;"/> - <stop id="stop3633" offset="1" style="stop-color:#ffda36;stop-opacity:0;"/> - </linearGradient> - <inkscape:perspective id="perspective99" inkscape:persp3d-origin="64 : 42.666667 : 1" inkscape:vp_x="0 : 64 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="128 : 64 : 1" sodipodi:type="inkscape:persp3d"/> - <linearGradient gradientTransform="matrix(1.0033808,0,0,1,-8.2378002,8)" gradientUnits="userSpaceOnUse" id="linearGradient3067" x1="122.74438" x2="122.39215" y1="96.721588" y2="20.043535"> - <stop id="stop3069" offset="0" style="stop-color:#88c4ff;stop-opacity:1;"/> - <stop id="stop3077" offset="0.13053299" style="stop-color:#b3d9ff;stop-opacity:1;"/> - <stop id="stop3071" offset="0.72006166" style="stop-color:#71A8F5"/> - <stop id="stop3073" offset="1" style="stop-color:#508ed9;stop-opacity:1;"/> - </linearGradient> - <linearGradient id="linearGradient2822"> - <stop id="stop2824" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/> - <stop id="stop2826" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/> - </linearGradient> - <linearGradient gradientTransform="matrix(1.0033404,0,0,1,-8.2374684,8)" gradientUnits="userSpaceOnUse" id="XMLID_9_" x1="71.9995" x2="71.9995" y1="14.2578" y2="19.9583"> - <stop id="stop46" offset="0.25" style="stop-color:#71a8f5;stop-opacity:0;"/> - <stop id="stop48" offset="1" style="stop-color:#0057ae;stop-opacity:1"/> - </linearGradient> - <linearGradient gradientTransform="matrix(1.0033876,0,0,1,1.7561237,8)" gradientUnits="userSpaceOnUse" id="XMLID_8_" x1="72.0005" x2="72.0005" y1="96" y2="20.0005"> - <stop id="stop35" offset="0" style="stop-color:#cfe7ff;stop-opacity:1;"/> - <stop id="stop37" offset="0.5917" style="stop-color:#71A8F5"/> - <stop id="stop39" offset="1" style="stop-color:#2C72C7"/> - </linearGradient> - <filter height="1.768" id="filter2807" inkscape:collect="always" width="1.0512" x="-0.0256" y="-0.384"> - <feGaussianBlur id="feGaussianBlur2809" inkscape:collect="always" stdDeviation="1.28"/> - </filter> - <linearGradient gradientTransform="translate(-7.999995,8)" gradientUnits="userSpaceOnUse" id="XMLID_6_" x1="72.0005" x2="72.0005" y1="96" y2="4.882812e-04"> - <stop id="stop7" offset="0" style="stop-color:#00479E"/> - <stop id="stop9" offset="0.0769" style="stop-color:#2C72C7"/> - <stop id="stop11" offset="0.58579999" style="stop-color:#6ea1df;stop-opacity:1;"/> - <stop id="stop13" offset="0.96450001" style="stop-color:#adcbee;stop-opacity:1;"/> - </linearGradient> - <linearGradient gradientTransform="translate(10,0)" gradientUnits="userSpaceOnUse" id="linearGradient2828" inkscape:collect="always" x1="22.413761" x2="22.413761" xlink:href="#linearGradient2822" y1="28.5" y2="34.472866"/> - <linearGradient gradientTransform="matrix(1.0033876,0,0,1,-8.2438763,8)" gradientUnits="userSpaceOnUse" id="linearGradient2838" inkscape:collect="always" x1="72.0005" x2="72.0005" xlink:href="#XMLID_8_" y1="96" y2="20.0005"/> - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath2844"> - <path d="M 133.86613,100.978 C 133.79288,102.369 132.59585,103.5 131.19913,103.5 L 16.812952,103.5 C 15.415236,103.5 14.2192,102.368 14.145947,100.979 C 14.145947,100.979 10.508666,30.967 10.508666,30.957 C 10.461513,30.301 10.673223,29.685 11.105684,29.22 C 11.539144,28.756 12.140172,28.501 12.799403,28.501 L 135.21268,28.501 C 135.8719,28.501 136.47293,28.756 136.90339,29.219 C 137.33384,29.682 137.54254,30.298 137.49137,30.966 L 133.86613,100.978 z" id="path2846" style="fill:#ff00bf"/> - </clipPath> - <filter height="1.8302754" id="filter2848" inkscape:collect="always" width="1.0247144" x="-0.012357198" y="-0.41513768"> - <feGaussianBlur id="feGaussianBlur2850" inkscape:collect="always" stdDeviation="0.65388509"/> - </filter> - <linearGradient gradientTransform="matrix(1.0033808,0,0,1,-8.2378,8)" gradientUnits="userSpaceOnUse" id="linearGradient3109" inkscape:collect="always" x1="122.74438" x2="122.74438" xlink:href="#linearGradient3067" y1="96.721588" y2="20"/> - <linearGradient id="linearGradient3290"> - <stop id="stop3292" offset="0" style="stop-color:yellow;stop-opacity:1;"/> - <stop id="stop3294" offset="1" style="stop-color:#ffb66d;stop-opacity:1;"/> - </linearGradient> - <linearGradient id="linearGradient3273"> - <stop id="stop3275" offset="0" style="stop-color:#ffffff;stop-opacity:0.55035973;"/> - <stop id="stop3277" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/> - </linearGradient> - <linearGradient id="linearGradient3291"> - <stop id="stop3293" offset="0" style="stop-color:black;stop-opacity:1"/> - <stop id="stop3295" offset="1" style="stop-color:black;stop-opacity:0"/> - </linearGradient> - <linearGradient id="linearGradient3638"> - <stop id="stop3640" offset="0" style="stop-color:#ffffff;stop-opacity:0;"/> - <stop id="stop3661" offset="0.06868132" style="stop-color:#ffffff;stop-opacity:1;"/> - <stop id="stop3659" offset="0.5" style="stop-color:#ffffff;stop-opacity:1;"/> - <stop id="stop3642" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/> - </linearGradient> - <linearGradient id="linearGradient12948"> - <stop id="stop12950" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/> - <stop id="stop12952" offset="1" style="stop-color:#c0c0c0;stop-opacity:0;"/> - </linearGradient> - <linearGradient id="linearGradient1563"> - <stop id="stop1565" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/> - <stop id="stop1567" offset="1" style="stop-color:white;stop-opacity:0;"/> - </linearGradient> - <radialGradient cx="41.233166" cy="39.832623" fx="41.409943" fy="44.369892" gradientTransform="matrix(1,0,0,0.75,0,9.9581557)" gradientUnits="userSpaceOnUse" id="radialGradient3673" inkscape:collect="always" r="8.1317282" xlink:href="#linearGradient3309"/> - <radialGradient cx="41.233166" cy="39.832623" fx="41.409943" fy="44.369892" gradientTransform="matrix(1,0,0,0.75,0,9.9581557)" gradientUnits="userSpaceOnUse" id="radialGradient3669" inkscape:collect="always" r="8.1317282" xlink:href="#linearGradient3309"/> - <filter id="filter3663" inkscape:collect="always"> - <feGaussianBlur id="feGaussianBlur3665" inkscape:collect="always" stdDeviation="0.24178075"/> - </filter> - <radialGradient cx="41.233166" cy="39.832623" fx="41.409943" fy="44.369892" gradientTransform="matrix(1,0,0,0.75,0,9.9581557)" gradientUnits="userSpaceOnUse" id="radialGradient3638" inkscape:collect="always" r="8.1317282" xlink:href="#linearGradient3640"/> - <radialGradient cx="122.69361" cy="52.672272" fx="122.55822" fy="51.026066" gradientTransform="matrix(1.2538745,-0.4598801,0.2575547,0.7022291,-43.321636,71.69735)" gradientUnits="userSpaceOnUse" id="radialGradient3620" inkscape:collect="always" r="3.1883843" xlink:href="#linearGradient1563"/> - <radialGradient cx="121.58587" cy="52.85474" fx="121.58587" fy="52.85474" gradientTransform="matrix(2.2248115,-0.5961364,0.2773621,1.0351295,-163.57967,70.62501)" gradientUnits="userSpaceOnUse" id="radialGradient3618" inkscape:collect="always" r="3.1883843" xlink:href="#linearGradient1563"/> - <filter height="1.2126913" id="filter3604" inkscape:collect="always" width="1.2307636" x="-0.11538182" y="-0.10634566"> - <feGaussianBlur id="feGaussianBlur3606" inkscape:collect="always" stdDeviation="0.25849222"/> - </filter> - <radialGradient cx="122.69361" cy="52.672272" fx="122.55822" fy="51.026066" gradientTransform="matrix(1.2538745,-0.4598801,0.2575547,0.7022291,-43.321636,71.69735)" gradientUnits="userSpaceOnUse" id="radialGradient3570" inkscape:collect="always" r="3.1883843" xlink:href="#linearGradient1563"/> - <filter height="1.3358284" id="filter3564" inkscape:collect="always" width="1.3643636" x="-0.18218182" y="-0.1679142"> - <feGaussianBlur id="feGaussianBlur3566" inkscape:collect="always" stdDeviation="0.40814561"/> - </filter> - <radialGradient cx="121.58587" cy="52.85474" fx="121.58587" fy="52.85474" gradientTransform="matrix(2.2248115,-0.5961364,0.2773621,1.0351295,-163.57967,70.62501)" gradientUnits="userSpaceOnUse" id="radialGradient3382" inkscape:collect="always" r="3.1883843" xlink:href="#linearGradient1563"/> - <radialGradient cx="64.101562" cy="48.703125" fx="64.101562" fy="48.703125" gradientTransform="matrix(1,0,0,0.6476898,0,17.158608)" gradientUnits="userSpaceOnUse" id="radialGradient3372" inkscape:collect="always" r="56.812496" xlink:href="#linearGradient3309"/> - <filter id="filter3362" inkscape:collect="always"> - <feGaussianBlur id="feGaussianBlur3364" inkscape:collect="always" stdDeviation="0.3785028"/> - </filter> - <radialGradient cx="26.573795" cy="73.493042" fx="35.587811" fy="102.79941" gradientTransform="matrix(4.6812453,-5.2700969e-7,3.571426e-8,0.3172375,-85.242554,44.725131)" gradientUnits="userSpaceOnUse" id="radialGradient3300" inkscape:collect="always" r="60.700562" xlink:href="#linearGradient3946"/> - <filter id="filter3285" inkscape:collect="always"> - <feGaussianBlur id="feGaussianBlur3287" inkscape:collect="always" stdDeviation="0.26585998"/> - </filter> - <radialGradient cx="64.35347" cy="106.71302" fx="64.35347" fy="106.71302" gradientTransform="matrix(0.4443044,1.2598841e-8,0,0.1825067,35.563425,89.646593)" gradientUnits="userSpaceOnUse" id="radialGradient3267" inkscape:collect="always" r="60.700505" xlink:href="#linearGradient3946"/> - <radialGradient cx="64.07962" cy="66.197433" fx="64.07962" fy="66.197433" gradientTransform="matrix(1,0,0,0.9554688,0,2.9478533)" gradientUnits="userSpaceOnUse" id="radialGradient3263" inkscape:collect="always" r="60.700504" xlink:href="#XMLID_1_"/> - <filter id="filter3259" inkscape:collect="always"> - <feGaussianBlur id="feGaussianBlur3261" inkscape:collect="always" stdDeviation="0.23739589"/> - </filter> - <linearGradient gradientUnits="userSpaceOnUse" id="linearGradient2475" inkscape:collect="always" x1="64.07962" x2="64.07962" xlink:href="#XMLID_1_" y1="-14.227339" y2="120.44466"/> - <radialGradient cx="64.35347" cy="98.207405" fx="64.35347" fy="98.207405" gradientTransform="matrix(9.1358439e-2,-2.9656957e-8,4.5207376e-8,0.1392616,58.276716,94.261412)" gradientUnits="userSpaceOnUse" id="radialGradient3956" inkscape:collect="always" r="60.700505" xlink:href="#linearGradient3946"/> - <linearGradient gradientUnits="userSpaceOnUse" id="linearGradient3934" inkscape:collect="always" spreadMethod="reflect" x1="28.637825" x2="31.289474" xlink:href="#linearGradient3844" y1="120.84999" y2="122.08743"/> - <filter id="filter3928" inkscape:collect="always"> - <feGaussianBlur id="feGaussianBlur3930" inkscape:collect="always" stdDeviation="0.18346262"/> - </filter> - <linearGradient gradientUnits="userSpaceOnUse" id="linearGradient2728" inkscape:collect="always" spreadMethod="reflect" x1="28.637825" x2="31.289474" xlink:href="#linearGradient3844" y1="120.84999" y2="122.08743"/> - <filter height="1.3101371" id="filter3838" inkscape:collect="always" width="1.3563383" x="-0.17816916" y="-0.15506857"> - <feGaussianBlur id="feGaussianBlur3840" inkscape:collect="always" stdDeviation="0.46259975"/> - </filter> - <linearGradient gradientUnits="userSpaceOnUse" id="linearGradient3800" inkscape:collect="always" spreadMethod="reflect" x1="63.948792" x2="67.219337" xlink:href="#linearGradient3363" y1="12.034382" y2="12.034382"/> - <filter id="filter3401" inkscape:collect="always"> - <feGaussianBlur id="feGaussianBlur3403" inkscape:collect="always" stdDeviation="0.11157909"/> - </filter> - <filter id="filter3391" inkscape:collect="always"> - <feGaussianBlur id="feGaussianBlur3393" inkscape:collect="always" stdDeviation="0.55939545"/> - </filter> - <linearGradient gradientTransform="translate(-152,0)" gradientUnits="userSpaceOnUse" id="linearGradient3385" inkscape:collect="always" x1="216.88614" x2="216.88614" xlink:href="#linearGradient3379" y1="122.5867" y2="37.969955"/> - <linearGradient gradientUnits="userSpaceOnUse" id="linearGradient3369" inkscape:collect="always" x1="177.42397" x2="177.60074" xlink:href="#linearGradient3363" y1="22.377773" y2="93.022789"/> - <linearGradient gradientTransform="translate(-37.771032,-0.1213203)" gradientUnits="userSpaceOnUse" id="linearGradient3345" inkscape:collect="always" x1="261.50107" x2="200.17728" xlink:href="#linearGradient1563" y1="77.652245" y2="31.10997"/> - <linearGradient gradientTransform="translate(-170.08594,0)" gradientUnits="userSpaceOnUse" id="linearGradient3315" inkscape:collect="always" x1="219.22163" x2="219.22163" xlink:href="#linearGradient3363" y1="28.149843" y2="116.41813"/> - <radialGradient cx="69.526619" cy="60.115833" fx="69.526619" fy="60.115833" gradientTransform="matrix(0.5227399,0,-1.554444e-8,0.5266221,349.81061,60.575712)" gradientUnits="userSpaceOnUse" id="radialGradient3304" inkscape:collect="always" r="111.65377" xlink:href="#linearGradient3290"/> - <radialGradient cx="69.526619" cy="60.115833" fx="69.526619" fy="89.655701" gradientTransform="matrix(0.9439139,-0.3301918,0.332644,0.9509241,-16.097695,27.249949)" gradientUnits="userSpaceOnUse" id="radialGradient2906" inkscape:collect="always" r="111.65377" xlink:href="#linearGradient3290"/> - <linearGradient gradientTransform="matrix(0,1.022977,-1.022977,0,111.9686,137.8125)" gradientUnits="userSpaceOnUse" id="linearGradient3230" inkscape:collect="always" x1="-88.058083" x2="-45.096584" xlink:href="#linearGradient3711" y1="-131.93112" y2="-131.93112"/> - <radialGradient cx="343.99899" cy="92" fx="343.99899" fy="92" gradientUnits="userSpaceOnUse" id="radialGradient3228" inkscape:collect="always" r="36" xlink:href="#linearGradient3711"/> - <linearGradient gradientTransform="matrix(0,1,-1,0,-39.9985,140.0029)" gradientUnits="userSpaceOnUse" id="linearGradient3226" inkscape:collect="always" x1="-70.002899" x2="-11.91648" xlink:href="#linearGradient26907" y1="-383.9971" y2="-383.9971"/> - <linearGradient gradientUnits="userSpaceOnUse" id="linearGradient2149" inkscape:collect="always" x1="62.112335" x2="67.887672" xlink:href="#linearGradient3081" y1="90.513916" y2="39.095695"/> - <linearGradient gradientUnits="userSpaceOnUse" id="XMLID_4_" x1="64.000504" x2="64.000504" y1="108.8652" y2="92.865196"> - <stop id="stop7270" offset="0" style="stop-color:#EEEEEC"/> - <stop id="stop7272" offset="1" style="stop-color:#FFFFFF"/> - </linearGradient> - <linearGradient gradientTransform="translate(175.0067,11.74752)" gradientUnits="userSpaceOnUse" id="XMLID_3_" x1="63.9995" x2="63.9995" y1="92.865196" y2="120.8652"> - <stop id="stop7261" offset="0" style="stop-color:#888A85"/> - <stop id="stop7263" offset="0.3226" style="stop-color:#A6A7A3"/> - <stop id="stop7265" offset="1" style="stop-color:#EEEEEC"/> - </linearGradient> - <linearGradient gradientUnits="userSpaceOnUse" id="XMLID_1_" x1="95.693398" x2="32.308601" y1="141.1738" y2="77.789001"> - <stop id="stop7227" offset="0" style="stop-color:#ffc60a;stop-opacity:1;"/> - <stop id="stop7233" offset="1" style="stop-color:#b03b00;stop-opacity:1;"/> - </linearGradient> - <foreignObject height="1" id="foreignObject7221" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1" x="0" y="0"> - <i:pgfRef xlink:href="#adobe_illustrator_pgf"/> - </foreignObject> - <linearGradient id="linearGradient5073" inkscape:collect="always"> - <stop id="stop5075" offset="0" style="stop-color:#000000;stop-opacity:1;"/> - <stop id="stop5077" offset="1" style="stop-color:#000000;stop-opacity:0;"/> - </linearGradient> - <radialGradient cx="80.738739" cy="155.37218" fx="80.738739" fy="177.29686" gradientTransform="matrix(1,0,0,0.111111,0,138.1081)" gradientUnits="userSpaceOnUse" id="radialGradient5079" inkscape:collect="always" r="64.796692" xlink:href="#linearGradient5073"/> - <linearGradient id="linearGradient2690"> - <stop id="stop2692" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/> - <stop id="stop2694" offset="1" style="stop-color:#c0c0c0;stop-opacity:0;"/> - </linearGradient> - <linearGradient id="linearGradient2684"> - <stop id="stop2686" offset="0" style="stop-color:#ffffff;stop-opacity:0.55035973;"/> - <stop id="stop2688" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/> - </linearGradient> - <linearGradient id="linearGradient2678"> - <stop id="stop2680" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/> - <stop id="stop2682" offset="1" style="stop-color:white;stop-opacity:0;"/> - </linearGradient> - <linearGradient id="linearGradient2668"> - <stop id="stop2670" offset="0" style="stop-color:#ffffff;stop-opacity:0;"/> - <stop id="stop2672" offset="0.06868132" style="stop-color:#ffffff;stop-opacity:1;"/> - <stop id="stop2674" offset="0.5" style="stop-color:#ffffff;stop-opacity:1;"/> - <stop id="stop2676" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/> - </linearGradient> - <linearGradient id="linearGradient2662"> - <stop id="stop2664" offset="0" style="stop-color:yellow;stop-opacity:1;"/> - <stop id="stop2666" offset="1" style="stop-color:#f07800;stop-opacity:1;"/> - </linearGradient> - <linearGradient id="linearGradient3081"> - <stop id="stop3083" offset="0" style="stop-color:#28691f;stop-opacity:1;"/> - <stop id="stop3085" offset="1" style="stop-color:#00bf00;stop-opacity:1;"/> - </linearGradient> - <linearGradient gradientTransform="matrix(0,1,-1,0,-39.9985,140.0029)" gradientUnits="userSpaceOnUse" id="linearGradient3711" x1="-84.002403" x2="-23.516129" y1="-383.9971" y2="-383.9975"> - <stop id="stop3713" offset="0" style="stop-color:white;stop-opacity:1;"/> - <stop id="stop3715" offset="1" style="stop-color:white;stop-opacity:0;"/> - </linearGradient> - <linearGradient gradientTransform="matrix(0,1,-1,0,-39.9985,140.0029)" gradientUnits="userSpaceOnUse" id="linearGradient26907" x1="-84.002403" x2="-12.0029" y1="-383.9971" y2="-383.9971"> - <stop id="stop26909" offset="0" style="stop-color:#888a85;stop-opacity:1;"/> - <stop id="stop26911" offset="1" style="stop-color:#2e3436;stop-opacity:1;"/> - </linearGradient> - <linearGradient id="linearGradient3309"> - <stop id="stop3311" offset="0" style="stop-color:#f4ff3f;stop-opacity:1;"/> - <stop id="stop3313" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/> - </linearGradient> - <linearGradient id="linearGradient3363" inkscape:collect="always"> - <stop id="stop3365" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/> - <stop id="stop3367" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/> - </linearGradient> - <linearGradient id="linearGradient3379" inkscape:collect="always"> - <stop id="stop3381" offset="0" style="stop-color:#fffc07;stop-opacity:1;"/> - <stop id="stop3383" offset="1" style="stop-color:#fffc07;stop-opacity:0;"/> - </linearGradient> - <linearGradient id="linearGradient3844" inkscape:collect="always"> - <stop id="stop3846" offset="0" style="stop-color:#faff64;stop-opacity:1;"/> - <stop id="stop3848" offset="1" style="stop-color:#faff64;stop-opacity:0;"/> - </linearGradient> - <linearGradient id="linearGradient3946"> - <stop id="stop3948" offset="0" style="stop-color:#7e0000;stop-opacity:1;"/> - <stop id="stop3950" offset="1" style="stop-color:#673400;stop-opacity:0;"/> - </linearGradient> - <inkscape:perspective id="perspective102" inkscape:persp3d-origin="64 : 42.666667 : 1" inkscape:vp_x="0 : 64 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="128 : 64 : 1" sodipodi:type="inkscape:persp3d"/> - <linearGradient id="linearGradient3640"> - <stop id="stop3643" offset="0" style="stop-color:#7e0000;stop-opacity:0.50990099"/> - <stop id="stop3645" offset="1" style="stop-color:#673400;stop-opacity:0;"/> - </linearGradient> - <radialGradient cx="64.07962" cy="66.197433" fx="64.07962" fy="66.197433" gradientTransform="matrix(1,0,0,0.9554688,0,2.9478533)" gradientUnits="userSpaceOnUse" id="radialGradient2810" inkscape:collect="always" r="60.700504" xlink:href="#XMLID_1_"/> - <radialGradient cx="69.526619" cy="60.115833" fx="69.526619" fy="89.655701" gradientTransform="matrix(0.9439139,-0.3301918,0.332644,0.9509241,-16.097695,27.249949)" gradientUnits="userSpaceOnUse" id="radialGradient2812" inkscape:collect="always" r="111.65377" xlink:href="#linearGradient3290"/> - <linearGradient gradientUnits="userSpaceOnUse" id="linearGradient2814" inkscape:collect="always" x1="64.07962" x2="64.07962" xlink:href="#XMLID_1_" y1="-14.227339" y2="120.44466"/> - <linearGradient gradientUnits="userSpaceOnUse" id="linearGradient2816" inkscape:collect="always" spreadMethod="reflect" x1="63.948792" x2="67.219337" xlink:href="#linearGradient3363" y1="12.034382" y2="12.034382"/> - <radialGradient cx="64.101562" cy="48.703125" fx="64.101562" fy="48.703125" gradientTransform="matrix(1,0,0,0.6476898,0,17.158608)" gradientUnits="userSpaceOnUse" id="radialGradient2818" inkscape:collect="always" r="56.812496" xlink:href="#linearGradient3309"/> - <radialGradient cx="41.233166" cy="39.832623" fx="41.409943" fy="44.369892" gradientTransform="matrix(1,0,0,0.75,0,9.9581557)" gradientUnits="userSpaceOnUse" id="radialGradient2820" inkscape:collect="always" r="8.1317282" xlink:href="#linearGradient3309"/> - <linearGradient gradientTransform="translate(-170.08594,0)" gradientUnits="userSpaceOnUse" id="linearGradient2823" inkscape:collect="always" x1="219.22163" x2="219.22163" xlink:href="#linearGradient3363" y1="28.149843" y2="116.41813"/> - <radialGradient cx="41.233166" cy="39.832623" fx="41.409943" fy="44.369892" gradientTransform="matrix(1,0,0,0.75,0,9.9581557)" gradientUnits="userSpaceOnUse" id="radialGradient2825" inkscape:collect="always" r="8.1317282" xlink:href="#linearGradient3309"/> - <linearGradient gradientUnits="userSpaceOnUse" id="linearGradient2827" inkscape:collect="always" x1="177.42397" x2="177.60074" xlink:href="#linearGradient3363" y1="22.377773" y2="93.022789"/> - <linearGradient gradientTransform="translate(-37.771032,-0.1213203)" gradientUnits="userSpaceOnUse" id="linearGradient2829" inkscape:collect="always" x1="261.50107" x2="200.17728" xlink:href="#linearGradient1563" y1="77.652245" y2="31.10997"/> - <linearGradient gradientTransform="matrix(0.479981,0,0,0.479981,33.177757,62.637707)" gradientUnits="userSpaceOnUse" id="linearGradient2831" inkscape:collect="always" spreadMethod="reflect" x1="80.100487" x2="77.714729" xlink:href="#linearGradient3273" y1="44.807674" y2="101.4734"/> - <radialGradient cx="64.35347" cy="98.207405" fx="64.35347" fy="98.207405" gradientTransform="matrix(9.1358439e-2,-2.9656957e-8,4.5207376e-8,0.1392616,58.276716,94.261412)" gradientUnits="userSpaceOnUse" id="radialGradient2833" inkscape:collect="always" r="60.700505" xlink:href="#linearGradient3946"/> - <linearGradient gradientTransform="translate(-152,0)" gradientUnits="userSpaceOnUse" id="linearGradient2835" inkscape:collect="always" x1="216.88614" x2="216.88614" xlink:href="#linearGradient3379" y1="122.5867" y2="37.969955"/> - <radialGradient cx="121.58587" cy="52.85474" fx="121.58587" fy="52.85474" gradientTransform="matrix(2.2248115,-0.5961364,0.2773621,1.0351295,-163.57967,70.62501)" gradientUnits="userSpaceOnUse" id="radialGradient2837" inkscape:collect="always" r="3.1883843" xlink:href="#linearGradient1563"/> - <radialGradient cx="122.69361" cy="52.672272" fx="122.55822" fy="51.026066" gradientTransform="matrix(1.2538745,-0.4598801,0.2575547,0.7022291,-43.321636,71.69735)" gradientUnits="userSpaceOnUse" id="radialGradient2839" inkscape:collect="always" r="3.1883843" xlink:href="#linearGradient1563"/> - <radialGradient cx="121.58587" cy="52.85474" fx="121.58587" fy="52.85474" gradientTransform="matrix(2.2248115,-0.5961364,0.2773621,1.0351295,-163.57967,70.62501)" gradientUnits="userSpaceOnUse" id="radialGradient2841" inkscape:collect="always" r="3.1883843" xlink:href="#linearGradient1563"/> - <radialGradient cx="122.69361" cy="52.672272" fx="122.55822" fy="51.026066" gradientTransform="matrix(1.2538745,-0.4598801,0.2575547,0.7022291,-43.321636,71.69735)" gradientUnits="userSpaceOnUse" id="radialGradient2843" inkscape:collect="always" r="3.1883843" xlink:href="#linearGradient1563"/> - <linearGradient gradientTransform="translate(-152,0)" gradientUnits="userSpaceOnUse" id="linearGradient2845" inkscape:collect="always" x1="216.88614" x2="216.88614" xlink:href="#linearGradient3379" y1="122.5867" y2="37.969955"/> - <linearGradient gradientUnits="userSpaceOnUse" id="linearGradient2847" inkscape:collect="always" spreadMethod="reflect" x1="28.637825" x2="31.289474" xlink:href="#linearGradient3844" y1="120.84999" y2="122.08743"/> - <radialGradient cx="64.35347" cy="106.71302" fx="64.35347" fy="106.71302" gradientTransform="matrix(0.4443044,1.2598841e-8,0,0.1825067,35.563425,89.646593)" gradientUnits="userSpaceOnUse" id="radialGradient2849" inkscape:collect="always" r="60.700505" xlink:href="#linearGradient3946"/> - <radialGradient cx="26.573795" cy="73.493042" fx="35.587811" fy="102.79941" gradientTransform="matrix(4.6812453,-5.2700969e-7,3.571426e-8,0.3172375,-85.242554,44.725131)" gradientUnits="userSpaceOnUse" id="radialGradient2851" inkscape:collect="always" r="60.700562" xlink:href="#linearGradient3946"/> - <linearGradient gradientTransform="matrix(0.479981,0,0,0.479981,33.177757,62.637707)" gradientUnits="userSpaceOnUse" id="linearGradient2853" inkscape:collect="always" spreadMethod="reflect" x1="80.100487" x2="77.714729" xlink:href="#linearGradient3273" y1="44.807674" y2="101.4734"/> - <linearGradient gradientTransform="translate(-152,0)" gradientUnits="userSpaceOnUse" id="linearGradient2855" inkscape:collect="always" x1="216.88614" x2="216.88614" xlink:href="#linearGradient3379" y1="122.5867" y2="37.969955"/> - <radialGradient cx="66.977158" cy="54.133701" fx="66.977158" fy="54.133701" gradientTransform="matrix(1.6011045,0,0,1.0874708,-40.260269,-12.584491)" gradientUnits="userSpaceOnUse" id="radialGradient3635" inkscape:collect="always" r="41.380203" xlink:href="#linearGradient3629"/> - <filter id="filter3653" inkscape:collect="always"> - <feGaussianBlur id="feGaussianBlur3655" inkscape:collect="always" stdDeviation="2.160955"/> - </filter> - <radialGradient cx="64.111018" cy="72.034855" fx="64.111018" fy="72.034855" gradientTransform="matrix(1,0,0,0.6792004,0,23.108756)" gradientUnits="userSpaceOnUse" id="radialGradient3659" inkscape:collect="always" r="41.380203" xlink:href="#linearGradient3629"/> - <radialGradient cx="66.890625" cy="94.021507" fx="66.890625" fy="94.021507" gradientTransform="matrix(1.3950344,0,0,0.9475079,-26.4241,-2.1179212)" gradientUnits="userSpaceOnUse" id="radialGradient3663" inkscape:collect="always" r="41.380203" xlink:href="#linearGradient3629"/> - </defs> - <sodipodi:namedview bordercolor="#666666" borderlayer="true" borderopacity="1.0" id="base" inkscape:current-layer="layer1" inkscape:cx="1.7230397" inkscape:cy="67.535605" inkscape:document-units="px" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:showpageshadow="true" inkscape:window-height="750" inkscape:window-width="991" inkscape:window-x="45" inkscape:window-y="0" inkscape:zoom="2.34375" pagecolor="#ffffff" showborder="true" showgrid="true"> - <inkscape:grid enabled="true" id="grid3665" spacingx="4px" spacingy="4px" type="xygrid" visible="true"/> - </sodipodi:namedview> - <g id="layer1" inkscape:groupmode="layer" inkscape:label="Livello 1"> - <path d="M 117.983,19 C 117.992,17.35 116.64999,16 114.99999,16 L 44.961007,16 L 38.375006,9.414 C 37.597005,8.636 36.061006,8 34.961,8 L 13.999998,8 C 11.799996,8 9.999999,9.8 9.999999,12 L 9.999999,19 C 9.999999,19 10.999999,104 7,104 L 121,104 C 116.99999,104 117.983,19 117.983,19 z" id="path15" style="fill:url(#XMLID_6_)"/> - <g id="g17" style="opacity:0.6;filter:url(#filter2807)" transform="matrix(1.0033404,0,0,1,-8.2374684,8)"> - <path d="M 132,95.146667 C 132,96.877333 128.4,98.293333 124,98.293333 L 20,98.293333 C 15.6,98.293333 12,96.877333 12,95.146667 C 12,93.416 15.6,92 20,92 L 124,92 C 128.4,92 132,93.416 132,95.146667 z" id="path19"/> - </g> - <path d="M 124.36598,101.004 C 124.27969,102.652 122.85389,104 121.19831,104 L 6.812906,104 C 5.157329,104 3.731522,102.652 3.644228,101.004 L 0.007982,30.992 C -0.112423,29.347 1.143808,28 2.799384,28 L 125.21183,28 C 126.86741,28 128.11762,29.346 127.9912,30.991 L 124.36598,101.004 z" id="path30" style="opacity:0.9;fill:url(#linearGradient3109);fill-opacity:1"/> - <path d="M 10.580094,28 C 10.551086,23.609 10.516087,20.392 10.500078,19 L 10.500078,12 C 10.500078,10.07 12.07033,8.5 14.000627,8.5 L 34.964921,8.5 C 35.937077,8.5 37.339294,9.081 38.026407,9.768 L 44.759457,16.5 L 115.01648,16.5 C 115.68059,16.5 116.30469,16.76 116.77576,17.233 C 117.24683,17.706 117.50487,18.333 117.50087,18.997 C 117.50087,18.997 117.57288,18.925 117.60989,18.888 C 117.48787,19.495 117.47487,21.062 117.44687,25.161 L 117.43687,28 L 117.92894,28 C 117.95994,22.468 117.99995,19 117.99995,19 C 118.00896,17.35 116.66674,16 115.01648,16 L 44.966498,16 L 38.379463,9.414 C 37.60134,8.636 36.065099,8 34.964921,8 L 14.000627,8 C 11.80028,8 10,9.8 10,12 L 10,19 C 10,19 10.041009,22.468 10.073018,28 L 10.580094,28 z" id="path32" style="fill:#5293ee;fill-opacity:1"/> - <path d="M 9.8848616,22 C 9.8938916,23.75 9.9029216,25.755 9.9109516,28 L 118.09511,28 C 118.10414,25.755 118.11317,23.75 118.1212,22 L 9.8848616,22 z" id="path50" style="fill:url(#XMLID_9_);opacity:0.5"/> - <path clip-path="url(#clipPath2844)" d="M 12.8125,28.5 C 12.153269,28.5 11.52721,28.754751 11.09375,29.21875 C 10.661289,29.68375 10.452847,30.312749 10.5,30.96875 C 10.5,30.968937 10.559992,32.232788 10.5625,32.28125 C 10.647737,31.886257 10.815287,31.518165 11.09375,31.21875 C 11.52721,30.754751 12.153269,30.5 12.8125,30.5 L 135.21875,30.5 C 135.87797,30.500001 136.47579,30.75575 136.90625,31.21875 C 137.18342,31.516877 137.35439,31.883216 137.4375,32.28125 L 137.5,30.96875 C 137.55117,30.30075 137.3367,29.68175 136.90625,29.21875 C 136.47579,28.75575 135.87797,28.500001 135.21875,28.5 L 12.8125,28.5 z" id="path2788" style="fill:url(#linearGradient2828);fill-opacity:1;filter:url(#filter2848)" transform="translate(-10,0)"/> - <path d="M 125.21268,28 L 2.799403,28 C 1.143815,28 -0.1124237,29.347 0.007982,30.992 L 3.645263,101.004 C 3.731547,102.652 5.157364,104 6.812952,104 L 121.19913,104 C 122.85472,104 124.28053,102.652 124.36682,101.004 L 127.99106,30.991 C 128.11849,29.346 126.86827,28 125.21268,28 z M 123.86613,100.978 C 123.79288,102.369 122.59585,103.5 121.19913,103.5 L 6.812952,103.5 C 5.415236,103.5 4.2192,102.368 4.145947,100.979 C 4.145947,100.979 0.508666,30.967 0.508666,30.957 C 0.461513,30.301 0.673223,29.685 1.105684,29.22 C 1.539144,28.756 2.140172,28.501 2.799403,28.501 L 125.21268,28.501 C 125.8719,28.501 126.47293,28.756 126.90339,29.219 C 127.33384,29.682 127.54254,30.298 127.49137,30.966 L 123.86613,100.978 z" id="path2836" style="fill:url(#linearGradient2838)"/> - <path d="M 65.931929,44.786008 C 55.175741,44.634267 51.043165,70.978907 35.902168,70.978907 L 97.750451,73.3925 C 81.772038,73.3925 79.337655,44.975127 65.931929,44.786008 z" id="path2857" sodipodi:nodetypes="cccs" style="fill:url(#radialGradient3635);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3653)" transform="matrix(1.0562371,0,0,1.0562371,-3.6968591,-4.2252662)"/> - <g id="g2758" inkscape:label="Layer 1" transform="matrix(0.6943204,0,0,0.6943204,21.245436,37.651516)"> - <g id="g3675"> - <path d="M 64.03125,8.2 C 56.162818,8.2100117 46.828561,34.754451 40.46875,39.3875 C 34.10894,44.020548 5.9844574,44.776082 3.5625,52.2625 C 1.1405426,59.748917 23.465249,76.813524 25.90625,84.29375 C 28.347251,91.77398 20.40967,118.7394 26.78125,123.35625 C 33.15283,127.9731 56.287818,112.02251 64.15625,112.0125 C 72.024682,112.00249 95.202691,127.89555 101.5625,123.2625 C 107.92231,118.62945 99.890544,91.686414 102.3125,84.2 C 104.73446,76.713583 127.03475,59.58648 124.59375,52.10625 C 122.15275,44.626021 94.027829,43.941849 87.65625,39.325 C 81.28467,34.708152 71.899685,8.1899879 64.03125,8.2 z M 64.03125,12.10625 C 64.208046,12.245423 65.56776,12.912264 67.15625,14.85625 C 68.97167,17.077947 71.031426,20.410059 73.0625,23.95 C 75.093573,27.48994 77.113982,31.248819 79.09375,34.5125 C 81.073519,37.776182 82.75512,40.528991 85.40625,42.45 C 88.057376,44.371009 91.18831,45.11637 94.90625,45.98125 C 98.624192,46.846129 102.81606,47.591152 106.8125,48.41875 C 110.80894,49.246347 114.60465,50.166787 117.28125,51.2 C 119.62327,52.104061 120.71845,53.200764 120.90625,53.325 C 120.82618,53.533062 120.57672,54.994782 119.21875,57.10625 C 117.66679,59.519356 115.1453,62.518181 112.40625,65.54375 C 109.66721,68.569316 106.71091,71.652346 104.21875,74.54375 C 101.72659,77.435155 99.632744,79.897501 98.625,83.0125 C 97.617256,86.127495 97.892393,89.334266 98.21875,93.1375 C 98.545107,96.940738 99.114622,101.17466 99.5625,105.23125 C 100.01038,109.28783 100.31178,113.17888 100.15625,116.04375 C 100.02016,118.55052 99.34151,119.89095 99.28125,120.10625 C 99.057443,120.09786 97.552762,120.37027 95.125,119.73125 C 92.350417,119.00093 88.723899,117.49504 85,115.825 C 81.276103,114.15497 77.426259,112.30169 73.90625,110.825 C 70.386242,109.3483 67.4302,108.13334 64.15625,108.1375 C 60.882303,108.14167 57.891241,109.3706 54.375,110.85625 C 50.858761,112.3419 47.032137,114.20799 43.3125,115.8875 C 39.592862,117.567 35.960216,119.05638 33.1875,119.79375 C 30.761373,120.43895 29.286908,120.19088 29.0625,120.2 C 29.004012,119.9864 28.29872,118.6439 28.15625,116.1375 C 27.993428,113.27303 28.281199,109.38271 28.71875,105.325 C 29.156299,101.2673 29.714573,97.035302 30.03125,93.23125 C 30.347928,89.427198 30.609418,86.187425 29.59375,83.075 C 28.578082,79.962573 26.468263,77.522553 23.96875,74.6375 C 21.469238,71.752452 18.527988,68.687339 15.78125,65.66875 C 13.034512,62.650158 10.495601,59.671649 8.9375,57.2625 C 7.5741618,55.154496 7.3592053,53.657399 7.28125,53.45 C 7.2962039,53.537785 8.2681026,52.326785 10.84375,51.325 C 13.517705,50.284977 17.34943,49.350265 21.34375,48.5125 C 25.33807,47.674737 29.534272,46.949339 33.25,46.075 C 36.96573,45.200663 40.103767,44.44025 42.75,42.5125 C 45.396234,40.584748 47.059794,37.812458 49.03125,34.54375 C 51.002705,31.275042 53.009191,27.526347 55.03125,23.98125 C 57.053308,20.436153 59.096493,17.08256 60.90625,14.85625 C 62.489787,12.908229 63.857465,12.244552 64.03125,12.10625 z" id="path3961" style="opacity:1;fill:url(#radialGradient2810);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:14.80851269;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1;filter:url(#filter3259)"/> - <path d="M 153.09403,94.713757 C 144.53658,107.09689 92.616372,93.013297 78.414631,98.001518 C 64.21289,102.98974 32.50348,146.4474 18.082028,142.13539 C 3.6605746,137.82337 1.0106378,84.092245 -8.1220219,72.127031 C -17.254681,60.161818 -68.384124,43.433534 -68.739625,28.385431 C -69.095125,13.337327 -18.812666,-5.7867426 -10.255219,-18.169872 C -1.697772,-30.553002 -1.5880954,-84.349316 12.613645,-89.337536 C 26.815387,-94.325757 60.541592,-52.41396 74.963045,-48.101941 C 89.384498,-43.789923 140.58172,-60.30959 149.71438,-48.344376 C 158.84704,-36.379162 129.40853,8.6478227 129.76403,23.695927 C 130.11953,38.74403 161.65148,82.330628 153.09403,94.713757 z" id="path3574" inkscape:flatsided="false" inkscape:randomized="0" inkscape:rounded="0.20136392" sodipodi:arg1="0.60469864" sodipodi:arg2="1.2330172" sodipodi:cx="52.952892" sodipodi:cy="25.510532" sodipodi:r1="121.72647" sodipodi:r2="76.832565" sodipodi:sides="5" sodipodi:type="star" style="opacity:1;fill:url(#radialGradient2812);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:14.80892944;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1" transform="matrix(0.4934214,0.1726044,-0.1726044,0.4934214,42.377875,49.908537)"/> - <path d="M 64.03125,8 C 56.162818,8.0100117 46.828561,34.554451 40.46875,39.1875 C 34.10894,43.820548 5.984457,44.576082 3.5625,52.0625 C 1.140543,59.548917 23.465249,76.613524 25.90625,84.09375 C 28.347251,91.57398 20.40967,118.5394 26.78125,123.15625 C 33.15283,127.7731 56.287818,111.82251 64.15625,111.8125 C 72.024682,111.80249 95.202691,127.69555 101.5625,123.0625 C 107.92231,118.42945 99.890544,91.486414 102.3125,84 C 104.73446,76.513583 127.03475,59.38648 124.59375,51.90625 C 122.15275,44.426021 94.027829,43.741849 87.65625,39.125 C 81.28467,34.508152 71.899685,7.9899879 64.03125,8 z M 64.03125,11.90625 C 64.208046,12.045423 65.56776,12.712264 67.15625,14.65625 C 68.97167,16.877947 71.031426,20.210059 73.0625,23.75 C 75.093573,27.28994 77.113982,31.048819 79.09375,34.3125 C 81.073519,37.576182 82.75512,40.328991 85.40625,42.25 C 88.057376,44.171009 91.18831,44.91637 94.90625,45.78125 C 98.624192,46.646129 102.81606,47.391152 106.8125,48.21875 C 110.80894,49.046347 114.60465,49.966787 117.28125,51 C 119.62327,51.904061 120.71845,53.000764 120.90625,53.125 C 120.82618,53.333062 120.57672,54.794782 119.21875,56.90625 C 117.66679,59.319356 115.1453,62.318181 112.40625,65.34375 C 109.66721,68.369316 106.71091,71.452346 104.21875,74.34375 C 101.72659,77.235155 99.632744,79.697501 98.625,82.8125 C 97.617256,85.927495 97.892393,89.134266 98.21875,92.9375 C 98.545107,96.740738 99.114622,100.97466 99.5625,105.03125 C 100.01038,109.08783 100.31178,112.97888 100.15625,115.84375 C 100.02016,118.35052 99.34151,119.69095 99.28125,119.90625 C 99.057443,119.89786 97.552762,120.17027 95.125,119.53125 C 92.350417,118.80093 88.723899,117.29504 85,115.625 C 81.276103,113.95497 77.426259,112.10169 73.90625,110.625 C 70.386242,109.1483 67.4302,107.93334 64.15625,107.9375 C 60.882303,107.94167 57.891241,109.1706 54.375,110.65625 C 50.858761,112.1419 47.032137,114.00799 43.3125,115.6875 C 39.592862,117.367 35.960216,118.85638 33.1875,119.59375 C 30.761373,120.23895 29.286908,119.99088 29.0625,120 C 29.004012,119.7864 28.29872,118.4439 28.15625,115.9375 C 27.993428,113.07303 28.281199,109.18271 28.71875,105.125 C 29.156299,101.0673 29.714573,96.835302 30.03125,93.03125 C 30.347928,89.227198 30.609418,85.987425 29.59375,82.875 C 28.578082,79.762573 26.468263,77.322553 23.96875,74.4375 C 21.469238,71.552452 18.527988,68.487339 15.78125,65.46875 C 13.034512,62.450158 10.495601,59.471649 8.9375,57.0625 C 7.574162,54.954496 7.359205,53.457399 7.28125,53.25 C 7.296204,53.337785 8.268103,52.126785 10.84375,51.125 C 13.517705,50.084977 17.34943,49.150265 21.34375,48.3125 C 25.33807,47.474737 29.534272,46.749339 33.25,45.875 C 36.96573,45.000663 40.103767,44.24025 42.75,42.3125 C 45.396234,40.384748 47.059794,37.612458 49.03125,34.34375 C 51.002705,31.075042 53.009191,27.326347 55.03125,23.78125 C 57.053308,20.236153 59.096493,16.88256 60.90625,14.65625 C 62.489787,12.708229 63.857465,12.044552 64.03125,11.90625 z" id="path2304" style="opacity:1;fill:url(#linearGradient2814);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:14.80851269;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"/> - <path d="M 60.98796,9.471226 C 62.846491,8.2143022 64.889907,8.0204702 67.219338,9.471226 L 64.037358,15.614216 L 60.98796,9.471226 z" id="path3409" sodipodi:nodetypes="cccc" style="fill:url(#linearGradient2816);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3838)"/> - <path d="M 64.039064,11.90625 C 63.865274,12.044552 62.497594,12.708229 60.914064,14.65625 C 59.104304,16.88256 57.061124,20.236153 55.039064,23.78125 C 53.017004,27.326347 51.010514,31.075042 49.039064,34.34375 C 47.067604,37.612458 45.404044,40.384748 42.757814,42.3125 C 40.111574,44.24025 36.973544,45.000663 33.257814,45.875 C 29.542084,46.749339 25.345884,47.474737 21.351564,48.3125 C 17.357244,49.150265 13.525514,50.084977 10.851564,51.125 C 8.2759131,52.126785 7.3040131,53.337785 7.2890631,53.25 C 7.3670131,53.457399 7.5819731,54.954496 8.9453131,57.0625 C 10.503414,59.471649 13.042324,62.450158 15.789064,65.46875 C 18.535804,68.487339 21.477054,71.552452 23.976564,74.4375 C 26.476074,77.322553 28.585894,79.762573 29.601564,82.875 C 29.865144,83.682722 30.019904,84.511238 30.132814,85.34375 C 32.540654,85.431079 34.961934,85.5 37.414064,85.5 C 64.456484,85.5 88.974124,80.107134 106.91406,71.34375 C 108.71383,69.370041 110.60784,67.338911 112.41406,65.34375 C 115.15311,62.318181 117.67459,59.319356 119.22656,56.90625 C 120.58453,54.794782 120.83398,53.333062 120.91406,53.125 C 120.72626,53.000764 119.63107,51.904061 117.28906,51 C 114.61246,49.966787 110.81674,49.046347 106.82031,48.21875 C 102.82387,47.391152 98.631994,46.646129 94.914064,45.78125 C 91.196124,44.91637 88.065184,44.171009 85.414064,42.25 C 82.762934,40.328991 81.081334,37.576182 79.101564,34.3125 C 77.121794,31.048819 75.101384,27.28994 73.070314,23.75 C 71.039234,20.210059 68.979484,16.877947 67.164064,14.65625 C 65.575574,12.712264 64.215854,12.045423 64.039064,11.90625 z" id="path3370" style="opacity:1;fill:url(#radialGradient2818);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:14.80892944;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"/> - <path d="M 44.96875,33.9375 L 44.1875,35.21875 C 44.177097,35.219516 44.166653,35.219516 44.15625,35.21875 L 42.8125,36.9375 L 41.53125,38.46875 C 41.521947,38.480223 41.511473,38.490697 41.5,38.5 L 40.03125,39.71875 C 40.021947,39.730223 40.011473,39.740697 40,39.75 L 37.125,41.03125 C 37.115697,41.042723 37.105223,41.053197 37.09375,41.0625 L 33.875,41.96875 L 33.375,45.625 L 35.125,45.21875 L 35.125,45.25 L 39.71875,43.75 L 39.75,43.75 L 42.8125,42.0625 L 42.875,42.03125 L 45.78125,39.09375 L 45.8125,39.0625 L 48.96875,34.03125 L 44.96875,33.9375 z" id="path3667" inkscape:original="M 44.84375 33.71875 L 44 35.09375 L 42.65625 36.8125 L 41.375 38.34375 L 39.90625 39.5625 L 37.03125 40.84375 L 33.6875 41.78125 L 33.09375 45.9375 L 35.1875 45.4375 L 39.8125 43.9375 L 42.96875 42.21875 L 45.96875 39.21875 L 49.375 33.8125 L 44.84375 33.71875 z " inkscape:radius="-0.21269609" sodipodi:type="inkscape:offset" style="opacity:0.64356432;fill:url(#radialGradient2820);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3663)" transform="translate(0,0.3)"/> - <path d="M 64.039064,11.90625 C 63.865274,12.044552 62.497594,12.708229 60.914064,14.65625 C 59.104304,16.88256 57.061124,20.236153 55.039064,23.78125 C 53.017004,27.326347 51.010514,31.075042 49.039064,34.34375 C 47.067604,37.612458 45.404044,40.384748 42.757814,42.3125 C 40.111574,44.24025 36.973544,45.000663 33.257814,45.875 C 29.542084,46.749339 25.345884,47.474737 21.351564,48.3125 C 17.357244,49.150265 13.525514,50.084977 10.851564,51.125 C 8.2759131,52.126785 7.3040131,53.337785 7.2890631,53.25 C 7.3670131,53.457399 7.5819731,54.954496 8.9453131,57.0625 C 10.503414,59.471649 13.042324,62.450158 15.789064,65.46875 C 18.535804,68.487339 21.477054,71.552452 23.976564,74.4375 C 26.476074,77.322553 28.585894,79.762573 29.601564,82.875 C 29.865144,83.682722 30.019904,84.511238 30.132814,85.34375 C 32.540654,85.431079 34.961934,85.5 37.414064,85.5 C 64.456484,85.5 88.974124,80.107134 106.91406,71.34375 C 108.71383,69.370041 110.60784,67.338911 112.41406,65.34375 C 115.15311,62.318181 117.67459,59.319356 119.22656,56.90625 C 120.58453,54.794782 120.83398,53.333062 120.91406,53.125 C 120.72626,53.000764 119.63107,51.904061 117.28906,51 C 114.61246,49.966787 110.81674,49.046347 106.82031,48.21875 C 102.82387,47.391152 98.631994,46.646129 94.914064,45.78125 C 91.196124,44.91637 88.065184,44.171009 85.414064,42.25 C 82.762934,40.328991 81.081334,37.576182 79.101564,34.3125 C 77.121794,31.048819 75.101384,27.28994 73.070314,23.75 C 71.039234,20.210059 68.979484,16.877947 67.164064,14.65625 C 65.575574,12.712264 64.215854,12.045423 64.039064,11.90625 z" id="path2910" style="opacity:1;fill:url(#linearGradient2823);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:14.80892944;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"/> - <path d="M 44.96875,33.9375 L 44.1875,35.21875 C 44.177097,35.219516 44.166653,35.219516 44.15625,35.21875 L 42.8125,36.9375 L 41.53125,38.46875 C 41.521947,38.480223 41.511473,38.490697 41.5,38.5 L 40.03125,39.71875 C 40.021947,39.730223 40.011473,39.740697 40,39.75 L 37.125,41.03125 C 37.115697,41.042723 37.105223,41.053197 37.09375,41.0625 L 33.875,41.96875 L 33.375,45.625 L 35.125,45.21875 L 35.125,45.25 L 39.71875,43.75 L 39.75,43.75 L 42.8125,42.0625 L 42.875,42.03125 L 45.78125,39.09375 L 45.8125,39.0625 L 48.96875,34.03125 L 44.96875,33.9375 z" id="path3671" inkscape:original="M 44.84375 33.71875 L 44 35.09375 L 42.65625 36.8125 L 41.375 38.34375 L 39.90625 39.5625 L 37.03125 40.84375 L 33.6875 41.78125 L 33.09375 45.9375 L 35.1875 45.4375 L 39.8125 43.9375 L 42.96875 42.21875 L 45.96875 39.21875 L 49.375 33.8125 L 44.84375 33.71875 z " inkscape:radius="-0.21269609" sodipodi:type="inkscape:offset" style="opacity:0.64356432;fill:url(#radialGradient2825);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3663)" transform="matrix(-1,0,0,1,128.125,0.3)"/> - <g id="g3339" transform="translate(-132.29928,0)"> - <path d="M 196.34375,11.90625 C 196.16996,12.044552 194.80228,12.708229 193.21875,14.65625 C 191.40899,16.88256 189.36581,20.236153 187.34375,23.78125 C 185.32169,27.326347 183.3152,31.075042 181.34375,34.34375 C 179.37229,37.612458 177.70873,40.384748 175.0625,42.3125 C 172.41626,44.24025 169.27823,45.000663 165.5625,45.875 C 161.84677,46.749339 157.65057,47.474737 153.65625,48.3125 C 149.66193,49.150265 145.8302,50.084977 143.15625,51.125 C 140.5806,52.126785 139.6087,53.337785 139.59375,53.25 C 139.62377,53.329884 139.71528,53.638731 139.84375,54.0625 C 140.2595,53.69998 141.25985,52.862595 143.15625,52.125 C 145.8302,51.084977 149.66193,50.150265 153.65625,49.3125 C 157.65057,48.474737 161.84677,47.749339 165.5625,46.875 C 169.27823,46.000663 172.41626,45.24025 175.0625,43.3125 C 177.70873,41.384748 179.37229,38.612458 181.34375,35.34375 C 183.3152,32.075042 185.32169,28.326347 187.34375,24.78125 C 189.36581,21.236153 191.40899,17.88256 193.21875,15.65625 C 194.80228,13.708229 196.16996,13.044552 196.34375,12.90625 C 196.52054,13.045423 197.88026,13.712264 199.46875,15.65625 C 201.28417,17.877947 203.34392,21.210059 205.375,24.75 C 207.40607,28.28994 209.42648,32.048819 211.40625,35.3125 C 213.38602,38.576182 215.06762,41.328991 217.71875,43.25 C 220.36987,45.171009 223.50081,45.91637 227.21875,46.78125 C 230.93668,47.646129 235.12856,48.391152 239.125,49.21875 C 243.12143,50.046347 246.91715,50.966787 249.59375,52 C 251.51448,52.74144 252.56925,53.579608 253,53.9375 C 253.13371,53.522484 253.18802,53.204851 253.21875,53.125 C 253.03095,53.000764 251.93576,51.904061 249.59375,51 C 246.91715,49.966787 243.12143,49.046347 239.125,48.21875 C 235.12856,47.391152 230.93668,46.646129 227.21875,45.78125 C 223.50081,44.91637 220.36987,44.171009 217.71875,42.25 C 215.06762,40.328991 213.38602,37.576182 211.40625,34.3125 C 209.42648,31.048819 207.40607,27.28994 205.375,23.75 C 203.34392,20.210059 201.28417,16.877947 199.46875,14.65625 C 197.88026,12.712264 196.52054,12.045423 196.34375,11.90625 z" id="path3317" style="opacity:1;fill:url(#linearGradient2827);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:14.80892944;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"/> - <path d="M 246.78125,49.937636 C 247.42469,50.142466 248.03845,50.379526 248.59375,50.593886 C 250.93576,51.497946 252.03095,52.594656 252.21875,52.718886 C 252.13867,52.926956 251.88922,54.388676 250.53125,56.500136 C 248.97928,58.913246 246.4578,61.912066 243.71875,64.937636 C 241.91253,66.932796 240.01852,68.963926 238.21875,70.937636 C 220.27881,79.701026 195.76117,85.093886 168.71875,85.093886 C 166.59433,85.093886 164.49568,85.039506 162.40625,84.968886 C 162.4184,85.051736 162.42625,85.135936 162.4375,85.218886 C 164.84534,85.306216 167.26662,85.375136 169.71875,85.375136 C 196.76117,85.375136 221.27881,79.982276 239.21875,71.218886 C 241.01852,69.245176 242.91253,67.214046 244.71875,65.218886 C 247.4578,62.193316 249.97928,59.194496 251.53125,56.781386 C 252.88922,54.669926 253.13867,53.208206 253.21875,53.000136 C 253.03095,52.875906 251.93576,51.779196 249.59375,50.875136 C 248.75868,50.552786 247.80629,50.238636 246.78125,49.937636 z" id="path3325" sodipodi:nodetypes="cscsscsccscsscsc" style="opacity:1;fill:url(#linearGradient2829);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:14.80892944;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"/> - </g> - <path d="M 25.190679,119.77989 C 26.414679,122.74238 27.241162,124.11897 31.289475,123.31542 L 30.638356,120.21008 L 29.079766,120.3986 L 28.261711,118.57341 L 25.190679,119.77989 z" id="path3842" sodipodi:nodetypes="cccccc" style="opacity:0.7715356;fill:url(#linearGradient2831);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3928)"/> - <path d="M 26.03125,94.25 C 24.983755,105.1142 22.21942,119.85075 26.78125,123.15625 C 33.15283,127.7731 56.287818,111.82251 64.15625,111.8125 C 72.024682,111.80249 95.202691,127.69555 101.5625,123.0625 C 106.10279,119.75495 103.30815,105.10184 102.21875,94.25 L 98.34375,94.25 C 98.677864,97.707156 99.164649,101.42777 99.5625,105.03125 C 100.01038,109.08783 100.31178,112.97888 100.15625,115.84375 C 100.02016,118.35052 99.34151,119.69095 99.28125,119.90625 C 99.057443,119.89786 97.552762,120.17027 95.125,119.53125 C 92.350417,118.80093 88.723899,117.29504 85,115.625 C 81.276103,113.95497 77.426259,112.10169 73.90625,110.625 C 70.386242,109.1483 67.4302,107.93334 64.15625,107.9375 C 60.882303,107.94167 57.891241,109.1706 54.375,110.65625 C 50.858761,112.1419 47.032137,114.00799 43.3125,115.6875 C 39.592862,117.367 35.960216,118.85638 33.1875,119.59375 C 30.761373,120.23895 29.286908,119.99088 29.0625,120 C 29.004012,119.7864 28.29872,118.4439 28.15625,115.9375 C 27.993428,113.07303 28.281199,109.18271 28.71875,105.125 C 29.110886,101.48845 29.580993,97.733027 29.90625,94.25 L 26.03125,94.25 z" id="path3936" style="opacity:1;fill:url(#radialGradient2833);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:14.80851269;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"/> - <path d="M 64.125001,11.90625 C 63.951211,12.044552 62.583531,12.708229 61.000001,14.65625 C 59.190241,16.88256 57.147061,20.236153 55.125001,23.78125 C 53.102941,27.326347 51.096451,31.075042 49.125001,34.34375 C 47.153541,37.612458 45.489981,40.384748 42.843751,42.3125 C 40.197511,44.24025 37.059481,45.000663 33.343751,45.875 C 29.628021,46.749339 25.431821,47.474737 21.437501,48.3125 C 17.443181,49.150265 13.611451,50.084977 10.937501,51.125 C 8.3618506,52.126785 7.3899506,53.337785 7.3750006,53.25 C 7.4529506,53.457399 7.6679106,54.954496 9.0312506,57.0625 C 10.589351,59.471649 13.128261,62.450158 15.875001,65.46875 C 18.621741,68.487339 21.562991,71.552452 24.062501,74.4375 C 26.562011,77.322553 28.671831,79.762573 29.687501,82.875 C 30.703171,85.987425 30.441681,89.227198 30.125001,93.03125 C 29.808321,96.835302 29.250051,101.0673 28.812501,105.125 C 28.374951,109.18271 28.087181,113.07303 28.250001,115.9375 C 28.392471,118.4439 29.097761,119.7864 29.156251,120 C 29.380661,119.99088 30.855121,120.23895 33.281251,119.59375 C 36.053961,118.85638 39.686611,117.367 43.406251,115.6875 C 47.125881,114.00799 50.952511,112.1419 54.468751,110.65625 C 57.984991,109.1706 60.976051,107.94167 64.250001,107.9375 C 67.523951,107.93334 70.479991,109.1483 74.000001,110.625 C 77.520011,112.10169 81.369851,113.95497 85.093751,115.625 C 88.817651,117.29504 92.444151,118.80093 95.218751,119.53125 C 97.646511,120.17027 99.151181,119.89786 99.375001,119.90625 C 99.435261,119.69095 100.1139,118.35052 100.25,115.84375 C 100.40553,112.97888 100.10412,109.08783 99.656251,105.03125 C 99.208371,100.97466 98.638841,96.740738 98.312501,92.9375 C 97.986141,89.134266 97.710991,85.927495 98.718751,82.8125 C 99.726491,79.697501 101.82033,77.235155 104.3125,74.34375 C 106.80466,71.452346 109.76095,68.369316 112.5,65.34375 C 115.23905,62.318181 117.76053,59.319356 119.3125,56.90625 C 120.67047,54.794782 120.91992,53.333062 121,53.125 C 120.8122,53.000764 119.71701,51.904061 117.375,51 C 114.6984,49.966787 110.90268,49.046347 106.90625,48.21875 C 102.90981,47.391152 98.717931,46.646129 95.000001,45.78125 C 91.282061,44.91637 88.151121,44.171009 85.500001,42.25 C 82.848871,40.328991 81.167271,37.576182 79.187501,34.3125 C 77.207731,31.048819 75.187321,27.28994 73.156251,23.75 C 71.125171,20.210059 69.065421,16.877947 67.250001,14.65625 C 65.661511,12.712264 64.301791,12.045423 64.125001,11.90625 z" id="path3375" sodipodi:nodetypes="cssssssssssssssscssssssscssssssscsssssssc" style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2835);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1;filter:url(#filter3391)"/> - <g id="g3612" transform="matrix(-1,0,0,1,128.17175,0)"> - <path d="M 122.34464,49.937924 L 118.89749,52.943128 L 119.6046,54.97606 L 123.93563,55.771555 C 124.26838,53.827011 124.96313,51.882468 122.34464,49.937924 z" id="path3614" sodipodi:nodetypes="ccccc" style="opacity:0.60891089;fill:url(#radialGradient2837);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3564)"/> - <path d="M 122.34464,49.937924 L 118.89749,52.943128 L 119.6046,54.97606 L 123.93563,55.771555 C 124.26838,53.827011 124.96313,51.882468 122.34464,49.937924 z" id="path3616" sodipodi:nodetypes="ccccc" style="opacity:0.60891089;fill:url(#radialGradient2839);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3604)"/> - </g> - <g id="g3608"> - <path d="M 122.34464,49.937924 L 118.89749,52.943128 L 119.6046,54.97606 L 123.93563,55.771555 C 124.26838,53.827011 124.96313,51.882468 122.34464,49.937924 z" id="path3374" sodipodi:nodetypes="ccccc" style="opacity:0.60891089;fill:url(#radialGradient2841);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3564)"/> - <path d="M 122.34464,49.937924 L 118.89749,52.943128 L 119.6046,54.97606 L 123.93563,55.771555 C 124.26838,53.827011 124.96313,51.882468 122.34464,49.937924 z" id="path3568" sodipodi:nodetypes="ccccc" style="opacity:0.60891089;fill:url(#radialGradient2843);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3604)"/> - </g> - <path d="M 64.125001,11.90625 C 63.951211,12.044552 62.583531,12.708229 61.000001,14.65625 C 59.190241,16.88256 57.147061,20.236153 55.125001,23.78125 C 53.102941,27.326347 51.096451,31.075042 49.125001,34.34375 C 47.153541,37.612458 45.489981,40.384748 42.843751,42.3125 C 40.197511,44.24025 37.059481,45.000663 33.343751,45.875 C 29.628021,46.749339 25.431821,47.474737 21.437501,48.3125 C 17.443181,49.150265 13.611451,50.084977 10.937501,51.125 C 8.3618506,52.126785 7.3899506,53.337785 7.3750006,53.25 C 7.4529506,53.457399 7.6679106,54.954496 9.0312506,57.0625 C 10.589351,59.471649 13.128261,62.450158 15.875001,65.46875 C 18.621741,68.487339 21.562991,71.552452 24.062501,74.4375 C 26.562011,77.322553 28.671831,79.762573 29.687501,82.875 C 30.703171,85.987425 30.441681,89.227198 30.125001,93.03125 C 29.808321,96.835302 29.250051,101.0673 28.812501,105.125 C 28.374951,109.18271 28.087181,113.07303 28.250001,115.9375 C 28.392471,118.4439 29.097761,119.7864 29.156251,120 C 29.380661,119.99088 30.855121,120.23895 33.281251,119.59375 C 36.053961,118.85638 39.686611,117.367 43.406251,115.6875 C 47.125881,114.00799 50.952511,112.1419 54.468751,110.65625 C 57.984991,109.1706 60.976051,107.94167 64.250001,107.9375 C 67.523951,107.93334 70.479991,109.1483 74.000001,110.625 C 77.520011,112.10169 81.369851,113.95497 85.093751,115.625 C 88.817651,117.29504 92.444151,118.80093 95.218751,119.53125 C 97.646511,120.17027 99.151181,119.89786 99.375001,119.90625 C 99.435261,119.69095 100.1139,118.35052 100.25,115.84375 C 100.40553,112.97888 100.10412,109.08783 99.656251,105.03125 C 99.208371,100.97466 98.638841,96.740738 98.312501,92.9375 C 97.986141,89.134266 97.710991,85.927495 98.718751,82.8125 C 99.726491,79.697501 101.82033,77.235155 104.3125,74.34375 C 106.80466,71.452346 109.76095,68.369316 112.5,65.34375 C 115.23905,62.318181 117.76053,59.319356 119.3125,56.90625 C 120.67047,54.794782 120.91992,53.333062 121,53.125 C 120.8122,53.000764 119.71701,51.904061 117.375,51 C 114.6984,49.966787 110.90268,49.046347 106.90625,48.21875 C 102.90981,47.391152 98.717931,46.646129 95.000001,45.78125 C 91.282061,44.91637 88.151121,44.171009 85.500001,42.25 C 82.848871,40.328991 81.167271,37.576182 79.187501,34.3125 C 77.207731,31.048819 75.187321,27.28994 73.156251,23.75 C 71.125171,20.210059 69.065421,16.877947 67.250001,14.65625 C 65.661511,12.712264 64.301791,12.045423 64.125001,11.90625 z" id="path3395" sodipodi:nodetypes="cssssssssssssssscssssssscssssssscsssssssc" style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2845);stroke-width:0.60000002;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1;filter:url(#filter3401)"/> - <path d="M 25.190679,119.77989 C 26.414679,122.74238 27.241162,124.11897 31.289475,123.31542 L 30.638356,120.21008 L 29.079766,120.3986 L 28.261711,118.57341 L 25.190679,119.77989 z" id="path3932" sodipodi:nodetypes="cccccc" style="opacity:0.7715356;fill:url(#linearGradient2847);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3928)" transform="matrix(-1,0,0,1,128.10515,0)"/> - <path d="M 26.03125,94.25 C 24.983755,105.1142 22.21942,119.85075 26.78125,123.15625 C 33.15283,127.7731 56.287818,110.82251 64.15625,110.8125 C 72.024682,110.80249 95.202691,127.69555 101.5625,123.0625 C 106.10279,119.75495 103.30815,105.10184 102.21875,94.25 L 98.34375,94.25 C 98.677864,97.707156 99.164649,101.42777 99.5625,105.03125 C 100.01038,109.08783 100.31178,112.97888 100.15625,115.84375 C 100.02016,118.35052 99.34151,119.69095 99.28125,119.90625 C 99.057443,119.89786 97.552762,120.17027 95.125,119.53125 C 92.350417,118.80093 88.723899,117.29504 85,115.625 C 81.276103,113.95497 77.426259,112.10169 73.90625,110.625 C 70.386242,109.1483 67.4302,107.93334 64.15625,107.9375 C 60.882303,107.94167 57.891241,109.1706 54.375,110.65625 C 50.858761,112.1419 47.032137,114.00799 43.3125,115.6875 C 39.592862,117.367 35.960216,118.85638 33.1875,119.59375 C 30.761373,120.23895 29.286908,119.99088 29.0625,120 C 29.004012,119.7864 28.29872,118.4439 28.15625,115.9375 C 27.993428,113.07303 28.281199,109.18271 28.71875,105.125 C 29.110886,101.48845 29.580993,97.733027 29.90625,94.25 L 26.03125,94.25 z" id="path3265" sodipodi:nodetypes="csssccsscssssssscsscc" style="opacity:1;fill:url(#radialGradient2849);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:14.80851269;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1;filter:url(#filter3285)"/> - <path d="M 3.96875,51.25 C 3.8072482,51.513327 3.653679,51.78066 3.5625,52.0625 C 1.4104994,58.714465 18.791507,72.91663 24.40625,81.25 C 25.066744,82.219734 25.881994,83.560003 26.151902,85.050699 C 27.656842,84.748586 29.576041,82.642021 28.90625,81.25 C 27.768648,78.87567 26.012193,76.796136 23.96875,74.4375 C 21.469238,71.552452 18.527988,68.487339 15.78125,65.46875 C 13.034512,62.450158 10.495601,59.471649 8.9375,57.0625 C 7.574162,54.954496 7.359205,53.457399 7.28125,53.25 C 7.2955626,53.33402 8.1966214,52.223338 10.53125,51.25 L 3.96875,51.25 z M 117.875,51.25 C 119.79897,52.094675 120.73559,53.012104 120.90625,53.125 C 120.82618,53.333062 120.57672,54.794782 119.21875,56.90625 C 117.66679,59.319356 115.1453,62.318181 112.40625,65.34375 C 109.66721,68.369316 106.71091,71.452346 104.21875,74.34375 C 102.16137,76.730721 100.3775,78.839259 99.25,81.25 C 98.389358,83.690958 101.19084,84.749904 102.08854,84.829728 C 102.41731,83.373922 103.07445,82.301223 103.75,81.25 C 109.28341,72.913848 126.77026,58.575986 124.59375,51.90625 C 124.52034,51.681299 124.39982,51.462951 124.28125,51.25 L 117.875,51.25 z" id="rect3289" sodipodi:nodetypes="cscccssssccccssscccscc" style="opacity:0.84158415;fill:url(#radialGradient2851);fill-opacity:1;stroke:none;stroke-width:6.1420002;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter3362)"/> - </g> - <g id="g3701"> - <path d="M 64.03125,8.2 C 56.162818,8.2100117 46.828561,34.754451 40.46875,39.3875 C 34.10894,44.020548 5.9844574,44.776082 3.5625,52.2625 C 1.1405426,59.748917 23.465249,76.813524 25.90625,84.29375 C 28.347251,91.77398 20.40967,118.7394 26.78125,123.35625 C 33.15283,127.9731 56.287818,112.02251 64.15625,112.0125 C 72.024682,112.00249 95.202691,127.89555 101.5625,123.2625 C 107.92231,118.62945 99.890544,91.686414 102.3125,84.2 C 104.73446,76.713583 127.03475,59.58648 124.59375,52.10625 C 122.15275,44.626021 94.027829,43.941849 87.65625,39.325 C 81.28467,34.708152 71.899685,8.1899879 64.03125,8.2 z M 64.03125,12.10625 C 64.208046,12.245423 65.56776,12.912264 67.15625,14.85625 C 68.97167,17.077947 71.031426,20.410059 73.0625,23.95 C 75.093573,27.48994 77.113982,31.248819 79.09375,34.5125 C 81.073519,37.776182 82.75512,40.528991 85.40625,42.45 C 88.057376,44.371009 91.18831,45.11637 94.90625,45.98125 C 98.624192,46.846129 102.81606,47.591152 106.8125,48.41875 C 110.80894,49.246347 114.60465,50.166787 117.28125,51.2 C 119.62327,52.104061 120.71845,53.200764 120.90625,53.325 C 120.82618,53.533062 120.57672,54.994782 119.21875,57.10625 C 117.66679,59.519356 115.1453,62.518181 112.40625,65.54375 C 109.66721,68.569316 106.71091,71.652346 104.21875,74.54375 C 101.72659,77.435155 99.632744,79.897501 98.625,83.0125 C 97.617256,86.127495 97.892393,89.334266 98.21875,93.1375 C 98.545107,96.940738 99.114622,101.17466 99.5625,105.23125 C 100.01038,109.28783 100.31178,113.17888 100.15625,116.04375 C 100.02016,118.55052 99.34151,119.89095 99.28125,120.10625 C 99.057443,120.09786 97.552762,120.37027 95.125,119.73125 C 92.350417,119.00093 88.723899,117.49504 85,115.825 C 81.276103,114.15497 77.426259,112.30169 73.90625,110.825 C 70.386242,109.3483 67.4302,108.13334 64.15625,108.1375 C 60.882303,108.14167 57.891241,109.3706 54.375,110.85625 C 50.858761,112.3419 47.032137,114.20799 43.3125,115.8875 C 39.592862,117.567 35.960216,119.05638 33.1875,119.79375 C 30.761373,120.43895 29.286908,120.19088 29.0625,120.2 C 29.004012,119.9864 28.29872,118.6439 28.15625,116.1375 C 27.993428,113.27303 28.281199,109.38271 28.71875,105.325 C 29.156299,101.2673 29.714573,97.035302 30.03125,93.23125 C 30.347928,89.427198 30.609418,86.187425 29.59375,83.075 C 28.578082,79.962573 26.468263,77.522553 23.96875,74.6375 C 21.469238,71.752452 18.527988,68.687339 15.78125,65.66875 C 13.034512,62.650158 10.495601,59.671649 8.9375,57.2625 C 7.5741618,55.154496 7.3592053,53.657399 7.28125,53.45 C 7.2962039,53.537785 8.2681026,52.326785 10.84375,51.325 C 13.517705,50.284977 17.34943,49.350265 21.34375,48.5125 C 25.33807,47.674737 29.534272,46.949339 33.25,46.075 C 36.96573,45.200663 40.103767,44.44025 42.75,42.5125 C 45.396234,40.584748 47.059794,37.812458 49.03125,34.54375 C 51.002705,31.275042 53.009191,27.526347 55.03125,23.98125 C 57.053308,20.436153 59.096493,17.08256 60.90625,14.85625 C 62.489787,12.908229 63.857465,12.244552 64.03125,12.10625 z" id="path3703" style="opacity:1;fill:url(#radialGradient3263);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:14.80851269;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1;filter:url(#filter3259)"/> - <path d="M 153.09403,94.713757 C 144.53658,107.09689 92.616372,93.013297 78.414631,98.001518 C 64.21289,102.98974 32.50348,146.4474 18.082028,142.13539 C 3.6605746,137.82337 1.0106378,84.092245 -8.1220219,72.127031 C -17.254681,60.161818 -68.384124,43.433534 -68.739625,28.385431 C -69.095125,13.337327 -18.812666,-5.7867426 -10.255219,-18.169872 C -1.697772,-30.553002 -1.5880954,-84.349316 12.613645,-89.337536 C 26.815387,-94.325757 60.541592,-52.41396 74.963045,-48.101941 C 89.384498,-43.789923 140.58172,-60.30959 149.71438,-48.344376 C 158.84704,-36.379162 129.40853,8.6478227 129.76403,23.695927 C 130.11953,38.74403 161.65148,82.330628 153.09403,94.713757 z" id="path3705" inkscape:flatsided="false" inkscape:randomized="0" inkscape:rounded="0.20136392" sodipodi:arg1="0.60469864" sodipodi:arg2="1.2330172" sodipodi:cx="52.952892" sodipodi:cy="25.510532" sodipodi:r1="121.72647" sodipodi:r2="76.832565" sodipodi:sides="5" sodipodi:type="star" style="opacity:1;fill:url(#radialGradient2906);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:14.80892944;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1" transform="matrix(0.4934214,0.1726044,-0.1726044,0.4934214,42.377875,49.908537)"/> - <path d="M 64.03125,8 C 56.162818,8.0100117 46.828561,34.554451 40.46875,39.1875 C 34.10894,43.820548 5.984457,44.576082 3.5625,52.0625 C 1.140543,59.548917 23.465249,76.613524 25.90625,84.09375 C 28.347251,91.57398 20.40967,118.5394 26.78125,123.15625 C 33.15283,127.7731 56.287818,111.82251 64.15625,111.8125 C 72.024682,111.80249 95.202691,127.69555 101.5625,123.0625 C 107.92231,118.42945 99.890544,91.486414 102.3125,84 C 104.73446,76.513583 127.03475,59.38648 124.59375,51.90625 C 122.15275,44.426021 94.027829,43.741849 87.65625,39.125 C 81.28467,34.508152 71.899685,7.9899879 64.03125,8 z M 64.03125,11.90625 C 64.208046,12.045423 65.56776,12.712264 67.15625,14.65625 C 68.97167,16.877947 71.031426,20.210059 73.0625,23.75 C 75.093573,27.28994 77.113982,31.048819 79.09375,34.3125 C 81.073519,37.576182 82.75512,40.328991 85.40625,42.25 C 88.057376,44.171009 91.18831,44.91637 94.90625,45.78125 C 98.624192,46.646129 102.81606,47.391152 106.8125,48.21875 C 110.80894,49.046347 114.60465,49.966787 117.28125,51 C 119.62327,51.904061 120.71845,53.000764 120.90625,53.125 C 120.82618,53.333062 120.57672,54.794782 119.21875,56.90625 C 117.66679,59.319356 115.1453,62.318181 112.40625,65.34375 C 109.66721,68.369316 106.71091,71.452346 104.21875,74.34375 C 101.72659,77.235155 99.632744,79.697501 98.625,82.8125 C 97.617256,85.927495 97.892393,89.134266 98.21875,92.9375 C 98.545107,96.740738 99.114622,100.97466 99.5625,105.03125 C 100.01038,109.08783 100.31178,112.97888 100.15625,115.84375 C 100.02016,118.35052 99.34151,119.69095 99.28125,119.90625 C 99.057443,119.89786 97.552762,120.17027 95.125,119.53125 C 92.350417,118.80093 88.723899,117.29504 85,115.625 C 81.276103,113.95497 77.426259,112.10169 73.90625,110.625 C 70.386242,109.1483 67.4302,107.93334 64.15625,107.9375 C 60.882303,107.94167 57.891241,109.1706 54.375,110.65625 C 50.858761,112.1419 47.032137,114.00799 43.3125,115.6875 C 39.592862,117.367 35.960216,118.85638 33.1875,119.59375 C 30.761373,120.23895 29.286908,119.99088 29.0625,120 C 29.004012,119.7864 28.29872,118.4439 28.15625,115.9375 C 27.993428,113.07303 28.281199,109.18271 28.71875,105.125 C 29.156299,101.0673 29.714573,96.835302 30.03125,93.03125 C 30.347928,89.227198 30.609418,85.987425 29.59375,82.875 C 28.578082,79.762573 26.468263,77.322553 23.96875,74.4375 C 21.469238,71.552452 18.527988,68.487339 15.78125,65.46875 C 13.034512,62.450158 10.495601,59.471649 8.9375,57.0625 C 7.574162,54.954496 7.359205,53.457399 7.28125,53.25 C 7.296204,53.337785 8.268103,52.126785 10.84375,51.125 C 13.517705,50.084977 17.34943,49.150265 21.34375,48.3125 C 25.33807,47.474737 29.534272,46.749339 33.25,45.875 C 36.96573,45.000663 40.103767,44.24025 42.75,42.3125 C 45.396234,40.384748 47.059794,37.612458 49.03125,34.34375 C 51.002705,31.075042 53.009191,27.326347 55.03125,23.78125 C 57.053308,20.236153 59.096493,16.88256 60.90625,14.65625 C 62.489787,12.708229 63.857465,12.044552 64.03125,11.90625 z" id="path3707" style="opacity:1;fill:url(#linearGradient2475);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:14.80851269;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"/> - <path d="M 60.98796,9.471226 C 62.846491,8.2143022 64.889907,8.0204702 67.219338,9.471226 L 64.037358,15.614216 L 60.98796,9.471226 z" id="path3709" sodipodi:nodetypes="cccc" style="fill:url(#linearGradient3800);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3838)"/> - <path d="M 64.039064,11.90625 C 63.865274,12.044552 62.497594,12.708229 60.914064,14.65625 C 59.104304,16.88256 57.061124,20.236153 55.039064,23.78125 C 53.017004,27.326347 51.010514,31.075042 49.039064,34.34375 C 47.067604,37.612458 45.404044,40.384748 42.757814,42.3125 C 40.111574,44.24025 36.973544,45.000663 33.257814,45.875 C 29.542084,46.749339 25.345884,47.474737 21.351564,48.3125 C 17.357244,49.150265 13.525514,50.084977 10.851564,51.125 C 8.2759131,52.126785 7.3040131,53.337785 7.2890631,53.25 C 7.3670131,53.457399 7.5819731,54.954496 8.9453131,57.0625 C 10.503414,59.471649 13.042324,62.450158 15.789064,65.46875 C 18.535804,68.487339 21.477054,71.552452 23.976564,74.4375 C 26.476074,77.322553 28.585894,79.762573 29.601564,82.875 C 29.865144,83.682722 30.019904,84.511238 30.132814,85.34375 C 32.540654,85.431079 34.961934,85.5 37.414064,85.5 C 64.456484,85.5 88.974124,80.107134 106.91406,71.34375 C 108.71383,69.370041 110.60784,67.338911 112.41406,65.34375 C 115.15311,62.318181 117.67459,59.319356 119.22656,56.90625 C 120.58453,54.794782 120.83398,53.333062 120.91406,53.125 C 120.72626,53.000764 119.63107,51.904061 117.28906,51 C 114.61246,49.966787 110.81674,49.046347 106.82031,48.21875 C 102.82387,47.391152 98.631994,46.646129 94.914064,45.78125 C 91.196124,44.91637 88.065184,44.171009 85.414064,42.25 C 82.762934,40.328991 81.081334,37.576182 79.101564,34.3125 C 77.121794,31.048819 75.101384,27.28994 73.070314,23.75 C 71.039234,20.210059 68.979484,16.877947 67.164064,14.65625 C 65.575574,12.712264 64.215854,12.045423 64.039064,11.90625 z" id="path3711" style="opacity:1;fill:url(#radialGradient3372);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:14.80892944;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"/> - <path d="M 44.96875,33.9375 L 44.1875,35.21875 C 44.177097,35.219516 44.166653,35.219516 44.15625,35.21875 L 42.8125,36.9375 L 41.53125,38.46875 C 41.521947,38.480223 41.511473,38.490697 41.5,38.5 L 40.03125,39.71875 C 40.021947,39.730223 40.011473,39.740697 40,39.75 L 37.125,41.03125 C 37.115697,41.042723 37.105223,41.053197 37.09375,41.0625 L 33.875,41.96875 L 33.375,45.625 L 35.125,45.21875 L 35.125,45.25 L 39.71875,43.75 L 39.75,43.75 L 42.8125,42.0625 L 42.875,42.03125 L 45.78125,39.09375 L 45.8125,39.0625 L 48.96875,34.03125 L 44.96875,33.9375 z" id="path3713" inkscape:original="M 44.84375 33.71875 L 44 35.09375 L 42.65625 36.8125 L 41.375 38.34375 L 39.90625 39.5625 L 37.03125 40.84375 L 33.6875 41.78125 L 33.09375 45.9375 L 35.1875 45.4375 L 39.8125 43.9375 L 42.96875 42.21875 L 45.96875 39.21875 L 49.375 33.8125 L 44.84375 33.71875 z " inkscape:radius="-0.21269609" sodipodi:type="inkscape:offset" style="opacity:0.64356432;fill:url(#radialGradient3669);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3663)" transform="translate(0,0.3)"/> - <path d="M 64.039064,11.90625 C 63.865274,12.044552 62.497594,12.708229 60.914064,14.65625 C 59.104304,16.88256 57.061124,20.236153 55.039064,23.78125 C 53.017004,27.326347 51.010514,31.075042 49.039064,34.34375 C 47.067604,37.612458 45.404044,40.384748 42.757814,42.3125 C 40.111574,44.24025 36.973544,45.000663 33.257814,45.875 C 29.542084,46.749339 25.345884,47.474737 21.351564,48.3125 C 17.357244,49.150265 13.525514,50.084977 10.851564,51.125 C 8.2759131,52.126785 7.3040131,53.337785 7.2890631,53.25 C 7.3670131,53.457399 7.5819731,54.954496 8.9453131,57.0625 C 10.503414,59.471649 13.042324,62.450158 15.789064,65.46875 C 18.535804,68.487339 21.477054,71.552452 23.976564,74.4375 C 26.476074,77.322553 28.585894,79.762573 29.601564,82.875 C 29.865144,83.682722 30.019904,84.511238 30.132814,85.34375 C 32.540654,85.431079 34.961934,85.5 37.414064,85.5 C 64.456484,85.5 88.974124,80.107134 106.91406,71.34375 C 108.71383,69.370041 110.60784,67.338911 112.41406,65.34375 C 115.15311,62.318181 117.67459,59.319356 119.22656,56.90625 C 120.58453,54.794782 120.83398,53.333062 120.91406,53.125 C 120.72626,53.000764 119.63107,51.904061 117.28906,51 C 114.61246,49.966787 110.81674,49.046347 106.82031,48.21875 C 102.82387,47.391152 98.631994,46.646129 94.914064,45.78125 C 91.196124,44.91637 88.065184,44.171009 85.414064,42.25 C 82.762934,40.328991 81.081334,37.576182 79.101564,34.3125 C 77.121794,31.048819 75.101384,27.28994 73.070314,23.75 C 71.039234,20.210059 68.979484,16.877947 67.164064,14.65625 C 65.575574,12.712264 64.215854,12.045423 64.039064,11.90625 z" id="path3715" style="opacity:1;fill:url(#linearGradient3315);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:14.80892944;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"/> - <path d="M 44.96875,33.9375 L 44.1875,35.21875 C 44.177097,35.219516 44.166653,35.219516 44.15625,35.21875 L 42.8125,36.9375 L 41.53125,38.46875 C 41.521947,38.480223 41.511473,38.490697 41.5,38.5 L 40.03125,39.71875 C 40.021947,39.730223 40.011473,39.740697 40,39.75 L 37.125,41.03125 C 37.115697,41.042723 37.105223,41.053197 37.09375,41.0625 L 33.875,41.96875 L 33.375,45.625 L 35.125,45.21875 L 35.125,45.25 L 39.71875,43.75 L 39.75,43.75 L 42.8125,42.0625 L 42.875,42.03125 L 45.78125,39.09375 L 45.8125,39.0625 L 48.96875,34.03125 L 44.96875,33.9375 z" id="path3717" inkscape:original="M 44.84375 33.71875 L 44 35.09375 L 42.65625 36.8125 L 41.375 38.34375 L 39.90625 39.5625 L 37.03125 40.84375 L 33.6875 41.78125 L 33.09375 45.9375 L 35.1875 45.4375 L 39.8125 43.9375 L 42.96875 42.21875 L 45.96875 39.21875 L 49.375 33.8125 L 44.84375 33.71875 z " inkscape:radius="-0.21269609" sodipodi:type="inkscape:offset" style="opacity:0.64356432;fill:url(#radialGradient3673);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3663)" transform="matrix(-1,0,0,1,128.125,0.3)"/> - <g id="g3719" transform="translate(-132.29928,0)"> - <path d="M 196.34375,11.90625 C 196.16996,12.044552 194.80228,12.708229 193.21875,14.65625 C 191.40899,16.88256 189.36581,20.236153 187.34375,23.78125 C 185.32169,27.326347 183.3152,31.075042 181.34375,34.34375 C 179.37229,37.612458 177.70873,40.384748 175.0625,42.3125 C 172.41626,44.24025 169.27823,45.000663 165.5625,45.875 C 161.84677,46.749339 157.65057,47.474737 153.65625,48.3125 C 149.66193,49.150265 145.8302,50.084977 143.15625,51.125 C 140.5806,52.126785 139.6087,53.337785 139.59375,53.25 C 139.62377,53.329884 139.71528,53.638731 139.84375,54.0625 C 140.2595,53.69998 141.25985,52.862595 143.15625,52.125 C 145.8302,51.084977 149.66193,50.150265 153.65625,49.3125 C 157.65057,48.474737 161.84677,47.749339 165.5625,46.875 C 169.27823,46.000663 172.41626,45.24025 175.0625,43.3125 C 177.70873,41.384748 179.37229,38.612458 181.34375,35.34375 C 183.3152,32.075042 185.32169,28.326347 187.34375,24.78125 C 189.36581,21.236153 191.40899,17.88256 193.21875,15.65625 C 194.80228,13.708229 196.16996,13.044552 196.34375,12.90625 C 196.52054,13.045423 197.88026,13.712264 199.46875,15.65625 C 201.28417,17.877947 203.34392,21.210059 205.375,24.75 C 207.40607,28.28994 209.42648,32.048819 211.40625,35.3125 C 213.38602,38.576182 215.06762,41.328991 217.71875,43.25 C 220.36987,45.171009 223.50081,45.91637 227.21875,46.78125 C 230.93668,47.646129 235.12856,48.391152 239.125,49.21875 C 243.12143,50.046347 246.91715,50.966787 249.59375,52 C 251.51448,52.74144 252.56925,53.579608 253,53.9375 C 253.13371,53.522484 253.18802,53.204851 253.21875,53.125 C 253.03095,53.000764 251.93576,51.904061 249.59375,51 C 246.91715,49.966787 243.12143,49.046347 239.125,48.21875 C 235.12856,47.391152 230.93668,46.646129 227.21875,45.78125 C 223.50081,44.91637 220.36987,44.171009 217.71875,42.25 C 215.06762,40.328991 213.38602,37.576182 211.40625,34.3125 C 209.42648,31.048819 207.40607,27.28994 205.375,23.75 C 203.34392,20.210059 201.28417,16.877947 199.46875,14.65625 C 197.88026,12.712264 196.52054,12.045423 196.34375,11.90625 z" id="path3721" style="opacity:1;fill:url(#linearGradient3369);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:14.80892944;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"/> - <path d="M 246.78125,49.937636 C 247.42469,50.142466 248.03845,50.379526 248.59375,50.593886 C 250.93576,51.497946 252.03095,52.594656 252.21875,52.718886 C 252.13867,52.926956 251.88922,54.388676 250.53125,56.500136 C 248.97928,58.913246 246.4578,61.912066 243.71875,64.937636 C 241.91253,66.932796 240.01852,68.963926 238.21875,70.937636 C 220.27881,79.701026 195.76117,85.093886 168.71875,85.093886 C 166.59433,85.093886 164.49568,85.039506 162.40625,84.968886 C 162.4184,85.051736 162.42625,85.135936 162.4375,85.218886 C 164.84534,85.306216 167.26662,85.375136 169.71875,85.375136 C 196.76117,85.375136 221.27881,79.982276 239.21875,71.218886 C 241.01852,69.245176 242.91253,67.214046 244.71875,65.218886 C 247.4578,62.193316 249.97928,59.194496 251.53125,56.781386 C 252.88922,54.669926 253.13867,53.208206 253.21875,53.000136 C 253.03095,52.875906 251.93576,51.779196 249.59375,50.875136 C 248.75868,50.552786 247.80629,50.238636 246.78125,49.937636 z" id="path3723" sodipodi:nodetypes="cscsscsccscsscsc" style="opacity:1;fill:url(#linearGradient3345);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:14.80892944;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"/> - </g> - <path d="M 25.190679,119.77989 C 26.414679,122.74238 27.241162,124.11897 31.289475,123.31542 L 30.638356,120.21008 L 29.079766,120.3986 L 28.261711,118.57341 L 25.190679,119.77989 z" id="path3725" sodipodi:nodetypes="cccccc" style="opacity:0.7715356;fill:url(#linearGradient2853);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3928)"/> - <path d="M 26.03125,94.25 C 24.983755,105.1142 22.21942,119.85075 26.78125,123.15625 C 33.15283,127.7731 56.287818,111.82251 64.15625,111.8125 C 72.024682,111.80249 95.202691,127.69555 101.5625,123.0625 C 106.10279,119.75495 103.30815,105.10184 102.21875,94.25 L 98.34375,94.25 C 98.677864,97.707156 99.164649,101.42777 99.5625,105.03125 C 100.01038,109.08783 100.31178,112.97888 100.15625,115.84375 C 100.02016,118.35052 99.34151,119.69095 99.28125,119.90625 C 99.057443,119.89786 97.552762,120.17027 95.125,119.53125 C 92.350417,118.80093 88.723899,117.29504 85,115.625 C 81.276103,113.95497 77.426259,112.10169 73.90625,110.625 C 70.386242,109.1483 67.4302,107.93334 64.15625,107.9375 C 60.882303,107.94167 57.891241,109.1706 54.375,110.65625 C 50.858761,112.1419 47.032137,114.00799 43.3125,115.6875 C 39.592862,117.367 35.960216,118.85638 33.1875,119.59375 C 30.761373,120.23895 29.286908,119.99088 29.0625,120 C 29.004012,119.7864 28.29872,118.4439 28.15625,115.9375 C 27.993428,113.07303 28.281199,109.18271 28.71875,105.125 C 29.110886,101.48845 29.580993,97.733027 29.90625,94.25 L 26.03125,94.25 z" id="path3727" style="opacity:1;fill:url(#radialGradient3956);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:14.80851269;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"/> - <path d="M 64.125001,11.90625 C 63.951211,12.044552 62.583531,12.708229 61.000001,14.65625 C 59.190241,16.88256 57.147061,20.236153 55.125001,23.78125 C 53.102941,27.326347 51.096451,31.075042 49.125001,34.34375 C 47.153541,37.612458 45.489981,40.384748 42.843751,42.3125 C 40.197511,44.24025 37.059481,45.000663 33.343751,45.875 C 29.628021,46.749339 25.431821,47.474737 21.437501,48.3125 C 17.443181,49.150265 13.611451,50.084977 10.937501,51.125 C 8.3618506,52.126785 7.3899506,53.337785 7.3750006,53.25 C 7.4529506,53.457399 7.6679106,54.954496 9.0312506,57.0625 C 10.589351,59.471649 13.128261,62.450158 15.875001,65.46875 C 18.621741,68.487339 21.562991,71.552452 24.062501,74.4375 C 26.562011,77.322553 28.671831,79.762573 29.687501,82.875 C 30.703171,85.987425 30.441681,89.227198 30.125001,93.03125 C 29.808321,96.835302 29.250051,101.0673 28.812501,105.125 C 28.374951,109.18271 28.087181,113.07303 28.250001,115.9375 C 28.392471,118.4439 29.097761,119.7864 29.156251,120 C 29.380661,119.99088 30.855121,120.23895 33.281251,119.59375 C 36.053961,118.85638 39.686611,117.367 43.406251,115.6875 C 47.125881,114.00799 50.952511,112.1419 54.468751,110.65625 C 57.984991,109.1706 60.976051,107.94167 64.250001,107.9375 C 67.523951,107.93334 70.479991,109.1483 74.000001,110.625 C 77.520011,112.10169 81.369851,113.95497 85.093751,115.625 C 88.817651,117.29504 92.444151,118.80093 95.218751,119.53125 C 97.646511,120.17027 99.151181,119.89786 99.375001,119.90625 C 99.435261,119.69095 100.1139,118.35052 100.25,115.84375 C 100.40553,112.97888 100.10412,109.08783 99.656251,105.03125 C 99.208371,100.97466 98.638841,96.740738 98.312501,92.9375 C 97.986141,89.134266 97.710991,85.927495 98.718751,82.8125 C 99.726491,79.697501 101.82033,77.235155 104.3125,74.34375 C 106.80466,71.452346 109.76095,68.369316 112.5,65.34375 C 115.23905,62.318181 117.76053,59.319356 119.3125,56.90625 C 120.67047,54.794782 120.91992,53.333062 121,53.125 C 120.8122,53.000764 119.71701,51.904061 117.375,51 C 114.6984,49.966787 110.90268,49.046347 106.90625,48.21875 C 102.90981,47.391152 98.717931,46.646129 95.000001,45.78125 C 91.282061,44.91637 88.151121,44.171009 85.500001,42.25 C 82.848871,40.328991 81.167271,37.576182 79.187501,34.3125 C 77.207731,31.048819 75.187321,27.28994 73.156251,23.75 C 71.125171,20.210059 69.065421,16.877947 67.250001,14.65625 C 65.661511,12.712264 64.301791,12.045423 64.125001,11.90625 z" id="path3729" sodipodi:nodetypes="cssssssssssssssscssssssscssssssscsssssssc" style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2855);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1;filter:url(#filter3391)"/> - <g id="g3731" transform="matrix(-1,0,0,1,128.17175,0)"> - <path d="M 122.34464,49.937924 L 118.89749,52.943128 L 119.6046,54.97606 L 123.93563,55.771555 C 124.26838,53.827011 124.96313,51.882468 122.34464,49.937924 z" id="path3733" sodipodi:nodetypes="ccccc" style="opacity:0.60891089;fill:url(#radialGradient3618);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3564)"/> - <path d="M 122.34464,49.937924 L 118.89749,52.943128 L 119.6046,54.97606 L 123.93563,55.771555 C 124.26838,53.827011 124.96313,51.882468 122.34464,49.937924 z" id="path3735" sodipodi:nodetypes="ccccc" style="opacity:0.60891089;fill:url(#radialGradient3620);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3604)"/> - </g> - <g id="g3737"> - <path d="M 122.34464,49.937924 L 118.89749,52.943128 L 119.6046,54.97606 L 123.93563,55.771555 C 124.26838,53.827011 124.96313,51.882468 122.34464,49.937924 z" id="path3739" sodipodi:nodetypes="ccccc" style="opacity:0.60891089;fill:url(#radialGradient3382);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3564)"/> - <path d="M 122.34464,49.937924 L 118.89749,52.943128 L 119.6046,54.97606 L 123.93563,55.771555 C 124.26838,53.827011 124.96313,51.882468 122.34464,49.937924 z" id="path3741" sodipodi:nodetypes="ccccc" style="opacity:0.60891089;fill:url(#radialGradient3570);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3604)"/> - </g> - <path d="M 64.125001,11.90625 C 63.951211,12.044552 62.583531,12.708229 61.000001,14.65625 C 59.190241,16.88256 57.147061,20.236153 55.125001,23.78125 C 53.102941,27.326347 51.096451,31.075042 49.125001,34.34375 C 47.153541,37.612458 45.489981,40.384748 42.843751,42.3125 C 40.197511,44.24025 37.059481,45.000663 33.343751,45.875 C 29.628021,46.749339 25.431821,47.474737 21.437501,48.3125 C 17.443181,49.150265 13.611451,50.084977 10.937501,51.125 C 8.3618506,52.126785 7.3899506,53.337785 7.3750006,53.25 C 7.4529506,53.457399 7.6679106,54.954496 9.0312506,57.0625 C 10.589351,59.471649 13.128261,62.450158 15.875001,65.46875 C 18.621741,68.487339 21.562991,71.552452 24.062501,74.4375 C 26.562011,77.322553 28.671831,79.762573 29.687501,82.875 C 30.703171,85.987425 30.441681,89.227198 30.125001,93.03125 C 29.808321,96.835302 29.250051,101.0673 28.812501,105.125 C 28.374951,109.18271 28.087181,113.07303 28.250001,115.9375 C 28.392471,118.4439 29.097761,119.7864 29.156251,120 C 29.380661,119.99088 30.855121,120.23895 33.281251,119.59375 C 36.053961,118.85638 39.686611,117.367 43.406251,115.6875 C 47.125881,114.00799 50.952511,112.1419 54.468751,110.65625 C 57.984991,109.1706 60.976051,107.94167 64.250001,107.9375 C 67.523951,107.93334 70.479991,109.1483 74.000001,110.625 C 77.520011,112.10169 81.369851,113.95497 85.093751,115.625 C 88.817651,117.29504 92.444151,118.80093 95.218751,119.53125 C 97.646511,120.17027 99.151181,119.89786 99.375001,119.90625 C 99.435261,119.69095 100.1139,118.35052 100.25,115.84375 C 100.40553,112.97888 100.10412,109.08783 99.656251,105.03125 C 99.208371,100.97466 98.638841,96.740738 98.312501,92.9375 C 97.986141,89.134266 97.710991,85.927495 98.718751,82.8125 C 99.726491,79.697501 101.82033,77.235155 104.3125,74.34375 C 106.80466,71.452346 109.76095,68.369316 112.5,65.34375 C 115.23905,62.318181 117.76053,59.319356 119.3125,56.90625 C 120.67047,54.794782 120.91992,53.333062 121,53.125 C 120.8122,53.000764 119.71701,51.904061 117.375,51 C 114.6984,49.966787 110.90268,49.046347 106.90625,48.21875 C 102.90981,47.391152 98.717931,46.646129 95.000001,45.78125 C 91.282061,44.91637 88.151121,44.171009 85.500001,42.25 C 82.848871,40.328991 81.167271,37.576182 79.187501,34.3125 C 77.207731,31.048819 75.187321,27.28994 73.156251,23.75 C 71.125171,20.210059 69.065421,16.877947 67.250001,14.65625 C 65.661511,12.712264 64.301791,12.045423 64.125001,11.90625 z" id="path3743" sodipodi:nodetypes="cssssssssssssssscssssssscssssssscsssssssc" style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3385);stroke-width:0.60000002;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1;filter:url(#filter3401)"/> - <path d="M 25.190679,119.77989 C 26.414679,122.74238 27.241162,124.11897 31.289475,123.31542 L 30.638356,120.21008 L 29.079766,120.3986 L 28.261711,118.57341 L 25.190679,119.77989 z" id="path3745" sodipodi:nodetypes="cccccc" style="opacity:0.7715356;fill:url(#linearGradient3934);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3928)" transform="matrix(-1,0,0,1,128.10515,0)"/> - <path d="M 26.03125,94.25 C 24.983755,105.1142 22.21942,119.85075 26.78125,123.15625 C 33.15283,127.7731 56.287818,110.82251 64.15625,110.8125 C 72.024682,110.80249 95.202691,127.69555 101.5625,123.0625 C 106.10279,119.75495 103.30815,105.10184 102.21875,94.25 L 98.34375,94.25 C 98.677864,97.707156 99.164649,101.42777 99.5625,105.03125 C 100.01038,109.08783 100.31178,112.97888 100.15625,115.84375 C 100.02016,118.35052 99.34151,119.69095 99.28125,119.90625 C 99.057443,119.89786 97.552762,120.17027 95.125,119.53125 C 92.350417,118.80093 88.723899,117.29504 85,115.625 C 81.276103,113.95497 77.426259,112.10169 73.90625,110.625 C 70.386242,109.1483 67.4302,107.93334 64.15625,107.9375 C 60.882303,107.94167 57.891241,109.1706 54.375,110.65625 C 50.858761,112.1419 47.032137,114.00799 43.3125,115.6875 C 39.592862,117.367 35.960216,118.85638 33.1875,119.59375 C 30.761373,120.23895 29.286908,119.99088 29.0625,120 C 29.004012,119.7864 28.29872,118.4439 28.15625,115.9375 C 27.993428,113.07303 28.281199,109.18271 28.71875,105.125 C 29.110886,101.48845 29.580993,97.733027 29.90625,94.25 L 26.03125,94.25 z" id="path3747" sodipodi:nodetypes="csssccsscssssssscsscc" style="opacity:1;fill:url(#radialGradient3267);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:14.80851269;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1;filter:url(#filter3285)"/> - <path d="M 3.96875,51.25 C 3.8072482,51.513327 3.653679,51.78066 3.5625,52.0625 C 1.4104994,58.714465 18.791507,72.91663 24.40625,81.25 C 25.066744,82.219734 25.881994,83.560003 26.151902,85.050699 C 27.656842,84.748586 29.576041,82.642021 28.90625,81.25 C 27.768648,78.87567 26.012193,76.796136 23.96875,74.4375 C 21.469238,71.552452 18.527988,68.487339 15.78125,65.46875 C 13.034512,62.450158 10.495601,59.471649 8.9375,57.0625 C 7.574162,54.954496 7.359205,53.457399 7.28125,53.25 C 7.2955626,53.33402 8.1966214,52.223338 10.53125,51.25 L 3.96875,51.25 z M 117.875,51.25 C 119.79897,52.094675 120.73559,53.012104 120.90625,53.125 C 120.82618,53.333062 120.57672,54.794782 119.21875,56.90625 C 117.66679,59.319356 115.1453,62.318181 112.40625,65.34375 C 109.66721,68.369316 106.71091,71.452346 104.21875,74.34375 C 102.16137,76.730721 100.3775,78.839259 99.25,81.25 C 98.389358,83.690958 101.19084,84.749904 102.08854,84.829728 C 102.41731,83.373922 103.07445,82.301223 103.75,81.25 C 109.28341,72.913848 126.77026,58.575986 124.59375,51.90625 C 124.52034,51.681299 124.39982,51.462951 124.28125,51.25 L 117.875,51.25 z" id="path3749" sodipodi:nodetypes="cscccssssccccssscccscc" style="opacity:0.84158415;fill:url(#radialGradient3300);fill-opacity:1;stroke:none;stroke-width:6.1420002;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter3362)"/> - </g> - </g> - </g> -</svg> diff --git a/application/resources/multimc/scalable/checkupdate.svg b/application/resources/multimc/scalable/checkupdate.svg deleted file mode 100644 index fc09cb4c..00000000 --- a/application/resources/multimc/scalable/checkupdate.svg +++ /dev/null @@ -1,167 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --><svg height="48px" id="svg7270" inkscape:output_extension="org.inkscape.output.svg.inkscape" inkscape:version="0.46" sodipodi:docname="system-software-update.svg" sodipodi:version="0.32" width="48px" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <metadata> - <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> - <cc:Work rdf:about=""> - <dc:title></dc:title> - <dc:description></dc:description> - <dc:subject> - <rdf:Bag> - <rdf:li>unsorted</rdf:li> - </rdf:Bag> - </dc:subject> - <dc:publisher> - <cc:Agent rdf:about="http://www.openclipart.org/"> - <dc:title>Open Clip Art Library, Source: GNOME-Colors, Source: GNOME-Colors, Source: GNOME-Colors, Source: GNOME-Colors, Source: GNOME-Colors</dc:title> - </cc:Agent> - </dc:publisher> - <dc:creator> - <cc:Agent> - <dc:title></dc:title> - </cc:Agent> - </dc:creator> - <dc:rights> - <cc:Agent> - <dc:title></dc:title> - </cc:Agent> - </dc:rights> - <dc:date></dc:date> - <dc:format>image/svg+xml</dc:format> - <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> - <cc:license rdf:resource="http://creativecommons.org/licenses/GPL/2.0/"/> - <dc:language>en</dc:language> - </cc:Work> - </rdf:RDF> - </metadata> - <defs id="defs7272"> - <linearGradient id="linearGradient4873" inkscape:collect="always"> - <stop id="stop4875" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/> - <stop id="stop4877" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/> - </linearGradient> - <linearGradient gradientTransform="matrix(1.5436745,0,0,1.5436393,-63.017183,37.419463)" gradientUnits="userSpaceOnUse" id="linearGradient2704" inkscape:collect="always" x1="62.771355" x2="62.579906" xlink:href="#linearGradient4873" y1="-13.185048" y2="7.4599638"/> - <linearGradient id="linearGradient3811"> - <stop id="stop3813" offset="0" style="stop-color:#42770c;stop-opacity:1"/> - <stop id="stop3815" offset="1" style="stop-color:#789e2d;stop-opacity:1"/> - </linearGradient> - <linearGradient gradientTransform="matrix(0.7287372,0,0,0.7287206,15.796514,14.228326)" gradientUnits="userSpaceOnUse" id="linearGradient3927" inkscape:collect="always" x1="15.046636" x2="15.046636" xlink:href="#linearGradient3811" y1="44.787998" y2="3.8851264"/> - <linearGradient id="linearGradient5106"> - <stop id="stop5108" offset="0" style="stop-color:#a7cc5c;stop-opacity:1"/> - <stop id="stop5110" offset="1" style="stop-color:#789e2d;stop-opacity:1"/> - </linearGradient> - <radialGradient cx="62.200348" cy="-8.5060539" fx="62.200348" fy="-8.5060539" gradientTransform="matrix(-5.9025587,-9.7773057e-8,3.8757273e-8,-2.3442794,400.1412,4.1903282)" gradientUnits="userSpaceOnUse" id="radialGradient2707" inkscape:collect="always" r="9.7552834" xlink:href="#linearGradient5106"/> - <linearGradient id="linearGradient10691" inkscape:collect="always"> - <stop id="stop10693" offset="0" style="stop-color:#000000;stop-opacity:1;"/> - <stop id="stop10695" offset="1" style="stop-color:#000000;stop-opacity:0;"/> - </linearGradient> - <radialGradient cx="6.702713" cy="73.615715" fx="6.702713" fy="73.615715" gradientTransform="scale(1.902215,0.525703)" gradientUnits="userSpaceOnUse" id="radialGradient3042" inkscape:collect="always" r="7.228416" xlink:href="#linearGradient10691"/> - <linearGradient id="linearGradient3540" inkscape:collect="always"> - <stop id="stop3542" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/> - <stop id="stop3544" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/> - </linearGradient> - <linearGradient gradientUnits="userSpaceOnUse" id="linearGradient7581" inkscape:collect="always" x1="322.26392" x2="329.12961" xlink:href="#linearGradient3540" y1="55.34375" y2="64.329506"/> - <linearGradient gradientUnits="userSpaceOnUse" id="linearGradient7579" inkscape:collect="always" x1="325.65164" x2="328.24478" xlink:href="#linearGradient3497" y1="62.475075" y2="61.084908"/> - <linearGradient id="linearGradient7088"> - <stop id="stop7090" offset="0" style="stop-color:#c17d11;stop-opacity:1;"/> - <stop id="stop7092" offset="1" style="stop-color:#e9b96e;stop-opacity:1"/> - </linearGradient> - <linearGradient gradientTransform="matrix(0.1516675,0,0,0.1638445,300.96358,54.165417)" gradientUnits="userSpaceOnUse" id="linearGradient7577" inkscape:collect="always" x1="251.94502" x2="161.94502" xlink:href="#linearGradient7088" y1="18.836056" y2="46.195984"/> - <linearGradient gradientTransform="matrix(0.8365572,0,0,1,52.219983,0)" gradientUnits="userSpaceOnUse" id="linearGradient7575" inkscape:collect="always" x1="334.77948" x2="327.34198" xlink:href="#linearGradient3582" y1="69.490768" y2="69.490768"/> - <linearGradient id="linearGradient3532" inkscape:collect="always"> - <stop id="stop3534" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/> - <stop id="stop3536" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/> - </linearGradient> - <linearGradient gradientUnits="userSpaceOnUse" id="linearGradient7573" inkscape:collect="always" x1="316.42142" x2="304.1875" xlink:href="#linearGradient3532" y1="58.144356" y2="67.203125"/> - <linearGradient id="linearGradient3516" inkscape:collect="always"> - <stop id="stop3518" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/> - <stop id="stop3520" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/> - </linearGradient> - <radialGradient cx="318.26694" cy="81.264877" fx="318.26694" fy="81.264877" gradientTransform="matrix(11.694835,-3.1336215,0.2338827,0.8728621,-3435.8358,1012.645)" gradientUnits="userSpaceOnUse" id="radialGradient7571" inkscape:collect="always" r="15.375" xlink:href="#linearGradient3516"/> - <linearGradient id="linearGradient3497" inkscape:collect="always"> - <stop id="stop3499" offset="0" style="stop-color:#c17d11;stop-opacity:1;"/> - <stop id="stop3501" offset="1" style="stop-color:#c17d11;stop-opacity:0;"/> - </linearGradient> - <linearGradient gradientUnits="userSpaceOnUse" id="linearGradient7569" inkscape:collect="always" x1="317" x2="313.625" xlink:href="#linearGradient3497" y1="65.25" y2="62.475075"/> - <linearGradient id="linearGradient7000" inkscape:collect="always"> - <stop id="stop7002" offset="0" style="stop-color:#eeeeec;stop-opacity:1"/> - <stop id="stop7005" offset="1" style="stop-color:#e9b96e;stop-opacity:1"/> - </linearGradient> - <radialGradient cx="93.23716" cy="132.00948" fx="93.23716" fy="132.00948" gradientTransform="matrix(0.194642,-0.362756,0.2778653,0.17262,263.08914,83.463419)" gradientUnits="userSpaceOnUse" id="radialGradient7567" inkscape:collect="always" r="48.719242" xlink:href="#linearGradient7000"/> - <linearGradient id="linearGradient3582" inkscape:collect="always"> - <stop id="stop3584" offset="0" style="stop-color:#000000;stop-opacity:1;"/> - <stop id="stop3586" offset="1" style="stop-color:#000000;stop-opacity:0;"/> - </linearGradient> - <linearGradient gradientTransform="matrix(0.914635,0,0,1,27.274119,0)" gradientUnits="userSpaceOnUse" id="linearGradient7565" inkscape:collect="always" x1="314.81003" x2="321.78522" xlink:href="#linearGradient3582" y1="69.553268" y2="69.490768"/> - <linearGradient id="linearGradient3757" inkscape:collect="always"> - <stop id="stop3759" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/> - <stop id="stop3761" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/> - </linearGradient> - <radialGradient cx="321.375" cy="70.5" fx="321.375" fy="70.5" gradientTransform="matrix(1,0,0,0.4274194,0,40.366935)" gradientUnits="userSpaceOnUse" id="radialGradient7563" inkscape:collect="always" r="15.5" xlink:href="#linearGradient3757"/> - <linearGradient id="linearGradient3737"> - <stop id="stop3739" offset="0" style="stop-color:#faefde;stop-opacity:1"/> - <stop id="stop3741" offset="0.68321055" style="stop-color:#e9b96e;stop-opacity:1"/> - <stop id="stop3743" offset="1" style="stop-color:#e9b96e;stop-opacity:0"/> - </linearGradient> - <radialGradient cx="320.7493" cy="70.499977" fx="320.7493" fy="70.499977" gradientTransform="matrix(1.1851374,0,0,0.1612901,-56.76846,59.129051)" gradientUnits="userSpaceOnUse" id="radialGradient7561" inkscape:collect="always" r="15.500023" xlink:href="#linearGradient3737"/> - <linearGradient id="linearGradient3712" inkscape:collect="always"> - <stop id="stop3714" offset="0" style="stop-color:#e9b96e;stop-opacity:1;"/> - <stop id="stop3716" offset="1" style="stop-color:#e9b96e;stop-opacity:0;"/> - </linearGradient> - <radialGradient cx="321.7785" cy="96.847473" fx="321.7785" fy="96.847473" gradientTransform="matrix(4.6140944,0,0,0.6613562,-1154.7032,27.949324)" gradientUnits="userSpaceOnUse" id="radialGradient7559" inkscape:collect="always" r="15.5" xlink:href="#linearGradient3712"/> - <linearGradient id="linearGradient5967"> - <stop id="stop5969" offset="0" style="stop-color:#c17d11;stop-opacity:1;"/> - <stop id="stop5971" offset="1" style="stop-color:#e9b96e;stop-opacity:1"/> - </linearGradient> - <linearGradient gradientTransform="matrix(0.1549758,0,0,0.1517241,299.35074,56.193103)" gradientUnits="userSpaceOnUse" id="linearGradient7557" inkscape:collect="always" x1="174.01562" x2="30" xlink:href="#linearGradient5967" y1="236" y2="64"/> - <linearGradient id="linearGradient6977"> - <stop id="stop7039" offset="0" style="stop-color:#ebd3ad;stop-opacity:1;"/> - <stop id="stop6981" offset="1" style="stop-color:#e9b96e;stop-opacity:1"/> - </linearGradient> - <linearGradient gradientTransform="matrix(0.159975,0,0,0.1765787,298.70076,53.371862)" gradientUnits="userSpaceOnUse" id="linearGradient7555" inkscape:collect="always" x1="52" x2="52" xlink:href="#linearGradient6977" y1="40.482288" y2="76.67421"/> - <linearGradient id="linearGradient3703"> - <stop id="stop3705" offset="0" style="stop-color:black;stop-opacity:0;"/> - <stop id="stop3711" offset="0.5" style="stop-color:black;stop-opacity:1;"/> - <stop id="stop3707" offset="1" style="stop-color:black;stop-opacity:0;"/> - </linearGradient> - <linearGradient gradientTransform="matrix(1.179548,0,0,1,-4.219389,0)" gradientUnits="userSpaceOnUse" id="linearGradient7462" inkscape:collect="always" x1="17.554192" x2="17.554192" xlink:href="#linearGradient3703" y1="46.000275" y2="34.999718"/> - <radialGradient cx="5" cy="41.5" fx="5" fy="41.5" gradientTransform="matrix(0.99001,0,0,1.1,-14.88523,-86.15)" gradientUnits="userSpaceOnUse" id="radialGradient7460" inkscape:collect="always" r="5" xlink:href="#linearGradient3681"/> - <linearGradient id="linearGradient3681" inkscape:collect="always"> - <stop id="stop3683" offset="0" style="stop-color:black;stop-opacity:1;"/> - <stop id="stop3685" offset="1" style="stop-color:black;stop-opacity:0;"/> - </linearGradient> - <radialGradient cx="5" cy="41.5" fx="5" fy="41.5" gradientTransform="matrix(0.990017,0,0,1.1,32.1147,-5.15)" gradientUnits="userSpaceOnUse" id="radialGradient7458" inkscape:collect="always" r="5" xlink:href="#linearGradient3681"/> - </defs> - <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="layer1" inkscape:cx="24" inkscape:cy="24" inkscape:document-units="px" inkscape:grid-bbox="true" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="690" inkscape:window-width="641" inkscape:window-x="0" inkscape:window-y="331" inkscape:zoom="7" pagecolor="#ffffff" showgrid="true"/> - <g id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1"> - <g id="g3713" style="opacity:0.4" transform="matrix(1.000001,0,0,1.2727273,-5e-6,-12.545454)"> - <rect height="11" id="rect1907" style="opacity:1;fill:url(#radialGradient7458);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" width="4.9352183" x="37.064781" y="35"/> - <rect height="11" id="rect3689" style="opacity:1;fill:url(#radialGradient7460);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" transform="scale(-1,-1)" width="4.9351835" x="-9.9351835" y="-46"/> - <rect height="11" id="rect3693" style="opacity:1;fill:url(#linearGradient7462);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" width="27.129599" x="9.9351835" y="35"/> - </g> - <g id="g4045" style="display:inline;enable-background:new" transform="translate(-296.00045,-50)"> - <path d="M 322.875,54.40625 C 322.64926,54.465917 322.49407,54.672835 322.5,54.90625 L 322.59375,61.5 L 318.40625,61.5 L 318.4375,58.9375 C 318.44168,58.796741 318.39241,58.648956 318.28125,58.5625 C 318.17008,58.476044 318.0104,58.461295 317.875,58.5 L 306.5,61.5 C 306.35947,61.54996 306.25368,61.667506 306.21875,61.8125 L 306.15625,62.03125 C 306.05939,62.200213 305.96316,62.375835 305.90625,62.5625 L 303.5625,70.09375 C 303.51406,70.207689 303.5,70.305686 303.5,70.4375 C 303.4981,70.458668 303.5019,70.478889 303.5,70.5 L 303.5,90.84375 C 303.5,91.371002 303.93699,92.499999 304.46875,92.5 L 334.53125,92.5 C 335.06301,92.5 335.5,91.371004 335.5,90.84375 L 335.5,70.5 L 335.4375,70.09375 L 335.40625,70 C 335.40291,69.966972 335.41634,69.938782 335.40625,69.90625 L 332.9375,61.78125 C 332.9115,61.684204 332.85709,61.597145 332.78125,61.53125 L 323.3125,54.5 C 323.18929,54.402174 323.02747,54.367498 322.875,54.40625 z" id="path3678" sodipodi:nodetypes="cccccsccccccsccccccccccccc" style="fill:url(#linearGradient7555);fill-opacity:1;fill-rule:evenodd;stroke:#8f5902;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0.69999992;stroke-opacity:1;display:inline;enable-background:new"/> - <rect height="1" id="rect3606" style="opacity:0.18918918;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.50000001;stroke-opacity:1;display:inline;enable-background:new" width="23.340202" x="309" y="66"/> - <path d="M 304.92985,70 C 304.41471,70 304,70.406014 304,70.910345 L 304,90.482758 L 304,91.089654 C 304,91.593985 304.41471,91.999999 304.92985,92 L 334.07015,92 C 334.5853,92 335,91.593984 335,91.089654 L 335,70.910345 C 335,70.406014 334.5853,70 334.07015,70 L 304.92985,70 z" id="path3628" sodipodi:nodetypes="cccccccccc" style="fill:url(#linearGradient7557);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0.69999992;stroke-opacity:1;display:inline;enable-background:new"/> - <path d="M 304.92985,70 C 304.41471,70 304,70.406014 304,70.910345 L 304,90.482758 L 304,91.089654 C 304,91.593985 304.41471,91.999999 304.92985,92 L 334.07015,92 C 334.5853,92 335,91.593984 335,91.089654 L 335,70.910345 C 335,70.406014 334.5853,70 334.07015,70 L 304.92985,70 z" id="path3702" sodipodi:nodetypes="cccccccccc" style="opacity:0.81531528;fill:url(#radialGradient7559);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0.69999992;stroke-opacity:1;display:inline;enable-background:new"/> - <path d="M 304.71875,68 L 304.03125,70.25 C 304.03158,70.260414 304.03158,70.270836 304.03125,70.28125 C 304.00957,70.33225 304,70.341241 304,70.4375 C 304.00033,70.447914 304.00033,70.458336 304,70.46875 C 304.00297,70.435653 303.99952,70.489668 304,70.5 C 304.00048,70.510332 304.0049,70.47686 304,70.53125 L 304,73 L 335,73 L 335,70.5625 L 335,70.5 L 334.96875,70.25 L 334.9375,70.15625 L 334.28125,68 L 304.71875,68 z" id="path3723" style="opacity:0.5;fill:url(#radialGradient7561);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0.69999992;stroke-opacity:1;display:inline;enable-background:new"/> - <rect height="1" id="rect3746" style="opacity:0.62330568;fill:url(#radialGradient7563);fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.50000001;stroke-opacity:1;display:inline;enable-background:new" width="31" x="304" y="70"/> - <path d="M 307.9375,61.90625 C 307.82039,61.90625 307.7549,61.954412 307.65625,62.09375 C 307.55761,62.233088 307.47013,62.458403 307.40625,62.6875 L 305.28125,70.09375 L 323.5,70.09375 L 323.5,61.90625 L 307.9375,61.90625 z" id="path3558" style="opacity:0.36936939;fill:url(#linearGradient7565);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0.69999992;stroke-opacity:1;display:inline;enable-background:new"/> - <rect height="1" id="rect3602" style="opacity:0.39639641;fill:#c17d11;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.50000001;stroke-opacity:1" width="23.340202" x="309" y="65"/> - <path d="M 317.875,59.09375 L 306.71875,62.03125 L 304.25,69.8125 L 317.75,66.875 L 317.875,59.09375 z" id="path3466" inkscape:original="M 318 58.9375 L 306.625 61.9375 L 304.0625 70 L 317.875 66.96875 L 318 58.9375 z " inkscape:radius="-0.11941363" sodipodi:type="inkscape:offset" style="fill:url(#radialGradient7567);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:new"/> - <path d="M 317.875,58.5 L 306.5,61.5 C 306.35947,61.54996 306.25368,61.667506 306.21875,61.8125 L 303.65625,69.875 C 303.61173,70.021945 303.64677,70.181469 303.74877,70.296228 C 303.85078,70.410987 304.0051,70.464488 304.15625,70.4375 L 317.96875,67.40625 C 318.1724,67.360088 318.31583,67.177536 318.3125,66.96875 L 318.4375,58.9375 C 318.44168,58.796741 318.37845,58.662433 318.2673,58.575977 C 318.15614,58.489521 318.0104,58.461295 317.875,58.5 L 317.875,58.5 z" id="path3489" inkscape:original="M 318 58.9375 L 306.625 61.9375 L 304.0625 70 L 317.875 66.96875 L 318 58.9375 z " inkscape:radius="0.44133759" sodipodi:type="inkscape:offset" style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient7569);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:new"/> - <path d="M 323.65625,56.125 L 323.71875,61.46875 C 323.73018,61.77333 323.61637,62.069302 323.40382,62.287756 C 323.19127,62.506209 322.89853,62.628083 322.59375,62.625 L 318.40625,62.625 C 318.10702,62.627829 317.81923,62.510212 317.60763,62.298617 C 317.39604,62.087022 317.27842,61.799227 317.28125,61.5 L 317.3125,59.78125 L 307.1875,62.4375 C 307.18765,62.447916 307.18765,62.458334 307.1875,62.46875 C 307.1693,62.511683 307.14843,62.553432 307.125,62.59375 C 307.03546,62.749944 306.98033,62.837024 306.96875,62.875 C 306.9689,62.885416 306.9689,62.895834 306.96875,62.90625 L 304.625,70.4375 C 304.625,70.405959 304.63178,70.465233 304.625,70.5 L 304.625,70.53125 C 304.64058,70.357706 304.64449,70.377244 304.625,70.59375 L 304.625,90.84375 C 304.625,90.799502 304.68196,91.178267 304.78125,91.375 L 334.21875,91.375 C 334.31804,91.178267 334.375,90.799504 334.375,90.84375 L 334.375,70.5 L 334.375,70.4375 L 334.34375,70.34375 C 334.32611,70.272049 334.31564,70.198772 334.3125,70.125 L 331.9375,62.3125 L 323.65625,56.125 z" id="path3512" inkscape:original="M 322.875 54.40625 C 322.64926 54.465917 322.49407 54.672835 322.5 54.90625 L 322.59375 61.5 L 318.40625 61.5 L 318.4375 58.9375 C 318.44168 58.796741 318.39241 58.648956 318.28125 58.5625 C 318.17008 58.476044 318.0104 58.461295 317.875 58.5 L 306.5 61.5 C 306.35947 61.54996 306.25368 61.667506 306.21875 61.8125 L 306.15625 62.03125 C 306.05939 62.200213 305.96316 62.375835 305.90625 62.5625 L 303.5625 70.09375 C 303.51406 70.207689 303.5 70.305686 303.5 70.4375 C 303.4981 70.458668 303.5019 70.478889 303.5 70.5 L 303.5 90.84375 C 303.5 91.371002 303.93699 92.499999 304.46875 92.5 L 334.53125 92.5 C 335.06301 92.5 335.5 91.371004 335.5 90.84375 L 335.5 70.5 L 335.4375 70.09375 L 335.40625 70 C 335.40291 69.966972 335.41634 69.938782 335.40625 69.90625 L 332.9375 61.78125 C 332.9115 61.684204 332.85709 61.597145 332.78125 61.53125 L 323.3125 54.5 C 323.18929 54.402174 323.02747 54.367498 322.875 54.40625 z " inkscape:radius="-1.1144003" sodipodi:type="inkscape:offset" style="opacity:0.36936939;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient7571);stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0.69999992;stroke-opacity:1;display:inline;enable-background:new"/> - <path d="M 317.5625,59.5 L 306.96875,62.28125 L 304.6875,69.40625 L 317.4375,66.59375 L 317.5625,59.5 z" id="path3524" inkscape:original="M 318 58.9375 L 306.625 61.9375 L 304.0625 70 L 317.875 66.96875 L 318 58.9375 z " inkscape:radius="-0.43543664" sodipodi:type="inkscape:offset" style="opacity:0.53153154;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient7573);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:new"/> - <path d="M 323.0625,61.90625 L 323.0625,70.09375 L 333.71875,70.09375 L 331.59375,62.5625 C 331.53244,62.342161 331.46293,62.136199 331.375,62.03125 C 331.28708,61.926301 331.20816,61.90625 331.0625,61.90625 L 323.0625,61.90625 z" id="path3593" style="opacity:0.36936939;fill:url(#linearGradient7575);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0.69999992;stroke-opacity:1;display:inline;enable-background:new"/> - <g id="g3562"> - <path d="M 323,54.90625 L 323.125,63.03125 L 334.9375,70.0625 L 332.46875,61.9375 L 323,54.90625 z" id="path3468" inkscape:original="M 323 54.90625 L 323.125 63.03125 L 334.9375 70.0625 L 332.46875 61.9375 L 323 54.90625 z " inkscape:radius="-0.0019137046" sodipodi:type="inkscape:offset" style="fill:url(#linearGradient7577);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:new"/> - <path d="M 322.875,54.40625 C 322.64926,54.465917 322.49407,54.672835 322.5,54.90625 L 322.625,63.03125 C 322.62421,63.211268 322.71951,63.378038 322.875,63.46875 L 334.6875,70.5 C 334.86776,70.596275 335.08831,70.574158 335.24586,70.444006 C 335.40342,70.313855 335.46677,70.101441 335.40625,69.90625 L 332.9375,61.78125 C 332.9115,61.684204 332.85709,61.597145 332.78125,61.53125 L 323.3125,54.5 C 323.18929,54.402174 323.02747,54.367498 322.875,54.40625 z" id="path3491" inkscape:original="M 323 54.90625 L 323.125 63.03125 L 334.9375 70.0625 L 332.46875 61.9375 L 323 54.90625 z " inkscape:radius="0.50389111" sodipodi:type="inkscape:offset" style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient7579);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:new"/> - <path d="M 323.46875,55.84375 L 323.59375,62.75 L 334.125,69.03125 L 332.03125,62.21875 L 323.46875,55.84375 z" id="path3526" inkscape:original="M 323 54.90625 L 323.125 63.03125 L 334.9375 70.0625 L 332.46875 61.9375 L 323 54.90625 z " inkscape:radius="-0.47827792" sodipodi:type="inkscape:offset" style="opacity:0.25225226;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient7581);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:new"/> - <path d="M 323,54.90625 L 323.125,63.03125 L 334.9375,70.0625 L 324.0625,62.81342 L 324,56.49908 L 332.46875,61.9375 L 323,54.90625 z" id="path3548" sodipodi:nodetypes="ccccccc" style="opacity:0.36936939;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:new"/> - </g> - <rect height="1" id="rect3604" style="opacity:0.20720723;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.50000001;stroke-opacity:1;display:inline;enable-background:new" width="3" x="319" y="62"/> - </g> - <path d="M 26.5,38.700001 A 13.75,3.8 0 1 1 -1,38.700001 A 13.75,3.8 0 1 1 26.5,38.700001 z" id="path2858" sodipodi:cx="12.75" sodipodi:cy="38.700001" sodipodi:rx="13.75" sodipodi:ry="3.8" sodipodi:type="arc" style="opacity:0.5;fill:url(#radialGradient3042);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" transform="matrix(1.0181818,0,0,1.0526316,20.018182,3.2631562)"/> - <path d="M 47.500174,31.999486 C 47.500174,40.007969 41.007746,46.500175 33.000183,46.500175 C 24.991885,46.500175 18.499825,40.007895 18.499825,31.999486 C 18.499825,23.99137 24.991885,17.499825 33.000183,17.499825 C 41.007746,17.499825 47.500174,23.99137 47.500174,31.999486 L 47.500174,31.999486 z" id="path6495" style="fill:url(#radialGradient2707);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3927);stroke-width:0.9996503;stroke-miterlimit:4;stroke-dasharray:none"/> - <path d="M 46.500204,31.99952 C 46.500204,39.455718 40.455512,45.500205 33.00017,45.500205 C 25.544146,45.500205 19.499795,39.45565 19.499795,31.99952 C 19.499795,24.543666 25.544146,18.499795 33.00017,18.499795 C 40.455512,18.499795 46.500204,24.543666 46.500204,31.99952 L 46.500204,31.99952 z" id="path8655" style="opacity:0.6;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2704);stroke-width:0.99959099;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/> - <path d="M 23.5,32.5 L 33,22.5 L 42.5,32.5 L 36.75,32.5 L 36.75,41.5 L 29.25,41.5 L 29.25,32.5 L 23.5,32.5 z" id="path4236" sodipodi:nodetypes="cccccccc" style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"/> - </g> -</svg> diff --git a/application/resources/multimc/scalable/custom-commands.svg b/application/resources/multimc/scalable/custom-commands.svg deleted file mode 100644 index b7f1a149..00000000 --- a/application/resources/multimc/scalable/custom-commands.svg +++ /dev/null @@ -1,338 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - id="svg2" - height="64" - width="64" - version="1.1" - sodipodi:docname="custom-commands.svg" - inkscape:version="0.92.2 5c3e80d, 2017-08-06"> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="3840" - inkscape:window-height="2123" - id="namedview52" - showgrid="false" - inkscape:zoom="20.85965" - inkscape:cx="28.409224" - inkscape:cy="33.675543" - inkscape:window-x="1200" - inkscape:window-y="0" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" - inkscape:snap-bbox="true" - inkscape:bbox-paths="true" - inkscape:snap-bbox-edge-midpoints="true" - inkscape:snap-bbox-midpoints="true" - inkscape:bbox-nodes="true"> - <inkscape:grid - type="xygrid" - id="grid858" /> - </sodipodi:namedview> - <defs - id="defs4"> - <linearGradient - id="linearGradient3931"> - <stop - offset="0" - style="stop-color:#ffffff;stop-opacity:0" - id="stop3933" /> - <stop - offset="0.69999987" - style="stop-color:#ffffff;stop-opacity:0.10396039" - id="stop3939" /> - <stop - offset="1" - style="stop-color:#ffffff;stop-opacity:0.14356436" - id="stop3935" /> - </linearGradient> - <linearGradient - id="linearGradient3900"> - <stop - offset="0" - style="stop-color:#f6f6f6;stop-opacity:1" - id="stop3902" /> - <stop - offset="0.75714284" - style="stop-color:#494949;stop-opacity:1" - id="stop3904" /> - <stop - offset="1" - style="stop-color:#2c2c2c;stop-opacity:1" - id="stop3906" /> - </linearGradient> - <linearGradient - id="linearGradient3808"> - <stop - offset="0" - style="stop-color:#333333;stop-opacity:1" - id="stop3810" /> - <stop - offset="1" - style="stop-color:#c8c8c8;stop-opacity:1" - id="stop3812" /> - </linearGradient> - <linearGradient - id="linearGradient3030"> - <stop - offset="0" - style="stop-color:#000000;stop-opacity:1" - id="stop3032" /> - <stop - offset="0.75714284" - style="stop-color:#333333;stop-opacity:1" - id="stop3038" /> - <stop - offset="1" - style="stop-color:#4d4d4d;stop-opacity:1" - id="stop3034" /> - </linearGradient> - <radialGradient - gradientTransform="matrix(1.3519242,1.8838281,-1.5359217,1.1022493,15.935733,948.08165)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient3030" - id="radialGradient3036" - fy="14.242621" - fx="29.381905" - r="16.375" - cy="14.242621" - cx="29.381905" /> - <linearGradient - gradientTransform="matrix(1.5,0,0,1,-16,4)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient3808" - id="linearGradient3824" - y2="1033.8622" - x2="34" - y1="1033.8622" - x1="30" /> - <linearGradient - gradientTransform="matrix(0.82142857,0,0,1.500001,6.7142857,-522.68214)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient3808" - id="linearGradient3834" - y2="1039.3622" - x2="32" - y1="1043.3622" - x1="32" /> - <radialGradient - gradientTransform="matrix(6.479993,1.9525666,-10.415476,2.1794781,10657.845,-1282.8793)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient3900" - id="radialGradient3844" - fy="1039.813" - fx="30.724609" - r="3" - cy="1039.813" - cx="30.724609" /> - <radialGradient - gradientTransform="matrix(2.5191507,2.9862959,-4.0491019,3.333339,4186.8847,-2518.44)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient3900" - id="radialGradient3852" - fy="1039.813" - fx="30.724609" - r="3" - cy="1039.813" - cx="30.724609" /> - <radialGradient - gradientTransform="matrix(-2.5191507,2.9863064,4.0491022,3.3333507,-4122.8849,-2518.4524)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient3900" - id="radialGradient3857" - fy="1039.813" - fx="30.724609" - r="3" - cy="1039.813" - cx="30.724609" /> - <radialGradient - gradientTransform="matrix(-0.69414478,2.3073251,-1.6952184,-0.67174747,96.941544,960.82172)" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient3900" - id="radialGradient3937" - fy="21.976955" - fx="31.946348" - r="19.25" - cy="21.976955" - cx="31.946348" /> - </defs> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="layer1" - transform="translate(0,-988.36218)"> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient3036);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.25954175;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect2997" - y="992.99194" - x="5.6297708" - ry="0.70710492" - rx="0.70710504" - height="53.740437" - width="53.740459" /> - </g> - <g - id="g1021" - transform="translate(1.7703716e-7,-0.42472956)"> - <g - style="fill:#008000" - transform="matrix(0.08572572,0,0,0.08572572,9.999999,10.424713)" - id="g899"> - <g - style="fill:#008000" - id="g867"> - <g - style="fill:#008000" - id="g865"> - <path - style="fill:#008000" - d="m 226.434,249.503 c 0,-6.995 -2.705,-13.403 -7.846,-18.556 L 61.8,74.165 c -5.128,-5.141 -11.554,-7.852 -18.568,-7.852 -7.026,0 -13.452,2.717 -18.556,7.846 l -16.83,16.83 c -5.129,5.135 -7.84,11.549 -7.84,18.538 0,7.026 2.717,13.452 7.846,18.556 L 129.267,249.503 7.84,370.936 C 2.711,376.071 0,382.491 0,389.486 c 0,7.02 2.717,13.439 7.846,18.544 l 16.775,16.774 c 5.116,5.165 11.555,7.895 18.611,7.895 7.044,0 13.47,-2.723 18.556,-7.846 l 156.813,-156.8 c 5.128,-5.14 7.833,-11.549 7.833,-18.55 z" - id="path860" - inkscape:connector-curvature="0" /> - <path - style="fill:#008000" - d="m 498.866,384.951 h -323.02 c -7.203,0 -13.611,2.583 -18.581,7.528 -4.896,4.92 -7.484,11.327 -7.484,18.531 v 21.536 c 0,7.252 2.607,13.672 7.491,18.543 4.915,4.927 11.34,7.528 18.574,7.528 h 323.02 c 7.239,0 13.659,-2.607 18.531,-7.497 4.927,-4.908 7.533,-11.334 7.533,-18.58 v -21.537 c 0,-7.209 -2.589,-13.616 -7.54,-18.592 -4.913,-4.877 -11.321,-7.46 -18.524,-7.46 z" - id="path862" - inkscape:connector-curvature="0" /> - </g> - </g> - <g - style="fill:#008000" - id="g869" /> - <g - style="fill:#008000" - id="g871" /> - <g - style="fill:#008000" - id="g873" /> - <g - style="fill:#008000" - id="g875" /> - <g - style="fill:#008000" - id="g877" /> - <g - style="fill:#008000" - id="g879" /> - <g - style="fill:#008000" - id="g881" /> - <g - style="fill:#008000" - id="g883" /> - <g - style="fill:#008000" - id="g885" /> - <g - style="fill:#008000" - id="g887" /> - <g - style="fill:#008000" - id="g889" /> - <g - style="fill:#008000" - id="g891" /> - <g - style="fill:#008000" - id="g893" /> - <g - style="fill:#008000" - id="g895" /> - <g - style="fill:#008000" - id="g897" /> - </g> - <g - id="g914" - transform="matrix(0.08572572,0,0,0.08572572,9.9999994,8.4247072)" - style="fill:#00ff00"> - <g - id="g856" - style="fill:#00ff00"> - <g - id="g854" - style="fill:#00ff00"> - <path - inkscape:connector-curvature="0" - id="path850" - d="m 226.434,249.503 c 0,-6.995 -2.705,-13.403 -7.846,-18.556 L 61.8,74.165 c -5.128,-5.141 -11.554,-7.852 -18.568,-7.852 -7.026,0 -13.452,2.717 -18.556,7.846 l -16.83,16.83 c -5.129,5.135 -7.84,11.549 -7.84,18.538 0,7.026 2.717,13.452 7.846,18.556 L 129.267,249.503 7.84,370.936 C 2.711,376.071 0,382.491 0,389.486 c 0,7.02 2.717,13.439 7.846,18.544 l 16.775,16.774 c 5.116,5.165 11.555,7.895 18.611,7.895 7.044,0 13.47,-2.723 18.556,-7.846 l 156.813,-156.8 c 5.128,-5.14 7.833,-11.549 7.833,-18.55 z" - style="fill:#00ff00" /> - <path - inkscape:connector-curvature="0" - id="path852" - d="m 498.866,384.951 h -323.02 c -7.203,0 -13.611,2.583 -18.581,7.528 -4.896,4.92 -7.484,11.327 -7.484,18.531 v 21.536 c 0,7.252 2.607,13.672 7.491,18.543 4.915,4.927 11.34,7.528 18.574,7.528 h 323.02 c 7.239,0 13.659,-2.607 18.531,-7.497 4.927,-4.908 7.533,-11.334 7.533,-18.58 v -21.537 c 0,-7.209 -2.589,-13.616 -7.54,-18.592 -4.913,-4.877 -11.321,-7.46 -18.524,-7.46 z" - style="fill:#00ff00" /> - </g> - </g> - <g - id="g858" - style="fill:#00ff00" /> - <g - id="g860" - style="fill:#00ff00" /> - <g - id="g862" - style="fill:#00ff00" /> - <g - id="g864" - style="fill:#00ff00" /> - <g - id="g866" - style="fill:#00ff00" /> - <g - id="g868" - style="fill:#00ff00" /> - <g - id="g870" - style="fill:#00ff00" /> - <g - id="g872" - style="fill:#00ff00" /> - <g - id="g874" - style="fill:#00ff00" /> - <g - id="g876" - style="fill:#00ff00" /> - <g - id="g878" - style="fill:#00ff00" /> - <g - id="g880" - style="fill:#00ff00" /> - <g - id="g882" - style="fill:#00ff00" /> - <g - id="g884" - style="fill:#00ff00" /> - <g - id="g886" - style="fill:#00ff00" /> - </g> - </g> -</svg> diff --git a/application/resources/multimc/scalable/discord.svg b/application/resources/multimc/scalable/discord.svg deleted file mode 100644 index 067be1e8..00000000 --- a/application/resources/multimc/scalable/discord.svg +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="128mm" - height="128mm" - viewBox="0 0 453.54331 453.54331" - id="svg2" - version="1.1" - inkscape:version="0.91 r13725" - sodipodi:docname="discord.svg"> - <defs - id="defs4"> - <linearGradient - inkscape:collect="always" - id="linearGradient4166"> - <stop - style="stop-color:#7593d7;stop-opacity:1" - offset="0" - id="stop4168" /> - <stop - style="stop-color:#4f6aa3;stop-opacity:1" - offset="1" - id="stop4170" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4166" - id="linearGradient4174" - x1="351.42856" - y1="513.79077" - x2="351.42856" - y2="943.79077" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(24.999996,-5.8267714e-6)" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.98994949" - inkscape:cx="249.4082" - inkscape:cy="153.28604" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - fit-margin-top="0" - fit-margin-left="0" - fit-margin-right="0" - fit-margin-bottom="0" - inkscape:snap-nodes="true" - inkscape:snap-bbox="true" - inkscape:bbox-paths="false" - inkscape:snap-bbox-edge-midpoints="false" - inkscape:bbox-nodes="true" - inkscape:snap-bbox-midpoints="false" - inkscape:snap-page="true" - inkscape:window-width="1911" - inkscape:window-height="2120" - inkscape:window-x="2970" - inkscape:window-y="0" - inkscape:window-maximized="0"> - <inkscape:grid - type="xygrid" - id="grid4155" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(-1.4285583,-500.24745)"> - <path - style="fill:url(#linearGradient4174);fill-opacity:1;fill-rule:evenodd" - d="m 73.928594,513.79076 a 37.5,37.5 0 0 0 -37.36914,34.88476 l -0.13086,0.11524 0,2.5 0,302.5 0.11914,0.11914 a 37.5,37.5 0 0 0 -0.11914,2.38086 37.5,37.5 0 0 0 37.5,37.5 37.5,37.5 0 0 0 2.41406,-0.0859 l 0.0859,0.0859 250.000006,0 -10,-40 100,90 0,-392.5 0,-2.5 -0.0918,-0.0918 a 37.5,37.5 0 0 0 -34.77734,-34.77734 l -0.13086,-0.13086 -2.5,0 -302.500006,0 -0.13477,0.11914 a 37.5,37.5 0 0 0 -2.36523,-0.11914 z" - id="path4157" - inkscape:connector-curvature="0" /> - <path - style="opacity:1;fill:#ffffff;fill-rule:evenodd" - d="m 262.51367,111.60742 -3.53515,4.79688 c 20.92905,7.8755 41.53825,15.82838 52.90625,26.01172 -54.51023,-27.29925 -111.94069,-29.57156 -173.11524,0.25195 13.83558,-12.04023 34.12183,-19.9521 56.31641,-26.64258 l -2.39844,-3.78711 c -19.87573,2.47189 -39.74673,4.97961 -57.48273,19.75608 -1.26426,1.0533 -2.43875,1.7112 -3.75946,3.35134 -1.04157,1.68882 -1.47654,2.94289 -2.20384,4.4259 -16.51968,33.6846 -29.13904,71.47893 -29.23561,122.47449 13.7929,19.97074 35.85963,31.20604 66.79492,33.08203 l 14.01563,-19.0664 c -16.32939,-4.839 -28.63498,-12.99042 -36.86914,-24.4961 68.24127,41.30702 122.04171,25.27927 169.32617,-0.50585 -10.12692,12.60017 -23.08016,21.50538 -39.39649,26.01171 l 14.52149,17.80469 c 31.64413,-2.6726 53.44205,-13.71547 66.03906,-32.57812 -1.25854,-42.6757 -9.40904,-79.47015 -23.71494,-111.01207 -2.51316,-5.54105 -4.27674,-11.49413 -8.10537,-16.14028 -3.45571,-4.1936 -7.96544,-7.13252 -12.90109,-9.9657 -12.42806,-7.13399 -28.6789,-11.32721 -47.20243,-13.77258 z m -76.00195,82.42383 c 12.33462,8e-5 22.33381,10.55717 22.33398,23.58008 -1.7e-4,13.02291 -9.99936,23.58 -22.33398,23.58008 -12.33462,-7e-5 -22.33382,-10.55716 -22.33399,-23.58008 1.7e-4,-13.02292 9.99937,-23.58001 22.33399,-23.58008 z m 79.54883,0 c 12.33462,8e-5 22.33381,10.55717 22.33398,23.58008 -1.7e-4,13.02291 -9.99936,23.58 -22.33398,23.58008 -12.33462,-7e-5 -22.33382,-10.55716 -22.33399,-23.58008 1.7e-4,-13.02292 9.99937,-23.58001 22.33399,-23.58008 z" - transform="translate(1.4285583,500.24745)" - id="path4176" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccscsccccccccsasccccccccccc" /> - </g> -</svg> diff --git a/application/resources/multimc/scalable/instances/bee.svg b/application/resources/multimc/scalable/instances/bee.svg deleted file mode 100644 index 49f216c8..00000000 --- a/application/resources/multimc/scalable/instances/bee.svg +++ /dev/null @@ -1,159 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - version="1.1" - viewBox="0 0 25.399999 25.4" - height="96" - width="96"> - <g transform="translate(-33.928467,-255.46043)"> - <g transform="rotate(-9.9635201,-96.932986,622.95265)"> - <path style="fill:#f1f2e0;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:0.28753757px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m 101.98199,286.42583 -1.1502,0.57512 1.14992,0.5755 2.30058,1.14996 1.15019,-0.57514 -2.30058,-1.14995 z m 2.3003,2.30058 -1.1502,0.57512 1.15002,0.57493 1.15019,-0.57513 z m -1.8e-4,1.15005 -1.1502,0.57512 1.15057,0.57502 1.15019,-0.57512 z m 3.7e-4,1.15014 -1.15019,0.57514 -1.1502,0.57512 1.15001,0.57493 1.1502,-0.57513 1.15019,-0.57512 z m -2.30039,1.15026 -1.15001,-0.57494 -1.150566,-0.57502 -1.150193,0.57512 1.150565,0.57502 1.150014,0.57494 z m -2.300576,-1.14996 1.150196,-0.57513 -1.150014,-0.57493 -1.150097,0.57456 z m -1.149915,-0.5755 1.150193,-0.57512 -1.150012,-0.57492 -1.150194,0.57512 z m 1.81e-4,-1.15004 1.150194,-0.57513 -1.150567,-0.57503 -1.150193,0.57512 z m -3.73e-4,-1.15016 1.150194,-0.57512 1.150189,-0.57513 -1.150008,-0.57492 -1.150193,0.57512 -1.150194,0.57512 z m 1.150567,0.57503 1.149916,0.57548 1.15001,0.57494 1.15019,-0.57512 -1.15001,-0.57494 -1.15047,-0.57558 z" /> - </g> - <g style="fill:none;stroke:#999999" transform="matrix(1.0012918,0.26829532,-0.26829532,1.0012918,86.112205,-31.978257)"> - <path style="stroke:#999999;stroke-width:1.03661346px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 85.501953 51.128906 C 82.473901 51.748417 79.445938 52.368362 76.417969 52.988281 L 79.886719 56.064453 C 82.914656 55.444381 85.942682 54.824742 88.970703 54.205078 L 85.501953 51.128906 z " - transform="matrix(0.24654113,-0.06606049,0.06606049,0.24654113,23.141685,280.86706)" /> - <path style="stroke:#999999;stroke-width:1.03661346px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 79.636719 40.972656 L 75.095703 41.902344 C 78.563735 44.978675 82.032556 48.054115 85.501953 51.128906 L 90.042969 50.201172 L 79.636719 40.972656 z " - transform="matrix(0.24654113,-0.06606049,0.06606049,0.24654113,23.141685,280.86706)" /> - </g> - <path style="fill:#fed668" d="m 41.865965,262.07502 -4.233333,2.11667 7.408333,3.70417 4.233334,-2.11667 z" /> - <path style="fill:#0a0707" d="m 50.332633,272.39378 v 1.32291 l 1.058333,0.52917 v -1.32292 z" /> - <path style="fill:#422117" d="m 50.332633,273.7167 v 1.32291 l 1.058333,0.52917 v -1.32292 z" /> - <path style="fill:#0a0707" d="m 48.215966,273.45211 v 1.32291 l 1.058333,0.52917 v -1.32292 z" /> - <path style="fill:#422117" d="m 48.215966,274.77503 v 1.32291 l 1.058333,0.52917 v -1.32292 z" /> - <path style="fill:#422117" d="m 45.040966,275.3042 v 1.32291 l 1.058333,0.52917 v -1.32292 z" /> - <path style="fill:#78621d" d="m 45.040965,277.15626 4.233334,-2.11665 v -9.26042 l -4.233334,2.11667 z" /> - <path style="fill:#1d0c08" d="m 50.332632,265.25002 -1.058333,0.52917 v 9.26042 l 1.058333,-0.52917 z" /> - <path style="fill:#1d0c08" d="m 52.449299,264.19169 -1.058333,0.52917 v 9.26042 l 1.058333,-0.52917 z" /> - <path style="fill:#edc343" d="m 38.690965,263.66252 1.058334,0.52917 1.058333,-0.52917 1.058333,0.52917 2.116667,-1.05834 -2.116667,-1.05833 z" /> - <path style="fill:#fed668" d="m 42.924299,261.54586 7.408334,3.70417 1.058333,-0.52917 -7.408334,-3.70417 z" /> - <path style="fill:#e4ae3b" d="m 40.807633,262.60419 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#fed668" d="m 45.040966,260.48752 7.408333,3.70417 1.058333,-0.52917 -7.408333,-3.70417 z" /> - <path style="fill:#5f3225" d="m 42.924299,261.54585 -1.058334,0.52917 7.408333,3.70417 1.058334,-0.52917 z" /> - <path style="fill:#e4ae3b" d="m 42.9243,261.54585 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#5f3225" d="m 45.040965,260.48752 -1.058333,0.52917 7.408333,3.70416 1.058333,-0.52916 z" /> - <path style="fill:#e4ae3b" d="m 45.040966,260.48752 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#5f3225" d="m 46.099299,259.95835 7.408333,3.70417 2.116666,-1.05833 -7.408333,-3.70417 z" /> - <path style="fill:#552e22" d="m 47.157633,259.42919 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#edc343" d="m 43.982633,262.07502 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#edc343" d="m 46.099299,261.01669 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#edc343" d="m 40.807633,264.72086 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#e4ae3b" d="m 45.040967,262.60419 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#552e22" d="m 49.2743,260.48753 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#edc343" d="m 48.215966,262.07502 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#edc343" d="m 41.865966,266.30836 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#552e22" d="m 50.332633,262.07502 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#edc343" d="m 46.099299,265.25002 -1.058334,0.52917 1.058334,0.52916 -2.116667,1.05834 1.058333,0.52916 3.175,-1.5875 z" /> - <path style="fill:#edc343" d="m 48.215967,264.19169 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#edc343" d="m 50.332633,263.13336 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#e4ae3b" d="m 47.157633,265.77919 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#e4ae3b" d="m 49.2743,264.72085 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#e4ae3b" d="m 51.390966,263.66252 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#edc343" d="m 38.690966,264.72086 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#ac8d2e" d="m 37.632633,273.45211 7.408333,3.70415 v -9.2604 l -7.408333,-3.70417 z" /> - <path style="fill:#12121a" d="m 37.632633,268.16044 2.116666,1.05834 v 3.96875 l -2.116666,-1.05834 z" /> - <path style="fill:#78621d" d="m 50.332633,265.25002 v 9.26041 l 1.058333,-0.52916 v -9.26042 z" /> - <path style="fill:#78621d" d="m 52.449299,264.19169 v 9.26041 l 1.058333,-0.52916 v -9.26042 z" /> - <path style="fill:#27120b" d="m 49.274299,265.77919 v 2.64583 l 1.058333,-0.52916 v -2.64584 z" /> - <path style="fill:#09090e" d="m 45.040966,271.86461 1.058333,-0.52917 v 3.96875 l -1.058333,0.52917 -2.116667,-1.05834 v -3.96875 z" /> - <path style="fill:#150704" d="m 49.2743,271.07085 v 2.64583 l 1.058333,-0.52916 v -2.64584 z" /> - <path style="fill:#050303" d="m 49.2743,273.71669 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#150704" d="m 51.390966,268.68961 v 2.64583 l 1.058333,-0.52916 v -2.64584 z" /> - <path style="fill:#050303" d="m 51.390966,271.33544 v 2.64583 l 1.058333,-0.52916 v -2.64584 z" /> - <path style="fill:#2c140d" d="m 51.390966,264.72086 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#1d0c08" d="m 55.624299,262.60419 -2.116666,1.05833 v 9.26042 l 2.116666,-1.05833 z" /> - <path style="fill:#150704" d="m 53.507633,268.95419 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#050303" d="m 53.507633,270.2771 v 2.64583 l 1.058333,-0.52916 v -2.64584 z" /> - <path style="fill:#2c140d" d="m 53.507633,263.66252 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#27120b" d="m 54.565966,263.13335 v 2.64583 l 1.058333,-0.52916 v -2.64584 z" /> - <path style="fill:#150704" d="m 54.565966,269.74794 v 2.64583 l 1.058333,-0.52916 v -2.64584 z" /> - <path style="fill:#27120b" d="m 54.565966,267.10211 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#633f19" d="m 45.040965,277.15626 3.175,-1.58749 v -1.32291 l -3.175,1.5875 z" /> - <path style="fill:#55300a" d="m 48.215966,274.24586 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#694520" d="m 48.215966,272.92294 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#735619" d="m 48.215966,271.60002 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#735619" d="m 47.157633,273.45211 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#131016" d="m 45.040966,271.86461 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#131016" d="m 45.040966,274.51044 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#694520" d="m 45.040966,270.54169 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#735619" d="m 46.0993,270.01252 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#816c31" d="m 45.040966,267.89586 v 1.32291 l 1.058333,-0.52916 v 1.32291 l 1.058334,-0.52916 v -1.32292 l 2.116666,-1.05833 v -1.32292 z" /> - <path style="fill:#49250c" d="m 50.332633,273.18752 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#633f19" d="m 50.332633,271.86461 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#735619" d="m 50.332633,269.21878 v 2.64582 l 1.058333,-0.52916 v -2.64583 z" /> - <path style="fill:#816c31" d="m 50.332633,265.25002 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#49250c" d="m 52.449299,270.80627 10e-7,2.64583 1.058333,-0.52916 -10e-7,-2.64584 z" /> - <path style="fill:#55300a" d="m 52.4493,269.48336 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#694520" d="m 52.4493,268.16044 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#755719" d="m 52.4493,266.83752 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#816c31" d="m 52.4493,264.19169 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#b89b49" d="m 37.632632,265.51461 2.116667,1.05833 v -1.32292 l -2.116667,-1.05833 z" /> - <path style="fill:#b89b49" d="m 40.807633,267.10211 2.116667,1.05833 v -1.32292 l -2.116667,-1.05833 z" /> - <path style="fill:#b89b49" d="m 43.982633,270.01253 1.058333,0.52916 v -2.64584 l -1.058333,-0.52916 z" /> - <path style="fill:#966531" d="m 43.982632,271.33545 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#a57d28" d="m 42.924299,270.80627 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#b89b49" d="m 41.865965,270.27712 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#966531" d="m 43.982632,271.33545 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#a57d28" d="m 39.749299,273.18753 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#a57d28" d="m 41.865965,274.24587 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#a57d28" d="m 40.807633,275.03961 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#8e5c28" d="m 43.982633,276.62711 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#966531" d="m 41.865966,275.56877 2.116667,1.05833 v -1.32292 l -2.116667,-1.05833 z" /> - <path style="fill:#966531" d="m 38.690966,273.98128 2.116667,1.05833 v -1.32292 l -2.116667,-1.05833 z" /> - <path style="fill:#8e5c28" d="m 37.632632,273.45212 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#956531" d="m 37.632633,268.16044 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#b89b49" d="m 39.749299,267.89587 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#1f1c25" d="m 38.690966,267.36669 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#1f1c25" d="m 42.924299,269.48337 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#589197" d="m 42.924299,272.12919 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#589197" d="m 38.690966,270.01252 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#12121a" d="m 43.982633,272.65836 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#12121a" d="m 42.924299,273.45211 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#12121a" d="m 43.982633,275.30419 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#1f1c25" d="m 43.982633,273.98127 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#1f1c25" d="m 42.924299,274.77503 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#1f1c25" d="m 38.690966,272.65836 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#1f1c25" d="m 37.632633,270.80627 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" /> - <path style="fill:#131016" d="m 38.690966,267.10211 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#131016" d="m 36.574299,266.83752 v 1.32291 l 2.116667,-1.05832 v -1.32292 z" /> - <path style="fill:#131016" d="m 41.865966,268.68961 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" /> - <path style="fill:#131016" d="m 39.749299,268.42502 v 1.32291 l 2.116667,-1.05832 v -1.32292 z" /> - <g transform="matrix(1.0012918,0.26829532,-0.26829532,1.0012918,86.112205,-31.978257)"> - <path style="fill:#f1f2e0" d="m 38.073986,286.23688 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#5f3225" d="m 37.015652,286.76606 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#5f3225" d="m 37.015652,287.82438 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f7fdfd" d="m 38.073986,288.35355 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f1f2e0" d="m 40.190652,286.23689 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f7fdfd" d="m 42.307319,286.23688 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f1f2e0" d="m 42.307319,287.29521 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f7fdfd" d="m 43.365653,287.82437 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f1f2e0" d="m 43.365653,288.88271 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f1f2e0" d="m 41.248986,288.88271 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f7fdfd" d="m 40.190653,288.35354 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f7fdfd" d="m 45.482319,288.88271 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f1f2e0" d="m 46.540653,288.35355 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f1f2e0" d="m 46.540653,287.29521 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f7fdfd" d="m 44.423986,286.23688 2.116667,1.05833 1.058333,-0.52917 -2.116667,-1.05833 z" /> - </g> - <g transform="matrix(1.0703659,-0.18803179,0.18803179,1.0703659,-63.348962,-38.123102)"> - <path style="fill:#f1f2e0" d="m 48.392735,288.88271 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#5f3225" d="m 47.334402,289.41187 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#5f3225" d="m 45.217735,289.41188 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f7fdfd" d="m 44.159402,288.8827 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f1f2e0" d="m 43.101069,286.23687 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f7fdfd" d="m 43.101068,285.17854 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f1f2e0" d="m 46.276068,284.64938 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f7fdfd" d="m 45.217735,286.23688 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f1f2e0" d="m 44.159402,284.64937 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f1f2e0" d="m 43.101068,287.2952 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f7fdfd" d="m 44.159402,287.82438 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f7fdfd" d="m 48.392735,286.76604 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f1f2e0" d="m 48.392735,287.82438 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f1f2e0" d="m 46.276068,286.76604 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" /> - <path style="fill:#f7fdfd" d="m 47.334402,285.17854 2.116667,1.05833 1.058333,-0.52917 -2.116667,-1.05833 z" /> - </g> - </g> -</svg> diff --git a/application/resources/multimc/scalable/instances/fox.svg b/application/resources/multimc/scalable/instances/fox.svg deleted file mode 100644 index fcf16b2f..00000000 --- a/application/resources/multimc/scalable/instances/fox.svg +++ /dev/null @@ -1,290 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - id="svg8" - version="1.1" - viewBox="0 0 33.866666 33.866666" - height="128" - width="128"> - <defs - id="defs2" /> - <metadata - id="metadata5"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - transform="translate(0,-263.13334)" - id="layer1"> - <path - id="rect4750" - d="m 4.233333,267.36667 v 6.35 6.35 3.175 3.175 3.175 3.175 h 25.4 v -3.175 -3.175 -3.175 -3.175 -6.35 -6.35 h -6.35 v 6.35 h -12.7 v -3.175 -3.175 z" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#800000;stroke-width:0.79375;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> - <g - id="g4748"> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f9f4f4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.19062567;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4553" - width="6.3500032" - height="6.3499975" - x="4.233326" - y="267.36667" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b48f83;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4553-6-2" - width="3.1750014" - height="3.1749992" - x="7.4083276" - y="270.54166" /> - <rect - y="267.36667" - x="23.283335" - height="6.3499975" - width="6.3500032" - id="rect4623" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f9f4f4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.19062567;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> - <rect - y="270.54166" - x="23.283335" - height="3.1749992" - width="3.1750014" - id="rect4627" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b48f83;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e27c21;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4672" - width="25.400013" - height="15.875009" - x="4.233326" - y="273.71667" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#cc6920;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4629" - width="3.1750016" - height="6.3500032" - x="4.2333255" - y="273.71667" /> - <rect - y="273.71667" - x="26.458338" - height="6.3500032" - width="3.1750016" - id="rect4631" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#cc6920;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e78f41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4636" - width="6.3500032" - height="3.1750016" - x="13.758331" - y="283.24167" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b05122;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4638" - width="3.1750016" - height="3.1750016" - x="4.2333255" - y="280.06668" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#cc6920;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4640" - width="3.1750016" - height="3.1750016" - x="7.4083276" - y="280.06668" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f9f4f4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.84189939;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4644" - width="6.3500028" - height="3.1750016" - x="4.233326" - y="283.24167" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#06040e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4642" - width="3.1750016" - height="3.1750016" - x="4.2333255" - y="283.24167" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f9f4f4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.84189939;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4646" - width="6.3500028" - height="3.1750016" - x="23.283337" - y="283.24167" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#06040e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4648" - width="3.1750016" - height="3.1750016" - x="26.45834" - y="283.24167" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#cc6920;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4650" - width="3.1750016" - height="3.1750016" - x="23.283337" - y="280.06668" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b05122;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4652" - width="3.1750016" - height="3.1750016" - x="26.45834" - y="280.06668" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#cc6920;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4654" - width="25.400013" - height="3.1750016" - x="4.2333255" - y="286.41666" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e7d9d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4656" - width="25.400013" - height="3.1750016" - x="4.2333255" - y="289.59167" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5612604;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4917" - width="25.4" - height="0.26457807" - x="4.2333331" - y="273.71667" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.48607069;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4921" - width="0.2645835" - height="19.049997" - x="4.2333331" - y="273.71667" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f9f4f4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.19062555;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4658" - width="12.700007" - height="6.3500013" - x="10.583333" - y="286.41666" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#06040e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.19062555;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4660" - width="6.3500037" - height="3.1750007" - x="13.758333" - y="286.41669" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e7d9d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.19062555;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4662" - width="3.1750019" - height="3.1750007" - x="10.583333" - y="286.41669" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e7d9d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.19062555;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4664" - width="3.1750019" - height="3.1750007" - x="20.108334" - y="286.41669" /> - <rect - y="286.41669" - x="10.583333" - height="6.3499832" - width="0.2645835" - id="rect4923" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.2806327;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39686465;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4951" - width="12.699996" - height="0.26456967" - x="10.583333" - y="286.41669" /> - <rect - y="273.71667" - x="29.36875" - height="19.049982" - width="0.26458356" - id="rect4953" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.48607057;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> - <rect - y="292.50208" - x="23.283333" - height="0.26457682" - width="6.3499994" - id="rect4957" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.28062955;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.2806325;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4959" - width="0.2645838" - height="6.3499656" - x="23.018749" - y="286.41669" /> - <rect - y="292.50208" - x="4.2333331" - height="0.26457968" - width="6.3499999" - id="rect4961" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.28063107;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> - <rect - y="267.36667" - x="4.2333331" - height="6.3499956" - width="0.2645835" - id="rect4963" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.28063297;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.28063536;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4965" - width="6.349998" - height="0.26458791" - x="4.2333331" - y="267.36667" /> - <rect - y="267.36667" - x="23.283333" - height="6.3499956" - width="0.2645835" - id="rect4963-9" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.280633;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.28063536;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4965-1" - width="6.349998" - height="0.26458791" - x="23.283333" - y="267.36667" /> - <rect - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.28063306;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect4985" - width="0.26458356" - height="6.3499975" - x="29.36875" - y="267.36667" /> - <rect - y="267.36667" - x="10.318749" - height="6.3499975" - width="0.26458356" - id="rect4987" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.28063306;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> - </g> - </g> -</svg> diff --git a/application/resources/multimc/scalable/java.svg b/application/resources/multimc/scalable/java.svg deleted file mode 100644 index fd15e5c6..00000000 --- a/application/resources/multimc/scalable/java.svg +++ /dev/null @@ -1,773 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="160.00024" - height="159.99788" - id="svg12972" - version="1.1" - inkscape:version="0.48.5 r10040" - sodipodi:docname="java.svg"> - <defs - id="defs12974"> - <linearGradient - inkscape:collect="always" - id="linearGradient3935"> - <stop - style="stop-color:#000000;stop-opacity:0" - offset="0" - id="stop3937" /> - <stop - style="stop-color:#ffffff;stop-opacity:1" - offset="1" - id="stop3939" /> - </linearGradient> - <linearGradient - x1="0" - y1="0" - x2="1" - y2="0" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0,-126.08191,-126.08191,0,113.7417,390.27905)" - spreadMethod="pad" - id="linearGradient1722"> - <stop - style="stop-opacity:1;stop-color:#dfe3e5" - offset="0" - id="stop1724" /> - <stop - style="stop-opacity:1;stop-color:#bcc5ca" - offset="1" - id="stop1726" /> - </linearGradient> - <linearGradient - x1="0" - y1="0" - x2="1" - y2="0" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0,68.061096,68.061096,0,113.7417,266.44751)" - spreadMethod="pad" - id="linearGradient1760"> - <stop - style="stop-opacity:1;stop-color:#ffffff" - offset="0" - id="stop1762" /> - <stop - style="stop-opacity:1;stop-color:#000000" - offset="1" - id="stop1764" /> - </linearGradient> - <linearGradient - x1="0" - y1="0" - x2="1" - y2="0" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0,-21.014618,-21.014618,0,113.7417,386.83423)" - spreadMethod="pad" - id="linearGradient1798"> - <stop - style="stop-opacity:1;stop-color:#ffffff" - offset="0" - id="stop1800" /> - <stop - style="stop-opacity:1;stop-color:#000000" - offset="1" - id="stop1802" /> - </linearGradient> - <linearGradient - x1="0" - y1="0" - x2="1" - y2="0" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0,-126.08191,-126.08191,0,113.7417,390.27905)" - spreadMethod="pad" - id="linearGradient1722-2"> - <stop - style="stop-opacity:1;stop-color:#dfe3e5" - offset="0" - id="stop1724-7" /> - <stop - style="stop-opacity:1;stop-color:#bcc5ca" - offset="1" - id="stop1726-8" /> - </linearGradient> - <linearGradient - x1="0" - y1="0" - x2="1" - y2="0" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0,68.061096,68.061096,0,113.7417,266.44751)" - spreadMethod="pad" - id="linearGradient1760-4"> - <stop - style="stop-opacity:1;stop-color:#ffffff" - offset="0" - id="stop1762-0" /> - <stop - style="stop-color:#838383;stop-opacity:1;" - offset="1" - id="stop1764-8" /> - </linearGradient> - <linearGradient - x1="0" - y1="0" - x2="1" - y2="0" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0,-21.014618,-21.014618,0,113.7417,386.83423)" - spreadMethod="pad" - id="linearGradient1798-6"> - <stop - style="stop-opacity:1;stop-color:#ffffff" - offset="0" - id="stop1800-8" /> - <stop - style="stop-opacity:1;stop-color:#000000" - offset="1" - id="stop1802-6" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient1722-2" - id="linearGradient3923" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0,-126.08191,-126.08191,0,113.7417,390.27905)" - spreadMethod="pad" - x1="0" - y1="0" - x2="1" - y2="0" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient1760-4" - id="linearGradient3933" - x1="113.341" - y1="267.14597" - x2="114.54707" - y2="417.25464" - gradientUnits="userSpaceOnUse" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3935" - id="linearGradient3941" - x1="112.53288" - y1="365.57138" - x2="112.52676" - y2="386.9866" - gradientUnits="userSpaceOnUse" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient1760-4" - id="linearGradient3943" - gradientUnits="userSpaceOnUse" - x1="113.341" - y1="267.14597" - x2="114.54707" - y2="417.25464" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient1760-4" - id="linearGradient3945" - gradientUnits="userSpaceOnUse" - x1="113.341" - y1="267.14597" - x2="114.54707" - y2="417.25464" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient1760-4" - id="linearGradient3947" - gradientUnits="userSpaceOnUse" - x1="113.341" - y1="267.14597" - x2="114.54707" - y2="417.25464" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient1760-4" - id="linearGradient3949" - gradientUnits="userSpaceOnUse" - x1="113.341" - y1="267.14597" - x2="114.54707" - y2="417.25464" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient1760-4" - id="linearGradient3951" - gradientUnits="userSpaceOnUse" - x1="113.341" - y1="267.14597" - x2="114.54707" - y2="417.25464" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient1760-4" - id="linearGradient3953" - gradientUnits="userSpaceOnUse" - x1="113.341" - y1="267.14597" - x2="114.54707" - y2="417.25464" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient1760-4" - id="linearGradient3955" - gradientUnits="userSpaceOnUse" - x1="113.341" - y1="267.14597" - x2="114.54707" - y2="417.25464" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3935" - id="linearGradient3957" - gradientUnits="userSpaceOnUse" - x1="112.53288" - y1="365.57138" - x2="112.52676" - y2="386.9866" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3935" - id="linearGradient3961" - gradientUnits="userSpaceOnUse" - x1="112.53288" - y1="365.57138" - x2="112.52676" - y2="386.9866" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3935" - id="linearGradient3963" - gradientUnits="userSpaceOnUse" - x1="112.53288" - y1="365.57138" - x2="112.52676" - y2="386.9866" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3935" - id="linearGradient3965" - gradientUnits="userSpaceOnUse" - x1="112.53288" - y1="365.57138" - x2="112.52676" - y2="386.9866" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3935" - id="linearGradient3967" - gradientUnits="userSpaceOnUse" - x1="112.53288" - y1="365.57138" - x2="112.52676" - y2="386.9866" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3935" - id="linearGradient3969" - gradientUnits="userSpaceOnUse" - x1="112.53288" - y1="365.57138" - x2="112.52676" - y2="386.9866" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3935" - id="linearGradient3971" - gradientUnits="userSpaceOnUse" - x1="112.53288" - y1="365.57138" - x2="112.52676" - y2="386.9866" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3935" - id="linearGradient3973" - gradientUnits="userSpaceOnUse" - x1="112.53288" - y1="365.57138" - x2="112.52676" - y2="386.9866" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient1760-4-8" - id="linearGradient3943-2" - gradientUnits="userSpaceOnUse" - x1="113.341" - y1="267.14597" - x2="114.54707" - y2="417.25464" /> - <linearGradient - x1="0" - y1="0" - x2="1" - y2="0" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0,68.061096,68.061096,0,113.7417,266.44751)" - spreadMethod="pad" - id="linearGradient1760-4-8"> - <stop - style="stop-opacity:1;stop-color:#ffffff" - offset="0" - id="stop1762-0-6" /> - <stop - style="stop-opacity:1;stop-color:#000000" - offset="1" - id="stop1764-8-4" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient1760-4" - id="linearGradient4033" - gradientUnits="userSpaceOnUse" - x1="113.341" - y1="267.14597" - x2="113.94098" - y2="387.35413" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="1.979899" - inkscape:cx="-0.08087368" - inkscape:cy="54.594259" - inkscape:document-units="px" - inkscape:current-layer="g1676-6" - showgrid="false" - showborder="true" - borderlayer="false" - inkscape:showpageshadow="false" - fit-margin-top="0" - fit-margin-left="0" - fit-margin-right="0" - fit-margin-bottom="0" - inkscape:window-width="1613" - inkscape:window-height="1026" - inkscape:window-x="1677" - inkscape:window-y="-4" - inkscape:window-maximized="1"> - <inkscape:grid - type="xygrid" - id="grid14007" - empspacing="5" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" - originx="-3.4602454px" - originy="2.8306126px" - spacingx="8px" - spacingy="8px" /> - </sodipodi:namedview> - <metadata - id="metadata12977"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(-269.17466,-423.7599)"> - <g - transform="matrix(1.25,0,0,-1.25,203.53691,909.61217)" - id="g1674"> - <g - id="g1676" - clip-path="url(#clipPath1678)"> - <g - transform="translate(2.7683963,-2.2641865)" - id="g1674-5"> - <g - id="g1676-6" - clip-path="url(#clipPath1678)"> - <path - id="path3993" - style="fill:#ffffff;fill-opacity:1;stroke:none" - d="m 71.121479,387.39443 c -9.563,0 -17.336,-7.8193 -17.336,-17.42155 l 0,0 0,-85.75999 c 0,-9.61029 7.773,-17.42255 17.336,-17.42255 l 0,0 85.327991,0 c 9.562,0 17.336,7.81226 17.336,17.42255 l 0,0 0,85.75999 c 0,9.60225 -7.774,17.42155 -17.336,17.42155 l 0,0 z" - inkscape:connector-curvature="0" - sodipodi:nodetypes="sccsccsccsccs" /> - <g - id="g1682"> - <g - id="g1684" /> - <g - id="g1694"> - <g - clip-path="url(#clipPath1686)" - id="g1696"> - <g - id="g1698"> - <g - clip-path="url(#clipPath1690)" - id="g1700"> - <g - transform="translate(156.4058,390.9377)" - id="g1702"> - <path - inkscape:connector-curvature="0" - d="m 0,0 -85.328,0 c -11.735,0 -21.336,-9.6 -21.336,-21.334 l 0,-85.32 c 0,-11.742 9.601,-21.336 21.336,-21.336 l 85.328,0 c 11.734,0 21.336,9.594 21.336,21.336 l 0,85.32 C 21.336,-9.6 11.734,0 0,0 m 0,-1 c 11.211,0 20.336,-9.123 20.336,-20.334 l 0,-85.32 c 0,-11.219 -9.125,-20.336 -20.336,-20.336 l -85.328,0 c -11.215,0 -20.336,9.117 -20.336,20.336 l 0,85.32 c 0,11.211 9.121,20.334 20.336,20.334 L 0,-1" - style="fill:#b3b1b3;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1704" /> - </g> - </g> - </g> - </g> - </g> - </g> - <g - id="g1706-5"> - <g - id="g1708-7" /> - <g - id="g1728-8"> - <g - clip-path="url(#clipPath1710)" - id="g1730-3"> - <g - id="g1732-3"> - <g - clip-path="url(#clipPath1714)" - id="g1734-1"> - <g - id="g1736-0"> - <g - id="g1738-5"> - <g - clip-path="url(#clipPath1718)" - id="g1740-7"> - <path - inkscape:connector-curvature="0" - d="m 71.078,390.946 c -11.735,0 -21.336,-9.6 -21.336,-21.334 l 0,0 0,-85.329 c 0,-11.742 9.601,-21.335 21.336,-21.335 l 0,0 85.328,0 c 11.734,0 21.336,9.593 21.336,21.335 l 0,0 0,85.329 c 0,11.734 -9.602,21.334 -21.336,21.334 l 0,0 -85.328,0 z m -17.336,-106.663 0,85.329 c 0,9.554 7.773,17.334 17.336,17.334 l 0,0 85.328,0 c 9.562,0 17.336,-7.78 17.336,-17.334 l 0,0 0,-85.329 c 0,-9.562 -7.774,-17.335 -17.336,-17.335 l 0,0 -85.328,0 c -9.563,0 -17.336,7.773 -17.336,17.335" - style="fill:url(#linearGradient3923);stroke:none" - id="path1742-8" /> - </g> - </g> - </g> - </g> - </g> - </g> - </g> - </g> - <g - id="g1744-9"> - <g - id="g1746-7" /> - <g - id="g1766-3" - style="fill:url(#linearGradient4033);fill-opacity:1"> - <g - style="opacity:0.69999701;fill:url(#linearGradient3955);fill-opacity:1" - clip-path="url(#clipPath1748)" - id="g1768-8"> - <g - id="g1770-7" - style="fill:url(#linearGradient3953);fill-opacity:1"> - <g - clip-path="url(#clipPath1752)" - id="g1772-5" - style="fill:url(#linearGradient3951);fill-opacity:1"> - <g - id="g1774-4" - style="fill:url(#linearGradient3949);fill-opacity:1"> - <g - id="g1776-9" - style="fill:url(#linearGradient3947);fill-opacity:1"> - <g - clip-path="url(#clipPath1756)" - id="g1778-9" - style="fill:url(#linearGradient3945);fill-opacity:1"> - <path - inkscape:connector-curvature="0" - d="m 71.078,386.946 c -9.563,0 -17.336,-7.78 -17.336,-17.334 l 0,0 0,-85.329 c 0,-9.562 7.773,-17.335 17.336,-17.335 l 0,0 85.328,0 c 9.562,0 17.336,7.773 17.336,17.335 l 0,0 0,85.329 c 0,9.554 -7.774,17.334 -17.336,17.334 l 0,0 -85.328,0 z m -13.336,-102.663 0,85.329 c 0,7.351 5.984,13.336 13.336,13.336 l 0,0 85.328,0 c 7.351,0 13.336,-5.985 13.336,-13.336 l 0,0 0,-85.329 c 0,-7.351 -5.985,-13.335 -13.336,-13.335 l 0,0 -85.328,0 c -7.352,0 -13.336,5.984 -13.336,13.335" - style="fill:url(#linearGradient3943);fill-opacity:1;stroke:none" - id="path1780-1" /> - </g> - </g> - </g> - </g> - </g> - </g> - </g> - </g> - <g - id="g1820-4" - transform="translate(99.772903,299.7866)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 c -2.18,-0.91 -2.281,-0.98 -4.141,-2.281 -0.148,-0.223 -0.613,-2.258 1.102,-3.602 2.082,-1.633 7.559,-3.285 15.098,-3.285 4.445,0 11.136,0.598 17.898,3.434 l -0.129,0.882 c -3.148,-0.57 -6.539,-0.843 -10.34,-0.843 -5.386,0 -10.515,0.539 -16.183,1.187 -2.727,0.309 -4.086,0.895 -4.282,1.836 -0.148,0.692 0.414,1.289 0.852,1.641 -0.07,0.281 0.02,0.633 0.117,1 0,0.008 0,0.023 0.008,0.031 m 12.059,-9.969 c -6.692,0 -12.957,1.391 -15.59,3.457 -1.414,1.106 -1.586,2.551 -1.567,3.317 0.016,0.601 0.18,1.343 0.5,1.57 2.02,1.414 2.067,1.437 4.754,2.539 L 0.391,0.965 C 0.543,0.965 0.68,0.898 0.773,0.781 0.961,0.539 0.879,0.215 0.766,-0.23 0.719,-0.406 0.633,-0.734 0.648,-0.836 0.641,-0.766 0.543,-0.668 0.434,-0.668 l 0.308,-0.73 c -0.422,-0.243 -1.008,-0.766 -0.937,-1.11 0.039,-0.191 0.422,-0.844 3.593,-1.211 5.641,-0.64 10.743,-1.179 16.09,-1.179 3.918,0 7.383,0.296 10.598,0.906 l 0.469,-0.336 0.242,-1.594 -0.242,-0.426 C 23.57,-9.34 16.641,-9.969 12.059,-9.969" - style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1822-3" /> - </g> - <g - id="g1824-2" - transform="translate(100.3159,298.73581)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 c 0,0 -3.941,-2.289 2.809,-3.063 8.175,-0.933 17.8,-1.976 26.808,-0.269 l 0.238,-1.598 c -13.5,-5.785 -29.367,-3.609 -33.687,-0.215 -2.016,1.586 -1.367,4.043 -1.078,4.243 2,1.398 2,1.398 4.672,2.5 C 0.359,1.84 -0.801,-0.223 0,0" - style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1826-2" /> - </g> - <g - id="g1828-6" - transform="translate(97.741699,311.24749)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 c -0.293,-0.156 -0.641,-0.32 -1.016,-0.492 -2.539,-1.18 -4.589,-2.36 -3.949,-4.93 0.457,-1.84 6.442,-3.797 16.621,-3.797 7.43,0 15.282,1.086 22.149,3.059 l -0.121,0.84 c -4.723,-0.883 -9.606,-1.313 -14.914,-1.313 -6.184,0 -11.832,0.586 -16.372,1.055 -2.457,0.25 -3.785,0.871 -4.062,1.89 C -2,-2.477 -0.641,-1.289 -0.23,-0.965 -0.098,-0.594 -0.016,-0.223 0,0 m 11.656,-10.016 c -8.113,0 -16.64,1.36 -17.398,4.399 -0.852,3.422 2.304,4.883 4.39,5.851 0.383,0.18 0.739,0.344 1.032,0.5 C 0.094,0.961 0.461,0.898 0.656,0.617 0.992,0.133 0.645,-0.922 0.477,-1.352 L 0.344,-1.531 c -0.383,-0.285 -1.43,-1.25 -1.239,-1.946 0.102,-0.367 0.676,-1.031 3.372,-1.304 C 7,-5.25 12.629,-5.832 18.77,-5.832 c 5.41,0 10.371,0.449 15.171,1.371 l 0.473,-0.332 0.234,-1.598 -0.281,-0.441 c -7.023,-2.055 -15.09,-3.184 -22.711,-3.184" - style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1830-5" /> - </g> - <g - id="g1832-4" - transform="translate(97.847199,310.0366)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 c 0,0 -4.426,-3.273 2.332,-3.969 8.734,-0.906 19.641,-1.969 31.578,0.328 l 0.238,-1.593 c -18.253,-5.344 -38.582,-3.18 -39.605,0.925 -0.922,3.7 3.383,4.899 5.219,5.903 C 0.613,2.063 0.246,0.641 0,0" - style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1834-7" /> - </g> - <g - id="g1836-0" - transform="translate(136.40581,358.5717)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 c -0.09,0 -0.25,-0.031 -0.512,-0.18 -0.707,-0.402 -1.515,-0.84 -2.394,-1.312 -6.344,-3.43 -16.961,-9.168 -18.367,-16.887 -0.633,-3.465 0.656,-7.07 3.828,-10.726 2.808,-3.231 0.652,-6.844 -0.633,-9 l -0.242,-0.407 c -0.328,-0.562 -0.446,-0.922 -0.481,-1.148 1.52,0.879 6.508,4.047 7.524,8.23 0.461,1.907 0.035,3.801 -1.27,5.637 l -0.687,0.957 c -2.258,3.137 -4.207,5.84 -3.532,9.004 0.86,4.023 5.973,8.508 17.082,14.969 C 0.32,-0.574 0.273,-0.207 0.141,-0.059 0.109,-0.023 0.074,0 0,0 m -18.871,-40.613 -0.324,0.183 -0.11,-0.136 c -0.234,0.187 -0.679,0.804 0.293,2.461 l 0.246,0.41 c 1.25,2.097 3.145,5.269 0.719,8.066 -3.34,3.844 -4.691,7.68 -4.016,11.391 1.477,8.101 12.305,13.953 18.774,17.449 0.875,0.473 1.68,0.91 2.383,1.305 0.699,0.402 1.273,0.371 1.644,-0.043 0.469,-0.524 0.375,-1.508 0.364,-1.618 L 0.906,-1.449 c -10.879,-6.309 -16.086,-10.797 -16.89,-14.555 -0.602,-2.812 1.164,-5.262 3.398,-8.363 l 0.688,-0.961 c 1.445,-2.035 1.914,-4.152 1.398,-6.293 -1.281,-5.281 -8.082,-8.844 -8.371,-8.992" - style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1838-3" /> - </g> - <g - id="g1840-7" - transform="translate(118.6597,329.2006)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 c 2.793,-3.211 0.277,-6.891 -0.918,-8.938 -0.937,-1.597 -0.391,-1.945 -0.391,-1.945 0,0 12.641,6.524 6.832,14.696 -5.421,7.617 -9.574,11.402 12.926,24.457 0,0 0.242,2.207 -1.414,1.269 C 8.871,24.93 -13.129,15.133 0,0" - style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1842-9" /> - </g> - <g - id="g1844-3" - transform="translate(90.905807,292.3256)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 c -4.941,-0.07 -14.234,-4.152 -14.438,-6.926 -0.078,-1.09 1.547,-1.957 4.571,-2.449 10.109,-1.641 20.023,-2.469 29.476,-2.469 20.106,0 34.25,3.938 36.305,7.746 0.219,0.403 0.289,0.793 0.203,1.168 -0.676,-0.711 -2.32,-1.84 -6.316,-3.054 -6.61,-2 -21.028,-3.454 -34.289,-3.454 -10.922,0 -19.16,0.969 -23.196,2.719 -0.918,0.403 -1.355,0.91 -1.293,1.508 0.204,2.047 6.704,3.531 6.766,3.547 1.633,0.351 2.777,0.41 3.336,0.414 0.055,0.328 0,0.617 -0.16,0.836 C 0.773,-0.148 0.43,0 0,0 m 19.609,-12.648 0,0 c -9.492,0 -19.453,0.835 -29.601,2.484 -3.594,0.582 -5.36,1.691 -5.242,3.297 0.257,3.508 10.101,7.594 15.195,7.664 0.734,0 1.305,-0.262 1.652,-0.738 0.356,-0.497 0.43,-1.004 0.207,-1.696 l -0.41,-0.129 -0.238,0 c -0.512,0 -1.61,-0.195 -3.211,-0.539 -2.414,-0.519 -6.055,-2.011 -6.145,-2.914 -0.019,-0.199 0.286,-0.496 0.821,-0.726 3.933,-1.715 12.058,-2.676 22.875,-2.676 13.191,0 27.511,1.432 34.058,3.412 5.657,1.719 6.231,3.202 6.235,3.218 l 0.718,0.105 c 0.54,-0.817 0.571,-1.717 0.094,-2.592 -2.137,-3.961 -15.836,-8.17 -37.008,-8.17" - style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1846-0" /> - </g> - <g - id="g1848-9" - transform="translate(147.09331,290.21631)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 c 0,0 -0.367,-1.629 -6.5,-3.492 -11.664,-3.531 -46.965,-5.203 -57.211,-0.75 -3.68,1.605 3.227,3.828 5.398,4.297 2.266,0.484 3.563,0.398 3.563,0.398 0.375,1.141 -0.242,2.07 -1.469,2.055 C -63.281,2.406 -78.988,-5.57 -66.117,-7.664 -24.926,-14.34 3.961,-6.043 0,0" - style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1850-0" /> - </g> - <g - id="g1852-7" - transform="translate(101.40581,322.55999)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 -0.133,0 c -2.879,0 -10.93,-1.609 -16.5,-4.305 -0.695,-0.336 -0.59,-0.871 -0.383,-1.672 0.055,-0.214 0.094,-0.351 0.102,-0.484 0.086,-1.477 7.898,-3.043 20.367,-3.043 9.969,0 19.508,1.014 26.188,2.764 1.078,0.742 2.308,1.913 3.187,2.8 C 30.172,-4.851 24.617,-6.55 19.008,-7.023 13.605,-7.476 7.953,-7.724 3.09,-7.724 c -3.746,0 -6.848,0.153 -8.981,0.434 -3.007,0.406 -4.371,1 -4.418,1.938 -0.105,2.059 7.961,4.188 10.801,4.872 0.059,0.234 0.094,0.355 -0.019,0.523 C 0.398,0.148 0.242,0 0,0 m 3.453,-10.281 c -2.14,0 -20.953,0.109 -21.164,3.82 -0.004,0.102 -0.043,0.231 -0.082,0.383 -0.168,0.664 -0.527,2.047 0.813,2.695 5.73,2.774 13.761,4.352 16.789,4.578 0.777,0.075 1.152,-0.25 1.324,-0.504 0.43,-0.628 0.086,-1.55 0.043,-1.656 L 0.898,-1.203 c -5.066,-1.203 -10.457,-3.141 -10.406,-4.11 0,-0.023 0.074,-0.695 3.727,-1.179 2.093,-0.281 5.164,-0.43 8.871,-0.43 4.84,0 10.473,0.25 15.848,0.699 7.609,0.641 15.132,3.586 15.207,3.614 l 0.441,-0.637 C 34.484,-3.359 32.035,-6.066 30.039,-7.43 L 29.914,-7.484 C 23.164,-9.262 13.52,-10.281 3.453,-10.281" - style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1854-4" /> - </g> - <g - id="g1856-9" - transform="translate(102.2104,321.7436)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 c 0,0 -18.754,-4.457 -6.641,-6.074 5.114,-0.684 15.313,-0.528 24.809,0.269 7.762,0.653 15.316,3.645 15.316,3.645 0,0 -2.496,-2.774 -4.476,-4.125 -16.664,-4.383 -46.906,-3.141 -47.125,0.664 -0.031,0.547 -0.821,2.055 0.508,2.695 5.699,2.758 13.75,4.321 16.64,4.539 C 0.688,1.738 0,0 0,0" - style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1858-7" /> - </g> - <g - id="g1860-7" - transform="translate(135.56979,302.0444)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 -0.367,0.68 c 0.09,0.086 0.242,0.258 0.281,0.359 L 0.273,0.898 c 11.25,3.071 13.993,7.801 14.618,10.368 0.609,2.5 -0.219,5.004 -2.282,6.867 -2.695,2.445 -6.703,3.133 -10.48,1.812 -0.098,-0.039 -0.152,-0.078 -0.16,-0.101 -0.024,-0.125 0.164,-0.418 0.375,-0.656 0.328,0.109 0.984,0.304 2.019,0.523 3.262,0.687 6.711,-0.977 7.68,-3.695 C 12.742,14.051 12.992,8.766 0.234,2.133 L -0.133,2.844 C 12.066,9.184 11.918,13.98 11.289,15.75 10.379,18.301 7.078,19.461 4.527,18.93 3.066,18.621 2.391,18.355 2.383,18.352 L 1.961,18.43 c -0.152,0.14 -0.914,0.886 -0.773,1.578 0.046,0.219 0.203,0.523 0.675,0.687 4.051,1.43 8.371,0.672 11.285,-1.968 2.282,-2.071 3.204,-4.856 2.52,-7.649 C 14.992,8.301 12.055,3.168 0,0" - style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1862-4" /> - </g> - <g - id="g1864-5" - transform="translate(135.6245,304.5366)"> - <path - inkscape:connector-curvature="0" - d="M 0,0 C 19.359,10.059 10.645,18.129 4.391,16.828 2.867,16.508 2.18,16.234 2.18,16.234 c 0,0 -1.321,1.211 -0.239,1.594 12.364,4.344 23.762,-13.133 -2.097,-19.937 0,0 0.297,0.269 0.39,0.511" - style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1866-7" /> - </g> - <g - id="g1868-4" - transform="translate(124.9565,376.80999)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 c 1.715,-10.453 -5.746,-16.297 -12.973,-21.953 -3.843,-3.008 -7.468,-5.848 -9.785,-9.324 -4.574,-6.864 2.379,-14.461 10.973,-22.301 -0.016,0.066 -0.031,0.137 -0.043,0.203 -0.145,0.656 -0.27,1.227 -0.836,2.043 -0.41,0.598 -0.84,1.199 -1.277,1.809 -4.758,6.636 -10.149,14.16 2.75,24.351 8.101,6.399 12.39,12.633 12.746,18.531 C 1.738,-3.633 0.801,-1.359 0,0 m -11.215,-55.172 c -9.359,8.438 -17.332,16.649 -12.207,24.336 2.387,3.586 6.234,6.602 9.957,9.512 7.438,5.824 15.133,11.847 12.305,22.965 l 0.672,0.379 c 0.125,-0.129 3.164,-3.231 2.843,-8.684 -0.359,-6.145 -4.75,-12.582 -13.046,-19.133 -12.305,-9.719 -7.375,-16.601 -2.602,-23.262 0.438,-0.613 0.875,-1.218 1.289,-1.82 0.652,-0.945 0.801,-1.613 0.957,-2.324 0.098,-0.453 0.203,-0.922 0.465,-1.512 l -0.633,-0.457 z" - style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1870-4" /> - </g> - <g - id="g1872-9" - transform="translate(124.18311,378.5444)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 c 0,0 10.723,-10.723 -10.168,-27.219 -13.789,-10.89 -6.187,-18.664 -1.391,-25.621 1.032,-1.496 0.711,-2.246 1.383,-3.769 -9.781,8.82 -16.961,16.586 -12.14,23.82 C -15.25,-22.18 4.332,-17.031 0,0" - style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1874-2" /> - </g> - <g - id="g1876-2" - transform="translate(89.905807,281.85381)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 c 0.625,-0.367 3.828,-1.914 14.234,-2.582 3.352,-0.215 6.875,-0.324 10.481,-0.324 16.652,0 36.281,2.457 36.89,9.375 -0.05,0.344 -0.144,0.57 -0.199,0.609 C 61.281,6.906 61.141,6.781 60.977,6.641 59.297,5.172 55.371,1.727 46.723,0.102 41.859,-0.813 35.746,-1.277 28.555,-1.277 17.664,-1.277 6.852,-0.199 0.363,0.813 0.199,0.805 0.16,0.789 0.141,0.762 0.016,0.617 -0.012,0.258 0,0 m 24.719,-4.094 -0.004,0 c -3.621,0 -7.164,0.305 -10.527,0.52 -12.211,0.781 -14.719,2.859 -14.821,2.945 l -0.14,0.295 c -0.016,0.105 -0.141,1.075 0.304,1.595 0.235,0.261 0.551,0.391 0.957,0.328 6.457,-1.007 17.223,-2.072 28.067,-2.072 7.14,0 13.203,0.464 18.019,1.367 8.434,1.59 12.246,4.927 13.871,6.357 0.172,0.148 0.321,0.278 0.45,0.383 0.187,0.156 0.378,0.923 0.574,0.923 0.492,0 0.828,-0.641 0.937,-0.641 l -0.031,0 0.031,-0.968 C 61.828,-0.547 42.559,-4.094 24.719,-4.094" - style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1878-6" /> - </g> - <g - id="g1880-7" - transform="translate(104.1167,278.87331)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 c 18.582,-1.188 47.117,0.664 47.797,9.457 0,0 -0.149,1.434 -0.859,0.844 C 45.516,9.117 41.82,5.238 32.438,3.473 18.891,0.926 -2.184,2.379 -13.785,4.188 -14.828,4.348 -14.59,2.754 -14.59,2.754 -14.59,2.754 -12.219,0.785 0,0" - style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1882-9" /> - </g> - <g - id="g1884-1" - transform="translate(100.07761,300.3334)"> - <path - inkscape:connector-curvature="0" - d="M 0,0 C 0,0 -3.941,-2.289 2.809,-3.063 10.984,-4 15.168,-3.867 24.18,-2.164 c 0,0 2.367,-1.484 5.675,-2.766 C 9.648,-13.594 -15.867,-4.434 0,0" - style="fill:#5382a1;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1886-9" /> - </g> - <g - id="g1888-1" - transform="translate(97.608902,311.63031)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 c 0,0 -4.422,-3.273 2.336,-3.969 8.734,-0.902 15.633,-0.976 27.57,1.321 0,0 1.649,-1.672 4.242,-2.586 C 9.727,-12.379 -17.48,-5.797 0,0" - style="fill:#5382a1;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1890-8" /> - </g> - <g - id="g1892-5" - transform="translate(118.4214,330.79831)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 c 4.98,-5.73 -1.309,-10.887 -1.309,-10.887 0,0 12.641,6.524 6.832,14.696 -5.421,7.617 -9.574,11.406 12.93,24.461 0,0 -35.328,-8.829 -18.453,-28.27" - style="fill:#f8981d;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1894-5" /> - </g> - <g - id="g1896-7" - transform="translate(145.14011,291.9819)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 c 0,0 2.922,-2.406 -3.215,-4.27 -11.66,-3.531 -48.535,-4.597 -58.777,-0.14 -3.68,1.605 3.226,3.824 5.398,4.293 2.262,0.488 3.559,0.398 3.559,0.398 -4.098,2.883 -26.473,-5.664 -11.367,-8.113 C -23.211,-14.508 10.684,-4.824 0,0" - style="fill:#5382a1;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1898-7" /> - </g> - <g - id="g1900-1" - transform="translate(101.9761,323.34131)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 c 0,0 -18.758,-4.457 -6.645,-6.078 5.114,-0.68 15.313,-0.524 24.809,0.273 7.766,0.649 15.555,2.047 15.555,2.047 0,0 -2.735,-1.176 -4.711,-2.527 -19.051,-5.012 -55.84,-2.676 -45.25,2.441 C -7.281,0.492 0,0 0,0" - style="fill:#5382a1;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1902-4" /> - </g> - <g - id="g1904-9" - transform="translate(135.6245,304.5366)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 c 19.359,10.059 10.406,19.727 4.156,18.422 -1.527,-0.32 -2.215,-0.594 -2.215,-0.594 0,0 0.571,0.895 1.653,1.274 12.367,4.347 21.871,-12.813 -3.985,-19.614 0,0 0.297,0.27 0.391,0.512" - style="fill:#5382a1;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1906-4" /> - </g> - <g - id="g1908-6" - transform="translate(123.94479,380.142)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 c 0,0 10.723,-10.723 -10.168,-27.223 -16.75,-13.226 -3.824,-20.769 -0.004,-29.39 -9.781,8.824 -16.961,16.59 -12.144,23.82 C -15.25,-22.18 4.332,-17.035 0,0" - style="fill:#f8981d;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1910-0" /> - </g> - <g - id="g1912-6" - transform="translate(103.8784,277.2709)"> - <path - inkscape:connector-curvature="0" - d="m 0,0 c 18.582,-1.188 47.121,0.664 47.801,9.453 0,0 -1.301,-3.336 -15.36,-5.98 C 16.578,0.488 -2.988,0.836 -14.59,2.75 -14.59,2.75 -12.215,0.781 0,0" - style="fill:#5382a1;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path1914-4" /> - </g> - <g - id="g3975"> - <g - id="g3977" /> - <g - style="fill:url(#linearGradient3933);fill-opacity:1" - id="g3979"> - <g - id="g3981" - clip-path="url(#clipPath1748)" - style="opacity:0.69999701;fill:url(#linearGradient3955);fill-opacity:1"> - <g - style="fill:url(#linearGradient3953);fill-opacity:1" - id="g3983"> - <g - style="fill:url(#linearGradient3951);fill-opacity:1" - id="g3985" - clip-path="url(#clipPath1752)"> - <g - style="fill:url(#linearGradient3949);fill-opacity:1" - id="g3987"> - <g - style="fill:url(#linearGradient3947);fill-opacity:1" - id="g3989"> - <g - style="fill:url(#linearGradient3945);fill-opacity:1" - id="g3991" - clip-path="url(#clipPath1756)" /> - </g> - </g> - </g> - </g> - </g> - </g> - </g> - </g> - </g> - </g> - </g> - </g> -</svg> diff --git a/application/resources/multimc/scalable/language.svg b/application/resources/multimc/scalable/language.svg deleted file mode 100644 index 968e3538..00000000 --- a/application/resources/multimc/scalable/language.svg +++ /dev/null @@ -1,109 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - viewBox="0 0 128 128" - height="128" - width="128" - xml:space="preserve" - id="svg2" - version="1.1" - sodipodi:docname="language.svg" - inkscape:version="0.92.2 2405546, 2018-03-11"><sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="3840" - inkscape:window-height="2123" - id="namedview30" - showgrid="false" - inkscape:zoom="1.84375" - inkscape:cx="325.0346" - inkscape:cy="134.81864" - inkscape:window-x="1200" - inkscape:window-y="0" - inkscape:window-maximized="1" - inkscape:current-layer="g888" /><metadata - id="metadata8"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs6" /><g - transform="matrix(1.3333333,0,0,-1.3333333,0,128.00004)" - id="g10"><g - transform="scale(0.1)" - id="g12"><g - transform="matrix(0.0334181,0,0,0.0334181,77.111273,13.149509)" - id="g888"><g - id="g14" - transform="scale(1.69573)" - style="fill:#0066cc;fill-opacity:1"><path - d="M 7103.55,14358.7 1603.03,16300 V 4328.22 l 5500.52,1779.59 v 8250.89" - style="fill:#0066cc;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path16" /></g><g - id="g18" - transform="scale(1.69635)"><path - d="M 6968.96,14359.4 12678,16300 V 4332.6 L 6968.96,6111.53 v 8247.87" - style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path20" /></g><g - id="g22" - transform="scale(1.49453)"><path - d="M 200.466,2533.04 7910.06,5102.75 V 16300 L 200.466,13730.3 V 2533.04" - style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path24" /></g><g - id="g26" - transform="scale(1.20038)" - style="fill:#003399;fill-opacity:1"><path - d="M 14222.2,2943.15 15582.6,705.027 16300,2784.12 14222.2,2943.15" - style="fill:#003399;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path28" /></g><g - id="g30" - transform="scale(1.16442)" - style="fill:#003399;fill-opacity:1"><path - d="m 3621.88,15967.1 c -52.56,51.6 68.45,-421.7 236.85,-592 298.61,-301.3 531.85,-340.1 656.04,-345.1 274.81,-11 613.95,68.5 815.34,152.9 194.86,83.1 536.31,257.4 665.56,511.7 27.4,54.4 102.2,145.7 55.22,371.2 -35.64,173.5 -146.08,234.2 -280.74,224.6 -134.66,-9.1 -542.33,-117.8 -739.51,-178.5 -197.26,-59.8 -603.56,-183.5 -780.64,-221.9 -176.65,-38.3 -566.12,17.8 -628.12,77.1" - style="fill:#003399;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path32" /></g><g - id="g34" - transform="scale(1.0917)" - style="fill:#003399;fill-opacity:1"><path - d="m 9188.43,10995.1 c -83.18,30.2 -1803.98,743 -2047.91,859.8 -199.6,96 -689.02,302.9 -919.3,396.9 648.62,1000.1 1058.07,1754.8 1112.58,1869.8 100.85,210.3 787.39,1553.7 803.42,1636.4 15.57,83.8 35.08,393.4 19.97,467 -15.11,75 -266.83,-69.2 -608.59,-185.1 -342.31,-115.4 -992.86,-538.5 -1244.12,-591.5 -252.17,-52.6 -1058.07,-357.9 -1470.46,-494.7 -412.38,-136.9 -1192.45,-375 -1513.33,-461.6 -321.33,-86.7 -601.81,-93.5 -781.53,-148 0,0 23.91,-251.8 71.63,-327.2 47.18,-75.5 217.19,-260.5 414.86,-312.2 197.67,-52 524.87,-31.2 673.9,2.9 148.95,34.6 406.98,160.7 441.61,215.7 34.99,56 -18.05,228.4 40.85,280.5 59.45,51.6 844.83,235.2 1141.34,324.7 296.51,91.2 1431.53,482.1 1585.42,462.2 C 6860.04,14829 5947.06,13020.6 5653.02,12481.1 5358.89,11941.7 3650.37,9568.39 3286.62,9150.14 3010.54,8832.19 2341.49,8018.6 2109.74,7835.03 c 58.44,-16.12 472.75,19.42 548.23,66.14 470.36,289.73 1253.82,1265 1506.09,1562.06 749.84,879.37 1408.63,1803.07 1931.02,2595.77 h 0.56 c 101.76,-42.4 924.61,-712.8 1139.32,-861.4 214.71,-148.5 1062.01,-621.2 1245.58,-699.7 183.57,-79.4 889.07,-404.6 918.75,-294.5 29.68,111 -127.6,760.1 -210.86,791.7" - style="fill:#003399;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path36" /></g><g - id="g38" - transform="scale(1.12147)" - style="fill:#003399;fill-opacity:1"><path - d="m 5073.69,1979.54 c 160.5,-98.08 312.09,-178.34 481.51,-258.59 338.84,-169.42 722.26,-347.76 1087.85,-481.51 499.35,-187.25 998.69,-338.838 1498.03,-454.757 276.43,-62.418 579.6,-115.919 873.85,-160.504 26.76,0 820.35,-98.085 980.86,-98.085 h 802.51 c 312.1,26.751 606.4,44.584 918.4,89.169 249.7,35.667 526.1,80.251 793.6,142.669 196.2,44.584 401.3,89.169 597.5,151.587 187.2,53.501 401.2,124.831 606.3,196.171 133.8,44.58 276.4,107 419.1,160.5 115.9,53.5 258.6,115.92 392.3,169.42 160.6,71.34 347.8,169.42 526.1,258.59 142.7,71.34 303.2,160.5 454.8,249.67 115.9,62.42 383.4,267.51 526.1,267.51 160.5,0 267.5,-142.67 267.5,-267.51 0,-258.59 -347.8,-338.84 -508.3,-454.76 -169.4,-115.92 -374.5,-205.08 -552.8,-303.17 -356.7,-187.253 -722.3,-347.756 -1070,-481.509 -454.8,-169.42 -954.1,-329.923 -1400,-436.926 -169.4,-35.667 -338.8,-80.251 -508.2,-107.002 C 12171.5,142.67 11244.1,0 10985.6,0 H 9808.53 c -312.09,26.7505 -642.01,62.4179 -954.1,107.002 -276.42,44.584 -570.68,98.086 -847.1,160.503 -214,44.585 -445.84,107.003 -650.93,169.421 -356.67,98.085 -704.43,222.921 -1043.27,356.674 -615.26,231.84 -1257.28,535.01 -1863.62,936.27 -107,71.33 -115.92,142.67 -115.92,222.92 0,133.75 98.08,258.59 258.59,258.59 142.67,0 428.01,-205.09 481.51,-231.84" - style="fill:#003399;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path40" /></g><g - id="g42" - transform="scale(1.51227)" - style="fill:#003399;fill-opacity:1"><path - d="M 8014.44,16134.7 V 5025.56 c -6.61,-33.07 -19.84,-66.13 -46.29,-99.19 -13.22,-19.84 -39.67,-46.29 -59.51,-52.9 C 7743.33,4807.34 297.566,2307.79 198.377,2307.79 c -79.351,0 -152.089,52.9 -191.76442,138.86 0,6.62 -6.61258,13.23 -6.61258,26.45 v 11115.7 c 13.2252,33.1 19.8377,79.4 46.288,105.8 52.9006,72.8 145.477,86 204.99,105.8 112.414,39.7 7445.762,2499.6 7551.562,2499.6 66.13,0 211.6,-46.3 211.6,-165.3 z M 7611.07,5190.87 403.367,2790.51 V 13423.5 L 7611.07,15823.9 V 5190.87" - style="fill:#003399;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path44" /></g><g - id="g46" - transform="scale(1.71411)" - style="fill:#003399;fill-opacity:1"><path - d="M 12723.8,16113.3 V 4311.27 c -5.8,-134.18 -99.2,-192.52 -186.7,-192.52 -75.8,0 -624.2,186.69 -717.6,215.86 -735,227.52 -1475.9,455.05 -2205.18,682.57 -163.35,52.51 -332.54,105.01 -490.05,157.52 -140.02,40.83 -291.7,87.5 -431.71,134.18 -624.23,192.52 -1260.13,385.04 -1884.36,595.06 -23.34,5.83 -81.68,87.51 -81.68,105.01 v 8243.35 c 11.67,29.2 23.34,64.2 52.51,87.5 46.67,52.5 2047.71,717.6 2835.29,980.1 210.02,75.8 2841.08,980.1 2922.78,980.1 105,0 186.7,-75.8 186.7,-186.7 z M 12367.9,4532.96 7076.56,6178.13 V 14083.1 L 12367.9,15880 V 4532.96" - style="fill:#003399;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path48" /></g><g - id="g50" - transform="scale(1.48515)" - style="fill:#0066cc;fill-opacity:1"><path - d="M 16235.4,2378.81 8076.61,4979.28 8110.74,16300 16235.4,13714.1 V 2378.81" - style="fill:#0066cc;fill-opacity:1;fill-rule:nonzero;stroke:none" - id="path52" /></g><g - id="g54" - transform="scale(1.33098)"><path - d="m 12990.3,14581.8 1172.9,-355.3 2136.8,-7701.24 -1204.8,365.52 -432.8,1581.01 -2489.7,754.63 -535.4,-1287.92 -1205.1,365.6 z m 536.2,-2038.8 -893.6,-2159.8 1642.8,-497.94 -749.2,2657.74" - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path56" /></g></g></g></g></svg>
\ No newline at end of file diff --git a/application/resources/multimc/scalable/logo.svg b/application/resources/multimc/scalable/logo.svg deleted file mode 100644 index 8bb0e289..00000000 --- a/application/resources/multimc/scalable/logo.svg +++ /dev/null @@ -1,353 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="68.26667" - height="68.26667" - id="svg4427" - version="1.1" - inkscape:version="0.92.1 r" - sodipodi:docname="multimc-smooth-biginfinity.svg" - inkscape:export-filename="/home/peterix/playground/MultiMC-icons/multimc-smooth-biginfinity.png" - inkscape:export-xdpi="180" - inkscape:export-ydpi="180"> - <defs - id="defs4429"> - <linearGradient - inkscape:collect="always" - id="linearGradient4809"> - <stop - style="stop-color:#98c867;stop-opacity:1" - offset="0" - id="stop4805" /> - <stop - style="stop-color:#5c9a33;stop-opacity:1" - offset="1" - id="stop4807" /> - </linearGradient> - <linearGradient - id="linearGradient5668" - inkscape:collect="always"> - <stop - id="stop5670" - offset="0" - style="stop-color:#75b54b;stop-opacity:1;" /> - <stop - id="stop5672" - offset="1" - style="stop-color:#75b54b;stop-opacity:0.6" /> - </linearGradient> - <linearGradient - id="linearGradient5084" - inkscape:collect="always"> - <stop - id="stop5086" - offset="0" - style="stop-color:#000000;stop-opacity:0.8" /> - <stop - id="stop5088" - offset="1" - style="stop-color:#000000;stop-opacity:0.35" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5668" - id="linearGradient5072" - x1="6.7342591" - y1="28.510933" - x2="50.506943" - y2="61.773685" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-0.01532073,-0.00938002)" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5084" - id="linearGradient5082" - x1="14.312115" - y1="9.7948904" - x2="44.097023" - y2="82.973114" - gradientUnits="userSpaceOnUse" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5668" - id="linearGradient3281" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-0.01532073,-0.00938002)" - x1="6.7342591" - y1="28.510933" - x2="50.506943" - y2="61.773685" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5668" - id="linearGradient3283" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-0.01532073,-0.00938002)" - x1="6.7342591" - y1="28.510933" - x2="50.506943" - y2="61.773685" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5668" - id="linearGradient3286" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.2671525,0,0,0.89790119,-0.01941371,-0.00842234)" - x1="6.7342591" - y1="28.510933" - x2="50.506943" - y2="61.773685" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5084" - id="linearGradient3288" - gradientUnits="userSpaceOnUse" - x1="14.312115" - y1="9.7948904" - x2="44.097023" - y2="82.973114" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5084" - id="linearGradient3290" - gradientUnits="userSpaceOnUse" - x1="14.312115" - y1="9.7948904" - x2="44.097023" - y2="82.973114" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5084" - id="linearGradient3293" - gradientUnits="userSpaceOnUse" - x1="14.312115" - y1="9.7948904" - x2="44.097023" - y2="82.973114" - gradientTransform="scale(1.2671525,0.89790119)" /> - <linearGradient - inkscape:collect="always" - id="linearGradient5580"> - <stop - style="stop-color:#000000;stop-opacity:0.0627451" - offset="0" - id="stop5576" /> - <stop - style="stop-color:#322217;stop-opacity:0.58823532" - offset="1" - id="stop5578" /> - </linearGradient> - <linearGradient - id="linearGradient3999" - inkscape:collect="always"> - <stop - id="stop3995" - offset="0" - style="stop-color:#a3704b;stop-opacity:1" /> - <stop - id="stop3997" - offset="1" - style="stop-color:#6a4a33;stop-opacity:1" /> - </linearGradient> - <linearGradient - id="linearGradient2727" - inkscape:collect="always"> - <stop - id="stop2723" - offset="0" - style="stop-color:#966c4a;stop-opacity:1" /> - <stop - id="stop2725" - offset="1" - style="stop-color:#593d29;stop-opacity:1" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2727" - id="linearGradient2050" - gradientUnits="userSpaceOnUse" - x1="36.546478" - y1="33.80484" - x2="86.415741" - y2="97.065842" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3999" - id="radialGradient2052" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-9.105292e-4,-0.00104444)" - cx="34.133331" - cy="34.133335" - fx="34.133331" - fy="34.133335" - r="29.866665" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5580" - id="linearGradient2140" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-0.0010513,-9.083059e-4)" - x1="29.866674" - y1="29.867579" - x2="38.400005" - y2="38.400913" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5084" - id="linearGradient4790" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.2671525,0,0,0.89790119,-0.82864077,-1.0012743)" - x1="14.312115" - y1="9.7948904" - x2="44.097023" - y2="82.973114" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4809" - id="radialGradient4803" - cx="-42.66758" - cy="-34.134373" - fx="-42.66758" - fy="-34.134373" - r="34.132812" - gradientTransform="matrix(1.7500268,0.1250019,-0.01781176,0.24936465,95.393964,18.110151)" - gradientUnits="userSpaceOnUse" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="3.6203867" - inkscape:cx="52.171166" - inkscape:cy="11.292073" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:document-units="px" - inkscape:grid-bbox="true" - inkscape:window-width="1368" - inkscape:window-height="905" - inkscape:window-x="2452" - inkscape:window-y="723" - inkscape:window-maximized="0" - inkscape:snap-bbox="true" - inkscape:bbox-paths="false" - inkscape:snap-bbox-edge-midpoints="false" - inkscape:bbox-nodes="true" - inkscape:snap-bbox-midpoints="false" - inkscape:snap-smooth-nodes="true" - inkscape:snap-midpoints="false" - inkscape:snap-intersection-paths="true" - inkscape:object-paths="true" - inkscape:snap-object-midpoints="true" - inkscape:snap-text-baseline="true" - inkscape:snap-center="true"> - <inkscape:grid - type="xygrid" - id="grid4446" - empspacing="16" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" - spacingx="4.2666667" - spacingy="4.2666667" - originx="0" - originy="0" /> - </sodipodi:namedview> - <metadata - id="metadata4432"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="layer1" - inkscape:label="Layer 1" - inkscape:groupmode="layer"> - <g - id="g2048" - transform="translate(9.113e-4,0.00104183)"> - <rect - rx="8.5333338" - ry="8.5333338" - style="fill:url(#linearGradient2050);fill-opacity:1;stroke:none;stroke-width:17.06666756" - id="rect2026" - width="68.26667" - height="68.26667" - x="-1.3322676e-15" - y="3.0270508e-06" /> - <rect - rx="4.2666626" - y="4.2656283" - x="4.2657552" - height="59.733334" - width="59.73333" - id="rect2028" - style="fill:url(#radialGradient2052);fill-opacity:1;stroke:none;stroke-width:14.93333435" - ry="4.2666669" /> - <path - inkscape:connector-curvature="0" - id="path4811" - d="m 4.2669272,4.2645856 -9.11e-4,8.5333334 h 4.267577 v 4.267579 h 8.5332038 v 4.265625 h 4.265625 V 8.5322946 H 25.6 v 8.5332034 h 4.265625 v -4.267579 h 4.267578 v 8.533204 h 4.265625 v -4.265625 h 4.267578 v 4.265625 h 4.267579 v -4.265625 h 4.265624 v -4.267579 h 4.267579 v 4.267579 h 8.533203 l -1.3e-4,-12.8009124 z" - style="opacity:0.6;fill:#593d29;fill-opacity:1;stroke:none;stroke-width:17.06666756" - sodipodi:nodetypes="ccccccccccccccccccccccccccc" /> - <path - style="fill:url(#radialGradient4803);fill-opacity:1;stroke:none;stroke-width:17.06666756" - d="m 8.5329442,-0.0018207 c -4.7274675,0 -8.5332035,3.805736 -8.5332035,8.533203 v 4.2675787 h 4.265625 V 8.5313823 c 0,-0.521698 0.105433,-1.01339 0.27539,-1.47461 -0.169616,0.460814 -0.27539,0.953462 -0.27539,1.47461 h 4.2675785 v 4.2675787 h 4.2656248 4.267578 v 4.265625 h 4.265625 V 12.798961 8.5313823 4.2657573 h 4.267578 v 4.265625 4.2675787 h 4.265625 V 8.5313823 h 4.267578 v 4.2675787 4.265625 h 4.265625 v -4.265625 h 4.267578 v 4.265625 h 4.267579 v -4.265625 h 4.265624 V 8.5313823 h 4.267579 v 4.2675787 h 4.265625 4.267578 V 8.5313823 h 4.265625 c 0,-4.727467 -3.805737,-8.533203 -8.533203,-8.533203 z m -3.019531,5.513671 c -0.318089,0.317888 -0.570428,0.695824 -0.7753915,1.101563 0.2048795,-0.405231 0.4576385,-0.784012 0.7753915,-1.101563 z" - id="path4794" - inkscape:connector-curvature="0" /> - <path - style="opacity:1;fill:url(#linearGradient2140);fill-opacity:1;stroke:none;stroke-width:17.06666756" - d="m 8.5322887,-9.083059e-4 c -4.72747,0 -8.5332,3.8057359059 -8.5332,8.5332029059 V 59.731515 c 0,4.727467 3.80573,8.535156 8.5332,8.535156 H 59.731502 c 4.72747,0 8.5332,-3.807689 8.5332,-8.535156 V 8.5322946 c 0,-4.727467 -3.80573,-8.5332029059 -8.5332,-8.5332029059 z m 0,4.2675779059 H 59.731502 c 2.36373,0 4.26758,1.901892 4.26758,4.265625 V 59.731515 c 0,2.363733 -1.90385,4.267578 -4.26758,4.267578 H 8.5322887 c -2.36373,0 -4.26758,-1.903845 -4.26758,-4.267578 V 8.5322946 c 0,-2.363733 1.90385,-4.265625 4.26758,-4.265625 z" - id="path2046" - inkscape:connector-curvature="0" /> - </g> - <g - id="g1092"> - <path - inkscape:connector-curvature="0" - id="path4786" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:76.18933868px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient4790);fill-opacity:1;stroke:none;stroke-width:1.06666672;opacity:0.5" - d="m 38.886673,44.940882 c -0.974277,-0.801673 -2.231353,-2.137814 -3.771231,-4.008427 -2.105641,2.672298 -4.085536,4.598569 -5.939688,5.778816 -2.325625,1.425227 -5.295467,2.137836 -8.909534,2.137828 -4.242656,8e-6 -7.762467,-1.124578 -10.5594458,-3.37376 C 6.7526311,43.114834 5.275567,39.986037 5.2755773,36.088937 5.275567,32.347763 6.7526311,29.207831 9.7067742,26.669132 12.346618,24.419991 15.897857,23.295407 20.360501,23.295373 c 2.294138,3.4e-5 4.289747,0.334069 5.986829,1.002107 1.979863,0.73491 3.645488,1.737016 4.996881,3.00632 1.257039,1.135751 2.514115,2.471891 3.771231,4.008428 2.105563,-2.672257 4.085457,-4.598527 5.939689,-5.778816 2.325544,-1.425186 5.295385,-2.137794 8.909533,-2.137828 4.242577,3.4e-5 7.762388,1.124618 10.559447,3.37376 2.954063,2.360546 4.431127,5.489343 4.431197,9.386401 -7e-5,3.741216 -1.477134,6.881147 -4.431197,9.419806 -2.639925,2.24918 -6.191163,3.373767 -10.653727,3.373758 -2.294219,9e-6 -4.289826,-0.334026 -5.98683,-1.002106 -1.697101,-0.601255 -3.362726,-1.603361 -4.996881,-3.006321 M 19.747676,44.473233 c 5.185412,1.1e-5 9.333763,-2.672271 12.445062,-8.016856 -3.991253,-5.834464 -8.139602,-8.751705 -12.445062,-8.751733 -3.142715,2.8e-5 -5.515446,0.801713 -7.118198,2.405057 -1.728498,1.71474 -2.592737,3.707818 -2.592722,5.979236 -1.5e-5,2.494152 0.864224,4.509499 2.592722,6.046046 1.759887,1.558846 4.132618,2.338261 7.118198,2.33825 M 50.483209,27.77145 c -4.682663,2.9e-5 -8.831013,2.672312 -12.445062,8.016856 3.959745,5.834503 8.108095,8.751746 12.445062,8.751733 3.142633,1.3e-5 5.515364,-0.801671 7.118198,-2.405056 1.728416,-1.714701 2.592656,-3.707778 2.592722,-5.979238 -6.6e-5,-2.49411 -0.864306,-4.509456 -2.592722,-6.046044 -1.759968,-1.558805 -4.132699,-2.338222 -7.118198,-2.338251" /> - <path - d="m 39.715314,45.942156 c -0.974277,-0.801673 -2.231353,-2.137814 -3.771231,-4.008427 -2.105641,2.672298 -4.085536,4.598569 -5.939688,5.778816 -2.325625,1.425227 -5.295467,2.137836 -8.909534,2.137828 -4.242656,8e-6 -7.762467,-1.124578 -10.559446,-3.37376 -2.9541431,-2.360505 -4.4312072,-5.489302 -4.4311969,-9.386402 -1.03e-5,-3.741174 1.4770538,-6.881106 4.4311969,-9.419805 2.639844,-2.249141 6.191083,-3.373725 10.653727,-3.373759 2.294138,3.4e-5 4.289747,0.334069 5.986829,1.002107 1.979863,0.73491 3.645488,1.737016 4.996881,3.00632 1.257039,1.135751 2.514115,2.471891 3.771231,4.008428 2.105563,-2.672257 4.085457,-4.598527 5.939689,-5.778816 2.325544,-1.425186 5.295385,-2.137794 8.909533,-2.137828 4.242577,3.4e-5 7.762388,1.124618 10.559447,3.37376 2.954063,2.360546 4.431127,5.489343 4.431197,9.386401 -7e-5,3.741216 -1.477134,6.881147 -4.431197,9.419806 -2.639925,2.24918 -6.191163,3.373767 -10.653727,3.373758 -2.294219,9e-6 -4.289826,-0.334026 -5.98683,-1.002106 -1.697101,-0.601255 -3.362726,-1.603361 -4.996881,-3.006321 M 20.576317,45.474507 c 5.185412,1.1e-5 9.333763,-2.672271 12.445062,-8.016856 -3.991253,-5.834464 -8.139602,-8.751705 -12.445062,-8.751733 -3.142715,2.8e-5 -5.515446,0.801713 -7.118198,2.405057 -1.728498,1.71474 -2.592737,3.707818 -2.592722,5.979236 -1.5e-5,2.494152 0.864224,4.509499 2.592722,6.046046 1.759887,1.558846 4.132618,2.338261 7.118198,2.33825 M 51.31185,28.772724 c -4.682663,2.9e-5 -8.831013,2.672312 -12.445062,8.016856 3.959745,5.834503 8.108095,8.751746 12.445062,8.751733 3.142633,1.3e-5 5.515364,-0.801671 7.118198,-2.405056 1.728416,-1.714701 2.592656,-3.707778 2.592722,-5.979238 -6.6e-5,-2.49411 -0.864306,-4.509456 -2.592722,-6.046044 C 56.67008,29.55217 54.297349,28.772753 51.31185,28.772724" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:76.18933868px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient3293);fill-opacity:1;stroke:none;stroke-width:1.06666672;opacity:0.5" - id="path3279" - inkscape:connector-curvature="0" /> - <path - d="m 37.904564,42.951873 c -0.974278,-0.801672 -2.231352,-2.137814 -3.771231,-4.008428 -2.105642,2.672298 -4.085537,4.598568 -5.939688,5.778817 -2.325625,1.425227 -5.295466,2.137836 -8.909534,2.137828 -4.242656,8e-6 -7.762467,-1.124577 -10.5594464,-3.37376 -2.9541428,-2.360505 -4.4312068,-5.489302 -4.4311963,-9.386401 -1.05e-5,-3.741175 1.4770535,-6.881107 4.4311963,-9.419805 2.6398444,-2.249142 6.1910824,-3.373727 10.6537284,-3.37376 2.294137,3.3e-5 4.289745,0.334068 5.986829,1.002107 1.979863,0.734909 3.645487,1.737016 4.99688,3.00632 1.257039,1.13575 2.514116,2.471891 3.771231,4.008428 2.105562,-2.672257 4.085456,-4.598528 5.939689,-5.778817 2.325544,-1.425185 5.295387,-2.137795 8.909534,-2.137828 4.242576,3.3e-5 7.762387,1.12462 10.559446,3.373761 2.954062,2.360545 4.431127,5.489343 4.431197,9.386401 -7e-5,3.741216 -1.477135,6.881148 -4.431197,9.419805 -2.639924,2.249182 -6.191164,3.373767 -10.653728,3.37376 -2.294217,7e-6 -4.289826,-0.334028 -5.986828,-1.002107 -1.697101,-0.601254 -3.362727,-1.603361 -4.996882,-3.006321 m -19.138997,-0.46765 c 5.185412,1.3e-5 9.333762,-2.67227 12.445062,-8.016856 -3.991252,-5.834462 -8.139602,-8.751704 -12.445062,-8.751733 -3.142714,2.9e-5 -5.515444,0.801714 -7.118198,2.405056 -1.7284972,1.714743 -2.5927368,3.707819 -2.5927216,5.979239 -1.52e-5,2.49415 0.8642244,4.509496 2.5927216,6.046045 1.759888,1.558845 4.132618,2.338262 7.118198,2.338249 M 49.5011,25.782442 c -4.682663,2.8e-5 -8.831014,2.672311 -12.445063,8.016855 3.959745,5.834504 8.108096,8.751745 12.445063,8.751733 3.142634,1.2e-5 5.515365,-0.801673 7.118198,-2.405056 1.728417,-1.7147 2.592657,-3.707778 2.592721,-5.979238 -6.4e-5,-2.49411 -0.864304,-4.509456 -2.592721,-6.046046 C 54.85933,26.561886 52.486599,25.78247 49.5011,25.782442" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:76.18933868px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient3286);fill-opacity:1;stroke:none;stroke-width:1.06666672" - id="path3272" - inkscape:connector-curvature="0" /> - <path - sodipodi:nodetypes="ccscsccccccccccccccccccccscscccccsccscccccc" - inkscape:connector-curvature="0" - id="text5100" - d="m 19.4,21.166667 c -4.462644,3.3e-5 -8.026822,1.150858 -10.6666667,3.4 -2.9541428,2.538698 -4.4333436,5.658825 -4.4333333,9.4 -1.03e-5,3.897098 1.4791905,7.039495 4.4333333,9.4 -1.622701,-2.044271 -2.433341,-4.51168 -2.4333333,-7.4 -1.03e-5,-3.741175 1.4791905,-6.861302 4.433333,-9.4 2.639845,-2.249142 6.204023,-3.399967 10.666667,-3.4 2.294138,3.3e-5 4.302916,0.365295 6,1.033333 1.979862,0.73491 3.615274,1.730695 4.966667,3 0.06836,0.06177 0.131637,0.137049 0.2,0.2 -0.731813,-0.797005 -1.468213,-1.538822 -2.2,-2.2 -1.351393,-1.269305 -2.986805,-2.26509 -4.966667,-3 -1.697084,-0.668038 -3.705862,-1.0333 -6,-1.033333 z m 29.6,0.1 c -3.614148,3.3e-5 -6.574457,0.74148 -8.9,2.166666 -1.818222,1.157367 -3.923451,3.291388 -5.983333,5.883334 0.618278,0.658774 1.248369,1.377605 1.866666,2.133333 2.105562,-2.672257 4.262434,-4.836378 6.116667,-6.016667 2.325543,-1.425186 5.285852,-2.166633 8.9,-2.166666 4.242576,3.3e-5 7.769607,1.150858 10.566667,3.4 -0.570388,-0.722129 -1.227721,-1.382884 -2,-2 C 56.769607,22.417525 53.242576,21.2667 49,21.266667 Z m 8.866667,8.1 c 0.9092,1.305235 1.366619,2.857751 1.366666,4.666666 -6.5e-5,2.271461 -0.871584,4.285301 -2.6,6 -1.602834,1.603384 -3.957366,2.400012 -7.1,2.4 -2.653707,8e-6 -5.320858,-1.032242 -7.833333,-3.216666 3.136636,3.509305 6.469807,5.216676 9.833333,5.216666 3.142634,1.2e-5 5.497166,-0.796616 7.1,-2.4 1.728416,-1.714699 2.599935,-3.728539 2.6,-6 -6.5e-5,-2.49411 -0.871584,-4.496744 -2.6,-6.033333 -0.24943,-0.220921 -0.49262,-0.443723 -0.766666,-0.633333 z m -26.633334,4.966666 c -3.1113,5.344585 -7.247921,8.033345 -12.433333,8.033334 -2.58055,1e-5 -4.543473,-0.352086 -6.208333,-1.516667 0.348871,0.50642 0.590094,0.752276 1.075,1.183333 1.759888,1.558846 4.147753,2.333345 7.133333,2.333334 5.185412,1.1e-5 9.322033,-2.688749 12.433333,-8.033334 z m 4.933334,6.5 c -0.04103,0.05207 -0.09239,0.08182 -0.133334,0.133334 0.687326,0.744419 1.306949,1.359747 1.833334,1.8 -0.529404,-0.580895 -1.078447,-1.178283 -1.7,-1.933334 z" - style="font-style:normal;font-weight:normal;font-size:76.18933868px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;opacity:0.3;fill:#ccff00;fill-opacity:1;stroke:none;stroke-width:1.06666672" /> - <path - sodipodi:nodetypes="ccsccscccccccccccccccccccscscccccsccsccccccc" - id="text5058-0" - d="m 19.730474,21.54714 c -4.462645,3.3e-5 -8.026823,1.150859 -10.6666669,3.4 -2.9541429,2.538699 -4.433344,5.658826 -4.4333333,9.4 -1.07e-5,3.897099 1.4791904,7.039495 4.4333333,9.4 0.042837,0.03444 0.090155,0.06608 0.1333334,0.1 -2.2392086,-2.228193 -3.3666752,-5.040417 -3.3666667,-8.433333 -1.07e-5,-3.741174 1.4791904,-6.861301 4.4333332,-9.4 2.639844,-2.249141 6.204022,-3.399967 10.666667,-3.4 2.294137,3.3e-5 4.302916,0.365295 6,1.033333 1.870874,0.694455 3.42364,1.628367 4.733333,2.8 -0.314265,-0.308986 -0.652406,-0.582729 -0.966667,-0.866666 -1.351393,-1.269305 -2.986804,-2.265091 -4.966666,-3 -1.697084,-0.668039 -3.705863,-1.033301 -6,-1.033334 z m 29.6,0.1 c -3.614149,3.3e-5 -6.574457,0.741481 -8.9,2.166667 -1.813279,1.154221 -3.963039,3.235656 -6.016667,5.816667 0.355649,0.402628 0.711011,0.798625 1.066667,1.233333 2.105561,-2.672257 4.295767,-4.803044 6.15,-5.983333 2.325543,-1.425187 5.285851,-2.166634 8.9,-2.166667 4.22442,3.3e-5 7.742084,1.136734 10.533333,3.366667 -0.36096,-0.367566 -0.745726,-0.696967 -1.166667,-1.033334 -2.797059,-2.249141 -6.32409,-3.399967 -10.566666,-3.4 z m 8.233333,7.333334 c 1.323326,1.449243 1.999942,3.250987 2,5.433333 -6.5e-5,2.27146 -0.871584,4.2853 -2.6,6 -1.602834,1.603383 -3.957366,2.400012 -7.1,2.4 -2.406328,6e-6 -4.776468,-0.90386 -7.066667,-2.7 2.669147,2.483838 5.436929,3.766674 8.266667,3.766667 3.142634,1.1e-5 5.497166,-0.796617 7.1,-2.4 1.728416,-1.7147 2.599935,-3.72854 2.6,-6 -6.5e-5,-2.49411 -0.871584,-4.496745 -2.6,-6.033334 -0.185641,-0.164422 -0.400724,-0.319587 -0.6,-0.466666 z m -26,5.733333 c -3.1113,5.344584 -7.247921,8.033345 -12.433333,8.033333 -2.612382,1.1e-5 -4.759372,-0.60651 -6.433334,-1.8 0.166027,0.176488 0.313947,0.367942 0.5,0.533334 1.759888,1.558845 4.147754,2.333345 7.133334,2.333333 5.185412,1.2e-5 9.322033,-2.688749 12.433333,-8.033333 z m 4.133333,5.566667 c -0.04657,0.05909 -0.08689,0.108298 -0.133333,0.166666 1.038571,1.18897 1.9748,2.169945 2.7,2.766667 0.06249,0.05364 0.137426,0.08086 0.2,0.133333 -0.792178,-0.781249 -1.706288,-1.778539 -2.766667,-3.066666 z" - style="font-style:normal;font-weight:normal;font-size:76.18933868px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;opacity:0.6;fill:#ccff00;fill-opacity:1;stroke:none;stroke-width:1.06666672" - inkscape:connector-curvature="0" /> - </g> - </g> -</svg> diff --git a/application/resources/multimc/scalable/multimc.svg b/application/resources/multimc/scalable/multimc.svg deleted file mode 100644 index 8bb0e289..00000000 --- a/application/resources/multimc/scalable/multimc.svg +++ /dev/null @@ -1,353 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="68.26667" - height="68.26667" - id="svg4427" - version="1.1" - inkscape:version="0.92.1 r" - sodipodi:docname="multimc-smooth-biginfinity.svg" - inkscape:export-filename="/home/peterix/playground/MultiMC-icons/multimc-smooth-biginfinity.png" - inkscape:export-xdpi="180" - inkscape:export-ydpi="180"> - <defs - id="defs4429"> - <linearGradient - inkscape:collect="always" - id="linearGradient4809"> - <stop - style="stop-color:#98c867;stop-opacity:1" - offset="0" - id="stop4805" /> - <stop - style="stop-color:#5c9a33;stop-opacity:1" - offset="1" - id="stop4807" /> - </linearGradient> - <linearGradient - id="linearGradient5668" - inkscape:collect="always"> - <stop - id="stop5670" - offset="0" - style="stop-color:#75b54b;stop-opacity:1;" /> - <stop - id="stop5672" - offset="1" - style="stop-color:#75b54b;stop-opacity:0.6" /> - </linearGradient> - <linearGradient - id="linearGradient5084" - inkscape:collect="always"> - <stop - id="stop5086" - offset="0" - style="stop-color:#000000;stop-opacity:0.8" /> - <stop - id="stop5088" - offset="1" - style="stop-color:#000000;stop-opacity:0.35" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5668" - id="linearGradient5072" - x1="6.7342591" - y1="28.510933" - x2="50.506943" - y2="61.773685" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-0.01532073,-0.00938002)" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5084" - id="linearGradient5082" - x1="14.312115" - y1="9.7948904" - x2="44.097023" - y2="82.973114" - gradientUnits="userSpaceOnUse" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5668" - id="linearGradient3281" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-0.01532073,-0.00938002)" - x1="6.7342591" - y1="28.510933" - x2="50.506943" - y2="61.773685" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5668" - id="linearGradient3283" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-0.01532073,-0.00938002)" - x1="6.7342591" - y1="28.510933" - x2="50.506943" - y2="61.773685" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5668" - id="linearGradient3286" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.2671525,0,0,0.89790119,-0.01941371,-0.00842234)" - x1="6.7342591" - y1="28.510933" - x2="50.506943" - y2="61.773685" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5084" - id="linearGradient3288" - gradientUnits="userSpaceOnUse" - x1="14.312115" - y1="9.7948904" - x2="44.097023" - y2="82.973114" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5084" - id="linearGradient3290" - gradientUnits="userSpaceOnUse" - x1="14.312115" - y1="9.7948904" - x2="44.097023" - y2="82.973114" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5084" - id="linearGradient3293" - gradientUnits="userSpaceOnUse" - x1="14.312115" - y1="9.7948904" - x2="44.097023" - y2="82.973114" - gradientTransform="scale(1.2671525,0.89790119)" /> - <linearGradient - inkscape:collect="always" - id="linearGradient5580"> - <stop - style="stop-color:#000000;stop-opacity:0.0627451" - offset="0" - id="stop5576" /> - <stop - style="stop-color:#322217;stop-opacity:0.58823532" - offset="1" - id="stop5578" /> - </linearGradient> - <linearGradient - id="linearGradient3999" - inkscape:collect="always"> - <stop - id="stop3995" - offset="0" - style="stop-color:#a3704b;stop-opacity:1" /> - <stop - id="stop3997" - offset="1" - style="stop-color:#6a4a33;stop-opacity:1" /> - </linearGradient> - <linearGradient - id="linearGradient2727" - inkscape:collect="always"> - <stop - id="stop2723" - offset="0" - style="stop-color:#966c4a;stop-opacity:1" /> - <stop - id="stop2725" - offset="1" - style="stop-color:#593d29;stop-opacity:1" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2727" - id="linearGradient2050" - gradientUnits="userSpaceOnUse" - x1="36.546478" - y1="33.80484" - x2="86.415741" - y2="97.065842" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3999" - id="radialGradient2052" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-9.105292e-4,-0.00104444)" - cx="34.133331" - cy="34.133335" - fx="34.133331" - fy="34.133335" - r="29.866665" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5580" - id="linearGradient2140" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-0.0010513,-9.083059e-4)" - x1="29.866674" - y1="29.867579" - x2="38.400005" - y2="38.400913" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5084" - id="linearGradient4790" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.2671525,0,0,0.89790119,-0.82864077,-1.0012743)" - x1="14.312115" - y1="9.7948904" - x2="44.097023" - y2="82.973114" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4809" - id="radialGradient4803" - cx="-42.66758" - cy="-34.134373" - fx="-42.66758" - fy="-34.134373" - r="34.132812" - gradientTransform="matrix(1.7500268,0.1250019,-0.01781176,0.24936465,95.393964,18.110151)" - gradientUnits="userSpaceOnUse" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="3.6203867" - inkscape:cx="52.171166" - inkscape:cy="11.292073" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:document-units="px" - inkscape:grid-bbox="true" - inkscape:window-width="1368" - inkscape:window-height="905" - inkscape:window-x="2452" - inkscape:window-y="723" - inkscape:window-maximized="0" - inkscape:snap-bbox="true" - inkscape:bbox-paths="false" - inkscape:snap-bbox-edge-midpoints="false" - inkscape:bbox-nodes="true" - inkscape:snap-bbox-midpoints="false" - inkscape:snap-smooth-nodes="true" - inkscape:snap-midpoints="false" - inkscape:snap-intersection-paths="true" - inkscape:object-paths="true" - inkscape:snap-object-midpoints="true" - inkscape:snap-text-baseline="true" - inkscape:snap-center="true"> - <inkscape:grid - type="xygrid" - id="grid4446" - empspacing="16" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" - spacingx="4.2666667" - spacingy="4.2666667" - originx="0" - originy="0" /> - </sodipodi:namedview> - <metadata - id="metadata4432"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="layer1" - inkscape:label="Layer 1" - inkscape:groupmode="layer"> - <g - id="g2048" - transform="translate(9.113e-4,0.00104183)"> - <rect - rx="8.5333338" - ry="8.5333338" - style="fill:url(#linearGradient2050);fill-opacity:1;stroke:none;stroke-width:17.06666756" - id="rect2026" - width="68.26667" - height="68.26667" - x="-1.3322676e-15" - y="3.0270508e-06" /> - <rect - rx="4.2666626" - y="4.2656283" - x="4.2657552" - height="59.733334" - width="59.73333" - id="rect2028" - style="fill:url(#radialGradient2052);fill-opacity:1;stroke:none;stroke-width:14.93333435" - ry="4.2666669" /> - <path - inkscape:connector-curvature="0" - id="path4811" - d="m 4.2669272,4.2645856 -9.11e-4,8.5333334 h 4.267577 v 4.267579 h 8.5332038 v 4.265625 h 4.265625 V 8.5322946 H 25.6 v 8.5332034 h 4.265625 v -4.267579 h 4.267578 v 8.533204 h 4.265625 v -4.265625 h 4.267578 v 4.265625 h 4.267579 v -4.265625 h 4.265624 v -4.267579 h 4.267579 v 4.267579 h 8.533203 l -1.3e-4,-12.8009124 z" - style="opacity:0.6;fill:#593d29;fill-opacity:1;stroke:none;stroke-width:17.06666756" - sodipodi:nodetypes="ccccccccccccccccccccccccccc" /> - <path - style="fill:url(#radialGradient4803);fill-opacity:1;stroke:none;stroke-width:17.06666756" - d="m 8.5329442,-0.0018207 c -4.7274675,0 -8.5332035,3.805736 -8.5332035,8.533203 v 4.2675787 h 4.265625 V 8.5313823 c 0,-0.521698 0.105433,-1.01339 0.27539,-1.47461 -0.169616,0.460814 -0.27539,0.953462 -0.27539,1.47461 h 4.2675785 v 4.2675787 h 4.2656248 4.267578 v 4.265625 h 4.265625 V 12.798961 8.5313823 4.2657573 h 4.267578 v 4.265625 4.2675787 h 4.265625 V 8.5313823 h 4.267578 v 4.2675787 4.265625 h 4.265625 v -4.265625 h 4.267578 v 4.265625 h 4.267579 v -4.265625 h 4.265624 V 8.5313823 h 4.267579 v 4.2675787 h 4.265625 4.267578 V 8.5313823 h 4.265625 c 0,-4.727467 -3.805737,-8.533203 -8.533203,-8.533203 z m -3.019531,5.513671 c -0.318089,0.317888 -0.570428,0.695824 -0.7753915,1.101563 0.2048795,-0.405231 0.4576385,-0.784012 0.7753915,-1.101563 z" - id="path4794" - inkscape:connector-curvature="0" /> - <path - style="opacity:1;fill:url(#linearGradient2140);fill-opacity:1;stroke:none;stroke-width:17.06666756" - d="m 8.5322887,-9.083059e-4 c -4.72747,0 -8.5332,3.8057359059 -8.5332,8.5332029059 V 59.731515 c 0,4.727467 3.80573,8.535156 8.5332,8.535156 H 59.731502 c 4.72747,0 8.5332,-3.807689 8.5332,-8.535156 V 8.5322946 c 0,-4.727467 -3.80573,-8.5332029059 -8.5332,-8.5332029059 z m 0,4.2675779059 H 59.731502 c 2.36373,0 4.26758,1.901892 4.26758,4.265625 V 59.731515 c 0,2.363733 -1.90385,4.267578 -4.26758,4.267578 H 8.5322887 c -2.36373,0 -4.26758,-1.903845 -4.26758,-4.267578 V 8.5322946 c 0,-2.363733 1.90385,-4.265625 4.26758,-4.265625 z" - id="path2046" - inkscape:connector-curvature="0" /> - </g> - <g - id="g1092"> - <path - inkscape:connector-curvature="0" - id="path4786" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:76.18933868px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient4790);fill-opacity:1;stroke:none;stroke-width:1.06666672;opacity:0.5" - d="m 38.886673,44.940882 c -0.974277,-0.801673 -2.231353,-2.137814 -3.771231,-4.008427 -2.105641,2.672298 -4.085536,4.598569 -5.939688,5.778816 -2.325625,1.425227 -5.295467,2.137836 -8.909534,2.137828 -4.242656,8e-6 -7.762467,-1.124578 -10.5594458,-3.37376 C 6.7526311,43.114834 5.275567,39.986037 5.2755773,36.088937 5.275567,32.347763 6.7526311,29.207831 9.7067742,26.669132 12.346618,24.419991 15.897857,23.295407 20.360501,23.295373 c 2.294138,3.4e-5 4.289747,0.334069 5.986829,1.002107 1.979863,0.73491 3.645488,1.737016 4.996881,3.00632 1.257039,1.135751 2.514115,2.471891 3.771231,4.008428 2.105563,-2.672257 4.085457,-4.598527 5.939689,-5.778816 2.325544,-1.425186 5.295385,-2.137794 8.909533,-2.137828 4.242577,3.4e-5 7.762388,1.124618 10.559447,3.37376 2.954063,2.360546 4.431127,5.489343 4.431197,9.386401 -7e-5,3.741216 -1.477134,6.881147 -4.431197,9.419806 -2.639925,2.24918 -6.191163,3.373767 -10.653727,3.373758 -2.294219,9e-6 -4.289826,-0.334026 -5.98683,-1.002106 -1.697101,-0.601255 -3.362726,-1.603361 -4.996881,-3.006321 M 19.747676,44.473233 c 5.185412,1.1e-5 9.333763,-2.672271 12.445062,-8.016856 -3.991253,-5.834464 -8.139602,-8.751705 -12.445062,-8.751733 -3.142715,2.8e-5 -5.515446,0.801713 -7.118198,2.405057 -1.728498,1.71474 -2.592737,3.707818 -2.592722,5.979236 -1.5e-5,2.494152 0.864224,4.509499 2.592722,6.046046 1.759887,1.558846 4.132618,2.338261 7.118198,2.33825 M 50.483209,27.77145 c -4.682663,2.9e-5 -8.831013,2.672312 -12.445062,8.016856 3.959745,5.834503 8.108095,8.751746 12.445062,8.751733 3.142633,1.3e-5 5.515364,-0.801671 7.118198,-2.405056 1.728416,-1.714701 2.592656,-3.707778 2.592722,-5.979238 -6.6e-5,-2.49411 -0.864306,-4.509456 -2.592722,-6.046044 -1.759968,-1.558805 -4.132699,-2.338222 -7.118198,-2.338251" /> - <path - d="m 39.715314,45.942156 c -0.974277,-0.801673 -2.231353,-2.137814 -3.771231,-4.008427 -2.105641,2.672298 -4.085536,4.598569 -5.939688,5.778816 -2.325625,1.425227 -5.295467,2.137836 -8.909534,2.137828 -4.242656,8e-6 -7.762467,-1.124578 -10.559446,-3.37376 -2.9541431,-2.360505 -4.4312072,-5.489302 -4.4311969,-9.386402 -1.03e-5,-3.741174 1.4770538,-6.881106 4.4311969,-9.419805 2.639844,-2.249141 6.191083,-3.373725 10.653727,-3.373759 2.294138,3.4e-5 4.289747,0.334069 5.986829,1.002107 1.979863,0.73491 3.645488,1.737016 4.996881,3.00632 1.257039,1.135751 2.514115,2.471891 3.771231,4.008428 2.105563,-2.672257 4.085457,-4.598527 5.939689,-5.778816 2.325544,-1.425186 5.295385,-2.137794 8.909533,-2.137828 4.242577,3.4e-5 7.762388,1.124618 10.559447,3.37376 2.954063,2.360546 4.431127,5.489343 4.431197,9.386401 -7e-5,3.741216 -1.477134,6.881147 -4.431197,9.419806 -2.639925,2.24918 -6.191163,3.373767 -10.653727,3.373758 -2.294219,9e-6 -4.289826,-0.334026 -5.98683,-1.002106 -1.697101,-0.601255 -3.362726,-1.603361 -4.996881,-3.006321 M 20.576317,45.474507 c 5.185412,1.1e-5 9.333763,-2.672271 12.445062,-8.016856 -3.991253,-5.834464 -8.139602,-8.751705 -12.445062,-8.751733 -3.142715,2.8e-5 -5.515446,0.801713 -7.118198,2.405057 -1.728498,1.71474 -2.592737,3.707818 -2.592722,5.979236 -1.5e-5,2.494152 0.864224,4.509499 2.592722,6.046046 1.759887,1.558846 4.132618,2.338261 7.118198,2.33825 M 51.31185,28.772724 c -4.682663,2.9e-5 -8.831013,2.672312 -12.445062,8.016856 3.959745,5.834503 8.108095,8.751746 12.445062,8.751733 3.142633,1.3e-5 5.515364,-0.801671 7.118198,-2.405056 1.728416,-1.714701 2.592656,-3.707778 2.592722,-5.979238 -6.6e-5,-2.49411 -0.864306,-4.509456 -2.592722,-6.046044 C 56.67008,29.55217 54.297349,28.772753 51.31185,28.772724" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:76.18933868px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient3293);fill-opacity:1;stroke:none;stroke-width:1.06666672;opacity:0.5" - id="path3279" - inkscape:connector-curvature="0" /> - <path - d="m 37.904564,42.951873 c -0.974278,-0.801672 -2.231352,-2.137814 -3.771231,-4.008428 -2.105642,2.672298 -4.085537,4.598568 -5.939688,5.778817 -2.325625,1.425227 -5.295466,2.137836 -8.909534,2.137828 -4.242656,8e-6 -7.762467,-1.124577 -10.5594464,-3.37376 -2.9541428,-2.360505 -4.4312068,-5.489302 -4.4311963,-9.386401 -1.05e-5,-3.741175 1.4770535,-6.881107 4.4311963,-9.419805 2.6398444,-2.249142 6.1910824,-3.373727 10.6537284,-3.37376 2.294137,3.3e-5 4.289745,0.334068 5.986829,1.002107 1.979863,0.734909 3.645487,1.737016 4.99688,3.00632 1.257039,1.13575 2.514116,2.471891 3.771231,4.008428 2.105562,-2.672257 4.085456,-4.598528 5.939689,-5.778817 2.325544,-1.425185 5.295387,-2.137795 8.909534,-2.137828 4.242576,3.3e-5 7.762387,1.12462 10.559446,3.373761 2.954062,2.360545 4.431127,5.489343 4.431197,9.386401 -7e-5,3.741216 -1.477135,6.881148 -4.431197,9.419805 -2.639924,2.249182 -6.191164,3.373767 -10.653728,3.37376 -2.294217,7e-6 -4.289826,-0.334028 -5.986828,-1.002107 -1.697101,-0.601254 -3.362727,-1.603361 -4.996882,-3.006321 m -19.138997,-0.46765 c 5.185412,1.3e-5 9.333762,-2.67227 12.445062,-8.016856 -3.991252,-5.834462 -8.139602,-8.751704 -12.445062,-8.751733 -3.142714,2.9e-5 -5.515444,0.801714 -7.118198,2.405056 -1.7284972,1.714743 -2.5927368,3.707819 -2.5927216,5.979239 -1.52e-5,2.49415 0.8642244,4.509496 2.5927216,6.046045 1.759888,1.558845 4.132618,2.338262 7.118198,2.338249 M 49.5011,25.782442 c -4.682663,2.8e-5 -8.831014,2.672311 -12.445063,8.016855 3.959745,5.834504 8.108096,8.751745 12.445063,8.751733 3.142634,1.2e-5 5.515365,-0.801673 7.118198,-2.405056 1.728417,-1.7147 2.592657,-3.707778 2.592721,-5.979238 -6.4e-5,-2.49411 -0.864304,-4.509456 -2.592721,-6.046046 C 54.85933,26.561886 52.486599,25.78247 49.5011,25.782442" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:76.18933868px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient3286);fill-opacity:1;stroke:none;stroke-width:1.06666672" - id="path3272" - inkscape:connector-curvature="0" /> - <path - sodipodi:nodetypes="ccscsccccccccccccccccccccscscccccsccscccccc" - inkscape:connector-curvature="0" - id="text5100" - d="m 19.4,21.166667 c -4.462644,3.3e-5 -8.026822,1.150858 -10.6666667,3.4 -2.9541428,2.538698 -4.4333436,5.658825 -4.4333333,9.4 -1.03e-5,3.897098 1.4791905,7.039495 4.4333333,9.4 -1.622701,-2.044271 -2.433341,-4.51168 -2.4333333,-7.4 -1.03e-5,-3.741175 1.4791905,-6.861302 4.433333,-9.4 2.639845,-2.249142 6.204023,-3.399967 10.666667,-3.4 2.294138,3.3e-5 4.302916,0.365295 6,1.033333 1.979862,0.73491 3.615274,1.730695 4.966667,3 0.06836,0.06177 0.131637,0.137049 0.2,0.2 -0.731813,-0.797005 -1.468213,-1.538822 -2.2,-2.2 -1.351393,-1.269305 -2.986805,-2.26509 -4.966667,-3 -1.697084,-0.668038 -3.705862,-1.0333 -6,-1.033333 z m 29.6,0.1 c -3.614148,3.3e-5 -6.574457,0.74148 -8.9,2.166666 -1.818222,1.157367 -3.923451,3.291388 -5.983333,5.883334 0.618278,0.658774 1.248369,1.377605 1.866666,2.133333 2.105562,-2.672257 4.262434,-4.836378 6.116667,-6.016667 2.325543,-1.425186 5.285852,-2.166633 8.9,-2.166666 4.242576,3.3e-5 7.769607,1.150858 10.566667,3.4 -0.570388,-0.722129 -1.227721,-1.382884 -2,-2 C 56.769607,22.417525 53.242576,21.2667 49,21.266667 Z m 8.866667,8.1 c 0.9092,1.305235 1.366619,2.857751 1.366666,4.666666 -6.5e-5,2.271461 -0.871584,4.285301 -2.6,6 -1.602834,1.603384 -3.957366,2.400012 -7.1,2.4 -2.653707,8e-6 -5.320858,-1.032242 -7.833333,-3.216666 3.136636,3.509305 6.469807,5.216676 9.833333,5.216666 3.142634,1.2e-5 5.497166,-0.796616 7.1,-2.4 1.728416,-1.714699 2.599935,-3.728539 2.6,-6 -6.5e-5,-2.49411 -0.871584,-4.496744 -2.6,-6.033333 -0.24943,-0.220921 -0.49262,-0.443723 -0.766666,-0.633333 z m -26.633334,4.966666 c -3.1113,5.344585 -7.247921,8.033345 -12.433333,8.033334 -2.58055,1e-5 -4.543473,-0.352086 -6.208333,-1.516667 0.348871,0.50642 0.590094,0.752276 1.075,1.183333 1.759888,1.558846 4.147753,2.333345 7.133333,2.333334 5.185412,1.1e-5 9.322033,-2.688749 12.433333,-8.033334 z m 4.933334,6.5 c -0.04103,0.05207 -0.09239,0.08182 -0.133334,0.133334 0.687326,0.744419 1.306949,1.359747 1.833334,1.8 -0.529404,-0.580895 -1.078447,-1.178283 -1.7,-1.933334 z" - style="font-style:normal;font-weight:normal;font-size:76.18933868px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;opacity:0.3;fill:#ccff00;fill-opacity:1;stroke:none;stroke-width:1.06666672" /> - <path - sodipodi:nodetypes="ccsccscccccccccccccccccccscscccccsccsccccccc" - id="text5058-0" - d="m 19.730474,21.54714 c -4.462645,3.3e-5 -8.026823,1.150859 -10.6666669,3.4 -2.9541429,2.538699 -4.433344,5.658826 -4.4333333,9.4 -1.07e-5,3.897099 1.4791904,7.039495 4.4333333,9.4 0.042837,0.03444 0.090155,0.06608 0.1333334,0.1 -2.2392086,-2.228193 -3.3666752,-5.040417 -3.3666667,-8.433333 -1.07e-5,-3.741174 1.4791904,-6.861301 4.4333332,-9.4 2.639844,-2.249141 6.204022,-3.399967 10.666667,-3.4 2.294137,3.3e-5 4.302916,0.365295 6,1.033333 1.870874,0.694455 3.42364,1.628367 4.733333,2.8 -0.314265,-0.308986 -0.652406,-0.582729 -0.966667,-0.866666 -1.351393,-1.269305 -2.986804,-2.265091 -4.966666,-3 -1.697084,-0.668039 -3.705863,-1.033301 -6,-1.033334 z m 29.6,0.1 c -3.614149,3.3e-5 -6.574457,0.741481 -8.9,2.166667 -1.813279,1.154221 -3.963039,3.235656 -6.016667,5.816667 0.355649,0.402628 0.711011,0.798625 1.066667,1.233333 2.105561,-2.672257 4.295767,-4.803044 6.15,-5.983333 2.325543,-1.425187 5.285851,-2.166634 8.9,-2.166667 4.22442,3.3e-5 7.742084,1.136734 10.533333,3.366667 -0.36096,-0.367566 -0.745726,-0.696967 -1.166667,-1.033334 -2.797059,-2.249141 -6.32409,-3.399967 -10.566666,-3.4 z m 8.233333,7.333334 c 1.323326,1.449243 1.999942,3.250987 2,5.433333 -6.5e-5,2.27146 -0.871584,4.2853 -2.6,6 -1.602834,1.603383 -3.957366,2.400012 -7.1,2.4 -2.406328,6e-6 -4.776468,-0.90386 -7.066667,-2.7 2.669147,2.483838 5.436929,3.766674 8.266667,3.766667 3.142634,1.1e-5 5.497166,-0.796617 7.1,-2.4 1.728416,-1.7147 2.599935,-3.72854 2.6,-6 -6.5e-5,-2.49411 -0.871584,-4.496745 -2.6,-6.033334 -0.185641,-0.164422 -0.400724,-0.319587 -0.6,-0.466666 z m -26,5.733333 c -3.1113,5.344584 -7.247921,8.033345 -12.433333,8.033333 -2.612382,1.1e-5 -4.759372,-0.60651 -6.433334,-1.8 0.166027,0.176488 0.313947,0.367942 0.5,0.533334 1.759888,1.558845 4.147754,2.333345 7.133334,2.333333 5.185412,1.2e-5 9.322033,-2.688749 12.433333,-8.033333 z m 4.133333,5.566667 c -0.04657,0.05909 -0.08689,0.108298 -0.133333,0.166666 1.038571,1.18897 1.9748,2.169945 2.7,2.766667 0.06249,0.05364 0.137426,0.08086 0.2,0.133333 -0.792178,-0.781249 -1.706288,-1.778539 -2.766667,-3.066666 z" - style="font-style:normal;font-weight:normal;font-size:76.18933868px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;opacity:0.6;fill:#ccff00;fill-opacity:1;stroke:none;stroke-width:1.06666672" - inkscape:connector-curvature="0" /> - </g> - </g> -</svg> diff --git a/application/resources/multimc/scalable/new.svg b/application/resources/multimc/scalable/new.svg deleted file mode 100644 index c9cff358..00000000 --- a/application/resources/multimc/scalable/new.svg +++ /dev/null @@ -1,127 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --><svg height="48" id="svg249" inkscape:export-filename="/home/luca/Desktop/flare-16.png" inkscape:export-xdpi="30" inkscape:export-ydpi="30" inkscape:output_extension="org.inkscape.output.svg.inkscape" inkscape:version="0.45+0.46pre0" sodipodi:docbase="/home/dobey/Projects/gnome-icon-theme/scalable/actions" sodipodi:docname="document-new.svg" sodipodi:version="0.32" version="1.0" width="48" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <metadata> - <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> - <cc:Work rdf:about=""> - <dc:title>New Document</dc:title> - <dc:description></dc:description> - <dc:subject> - <rdf:Bag> - <rdf:li>regular</rdf:li> - <rdf:li>plaintext</rdf:li> - <rdf:li>text</rdf:li> - <rdf:li>document</rdf:li> - </rdf:Bag> - </dc:subject> - <dc:publisher> - <cc:Agent rdf:about="http://www.openclipart.org/"> - <dc:title>Source: GNOME Icon Theme, Source: GNOME Icon Theme, Source: GNOME Icon Theme, Source: GNOME Icon Theme, Source: GNOME Icon Theme</dc:title> - </cc:Agent> - </dc:publisher> - <dc:creator> - <cc:Agent> - <dc:title>Jakub Steiner</dc:title> - </cc:Agent> - </dc:creator> - <dc:rights> - <cc:Agent> - <dc:title>Jakub Steiner</dc:title> - </cc:Agent> - </dc:rights> - <dc:date></dc:date> - <dc:format>image/svg+xml</dc:format> - <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> - <cc:license rdf:resource="http://creativecommons.org/licenses/GPL/2.0/"/> - <dc:language>en</dc:language> - </cc:Work> - </rdf:RDF> - </metadata> - <defs id="defs3"> - <linearGradient id="linearGradient3656" inkscape:collect="always"> - <stop id="stop3658" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/> - <stop id="stop3660" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/> - </linearGradient> - <linearGradient gradientUnits="userSpaceOnUse" id="linearGradient4253" inkscape:collect="always" x1="-26.753757" x2="-24.75" xlink:href="#linearGradient3656" y1="11.566258" y2="9.687501"/> - <linearGradient id="linearGradient3520" inkscape:collect="always"> - <stop id="stop3522" offset="0" style="stop-color:#000000;stop-opacity:0.41295547"/> - <stop id="stop3524" offset="1" style="stop-color:#000000;stop-opacity:0;"/> - </linearGradient> - <linearGradient gradientTransform="matrix(0.9223058,0,0,0.9185751,-92.447368,1.3256997)" gradientUnits="userSpaceOnUse" id="linearGradient4273" inkscape:collect="always" x1="-18.588562" x2="-28.789402" xlink:href="#linearGradient3520" y1="11.052948" y2="14.069944"/> - <linearGradient id="linearGradient3671"> - <stop id="stop3673" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/> - <stop id="stop3691" offset="0.47533694" style="stop-color:#ffffff;stop-opacity:1;"/> - <stop id="stop3675" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/> - </linearGradient> - <radialGradient cx="-26.305403" cy="10.108011" fx="-26.305403" fy="10.108011" gradientTransform="matrix(0.4073362,-0.2798276,0.7510293,1.0932492,-115.18484,-8.4378699)" gradientUnits="userSpaceOnUse" id="radialGradient4276" inkscape:collect="always" r="7.0421038" xlink:href="#linearGradient3671"/> - <linearGradient id="linearGradient3741" inkscape:collect="always"> - <stop id="stop3743" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/> - <stop id="stop3745" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/> - </linearGradient> - <radialGradient cx="4" cy="5.2999997" fx="4" fy="5.2999997" gradientTransform="matrix(1.8860258,0,0,1.1764706,-3.5441033,-4.2352941)" gradientUnits="userSpaceOnUse" id="radialGradient4247" inkscape:collect="always" r="17" xlink:href="#linearGradient3741"/> - <linearGradient id="linearGradient3613" inkscape:collect="always"> - <stop id="stop3615" offset="0" style="stop-color:#888a85;stop-opacity:1"/> - <stop id="stop3617" offset="1" style="stop-color:#babdb6;stop-opacity:1"/> - </linearGradient> - <linearGradient gradientTransform="translate(-90,0)" gradientUnits="userSpaceOnUse" id="linearGradient4282" inkscape:collect="always" x1="-47.5" x2="-62.75" xlink:href="#linearGradient3613" y1="49.020683" y2="-22.502075"/> - <linearGradient id="linearGradient3683"> - <stop id="stop3685" offset="0" style="stop-color:#f6f6f5;stop-opacity:1;"/> - <stop id="stop3689" offset="1" style="stop-color:#d3d7cf;stop-opacity:1"/> - </linearGradient> - <radialGradient cx="-30.249996" cy="35.357208" fx="-30.249996" fy="35.357208" gradientTransform="matrix(3.9957492,0,0,1.9350367,0.62141,-31.167422)" gradientUnits="userSpaceOnUse" id="radialGradient4280" inkscape:collect="always" r="18.000002" xlink:href="#linearGradient3683"/> - <linearGradient gradientUnits="userSpaceOnUse" id="linearGradient4241" inkscape:collect="always" x1="25.058096" x2="25.058096" xlink:href="#linearGradient3702" y1="47.027729" y2="39.999443"/> - <radialGradient cx="4.9929786" cy="43.5" fx="4.9929786" fy="43.5" gradientTransform="matrix(2.003784,0,0,1.4,-20.01187,-104.4)" gradientUnits="userSpaceOnUse" id="radialGradient4239" inkscape:collect="always" r="2.5" xlink:href="#linearGradient3688"/> - <radialGradient cx="4.9929786" cy="43.5" fx="4.9929786" fy="43.5" gradientTransform="matrix(2.003784,0,0,1.4,27.98813,-17.4)" gradientUnits="userSpaceOnUse" id="radialGradient4237" inkscape:collect="always" r="2.5" xlink:href="#linearGradient3688"/> - <linearGradient id="linearGradient3702"> - <stop id="stop3704" offset="0" style="stop-color:black;stop-opacity:0;"/> - <stop id="stop3710" offset="0.5" style="stop-color:black;stop-opacity:1;"/> - <stop id="stop3706" offset="1" style="stop-color:black;stop-opacity:0;"/> - </linearGradient> - <linearGradient gradientUnits="userSpaceOnUse" id="linearGradient4235" inkscape:collect="always" x1="25.058096" x2="25.058096" xlink:href="#linearGradient3702" y1="47.027729" y2="39.999443"/> - <radialGradient cx="4.9929786" cy="43.5" fx="4.9929786" fy="43.5" gradientTransform="matrix(2.003784,0,0,1.4,-20.01187,-104.4)" gradientUnits="userSpaceOnUse" id="radialGradient4233" inkscape:collect="always" r="2.5" xlink:href="#linearGradient3688"/> - <linearGradient id="linearGradient3688" inkscape:collect="always"> - <stop id="stop3690" offset="0" style="stop-color:black;stop-opacity:1;"/> - <stop id="stop3692" offset="1" style="stop-color:black;stop-opacity:0;"/> - </linearGradient> - <radialGradient cx="4.9929786" cy="43.5" fx="4.9929786" fy="43.5" gradientTransform="matrix(2.003784,0,0,1.4,27.98813,-17.4)" gradientUnits="userSpaceOnUse" id="radialGradient4231" inkscape:collect="always" r="2.5" xlink:href="#linearGradient3688"/> - <linearGradient id="linearGradient2378"> - <stop id="stop2380" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/> - <stop id="stop4146" offset="0.25" style="stop-color:#fefede;stop-opacity:0.91836733;"/> - <stop id="stop2386" offset="0.5" style="stop-color:#f5f328;stop-opacity:1;"/> - <stop id="stop2382" offset="1" style="stop-color:#f5f32d;stop-opacity:0.12234043;"/> - </linearGradient> - <radialGradient cx="38.658855" cy="9.3411446" fx="38.658855" fy="9.3411446" gradientUnits="userSpaceOnUse" id="radialGradient3271" inkscape:collect="always" r="8.341651" xlink:href="#linearGradient2378"/> - </defs> - <sodipodi:namedview bordercolor="#666666" borderopacity="0.3254902" id="base" inkscape:current-layer="layer5" inkscape:cx="40.26271" inkscape:cy="28.37649" inkscape:document-units="px" inkscape:grid-bbox="true" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:showpageshadow="false" inkscape:window-height="939" inkscape:window-width="929" inkscape:window-x="751" inkscape:window-y="91" inkscape:zoom="1" pagecolor="#ffffff" showborder="true" showgrid="false"/> - <g id="layer6" inkscape:groupmode="layer" inkscape:label="Shadow"/> - <g id="layer1" inkscape:groupmode="layer" inkscape:label="Base" style="display:inline"/> - <g id="layer5" inkscape:groupmode="layer" inkscape:label="Text" style="display:inline"> - <g id="g4425" style="display:inline" transform="translate(150,0)"> - <rect height="48" id="rect2503" style="opacity:0;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;display:inline" width="48" x="-150" y="0"/> - <g id="g4408"> - <g id="g3697" inkscape:label="Shadow" style="opacity:0.65587045;display:inline" transform="matrix(1.0464281,0,0,0.8888889,-151.18571,5.7222396)"> - <g id="g3699" style="opacity:0.4" transform="matrix(1.052632,0,0,1.285713,-1.263158,-13.42854)"> - <rect height="7" id="rect3701" style="opacity:1;fill:url(#radialGradient4231);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" width="5" x="38" y="40"/> - <rect height="7" id="rect3703" style="opacity:1;fill:url(#radialGradient4233);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" transform="scale(-1,-1)" width="5" x="-10" y="-47"/> - <rect height="7.0000005" id="rect3705" style="opacity:1;fill:url(#linearGradient4235);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" width="28" x="10" y="40"/> - </g> - </g> - <g id="g3713" inkscape:label="Shadow" style="display:inline" transform="matrix(0.9548466,0,0,0.5555562,-148.98776,19.888875)"> - <g id="g3715" style="opacity:0.4" transform="matrix(1.052632,0,0,1.285713,-1.263158,-13.42854)"> - <rect height="7" id="rect3717" style="opacity:1;fill:url(#radialGradient4237);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" width="5" x="38" y="40"/> - <rect height="7" id="rect3719" style="opacity:1;fill:url(#radialGradient4239);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" transform="scale(-1,-1)" width="5" x="-10" y="-47"/> - <rect height="7.0000005" id="rect3721" style="opacity:1;fill:url(#linearGradient4241);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" width="28" x="10" y="40"/> - </g> - </g> - <path d="M -141.47614,3.5 C -141.47614,3.5 -124,3.5 -122.5,3.5 C -118.62295,3.5729425 -116,6 -113.5,8.5 C -111,11 -108.89232,13.752625 -108.5,17.5 C -108.5,19 -108.5,42.476142 -108.5,42.476142 C -108.5,43.597359 -109.40264,44.5 -110.52385,44.5 L -141.47614,44.5 C -142.59736,44.5 -143.5,43.597359 -143.5,42.476142 L -143.5,5.523858 C -143.5,4.402641 -142.59736,3.5 -141.47614,3.5 z" id="path3499" sodipodi:nodetypes="ccsccccccc" style="fill:url(#radialGradient4280);fill-opacity:1;stroke:url(#linearGradient4282);stroke-width:1;stroke-miterlimit:4;display:inline"/> - <path d="M 8.53125,4 C 7.6730803,4 7,4.6730802 7,5.53125 L 7,42.46875 C 7,43.32692 7.6730802,44 8.53125,44 L 39.46875,44 C 40.326919,44 41,43.326918 41,42.46875 C 41,42.46875 41,19 41,17.5 C 41,16.10803 40.513021,13.200521 38.65625,11.34375 C 36.65625,9.34375 35.65625,8.34375 33.65625,6.34375 C 31.799479,4.4869792 28.89197,4 27.5,4 C 26,4 8.53125,4 8.53125,4 z" id="path3735" inkscape:original="M 8.53125 3.5 C 7.410033 3.5 6.5 4.4100329 6.5 5.53125 L 6.5 42.46875 C 6.5 43.589967 7.4100329 44.5 8.53125 44.5 L 39.46875 44.5 C 40.589967 44.5 41.5 43.589966 41.5 42.46875 C 41.5 42.46875 41.5 19 41.5 17.5 C 41.5 16 41 13 39 11 C 37 9 36 8 34 6 C 32 4 29 3.5 27.5 3.5 C 26 3.5 8.5312499 3.5 8.53125 3.5 z " inkscape:radius="-0.4861359" sodipodi:type="inkscape:offset" style="opacity:0.68016196;fill:url(#radialGradient4247);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;display:inline" transform="translate(-150,0)"/> - <path d="M -122.5,4 C -123.88889,4 -122.54207,4.4970883 -121.15625,5.125 C -119.77043,5.7529117 -116.18337,8.3400517 -117,12 C -112.67669,11.569417 -110.32087,15.122378 -110,16.28125 C -109.67913,17.440122 -109,18.888889 -109,17.5 C -108.97167,13.694419 -111.84543,11.068299 -113.84375,8.84375 C -115.84207,6.6192012 -118.84621,4.4767615 -122.5,4 z" id="path3666" sodipodi:nodetypes="ccccczc" style="fill:url(#radialGradient4276);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;display:inline"/> - <path d="M -121.39912,5.0143528 C -120.47682,5.0143528 -118.39068,11.210015 -119.31298,15.343603 C -115.01802,14.915844 -110.4596,15.43178 -110,16.28125 C -110.32087,15.122378 -112.67669,11.569417 -117,12 C -116.13534,8.124761 -120.18657,5.3827023 -121.39912,5.0143528 z" id="path3625" sodipodi:nodetypes="ccccc" style="opacity:0.87854249;fill:url(#linearGradient4273);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;display:inline"/> - <path d="M -51.46875,4.5 C -52.051916,4.5 -52.5,4.9480842 -52.5,5.53125 L -52.5,42.46875 C -52.5,43.051915 -52.051914,43.5 -51.46875,43.5 L -20.53125,43.5 C -19.948085,43.5 -19.5,43.051914 -19.5,42.46875 C -19.5,42.46875 -19.5,19 -19.5,17.5 C -19.5,16.220971 -19.980469,13.394531 -21.6875,11.6875 C -23.6875,9.6875 -24.6875,8.6875 -26.6875,6.6875 C -28.394531,4.9804687 -31.220971,4.5 -32.5,4.5 C -34,4.5 -51.46875,4.5 -51.46875,4.5 z" id="path3650" inkscape:original="M -51.46875 3.5 C -52.589967 3.5 -53.5 4.4100329 -53.5 5.53125 L -53.5 42.46875 C -53.5 43.589967 -52.589966 44.5 -51.46875 44.5 L -20.53125 44.5 C -19.410033 44.5 -18.5 43.589966 -18.5 42.46875 C -18.5 42.46875 -18.5 19 -18.5 17.5 C -18.5 16 -19 13 -21 11 C -23 9 -24 8 -26 6 C -28 4 -31 3.5 -32.5 3.5 C -34 3.5 -51.468749 3.5 -51.46875 3.5 z " inkscape:radius="-0.99436891" sodipodi:type="inkscape:offset" style="fill:none;fill-opacity:1;stroke:url(#linearGradient4253);stroke-width:1;stroke-miterlimit:4;display:inline" transform="translate(-90,0)"/> - </g> - </g> - <g id="g14103"> - <path d="M 47.000506 9.3411446 A 8.341651 8.341651 0 1 1 30.317204,9.3411446 A 8.341651 8.341651 0 1 1 47.000506 9.3411446 z" id="path2388" sodipodi:cx="38.658855" sodipodi:cy="9.3411446" sodipodi:rx="8.341651" sodipodi:ry="8.341651" sodipodi:type="arc" style="fill:url(#radialGradient3271);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" transform="matrix(1.14985,0,0,1.14985,-7.595328,0.490895)"/> - <path d="M 44.520054,15.50279 C 44.012883,16.381236 39.925351,15.341967 38.998703,15.754538 C 38.072055,16.167108 36.109289,19.900142 35.117113,19.689249 C 34.124936,19.478355 33.850222,15.26973 33.171495,14.515926 C 32.492767,13.762123 28.335913,13.048993 28.229885,12.040207 C 28.123857,11.031421 32.041607,9.4696164 32.548778,8.5911701 C 33.055949,7.7127238 32.449637,3.5389508 33.376285,3.1263806 C 34.302933,2.7138103 36.998949,5.957187 37.991126,6.1680807 C 38.983302,6.3789743 42.765436,4.5125708 43.444163,5.2663741 C 44.122891,6.0201775 41.871371,9.5864995 41.977399,10.595285 C 42.083426,11.604071 45.027225,14.624343 44.520054,15.50279 z " id="path1345" inkscape:flatsided="false" inkscape:randomized="0" inkscape:rounded="0.18352206" sodipodi:arg1="0.52359878" sodipodi:arg2="1.1519173" sodipodi:cx="36.9375" sodipodi:cy="11.125" sodipodi:r1="8.755579" sodipodi:r2="5.0676599" sodipodi:sides="5" sodipodi:type="star" style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" transform="matrix(0.674116,0.299577,-0.299577,0.674116,15.46413,-7.192469)"/> - </g> - </g> -</svg> diff --git a/application/resources/multimc/scalable/news.svg b/application/resources/multimc/scalable/news.svg deleted file mode 100644 index 67a370df..00000000 --- a/application/resources/multimc/scalable/news.svg +++ /dev/null @@ -1,296 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="128" - height="128" - id="svg2985" - version="1.1" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="news.svg"> - <defs - id="defs2987"> - <linearGradient - id="linearGradient4095"> - <stop - style="stop-color:#fff7d8;stop-opacity:1;" - offset="0" - id="stop4097" /> - <stop - style="stop-color:#ffeca0;stop-opacity:1;" - offset="1" - id="stop4099" /> - </linearGradient> - <filter - inkscape:collect="always" - id="filter3898" - x="-0.11333333" - width="1.2266667" - y="-0.10074074" - height="1.2014815"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.5111111" - id="feGaussianBlur3900" /> - </filter> - <filter - inkscape:collect="always" - id="filter4091"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="3.6378601" - id="feGaussianBlur4093" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4095" - id="linearGradient4101" - x1="88.388351" - y1="94.942757" - x2="99.525276" - y2="103.95837" - gradientUnits="userSpaceOnUse" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.25" - inkscape:cx="-700.46253" - inkscape:cy="-25.005652" - inkscape:current-layer="text3832" - showgrid="false" - inkscape:document-units="px" - inkscape:grid-bbox="true" - inkscape:window-width="1607" - inkscape:window-height="1030" - inkscape:window-x="1676" - inkscape:window-y="-3" - inkscape:window-maximized="1" - showguides="false" - inkscape:guide-bbox="true" - inkscape:snap-global="false"> - <inkscape:grid - type="xygrid" - id="grid2993" - empspacing="8" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" /> - <inkscape:grid - type="xygrid" - id="grid2995" - empspacing="4" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" - color="#00ff0b" - opacity="0.08235294" - empcolor="#00ff22" - empopacity="0.23137255" /> - <sodipodi:guide - orientation="0,1" - position="41,100" - id="guide4165" /> - <sodipodi:guide - orientation="1,0" - position="68,106" - id="guide4167" /> - <sodipodi:guide - orientation="0,1" - position="73,109" - id="guide4169" /> - <sodipodi:guide - orientation="1,0" - position="80,106" - id="guide4171" /> - <sodipodi:guide - orientation="1,0" - position="83,102" - id="guide4173" /> - <sodipodi:guide - orientation="1,0" - position="104,104" - id="guide4175" /> - </sodipodi:namedview> - <metadata - id="metadata2990"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="layer1" - inkscape:label="Layer 1" - inkscape:groupmode="layer" - transform="translate(0,64)"> - <path - sodipodi:nodetypes="cccccc" - inkscape:connector-curvature="0" - id="path3778" - d="m 16,8 96,0 0,76 c -9.14072,13.804136 -19.955033,25.58254 -32,36 l -64,0 z" - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;filter:url(#filter4091)" - transform="translate(0,-64)" /> - <path - transform="translate(0,-64)" - style="color:#000000;fill:#fff6d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="m 16,8 96,0 0,76 c -9.14072,13.804136 -19.955033,25.58254 -32,36 l -64,0 z" - id="rect2997" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccc" /> - <path - style="color:#000000;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="m 68,-28 36,0 0,56 -16,20 -20,0 z" - id="rect4044" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccc" /> - <g - id="g4129"> - <path - id="rect4103" - d="m 24,36 36,0 0,36 -36,0 z" - style="color:#000000;fill:#fff6d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - transform="translate(0,-64)" /> - <path - sodipodi:nodetypes="cccccc" - inkscape:connector-curvature="0" - id="rect4107" - d="m 68,36 36,0 0,57 -16,19 -20,0 z" - style="color:#000000;fill:#fff6d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - transform="translate(0,-64)" /> - <flowRoot - id="flowRoot4115" - style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><flowRegion - id="flowRegion4117"><use - height="128" - width="128" - id="use4119" - xlink:href="#rect4103" - y="0" - x="0" /><use - height="128" - width="128" - id="use4121" - xlink:href="#rect4107" - y="0" - x="0" /></flowRegion><flowPara - style="font-size:2px;font-weight:bold;text-align:justify;text-anchor:start;-inkscape-font-specification:Sans Bold" - id="flowPara4123">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce convallis mauris ullamcorper mauris viverra molestie. Donec ultricies faucibus laoreet. Donec convallis congue neque consequat vehicula. Morbi condimentum tempor nulla et rhoncus. Etiam auctor, augue eu pharetra congue, elit justo lacinia risus, non lacinia est justo sed erat. Ut risus urna, viverra id interdum in, molestie non sem. Morbi leo orci, gravida auctor tempor vel, varius et enim. Nulla sem enim, ultricies vel laoreet ac, semper vel mauris. Ut adipiscing sapien sed leo pretium id vulputate erat gravida. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Cras tempor leo sit amet velit molestie commodo eget tincidunt leo. Cras dictum metus non ante pulvinar pellentesque. Morbi id elit ullamcorper mi vulputate lobortis. Cras ac vehicula felis. Phasellus dictum, tellus at molestie pellentesque, purus purus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce convallis mauris ullamcorper mauris viverra molestie. Donec ultricies faucibus laoreet. Donec convallis congue neque consequat vehicula. Morbi condimentum tempor nulla et rhoncus. Etiam auctor, augue eu pharetra congue, elit justo lacinia risus, non lacinia est justo sed erat. Ut risus urna, </flowPara></flowRoot> </g> - <path - style="opacity:0.41176471;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter3898);enable-background:accumulate" - d="M 85.522922,28.087287 C 96.299051,25.849792 101.98214,24.118305 110.44998,20.924851 101.30926,34.728987 91.732381,44.562847 79.687414,54.980307 83.49938,42.627824 86.087749,33.764885 85.522922,28.087287 z" - id="path3848" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccc" /> - <g - transform="scale(1.3146517,0.76065775)" - style="font-size:26.48733711px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#008000;fill-opacity:1;stroke:none;font-family:Sans" - id="text3832"> - <path - d="m 30.25786,-47.327461 -2.845319,0 -6.874782,-17.090472 0,17.090472 -2.281973,0 0,-21.034427 3.042631,0 6.84592,17.090472 0,-17.090472 2.281973,0 0,21.034427" - style="font-variant:normal;font-stretch:normal;fill:#008000;font-family:Oxygen Mono;-inkscape-font-specification:Oxygen Mono" - id="path4157" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccccccc" /> - <path - d="m 37.27223,-56.530023 0,6.573259 7.606577,0 0.818953,2.629303 -10.707504,0 0,-21.034427 10.649209,0 -0.760658,2.629303 -7.606577,0 0.0038,6.512419 7.602816,0 -3.9e-5,2.690143" - style="font-variant:normal;font-stretch:normal;fill:#008000;font-family:Oxygen Mono;-inkscape-font-specification:Oxygen Mono" - id="path4159" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccccccccc" /> - <path - d="m 60.091962,-50.290057 0.760658,-18.071831 2.281973,0 -1.521316,21.034427 -3.04263,0 -2.281974,-7.88791 -2.277041,7.88791 -3.047563,0 -1.61189,-21.034427 2.368129,0 0.765077,18.405124 3.042631,-9.202562 1.521315,0 3.042631,8.869269" - style="font-variant:normal;font-stretch:normal;fill:#008000;font-family:Oxygen Mono;-inkscape-font-specification:Oxygen Mono" - id="path4161" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccccccccccc" /> - <path - d="m 67.201805,-51.228789 c 1.498704,1.191317 3.283103,1.786974 5.3532,1.786972 1.124022,2e-6 1.990463,-0.331929 2.599324,-0.995793 0.608839,-0.672953 0.913263,-1.586899 0.913275,-2.741842 -1.2e-5,-0.336472 -0.04684,-0.650214 -0.140504,-0.941229 -0.08431,-0.291 -0.192033,-0.545633 -0.323158,-0.763896 -0.13115,-0.218249 -0.318487,-0.431957 -0.562017,-0.641127 -0.234183,-0.209154 -0.449623,-0.377393 -0.646317,-0.504718 -0.196716,-0.1364 -0.45899,-0.281905 -0.786822,-0.436511 -0.318486,-0.15459 -0.585443,-0.272812 -0.800874,-0.354666 -0.206079,-0.08183 -0.487089,-0.190965 -0.843023,-0.327385 -0.346583,-0.1364 -0.604173,-0.240981 -0.772772,-0.313742 -0.580755,-0.236435 -1.067835,-0.445597 -1.461242,-0.627488 -0.384048,-0.190962 -0.810244,-0.450141 -1.278584,-0.777536 -0.468351,-0.327373 -0.843028,-0.668397 -1.124032,-1.023075 -0.28101,-0.354653 -0.519866,-0.795713 -0.716571,-1.323177 -0.187339,-0.536533 -0.281009,-1.127643 -0.281007,-1.773331 -2e-6,-1.700561 0.594798,-3.019191 1.784399,-3.955891 1.189595,-0.945755 2.721087,-1.418643 4.594479,-1.418664 2.360456,2.1e-5 4.201056,0.504737 5.521806,1.514151 l -0.983527,1.964305 c -1.217713,-0.918476 -2.683637,-1.377724 -4.397774,-1.377741 -1.105305,1.7e-5 -1.985796,0.295573 -2.641474,0.886664 -0.646325,0.582034 -0.969483,1.386852 -0.969477,2.414458 -6e-6,0.400151 0.08429,0.773005 0.252905,1.118562 0.168601,0.336492 0.369989,0.618405 0.604168,0.845743 0.234168,0.218269 0.543277,0.436525 0.927327,0.654768 0.393404,0.218268 0.735296,0.386507 1.025679,0.504717 0.290365,0.109139 0.66036,0.250096 1.10998,0.422871 0.449605,0.163703 0.777446,0.291019 0.983528,0.381948 0.562005,0.245549 1.044402,0.472898 1.44719,0.682049 0.402767,0.20008 0.833645,0.472899 1.292638,0.81846 0.468332,0.336489 0.847692,0.691155 1.13808,1.064 0.290362,0.372862 0.529218,0.832109 0.716571,1.377741 0.196691,0.536553 0.295042,1.123115 0.295058,1.75969 -1.6e-5,1.955213 -0.585447,3.446628 -1.756299,4.474248 -1.161511,1.018529 -2.753887,1.527792 -4.777134,1.527793 -2.519709,-10e-7 -4.6179,-0.541094 -6.294577,-1.623281 l 0.997578,-2.278047" - style="font-variant:normal;font-stretch:normal;fill:#008000;font-family:Oxygen Mono;-inkscape-font-specification:Oxygen Mono" - id="path4163" - inkscape:connector-curvature="0" /> - </g> - <path - sodipodi:nodetypes="cccc" - inkscape:connector-curvature="0" - id="path3838" - d="M 88.181818,93.090909 C 100.37216,91.737298 104.94638,87.547007 112,84 c -9.14072,13.804136 -19.955033,25.58254 -32,36 4.69585,-10.93827 8.746645,-21.231493 8.181818,-26.909091 z" - style="color:#000000;fill:url(#linearGradient4101);fill-opacity:1.0;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:1" - transform="translate(0,-64)" /> - <rect - style="color:#000000;fill:#accc74;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4138" - width="36" - height="36" - x="24" - y="76" - transform="translate(0,-64)" /> - <g - id="g4000" - transform="matrix(0.60097005,0,0,0.60097012,3.5088114,25.221343)" - style="fill:#333333"> - <g - id="g3937" - style="fill:#333333"> - <rect - style="color:#000000;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect3906" - width="16" - height="16" - x="40" - y="-16" /> - <rect - style="color:#000000;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect3908" - width="16" - height="16" - x="72" - y="-16" /> - <path - style="color:#000000;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="m 56,64 0,8 -8,0 0,24 8,0 0,-8 16,0 0,8 8,0 0,-24 -8,0 0,-8 -16,0 z" - transform="translate(0,-64)" - id="rect3910" - inkscape:connector-curvature="0" /> - </g> - </g> - <path - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="m 24,32 80,0" - id="path3998" - inkscape:connector-curvature="0" - transform="translate(0,-64)" /> - <rect - style="color:#000000;fill:none;stroke:#666666;stroke-width:0.9014551;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4007" - width="36.058205" - height="36.058208" - x="23.941793" - y="12" /> - <rect - style="color:#000000;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="rect4034" - width="36" - height="32" - x="24" - y="-28" /> - </g> -</svg> diff --git a/application/resources/multimc/scalable/proxy.svg b/application/resources/multimc/scalable/proxy.svg deleted file mode 100644 index 55ee6f93..00000000 --- a/application/resources/multimc/scalable/proxy.svg +++ /dev/null @@ -1,260 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - version="1.1" - width="64" - height="64" - id="svg2"> - <defs - id="defs4"> - <linearGradient - id="linearGradient3931"> - <stop - id="stop3933" - style="stop-color:#ffffff;stop-opacity:0" - offset="0" /> - <stop - id="stop3939" - style="stop-color:#ffffff;stop-opacity:0.18039216" - offset="0.69999999" /> - <stop - id="stop3935" - style="stop-color:#ffffff;stop-opacity:0.3611111" - offset="1" /> - </linearGradient> - <linearGradient - id="linearGradient3900"> - <stop - id="stop3902" - style="stop-color:#f6f6f6;stop-opacity:1" - offset="0" /> - <stop - id="stop3904" - style="stop-color:#494949;stop-opacity:1" - offset="0.75714284" /> - <stop - id="stop3906" - style="stop-color:#2c2c2c;stop-opacity:1" - offset="1" /> - </linearGradient> - <linearGradient - id="linearGradient3808"> - <stop - id="stop3810" - style="stop-color:#333333;stop-opacity:1" - offset="0" /> - <stop - id="stop3812" - style="stop-color:#c8c8c8;stop-opacity:1" - offset="1" /> - </linearGradient> - <linearGradient - id="linearGradient3030"> - <stop - id="stop3032" - style="stop-color:#36c536;stop-opacity:1" - offset="0" /> - <stop - id="stop3038" - style="stop-color:#1f721f;stop-opacity:1" - offset="0.75714284" /> - <stop - id="stop3034" - style="stop-color:#134513;stop-opacity:1" - offset="1" /> - </linearGradient> - <radialGradient - cx="24" - cy="16" - r="16.375" - fx="24" - fy="16" - id="radialGradient3036" - xlink:href="#linearGradient3030" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.1497507,1.7246237,-1.4656488,0.97709922,19.856365,-41.024557)" /> - <linearGradient - x1="30" - y1="1033.8622" - x2="34" - y2="1033.8622" - id="linearGradient3824" - xlink:href="#linearGradient3808" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.5,0,0,1,-16,0)" /> - <linearGradient - x1="32" - y1="1043.3622" - x2="32" - y2="1039.3622" - id="linearGradient3834" - xlink:href="#linearGradient3808" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.82142857,0,0,1.500001,6.7142857,-522.68214)" /> - <radialGradient - cx="30.724609" - cy="1039.813" - r="3" - fx="30.724609" - fy="1039.813" - id="radialGradient3844" - xlink:href="#linearGradient3900" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(2.9033547,2.9862934,-4.666644,3.3333362,4792.8997,-2518.4369)" /> - <radialGradient - cx="30.724609" - cy="1039.813" - r="3" - fx="30.724609" - fy="1039.813" - id="radialGradient3852" - xlink:href="#linearGradient3900" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(2.5191507,2.9862959,-4.0491019,3.333339,4186.8847,-2518.44)" /> - <radialGradient - cx="30.724609" - cy="1039.813" - r="3" - fx="30.724609" - fy="1039.813" - id="radialGradient3857" - xlink:href="#linearGradient3900" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(-2.5191507,2.9863064,4.0491022,3.3333507,-4122.8849,-2518.4524)" /> - <radialGradient - cx="31.964285" - cy="25.25" - r="19.25" - fx="31.964285" - fy="25.25" - id="radialGradient3937" - xlink:href="#linearGradient3931" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.97517967,0.03814675,-0.04025373,1.0289295,1.809772,-1.9498045)" /> - </defs> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - transform="translate(0,-988.36218)" - id="layer1"> - <rect - width="6" - height="13.000005" - rx="0.70710504" - ry="0.70710492" - x="29" - y="1027.3622" - id="rect3028" - style="color:#000000;fill:url(#linearGradient3824);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.75;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - width="46" - height="6.0000076" - rx="0.70710504" - ry="0.70710492" - x="10" - y="1036.3622" - id="rect2991" - style="color:#000000;fill:url(#linearGradient3834);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.75;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - width="32" - height="32" - rx="0.70710504" - ry="0.70710492" - x="16" - y="8" - transform="translate(0,988.36218)" - id="rect2997" - style="color:#000000;fill:url(#radialGradient3036);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.75;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - width="6" - height="6" - x="23" - y="1003.3622" - id="rect3001" - style="color:#000000;fill:#112b00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - width="6" - height="6" - x="35" - y="1003.3622" - id="rect3003" - style="color:#000000;fill:#112b00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <path - d="m 29,1009.3622 0,3 -3,0 0,9 3,0 0,-3 6,0 0,3 3,0 0,-9 -3,0 0,-3 -6,0 z" - id="rect3005" - style="color:#000000;fill:#112b00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - width="6" - height="2.9999955" - x="29" - y="1009.3622" - id="rect3011" - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - width="3" - height="2.9999955" - x="26" - y="1012.3622" - id="rect3013" - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - width="3" - height="2.9999955" - x="35" - y="1012.3622" - id="rect3015" - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <path - d="m 35,1003.3622 0,6 3,0 0,-3 3,0 0,-3 -3,0 -3,0 z" - id="rect3017" - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <path - d="m 23,1003.3622 0,3 0,3 3,0 0,-3 3,0 0,-3 -3,0 -3,0 z" - id="rect3021" - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - width="14" - height="8.0000048" - rx="0.70710504" - ry="0.70710492" - x="25" - y="1035.3622" - id="rect3836" - style="color:#000000;fill:url(#radialGradient3844);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.76376289;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <path - d="m 51,1035.3622 5,0 6.073683,4 -6.073683,4 -5,0 c -0.59482,0 -1.073683,-0.4205 -1.073683,-0.9428 l 0,-6.1144 c 0,-0.5223 0.478876,-0.9428 1.073683,-0.9428 z" - id="rect3850" - style="color:#000000;fill:url(#radialGradient3852);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.71143585;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <path - d="m 13,1035.3622 -5,0 -6.0736829,4 6.0736829,4 5,0 c 0.59482,0 1.073683,-0.4205 1.073683,-0.9428 l 0,-6.1144 c 0,-0.5223 -0.478877,-0.9428 -1.073683,-0.9428 z" - id="path3855" - style="color:#000000;fill:url(#radialGradient3857);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.71143711;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <rect - width="38" - height="38" - rx="0.70710504" - ry="0.70710492" - x="13" - y="5" - transform="translate(0,988.36218)" - id="rect3927" - style="color:#000000;fill:url(#radialGradient3937);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - </g> -</svg> diff --git a/application/resources/multimc/scalable/reddit-alien.svg b/application/resources/multimc/scalable/reddit-alien.svg deleted file mode 100644 index 46061a56..00000000 --- a/application/resources/multimc/scalable/reddit-alien.svg +++ /dev/null @@ -1,189 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Generator: Adobe Illustrator 13.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 14948) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - x="0px" - y="0px" - width="360" - height="360" - viewBox="0 0 360 360.00001" - enable-background="new 0 0 120 40" - xml:space="preserve" - id="svg21775" - inkscape:version="0.91 r13725" - sodipodi:docname="reddit-alien.svg" - inkscape:export-filename="/home/chromakode/Documents/code/reddit/reddit-about/reddit_about/public/static/about/assets/reddit-alien.png" - inkscape:export-xdpi="184.19029" - inkscape:export-ydpi="184.19029"><metadata - id="metadata21839"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs21837" /><sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1680" - inkscape:window-height="1030" - id="namedview21835" - showgrid="false" - inkscape:zoom="0.70710678" - inkscape:cx="48.338935" - inkscape:cy="66.337626" - inkscape:window-x="1678" - inkscape:window-y="-3" - inkscape:window-maximized="1" - inkscape:current-layer="svg21775" - fit-margin-top="0" - fit-margin-left="0" - fit-margin-right="0" - fit-margin-bottom="0" - showguides="false" /><g - id="Layer_2" - transform="matrix(12.584949,0,0,12.584949,-584.34689,27.734702)"><circle - cx="49.683998" - cy="11.836" - r="2.7019999" - id="circle21800" - style="fill:#ffffff;stroke:#000000;stroke-width:1.10000002" /><circle - cx="71.786003" - cy="11.836" - r="2.7019999" - id="circle21802" - style="fill:#ffffff;stroke:#000000;stroke-width:1.10000002" /><path - d="m 68.226,2.352 c 0,0 0,0 -5.404,-1.272 l -1.986,6.278" - id="path21804" - inkscape:connector-curvature="0" - style="fill:none;stroke:#000000;stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:round" /><circle - cx="70.431" - cy="2.789" - r="2.1300001" - id="circle21808" - style="fill:#ffffff;stroke:#000000;stroke-width:1.10000002" /><ellipse - cx="60.675999" - cy="15.552" - rx="12.238" - ry="7.987" - id="ellipse21820" - style="fill:#ffffff;stroke:#000000;stroke-width:1.10000002" /><g - id="g21824"><path - style="fill:#ff4500;stroke:none" - d="m 135.90625,159.65625 c -13.67995,0 -25.15625,11.4763 -25.15625,25.15625 0,13.67995 11.4763,24.78125 25.15625,24.78125 13.67995,0 24.78125,-11.1013 24.78125,-24.78125 0,-13.67995 -11.1013,-25.15625 -24.78125,-25.15625 z" - transform="matrix(0.07946,0,0,0.07946,45.637601,-0.68559946)" - id="circle21826" - inkscape:connector-curvature="0" /><path - style="fill:#ff4500;stroke:none" - d="m 244.46875,159.65625 c -13.68691,0 -25.1875,11.46934 -25.1875,25.15625 0,13.68691 11.50059,24.78125 25.1875,24.78125 13.68692,0 24.78125,-11.09434 24.78125,-24.78125 0,-13.68691 -11.09433,-25.15625 -24.78125,-25.15625 z" - transform="matrix(0.07946,0,0,0.07946,45.637601,-0.68559946)" - id="circle21828" - inkscape:connector-curvature="0" /><path - d="m 56.507,19.229 c 1.066,1.066 2.786,1.271 4.212,1.271" - id="path21830" - inkscape:connector-curvature="0" - style="fill:none;stroke:#000000;stroke-width:1.10000002;stroke-linecap:round" /><path - d="M 64.963,19.229 C 63.896,20.295 62.177,20.5 60.75,20.5" - id="path21832" - inkscape:connector-curvature="0" - style="fill:none;stroke:#000000;stroke-width:1.10000002;stroke-linecap:round" /></g><circle - style="fill:#ffffff;stroke:#000000;stroke-width:1.10000002" - id="circle4162" - r="2.7019999" - cy="11.836" - cx="49.683998" /><circle - style="fill:#ffffff;stroke:#000000;stroke-width:1.10000002" - id="circle4164" - r="2.7019999" - cy="11.836" - cx="71.786003" /><path - style="fill:none;stroke:#000000;stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:round" - inkscape:connector-curvature="0" - id="path4166" - d="m 68.226,2.352 c 0,0 0,0 -5.404,-1.272 l -1.986,6.278" /><circle - style="fill:#ffffff;stroke:#000000;stroke-width:1.10000002" - id="circle4168" - r="2.1300001" - cy="2.789" - cx="70.431" /><ellipse - style="fill:#ffffff;stroke:#000000;stroke-width:1.10000002" - id="ellipse4170" - ry="7.987" - rx="12.238" - cy="15.552" - cx="60.675999" /><g - id="g4172"><path - inkscape:connector-curvature="0" - id="path4174" - transform="matrix(0.07946,0,0,0.07946,45.637601,-0.68559946)" - d="m 135.90625,159.65625 c -13.67995,0 -25.15625,11.4763 -25.15625,25.15625 0,13.67995 11.4763,24.78125 25.15625,24.78125 13.67995,0 24.78125,-11.1013 24.78125,-24.78125 0,-13.67995 -11.1013,-25.15625 -24.78125,-25.15625 z" - style="fill:#ff4500;stroke:none" /><path - inkscape:connector-curvature="0" - id="path4176" - transform="matrix(0.07946,0,0,0.07946,45.637601,-0.68559946)" - d="m 244.46875,159.65625 c -13.68691,0 -25.1875,11.46934 -25.1875,25.15625 0,13.68691 11.50059,24.78125 25.1875,24.78125 13.68692,0 24.78125,-11.09434 24.78125,-24.78125 0,-13.68691 -11.09433,-25.15625 -24.78125,-25.15625 z" - style="fill:#ff4500;stroke:none" /><path - style="fill:none;stroke:#000000;stroke-width:1.10000002;stroke-linecap:round" - inkscape:connector-curvature="0" - id="path4178" - d="m 56.507,19.229 c 1.066,1.066 2.786,1.271 4.212,1.271" /><path - style="fill:none;stroke:#000000;stroke-width:1.10000002;stroke-linecap:round" - inkscape:connector-curvature="0" - id="path4180" - d="M 64.963,19.229 C 63.896,20.295 62.177,20.5 60.75,20.5" /></g><circle - cx="49.683998" - cy="11.836" - r="2.7019999" - id="circle4182" - style="fill:#ffffff;stroke:#000000;stroke-width:1.10000002" /><circle - cx="71.786003" - cy="11.836" - r="2.7019999" - id="circle4184" - style="fill:#ffffff;stroke:#000000;stroke-width:1.10000002" /><path - d="m 68.226,2.352 c 0,0 0,0 -5.404,-1.272 l -1.986,6.278" - id="path4186" - inkscape:connector-curvature="0" - style="fill:none;stroke:#000000;stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:round" /><circle - cx="70.431" - cy="2.789" - r="2.1300001" - id="circle4188" - style="fill:#ffffff;stroke:#000000;stroke-width:1.10000002" /><ellipse - cx="60.675999" - cy="15.552" - rx="12.238" - ry="7.987" - id="ellipse4190" - style="fill:#ffffff;stroke:#000000;stroke-width:1.10000002" /><g - id="g4192"><path - style="fill:#ff4500;stroke:none" - d="m 135.90625,159.65625 c -13.67995,0 -25.15625,11.4763 -25.15625,25.15625 0,13.67995 11.4763,24.78125 25.15625,24.78125 13.67995,0 24.78125,-11.1013 24.78125,-24.78125 0,-13.67995 -11.1013,-25.15625 -24.78125,-25.15625 z" - transform="matrix(0.07946,0,0,0.07946,45.637601,-0.68559946)" - id="path4194" - inkscape:connector-curvature="0" /><path - style="fill:#ff4500;stroke:none" - d="m 244.46875,159.65625 c -13.68691,0 -25.1875,11.46934 -25.1875,25.15625 0,13.68691 11.50059,24.78125 25.1875,24.78125 13.68692,0 24.78125,-11.09434 24.78125,-24.78125 0,-13.68691 -11.09433,-25.15625 -24.78125,-25.15625 z" - transform="matrix(0.07946,0,0,0.07946,45.637601,-0.68559946)" - id="path4196" - inkscape:connector-curvature="0" /><path - d="m 56.507,19.229 c 1.066,1.066 2.786,1.271 4.212,1.271" - id="path4198" - inkscape:connector-curvature="0" - style="fill:none;stroke:#000000;stroke-width:1.10000002;stroke-linecap:round" /><path - d="M 64.963,19.229 C 63.896,20.295 62.177,20.5 60.75,20.5" - id="path4200" - inkscape:connector-curvature="0" - style="fill:none;stroke:#000000;stroke-width:1.10000002;stroke-linecap:round" /></g></g><g - id="Layer_3" - transform="translate(-56.49872,330.00079)" /></svg>
\ No newline at end of file diff --git a/application/resources/multimc/scalable/screenshot-placeholder.svg b/application/resources/multimc/scalable/screenshot-placeholder.svg deleted file mode 100644 index a7a2a3d6..00000000 --- a/application/resources/multimc/scalable/screenshot-placeholder.svg +++ /dev/null @@ -1,86 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="256" - height="256" - id="svg2" - version="1.1" - inkscape:version="0.48.5 r10040" - sodipodi:docname="screenshot-placeholder.svg"> - <defs - id="defs4" /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.49497475" - inkscape:cx="-33.672765" - inkscape:cy="136.19802" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:snap-bbox="true" - inkscape:bbox-paths="true" - inkscape:bbox-nodes="true" - inkscape:snap-bbox-edge-midpoints="true" - inkscape:snap-bbox-midpoints="true" - inkscape:snap-nodes="false" - inkscape:window-width="1612" - inkscape:window-height="1026" - inkscape:window-x="1677" - inkscape:window-y="-4" - inkscape:window-maximized="1"> - <inkscape:grid - type="xygrid" - id="grid2985" - empspacing="5" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" - spacingx="8px" - spacingy="8px" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-796.36218)"> - <g - id="g3009" - style="fill:#000000"> - <path - id="rect2987" - transform="translate(0,796.36218)" - d="M 24 8 C 15.136 8 8 15.136 8 24 L 8 232 C 8 240.864 15.136 248 24 248 L 232 248 C 240.864 248 248 240.864 248 232 L 248 24 C 248 15.136 240.864 8 232 8 L 24 8 z M 24 16 L 232 16 C 236.432 16 240 19.568 240 24 L 240 232 C 240 236.432 236.432 240 232 240 L 24 240 C 19.568 240 16 236.432 16 232 L 16 24 C 16 19.568 19.568 16 24 16 z " - style="opacity:0.75000000000000000;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000000000000000;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <path - style="fill:#000000;opacity:0.75000000000000000;stroke:none" - inkscape:connector-curvature="0" - d="m 85.749999,937.9006 c 0,24.30067 18.915811,43.99997 42.249991,43.99997 23.33419,0 42.25001,-19.6993 42.25001,-43.99997 0,-24.30069 -18.91582,-43.99999 -42.25001,-43.99999 -23.33418,0 -42.249991,19.6993 -42.249991,43.99999 z M 219,863.43909 h -45.5 c -3.25,-13.53846 -6.50001,-27.07691 -19.5,-27.07691 h -52 c -13.000001,0 -16.250001,13.53845 -19.500001,27.07691 H 37 c -7.15,0 -13,6.09231 -13,13.53846 v 121.84603 c 0,7.44632 5.85,13.53862 13,13.53862 h 182 c 7.15,0 13,-6.0923 13,-13.53862 V 876.97755 c 0,-7.44615 -5.85,-13.53846 -13,-13.53846 z m -91.00001,134.53849 c -31.860147,0 -57.687491,-26.89678 -57.687491,-60.07698 0,-33.1798 25.827344,-60.0769 57.687491,-60.0769 31.86057,0 57.68751,26.8971 57.68751,60.0769 0,33.1802 -25.82653,60.07698 -57.68751,60.07698 z M 219,904.05445 h -26 v -13.53846 h 26 v 13.53846 z" - id="path2996" /> - </g> - </g> -</svg> diff --git a/application/resources/multimc/scalable/screenshots.svg b/application/resources/multimc/scalable/screenshots.svg deleted file mode 100644 index a3d4d8e2..00000000 --- a/application/resources/multimc/scalable/screenshots.svg +++ /dev/null @@ -1,1231 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="1100" - height="1100" - id="svg2" - version="1.1" - inkscape:version="0.48.5 r10040" - sodipodi:docname="screenshots.svg" - inkscape:export-filename="/home/peterix/minecraft/src/MultiMC5/resources/multimc/16x16/screenshots.png" - inkscape:export-xdpi="1.3099999" - inkscape:export-ydpi="1.3099999"> - <title - id="title3887">Golden Picture Frame</title> - <defs - id="defs4"> - <linearGradient - id="linearGradient3871"> - <stop - id="stop3873" - offset="0" - style="stop-color:#ffffff;stop-opacity:1;" /> - <stop - style="stop-color:#604d00;stop-opacity:1;" - offset="0.24157524" - id="stop3875" /> - <stop - id="stop3877" - offset="1" - style="stop-color:#745d00;stop-opacity:1;" /> - </linearGradient> - <linearGradient - id="linearGradient3831"> - <stop - style="stop-color:#fff2be;stop-opacity:1;" - offset="0" - id="stop3835" /> - <stop - id="stop3839" - offset="0.5" - style="stop-color:#6a5500;stop-opacity:1;" /> - <stop - id="stop3837" - offset="1" - style="stop-color:#745d00;stop-opacity:1;" /> - </linearGradient> - <linearGradient - id="linearGradient3817"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop3819" /> - <stop - id="stop3825" - offset="0.39502749" - style="stop-color:#604d00;stop-opacity:1;" /> - <stop - style="stop-color:#745d00;stop-opacity:1;" - offset="1" - id="stop3821" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3831" - id="linearGradient3821" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(2.3556705,0,0,2.3556705,-1198.3938,-507.60896)" - x1="568.4173" - y1="501.39673" - x2="588.28278" - y2="502.30829" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3817" - id="linearGradient3823" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(2.3556705,0,0,2.3556705,-1198.3938,-507.60896)" - x1="731.26221" - y1="376.98492" - x2="731.15552" - y2="364.66559" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3871" - id="linearGradient3825" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(2.3556705,0,0,2.3556705,-1198.3938,-507.60896)" - x1="883.03296" - y1="502.69846" - x2="897.77411" - y2="502.96545" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3831" - id="linearGradient3827" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(2.3556705,0,0,2.3556705,-1198.3938,-507.60896)" - x1="723.38055" - y1="621.29663" - x2="721.71783" - y2="661.40479" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.16698148" - inkscape:cx="-510.5746" - inkscape:cy="-1131.4434" - inkscape:document-units="px" - inkscape:current-layer="g3807" - showgrid="false" - inkscape:window-width="1612" - inkscape:window-height="1026" - inkscape:window-x="1677" - inkscape:window-y="-4" - inkscape:window-maximized="1" - fit-margin-top="0" - fit-margin-left="0" - fit-margin-right="0" - fit-margin-bottom="0" - inkscape:snap-bbox="true" - inkscape:bbox-paths="true" - inkscape:bbox-nodes="true" - inkscape:snap-bbox-midpoints="true" - inkscape:snap-bbox-edge-midpoints="true" /> - <g - inkscape:label="Capa 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(31.270747,-9.54776)"> - <g - id="g3017" - transform="matrix(-1.3082428,0,0,1.1906703,1197.3531,-130.52295)"> - <g - id="g3807" - transform="translate(0,-102.53568)"> - <rect - y="365.48618" - x="555.12488" - height="287.45703" - width="344.34955" - id="rect3017" - style="fill:#000000;fill-opacity:0.78921569" - transform="matrix(2.3556705,0,0,2.3556705,-1198.3938,-507.60896)" /> - <rect - y="352.5882" - x="141.80692" - height="641.88568" - width="768.85199" - id="rect3019" - style="fill:#000000;fill-opacity:1" /> - <rect - style="fill:#fff6d5;fill-opacity:1;stroke:#502d16;stroke-width:2.35567045" - id="rect3013" - width="723.00299" - height="599.56348" - x="164.73138" - y="374.21686" /> - <rect - style="fill:none;stroke:#808000;stroke-width:2.35567045" - id="rect3009" - width="603.09033" - height="469.07022" - x="224.68771" - y="438.99588" /> - <rect - style="fill:#999999;stroke:none" - id="rect3015" - width="553.71448" - height="419.69443" - x="249.37567" - y="463.68384" /> - <path - id="path3802" - d="m 120.66044,334.92569 0,677.18161 811.16043,0 0,-677.18161 -811.16043,0 z m 21.12742,17.66753 768.90559,0 0,641.8466 -768.90559,0 0,-641.8466 z" - style="fill:#ffffff;fill-opacity:1;stroke:#502d16;stroke-width:2.35567045" - inkscape:connector-curvature="0" /> - <path - style="fill:#554400;fill-opacity:1" - d="m 559.94852,357.66235 0,287.46875 344.34375,0 -0.43711,-287.04864 z m 8.96875,7.5 326.40625,0 0,272.46875 -326.40625,0 z" - id="rect3797" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccccccc" - transform="matrix(2.3556705,0,0,2.3556705,-1198.3938,-507.60896)" /> - <path - style="fill:url(#linearGradient3821);fill-opacity:1;stroke:none" - d="m 164.75566,973.3124 0,-599.59176 -22.9678,-21.12742 0,641.8466 z" - id="path3815" - inkscape:connector-curvature="0" /> - <path - style="fill:url(#linearGradient3823);fill-opacity:1;stroke:none" - d="m 164.75566,373.72064 722.96999,0 22.9678,-21.12742 -768.90559,0 z" - id="path3813" - inkscape:connector-curvature="0" /> - <path - style="fill:url(#linearGradient3825);fill-opacity:1;stroke:none" - d="m 887.72565,373.72064 0,599.59176 22.9678,21.12742 0,-641.8466 z" - id="path3811" - inkscape:connector-curvature="0" /> - <path - style="fill:url(#linearGradient3827);fill-opacity:1;stroke:none" - d="m 887.72565,973.3124 -722.96999,0 -22.9678,21.12742 768.90559,0 z" - id="rect3804" - inkscape:connector-curvature="0" /> - <image - y="463.68384" - x="-803.09015" - id="image3837" - xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAACiCAIAAAAhs4RgAAAAA3NCSVQICAjb4U/gAAAgAElEQVR4 -nOy9aYxk2XUmds65974ttszIrTJr6eq9m91NSqQkihI1tkRDgG1BgM3xGJLGY8jwAB4YXjAYj2AD -hjTzz/YPWwNj7LFmPCMZIk1JlkYLRQ4XSVzEnewm2c1mVy+1ZmXlEnvEW+5yjn+8rOqsLTOrKrur -uHwIoKIiX7x334tz7j3Ld87F3/2Tz8D3IBBB5H4PAgAAELHZbCZJcu0TFjiTL58vuwB4Hwf24OAx -/lYbhgceZiE+j49PsHv4M69Go3e2Lo9GI2vt3Y2N7u5r9x0PiPQDgIhMJpPJZCJXx0QITzW23tVc -J+D7O7YHBENc3P8AAdiBY9/B99yR9AOAFXUP4wL43lWABw1lWQ4GA+/9tU+OxZOf7Jxtquo+juoB -wRCW9pmvLMSv4XMX6AlG/faN6Sp+qABHhhDCYDAoy/LaUtDS9r2dc8vR+P4O7L7Do5nA3M2fC8A2 -rH4H3zPB+bd/VDV+qABHjMlkMp1Or+mARv6R5voT2SbCA2O03Q8McOmGTypIXsPnLtLj92XiB4Ap -tF/FZ+/Ptb+/UZalc67dbmutAQARHk77c7p4fnLCyQ/oAx/C4gl4XV11inqwfAkfC/dP9DfwoQnM -Ad6nEXzfozaH6ugQIgLAvCl+eu6N5ycnRj6736O7DwhoxtKdhx0L0QV8fAxdwCMIkbHcwUkEYArt -K1dFv/7whwrwFmI6nTrnms0mEQFATOEn2hfO5Es/mBHSAS4FUev4SEBzVOcsODrskdDYwFPDmywx -DQCtVst7XxTFUQ3rh7iGqqq8961WyxgDAITyVGOrravvTI+FHzAHbAiLQ7pR/t4GFJBt4ENDWLx5 -zSEQDQCz2ez06dOIOBwOR6PR3ljeAw4iYn7QY+0hhOFwuNccWotHLVW+MDmec3y/R/c24ihsnjtC -Do0reOqWom+In5wvHuuU6oO/9Kt1KmdhYaHVanW73SzLAOCuU2tvJx599NGhNc6W9MDHWKy13vso -imodiCmsxaMZR7Pwg6QDRw0vdDweBluEEPZ+XkF8AZ+8hI+W2LhB+iPid3Tzn16bHG+6SIn64C/9 -KgAwc57nnU4HEaMoarVaurn0yngOJcTw4KZy5ubmxrT0zdlDApTB9AFXgxBCVVXGGKUUACiUY9EE -AQY++wF0CY4IaDBkPLimABXE6/jIBXziZtGP1Zuin08Hw2G/KGZvOsFFUWxsbKyurtZT1FwiD600 -v7J5LJKyC1sLshlD+Xbe2WHgnEs1BzQbeHpTTqzIpSW4rOHBNeGYeTgcNhqNNE0REREezXbmTP7N -yfEf2AjpPWLDdhYRAKCC5Aqe7MEK4I3OVabDM9380U6pCADg5e8+/w9+7ZcYQ6wa1z300WgURdHi -4i5z4/G5slfq10fpFXjoCpxqwqgrW3OwrSHAgwFrbZbtDoZRb+DpLTm+BJeXZf1BVoPZbOaca7Va -dXRoweTv65x9YXJiHNL7PbTvPcxCtA3zA+wMYFluJfrPLuSPtEsQPxz0Z7NJUU2eePy55RMrGxuX -nn3nu/FmNuiJEydarVb9Pgh84vxcv3ozbkXiO9BfkCstGN73Zbvb7XaXVn7v1RtjC0r8Eqw/4GpA -RO12u44OAQALvDw7dqm6b6SA7zPMxf7p+fyhVoXAn//KRz/z2Y9mZu4zX/kjV/l/9N//iwsXXjt3 -9iyaqz7AXkwmk2azWWcxCeFYZs9OknA14yBIJTb6uNLHFQfGQGXun5AprTrtzplhGq5PiAjSFOe2 -cZWBUpgdIStzjPMa7JE4GyJSViUAGG1qc2jJTGPyfZ/JD1iE9GgxH7ufWJm+Z3mW4fTS5Ve/+/rX -/4/f/vX/4j/9jYcfeurC+qvbG1vfevErL7/y/MryyRe+8xn1wV/+VUC47gUwm05brXbtq8VK5mN/ -fhID4t7DAuoZdnq4NsYuAMRYEvKNp3qrXwAL3e65cVIy3fzXWg12cJVRpTC79+EJ4hn8kT4ei6BK -sDj8F/H243fOXYsOIUJHlwtmtm7nbnjaP3wd5rWYuh9bmb5nadaJAyJ8+nN/+Ma5l//Ge39BU3z6 -1JOf/auPv/TyN449vHpl81w5ra7kr07HI/zQn37mlmqUJOmpU6dqIxUAvrWTvdhv7KN2KGEOel3Z -6kD/6JT5YDz11NN/td6+PDsgmEjil+Dyily6F6NoinNn8J31+7b0TsjryREFBoio1XrTHPr88JEf -rBTBPeNYZp9bmC0mfm/g56vf/PSp40/87u//k+df+MLywokXX/xqPKfB0+RKkSaNrJtEUXzbyENZ -FhsbG2tra3VQ6LmFWb/S+8iZoBrA8gCWNLgFuNKVrQRyvN3RRwfnXNMc7JQz6k04tQ21i3zJgLuL -aw1g4dr7MS68DHMrcGlFLql7jgow82g0zLIsTTN82xNG38uQ1cw9tzBbuF70awyGO88//6Xnv/bF -Qb4lIpnp/NSP/vzLZ76eD14r7CyxyanHHlcf/OVfvd25ra0QIcsaAICIqw17cRpb3tc8RWRUM+zs -4NoY5hkohuItLYxqNpttlUOw0xAfSC4QpBl2dmAtoE5hpu5kYAJwAa8v2kCa4twAlg2UKRwBkcQ5 -572Louhi1f1hVHR/IMjpVvUTK9NnForM8A3S75zt93tf+PIn/uD3/u8QFyqiudZyb3trq3ijnc0P -B72opTDxw2rjtibQNaytrbVabQBAxF6pP3VxLtwJBQ+FO9DrymYH+m/FzHbs2DERCCGwwIbtXCi7 -k5Ac/DUAkrAIl1cOvRpMoX2GfuTWfxNpweCkvJ4chRoAqm/he/0PeYq3AYKcblfPdPN2dIuFty7N -Gw4H//ov/unzL33m5MLTb1x4UZGeTWZuGpJ54ws2DeVzWZo/aV15sAIQ0cmTJ9N0l8T7+ij58mbr -LsatxdYJtQRmR6gJ3e7CNUcFAESg5xrny27PN3bdzH2BEpZgY0UuHqgGF/HRbTy+76l4CdZX5fwd -LSw3QADO4tM3kxZ/CADQyKda1TPdvBXd+IRFpMjzS5fP/7N/+Y+99Y1G+9z2t5g5oebGhcso5IOL -WkSaZts2aipfcDKndUz7mUDXTj2bza4FheZjXwbamxk4JBjVDNs7uDaCrgBFUN276VwPz5jomt2M -CJlya/F42Uy8UB4i2V8NkGbY3oa1gCaF2e2GJIAX8LEDapcQZ9jpw0oE9q79nytwcof2U7MfTGjk -J+eL96+OT7dtrK6LQYtIr7dzeWO919sJnv/qy39wZfzGwtzqL37g71648Gqs0+3tTd1EEXEFSxDy -0dyjETshjaTp4BWgRpIkp049VM+1geFTl+Z65T2xulG4Df0F2WxD/x7D6kqpJEniONm7FNSoWF8o -5y9V8+4Q7QNIwgJsHJNLBm4kAu5n/9wKLRmckNdTyA//FQAYwfzr+MzNmfwfZGiUJ+aKp+bzRN8o -JMx86fK5j376/8kH5YtnviSR+9n3/kfjSf/zX/roz/zUv/+lr/0bcHrryoZpYRwn/QuTbFEjoZ+h -aYq3EjWVig6xAtTw3leVbbVaiLibHRsnd+QM3AjECrMBLm/DmsNYgzNg7+50IuKcK8uSORCpvWqg -kRdMfjLpx+RnIfL7qoEg5djehlWP0Q2rwSaeyLF9+CFZTHdg1WHUgPEhYwAlpK/js3JQjd5c7DIs -D18I8r2LRPGzC7P3rU5ONK2+fk5wzp157cUzr730kY/9ZlkUp1af1im9cuaF/vZ2c771d3/5H/3J -p3+rqPLBlQGB9s5BGXm2gOBmgWJgKwCQtPVkvTysAsAuQVoajQYARErm6uzYIezs/SGocmz3cHUI -i3xvppH3vq7HRUSl1DW7iBA6ujwZD9q6LEJUyb5r164arPmrRtEt4j+HAWKOrR04ZsClB7k9AdTr -+KzFA7hA87H7wPFRlzfg+5pDmqrwzsX8fcfGK5m/QfTLstze3trY2Pj05/8gjrLTa08bHT/xyI98 -/GO/9xPv/sCZK1/p97Zm41yEezubZV6aDgTLYELUVD7npG0AIViJO9pOAxLegQIAQFEUxkR1F7RW -xCKwVRzZVOQxmmB3AEtLcPleflhmtraqqlIE9qoBIjSUPR4PNXLPNw84C+K11SCA7tOxuxuMoBrh -4hjmU5hGN1lW13AenzywNch87H7uxChSbKtqXs+aqtqxje8z0kRDh+cW8vcdmyxnnq4Xgul0urW1 -ubW1VVUVAGz1Lzz5yHv+zw//WjPtfvIvPtKvLo17405raevC1hsXXizsOJ/lRpIArhz4YNmXXAwc -EviCSSMRRk2tzE1G84G4cmUjz3dN2+cW8uONI64WcBhP4AgIYcyc57N+vzedTrz31/qUIII5dDcx -QbWNx8/hU/c4mBzbr+CPXsDHbhncvAInBnBA2Kcbu587Mdrr/61EdeOtB46jfndoR/6njo1/8eH+ -U/PF3llfREaj0dmzZy9dujidTq99zgF++8P/U5EX3bllrWM7Co2svbbwWNI21dT+wr/9n4cC8nIa -RpqZTabs1DeXo6SjdUJEoBLiIK4Id7YC1JhOp+12WymFCEvRTLmpAJasD4i33AnmYeeoTlXbRd6/ -aRdtu/bA3Qnx+EhSs4g5tnpwTEHYaxGNYP4iPrn/JfZKf6/X6/f7UWSIKCJei0clm+nhUh8PJjqR -/7Gl6Y8vT+eTsPcxMPOg39/YuDwajUK4kcDSH175zFf+kANfeP3siZOnJ3bn4hsX+u78sYWHn338 -J7/x4l9WIZeS0kaWrAgAuIJ9JWJJgE0UAbGKiOiu2qKEEC5evPDw6YeJSFxxMqlOJkPL1HPNbdfc -ts0A99SxcQSLHvTRMpmdc845IkqSxKK5X7ZzQHMRH9+RYyfltQZMKojP41OwL/mhG7ufvSr92zvb -Ozs7ALBbZBwnGuW5xuU5XbySrxzhBPT2YCm1T80Xxxv2BmvHOTcYDAbDwf4F30ppb90H/p0PfupL -HypmRRKn1dju5Nt+QNtb216Vel4Nt3ZwjCIQLKuIbGFVhBZsZNT0SlX1/V2mG6216+vrJ04ct3bX -BIqIV+PxajwOgjuu0XPNLduyd5XPF6SBLC3Bxt2NbR/UlZ82uc+CUmDrDPxIFzZzaO7fIyTT4f1r -41iJiOz0dmrph6sdeZ1zzUYTEU8lg7Yuvjk5cYB//6BAllP33EK+nLobVL8sy/6gPxqNDjxFszkX -JYbZf+mrn1iJnziz8Y1Glk5GdkBbo3y7GLrOyURYkNAVgZ24nDsntcmULziUjKhNqkLCmoHujqsz -nU0vra9HJqoTZNegUFai6Uo0fSq7MvTZlm1tu+adhu0GuLwkR68ANQp5AAwGxD4c4Fg3dPjAyWHT -MADs7Ozs9G40C3db0LXaWus5Xb63c+7F6Vrf70fafWsga1l1OT84JIggy6l7diFfya7Lu9fJ1sFg -MJ1Nb/fdGzDXWrSuBIS4EV3ZONc4psvtqavs3Oms6FkAmGxU4Cnp6sZy1DuT64QA0ZdcjX22FHEQ -XwSfB/X43/6tKXQCGgKu6QCHt3ittWVVlFUVONQW9nV3i5AqtxjNTsWD5WiqMQShQ64JDuJ52H4r -6rmUUhtw6jAZDAR5OO3PQsT3I9KyV/q3t7dvlv4aIlKWJREZbTTyajQKQG9n87nVzP7M2vjJuXw0 -c/uWdMqpZvXTq5N3dIv6pnY/FRmNR1euXOn3+9bdQSOSaT764lc+zoFtaclHk+GoHFv2kMRZmjai -rpDCjOarkLOVYDluaaVxtm2jlkYAOw4qIWVQM6gJdifQBRANrg39pozaMLg5G3rr2xJgDkVRFEWB -iHEUm8hEJtqbjUKEti7buhTZLths2vaWa459up/NitiHlTU5d/gnckgopSp/KIFeTNzj6dbDyfbl -au582X2bc09Pd/OmYRHZ2NgYjQ8wCeoWdK1GE4meSLc6qvhOvrp/1u/esZi4dy3Orpox9I52b6fX -uPkpIcjJVvVcN+/E16V3mLk29J27G2p6t7OiIyUuzLeXd3pX4o4Grxg8GRjs9LOlqBr5kA7SlilH -HgDSrikHrrUaU0TVyMVz2o48X8e5RfQQ9eFYH4+BSAJ5G/otGTZgdAC762porq7x2y3zMyaKojiK -9y4LNVHn4bT3cNqrWG/Z5pZrDVx2yyl2AEsrcOFeiGW3RAWHjf+sZQUAaJRTyeBEPNhxzbPFwiik -b1v6SUTWL69PJpPDHFxVlXe+1W4ZbY7Fk6auXpiceIuqalrGv2txdrJp9xoLCuUdjStfn5y89nwI -5bFO+XinuEH0nXP9QX84HN5jUzOlVZnLxtY5FCUEyDpZQOtKl4diywfLAuDyigwFy64IvmQJoBNB -xHLH2VFQ6e2iQIglNEpobOFJFG7CqCnDNvQzmN18rMAtNiyqoy6z2UwpFZkojmOt9d5oR0z+ZDI8 -mQwd045rbtp232d7Jy2L6Yvwk20YzMl2G/pHpQmHpxmvJTOXc72UEcJyNF2OpkOXXqjmr9j2W60G -InB46a8ROAyHw2ajmaZpU9mf7Jx7abq66e6AwXEgUhWeW8gf7pRqz92XZbm1vVUUxfzc/Fo0umzn -FMpjneLpbpHp6361qqp6/d5hfNwDQaQMZkoXnkMyj/l2KGe2rIQ0ImHUUSoFVTSnxSDpUHC6HHid -kDC4PAABAiiDEA4hDYI0gfkJzm/IaQW+XhZaMDRQXXsIIrfdtCuEUISiKIu65VYURTcYSOZq+IgF -eq65aVvbrlkvTYx6CEtDXCIJbejPyU4b+vfIIXV4qElxMXE27/f7/TiK0zS9pr1zppgzxaNh+1I1 -f6mcf+v6e77ek+O+ugurazrb7cirCZ5pbmwPmkfiw2iUZxZmT8wVZs/JiqLY6e1cy09NZ9MnG5ud -TD/VrVJ9naGf53mv35vNbjGB3h2ISCsNCI1mMx9NXcHpYpR0iWeqHDnSwqNkWg7TeeMKBgGdEDvx -VVCKQAAIVErg7qjqAjGAGcDKAFcAIJVZE4YtGTRhpCDsowM1RKSqqjqPbbSJ4igyUd17YveWEJai -6VI0FYGhTzdte8u1SjYAwKj2aEK9JvTubk3wcCihWmvYyWACAJWtKltprdMkjeO4VoOGck9mW48k -O5eq+Qvl/FsRfBxye4I/tiIXlmD9Ttmyla3c0LVbbWOMRrZyTwqgrvIx0z18zBtEf/e6VRXHxdPd -QaJ342y1j1tvnHMvY7gl0mY6mEBAq2KKW6rqsc2tsLAT0bqqKhBxRXA565TYCRk0WvsiqIh4wsxC -gvquF/ISGyU0dvA4Ajdg1JRRSwYNnB5m/zrnnfNuBjNFKoqjKIqMMQhvknbmTTFviidgcxbiTdva -tO08xFBTa2BxhIsIVzVB7mxNCHCoW14yw75/0znz3k+mk+lsmiZpkiaKFAAY4ofT3kNpb6PqXKzm -J/6I21ox6g18ZAArq3z2TlsNMPNwNGw2mqly7m6zPQBwrFH92PK0tSduU1bl9tb27eKVNUsggYSF -B4PBYHCXPu5h0EoXAM65ypNGQPTBmphAoQQu+g4EopZiJwDgZkGnCgSARWuiCiFgYBYEfe+mrABN -YX6K81fgtAbfkEFbBk0ZRlDuc+56uQh7IkjGmDiOo+hNA4kAWrpq6erRdKdkU2vCOCQAKHBVEyS0 -YdCRnY70DqMJJWYH3nJDBygHt7hTkbzI8yKPoijLstouIoDjyWgtHvV943zZ7blDVaIdHiU0ztIz -begf59fvqDulAFzM0ymaexlOJ/LXyq+qqur1DrDgmbnf7+d5fu8+7sEQAAZh8ZZDxSpGwN2suk5o -1+FEEBYRAJYQRBgQQCHGRrkAPtwqKv+e1nknauKTvssmIbkjC9KDHuHSCJcAIJa8KcOWDFswuFk0 -b1gnRMRaW7ek1lrXmnDNQKpTCqfT/um0X7Hets1N2xr4TIDeXBMktGA4J9v7a8JhgoMNE25Y3G9A -PVSlVJqmddNzRFgwswUzm/rofLlwxbaPMnuAOIaFCc0ty6VluXgY28+BuUiPjw/an/RAjKwBgKqq -dnZ2xuND7faX5/k1uuRbiu7CMp5HJQARVtPAVlREoWJUCCKhYpUQAKiIkJCDsBcElABKgAiJKTE3 -+QANVc7rHBFWogkABMGhzwYuG/hstH/k/iZUmFWY9WANhVOYtqXflGEDxgeewnvvvZ/NZkRUa4Ix -5loEKSZ/IhmeSIaWVd9lm7a945oMJKjGsDDGBRRuweB2mmDhYCdYc36Y7vAhhOl0OpvNkiRJ07QO -+Da1faa58RhvnS8XzpcLB57k8BBUm/jQQJbX+I056O1zZB+X1/HRI9mIZWTVpfXLk4MSEfcFGiMQ -YC+kUViiNHKF4yCk0FcCAMISrAgLBFEaMSJfsk6IcyAEpRDkJgU4Ho1uCO7WExsABMGJTwY+G/hs -6NLDM94EKYd2XVFF4lswbMqwLf39bSQAYObaQAKAOoAUx/E1AymicCyeHIsnQbDvGluuuWXbXpQg -Xa8JO23p1UllUmp2CIO4X5oIFtvQO4z3KSL1IKMoStO01tWYwsPJztEqQA2L6Tl6Rwv6x/mNm5tQ -WIgu0ZHtwAUAhVffdCdOw/h2j2L/yMdbirVjj4gIILKXqKGqsVMRogdfMuJuYSkieMtxS7MTRNQJ -QSUsoAgVYF459dO/8ht7T1oEiqotDJWIENHeyD0hJMrPm2I1Hj+U9JeiSUqOkCvRhy/LEKQKswl2 -d+j4AFdKyBiVAXsgHymEYK0tisJay8z12OrhEUJD2eVoyioe2D08H8QKsxEubuPxGbYFEER2cO3A -QXqMhrTUw9UKEgNWH65Ws27/X4e5tNYMdK68Vwvk1kC0mPXwmIDKYFKLpgD0ceUcPVNi82j3Yqkw -y7E5J70HbafXyWT4ze9+FhGQsBg6ECBNEurfGUhhvTLUT4O9SBAMwCKIEJMiwsCC//DPb7wrknBS -zszLNgAopYwxxhit9d6Q5V5ESePrw2NX8rtnCtQ2Ur0sNGByyAdNRPWacM1A2sIT3+zt17IFQe6C -M5zKdF625mXrkPQQAEBEiTsvuHfe6bXuFJGUa/x6BpNL9PgYj37BuYa29E/zS/d9C5KinF5cf01Y -/uhPf2vQ36JMGD0izrYrVzBprGnPoWIAUIbIYLBcf+hLJoWcCwZoxkYRBmb8tZsUAABAZEE2jsvr -e2WxDtTUyrDXKO90OqTM5y537kUH3ryKhD02UnFIaY2iKMtS13z4Cxv3lPhMVHh38+ymbV+uOgVH -18VzhFswXIKNtvTloFWfgV6jdxZ3Ukd/9xBBkJtb4x85WtI/zd9RyG+PzTMa9xpZW2sDAN67y5tv -fOOFz24PLw2HvcH2TpI0+v0eKTEtEABfhGrsAUECSBBUKCwAECwDgIoIANgLVSClhCBxpBqJhttu -k4rYw7VCGg/xd6OrWyTtDdQAQK0GVzkO8P610V9f7mzcsw5c82Uvw6NGyqaM2tBryGj/xlXWWufc -wtwBYdCMqlTZgWvcLkSzlpXX2EoTH2/YzqZtV2wAAJAm0D3ZjU8k2cWLF/e/0Do+9jZJPwAgvj2l -MBPsnqN3nObvvKW9LkPwr5998bVz35xOx+965v1FOS2K4oVvfW5ndElr0+9viYjNnfXkqkrHFJFB -hFAxEiAhi4hAcKxjQkIk9GVAhXbiSRMBakMWgvMsAFrRfh5hjp0z9O6H+OUWDG/+ax2rqT3UY8eO -acL3r40+eXF+WB1ZTz+HyQCTAayAyLxsnZJX9jlYRFI8oEB5KZo+nm05pm3X2rHNnmvc4MovxTP2 -u/yflq5aeuuxdGvs01oTNMHT3fzS+e39r8JRp5DuWykk9w0T7J6lZx7ml45cB2az8WvnvhXEvvji -V0XAOzfs97Z3NjxXw2HP2rKs8nLkdEJIYDJl86EyiFSXeiESAmKwggSIiAQcAFy9WKEEIYUcGFgR -ISmKCEVAbo4C3YCA5g16rgWDpowSmWYw1TfNxMPhEACOHTumCH/2xPDTF+fG9qj7WiIOYWlVzu5v -hSNbTexv3743IwsAhngtHq3FoyDYc40t2+67hhUdEWd+p9fr1StbHXEi3OX/PJldwbidT4r9s/rG -mE7bLMPrPdfYsHNbtvl91rhhivNHqAOT6WA43Dlz9oXtnUuX1y/k5YQdcPBlmFlXYg9Qoa9YWIiQ -FHAQFNAEOiZmkQChYtJKRRQs6xg5AHsmhaTAVxAqNk0FAiZTzAAOsASjkAWYBdRhylMQJ9CdYBcA -ECSSIpVpE8apTJKrm68Mh0Nr7cmTJ2NFht4SC1GQhri0JOv7HONdlSqe3F4BQt6bhbJOsSGiQqk5 -niww9BmaxnQ0hqtU1ul0ei05rZQihEz79fWt/cdZ94xBhMVothjNKlYb1dx6Nff91MrqqHSgKGff -/u4XvvCFT2ijyqIcDLesLxWaAK4mrplEAUDwAgBVvlsdlczpYFkYhKUc+mROR0q7PPja/bWMiMEy -JmRSMimRRm8FEQgEIgCLBmk8q3Qa+SB3ygVCi5nFbATLAIAQEskbMEpkWuVjuHhxee2hfnn3/KIa -J+L+JCQ3V8wM8Nj+CmCtSzRPb+8sYCjrPCUi1uGjmt9GCF2TE5Wb1+e/ak0AgPrIsiwP3EV8MpnU -qbEkSZRSMYXTae+hpDf02aVqfsceDTfzvmN2hzogAGFPo4PA4eLlM+uXzn7q8x/pb/VIIwD4iqOG -qqYVIIAAKWIWpYldEAYkIMJq7CuEuKXtLAACKizHXqcKFRChBAFEJNAx6UQJC2kkhb7wcdfYWWDL -bEB7MFpZFyK9rw9wiLtSBbYKaAECgKjKxxf4HpkwmsLj2SYhBMGxT/u+MfHJ0KdBVIlZDs0MbktS -cM61o7Bz+xbl1+y3upKwLMvJZLJbuxPH+9g21zThMKhL7/M8N8YkSVKzm+ZNPm9yx3TFdi7buak/ -uC65ZZxnKcIDunTMcP4sPfswv7iPDghAAc0RLblo4VQ2gf4rzlUX1mSWDxoAACAASURBVF+5dOns -F7720d7gCooCgeCYCIkwWAYQEHRFiBoKGIJlBEQNyijxoiMiRFcGDlKTfJRBOw1xW/vSRk1tp4EU -kCZfBADwJSBC1NIg4IuACh1yjCqJVFEFlqMgw10FBjD5vco/zKlZ3SRDodRCAwAsOA1x3zWkaoG7 -rQJYa7M2324AJF7dKpR0rXbnyCMp19QmjuMkSYwxhvhkMjgRD0Yh3ag6m7Zzm4oCeaxTvrM7Hgz6 -fdc8X3WHD2QjxBnOnYVnT/OLN9OTSsgGtGJNd6lJzzarpXSGSBsy9ycf+1ef/eIfl3mZl9NgGSSw -Zw4imgDAROS8iEjUUIBQDl0yZ5RB8eKnXhhQoQhwJexZGETApFSNPRKwExSIMuWLAEGSOVP0XLpo -guXaWDKxUilxIjyEWKlZ4bwH9f6//Rv34cndHi5Amp/zrqpj7VczvhCTnzNFO9qNO90SIhK1lvbZ -xymgrkuf3+aETp0kLsuyzq8rRQn5pWh6Ihkk5Co2e3sFxMQ/tTp5cr5QhEWRZ8quxaMFMw1CMz6C -ZqxHC4dJju2ObNePtISsh6v96JGotXAsnf7YCTretBQmL73ytcFg+ytf/4uP/+WHBv2+rSoEAAbS -yEGEQRkEBFeEqKnFCyAQIWlSESGDzZlZGCF4ESdSig8cHLOXKFFKYzKniVAYTFOhJuHdDAB7cbNg -MoUKmcVOA7CIA4NEhD4w/rO/3JqEZBbiivUDYp4u8voav16/R8Q64VCn34hoNBrdjqmGAK0Tz3z+ -ygEJUZKQwaTF/aYM09sbVG8djNZJml4jfovAJCR1pHWlEd6zNHnpix8f76yfePq9qKI0TaOrhTjn -y+5rxcrbP+AD0ZBRh3sjWlxoqjj/rh+99uLLX/v2i1/9hX/3V86efeXb3/3Slc2Lg+2+sAABEQYv -EuoO/WinofYBhEVFJCLAgBrtJJBBCRIsIyN4IUbxQogsUvqAAoTYWIsbJ6Jix7lZUAkJgC9DOm+q -iSciDhzPmWroVEwmJm8lOOZS2l4HL6UL+Mkvfae+By80C9EsxNOQzEIy8G9f9feNEHksPH9LW18p -RYTO3dYTXT752Kc2Dmb7XIMW25DRstrOfO/A/O6RI47jOEmupdUZ1Fw7+5Pf+d8+/7GPGE3Ly0s/ -8zf/27nlU3VDuzhJLrvFV4u7bNP7VmM6uDi48mL+6u9yVWxuXVLKbPfXx6Ph/Pzi5vplnShfBQAA -AdQIDKiwmniTKEARARBABBWRCJSjXUu1XhzEsXGkiOofCBEQMQR2gRExXtCNk3E18PG8Lgc+aqp8 -4KRi3VTV2LOTmikVd3SUKZVQvm3txHdMpAKWNuiaWAYAGrmjy44uAUZRFPmo+/x28x53wbhLIF5S -TyzyeiKzFKZ7tTCEEPbN9iouCYUPvXGBx2iES6c6JDt3040UEe9FbWryHBHFSRLHsTE4Gw0+//Hf -IwQRKaajl7/05+/5+b8TJVme59O87JnVu77WW4px7/Uv/tE/mA2vaDfa3LwQJ0mZFypSwYYebJqG -liDsRRiC52w+8pZBJG5pQAAGlzMAoAI7dAAgQYRh181lEJZMq7r7gggo2iVB+iCKULwAACocny8p -Qu/YFwERi55DhfXZkIAU1oWR4qW5GqNDHAgi6H6vV5sZSilV/6N1HMft2H/gxPDsJP72TrMMb7dp -VGLzknoSAEh8CtNUpg0ZZTI5kJjpnY1IynBnaxfeqv7rMDiSRYOZizwv8nwy2Prob//PIQQgIgBm -ufjyV1yZ/8zf+vsjXLpMj3p54CJCw63v9NZfeuOFD1146ZNpu1PNxjqmqiwBkRRgrCSIq4JJFSAg -AQK6IpBB9gIiwbEEAUAOAiLCIEHEg6BwkDp6CgJOQhIpRBRBImQRFiBCZomI6mIXlRIHEctIu3uM -s2MRqAmhwbEvWcdEEc62rDaUoSoxaLi6w8reMF+R5ysrK2maPtKu1jL7Yq9xdpzcl96rgjqHuRzn -enACALRUDRknMs1knML05noX71yqQ3WHGuuK8YPQU/PVb31psH25tKGRYBqb0bRqpmbj3Mvf/Oy/ -Pv6z/40mDA8SHzn4cuvCV9944SPrZz5VzobKUDEe1akoX9bETBEAUsBehKXmKpMGYfGlsBcRES8C -II4hADIgQ20SlZ4JEK5a4cxAWgGDiHjPgTkEBpB6+wf2IiAcRIJwEJ0qdhysoAJh4SAm3i0KK4ZO -RRS1EEQKHZRF9Tdv1R7dez8cDp1zSZLEhtaadrVhh1YX/q1tNnYgGHWFjRnND+nYDp0Y0HIFDYcx -imhwCKCUOuuOyx3u3dTDlQl2K0wB4O2PEdV44XN/9tcf+xAAECKzOM+eJY30eFYV2288emLhXQ93 -er5p+UFQVRAJs8tf+Oon/vHFlz5lqwk7Fxy7WbCzAICkUFiCE2Gx0xBKBti18qHuJuiYA7ATZmEr -4kEFNEgiQoSKqO7QiYiEaOY0IqolZUfB+WBdsD4wS2QUAFKHQhCxki4a0uhybq5EpLAae50QaZQA -iFBz49wscJBq7JAwOCHaNxE2Go3G4/HCwkK32+0m8IETw7Pj5Ju9htt/r+y3CwJkIeurDABAAQpn -Mo7KMtAde+8ClGM7h/YOnASRTCZdGqyqzbeimcctceX8mS98/EMsohC1osAiAs3UBBEXWEQ++eH/ -tdlZaK6tTvbrv3k34OCEgzJJ8Ha0/crcytP7S8UuBF798u8ML3+3KqpgOTgJltnXmSkijewBANgL -e2EWlwedkAQAEA4gQURk18dlAQFFiggFSBEAYLyoq5FP27rxUDy9WCWrhhKcXiqFIVk0zBIKFgWa -UQBUhOXMuxkyAzsuBw4QRSDKdDX2iihqK0SIWzpu66Jn47YWAWQgfVNnuLoM1zlX5/xFZGdnZzgc -Li0tdTqdRzplJ/Z/cekIdnA5eiDlOJffe+gKscB2Nqd1sV/d7RGiKvPnP/dnAFBv5+QDa0XMAgCT -3CaREgEk+JPf+vXn/v7PHa6v136YDi8MN1959esfXnvsb9hydPHlfzMdnVt+6MddLuP+a3GWHXvk -fc++/79OGrfYtIaDH2y+uH3x65df/cz6K3893hrU0l8XIyhDIhIsc8Br/qsEESehFLCCCdWiLwJS -p84ESCEaNA0Vd3W55SlCKYUyTNeyYsvZYSCFRd9RjNmJqLjoTFvllyvdUNG8xhxBg68CEZVDX5/Q -zgIRmliFXBpLkU6VK4Od+nheFz3nreiE5k6l3nLRt/jhm7ZJjaJoYWGh1WpZa0fjcVVWIYQQgjFm -aWlx2899dXvuXn+EBx5PZlfM6Mzbc61P/f4/PfPC553nSJMIyFXXmkW6rWScWwTothMRaD78Uw/9 -yr/Cu6192Tr/ldH2mZc+/y+DK6qin48vAwCpGLUDAVcGCFrEmaaaX330He/7e4+/+1dvWA2G2698 -5c//B60al175y3zQ95ZJoTCwZ1QYrAAAEoiAXLXIJYB2dbgMIAbRUAc9RQQJlaakY1CLnYZIq3Lo -O08l00uVEtJdZbecRKBisnnQMblJ6Mw3vHhXBl+xblGdMmMRUoiEduJRMFuNSGPZd6RRp4SE+Y71 -Jac1HciJiCw83vBlKIdeffCX/7Mbpsy62cF4PI7jWAC0ieIkSdLMRHFlXQzlqaS/HE3nddFUNiFP -IAx1TcaDlaS8F8wsVpAJIAET3GFQ6U6wvX72y5/4CAePCKUNkVGR3i3FbmWRJpqVbnEuJURC9KNL -07NfyFaf0807rja2xfCNF/7o23/1v0+HF2ejizafAIIw2LyqTW5fBOFgMqU0eT9af+1Tl1/7VGv+ -dNY+7l1OZPLRxmx0YTbYeOPrH/N2xhyQcDdeKQCCIsBe2Ak7FitSCXoEL1opRYgKURAEdKaUobhl -Fh9pliPXOZ66mtlGAAi+EooQEXzBpqvZC1cSzxkyxJ6d94wiDGBARFCjAISKTaKQQGkChZ2HEiJw -BUctnXYNAhQD1zqepN3IpKoaeZMqDuJLbixH+OsfswYqA1UMlZEiltJAZcDiVXYHESlSpHZBSl3d -ixcBUAAAEBAcqyKYgk0eooJ1EUweHgh37d4RSZ7KrAGjVGYJ5HCdi4zr+EiJjYaMMpg0ZKxuv6cB -g6Lrw1avf+uLn/zIbzJzrWBF5V3gELhyARBFJDE6MMeR6jTiVhZFmgAgWX3Xyb/1z3TjxoR3VQzH -vTcW1t55w7Q96Z/vb3z7zNd/59J3P2uLmQRBjfX0XKdg6/b51dgDYtxUUUPVxSJICKLa3cem/Y1m -d7UcF8VsPYqXt994TSekDNXhneCEgwALM4gTFQAF4epGEyySdSMVqair820bNVUxcp1T6XijJIU2 -9zpWpFFl6HY8tUkYkBAB7MjrphIrzrJOyBfBNJRJlQRI2kY1cLZZ+ZJNU4kX9tJaS0RkfKmMmxoQ -ghM3CypBk6pixyfzKm7rwRtF1NRxS6mIpleq5mqsA5kApoTm3jbEKGzARlAasDFUkVRpsMYXcPXX -rbfD0FohqVpDtIK2kRZYgBwATRTt+PbL/cTfy2baDwYsZhayESwBgBKXQt6AaQbTFIrLcHKICwBQ -QrMHgMIxlA0YN2DauD5KO4L5y3CSgBswWYuG2k9m4/4nP/JPhDkEnhRuVjhGXVmn44xUFoDj2GyO -xnNz82VVDGa5gkkri+aaccs/P3j+/136mf+yPjN7u/7qX73y1Q+vv/z5AP3O8kOP/eh/4spCMH/4 -uf9wce3d57/z0XMv/tn6K59jz6SJg4jjehZERF8F0uQrJo3BSTUNAhBlCgDYsy/81ujbpMhWAxBw -ecgHZ0lhsMI+BMu1PQMAtdFPAJqIWYgQAERAIfoihJLzUaUiEqW44ulWJSJ2FlRMwbEIatKsQCoR -lmCZFEUdDQS24mRO1+dXMZHBfOwQAGaQ77iopRpL0WzTVmMXtbwyqBOyM++t+JKjhmIrlfNRi+I5 -ozSiQg5MRgMCRViO/G24+0gOEgd7KbuSYLlC220c1yZqEGAnsmfCozehtDFrDd+Oim9sJW9/Hu2t -A6OZQWcGHQC42hl+D5AqyCrI+gAAkkCZwayJs6HMjaENgAxAsT6xErOf/+M//23v/axwk8LaQCab -azZaPB43Gg0iChza7XbwMN9dVEp576ez8WQ2HWyMs1i7T/wv8z/6H5euPPvNP37pr//5aOt1FYME -iZp6vPPGF/6//7HZOZnPLr36jd9+6KlfRMlGG5dq8jB7BgRSyKG2VQIH8eV1q1aouOg7nZCOqW47 -hQrYCymIO1qGjj0SARIGy+wEEOreJKQBBKAErejq0xERYIFsOaIqhMAuD61T6XSzzBbifGDZSzoX -TbdLQQme41hbyyoiVMgiUgkitE8lbhZEpH08cXmQbQsGdEwqQl+wnQRAyBYjl4fKiYowW4qmlys3 -9Y0lE7U0OymHHgFmm1aCuBlPQ1VHq2x5B21TsYT0PJ9qULVAAwPWoDfg65+fiLJGA4D6OVvnDfpy -MG02OGu2HqTUzZFjV/gTJcezcuZx4kzu6WrGEEtIS0j7cp293tBuMpnks9mZb315Z1SUTihuNztN -YwwRaa13O38JEO46A7sVC0nMcwubly+W5XBQIJnku5/9v176639e5dukdXBe6o1vDYHIdHhBGGw+ -OfO13837LljWCe2yaBwL7xIT6pjM1bvBOiJZC7QEIUJUWDMr2YuKSIDrXmsmVQJgUoXEdf8FHava -iFeEwBCqoFtaBNKFuBhWGKHkkrRNOXLVxKPCcuwgiDJkZ769moTAySkTLIdNSRdMNfKE2HwomVyu -xhdLk5LLeXSpMJkijXFTl2OHhMm8trOgIorbyk5CUbqsZQDQV6xThYpMQuOdUgKUQ+8ti0j3sUxF -VPRdOXSttfiOq7dyjnPe5WMRcITOYIjYRxPfTs0mZ6OgAACBzShEU7CBvldsoESxANxpFrkV8dNd -R2y5/jbQ1Oncq7FTM0+eb7z79Vm8ky8uxw0Vt3xgFTdbc10ACBAIanLom5OGgOzy5IQZWGvdXVya -9fL5H/8P/vIj/9Xr3/jD4D0qFGeRsO795JnZi8lU3NbBCYiQBpfX0Umpu8lyALBCDAowAHhhqWdx -hUioNAIiaWQWn4e4qYMXIvQVx0YDgslUTcSXIBqovnTNJDaRjudMuV011xp24CijYlixlWrinWUs -AnsJjpEQCdL5iFkQgTQVY+erYGcBEaOmqsY+71nTUKSgGPhQERKESsSHuK0pQmXIZJB0tC+56DuT -Ur5j47Z2Jdd7w2RdQwjjS1WoJFuO4rYyOeU7thr52pTyJfuS1b/1d35jN35z5y9B9KAtmELiKac9 -G1d1AhvrzQSUFXXXJ3+bX4TydNetZn61ETqxpEY0QRFw/28tpvJkN4gvq7KqCSoIEGtpGllIwkoW -FlMBhJm/9lgg1nCiTcfaevX008Pt9cloQDpi5nq+r6rq2mYcSZpMp9Nms1l3Ha3bx8fN7ul/7++9 -8tKfXn71MyxcH7kbZBQgjXDVKFeGlEFE4AChZJdzKBgrAAe+ZFOTkRUpJGBgFNSoYwJAMkiESEgK -dUS+5Kip2TNp3HV8gyhDiAgCdU0WAPiSOUiwrIiCDaCQhYUBFApJ2jFRQwfHZEgZSjtGgrRXk3Li -lFFRpm0emquRiogt+1KihkrmzORymc5H2aLJdywitE8kpNDlQccq37bFwLMVX7Kv2OXMVnRKJiEQ -mF6x3ccyDoKE6bxBhdPLFRlEwmBltmWDFZMqgMM1y/9BQGZAQ6gluKFDpinTMKjeXA0SBZGC3IO/ -WvyUajndYeccM6JOoa58rflbUFOyyBAr3F0DNcJKA5YzUcjO+YUT7/iVf/hbv/ub/925V54XEQLa -O/czc20FhRAcuAgjQmJmjJOotVROxuXY+4qzBQMAwTIpDI6D5Zr0Agh2FpShqKFURKahAEGGrBCJ -UEAQQSsEREUYRBwK1ELMEiwmHS0sAOgto0KXh7q+xM4C1FUmBQMIKarr1l3ho8QggTbKpAoJvOWk -HVUzn2TaexIBVwQdU9qNBufz1kpip/7Ki+NkzpQT58pAGkRgvF7OP5KFkhFRxQQAduYj0GxFxwoR -in691jEQzj+cxm09ulhGTdVcifMdW/RcNfYqIh2TK7gceUTMuibvu2wxAgSTqGrio6au41flKOgn -5gEAqgCewTNUHryAZ6juaSOi7z2IwMhFtZTXYtgr3zTeUg2PzoEmEAHPUHgoA4iAD4AY4R6GFF4f -JRXAhZQSDS7AQgqKBAB8AACD2hidxo1O3XKPmRGRqObDUP1fRGRmAwYA6s+r8dZg8xVXThFBGXR5 -qJ1RERAv4IEEBCGg1H0CXR5UTFGm2IgkYDJFMUJOKAAGzZzGSkJPpPLCV9cQ2q3S8iXXnM3d1BXf -SH7VGSlFwUlrITWx8hV7x9XUJw2DFJoLSXB5YyEZbeRI4G1gJpr4uKEH5/MoU+m8mfVsYyFmz1FH -gUDU0HYaAMAOnMlUMm8aS1G+YxsrUdRQsy0LgMm8AQEQKQaOgyBBHZ6abVmdUNqNTEqkcLZl63ZA -4/XKFaEA5yuu6xAQAUSCRfaiASAz0Lg+ZF/fZhDwDKUHzxDkujdyU4P/73UUHs+ONdQ9gDVogvHV -Lluphkfnd9dKRDAKjII2AAACKIYb6+huWFQjgEjt/SMiEQOMKticwcTSLjdgD2o1uNZ88lrVgYiQ -kNYJh4AKUWqiJdeUG/JogLRCFGQlbABj2m0QC2IyxTFRhDpV1JJy6ARFqmAaKmlFxTlfp7TqGsV6 -gocCas4MMKAAASoER7vvUIH3ISbtKx+luiY+NLtxMbImVcHz4OIseB5vFkigUxU2pbkUFUPbOZ72 -zs5UREQwZcnmTTly44tlumRQAYi4gilCVJjvWF9wPSSTKRVT52Q023G+ZDJUDp0IBMt1JQ0gsJOi -Z3MG9oIK2bEY9CULiDKkzG4yARF8yXWNvH5tCIZgLoZmBM0I6knv2pKtCZJbBYoCgxewATzDzMGg -+P7pgyYAhQfYE+CcT0Df3jG+0xBvYBiUsJWDO+iRXbPv3xybCCKdfubnv/ul358N+v8/de8aq1ma -nQety3vZe3/fd651qqqrenp6eu62x45nDOM4yA4CB0XEQABFJBIW8CcCBPyL+EMQihDEEhYQCaEo -WAlOIkeRbRRbYXDs+G4zvsSeW09Pe6Znuru6bqfO+e577/ey1uLH/qqmZ2wzntghw/uj6ug7+1zq -q/W+71rPep5nPSMAQzYWZELviJkAjGckAQRsMgxEQmTkiHVUUCOH7akvo5paHdWf+dOXupp0WJa8 -rSoGYvg06BEAaUrjkAm1ivNUFUhB0UwgtK4OEk6dFBs3BRH7VXaBzFMZKyIA4UQTMjWptr/Kk3PJ -5q3h5Pluf5XTttx4z7yq7C9zPHJ1yGHmTKyOCgDzmyH3Mq5rHZXdVANQ2so08ggB6qi7B8nM1GDi -w2k1JCSHkkzrpLZBEKtJ/cxUrAyChLOL4BCgKjwZ4MkAjHBzBuctfE3ghgkYIDIAwGkDt2bw2vIb -N2sKDC8eQxZIAlmgL4cQ/wOu5QhZITJEhsa9/Tj/GqsqXPawHKFhiA5aB0ngegA59M+/eiEiIBgc -Dvvpxel+eLYZVLWNx//af/jXf/QHv2979XBy4SAFJgSEMjnfHDHPkT2SmlZzkSbmmRRDnk5TKr2B -mVbjAJKVPXrmqS4clmV4lGG0qe7GpwsAVA0RY+cXJ3FYp5KFkVW1OQoukFYDBA6U9wUQEY08NXP/ -5I2tVO8blqKlr76l0su4LkBIDsnj+bvn+6sMzuogT17Zh4Ur+wqAvqFw5GrSvBNEMIX1vREMkA50 -6zIoAEyCGBMzA9/y1N52LfmOSy+lt8XdCAb7x3kyiwYDLUYO6qju7Y0cBdA/mJGfGQwVLntwBIwQ -GIr+0brS/1GuKXCfXWUPdzB+PXs1K+S30aIRIDJE97YtQQAIVwOM9fApT7BOcP30YtxX2L9ty33l -G/UVyQ8CflVGNNFyp9CH6RIAvXj+W/71v/i/v/obP3bv1V+9uvc5zSOKAYI7ZZoRTHS0YgCHnlcd -1MDqoABgar5j37GplX2tA+ZN9R37GU/ThLobvqzqVPXaZCEIBzGuqjGRieVdiXPfhgbMyHjY5db5 -cVt8y7mvInp6p7l+czc/b1YP+uNbHUWoSX3LruE489uHaViX2XkY12VcF98wOwwLNzzJxGhiw3U9 -bNon2QBMD5NgEEHF2BMHrEknWqBW8y27htK2AkI8cpK0DAog5AgQSq9I4FrSat1ZyPsq2ShgTfrV -KNBlD5sER+GQB3sCQmD66jsBETyBI1h+ZWR8Y66xwutrCAyBwRP05Q/7qyb56uuOEX5PudbX/EHP -HngW9Pi2L3o2DkdVzTRrKpaf3H95/OKv1zK865v/VNOefut3f/9v/P2/tn30ReqIOsIpie/FtZS3 -MvWwpkoREMkjB5Jijacpsc5bkaqSrY46fy5OetwQediIPv0XsaP2OKR9kWph7puTJs795mqIDkDQ -2Mq+ukjtcSip+pZlq5evbQBARY9utyYmScZNyX1lT8MyI8HsRsz7WpOevNClbYEJMqtQk0o58DJM -zdRcw5PCpp2yrGWJN5wklayVERAm43/fEQDUpHVU8lO/D+tYOaAkRQR06NvJNkI5YnvqyaNrlx/n -Zr7HG9Ae/DaywpOv1IEQACAEAkIIDITgCZig/iFO/UBg8P+WB59GOI5Q9FB5bxLkf9o6QwF2Bd5u -ivVHflnpP+33nKhSo+4LJoeuckVsALyqPoODAGA9Xj/evpVLdg3d/9/+Qi25DGLVScns2fbCgNiR -PRXCcqAJ8dBqxAh0aBGwJwMgAlXzLYOB6wAzIoEBTOJxFcOAAEB0mH/EgRBxdt7OZjGbzDjsxhw6 -V7LULP4gVoT99ciBXOAySjN3gLi83/uGweDk+da3fP7u2eb+iIzNsU+7cny3HZalOfLjpjQL51uO -MzeZR6iAqbVnvo6qRcPM5T2krbBHAKxJJy5GdxHyrk6D8dJOmmMPCOOykMPuRpCkU8N7mpdqamHB -AEYe62iSzQzc47/778Xz28h+9u6P2um35OZFOv0gtjfeXt1NxhLTmfdV2TMCEEJkMIOiU1kCAHAU -oHVgAFlADYqCGIgCICw8FIXnF8AIAFAV1GCdYTWCGkzNeACoBp3/8s1zo4XXNzB+Pbn7N/4qadv3 -l1f5QZ/3SIe6rYkt2THws8QDkwzbvCqSXUsmppaniQ9pUwDBUM2BnztakBnIoOQPLSpy6Gesxdgj -8oSW2nQh9I8zeSQ+OGlqVfaY1tXPmCNNPRFmnLa1JAm3umGTydORb1b9oNWa6IYkYFaqIGMzc+Mm -N63bXg5pX1wgRDi9OyPCfpVMIO/l6rV9f5XO3z13wW8fj6BQenn8yoYD7a+Saw452EHvYHAAYSuU -QRChJpURyGMdhBjbM48Ikq09837GeSdIgIxTDQBm010XZhRmXAbNOyl7MYPSq+9Iq+a9ut1me/TC -+xRpHsuTN39us9kDgIazi/d/r5ud8+yuIeXwHLru9/tfnHl4fnGI1Akm7wsMAvMAkb/6XDT76lc8 -AwDcdHCzAwCoCmbQF1gmuLeF52aHBxzBi0ewHKEqVANR6P9/vhl+/sf+q5d/7Uf6zSMkkCrsycTy -Xux4GGF0c7epEQCe1HuyKoZGnqZ8RquZCTFOwJ+pISHNUJOCQ1PTCpIN7FAXglkdDxYjqAAIOqVZ -CXCCRxCAQEVr0rwXkKeQvx1SNN+6Okp7FFBxN6bQuKRlzCU0zsxC69K+SDJEzPviW3f6/GzzcDi+ -0y3v7ePCS1EpNr+I3bmvg0xjq4+fa5+8tptfNORx9zgtbjdalAOxJw5TjLJmcy3HYxoe53jm4pHr -H2eo1t4KNelUFgNA6Q/tuVyFHNakizsNgG3vp7hg33HeycQ8/Sxb9AAAIABJREFUbU48ANRB4sKF -uatJHb74ke7Ou4nUObp754apVlGm3l/+I790MbiHj673Q40X3+TPP0AnH4zHdyCcwriE5iCMHCp8 -YQWdA0YgBEeACLsM63S4RDwDAgQGfNvHkX9vOMUTAEBgOGkA4DDTa6xwPQICnLdf/qp9gSKQpwsk -/fMeXvV1rsdvfeoz//cPD9srJAwz5xoS0bIX11Ccc02qKHtcUYilFDMtg0g2k4MHzpSrTBCKZCWG -ulNlk960qClYMRJARTWrohOaOXHrJs1xEQEARIqBslMjADVTULA6aq0KCDqZCxiUUbgRU3Odm5QA -Ab2ptUehXyd2hIhEGGZOqqZt8ZEBYft4lKKbh4NvePdkbM99GaQ9DYtbsV8WF8lFZo+IHDpeXMTc -y/bRGGYMZDWZbwkQJp42NSSDYWcG4Dsij7ozMEBWSdqee3I4LnM4cs8mI03EjancL72EGbuWyiDE -GBYu7yRtJcwY//yf+5N3n7sZGw7ezWad99w2jZkAQgxNP/Svv/GYmYNnH/zRYp53y+HRm7tHb/HF -+9z7/43m7ne60/chT8RpBZX6+FN861vxd6mNf/daRJh54KdFtps4Ob/Pw1NXDhHC7/XEk+GQQX3j -r1c/8Q9+5f/8q6vLL5a0Q0AD02qu5TTZuiNMehRJSg4n6MO3XJPuH6dJ+Adv60JqNa0KBl4ICAzB -0ESNBFmAiRAxF1FVZorez9uQax1SSVnUzDG20VUzY6yjIAIaZFEknExZ2VGcOQpMikCmDmPnaxEC -LEUAgJjSPpuB89Sehf116k5DGaQ99uv7/ek7Zvc/tTx7cQ4GpVapOm5KnLsyKntih915WL3Rdzdi -HaUMcnSn3V+mcVckKyEa2HTGs6fm3OdNRQQ/57SuZtCcOGTcvjXOb0d0uHsrzZ+LgNA/KdOYMGKY -wn3/KB2/2NZBtdpkSdQ/yeQQAJ1zLqUkSjhrV+t98Lxe782UmYn319eb3a5HxJTLYt6aQgjx5MUP -dHfe9cYX77X3fs4vfzUujtuLD5Tu/XW3Hl//5c3v/OLio/9p+63//tcMhX2G/VeafCLClHZO98CU -/EwR7+mAXb79npkeY4KLDm60UO2Qg031htjhg12Bb5wL4kuv/KPH9z4Jk4YQLG2KFKNdaU592tY6 -alpXAIhHjj0B2sRlcA0hohQzMag2watqk3ILAMEbImLj3KJruiZ0TZw1cd7EWRuD4wdXa1Frgjtd -zE4XbT/mJ+vdk81ute13w7AdUknqHIfAI0gwbownRh55dnNnBBhI1UoWJJzsDbs27ldpdh7HXe6O -w9SRrUlqkrQvUjTM/PbJ6FsnxfqrcfFcW1M+vtvVUeqoce42DwYA4Mi+ZS06v9nkfSVG37FWa2/4 -tK7syXW0fTNpVu4ICkzOP82Jy9sq2Vzk/kmZLsOaFAG06PQAAIyrun+cKdC0K0ztAAw4IgZTcPNZ -c3p2HAOF4Lu2DYFCaEpJSIjAXes//4XU9wdWwG7fNzXmLE+u1o/W9WYcnWfab0k/GeMrkWFxk87P -Pvrm41+RT/Xx4tvc2fu5+fosJBQADCb/wz8IWo8AiIDwe+yZhgEQHMJY4Xexkv+/Xm+99mu/8rH/ -kZ2uHryGijA53xgAIvKhPxVmjIgTjIOMNeuUuGsxYoquG6GnbFYAYer7chdjN4uLLh7FpmsiExIi -4ATeTxZD6l2YNWHTj6KmqmYwa2IbwztvnU/Ya5/yL332C5fbLTpccGDAJrqxSgWJNwI6qllKqt47 -FxnMSpKDmiTQuMsuMADWopw0dI4cTX7/aZubRehOAwB057EOMmGgoeN45Ccr3GmA6bjKeS/tSahJ -XMu1KBLsH2bXkarVUV1L3pM/duOmlr1osUmjw4E4ElcUE0AsewEAcmhi/VU5pAQIk1ICFADB0gEU -nmxP3NHMb9Zb773z1PfFOUTYsEN2DgzWm/2+T2B6585FE13TxjaGJ1ebvh9v3z5rW9+1MUa/2w+P -LldtE5BgHOrV9RofvaX2k00MFzeO5senFE+3/v3HH/xzXzNQ8rjcXH2O/fHJxfu/LvuDiaQ5/flV -Bur0+2dW/6xXKcOnf+1HN6s333j145//zE9H9F1sVA0MTEyrTuYIWixvKyJKVXJk1eooIbAmMLE6 -CJj5E4biahWoBgDzLn70Ay/ZpF95GwdPzQiJCZ+10yaO3URkEDMDIzzMsTIAJuyaeOtisaLRAbbG -JeieiqBSoNXQHy1mxQSZlaz04jzNj6OoqahkcZGJkRlnJ1FMp45snHlymFbZFlZGLX09e3FeRhHT -cVumBhY7QkJu2MQmAtzyzR4ATIw8kieranJwlUPColaXZarpASGtp06ZwIEhgmb2tnvepo764ZCB -Lxf0YKD65afcUReWvbIjEb26Xjnnzk4XNRWvwOzMNOdcqzx8eNU0fj7vQghvvPFwGHOMUaqNKTHz -48erXT88f+dmbNzt22cXF0dv3rvcbgcwG8ZksFJZKnwpwMtMTv0RcPTOWTg3AGb/YDfvxc2Ob/m4 -+OLLf//zn/g7pxfv+q7v+yHmrz1G5Rt8PXjr0z/+N/4iB9JqTISCeaySTYuqmopqNR6REcVskpVX -E2SkE2cGtaiqIWMZlb2BAT5tHSCgfiVhTidbNSQ1VQQ1E9VU63adRIwCVrZtHftlDs4Fx5GdZ2ZF -zzz3sfTVOq5aHXABETHKVvq6q0OIDqoUstks7napZGFPvmEVlaoAsL0ejy5aVCTCfpkBDRDdwiNh -LWKMy3v7qaELAGYmxaSoKfQpPytonn326QFmkgwBZAQDIABRmN6ByTwPAZhwIhMe7BngEOUTqQTe -jjo+OwLf1mj0zrs37l2CbwFRqg5j6toQY+jaUKW0TTxatCfH85TL83duhOBiEzyHk+Mu+FAlmVGM -Yb3ZrzZ7791mu4/ZS7Xtdr/Z9P2Q5rOGiRwjMD25Wn/uMy9fnB+H6GZde/96fbTo2q4h7z7/s7+5 -urxENFIdamkDP7j8/Odu/9Cdl/74jee+/Z9RaP7hV067EOdS0htf/A1Ey3lIwwYM1tcPF+dnm9WD -3/iFH76898WprkVE3QIaAsJxO7PWAEDV+v0ouTAhMZoHDGgEriMzcIGMzBRcS2HGdVQkFEd1KbIV -UUVEYACEIlJNq0hNWkWrSK2aFdWQ2TFhzQOhMREzESERMWEVBTMwuFxutNq8OmMa0bKpZDMzZuRI -RKhshOSJx30xsdC4NJS8r7XIdHSawurh3hSesVYn38+yLapGiFUMzAjRFMCMCbOpqCGAGRCiqSEi -qDHRNNx0+g0RUdS8oyrKTAAgYuRQ1JwjUXUezSMAMDvHjpm9C46plFqLUM3FhJEDMah6555/8T3d -bDHr5j4EEXGhac4vzpGAGbyLROw9BeeIKeWxaWZ370AVSyn3wz70ueuic1RJmLyo1CJPLlcI8Nyt -8xCo69q28VWqAagpEamp92G73W13wzCMpdTFol2t9m+8+ej2rbP5op11zYe/44PE35Jz+czHPxmu -1h5omZaf+63/5frVH3/Hu//k/eWbTXf75t1vPTp9Z2xOQ+yWT16bH905Onvxn0vci2QE/Nl/+D// -1P/x37pIF7fe8/orn5zI93CoSYE8TuPZAKDsJa3r8WLmPKNHH5gYwcAFlqohumW/KaNAg3xEiMAO -J2sQmfzEs9YRTQERyAHPyPZGHSHTZ+7fP4oRARyzc2wAjpkIrVitojxHZhd813X3Xn9tu93KNEXa -pniSUlUBmJAJJ2+PULBWyamGmXOEslF1ZsH6ZQqt0wyEZNX2mzShjWZQs0wf6dNX4GD8ZjZMSCsa -mCOsYuSoihIhALJiLYqIYFNAAzusZoiTi+iXmbCTHzoTgRkSAhjioe+kakd+/qFv+3DTNkxkgGA6 -DMP11bUP4d69NxvPHg+/lJIxUd7t3v3e908KvlqKC03LzjlGIvABPTOixTaCqWqoks9OZ6Lypdd3 -682+bcKsa1XNoIYwYwevvfagH/KNGyeI5rxDxCqwXO5KETNzjoMPZuqcb5tAhGenixB5MZ8N41hq -rbWawXK13e3HYUi7PgmgiLoR+M2Cs8vX7/09x+5JyUv6MSEAovvbYmH4V/6tv3xx8R88C0rVQ1fs -D+Rr+YdYpQz/9X/+Aak1jXupBZAe3Hs5zJkjSbKaBADDjCUrMrJHrRaPnIrlUphJzfptUtGTi5kM -OkkZObAkMTQQs0lfe5gNMfW8YBoHTYyuIRU769rAVMDMbNn3alaK2OQxqFBFUxFEeP4dJzHEEMJ8 -PsvVtvvhaTwRH5yXsXWsAFNN0jguWxFTICi9oDsk/TIqEOZcyBGwtt4FaURkFClTTT35wRE81Ugi -gJmiZgKzabCFPQ1nxGekOmSaCBeEgExTKg+Ak/QH1YyfeasQqtqz7zD9TDMjxL7fE0ItxXcdIZrR -0fHR0dExANx57vbjh289ev01QFJVZq4Kjx89fH69ffzkaj6fzbrWnZwcMYFqJWZVbOYzBDGrpvD6 -m4/HlFTwaNEeLWbzWeM8kKP5bIZQ2dF6sxlTRoIQPDFKrRhDKSXn2jTu+bt3ncPFYsZky9WOCL1z -TGQGpui9L7mWon0/Xl9v9v146+bZ3e/6Y13rneNape/T/c+/kS6vEWDugiMdi4yjwHK7TONP/vAP -/Po//ps377wU2/bRg5eJHHsHxnff+ZHv/TP/zRSsu+3jnPZnN971RxX9P/fTP/Sxn/wfKq3NA+Q6 -ESpNTYtOKnJMqFXz3sLMwdM+pW+JPKXrCgA+sIqWDIgYGlfyU885BFREOpB2VADRJsARCBCQG2RP -ddTQ8b6WWTMLAIGIEdvg71/vStVZdPuxjLW20YmqQ4wxOue6tj05Ob6+uprS30PPHoARwYA8alX1 -mFkxgCNiJhVzLRkBFSRGbmji2yChNrYbRyiABfyAKqgADtCx0yiV1ASAwdDKaJqnTMbMwPOh8iZE -MZvGQsLTNN2e5kJTik+IVY0ImTFlAYAJujEDRGTCKjB1Kgys1nJytFgtVw/uPwg+PHfnuaZtAK3f -9QqcddrjpiqEWET7fnv3znPTZehWq23TzT2bVEUaVAzBnOfLy+vtdhzGMefqPXjviYmQa005k2eX -87jbJmY6OZrnnDeb0rahiV2p5cUXL2bd3DsMTXjr3iUip1RKUQAdxhyjG9PomAaRsq8p5aOj7uat -066NDx5eX19b28bY+JxlN5bNdgAARgDE/ZDR0QsXx8/bETGm1eOXX33VH4fZSaRrwYbG1lbXbwzb -R4ieub3/1j/5l7/3P3n+uXeZqUpl9/VNl3jl5V9++TO/UEqazmAk/OWf+dHHD78kVUPHHCltKyLm -vZga7aQ5cRMom7dSetWqB8h80pJUyLU3MEfuHXfe2bXd537nswhKhJIFAVRtGoM+Maa0GqgxkFUT -0JoBVDhSkrrgUIsAQiZ1jDlZr9XQikgGTVqnSnGSzE8Iifd+CiB8qmszBTETFfIEHVZTizABKb5j -yZoGmZTEUmziKYGBZrWGgEBMBewEQ+BACFMoZ6QeSw0KjGIGAZ2gqnmmXEUNHKMpOkdWhIkIFRGL -6LQrpgqCCEXNMeo0C0MBENWmb6KOUOskaCYzCJ7GLK99/tUPfdu3X1xcNDG2bQdEYGoAuVRAirP5 -ZreuaIAYDZjw/r3XZ7Oj3X7vvHfMPA7bQjTZHo55G1xorF1v0m7X51JNYRyL6Q5JurZDQtXRs0Oi -R4+v2XHfp1pt3w9I3XK9Cx4BzPGo4nf7/Wq9N1PHPOsiIphpyrUUyaWKaEpluhCr6HY7XC+3Jdfz -8yMznc9ni4vTfamP7t8jh2OW5y5u5dWWKlUoWa0WnTWNFNUntZqRJxe4DsPnPvHTB2TQwy/+9P+a -xv6VT//MMF698OJ3/Onv+8t/kNAvJX3qE//4x3/0B77wO78hxSZVIRJINY4ISGVQFXORAMBVND3Y -IhCjVmOPKhCP/OS6M6k30lBrVtcwE7zw/Dtv3Dh/9bOfRVUxm3zUMAEVEzVRM4Iq2gbXeG4bV0Zd -79PJUavJpGqzcEYwCyF6NoTtPp3EMI8hV7Vo1zakIu96t1YtcOBRW9M09rYBJ4eWuVpwDhBKVTzw -h8G3lHeCAOxJkmpR1zAHLIPWUcjRNNNuYgr1Uh0SAJkaIrhKoWMpBh3o3qhF6+0wGJNosnhBOphn -MOFhTiMYADKTTa7wgNNxwBMPT5VpwobQESocBsNMYTPtrr7vQ4iI1M1mtVYyBTQmf3Z+agYt6b0v -DZMUdTKys/22lBxD6LqZm4ZRet+E0NQ8Esec+1olRmcQAbo0FlEsNS9mM0J0nrxjQMxlPDtbOO9U -dLPpvacb5xcqCcCqwGbbBxfGVLa7npCIcHojiBAQplcck583RESItUqtEoMTkeVqC2ZVbBxLv+1h -AGbkCi++552/+Uu/tU79ogvI2DiOjTOwbU4K2I9l4aKMFnvIWUJkveuW169/7Cf+CgA03Xy7frHf -rbr517a2/tRv/8wP/sCf5wZ957AXJEypwNRhUTA15GfyWZBiriGrwMkN16NjnBDntFQzowYrHCYi -ukAI4IOfz+fz+ZwQDcAxVVCY1PQT/8ygYy+gnrhrfBudeKtZT0IcSy0oTsgxpVIDEzONuRLhJmUm -UtFBagX97Cbf9PU8AgKoats2bfDTVeQYuyas+zGpVlIboaqaGbc0MYs4komZqms5FyUPU39aiiIp -BwxzN3WXqmpSYTIiJEQTK6TiDQuQIwOrVier98mTa0pvDCw4zlWYsFRwzHpwTAfvCL5cABzgIMek -0zGBaKLMONUMo6gBqFkteRxH9l5VRMWIHLuqddj3q9Xm6sljFTXANmDJwo76LPv18uz2HUBwogUB -UxrJOJcKkL2PtUophYiYGzDMJd997qYPLrpWtfbDrul82/rj40WMXdvOzIqkER165jGVL73+eKIe -ssPbt85EDMDSmHKVnOti1k41A4Ayc/AekZxzY8o5paaJwzC2bRMjv++9zy8WbS0vqsisixe3zlff -/NKnP/WKQCljZeJJhpdAyOB0CDBqPqN6jFCwCrp7lW44QbOljPPNbz36ic998uMycMnyl/7qTxyd -XDy89/mSx9nitJsdx6bDp+qT6+v7ppC36gLFuTdQUfIdk+GNkeaEgbUUsNF60AdMNZAROCDveari -JkTPdNITwlTLAoIWDfMoKqqKCIZgDrsQAjETImARHUvd5+IckUPnyDH5gL6663FQhNiwBqhkx/N2 -zHmzyTEyIBzFuMt52+foeE4+L507nk55MzPvfGCe6k4iar0r3juk6F0T+Ho7FhFiNIdSFRGAcSLe -+RlLMkBwzVMgfcJnCIAgVQnGpYp3DAAGKDulAMgIBAKGM7Qp6yqAgKKGjsxMGShQKYqCAMCI+gzr -nE5HBASYTFzUjBCrKhI6JjNDgirWNb5UnV557fOfu/vOl7x3R4tjUxWV9XJjpvPFfExDkjGlNKQi -qlXVO7p8eH8UjE10CF6KDONOO0DAUtMwJjNUtWEYkbIpitZ+GBqJ1alaZXZSEZhWy1Vs+nHYNbFB -QJO6r/urq10qSaSqmEgFhKmhawBSlRCPj+cxhJQHHwIzt003my8kD0jdcrm/Xm3n89YMhrEM41rV -1Ozs/ITZkPCDH3z3e991V6T+/C/8VlruGuCi4oWPZ83aUqkW1g46GwPgXgFBthUFLCskaj2X8qQf -8+rh+NlP/OJHv+ff/u//0vft1o+ZsVb97/7Gb968cyiX3/fBP/79/9EP/O2/9V/mfd09Se25M4Nh -Wc6r+0Bq3tk0vsI+52y2KcUhv3LdqxpiMTPvQ62lCTzBGvtUoEU/IxmVIxMDBwS17WabnbbId86O -a5EiimCqVgTAwCMF5EBsZkOuBDhHv5ccmVpwrkIT3An5Hdi+ZE/EhM5wTn5Txino0XBqeE5ayqZt -RRUnqAbhkGhNJv2ATFRRyRCVpgEcWifrK6hZTSF0XE0nGhlOcI2hVlOwIoKIWmXa8jaAJCMkQ9Oq -GsFEXcehdbgHMoAIGFBHswC0FmDQvarZBJFNhlwqxo6m/3rPlMUATQ2YMFdFBGYqtU4qe2JKRXMa -z85OTW233SARE52en6oIEs269g3W1YM3gUxYjQAErjZPzsm+/Vv/BVelSpXYtOMwAkKtlcgRNyIV -kIdhrFW6LtYqexnmi5siPRGJmAkAMpHb7ff73YAETRtLTuvtQOhU6jbtnAvMXPKgYGBht++dw+1u -K7NTNJSCORXV3X6/YyZ29OhylXNmdqMVMEOiMeXgWY1A62az7domzuJur+agD2IeMyo7Gk2W2xSC -awGWuxKPfRkreM7b2kaHTHkj8cTXRn1gZvjkr33sEx//2PLJg7Z1IqZqf+W/+B4kQvT/04/8zjte -+KZ3vPBNn335l8pYl5cPP//qxwnx23j2Tg6dpF0aL3yYIbgqEOOtfrsDfoAiAAbgHKtMmOxB3EsI -pkCBiGCaE3q9vF6uLqNDA3i83QfiSFTN9rUQozKogTpQhoDuOo/siD1VsYpqrOxAgu626zFXCJgs -N87tah2HWrwBQBIxhDLsj2Gqhs0xi4eKGgEZYJtyQQWP2NJyTOgsBO8RNZnf43pMgGBkxMSAjol2 -OA4qqkjIjLgDMQ3EMxeMTQEcIRBBkQrmBWGNEgw9kgARlY0Ex5OlRSXD3jxgNnVG2SkAME/cjcNw -EANjglKVEEWNJoNUnroBaAYiOu1ex1hFAWG5Wj15fDlbzK+Xy+ur5fHR8XN3b3vvReqXvvQ6mp7G -gAp9KWTofXCoOI7LJ1f8kQ+/t9Riis55RJdzUbFh3KnaOCREVqUQEIFNKOXtMOxVxQAUteRSsgTf -OO8YA/uujPXx5bJKUQHEiWcqAJyz9MM+Z2FGRyGnYUwjIKqqVPM+IjgVevjoiSrWWmrVKlZr3W57 -Iiyl1FIBuRYx49Vq/+DVN1vj47NWnB0dN7gx6euZb4Zacac3IJahztiTAt8KNmcCnxfNLOtsQ92d -d/yL3/3v/sO/99dEqpmVLIiQU07j2LRHd9/5vlt33w0A3/kn/ux3fc+/U3bDb//s/9UN8C+Fo+ez -0PFxGcY7TWydD12HKXWzxT6XKxMBEIAmNiplGmVbxQQBPXDk0BEQmlrg2JHfXz680XYOEOSgOifE -zodZ8KjgEGfeB6Kq2hAfx+b2fKbFOvanMZ7H5vnFIvc1AB+HsGD/wsmxF5SsRyFE5IZ47gMCz49P -zcx7F2PYP7ksLJkVEJxgYG7ZnbYNKZLBzLmLxSwS16q1aiDuvJ9wRscUPJtYZNd53wU/C2Hm3SLG -1rnOh6PgWucb4kA8YxeZIYCy1apIoAKOSNCAwQLg1qqoionaUGrN6o1UjQ+lAjKCqAHgJMCfANOp -j+Ydl/KUjgqASKUa4AE4WizmFxe3Tk5Ozs5OT09PwcBMRez4aNEtFlQyWV00oWF31AZRm6wu+Du+ -/QNAPAy9VJ2WKZYiJdeqlsZUa53PGkLHzqsqAFVRFSilOh9LLWaaUpIKUvNmtx36UmtV05wzGFbR -WmrONY11GHMMbrrawKjkgkSqUmpRc5vtarMZJtZ4LjWXUkrdbHsAEJFaVVWrSC76+PLqrcuH/sgN -TtyCxWxQkYA047FKOHaCtu9cjWAN6CBurXUscRDMWkzxKP32r//UftM3kVWnsWjOOWJHNfcPH772 -3X/q+58VxO/55u/4yb/9gy3Ye2Lbene12foYT50D1ZrG6v243781jpc8YXjYNm0p+cb7Z+HUGUAG -JUeukmzUCR3PWgcwpH6wvCu5LzWLCJqoemIm2kkZrFaySlZMi6kFLCr7nHelFFQhK6jrMa3zOIBm -k4pWVJdjWo1jUR1LrWBZZD+msxu3EMA7H7x/8PD+Po8AIJOODAAAiHDINVUBwja46N025bGKY3aM -iOgdOabgWEQnjUATnGNkZgRjJsdkh1nvQIRiU3yDoEk2KcaIolqrOSXZKQfSYurMCVVVyIYADIeR -AnqAaSB4EgXPJGqOkJmKGCIcsg8AAyNCMHi6PbRtm5u3b0/93SICcHDaK1IJGSRpGgygAoGpGjgf -1NT148BMSKToSh7GIQOiiAFALlmEiCQlGYYt4c4H531gxlqkbdtasoGVKqpoHvvt+up6N/TZOQai -kjMYOO9qraXIOKZSpNamyugrM5OZ5lqCd8zcw7jZ7Icxi9iUtpqZiPb7hABjyjH4ccwheKahCeH7 -/tU/sXVDJdFRnXf9MLLnAE4uS9eELzx6DK6ehsjeJKv2cnnvOkt1RAJmaucQ3K2jm+/9M6/8yo+w -JzUK4TlgMNMM7/2bf/1n17vXHbx0fvP54HY5j+foTBVKlRhRBNRMhJzH/b46h84ZTjAR5ZQ44MmL -nWv56ou77SsFKk62zHMOz8f5VEgW9kPKxZQCeqblbhxLVbPWuRuLjhGJDtjQ8by5XvfbId+czxzT -rdP5bkzLzXAaWwHzTLNZXK37kuWsa1Op0bGY9WM5ePkgqSoRITsdlAg908QBci1vcxEV9NTOfQJF -xaHUNjrvOES2bA6RmdvAtdiYK9Oh2TuJxVCtikBADYoGlayqqrMMWoqCMxSsg6oYeChFyGPdSHbq -iQorAiBgrtoQqxkjTe3kqva0gwEARkS5CoBN3VwiRIRcFBidw1o1eMIC6+XVbtc3bXTOVVURMVCT -+ujBo+VqZWU4bwmJycQQRdRRZVE3RZqqlppNxQxLzrXWqUgax3w072oVnMZIiZbah+BTSimnEAMh -eB8AMI2jSN3vR1UrVabUE+DQpd8Pfc4Chn2fiqS2aZkxhphGSWMOPiBC35dSpWlC18b5vF0suuOj -bj5rZ7Pm+Hg269q2DSE4d3gLnoHaXzYWmf7a7oaJWWVgTAQACvR3/tY/ePnVL6knJoTA7oZ7cdHe -OHvzw3/hT5c8+6lf/TaTAHRcSlk+xn/y+AnAwuAx8xddn0qdAAAgAElEQVS3qx8xAO8Y2VEItlp1 -JydWMjoPKQ1H7Ruyz8Was5j2lRsaHiffEEVkoFkTb99CBYszBwbDrjzAAREx2zgeWGJsWEdNIIxY -1RwQAXjHEwvAM1u1XLRWzamGJlgVLZZSZSBHEJlbxSdJnaIzJHYAIKJHL5SxVhVB4qkb0IbGGZKR -M3TM3vGJb9ZlzASNc6euiYGvNkNE9kxt8Cdd82RyzzJD4ja4VOoBVtLDG5uqmpmiCkJ1WlS5RWTU -UdEBETZzJ1kna5O0rqAADtrWS1HXUGC2auN1ta0xkagRQhULjiZLFlHzjnNVVXOOwGCyTJ2IcVOP -T1RLRWYaU16vrnOehRgce8dca10uV0fHx8cnJ6vVctM/MBYDATElyGxV1KUxGxghiwgR9/3ODFRR -FXLJtSgSpySiSVTa2CKhGXjXmsE4FCQwo5xzCL4WG4Y8dSjMzHnnmJvGx+gvbh7H4LsuLuZtCH4+ -74KntmlCcE0T2jY6R4jYtpGnvsCX19ui2wwAxjHff3DlvZ+mkpgpAIkoAbAP19fLz77y5nzW5TKE -6Bfzk+BYNDvnIQsX1Sxhy1XtUamPdsM83nzfO+bf+WHb7dtPv2Iqwcyqlhi9yeOafiFd/3LbeCOs -JtaPngiHAWKQ/X63mL1Cu9+56SkaBwxTRyfQ2YeaeE60wpNZ7IwRcS4+VdkJt8EjwdZyAHSBguM+ -5d5q9Dzvwm7IpcjIVeyAAFbRtebRVTriGnFDdbVaFVTosIexi2GZ95Swt4xMmyEfuYhgVyn1D0Uy -fOhd5hHrBNQwJVQCEzAPIGqrcRykihmYbEsajHc1Z1ZgBKtzUyJMRRFUpUbvzEABsshEw6xVpj0M -cxRTYQOFcV2bU1ermkJccN4LGCDBuCyuYxk0nB1orURQs6V17c78sMmTU4sBTgk9ERwAUIPpLJgU -D6LG9OV+9jMOBSJU0d1ue+Pmzc16k9IKFNpZO5/Paq2IMJ/P1/umz2sONBk+ZqvA5koVREi1ELJo -UcVSq6qllFXMeRap6BiJ5m03m3VmtYnRe44xmkkb42LRsiMiFNGPfOQ9bRO6rpnPmhi8D84xsyM+ -TE4iIqSDSxMAQJnGQKvs+/Tw0fXlk03XhCqAONmjaAiNc14VrJbQtirjpz7zOgKdHB/VmtRqiD6E -djE7qnUAlNVq6IfegB1jGjTny+AjO1zKxm43AJTHk236UK4vHMflsD9OvfuZ119q2ljViDHEOqbS -NMFkP4w1jS/R0Z8V298v5WM0nF/kd9zl13OJod1s10pjsYsP332h3K5AAKzASh7ezC+nfY0dby5L -nktgl6wUp+qpmmC1PmgFUDCR2qsU0IBckhDgUCulElQRgIgcU+fciQ8IuPChif6tfmNqTfBV5bxp -d1DWu7GjBhGXddyVxEQRiPoABmPf03xhYLXWrmlnziOjqBIhBx5LFVH0hHMeTMo2VbDFLDYLr6MW -swk1Z6KxiHOAHVlAE5AGcxIIgEBS1c1ItiZigDZ5TPiOkaD0qkUBMMx54oeGBY+rioh5V0PhcOwy -Yy1qDCogoj66UtUzlao8EWAAJlacqDGhyjRKHqsYIpaqTXDTBiCEq0cP5vOjpm3NbBjG3X5/enaK -COMw3rv3Voh0HMOulGEoE+MQGd1i0XZt4xx1XfTOzeatY57NmrYNbRNj9DH4EJx3znvHjr0jnrKQ -qflnNkkxJlB234+r1W63H9+6v1xvtjE45zzRxHAFkZJy6bpjJnA+aEk+REAjkk9/+vXdPpvpc7fO -Y2yGYWeo3jvmXRObJnZmsht2jsNyue1mYb0xZgoh1ARDv8xpJCR2+ODh5TiWUsw5DMEzM1j1Ft/3 -3pfuvOsmalTEn//5b56fvxFmv9ktIuP77udv2m57dgeqFhLmrGhdjLMY75p9xACO59cf/WPDh977 -6PSYf/23vnDv/iqj3+4GT83yer3ZbJjIORdCnB03SN5H9QmbHegGqhN/1J4uYhBc7/r9OHrnnrs4 -Gse63Y6+SnFqEZrTiKmOOy0BKqmIMqIpBiCv5JAkmde6loSGJSsBbfqUqva5eCYzqKq1qmMzs5e+ -Ka3WUKvUWpk55WwmBMiGkT0CzDlsU3JE3d1mskGZLTwvtXHubnfUc9kOaa0mIhnACDVSd7MRUaiG -gbrQkEOuqGDFpETer3OtFczKTl1HaS0THdC1WAapg1LAshUkBLLmxD3zXtdiYc55JY4JpzbFpJJT -cw5VbMp/zGzKi9xBJwCOKeU67RNVM4Ock6oiYIyNY4dEKY1EbIB37t4RkViv3r84f2u5eWu13acC -Au4/+4//TUIyg5xLP9bddqeqIQRmEtExjaVyLqOalFJFNIRgpogkVVUUAY/Ob6+u7hPDG288vr7a -D2lgP9tv18dH85OTeRNBpKQ04P/D1Js825Jd532r2U0259zmvVev+ioQXREASVAwwyRlUg5HKDRQ -hCOssWce+O/x1BN74IHHHjhCcli0aYmyQrRIAiwSqCqgUM2r19/uNJm5916NB3kuoeHtBzdz79V8 -3+9jWKVH0zR1KSFEFV/KDtCY8rzU4/GYcrjb3+VSiTDFBErHeRbRZSlgEHN4tXs5TQXRTYkDiwoT -E5OIEzpSPh5ra6rqMUZpnrpghjDXH/72B32fui5txu6f/zET/xbxOwS8GdLt7vn//mfdPEOp7e03 -lRCWRf+Pf9Nf3UZABgAiqvbOX348P33ZPTx/Le0h5+3mvD5+g1682i/L4eL8vInM8+wA7bDItkZH -JjT3bBiV+6NdojcVq6QVukRnBZOQCIrhJaee45s0HLH1TGNKACBkHGidzyzWxjFJ0dd3U0qhoh5A -lPzaiwewC3eVOoll9wwNDcx/ugO7hYd4m3JCiNM0zbUV1AAEbmyIrRVXc+emEBEYlGGpUqqO3VxN -91Irm0QwNEjE5wgEKQcAAAMHF3Hqgxaz5h6AM7YFrHlIaMVCT2tyESKEjlYfTPcw7r5eUs/UEwU0 -sXwRyq0AYAwk6xLaT0e+mLtDU7svihAc1tkUIhJAE0VEN4+BlqqRuTTd7+84BFVdloInh7SCg6gQ -0ly5NXk8jh3w9XG5K0v4V//nX86LTFMpS3MgIn386DyEEDgFDgCw2911Y1xXiCGkfnwUoGzOHoku -Zbozs7vDJynmy4sHZXlRWmlNStmV2kor00S1NkBDoBSjNtBmt8vLcRz6bmTkKsswDN88e1qKLUtV -a13KDq46D306yRaVgIN6Y+Nl9tqk02TqIos2DpFjSk0mBg61Hg6zu5eKMZYYYmoxxobgz55fn5+P -203v7mdb3A4D84gECHB57v/tfzMdj+WnP/vV3WF/tr2gS/uv/ujbL68vn18hc7/dxk03ffk0fPbV -2/tHbxD9zlLx1RUwuzubNqbbbb+zLLuloO3L8lMrX+U3QnycF27zcnY82twmi6b54qDnC5zvyo6i -7uO4dDvGXcWhHFxsauxNnQ2Do4oxUUDqqbugdK1lhNhDYMxr58+EVbSZKcDsda5i4JFpUc0vuqa6 -6P7VNBHC0bW5QkAcWGcV1cUsDUyBylFElDtCwvCQGuPXPCEjnePI/ZYJ7qPrVWzNnlndMIjYFnVz -RGLwwCGQQgfSLG247mU1p4ODzMYBOdF01ZARGaer1p0HTrSmWhAhTdDWHfZ9GAL4yTaAiOqnYWhp -GgHMnBhVPQYy8yZm5hBAzV69fFmbbc+262KhiQB4re2wP5RS0NuWz7dDjoHHFBNRePb8NnCHlGo5 -iunjRw8ZU6CYUlrK1KTETL6q85hLWabpi81mU8oSY0RcTRA+zdOr19dXN7eqXoq2JqXWhw83tTXz -0A0XrdyyuKoC+DBsiMJSqmpLMR0Ox/2uHKdjbT6OnYi7Tw42mfd970i7wyFFZoyqcJimUurEPE9L -ypGZsmVVXZO8b+6udvsZwGMMZgGBQ1DEeH42vPP2w7OzYbvpc44pMiK21v76p79aypJSDKEzFWQ8 -HqrpHRH+1/+0XV4uAO6+R8R7du3qwUVAeP4S/9+/7n7286DqbzwcA2/M4a8/5ptbRPiDeYZnr+6I -zhHI3K3zYhCVAICyi7uZR+Q0GHe+qlmqucNs7ckBXjk8N3+JdkOyGWQY+fbL/YupHY2huEUhUk8c -VpsIwdqmemsamRBh5ICIBnxsdTGJTD1xcozIF9xNoS6mDDRiOOu62/2szrzQkJOqqRkCYApzLWWt -3AMBmEUEBApIiLBaEAO6+wr+r1XNzTNAQ5k0bxkZeQU1V+OI2rztlBOiU7oIGcN81ShS6IgY22Kr -01/VQuBSZNWIBqbStIukVU+qKvfVJ2Dqa4u8umeYaO0rpRXvlxd3NzkNuKKtjY6HY4yxG7vjQW6n -0ue4ThIdINRaBAWczGFZSmnT7tgChzBHQCNkJCaPqsoYyrKY6+EwxRD6vGmtVZk2mzNV2B8mM25t -MVtrNTzspz4PBfbTvEMA6bquyyJS7mpMnHJGIPfMjLV5KVJrWQpL8xCQmCtKbdr3GcBr05TGeX97 -fb0T8VoboItpDKFWTSkyI2GtzT94/43Ly+3DB2cXF5vN2G23/TgM45BjDKuHSFWXUmBpDoEYbq4P -atr3KcZ4e7ef5lZFcuyI6WS+wJOoAdcQUAR3A8M3H/m/+Gfzv/hncJLq3n/fr760n/49/9u/jE+e -nrujrQHSZrRuV9zX08QBVG0dKRr6vdqxT/H7RB+tUAMiElUF2K/SMLlyeT7BC8DX5i/RK5QHZ4FY -Xxza0yNUiWYECoAG5KDm1c0NzDywr29La9rUS5PoPCHm2OamKwN3wTakEDkwEQF0sWdwZiKiUsUU -MlOpVqosoMEBIlaR2YojSlRnIEOIgBsGhLwNJ3aDu1bPWw45aDUasB217pQienUKWI+az0I5SEB0 -czPHU6CrI8L6mdX8VZquoJd1VAi2uooxBGoiRJACu1qpx7Ah9Wn9Va6ekrsV0TkGv/JlqPEsphio -CYbpOHMI6GEucwgcQnAAUSOOXX8+7Z93PTdpbqBSHXy73a7M+N1xR4SRc21Fqu12ZX+YAGCei6j3 -fSaK5sgU3FxMpMGhFUDbnJ0f97cOAEZluUsd39zsSqlNRAWaz0ECB2KmpSxNWmAKIS7zaze9uTuo -uLsCQErJDGJwYoihGzf5nbPxu995d7MZNmOfUggBmSlwQrT/689/2po3WUKk7eYyBFZZmuD+OMUY -YBZVXma7vT10fZqwiOjuMMUQ4mnzQA7uZuCISEAnjc19gsRJzXx3d2zl6tvveqR0e/w2Avzyi/DZ -r0MTXuUrTLReI6uWnRkdcV2ChkDr5FvNTr2g2bpyIgREYH4Y+CHAj05yTELJVl3AKw61k52256ov -ml8R7RDvHG6iYSu92Kw4MTY0WmoSq57BI2D0XbA6gpsHMAVvYmiQgBAhxdDMSW0tyolwNmD0RLSN -0R2QEGO/lJJiPGKpqrusbV8lolfFdII5u2J+QG1RnS32hIhtr8OjWPfq7t15NHUESFu2OwNEVSNE -UUuRxXwlNHaJm+jqjncDcw9ETU559GuRdloduNebSiku1kA9KpY1BJZgDY1095/vy/cePBhjZMKQ -creUIq04oJnudofteF6WpXU2L4d52p/DGQAS0Tqpvbne5ZxTyiFENwdIHEbUY6niBrWpOixLZfaF -cdI5d9msDd12fzikmLo+T4c9Es1L6YdHy3x9czcvS52mJYRQamttCTEyUU4JACPjVEpKrioI3Hf5 -rTcfXF5szs83Z2f9dtOPY9/l2Pc9oj97dkUUapWvb58TsTshgqq7tf1+Wu3YqjAdn47DhgM9f/76 -cKh9jy1obXZ1fQNAKnr+YLi9PZ6djUQUzHy9XhGIGdY1uq2+7fVSthXzhoiXl9vLy425/+gHLcZ5 -fVL3B//4E/x//j383afxOPfr3Np95c+e/LK27vmR1nkaoq9/gAgDngy87m5mJ48kuKrfn4w9YZ/S -OeQP1qsDoZlV9+ZeJU0qk1lFaIjkDgQEUACW6oemB44lxAttb4q9drpiuvuTn7z/9gOMrGVepLbp -uNzeHXe3u/kwL0t1dz3JSIFIzEFEIsTotPU0hRCIDtymY0sjtyv1HrR5P8Yadd2RxUy4QNxQO2o7 -iDWXe6BQYGzqKRL5KotwJrwf/+O9fANEneDkd4uB1xZZzXNkcCtHebvbMsUDNALIqouZqQlgNmpq -6nazmzePEhGGWiWFXtvijn0fiLjUklJn1twtpu54XMZhQxhEGnOMfb65fr7ZbMGdKRIplWOppSxS -SmsitUkTRcym2LTZBBzhOB8QobZapRJhShEMtb0WLfPcpmVZlpZXIa5JzqO7EFPOcexT1419l8/O -B2b+8P03N5uh62KInFcPvkiM/fG4/+xXT7/86lWXu3k5hkiBQ9d1OWWzBuCvrm5THgMLIcUYSm3R -u3mWw+FYa4uJGZcP3n/r7bcfPLjcXFycbceu69I67TVzcwVDdEQkxNPT6I7mQEj3eix1AzylENLh -ONfazPD11fzs6fTBW/r+m36c8jcv8udfj3fT2wB40jQ6OAIBnR5pWLE66O4G/vCifudDfOdNf+8d -fO9teHg5ueGzF+lXX+GX38QnT/HpS6rtVGn56T46RQSbOwZgNURDRELW1ZENCiDEvVEOTCLSRb3X -89CnT4ZPv8FAh4C3kQ/jsFy+2R59cHd5JoEPTHXaz25SlrrfHa+u9vu7favtcChMZAZqNmiiAro4 -E2lx35sMRg2sGG2xHQwGpwLdZZRqnAgc0hnVvawaNSaszVOiUi0EWl1iqyhI1JkRwMUgRSpr6j2c -rgLRk7IarCHzGDtl12XZBDYzc3DERKbqIlpFETDM8+I+uxEgMCVXciS139j9AeBwmACVA8cQays5 -D4jUtOb+8TJfkfl+Px8OR3OvTVpTMwXnucxmGoKLIZGkmN0RnVtV1crEqpJiPhyO4PT+e288fLi9 -vDjbbvvNptuM/TDknGLOcehHM/nqyYu+60pt9WZ/OB4QyYFj7Op8CCmDt19/+WKaplpbYHblpbYm -bcIJ0B2gVVc9EkGMQQyaSCi2O0zTVJlDdO6G+P67j95++41xk7scUwwnYb0BERGSqfoKa3VAxMBB -TWGdCKuaOXNEMlV1dxF98eL61dVOxUVZJLq5qh2Pr4/TFugtAjCEE9kcf6OuIVrl9qdbAgB++O2/ -/N4Hx7OL7u233nx4sTnb9jHwW4/lxz/Cad6VUqc5/Mv/2//ln7+7rkv1pDVcf9wREAnBydd7y92B -AAkhipG7reICdQB3RFK1WhszKw4VR2ywW/zZ9QmqRuhIGukq0K5Lx7NNfft79aPN1KcjwlKXWmsD -s+uru+fPr2/vDre7eT5OIoYVIlJVo2uMgGxUq9Y7CT3hBApgnSEhGKyupBVhvb7Dq6dsbcNW9K8Z -5ETugOAh8FwkMAWmKrZqNJYmUd1hLSO9iIYTEAlLPTnO9nPpYghq7ubSWu74OM05dfvDPucuBG6t -bDcXalVdA8WYewBR1dW9JSLuN60el2XZ7aoDLEsVsVJrCmleKriqtZx7REBUxNBaBcRS5nEYQ+Zx -7FIKDx++8/3vfXC2HXMOfd91XVr1OylmIlZtNze7f/Wv/6bvYp97M13qlLtIxCmlPguAlbp3sFev -rpmCQzfN+67LiBA8ch8IwnGa7nb7EDnFKM1SZxXQvTx+dPGDjz68OB/Pz4eL8+3Zduj7FGNCAjMF -BzeHUziXI9Gq1DVVBK61MIcYkqgQIWJoUgiZODDCdhu/O7zz7d96++5uvtsf/os/euP5i/mLr+66 -Ljx+w91++fzq/PnV2VdPt9MScZX3rmmmhgDrE3qSss3zcDheXd/ePH16m3JnIufn6YP33l7Kom6b -8dF0ePatd8+bKADQfS++YjCJGN0jM5wctMZ0ajDV3B1d5TdGVUARDYGPU0kpphWzutqrERHQTAER -gSo+Rni8X+jV3vE53vN5C8JdoJuP3vuL/+wPfyfnSEzTcbm9Ozx58urf/PlfTcdCLm5GTLbmSTVo -zcz8rO9YfIcFAzRZ8bCuCutywNCbGBOKGa8G+UArHOVkGCA0dyQwtRTDUnWpAhEDUwy8Gu1LsxhQ -RAlx9dDspxK3HEzNMZV26PpAGNwQCZelxsgc6HDchRhEGsJSZAnMDs5MTIGQ6zKrWuC8lOPhOLnB -stTaJMXA7CHEGLvLB5dd4hT5/GzbD3G7GTbjkBKlFIZ+bVVD7jpVaa221g7Hg6m1at1wttvvVOZ/ -/x8+2e1mvBzdwFxijNqwWpvneUkLU3BUBJjm2mf2+WgmCJEYG9UmQhiO01RrWzFETCFWZmYi+t53 -3nvwYHN+tsldyCmklNZ1NXsg5tX4pCohdGrN1ZADgIQYzBzMEanWyswcWNViCACk1prYV0+unj5/ -icgppBDxg/ffev/9zQfvb2rTFy+WFy+PP/5dPD9rm/Hu+q7//34W/uwv/JsXCQAdnBDN4QSwJDsU -WJaCyIf9vhd11y5HUyqlOsDL49ddHvaHwz+Mad1XUOAqqTdANFW8v2QcAMyZWc0c1jnLOsZyJGTH -JkqE01xqZSLs8ilBGu+Bu4j3nb/bvSBndfxF00Fq+atP/vBvPjky7QJPY1+GPKPb937wfWYV0Vra -xx//allKYKqmTLgOWgmpz3mpxRxWE4yt1SG4O/4n2wBIzEuVwMHdELGJBqYmtoZmr3fFXCWFMJcT -iykQEWEVXd3nqEbMS5UmGhzweLgzsxjORbWJuFvO2dyk2j25LpgbeiCMIk3cIFhpFREDx1JkngsA -jWP34QdvP3y4uTjfbLdj38eUuOtS3+Wh79216/LQj4fj/Pc//2WXO9WduR+Ps6O2VkOIw/ggx0DM -Zd65vyCmcdgeDnOTVltTYw7BQdazchg6xCAqMXa11ONxqUVSCjHE1g7D0BNDa46or15d74/T0A9M -Po5p6PPZtn9wefbuuw/Otuc5ryI8BHDmrFrNDRVX5RJgMKsrj3PtdxEYvHEIpwxFw9ZqSv3qVSUn -DPjdb79zfpa/+OrF3e3eXG5udsOQYkgphg/e37z/3thEX129/vjTp988f35zd/fRd8vjN99/8fI7 -V9cf1LaFezexm9elLtWIFJ3msoDD7e7u5m5AJIQgUu7KjmmDtIoFjBDX6wsQHYB47R1xLd78XlW2 -PrUICG5s68UDSBgQm5qbN2tMqIHXayDnlFYyoaiqmf6GMEsEbgbgquY4iGfEh1Wrt3pz2JscbA00 -9gp+BNtdPJim/ctlqQC6yqtFLRBFwoOshaFHpiZidtoG1KYpkhRBXnuw+5cZwAGIcBXqmcM6RFKz -EiwNDAZarRm4Wb4vqwAA3ZhxrhKmaTHFEGIVZaCmVVQOx+PYjwBAjAASAi7zDAC7ww4BcpdNsElD -gkbNzX/0ww8/eP/x40eXOceUYj/0kRnJU2QkYOZAobbleFz+3X/42d/9/VeX5+Mw5Bx70TbPU+pD -YG5N97vXNeXAkYjcoUp59ux1rbqUsswd4gHQYopjP5rbbjcDSopZhfbHnTRj8lKltkaI68wrBEZo -52dnH3747oPL8fJiu9l0Q5+GYcg55JSIIOceyQlRRNQqUTATADQFJjZzwpX2BC5mbkRxLVBUlZkB -MFISKYhIEIiZCVtrjx5ePH704Dgvz55d15X+2RMzrD+oovvj/OrmxdcvnqxV+Nh/9q0PPvutb9Hu -+Obd/vvXr781L49cAZBUWnOJIaCzux6OMs1L6i6k7lRtuznbjN3KmDAARwy8NuIn/KibAREi+f3k -xMxclYhPHTcRODieeCknsBuSOs5zSV0C81almBJRCCHEsHpT1hdARVVB1JB7sB7AKTB4k/oKUImj -Y3MT12Y+vvt4/uhbHxJ/sKpvDof57u5we3V3d3W3/n1mcge1EyUOV8DA2tjAWswoAaoa8WqFWasm -Z8QTNguhiauZ9AHMvSMwB6dZ3cVdAQxETdVaMfwnf/K7renZZowpAACgqmrOXd+PtUzu1nf9MPRI -dr7dOujZdsPsZ2fj+dlmM/Ypcd8PXZdSDsyACF3qiE51szuE2IHb1fX13//i65//4gvVeHt3/fab -D7uciElNECDGhIAirWntutTnUUXFy9CPT56+/Oab65RCl7oYg5kCODPHxCEERI9po7K8en3z6uVe -rDJRCNzljIQIvhmHcZO/951333j0YLPt+y7lHGNAIgqhMyuIvJIb1VY6lTiQmwWOohJjJjZEarWt -dyG4OxgCEjIGOn1s6g5Eyb2tBLIUkpiu+ugmNXJeSalIQMQnCbcJOhyn6ZdfPvn481/9+pvnp/82 -wOr1Phw2+/23ej++sXmJiCEwIDBRjN1775wjYeBgDgDS5c3/8L/8MQCaqZsTr+W781rIrTEr7nSP -1PETI9mJ1jW/merqRsFTVU2tCQVmPGVFhhDW0Bg3w3WbAeimuAJ3OawsDHdr7a7VCSAgRgodIKkU -bcW8uVUmy3EBuyHaBzpG3ue4vP3G8XC3O+yOn/zqm3le7P6cXrcBDtCaxkArUq6JpXtWbgp8XFpk -aqJdDq2ZA+TE09L6LvJluBfSny4rv0cBrBxfNw+tCSLEhF3HKaW+T0R4frbpujx0KaWYMvVd7vs+ -RR6HjgMi+jgOwzAQUVzlzoRqDQBbm6vMgaIZLGXqu/725uaTz5798tdPlqlMc5E2A6C6Tsuc4kCc -1ibT1MxtGEZCqiKmGmNXi87HNs/V3cpSU0pInlMWNSRsssQY5/lGtd7e7BxsHLoHD87HIT+4PLu4 -GM+2/WYcuj6mGNYbJ3dZpBGCqqoVcHBXRAIg5lXuAhzQgNe+T6SgUogYYgBAFTEwgmAm6kJKyHEt -Ut1VdD4JYyioa0qDyozEDo4I6ERErRUiN9WQUo7R3Dfj+Ps//Ogf/eiHt/u7T7/86j9+/IvnV1cx -ktTWxZvh0a1PodbETGbGgdYKRPUMFKbpOIwdEZM6JMAAACAASURBVIjZxcWT29t3AAnQYH1MEVQV -zNfqCO4lPGCGzKqKSFobIiAH5GCmCEhMXQ4IEAOaATMBkYo6oKsS82nAtEaMMQFSawpiiKByZ3Jn -WvwE00Mojkju7BgBAmIPGIEHTGQuc1smrV7k4YM/e/xm99a7PjX5+c+/AAAR7XMwO82biXBFAMGK -knaIgZtYA1vVo8y0uuPNXMQQwNT1KE738QknnssJvuSn/T7gf//f/fPtZuyHLkVKOcTAm80YA/d9 -SpH7vkspbsZtCAigIVBMAQz6YRBpqzs+hlhLFW2AkOKwHmzM9Pr6+uOff/Hq9TIfD8zxOE13d4dl -qQ764PKcKYSU3JXIUoghBlU19ZQjETKFFEdA+cUnX7x8dbMZ+5Xr7eiBWUW7riMiZnR3pqCm7737 -6OxsvLzYdF3q+9jlmHMXI63tBxLFkNVKinkd4KhqDF1tkzuYW049oCOStAKAIo0pmquDx5DdNYTU -pBCiaIuhE6lMoUrpuzPzwsytCa7HoiEzqik4MEUOjOQqsqKWWpUQk8O6NPCYsoo5qorkPCzL8fZu -+tknn/3tp5/e3O1FNEJvE61k8JRiiNlM3n3roap2XUopdl0SaX/19edFcXf71u72/en4/jI9RAon -SQWzirg7h+CmRKwibsYxrlIud0NaqQ0IboSAHOj02gCtoyUiFVm/AQDXYu5EXiHUdqd6a1LBHZlO -YjZzQGSCEJppVUVVdOSUewQGCEgJKaocAhVCRt/V5bMnv/xf1zlVZFqqdplL1RjIT5EIxnRyC6DD -aldoaoFPNKbSJEVegezGAPHeUoW/eRP+k17Iw49/7/spMgfougygMVDXdX3XESMTdF0e+p6JRRpx -yt1oVgFsng/mkHNnqqINCSJFAEwpqcDTZ69+/ouvnz6/qlK7tG2ih+NkigBkjjFEUWVK0ioitCph -6KSBGuSun+d9SknAS7mNie52B1VvYvMyu3uKq1ol1NpqLeMwhoi5ox989K2HDy7GsU85DH0XmJjB -wQMlc3E3pqjaAidRNQdtC2GY5h1TWKsZxOiwmJmopJiZKaZO2oJAqusO1QMTILODmZgbIwcOSzkG -JncKHGurhKhWkWKrdeg3pc4OPaKZWYxJTbu+L3Xuu3FZ5nXyaCoxdSETgAdOZxv449///R9/9INn -L198/Onnn332ZKmNOTBza9baJNKanDNRqYWQKwoiSrMmJeVfXT749PzCbq7+ZHf7p6aGRO6GCEis -rQE4EmMIYKaqHCO4Iwdt1dUoMIeITKYG6K6KRGbgbiC6zkMoxFVSBQ4UWNuNyp1rdTNkQmZANBFA -dHdCiaGANyYg9BV/WOdbd0SKiGw2uQkhBWbkBPQeM8NKNQUIjKoOCGqnbYAZrMAlMxAxJEyMTddJ -rJt5YHaH1TcfkCDQPxQ8pyEA/OYdAIDw6MGI6MPQ55wALIawGbZNi0Pru77vB3MjCDmH1PWtLu6K -FEWLWlNtKaXA+TDfBYoxxmfPXn7yyxeff/EFOpVaRMV035qY09LacZpqtZw7EzSC9XxFoN1uFyLn -nMsyOWCprR8vpsPLq5tlXmoplQgddBw3fQ7D0F2cb87Ph1Xdeb7d5C7mHLvc545CIAA84VoxmLac -ulpqLfMwnDsUBIohuBERI3IMqdSjuXvbR+6Yse9ia8XMpS2ttRiSmSI6YhYxIuQQVI3IzCoSMyoC -1zJ33TZGAoAUN6ot505diCKiqoqZETEjA3pKWaScBF9miNhqQQRARUBAFm1N5ocXF3/wO7/9kx98 -9OLl3a+/fP75r5/N8xICg2NrPrXDMAxioosc69yWcvV6p4t0Z50uwstXiMAxmqq2RkiciDmriqty -Sg6AIWhrpkLMIUSIK6rUTVbEEa11gqmuYH4KEdylVUQkZqk3re2sFXdDIuKwll7rAtVUAGYpey24 -qgU5BEREcEIXU9Ombe/e3IwQPHWoAZBDfCjt9TrdXyWDgWndZzW1NTWDCFWdGAnRVrUfISJWtRho -HQSZQXAIHZv/RlEHDqfq/37NG954dClW+37cbs5VZiTLmUYaW5WuH6UtCKhWAAGrl6WYa99Tl3Jp -EENkzGWaTeDV7uYXnz559foorQVOBmZm0qzVpbamAk1ExGqtpZCK7fa7cdyotS7364bFvTpo13Wt -SqsvVNs81Vrb229fPnp4eX42nJ31Z2ebceiGPqcUUkrjMCI1RM85dWlAdOIgUt1N1dwLAEkT9dZ1 -Y61TjCmEuJQpcJjLIYb+ON3FlIJjbSXFoDYjUtf3yzwzsQcF4iGNpZXapjXDUqSkmM1irYWRpErO -CQmXcowhiEqKAMhIILIgrCNqS7Gb52M/DIEGtQkoEjQRTTE6IK3sBoSmDtqI/PLiYp7nrn/QShvH -/sMP3vzHf/TjL7/6+lefP//6yctlWQz96ng33ZRDm0ppzPTg0QhNa1NedC7tda0UIxAhRjcTUQQA -QkBsy+IrKiIwUVrnQqdwC0IgxHXzrWruFCMSg5vUtlY+KrtabtdHn4iQGIlWkMd9l6wqN6YN3O9p -5yiqbpZiGIbewaTtG6E0UnBzMFcXBTOnC4DXtorb7gkU5iB6Or1XXdBpVUzo4IHJ7leJqzp6/ZKo -J0PuT5eAyUl6sjoN1oY49EPs81nKSWpxtHX+2Grr+x5IurE3UXAPnGqr3dDN83Q4Hs/OH3cUapmN -luu7u59/8uSrr5/nfIYY52UPUBCJIIYAKk4I4m1ZalthEwZOGEIstSL6vMyqgkDjMADgoR05BFML -HKe5/eTH33v33cdjn87ON32fkSzHwAG3m63IcrbJxP2yzDltgIQDuRuAx5AMtBbputGtqnGTwhQQ -YJ73wzAu8xI4gVsIEYzVq7u7S6uSUhZRQFQXNY1su8OOKeQ0lHZM+VFQUFMAIiZwSF0SbYHy/rh8 -8eKbx4/Ow1lEUmLMqVuXR0rioJvNw3m+XXxOMQFoSn2KUFsBNwFZYZI5dRYoxQieEaFWCRxh0pQC -h/L+e4+6MdNgv/z6iYKfjkmHlAMHcnOnMI4JL4deDvL6L47H7x32b5ngqu42N7CT3QSZKCY3M1EH -J2YKYW0StTU3jzmmoUdAldVys/pa0U1Ng+uIFBAFXBzQmpzGLQjgR7QaGRxZzQAJiFbKDSCK+XGa -TA/gjRBDoBgDrGHGKuBO8Y02f2bmhh6ZxMQMfGUnqhOi+KprgqZODrRKnk51/gm1rWoxcBO1ot1F -NHNXN8b7S8DtpFP38PDBuaqWZWIO2+1DYlKZEGkpkzYPQVd1SsMVf0ld6iFDJC1uL1/dfvz3X97c -HA/TgZhqnWClxZgR57kcRA0hiEgpTcRqFUIyx3mZRSSEdSOLfdfX2mqTeZ76vqfm6sJcf+93PvzW -h2+en58HRmY6P9uKti6HEAIRup672zQfN5uLVmtABohmVcxFJ3ePsdvtXw3dGRGqakiD+TGmJGai -0nejgbS5DkMA4FZFpHLI6KhaUkwiwhgIMYaU82hiAHg8XIXIhIEQDwd9dfXq+vp2t6+H3eRItS53 -t8c//dMf/t6PfldkKq0QsoOoQEpxXm7E4MtvXnzz+lkf809+8IOcc0gZQQBCqxy70FoJKRKm2g5M -uN0OpdTdsX726y8+f/LVF0+eqVqtwkyJiQPVqnCv2IuRzTwmlmYQytsf/C3nT+Y572/fPe4/un7+ -yCQiM6cM7qairVEIQBRicFUpZV3AccrroLOVBgjojogc2XnllSNxIkoYAhKbFJPZsSCJ1FvTnWkF -M3BDDhyCu5uIuyORm6mYw2TWTuNJRAREpr5LKmvF/9Z0a4HRfcXLwz/McFbb16rLaGqEsKaM4b3A -dl2GiNppxuOwHOU8cnMDB1uvNAUnX3fXKoZ//9f/M2EAV0Aj4lpnDlENpmmP6CklJk55KLVOh7uY -Ypd6xvTNs9ef/OrFkydfrZKT2pZaG4cgzdahuLmHEKZpRqfDNLWm81zmpfVdjiE4qJpsxnOR6q6b -cRMibsdxGPPQx4uL8fGjR30fYuDN9iIE6focQwSwLnWAfpyOm81D17aU49rP5Dya1lrrOG6WeVlX -4oiAEAhhrsfAmRhdPeXEIZU6M+K8HLtuczzuiXDszqZlH1OX05n6XpqFGJd5yrFDhmVeYsyvrq6/ -fvbNdBBt+frmukk1s5zPA/MyH0qbl0X3+yVl/v533vkv/8nvM0HO481+/8U333z9/JvPv/56d5hM -zNz7IaYQ//E/+vEf/PAnzK5WwcixqUDOudRpKfbk1dUvvvji82+eLsvciqzGq5R4PeRqEQDIXVQ1 -M3c8YaUoBkfCGFTU1E0t5uAOKae7qzevXrx3uPtWWc5cHZkAYB1orqmiiEghrKs3QiQiCuzuFIKL -qjQEIKaQOyRyFW2nZtdUzG7bcm1a3BuCAKivLQ2Am96vbNl0YlY38ZOSgoCIEAMBMRMTAUwv/7da -d0ttazvr7oHIAZpoDLTaKqrIOgllQmaqVYlODg0iFHMmVDVEfPe7F7AhFXM7BU/drwLczfEXf/0/ -AQJzGMaLZT6IlBDY3OZ5MjfGQMjzMiNB3/Wm8NU3z3/xydd3t/OaCsIUdodbd6ylGZib1yrMwdwQ -WE1q1VrbNM3z3A7H6fxszDnGyDGGy8uLPvNm0w9D3m6GEGk7DjnllIkDPHzwkIhS4GEcDbTW4mai -NYZkjqpl7M7V2rLMfX9mXlOOtTQiIiAAB4JadBg2KmUpCzMbQOLooK21nLtaCuJqqbMUB2m1+SLN -h75rTbrcK9Dr6+e//urJy9fPr293r69vRJWJmPidB9+tRRwUkaZp6roegUXl9nZXivRDvji/3G7z -XXl9t+yP04QItSoi5syrncjdicnNx274w9/94X/++79HSIjx+c3NL774/Ge/+OXdfFiHCESY+uhq -2jQwStNVslaL5C5Iux9+N50O5fau5m1/8cY2pmBqxLTG8YJDmRsxxhRUbX+zXZaP9re/dbg9d0Ui -CrkDIqkVVuQbs4lwjABrRWTrJ9dO9zSFWc1BhJxSW65VdlJn1ebuzIFicDPyGoKZi2kRFSSWWgkR -XFeaOqC7NVdZ9UVgBohkd1ZfWLth3AWqSy2iomZVdBXMrma6U/IA4ap9QEQRJaIYqFQNq3DD7PFb -2+69NW/XpZnJfQ+84kE//sv/EQljjGVpTQqgj/2WiGtdHDzFPnKqreyPt0+evf78188PByFO0+HW -HRC4SUVkcBJrauZGtS4IvJSZmGptpbRS6lLastSL880bjy6HsRv6mHPYbDY5h7Hvupxiotzly/NL -wtYPGUC7bggUHKy1Ngzj8bjnwAQk2lLom4hqdfBxc15LYSbm4GClViaYl6nLQ2uqVjb9GRIfj7uU -+hAzwCKiXbdZlmOXBnMptXTdGbo1KfMy/92nn93sDt88e/Ly9TWA329P/H4Sz6UqOl8Ob0fqzXyp -M4CvA6K7u6Map4Db7ZC78Bd/89OY8fLhsNnmNQEpd+GwL10fV/NrrauuCfrY526coVapiFiWxmuW -HUAIVBZZW00VAzNTW8dcKYfjvhz2S6u6TLUWXSZpBkDYjWlzMbzx7uW98AelauqCVPXVfslYF3nx -5Mf7u3+KhG62hsmAORByDGCGRK5mtk6BKHQ9uGurboa06rJOW2ddllO2BzQMLu2gbVJpYfVXuvNq -LJbFrKoU1QoAuEr73d1WsrABiIOCm4miG7ibK1JBvQqwa+UK/UCoSxUnKCIMWJsyIazhA//ACmi6 -Bi6I2HaTP/jJo+Jq6toM1gDC+7Y49EMfOC1lyV2i5tN8rOqbYWsA02Gvuq+Bv/7m1SefPH356op4 -SCFJFVGfl4mJY+jVtNbFzJBYZR0erM5gNQUzqFViiN/+7Xc3myFH7ofUdTFGCoHPz85Sou3Z1qSe -nW02Yxe4b63G3ANgzDQvZXt+VsvSdT0A1FYoJAyJXShEM1sdZKBaa+lyZyIhxS537hYDBxvd4Djf -9nkTUrfMh5xzYG6t1GYAU6lzikMt8zTfjcNZn8f/+Lc/ff36rhuiqq4PPTHVImYWAi2LiJhqA3y2 -jW9pAweNoSdqAAmxzPMxbIYmYrPWQ5nvdJna2++d90MUMWraj4kQpPlxX46HclhptGrHRfohP3i8 -2Zz3wyavGdTdEPe387jN0tQdRQwcYo5SZX87a7O6K1U09CEhlbs5N3cKLXl7cXh1KLcv98NZN2y7 -7eWq7KI88HRYylxbkVoa+ys31bZK/zDEqCKx69o8mdqa8scpx5xNxVr7TebHasBR1VJP8jpwQKQw -IHGMG/RGVAArYnVYqwMwS+Ahpk0AAAaVYrK4LoBEFM0EMROSSUWogAKgAAQQIWwbgKM6otmew43R -15lfmXqsa56No7grEMB6LaxECWY6TlUPCiMQYRhDnRXdCQgTmmAgoiaFmRycKJxtL2LM3o5gmlL6 -6smrTz97+vrqujUx0AClaIVT0DI7oEKq9dZOaV9o7stciLm1BgCqXqtuz4b33nl0fr5JMWzGYXt2 -FgPGFHIKIvNmHLoUJ5tzig6VY8dhCJzEJhEDx1cvX/TdwMSOps04CqM5hVKLqqyizJSjq3Oi3noE -FEW1xrFzd9MSQqyyIFnuOhADQgDcDL2I5JjVxFGGbtuqMPtPfud3//W//XfrwbxmZ7QmMVKtqmpA -hCE4gcTwWl6f86UssD9cMQW3eV5mcBCTWokQeKbqdfby5Kubs/P+4kFfFpem+7ulLOIO3RDRQWah -5lC1UHv62ev+sn/r/cvtedeqEGFMrOrrSyhVyiLlZW1Nu8SEYEVxkboIK59TkGBQNVQpCDw3M285 -XB1uXz+97cZ8djlyoHo3V/Pxoo9XDec7v1/bIgUVMZE6TWC2+mOQmUJopZgIrJGmhJySu3OMOk3r -/gncQ9dzStoaugNA6jv3bCLIDACyHMAL4ELUQjBkdofAWbD3sLbGlaO5NQAFisToFpGROQChazUp -jtURKJ4DbUO6c7p2A4umeiro3cGauTmJr9iIVUN3fLWUgyNhSMSRThJABQAIt7e3sJIEKbnHw2G/ -2z1rrZXaXry4efrsJoauLApkiHQ4HlJMJtC0lVoCpXl+GUMiTkhqBqoCgCLihmZeav3wwzffenyZ -czeOPaExU46A6GAtcBiHC0Trcr/dbNQXEQ28XcrsJv2wASRECKnTtszlOPRj6vJSjoGTuzGDGQzD -G7VdhZDmaQdOtS459EQIEGo5Dv1IsZ/nSf3/J+rdfmzLrvO+cZtzrsveuy7nHHaTTbUoiaKsMLIt -iXZsR0ACWJBjC4oDJC8B4sAvfgryD+QpyP8TJE8BbCRBkMSwEoeWZYm0RImiyO5mX86lqvbe6zIv -Y4w8zGr6PNTTQu062GvNNS7f9/uslIroQ0ocXJsRAyqAcxSurQDhMBxbW/7KN3/hD7///bcPjyVr -GiRE9uY0xNZqmGIt2udt29bSGN7mtzPeApA6qsG+F1WPMUIkN53JqfGSlWZ8/em55DZMwc312nxv -zlAR4NrGzd08WdovOwKsj9snzWKSr33jfl/LMMWa23Ld97VKYGa0rFiNdzclbDY1vK7ViUhwSuFp -uby4mZ+uu1dfUfWaZY7lcVvNAfx4O0OzWDQ/rLfFFZ4+FzHVMI5t36ypdcUCcxhHQAI3LQV6H6zq -7khY9+ymbc/PW1VEZHYALUVrfZZit0bMHCMgujnJaBqYDgjO8+yWvV2hLSKKFNxjq8EAgUBrQaxA -BbC6FTB3NaRAzIgDEpk2FOWhALD1hbx5X3VZc2P8dw9DnyIZXNZyOAw5tz0rEmrrFFKQwPyf/oPf -+uyLh08+eVfhdN39Jz/+0ePTozsQ8+u351KamalXM6tFS63oVFvtuwImcXc3KjWbmXnYtxUJO0OO -CL71za+//96rcRpTomEI0zwdjpMIjWM6Hg7ESCK3ty8RqwQ4HA9myhIYGBG2dQki27q1kpk5hiHX -XTC5kbnueQ1hGKbjtj4Scq21g+LMQXWvWoZ0yGVfticiiWHI+2auh8Or0lYA37ctxmMp6zhMiJiG -LrDTMc3CPKT0Rz/4C2dW5MZSFKp2MYy5wTCFUlqIEiI3tb1t4mFb9rxv25bdgRkRPYXp7U8/Y+Ka -Wytq5tMcqbgBlK3ZpTa19lBEbg5iIci2bscUSm5oIHOopb357Gzurem6ZHvYtSgASBR5l+Fabznd -D8MIsOWWhF/djHtp1axUrWohTbUWrKp7g91H86o6OI7AdS/jtehSUhjeO9HH29/SZtbas9cQAInC -OLmqlqKtQZf7MCIRh8gsWqsjeO/5mON8QEQi0lIAgCS4GSAgSyul5Wytmemzw43ZHQDELZpPQCez -ZAZhnLRmFPH+cSCIScIxHV8gJUTq8gokAiRw5PSHiI2423KAGImIIyEiMSIhEnYPJAo21ffnWZRu -6Vikt9CAAKed+Xd++zdaNQfY9qfL+QtBDhKHcSCSjz96E8Owl03VEAQcRTjXKvzsXRIKtWpphZlr -a/u2EsmyrAB0d3v81je/fjrO0zTHSCkFZgRTBE8hMSMCMNM8pjElZjQ11cbErjaMERhCYERgCUxi -bvu+jdM9IpoWR+vQOwATDoTkiCFEAogSmcjMW8tBIgIRStM8jGkc71zVrBCySGi6LcuCxKVtpe4E -7IBbvjCHr7z4ykdv3r45n5t6CJK3GiKb+TCG/gaoRelLiE0tTbl5Ia3Q+VAxBAnsZpfX75Rjyxkx -haaRmOE+Pl0B4EDSdo3MXnP/n3T3xyCsZq2qqKs7MQUmZNRrxU01Nz3XEw9zoEFoL0V5iqgxyF7b -spWtNDU7TYMBoetpGhgQMU6CUnV0uB1Ot+iMyAC3UwSwjy6/rkpmCgAcIsdEwlab9QaOCMwBnVhM -zWrt66qu4EBCGSat1VrTWrvkAdxJGJBCSqZGneDt7u4ckwwjIoGZqSIiSnBD4immW5EbtIjIXWrd -0y9MjVAQI+DIMhNGd5KEMv6BRDQFlmdU2TMqGr58YIUQoXvJiOhuHN6fZozzWDw1oOZ98My/9w/+ -lps3raXsqtq0EtFxvl+u+ZNPP9/21QwYo5k3q0wxxMGMVdUNSyt9X11qdSVt3mpj4fde3X7zl74e -ogwxSsAhDSFQGgYWIXISn8YpprSX6zikIJEYWssS0jjdqa3uvq1bjHMue5DornFIbgCgQxx6PAcH -KjUzpRhCbXurNcYIDtu2uFkMAwIzU5QRHErb1mUzr+bFDYPEOEwxTuM4Oxg9mwZJrdbSHCxKCgL/ -+vt/PkwREXtmR4iyXHIahJhaVWZqTfuo0cGXvOVL2/fa5dYhBDd689nrgHYYE4Mh4P2QDmJfe3Eo -e1v2cn+aYpD743hdMyJe9yIi1ansGZtFHrFUaTDxaJcNA83ZbddoiIhJ8O44rXsZo1y3fc1V1Y5T -2qqVppcto3e4ECLCq1PaciXE45Qm8Xma3P32MDLRw2V7bN+ufkCkdDy6g5tZrW5ORBwTmCFhGEbX -51u8D/URiVMiEoBurH8e+feZDoWgpbhpEEbwbsMlQhnGlrOrdlkedNaYG0mgEKArhsLMMovcEh3C -dJIwOLjW3G3ZSAEgIF/j9MdmzoGsWo/6RQTqUZuEfcyPz/8AAMz9PqVtuQbCr9zOH9yfvHptxv/g -d/6mmpZavrSYQc753bu3f/nxx9tWENnMAW3PubXaVHPOrdY9r61prc0BSs3arLVqCkjwCz//3nvv -3aQhDiH2Ff3p5gbAhiiHaWT2GCQEIaCUwulwNCjz8TgMN2hQ6iWGsUtwz5cHAmpWqmZ3rLW5q7sh -CiG1aiIS41jrdnN3qq0ejrfrdpmng0hA9lxyGm4BHUFFYkpDDEEdx+lgtW3bZV2u0zBczmcECDEw -SW1lGg5gRISnw/DZuzdv3j15D0ll8h5nDZD3CgB5r8slX57288P69G5Fx0OchiFte0lpQIR9vS6P -l1x1y/XmMDS1m3m4LHs11HhkK0MMb89rrlpV11w69QlcX5xmIVKDQyBxOM033zimdilNjYm+9uI4 -JzaArbSqtpdyvmZ3R6Rc27WYNhUmJLxuuap1kreZi/AQJQobD7XkNRd3j0Gmrz3SBLXdaA294u8r -256xFedZS+Ug2r7cIQEAwHA8PdONWnNVYpGUTBUAwjAioNUSpbtkAIlZWGLSWlmk+2+Q+PlZIkLm -tm0OoE1bre6ASBwCxWMtgjAjzkgDc0QCrRlo2bd/BQDU9XX4TObrHrVukiR+5nb2cqg0/YWXt4PI -mqs75KqMRI78D3/vt0RCikOMg7ki8eVyrq0ua23N0vRq359aa2paizVrfanX1NZlI6KcM4K4Q85l -msK3/71vzFM6zKdpHJmdmYcUQ2A3dWgpxmk8MNM4DIfpGKMs+xkMUozbdna3IU3jfCJiIp6mG/C2 -5004xjjs+wLoKYxqtWo2t5SOCA5k2tyalbyVUgRT04qItVTwNsaRCEsttZRaG4LXUmOKw5wcnRjH -cVR1cOx+X3VL43HfViJ47+X9v/yjP+lT+emQuuT4etmXS96WUnJT9VbVmiHgsPjdq/vDPKYhXJed -EMF8fbzGwF0eaQ5fvT+4+82ctOyXNT9ctiGFZnZ/HFeTkvO6F0LMtRHh7RxL1cOYRtIURSklhg9e -nc5rzqU9XndEvG4FEYNwdQoMT9d8d0hfPC7MNEQZU8AeQ2jeA3+YaYh8SnzZ8l4aAAzHm02ebr/+ -xYv3/jjGnxBy05dmAEjEJDHmZXHVXvn0Vwox9/0A9qLfv9SM1hrnGRFZmIS/FChrr5Ti4UhM3d3Y -736OEQBcjZhZQtt3a/rsXQMwc2BpOfcnxAwBguOIOHO4TfPXa9F8Xbbzeb/uNVvPDYD+0qPn1px7 -oj08MzYYkBTMfR4jI5kj37zPv/v3/lYp+bpccimnwx0Crdui5ufz1jkKOa8xJgAyQDd3p9IKeoeS -N6aYS9amX33/xS9+42vdohEjj1OMUQ6negEkHwAAIABJREFUOQiPw5BSOExTs8wh3t2/b3UHrjHK -zfEGwClERmbgXNbz5eE4Hx8fHqwVEUIktQbuCKEVFeHS9iHOw3xrrZSyElCp2cFKrbUaspa6O9jd -/fvL+rRsZ3RKcWKSdb2y8Onu59btdQhhWzeWsZYqAVmIGIdhQhBkH1OKIczDtOzrj37yWR9cfvrx -4/n1sl5yzi3vbZyjMNHS2lPBbK/m+fjyfkjDPA3DINfrbs0uj+cxxdKMCas+K0Rqs4fLuuyFEA9j -fLhsVW3ZctU2xlCa5qod3wsA8xCSyJprHMZtWx+XvXM+DtOwlypM8xjVfC2277m/6HPta54e1ksh -hCgUmJnp6brPQ3y8bstWxyFOKTw+XdIhlUDaWhrPNy9+CP7d5fybKBKGse17P139Swd8mEaJkXrs -Ui0AhsjPu7Zeophard6aqfZ8dlVFYmsNHNzUTXur4K1Za+nmpLX1YRF8WUL1YzvOM6cIiFpr99lw -CPBMIuDj3XcG+TvD/Pc4/ArCK9xxPz+s17UVdfvSA4kI4MTU4+kB4EAREbdSzWwaxPaLLNdtr4u5 -zvNh3a7ruuy5LEuuxWqxphd3qFmrtu4mA07r+TGEqKpNm7sy09c/vL+/O06HQx9LDCnkfRvHSVtL -IYJbGoKIhMgxcsAWj7O26m5bXmqpIQxBZLeVWG7nec+rCJlbrRBkZG5EyMAxypaXZb3WUm8Y1v0y -DccQ+TS81+rWtJo1cLvUYhXOj2+1KbMAQq37mq+3L27qbuXyQMjWcJ5OasWhXS77zeE+t011W65r -DGkY5p989ukPP/74hx999sWnZ3AHBEL0a/XEtDZ6OZTH3Q3mxSaO53WXF5wGEYmEME3hME8//POP -mlquChIBdUrBAXLVXJUI378/fnFtVQ0Armt+cZp+/MXGRNMQAaA1W60QoTmY+/v3xzdPS1UrVRFQ -zSzOW1kQrDQVJtdq7lW1N8FdtgjQiKgZgECu7fY4j9Ns7inI3XF6KHjdVmFiAxYqua2X/O6zc6tf -4YCqbqaO7F77Ke7g4+1t3XYDbPvetW7IIjHWdUPGOB0JvO21vxCeb2UgGUY3M3fNxc3AlETQjZiJ -yPYdTPPlDEiuz56bvnjWVq1UM7fWENDBtTVXQwRiAYM0jq1wGH+txl+12WeHoj92+Dhvf5qX77fy -DhE5EPHzz2urVVSQovDrx2UrDQEkt42YGMnB97y1ailMn1+f3AIxmRkY7G1HAlUrtbZ6TXHY8t6q -EvHpNH3rlz8ch4nRiZ2pdBJWjFzyNk+3zKBQavNWyzQPXdPGzAQ9XcZljObKIUxhQmRCyvt+OByb -NrV6vT4O49043S1Pn/Xd3Dy932qtTQ+HOysl7/XzL/7ka+9/PW9ba1UCj8OkarXlFMbW1BUdNcWE -GsbjlNdzLdrKyoLmigjNfWtLa/npunzy+uHjN2+++4c/kIF6ZPnhNF7fLcCYS6Vq5OBZ93OOq8rh -loY4cQnCH37wCsbJwcD9MN80e/TgMcqaC2G9gA/TEXOdhjDEAACP193dH6+lNJ2GeNmKMO2lRWF1 -GFME0xTl3XkNd4cf/vSd9fhR95c30w8+fnNHT4chvLus6tZaEyYiMoEyIkuKW4O9XbcypqBaIbCa -L3s2isuuY5LBHcvWz2hb83bht58+btc63v5DwN8ql6puVmvf7hILEgJiWVYO4fk8JnZVNyi1Tvd3 -dd24s3skgJm1CoBuGo+HviWw1rQWREIWDFFL8dYkhDBNdjkTQJd+wnMaGCBJ23ZkQiYyMW2E6Kpd -rsdB8rqGwwjMbErApSkRDvwL8fjref+7plrzRzX/ZVm/V/Y/3y6fggMH2l5Np8Cl6TSEHgsrzBIk -EZJ6MQemhAClqrAQclMrtYgERJTAeW9m0NxMLcR4e5p+8RtfC5GariENKcUhJRaUEFhkHJJqjnE8 -Hk/jdHj79qfEcRhiEFKty3YZ0nB78wv7/tZs3/ftel2Ox/vWNqGYrYiwSBoHB9hR12mac973vDWt -tVbBJBNRwFra3c19bTsxCkirlZiZAkdhoiipaWuqy359qA9fff9rpW4hxBgSi0zHV4/vPnl4+8U/ -/8M//tMff/RwvsZB8lbUfT8XCTzO8XQ/rz9d6r7jwIlIGsiQruecgvi6FF7bYXDwpdiR/bysD5fl -k3/7J8u2s5C8N+0fL6Yahcu2jHNatrqXJsxBCLZNzYLwspWqWqoy0ZJrCpKrurWUooTAhO7+/v1x -zfWs8fPHJQj394C7J+GsoTLk0TEmqurueDcSQDqXfG33cwTw85K16WHU2oAQ3+kujDFIVX1Y98sn -e7m8GO7/iev71HZm0trMO/QKOaXeY7qblmKmPwvmRCJwy5erqVotSIxgfUT07LRs2iXWWkp39CKA -ratpi/NBtVFTlOheiUl1BwewRiHIMAAkAKjr6m698UBmq8VaUyIgKsvyjABDZAkIYKa6bdCaxMj4 -8xI+mOa/Q4ClPZb9z2v+t4/5R6Lvlr0MMeSqPeM+gKFLCOGA7gbbdV0JBYFz3dzAHdV8z7t1bYhz -bc3cv/7+zauXp2EMhJDSFAIPwzQfjloXIL05HNQIIKaUgoDV7e7mdJiO4F50OxyOw3hjtW7Xzzmg -hFFbPZ1Ol8sDAsfjuOclNy+7xhBDDNu2sAgiBR4BPKSEiLW1aU4hza1pSkM9X2OK83zIZdvzuq7r -z33jN5bzF+AZwQ/zKXCorbIIS/ro089++vDm//s3f/qwXbYtA2IIvC651sZMzJQGGaZ0fVrjKDcv -p/iO3122u8P47rxuOQ9R7k/Te3eHLx6vZjbE8Obp4V9//tMGrVUDgK7B5Dkcfv5WPz3vub48TQCQ -WyOl3Cq6xcDMdN6Lj2IhsFpYdVszIeRSmfC8ZJaQqzJTz+itT48VoDbLtQGiCGviNhpEoT6qcpBA -vQcdToPlVh62ds5DFCIyhyhk7nnPxGGcZb0fKPIdY7ufgH56fbjHHn0Nz7lz6XSyZoCgpYAZELOI -xKSttm0lljCktu+uPYnSAICIEfuFVMvOEvqy2MyIxbUBEXXncdaiKzKbu+XcN2XmjVNy05azmYHq -M4EekZjarhzjM82lx2h0seuzyhkoBgFHInNnRXdA5ii3Yf4OHL9Dvsj+P9we2B3U7Lpm/rv/0W+o -OUly81quVfd3j0/bWlV1z7tIqK2oNlV391yKm8+H9Gvf/qW729PxdBtDCCLCaFrnKQVB1TIOaZzi -YZ5jFGY4jKcxTUEikgPZIDMg17qXsvVs1laLuSIJUGLSvaxIOE/HF68++Ozzj9QKcwgSAeHx8bVT -Haa7YX5R6yOLPD0+akPC0NpGSLWWEOKQJqawba9TjCkORNxqq97+4Ps/+H++9+f/7Pf/39//3h9/ -/4d/uda9lta1U3mrMcl0SO59rdjn2liLQuJx91ZUmNZcf+XnXh2nmEsDhOtW9tIel321tpG5OwKk -MZh7GrrX0j1Q/XKIiQBDDMuWYTg0rGUSvBsrARASc7hNoGgND6NUNSYA1ykFc8+ta/4BEZmoqb2t -pZzSlkiGQMJuzkLDFAFhGEMfJVNgOSS5HdzBcjPzjlcZh2CvTusRaQgAbs2J9zj82XT4fcB3Zjd5 -nwhBYhexNi3FVLsEGtxbKYjIIWJ3SNcGHSxj+oygQwrzzCGwBCTSnMGdRYjJzXrwFUnQWqw2U/Pn -jJ+OMGQEbKUwCxJRH6QCgJlrA4DDq5d134lIhqFzvpq25zxj9HA4doSGqZEpEiGxpIFjaHknnkb8 -MbTXe6nLVqOwlNIQoek7AEBxJnr95qFVQ2Az2/O+rtuQJgBvVVttL1+evvHz77EYoUeBIQUkSzEN -KQ5DRMRpPEogYRIKKCJCYL3Db5flrK3d3eIU59ZySkMIMU03SLxd3xrYIZAqX65P3nBbt337+Hg4 -EsMQplw2R335lZdla17a3r4QjkHGwwQkWMpSchvCqem67Yuqrtf97v6+5PbxZx/98Cd/+ad/8aOP -3p2RqXud0hCvT7uDj1Pc13L36mBqHYf69vPLOEUkjA77WogxJFkmAv9wefeTFOSLx2tXkry7bIFp -HuKyl42RqOODXIRa1VqaOyNhPCb6EPdPrilwruoE41cOfox7hjjIeskSevIbSGD+Ktva6ruNEKPI -PMR1r0TYzJ5aTUFSlDVhjSEejm4+Rt7XggjDHPsviUNv3tzNJbBEcbMsLO8f85vl8rjdvzis94Mn -ExYksOYdoUWE7vX+gz895u/Pj++dH76zXX6J4+DPTS2QBNPqwAgQpqlum9XWmcugYLV+WRr5eHdX -1wUBtdb+VKAIIFIIdd9JRIYR+1ARoWtOCZ6zwSRGZHY34mf5A5ghi6kCIgdZ375DxJqzIsYYeovM -xObeWsN19Wd/M7o7goF5y4rYN8u4pL9u9IfI8GKeAxD+9//dPwZwM2WmcUp7zn/2Z59s2yYcgMAd -TAEAcski8uHXv/K1r77sjhYJdDrOaQiIMKQoPUO1+1nB1+1CnL7y/i/uy9tWVxZgESHJOYcogESG -zKLWlu366sV7Odec92kau2++mypQw7ItDnY6nva6zONRZCJJdTvvZenJJZ1Ivu07ER/muWl198uy -f/rFmz/+kx+8eXyH5Oaec7U0Xs5536oEPpxSLSqB81bn0yCB12teLvs4xb72ksB5rynJthRAmOa0 -fP9Bl/183XNtN4exi84/eHVTnR7asNqbMlAagqm1qiFKH62W3NwhJWlbw6eqA+MhAKFW0x40zdRK -C0k62LSL9XVv+fMrVpuHMKdQ1aYhXGDEWPUgEAgBSm7uPkyxk54AQSJrVXcYprivJU3RzbU91wYS -OSTZzpuhu3lIQoQ1NweIQwB3YnoWipnFMWpVh9t3n3378vhXVacOhnkuRQiRqJUKpj9zsfwMZkoi -XVmNhK2UDnLt/bS1FsaBQqzbmg5HLaXmjACuVTqZDDweb4i5q63rcoXntbNQkLat7gCI6XDcnh5N -NTA7OBEhPof2cEymzdw5Jmu1C/j6RgzAJaV04D3/N4BqzXQ3ASDVYt4caVn1fF6JZJzG1qzWKhya -llrrNA6//M2v3t4ejje34zC6X+dpBLday8uX74t4q/s0hU4vCxKIEBnq9npKgyd29xBFvZYK43TL -KDUvzUqt7TjfgsO6XWotBjWl4TDeL9sTocQxnk6363a5rudc9pbteGP5+rqUcnN40R8k4VTberqN -y3L507/4kx/+5OPXD2+v61KrLZe9NQuRb25HQlwuOwDOxzTOcb1mU69FWUibrZe9Vjvdjq0aEg1j -2LfqDvvW4hBCZES0+5Afllw1iLRmh8NwWfNn7y4phnV5B7cxBAaAVnWYIji0qtiQmQDRmeP90I4a -wbUqIPJA22IhMiBIiG7ec2mZCQmGU+IkeM7r62UewnFK28g2QpwmK8rC+5IlcH91xCHY8+gTZRQz -a1XHQypb5cBdxdRJlSUXEGREAJDAy3nv8tJ+D0tkbaZVSUibDodU9/Ptq//r5Vf/5bp8e1n+g/Pr -AwBwEInpWTIN6PYzQ3rPzAuIiGDuBka9dSYJpooAHMTNrFVX289nRHIzU+Pn4Y8jMYdQrld3dzWw -Xjywm7maqXW8irux9NQ+ICAzA2g9CQGZkZDUUIS0GoCZkjwvEFpp7W0ejn+l4feAECPKdPvhw+t/ -a67WTNXevbuoorm1VtW0w1Tef//+W9/82jCkeZyHYUDaQxyGGEMQFqzlTDCM4ai1hRhM22VbUhoD -pSFOVdd1XVStx365wXJ+nOdJoThYHCQNQsjzdMi5MHHZc+NKJIB2vV4udpkOQxpj01LahngUCUGi -akW1OJw++uyTjz/7i+/+4Q8+f/1GAi5LGcagzRBhnGKtz+5BANBmzYADlawi3ECHOZraes2t6v1X -jrX0lbc/PVQWYmFt1pqRsAGM7x3f/ujdPMbaNARBQiZ6vGyvbvkb793+1EtlkkAsiZlqaX0Vz0MK -Y1wvu+bWlUWmO7iHKODQ7bwitK8ljQER0xjK3lrVNIV4N8IUmuPTMckYEkDH6JrZ4XYse0tTzGvt -xjEW1GYSuRWXEMz8cDeFKNrM3bYlm/e0FW9Vu8xsnKOZfxn25Ns1H++mVpWIpsOwXva+QJVop/hH -x5s/Wh9/T/VbHMKzQ1IY8VkBCm7mFqY5pMG1SYxai+67u5OEL7MG+3PyjCXtUVNuRoSIbO5uRsT5 -6QwIHJNBfT633UDNTAk83dy4Q1234XRspXitCL2BBgTQpoIgIQFC2feOQCEJSCwxAkK+XEgE9Nsg -3yNCSiwPb3+Uc3b3ZVkRsTavrSzLEkMCQGL6tX//w1/8ha8LD4wmASXCkG7HIZW6EcPlfB7SEGYp -egGAsiEohUhAXSi5M8s83lgzYGNmczNryD6Pc841pWFbt62eT4fbEKNaxaaPD4+39x/e3X/w9OZH -ta2l7AD88v59d8slj4fb159//pNPPv7k9ad/8Ec/IAFEULWUJOcGACU3ZqzVY5TDMbVm10tOSeaD -VKCyNxHIuYEDuNeiAB6TXM9bh2dIZGhAzCHFUjMzcRBGqLl94zsfPnz3p1XmzVo5r01tSCEIvbus -dhtqbtNhrqWp+XgzXy85TbFV9a2IkATuqXhxTnXNAJDG0F9BZa8sPB2GsteyNwBPY3B3IDp9cKvq -qMZCphZT2GqOKbTS4hgAIA6yXfcQRVgkdBQuTMdhX3In7G7LbmYSqRWPQ+gtRzeFEBMLAoKpAcA4 -p8u7NY7B3S8PSxgCmDNj2eu+lNcfP1LaWnNXIxGO0fZdW+kcHndL85FjslrAfT+f3RSJSYSIZRzr -crVWKUSOyVp7lig8wxj9y4BgIpa+Z+iDHwdwbRSiqzoASijLQsTgtr57R8wpBgGXKGo9VcC0NSCq -64YIpgpmAAbkPdjFAVWt1b9G6X90MACQdXnstMdpmrQBwlJrYwrgFBP/7e/82otXJwmC0JgwBk4p -ImppqwRRw9PNiRC2vKQUT6e7w+H2009/XOomijEdhzTUlh8vr0OUaXx5OH31ev6JkJj5Z59+Ngwn -wrFpIabr+gSA4zgxhfvbqHpenuo0DrWxmTate1u//yd/9umbh09fv/3izWdm5uZplGejFsDlnJkx -DXI4pHUpMSIS2Je3+Pm8ewhGbGbX886E/cQ9nIaO1tnWYmpKboBhjMOUzAwBzPzNp0/TcTjcDJeH -tYzUXj811fvj9Hjdj2Nac3X3WklGKcUUyBFr85ACImo1DJymUHMb55SmuJ73MCXuzCdwABgPKTZj -xhClVUVCChyntF1zPwD7Dd1tHPPNaGqmz7TQvJdhSsQ4HoeyVW0qgd19Oo77mpfLCuhxEDMntu2a -0xQkSL+sVR0mKXtjpuZmZhy4iyjTFIcpunvJbXncHj6/IP81sr+KWtumjug9MAoAWdyUWMBd896F -DKYNAaw1AFdvrWQ3k2Fw79DzZ74iEmnJ3RYM4BQHGQYU6QLmdj0TYY8jx66YdwczFCFga7X7mB0B -kERQEF3J3KwUBGAJLKKldPw1GDQ3REfCePshwq82+75E4r/5m99ydwQCp8t127baWk3jdHMT/8Zv -/PJ779+HQOB1nqab42k+HI6nl4FCCCHEaYiJEXLdBaNQaLW9efOZap3neR5PgLrXpVmJMQnFgHFb -36gWd3CDIU0ssG1nBBn42MnuanW5ns0tcIoy5pqblsfHh//tX/yL//mf/u/f//O/+PSLL7Z9CZGv -l1yKdjnaPKfDcViuZT6maQqff3oRJjfIu5pBrcpMwxgccNl0PiY3z3s9nAYW6rI2QBzm4XLOJByH -uC3F3Wtuvc4OSZ6VKgjpZlw+eeozzSFJ15k9lRpfHVyEgsQhImKrrX+L0zGZeRpTq8qBy1YlMABw -Cq4WorTSAOB4OwEACY2nsalzYFOz1sEhzwMiEjI1CdJn32mMvbsdDwMR7kvpQXHDlAAgJlEzYmQh -UydGQOx9v5ubehwEAPZr6R/h7hJFm2q16ZTWSx6Pabvmd5+e3376NBx/Ow7/te2lqfWVGBEyMxEj -eEcZW2sOICH0IQwSAWIPHHCzME3j7W1ZV0SSlJ4RVqodsN4nQMPtrdVGzG3dWtkDUTeCsUiY597R -UogSEhJbyQggjIGx7woREYkkBCQCrYyIhABgquhAImDWGXVainDD+D1A5N/62389cKpFwfHxacml -1FZ/9Ve+/u1f/eDVq/sQKMUwDmMQBrSQRgIzL9t+TVGIoGkmohApJiEgQnLUm8N9rXUr13mep/EU -5MTIQObUjoc7CbG24miXy/Xp6Xw63lbbi26l5eW6a4NhiO7ancoI3BT+l//z/+hQexEapwAA56f9 -cEwxibZniKSDx8jbWvPeugpqnKKZEdP1UvLekOn06nh+2NxsPg6ItC4lTel6ycRcciPCw81YS+sD -li8lZSiBT3dzq+rqcY6h+gHocdnVXW4Sv3eYfu4Ghcbj0Kr2Oj6vdToMrVkfRJpapzJ1I1GIktfi -iMeboeQaB0FENahqLGzNxjldnzYWIiEAIKLxkMBBAvcbOg5hedrGOQFiK43kGSHRARASeF/LdBxM -XUIgwuvjCg4SpTfliBAH2ZfyPA5iGubYqnVaRAdSrOf98rBeP7vI8Ls0/BewZVCral8W88/ChY5F -6dg5InJTcDBtgIDMrt5nRt60bJs1bfuuJXtT1+ZuCNDV18+XqWrJgIjWKYv6LDXN2VsH2QMHQew1 -lIcgHREOAM8tcggUoyNJSmmaNO+M+O+CF7oOT83bIcz/3NT4N3/9m1Ubk5j54/kyTem3/+PvfOub -P3c4TOM0xxA6A7lpXbdljAEB1nULEoIEB+2/FQCSjCkMqnaYTkQoEY7zLWGkMGrba9v3fXWF1uq6 -nc0UwUvT43FWK7UVABiG8YMPf6l5fffuCyISjMJDiOFfff+P/+xHP3p62GvTWtXMtPnxJu1bRcS7 -F5OpL5eyb7VPQg7HIUYW4X2rqr7vNQgfTgkJz5e6rcUB05RKUUlh3+p0SL0ecId9q3krIYkEvn11 -LHsDQIksQoi4XnPNrRBc3i56COPP32UGmQICDkNw89YMAESYmIip1jYdx33JLbc4hhhlPg2mXnND -wjjEfi/WasgShkBEvSKvRYcpuUNMARFYqH9/iFiLhiTa7PmOd7h5cYhDkMAS2cH7A8CBlvPeSnOH -kESCdImlRG6labOQngWnwxyJaV9KH2LGQZDocDN+/pOH5Wmj+J/E+T93czQPTBXoyyk7ODgixvkg -KQFAnGbqsn7rzpVOELLe8SITh2i1gAM4ducA9bUMIgL0IqrDiJCZEZiwh4kgQM99iofDeHuTL1dk -DvPsDkNgJtJWkUiEVXv3FiVGcK/7TqbdW9CNjmEarWQzB5o5/NDxDf/ar33Yd2nny+Xly9Pf/3t/ -43CIgHa6fRE5gpmTdl3pi/uXALCsZ7WC5Cw4hDmGpFbHYR7SMA6TBKqaL8tjK1pKDYku5zdPl4ch -zcMwjdMoHKbxFEPkeDOMR9eSy96aTsPMmK7n8yc//TGzsPAwjmZt25f/6Z/+sy3nYQy3d+MwhnWp -7t5RORJouZZ1KSJ8czeWoiKUBsm7lvy84h3HOM8BAHIxSBGJeqydJGHhWlrNrRbtFtIX751aNXA4 -3I7Xx02bjYdYtrotRaIwIQsNc2oDd3Fsv4es2TBHt753p561o2qHm7HTTQ63U0iyXvY+o4wpSJQ0 -RomsBn1y34rGIZRcy17TGLQ9727SFLfLrs0AgJmQsE/30xg6D+v0Yl6eNlUjQXDXZvNpOL9dWDhE -iYm7aAIcRLhvTMdDylstW2Wh9ZpNTULXL6C7l7199IMvro9Z4n+G/DsxpB51A6aurQeu93nOeHvn -PczdrG5by3tvfJEoDEMYhrZvAEghhjgAYtv359Q7BAAn/NkEFTgm77teRABkhC6sQA7PYmxEb+pm -XXekubibcDcnGkB3bjoSyTTbvtZ9RwdwR/DW9aT+fCW0xsIIFeR7/Ju//su5ZGL44IMXv/7XfpEI -3Jyc+oxLrTJRZzCxcIwRnIQDMaN3ADyFENytFVNtRJDLigil5RcvXsaQAPEwnhCBmcfD/XC4K/nS -NGtbk0iQ2KwKh1abeRGhu5v76TCmMAmOVfc/+/Env/8H/yYEFmFTL6URYUoyzylGzlmJ6P7llAap -RZdrcYdta0TPapwOZpIhLGtDpsdzG6Y4zLEWZSYJfHnczPxwGvNeVa3kZuoilIZQiy6XvX/1Mcly -2U2tlubmpnZ92gBBhGIKaQzMpM2GMZBw2et4HGquveapufXyiZn6MIeEetV+uBl7FrcEPj8sZa8h -CQDEIdTSDrcTIl4e115ss7BEAQdTQ8TpMCCiNdOmbhaTlFzjEBBhu+YeocXCxJS3kqbYb3pT7wRz -bdYfZhaeDqm/VcCxFn3706d9aWH4R8L/oddKrWlt4s3N0D2EUJq6G8ckw9D2rZXiat65KeBEBIDW -Wsu7NUNmYuYQWs79pYFE7kBdY90d8mnodRSnFMbRSxYi957KCmaKSCTspqZKTP483sFAHgiICIi4 -a2IBvLXWjFioM3PUgMh7ZHLvmwHCODG/Mvxf+b/6L3/7r/zyh7/6rV/84KvvDymJSIppGIZpHocx -ultKYZ4nCQEccikxxnmazLXqXlsepuN0uFuuj8gm0VEAEGppMQV32/YrOBB0OnZ9enqN2pj43cM7 -4TBPh+t6dvPWWhpiCGG/6MPjw+vXb2KM6mXL6//9L//V4+XcuWvjFPetdVv69Vr62W/m61JrNVP7 -EpRpiNjUW3MQSlNUc3coWY9fuSl7e3xzFSEzlyital9mE+F0HObTgAjreW99TfvlAd/rjXGOeW+m -Np+GOAStGoegTUOUNIb25XJXkpTny0YWmm/G+TgQo5m5gQQepjQdh23J62XPW5lP474WFg5J4hCI -KG9FmyGANtNmaYxxEHD4mRE5jhEdVapaAAAS0ElEQVQJp8Ngam5m5izUC7l9Kf1Ju315WM5bGqOp -mcF2LT3gh4hClC9TgmxfynTsFGvUZq8/fjRFDv+I8DdJPTGZY/c0V7UYg0hIQUREHduekYgkgJmb -9h1wb5zQFVTH+zuS0PLOIXCMbuBm2P0A+BwLDg4yTCQc59lqBURopa+cOUQSkWFwbW4KSBJjPBzL -tnWjfRR+PuQdzdwcHImEW6kILrHDVAD7n4SI4D33CYnC8QXg9/if/OPf67RaJBOWHkVB5CyoTUOM -Kc3rsoD7zekmJnFvyCaBSy53L3/udHoP6haYkBydAw9fefX+8XA089sXH8yHl5YzAqq2N29fI9Ld -7f2+Z2u27cuynodxRMAg6XJ5QqdhSne3r17ev9dzqwz0n3/3u+bW29zlWpiw976tWhpknEKIbO6t -qprXqhI4jWE6DkB4vZbjadi3llJgptPN8PCYa1YWcvcQOG81DiFGuZ53dzjejuslr5ddO1WTKY3h -cDMOU2xVEWG57NYsRAHEPm3c18L8vF0iIQmUUjAHJIpJlvN+uJ1MrZWGhNNx7J9Y9trb5d5saDMJ -DAh5Lb2liikQY7/Szadj0matqqmrapqiqfXoeeleL0YO3HKTKCFK2WscwnreQ5SebtaqtlL77L8L -N2tRUz/cjmWrDhACP71dPv/xu7zxdP/fhvQ3bFnkeWXliN7zG9XhZwTpgQEAvNfupuDORIDyM6cv -IIV5Ijdr2icw3av+s/MbEd2VRMb7F21by7paa5qzEBACkjwjGWPQnE2Vg/SQDqulLwpSkC77486q -c0cAEnHwTvICNwUCty5l7UUeEIN7WVbwK//u3//rxJCm4+39z3MUgDzPMzNfzk8APM93rW3uTYS3 -bTG3aZyiDKA0DqP7Rl5iYBGJcSDGmOiyPL19eBPTYNYs70BYfScMp8Pt7c3tsp4v10ckTylJEAQe -46lpTmkY05zCwCxbudSav3jz2Xf/6Ht/8ZOf1qqt2b61ELi3biHQOMVhkBg5742ZuppSYhgPKQ2x -qeW9hSjnx72vC2rR88NWgYhZAh9uxjTG5ZK1at4rER1uhut5z3s18/k0TMfU5RL/f0/nsivJkpXp -dTMzv0Ts2Lkz89SpKqqRELR6whQh8QKMkBBiBFKrJZCQKCaIx2LMgBdg3CAQork0B8hz8rJvER7u -bpe1FgOLrHkoYhDuZuvy/f+PhNs1t6qtaIhyOI0hyf27w75kN2tVa1YkDMPt38pbQffTu+N6ySFJ -TGFbchrDfi3ICADz3Xgb6psRkQj3Yt3U4hBCCrWjQVste5uOQ6vaSuuCWndnYTePSUjY1IY5IaIw -A+D1dct77Z+JY2hVJUiIfL3sZa8xBQkcB+ljaK0aIjMzIJatrJf9y3+98BbSw5+D/6ouCwEigZoT -s+rNCteBkEhiclMwJ5F923vwHmM3qL7pufrjrqVY055n1AsYaxUcGLH35TfGrruw9J7KjRG7WwQg -uKmVYrUCMQkzMxDftI6IaRx6sGm/dvpqjadJJBCzTBPGBPtqXctLjH1j7GYOguB6lGFIQ5rH8bQt -H9wLMW/bCg4pDYR+uXwUDpGngMIJWaiWesmvRBBjujs8ENKWL/u+19oAjRhjDAS8nte7E0Hkmnc3 -Vyjuba86jvOQDpfloq0CgFGt5TnFQaHtbWkXUtXDcXbQ0+nuuw8fTT1GMffWTJsZUwjYehipOwsh -czOnIB12MPPrkvtMk4Ri4hCZmFh8nOO2tKY63w0lNyza4bNhjjFJ3mo/7b756T04bNdsPQ56cVNL -Y8AorWrJTYS284quh2Pc1yKB4xAAwNTzViTwMMV92ZgpbyWmEAcx9zRGZmqg56drt4WNg7DwvpUx -CtHNv7Zc9jiEvNXemLbSDqcxDsHdy1bNvPNCHHg6pMcfzpfnay16OI1IOEy3MNbxmC5PV0C4njcO -3MVMIQkx7tdCjNoUoLOr8PCju+//9cvj92fEke//VORXW87IgbCFGFut0APRgJoqEcb5oECB6RZa -vazeCgKgCNzC6L17ooObxNFa7aYp6I6mwgTYGaF+iFPnKdxdUuyvAOOtPkN37eF4iOnuwMOUX56h -tXS867bj5qiAbnb7TnMANQNG5HGq29ajgwmpEQETInEcXbUsFxcR/laSHBi5lOcQJKU36NjRAEBb -LotInIZDrdtW1hAF1Gtu03CYphmRai2d2Q4iQ4/+Q0MCExWOhBKCzIfp+fklpTikoTUruWzbJhwP -8zHXdd0u5nbdzm/f/xTguC7fD2Oodk1j+vTh+d+++yEmLqVtaw2BfvlXHtalPH65mnut/rNfedj3 -dv68zsf05t385eOSc+vF+jAGEWJhYQqBX55WYZrmiAAhyn7NxNR3T+uy68WWV9dmfWf8+cOLq8cx -9DqkZDXzVq1P7ry1wJGZp8OwrUWEr9ciQVptABiSDGO8e5jPL1tIjLcFDXR87XrZ4yBu/u4n948/ -vJq5MOatElKrLY0RAIY5sZBtJU0RHJbX9eHbU78EVP30dj4/Xt1dmz1/vvRFQRpTqy0NMaRgaut1 -BwQWlsgSDKmzBlCLxiSmqhUAgRgcPG/t+dPlh///SPyWhz9B+ilLcHUr5WZxqT1ugvpIM8yzm0uS -ure6XXu1QxKYACWwBCLKl1c3AwkSYpin7eW5z8tuZQ84IvgvjKxEOEjb91sBg4REagqmJNHMwNWR -OEjbM0roSRjr66sIgzu6JoLG7ABM5ARuloZQm9XXl06BmhqAg7oCEgFpQxYkcXND5//9B7+N0phZ -JJrV0lbV+nJ+/vL5CyLO86SeHRUQVK1lCFFQzKCpdQoKmSNjsGaABmAhjO5e6oasLFRKJSIEzqUt -50uQ+Ob+gRiqZQBlpmVZf/xLv353/zMr6xBTKZuqtWL/8C//b62X7VpV7XBIIfKXz2tzmO7GPatE -zllr0ekQQ5Dnx7UWDYFbNWLctwqIZna6n4ZRSu65EhanQVIw85CkFV0vuwjPd8M4p7y3mCSmkIZA -TLW0VhsR9d46RT7epVZb3dv7H5+6QxY4fPOT03Leb8zzKKZuBqV6N+Zn4WGONSsxHU7j9XUbD4O7 -r0vuO6yuZMpbIUYJUksLUdbzlrd6uJ+0qrunIdbaOnTZvg5Dj2/ny9MVEVtVIpQoiJjGaM0Od2Of -UxEzArx8WsZDZKay1/79HWEARDN//nh+/PCK+DaEnxO8B3c2t5ojo5mBtqYOiMLQ3NPpJOOg16Vs -e92zaTM1MyMkQOrUp+aspQARMYeU2p6tS4FvyDZ0TL+f7o4oMXUP257Cbd1RHQz8q7KsBwIAuqqV -0tdYVquZMYKgqRo4GKABmgMCeLNWm3t3QyHssUVdV0BkTVvesbN3Ivx7v/ubboBOtW3mDbvmx+14 -PEzT0KyqNWaepsOPvv0lR3t5fURAQgo0BR7iEABt288KpVkJw3E4vC3lOaU4jlOp9eX5+d03PxvH -+31fiGCc0mU557yHEIZxcqXDfNrWj+vyg7ZMjPN4jGEEhL/8q79+elqWS5bAaYrbrhRYDfLWDndD -iFKrqnnJui7FHdIgIfD7b4+tWmsWAsUoaQi16nLeS9F9q7n248Bb0X0rEuV4GnsDPUxxOqQYhYSu -rxsH7k9/DJQSp0GGKXaz1dendb1kImLh7Zq1makjIjFzDLno22/vzFybjYe0LXl53VpuraoIj3Ms -e01jTFPcrnl52ZAwphCShCh5r26gTYc59YFPa1b2GmLwm8U+DFOqta2vOyAQUUhyuJ/Wy+4AwxRD -kuVldfOef96qAniIARDjEA6nkSMjoKohwOOH1/PT6v4Q0p8RviVVdmu1khu6taY3CSSjqjoKOHTz -ZzNwRDDtCXjeW17TlouVjCLI0m2lf+GnQiI3XTE49RUKIRPHwwxESBTnOUyj7RuBuysQufeL4muu -nRszkQRw7Skevd/o4oTbC4YIyI5uqqZKRBIjIvaDA4nclBAAUN0YUaZJDvOdCJkqcSJBlhEwtrpY -21QbAMzzFON4vHv/+vz86dOHIKLuIQwxcQq87+vnx08S+Hic37z7n+Pw5vXlX9CBSa7X9eX1WSh9 -/+//weIk4EZatpA4xCFwKmvJ+w5kSPz2/kdB0uvlcdlea2l//0//vOfsiHGKYQzqcP8wmcG+1857 -9sGoMMWJt7UigAhLpOfHFRHevp9b032rZ92IcRiDqTVGD6EYaOvkIYH7ct4l0PE4taYI6OjW7O5h -1qauSijwdRH7+cPrvtVhChLIAVqzuzdhXfzufqxtNaQwpT6M//jdExLePcx5K63qdByY6XAaLy/r -9XVXtf2akbDsVYSmQ+pdeGvKRLVUYiIhSex+S6vWpmmKxGjNzs9XRJRAKaTpOLx8vrSqEhgAtyXn -rYxzcoCQBBB6T0KEnW3unXGfgH387mlfcxx+zf2PXAOZCmM37WfCpr0aAUA0NZFYb75tgCm6G9Ts -AEAMpmBfc5ascZDp/fuyrG1fIQZOCZC8ZFdFZtDmAI4Erm5Ow6hNOcUwDPl8QaZ+RZAEIjZAjhHd -y/XiDsQBRcJ8KJcz1OqAbhCHoOpdgkyATdVMY0zIWHXXVlEEkFACWANTYnEHcI0s1VT3nf/4//zO -ON2nMBECcyRm8ixE67aYWuRBG7baPn368PT0iZmnaTzOpyGNW75Uyw56uj9FSUKjl3K5fKhtNbNS -KpMc5hMLpEHUm1Cc0imGaGrIXnVbtwuAEUngQSuu68Vd81ZyyX/zd3/3dFnMoKsITJ2J9q2eX/ZW -b6v4kttP/se9CL08rYBw/zCVoq/PGzGWovve3DyNIe+NGOEm1YVta2kI03HY17KvZToMh/tpedlq -bnmrWvXuNHhr+7L3NrpV25bSzcbGOfZ1RKesbvyJQ0yy7Y0Jl/POX7Gczth02vkGziC4OzHdvz/W -0hAwRDncz9r08rwCgFZLY2TmHtLo3Zi7aIjMwjW3mIKZ71sZ5+F63t2sl3zjIe3XvC05RHb3ste+ -0GWidcnjMXXS4fhm2i55W/KHf/2yvKwkvza8+QsobPsWuIdMkqn2tpFFDNBNgRhDQDdVlRiBWHMG -QFcFBCQmBIJe5iCHJNNYt61PPDkEb7ULX7zdkiSRbja20/tvwDxfLlqrlaKtRb69An3IgxIAQfcN -EUikDzFbrWA3eJr5Rvj0ZQghmhtx6D+B7ghu2gKTmXWna2RCwKZKzOYuh4cf13zJ+cW8oePAM3LY -y7X3rM0rk8Y4vJ/fEaNaSTIRBIPMwvf3J0JaLzlwQGdHlQTD8DCPd9p0ub4OQ1QLL8+vrdjhNDXN -1/2ViMio7HW7lru7+2Ga3F1t50CAHCJvmf/2H/5tmMLxNPRtf1fr7ns1s+OUhil8/riEQN//5wsA -piGMU+h8REcMET0Ejkk+fjhPc9z3Cg604XVTmUYzf/zh3MuJ+/eHvJWcaxDKa0lJCL3k1qoe30xv -vzl8/x8vNdeamzkQkQOS8HRgV0eE19d1OqT5kJalXM97iMJMIQkRAcC2ZAk8HYa8lf2a0xiGOV1f -ty/fvxBR2SsAbNccogxjJKZWtNVm6giwvKynh1nEzDxNaVvyfs1lq8eHSZu2ptMxmsHDt3fa7PnT -JURBJjMvuUzHoTWNQ8hrOZ6maR602n7Nzx8vLPTxu6e2ZAz/i4efl6XBvvVsXFVnciRorRJLF5m5 -AxO3plYbImgtoIqIWquqBREDZEAD75J/07Y9PntH/6x0g6B+8H91yqLu308i5boS9gg9J2FrzYBM -Fc1QgjX1tiAyAgKSqYYQSAiInBnMgcgotpKxp5WBmxkBOiFKJEQtVeaJzWxb8Ssr4a3PTAHcEIn/ -8Pd/SwjXbb2u1xgHZrosL7XWWhsiDuOgDfalPj49fnn62LJO03y+Pu95HceESIiHcXoHpsykmDv6 -8vj0cS/Lntfz5fzx08dPnz+nIYUkBg0RzE1VvfHxdOeU1+3i/XI11oIhpP/7z//4sj9rs5fnjQhN -/XgaAOBy3iXwfEi1aEoyH9LpzcRM+1pN3czzXpEAAWvWXm2///GRhbdrcQcifPP+OL87lq2qWkfT -rudtfd3u7tJ8iLW0EKR73x7uRzP/9F+v6yXfZucOIrxedkBoRXvr3B3jusYqF3MHCbwtmYiGOY1z -6lGNcQj9gKyl1lxP7w5pTG4WkgxT6vNTAFe1kGSc0zCn9bzHQbYlj1M8nMZ9LaqKhDW3NAYmRKLt -svd6Ka+lbHWcIzEd30xpjL0vL3tBukXHOcDysn7896daWsTfSG9+7o20FEImhBAEHJjAHM1ABGsz -CRLmQ392OUSZJmutZ664KQubOZiaOQk7IIEzEQD8IhUYe7Xz9QYkIaSvftEitxR7FmJBcDQVoi5D -IwBEQDfQZm4yjsjS41Y5JiQGa0wYY2AhMCVCpu7fBcSMwhQCMpmaxNhyQdNOIHGMQZhCVFME/G8K -+1s8lHyeawAAAABJRU5ErkJggg== -" - height="419.69443" - width="553.71448" - transform="scale(-1,1)" /> - </g> - </g> - </g> - <metadata - id="metadata40"> - <rdf:RDF> - <cc:Work> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <cc:license - rdf:resource="http://creativecommons.org/licenses/publicdomain/" /> - <dc:publisher> - <cc:Agent - rdf:about="http://openclipart.org/"> - <dc:title>Open Clip Art Library</dc:title> - </cc:Agent> - </dc:publisher> - <dc:title>Golden Picture Frame</dc:title> - <dc:date>2012-05-24T10:08:07</dc:date> - <dc:description>Golden picture frame, Landscape</dc:description> - <dc:source>http://openclipart.org/detail/170182/golden-picture-frame-by-tasper</dc:source> - <dc:creator> - <cc:Agent> - <dc:title>tasper</dc:title> - </cc:Agent> - </dc:creator> - <dc:subject> - <rdf:Bag> - <rdf:li>clip art</rdf:li> - <rdf:li>clipart</rdf:li> - <rdf:li>frame</rdf:li> - <rdf:li>golden</rdf:li> - <rdf:li>landscape</rdf:li> - <rdf:li>photo</rdf:li> - <rdf:li>picture</rdf:li> - </rdf:Bag> - </dc:subject> - <dc:contributor> - <cc:Agent> - <dc:title>edited by Paul Sherman</dc:title> - </cc:Agent> - </dc:contributor> - </cc:Work> - <cc:License - rdf:about="http://creativecommons.org/licenses/publicdomain/"> - <cc:permits - rdf:resource="http://creativecommons.org/ns#Reproduction" /> - <cc:permits - rdf:resource="http://creativecommons.org/ns#Distribution" /> - <cc:permits - rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> - </cc:License> - </rdf:RDF> - </metadata> -</svg> diff --git a/application/resources/multimc/scalable/status-bad.svg b/application/resources/multimc/scalable/status-bad.svg deleted file mode 100644 index 9f47307e..00000000 --- a/application/resources/multimc/scalable/status-bad.svg +++ /dev/null @@ -1,142 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="32" - height="32" - id="svg3891" - version="1.1" - inkscape:version="0.48.4 r9939" - sodipodi:docname="status-bad.svg" - inkscape:export-filename="/home/peterix/minecraft/src/MultiMC5/resources/multimc/64x64/status-bad.png" - inkscape:export-xdpi="180" - inkscape:export-ydpi="180"> - <defs - id="defs3893"> - <filter - color-interpolation-filters="sRGB" - inkscape:collect="always" - id="filter3850"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.5" - id="feGaussianBlur3852" /> - </filter> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3827" - id="radialGradient3823" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.4496779,1.5407764,-0.90127514,0.84794135,4.9906134,-4.9255796)" - cx="3.9371533" - cy="7.5016646" - fx="3.9371533" - fy="7.5016646" - r="2.5" /> - <linearGradient - id="linearGradient3827"> - <stop - id="stop3829" - offset="0" - style="stop-color:#b80000;stop-opacity:1;" /> - <stop - id="stop3831" - offset="1" - style="stop-color:#600000;stop-opacity:1;" /> - </linearGradient> - <radialGradient - r="2.5" - fy="7.5016646" - fx="3.9371533" - cy="7.5016646" - cx="3.9371533" - gradientTransform="matrix(1.4496779,1.5407764,-0.90127514,0.84794135,4.9906134,-4.9255796)" - gradientUnits="userSpaceOnUse" - id="radialGradient3889" - xlink:href="#linearGradient3827" - inkscape:collect="always" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="3.959798" - inkscape:cx="5.985117" - inkscape:cy="16.047085" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - fit-margin-top="0" - fit-margin-left="0" - fit-margin-right="0" - fit-margin-bottom="0" - inkscape:window-width="532" - inkscape:window-height="454" - inkscape:window-x="2159" - inkscape:window-y="166" - inkscape:window-maximized="0" /> - <metadata - id="metadata3896"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(-381.14286,-467.79075)"> - <path - transform="matrix(6.4,0,0,6.4,361.94286,422.99075)" - d="M 8,9.5 C 8,10.880712 6.8807119,12 5.5,12 4.1192881,12 3,10.880712 3,9.5 3,8.1192881 4.1192881,7 5.5,7 6.8807119,7 8,8.1192881 8,9.5 z" - sodipodi:ry="2.5" - sodipodi:rx="2.5" - sodipodi:cy="9.5" - sodipodi:cx="5.5" - id="path3811" - style="color:#000000;fill:url(#radialGradient3889);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - sodipodi:type="arc" /> - <path - transform="matrix(0.93333333,0,0,0.93333444,382.20952,468.85732)" - d="M 31,16 C 31,24.284271 24.284271,31 16,31 7.7157288,31 1,24.284271 1,16 1,7.7157288 7.7157288,1 16,1 24.284271,1 31,7.7157288 31,16 z" - sodipodi:ry="15" - sodipodi:rx="15" - sodipodi:cy="16" - sodipodi:cx="16" - id="path3813" - style="color:#000000;fill:#df0000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - sodipodi:type="arc" /> - <path - inkscape:connector-curvature="0" - id="path3840" - d="m 392.64286,476.29082 -3,3 4.5,4.5 -4.5,4.5 3,3 4.5,-4.5 4.5,4.5 3,-3 -4.5,-4.5 4.5,-4.5 -3,-3 -4.5,4.5 -4.5,-4.5 z" - style="fill:none;stroke:#000000;filter:url(#filter3850)" /> - <path - style="fill:#ffffff;stroke:#000000" - d="m 392.64286,476.29082 -3,3 4.5,4.5 -4.5,4.5 3,3 4.5,-4.5 4.5,4.5 3,-3 -4.5,-4.5 4.5,-4.5 -3,-3 -4.5,4.5 -4.5,-4.5 z" - id="path3819" - inkscape:connector-curvature="0" /> - <path - inkscape:connector-curvature="0" - id="path3854" - d="m 392.64286,476.29082 -3,3 4.5,4.5 -4.5,4.5 3,3 4.5,-4.5 4.5,4.5 3,-3 -4.5,-4.5 4.5,-4.5 -3,-3 -4.5,4.5 -4.5,-4.5 z" - style="opacity:0.51879697;fill:#ffffff;stroke:none" /> - </g> -</svg> diff --git a/application/resources/multimc/scalable/status-good.svg b/application/resources/multimc/scalable/status-good.svg deleted file mode 100644 index 0a35c80f..00000000 --- a/application/resources/multimc/scalable/status-good.svg +++ /dev/null @@ -1,201 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="32" - height="32" - id="svg2" - version="1.1" - inkscape:version="0.48.4 r9939" - sodipodi:docname="status-good.svg" - inkscape:export-filename="/home/peterix/minecraft/src/MultiMC5/resources/multimc/64x64/status-good.png" - inkscape:export-xdpi="180" - inkscape:export-ydpi="180"> - <defs - id="defs4"> - <linearGradient - id="linearGradient3827"> - <stop - id="stop3829" - offset="0" - style="stop-color:#b80000;stop-opacity:1;" /> - <stop - id="stop3831" - offset="1" - style="stop-color:#600000;stop-opacity:1;" /> - </linearGradient> - <linearGradient - id="linearGradient3801"> - <stop - style="stop-color:#00b81a;stop-opacity:1;" - offset="0" - id="stop3803" /> - <stop - style="stop-color:#00600d;stop-opacity:1;" - offset="1" - id="stop3805" /> - </linearGradient> - <linearGradient - id="linearGradient3005"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop3007" /> - <stop - id="stop3781" - offset="0.8142857" - style="stop-color:#ffffff;stop-opacity:0.49803922;" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3009" /> - </linearGradient> - <filter - inkscape:collect="always" - id="filter3797"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.52592593" - id="feGaussianBlur3799" /> - </filter> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3801" - id="radialGradient3807" - cx="3.9371533" - cy="7.5016646" - fx="3.9371533" - fy="7.5016646" - r="2.5" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.4496779,1.5407764,-0.90127514,0.84794135,4.9906134,-4.9255796)" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3827" - id="radialGradient3823" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.4496779,1.5407764,-0.90127514,0.84794135,4.9906134,-4.9255796)" - cx="3.9371533" - cy="7.5016646" - fx="3.9371533" - fy="7.5016646" - r="2.5" /> - <filter - inkscape:collect="always" - id="filter3850"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.5" - id="feGaussianBlur3852" /> - </filter> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="2.8" - inkscape:cx="8.6376236" - inkscape:cy="10.641334" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - showguides="false" - inkscape:snap-bbox="true" - inkscape:guide-bbox="true" - inkscape:window-width="532" - inkscape:window-height="454" - inkscape:window-x="2290" - inkscape:window-y="202" - inkscape:window-maximized="0"> - <inkscape:grid - type="xygrid" - id="grid2993" - empspacing="5" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" /> - <sodipodi:guide - orientation="0,1" - position="15,16" - id="guide3783" /> - <sodipodi:guide - orientation="1,0" - position="16,14" - id="guide3785" /> - <sodipodi:guide - orientation="0,1" - position="94,38" - id="guide3833" /> - <sodipodi:guide - orientation="1,0" - position="84,34" - id="guide3835" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-1020.3622)"> - <path - sodipodi:type="arc" - style="opacity:1;color:#000000;fill:url(#radialGradient3807);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.50000000000000000;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-miterlimit:4;stroke-dasharray:none" - id="path2997" - sodipodi:cx="5.5" - sodipodi:cy="9.5" - sodipodi:rx="2.5" - sodipodi:ry="2.5" - d="m 8,9.5 a 2.5,2.5 0 1 1 -5,0 2.5,2.5 0 1 1 5,0 z" - transform="matrix(6.4,0,0,6.4,-19.2,975.5622)" /> - <path - sodipodi:type="arc" - style="color:#000000;fill:#00c900;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.50000000000000000;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="path2999" - sodipodi:cx="16" - sodipodi:cy="16" - sodipodi:rx="15" - sodipodi:ry="15" - d="M 31,16 A 15,15 0 1 1 1,16 15,15 0 1 1 31,16 z" - transform="matrix(0.93333333,0,0,0.93333444,1.0666666,1021.4288)" /> - <path - sodipodi:nodetypes="ccccccc" - inkscape:connector-curvature="0" - id="path3787" - d="m 6.5,1037.3622 3,-3 4.5,4.5 9.5,-9.5 3,3 -12.5,12.5 z" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3797)" /> - <path - style="fill:#ffffff;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="m 6.5,1037.3622 3,-3 4.5,4.5 9.5,-9.5 3,3 -12.5,12.5 z" - id="path3001" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccc" /> - <path - sodipodi:nodetypes="ccccccc" - inkscape:connector-curvature="0" - id="path3809" - d="m 6.5,1037.3622 3,-3 4.5,4.5 9.5,-9.5 3,3 -12.5,12.5 z" - style="fill:#ffffff;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;opacity:0.54887218" /> - </g> -</svg> diff --git a/application/resources/multimc/scalable/status-running.svg b/application/resources/multimc/scalable/status-running.svg deleted file mode 100644 index 18209940..00000000 --- a/application/resources/multimc/scalable/status-running.svg +++ /dev/null @@ -1,187 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="32" - height="32" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="status-running.svg" - inkscape:export-filename="/home/peterix/minecraft/src/MultiMC5/application/resources/multimc/64x64/status-running.png" - inkscape:export-xdpi="180" - inkscape:export-ydpi="180"> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="3840" - inkscape:window-height="2125" - id="namedview32" - showgrid="true" - inkscape:snap-bbox="true" - inkscape:bbox-nodes="false" - inkscape:bbox-paths="false" - inkscape:snap-bbox-midpoints="false" - inkscape:snap-bbox-edge-midpoints="false" - inkscape:object-paths="true" - inkscape:snap-intersection-paths="true" - inkscape:object-nodes="true" - inkscape:snap-smooth-nodes="true" - inkscape:snap-midpoints="false" - inkscape:zoom="10.429825" - inkscape:cx="2.5496161" - inkscape:cy="28.936353" - inkscape:window-x="1200" - inkscape:window-y="0" - inkscape:window-maximized="1" - inkscape:current-layer="layer1"> - <inkscape:grid - type="xygrid" - id="grid4160" - spacingx="0.5" - spacingy="0.5" - empspacing="8" /> - </sodipodi:namedview> - <defs - id="defs4"> - <linearGradient - id="linearGradient4162"> - <stop - offset="0" - style="stop-color:#0071f1;stop-opacity:1" - id="stop4164" /> - <stop - offset="1" - style="stop-color:#007ec3;stop-opacity:1" - id="stop4166" /> - </linearGradient> - <linearGradient - id="linearGradient3827"> - <stop - id="stop3829" - style="stop-color:#b80000;stop-opacity:1" - offset="0" /> - <stop - id="stop3831" - style="stop-color:#600000;stop-opacity:1" - offset="1" /> - </linearGradient> - <linearGradient - id="linearGradient3801"> - <stop - id="stop3803" - style="stop-color:#f1ab00;stop-opacity:1" - offset="0" /> - <stop - id="stop3805" - style="stop-color:#c39a00;stop-opacity:1" - offset="1" /> - </linearGradient> - <linearGradient - id="linearGradient3005"> - <stop - id="stop3007" - style="stop-color:#ffffff;stop-opacity:1" - offset="0" /> - <stop - id="stop3781" - style="stop-color:#ffffff;stop-opacity:0.49803922" - offset="0.8142857" /> - <stop - id="stop3009" - style="stop-color:#ffffff;stop-opacity:0" - offset="1" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - id="filter3797"> - <feGaussianBlur - id="feGaussianBlur3799" - stdDeviation="0.52592593" /> - </filter> - <radialGradient - cx="3.9371533" - cy="7.5016646" - r="2.5" - fx="3.9371533" - fy="7.5016646" - id="radialGradient3807" - xlink:href="#linearGradient4162" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.4496779,1.5407764,-0.90127514,0.84794135,4.9906134,-4.9255796)" /> - <radialGradient - cx="3.9371533" - cy="7.5016646" - r="2.5" - fx="3.9371533" - fy="7.5016646" - id="radialGradient3823" - xlink:href="#linearGradient3827" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.4496779,1.5407764,-0.90127514,0.84794135,4.9906134,-4.9255796)" /> - <radialGradient - cx="3.9371533" - cy="7.5016646" - r="2.5" - fx="3.9371533" - fy="7.5016646" - id="radialGradient3786" - xlink:href="#linearGradient3801" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.4496779,1.5407764,-0.90127514,0.84794135,4.9906134,-4.9255796)" /> - </defs> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - transform="translate(0,-1020.3622)" - id="layer1"> - <path - d="m 8,9.5 a 2.5,2.5 0 1 1 -5,0 2.5,2.5 0 1 1 5,0 z" - transform="matrix(6.4,0,0,6.4,-19.2,975.5622)" - id="path2997" - style="color:#000000;fill:url(#radialGradient3807);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <path - d="M 31,16 A 15,15 0 1 1 1,16 15,15 0 1 1 31,16 z" - transform="matrix(0.93333333,0,0,0.93333444,1.0666666,1021.4288)" - id="path2999" - style="color:#000000;fill:#009cff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <g - id="g4187"> - <path - inkscape:connector-curvature="0" - id="path4168" - d="m 10.455414,1028.3241 0,16.0761 L 24,1036.3622 Z" - style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.95251006px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> - <path - sodipodi:nodetypes="cccc" - inkscape:connector-curvature="0" - style="opacity:0.54887217;fill:#ffffff;stroke:none" - id="path3809-3" - d="m 10.5,1044.3622 0,-16 13.5,8 z" /> - </g> - </g> -</svg> diff --git a/application/resources/multimc/scalable/status-yellow.svg b/application/resources/multimc/scalable/status-yellow.svg deleted file mode 100644 index 140e6082..00000000 --- a/application/resources/multimc/scalable/status-yellow.svg +++ /dev/null @@ -1,155 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - version="1.1" - width="32" - height="32" - id="svg2"> - <defs - id="defs4"> - <linearGradient - id="linearGradient3827"> - <stop - id="stop3829" - style="stop-color:#b80000;stop-opacity:1" - offset="0" /> - <stop - id="stop3831" - style="stop-color:#600000;stop-opacity:1" - offset="1" /> - </linearGradient> - <linearGradient - id="linearGradient3801"> - <stop - id="stop3803" - style="stop-color:#f1ab00;stop-opacity:1" - offset="0" /> - <stop - id="stop3805" - style="stop-color:#c39a00;stop-opacity:1" - offset="1" /> - </linearGradient> - <linearGradient - id="linearGradient3005"> - <stop - id="stop3007" - style="stop-color:#ffffff;stop-opacity:1" - offset="0" /> - <stop - id="stop3781" - style="stop-color:#ffffff;stop-opacity:0.49803922" - offset="0.8142857" /> - <stop - id="stop3009" - style="stop-color:#ffffff;stop-opacity:0" - offset="1" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - id="filter3797"> - <feGaussianBlur - id="feGaussianBlur3799" - stdDeviation="0.52592593" /> - </filter> - <radialGradient - cx="3.9371533" - cy="7.5016646" - r="2.5" - fx="3.9371533" - fy="7.5016646" - id="radialGradient3807" - xlink:href="#linearGradient3801" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.4496779,1.5407764,-0.90127514,0.84794135,4.9906134,-4.9255796)" /> - <radialGradient - cx="3.9371533" - cy="7.5016646" - r="2.5" - fx="3.9371533" - fy="7.5016646" - id="radialGradient3823" - xlink:href="#linearGradient3827" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.4496779,1.5407764,-0.90127514,0.84794135,4.9906134,-4.9255796)" /> - <radialGradient - cx="3.9371533" - cy="7.5016646" - r="2.5" - fx="3.9371533" - fy="7.5016646" - id="radialGradient3786" - xlink:href="#linearGradient3801" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.4496779,1.5407764,-0.90127514,0.84794135,4.9906134,-4.9255796)" /> - </defs> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - transform="translate(0,-1020.3622)" - id="layer1"> - <path - d="m 8,9.5 a 2.5,2.5 0 1 1 -5,0 2.5,2.5 0 1 1 5,0 z" - transform="matrix(6.4,0,0,6.4,-19.2,975.5622)" - id="path2997" - style="color:#000000;fill:url(#radialGradient3807);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <path - d="M 31,16 A 15,15 0 1 1 1,16 15,15 0 1 1 31,16 z" - transform="matrix(0.93333333,0,0,0.93333444,1.0666666,1021.4288)" - id="path2999" - style="color:#000000;fill:#ffcc00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <g - id="g3010"> - <path - d="m 7.5,1034.3622 17,0 0,4 -17,0 z" - id="path3787" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3797)" /> - <path - d="m 7.5,1034.3622 17,0 0,4 -17,0 z" - id="path3001" - style="fill:#ffffff;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> - <path - d="m 7.5,1038.3622 0,-4 17,0 0,4 z" - id="path3809" - style="opacity:0.54887217;fill:#ffffff;stroke:none" /> - </g> - <path - d="m 8,9.5 a 2.5,2.5 0 1 1 -5,0 2.5,2.5 0 1 1 5,0 z" - transform="matrix(6.4,0,0,6.4,-170.62857,989.56227)" - id="path3776" - style="color:#000000;fill:url(#radialGradient3786);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <path - d="M 31,16 A 15,15 0 1 1 1,16 15,15 0 1 1 31,16 z" - transform="matrix(0.93333333,0,0,0.93333444,-150.3619,1035.4289)" - id="path3778" - style="color:#000000;fill:#ffcc00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> - <path - d="m -144.92857,1051.3623 3,-3 4.5,4.5 9.5,-9.5 3,3 -12.5,12.5 z" - id="path3780" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3797)" /> - <path - d="m -144.92857,1051.3623 3,-3 4.5,4.5 9.5,-9.5 3,3 -12.5,12.5 z" - id="path3782" - style="fill:#ffffff;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> - <path - d="m -144.92857,1051.3623 3,-3 4.5,4.5 9.5,-9.5 3,3 -12.5,12.5 z" - id="path3784" - style="opacity:0.54887217;fill:#ffffff;stroke:none" /> - </g> -</svg> diff --git a/application/resources/multimc/scalable/technic.svg b/application/resources/multimc/scalable/technic.svg deleted file mode 100644 index 91cbd3d7..00000000 --- a/application/resources/multimc/scalable/technic.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<svg width="2546.7" height="2526" version="1.1" viewBox="0 0 1491.6 1479.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#"> - <metadata> - <rdf:RDF> - <cc:Work rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> - <dc:title/> - </cc:Work> - </rdf:RDF> - </metadata> - <path d="m658.25 18.964c159.05-19.094 324.19 14.764 461.94 96.756 143.3 84.188 256.41 218.77 313.51 374.94 62.353 168.13 58.63 359.69-10.432 525.21-63.691 154.53-182.78 285.02-330.23 363.42-149.71 80.709-327.85 105.84-494.33 71.979-172.46-34.279-331.02-133.53-437.23-273.73-96.759-126.04-149.83-284.84-147.76-443.82 0.548-167.95 63.08-334.56 172.34-462 118.05-139.77 290.39-232.01 472.19-252.75m-120.67 181.49c-131.41 49.538-243.48 148.49-308.51 273-60.641 114.51-80.038 249.94-54.906 377.02 25.076 130.19 97.609 250.19 200.16 334.01 101.76 84.247 232.92 131.9 365.06 132.75-0.795-37.831-0.366-75.591-1.04-113.42-0.792-31.415-30.866-53.744-59.722-58.563-0.917 28.305 0.119 62.895-24.771 82.113-23.731 16.288-55.638 15.919-82.479 8.782-27.149-7.626-42.216-35.808-43.011-62.532-1.647-40.565-0.244-81.196-0.729-121.83-10.86-0.059-21.781-0.059-32.702-0.059-0.06-35.442-0.06-70.892 0-106.27 10.92-0.065 21.84-0.125 32.762-0.125 0-12.076 0-24.093-0.06-36.115-14.033-4.635-30.263-10.188-35.934-25.379-14.033-33.186 3.417-70.462-10.188-103.89-13.911-35.203-27.759-74.125-14.825-111.89 7.992-26.598 34.042-43.56 61.007-45.694-0.06-76.808 0-153.55-0.06-230.36-0.429-40.754 16.288-82.725 48.924-108.16 37.215-29.525 86.57-37.092 132.81-36.786 102.92 0.061 203.7 48.864 270.2 126.89-0.124 18.362 0 36.727-0.124 55.149-92.185 0.061-184.36-0.063-276.54 0-10.006-1.828-19.523 7.505-17.754 17.569 0.304 58.812-0.549 117.68-0.308 176.49 17.021 0.061 34.104 0.304 51.125-0.488 2.866-11.774 6.038-23.425 9.454-35.019 74.982 18.424 149.89 36.789 224.81 55.335-2.502 8.6-4.938 17.266-7.382 25.927-6.588 2.5-13.177 5.001-19.767 7.504-2.621 203.15-4.331 406.36-6.648 609.51 176.25-60.091 319.8-208.83 369.76-388.73 39.415-137.02 25.262-288.62-39.527-415.7-63.628-126.65-175.58-227.98-307.72-279.1-133.78-52.65-287.09-53.321-421.36-1.954m140.74 710.66c0 11.401 0 22.817 0.063 34.221 10.125 0.06 20.253 0.06 30.381 0.06 0.061 35.448 0.061 70.896 0 106.34-10.128 0-20.315 0-30.442 0.059v32.333c19.949 0.06 39.961 0.06 59.909-0.061-0.917-57.646-0.365-115.31-1.283-172.95a9391.2 9391.2 0 0 0-58.628 0z" fill="#1389d2" stroke="#000" stroke-width="27.532"/> -</svg> diff --git a/application/resources/multimc/scalable/viewfolder.svg b/application/resources/multimc/scalable/viewfolder.svg deleted file mode 100644 index 4ba0ed0a..00000000 --- a/application/resources/multimc/scalable/viewfolder.svg +++ /dev/null @@ -1,122 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --><svg height="128" id="svg2811" inkscape:export-filename="/home/david/document-open.png" inkscape:export-xdpi="22.5" inkscape:export-ydpi="22.5" inkscape:output_extension="org.inkscape.output.svgz.inkscape" inkscape:version="0.45.1" sodipodi:docbase="/home/jakob/dev/kde/src/kdebase/runtime/pics/oxygen/scalable/actions" sodipodi:docname="document-open-folder.svgz" sodipodi:version="0.32" version="1.0" width="128" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <metadata> - <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> - <cc:Work rdf:about=""> - <dc:title></dc:title> - <dc:description></dc:description> - <dc:subject> - <rdf:Bag> - <rdf:li>unsorted</rdf:li> - </rdf:Bag> - </dc:subject> - <dc:publisher> - <cc:Agent rdf:about="http://www.openclipart.org/"> - <dc:title>Open Clip Art Library, Source: Oxygen Icons, Source: Oxygen Icons, Source: Oxygen Icons, Source: Oxygen Icons</dc:title> - </cc:Agent> - </dc:publisher> - <dc:creator> - <cc:Agent> - <dc:title></dc:title> - </cc:Agent> - </dc:creator> - <dc:rights> - <cc:Agent> - <dc:title></dc:title> - </cc:Agent> - </dc:rights> - <dc:date></dc:date> - <dc:format>image/svg+xml</dc:format> - <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> - <cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/ or http://creativecommons.org/licenses/LGPL/2.1/"/> - <dc:language>en</dc:language> - </cc:Work> - </rdf:RDF> - </metadata> - <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" gridempspacing="2" gridspacingx="4px" gridspacingy="4px" gridtolerance="10000" guidetolerance="10.0" id="base" inkscape:current-layer="svg2811" inkscape:cx="64" inkscape:cy="64" inkscape:grid-bbox="true" inkscape:grid-points="true" inkscape:guide-bbox="true" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="736" inkscape:window-width="825" inkscape:window-x="0" inkscape:window-y="0" inkscape:zoom="1" objecttolerance="10.0" pagecolor="#ffffff" showborder="false" showgrid="false" showguides="true"/> - <defs id="defs2813"> - <linearGradient gradientTransform="matrix(1.0033808,0,0,1,-8.2378002,8)" gradientUnits="userSpaceOnUse" id="linearGradient2937" x1="122.74438" x2="122.39215" y1="96.721588" y2="20.043535"> - <stop id="stop2939" offset="0" style="stop-color:#72b4f4;stop-opacity:1"/> - <stop id="stop2941" offset="0.13053299" style="stop-color:#b3d9ff;stop-opacity:1"/> - <stop id="stop2943" offset="0.34621301" style="stop-color:#b3d9ff;stop-opacity:1"/> - <stop id="stop2945" offset="0.72006166" style="stop-color:#71a8f5;stop-opacity:1"/> - <stop id="stop2947" offset="1" style="stop-color:#508ed9;stop-opacity:1"/> - </linearGradient> - <linearGradient gradientTransform="translate(242.00093,332.5)" gradientUnits="userSpaceOnUse" id="linearGradient2927" x1="-178" x2="-178" y1="-228.3945" y2="-304.61469"> - <stop id="stop2929" offset="0" style="stop-color:#cfe7ff;stop-opacity:1"/> - <stop id="stop2931" offset="0.1" style="stop-color:#71a8f5;stop-opacity:1"/> - <stop id="stop2933" offset="1" style="stop-color:#2c72c7;stop-opacity:1"/> - </linearGradient> - <linearGradient id="linearGradient2822"> - <stop id="stop2824" offset="0" style="stop-color:#ffffff;stop-opacity:1"/> - <stop id="stop2826" offset="1" style="stop-color:#ffffff;stop-opacity:0"/> - </linearGradient> - <linearGradient gradientTransform="matrix(1.0033404,0,0,1,-8.2374684,8)" gradientUnits="userSpaceOnUse" id="XMLID_9_" x1="71.999496" x2="71.999496" y1="14.2578" y2="19.9583"> - <stop id="stop46" offset="0.25" style="stop-color:#71a8f5;stop-opacity:0"/> - <stop id="stop48" offset="1" style="stop-color:#0057ae;stop-opacity:1"/> - </linearGradient> - <filter height="1.768" id="filter2807" width="1.0512" x="-0.025599999" y="-0.384"> - <feGaussianBlur id="feGaussianBlur2809" inkscape:collect="always" stdDeviation="1.28"/> - </filter> - <linearGradient gradientTransform="translate(-6.999995,8)" gradientUnits="userSpaceOnUse" id="XMLID_6_" x1="72.000504" x2="72.000504" y1="96" y2="0.00048828119"> - <stop id="stop7" offset="0" style="stop-color:#00479e;stop-opacity:1"/> - <stop id="stop9" offset="0.0769" style="stop-color:#2c72c7;stop-opacity:1"/> - <stop id="stop11" offset="0.58579999" style="stop-color:#6ea1df;stop-opacity:1"/> - <stop id="stop13" offset="0.96450001" style="stop-color:#adcbee;stop-opacity:1"/> - </linearGradient> - <linearGradient gradientTransform="matrix(1.0033808,0,0,1,-8.2378,8)" gradientUnits="userSpaceOnUse" id="linearGradient3109" x1="122.74438" x2="122.74438" xlink:href="#linearGradient2937" y1="96" y2="20"/> - <linearGradient gradientTransform="translate(242.00093,332.5)" gradientUnits="userSpaceOnUse" id="linearGradient2923" x1="-168.99216" x2="-168.99216" xlink:href="#linearGradient2822" y1="-300.5" y2="-296.48441"/> - <linearGradient gradientTransform="translate(242.00093,332.5)" gradientUnits="userSpaceOnUse" id="linearGradient2925" x1="-178" x2="-178" xlink:href="#linearGradient2927" y1="-228.5" y2="-304.61469"/> - <linearGradient gradientTransform="translate(242.00093,364.5)" gradientUnits="userSpaceOnUse" id="linearGradient2197" inkscape:collect="always" x1="-168.99216" x2="-168.99216" xlink:href="#linearGradient2822" y1="-300.5" y2="-296.48441"/> - <linearGradient gradientTransform="matrix(1,0,0,0.7368421,242.00093,284.36842)" gradientUnits="userSpaceOnUse" id="linearGradient2201" inkscape:collect="always" x1="-178" x2="-178" xlink:href="#linearGradient2927" y1="-228.5" y2="-304.61469"/> - <linearGradient gradientTransform="matrix(1.0033404,0,0,1,-7.2374684,40)" gradientUnits="userSpaceOnUse" id="linearGradient2204" inkscape:collect="always" x1="71.999496" x2="71.999496" xlink:href="#XMLID_9_" y1="14.2578" y2="19.9583"/> - <linearGradient gradientTransform="matrix(1.0033808,0,0,0.7368421,-8.2378,45.263158)" gradientUnits="userSpaceOnUse" id="linearGradient2207" inkscape:collect="always" x1="122.74438" x2="122.74438" xlink:href="#linearGradient2937" y1="96" y2="20"/> - <linearGradient gradientTransform="translate(-6.999995,20)" gradientUnits="userSpaceOnUse" id="linearGradient2212" inkscape:collect="always" x1="72.000504" x2="72.000504" xlink:href="#XMLID_6_" y1="96" y2="0.00048828119"/> - <filter id="filter2770" inkscape:collect="always"> - <feGaussianBlur id="feGaussianBlur2772" inkscape:collect="always" stdDeviation="2.0786429"/> - </filter> - <linearGradient gradientUnits="userSpaceOnUse" id="linearGradient10213" inkscape:collect="always" x1="98.617439" x2="91.228737" xlink:href="#linearGradient10207" y1="106.41443" y2="99.254974"/> - <radialGradient cx="102" cy="112.3047" fx="102" fy="112.3047" gradientTransform="matrix(1.295034,1.3831431e-7,-1.3627884e-7,1.2946006,-30.093452,-33.119615)" gradientUnits="userSpaceOnUse" id="radialGradient9437" inkscape:collect="always" r="139.55859" xlink:href="#XMLID_8_"/> - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath7084"> - <path d="M 72,88 L 40,120 L 32,120 L 32,80 L 72,80 L 72,88 z" id="path7086" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/> - </clipPath> - <filter height="1.3839999" id="filter6697" inkscape:collect="always" width="1.3839999" x="-0.19200002" y="-0.19199999"> - <feGaussianBlur id="feGaussianBlur6699" inkscape:collect="always" stdDeviation="1.9447689"/> - </filter> - <radialGradient cx="102" cy="112.3047" gradientUnits="userSpaceOnUse" id="XMLID_8_" r="139.55859"> - <stop id="stop41" offset="0" style="stop-color:#b7b8b9;stop-opacity:1;"/> - <stop id="stop47" offset="0.18851049" style="stop-color:#ECECEC"/> - <stop id="stop49" offset="0.25718147" style="stop-color:#FAFAFA"/> - <stop id="stop51" offset="0.30111277" style="stop-color:#FFFFFF"/> - <stop id="stop53" offset="0.5313" style="stop-color:#FAFAFA"/> - <stop id="stop55" offset="0.8449" style="stop-color:#EBECEC"/> - <stop id="stop57" offset="1" style="stop-color:#E1E2E3"/> - </radialGradient> - <linearGradient gradientUnits="userSpaceOnUse" id="XMLID_12_" x1="96" x2="88.000198" y1="104" y2="96.000198"> - <stop id="stop83" offset="0" style="stop-color:#888A85"/> - <stop id="stop85" offset="0.0072" style="stop-color:#8C8E89"/> - <stop id="stop87" offset="0.0673" style="stop-color:#ABACA9"/> - <stop id="stop89" offset="0.1347" style="stop-color:#C5C6C4"/> - <stop id="stop91" offset="0.2652576" style="stop-color:#DBDBDA"/> - <stop id="stop93" offset="0.37646064" style="stop-color:#EBEBEB"/> - <stop id="stop95" offset="0.48740286" style="stop-color:#F7F7F6"/> - <stop id="stop97" offset="0.6324091" style="stop-color:#FDFDFD"/> - <stop id="stop99" offset="1" style="stop-color:#FFFFFF"/> - </linearGradient> - <linearGradient id="linearGradient10207"> - <stop id="stop10209" offset="0" style="stop-color:#a2a2a2;stop-opacity:1;"/> - <stop id="stop10211" offset="1" style="stop-color:#ffffff;stop-opacity:1;"/> - </linearGradient> - <linearGradient gradientTransform="matrix(1.0172054,0,0,1.5,246.03226,514.75)" gradientUnits="userSpaceOnUse" id="linearGradient3385" inkscape:collect="always" x1="-168.99216" x2="-168.99216" xlink:href="#linearGradient2822" y1="-300.5" y2="-296.48441"/> - <linearGradient gradientTransform="matrix(1,0,0,0.7368421,242.00093,284.36842)" gradientUnits="userSpaceOnUse" id="linearGradient3387" inkscape:collect="always" x1="-178" x2="-178" xlink:href="#linearGradient2927" y1="-232.84966" y2="-304.61469"/> - </defs> - <path d="M 118.983,31 C 118.992,29.35 117.64999,28 115.99999,28 L 40.961007,28 C 40.961007,28 32.061006,20 30.961,20 L 14.999998,20 C 12.799996,20 10.999999,21.8 10.999999,24 L 10.999999,31 C 10.999999,31 11.999999,116 8,116 L 122,116 C 117.99999,116 118.983,31 118.983,31 z " id="path15" style="fill:url(#linearGradient2212)"/> - <g id="g17" style="opacity:0.6;filter:url(#filter2807)" transform="matrix(1.0033404,0,0,1,-8.2374684,20)"> - <path d="M 132,96 C 132,98.2 128.4,100 124,100 L 20,100 C 15.6,100 12,98.2 12,96 C 12,93.8 15.6,92 20,92 L 124,92 C 128.4,92 132,93.8 132,96 z " id="path19"/> - </g> - <path d="M 10.884862,54 C 10.893892,55.75 10.902922,57.755 10.910952,60 L 119.09511,60 C 119.10414,57.755 119.11317,55.75 119.1212,54 L 10.884862,54 z " id="path50" style="opacity:0.5;fill:url(#linearGradient2204)"/> - <path d="M 119.99722,31 C 120.00622,29.35 118.66422,28 117.01422,28 L 42.975222,28 L 36.389222,21.414 C 35.611222,20.636 34.075222,20 32.975222,20 L 12.014222,20 C 9.8142222,20 8.0142222,21.8 8.0142222,24 C 8.0142222,24 7.9822222,54.499299 8.0142222,60.031299 L 12.014222,60.031299 C 12.014222,53.222299 12.014222,24 12.014222,24 L 32.901222,23.997 C 33.083222,24.019 33.470222,24.179 33.560222,24.243 L 41.318222,32 C 41.318222,32 114.02722,32 115.99922,32 C 115.99922,32.435 116.00022,56.400299 116.00222,60.031299 L 120.01422,60.031299 C 120.04522,54.499299 119.99722,31 119.99722,31 z " id="path2896" sodipodi:nodetypes="ccccccccccccccccc" style="fill:#5e95e3;fill-opacity:1"/> - <path d="M 124.36598,113.79242 C 124.27969,115.00674 122.85389,116 121.19831,116 L 6.812906,116 C 5.157329,116 3.731522,115.00674 3.644228,113.79242 L 0.007982,62.204632 C -0.112423,60.992526 1.143808,60 2.799384,60 L 125.21183,60 C 126.86741,60 128.11762,60.991789 127.9912,62.203895 L 124.36598,113.79242 z " id="path30" style="opacity:0.9;fill:url(#linearGradient2207);fill-opacity:1"/> - <path d="M 125.21293,60 L 2.7999261,60 C 1.1449261,60 -0.11207393,60.992526 0.0079260701,62.204632 L 3.6439261,113.79242 C 3.7309261,115.00674 5.1569261,116 6.8129261,116 L 121.19793,116 C 122.85393,116 124.27993,115.00674 124.36593,113.79242 L 127.99093,62.203895 C 128.11893,60.991789 126.86793,60 125.21293,60 z M 120.41393,113.05263 C 118.87493,113.05263 9.1349261,113.05263 7.5979261,113.05263 C 7.2299261,107.83726 4.5229261,70.627562 4.0659261,64.149246 C 6.5189261,64.149246 121.45793,64.149246 123.93493,64.149246 C 123.81393,65.85872 120.49293,111.92821 120.41393,113.05263 z " id="path2894" sodipodi:nodetypes="cccccccccccccc" style="fill:url(#linearGradient3387)"/> - <path d="M 4,64 C 4.0273488,64.775875 4.1802721,68.801119 4.2225137,70 C 7.123925,70 122.78934,70 125.71499,70 C 125.74343,69.191222 125.93026,64.204735 125.9375,64 C 123.41788,64 6.4952049,64 4,64 z " id="path2908" style="fill:url(#linearGradient3385);fill-opacity:1;opacity:0.835"/> -</svg> diff --git a/application/resources/pe_blue/index.theme b/application/resources/pe_blue/index.theme deleted file mode 100644 index c9e0d93a..00000000 --- a/application/resources/pe_blue/index.theme +++ /dev/null @@ -1,11 +0,0 @@ -[Icon Theme] -Name=pe_blue -Comment=Icons by pexner (blue) -Inherits=multimc -Directories=scalable - -[scalable] -Size=48 -Type=Scalable -MinSize=16 -MaxSize=256 diff --git a/application/resources/pe_blue/pe_blue.qrc b/application/resources/pe_blue/pe_blue.qrc deleted file mode 100644 index 98445d88..00000000 --- a/application/resources/pe_blue/pe_blue.qrc +++ /dev/null @@ -1,38 +0,0 @@ -<!DOCTYPE RCC> -<RCC version="1.0"> - <qresource prefix="/icons/pe_blue"> - <file>index.theme</file> - <file>scalable/about.svg</file> - <file>scalable/accounts.svg</file> - <file>scalable/bug.svg</file> - <file>scalable/centralmods.svg</file> - <file>scalable/checkupdate.svg</file> - <file>scalable/copy.svg</file> - <file>scalable/coremods.svg</file> - <file>scalable/externaltools.svg</file> - <file>scalable/help.svg</file> - <file>scalable/instance-settings.svg</file> - <file>scalable/jarmods.svg</file> - <file>scalable/java.svg</file> - <file>scalable/language.svg</file> - <file>scalable/loadermods.svg</file> - <file>scalable/log.svg</file> - <file>scalable/minecraft.svg</file> - <file>scalable/multimc.svg</file> - <file>scalable/new.svg</file> - <file>scalable/news.svg</file> - <file>scalable/notes.svg</file> - <file>scalable/patreon.svg</file> - <file>scalable/proxy.svg</file> - <file>scalable/quickmods.svg</file> - <file>scalable/refresh.svg</file> - <file>scalable/resourcepacks.svg</file> - <file>scalable/screenshots.svg</file> - <file>scalable/settings.svg</file> - <file>scalable/status-bad.svg</file> - <file>scalable/status-good.svg</file> - <file>scalable/status-yellow.svg</file> - <file>scalable/viewfolder.svg</file> - <file>scalable/worlds.svg</file> - </qresource> -</RCC> diff --git a/application/resources/pe_blue/scalable/about.svg b/application/resources/pe_blue/scalable/about.svg deleted file mode 100644 index 56e7fc9b..00000000 --- a/application/resources/pe_blue/scalable/about.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <circle fill="#DAEEFF" cx="16" cy="16" r="12"/> - <g> - <polygon fill="#666666" points="17.8,21 17.8,11.9 11.9,11.9 11.9,14.2 14.2,14.2 14.2,21 11.9,21 11.9,23.3 20.1,23.3 20.1,21 - "/> - <circle fill="#666666" cx="16" cy="8.3" r="1.8"/> - </g> - <path fill="#3366CC" d="M16,32C7.2,32,0,24.8,0,16C0,7.2,7.2,0,16,0c8.8,0,16,7.2,16,16C32,24.8,24.8,32,16,32L16,32z M16,4 - C9.4,4,4,9.4,4,16s5.4,12,12,12s12-5.4,12-12S22.6,4,16,4z"/> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/accounts.svg b/application/resources/pe_blue/scalable/accounts.svg deleted file mode 100644 index 77e3f45a..00000000 --- a/application/resources/pe_blue/scalable/accounts.svg +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#999999" d="M25.8,17.5c1.4-1.4,2.2-3.4,2.2-5.5V8c0-4.4-3.6-8-8-8 - c-0.6,0-1.2,0.1-1.8,0.2c1.3,1.1,2.4,2.4,3,4C22.8,4.7,24,6.2,24,8v4c0,1.8-1.2,3.3-2.8,3.8c-0.2,0.4-0.4,0.8-0.6,1.2 - c1.5,1.2,2.8,2.6,3.7,4.2c1.8,1.1,3.1,2.7,3.6,4.7c0,1.1-0.9,2-2,2h-0.3c-0.4,1.6-1.3,3-2.5,4H26c3.3,0,6-2.7,6-6 - C31.4,22.3,28.9,19.2,25.8,17.5z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" d="M18,32H6c-3.3,0-6-2.7-6-6l0,0c0.6-3.7,3.1-6.8,6.2-8.5 - C4.9,16.1,4,14.1,4,12V8c0-4.4,3.6-8,8-8s8,3.6,8,8v4c0,2.1-0.9,4.1-2.2,5.5c3.1,1.7,5.6,4.8,6.2,8.5l0,0C24,29.3,21.3,32,18,32z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#DAEEFF" d="M16,12V8c0-2.2-1.8-4-4-4S8,5.8,8,8v4c0,2.2,1.8,4,4,4 - S16,14.2,16,12z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#DAEEFF" d="M20,26c-0.9-3.4-4.3-6-8-6l0,0l0,0c-3.7,0-7.1,2.6-8,6l0,0 - c0,1.1,0.9,2,2,2h12C19.1,28,20,27.1,20,26L20,26z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/bug.svg b/application/resources/pe_blue/scalable/bug.svg deleted file mode 100644 index 75a19e29..00000000 --- a/application/resources/pe_blue/scalable/bug.svg +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect x="0" fill="none" width="32" height="32"/> -<g> - <path fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" d="M22.7,5.3c-0.3-1.2-0.9-2.3-1.8-3.2c-2.7-2.8-7.2-2.8-9.9,0 - c-0.9,0.9-1.5,2-1.8,3.2C13.5,3.3,18.5,3.3,22.7,5.3z"/> - <path fill-rule="evenodd" clip-rule="evenodd" fill="#6699CC" d="M30,17.9h-4.1c0-0.7,0.1-1.3,0.1-2c0-0.7,0-1.4-0.1-2 - c0,0,0,0,0.1,0v0h2c1.1,0,2-0.9,2-2c0-1.1-0.9-2-2-2h-2v0c-0.3,0-0.6,0.1-0.8,0.1c-1.2-3.1-3.9-4.1-9.2-4.1s-7.9,1-9.2,4.1 - C6.6,9.9,6.3,9.8,6,9.8v0H4c-1.1,0-2,0.9-2,2c0,1.1,0.9,2,2,2h2v0c0,0,0,0,0.1,0c0,0.6-0.1,1.3-0.1,2c0,0.7,0,1.3,0.1,2H2 - c-1.1,0-2,0.9-2,2c0,1.1,0.9,2,2,2h4.5c0.3,1.4,0.7,2.8,1.2,4H6c-1.1,0-2,0.9-2,2c0,1.1,0.9,2,2,2h2v0c0.7,0,1.4-0.1,2.1-0.3 - c1.5,1.4,3.4,2.3,5.9,2.3s4.4-0.9,5.9-2.3c0.7,0.2,1.4,0.3,2.1,0.3v0h2c1.1,0,2-0.9,2-2c0-1.1-0.9-2-2-2h-1.7 - c0.5-1.2,0.9-2.6,1.2-4H30c1.1,0,2-0.9,2-2C32,18.8,31.1,17.9,30,17.9z"/> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/centralmods.svg b/application/resources/pe_blue/scalable/centralmods.svg deleted file mode 100644 index cda39b1f..00000000 --- a/application/resources/pe_blue/scalable/centralmods.svg +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#DAEEFF" d="M28,10c0-1.1-0.9-2-2-2H16V6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V10z" - /> -<rect fill="none" width="32" height="32"/> -<path fill="#3366CC" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h8c2.6,0,4.8,1.7,5.6,4H26c3.3,0,6,2.7,6,6v16 - C32,29.3,29.3,32,26,32z M28,10c0-1.1-0.9-2-2-2H16V6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V10z - "/> -<path fill="#C1272D" d="M16,10.2l2.2,4.5l5,0.7L19.6,19l0.8,4.9L16,21.6l-4.4,2.3l0.8-4.9l-3.6-3.5l5-0.7L16,10.2z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/checkupdate.svg b/application/resources/pe_blue/scalable/checkupdate.svg deleted file mode 100644 index a7d9ee81..00000000 --- a/application/resources/pe_blue/scalable/checkupdate.svg +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#6699CC" d="M26,24h-0.4c0-0.1-0.1-0.2-0.1-0.3c-0.7-1.6-1.5-2.8-3.5-3.4V18c0-3.3-2.7-6-6-6c-3.3,0-6,2.7-6,6v2.3 - c-2,0.6-2.9,1.8-3.5,3.4c0,0,0,0.1,0,0.1C2.8,23.1,0,19.9,0,16v-2c0-4.4,3.6-8,8-8c0.8,0,1.5,0.1,2.2,0.3C10.9,2.7,14.2,0,18,0 - c4.4,0,8,3.6,8,8c0,0.7-0.1,1.4-0.3,2c0.1,0,0.2,0,0.3,0c3.3,0,6,2.7,6,6v2C32,21.3,29.3,24,26,24z"/> -<path fill="#39B54A" d="M12,24h2v-6c0-1.1,0.9-2,2-2c1.1,0,2,0.9,2,2v6h2c0.8,0,1.5,0.5,1.8,1.2c0.1,0.2,0.1,0.4,0.1,0.6 - c0.1,0.6-0.1,1.2-0.6,1.6l-4,4C17,31.8,16.5,32,16,32c-0.5,0-1-0.2-1.4-0.6l-4-4c-0.4-0.4-0.6-1-0.6-1.6c0-0.2,0.1-0.4,0.1-0.6 - C10.5,24.5,11.2,24,12,24z"/> -<rect fill="none" width="32" height="32"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/copy.svg b/application/resources/pe_blue/scalable/copy.svg deleted file mode 100644 index 7ce014ed..00000000 --- a/application/resources/pe_blue/scalable/copy.svg +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#DAEEFF" d="M4,26c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V14H4V26z"/> -<path fill="#6699CC" d="M28,25.6V10c0-3.3-2.7-6-6-6H6.4c0.8-2.3,3-4,5.6-4h14c3.3,0,6,2.7,6,6v14C32,22.6,30.3,24.8,28,25.6z"/> -<path fill="#3366CC" d="M26,12v14c0,3.3-2.7,6-6,6H6c-3.3,0-6-2.7-6-6V12c0-3.3,2.7-6,6-6h14C23.3,6,26,8.7,26,12z M4,26 - c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V14H4V26z M6,8c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S7.1,8,6,8z"/> -<rect fill="none" width="32" height="32"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/coremods.svg b/application/resources/pe_blue/scalable/coremods.svg deleted file mode 100644 index 4cc030d0..00000000 --- a/application/resources/pe_blue/scalable/coremods.svg +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<circle fill-rule="evenodd" clip-rule="evenodd" fill="#DAEEFF" cx="16" cy="16" r="12"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" d="M16,32C7.2,32,0,24.8,0,16C0,7.2,7.2,0,16,0c8.8,0,16,7.2,16,16 - C32,24.8,24.8,32,16,32z M16,4C9.4,4,4,9.4,4,16c0,6.6,5.4,12,12,12s12-5.4,12-12C28,9.4,22.6,4,16,4z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#C1272D" d="M16,6l2.9,6l6.6,1l-4.8,4.6l1.1,6.5L16,21l-5.9,3.1l1.1-6.5 - l-4.8-4.6l6.6-1L16,6z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/externaltools.svg b/application/resources/pe_blue/scalable/externaltools.svg deleted file mode 100644 index 45b73496..00000000 --- a/application/resources/pe_blue/scalable/externaltools.svg +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" d="M6,32h20c3.3,0,6-2.7,6-6V6c0-3.3-2.7-6-6-6h-9.1 - C17.6,1.2,18,2.6,18,4h8c1.1,0,2,0.9,2,2v20c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2v-4.5l-4-3V26C0,29.3,2.7,32,6,32z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#39B54A" d="M8.8,17.6C9.2,17.9,9.6,18,10,18c0.3,0,0.6-0.1,0.9-0.2 - c0.7-0.3,1.1-1,1.1-1.8v-1.9V14c6.3,0,11.7,4.2,13.4,10c0.4-1.3,0.6-2.6,0.6-4c0-7.7-6.3-14-14-14V4c0-0.8-0.4-1.5-1.1-1.8 - C10.6,2.1,10.3,2,10,2C9.6,2,9.2,2.1,8.8,2.4l-8,6C0.3,8.8,0,9.4,0,10c0,0.6,0.3,1.2,0.8,1.6L8.8,17.6z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/help.svg b/application/resources/pe_blue/scalable/help.svg deleted file mode 100644 index e98540cb..00000000 --- a/application/resources/pe_blue/scalable/help.svg +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xml:space="preserve" - enable-background="new 0 0 32 32" - viewBox="0 0 32 32" - y="0px" - x="0px" - id="Calque_1" - version="1.1"><metadata - id="metadata19"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs17" /><g - id="g12"><circle - id="circle2" - r="12" - cy="16" - cx="16" - fill="#DAEEFF" /><path - id="path10" - d="M16,32C7.2,32,0,24.8,0,16C0,7.2,7.2,0,16,0c8.8,0,16,7.2,16,16C32,24.8,24.8,32,16,32L16,32z M16,4 C9.4,4,4,9.4,4,16s5.4,12,12,12s12-5.4,12-12S22.6,4,16,4z" - fill="#3366CC" /></g><g - transform="translate(41.863574,-2.0092638)" - id="g861"><g - aria-label="?" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:27.34714317px;line-height:85.45981598px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L';letter-spacing:0px;word-spacing:0px;fill:#666666;fill-opacity:1;stroke:none;stroke-width:3.4183929px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - id="text832"><path - d="m -20.968435,13.920532 c 0,0.6381 -0.07293,1.239737 -0.218777,1.804911 -0.145852,0.565174 -0.401092,1.066538 -0.76572,1.504093 -0.401092,0.492249 -0.774836,0.902456 -1.121233,1.230621 -0.346397,0.328166 -0.656332,0.6381 -0.929803,0.929803 -0.25524,0.273471 -0.464902,0.556059 -0.628985,0.847762 -0.145851,0.291703 -0.218777,0.656331 -0.218777,1.093885 v 0.38286 h -3.144921 V 20.72997 c 0,-0.601637 0.136736,-1.221505 0.410207,-1.859605 0.273471,-0.656332 0.756604,-1.285316 1.449399,-1.886953 0.346397,-0.309935 0.638099,-0.583406 0.875108,-0.820415 0.237009,-0.25524 0.428439,-0.492248 0.57429,-0.711025 0.145851,-0.237009 0.246124,-0.483133 0.300819,-0.738373 0.05469,-0.273471 0.08204,-0.57429 0.08204,-0.902456 0,-0.528711 -0.12762,-0.984497 -0.38286,-1.367357 -0.237009,-0.401091 -0.656331,-0.601637 -1.257968,-0.601637 -1.057423,0 -1.640829,0.692794 -1.750218,2.078383 h -3.06288 c 0.01823,-0.747489 0.145853,-1.431167 0.38286,-2.051036 0.237009,-0.6381 0.565175,-1.185043 0.984498,-1.640829 0.419323,-0.474017 0.920687,-0.8386455 1.504092,-1.0938855 0.601637,-0.25524 1.2762,-0.38286 2.023689,-0.38286 0.838646,0 1.567903,0.1367357 2.187771,0.4102072 0.619869,0.25524 1.130349,0.6198684 1.53144,1.0938853 0.401092,0.455786 0.692795,1.002729 0.875109,1.640829 0.200546,0.619869 0.300819,1.294432 0.30082,2.023689 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Monofonto;-inkscape-font-specification:Monofonto;fill:#666666;fill-opacity:1;stroke-width:3.4183929px" - id="path855" /></g><circle - style="fill:#666666" - cx="-26.38899" - cy="25.466606" - r="1.8" - id="circle6-6" /></g></svg>
\ No newline at end of file diff --git a/application/resources/pe_blue/scalable/instance-settings.svg b/application/resources/pe_blue/scalable/instance-settings.svg deleted file mode 100644 index 43f0b2f2..00000000 --- a/application/resources/pe_blue/scalable/instance-settings.svg +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6 - v20C32,29.3,29.3,32,26,32z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#DAEEFF" d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V6z"/> -<rect x="16" y="10" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="8" height="2"/> -<rect x="8" y="18" fill-rule="evenodd" clip-rule="evenodd" width="6" height="6"/> -<rect x="10" y="20" fill-rule="evenodd" clip-rule="evenodd" fill="#DAEEFF" width="2" height="2"/> -<rect x="8" y="8" fill-rule="evenodd" clip-rule="evenodd" width="6" height="6"/> -<rect x="10" y="10" fill-rule="evenodd" clip-rule="evenodd" fill="#DAEEFF" width="2" height="2"/> -<rect x="16" y="20" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="8" height="2"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/jarmods.svg b/application/resources/pe_blue/scalable/jarmods.svg deleted file mode 100644 index bb75f4b1..00000000 --- a/application/resources/pe_blue/scalable/jarmods.svg +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6 - v20C32,29.3,29.3,32,26,32z"/> -<path fill="#6699CC" stroke="#6699CC" stroke-width="0.3" stroke-miterlimit="10" d="M12.2,21.2c0,0-1.3,0.7,0.9,1 - c2.7,0.3,4,0.3,7-0.3c0,0,0.8,0.5,1.9,0.9C15.3,25.7,7,22.7,12.2,21.2"/> -<path fill="#6699CC" stroke="#6699CC" stroke-width="0.3" stroke-miterlimit="10" d="M11.4,17.5c0,0-1.4,1.1,0.8,1.3 - c2.9,0.3,5.1,0.3,9-0.4c0,0,0.5,0.5,1.4,0.8C14.5,21.6,5.7,19.4,11.4,17.5"/> -<path fill="#6699CC" stroke="#6699CC" stroke-width="0.3" stroke-miterlimit="10" d="M26.9,23.9c0,0,1,0.8-1,1.4 - c-3.8,1.2-15.8,1.5-19.2,0c-1.2-0.5,1.1-1.2,1.8-1.4c0.7-0.2,1.2-0.1,1.2-0.1c-1.3-0.9-8.6,1.8-3.7,2.6 - C19.3,28.7,30.4,25.5,26.9,23.9"/> -<path fill="#6699CC" stroke="#6699CC" stroke-width="0.3" stroke-miterlimit="10" d="M12.8,13.7c0,0-6.1,1.5-2.2,2 - c1.7,0.2,5,0.2,8.1-0.1c2.5-0.2,5.1-0.7,5.1-0.7s-0.9,0.4-1.5,0.8C16,17.4,4,16.6,7.5,15C10.4,13.6,12.8,13.7,12.8,13.7"/> -<path fill="#6699CC" stroke="#6699CC" stroke-width="0.3" stroke-miterlimit="10" d="M23.8,19.9c6.3-3.3,3.4-6.4,1.4-6 - c-0.5,0.1-0.7,0.2-0.7,0.2s0.2-0.3,0.5-0.4c4-1.4,7.1,4.2-1.3,6.4C23.7,20,23.7,19.9,23.8,19.9"/> -<path fill="#6699CC" stroke="#6699CC" stroke-width="0.3" stroke-miterlimit="10" d="M13.4,28.7c6.1,0.4,15.4-0.2,15.6-3.1 - c0,0-0.4,1.1-5,2c-5.2,1-11.6,0.9-15.3,0.2C8.7,27.9,9.4,28.5,13.4,28.7"/> -<path fill="#F15A24" d="M16.5,0.6l2.2,4.5l5,0.7l-3.6,3.5l0.8,4.9l-4.4-2.3l-4.4,2.3l0.8-4.9L9.4,5.8l5-0.7L16.5,0.6z"/> -</svg> diff --git a/application/resources/pe_blue/scalable/java.svg b/application/resources/pe_blue/scalable/java.svg deleted file mode 100644 index 5e369203..00000000 --- a/application/resources/pe_blue/scalable/java.svg +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <path id="XMLID_5_" fill="#F2F2F2" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v20C32,29.3,29.3,32,26,32z" - /> -</g> -<path fill="none" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v20C32,29.3,29.3,32,26,32z"/> -<g> - <path fill="#F15A24" d="M16.7,15.6l1-0.8c0.1-0.1,1.9-1.6,0.4-3.4c-1.3-1.6-1.8-3.1-1.4-4.5c1.1-3.4,7.2-4.9,7.4-5l1-0.2l-0.9,0.5 - C20.7,4.3,19,5.8,18.8,7c-0.2,0.9,0.4,1.7,1.1,2.7l0.2,0.3c0.5,0.7,0.6,1.4,0.5,2.1C20.2,13.8,18,15,17.9,15L16.7,15.6z"/> -</g> -<g> - <path fill="#6699CC" d="M15.9,24.2c-2.9,0-5.3-0.8-5.5-1.8c-0.1-0.4,0.2-0.9,1.7-1.4l1.3-0.4l-1.2,0.7c-0.1,0.1-0.3,0.2-0.3,0.3 - c0,0,0.1,0.3,1.2,0.4c1.2,0.1,2.1,0.2,2.8,0.2c1.2,0,2.3-0.1,4.1-0.5l0.1,0l0,0c0,0,0.8,0.5,1.9,0.9l0.4,0.1l-0.3,0.1 - C19.7,24,17.4,24.2,15.9,24.2z"/> -</g> -<g> - <path fill="#6699CC" d="M15.3,20.4c-3.3,0-5.7-0.6-5.8-1.5c-0.1-0.5,0.6-1,1.9-1.5l0.8-0.3l-0.7,0.5c-0.1,0.1-0.4,0.4-0.4,0.6 - c0,0.1,0.2,0.3,1.1,0.4c1.3,0.1,2.3,0.2,3.2,0.2c1.7,0,3.4-0.2,5.7-0.6l0.1,0l0.1,0.1c0,0,0.5,0.5,1.3,0.8l0.5,0.2l-0.5,0.1 - C20.3,20,17.7,20.4,15.3,20.4z"/> -</g> -<g> - <path fill="#6699CC" d="M15.3,27.4C15.3,27.4,15.3,27.4,15.3,27.4c-3.1,0-6.3-0.3-9.4-0.8c-1.2-0.2-1.8-0.5-1.8-1 - c0.1-1,3.1-2,4.7-2c0.4,0,0.7,0.1,0.9,0.2l0.6,0.4l-0.7-0.1c0,0-0.4-0.1-1.1,0.1c-1.6,0.5-2,0.8-2,0.9c0,0,0,0.1,0.2,0.2 - c1.4,0.6,4.6,1,8.7,1c4.3,0,8.4-0.4,10.3-1c0.9-0.3,1.1-0.6,1.1-0.7c0-0.2-0.2-0.4-0.2-0.4l-0.9-0.8l1.1,0.5 - c0.7,0.3,0.8,0.7,0.7,0.9C27.4,26,22.4,27.4,15.3,27.4z"/> -</g> -<g> - <path fill="#6699CC" d="M13.6,16.7c-3,0-6.7-0.3-6.9-1.2c-0.1-0.4,0.5-0.7,0.7-0.8c2.5-1.1,4.6-1.2,5.2-1.2c0.1,0,0.1,0,0.1,0l1,0 - l-1,0.3c-1.8,0.4-3.4,1.1-3.4,1.4c0,0,0,0.2,1.2,0.4c0.8,0.1,1.9,0.1,3.1,0.1c1.6,0,3.4-0.1,5-0.2c2.5-0.2,5.1-0.7,5.1-0.7l1.3-0.2 - L23.9,15c0,0-0.9,0.4-1.5,0.8l0,0C20.1,16.4,16.9,16.7,13.6,16.7z"/> -</g> -<g> - <path fill="#6699CC" d="M23.5,20.3v-0.2c0-0.1,0-0.3,0.2-0.3c3.8-2,3.8-3.7,3.7-4.3c-0.2-0.9-1.1-1.4-1.9-1.4c-0.1,0-0.2,0-0.3,0 - c-0.5,0.1-0.7,0.2-0.7,0.2l-0.5,0.2l0.3-0.5c0,0,0.2-0.3,0.6-0.5c0.4-0.2,0.9-0.2,1.3-0.2c1.5,0,2.7,0.9,2.9,2.2 - c0.2,1.5-1.1,3.5-5.4,4.7L23.5,20.3z"/> -</g> -<g> - <path fill="#6699CC" d="M16.9,29c-1.2,0-2.4,0-3.5-0.1c-3.8-0.2-4.8-0.8-4.8-1v-0.2l0.2,0c1.8,0.3,4.2,0.5,6.8,0.5 - c3,0,5.9-0.3,8.4-0.7c4.4-0.9,4.9-1.9,4.9-1.9l0.3-0.8l-0.1,0.9c-0.1,1.2-1.5,2.1-4.1,2.6C22.9,28.7,20.1,29,16.9,29z"/> -</g> -<path fill="#F15A24" d="M16.8,4.2c1.8-1.4,3-2.8,3.7-4.2h-1.7c-0.8,1-1.9,1.8-2.9,2.7c-1.2,1-2.5,2-3.3,3.2c-1.6,2.6,1,5.2,4,8 - l0.5,0.5l-0.3-0.6c-0.3-0.7-0.7-1.3-1.2-1.9C14.2,9.6,12.7,7.4,16.8,4.2z"/> -</svg> diff --git a/application/resources/pe_blue/scalable/language.svg b/application/resources/pe_blue/scalable/language.svg deleted file mode 100644 index 92868516..00000000 --- a/application/resources/pe_blue/scalable/language.svg +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - 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"><metadata - id="metadata45"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs43" /><path - fill-rule="evenodd" - clip-rule="evenodd" - fill="#3366CC" - d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6 v20C32,29.3,29.3,32,26,32z" - id="path2" /><path - fill="#DAEEFF" - fill-rule="evenodd" - clip-rule="evenodd" - d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 c1.1,0,2-0.9,2-2V6z" - id="path4" /><g - id="g10" /><g - id="g12" /><g - id="g14" /><g - id="g16" /><g - id="g18" /><g - id="g20" /><g - id="g22" /><g - id="g24" /><g - id="g26" /><g - id="g28" /><g - id="g30" /><g - id="g32" /><g - id="g34" /><g - id="g36" /><g - id="g38" /><path - d="m 9.1897907,10.114301 c -0.4838401,0 -0.9011011,0.341924 -0.9962772,0.815883 L 6.1640606,21.085639 c -0.1100564,0.55031 0.2460855,1.083011 0.7953819,1.193069 0.5562003,0.113982 1.0840209,-0.246085 1.1930722,-0.79538 l 0.6518824,-3.247122 h 2.8699319 l 0.647785,3.247122 c 0.110996,0.557485 0.658771,0.906193 1.197171,0.79538 0.549363,-0.110056 0.905437,-0.642759 0.795381,-1.193069 L 12.285213,10.930184 c -0.09517,-0.473959 -0.512431,-0.815883 -0.996274,-0.815883 z m 0.6149825,2.287746 h 0.4345928 l 0.811779,4.063002 H 8.9929943 Z M 20.710512,9.7002137 c -0.561209,0 -1.016777,0.4578063 -1.016777,1.0208743 v 1.016774 h -3.046227 c -0.561205,0 -1.012673,0.457809 -1.012673,1.020876 0,0.563065 0.451466,1.016776 1.012673,1.016776 h 0.274696 c 0.577658,1.85973 1.425829,3.313572 2.37794,4.460692 -0.745862,0.684158 -1.478369,1.245052 -2.271343,1.873654 -0.437271,0.35118 -0.506831,0.995228 -0.155795,1.434967 0.349411,0.439057 0.990377,0.507857 1.426766,0.155794 0.861615,-0.682321 1.601995,-1.252055 2.410742,-1.996652 0.808748,0.744597 1.618828,1.314331 2.480441,1.996652 0.436393,0.352059 1.077353,0.283261 1.426766,-0.155794 0.351038,-0.439739 0.277375,-1.083787 -0.159884,-1.434967 -0.792979,-0.628602 -1.591082,-1.189496 -2.336946,-1.873654 0.952113,-1.147188 1.869915,-2.601029 2.447642,-4.460692 h 0.270592 c 0.561209,0 1.016774,-0.453711 1.016774,-1.016776 0,-0.563067 -0.455565,-1.020876 -1.016774,-1.020876 h -3.111838 v -1.016774 c 0,-0.563068 -0.455567,-1.0208743 -1.016775,-1.0208743 z m -1.668658,4.0753003 h 3.402916 c -0.438423,1.181552 -1.08891,2.13806 -1.734258,2.951929 -0.645345,-0.813869 -1.230238,-1.770309 -1.668658,-2.951929 z" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#c1272d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6.29744864;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect977" /></svg>
\ No newline at end of file diff --git a/application/resources/pe_blue/scalable/loadermods.svg b/application/resources/pe_blue/scalable/loadermods.svg deleted file mode 100644 index a54dc211..00000000 --- a/application/resources/pe_blue/scalable/loadermods.svg +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#DAEEFF" d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V6z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#C1272D" d="M16,6.4l2.9,6l6.6,1l-4.8,4.6l1.1,6.5L16,21.4l-5.9,3.1l1.1-6.5 - l-4.8-4.6l6.6-1L16,6.4z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6 - v20C32,29.3,29.3,32,26,32z M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V6z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/log.svg b/application/resources/pe_blue/scalable/log.svg deleted file mode 100644 index 89d373f4..00000000 --- a/application/resources/pe_blue/scalable/log.svg +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" d="M30,28c-3.1,0.1-8.9,0.7-12.1,2.3C17.8,31.3,17,32,16,32 - c-1,0-1.8-0.7-1.9-1.7c-3.2-1.6-9-2.2-12.1-2.3c-1.1,0-2-0.9-2-2V2c0-1.1,0.9-2,2-2c0.1,0,0.1,0,0.2,0C16,0.4,16,4,16,4 - s0-3.6,13.8-4c0.1,0,0.1,0,0.2,0c1.1,0,2,0.9,2,2v24C32,27.1,31.1,28,30,28z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#DAEEFF" d="M14,6.3C11.4,5,7.2,4.4,4,4.2v19.9c5.4,0.3,8.4,1.1,10,1.9V6.3z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#DAEEFF" d="M28,4.2C24.8,4.4,20.6,5,18,6.3V26c1.6-0.8,4.6-1.6,10-1.9V4.2z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/minecraft.svg b/application/resources/pe_blue/scalable/minecraft.svg deleted file mode 100644 index 2fe6a028..00000000 --- a/application/resources/pe_blue/scalable/minecraft.svg +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill-rule="evenodd" clip-rule="evenodd" fill="none" width="32" height="32"/> -<g> - <polygon fill-rule="evenodd" clip-rule="evenodd" fill="#754C24" points="16,14.2 30,7.1 30,24.9 16,32 "/> - <polygon fill-rule="evenodd" clip-rule="evenodd" fill="#8C6239" points="16,14.2 2,7.1 2,24.9 16,32 "/> - <g> - <polygon fill-rule="evenodd" clip-rule="evenodd" fill="#39B54A" points="2,7.1 16,14.2 30,7.1 16,0 "/> - </g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/multimc.svg b/application/resources/pe_blue/scalable/multimc.svg deleted file mode 100644 index 820c0b53..00000000 --- a/application/resources/pe_blue/scalable/multimc.svg +++ /dev/null @@ -1,61 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill="#754C24" width="32" height="32"/> -<polygon fill="#39B54A" points="0,5 1,5 1,4 4,4 4,5 8,5 8,8 9,8 9,2 12,2 12,5 13,5 13,4 16,4 16,8 17,8 17,6 18,6 18,5 20,5 20,8 - 21,8 21,6 22,6 22,5 24,5 24,4 26,4 26,5 29,5 29,4 32,4 32,0 0,0 "/> -<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-963.8778" y1="47.5718" x2="-963.0319" y2="49.6501" gradientTransform="matrix(20.79 0 0 14.7315 20048.0879 -696.8257)"> - <stop offset="0" style="stop-color:#000000;stop-opacity:0.8"/> - <stop offset="1" style="stop-color:#000000;stop-opacity:0.35"/> -</linearGradient> -<path fill="url(#SVGID_1_)" d="M18.5,21.5c-0.5-0.4-1-1-1.8-1.9c-1,1.2-1.9,2.1-2.8,2.7c-1.1,0.7-2.5,1-4.1,1c-2,0-3.6-0.5-4.9-1.6 - c-1.4-1.1-2.1-2.6-2.1-4.4c0-1.7,0.7-3.2,2.1-4.4c1.2-1,2.9-1.6,5-1.6c1.1,0,2,0.2,2.8,0.5c0.9,0.3,1.7,0.8,2.3,1.4 - c0.6,0.5,1.2,1.2,1.8,1.9c1-1.2,1.9-2.1,2.8-2.7c1.1-0.7,2.5-1,4.1-1c2,0,3.6,0.5,4.9,1.6c1.4,1.1,2.1,2.6,2.1,4.4 - c0,1.7-0.7,3.2-2.1,4.4c-1.2,1-2.9,1.6-5,1.6c-1.1,0-2-0.2-2.8-0.5S19.2,22.1,18.5,21.5 M9.6,21.3c2.4,0,4.3-1.2,5.8-3.7 - c-1.9-2.7-3.8-4.1-5.8-4.1c-1.5,0-2.6,0.4-3.3,1.1c-0.8,0.8-1.2,1.7-1.2,2.8c0,1.2,0.4,2.1,1.2,2.8C7.1,20.9,8.2,21.3,9.6,21.3 - M23.9,13.5c-2.2,0-4.1,1.2-5.8,3.7c1.8,2.7,3.8,4.1,5.8,4.1c1.5,0,2.6-0.4,3.3-1.1c0.8-0.8,1.2-1.7,1.2-2.8c0-1.2-0.4-2.1-1.2-2.8 - C26.3,13.8,25.2,13.5,23.9,13.5"/> -<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-964.0289" y1="48.0195" x2="-962.7877" y2="48.9627" gradientTransform="matrix(20.79 0 0 14.7315 20047.7695 -696.964)"> - <stop offset="0" style="stop-color:#75B54B"/> - <stop offset="1" style="stop-color:#75B54B;stop-opacity:0.6"/> -</linearGradient> -<path fill="url(#SVGID_2_)" d="M17.6,20.1c-0.5-0.4-1-1-1.8-1.9c-1,1.2-1.9,2.1-2.8,2.7c-1.1,0.7-2.5,1-4.1,1c-2,0-3.6-0.5-4.9-1.6 - c-1.4-1.1-2.1-2.6-2.1-4.4c0-1.7,0.7-3.2,2.1-4.4c1.2-1,2.9-1.6,5-1.6c1.1,0,2,0.2,2.8,0.5c0.9,0.3,1.7,0.8,2.3,1.4 - c0.6,0.5,1.2,1.2,1.8,1.9c1-1.2,1.9-2.1,2.8-2.7c1.1-0.7,2.5-1,4.1-1c2,0,3.6,0.5,4.9,1.6c1.4,1.1,2.1,2.6,2.1,4.4 - c0,1.7-0.7,3.2-2.1,4.4c-1.2,1-2.9,1.6-5,1.6c-1.1,0-2-0.2-2.8-0.5C19.2,21.2,18.4,20.8,17.6,20.1 M8.7,19.9c2.4,0,4.3-1.2,5.8-3.7 - c-1.9-2.7-3.8-4.1-5.8-4.1c-1.5,0-2.6,0.4-3.3,1.1C4.6,14,4.2,14.9,4.2,16c0,1.2,0.4,2.1,1.2,2.8C6.2,19.5,7.3,19.9,8.7,19.9 - M23,12.1c-2.2,0-4.1,1.2-5.8,3.7c1.8,2.7,3.8,4.1,5.8,4.1c1.5,0,2.6-0.4,3.3-1.1c0.8-0.8,1.2-1.7,1.2-2.8c0-1.2-0.4-2.1-1.2-2.8 - C25.5,12.5,24.4,12.1,23,12.1"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/new.svg b/application/resources/pe_blue/scalable/new.svg deleted file mode 100644 index dcc8579e..00000000 --- a/application/resources/pe_blue/scalable/new.svg +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill="none" width="32" height="32"/> -<g> - <path fill="#3366CC" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v20C32,29.3,29.3,32,26,32z M6,2 - C4.9,2,4,2.9,4,4s0.9,2,2,2s2-0.9,2-2S7.1,2,6,2z"/> - <path fill="#DAEEFF" d="M28,8H4v18c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V8z"/> - <path fill="#666666" d="M20,20h-2v2c0,1.1-0.9,2-2,2s-2-0.9-2-2v-2h-2c-1.1,0-2-0.9-2-2s0.9-2,2-2h2v-2c0-1.1,0.9-2,2-2s2,0.9,2,2 - v2h2c1.1,0,2,0.9,2,2S21.1,20,20,20z"/> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/news.svg b/application/resources/pe_blue/scalable/news.svg deleted file mode 100644 index 3ca3be37..00000000 --- a/application/resources/pe_blue/scalable/news.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill="none" width="32" height="32"/> -<g> - <g> - <path fill="#3366CC" d="M26,0H6C2.6,0,0,2.6,0,6v14c0,3.4,2.6,6,6,6l4,6l4-6h12c3.4,0,6-2.6,6-6V6C32,2.6,29.4,0,26,0z M16,20H6 - v-2h10V20z M26,16H6v-2h20V16z M26,12H6v-2h20V12z M26,8H6V6h20V8z"/> - </g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/notes.svg b/application/resources/pe_blue/scalable/notes.svg deleted file mode 100644 index d0991259..00000000 --- a/application/resources/pe_blue/scalable/notes.svg +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6 - v20C32,29.3,29.3,32,26,32z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#DAEEFF" d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V6z"/> -<g> - <rect x="8" y="16" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="16" height="2"/> - <rect x="8" y="12" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="16" height="2"/> - <rect x="8" y="8" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="16" height="2"/> - <rect x="8" y="20" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="8" height="2"/> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/patreon.svg b/application/resources/pe_blue/scalable/patreon.svg deleted file mode 100644 index 644b9b41..00000000 --- a/application/resources/pe_blue/scalable/patreon.svg +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill="none" width="32" height="32"/> -<path fill="#F15A24" d="M16,0C7.2,0,0,7.2,0,16v16h15.3c0.2,0,0.4,0,0.7,0c8.8,0,16-7.2,16-16S24.8,0,16,0L16,0z"/> -<path fill="#FFFFFF" d="M16,3.7C9.2,3.7,3.7,9.2,3.7,16v7.3v5V32h4.9V16c0-4.1,3.3-7.3,7.3-7.3s7.3,3.3,7.3,7.3 - c0,4.1-3.3,7.3-7.3,7.3c-1.5,0-2.9-0.4-4-1.2v5.3c0.8,0.5,2.5,0.8,4.6,0.8C23.1,28,28.3,22.6,28.3,16C28.3,9.2,22.8,3.7,16,3.7 - L16,3.7z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/proxy.svg b/application/resources/pe_blue/scalable/proxy.svg deleted file mode 100644 index 8266f9b8..00000000 --- a/application/resources/pe_blue/scalable/proxy.svg +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" d="M21.9,4H11.6c-0.8-2.3-3-4-5.6-4C2.7,0,0,2.7,0,6s2.7,6,6,6 - c2.6,0,4.8-1.7,5.6-4h10.3c1.1,0,2,0.9,2,2v1.4h4V10C27.9,6.7,25.2,4,21.9,4z M6,8C4.9,8,4,7.1,4,6s0.9-2,2-2c1.1,0,2,0.9,2,2 - S7.1,8,6,8z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" d="M23.9,20.6V22c0,1.1-0.9,2-2,2H11.6c-0.8-2.3-3-4-5.6-4 - c-3.3,0-6,2.7-6,6s2.7,6,6,6c2.6,0,4.8-1.7,5.6-4h10.3c3.3,0,6-2.7,6-6v-1.4H23.9z M6,28c-1.1,0-2-0.9-2-2s0.9-2,2-2 - c1.1,0,2,0.9,2,2S7.1,28,6,28z"/> -<g> - <path fill-rule="evenodd" clip-rule="evenodd" fill="#C1272D" d="M32,22H20V10h12V22z M28,14h-4v4h4V14z"/> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/quickmods.svg b/application/resources/pe_blue/scalable/quickmods.svg deleted file mode 100644 index 8b577376..00000000 --- a/application/resources/pe_blue/scalable/quickmods.svg +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#DAEEFF" d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V6z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6 - v20C32,29.3,29.3,32,26,32z M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V6z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#C1272D" d="M10.6,24.2c-0.3,0-0.6-0.1-0.8-0.2C9.3,23.7,9,23.2,9,22.6V9.8 - c0-0.6,0.3-1.1,0.8-1.4c0.3-0.2,0.5-0.2,0.8-0.2c0.2,0,0.5,0.1,0.7,0.2l12.8,6.4c0.5,0.3,0.9,0.8,0.9,1.4c0,0.6-0.3,1.2-0.9,1.4 - L11.3,24C11.1,24.1,10.8,24.2,10.6,24.2z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/refresh.svg b/application/resources/pe_blue/scalable/refresh.svg deleted file mode 100644 index a3d2281d..00000000 --- a/application/resources/pe_blue/scalable/refresh.svg +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill="none" width="32" height="32"/> -<path fill="#39B54A" d="M31.8,17.4c-0.4-0.9-1.2-1.4-2.1-1.4h-2.3c0-7.6-6.1-13.7-13.7-13.7C6.1,2.3,0,8.4,0,16 - c0,7.6,6.1,13.7,13.7,13.7c2.5,0,4.8-0.7,6.8-1.8l-3.4-3.4c-1,0.4-2.2,0.7-3.4,0.7c-5,0-9.1-4.1-9.1-9.1s4.1-9.1,9.1-9.1 - c5.1,0,9.1,4.1,9.1,9.1h-2.3c-0.9,0-1.8,0.6-2.1,1.4c-0.4,0.9-0.2,1.8,0.5,2.5l4.6,4.6c0.4,0.4,1,0.7,1.6,0.7c0.6,0,1.2-0.2,1.6-0.7 - l4.6-4.6C32,19.2,32.2,18.3,31.8,17.4z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/resourcepacks.svg b/application/resources/pe_blue/scalable/resourcepacks.svg deleted file mode 100644 index a17e7e82..00000000 --- a/application/resources/pe_blue/scalable/resourcepacks.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#DAEEFF" d="M28,10c0-1.1-0.9-2-2-2H6c-1.1,0-2,0.9-2,2v16c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V10z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" d="M26,4h-4V2c0-1.1-0.9-2-2-2h-8c-1.1,0-2,0.9-2,2v2H6 - c-3.3,0-6,2.7-6,6v16c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V10C32,6.7,29.3,4,26,4z M12,3c0-0.6,0.4-1,1-1h6c0.6,0,1,0.4,1,1v1h-8V3z - M6,8h20c1.1,0,2,0.9,2,2v4H4v-4C4,8.9,4.9,8,6,8z M18,17c0,1.1-0.9,2-2,2s-2-0.9-2-2c0-0.4,0.1-0.7,0.3-1h3.4 - C17.9,16.3,18,16.6,18,17z M26,28H6c-1.1,0-2-0.9-2-2V16h8.1c-0.1,0.3-0.1,0.7-0.1,1c0,2.2,1.8,4,4,4s4-1.8,4-4c0-0.3-0.1-0.7-0.1-1 - H28v10C28,27.1,27.1,28,26,28z"/> -</svg> diff --git a/application/resources/pe_blue/scalable/screenshots.svg b/application/resources/pe_blue/scalable/screenshots.svg deleted file mode 100644 index 1aa4e559..00000000 --- a/application/resources/pe_blue/scalable/screenshots.svg +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6 - v20C32,29.3,29.3,32,26,32z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#DAEEFF" d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V6z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#666666" d="M24,26H8c-1.1,0-2-0.9-2-2v-0.7c0.8-1.7,1.5-3.8,2-4.8 - c1.1-2.4,3.5,3.5,4.9,3.5c2.8,0,6.2-10.7,9.1-7.4c1.4,1.6,2.9,5.8,4,8.4V24C26,25.1,25.1,26,24,26z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F15A24" d="M9,6c1.7,0,3,1.3,3,3c0,1.7-1.3,3-3,3c-1.7,0-3-1.3-3-3 - C6,7.3,7.3,6,9,6z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/settings.svg b/application/resources/pe_blue/scalable/settings.svg deleted file mode 100644 index 43f0b2f2..00000000 --- a/application/resources/pe_blue/scalable/settings.svg +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6 - v20C32,29.3,29.3,32,26,32z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#DAEEFF" d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V6z"/> -<rect x="16" y="10" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="8" height="2"/> -<rect x="8" y="18" fill-rule="evenodd" clip-rule="evenodd" width="6" height="6"/> -<rect x="10" y="20" fill-rule="evenodd" clip-rule="evenodd" fill="#DAEEFF" width="2" height="2"/> -<rect x="8" y="8" fill-rule="evenodd" clip-rule="evenodd" width="6" height="6"/> -<rect x="10" y="10" fill-rule="evenodd" clip-rule="evenodd" fill="#DAEEFF" width="2" height="2"/> -<rect x="16" y="20" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="8" height="2"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/status-bad.svg b/application/resources/pe_blue/scalable/status-bad.svg deleted file mode 100644 index 4a48b5d8..00000000 --- a/application/resources/pe_blue/scalable/status-bad.svg +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#C1272D" d="M26,32H6c-3.4,0-6-2.6-6-6V6c0-3.4,2.6-6,6-6h20c3.4,0,6,2.6,6,6v20C32,29.4,29.4,32,26,32z"/> -<path fill="#FFFFFF" d="M21.6,21.6c-0.8,0.8-2,0.8-2.8,0L16,18.8l-2.8,2.8c-0.8,0.8-2,0.8-2.8,0c-0.8-0.8-0.8-2,0-2.8l2.8-2.8 - l-2.8-2.8c-0.8-0.8-0.8-2,0-2.8c0.8-0.8,2-0.8,2.8,0l2.8,2.8l2.8-2.8c0.8-0.8,2-0.8,2.8,0s0.8,2,0,2.8L18.8,16l2.8,2.8 - C22.4,19.6,22.4,20.8,21.6,21.6z"/> -</svg> diff --git a/application/resources/pe_blue/scalable/status-good.svg b/application/resources/pe_blue/scalable/status-good.svg deleted file mode 100644 index 4cfa56f0..00000000 --- a/application/resources/pe_blue/scalable/status-good.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <path fill="none" d="M26,0H6C2.6,0,0,2.6,0,6v20c0,3.4,2.6,6,6,6h20c3.4,0,6-2.6,6-6V6C32,2.6,29.4,0,26,0z M28,26c0,1.2-0.8,2-2,2 - H6c-1.2,0-2-0.8-2-2V6c0-1.2,0.8-2,2-2h20c1.2,0,2,0.8,2,2V26z M21,10.4l-7,7l-2.8-2.8c-0.8-0.8-2-0.8-2.8,0s-0.8,2,0,2.8l4.2,4.2 - c0.8,0.8,2,0.8,2.8,0l8.4-8.4c0.8-0.8,0.8-2,0-2.8S21.8,9.6,21,10.4z"/> -</g> -<path fill="#39B54A" d="M26,0H6C2.6,0,0,2.6,0,6v20c0,3.4,2.6,6,6,6h20c3.4,0,6-2.6,6-6V6C32,2.6,29.4,0,26,0z"/> -<path fill="#39B54A" d="M28,26c0,1.2-0.8,2-2,2H6c-1.2,0-2-0.8-2-2V6c0-1.2,0.8-2,2-2h20c1.2,0,2,0.8,2,2V26z"/> -<path fill="#FFFFFF" d="M21,10.4l-7,7l-2.8-2.8c-0.8-0.8-2-0.8-2.8,0s-0.8,2,0,2.8l4.2,4.2c0.8,0.8,2,0.8,2.8,0l8.4-8.4 - c0.8-0.8,0.8-2,0-2.8S21.8,9.6,21,10.4z"/> -</svg> diff --git a/application/resources/pe_blue/scalable/status-yellow.svg b/application/resources/pe_blue/scalable/status-yellow.svg deleted file mode 100644 index 0551fed2..00000000 --- a/application/resources/pe_blue/scalable/status-yellow.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <path fill="#E3A333" d="M26,0H6C2.7,0,0,2.7,0,6v20c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V6C32,2.7,29.3,0,26,0z M28,26 - c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2V26z"/> -</g> -<path fill="#E3A333" d="M26,0H6C2.7,0,0,2.7,0,6v20c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V6C32,2.7,29.3,0,26,0z"/> -<path fill="#E3A333" d="M28,26c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2V26z"/> -<g> - <path fill="#FFFFFF" d="M6,20c0-5.8,2.4-7.9,5.8-7.9c2,0,3.4,0.7,5.3,1.9c1.6,1,2.5,1.5,3.3,1.5c0.7,0,1.2-0.7,1.3-3.1H26 - c0.2,6.1-2.3,8-5.5,8c-2,0-3.5-0.8-5.3-1.9c-1.7-1-2.6-1.6-3.3-1.6c-0.8,0-1.4,0.5-1.6,3.2H6z"/> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/viewfolder.svg b/application/resources/pe_blue/scalable/viewfolder.svg deleted file mode 100644 index 2634f8ff..00000000 --- a/application/resources/pe_blue/scalable/viewfolder.svg +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#DAEEFF" d="M28,10c0-1.1-0.9-2-2-2H16V6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V10z" - /> -<rect fill="none" width="32" height="32"/> -<path fill="#3366CC" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h8c2.6,0,4.8,1.7,5.6,4H26c3.3,0,6,2.7,6,6v16 - C32,29.3,29.3,32,26,32z M28,10c0-1.1-0.9-2-2-2H16V6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V10z - "/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_blue/scalable/worlds.svg b/application/resources/pe_blue/scalable/worlds.svg deleted file mode 100644 index 1670c035..00000000 --- a/application/resources/pe_blue/scalable/worlds.svg +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xml:space="preserve" - enable-background="new 0 0 32 32" - viewBox="0 0 32 32" - y="0px" - x="0px" - id="Calque_1" - version="1.1"><metadata - id="metadata45"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs43" /><path - id="path2" - d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6 v20C32,29.3,29.3,32,26,32z" - fill="#3366CC" - clip-rule="evenodd" - fill-rule="evenodd" /><path - fill="#DAEEFF" - fill-rule="evenodd" - clip-rule="evenodd" - id="path4" - d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 c1.1,0,2-0.9,2-2V6z" /><g - id="g10" /><g - id="g12" /><g - id="g14" /><g - id="g16" /><g - id="g18" /><g - id="g20" /><g - id="g22" /><g - id="g24" /><g - id="g26" /><g - id="g28" /><g - id="g30" /><g - id="g32" /><g - id="g34" /><g - id="g36" /><g - id="g38" /><g - transform="rotate(29.970903,16,16)" - id="g881"><ellipse - ry="8.9473686" - rx="8.9473696" - cy="16" - cx="16" - id="path845" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#666666;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /><ellipse - ry="8.9473686" - rx="3.4915254" - cy="15.947369" - cx="16" - id="path845-3" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#666666;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /><path - style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="M 8.1848294,12.430327 C 12.570183,14.790801 20.250652,13.785896 22.94338,12" - id="path870" /><path - id="path872" - d="M 8.2166335,20.492522 C 12.601987,18.132048 21.148735,17.776739 23.841463,19.562635" - style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /></g></svg>
\ No newline at end of file diff --git a/application/resources/pe_colored/index.theme b/application/resources/pe_colored/index.theme deleted file mode 100644 index b757bbd7..00000000 --- a/application/resources/pe_colored/index.theme +++ /dev/null @@ -1,11 +0,0 @@ -[Icon Theme] -Name=pe_colored -Comment=Icons by pexner (colored) -Inherits=multimc -Directories=scalable - -[scalable] -Size=48 -Type=Scalable -MinSize=16 -MaxSize=256 diff --git a/application/resources/pe_colored/pe_colored.qrc b/application/resources/pe_colored/pe_colored.qrc deleted file mode 100644 index fbaaf9e4..00000000 --- a/application/resources/pe_colored/pe_colored.qrc +++ /dev/null @@ -1,38 +0,0 @@ -<!DOCTYPE RCC> -<RCC version="1.0"> - <qresource prefix="/icons/pe_colored"> - <file>index.theme</file> - <file>scalable/about.svg</file> - <file>scalable/accounts.svg</file> - <file>scalable/bug.svg</file> - <file>scalable/centralmods.svg</file> - <file>scalable/checkupdate.svg</file> - <file>scalable/copy.svg</file> - <file>scalable/coremods.svg</file> - <file>scalable/externaltools.svg</file> - <file>scalable/help.svg</file> - <file>scalable/instance-settings.svg</file> - <file>scalable/jarmods.svg</file> - <file>scalable/java.svg</file> - <file>scalable/language.svg</file> - <file>scalable/loadermods.svg</file> - <file>scalable/log.svg</file> - <file>scalable/minecraft.svg</file> - <file>scalable/multimc.svg</file> - <file>scalable/new.svg</file> - <file>scalable/news.svg</file> - <file>scalable/notes.svg</file> - <file>scalable/patreon.svg</file> - <file>scalable/proxy.svg</file> - <file>scalable/quickmods.svg</file> - <file>scalable/refresh.svg</file> - <file>scalable/resourcepacks.svg</file> - <file>scalable/screenshots.svg</file> - <file>scalable/settings.svg</file> - <file>scalable/status-bad.svg</file> - <file>scalable/status-good.svg</file> - <file>scalable/status-yellow.svg</file> - <file>scalable/viewfolder.svg</file> - <file>scalable/worlds.svg</file> - </qresource> -</RCC> diff --git a/application/resources/pe_colored/scalable/about.svg b/application/resources/pe_colored/scalable/about.svg deleted file mode 100644 index 95e99689..00000000 --- a/application/resources/pe_colored/scalable/about.svg +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<circle fill="#F2F2F2" cx="16" cy="16" r="12"/> -<g> - <polygon fill="#666666" points="17.8,21 17.8,11.9 11.9,11.9 11.9,14.2 14.2,14.2 14.2,21 11.9,21 11.9,23.3 20.1,23.3 20.1,21 - "/> - <circle fill="#666666" cx="16" cy="8.3" r="1.8"/> -</g> -<g> - <path fill="none" d="M16,4c-4,0-7.6,2-9.7,5C4.8,11,4,13.4,4,16c0,6.6,5.4,12,12,12c6.6,0,12-5.4,12-12c0-2.6-0.8-5-2.3-7 - C23.6,6,20,4,16,4z"/> - <path fill="#39B54A" d="M16,4c4,0,7.6,2,9.7,5h4.6c-2.6-5.3-8-9-14.4-9S4.2,3.7,1.6,9h4.6C8.4,6,12,4,16,4z"/> - <path fill="#8C6239" d="M32,16L32,16c0-2.6-0.6-4.9-1.6-7h-4.6c1.4,2,2.3,4.4,2.3,7c0,6.6-5.4,12-12,12C9.4,28,4,22.6,4,16 - c0-2.6,0.8-5,2.3-7H1.6c-1,2.1-1.6,4.5-1.6,7c0,8.8,7.2,16,16,16h0C24.8,32,32,24.9,32,16z"/> -</g> -</svg> diff --git a/application/resources/pe_colored/scalable/accounts.svg b/application/resources/pe_colored/scalable/accounts.svg deleted file mode 100644 index 301eb368..00000000 --- a/application/resources/pe_colored/scalable/accounts.svg +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#999999" d="M25.8,17.5c1.4-1.4,2.2-3.4,2.2-5.5V8c0-4.4-3.6-8-8-8 - c-0.6,0-1.2,0.1-1.8,0.2c1.3,1.1,2.4,2.4,3,4C22.8,4.7,24,6.2,24,8v4c0,1.8-1.2,3.3-2.8,3.8c-0.2,0.4-0.4,0.8-0.6,1.2 - c1.5,1.2,2.8,2.6,3.7,4.2c1.8,1.1,3.1,2.7,3.6,4.7c0,1.1-0.9,2-2,2h-0.3c-0.4,1.6-1.3,3-2.5,4H26c3.3,0,6-2.7,6-6 - C31.4,22.3,28.9,19.3,25.8,17.5z"/> -<g> - <polygon fill="none" points="12,0 12,0 12,0 "/> - <path fill="#39B54A" d="M20,8c0-4.4-3.6-8-8-8h0C7.6,0,4,3.6,4,8v1h16V8z"/> - <path fill="#8C6239" d="M6,32h12c3.3,0,6-2.7,6-6c-0.6-3.7-3.1-6.8-6.2-8.5c1.4-1.4,2.2-3.4,2.2-5.5V9H4v3c0,2.1,0.9,4.1,2.2,5.5 - C3.1,19.2,0.6,22.3,0,26C0,29.3,2.7,32,6,32z"/> -</g> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M16,12V8c0-2.2-1.8-4-4-4S8,5.8,8,8v4c0,2.2,1.8,4,4,4 - S16,14.2,16,12z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M20,26c-0.9-3.4-4.3-6-8-6l0,0l0,0c-3.7,0-7.1,2.6-8,6l0,0 - c0,1.1,0.9,2,2,2h12C19.1,28,20,27.1,20,26L20,26z"/> -</svg> diff --git a/application/resources/pe_colored/scalable/bug.svg b/application/resources/pe_colored/scalable/bug.svg deleted file mode 100644 index 8c92df0a..00000000 --- a/application/resources/pe_colored/scalable/bug.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect x="0" fill="none" width="32" height="32"/> -<g> - <path fill-rule="evenodd" clip-rule="evenodd" fill="#39B54A" d="M22.7,5.3c-0.3-1.2-0.9-2.3-1.8-3.2c-2.7-2.8-7.2-2.8-9.9,0 - c-0.9,0.9-1.5,2-1.8,3.2C13.5,3.3,18.5,3.3,22.7,5.3z"/> - <path fill-rule="evenodd" clip-rule="evenodd" fill="#8C6239" d="M30,17.9h-4.1c0-0.7,0.1-1.3,0.1-2c0-0.7,0-1.4-0.1-2 - c0,0,0,0,0.1,0v0h2c1.1,0,2-0.9,2-2c0-1.1-0.9-2-2-2h-2v0c-0.3,0-0.6,0.1-0.8,0.1c-1.2-3.1-3.9-4.1-9.2-4.1s-7.9,1-9.2,4.1 - C6.6,9.9,6.3,9.8,6,9.8v0H4c-1.1,0-2,0.9-2,2c0,1.1,0.9,2,2,2h2v0c0,0,0,0,0.1,0c0,0.6-0.1,1.3-0.1,2c0,0.7,0,1.3,0.1,2H2 - c-1.1,0-2,0.9-2,2c0,1.1,0.9,2,2,2h4.5c0.3,1.4,0.7,2.8,1.2,4H6c-1.1,0-2,0.9-2,2c0,1.1,0.9,2,2,2h2v0c0.7,0,1.4-0.1,2.1-0.3 - c1.5,1.4,3.4,2.3,5.9,2.3s4.4-0.9,5.9-2.3c0.7,0.2,1.4,0.3,2.1,0.3v0h2c1.1,0,2-0.9,2-2c0-1.1-0.9-2-2-2h-1.7 - c0.5-1.2,0.9-2.6,1.2-4H30c1.1,0,2-0.9,2-2C32,18.8,31.1,17.9,30,17.9z"/> -</g> -</svg> diff --git a/application/resources/pe_colored/scalable/centralmods.svg b/application/resources/pe_colored/scalable/centralmods.svg deleted file mode 100644 index 57a97259..00000000 --- a/application/resources/pe_colored/scalable/centralmods.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#F2F2F2" d="M28,10c0-1.1-0.9-2-2-2H16V6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V10z" - /> -<rect x="0" fill="none" width="32" height="32"/> -<g> - <path fill="none" d="M26,8H16V6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v3v17c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V10 - c0-0.4-0.1-0.7-0.3-1C27.4,8.4,26.7,8,26,8z"/> - <path fill="#39B54A" d="M4,6c0-1.1,0.9-2,2-2h8c1.1,0,2,0.9,2,2v2h10c0.7,0,1.4,0.4,1.7,1h4.2C31.4,6.2,29,4,26,4h-6.4 - c-0.8-2.3-3-4-5.6-4H6C2.7,0,0,2.7,0,6v3h4V6z"/> - <path fill="#8C6239" d="M27.7,9c0.2,0.3,0.3,0.6,0.3,1v16c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2V9H0v17c0,3.3,2.7,6,6,6h20 - c3.3,0,6-2.7,6-6V10c0-0.3,0-0.7-0.1-1H27.7z"/> -</g> -<path fill="#C1272D" d="M16,10.2l2.2,4.5l5,0.7L19.6,19l0.8,4.9L16,21.6l-4.4,2.3l0.8-4.9l-3.6-3.5l5-0.7L16,10.2z"/> -</svg> diff --git a/application/resources/pe_colored/scalable/checkupdate.svg b/application/resources/pe_colored/scalable/checkupdate.svg deleted file mode 100644 index 0adc8eeb..00000000 --- a/application/resources/pe_colored/scalable/checkupdate.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#6699CC" d="M26,24h-0.4c0-0.1-0.1-0.2-0.1-0.3c-0.7-1.6-1.5-2.8-3.5-3.4V18c0-3.3-2.7-6-6-6c-3.3,0-6,2.7-6,6v2.3 - c-2,0.6-2.9,1.8-3.5,3.4c0,0,0,0.1,0,0.1C2.8,23.1,0,19.9,0,16v-2c0-4.4,3.6-8,8-8c0.8,0,1.5,0.1,2.2,0.3C10.9,2.7,14.2,0,18,0 - c4.4,0,8,3.6,8,8c0,0.7-0.1,1.4-0.3,2c0.1,0,0.2,0,0.3,0c3.3,0,6,2.7,6,6v2C32,21.3,29.3,24,26,24z"/> -<path fill="#39B54A" d="M12,24h2v-6c0-1.1,0.9-2,2-2c1.1,0,2,0.9,2,2v6h2c0.8,0,1.5,0.5,1.8,1.2c0.1,0.2,0.1,0.4,0.1,0.6 - c0.1,0.6-0.1,1.2-0.6,1.6l-4,4C17,31.8,16.5,32,16,32c-0.5,0-1-0.2-1.4-0.6l-4-4c-0.4-0.4-0.6-1-0.6-1.6c0-0.2,0.1-0.4,0.1-0.6 - C10.5,24.5,11.2,24,12,24z"/> -<rect fill="none" width="32" height="32"/> -</svg> diff --git a/application/resources/pe_colored/scalable/copy.svg b/application/resources/pe_colored/scalable/copy.svg deleted file mode 100644 index b9b0f1b1..00000000 --- a/application/resources/pe_colored/scalable/copy.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#F2F2F2" d="M4,26c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V14H4V26z"/> -<path fill="#39B54A" d="M28,25.6V10c0-3.3-2.7-6-6-6H6.4c0.8-2.3,3-4,5.6-4h14c3.3,0,6,2.7,6,6v14C32,22.6,30.3,24.8,28,25.6z"/> -<g> - <circle fill="none" cx="6" cy="10" r="2"/> - <path fill="none" d="M6,28h14c1.1,0,2-0.9,2-2V15v-1H4v1v11C4,27.1,4.9,28,6,28z"/> - <path fill="#39B54A" d="M0,12v3h4v-1h18v1h4v-3c0-3.3-2.7-6-6-6H6C2.7,6,0,8.7,0,12z M8,10c0,1.1-0.9,2-2,2c-1.1,0-2-0.9-2-2 - c0-1.1,0.9-2,2-2C7.1,8,8,8.9,8,10z"/> - <path fill="#8C6239" d="M22,26c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2V15H0v11c0,3.3,2.7,6,6,6h14c3.3,0,6-2.7,6-6V15h-4V26z"/> -</g> -<rect fill="none" width="32" height="32"/> -</svg> diff --git a/application/resources/pe_colored/scalable/coremods.svg b/application/resources/pe_colored/scalable/coremods.svg deleted file mode 100644 index ca7a22f0..00000000 --- a/application/resources/pe_colored/scalable/coremods.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<circle fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" cx="16" cy="16" r="12"/> -<g> - <path fill="none" d="M16,4c-4,0-7.6,2-9.7,5C4.8,11,4,13.4,4,16c0,6.6,5.4,12,12,12s12-5.4,12-12c0-2.6-0.8-5-2.3-7 - C23.6,6,20,4,16,4z"/> - <path fill="#39B54A" d="M16,4c4,0,7.6,2,9.7,5h4.6c-2.6-5.3-8-9-14.4-9C9.7,0,4.2,3.7,1.6,9h4.6C8.4,6,12,4,16,4z"/> - <path fill="#8C6239" d="M25.7,9c1.4,2,2.3,4.4,2.3,7c0,6.6-5.4,12-12,12S4,22.6,4,16c0-2.6,0.8-5,2.3-7H1.6c-1,2.1-1.6,4.5-1.6,7 - c0,8.8,7.2,16,16,16c8.8,0,16-7.2,16-16c0-2.5-0.6-4.9-1.6-7H25.7z"/> -</g> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#C1272D" d="M16,6l2.9,6l6.6,1l-4.8,4.6l1.1,6.5L16,21l-5.9,3.1l1.1-6.5 - l-4.8-4.6l6.6-1L16,6z"/> -</svg> diff --git a/application/resources/pe_colored/scalable/externaltools.svg b/application/resources/pe_colored/scalable/externaltools.svg deleted file mode 100644 index 1469674f..00000000 --- a/application/resources/pe_colored/scalable/externaltools.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <path fill="#39B54A" d="M26,0h-9.1C17.6,1.2,18,2.6,18,4h8c1.1,0,2,0.9,2,2v3h4V6C32,2.7,29.3,0,26,0z"/> - <path fill="#8C6239" d="M28,26c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2v-4.5l-4-3V26c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V9h-4V26z"/> -</g> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#009245" d="M8.8,17.6C9.2,17.9,9.6,18,10,18c0.3,0,0.6-0.1,0.9-0.2 - c0.7-0.3,1.1-1,1.1-1.8v-1.9V14c6.3,0,11.7,4.2,13.4,10c0.4-1.3,0.6-2.6,0.6-4c0-7.7-6.3-14-14-14V4c0-0.8-0.4-1.5-1.1-1.8 - C10.6,2.1,10.3,2,10,2C9.6,2,9.2,2.1,8.8,2.4l-8,6C0.3,8.8,0,9.4,0,10c0,0.6,0.3,1.2,0.8,1.6L8.8,17.6z"/> -</svg> diff --git a/application/resources/pe_colored/scalable/help.svg b/application/resources/pe_colored/scalable/help.svg deleted file mode 100644 index c1ee5258..00000000 --- a/application/resources/pe_colored/scalable/help.svg +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xml:space="preserve" - enable-background="new 0 0 32 32" - viewBox="0 0 32 32" - y="0px" - x="0px" - id="Calque_1" - version="1.1"><metadata - id="metadata23"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs21" /><circle - id="circle2" - r="12" - cy="16" - cx="16" - fill="#F2F2F2" /><g - id="g16"><path - id="path10" - d="M16,4c-4,0-7.6,2-9.7,5C4.8,11,4,13.4,4,16c0,6.6,5.4,12,12,12c6.6,0,12-5.4,12-12c0-2.6-0.8-5-2.3-7 C23.6,6,20,4,16,4z" - fill="none" /><path - id="path12" - d="M16,4c4,0,7.6,2,9.7,5h4.6c-2.6-5.3-8-9-14.4-9S4.2,3.7,1.6,9h4.6C8.4,6,12,4,16,4z" - fill="#39B54A" /><path - id="path14" - d="M32,16L32,16c0-2.6-0.6-4.9-1.6-7h-4.6c1.4,2,2.3,4.4,2.3,7c0,6.6-5.4,12-12,12C9.4,28,4,22.6,4,16 c0-2.6,0.8-5,2.3-7H1.6c-1,2.1-1.6,4.5-1.6,7c0,8.8,7.2,16,16,16h0C24.8,32,32,24.9,32,16z" - fill="#8C6239" /></g><g - transform="translate(41.863574,-2.0092638)" - id="g861"><g - aria-label="?" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:27.34714317px;line-height:85.45981598px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L';letter-spacing:0px;word-spacing:0px;fill:#666666;fill-opacity:1;stroke:none;stroke-width:3.4183929px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - id="text832"><path - d="m -20.968435,13.920532 c 0,0.6381 -0.07293,1.239737 -0.218777,1.804911 -0.145852,0.565174 -0.401092,1.066538 -0.76572,1.504093 -0.401092,0.492249 -0.774836,0.902456 -1.121233,1.230621 -0.346397,0.328166 -0.656332,0.6381 -0.929803,0.929803 -0.25524,0.273471 -0.464902,0.556059 -0.628985,0.847762 -0.145851,0.291703 -0.218777,0.656331 -0.218777,1.093885 v 0.38286 h -3.144921 V 20.72997 c 0,-0.601637 0.136736,-1.221505 0.410207,-1.859605 0.273471,-0.656332 0.756604,-1.285316 1.449399,-1.886953 0.346397,-0.309935 0.638099,-0.583406 0.875108,-0.820415 0.237009,-0.25524 0.428439,-0.492248 0.57429,-0.711025 0.145851,-0.237009 0.246124,-0.483133 0.300819,-0.738373 0.05469,-0.273471 0.08204,-0.57429 0.08204,-0.902456 0,-0.528711 -0.12762,-0.984497 -0.38286,-1.367357 -0.237009,-0.401091 -0.656331,-0.601637 -1.257968,-0.601637 -1.057423,0 -1.640829,0.692794 -1.750218,2.078383 h -3.06288 c 0.01823,-0.747489 0.145853,-1.431167 0.38286,-2.051036 0.237009,-0.6381 0.565175,-1.185043 0.984498,-1.640829 0.419323,-0.474017 0.920687,-0.8386455 1.504092,-1.0938855 0.601637,-0.25524 1.2762,-0.38286 2.023689,-0.38286 0.838646,0 1.567903,0.1367357 2.187771,0.4102072 0.619869,0.25524 1.130349,0.6198684 1.53144,1.0938853 0.401092,0.455786 0.692795,1.002729 0.875109,1.640829 0.200546,0.619869 0.300819,1.294432 0.30082,2.023689 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Monofonto;-inkscape-font-specification:Monofonto;fill:#666666;fill-opacity:1;stroke-width:3.4183929px" - id="path855" /></g><circle - style="fill:#666666" - cx="-26.38899" - cy="25.466606" - r="1.8" - id="circle6-6" /></g></svg>
\ No newline at end of file diff --git a/application/resources/pe_colored/scalable/instance-settings.svg b/application/resources/pe_colored/scalable/instance-settings.svg deleted file mode 100644 index 72032f8a..00000000 --- a/application/resources/pe_colored/scalable/instance-settings.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect x="0" y="0" fill="none" width="32" height="32"/> -<polygon fill="none" points="26,0 6,0 6,0 26,0 "/> -<path fill="#39B54A" d="M26,0H6C2.7,0,0,2.7,0,6v3h32V6C32,2.7,29.3,0,26,0z"/> -<path fill="#8C6239" d="M0,26c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V9H0V26z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V6z"/> -<rect x="16" y="10" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="8" height="2"/> -<rect x="8" y="18" fill-rule="evenodd" clip-rule="evenodd" width="6" height="6"/> -<rect x="10" y="20" fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" width="2" height="2"/> -<rect x="8" y="8" fill-rule="evenodd" clip-rule="evenodd" width="6" height="6"/> -<rect x="10" y="10" fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" width="2" height="2"/> -<rect x="16" y="20" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="8" height="2"/> -</svg> diff --git a/application/resources/pe_colored/scalable/jarmods.svg b/application/resources/pe_colored/scalable/jarmods.svg deleted file mode 100644 index bb75f4b1..00000000 --- a/application/resources/pe_colored/scalable/jarmods.svg +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6 - v20C32,29.3,29.3,32,26,32z"/> -<path fill="#6699CC" stroke="#6699CC" stroke-width="0.3" stroke-miterlimit="10" d="M12.2,21.2c0,0-1.3,0.7,0.9,1 - c2.7,0.3,4,0.3,7-0.3c0,0,0.8,0.5,1.9,0.9C15.3,25.7,7,22.7,12.2,21.2"/> -<path fill="#6699CC" stroke="#6699CC" stroke-width="0.3" stroke-miterlimit="10" d="M11.4,17.5c0,0-1.4,1.1,0.8,1.3 - c2.9,0.3,5.1,0.3,9-0.4c0,0,0.5,0.5,1.4,0.8C14.5,21.6,5.7,19.4,11.4,17.5"/> -<path fill="#6699CC" stroke="#6699CC" stroke-width="0.3" stroke-miterlimit="10" d="M26.9,23.9c0,0,1,0.8-1,1.4 - c-3.8,1.2-15.8,1.5-19.2,0c-1.2-0.5,1.1-1.2,1.8-1.4c0.7-0.2,1.2-0.1,1.2-0.1c-1.3-0.9-8.6,1.8-3.7,2.6 - C19.3,28.7,30.4,25.5,26.9,23.9"/> -<path fill="#6699CC" stroke="#6699CC" stroke-width="0.3" stroke-miterlimit="10" d="M12.8,13.7c0,0-6.1,1.5-2.2,2 - c1.7,0.2,5,0.2,8.1-0.1c2.5-0.2,5.1-0.7,5.1-0.7s-0.9,0.4-1.5,0.8C16,17.4,4,16.6,7.5,15C10.4,13.6,12.8,13.7,12.8,13.7"/> -<path fill="#6699CC" stroke="#6699CC" stroke-width="0.3" stroke-miterlimit="10" d="M23.8,19.9c6.3-3.3,3.4-6.4,1.4-6 - c-0.5,0.1-0.7,0.2-0.7,0.2s0.2-0.3,0.5-0.4c4-1.4,7.1,4.2-1.3,6.4C23.7,20,23.7,19.9,23.8,19.9"/> -<path fill="#6699CC" stroke="#6699CC" stroke-width="0.3" stroke-miterlimit="10" d="M13.4,28.7c6.1,0.4,15.4-0.2,15.6-3.1 - c0,0-0.4,1.1-5,2c-5.2,1-11.6,0.9-15.3,0.2C8.7,27.9,9.4,28.5,13.4,28.7"/> -<path fill="#F15A24" d="M16.5,0.6l2.2,4.5l5,0.7l-3.6,3.5l0.8,4.9l-4.4-2.3l-4.4,2.3l0.8-4.9L9.4,5.8l5-0.7L16.5,0.6z"/> -</svg> diff --git a/application/resources/pe_colored/scalable/java.svg b/application/resources/pe_colored/scalable/java.svg deleted file mode 100644 index 32c0225b..00000000 --- a/application/resources/pe_colored/scalable/java.svg +++ /dev/null @@ -1,49 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <path id="XMLID_1_" fill="#F2F2F2" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v20C32,29.3,29.3,32,26,32z" - /> -</g> -<path fill="none" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v20C32,29.3,29.3,32,26,32z"/> -<g> - <path fill="#F15A24" d="M16.7,15.6l1-0.8c0.1-0.1,1.9-1.6,0.4-3.4c-1.3-1.6-1.8-3.1-1.4-4.5c1.1-3.4,7.2-4.9,7.4-5l1-0.2l-0.9,0.5 - C20.7,4.3,19,5.8,18.8,7c-0.2,0.9,0.4,1.7,1.1,2.7l0.2,0.3c0.5,0.7,0.6,1.4,0.5,2.1C20.2,13.8,18,15,17.9,15L16.7,15.6z"/> -</g> -<g> - <g> - <path fill="#6699CC" d="M15.9,24.2c-2.9,0-5.3-0.8-5.5-1.8c-0.1-0.4,0.2-0.9,1.7-1.4l1.3-0.4l-1.2,0.7c-0.1,0.1-0.3,0.2-0.3,0.3 - c0,0,0.1,0.3,1.2,0.4c1.2,0.1,2.1,0.2,2.8,0.2c1.2,0,2.3-0.1,4.1-0.5l0.1,0l0,0c0,0,0.8,0.5,1.9,0.9l0.4,0.1l-0.3,0.1 - C19.7,24,17.4,24.2,15.9,24.2z"/> - </g> - <g> - <path fill="#6699CC" d="M15.3,20.4c-3.3,0-5.7-0.6-5.8-1.5c-0.1-0.5,0.6-1,1.9-1.5l0.8-0.3l-0.7,0.5c-0.1,0.1-0.4,0.4-0.4,0.6 - c0,0.1,0.2,0.3,1.1,0.4c1.3,0.1,2.3,0.2,3.2,0.2c1.7,0,3.4-0.2,5.7-0.6l0.1,0l0.1,0.1c0,0,0.5,0.5,1.3,0.8l0.5,0.2l-0.5,0.1 - C20.3,20,17.7,20.4,15.3,20.4z"/> - </g> - <g> - <path fill="#6699CC" d="M15.3,27.4C15.3,27.4,15.3,27.4,15.3,27.4c-3.1,0-6.3-0.3-9.4-0.8c-1.2-0.2-1.8-0.5-1.8-1 - c0.1-1,3.1-2,4.7-2c0.4,0,0.7,0.1,0.9,0.2l0.6,0.4l-0.7-0.1c0,0-0.4-0.1-1.1,0.1c-1.6,0.5-2,0.8-2,0.9c0,0,0,0.1,0.2,0.2 - c1.4,0.6,4.6,1,8.7,1c4.3,0,8.4-0.4,10.3-1c0.9-0.3,1.1-0.6,1.1-0.7c0-0.2-0.2-0.4-0.2-0.4l-0.9-0.8l1.1,0.5 - c0.7,0.3,0.8,0.7,0.7,0.9C27.4,26,22.4,27.4,15.3,27.4z"/> - </g> - <g> - <path fill="#6699CC" d="M13.6,16.7c-3,0-6.7-0.3-6.9-1.2c-0.1-0.4,0.5-0.7,0.7-0.8c2.5-1.1,4.6-1.2,5.2-1.2c0.1,0,0.1,0,0.1,0l1,0 - l-1,0.3c-1.8,0.4-3.4,1.1-3.4,1.4c0,0,0,0.2,1.2,0.4c0.8,0.1,1.9,0.1,3.1,0.1c1.6,0,3.4-0.1,5-0.2c2.5-0.2,5.1-0.7,5.1-0.7 - l1.3-0.2L23.9,15c0,0-0.9,0.4-1.5,0.8l0,0C20.1,16.4,16.9,16.7,13.6,16.7z"/> - </g> - <g> - <path fill="#6699CC" d="M23.5,20.3v-0.2c0-0.1,0-0.3,0.2-0.3c3.8-2,3.8-3.7,3.7-4.3c-0.2-0.9-1.1-1.4-1.9-1.4c-0.1,0-0.2,0-0.3,0 - c-0.5,0.1-0.7,0.2-0.7,0.2l-0.5,0.2l0.3-0.5c0,0,0.2-0.3,0.6-0.5c0.4-0.2,0.9-0.2,1.3-0.2c1.5,0,2.7,0.9,2.9,2.2 - c0.2,1.5-1.1,3.5-5.4,4.7L23.5,20.3z"/> - </g> - <g> - <path fill="#6699CC" d="M16.9,29c-1.2,0-2.4,0-3.5-0.1c-3.8-0.2-4.8-0.8-4.8-1v-0.2l0.2,0c1.8,0.3,4.2,0.5,6.8,0.5 - c3,0,5.9-0.3,8.4-0.7c4.4-0.9,4.9-1.9,4.9-1.9l0.3-0.8l-0.1,0.9c-0.1,1.2-1.5,2.1-4.1,2.6C22.9,28.7,20.1,29,16.9,29z"/> - </g> -</g> -<path fill="#F15A24" d="M16.8,4.2c1.8-1.4,3-2.8,3.7-4.2h-1.7c-0.8,1-1.9,1.8-2.9,2.7c-1.2,1-2.5,2-3.3,3.2c-1.6,2.6,1,5.2,4,8 - l0.5,0.5l-0.3-0.6c-0.3-0.7-0.7-1.3-1.2-1.9C14.2,9.6,12.7,7.4,16.8,4.2z"/> -</svg> diff --git a/application/resources/pe_colored/scalable/language.svg b/application/resources/pe_colored/scalable/language.svg deleted file mode 100644 index 80c1dcad..00000000 --- a/application/resources/pe_colored/scalable/language.svg +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xml:space="preserve" - enable-background="new 0 0 32 32" - viewBox="0 0 32 32" - y="0px" - x="0px" - id="Calque_1" - version="1.1"><metadata - id="metadata19"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs17" /> -<path - id="path2" - d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 c1.1,0,2-0.9,2-2V6z" - fill="#F2F2F2" - clip-rule="evenodd" - fill-rule="evenodd" /> - -<g - id="g12"> - <path - id="path6" - d="M6,28h20c1.1,0,2-0.9,2-2V9V6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v3v17C4,27.1,4.9,28,6,28z" - fill="none" /> - <path - id="path8" - d="M26,0H6C2.7,0,0,2.7,0,6v3h4V6c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2v3h4V6C32,2.7,29.3,0,26,0z" - fill="#39B54A" /> - <path - id="path10" - d="M28,26c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2V9H0v17c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V9h-4V26z" - fill="#8C6239" /> -</g> -<path - d="m 9.1897919,10.114302 c -0.483841,0 -0.901102,0.341924 -0.996278,0.815883 l -2.029453,10.155454 c -0.110056,0.55031 0.246086,1.083011 0.795382,1.193069 0.556201,0.113982 1.084021,-0.246085 1.193073,-0.79538 l 0.651882,-3.247121 H 11.67433 l 0.647785,3.247121 c 0.110996,0.557485 0.658771,0.906193 1.197171,0.79538 0.549363,-0.110056 0.905437,-0.642759 0.795381,-1.193069 L 12.285214,10.930185 c -0.09517,-0.473959 -0.512431,-0.815883 -0.996274,-0.815883 z m 0.614982,2.287746 h 0.4345931 l 0.811779,4.063002 H 8.9929949 Z M 20.710512,9.7002137 c -0.561209,0 -1.016777,0.4578073 -1.016777,1.0208753 v 1.016774 h -3.046227 c -0.561204,0 -1.012672,0.457809 -1.012672,1.020876 0,0.563065 0.451466,1.016776 1.012672,1.016776 h 0.274696 c 0.577658,1.85973 1.425829,3.313572 2.37794,4.460692 -0.745862,0.684158 -1.478369,1.245052 -2.271343,1.873653 -0.437271,0.35118 -0.506831,0.995228 -0.155795,1.434967 0.349411,0.439057 0.990377,0.507857 1.426766,0.155794 0.861615,-0.682321 1.601995,-1.252055 2.410742,-1.996652 0.808748,0.744597 1.618828,1.314331 2.480441,1.996652 0.436393,0.352059 1.077353,0.283261 1.426766,-0.155794 0.351038,-0.439739 0.277375,-1.083787 -0.159884,-1.434967 -0.792979,-0.628601 -1.591082,-1.189495 -2.336946,-1.873653 0.952113,-1.147188 1.869915,-2.601029 2.447642,-4.460692 h 0.270592 c 0.561209,0 1.016774,-0.453711 1.016774,-1.016776 0,-0.563067 -0.455565,-1.020876 -1.016774,-1.020876 h -3.111838 v -1.016774 c 0,-0.563068 -0.455567,-1.0208753 -1.016775,-1.0208753 z m -1.668658,4.0753013 h 3.402916 c -0.438423,1.181552 -1.08891,2.13806 -1.734258,2.951929 -0.645345,-0.813869 -1.230238,-1.770309 -1.668658,-2.951929 z" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#c1272d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6.29744864;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect977" /></svg>
\ No newline at end of file diff --git a/application/resources/pe_colored/scalable/loadermods.svg b/application/resources/pe_colored/scalable/loadermods.svg deleted file mode 100644 index 2d80c7f3..00000000 --- a/application/resources/pe_colored/scalable/loadermods.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V6z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#C1272D" d="M16,6.4l2.9,6l6.6,1l-4.8,4.6l1.1,6.5L16,21.4l-5.9,3.1l1.1-6.5 - l-4.8-4.6l6.6-1L16,6.4z"/> -<g> - <path fill="none" d="M6,28h20c1.1,0,2-0.9,2-2V9V6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v3v17C4,27.1,4.9,28,6,28z"/> - <path fill="#39B54A" d="M26,0H6C2.7,0,0,2.7,0,6v3h4V6c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2v3h4V6C32,2.7,29.3,0,26,0z"/> - <path fill="#8C6239" d="M28,26c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2V9H0v17c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V9h-4V26z"/> -</g> -</svg> diff --git a/application/resources/pe_colored/scalable/log.svg b/application/resources/pe_colored/scalable/log.svg deleted file mode 100644 index 42659b53..00000000 --- a/application/resources/pe_colored/scalable/log.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <polygon fill="none" points="30,0 30,0 30,0 "/> - <polygon fill="none" points="2,0 2,0 2,0 "/> - <path fill="#39B54A" d="M30,0L30,0c-0.1,0-0.1,0-0.2,0C16,0.4,16,4,16,4s0-3.6-13.8-4C2.1,0,2.1,0,2,0h0C0.9,0,0,0.9,0,2v7h32V2 - C32,0.9,31.1,0,30,0z"/> - <path fill="#8C6239" d="M0,26c0,1.1,0.9,2,2,2c3.1,0.1,8.9,0.7,12.1,2.3c0.2,1,0.9,1.7,1.9,1.7c1,0,1.8-0.7,1.9-1.7 - c3.2-1.6,9-2.2,12.1-2.3c1.1,0,2-0.9,2-2V9H0V26z"/> -</g> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M14,6.3C11.4,5,7.2,4.4,4,4.2v19.9c5.4,0.3,8.4,1.1,10,1.9V6.3z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M28,4.2C24.8,4.4,20.6,5,18,6.3V26c1.6-0.8,4.6-1.6,10-1.9V4.2z"/> -</svg> diff --git a/application/resources/pe_colored/scalable/minecraft.svg b/application/resources/pe_colored/scalable/minecraft.svg deleted file mode 100644 index 52815487..00000000 --- a/application/resources/pe_colored/scalable/minecraft.svg +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="-463 265 32 32" enable-background="new -463 265 32 32" xml:space="preserve"> -<rect x="-463" y="265" fill-rule="evenodd" clip-rule="evenodd" fill="none" width="32" height="32"/> -<g> - <polygon fill-rule="evenodd" clip-rule="evenodd" fill="#754C24" points="-447,279.2 -433,272.1 -433,289.9 -447,297 "/> - <polygon fill-rule="evenodd" clip-rule="evenodd" fill="#8C6239" points="-447,279.2 -461,272.1 -461,289.9 -447,297 "/> - <g> - <polygon fill-rule="evenodd" clip-rule="evenodd" fill="#39B54A" points="-461,272.1 -447,279.2 -433,272.1 -447,265 "/> - </g> -</g> -</svg> diff --git a/application/resources/pe_colored/scalable/multimc.svg b/application/resources/pe_colored/scalable/multimc.svg deleted file mode 100644 index a146c52e..00000000 --- a/application/resources/pe_colored/scalable/multimc.svg +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="-463 265 32 32" enable-background="new -463 265 32 32" xml:space="preserve"> -<rect x="-463" y="265" fill="#754C24" width="32" height="32"/> -<polygon fill="#39B54A" points="-463,270 -462,270 -462,269 -459,269 -459,270 -455,270 -455,273 -454,273 -454,267 -451,267 - -451,270 -450,270 -450,269 -447,269 -447,273 -446,273 -446,271 -445,271 -445,270 -443,270 -443,273 -442,273 -442,271 -441,271 - -441,270 -439,270 -439,269 -437,269 -437,270 -434,270 -434,269 -431,269 -431,265 -463,265 "/> -<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-1426.8778" y1="312.5718" x2="-1426.032" y2="314.6501" gradientTransform="matrix(20.79 0 0 14.7315 29210.8574 -4335.6729)"> - <stop offset="0" style="stop-color:#000000;stop-opacity:0.8"/> - <stop offset="1" style="stop-color:#000000;stop-opacity:0.35"/> -</linearGradient> -<path fill="url(#SVGID_1_)" d="M-444.5,286.5c-0.5-0.4-1-1-1.8-1.9c-1,1.2-1.9,2.1-2.8,2.7c-1.1,0.7-2.5,1-4.1,1 - c-2,0-3.6-0.5-4.9-1.6c-1.4-1.1-2.1-2.6-2.1-4.4c0-1.7,0.7-3.2,2.1-4.4c1.2-1,2.9-1.6,5-1.6c1.1,0,2,0.2,2.8,0.5 - c0.9,0.3,1.7,0.8,2.3,1.4c0.6,0.5,1.2,1.2,1.8,1.9c1-1.2,1.9-2.1,2.8-2.7c1.1-0.7,2.5-1,4.1-1c2,0,3.6,0.5,4.9,1.6 - c1.4,1.1,2.1,2.6,2.1,4.4c0,1.7-0.7,3.2-2.1,4.4c-1.2,1-2.9,1.6-5,1.6c-1.1,0-2-0.2-2.8-0.5S-443.8,287.1-444.5,286.5 M-453.4,286.3 - c2.4,0,4.3-1.2,5.8-3.7c-1.9-2.7-3.8-4.1-5.8-4.1c-1.5,0-2.6,0.4-3.3,1.1c-0.8,0.8-1.2,1.7-1.2,2.8c0,1.2,0.4,2.1,1.2,2.8 - C-455.9,285.9-454.8,286.3-453.4,286.3 M-439.1,278.5c-2.2,0-4.1,1.2-5.8,3.7c1.8,2.7,3.8,4.1,5.8,4.1c1.5,0,2.6-0.4,3.3-1.1 - c0.8-0.8,1.2-1.7,1.2-2.8c0-1.2-0.4-2.1-1.2-2.8C-436.7,278.8-437.8,278.5-439.1,278.5"/> -<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-1427.0289" y1="313.0195" x2="-1425.7877" y2="313.9627" gradientTransform="matrix(20.79 0 0 14.7315 29210.5391 -4335.8115)"> - <stop offset="0" style="stop-color:#75B54B"/> - <stop offset="1" style="stop-color:#75B54B;stop-opacity:0.6"/> -</linearGradient> -<path fill="url(#SVGID_2_)" d="M-445.4,285.1c-0.5-0.4-1-1-1.8-1.9c-1,1.2-1.9,2.1-2.8,2.7c-1.1,0.7-2.5,1-4.1,1 - c-2,0-3.6-0.5-4.9-1.6c-1.4-1.1-2.1-2.6-2.1-4.4c0-1.7,0.7-3.2,2.1-4.4c1.2-1,2.9-1.6,5-1.6c1.1,0,2,0.2,2.8,0.5 - c0.9,0.3,1.7,0.8,2.3,1.4c0.6,0.5,1.2,1.2,1.8,1.9c1-1.2,1.9-2.1,2.8-2.7c1.1-0.7,2.5-1,4.1-1c2,0,3.6,0.5,4.9,1.6 - c1.4,1.1,2.1,2.6,2.1,4.4c0,1.7-0.7,3.2-2.1,4.4c-1.2,1-2.9,1.6-5,1.6c-1.1,0-2-0.2-2.8-0.5C-443.8,286.2-444.6,285.8-445.4,285.1 - M-454.3,284.9c2.4,0,4.3-1.2,5.8-3.7c-1.9-2.7-3.8-4.1-5.8-4.1c-1.5,0-2.6,0.4-3.3,1.1c-0.8,0.8-1.2,1.7-1.2,2.8 - c0,1.2,0.4,2.1,1.2,2.8C-456.8,284.5-455.7,284.9-454.3,284.9 M-440,277.1c-2.2,0-4.1,1.2-5.8,3.7c1.8,2.7,3.8,4.1,5.8,4.1 - c1.5,0,2.6-0.4,3.3-1.1c0.8-0.8,1.2-1.7,1.2-2.8c0-1.2-0.4-2.1-1.2-2.8C-437.5,277.5-438.6,277.1-440,277.1"/> -</svg> diff --git a/application/resources/pe_colored/scalable/new.svg b/application/resources/pe_colored/scalable/new.svg deleted file mode 100644 index f18ed28a..00000000 --- a/application/resources/pe_colored/scalable/new.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill="none" width="32" height="32"/> -<g> - <circle fill="none" cx="6" cy="4" r="2"/> - <path fill="#39B54A" d="M26,0H6C2.7,0,0,2.7,0,6v3h32V6C32,2.7,29.3,0,26,0z M6,6C4.9,6,4,5.1,4,4c0-1.1,0.9-2,2-2c1.1,0,2,0.9,2,2 - C8,5.1,7.1,6,6,6z"/> - <path fill="#8C6239" d="M0,26c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V9H0V26z"/> -</g> -<path fill="#F2F2F2" d="M28,8H4v18c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V8z"/> -<path fill="#009245" d="M20,20h-2v2c0,1.1-0.9,2-2,2s-2-0.9-2-2v-2h-2c-1.1,0-2-0.9-2-2s0.9-2,2-2h2v-2c0-1.1,0.9-2,2-2s2,0.9,2,2v2 - h2c1.1,0,2,0.9,2,2S21.1,20,20,20z"/> -</svg> diff --git a/application/resources/pe_colored/scalable/news.svg b/application/resources/pe_colored/scalable/news.svg deleted file mode 100644 index 4f924cd8..00000000 --- a/application/resources/pe_colored/scalable/news.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve"> -<rect fill="none" width="16" height="16"/> -<g> - <g> - <path fill="#39B54A" d="M13,0H3C1.3,0,0,1.3,0,3v7c0,1.7,1.3,3,3,3l2,3l2-3h6c1.7,0,3-1.3,3-3V3C16,1.3,14.7,0,13,0z M8,10H3V9h5 - V10z M13,8H3V7h10V8z M13,6H3V5h10V6z M13,4H3V3h10V4z"/> - </g> -</g> -</svg> diff --git a/application/resources/pe_colored/scalable/notes.svg b/application/resources/pe_colored/scalable/notes.svg deleted file mode 100644 index 55ece163..00000000 --- a/application/resources/pe_colored/scalable/notes.svg +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <rect x="6" y="0" fill="none" width="20" height="0"/> - <polygon fill="none" points="0,6 0,6 0,26 0,26 0,9 "/> - <polygon fill="none" points="32,6 32,9 32,26 32,26 32,6 "/> - <path fill="#39B54A" d="M32,9V6c0-3.3-2.7-6-6-6H6C2.7,0,0,2.7,0,6v3H32z"/> - <path fill="#8C6239" d="M0,9v17c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V9H0z"/> -</g> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V6z"/> -<g> - <rect x="8" y="16" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="16" height="2"/> - <rect x="8" y="12" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="16" height="2"/> - <rect x="8" y="8" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="16" height="2"/> - <rect x="8" y="20" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="8" height="2"/> -</g> -</svg> diff --git a/application/resources/pe_colored/scalable/patreon.svg b/application/resources/pe_colored/scalable/patreon.svg deleted file mode 100644 index d3c6d2d5..00000000 --- a/application/resources/pe_colored/scalable/patreon.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="-463 265 32 32" enable-background="new -463 265 32 32" xml:space="preserve"> -<rect x="-463" y="265" fill="none" width="32" height="32"/> -<path fill="#F15A24" d="M-447,265c-8.8,0-16,7.2-16,16v16h15.3c0.2,0,0.4,0,0.7,0c8.8,0,16-7.2,16-16S-438.2,265-447,265L-447,265z" - /> -<path fill="#FFFFFF" d="M-447,268.7c-6.8,0-12.3,5.5-12.3,12.3v7.3v5v3.7h4.9v-16c0-4.1,3.3-7.3,7.3-7.3s7.3,3.3,7.3,7.3 - c0,4.1-3.3,7.3-7.3,7.3c-1.5,0-2.9-0.4-4-1.2v5.3c0.8,0.5,2.5,0.8,4.6,0.8c6.5-0.3,11.7-5.7,11.7-12.3 - C-434.7,274.2-440.2,268.7-447,268.7L-447,268.7z"/> -</svg> diff --git a/application/resources/pe_colored/scalable/proxy.svg b/application/resources/pe_colored/scalable/proxy.svg deleted file mode 100644 index 0aee69b7..00000000 --- a/application/resources/pe_colored/scalable/proxy.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="-463 265 32 32" enable-background="new -463 265 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#8C6239" d="M-441.1,269h-10.3c-0.8-2.3-3-4-5.6-4c-3.3,0-6,2.7-6,6s2.7,6,6,6 - c2.6,0,4.8-1.7,5.6-4h10.3c1.1,0,2,0.9,2,2v1.4h4V275C-435.1,271.7-437.8,269-441.1,269z M-457,273c-1.1,0-2-0.9-2-2s0.9-2,2-2 - c1.1,0,2,0.9,2,2S-455.9,273-457,273z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#754C24" d="M-439.1,285.6v1.4c0,1.1-0.9,2-2,2h-10.3c-0.8-2.3-3-4-5.6-4 - c-3.3,0-6,2.7-6,6s2.7,6,6,6c2.6,0,4.8-1.7,5.6-4h10.3c3.3,0,6-2.7,6-6v-1.4H-439.1z M-457,293c-1.1,0-2-0.9-2-2s0.9-2,2-2 - c1.1,0,2,0.9,2,2S-455.9,293-457,293z"/> -<g> - <path fill-rule="evenodd" clip-rule="evenodd" fill="#C1272D" d="M-431,287h-12v-12h12V287z M-435,279h-4v4h4V279z"/> -</g> -</svg> diff --git a/application/resources/pe_colored/scalable/quickmods.svg b/application/resources/pe_colored/scalable/quickmods.svg deleted file mode 100644 index 199b2dae..00000000 --- a/application/resources/pe_colored/scalable/quickmods.svg +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V6z"/> -<path fill="none" d="M6,28h20c1.1,0,2-0.9,2-2V9V6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v3v17C4,27.1,4.9,28,6,28z"/> -<path fill="#39B54A" d="M26,0H6C2.7,0,0,2.7,0,6v3h4V6c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2v3h4V6C32,2.7,29.3,0,26,0z"/> -<path fill="#8C6239" d="M28,26c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2V9H0v17c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V9h-4V26z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#C1272D" d="M10.6,24.2c-0.3,0-0.6-0.1-0.8-0.2C9.3,23.7,9,23.2,9,22.6V9.8 - c0-0.6,0.3-1.1,0.8-1.4c0.3-0.2,0.5-0.2,0.8-0.2c0.2,0,0.5,0.1,0.7,0.2l12.8,6.4c0.5,0.3,0.9,0.8,0.9,1.4c0,0.6-0.3,1.2-0.9,1.4 - L11.3,24C11.1,24.1,10.8,24.2,10.6,24.2z"/> -</svg> diff --git a/application/resources/pe_colored/scalable/refresh.svg b/application/resources/pe_colored/scalable/refresh.svg deleted file mode 100644 index c2e7e91f..00000000 --- a/application/resources/pe_colored/scalable/refresh.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill="none" width="32" height="32"/> -<path fill="#39B54A" d="M31.8,17.4c-0.4-0.9-1.2-1.4-2.1-1.4h-2.3c0-7.6-6.1-13.7-13.7-13.7C6.1,2.3,0,8.4,0,16 - c0,7.6,6.1,13.7,13.7,13.7c2.5,0,4.8-0.7,6.8-1.8l-3.4-3.4c-1,0.4-2.2,0.7-3.4,0.7c-5,0-9.1-4.1-9.1-9.1s4.1-9.1,9.1-9.1 - c5.1,0,9.1,4.1,9.1,9.1h-2.3c-0.9,0-1.8,0.6-2.1,1.4c-0.4,0.9-0.2,1.8,0.5,2.5l4.6,4.6c0.4,0.4,1,0.7,1.6,0.7c0.6,0,1.2-0.2,1.6-0.7 - l4.6-4.6C32,19.2,32.2,18.3,31.8,17.4z"/> -</svg> diff --git a/application/resources/pe_colored/scalable/resourcepacks.svg b/application/resources/pe_colored/scalable/resourcepacks.svg deleted file mode 100644 index 0318354c..00000000 --- a/application/resources/pe_colored/scalable/resourcepacks.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M28,10c0-1.1-0.9-2-2-2H6c-1.1,0-2,0.9-2,2v16c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V10z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#39B54A" d="M26,4h-4V2c0-1.1-0.9-2-2-2h-8c-1.1,0-2,0.9-2,2v2H6 - C3,4,0.6,6.2,0.1,9h4.2c0.3-0.6,1-1,1.7-1h20c0.7,0,1.4,0.4,1.7,1h4.2C31.4,6.2,29,4,26,4z M20,4h-8V3c0-0.6,0.4-1,1-1h6 - c0.6,0,1,0.4,1,1V4z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#8C6239" d="M31.9,9h-4.2c0.2,0.3,0.3,0.6,0.3,1v4H4v-4c0-0.4,0.1-0.7,0.3-1 - H0.1C0,9.3,0,9.7,0,10v16c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V10C32,9.7,32,9.3,31.9,9z M14.3,16h3.4c0.2,0.3,0.3,0.6,0.3,1 - c0,1.1-0.9,2-2,2s-2-0.9-2-2C14,16.6,14.1,16.3,14.3,16z M26,28H6c-1.1,0-2-0.9-2-2V16h8.1c-0.1,0.3-0.1,0.7-0.1,1c0,2.2,1.8,4,4,4 - s4-1.8,4-4c0-0.3-0.1-0.7-0.1-1H28v10C28,27.1,27.1,28,26,28z"/> -</svg> diff --git a/application/resources/pe_colored/scalable/screenshots.svg b/application/resources/pe_colored/scalable/screenshots.svg deleted file mode 100644 index 844fcbaa..00000000 --- a/application/resources/pe_colored/scalable/screenshots.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <path fill="#39B54A" d="M26,0H6C2.7,0,0,2.7,0,6v3h32V6C32,2.7,29.3,0,26,0z"/> - <path fill="#8C6239" d="M0,26c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V9H0V26z"/> -</g> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V6z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#666666" d="M24,26H8c-1.1,0-2-0.9-2-2v-0.7c0.8-1.7,1.5-3.8,2-4.8 - c1.1-2.4,3.5,3.5,4.9,3.5c2.8,0,6.2-10.7,9.1-7.4c1.4,1.6,2.9,5.8,4,8.4V24C26,25.1,25.1,26,24,26z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F15A24" d="M9,6c1.7,0,3,1.3,3,3c0,1.7-1.3,3-3,3c-1.7,0-3-1.3-3-3 - C6,7.3,7.3,6,9,6z"/> -</svg> diff --git a/application/resources/pe_colored/scalable/settings.svg b/application/resources/pe_colored/scalable/settings.svg deleted file mode 100644 index 72032f8a..00000000 --- a/application/resources/pe_colored/scalable/settings.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect x="0" y="0" fill="none" width="32" height="32"/> -<polygon fill="none" points="26,0 6,0 6,0 26,0 "/> -<path fill="#39B54A" d="M26,0H6C2.7,0,0,2.7,0,6v3h32V6C32,2.7,29.3,0,26,0z"/> -<path fill="#8C6239" d="M0,26c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V9H0V26z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V6z"/> -<rect x="16" y="10" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="8" height="2"/> -<rect x="8" y="18" fill-rule="evenodd" clip-rule="evenodd" width="6" height="6"/> -<rect x="10" y="20" fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" width="2" height="2"/> -<rect x="8" y="8" fill-rule="evenodd" clip-rule="evenodd" width="6" height="6"/> -<rect x="10" y="10" fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" width="2" height="2"/> -<rect x="16" y="20" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="8" height="2"/> -</svg> diff --git a/application/resources/pe_colored/scalable/status-bad.svg b/application/resources/pe_colored/scalable/status-bad.svg deleted file mode 100644 index bc42c248..00000000 --- a/application/resources/pe_colored/scalable/status-bad.svg +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#C1272D" d="M26,32H6c-3.4,0-6-2.6-6-6V6c0-3.4,2.6-6,6-6h20c3.4,0,6,2.6,6,6v20C32,29.2,29.4,32,26,32z"/> -<path fill="#FFFFFF" d="M21.6,21.6c-0.8,0.8-2,0.8-2.8,0L16,18.8l-2.8,2.8c-0.8,0.8-2,0.8-2.8,0c-0.8-0.8-0.8-2,0-2.8l2.8-2.8 - l-2.8-2.8c-0.8-0.8-0.8-2,0-2.8c0.8-0.8,2-0.8,2.8,0l2.8,2.8l2.8-2.8c0.8-0.8,2-0.8,2.8,0s0.8,2,0,2.8L18.8,16l2.8,2.8 - C22.4,19.6,22.4,20.8,21.6,21.6z"/> -</svg> diff --git a/application/resources/pe_colored/scalable/status-good.svg b/application/resources/pe_colored/scalable/status-good.svg deleted file mode 100644 index 4cfa56f0..00000000 --- a/application/resources/pe_colored/scalable/status-good.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <path fill="none" d="M26,0H6C2.6,0,0,2.6,0,6v20c0,3.4,2.6,6,6,6h20c3.4,0,6-2.6,6-6V6C32,2.6,29.4,0,26,0z M28,26c0,1.2-0.8,2-2,2 - H6c-1.2,0-2-0.8-2-2V6c0-1.2,0.8-2,2-2h20c1.2,0,2,0.8,2,2V26z M21,10.4l-7,7l-2.8-2.8c-0.8-0.8-2-0.8-2.8,0s-0.8,2,0,2.8l4.2,4.2 - c0.8,0.8,2,0.8,2.8,0l8.4-8.4c0.8-0.8,0.8-2,0-2.8S21.8,9.6,21,10.4z"/> -</g> -<path fill="#39B54A" d="M26,0H6C2.6,0,0,2.6,0,6v20c0,3.4,2.6,6,6,6h20c3.4,0,6-2.6,6-6V6C32,2.6,29.4,0,26,0z"/> -<path fill="#39B54A" d="M28,26c0,1.2-0.8,2-2,2H6c-1.2,0-2-0.8-2-2V6c0-1.2,0.8-2,2-2h20c1.2,0,2,0.8,2,2V26z"/> -<path fill="#FFFFFF" d="M21,10.4l-7,7l-2.8-2.8c-0.8-0.8-2-0.8-2.8,0s-0.8,2,0,2.8l4.2,4.2c0.8,0.8,2,0.8,2.8,0l8.4-8.4 - c0.8-0.8,0.8-2,0-2.8S21.8,9.6,21,10.4z"/> -</svg> diff --git a/application/resources/pe_colored/scalable/status-yellow.svg b/application/resources/pe_colored/scalable/status-yellow.svg deleted file mode 100644 index 0551fed2..00000000 --- a/application/resources/pe_colored/scalable/status-yellow.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <path fill="#E3A333" d="M26,0H6C2.7,0,0,2.7,0,6v20c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V6C32,2.7,29.3,0,26,0z M28,26 - c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2V26z"/> -</g> -<path fill="#E3A333" d="M26,0H6C2.7,0,0,2.7,0,6v20c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V6C32,2.7,29.3,0,26,0z"/> -<path fill="#E3A333" d="M28,26c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2V26z"/> -<g> - <path fill="#FFFFFF" d="M6,20c0-5.8,2.4-7.9,5.8-7.9c2,0,3.4,0.7,5.3,1.9c1.6,1,2.5,1.5,3.3,1.5c0.7,0,1.2-0.7,1.3-3.1H26 - c0.2,6.1-2.3,8-5.5,8c-2,0-3.5-0.8-5.3-1.9c-1.7-1-2.6-1.6-3.3-1.6c-0.8,0-1.4,0.5-1.6,3.2H6z"/> -</g> -</svg> diff --git a/application/resources/pe_colored/scalable/viewfolder.svg b/application/resources/pe_colored/scalable/viewfolder.svg deleted file mode 100644 index 91832577..00000000 --- a/application/resources/pe_colored/scalable/viewfolder.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#F2F2F2" d="M28,10c0-1.1-0.9-2-2-2H16V6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V10z" - /> -<rect x="0" fill="none" width="32" height="32"/> -<g> - <path fill="none" d="M26,8H16V6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v3v17c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V10 - c0-0.4-0.1-0.7-0.3-1C27.4,8.4,26.7,8,26,8z"/> - <path fill="#39B54A" d="M4,6c0-1.1,0.9-2,2-2h8c1.1,0,2,0.9,2,2v2h10c0.7,0,1.4,0.4,1.7,1h4.2C31.4,6.2,29,4,26,4h-6.4 - c-0.8-2.3-3-4-5.6-4H6C2.7,0,0,2.7,0,6v3h4V6z"/> - <path fill="#8C6239" d="M27.7,9c0.2,0.3,0.3,0.6,0.3,1v16c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2V9H0v17c0,3.3,2.7,6,6,6h20 - c3.3,0,6-2.7,6-6V10c0-0.3,0-0.7-0.1-1H27.7z"/> -</g> -</svg> diff --git a/application/resources/pe_colored/scalable/worlds.svg b/application/resources/pe_colored/scalable/worlds.svg deleted file mode 100644 index 087ba7c9..00000000 --- a/application/resources/pe_colored/scalable/worlds.svg +++ /dev/null @@ -1,50 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xml:space="preserve" - enable-background="new 0 0 32 32" - viewBox="0 0 32 32" - y="0px" - x="0px" - id="Calque_1" - version="1.1"><metadata - id="metadata19"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs17" /><g - id="g6"><path - id="path2" - d="M26,0H6C2.7,0,0,2.7,0,6v3h32V6C32,2.7,29.3,0,26,0z" - fill="#39B54A" /><path - id="path4" - d="M0,26c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V9H0V26z" - fill="#8C6239" /></g><path - fill="#F2F2F2" - fill-rule="evenodd" - clip-rule="evenodd" - id="path8" - d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 c1.1,0,2-0.9,2-2V6z" /><g - transform="rotate(29.970903,16,15.973684)" - id="g881"><ellipse - ry="8.9473686" - rx="8.9473696" - cy="16" - cx="16" - id="path845" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#666666;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /><ellipse - ry="8.9473686" - rx="3.4915254" - cy="15.947369" - cx="16" - id="path845-3" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#666666;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /><path - style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="M 8.1848294,12.430327 C 12.570183,14.790801 20.250652,13.785896 22.94338,12" - id="path870" /><path - id="path872" - d="M 8.2166335,20.492522 C 12.601987,18.132048 21.148735,17.776739 23.841463,19.562635" - style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /></g></svg>
\ No newline at end of file diff --git a/application/resources/pe_dark/index.theme b/application/resources/pe_dark/index.theme deleted file mode 100644 index b7d1ad01..00000000 --- a/application/resources/pe_dark/index.theme +++ /dev/null @@ -1,11 +0,0 @@ -[Icon Theme] -Name=pe_dark -Comment=Icons by pexner (dark) -Inherits=multimc -Directories=scalable - -[scalable] -Size=48 -Type=Scalable -MinSize=16 -MaxSize=256 diff --git a/application/resources/pe_dark/pe_dark.qrc b/application/resources/pe_dark/pe_dark.qrc deleted file mode 100644 index a57b6a14..00000000 --- a/application/resources/pe_dark/pe_dark.qrc +++ /dev/null @@ -1,38 +0,0 @@ -<!DOCTYPE RCC> -<RCC version="1.0"> - <qresource prefix="/icons/pe_dark"> - <file>index.theme</file> - <file>scalable/about.svg</file> - <file>scalable/accounts.svg</file> - <file>scalable/bug.svg</file> - <file>scalable/centralmods.svg</file> - <file>scalable/checkupdate.svg</file> - <file>scalable/copy.svg</file> - <file>scalable/coremods.svg</file> - <file>scalable/externaltools.svg</file> - <file>scalable/help.svg</file> - <file>scalable/instance-settings.svg</file> - <file>scalable/jarmods.svg</file> - <file>scalable/java.svg</file> - <file>scalable/language.svg</file> - <file>scalable/loadermods.svg</file> - <file>scalable/log.svg</file> - <file>scalable/minecraft.svg</file> - <file>scalable/multimc.svg</file> - <file>scalable/new.svg</file> - <file>scalable/news.svg</file> - <file>scalable/notes.svg</file> - <file>scalable/patreon.svg</file> - <file>scalable/proxy.svg</file> - <file>scalable/quickmods.svg</file> - <file>scalable/refresh.svg</file> - <file>scalable/resourcepacks.svg</file> - <file>scalable/screenshots.svg</file> - <file>scalable/settings.svg</file> - <file>scalable/status-bad.svg</file> - <file>scalable/status-good.svg</file> - <file>scalable/status-yellow.svg</file> - <file>scalable/viewfolder.svg</file> - <file>scalable/worlds.svg</file> - </qresource> -</RCC> diff --git a/application/resources/pe_dark/scalable/about.svg b/application/resources/pe_dark/scalable/about.svg deleted file mode 100644 index e75ea6ca..00000000 --- a/application/resources/pe_dark/scalable/about.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <g> - <polygon fill="#666666" points="17.8,21 17.8,11.9 11.9,11.9 11.9,14.2 14.2,14.2 14.2,21 11.9,21 11.9,23.3 20.1,23.3 20.1,21 - "/> - <circle fill="#666666" cx="16" cy="8.3" r="1.8"/> - </g> - <path d="M16,32C7.2,32,0,24.8,0,16C0,7.2,7.2,0,16,0c8.8,0,16,7.2,16,16C32,24.8,24.8,32,16,32L16,32z M16,4C9.4,4,4,9.4,4,16 - s5.4,12,12,12s12-5.4,12-12S22.6,4,16,4z"/> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/accounts.svg b/application/resources/pe_dark/scalable/accounts.svg deleted file mode 100644 index 6d46b2df..00000000 --- a/application/resources/pe_dark/scalable/accounts.svg +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#999999" d="M25.8,17.5c1.4-1.4,2.2-3.4,2.2-5.5V8c0-4.4-3.6-8-8-8 - c-0.6,0-1.2,0.1-1.8,0.2c1.3,1.1,2.4,2.4,3,4C22.8,4.7,24,6.2,24,8v4c0,1.8-1.2,3.3-2.8,3.8c-0.2,0.4-0.4,0.8-0.6,1.2 - c1.5,1.2,2.8,2.6,3.7,4.2c1.8,1.1,3.1,2.7,3.6,4.7c0,1.1-0.9,2-2,2h-0.3c-0.4,1.6-1.3,3-2.5,4H26c3.3,0,6-2.7,6-6 - C31.4,22.3,28.9,19.2,25.8,17.5z"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M18,32H6c-3.3,0-6-2.7-6-6l0,0c0.6-3.7,3.1-6.8,6.2-8.5C4.9,16.1,4,14.1,4,12V8 - c0-4.4,3.6-8,8-8s8,3.6,8,8v4c0,2.1-0.9,4.1-2.2,5.5c3.1,1.7,5.6,4.8,6.2,8.5l0,0C24,29.3,21.3,32,18,32z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M16,12V8c0-2.2-1.8-4-4-4S8,5.8,8,8v4c0,2.2,1.8,4,4,4 - S16,14.2,16,12z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M20,26c-0.9-3.4-4.3-6-8-6l0,0l0,0c-3.7,0-7.1,2.6-8,6l0,0 - c0,1.1,0.9,2,2,2h12C19.1,28,20,27.1,20,26L20,26z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/bug.svg b/application/resources/pe_dark/scalable/bug.svg deleted file mode 100644 index 9da71adb..00000000 --- a/application/resources/pe_dark/scalable/bug.svg +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect x="0" y="0" fill="none" width="32" height="32"/> -<g> - <path fill-rule="evenodd" clip-rule="evenodd" fill="#666666" d="M22.7,5.3c-0.3-1.2-0.9-2.3-1.8-3.2c-2.7-2.8-7.2-2.8-9.9,0 - c-0.9,0.9-1.5,2-1.8,3.2C13.5,3.3,18.5,3.3,22.7,5.3z"/> - <path fill-rule="evenodd" clip-rule="evenodd" d="M30,17.9h-4.1c0-0.7,0.1-1.3,0.1-2c0-0.7,0-1.4-0.1-2c0,0,0,0,0.1,0v0h2 - c1.1,0,2-0.9,2-2c0-1.1-0.9-2-2-2h-2v0c-0.3,0-0.6,0.1-0.8,0.1c-1.2-3.1-3.9-4.1-9.2-4.1s-7.9,1-9.2,4.1C6.6,9.9,6.3,9.8,6,9.8v0H4 - c-1.1,0-2,0.9-2,2c0,1.1,0.9,2,2,2h2v0c0,0,0,0,0.1,0c0,0.6-0.1,1.3-0.1,2c0,0.7,0,1.3,0.1,2H2c-1.1,0-2,0.9-2,2c0,1.1,0.9,2,2,2 - h4.5c0.3,1.4,0.7,2.8,1.2,4H6c-1.1,0-2,0.9-2,2c0,1.1,0.9,2,2,2h2v0c0.7,0,1.4-0.1,2.1-0.3c1.5,1.4,3.4,2.3,5.9,2.3 - s4.4-0.9,5.9-2.3c0.7,0.2,1.4,0.3,2.1,0.3v0h2c1.1,0,2-0.9,2-2c0-1.1-0.9-2-2-2h-1.7c0.5-1.2,0.9-2.6,1.2-4H30c1.1,0,2-0.9,2-2 - C32,18.8,31.1,17.9,30,17.9z"/> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/centralmods.svg b/application/resources/pe_dark/scalable/centralmods.svg deleted file mode 100644 index f3b0c0e4..00000000 --- a/application/resources/pe_dark/scalable/centralmods.svg +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill="none" width="32" height="32"/> -<path d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h8c2.6,0,4.8,1.7,5.6,4H26c3.3,0,6,2.7,6,6v16C32,29.3,29.3,32,26,32z M28,10 - c0-1.1-0.9-2-2-2H16V6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V10z"/> -<path fill="#666666" d="M16,10.2l2.2,4.5l5,0.7L19.6,19l0.8,4.9L16,21.6l-4.4,2.3l0.8-4.9l-3.6-3.5l5-0.7L16,10.2z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/checkupdate.svg b/application/resources/pe_dark/scalable/checkupdate.svg deleted file mode 100644 index 97585447..00000000 --- a/application/resources/pe_dark/scalable/checkupdate.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#666666" d="M26,24h-0.4c0-0.1-0.1-0.2-0.1-0.3c-0.7-1.6-1.5-2.8-3.5-3.4V18c0-3.3-2.7-6-6-6c-3.3,0-6,2.7-6,6v2.3 - c-2,0.6-2.9,1.8-3.5,3.4c0,0,0,0.1,0,0.1C2.8,23.1,0,19.9,0,16v-2c0-4.4,3.6-8,8-8c0.8,0,1.5,0.1,2.2,0.3C10.9,2.7,14.2,0,18,0 - c4.4,0,8,3.6,8,8c0,0.7-0.1,1.4-0.3,2c0.1,0,0.2,0,0.3,0c3.3,0,6,2.7,6,6v2C32,21.3,29.3,24,26,24z"/> -<path d="M12,24h2v-6c0-1.1,0.9-2,2-2c1.1,0,2,0.9,2,2v6h2c0.8,0,1.5,0.5,1.8,1.2c0.1,0.2,0.1,0.4,0.1,0.6c0.1,0.6-0.1,1.2-0.6,1.6 - l-4,4C17,31.8,16.5,32,16,32c-0.5,0-1-0.2-1.4-0.6l-4-4c-0.4-0.4-0.6-1-0.6-1.6c0-0.2,0.1-0.4,0.1-0.6C10.5,24.5,11.2,24,12,24z"/> -<rect fill="none" width="32" height="32"/> -</svg> diff --git a/application/resources/pe_dark/scalable/copy.svg b/application/resources/pe_dark/scalable/copy.svg deleted file mode 100644 index 8c30ac0b..00000000 --- a/application/resources/pe_dark/scalable/copy.svg +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#666666" d="M28,25.6V10c0-3.3-2.7-6-6-6H6.4c0.8-2.3,3-4,5.6-4h14c3.3,0,6,2.7,6,6v14C32,22.6,30.3,24.8,28,25.6z"/> -<path d="M26,12v14c0,3.3-2.7,6-6,6H6c-3.3,0-6-2.7-6-6V12c0-3.3,2.7-6,6-6h14C23.3,6,26,8.7,26,12z M4,26c0,1.1,0.9,2,2,2h14 - c1.1,0,2-0.9,2-2V14H4V26z M6,8c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S7.1,8,6,8z"/> -<rect fill="none" width="32" height="32"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/coremods.svg b/application/resources/pe_dark/scalable/coremods.svg deleted file mode 100644 index 1e2eb227..00000000 --- a/application/resources/pe_dark/scalable/coremods.svg +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<circle fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" cx="16" cy="16" r="12"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M16,32C7.2,32,0,24.8,0,16C0,7.2,7.2,0,16,0c8.8,0,16,7.2,16,16 - C32,24.8,24.8,32,16,32z M16,4C9.4,4,4,9.4,4,16c0,6.6,5.4,12,12,12s12-5.4,12-12C28,9.4,22.6,4,16,4z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#666666" d="M16,6l2.9,6l6.6,1l-4.8,4.6l1.1,6.5L16,21l-5.9,3.1l1.1-6.5 - l-4.8-4.6l6.6-1L16,6z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/externaltools.svg b/application/resources/pe_dark/scalable/externaltools.svg deleted file mode 100644 index 29b45f26..00000000 --- a/application/resources/pe_dark/scalable/externaltools.svg +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M6,32h20c3.3,0,6-2.7,6-6V6c0-3.3-2.7-6-6-6h-9.1C17.6,1.2,18,2.6,18,4h8 - c1.1,0,2,0.9,2,2v20c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2v-4.5l-4-3V26C0,29.3,2.7,32,6,32z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#666666" d="M8.8,17.6C9.2,17.9,9.6,18,10,18c0.3,0,0.6-0.1,0.9-0.2 - c0.7-0.3,1.1-1,1.1-1.8v-1.9V14c6.3,0,11.7,4.2,13.4,10c0.4-1.3,0.6-2.6,0.6-4c0-7.7-6.3-14-14-14V4c0-0.8-0.4-1.5-1.1-1.8 - C10.6,2.1,10.3,2,10,2C9.6,2,9.2,2.1,8.8,2.4l-8,6C0.3,8.8,0,9.4,0,10c0,0.6,0.3,1.2,0.8,1.6L8.8,17.6z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/help.svg b/application/resources/pe_dark/scalable/help.svg deleted file mode 100644 index 2a1518ae..00000000 --- a/application/resources/pe_dark/scalable/help.svg +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xml:space="preserve" - enable-background="new 0 0 32 32" - viewBox="0 0 32 32" - y="0px" - x="0px" - id="Calque_1" - version="1.1"><metadata - id="metadata17"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs15" /><g - id="g10"><path - id="path8" - d="M16,32C7.2,32,0,24.8,0,16C0,7.2,7.2,0,16,0c8.8,0,16,7.2,16,16C32,24.8,24.8,32,16,32L16,32z M16,4C9.4,4,4,9.4,4,16 s5.4,12,12,12s12-5.4,12-12S22.6,4,16,4z" /><g - transform="translate(41.863574,-2.0092638)" - id="g861"><g - aria-label="?" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:27.34714317px;line-height:85.45981598px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L';letter-spacing:0px;word-spacing:0px;fill:#666666;fill-opacity:1;stroke:none;stroke-width:3.4183929px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - id="text832"><path - d="m -20.968435,13.920532 c 0,0.6381 -0.07293,1.239737 -0.218777,1.804911 -0.145852,0.565174 -0.401092,1.066538 -0.76572,1.504093 -0.401092,0.492249 -0.774836,0.902456 -1.121233,1.230621 -0.346397,0.328166 -0.656332,0.6381 -0.929803,0.929803 -0.25524,0.273471 -0.464902,0.556059 -0.628985,0.847762 -0.145851,0.291703 -0.218777,0.656331 -0.218777,1.093885 v 0.38286 h -3.144921 V 20.72997 c 0,-0.601637 0.136736,-1.221505 0.410207,-1.859605 0.273471,-0.656332 0.756604,-1.285316 1.449399,-1.886953 0.346397,-0.309935 0.638099,-0.583406 0.875108,-0.820415 0.237009,-0.25524 0.428439,-0.492248 0.57429,-0.711025 0.145851,-0.237009 0.246124,-0.483133 0.300819,-0.738373 0.05469,-0.273471 0.08204,-0.57429 0.08204,-0.902456 0,-0.528711 -0.12762,-0.984497 -0.38286,-1.367357 -0.237009,-0.401091 -0.656331,-0.601637 -1.257968,-0.601637 -1.057423,0 -1.640829,0.692794 -1.750218,2.078383 h -3.06288 c 0.01823,-0.747489 0.145853,-1.431167 0.38286,-2.051036 0.237009,-0.6381 0.565175,-1.185043 0.984498,-1.640829 0.419323,-0.474017 0.920687,-0.8386455 1.504092,-1.0938855 0.601637,-0.25524 1.2762,-0.38286 2.023689,-0.38286 0.838646,0 1.567903,0.1367357 2.187771,0.4102072 0.619869,0.25524 1.130349,0.6198684 1.53144,1.0938853 0.401092,0.455786 0.692795,1.002729 0.875109,1.640829 0.200546,0.619869 0.300819,1.294432 0.30082,2.023689 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Monofonto;-inkscape-font-specification:Monofonto;fill:#666666;fill-opacity:1;stroke-width:3.4183929px" - id="path855" /></g><circle - style="fill:#666666" - cx="-26.38899" - cy="25.466606" - r="1.8" - id="circle6-6" /></g></g></svg>
\ No newline at end of file diff --git a/application/resources/pe_dark/scalable/instance-settings.svg b/application/resources/pe_dark/scalable/instance-settings.svg deleted file mode 100644 index c9f701e7..00000000 --- a/application/resources/pe_dark/scalable/instance-settings.svg +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect y="0" fill="none" width="32" height="32"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v20 - C32,29.3,29.3,32,26,32z M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V6z"/> -<rect x="16" y="10" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="8" height="2"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M8,18h6v6H8V18z M10,22h2v-2h-2V22z"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M8,8h6v6H8V8z M10,12h2v-2h-2V12z"/> -<rect x="16" y="20" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="8" height="2"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/jarmods.svg b/application/resources/pe_dark/scalable/jarmods.svg deleted file mode 100644 index cb9a97ba..00000000 --- a/application/resources/pe_dark/scalable/jarmods.svg +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v20 - C32,29.3,29.3,32,26,32z"/> -<path fill="#999999" d="M16.5,0.6l2.2,4.5l5,0.7l-3.6,3.5l0.8,4.9l-4.4-2.3l-4.4,2.3l0.8-4.9L9.4,5.8l5-0.7L16.5,0.6z"/> -<g> - <g> - <path fill="#FFFFFF" d="M15.9,24.2c-2.9,0-5.3-0.8-5.5-1.8c-0.1-0.4,0.2-0.9,1.7-1.4l1.3-0.4l-1.2,0.7c-0.1,0.1-0.3,0.2-0.3,0.3 - c0,0,0.1,0.3,1.2,0.4c1.2,0.1,2.1,0.2,2.8,0.2c1.2,0,2.3-0.1,4.1-0.5l0.1,0l0,0c0,0,0.8,0.5,1.9,0.9l0.4,0.1l-0.3,0.1 - C19.7,24,17.4,24.2,15.9,24.2z"/> - </g> - <g> - <path fill="#FFFFFF" d="M15.3,20.4c-3.3,0-5.7-0.6-5.8-1.5c-0.1-0.5,0.6-1,1.9-1.5l0.8-0.3l-0.7,0.5c-0.1,0.1-0.4,0.4-0.4,0.6 - c0,0.1,0.2,0.3,1.1,0.4c1.3,0.1,2.3,0.2,3.2,0.2c1.7,0,3.4-0.2,5.7-0.6l0.1,0l0.1,0.1c0,0,0.5,0.5,1.3,0.8l0.5,0.2l-0.5,0.1 - C20.3,20,17.7,20.4,15.3,20.4z"/> - </g> - <g> - <path fill="#FFFFFF" d="M15.3,27.4C15.3,27.4,15.3,27.4,15.3,27.4c-3.1,0-6.3-0.3-9.4-0.8c-1.2-0.2-1.8-0.5-1.8-1 - c0.1-1,3.1-2,4.7-2c0.4,0,0.7,0.1,0.9,0.2l0.6,0.4l-0.7-0.1c0,0-0.4-0.1-1.1,0.1c-1.6,0.5-2,0.8-2,0.9c0,0,0,0.1,0.2,0.2 - c1.4,0.6,4.6,1,8.7,1c4.3,0,8.4-0.4,10.3-1c0.9-0.3,1.1-0.6,1.1-0.7c0-0.2-0.2-0.4-0.2-0.4l-0.9-0.8l1.1,0.5 - c0.7,0.3,0.8,0.7,0.7,0.9C27.4,26,22.4,27.4,15.3,27.4z"/> - </g> - <g> - <path fill="#FFFFFF" d="M13.6,16.7c-3,0-6.7-0.3-6.9-1.2c-0.1-0.4,0.5-0.7,0.7-0.8c2.5-1.1,4.6-1.2,5.2-1.2c0.1,0,0.1,0,0.1,0l1,0 - l-1,0.3c-1.8,0.4-3.4,1.1-3.4,1.4c0,0,0,0.2,1.2,0.4c0.8,0.1,1.9,0.1,3.1,0.1c1.6,0,3.4-0.1,5-0.2c2.5-0.2,5.1-0.7,5.1-0.7 - l1.3-0.2L23.9,15c0,0-0.9,0.4-1.5,0.8l0,0C20.1,16.4,16.9,16.7,13.6,16.7z"/> - </g> - <g> - <path fill="#FFFFFF" d="M23.5,20.3v-0.2c0-0.1,0-0.3,0.2-0.3c3.8-2,3.8-3.7,3.7-4.3c-0.2-0.9-1.1-1.4-1.9-1.4c-0.1,0-0.2,0-0.3,0 - c-0.5,0.1-0.7,0.2-0.7,0.2l-0.5,0.2l0.3-0.5c0,0,0.2-0.3,0.6-0.5c0.4-0.2,0.9-0.2,1.3-0.2c1.5,0,2.7,0.9,2.9,2.2 - c0.2,1.5-1.1,3.5-5.4,4.7L23.5,20.3z"/> - </g> - <g> - <path fill="#FFFFFF" d="M16.9,29c-1.2,0-2.4,0-3.5-0.1c-3.8-0.2-4.8-0.8-4.8-1v-0.2l0.2,0c1.8,0.3,4.2,0.5,6.8,0.5 - c3,0,5.9-0.3,8.4-0.7c4.4-0.9,4.9-1.9,4.9-1.9l0.3-0.8l-0.1,0.9c-0.1,1.2-1.5,2.1-4.1,2.6C22.9,28.7,20.1,29,16.9,29z"/> - </g> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/java.svg b/application/resources/pe_dark/scalable/java.svg deleted file mode 100644 index 9e1091fa..00000000 --- a/application/resources/pe_dark/scalable/java.svg +++ /dev/null @@ -1,48 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <path id="XMLID_1_" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v20C32,29.3,29.3,32,26,32z"/> -</g> -<path fill="none" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v20C32,29.3,29.3,32,26,32z"/> -<g> - <path fill="#999999" d="M16.7,15.6l1-0.8c0.1-0.1,1.9-1.6,0.4-3.4c-1.3-1.6-1.8-3.1-1.4-4.5c1.1-3.4,7.2-4.9,7.4-5l1-0.2l-0.9,0.5 - C20.7,4.3,19,5.8,18.8,7c-0.2,0.9,0.4,1.7,1.1,2.7l0.2,0.3c0.5,0.7,0.6,1.4,0.5,2.1C20.2,13.8,18,15,17.9,15L16.7,15.6z"/> -</g> -<g> - <g> - <path fill="#FFFFFF" d="M15.9,24.2c-2.9,0-5.3-0.8-5.5-1.8c-0.1-0.4,0.2-0.9,1.7-1.4l1.3-0.4l-1.2,0.7c-0.1,0.1-0.3,0.2-0.3,0.3 - c0,0,0.1,0.3,1.2,0.4c1.2,0.1,2.1,0.2,2.8,0.2c1.2,0,2.3-0.1,4.1-0.5l0.1,0l0,0c0,0,0.8,0.5,1.9,0.9l0.4,0.1l-0.3,0.1 - C19.7,24,17.4,24.2,15.9,24.2z"/> - </g> - <g> - <path fill="#FFFFFF" d="M15.3,20.4c-3.3,0-5.7-0.6-5.8-1.5c-0.1-0.5,0.6-1,1.9-1.5l0.8-0.3l-0.7,0.5c-0.1,0.1-0.4,0.4-0.4,0.6 - c0,0.1,0.2,0.3,1.1,0.4c1.3,0.1,2.3,0.2,3.2,0.2c1.7,0,3.4-0.2,5.7-0.6l0.1,0l0.1,0.1c0,0,0.5,0.5,1.3,0.8l0.5,0.2l-0.5,0.1 - C20.3,20,17.7,20.4,15.3,20.4z"/> - </g> - <g> - <path fill="#FFFFFF" d="M15.3,27.4C15.3,27.4,15.3,27.4,15.3,27.4c-3.1,0-6.3-0.3-9.4-0.8c-1.2-0.2-1.8-0.5-1.8-1 - c0.1-1,3.1-2,4.7-2c0.4,0,0.7,0.1,0.9,0.2l0.6,0.4l-0.7-0.1c0,0-0.4-0.1-1.1,0.1c-1.6,0.5-2,0.8-2,0.9c0,0,0,0.1,0.2,0.2 - c1.4,0.6,4.6,1,8.7,1c4.3,0,8.4-0.4,10.3-1c0.9-0.3,1.1-0.6,1.1-0.7c0-0.2-0.2-0.4-0.2-0.4l-0.9-0.8l1.1,0.5 - c0.7,0.3,0.8,0.7,0.7,0.9C27.4,26,22.4,27.4,15.3,27.4z"/> - </g> - <g> - <path fill="#FFFFFF" d="M13.6,16.7c-3,0-6.7-0.3-6.9-1.2c-0.1-0.4,0.5-0.7,0.7-0.8c2.5-1.1,4.6-1.2,5.2-1.2c0.1,0,0.1,0,0.1,0l1,0 - l-1,0.3c-1.8,0.4-3.4,1.1-3.4,1.4c0,0,0,0.2,1.2,0.4c0.8,0.1,1.9,0.1,3.1,0.1c1.6,0,3.4-0.1,5-0.2c2.5-0.2,5.1-0.7,5.1-0.7 - l1.3-0.2L23.9,15c0,0-0.9,0.4-1.5,0.8l0,0C20.1,16.4,16.9,16.7,13.6,16.7z"/> - </g> - <g> - <path fill="#FFFFFF" d="M23.5,20.3v-0.2c0-0.1,0-0.3,0.2-0.3c3.8-2,3.8-3.7,3.7-4.3c-0.2-0.9-1.1-1.4-1.9-1.4c-0.1,0-0.2,0-0.3,0 - c-0.5,0.1-0.7,0.2-0.7,0.2l-0.5,0.2l0.3-0.5c0,0,0.2-0.3,0.6-0.5c0.4-0.2,0.9-0.2,1.3-0.2c1.5,0,2.7,0.9,2.9,2.2 - c0.2,1.5-1.1,3.5-5.4,4.7L23.5,20.3z"/> - </g> - <g> - <path fill="#FFFFFF" d="M16.9,29c-1.2,0-2.4,0-3.5-0.1c-3.8-0.2-4.8-0.8-4.8-1v-0.2l0.2,0c1.8,0.3,4.2,0.5,6.8,0.5 - c3,0,5.9-0.3,8.4-0.7c4.4-0.9,4.9-1.9,4.9-1.9l0.3-0.8l-0.1,0.9c-0.1,1.2-1.5,2.1-4.1,2.6C22.9,28.7,20.1,29,16.9,29z"/> - </g> -</g> -<path fill="#999999" d="M16.8,4.2c1.8-1.4,3-2.8,3.7-4.2h-1.7c-0.8,1-1.9,1.8-2.9,2.7c-1.2,1-2.5,2-3.3,3.2c-1.6,2.6,1,5.2,4,8 - l0.5,0.5l-0.3-0.6c-0.3-0.7-0.7-1.3-1.2-1.9C14.2,9.6,12.7,7.4,16.8,4.2z"/> -</svg> diff --git a/application/resources/pe_dark/scalable/language.svg b/application/resources/pe_dark/scalable/language.svg deleted file mode 100644 index 1a9b4c5c..00000000 --- a/application/resources/pe_dark/scalable/language.svg +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - 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"><metadata - id="metadata45"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs43" /><path - fill-rule="evenodd" - clip-rule="evenodd" - d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v20 C32,29.3,29.3,32,26,32z" - id="path2" /><path - fill-rule="evenodd" - clip-rule="evenodd" - fill="#F2F2F2" - d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 c1.1,0,2-0.9,2-2V6z" - id="path4" /><g - id="g10" /><g - id="g12" /><g - id="g14" /><g - id="g16" /><g - id="g18" /><g - id="g20" /><g - id="g22" /><g - id="g24" /><g - id="g26" /><g - id="g28" /><g - id="g30" /><g - id="g32" /><g - id="g34" /><g - id="g36" /><g - id="g38" /><path - d="m 9.1897911,10.114301 c -0.48384,0 -0.901101,0.341924 -0.996278,0.815883 l -2.029452,10.155455 c -0.110057,0.55031 0.246085,1.083011 0.795381,1.193069 0.556201,0.113982 1.084021,-0.246085 1.193073,-0.79538 l 0.651882,-3.247122 h 2.8699319 l 0.647785,3.247122 c 0.110996,0.557485 0.658771,0.906193 1.197171,0.79538 0.549363,-0.110056 0.905437,-0.642759 0.795381,-1.193069 L 12.285213,10.930184 c -0.09517,-0.473959 -0.512431,-0.815883 -0.996274,-0.815883 z m 0.614982,2.287746 h 0.4345929 l 0.811779,4.063002 H 8.9929941 Z M 20.710512,9.7002137 c -0.561209,0 -1.016777,0.4578063 -1.016777,1.0208743 v 1.016774 h -3.046227 c -0.561205,0 -1.012673,0.457809 -1.012673,1.020876 0,0.563065 0.451466,1.016776 1.012673,1.016776 h 0.274696 c 0.577658,1.85973 1.425829,3.313572 2.37794,4.460692 -0.745862,0.684158 -1.478369,1.245052 -2.271343,1.873654 -0.437271,0.35118 -0.506831,0.995228 -0.155795,1.434967 0.349411,0.439057 0.990377,0.507857 1.426766,0.155794 0.861615,-0.682321 1.601995,-1.252055 2.410742,-1.996652 0.808748,0.744597 1.618828,1.314331 2.480441,1.996652 0.436393,0.352059 1.077353,0.283261 1.426766,-0.155794 0.351038,-0.439739 0.277375,-1.083787 -0.159884,-1.434967 -0.792979,-0.628602 -1.591082,-1.189496 -2.336946,-1.873654 0.952113,-1.147188 1.869915,-2.601029 2.447642,-4.460692 h 0.270592 c 0.561209,0 1.016774,-0.453711 1.016774,-1.016776 0,-0.563067 -0.455565,-1.020876 -1.016774,-1.020876 h -3.111838 v -1.016774 c 0,-0.563068 -0.455567,-1.0208743 -1.016775,-1.0208743 z m -1.668658,4.0753003 h 3.402916 c -0.438423,1.181552 -1.08891,2.13806 -1.734258,2.951929 -0.645345,-0.813869 -1.230238,-1.770309 -1.668658,-2.951929 z" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#666666;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6.29744864;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect977" /></svg>
\ No newline at end of file diff --git a/application/resources/pe_dark/scalable/loadermods.svg b/application/resources/pe_dark/scalable/loadermods.svg deleted file mode 100644 index 24226a09..00000000 --- a/application/resources/pe_dark/scalable/loadermods.svg +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V6z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#666666" d="M16,6.4l2.9,6l6.6,1l-4.8,4.6l1.1,6.5L16,21.4l-5.9,3.1l1.1-6.5 - l-4.8-4.6l6.6-1L16,6.4z"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v20 - C32,29.3,29.3,32,26,32z M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V6z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/log.svg b/application/resources/pe_dark/scalable/log.svg deleted file mode 100644 index 68686a7d..00000000 --- a/application/resources/pe_dark/scalable/log.svg +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M30,28c-3.1,0.1-8.9,0.7-12.1,2.3C17.8,31.3,17,32,16,32c-1,0-1.8-0.7-1.9-1.7 - c-3.2-1.6-9-2.2-12.1-2.3c-1.1,0-2-0.9-2-2V2c0-1.1,0.9-2,2-2c0.1,0,0.1,0,0.2,0C16,0.4,16,4,16,4s0-3.6,13.8-4c0.1,0,0.1,0,0.2,0 - c1.1,0,2,0.9,2,2v24C32,27.1,31.1,28,30,28z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M14,6.3C11.4,5,7.2,4.4,4,4.2v19.9c5.4,0.3,8.4,1.1,10,1.9V6.3z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M28,4.2C24.8,4.4,20.6,5,18,6.3V26c1.6-0.8,4.6-1.6,10-1.9V4.2z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/minecraft.svg b/application/resources/pe_dark/scalable/minecraft.svg deleted file mode 100644 index 01baf575..00000000 --- a/application/resources/pe_dark/scalable/minecraft.svg +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill-rule="evenodd" clip-rule="evenodd" fill="none" width="32" height="32"/> -<g> - <polygon fill-rule="evenodd" clip-rule="evenodd" points="16,14.2 30,7.1 30,24.9 16,32 "/> - <polygon fill-rule="evenodd" clip-rule="evenodd" fill="#666666" points="16,14.2 2,7.1 2,24.9 16,32 "/> - <g> - <polygon fill-rule="evenodd" clip-rule="evenodd" fill="#999999" points="2,7.1 16,14.2 30,7.1 16,0 "/> - </g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/multimc.svg b/application/resources/pe_dark/scalable/multimc.svg deleted file mode 100644 index e4cf7b7f..00000000 --- a/application/resources/pe_dark/scalable/multimc.svg +++ /dev/null @@ -1,61 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill="#666666" width="32" height="32"/> -<polygon fill="#999999" points="0,5 1,5 1,4 4,4 4,5 8,5 8,8 9,8 9,2 12,2 12,5 13,5 13,4 16,4 16,8 17,8 17,6 18,6 18,5 20,5 20,8 - 21,8 21,6 22,6 22,5 24,5 24,4 26,4 26,5 29,5 29,4 32,4 32,0 0,0 "/> -<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-963.8778" y1="47.5718" x2="-963.0319" y2="49.6501" gradientTransform="matrix(20.79 0 0 14.7315 20048.0879 -696.8257)"> - <stop offset="0" style="stop-color:#000000;stop-opacity:0.8"/> - <stop offset="1" style="stop-color:#000000;stop-opacity:0.35"/> -</linearGradient> -<path fill="url(#SVGID_1_)" d="M18.5,21.5c-0.5-0.4-1-1-1.8-1.9c-1,1.2-1.9,2.1-2.8,2.7c-1.1,0.7-2.5,1-4.1,1c-2,0-3.6-0.5-4.9-1.6 - c-1.4-1.1-2.1-2.6-2.1-4.4c0-1.7,0.7-3.2,2.1-4.4c1.2-1,2.9-1.6,5-1.6c1.1,0,2,0.2,2.8,0.5c0.9,0.3,1.7,0.8,2.3,1.4 - c0.6,0.5,1.2,1.2,1.8,1.9c1-1.2,1.9-2.1,2.8-2.7c1.1-0.7,2.5-1,4.1-1c2,0,3.6,0.5,4.9,1.6c1.4,1.1,2.1,2.6,2.1,4.4 - c0,1.7-0.7,3.2-2.1,4.4c-1.2,1-2.9,1.6-5,1.6c-1.1,0-2-0.2-2.8-0.5S19.2,22.1,18.5,21.5 M9.6,21.3c2.4,0,4.3-1.2,5.8-3.7 - c-1.9-2.7-3.8-4.1-5.8-4.1c-1.5,0-2.6,0.4-3.3,1.1c-0.8,0.8-1.2,1.7-1.2,2.8c0,1.2,0.4,2.1,1.2,2.8C7.1,20.9,8.2,21.3,9.6,21.3 - M23.9,13.5c-2.2,0-4.1,1.2-5.8,3.7c1.8,2.7,3.8,4.1,5.8,4.1c1.5,0,2.6-0.4,3.3-1.1c0.8-0.8,1.2-1.7,1.2-2.8c0-1.2-0.4-2.1-1.2-2.8 - C26.3,13.8,25.2,13.5,23.9,13.5"/> -<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-964.0289" y1="48.0195" x2="-962.7877" y2="48.9627" gradientTransform="matrix(20.79 0 0 14.7315 20047.7695 -696.964)"> - <stop offset="0" style="stop-color:#999999"/> - <stop offset="1" style="stop-color:#999999;stop-opacity:0.6"/> -</linearGradient> -<path fill="url(#SVGID_2_)" d="M17.6,20.1c-0.5-0.4-1-1-1.8-1.9c-1,1.2-1.9,2.1-2.8,2.7c-1.1,0.7-2.5,1-4.1,1c-2,0-3.6-0.5-4.9-1.6 - c-1.4-1.1-2.1-2.6-2.1-4.4c0-1.7,0.7-3.2,2.1-4.4c1.2-1,2.9-1.6,5-1.6c1.1,0,2,0.2,2.8,0.5c0.9,0.3,1.7,0.8,2.3,1.4 - c0.6,0.5,1.2,1.2,1.8,1.9c1-1.2,1.9-2.1,2.8-2.7c1.1-0.7,2.5-1,4.1-1c2,0,3.6,0.5,4.9,1.6c1.4,1.1,2.1,2.6,2.1,4.4 - c0,1.7-0.7,3.2-2.1,4.4c-1.2,1-2.9,1.6-5,1.6c-1.1,0-2-0.2-2.8-0.5C19.2,21.2,18.4,20.8,17.6,20.1 M8.7,19.9c2.4,0,4.3-1.2,5.8-3.7 - c-1.9-2.7-3.8-4.1-5.8-4.1c-1.5,0-2.6,0.4-3.3,1.1C4.6,14,4.2,14.9,4.2,16c0,1.2,0.4,2.1,1.2,2.8C6.2,19.5,7.3,19.9,8.7,19.9 - M23,12.1c-2.2,0-4.1,1.2-5.8,3.7c1.8,2.7,3.8,4.1,5.8,4.1c1.5,0,2.6-0.4,3.3-1.1c0.8-0.8,1.2-1.7,1.2-2.8c0-1.2-0.4-2.1-1.2-2.8 - C25.5,12.5,24.4,12.1,23,12.1"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/new.svg b/application/resources/pe_dark/scalable/new.svg deleted file mode 100644 index 0377aceb..00000000 --- a/application/resources/pe_dark/scalable/new.svg +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill="none" width="32" height="32"/> -<path d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v20C32,29.3,29.3,32,26,32z M6,2C4.9,2,4,2.9,4,4s0.9,2,2,2 - s2-0.9,2-2S7.1,2,6,2z M28,8H4v18c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V8z"/> -<path fill="#666666" d="M20,20h-2v2c0,1.1-0.9,2-2,2s-2-0.9-2-2v-2h-2c-1.1,0-2-0.9-2-2s0.9-2,2-2h2v-2c0-1.1,0.9-2,2-2s2,0.9,2,2v2 - h2c1.1,0,2,0.9,2,2S21.1,20,20,20z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/news.svg b/application/resources/pe_dark/scalable/news.svg deleted file mode 100644 index 84979dcb..00000000 --- a/application/resources/pe_dark/scalable/news.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill="none" width="32" height="32"/> -<g> - <g> - <path d="M26,0H6C2.6,0,0,2.6,0,6v14c0,3.4,2.6,6,6,6l4,6l4-6h12c3.4,0,6-2.6,6-6V6C32,2.6,29.4,0,26,0z M16,20H6v-2h10V20z M26,16 - H6v-2h20V16z M26,12H6v-2h20V12z M26,8H6V6h20V8z"/> - </g> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/notes.svg b/application/resources/pe_dark/scalable/notes.svg deleted file mode 100644 index 72649721..00000000 --- a/application/resources/pe_dark/scalable/notes.svg +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v20 - C32,29.3,29.3,32,26,32z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V6z"/> -<g> - <rect x="8" y="16" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="16" height="2"/> - <rect x="8" y="12" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="16" height="2"/> - <rect x="8" y="8" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="16" height="2"/> - <rect x="8" y="20" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="8" height="2"/> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/patreon.svg b/application/resources/pe_dark/scalable/patreon.svg deleted file mode 100644 index 01cb279a..00000000 --- a/application/resources/pe_dark/scalable/patreon.svg +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill="none" width="32" height="32"/> -<path fill="#666666" d="M16,0C7.2,0,0,7.2,0,16v16h15.3c0.2,0,0.4,0,0.7,0c8.8,0,16-7.2,16-16S24.8,0,16,0L16,0z"/> -<path fill="#FFFFFF" d="M16,3.7C9.2,3.7,3.7,9.2,3.7,16v7.3v5V32h4.9V16c0-4.1,3.3-7.3,7.3-7.3s7.3,3.3,7.3,7.3 - c0,4.1-3.3,7.3-7.3,7.3c-1.5,0-2.9-0.4-4-1.2v5.3c0.8,0.5,2.5,0.8,4.6,0.8C23.1,28,28.3,22.6,28.3,16C28.3,9.2,22.8,3.7,16,3.7 - L16,3.7z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/proxy.svg b/application/resources/pe_dark/scalable/proxy.svg deleted file mode 100644 index 98bcfac1..00000000 --- a/application/resources/pe_dark/scalable/proxy.svg +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M21.9,4H11.6c-0.8-2.3-3-4-5.6-4C2.7,0,0,2.7,0,6s2.7,6,6,6c2.6,0,4.8-1.7,5.6-4 - h10.3c1.1,0,2,0.9,2,2v1.4h4V10C27.9,6.7,25.2,4,21.9,4z M6,8C4.9,8,4,7.1,4,6s0.9-2,2-2c1.1,0,2,0.9,2,2S7.1,8,6,8z"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M23.9,20.6V22c0,1.1-0.9,2-2,2H11.6c-0.8-2.3-3-4-5.6-4c-3.3,0-6,2.7-6,6 - s2.7,6,6,6c2.6,0,4.8-1.7,5.6-4h10.3c3.3,0,6-2.7,6-6v-1.4H23.9z M6,28c-1.1,0-2-0.9-2-2s0.9-2,2-2c1.1,0,2,0.9,2,2S7.1,28,6,28z"/> -<g> - <path fill-rule="evenodd" clip-rule="evenodd" fill="#666666" d="M32,22H20V10h12V22z M28,14h-4v4h4V14z"/> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/quickmods.svg b/application/resources/pe_dark/scalable/quickmods.svg deleted file mode 100644 index 346729f1..00000000 --- a/application/resources/pe_dark/scalable/quickmods.svg +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V6z"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v20 - C32,29.3,29.3,32,26,32z M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V6z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#666666" d="M10.6,24.2c-0.3,0-0.6-0.1-0.8-0.2C9.3,23.7,9,23.2,9,22.6V9.8 - c0-0.6,0.3-1.1,0.8-1.4c0.3-0.2,0.5-0.2,0.8-0.2c0.2,0,0.5,0.1,0.7,0.2l12.8,6.4c0.5,0.3,0.9,0.8,0.9,1.4c0,0.6-0.3,1.2-0.9,1.4 - L11.3,24C11.1,24.1,10.8,24.2,10.6,24.2z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/refresh.svg b/application/resources/pe_dark/scalable/refresh.svg deleted file mode 100644 index c227cd6c..00000000 --- a/application/resources/pe_dark/scalable/refresh.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill="none" width="32" height="32"/> -<path d="M31.8,17.4c-0.4-0.9-1.2-1.4-2.1-1.4h-2.3c0-7.6-6.1-13.7-13.7-13.7C6.1,2.3,0,8.4,0,16c0,7.6,6.1,13.7,13.7,13.7 - c2.5,0,4.8-0.7,6.8-1.8l-3.4-3.4c-1,0.4-2.2,0.7-3.4,0.7c-5,0-9.1-4.1-9.1-9.1s4.1-9.1,9.1-9.1c5.1,0,9.1,4.1,9.1,9.1h-2.3 - c-0.9,0-1.8,0.6-2.1,1.4c-0.4,0.9-0.2,1.8,0.5,2.5l4.6,4.6c0.4,0.4,1,0.7,1.6,0.7c0.6,0,1.2-0.2,1.6-0.7l4.6-4.6 - C32,19.2,32.2,18.3,31.8,17.4z"/> -</svg> diff --git a/application/resources/pe_dark/scalable/resourcepacks.svg b/application/resources/pe_dark/scalable/resourcepacks.svg deleted file mode 100644 index 0db2beb1..00000000 --- a/application/resources/pe_dark/scalable/resourcepacks.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M28,10c0-1.1-0.9-2-2-2H6c-1.1,0-2,0.9-2,2v16c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V10z"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M26,4h-4V2c0-1.1-0.9-2-2-2h-8c-1.1,0-2,0.9-2,2v2H6c-3.3,0-6,2.7-6,6v16 - c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V10C32,6.7,29.3,4,26,4z M12,3c0-0.6,0.4-1,1-1h6c0.6,0,1,0.4,1,1v1h-8V3z M6,8h20 - c1.1,0,2,0.9,2,2v4H4v-4C4,8.9,4.9,8,6,8z M18,17c0,1.1-0.9,2-2,2s-2-0.9-2-2c0-0.4,0.1-0.7,0.3-1h3.4C17.9,16.3,18,16.6,18,17z - M26,28H6c-1.1,0-2-0.9-2-2V16h8.1c-0.1,0.3-0.1,0.7-0.1,1c0,2.2,1.8,4,4,4s4-1.8,4-4c0-0.3-0.1-0.7-0.1-1H28v10 - C28,27.1,27.1,28,26,28z"/> -</svg> diff --git a/application/resources/pe_dark/scalable/screenshots.svg b/application/resources/pe_dark/scalable/screenshots.svg deleted file mode 100644 index 2803b9aa..00000000 --- a/application/resources/pe_dark/scalable/screenshots.svg +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v20 - C32,29.3,29.3,32,26,32z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V6z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#666666" d="M24,26H8c-1.1,0-2-0.9-2-2v-0.7c0.8-1.7,1.5-3.8,2-4.8 - c1.1-2.4,3.5,3.5,4.9,3.5c2.8,0,6.2-10.7,9.1-7.4c1.4,1.6,2.9,5.8,4,8.4V24C26,25.1,25.1,26,24,26z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#999999" d="M9,6c1.7,0,3,1.3,3,3c0,1.7-1.3,3-3,3c-1.7,0-3-1.3-3-3 - C6,7.3,7.3,6,9,6z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/settings.svg b/application/resources/pe_dark/scalable/settings.svg deleted file mode 100644 index c9f701e7..00000000 --- a/application/resources/pe_dark/scalable/settings.svg +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect y="0" fill="none" width="32" height="32"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v20 - C32,29.3,29.3,32,26,32z M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V6z"/> -<rect x="16" y="10" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="8" height="2"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M8,18h6v6H8V18z M10,22h2v-2h-2V22z"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M8,8h6v6H8V8z M10,12h2v-2h-2V12z"/> -<rect x="16" y="20" fill-rule="evenodd" clip-rule="evenodd" fill="#666666" width="8" height="2"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/status-bad.svg b/application/resources/pe_dark/scalable/status-bad.svg deleted file mode 100644 index f455965a..00000000 --- a/application/resources/pe_dark/scalable/status-bad.svg +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path d="M26,32H6c-3.4,0-6-2.6-6-6V6c0-3.4,2.6-6,6-6h20c3.4,0,6,2.6,6,6v20C32,29.4,29.4,32,26,32z"/> -<path fill="#FFFFFF" d="M21.6,21.4c-0.8,0.8-2,0.8-2.8,0L16,18.6l-2.8,2.8c-0.8,0.8-2,0.8-2.8,0c-0.8-0.8-0.8-2,0-2.8l2.8-2.8 - L10.4,13c-0.8-0.8-0.8-2,0-2.8c0.8-0.8,2-0.8,2.8,0L16,13l2.8-2.8c0.8-0.8,2-0.8,2.8,0s0.8,2,0,2.8l-2.8,2.8l2.8,2.8 - C22.4,19.4,22.4,20.6,21.6,21.4z"/> -</svg> diff --git a/application/resources/pe_dark/scalable/status-good.svg b/application/resources/pe_dark/scalable/status-good.svg deleted file mode 100644 index 4ba91f2d..00000000 --- a/application/resources/pe_dark/scalable/status-good.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="none" d="M26,0H6C2.6,0,0,2.6,0,6v20c0,3.4,2.6,6,6,6h20c3.4,0,6-2.6,6-6V6C32,2.6,29.4,0,26,0z"/> -<path fill="none" d="M21,10.4l-7,7l-2.8-2.8c-0.8-0.8-2-0.8-2.8,0s-0.8,2,0,2.8l4.2,4.2c0.8,0.8,2,0.8,2.8,0l8.4-8.4 - c0.8-0.8,0.8-2,0-2.8S21.8,9.6,21,10.4z"/> -<path d="M26,0H6C2.6,0,0,2.6,0,6v20c0,3.4,2.6,6,6,6h20c3.4,0,6-2.6,6-6V6C32,2.6,29.4,0,26,0z"/> -<path fill="#FFFFFF" d="M21,10.4l-7,7l-2.8-2.8c-0.8-0.8-2-0.8-2.8,0s-0.8,2,0,2.8l4.2,4.2c0.8,0.8,2,0.8,2.8,0l8.4-8.4 - c0.8-0.8,0.8-2,0-2.8S21.8,9.6,21,10.4z"/> -</svg> diff --git a/application/resources/pe_dark/scalable/status-yellow.svg b/application/resources/pe_dark/scalable/status-yellow.svg deleted file mode 100644 index 69133817..00000000 --- a/application/resources/pe_dark/scalable/status-yellow.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <path fill="#E3A333" d="M26,0H6C2.7,0,0,2.7,0,6v20c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V6C32,2.7,29.3,0,26,0z M28,26 - c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2V26z"/> -</g> -<path d="M26,0H6C2.7,0,0,2.7,0,6v20c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V6C32,2.7,29.3,0,26,0z"/> -<path d="M28,26c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2V26z"/> -<g> - <path fill="#FFFFFF" d="M6,20c0-5.8,2.4-7.9,5.8-7.9c2,0,3.4,0.7,5.3,1.9c1.6,1,2.5,1.5,3.3,1.5c0.7,0,1.2-0.7,1.3-3.1H26 - c0.2,6.1-2.3,8-5.5,8c-2,0-3.5-0.8-5.3-1.9c-1.7-1-2.6-1.6-3.3-1.6c-0.8,0-1.4,0.5-1.6,3.2H6z"/> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/viewfolder.svg b/application/resources/pe_dark/scalable/viewfolder.svg deleted file mode 100644 index 3af36240..00000000 --- a/application/resources/pe_dark/scalable/viewfolder.svg +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect y="0" fill="none" width="32" height="32"/> -<path d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h8c2.6,0,4.8,1.7,5.6,4H26c3.3,0,6,2.7,6,6v16C32,29.3,29.3,32,26,32z M28,10 - c0-1.1-0.9-2-2-2H16V6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V10z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_dark/scalable/worlds.svg b/application/resources/pe_dark/scalable/worlds.svg deleted file mode 100644 index 2b01070f..00000000 --- a/application/resources/pe_dark/scalable/worlds.svg +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xml:space="preserve" - enable-background="new 0 0 32 32" - viewBox="0 0 32 32" - y="0px" - x="0px" - id="Calque_1" - version="1.1"><metadata - id="metadata45"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs43" /><path - id="path2" - d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v20 C32,29.3,29.3,32,26,32z" - clip-rule="evenodd" - fill-rule="evenodd" /><path - id="path4" - d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 c1.1,0,2-0.9,2-2V6z" - fill="#F2F2F2" - clip-rule="evenodd" - fill-rule="evenodd" /><g - id="g10" /><g - id="g12" /><g - id="g14" /><g - id="g16" /><g - id="g18" /><g - id="g20" /><g - id="g22" /><g - id="g24" /><g - id="g26" /><g - id="g28" /><g - id="g30" /><g - id="g32" /><g - id="g34" /><g - id="g36" /><g - id="g38" /><g - style="stroke:#666666;stroke-opacity:1" - transform="rotate(29.970903,16,16)" - id="g881"><ellipse - ry="8.9473686" - rx="8.9473696" - cy="16" - cx="16" - id="path845" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#666666;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /><ellipse - ry="8.9473686" - rx="3.4915254" - cy="15.947369" - cx="16" - id="path845-3" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#666666;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /><path - style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="M 8.1848294,12.430327 C 12.570183,14.790801 20.250652,13.785896 22.94338,12" - id="path870" /><path - id="path872" - d="M 8.2166335,20.492522 C 12.601987,18.132048 21.148735,17.776739 23.841463,19.562635" - style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /></g></svg>
\ No newline at end of file diff --git a/application/resources/pe_light/index.theme b/application/resources/pe_light/index.theme deleted file mode 100644 index c106acc8..00000000 --- a/application/resources/pe_light/index.theme +++ /dev/null @@ -1,11 +0,0 @@ -[Icon Theme] -Name=pe_light -Comment=Icons by pexner (light) -Inherits=multimc -Directories=scalable - -[scalable] -Size=48 -Type=Scalable -MinSize=16 -MaxSize=256 diff --git a/application/resources/pe_light/pe_light.qrc b/application/resources/pe_light/pe_light.qrc deleted file mode 100644 index 6d77c835..00000000 --- a/application/resources/pe_light/pe_light.qrc +++ /dev/null @@ -1,39 +0,0 @@ -<!DOCTYPE RCC> -<RCC version="1.0"> - <qresource prefix="/icons/pe_light"> - <file>index.theme</file> - <file>scalable/about.svg</file> - <file>scalable/accounts.svg</file> - <file>scalable/bug.svg</file> - <file>scalable/centralmods.svg</file> - <file>scalable/checkupdate.svg</file> - <file>scalable/copy.svg</file> - <file>scalable/coremods.svg</file> - <file>scalable/externaltools.svg</file> - <file>scalable/help.svg</file> - <file>scalable/instance-settings.svg</file> - <file>scalable/jarmods.svg</file> - <file>scalable/java.svg</file> - <file>scalable/language.svg</file> - <file>scalable/loadermods.svg</file> - <file>scalable/log.svg</file> - <file>scalable/minecraft.svg</file> - <file>scalable/multimc.svg</file> - <file>scalable/new.svg</file> - <file>scalable/news.svg</file> - <file>scalable/notes.svg</file> - <file>scalable/patreon.svg</file> - <file>scalable/proxy.svg</file> - <file>scalable/quickmods.svg</file> - <file>scalable/refresh.svg</file> - <file>scalable/resourcepacks.svg</file> - <file>scalable/screenshots.svg</file> - <file>scalable/settings.svg</file> - <file>scalable/status-bad.svg</file> - <file>scalable/status-good.svg</file> - <file>scalable/status-yellow.svg</file> - <file>scalable/viewfolder.svg</file> - <file>scalable/worlds.svg</file> - </qresource> -</RCC> - diff --git a/application/resources/pe_light/scalable/about.svg b/application/resources/pe_light/scalable/about.svg deleted file mode 100644 index 8d00c32e..00000000 --- a/application/resources/pe_light/scalable/about.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <g> - <polygon fill="#F2F2F2" points="17.8,21 17.8,11.9 11.9,11.9 11.9,14.2 14.2,14.2 14.2,21 11.9,21 11.9,23.3 20.1,23.3 20.1,21 - "/> - <circle fill="#F2F2F2" cx="16" cy="8.3" r="1.8"/> - </g> - <path fill="#F2F2F2" d="M16,32C7.2,32,0,24.8,0,16C0,7.2,7.2,0,16,0c8.8,0,16,7.2,16,16C32,24.8,24.8,32,16,32L16,32z M16,4 - C9.4,4,4,9.4,4,16s5.4,12,12,12s12-5.4,12-12S22.6,4,16,4z"/> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/accounts.svg b/application/resources/pe_light/scalable/accounts.svg deleted file mode 100644 index 3a092d03..00000000 --- a/application/resources/pe_light/scalable/accounts.svg +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#999999" d="M25.8,17.5c1.4-1.4,2.2-3.4,2.2-5.5V8c0-4.4-3.6-8-8-8 - c-0.6,0-1.2,0.1-1.8,0.2c1.3,1.1,2.4,2.4,3,4C22.8,4.7,24,6.2,24,8v4c0,1.8-1.2,3.3-2.8,3.8c-0.2,0.4-0.4,0.8-0.6,1.2 - c1.5,1.2,2.8,2.6,3.7,4.2c1.8,1.1,3.1,2.7,3.6,4.7c0,1.1-0.9,2-2,2h-0.3c-0.4,1.6-1.3,3-2.5,4H26c3.3,0,6-2.7,6-6 - C31.4,22.3,28.9,19.2,25.8,17.5z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M18,32H6c-3.3,0-6-2.7-6-6l0,0c0.6-3.7,3.1-6.8,6.2-8.5 - C4.9,16.1,4,14.1,4,12V8c0-4.4,3.6-8,8-8s8,3.6,8,8v4c0,2.1-0.9,4.1-2.2,5.5c3.1,1.7,5.6,4.8,6.2,8.5l0,0C24,29.3,21.3,32,18,32z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#4D4D4D" d="M16,12V8c0-2.2-1.8-4-4-4S8,5.8,8,8v4c0,2.2,1.8,4,4,4 - S16,14.2,16,12z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#4D4D4D" d="M20,26c-0.9-3.4-4.3-6-8-6l0,0l0,0c-3.7,0-7.1,2.6-8,6l0,0 - c0,1.1,0.9,2,2,2h12C19.1,28,20,27.1,20,26L20,26z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/bug.svg b/application/resources/pe_light/scalable/bug.svg deleted file mode 100644 index ccb64bc5..00000000 --- a/application/resources/pe_light/scalable/bug.svg +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect x="0" fill="none" width="32" height="32"/> -<g> - <path fill-rule="evenodd" clip-rule="evenodd" fill="#CCCCCC" d="M22.7,5.3c-0.3-1.2-0.9-2.3-1.8-3.2c-2.7-2.8-7.2-2.8-9.9,0 - c-0.9,0.9-1.5,2-1.8,3.2C13.5,3.3,18.5,3.3,22.7,5.3z"/> - <path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M30,17.9h-4.1c0-0.7,0.1-1.3,0.1-2c0-0.7,0-1.4-0.1-2 - c0,0,0,0,0.1,0v0h2c1.1,0,2-0.9,2-2c0-1.1-0.9-2-2-2h-2v0c-0.3,0-0.6,0.1-0.8,0.1c-1.2-3.1-3.9-4.1-9.2-4.1s-7.9,1-9.2,4.1 - C6.6,9.9,6.3,9.8,6,9.8v0H4c-1.1,0-2,0.9-2,2c0,1.1,0.9,2,2,2h2v0c0,0,0,0,0.1,0c0,0.6-0.1,1.3-0.1,2c0,0.7,0,1.3,0.1,2H2 - c-1.1,0-2,0.9-2,2c0,1.1,0.9,2,2,2h4.5c0.3,1.4,0.7,2.8,1.2,4H6c-1.1,0-2,0.9-2,2c0,1.1,0.9,2,2,2h2v0c0.7,0,1.4-0.1,2.1-0.3 - c1.5,1.4,3.4,2.3,5.9,2.3s4.4-0.9,5.9-2.3c0.7,0.2,1.4,0.3,2.1,0.3v0h2c1.1,0,2-0.9,2-2c0-1.1-0.9-2-2-2h-1.7 - c0.5-1.2,0.9-2.6,1.2-4H30c1.1,0,2-0.9,2-2C32,18.8,31.1,17.9,30,17.9z"/> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/centralmods.svg b/application/resources/pe_light/scalable/centralmods.svg deleted file mode 100644 index 050fdc58..00000000 --- a/application/resources/pe_light/scalable/centralmods.svg +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill="none" width="32" height="32"/> -<path fill="#F2F2F2" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h8c2.6,0,4.8,1.7,5.6,4H26c3.3,0,6,2.7,6,6v16 - C32,29.3,29.3,32,26,32z M28,10c0-1.1-0.9-2-2-2H16V6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V10z - "/> -<path fill="#CCCCCC" d="M16,10.2l2.2,4.5l5,0.7L19.6,19l0.8,4.9L16,21.6l-4.4,2.3l0.8-4.9l-3.6-3.5l5-0.7L16,10.2z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/checkupdate.svg b/application/resources/pe_light/scalable/checkupdate.svg deleted file mode 100644 index 08b8dcd5..00000000 --- a/application/resources/pe_light/scalable/checkupdate.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#CCCCCC" d="M26,24h-0.4c0-0.1-0.1-0.2-0.1-0.3c-0.7-1.6-1.5-2.8-3.5-3.4V18c0-3.3-2.7-6-6-6c-3.3,0-6,2.7-6,6v2.3 - c-2,0.6-2.9,1.8-3.5,3.4c0,0,0,0.1,0,0.1C2.8,23.1,0,19.9,0,16v-2c0-4.4,3.6-8,8-8c0.8,0,1.5,0.1,2.2,0.3C10.9,2.7,14.2,0,18,0 - c4.4,0,8,3.6,8,8c0,0.7-0.1,1.4-0.3,2c0.1,0,0.2,0,0.3,0c3.3,0,6,2.7,6,6v2C32,21.3,29.3,24,26,24z"/> -<path fill="#F2F2F2" d="M12,24h2v-6c0-1.1,0.9-2,2-2c1.1,0,2,0.9,2,2v6h2c0.8,0,1.5,0.5,1.8,1.2c0.1,0.2,0.1,0.4,0.1,0.6 - c0.1,0.6-0.1,1.2-0.6,1.6l-4,4C17,31.8,16.5,32,16,32c-0.5,0-1-0.2-1.4-0.6l-4-4c-0.4-0.4-0.6-1-0.6-1.6c0-0.2,0.1-0.4,0.1-0.6 - C10.5,24.5,11.2,24,12,24z"/> -<rect fill="none" width="32" height="32"/> -</svg> diff --git a/application/resources/pe_light/scalable/copy.svg b/application/resources/pe_light/scalable/copy.svg deleted file mode 100644 index abdcce09..00000000 --- a/application/resources/pe_light/scalable/copy.svg +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#CCCCCC" d="M28,25.6V10c0-3.3-2.7-6-6-6H6.4c0.8-2.3,3-4,5.6-4h14c3.3,0,6,2.7,6,6v14C32,22.6,30.3,24.8,28,25.6z"/> -<path fill="#F2F2F2" d="M26,12v14c0,3.3-2.7,6-6,6H6c-3.3,0-6-2.7-6-6V12c0-3.3,2.7-6,6-6h14C23.3,6,26,8.7,26,12z M4,26 - c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V14H4V26z M6,8c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S7.1,8,6,8z"/> -<rect fill="none" width="32" height="32"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/coremods.svg b/application/resources/pe_light/scalable/coremods.svg deleted file mode 100644 index c8fb0eb9..00000000 --- a/application/resources/pe_light/scalable/coremods.svg +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<circle fill-rule="evenodd" clip-rule="evenodd" fill="#4D4D4D" cx="16" cy="16" r="12"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M16,32C7.2,32,0,24.8,0,16C0,7.2,7.2,0,16,0c8.8,0,16,7.2,16,16 - C32,24.8,24.8,32,16,32z M16,4C9.4,4,4,9.4,4,16c0,6.6,5.4,12,12,12s12-5.4,12-12C28,9.4,22.6,4,16,4z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" d="M16,6l2.9,6l6.6,1l-4.8,4.6l1.1,6.5L16,21l-5.9,3.1l1.1-6.5 - l-4.8-4.6l6.6-1L16,6z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/externaltools.svg b/application/resources/pe_light/scalable/externaltools.svg deleted file mode 100644 index 4d232bcf..00000000 --- a/application/resources/pe_light/scalable/externaltools.svg +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M6,32h20c3.3,0,6-2.7,6-6V6c0-3.3-2.7-6-6-6h-9.1 - C17.6,1.2,18,2.6,18,4h8c1.1,0,2,0.9,2,2v20c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2v-4.5l-4-3V26C0,29.3,2.7,32,6,32z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" d="M8.8,17.6C9.2,17.9,9.6,18,10,18c0.3,0,0.6-0.1,0.9-0.2 - c0.7-0.3,1.1-1,1.1-1.8v-1.9V14c6.3,0,11.7,4.2,13.4,10c0.4-1.3,0.6-2.6,0.6-4c0-7.7-6.3-14-14-14V4c0-0.8-0.4-1.5-1.1-1.8 - C10.6,2.1,10.3,2,10,2C9.6,2,9.2,2.1,8.8,2.4l-8,6C0.3,8.8,0,9.4,0,10c0,0.6,0.3,1.2,0.8,1.6L8.8,17.6z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/help.svg b/application/resources/pe_light/scalable/help.svg deleted file mode 100644 index f820c679..00000000 --- a/application/resources/pe_light/scalable/help.svg +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xml:space="preserve" - enable-background="new 0 0 32 32" - viewBox="0 0 32 32" - y="0px" - x="0px" - id="Calque_1" - version="1.1"><metadata - id="metadata17"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs15" /><g - id="g10"><path - id="path8" - d="M16,32C7.2,32,0,24.8,0,16C0,7.2,7.2,0,16,0c8.8,0,16,7.2,16,16C32,24.8,24.8,32,16,32L16,32z M16,4 C9.4,4,4,9.4,4,16s5.4,12,12,12s12-5.4,12-12S22.6,4,16,4z" - fill="#F2F2F2" /></g><g - style="fill:#f2f2f2;fill-opacity:1" - transform="translate(41.863574,-2.0092638)" - id="g861"><g - aria-label="?" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:27.34714317px;line-height:85.45981598px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L';letter-spacing:0px;word-spacing:0px;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:3.4183929px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - id="text832"><path - d="m -20.968435,13.920532 c 0,0.6381 -0.07293,1.239737 -0.218777,1.804911 -0.145852,0.565174 -0.401092,1.066538 -0.76572,1.504093 -0.401092,0.492249 -0.774836,0.902456 -1.121233,1.230621 -0.346397,0.328166 -0.656332,0.6381 -0.929803,0.929803 -0.25524,0.273471 -0.464902,0.556059 -0.628985,0.847762 -0.145851,0.291703 -0.218777,0.656331 -0.218777,1.093885 v 0.38286 h -3.144921 V 20.72997 c 0,-0.601637 0.136736,-1.221505 0.410207,-1.859605 0.273471,-0.656332 0.756604,-1.285316 1.449399,-1.886953 0.346397,-0.309935 0.638099,-0.583406 0.875108,-0.820415 0.237009,-0.25524 0.428439,-0.492248 0.57429,-0.711025 0.145851,-0.237009 0.246124,-0.483133 0.300819,-0.738373 0.05469,-0.273471 0.08204,-0.57429 0.08204,-0.902456 0,-0.528711 -0.12762,-0.984497 -0.38286,-1.367357 -0.237009,-0.401091 -0.656331,-0.601637 -1.257968,-0.601637 -1.057423,0 -1.640829,0.692794 -1.750218,2.078383 h -3.06288 c 0.01823,-0.747489 0.145853,-1.431167 0.38286,-2.051036 0.237009,-0.6381 0.565175,-1.185043 0.984498,-1.640829 0.419323,-0.474017 0.920687,-0.8386455 1.504092,-1.0938855 0.601637,-0.25524 1.2762,-0.38286 2.023689,-0.38286 0.838646,0 1.567903,0.1367357 2.187771,0.4102072 0.619869,0.25524 1.130349,0.6198684 1.53144,1.0938853 0.401092,0.455786 0.692795,1.002729 0.875109,1.640829 0.200546,0.619869 0.300819,1.294432 0.30082,2.023689 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Monofonto;-inkscape-font-specification:Monofonto;fill:#f2f2f2;fill-opacity:1;stroke-width:3.4183929px" - id="path855" /></g><circle - style="fill:#f2f2f2;fill-opacity:1" - cx="-26.38899" - cy="25.466606" - r="1.8" - id="circle6-6" /></g></svg>
\ No newline at end of file diff --git a/application/resources/pe_light/scalable/instance-settings.svg b/application/resources/pe_light/scalable/instance-settings.svg deleted file mode 100644 index 83b92a52..00000000 --- a/application/resources/pe_light/scalable/instance-settings.svg +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect y="0" fill="none" width="32" height="32"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6 - v20C32,29.3,29.3,32,26,32z M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V6z"/> -<rect x="16" y="10" fill-rule="evenodd" clip-rule="evenodd" fill="#CCCCCC" width="8" height="2"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" d="M8,18h6v6H8V18z M10,22h2v-2h-2V22z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" d="M8,8h6v6H8V8z M10,12h2v-2h-2V12z"/> -<rect x="16" y="20" fill-rule="evenodd" clip-rule="evenodd" fill="#CCCCCC" width="8" height="2"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/jarmods.svg b/application/resources/pe_light/scalable/jarmods.svg deleted file mode 100644 index 9852c805..00000000 --- a/application/resources/pe_light/scalable/jarmods.svg +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6 - v20C32,29.3,29.3,32,26,32z"/> -<path fill="#4D4D4D" d="M16.5,0.6l2.2,4.5l5,0.7l-3.6,3.5l0.8,4.9l-4.4-2.3l-4.4,2.3l0.8-4.9L9.4,5.8l5-0.7L16.5,0.6z"/> -<g> - <g> - <path fill="#666666" d="M15.9,24.2c-2.9,0-5.3-0.8-5.5-1.8c-0.1-0.4,0.2-0.9,1.7-1.4l1.3-0.4l-1.2,0.7c-0.1,0.1-0.3,0.2-0.3,0.3 - c0,0,0.1,0.3,1.2,0.4c1.2,0.1,2.1,0.2,2.8,0.2c1.2,0,2.3-0.1,4.1-0.5l0.1,0l0,0c0,0,0.8,0.5,1.9,0.9l0.4,0.1l-0.3,0.1 - C19.7,24,17.4,24.2,15.9,24.2z"/> - </g> - <g> - <path fill="#666666" d="M15.3,20.4c-3.3,0-5.7-0.6-5.8-1.5c-0.1-0.5,0.6-1,1.9-1.5l0.8-0.3l-0.7,0.5c-0.1,0.1-0.4,0.4-0.4,0.6 - c0,0.1,0.2,0.3,1.1,0.4c1.3,0.1,2.3,0.2,3.2,0.2c1.7,0,3.4-0.2,5.7-0.6l0.1,0l0.1,0.1c0,0,0.5,0.5,1.3,0.8l0.5,0.2l-0.5,0.1 - C20.3,20,17.7,20.4,15.3,20.4z"/> - </g> - <g> - <path fill="#666666" d="M15.3,27.4C15.3,27.4,15.3,27.4,15.3,27.4c-3.1,0-6.3-0.3-9.4-0.8c-1.2-0.2-1.8-0.5-1.8-1 - c0.1-1,3.1-2,4.7-2c0.4,0,0.7,0.1,0.9,0.2l0.6,0.4l-0.7-0.1c0,0-0.4-0.1-1.1,0.1c-1.6,0.5-2,0.8-2,0.9c0,0,0,0.1,0.2,0.2 - c1.4,0.6,4.6,1,8.7,1c4.3,0,8.4-0.4,10.3-1c0.9-0.3,1.1-0.6,1.1-0.7c0-0.2-0.2-0.4-0.2-0.4l-0.9-0.8l1.1,0.5 - c0.7,0.3,0.8,0.7,0.7,0.9C27.4,26,22.4,27.4,15.3,27.4z"/> - </g> - <g> - <path fill="#666666" d="M13.6,16.7c-3,0-6.7-0.3-6.9-1.2c-0.1-0.4,0.5-0.7,0.7-0.8c2.5-1.1,4.6-1.2,5.2-1.2c0.1,0,0.1,0,0.1,0l1,0 - l-1,0.3c-1.8,0.4-3.4,1.1-3.4,1.4c0,0,0,0.2,1.2,0.4c0.8,0.1,1.9,0.1,3.1,0.1c1.6,0,3.4-0.1,5-0.2c2.5-0.2,5.1-0.7,5.1-0.7 - l1.3-0.2L23.9,15c0,0-0.9,0.4-1.5,0.8l0,0C20.1,16.4,16.9,16.7,13.6,16.7z"/> - </g> - <g> - <path fill="#666666" d="M23.5,20.3v-0.2c0-0.1,0-0.3,0.2-0.3c3.8-2,3.8-3.7,3.7-4.3c-0.2-0.9-1.1-1.4-1.9-1.4c-0.1,0-0.2,0-0.3,0 - c-0.5,0.1-0.7,0.2-0.7,0.2l-0.5,0.2l0.3-0.5c0,0,0.2-0.3,0.6-0.5c0.4-0.2,0.9-0.2,1.3-0.2c1.5,0,2.7,0.9,2.9,2.2 - c0.2,1.5-1.1,3.5-5.4,4.7L23.5,20.3z"/> - </g> - <g> - <path fill="#666666" d="M16.9,29c-1.2,0-2.4,0-3.5-0.1c-3.8-0.2-4.8-0.8-4.8-1v-0.2l0.2,0c1.8,0.3,4.2,0.5,6.8,0.5 - c3,0,5.9-0.3,8.4-0.7c4.4-0.9,4.9-1.9,4.9-1.9l0.3-0.8l-0.1,0.9c-0.1,1.2-1.5,2.1-4.1,2.6C22.9,28.7,20.1,29,16.9,29z"/> - </g> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/java.svg b/application/resources/pe_light/scalable/java.svg deleted file mode 100644 index 0584058a..00000000 --- a/application/resources/pe_light/scalable/java.svg +++ /dev/null @@ -1,49 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <path id="XMLID_2_" fill="#F2F2F2" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v20C32,29.3,29.3,32,26,32z" - /> -</g> -<path fill="none" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v20C32,29.3,29.3,32,26,32z"/> -<g> - <path fill="#4D4D4D" d="M16.7,15.6l1-0.8c0.1-0.1,1.9-1.6,0.4-3.4c-1.3-1.6-1.8-3.1-1.4-4.5c1.1-3.4,7.2-4.9,7.4-5l1-0.2l-0.9,0.5 - C20.7,4.3,19,5.8,18.8,7c-0.2,0.9,0.4,1.7,1.1,2.7l0.2,0.3c0.5,0.7,0.6,1.4,0.5,2.1C20.2,13.8,18,15,17.9,15L16.7,15.6z"/> -</g> -<g> - <g> - <path fill="#666666" d="M15.9,24.2c-2.9,0-5.3-0.8-5.5-1.8c-0.1-0.4,0.2-0.9,1.7-1.4l1.3-0.4l-1.2,0.7c-0.1,0.1-0.3,0.2-0.3,0.3 - c0,0,0.1,0.3,1.2,0.4c1.2,0.1,2.1,0.2,2.8,0.2c1.2,0,2.3-0.1,4.1-0.5l0.1,0l0,0c0,0,0.8,0.5,1.9,0.9l0.4,0.1l-0.3,0.1 - C19.7,24,17.4,24.2,15.9,24.2z"/> - </g> - <g> - <path fill="#666666" d="M15.3,20.4c-3.3,0-5.7-0.6-5.8-1.5c-0.1-0.5,0.6-1,1.9-1.5l0.8-0.3l-0.7,0.5c-0.1,0.1-0.4,0.4-0.4,0.6 - c0,0.1,0.2,0.3,1.1,0.4c1.3,0.1,2.3,0.2,3.2,0.2c1.7,0,3.4-0.2,5.7-0.6l0.1,0l0.1,0.1c0,0,0.5,0.5,1.3,0.8l0.5,0.2l-0.5,0.1 - C20.3,20,17.7,20.4,15.3,20.4z"/> - </g> - <g> - <path fill="#666666" d="M15.3,27.4C15.3,27.4,15.3,27.4,15.3,27.4c-3.1,0-6.3-0.3-9.4-0.8c-1.2-0.2-1.8-0.5-1.8-1 - c0.1-1,3.1-2,4.7-2c0.4,0,0.7,0.1,0.9,0.2l0.6,0.4l-0.7-0.1c0,0-0.4-0.1-1.1,0.1c-1.6,0.5-2,0.8-2,0.9c0,0,0,0.1,0.2,0.2 - c1.4,0.6,4.6,1,8.7,1c4.3,0,8.4-0.4,10.3-1c0.9-0.3,1.1-0.6,1.1-0.7c0-0.2-0.2-0.4-0.2-0.4l-0.9-0.8l1.1,0.5 - c0.7,0.3,0.8,0.7,0.7,0.9C27.4,26,22.4,27.4,15.3,27.4z"/> - </g> - <g> - <path fill="#666666" d="M13.6,16.7c-3,0-6.7-0.3-6.9-1.2c-0.1-0.4,0.5-0.7,0.7-0.8c2.5-1.1,4.6-1.2,5.2-1.2c0.1,0,0.1,0,0.1,0l1,0 - l-1,0.3c-1.8,0.4-3.4,1.1-3.4,1.4c0,0,0,0.2,1.2,0.4c0.8,0.1,1.9,0.1,3.1,0.1c1.6,0,3.4-0.1,5-0.2c2.5-0.2,5.1-0.7,5.1-0.7 - l1.3-0.2L23.9,15c0,0-0.9,0.4-1.5,0.8l0,0C20.1,16.4,16.9,16.7,13.6,16.7z"/> - </g> - <g> - <path fill="#666666" d="M23.5,20.3v-0.2c0-0.1,0-0.3,0.2-0.3c3.8-2,3.8-3.7,3.7-4.3c-0.2-0.9-1.1-1.4-1.9-1.4c-0.1,0-0.2,0-0.3,0 - c-0.5,0.1-0.7,0.2-0.7,0.2l-0.5,0.2l0.3-0.5c0,0,0.2-0.3,0.6-0.5c0.4-0.2,0.9-0.2,1.3-0.2c1.5,0,2.7,0.9,2.9,2.2 - c0.2,1.5-1.1,3.5-5.4,4.7L23.5,20.3z"/> - </g> - <g> - <path fill="#666666" d="M16.9,29c-1.2,0-2.4,0-3.5-0.1c-3.8-0.2-4.8-0.8-4.8-1v-0.2l0.2,0c1.8,0.3,4.2,0.5,6.8,0.5 - c3,0,5.9-0.3,8.4-0.7c4.4-0.9,4.9-1.9,4.9-1.9l0.3-0.8l-0.1,0.9c-0.1,1.2-1.5,2.1-4.1,2.6C22.9,28.7,20.1,29,16.9,29z"/> - </g> -</g> -<path fill="#4D4D4D" d="M16.8,4.2c1.8-1.4,3-2.8,3.7-4.2h-1.7c-0.8,1-1.9,1.8-2.9,2.7c-1.2,1-2.5,2-3.3,3.2c-1.6,2.6,1,5.2,4,8 - l0.5,0.5l-0.3-0.6c-0.3-0.7-0.7-1.3-1.2-1.9C14.2,9.6,12.7,7.4,16.8,4.2z"/> -</svg> diff --git a/application/resources/pe_light/scalable/language.svg b/application/resources/pe_light/scalable/language.svg deleted file mode 100644 index 57d5e3de..00000000 --- a/application/resources/pe_light/scalable/language.svg +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xml:space="preserve" - enable-background="new 0 0 32 32" - viewBox="0 0 32 32" - y="0px" - x="0px" - id="Calque_1" - version="1.1"><metadata - id="metadata43"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs41" /> -<path - id="path2" - d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 c1.1,0,2-0.9,2-2V6z" - fill="#4D4D4D" - clip-rule="evenodd" - fill-rule="evenodd" /> - -<path - id="path6" - d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6 v20C32,29.3,29.3,32,26,32z M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V6z" - fill="#F2F2F2" - clip-rule="evenodd" - fill-rule="evenodd" /> -<g - id="g8"> -</g> -<g - id="g10"> -</g> -<g - id="g12"> -</g> -<g - id="g14"> -</g> -<g - id="g16"> -</g> -<g - id="g18"> -</g> -<g - id="g20"> -</g> -<g - id="g22"> -</g> -<g - id="g24"> -</g> -<g - id="g26"> -</g> -<g - id="g28"> -</g> -<g - id="g30"> -</g> -<g - id="g32"> -</g> -<g - id="g34"> -</g> -<g - id="g36"> -</g> -<path - d="m 9.1897911,10.114301 c -0.48384,0 -0.901101,0.341924 -0.996278,0.815883 l -2.029452,10.155455 c -0.110057,0.55031 0.246085,1.083011 0.795381,1.193069 0.556201,0.113982 1.084021,-0.246085 1.193073,-0.79538 l 0.651882,-3.247122 h 2.8699319 l 0.647785,3.247122 c 0.110996,0.557485 0.658771,0.906193 1.197171,0.79538 0.549363,-0.110056 0.905437,-0.642759 0.795381,-1.193069 L 12.285213,10.930184 c -0.09517,-0.473959 -0.512431,-0.815883 -0.996274,-0.815883 z m 0.614982,2.287746 h 0.4345929 l 0.811779,4.063002 H 8.9929941 Z M 20.710512,9.7002137 c -0.561209,0 -1.016777,0.4578063 -1.016777,1.0208743 v 1.016774 h -3.046227 c -0.561205,0 -1.012673,0.457809 -1.012673,1.020876 0,0.563065 0.451466,1.016776 1.012673,1.016776 h 0.274696 c 0.577658,1.85973 1.425829,3.313572 2.37794,4.460692 -0.745862,0.684158 -1.478369,1.245052 -2.271343,1.873654 -0.437271,0.35118 -0.506831,0.995228 -0.155795,1.434967 0.349411,0.439057 0.990377,0.507857 1.426766,0.155794 0.861615,-0.682321 1.601995,-1.252055 2.410742,-1.996652 0.808748,0.744597 1.618828,1.314331 2.480441,1.996652 0.436393,0.352059 1.077353,0.283261 1.426766,-0.155794 0.351038,-0.439739 0.277375,-1.083787 -0.159884,-1.434967 -0.792979,-0.628602 -1.591082,-1.189496 -2.336946,-1.873654 0.952113,-1.147188 1.869915,-2.601029 2.447642,-4.460692 h 0.270592 c 0.561209,0 1.016774,-0.453711 1.016774,-1.016776 0,-0.563067 -0.455565,-1.020876 -1.016774,-1.020876 h -3.111838 v -1.016774 c 0,-0.563068 -0.455567,-1.0208743 -1.016775,-1.0208743 z m -1.668658,4.0753003 h 3.402916 c -0.438423,1.181552 -1.08891,2.13806 -1.734258,2.951929 -0.645345,-0.813869 -1.230238,-1.770309 -1.668658,-2.951929 z" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6.29744864;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" - id="rect977" /></svg>
\ No newline at end of file diff --git a/application/resources/pe_light/scalable/loadermods.svg b/application/resources/pe_light/scalable/loadermods.svg deleted file mode 100644 index 913c1968..00000000 --- a/application/resources/pe_light/scalable/loadermods.svg +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#4D4D4D" d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V6z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" d="M16,6.4l2.9,6l6.6,1l-4.8,4.6l1.1,6.5L16,21.4l-5.9,3.1l1.1-6.5 - l-4.8-4.6l6.6-1L16,6.4z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6 - v20C32,29.3,29.3,32,26,32z M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V6z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/log.svg b/application/resources/pe_light/scalable/log.svg deleted file mode 100644 index 82282ca4..00000000 --- a/application/resources/pe_light/scalable/log.svg +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M30,28c-3.1,0.1-8.9,0.7-12.1,2.3C17.8,31.3,17,32,16,32 - c-1,0-1.8-0.7-1.9-1.7c-3.2-1.6-9-2.2-12.1-2.3c-1.1,0-2-0.9-2-2V2c0-1.1,0.9-2,2-2c0.1,0,0.1,0,0.2,0C16,0.4,16,4,16,4 - s0-3.6,13.8-4c0.1,0,0.1,0,0.2,0c1.1,0,2,0.9,2,2v24C32,27.1,31.1,28,30,28z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#4D4D4D" d="M14,6.3C11.4,5,7.2,4.4,4,4.2v19.9c5.4,0.3,8.4,1.1,10,1.9V6.3z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#4D4D4D" d="M28,4.2C24.8,4.4,20.6,5,18,6.3V26c1.6-0.8,4.6-1.6,10-1.9V4.2z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/minecraft.svg b/application/resources/pe_light/scalable/minecraft.svg deleted file mode 100644 index d772111f..00000000 --- a/application/resources/pe_light/scalable/minecraft.svg +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill-rule="evenodd" clip-rule="evenodd" fill="none" width="32" height="32"/> -<g> - <polygon fill-rule="evenodd" clip-rule="evenodd" fill="#999999" points="16,14.2 30,7.1 30,24.9 16,32 "/> - <polygon fill-rule="evenodd" clip-rule="evenodd" fill="#CCCCCC" points="16,14.2 2,7.1 2,24.9 16,32 "/> - <g> - <polygon fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" points="2,7.1 16,14.2 30,7.1 16,0 "/> - </g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/multimc.svg b/application/resources/pe_light/scalable/multimc.svg deleted file mode 100644 index 8b2cb631..00000000 --- a/application/resources/pe_light/scalable/multimc.svg +++ /dev/null @@ -1,61 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill="#999999" width="32" height="32"/> -<polygon fill="#F2F2F2" points="0,5 1,5 1,4 4,4 4,5 8,5 8,8 9,8 9,2 12,2 12,5 13,5 13,4 16,4 16,8 17,8 17,6 18,6 18,5 20,5 20,8 - 21,8 21,6 22,6 22,5 24,5 24,4 26,4 26,5 29,5 29,4 32,4 32,0 0,0 "/> -<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="2.8" y1="17.35" x2="30.7" y2="17.35"> - <stop offset="0" style="stop-color:#000000;stop-opacity:0.8"/> - <stop offset="1" style="stop-color:#000000;stop-opacity:0.35"/> -</linearGradient> -<path fill="url(#SVGID_1_)" d="M18.5,21.5c-0.5-0.4-1-1-1.8-1.9c-1,1.2-1.9,2.1-2.8,2.7c-1.1,0.7-2.5,1-4.1,1c-2,0-3.6-0.5-4.9-1.6 - c-1.4-1.1-2.1-2.6-2.1-4.4c0-1.7,0.7-3.2,2.1-4.4c1.2-1,2.9-1.6,5-1.6c1.1,0,2,0.2,2.8,0.5c0.9,0.3,1.7,0.8,2.3,1.4 - c0.6,0.5,1.2,1.2,1.8,1.9c1-1.2,1.9-2.1,2.8-2.7c1.1-0.7,2.5-1,4.1-1c2,0,3.6,0.5,4.9,1.6c1.4,1.1,2.1,2.6,2.1,4.4 - c0,1.7-0.7,3.2-2.1,4.4c-1.2,1-2.9,1.6-5,1.6c-1.1,0-2-0.2-2.8-0.5S19.2,22.1,18.5,21.5 M9.6,21.3c2.4,0,4.3-1.2,5.8-3.7 - c-1.9-2.7-3.8-4.1-5.8-4.1c-1.5,0-2.6,0.4-3.3,1.1c-0.8,0.8-1.2,1.7-1.2,2.8c0,1.2,0.4,2.1,1.2,2.8C7.1,20.9,8.2,21.3,9.6,21.3 - M23.9,13.5c-2.2,0-4.1,1.2-5.8,3.7c1.8,2.7,3.8,4.1,5.8,4.1c1.5,0,2.6-0.4,3.3-1.1c0.8-0.8,1.2-1.7,1.2-2.8c0-1.2-0.4-2.1-1.2-2.8 - C26.3,13.8,25.2,13.5,23.9,13.5"/> -<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-964.0289" y1="48.0195" x2="-962.7877" y2="48.9627" gradientTransform="matrix(20.79 0 0 14.7315 20047.7695 -696.964)"> - <stop offset="0" style="stop-color:#CCCCCC"/> - <stop offset="1" style="stop-color:#F2F2F2;stop-opacity:0.6"/> -</linearGradient> -<path fill="url(#SVGID_2_)" d="M17.6,20.1c-0.5-0.4-1-1-1.8-1.9c-1,1.2-1.9,2.1-2.8,2.7c-1.1,0.7-2.5,1-4.1,1c-2,0-3.6-0.5-4.9-1.6 - c-1.4-1.1-2.1-2.6-2.1-4.4c0-1.7,0.7-3.2,2.1-4.4c1.2-1,2.9-1.6,5-1.6c1.1,0,2,0.2,2.8,0.5c0.9,0.3,1.7,0.8,2.3,1.4 - c0.6,0.5,1.2,1.2,1.8,1.9c1-1.2,1.9-2.1,2.8-2.7c1.1-0.7,2.5-1,4.1-1c2,0,3.6,0.5,4.9,1.6c1.4,1.1,2.1,2.6,2.1,4.4 - c0,1.7-0.7,3.2-2.1,4.4c-1.2,1-2.9,1.6-5,1.6c-1.1,0-2-0.2-2.8-0.5C19.2,21.2,18.4,20.8,17.6,20.1 M8.7,19.9c2.4,0,4.3-1.2,5.8-3.7 - c-1.9-2.7-3.8-4.1-5.8-4.1c-1.5,0-2.6,0.4-3.3,1.1C4.6,14,4.2,14.9,4.2,16c0,1.2,0.4,2.1,1.2,2.8C6.2,19.5,7.3,19.9,8.7,19.9 - M23,12.1c-2.2,0-4.1,1.2-5.8,3.7c1.8,2.7,3.8,4.1,5.8,4.1c1.5,0,2.6-0.4,3.3-1.1c0.8-0.8,1.2-1.7,1.2-2.8c0-1.2-0.4-2.1-1.2-2.8 - C25.5,12.5,24.4,12.1,23,12.1"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/new.svg b/application/resources/pe_light/scalable/new.svg deleted file mode 100644 index 96fd1f5b..00000000 --- a/application/resources/pe_light/scalable/new.svg +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill="none" width="32" height="32"/> -<path fill="#F2F2F2" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v20C32,29.3,29.3,32,26,32z M6,2 - C4.9,2,4,2.9,4,4s0.9,2,2,2s2-0.9,2-2S7.1,2,6,2z M28,8H4v18c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V8z"/> -<path fill="#CCCCCC" d="M20,20h-2v2c0,1.1-0.9,2-2,2s-2-0.9-2-2v-2h-2c-1.1,0-2-0.9-2-2s0.9-2,2-2h2v-2c0-1.1,0.9-2,2-2s2,0.9,2,2v2 - h2c1.1,0,2,0.9,2,2S21.1,20,20,20z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/news.svg b/application/resources/pe_light/scalable/news.svg deleted file mode 100644 index 6f184afc..00000000 --- a/application/resources/pe_light/scalable/news.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <g> - <path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M26,0H6C2.7,0,0,2.7,0,6v14c0,3.3,2.7,6,6,6l4,6l4-6h12 - c3.3,0,6-2.7,6-6V6C32,2.7,29.3,0,26,0z M16,20H6v-2h10V20z M26,16H6v-2h20V16z M26,12H6v-2h20V12z M26,8H6V6h20V8z"/> - </g> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/notes.svg b/application/resources/pe_light/scalable/notes.svg deleted file mode 100644 index 02dc11ec..00000000 --- a/application/resources/pe_light/scalable/notes.svg +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6 - v20C32,29.3,29.3,32,26,32z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#4D4D4D" d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V6z"/> -<g> - <rect x="8" y="16" fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" width="16" height="2"/> - <rect x="8" y="12" fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" width="16" height="2"/> - <rect x="8" y="8" fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" width="16" height="2"/> - <rect x="8" y="20" fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" width="8" height="2"/> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/patreon.svg b/application/resources/pe_light/scalable/patreon.svg deleted file mode 100644 index 0bd08826..00000000 --- a/application/resources/pe_light/scalable/patreon.svg +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill="none" width="32" height="32"/> -<path fill="#F2F2F2" d="M16,0C7.2,0,0,7.2,0,16v16h15.3c0.2,0,0.4,0,0.7,0c8.8,0,16-7.2,16-16S24.8,0,16,0L16,0z"/> -<path d="M16,3.7C9.2,3.7,3.7,9.2,3.7,16v7.3v5V32h4.9V16c0-4.1,3.3-7.3,7.3-7.3s7.3,3.3,7.3,7.3c0,4.1-3.3,7.3-7.3,7.3 - c-1.5,0-2.9-0.4-4-1.2v5.3c0.8,0.5,2.5,0.8,4.6,0.8C23.1,28,28.3,22.6,28.3,16C28.3,9.2,22.8,3.7,16,3.7L16,3.7z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/proxy.svg b/application/resources/pe_light/scalable/proxy.svg deleted file mode 100644 index 9de8d6d1..00000000 --- a/application/resources/pe_light/scalable/proxy.svg +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M21.9,4H11.6c-0.8-2.3-3-4-5.6-4C2.7,0,0,2.7,0,6s2.7,6,6,6 - c2.6,0,4.8-1.7,5.6-4h10.3c1.1,0,2,0.9,2,2v1.4h4V10C27.9,6.7,25.2,4,21.9,4z M6,8C4.9,8,4,7.1,4,6s0.9-2,2-2c1.1,0,2,0.9,2,2 - S7.1,8,6,8z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M23.9,20.6V22c0,1.1-0.9,2-2,2H11.6c-0.8-2.3-3-4-5.6-4 - c-3.3,0-6,2.7-6,6s2.7,6,6,6c2.6,0,4.8-1.7,5.6-4h10.3c3.3,0,6-2.7,6-6v-1.4H23.9z M6,28c-1.1,0-2-0.9-2-2s0.9-2,2-2 - c1.1,0,2,0.9,2,2S7.1,28,6,28z"/> -<g> - <path fill-rule="evenodd" clip-rule="evenodd" fill="#999999" d="M32,22H20V10h12V22z M28,14h-4v4h4V14z"/> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/quickmods.svg b/application/resources/pe_light/scalable/quickmods.svg deleted file mode 100644 index 6dbeab52..00000000 --- a/application/resources/pe_light/scalable/quickmods.svg +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#4D4D4D" d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V6z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6 - v20C32,29.3,29.3,32,26,32z M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V6z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" d="M10.6,24.2c-0.3,0-0.6-0.1-0.8-0.2C9.3,23.7,9,23.2,9,22.6V9.8 - c0-0.6,0.3-1.1,0.8-1.4c0.3-0.2,0.5-0.2,0.8-0.2c0.2,0,0.5,0.1,0.7,0.2l12.8,6.4c0.5,0.3,0.9,0.8,0.9,1.4c0,0.6-0.3,1.2-0.9,1.4 - L11.3,24C11.1,24.1,10.8,24.2,10.6,24.2z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/refresh.svg b/application/resources/pe_light/scalable/refresh.svg deleted file mode 100644 index 9a724d91..00000000 --- a/application/resources/pe_light/scalable/refresh.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill="none" width="32" height="32"/> -<path fill="#F2F2F2" d="M31.8,17.4c-0.4-0.9-1.2-1.4-2.1-1.4h-2.3c0-7.6-6.1-13.7-13.7-13.7C6.1,2.3,0,8.4,0,16 - c0,7.6,6.1,13.7,13.7,13.7c2.5,0,4.8-0.7,6.8-1.8l-3.4-3.4c-1,0.4-2.2,0.7-3.4,0.7c-5,0-9.1-4.1-9.1-9.1s4.1-9.1,9.1-9.1 - c5.1,0,9.1,4.1,9.1,9.1h-2.3c-0.9,0-1.8,0.6-2.1,1.4c-0.4,0.9-0.2,1.8,0.5,2.5l4.6,4.6c0.4,0.4,1,0.7,1.6,0.7c0.6,0,1.2-0.2,1.6-0.7 - l4.6-4.6C32,19.2,32.2,18.3,31.8,17.4z"/> -</svg> diff --git a/application/resources/pe_light/scalable/resourcepacks.svg b/application/resources/pe_light/scalable/resourcepacks.svg deleted file mode 100644 index 7d6323f2..00000000 --- a/application/resources/pe_light/scalable/resourcepacks.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#4D4D4D" d="M28,10c0-1.1-0.9-2-2-2H6c-1.1,0-2,0.9-2,2v16c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V10z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M26,4h-4V2c0-1.1-0.9-2-2-2h-8c-1.1,0-2,0.9-2,2v2H6 - c-3.3,0-6,2.7-6,6v16c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V10C32,6.7,29.3,4,26,4z M12,3c0-0.6,0.4-1,1-1h6c0.6,0,1,0.4,1,1v1h-8V3z - M6,8h20c1.1,0,2,0.9,2,2v4H4v-4C4,8.9,4.9,8,6,8z M18,17c0,1.1-0.9,2-2,2s-2-0.9-2-2c0-0.4,0.1-0.7,0.3-1h3.4 - C17.9,16.3,18,16.6,18,17z M26,28H6c-1.1,0-2-0.9-2-2V16h8.1c-0.1,0.3-0.1,0.7-0.1,1c0,2.2,1.8,4,4,4s4-1.8,4-4c0-0.3-0.1-0.7-0.1-1 - H28v10C28,27.1,27.1,28,26,28z"/> -</svg> diff --git a/application/resources/pe_light/scalable/screenshots.svg b/application/resources/pe_light/scalable/screenshots.svg deleted file mode 100644 index f2887be6..00000000 --- a/application/resources/pe_light/scalable/screenshots.svg +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6 - v20C32,29.3,29.3,32,26,32z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#4D4D4D" d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 - c1.1,0,2-0.9,2-2V6z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" d="M24,26H8c-1.1,0-2-0.9-2-2v-0.7c0.8-1.7,1.5-3.8,2-4.8 - c1.1-2.4,3.5,3.5,4.9,3.5c2.8,0,6.2-10.7,9.1-7.4c1.4,1.6,2.9,5.8,4,8.4V24C26,25.1,25.1,26,24,26z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#CCCCCC" d="M9,6c1.7,0,3,1.3,3,3c0,1.7-1.3,3-3,3c-1.7,0-3-1.3-3-3 - C6,7.3,7.3,6,9,6z"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/settings.svg b/application/resources/pe_light/scalable/settings.svg deleted file mode 100644 index 83b92a52..00000000 --- a/application/resources/pe_light/scalable/settings.svg +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect y="0" fill="none" width="32" height="32"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6 - v20C32,29.3,29.3,32,26,32z M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V6z"/> -<rect x="16" y="10" fill-rule="evenodd" clip-rule="evenodd" fill="#CCCCCC" width="8" height="2"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" d="M8,18h6v6H8V18z M10,22h2v-2h-2V22z"/> -<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" d="M8,8h6v6H8V8z M10,12h2v-2h-2V12z"/> -<rect x="16" y="20" fill-rule="evenodd" clip-rule="evenodd" fill="#CCCCCC" width="8" height="2"/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/status-bad.svg b/application/resources/pe_light/scalable/status-bad.svg deleted file mode 100644 index 2c24970c..00000000 --- a/application/resources/pe_light/scalable/status-bad.svg +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="#F2F2F2" d="M26,32H6c-3.4,0-6-2.6-6-6V6c0-3.4,2.6-6,6-6h20c3.4,0,6,2.6,6,6v20C32,29.4,29.4,32,26,32z"/> -<path fill="#4D4D4D" d="M21.6,21.6c-0.8,0.8-2,0.8-2.8,0L16,18.8l-2.8,2.8c-0.8,0.8-2,0.8-2.8,0c-0.8-0.8-0.8-2,0-2.8l2.8-2.8 - l-2.8-2.8c-0.8-0.8-0.8-2,0-2.8c0.8-0.8,2-0.8,2.8,0l2.8,2.8l2.8-2.8c0.8-0.8,2-0.8,2.8,0s0.8,2,0,2.8L18.8,16l2.8,2.8 - C22.4,19.6,22.4,20.8,21.6,21.6z"/> -</svg> diff --git a/application/resources/pe_light/scalable/status-good.svg b/application/resources/pe_light/scalable/status-good.svg deleted file mode 100644 index bf9a4174..00000000 --- a/application/resources/pe_light/scalable/status-good.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<path fill="none" d="M26,0H6C2.6,0,0,2.6,0,6v20c0,3.4,2.6,6,6,6h20c3.4,0,6-2.6,6-6V6C32,2.6,29.4,0,26,0z"/> -<path fill="none" d="M21,10.4l-7,7l-2.8-2.8c-0.8-0.8-2-0.8-2.8,0s-0.8,2,0,2.8l4.2,4.2c0.8,0.8,2,0.8,2.8,0l8.4-8.4 - c0.8-0.8,0.8-2,0-2.8S21.8,9.6,21,10.4z"/> -<path fill="#F2F2F2" d="M26,0H6C2.6,0,0,2.6,0,6v20c0,3.4,2.6,6,6,6h20c3.4,0,6-2.6,6-6V6C32,2.6,29.4,0,26,0z"/> -<path fill="#4D4D4D" d="M21,10.4l-7,7l-2.8-2.8c-0.8-0.8-2-0.8-2.8,0s-0.8,2,0,2.8l4.2,4.2c0.8,0.8,2,0.8,2.8,0l8.4-8.4 - c0.8-0.8,0.8-2,0-2.8S21.8,9.6,21,10.4z"/> -</svg> diff --git a/application/resources/pe_light/scalable/status-yellow.svg b/application/resources/pe_light/scalable/status-yellow.svg deleted file mode 100644 index f7d2236b..00000000 --- a/application/resources/pe_light/scalable/status-yellow.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<g> - <path fill="#E3A333" d="M26,0H6C2.7,0,0,2.7,0,6v20c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V6C32,2.7,29.3,0,26,0z M28,26 - c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2V26z"/> -</g> -<path fill="#F2F2F2" d="M26,0H6C2.7,0,0,2.7,0,6v20c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V6C32,2.7,29.3,0,26,0z"/> -<path fill="#F2F2F2" d="M28,26c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2V26z"/> -<g> - <path fill="#4D4D4D" d="M6,20c0-5.8,2.4-7.9,5.8-7.9c2,0,3.4,0.7,5.3,1.9c1.6,1,2.5,1.5,3.3,1.5c0.7,0,1.2-0.7,1.3-3.1H26 - c0.2,6.1-2.3,8-5.5,8c-2,0-3.5-0.8-5.3-1.9c-1.7-1-2.6-1.6-3.3-1.6c-0.8,0-1.4,0.5-1.6,3.2H6z"/> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/viewfolder.svg b/application/resources/pe_light/scalable/viewfolder.svg deleted file mode 100644 index b36343fe..00000000 --- a/application/resources/pe_light/scalable/viewfolder.svg +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"> -<rect fill="none" width="32" height="32"/> -<path fill="#F2F2F2" d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h8c2.6,0,4.8,1.7,5.6,4H26c3.3,0,6,2.7,6,6v16 - C32,29.3,29.3,32,26,32z M28,10c0-1.1-0.9-2-2-2H16V6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V10z - "/> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> diff --git a/application/resources/pe_light/scalable/worlds.svg b/application/resources/pe_light/scalable/worlds.svg deleted file mode 100644 index bf4c21a3..00000000 --- a/application/resources/pe_light/scalable/worlds.svg +++ /dev/null @@ -1,64 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xml:space="preserve" - enable-background="new 0 0 32 32" - viewBox="0 0 32 32" - y="0px" - x="0px" - id="Calque_1" - version="1.1"><metadata - id="metadata45"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs43" /><path - id="path2" - d="M26,32H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6 v20C32,29.3,29.3,32,26,32z" - fill="#F2F2F2" - clip-rule="evenodd" - fill-rule="evenodd" /><path - id="path4" - d="M28,6c0-1.1-0.9-2-2-2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20 c1.1,0,2-0.9,2-2V6z" - fill="#4D4D4D" - clip-rule="evenodd" - fill-rule="evenodd" /><g - id="g10" /><g - id="g12" /><g - id="g14" /><g - id="g16" /><g - id="g18" /><g - id="g20" /><g - id="g22" /><g - id="g24" /><g - id="g26" /><g - id="g28" /><g - id="g30" /><g - id="g32" /><g - id="g34" /><g - id="g36" /><g - id="g38" /><g - style="stroke:#ffffff;stroke-opacity:1" - transform="rotate(29.970903,16,16)" - id="g881"><ellipse - ry="8.9473686" - rx="8.9473696" - cy="16" - cx="16" - id="path845" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /><ellipse - ry="8.9473686" - rx="3.4915254" - cy="15.947369" - cx="16" - id="path845-3" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /><path - style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="M 8.1848294,12.430327 C 12.570183,14.790801 20.250652,13.785896 22.94338,12" - id="path870" /><path - id="path872" - d="M 8.2166335,20.492522 C 12.601987,18.132048 21.148735,17.776739 23.841463,19.562635" - style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /></g></svg>
\ No newline at end of file diff --git a/application/resources/sources/clucker.svg b/application/resources/sources/clucker.svg deleted file mode 100644 index 0c1727eb..00000000 --- a/application/resources/sources/clucker.svg +++ /dev/null @@ -1,404 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="32" - height="32" - id="svg2" - version="1.1" - inkscape:version="0.48.4 r9939" - sodipodi:docname="clucker.svg" - inkscape:export-filename="/home/peterix/projects/MultiMC4/src/resources/insticons/chicken128.png" - inkscape:export-xdpi="360" - inkscape:export-ydpi="360"> - <defs - id="defs4"> - <linearGradient - id="linearGradient4008"> - <stop - id="stop4010" - offset="0" - style="stop-color:#4a0000;stop-opacity:1;" /> - <stop - id="stop4012" - offset="1" - style="stop-color:#360000;stop-opacity:1" /> - </linearGradient> - <linearGradient - id="linearGradient3945"> - <stop - id="stop3947" - offset="0" - style="stop-color:#4e300d;stop-opacity:1;" /> - <stop - id="stop3949" - offset="1" - style="stop-color:#604000;stop-opacity:1;" /> - </linearGradient> - <linearGradient - id="linearGradient3939"> - <stop - id="stop3941" - offset="0" - style="stop-color:#5b2400;stop-opacity:1;" /> - <stop - id="stop3943" - offset="1" - style="stop-color:#8d3800;stop-opacity:1" /> - </linearGradient> - <linearGradient - id="linearGradient3838"> - <stop - style="stop-color:#af6c1d;stop-opacity:1;" - offset="0" - id="stop3840" /> - <stop - style="stop-color:#604000;stop-opacity:1;" - offset="1" - id="stop3842" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - id="linearGradient3830"> - <stop - style="stop-color:#ff7f2a;stop-opacity:1;" - offset="0" - id="stop3832" /> - <stop - style="stop-color:#8d3800;stop-opacity:1" - offset="1" - id="stop3834" /> - </linearGradient> - <linearGradient - id="linearGradient3820"> - <stop - style="stop-color:#ff0000;stop-opacity:1;" - offset="0" - id="stop3822" /> - <stop - style="stop-color:#360000;stop-opacity:1" - offset="1" - id="stop3824" /> - </linearGradient> - <filter - inkscape:collect="always" - id="filter3816" - x="-0.22469135" - width="1.4493827" - y="-0.16851852" - height="1.337037"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.6851852" - id="feGaussianBlur3818" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3820" - id="linearGradient3828" - x1="12.904698" - y1="1043.2582" - x2="19.445436" - y2="1052.4506" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-1,5.2165626e-5)" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3820" - id="linearGradient3909" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1,0,0,0.125,-2,911.19195)" - x1="12.904698" - y1="1043.2582" - x2="19.445436" - y2="1052.4506" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3820" - id="linearGradient3911" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-2,1.0000522)" - x1="12.904698" - y1="1043.2582" - x2="19.445436" - y2="1052.4506" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4008" - id="linearGradient3915" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.125,0,0,1,16.5,1.0000522)" - x1="12.904698" - y1="1043.2582" - x2="19.445436" - y2="1052.4506" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3820" - id="linearGradient4032" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-25,-2.9999652)" - x1="12.904698" - y1="1043.2582" - x2="19.445436" - y2="1052.4506" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4008" - id="linearGradient4034" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.125,0,0,1,-6.5,-2.9999652)" - x1="12.904698" - y1="1043.2582" - x2="19.445436" - y2="1052.4506" /> - <filter - inkscape:collect="always" - id="filter4053" - x="-0.12098765" - width="1.2419753" - y="-0.090740741" - height="1.1814815"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.058642" - id="feGaussianBlur4055" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3830" - id="linearGradient3840" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1,0,0,0.70710371,1032.3713,730.70724)" - x1="13.258252" - y1="1033.889" - x2="17.500893" - y2="1041.7556" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3830" - id="linearGradient3846" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-4,3.0000194)" - x1="13.258252" - y1="1033.889" - x2="17.500893" - y2="1041.7556" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3838" - id="linearGradient3849" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-4,3.0000194)" - x1="14.142136" - y1="1038.0433" - x2="18.119612" - y2="1047.1473" /> - <filter - inkscape:collect="always" - id="filter3879"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.42040957" - id="feGaussianBlur3881" /> - </filter> - <filter - inkscape:collect="always" - id="filter3850"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.04" - id="feGaussianBlur3852" /> - </filter> - <filter - inkscape:collect="always" - id="filter3854"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.04" - id="feGaussianBlur3856" /> - </filter> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="11.313708" - inkscape:cx="2.6058272" - inkscape:cy="11.408405" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:window-width="1614" - inkscape:window-height="1030" - inkscape:window-x="1676" - inkscape:window-y="-3" - inkscape:window-maximized="1"> - <inkscape:grid - type="xygrid" - id="grid2985" - empspacing="4" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-1020.3622)"> - <path - style="opacity:0.87866109;fill:#070707;fill-opacity:1;stroke:none;filter:url(#filter4053)" - d="m 10,1023.3622 -3,3 0,20 4,0 0,5 8,0 1,-1 0,-4 5,0 3,-3 0,-20 -18,0 z" - id="path4022" - inkscape:connector-curvature="0" /> - <path - inkscape:connector-curvature="0" - id="path3806" - d="m 6.1703915,1025.53 0,4 0,16 5.0000005,0 0,4 8,0 0,-4 5,0 0,-16 0,-4 -18.0000005,0 z" - style="opacity:0.75313804;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter3816)" /> - <path - sodipodi:nodetypes="cccccc" - inkscape:connector-curvature="0" - id="path3861" - d="m 23,1025.3622 4,-3 0,20 -3,3 -1,-1 z" - style="fill:#6c6c6c;fill-opacity:1;stroke:none" /> - <path - style="fill:#e2e2e2;fill-opacity:1;stroke:none" - d="m 6,1025.3622 3,-3 18,0 -3,3 0,20 -18,0 z" - id="rect3858" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccc" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none" - id="rect3759" - width="4" - height="4" - x="7" - y="1029.3622" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none" - id="rect3761" - width="4" - height="4" - x="19" - y="1029.3622" /> - <rect - style="fill:url(#linearGradient3828);fill-opacity:1;stroke:none" - id="rect3769" - width="8" - height="8" - x="11" - y="1041.3622" /> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:none;filter:url(#filter3854)" - id="rect3773" - width="1" - height="1" - x="9" - y="1030.3622" /> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:none;filter:url(#filter3850)" - id="rect3775" - width="1" - height="1" - x="21" - y="1030.3622" /> - <path - style="fill:url(#linearGradient3911);fill-opacity:1;stroke:none" - d="m 10,1042.3622 8,0 0,8 -8,0 z" - id="rect3902" - inkscape:connector-curvature="0" /> - <path - id="path3907" - d="m 11,1041.3622 8,0 -1,1 -8,0 z" - style="fill:url(#linearGradient3909);fill-opacity:1;stroke:none" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - <path - inkscape:connector-curvature="0" - id="path3913" - d="m 18,1042.3622 1,-1 0,8 -1,1 z" - style="fill:url(#linearGradient3915);fill-opacity:1;stroke:none" - sodipodi:nodetypes="ccccc" /> - <path - style="fill:#ffffff;fill-opacity:1;stroke:none" - d="m 9,1022.3622 18,0 -3,3 -18,0 z" - id="rect4019" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - <path - style="fill:url(#linearGradient3846);fill-opacity:1;stroke:none" - d="m 3.9999995,1036.3622 3.0000005,-3 16,0 0,8 -3,3 -16,0 z" - id="rect3815" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccc" /> - <rect - style="fill:#b34f0e;fill-opacity:1;stroke:none;opacity:1" - id="rect3851" - width="4.2426286" - height="4.0000043" - x="28.284193" - y="1056.3621" - transform="matrix(0.70710873,-0.70710483,0,1,0,0)" /> - <rect - style="fill:#8d5910;fill-opacity:1;stroke:none;opacity:1" - id="rect3855" - width="4.2426286" - height="4" - x="28.284189" - y="1060.3621" - transform="matrix(0.70710883,-0.70710473,0,1,0,0)" /> - <path - inkscape:connector-curvature="0" - id="rect3970" - d="m 20,1036.3622 c 0,1 0,6 0,7 -3,0 -11.0351165,-0.059 -15.5,0.7502 l 1.230393,1.1835 15.5625,-0.094 2.707107,-2.8397 0,-4 0,-4 -1,-1 z" - style="opacity:0.63598326;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter3879)" - sodipodi:nodetypes="cccccccccc" /> - <rect - y="1040.3622" - x="3.9999995" - height="4" - width="16" - id="rect3917" - style="fill:url(#linearGradient3849);fill-opacity:1;stroke:none" /> - <rect - y="1036.3622" - x="3.9999995" - height="4" - width="16" - id="rect3923" - style="fill:url(#linearGradient3846);fill-opacity:1;stroke:none" /> - <rect - style="fill:url(#linearGradient3840);fill-opacity:1;stroke:none" - id="rect3931" - width="16.000004" - height="4.242579" - x="1040.3712" - y="1461.4012" - transform="matrix(1,0,-0.70710986,0.7071037,0,0)" /> - </g> -</svg> diff --git a/application/resources/sources/creeper.svg b/application/resources/sources/creeper.svg deleted file mode 100644 index 2a2e39b6..00000000 --- a/application/resources/sources/creeper.svg +++ /dev/null @@ -1,775 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="32" - height="32" - id="svg2" - version="1.1" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="creeper.svg"> - <defs - id="defs4"> - <linearGradient - id="linearGradient3917"> - <stop - id="stop3919" - offset="0" - style="stop-color:#115008;stop-opacity:1;" /> - <stop - style="stop-color:#39c228;stop-opacity:1;" - offset="0.49999952" - id="stop3921" /> - <stop - id="stop3923" - offset="1" - style="stop-color:#c7f7c2;stop-opacity:1;" /> - </linearGradient> - <linearGradient - id="linearGradient3892"> - <stop - style="stop-color:#1a1a1a;stop-opacity:1;" - offset="0" - id="stop3894" /> - <stop - style="stop-color:#1a1a1a;stop-opacity:0;" - offset="1" - id="stop3896" /> - </linearGradient> - <linearGradient - id="linearGradient3871"> - <stop - style="stop-color:#115008;stop-opacity:1;" - offset="0" - id="stop3873" /> - <stop - id="stop3900" - offset="0.5" - style="stop-color:#39c228;stop-opacity:1;" /> - <stop - style="stop-color:#c7f7c2;stop-opacity:1;" - offset="1" - id="stop3875" /> - </linearGradient> - <filter - inkscape:collect="always" - id="filter3867"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.792" - id="feGaussianBlur3869" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3892" - id="linearGradient3898" - x1="16" - y1="31" - x2="16" - y2="26" - gradientUnits="userSpaceOnUse" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3871" - id="linearGradient5605" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(0,1020.3622)" - x1="27" - y1="26" - x2="5" - y2="3" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3871-3" - id="linearGradient5605-2" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(0,1020.3622)" - x1="27" - y1="26" - x2="5" - y2="3" /> - <linearGradient - id="linearGradient3871-3"> - <stop - style="stop-color:#115008;stop-opacity:1;" - offset="0" - id="stop3873-5" /> - <stop - id="stop3900-7" - offset="0.5" - style="stop-color:#39c228;stop-opacity:1;" /> - <stop - style="stop-color:#c7f7c2;stop-opacity:1;" - offset="1" - id="stop3875-9" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3917" - id="linearGradient3147" - x1="31" - y1="1052.3622" - x2="4" - y2="1024.3622" - gradientUnits="userSpaceOnUse" - spreadMethod="reflect" /> - <filter - color-interpolation-filters="sRGB" - inkscape:collect="always" - id="filter4028" - x="-0.14708571" - width="1.2941715" - y="-0.25740001" - height="1.5148"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.429" - id="feGaussianBlur4030" /> - </filter> - <filter - color-interpolation-filters="sRGB" - inkscape:collect="always" - id="filter4056"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.676" - id="feGaussianBlur4058" /> - </filter> - <filter - inkscape:collect="always" - id="filter5711" - x="-0.1728" - width="1.3456" - y="-0.3456" - height="1.6912"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.144" - id="feGaussianBlur5713" /> - </filter> - <filter - inkscape:collect="always" - id="filter5719" - x="-0.18" - width="1.36" - y="-0.36" - height="1.72"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.15" - id="feGaussianBlur5721" /> - </filter> - <filter - inkscape:collect="always" - id="filter5723" - x="-0.21" - width="1.42" - y="-0.28" - height="1.56"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.35" - id="feGaussianBlur5725" /> - </filter> - <filter - inkscape:collect="always" - id="filter5727" - x="-0.21" - width="1.42" - y="-0.28" - height="1.56"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.35" - id="feGaussianBlur5729" /> - </filter> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="4" - inkscape:cx="57.618613" - inkscape:cy="29.528242" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="true" - inkscape:window-width="1607" - inkscape:window-height="1030" - inkscape:window-x="1676" - inkscape:window-y="-3" - inkscape:window-maximized="1"> - <inkscape:grid - type="xygrid" - id="grid2985" - empspacing="4" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-1020.3622)"> - <rect - style="fill:#2b1100;fill-opacity:1;stroke:none" - id="rect3063" - width="22" - height="22" - x="5" - y="5" - transform="translate(0,1020.3622)" - rx="5" - ry="5" /> - <path - id="path3065" - d="m 6,1026.3622 0,22 22,0 0,-22 z m 2,2 6,0 0,6 6,0 0,-6 6,0 0,6 -6,0 0,3 3,0 0,9 -3,0 0,-3 -6,0 0,3 -3,0 0,-9 3,0 0,-3 -6,0 z" - style="fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter3867)" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccccccccccccccccccccccc" /> - <path - style="fill:url(#linearGradient5605);fill-opacity:1;stroke:none" - d="m 7,1022.3622 c -2.77,0 -5,2.23 -5,5 l 0,25 28,0 0,-25 c 0,-2.77 -2.23,-5 -5,-5 z m 0,5 6,0 0,6 6,0 0,-6 6,0 0,6 -6,0 0,3 3,0 0,9 -3,0 0,-3 -6,0 0,3 -3,0 0,-9 3,0 0,-3 -6,0 z" - id="rect3045" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ssccsssccccccccccccccccccccc" /> - <g - id="g5466" - style="opacity:0.3" - transform="translate(0,-1)"> - <path - inkscape:connector-curvature="0" - id="rect3902" - d="m 3.999974,1022.3622 3,0 0,3 -3,0 z" - style="fill:#ffffff;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3904" - d="m 6.999974,1022.3622 3,0 0,3 -3,0 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3906" - d="m 3.999974,1025.3622 3,0 0,3 -3,0 z" - style="fill:#999999;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3908" - d="m 0.999974,1025.3622 3,0 0,3 -3,0 z" - style="fill:#f2f2f2;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3914" - d="m 3.999974,1028.3622 3,0 0,3 -3,0 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3916" - d="m 0.999974,1028.3622 3,0 0,3 -3,0 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3918" - d="m 6.999974,1025.3622 3,0 0,3 -3,0 z" - style="fill:#4d4d4d;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3924" - d="m 9.999974,1025.3622 3,0 0,3 -3,0 z" - style="fill:#999999;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3926" - d="m 12.999974,1028.3622 3,0 0,3 -3,0 z" - style="fill:#f2f2f2;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3930" - d="m 12.999974,1025.3622 3,0 0,3 -3,0 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3932" - d="m 9.999974,1022.3622 3,0 0,3 -3,0 z" - style="fill:#666666;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3936" - d="m 12.999974,1022.3622 3,0 0,3 -3,0 z" - style="fill:#333333;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3999" - d="m 18.99998,1028.3622 0,-3 3,0 0,3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4007" - d="m 15.99998,1031.3622 0,-3 3,0 0,3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4009" - d="m 24.99998,1031.3622 0,-3 3,0 0,3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4011" - d="m 24.99998,1034.3622 0,-3 3,0 0,3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4013" - d="m 21.99998,1028.3622 0,-3 3,0 0,3 z" - style="fill:#4d4d4d;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4015" - d="m 24.99998,1028.3622 0,-3 3,0 0,3 z" - style="fill:#e6e6e6;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4017" - d="m 15.99998,1028.3622 0,-3 3,0 0,3 z" - style="fill:#e6e6e6;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4019" - d="m 21.99998,1025.3622 0,-3 3,0 0,3 z" - style="fill:#999999;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4023" - d="m 24.99998,1025.3622 0,-3 3,0 0,3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4027" - d="m 18.99998,1025.3622 0,-3 3,0 0,3 z" - style="fill:#666666;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4029" - d="m 15.99998,1025.3622 0,-3 3,0 0,3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4035" - d="m 15.99998,1034.3622 0,-3 3,0 0,3 z" - style="fill:#808080;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4039" - d="m 6.99998,1034.3622 0,3 3,0 0,-3 z" - style="fill:#ffffff;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4041" - d="m 6.99998,1037.3622 0,3 3,0 0,-3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4043" - d="m 9.99998,1034.3622 0,3 3,0 0,-3 z" - style="fill:#999999;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4049" - d="m 3.99998,1034.3622 0,3 3,0 0,-3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4053" - d="m 12.99998,1031.3622 0,3 3,0 0,-3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4059" - d="m 3.99998,1037.3622 0,3 3,0 0,-3 z" - style="fill:#e6e6e6;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4063" - d="m 12.99998,1043.3622 0,3 3,0 0,-3 z" - style="fill:#f2f2f2;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4069" - d="m 6.99998,1040.3622 0,3 3,0 0,-3 z" - style="fill:#666666;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4071" - d="m 3.99998,1040.3622 0,3 3,0 0,-3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4073" - d="m 6.99998,1043.3622 0,3 3,0 0,-3 z" - style="fill:#333333;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4075" - d="m 3.99998,1043.3622 0,3 3,0 0,-3 z" - style="fill:#ececec;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4077" - d="m 3.99998,1031.3622 0,3 3,0 0,-3 z" - style="fill:#808080;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4133" - d="m 28,1028.3622 0,3 3,0 0,-3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4143" - d="m 28,1031.3622 0,3 3,0 0,-3 z" - style="fill:#e6e6e6;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4155" - d="m 28,1034.3622 0,3 3,0 0,-3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4159" - d="m 28,1037.3622 0,3 3,0 0,-3 z" - style="fill:#ececec;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4161" - d="m 28,1025.3622 0,3 3,0 0,-3 z" - style="fill:#808080;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4175" - d="m 28,1043.3622 0,3 3,0 0,-3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4185" - d="m 28,1046.3622 0,3 3,0 0,-3 z" - style="fill:#e6e6e6;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4197" - d="m 28,1049.3622 0,3 3,0 0,-3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4203" - d="m 28,1040.3622 0,3 3,0 0,-3 z" - style="fill:#808080;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4207" - d="m 6.99998,1049.3622 0,3 3,0 0,-3 z" - style="fill:#ffffff;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4211" - d="m 9.99998,1049.3622 0,3 3,0 0,-3 z" - style="fill:#999999;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4213" - d="m 9.99998,1046.3622 0,3 3,0 0,-3 z" - style="fill:#f2f2f2;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4215" - d="m 6.99998,1046.3622 0,3 3,0 0,-3 z" - style="fill:#666666;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4217" - d="m 3.99998,1049.3622 0,3 3,0 0,-3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4219" - d="m 12.99998,1049.3622 0,3 3,0 0,-3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4221" - d="m 12.99998,1046.3622 0,3 3,0 0,-3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4245" - d="m 3.99998,1046.3622 0,3 3,0 0,-3 z" - style="fill:#808080;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4261" - d="m 0.99998,1034.3622 0,3 3,0 0,-3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4263" - d="m 0.99998,1031.3622 0,3 3,0 0,-3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4267" - d="m 0.99998,1037.3622 0,3 3,0 0,-3 z" - style="fill:#e6e6e6;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4273" - d="m 0.99998,1043.3622 0,3 3,0 0,-3 z" - style="fill:#f2f2f2;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4275" - d="m 0.99998,1040.3622 0,3 3,0 0,-3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4303" - d="m 0.99998,1049.3622 0,3 3,0 0,-3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4305" - d="m 0.99998,1046.3622 0,3 3,0 0,-3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4093" - d="m 12.999974,1043.3622 3,0 0,3 -3,0 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4099" - d="m 15.999974,1043.3622 3,0 0,3 -3,0 z" - style="fill:#e6e6e6;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4105" - d="m 21.999974,1043.3622 3,0 0,3 -3,0 z" - style="fill:#f2f2f2;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4109" - d="m 21.999974,1040.3622 3,0 0,3 -3,0 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4113" - d="m 18.999974,1034.3622 3,0 0,3 -3,0 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4115" - d="m 21.999974,1037.3622 3,0 0,3 -3,0 z" - style="fill:#333333;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4117" - d="m 21.999974,1034.3622 3,0 0,3 -3,0 z" - style="fill:#ececec;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4119" - d="m 9.999974,1034.3622 3,0 0,3 -3,0 z" - style="fill:#808080;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4377" - d="m 21.999974,1043.3622 3,0 0,3 -3,0 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4379" - d="m 18.999974,1046.3622 3,0 0,3 -3,0 z" - style="fill:#999999;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4381" - d="m 15.999974,1046.3622 3,0 0,3 -3,0 z" - style="fill:#f2f2f2;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4383" - d="m 15.999974,1043.3622 3,0 0,3 -3,0 z" - style="fill:#666666;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4387" - d="m 18.999974,1049.3622 3,0 0,3 -3,0 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4389" - d="m 15.999974,1049.3622 3,0 0,3 -3,0 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4391" - d="m 21.999974,1046.3622 3,0 0,3 -3,0 z" - style="fill:#4d4d4d;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4393" - d="m 21.999974,1049.3622 3,0 0,3 -3,0 z" - style="fill:#e6e6e6;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4395" - d="m 21.999974,1040.3622 3,0 0,3 -3,0 z" - style="fill:#e6e6e6;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4397" - d="m 24.999974,1046.3622 3,0 0,3 -3,0 z" - style="fill:#999999;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4399" - d="m 27.999974,1049.3622 3,0 0,3 -3,0 z" - style="fill:#f2f2f2;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4401" - d="m 24.999974,1049.3622 3,0 0,3 -3,0 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4403" - d="m 27.999974,1046.3622 3,0 0,3 -3,0 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4405" - d="m 24.999974,1043.3622 3,0 0,3 -3,0 z" - style="fill:#666666;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4407" - d="m 24.999974,1040.3622 3,0 0,3 -3,0 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4409" - d="m 27.999974,1043.3622 3,0 0,3 -3,0 z" - style="fill:#333333;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4411" - d="m 27.999974,1040.3622 3,0 0,3 -3,0 z" - style="fill:#ececec;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4417" - d="m 18.999974,1034.3622 3,0 0,3 -3,0 z" - style="fill:#ffffff;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4419" - d="m 21.999974,1034.3622 3,0 0,3 -3,0 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4433" - d="m 21.999974,1037.3622 3,0 0,3 -3,0 z" - style="fill:#4d4d4d;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4435" - d="m 21.999974,1040.3622 3,0 0,3 -3,0 z" - style="fill:#e6e6e6;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4439" - d="m 24.999974,1037.3622 3,0 0,3 -3,0 z" - style="fill:#999999;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4441" - d="m 27.999974,1040.3622 3,0 0,3 -3,0 z" - style="fill:#f2f2f2;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4443" - d="m 24.999974,1040.3622 3,0 0,3 -3,0 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4445" - d="m 27.999974,1037.3622 3,0 0,3 -3,0 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4447" - d="m 24.999974,1034.3622 3,0 0,3 -3,0 z" - style="fill:#666666;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4449" - d="m 24.999974,1031.3622 3,0 0,3 -3,0 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4451" - d="m 27.999974,1034.3622 3,0 0,3 -3,0 z" - style="fill:#333333;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4453" - d="m 27.999974,1031.3622 3,0 0,3 -3,0 z" - style="fill:#ececec;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4455" - d="m 15.999974,1031.3622 3,0 0,3 -3,0 z" - style="fill:#808080;fill-opacity:1;stroke:none" /> - </g> - <path - style="fill:#000000;stroke:none" - d="m 7,1020.3622 c -3.878,0 -7,3.122 -7,7 l 0,25 2,0 0,-25 c 0,-2.77 2.23,-5 5,-5 l 18,0 c 2.77,0 5,2.23 5,5 l 0,25 2,0 0,-25 c 0,-3.878 -3.122,-7 -7,-7 z" - id="rect3887" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ssccssssccsss" /> - <path - style="opacity:0.34999999999999998;fill:url(#linearGradient3147);fill-opacity:1;stroke:none" - d="m 7,1021.3622 c -3.324,0 -6,2.676 -6,6 l 0,25 1,0 0,-25 c 0,-2.77 2.23,-5 5,-5 l 18,0 c 2.77,0 5,2.23 5,5 l 0,25 1,0 0,-25 c 0,-3.324 -2.676,-6 -6,-6 l -18,0 z" - id="rect3098" - inkscape:connector-curvature="0" /> - <rect - style="fill:url(#linearGradient3898);fill-opacity:1;stroke:none" - id="rect3890" - width="32" - height="6" - x="0" - y="26" - transform="translate(0,1020.3622)" /> - </g> -</svg> diff --git a/application/resources/sources/enderpearl.svg b/application/resources/sources/enderpearl.svg deleted file mode 100644 index ac9378f5..00000000 --- a/application/resources/sources/enderpearl.svg +++ /dev/null @@ -1,271 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="64" - height="64" - id="svg2" - version="1.1" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="enderpearl.svg" - inkscape:export-filename="/home/peterix/projects/MultiMC4/src/resources/insticons/enderpearl.png" - inkscape:export-xdpi="45" - inkscape:export-ydpi="45"> - <defs - id="defs4"> - <linearGradient - id="linearGradient4030"> - <stop - id="stop4032" - offset="0" - style="stop-color:#000000;stop-opacity:1;" /> - <stop - id="stop4034" - offset="1" - style="stop-color:#0c493f;stop-opacity:0;" /> - </linearGradient> - <linearGradient - id="linearGradient3954"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop3956" /> - <stop - style="stop-color:#0f5f52;stop-opacity:1;" - offset="1" - id="stop3958" /> - </linearGradient> - <filter - inkscape:collect="always" - id="filter3884"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.505" - id="feGaussianBlur3886" /> - </filter> - <filter - inkscape:collect="always" - id="filter3898" - x="-0.20110182" - width="1.4022036" - y="-0.20210065" - height="1.4042013"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.0604979" - id="feGaussianBlur3900" /> - </filter> - <filter - inkscape:collect="always" - id="filter3916" - x="-0.11491533" - width="1.2298307" - y="-0.11548609" - height="1.2309722"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.6059988" - id="feGaussianBlur3918" /> - </filter> - <filter - inkscape:collect="always" - id="filter3992"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.44" - id="feGaussianBlur3994" /> - </filter> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3954" - id="radialGradient4024" - gradientUnits="userSpaceOnUse" - cx="32" - cy="32" - fx="32" - fy="32" - r="20" - gradientTransform="matrix(1.1486906,1.2798015,-0.74419869,0.66795831,19.056258,-30.328315)" /> - <filter - inkscape:collect="always" - id="filter4082" - x="-0.13465964" - width="1.2693193" - y="-0.12490681" - height="1.2498136"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.763901" - id="feGaussianBlur4084" /> - </filter> - <filter - inkscape:collect="always" - id="filter4110" - x="-0.17716113" - width="1.3543223" - y="-0.17804105" - height="1.3560821"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.93424815" - id="feGaussianBlur4112" /> - </filter> - <linearGradient - id="linearGradient3954-9"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop3956-4" /> - <stop - style="stop-color:#0f5f52;stop-opacity:1;" - offset="1" - id="stop3958-2" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3954" - id="radialGradient4230" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.1486906,1.2798015,-0.74419869,0.66795831,19.056258,-30.328315)" - cx="32" - cy="32" - fx="32" - fy="32" - r="20" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3954" - id="radialGradient4250" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.1486906,1.2798015,-0.74419869,0.66795831,19.056258,-30.328315)" - cx="32" - cy="32" - fx="32" - fy="32" - r="20" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="1" - inkscape:cx="-241.15414" - inkscape:cy="194.64078" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - showguides="true" - inkscape:guide-bbox="true" - inkscape:window-width="1607" - inkscape:window-height="1030" - inkscape:window-x="1676" - inkscape:window-y="-3" - inkscape:window-maximized="1"> - <inkscape:grid - type="xygrid" - id="grid2985" - empspacing="2" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" /> - <sodipodi:guide - orientation="0,1" - position="11.25,96.5" - id="guide4252" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-988.36218)"> - <path - sodipodi:type="arc" - style="fill:#032620;fill-opacity:1;stroke:none;filter:url(#filter3992)" - id="path3005" - sodipodi:cx="32" - sodipodi:cy="32" - sodipodi:rx="24" - sodipodi:ry="24" - d="M 56,32 A 24,24 0 1 1 8,32 24,24 0 1 1 56,32 z" - transform="matrix(1.1666667,0,0,1.1666667,-5.3333344,983.02885)" /> - <g - id="g4116" - transform="matrix(1.0195929,0,0,1.0195936,-0.15674338,-19.992546)"> - <path - transform="matrix(1.1769403,0,0,1.1769403,-6.1232836,982.70009)" - d="M 52,32 C 52,43.045695 43.045695,52 32,52 20.954305,52 12,43.045695 12,32 12,20.954305 20.954305,12 32,12 c 11.045695,0 20,8.954305 20,20 z" - sodipodi:ry="20" - sodipodi:rx="20" - sodipodi:cy="32" - sodipodi:cx="32" - id="path3014" - style="fill:url(#radialGradient4024);fill-opacity:1;stroke:none" - sodipodi:type="arc" /> - <path - sodipodi:nodetypes="ssccs" - inkscape:connector-curvature="0" - id="path3866" - transform="matrix(1.1769403,0,0,1.1769403,-5.6620909,982.68843)" - d="m 28,16 c -6.627417,0 -12,5.372583 -12,12 0,0.20181 0.0214,0.394383 0.03125,0.59375 C 20,20 22,22 28.65625,16.03125 28.436252,16.019242 28.222996,16 28,16 z" - style="fill:#00ffcc;fill-opacity:1;stroke:none;filter:url(#filter3884)" /> - <path - transform="matrix(1.487885,0,0,1.487885,-10.597031,-493.22036)" - style="fill:#00ffcc;fill-opacity:1;stroke:none;filter:url(#filter3898)" - d="m 28,1004.3622 c -6.627417,0 -12,5.3726 -12,12 0,0.2018 0.0214,0.3944 0.03125,0.5937 3.96875,-8.5937 5.96875,-6.5937 12.625,-12.5625 -0.219998,-0.012 -0.433254,-0.031 -0.65625,-0.031 z" - id="path3888" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ssccs" /> - <path - sodipodi:nodetypes="ssccs" - inkscape:connector-curvature="0" - id="path3902" - d="m 28,1004.3622 c -6.627417,0 -12,5.3726 -12,12 0,0.2018 0.0214,0.3944 0.03125,0.5937 3.96875,-8.5937 5.96875,-6.5937 12.625,-12.5625 -0.219998,-0.012 -0.433254,-0.031 -0.65625,-0.031 z" - style="fill:#00ffcc;fill-opacity:1;stroke:none;filter:url(#filter3916)" - transform="matrix(-1.8359746,0,0,-1.8359746,81.432966,2885.3572)" /> - <path - transform="matrix(-1.1914115,0,0,-1.1914115,69.087304,2235.4229)" - style="fill:#d7f4d7;fill-opacity:1;stroke:none;filter:url(#filter3916)" - d="m 28,1004.3622 c -6.627417,0 -12,5.3726 -12,12 0,0.2018 0.0214,0.3944 0.03125,0.5937 3.96875,-8.5937 5.96875,-6.5937 12.625,-12.5625 -0.219998,-0.012 -0.433254,-0.031 -0.65625,-0.031 z" - id="path3920" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ssccs" /> - <path - sodipodi:nodetypes="csccsc" - inkscape:connector-curvature="0" - id="path3964" - d="m 28,1004.3622 c -6.627417,0 -12,5.3726 -12,12 0,0.2018 0.0214,0.3944 0.03125,0.5937 5.570868,-4.4816 8.905966,-4.4575 12.625,-12.5625 -0.219998,-0.012 -0.433254,-0.031 -0.65625,-0.031 z" - style="fill:#ffffff;fill-opacity:1;stroke:none;filter:url(#filter4110)" - transform="matrix(0.58516297,0,0,0.58516297,6.7391969,416.10681)" /> - <path - transform="translate(0,988.36218)" - sodipodi:nodetypes="ccccccccccccccccccssssscsscsscccccccccccc" - inkscape:connector-curvature="0" - id="path4036" - d="M 30,29 30.450431,19.407328 32.447263,28.5316 35,27 l 1,-6 -1,-4 1,-2 0,3 1.125,3.375 -0.07418,2.744617 L 44.0828,21.873859 37,26 l -1,4 2,2 3.375,0 5.0625,-3.0625 -4.3125,4.375 L 36,34 c 0,0 2.686048,7.256632 1.846439,8.096462 -0.326542,0.326628 -1.289256,-3.475594 -2.437243,-4.77335 C 34.192758,35.947974 32.79132,37.0625 32.5625,37.0625 c -0.602669,0 -2.136064,2.519769 -3.25945,4.522134 -0.205342,0.36601 0.728015,9.714733 0.308259,6.715119 C 29.482708,47.380759 28,44 28,44 c 0,0 0,-2 0,-3 0,-1 2,-3 2,-4 0,-1 0,-3 0,-3 0,0 -4.25,-1.125 -5.25,-1.125 -0.47674,0 -1.893857,0.89205 -3.377184,1.040709 C 19.744745,34.078874 18.0625,33.5 18.0625,33.5 L 16.774038,34.754808 17,39 l -2,-4 2,-3 3.8125,-0.0625 1.170423,-6.693425 3.092068,-2.055016 -2.122126,3.038537 -0.913529,5.350612 L 28,31 z" - style="opacity:0.86178864;fill:#000000;fill-opacity:0.86666667;stroke:none;filter:url(#filter4082)" /> - </g> - </g> -</svg> diff --git a/application/resources/sources/flame.svg b/application/resources/sources/flame.svg deleted file mode 100644 index 8a6da2f7..00000000 --- a/application/resources/sources/flame.svg +++ /dev/null @@ -1,51 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - viewBox="0 0 127.99999 128" - height="128" - width="128" - id="svg2" - version="1.1"> - <metadata - id="metadata8"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <defs - id="defs6" /> - <path - id="path4509" - d="m 93.706631,98.374916 c 2e-6,12.224574 -12.676714,22.134544 -28.314236,22.134544 -15.637522,0 -28.314238,-9.90997 -28.314236,-22.134544 10e-7,-12.224569 11.178608,-36.815994 26.816128,-36.815994 15.637521,0 29.812343,24.591425 29.812344,36.815994 z" - style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke-width:1.17175078;marker:none;enable-background:accumulate" /> - <g - transform="matrix(0.22142825,0,0,0.22142825,33.524659,-1.9444021)" - id="g4505"> - <path - style="fill:#ff7500;fill-opacity:1;fill-rule:evenodd" - d="m 285.26215,237.39406 c -4.43799,0.93416 -40.69637,2.61517 -41.21184,41.12844 -0.51547,38.51328 52.00568,64.86852 53.07625,129.21055 1.02262,61.46009 -43.4082,133.87308 -118.22034,141.52542 51.89013,-43.65773 59.51106,-100.48068 13.98305,-151.27119 -23.73802,-26.48184 -56.20743,-44.93245 -54.2373,-96.18644 1.97013,-51.25399 80.13525,-121.18396 146.61018,-64.40678 z" - id="path4491" /> - <path - id="path4493" - d="m 49.139955,83.857637 c 5.14236,1.40482 47.15538,3.93282 47.75267,61.850853 0.59728,57.91808 -115.98924,109.53719 -117.22972,206.29773 -1.18493,92.42657 41.90823,185.7443 128.593975,197.25225 C 48.131155,483.60392 47.690095,413.73124 100.44395,337.35009 127.9495,297.52546 221.3018,257.7937 219.01898,180.71555 216.73616,103.63741 126.16528,-1.5265416 49.139955,83.857637 Z" - style="fill:#ff7500;fill-opacity:1;fill-rule:evenodd;stroke-width:1.32004774" /> - <path - id="path4497" - d="m 244.91289,277.23386 c -3.04702,-0.0596 -26.88302,-4.71504 -34.06545,22.18053 -7.18245,26.89556 22.22556,53.80661 11.48022,99.05033 -10.26404,43.2172 -51.9816,86.79466 -101.90647,80.11983 41.44697,-22.23442 56.49745,-60.81281 35.97375,-103.71573 -10.70094,-22.3693 -28.49783,-40.51738 -18.10576,-76.10378 10.3921,-35.5864 73.56677,-71.99754 106.62371,-21.53118 z" - style="fill:#ff7500;fill-opacity:1;fill-rule:evenodd;stroke-width:0.69522083" /> - <path - style="fill:#ff7500;fill-opacity:1;fill-rule:evenodd;stroke-width:0.5843063" - d="m 54.097869,231.55891 c 2.12507,0.34666 19.5376,-1.05581 19.45707,26.31399 -0.0805,27.36978 -25.54842,49.88894 -26.61138,95.75261 -1.01537,43.80938 19.72217,92.1553 55.613891,92.23888 C 77.989639,418.51587 74.811129,378.62585 97.126179,339.21931 108.76111,318.67301 124.52413,303.21607 124.01412,266.88402 123.50408,230.55198 86.531659,186.39085 54.097869,231.55891 Z" - id="path4499" /> - </g> -</svg> diff --git a/application/resources/sources/ftb-glow.svg b/application/resources/sources/ftb-glow.svg deleted file mode 100644 index be78c78e..00000000 --- a/application/resources/sources/ftb-glow.svg +++ /dev/null @@ -1,606 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="32px" - height="32px" - id="svg2985" - version="1.1" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="ftb-glow.svg" - inkscape:export-filename="/home/peterix/projects/MultiMC4/src/resources/insticons/ftb_glow128.png" - inkscape:export-xdpi="360" - inkscape:export-ydpi="360"> - <defs - id="defs2987"> - <linearGradient - inkscape:collect="always" - id="linearGradient4462"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop4464" /> - <stop - style="stop-color:#000000;stop-opacity:0;" - offset="1" - id="stop4466" /> - </linearGradient> - <linearGradient - id="linearGradient3981"> - <stop - style="stop-color:#000083;stop-opacity:1;" - offset="0" - id="stop3983" /> - <stop - id="stop3985" - offset="0.25" - style="stop-color:#1919ff;stop-opacity:1;" /> - <stop - id="stop3987" - offset="0.5" - style="stop-color:#1919ff;stop-opacity:1;" /> - <stop - style="stop-color:#1919ff;stop-opacity:1;" - offset="0.75" - id="stop3989" /> - <stop - style="stop-color:#00007d;stop-opacity:1;" - offset="1" - id="stop3991" /> - </linearGradient> - <linearGradient - id="linearGradient3941"> - <stop - id="stop3943" - offset="0" - style="stop-color:#00830e;stop-opacity:1;" /> - <stop - style="stop-color:#00c017;stop-opacity:1;" - offset="0.25" - id="stop3945" /> - <stop - style="stop-color:#00ff1e;stop-opacity:1;" - offset="0.5" - id="stop3947" /> - <stop - id="stop3949" - offset="0.75" - style="stop-color:#00ff1e;stop-opacity:1;" /> - <stop - id="stop3951" - offset="1" - style="stop-color:#007d0f;stop-opacity:1;" /> - </linearGradient> - <linearGradient - id="linearGradient3801"> - <stop - style="stop-color:#830000;stop-opacity:1" - offset="0" - id="stop3803" /> - <stop - id="stop3811" - offset="0.25" - style="stop-color:#ff0000;stop-opacity:1;" /> - <stop - id="stop3809" - offset="0.5" - style="stop-color:#ff0000;stop-opacity:1;" /> - <stop - style="stop-color:#ff0000;stop-opacity:1;" - offset="0.75" - id="stop3813" /> - <stop - style="stop-color:#7d0000;stop-opacity:1" - offset="1" - id="stop3805" /> - </linearGradient> - <filter - inkscape:collect="always" - id="filter4107" - x="-0.14444444" - width="1.2888889" - y="-0.12380952" - height="1.247619"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.4444444" - id="feGaussianBlur4109" /> - </filter> - <filter - inkscape:collect="always" - id="filter4452"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.85596708" - id="feGaussianBlur4454" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4462" - id="linearGradient4468" - x1="-34.75" - y1="14" - x2="72.5" - y2="18.5" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(4.228145,0,0,1,111.61491,355.31802)" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3801" - id="linearGradient4476" - gradientUnits="userSpaceOnUse" - x1="-8" - y1="2" - x2="-4" - y2="6" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3941" - id="linearGradient4478" - gradientUnits="userSpaceOnUse" - x1="-8" - y1="2" - x2="-4" - y2="6" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3981" - id="linearGradient4480" - gradientUnits="userSpaceOnUse" - x1="-8" - y1="2" - x2="-4" - y2="6" /> - <filter - color-interpolation-filters="sRGB" - inkscape:collect="always" - id="filter4107-6" - x="-0.14444444" - width="1.2888889" - y="-0.12380952" - height="1.247619"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.4444444" - id="feGaussianBlur4109-1" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3941" - id="linearGradient3336" - gradientUnits="userSpaceOnUse" - x1="-8" - y1="6" - x2="4" - y2="17" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3981" - id="linearGradient3338" - gradientUnits="userSpaceOnUse" - x1="-16" - y1="2" - x2="-4" - y2="14" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3801" - id="linearGradient3340" - gradientUnits="userSpaceOnUse" - x1="-8" - y1="6" - x2="4" - y2="18" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3801" - id="linearGradient3342" - gradientUnits="userSpaceOnUse" - x1="-8" - y1="2" - x2="-4" - y2="6" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3801" - id="linearGradient3344" - gradientUnits="userSpaceOnUse" - x1="-8" - y1="2" - x2="-4" - y2="6" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="5.6568542" - inkscape:cx="6.8684247" - inkscape:cy="24.209238" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:grid-bbox="true" - inkscape:document-units="px" - inkscape:window-width="1607" - inkscape:window-height="1030" - inkscape:window-x="1676" - inkscape:window-y="-3" - inkscape:window-maximized="1" - showguides="true" - inkscape:guide-bbox="true"> - <inkscape:grid - type="xygrid" - id="grid2993" - empspacing="2" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" /> - <sodipodi:guide - orientation="1,0" - position="4,48" - id="guide3346" /> - <sodipodi:guide - orientation="1,0" - position="-29,35" - id="guide3348" /> - <sodipodi:guide - orientation="1,0" - position="-62,42" - id="guide3350" /> - <sodipodi:guide - orientation="1,0" - position="-58,69" - id="guide3352" /> - </sodipodi:namedview> - <metadata - id="metadata2990"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="layer1" - inkscape:label="Layer 1" - inkscape:groupmode="layer"> - <rect - style="fill:url(#linearGradient4468);fill-opacity:1;stroke:none" - id="rect4460" - width="495.75" - height="96.25" - x="-76.537521" - y="319.06802" /> - <g - id="g3280" - transform="translate(2,53)" - inkscape:export-filename="/home/peterix/projects/MultiMC4/src/resources/vectors/ftb.png" - inkscape:export-xdpi="360" - inkscape:export-ydpi="360"> - <g - transform="translate(-2,-53)" - id="g8144" - style="filter:url(#filter4107)"> - <path - style="fill:#5353ff;fill-opacity:1;stroke:none" - d="m 4,2 12,0 0,4 -8,0 0,4 4,0 0,4 -4,0 0,8 -4,0 z" - id="path8146" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccccccc" /> - <path - style="fill:#009a00;fill-opacity:1;stroke:none" - d="m 8,6 12,0 0,4 -4,0 0,16 -4,0 0,-16 -4,0 z" - id="path8148" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccccc" /> - <path - style="fill:#ac0000;fill-opacity:1;stroke:none" - d="m 16,10 0,20 8,0 0,-4 -4,0 0,-4 4,0 0,-4 -4,0 0,-4 4,0 0,-4 -8,0 z m 8,4 0,4 4,0 0,-4 -4,0 z m 0,8 0,4 4,0 0,-4 -4,0 z" - id="path8150" - inkscape:connector-curvature="0" /> - </g> - <g - id="g8256" - transform="translate(32,-53)"> - <g - id="g8258" - transform="translate(-18,4)"> - <path - sodipodi:nodetypes="ccccccccccc" - inkscape:connector-curvature="0" - id="path8260" - d="m -8,2 4,0 8,0 0,4 -4,0 0,16 -4,0 0,-16 0,0 -4,0 z" - style="fill:url(#linearGradient3336);fill-opacity:1;stroke:none" /> - <path - style="fill:#ffffff;fill-opacity:0.50196078;stroke:none" - d="m -8,2 1,1 0,2 -1,1 z" - id="path8262" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path8264" - d="M 4,2 3,3 -7,3 -8,2 z" - style="fill:#ffffff;fill-opacity:0.50196078;stroke:none" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path8266" - d="m -4,22 1,-1 2,0 1,1 z" - style="fill:#000000;fill-opacity:0.3466667;stroke:none" /> - <path - style="fill:#000000;fill-opacity:0.25777779;stroke:none" - d="M 4,6 3,5 3,3 4,2 z" - id="path8268" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - <path - style="fill:#000000;fill-opacity:0.3466667;stroke:none" - d="m -8,6 1,-1 4,0 -1,1 z" - id="path8270" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path8272" - d="M 0,6 -1,5 3,5 4,6 z" - style="fill:#000000;fill-opacity:0.3466667;stroke:none" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path8274" - d="m -4,6 1,-1 0,16 -1,1 z" - style="fill:#ffffff;fill-opacity:0.50196078;stroke:none" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path8276" - d="M 0,22 -1,21 -1,5 0,6 z" - style="fill:#000000;fill-opacity:0.25777779;stroke:none" /> - </g> - <g - transform="translate(-14,0)" - id="g8278"> - <path - sodipodi:nodetypes="ccccccccccc" - inkscape:connector-curvature="0" - id="path8280" - d="m -16,2 12,0 0,4 -8,0 0,4 4,0 0,4 -4,0 0,8 -4,0 z" - style="fill:url(#linearGradient3338);fill-opacity:1;stroke:none" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path8282" - d="m -16,2 1,1 0,18 -1,1 z" - style="fill:#ffffff;fill-opacity:0.50222222;stroke:none" /> - <path - style="fill:#ffffff;fill-opacity:0.40888887;stroke:none" - d="M -4,2 -5,3 -15,3 -16,2 z" - id="path8284" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - <path - style="fill:#ffffff;fill-opacity:0.3466667;stroke:none" - d="m -16,22 1,-1 2,0 1,1 z" - id="path8286" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path8288" - d="M -4,6 -5,5 -5,3 -4,2 z" - style="fill:#ffffff;fill-opacity:0.25777779;stroke:none" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path8290" - d="m -12,14 -1,-1 4,0 1,1 z" - style="fill:#ffffff;fill-opacity:0.3466667;stroke:none" /> - <path - style="fill:#ffffff;fill-opacity:0.3466667;stroke:none" - d="m -12,6 -1,-1 8,0 1,1 z" - id="path8292" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - <path - style="fill:#ffffff;fill-opacity:0.25777779;stroke:none" - d="m -8,14 -1,-1 0,-2 1,-1 z" - id="path8294" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path8296" - d="m -8,10 -1,1 -4,0 1,-1 z" - style="fill:#ffffff;fill-opacity:0.40888887;stroke:none" /> - <path - style="fill:#ffffff;fill-opacity:0.25777779;stroke:none" - d="m -12,10 -1,1 0,-6 1,1 z" - id="path8298" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path8300" - d="m -12,22 -1,-1 0,-8 1,1 z" - style="fill:#ffffff;fill-opacity:0.25777779;stroke:none" /> - </g> - <g - id="g8302"> - <g - id="g8304" - transform="translate(-10,8)"> - <path - style="fill:url(#linearGradient3340);fill-opacity:1;stroke:none" - d="m -8,2 8,0 0,4 -4,0 0,4 4,0 0,4 -4,0 0,4 4,0 0,4 -8,0 z" - id="path8306" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccccccccc" /> - <path - style="fill:#ffffff;fill-opacity:0.39111113;stroke:none" - d="m -8,2 1,1 0,18 -1,1 z" - id="path8308" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path8310" - d="M 0,2 -1,3 -7,3 -8,2 z" - style="fill:#ffffff;fill-opacity:0.23999999;stroke:none" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path8312" - d="m -8,22 1,-1 6,0 1,1 z" - style="fill:#000000;fill-opacity:0.43111112;stroke:none" /> - <path - style="fill:#000000;fill-opacity:0.25777779;stroke:none" - d="M 0,6 -1,5 -1,3 0,2 z" - id="path8314" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - <path - style="fill:#000000;fill-opacity:0.43111112;stroke:none" - d="M -4,6 -5,5 -1,5 0,6 z" - id="path8316" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path8318" - d="m -4,14 -1,-1 4,0 1,1 z" - style="fill:#000000;fill-opacity:0.43111112;stroke:none" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path8320" - d="m -4,10 -1,1 0,-6 1,1 z" - style="fill:#000000;fill-opacity:0.25777779;stroke:none" /> - <path - style="fill:#000000;fill-opacity:0.25777779;stroke:none" - d="m -4,18 -1,1 0,-6 1,1 z" - id="path8322" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path8324" - d="m 0,22 -1,-1 0,-2 1,-1 z" - style="fill:#000000;fill-opacity:0.25777779;stroke:none" /> - <path - style="fill:#ffffff;fill-opacity:0.23999999;stroke:none" - d="m 0,10 -1,1 -4,0 1,-1 z" - id="path8326" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path8328" - d="m 0,18 -1,1 -4,0 1,-1 z" - style="fill:#ffffff;fill-opacity:0.23999999;stroke:none" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path8330" - d="m 0,14 -1,-1 0,-2 1,-1 z" - style="fill:#000000;fill-opacity:0.25777779;stroke:none" /> - </g> - <g - transform="translate(-2,12)" - id="g8332"> - <rect - style="fill:url(#linearGradient3342);fill-opacity:1;stroke:none" - id="rect8334" - width="4" - height="4" - x="-8" - y="2" /> - <path - style="fill:#ffffff;fill-opacity:0.39111113;stroke:none" - d="m -8,2 1,1 0,2 -1,1 z" - id="path8336" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path8338" - d="M -4,2 -5,3 -7,3 -8,2 z" - style="fill:#ffffff;fill-opacity:0.23999999;stroke:none" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path8340" - d="m -8,6 1,-1 2,0 1,1 z" - style="fill:#000000;fill-opacity:0.43111112;stroke:none" /> - <path - style="fill:#000000;fill-opacity:0.25777779;stroke:none" - d="M -4,6 -5,5 -5,3 -4,2 z" - id="path8342" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - </g> - <g - id="g8344" - transform="translate(-2,20)"> - <rect - y="2" - x="-8" - height="4" - width="4" - id="rect8346" - style="fill:url(#linearGradient3344);fill-opacity:1;stroke:none" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path8348" - d="m -8,2 1,1 0,2 -1,1 z" - style="fill:#ffffff;fill-opacity:0.39111113;stroke:none" /> - <path - style="fill:#ffffff;fill-opacity:0.23999999;stroke:none" - d="M -4,2 -5,3 -7,3 -8,2 z" - id="path8350" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - <path - style="fill:#000000;fill-opacity:0.43111112;stroke:none" - d="m -8,6 1,-1 2,0 1,1 z" - id="path8352" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path8354" - d="M -4,6 -5,5 -5,3 -4,2 z" - style="fill:#000000;fill-opacity:0.25777779;stroke:none" /> - </g> - </g> - </g> - </g> - </g> -</svg> diff --git a/application/resources/sources/ftb-logo.svg b/application/resources/sources/ftb-logo.svg deleted file mode 100644 index 8cf73567..00000000 --- a/application/resources/sources/ftb-logo.svg +++ /dev/null @@ -1,257 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - id="svg2" - version="1.1" - inkscape:version="0.48.3.1 r9886" - width="128" - height="128" - sodipodi:docname="ftb-logo.svg" - inkscape:export-filename="/home/peterix/projects/MultiMC4/src/resources/insticons/ftb_logo128.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <metadata - id="metadata8"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <defs - id="defs6"> - <linearGradient - inkscape:collect="always" - id="linearGradient3027"> - <stop - style="stop-color:#418cc6;stop-opacity:1" - offset="0" - id="stop3029" /> - <stop - style="stop-color:#014b85;stop-opacity:1" - offset="1" - id="stop3031" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - id="linearGradient3019"> - <stop - style="stop-color:#41cd55;stop-opacity:1" - offset="0" - id="stop3021" /> - <stop - style="stop-color:#018d15;stop-opacity:1" - offset="1" - id="stop3023" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - id="linearGradient3011"> - <stop - style="stop-color:#d24141;stop-opacity:1" - offset="0" - id="stop3013" /> - <stop - style="stop-color:#910101;stop-opacity:1" - offset="1" - id="stop3015" /> - </linearGradient> - <filter - inkscape:collect="always" - id="filter3826" - color-interpolation-filters="sRGB"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="3.4237769" - id="feGaussianBlur3828" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3019" - id="linearGradient3830" - gradientUnits="userSpaceOnUse" - x1="567.10803" - y1="231.67372" - x2="567.10803" - y2="300.68848" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3027" - id="linearGradient3832" - gradientUnits="userSpaceOnUse" - x1="548.19916" - y1="255.50847" - x2="548.19916" - y2="324.71759" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3011" - id="linearGradient3834" - gradientUnits="userSpaceOnUse" - x1="600.95337" - y1="257.41525" - x2="600.95337" - y2="324.16464" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3019" - id="linearGradient3848" - gradientUnits="userSpaceOnUse" - x1="567.10803" - y1="231.67372" - x2="567.10803" - y2="300.68848" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3027" - id="linearGradient3850" - gradientUnits="userSpaceOnUse" - x1="548.19916" - y1="255.50847" - x2="548.19916" - y2="324.71759" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3011" - id="linearGradient3852" - gradientUnits="userSpaceOnUse" - x1="600.95337" - y1="257.41525" - x2="600.95337" - y2="324.16464" /> - </defs> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1607" - inkscape:window-height="1030" - id="namedview4" - showgrid="false" - showguides="false" - inkscape:guide-bbox="true" - inkscape:zoom="4" - inkscape:cx="32.725294" - inkscape:cy="54.630313" - inkscape:window-x="1676" - inkscape:window-y="-3" - inkscape:window-maximized="1" - inkscape:current-layer="g3838"> - <sodipodi:guide - orientation="1,0" - position="352.46726,316.96211" - id="guide2991" /> - <sodipodi:guide - orientation="0,1" - position="347.41115,278.08622" - id="guide2993" /> - <sodipodi:guide - orientation="0,1" - position="431.31454,337.77645" - id="guide3001" /> - <inkscape:grid - type="xygrid" - id="grid3005" - empspacing="4" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" /> - <sodipodi:guide - orientation="1,0" - position="431.28645,312" - id="guide3007" /> - <sodipodi:guide - orientation="0,1" - position="73.25,82.125" - id="guide3856" /> - <sodipodi:guide - orientation="0,1" - position="75.5,79.25" - id="guide3858" /> - <sodipodi:guide - orientation="1,0" - position="35.125,49.75" - id="guide3860" /> - <sodipodi:guide - orientation="1,0" - position="39.686368,60.45763" - id="guide3862" /> - <sodipodi:guide - orientation="0,1" - position="41.9375,48.59375" - id="guide3864" /> - <sodipodi:guide - orientation="0,1" - position="28.416854,59.142853" - id="guide3866" /> - <sodipodi:guide - orientation="0,1" - position="28.416854,56.623785" - id="guide3868" /> - </sodipodi:namedview> - <g - id="g3838" - transform="matrix(1,0,0,1.018245,3.8570626,-2.6546202)"> - <g - style="opacity:0.33054397;fill:#000000;fill-opacity:1;filter:url(#filter3826)" - transform="matrix(0.83116569,0,0,0.83116569,-409.72999,-161.96543)" - id="g3040"> - <path - sodipodi:nodetypes="ccccccccccccccc" - inkscape:connector-curvature="0" - id="path3042" - d="m 547.55325,231.83317 c -0.0986,2.38736 42.68285,2.06721 42.92078,0 l 3.59546,21.34804 -2.92131,0 c -3.03427,-7.13555 -5.22493,-14.772 -17.52786,-16.40428 l 0,59.32506 5.6179,1.34829 0,3.37075 -20.67388,0 0,-3.14603 5.73213,-1.53592 0,-59.58687 c -6.03051,0.84659 -12.06101,1.92591 -18.09152,15.95485 l -2.69659,0 z" - style="fill:#000000;fill-opacity:1;stroke:none" /> - <path - sodipodi:nodetypes="cccccccccccccccccccccc" - inkscape:connector-curvature="0" - id="path3044" - d="m 505.54497,324.79984 20.44916,0 0,-3.14603 -5.73026,-1.0674 0,-28.9322 9.10101,-0.11236 c 3.72116,2.12145 5.47848,6.20675 6.51676,11.01109 l 2.6966,-0.22472 0,-24.26934 -3.14603,0 c -1.29037,3.73961 -0.27178,8.24887 -6.51677,10.33694 l -8.65157,-0.11236 0,-27.13447 c 15.85546,-0.55543 21.31445,0.2909 29.77489,16.46046 l 2.92131,0 -4.71904,-22.02218 c -0.99909,3.14752 -12.86953,2.24716 -42.69606,2.24716 l 0.0281,2.72468 c 3.6912,0.29962 3.59931,0.57116 5.14038,0.87078 l -0.0562,59.2127 -5.05612,1.51683 z" - style="fill:#000000;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="path3046" - d="m 612.29661,257.60381 -27.75,0.125 0,3.125 5.15625,0.90625 0,58.875 -5.40625,1.46875 0,2.46875 27.65625,0 c 32.83223,-0.42026 25.38759,-33.26589 5.15625,-36.40625 19.87788,-2.96053 19.96965,-30.36986 -4.8125,-30.5625 z m -2.375,3.34375 c 16.40273,0 18.2699,25.53125 -1.6875,25.53125 l -9.21875,0 0,-25.5 10.90625,-0.0312 z m -1.1875,28.84375 c 10.10368,0.81978 14.43973,6.63609 15.71875,15.6875 2.50148,17.70261 -22.21516,16.36814 -25.375,15.15625 l 0,-30.78125 9.65625,-0.0625 z" - style="fill:#000000;fill-opacity:1;stroke:none" /> - </g> - <g - transform="matrix(0.83116569,0,0,0.83116569,-412.777,-169.25441)" - id="g3035"> - <path - style="fill:url(#linearGradient3848);fill-opacity:1;stroke:none" - d="m 547.55325,231.83317 c -0.0986,2.38736 42.68285,2.06721 42.92078,0 l 3.59546,21.34804 -2.92131,0 c -3.03427,-7.13555 -5.22493,-14.772 -17.52786,-16.40428 l 0,59.32506 5.6179,1.34829 0,3.37075 -20.67388,0 0,-3.14603 5.73213,-1.53592 0,-59.58687 c -6.03051,0.84659 -12.06101,1.92591 -18.09152,15.95485 l -2.69659,0 z" - id="path2987" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccccccccccc" /> - <path - style="fill:url(#linearGradient3850);fill-opacity:1;stroke:none" - d="m 505.54497,324.79984 20.44916,0 0,-3.14603 -5.73026,-1.0674 0,-28.9322 9.0706,-0.0112 c 7.23229,-0.009 6.17144,5.6893 6.17144,10.66981 l 3.07233,0 0,-24.25397 -3.14603,0 c 0.0737,4.503 1.04842,10.24675 -6.09774,10.23698 l -9.0706,-0.0124 0,-27.13447 c 15.85546,-0.55543 21.31445,0.2909 29.77489,16.46046 l 2.92131,0 -4.71904,-22.02218 c -0.99909,3.14752 -12.86953,2.24716 -42.69606,2.24716 l 0.0281,2.72468 c 3.6912,0.29962 3.59931,0.57116 5.14038,0.87078 l -0.0562,59.2127 -5.05612,1.51683 z" - id="path2989" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccsccccsccccccccccc" /> - <path - style="fill:url(#linearGradient3852);fill-opacity:1;stroke:none" - d="m 612.29661,257.60381 -27.75,0.125 0,3.125 5.15625,0.90625 0,58.875 -5.40625,1.46875 0,2.46875 27.65625,0 c 32.83223,-0.42026 25.38759,-33.26589 5.15625,-36.40625 19.87788,-2.96053 19.96965,-30.36986 -4.8125,-30.5625 z m -2.375,3.34375 c 16.40273,0 18.2699,25.53125 -1.6875,25.53125 l -9.21875,0 0,-25.5 10.90625,-0.0312 z m -1.1875,28.84375 c 10.10368,0.81978 14.43973,6.63609 15.71875,15.6875 2.50148,17.70261 -22.21516,16.36814 -25.375,15.15625 l 0,-30.78125 9.65625,-0.0625 z" - id="path2995" - inkscape:connector-curvature="0" /> - </g> - </g> -</svg> diff --git a/application/resources/sources/gear.svg b/application/resources/sources/gear.svg deleted file mode 100644 index c0169aec..00000000 --- a/application/resources/sources/gear.svg +++ /dev/null @@ -1,434 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="64" - height="64" - id="svg2" - version="1.1" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="gear.svg" - inkscape:export-filename="/home/peterix/projects/MultiMC4/src/resources/insticons/gear128.png" - inkscape:export-xdpi="180" - inkscape:export-ydpi="180"> - <defs - id="defs4"> - <linearGradient - id="linearGradient4030"> - <stop - id="stop4032" - offset="0" - style="stop-color:#000000;stop-opacity:1;" /> - <stop - id="stop4034" - offset="1" - style="stop-color:#0c493f;stop-opacity:0;" /> - </linearGradient> - <linearGradient - id="linearGradient3954"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop3956" /> - <stop - style="stop-color:#0f5f52;stop-opacity:1;" - offset="1" - id="stop3958" /> - </linearGradient> - <linearGradient - id="linearGradient3954-9"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop3956-4" /> - <stop - style="stop-color:#0f5f52;stop-opacity:1;" - offset="1" - id="stop3958-2" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3954" - id="radialGradient4230" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.1486906,1.2798015,-0.74419869,0.66795831,19.056258,-30.328315)" - cx="32" - cy="32" - fx="32" - fy="32" - r="20" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3954" - id="radialGradient4250" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.1486906,1.2798015,-0.74419869,0.66795831,19.056258,-30.328315)" - cx="32" - cy="32" - fx="32" - fy="32" - r="20" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3954" - id="radialGradient3069" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.1486906,1.2798015,-0.74419869,0.66795831,19.056258,-30.328315)" - cx="32" - cy="32" - fx="32" - fy="32" - r="20" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3919-9" - id="linearGradient3917" - x1="43.78125" - y1="42.687496" - x2="15.453125" - y2="21.578121" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.1428571,0,0,1.1428571,-2.2857143,-2.28571)" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3911-5" - id="linearGradient3929-9" - gradientUnits="userSpaceOnUse" - x1="40.5" - y1="36.999996" - x2="9" - y2="19.499996" /> - <linearGradient - inkscape:collect="always" - id="linearGradient3911-5"> - <stop - style="stop-color:#8c3800;stop-opacity:1" - offset="0" - id="stop3913-6" /> - <stop - style="stop-color:#ff6701;stop-opacity:1" - offset="1" - id="stop3915-3" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3919-9" - id="linearGradient3986" - gradientUnits="userSpaceOnUse" - x1="28" - y1="28" - x2="44" - y2="32" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3919-9" - id="linearGradient3925-4" - x1="16" - y1="16" - x2="48" - y2="48" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient3919-9"> - <stop - style="stop-color:#fff306;stop-opacity:1;" - offset="0" - id="stop3921-2" /> - <stop - style="stop-color:#ff7f01;stop-opacity:1;" - offset="1" - id="stop3923-3" /> - </linearGradient> - <linearGradient - gradientTransform="translate(-12,-12)" - y2="48" - x2="48" - y1="16" - x1="16" - gradientUnits="userSpaceOnUse" - id="linearGradient4025" - xlink:href="#linearGradient3919-9" - inkscape:collect="always" /> - <linearGradient - inkscape:collect="always" - id="linearGradient3919-9-3"> - <stop - style="stop-color:#ff9e06;stop-opacity:1" - offset="0" - id="stop3921-2-9" /> - <stop - style="stop-color:#af4600;stop-opacity:1" - offset="1" - id="stop3923-3-4" /> - </linearGradient> - <linearGradient - gradientTransform="translate(-8,-8)" - y2="48" - x2="48" - y1="16" - x1="16" - gradientUnits="userSpaceOnUse" - id="linearGradient4065" - xlink:href="#linearGradient3919-9-3" - inkscape:collect="always" /> - <linearGradient - inkscape:collect="always" - id="linearGradient3919-9-35"> - <stop - style="stop-color:#ff9e06;stop-opacity:1" - offset="0" - id="stop3921-2-3" /> - <stop - style="stop-color:#af4600;stop-opacity:1" - offset="1" - id="stop3923-3-5" /> - </linearGradient> - <linearGradient - gradientTransform="translate(-8,-8)" - y2="48" - x2="48" - y1="16" - x1="16" - gradientUnits="userSpaceOnUse" - id="linearGradient4098" - xlink:href="#linearGradient3919-9-35" - inkscape:collect="always" /> - <linearGradient - gradientTransform="translate(92.25,1040.3622)" - inkscape:collect="always" - xlink:href="#linearGradient3919-9-7" - id="linearGradient3986-9" - gradientUnits="userSpaceOnUse" - x1="28" - y1="28" - x2="44" - y2="32" /> - <linearGradient - id="linearGradient3919-9-7"> - <stop - style="stop-color:#fff306;stop-opacity:1;" - offset="0" - id="stop3921-2-93" /> - <stop - style="stop-color:#ff7f01;stop-opacity:1;" - offset="1" - id="stop3923-3-0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3919-9-7" - id="linearGradient3917-1" - x1="43.78125" - y1="42.687496" - x2="15.453125" - y2="21.578121" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.1428571,0,0,1.1428571,89.96429,1038.0765)" /> - <linearGradient - id="linearGradient4172"> - <stop - style="stop-color:#fff306;stop-opacity:1;" - offset="0" - id="stop4174" /> - <stop - style="stop-color:#ff7f01;stop-opacity:1;" - offset="1" - id="stop4176" /> - </linearGradient> - <linearGradient - gradientTransform="translate(92.25,1040.3622)" - inkscape:collect="always" - xlink:href="#linearGradient3919-9-7" - id="linearGradient3925-4-8" - x1="16" - y1="16" - x2="48" - y2="48" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient4179"> - <stop - style="stop-color:#fff306;stop-opacity:1;" - offset="0" - id="stop4181" /> - <stop - style="stop-color:#ff7f01;stop-opacity:1;" - offset="1" - id="stop4183" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5178-5" - id="linearGradient5184-3" - x1="-58.570175" - y1="1003.1377" - x2="-18.635777" - y2="1034.4441" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient5178-5"> - <stop - style="stop-color:#13daba;stop-opacity:0.50196081;" - offset="0" - id="stop5180-8" /> - <stop - style="stop-color:#03251f;stop-opacity:1" - offset="1" - id="stop5182-3" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - inkscape:collect="always" - id="filter4462-8"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.68" - id="feGaussianBlur4464-6" /> - </filter> - <linearGradient - gradientTransform="translate(164.98654,52.0355)" - y2="1034.4441" - x2="-18.635777" - y1="1003.1377" - x1="-58.570175" - gradientUnits="userSpaceOnUse" - id="linearGradient4197" - xlink:href="#linearGradient5178-5" - inkscape:collect="always" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5178-5" - id="linearGradient4308" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(164.98654,52.0355)" - x1="-58.570175" - y1="1003.1377" - x2="-18.635777" - y2="1034.4441" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3919-9-7" - id="linearGradient4310" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(92.25,1040.3622)" - x1="16" - y1="16" - x2="48" - y2="48" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3919-9-7" - id="linearGradient4312" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.1428571,0,0,1.1428571,89.96429,1038.0765)" - x1="43.78125" - y1="42.687496" - x2="15.453125" - y2="21.578121" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3919-9-7" - id="linearGradient4314" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(92.25,1040.3622)" - x1="28" - y1="28" - x2="44" - y2="32" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="2" - inkscape:cx="63.31906" - inkscape:cy="60.240415" - inkscape:document-units="px" - inkscape:current-layer="g4300" - showgrid="false" - showguides="true" - inkscape:guide-bbox="true" - inkscape:window-width="1607" - inkscape:window-height="1030" - inkscape:window-x="1676" - inkscape:window-y="-3" - inkscape:window-maximized="1"> - <inkscape:grid - type="xygrid" - id="grid2985" - empspacing="4" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" - spacingx="1px" - spacingy="1px" /> - <sodipodi:guide - orientation="0,1" - position="11.25,96.5" - id="guide4252" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-988.36218)"> - <g - id="g4300" - transform="translate(-92.25,-52.00002)"> - <path - sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccc" - inkscape:connector-curvature="0" - id="rect4162-6" - d="m 120.25,1044.3622 -4,4 0,4 -3,-3 -6,0 -6,6 0,6 3,3 -4,0 -4,4 0,8 4,4 4,0 -3,3 0,6 6,6 6,0 3,-3 0,4 4,4 8,0 4,-4 0,-4 3,3 6,0 6,-6 0,-6 -3,-3 4,0 4,-4 0,-8 -4,-4 -4,0 3,-3 0,-6 -6,-6 -6,0 -3,3 0,-4 -4,-4 z" - style="color:#000000;fill:url(#linearGradient4308);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4462-8);enable-background:accumulate" /> - <path - id="rect3071-3" - d="m 120.25,1048.3622 0,4.4062 c -0.22274,0.045 -0.43627,0.1037 -0.65625,0.1563 -0.4105,0.098 -0.81848,0.19 -1.21875,0.3125 -0.0218,0.01 -0.0408,0.024 -0.0625,0.031 -0.59186,0.1833 -1.18309,0.3898 -1.75,0.625 -0.50056,0.2088 -0.98977,0.4401 -1.46875,0.6875 -0.0827,0.043 -0.16797,0.081 -0.25,0.125 -0.55648,0.2973 -1.10149,0.6219 -1.625,0.9687 l -3.125,-3.125 -5.65625,5.6562 3.125,3.125 c -0.34167,0.5158 -0.67512,1.046 -0.96875,1.5938 -0.048,0.09 -0.0783,0.1905 -0.125,0.2812 -0.23239,0.45 -0.45783,0.9059 -0.65625,1.375 -0.0127,0.03 -0.0187,0.063 -0.0312,0.094 -0.23753,0.5694 -0.44005,1.1553 -0.625,1.75 -0.13065,0.4218 -0.24046,0.848 -0.34375,1.2812 -0.0526,0.22 -0.11102,0.4335 -0.15625,0.6563 l -4.40625,0 0,8 4.40625,0 c 0.0452,0.2227 0.10369,0.4363 0.15625,0.6562 0.0979,0.4105 0.19004,0.8185 0.3125,1.2188 0.007,0.022 0.0245,0.041 0.0312,0.062 0.18332,0.5918 0.38983,1.1831 0.625,1.75 0.2088,0.5005 0.44015,0.9897 0.6875,1.4687 0.0467,0.091 0.077,0.1914 0.125,0.2813 0.0175,0.033 0.0448,0.061 0.0625,0.094 0.27878,0.5148 0.58417,1.0139 0.90625,1.5 l -3.125,3.125 5.65625,5.6563 3.125,-3.125 c 0.52351,0.3468 1.06852,0.6714 1.625,0.9687 0.082,0.044 0.16729,0.082 0.25,0.125 0.45001,0.2324 0.90589,0.4579 1.375,0.6563 0.0303,0.013 0.0634,0.019 0.0937,0.031 0.56941,0.2376 1.15536,0.4401 1.75,0.625 0.42179,0.1307 0.84805,0.2405 1.28125,0.3438 0.21027,0.05 0.41221,0.1127 0.625,0.1562 0.01,0 0.0212,0 0.0312,0 l 0,4.4063 8,0 0,-4.4063 c 0.22283,-0.045 0.43616,-0.1037 0.65625,-0.1562 0.92356,-0.2207 1.81865,-0.4999 2.6875,-0.8438 0.61879,-0.2435 1.22575,-0.5106 1.8125,-0.8125 0.0825,-0.043 0.16813,-0.081 0.25,-0.125 0.55807,-0.2971 1.10017,-0.621 1.625,-0.9687 l 3.125,3.125 5.65625,-5.6563 -3.125,-3.125 c 0.34276,-0.5174 0.6751,-1.044 0.96875,-1.5937 0.0483,-0.09 0.0781,-0.1904 0.125,-0.2813 0.30187,-0.5867 0.56896,-1.1937 0.8125,-1.8125 0.34385,-0.8688 0.62307,-1.7639 0.84375,-2.6875 0.0525,-0.2201 0.111,-0.4334 0.15625,-0.6562 l 4.40625,0 0,-8 -4.40625,0 c -0.002,-0.01 0.002,-0.021 0,-0.031 -0.0435,-0.2127 -0.10613,-0.4148 -0.15625,-0.625 -0.22068,-0.9235 -0.4999,-1.8186 -0.84375,-2.6875 -0.24354,-0.6188 -0.51063,-1.2257 -0.8125,-1.8125 -0.0469,-0.091 -0.0767,-0.1912 -0.125,-0.2812 -0.29365,-0.5497 -0.62599,-1.0764 -0.96875,-1.5938 l 3.125,-3.125 -5.65625,-5.6562 -3.125,3.125 c -0.48499,-0.3213 -0.98661,-0.6273 -1.5,-0.9062 -0.0409,-0.022 -0.0839,-0.041 -0.125,-0.062 -0.0819,-0.044 -0.16745,-0.082 -0.25,-0.125 -0.58675,-0.3019 -1.19371,-0.569 -1.8125,-0.8125 -0.86885,-0.3439 -1.76394,-0.6231 -2.6875,-0.8438 -0.21019,-0.05 -0.4123,-0.1127 -0.625,-0.1562 -0.01,0 -0.0214,0 -0.0312,0 l 0,-4.4063 -8,0 z m 4,20 c 2.20914,0 4,1.7908 4,4 0,2.2091 -1.79086,4 -4,4 -0.27614,0 -0.55211,-0.041 -0.8125,-0.094 -1.82273,-0.373 -3.1875,-1.9732 -3.1875,-3.9062 0,-0.2762 0.0405,-0.5521 0.0937,-0.8125 0.37299,-1.8228 1.97325,-3.1875 3.90625,-3.1875 z" - style="color:#000000;fill:url(#linearGradient4310);fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - inkscape:connector-curvature="0" /> - <path - id="path3874-0" - d="m 124.25,1056.3622 c -8.83656,0 -16,7.1634 -16,16 0,8.8365 7.16344,16 16,16 8.83656,0 16,-7.1635 16,-16 0,-8.8366 -7.16344,-16 -16,-16 z m 0,12 c 2.20914,0 4,1.7908 4,4 0,2.2091 -1.79086,4 -4,4 -2.20914,0 -4,-1.7909 -4,-4 0,-2.2092 1.79086,-4 4,-4 z" - style="fill:url(#linearGradient4312);fill-opacity:1;stroke:none" - inkscape:connector-curvature="0" /> - <path - id="path3876-7" - d="m 124.25,1064.3622 c -4.41828,0 -8,3.5817 -8,8 0,4.4183 3.58172,8 8,8 4.41828,0 8,-3.5817 8,-8 0,-4.4183 -3.58172,-8 -8,-8 z m 0,4 c 2.20914,0 4,1.7908 4,4 0,2.2091 -1.79086,4 -4,4 -2.20914,0 -4,-1.7909 -4,-4 0,-2.2092 1.79086,-4 4,-4 z" - style="fill:url(#linearGradient4314);fill-opacity:1;stroke:none" - inkscape:connector-curvature="0" /> - <path - inkscape:connector-curvature="0" - id="path3927-9" - d="m 124.25,1056.3622 c -8.83656,0 -16,7.1634 -16,16 0,4.8907 2.19848,9.2526 5.65625,12.1875 -2.28249,-2.7658 -3.65625,-6.3215 -3.65625,-10.1875 0,-8.8366 7.16344,-16 16,-16 3.86599,0 7.42176,1.3737 10.1875,3.6562 -2.93487,-3.4577 -7.29683,-5.6562 -12.1875,-5.6562 z" - style="fill:#000000;fill-opacity:0.39130435;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="path3970-3" - d="m 131.8125,1069.7997 c 0.27256,0.8054 0.4375,1.665 0.4375,2.5625 0,4.4183 -3.58172,8 -8,8 -2.72065,0 -5.11721,-1.3623 -6.5625,-3.4375 1.06926,3.1597 4.04169,5.4375 7.5625,5.4375 4.41828,0 8,-3.5817 8,-8 0,-1.6976 -0.53567,-3.2676 -1.4375,-4.5625 z" - style="fill:#000000;fill-opacity:0.39130435;stroke:none" /> - </g> - </g> -</svg> diff --git a/application/resources/sources/herobrine.svg b/application/resources/sources/herobrine.svg deleted file mode 100644 index 7392ba36..00000000 --- a/application/resources/sources/herobrine.svg +++ /dev/null @@ -1,583 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="32" - height="32" - id="svg2" - version="1.1" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="herobrine.svg" - inkscape:export-filename="/home/peterix/projects/MultiMC4/src/resources/insticons/herobrine.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <defs - id="defs4"> - <filter - inkscape:collect="always" - id="filter3927" - x="-0.10864197" - width="1.2172839" - y="-0.10864198" - height="1.217284"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.1769547" - id="feGaussianBlur3929" /> - </filter> - <filter - inkscape:collect="always" - id="filter4035" - x="-0.066666667" - width="1.1333333" - y="-0.13333333" - height="1.2666667"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.16666667" - id="feGaussianBlur4037" /> - </filter> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#484848" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:zoom="1" - inkscape:cx="-64.2584" - inkscape:cy="64.238479" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:window-width="1607" - inkscape:window-height="1030" - inkscape:window-x="1676" - inkscape:window-y="-3" - inkscape:window-maximized="1"> - <inkscape:grid - type="xygrid" - id="grid2996" - empspacing="4" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-1020.3622)"> - <path - style="fill:#170b28;fill-opacity:1;stroke:none;filter:url(#filter3927)" - d="m 5.0606609,1024.2461 -1,1 0,24 1,1 24.0000001,0 1,-1 0,-24 -1,-1 z" - id="rect3223-4" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccccc" /> - <path - style="fill:#2b1e0d;fill-opacity:1;stroke:none" - d="m 6,1024.3622 20,0 c 1,0 2,1 2,2 l 0,7 -3,0 0,-3 -18,0 0,3 -3,0 0,-7.005 c 0,-0.995 1,-1.995 2,-1.995 z" - id="rect3978" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccccccc" /> - <path - transform="translate(0,1020.3622)" - style="fill:#421d0a;fill-opacity:1;stroke:none" - d="m 10,22 3,0 0,3 6,0 0,-3 3,0 0,6 -12,0 z" - id="rect3981" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccccc" /> - <path - transform="translate(0,1020.3622)" - style="fill:#9c694c;fill-opacity:1;stroke:none" - d="m 7,10 18,0 0,3 3,0 0,13 c 0,1 -1,2 -2,2 l -4,0 0,-6 -3,0 0,-3 6,0 0,-3 -6,0 0,3 -6,0 0,-3 -6,0 0,3 6,0 0,3 -3,0 0,6 -4,0 C 5,28 4,27 4,26 l 0,-10 0,-3 3,0 z" - id="rect3941" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccccccccccccccccccccccccc" /> - <rect - style="fill:#bb8972;fill-opacity:1;stroke:none" - id="rect3939" - width="24" - height="24" - x="42" - y="1052.6122" /> - <rect - y="1024.3622" - x="6.9999995" - height="3" - width="3" - id="rect3011-9" - style="fill:#2b1e0d;fill-opacity:1;stroke:none" /> - <rect - style="fill:#2f1f0f;fill-opacity:1;stroke:none" - id="rect3013-0" - width="3" - height="3" - x="10" - y="1024.3622" /> - <rect - style="fill:#281c0b;fill-opacity:1;stroke:none" - id="rect3017-9" - width="3" - height="3" - x="13" - y="1024.3622" /> - <rect - y="1024.3622" - x="16" - height="3" - width="3" - id="rect3019-6" - style="fill:#241808;fill-opacity:1;stroke:none" /> - <rect - style="fill:#261a0a;fill-opacity:1;stroke:none" - id="rect3021-8" - width="3" - height="3" - x="19" - y="1024.3622" /> - <rect - y="1024.3622" - x="22" - height="3" - width="3" - id="rect3023-6" - style="fill:#2b1e0d;fill-opacity:1;stroke:none" /> - <rect - y="1027.3622" - x="3.9999998" - height="3" - width="3" - id="rect3027-7" - style="fill:#2b1e0d;fill-opacity:1;stroke:none" /> - <rect - style="fill:#2b1e0d;fill-opacity:1;stroke:none" - id="rect3029-6" - width="3" - height="3" - x="6.9999995" - y="1027.3622" /> - <rect - style="fill:#2b1e0d;fill-opacity:1;stroke:none" - id="rect3033-4" - width="3" - height="3" - x="10" - y="1027.3622" /> - <rect - y="1027.3622" - x="13" - height="3" - width="3" - id="rect3035-4" - style="fill:#332411;fill-opacity:1;stroke:none" /> - <rect - style="fill:#422a12;fill-opacity:1;stroke:none" - id="rect3037-2" - width="3" - height="3" - x="16" - y="1027.3622" /> - <rect - y="1027.3622" - x="19" - height="3" - width="3" - id="rect3039-4" - style="fill:#3f2a15;fill-opacity:1;stroke:none" /> - <rect - style="fill:#2c1e0e;fill-opacity:1;stroke:none" - id="rect3041-2" - width="3" - height="3" - x="22" - y="1027.3622" /> - <rect - y="1027.3622" - x="25" - height="3" - width="3" - id="rect3043-1" - style="fill:#281c0b;fill-opacity:1;stroke:none" /> - <rect - y="1030.3622" - x="3.9999998" - height="3" - width="3" - id="rect3045-3" - style="fill:#2b1e0d;fill-opacity:1;stroke:none" /> - <rect - y="1030.3622" - x="25" - height="3" - width="3" - id="rect3061-7" - style="fill:#342512;fill-opacity:1;stroke:none" /> - <rect - style="fill:#6a4030;fill-opacity:1;stroke:none" - id="rect3177-4" - width="6" - height="3" - x="13" - y="1039.3622" /> - <rect - style="fill:#41210c;fill-opacity:1;stroke:none" - id="rect3085" - width="3" - height="3" - x="10" - y="1042.3622" /> - <rect - style="fill:#8a4c3d;fill-opacity:1;stroke:none" - id="rect3089" - width="6" - height="3" - x="13" - y="1042.3622" /> - <rect - y="1042.3622" - x="19" - height="3" - width="3" - id="rect3091" - style="fill:#41210c;fill-opacity:1;stroke:none" /> - <rect - style="fill:#421d0a;fill-opacity:1;stroke:none" - id="rect3093" - width="3" - height="3" - x="13" - y="1045.3622" /> - <rect - y="1045.3622" - x="19" - height="3" - width="3" - id="rect3095" - style="fill:#45220e;fill-opacity:1;stroke:none" /> - <rect - style="fill:#45220e;fill-opacity:1;stroke:none" - id="rect3097" - width="3" - height="3" - x="10" - y="1045.3622" /> - <rect - y="1045.3622" - x="16" - height="3" - width="3" - id="rect3099" - style="fill:#45220e;fill-opacity:1;stroke:none" /> - <g - id="g3944" - transform="translate(-28,1.7382813e-5)"> - <rect - y="1030.3622" - x="35" - height="3" - width="3" - id="rect3047-1" - style="fill:#b6896c;fill-opacity:1;stroke:none" /> - <rect - y="1030.3622" - x="38" - height="3" - width="3" - id="rect3051-9" - style="fill:#bd8e72;fill-opacity:1;stroke:none" /> - <rect - style="fill:#c69680;fill-opacity:1;stroke:none" - id="rect3053-2" - width="3" - height="3" - x="41" - y="1030.3622" /> - <rect - y="1030.3622" - x="44" - height="3" - width="3" - id="rect3055-9" - style="fill:#bd8b72;fill-opacity:1;stroke:none" /> - <rect - style="fill:#bd8e74;fill-opacity:1;stroke:none" - id="rect3057-7" - width="3" - height="3" - x="47" - y="1030.3622" /> - <rect - y="1030.3622" - x="50" - height="3" - width="3" - id="rect3059-2" - style="fill:#ac765a;fill-opacity:1;stroke:none" /> - <rect - y="1033.3622" - x="32" - height="3" - width="3" - id="rect3063-8" - style="fill:#aa7d66;fill-opacity:1;stroke:none" /> - <rect - style="fill:#b4846d;fill-opacity:1;stroke:none" - id="rect3065-6" - width="3" - height="3" - x="35" - y="1033.3622" /> - <rect - style="fill:#aa7d66;fill-opacity:1;stroke:none" - id="rect3069-9" - width="3" - height="3" - x="38" - y="1033.3622" /> - <rect - y="1033.3622" - x="41" - height="3" - width="3" - id="rect3071-7" - style="fill:#ad806d;fill-opacity:1;stroke:none" /> - <rect - style="fill:#9c725c;fill-opacity:1;stroke:none" - id="rect3073-1" - width="3" - height="3" - x="44" - y="1033.3622" /> - <rect - y="1033.3622" - x="47" - height="3" - width="3" - id="rect3075-8" - style="fill:#bb8972;fill-opacity:1;stroke:none" /> - <rect - style="fill:#9c694c;fill-opacity:1;stroke:none" - id="rect3077-8" - width="3" - height="3" - x="50" - y="1033.3622" /> - <rect - y="1033.3622" - x="53" - height="3" - width="3" - id="rect3079-2" - style="fill:#9c694c;fill-opacity:1;stroke:none" /> - <rect - style="fill:#b4846d;fill-opacity:1;stroke:none" - id="rect3153-6" - width="3" - height="3" - x="32" - y="1036.3622" /> - <rect - style="fill:#b57b67;fill-opacity:1;stroke:none" - id="rect3159-7" - width="3" - height="3" - x="41" - y="1036.3622" /> - <rect - y="1036.3622" - x="44" - height="3" - width="3" - id="rect3161-0" - style="fill:#bb8972;fill-opacity:1;stroke:none" /> - <rect - style="fill:#aa7d66;fill-opacity:1;stroke:none" - id="rect3167-3" - width="3" - height="3" - x="53" - y="1036.3622" /> - <rect - y="1039.3622" - x="32" - height="3" - width="3" - id="rect3169-4" - style="fill:#9c6346;fill-opacity:1;stroke:none" /> - <rect - style="fill:#b37b62;fill-opacity:1;stroke:none" - id="rect3171-8" - width="3" - height="3" - x="35" - y="1039.3622" /> - <rect - style="fill:#b78272;fill-opacity:1;stroke:none" - id="rect3175-0" - width="3" - height="3" - x="38" - y="1039.3622" /> - <rect - y="1039.3622" - x="47" - height="3" - width="3" - id="rect3181-9" - style="fill:#be886c;fill-opacity:1;stroke:none" /> - <rect - style="fill:#a26a47;fill-opacity:1;stroke:none" - id="rect3183-7" - width="3" - height="3" - x="50" - y="1039.3622" /> - <rect - y="1039.3622" - x="53" - height="3" - width="3" - id="rect3185-6" - style="fill:#805334;fill-opacity:1;stroke:none" /> - <rect - y="1042.3622" - x="32" - height="3" - width="3" - id="rect3187-1" - style="fill:#905e43;fill-opacity:1;stroke:none" /> - <rect - y="1042.3622" - x="53" - height="3" - width="3" - id="rect3203-8" - style="fill:#815339;fill-opacity:1;stroke:none" /> - <path - style="fill:#6f452c;fill-opacity:1;stroke:none" - d="m 32,1045.3622 3,0 0,3 -1,0 c -1,0 -2,-1 -2,-2 z" - id="rect3205-4" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccc" /> - <rect - y="1045.3622" - x="35" - height="3" - width="3" - id="rect3207-2" - style="fill:#6d432a;fill-opacity:1;stroke:none" /> - <rect - y="1045.3622" - x="50" - height="3" - width="3" - id="rect3219-4" - style="fill:#83553b;fill-opacity:1;stroke:none" /> - <path - style="fill:#7a4e33;fill-opacity:1;stroke:none" - d="m 53,1045.3622 3,0 0,1 c 0,1 -1,2 -2,2 l -1,0 z" - id="rect3221-5" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccc" /> - <rect - style="fill:#965f40;fill-opacity:1;stroke:none" - id="rect3083" - width="3" - height="3" - x="35" - y="1042.3622" /> - <rect - y="1042.3622" - x="50" - height="3" - width="3" - id="rect3101" - style="fill:#8f5e3e;fill-opacity:1;stroke:none" /> - </g> - <g - id="g4045" - transform="matrix(1.05,0,0,1.05,14.2,-51.893092)"> - <rect - y="1036.3622" - x="-7" - height="3" - width="6" - id="rect4011" - style="fill:#ffffff;fill-opacity:1;stroke:none;filter:url(#filter4035)" /> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:none;filter:url(#filter4035)" - id="rect4039" - width="6" - height="3" - x="-7" - y="1036.3622" /> - <rect - y="1036.3622" - x="-7" - height="3" - width="6" - id="rect4041" - style="fill:#ffffff;fill-opacity:1;stroke:none;filter:url(#filter4035)" /> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:none;filter:url(#filter4035)" - id="rect4043" - width="6" - height="3" - x="-7" - y="1036.3622" /> - </g> - <g - transform="matrix(1.05,0,0,1.05,26.2,-51.893092)" - id="g4051"> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:none;filter:url(#filter4035)" - id="rect4053" - width="6" - height="3" - x="-7" - y="1036.3622" /> - <rect - y="1036.3622" - x="-7" - height="3" - width="6" - id="rect4055" - style="fill:#ffffff;fill-opacity:1;stroke:none;filter:url(#filter4035)" /> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:none;filter:url(#filter4035)" - id="rect4057" - width="6" - height="3" - x="-7" - y="1036.3622" /> - <rect - y="1036.3622" - x="-7" - height="3" - width="6" - id="rect4059" - style="fill:#ffffff;fill-opacity:1;stroke:none;filter:url(#filter4035)" /> - </g> - </g> -</svg> diff --git a/application/resources/sources/magitech.svg b/application/resources/sources/magitech.svg deleted file mode 100644 index c6dd6bc0..00000000 --- a/application/resources/sources/magitech.svg +++ /dev/null @@ -1,886 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="64" - height="64" - id="svg2" - version="1.1" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="magitech.svg" - inkscape:export-filename="/home/peterix/projects/MultiMC4/src/resources/insticons/magitech128.png" - inkscape:export-xdpi="180" - inkscape:export-ydpi="180"> - <defs - id="defs4"> - <linearGradient - id="linearGradient4053"> - <stop - id="stop4055" - offset="0" - style="stop-color:#19c6a1;stop-opacity:0.75294119;" /> - <stop - id="stop4057" - offset="0.30864197" - style="stop-color:#a4f4e3;stop-opacity:1;" /> - <stop - style="stop-color:#d9f7f1;stop-opacity:1;" - offset="0.65432096" - id="stop4059" /> - <stop - id="stop4061" - offset="1" - style="stop-color:#009b78;stop-opacity:0.75294119;" /> - </linearGradient> - <linearGradient - id="linearGradient4001"> - <stop - id="stop4003" - offset="0" - style="stop-color:#000000;stop-opacity:1;" /> - <stop - id="stop4005" - offset="1" - style="stop-color:#0f5f52;stop-opacity:0" /> - </linearGradient> - <linearGradient - id="linearGradient3882"> - <stop - style="stop-color:#19c6a1;stop-opacity:1;" - offset="0" - id="stop3884" /> - <stop - style="stop-color:#a4f4e3;stop-opacity:1;" - offset="0.30864197" - id="stop3894" /> - <stop - id="stop3935" - offset="0.65432096" - style="stop-color:#d9f7f1;stop-opacity:1;" /> - <stop - style="stop-color:#009b7a;stop-opacity:1;" - offset="1" - id="stop3886" /> - </linearGradient> - <linearGradient - id="linearGradient5178"> - <stop - style="stop-color:#13daba;stop-opacity:0.50196081;" - offset="0" - id="stop5180" /> - <stop - style="stop-color:#03251f;stop-opacity:1" - offset="1" - id="stop5182" /> - </linearGradient> - <linearGradient - id="linearGradient4030"> - <stop - id="stop4032" - offset="0" - style="stop-color:#000000;stop-opacity:1;" /> - <stop - id="stop4034" - offset="1" - style="stop-color:#0c493f;stop-opacity:0;" /> - </linearGradient> - <linearGradient - id="linearGradient3954"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop3956" /> - <stop - style="stop-color:#0f5f52;stop-opacity:1;" - offset="1" - id="stop3958" /> - </linearGradient> - <linearGradient - id="linearGradient3954-9"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop3956-4" /> - <stop - style="stop-color:#0f5f52;stop-opacity:1;" - offset="1" - id="stop3958-2" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3954" - id="radialGradient4230" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.1486906,1.2798015,-0.74419869,0.66795831,19.056258,-30.328315)" - cx="32" - cy="32" - fx="32" - fy="32" - r="20" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3954" - id="radialGradient4250" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.1486906,1.2798015,-0.74419869,0.66795831,19.056258,-30.328315)" - cx="32" - cy="32" - fx="32" - fy="32" - r="20" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3919-9" - id="linearGradient3917" - x1="43.78125" - y1="42.687496" - x2="15.453125" - y2="21.578121" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.1428571,0,0,1.1428571,-2.2857143,-2.28571)" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3911-5" - id="linearGradient3929-9" - gradientUnits="userSpaceOnUse" - x1="40.5" - y1="36.999996" - x2="9" - y2="19.499996" /> - <linearGradient - inkscape:collect="always" - id="linearGradient3911-5"> - <stop - style="stop-color:#8c3800;stop-opacity:1" - offset="0" - id="stop3913-6" /> - <stop - style="stop-color:#ff6701;stop-opacity:1" - offset="1" - id="stop3915-3" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3919-9" - id="linearGradient3986" - gradientUnits="userSpaceOnUse" - x1="28" - y1="28" - x2="44" - y2="32" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3919-9" - id="linearGradient3925-4" - x1="16" - y1="16" - x2="48" - y2="48" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient3919-9"> - <stop - style="stop-color:#fff306;stop-opacity:1;" - offset="0" - id="stop3921-2" /> - <stop - style="stop-color:#ff7f01;stop-opacity:1;" - offset="1" - id="stop3923-3" /> - </linearGradient> - <linearGradient - gradientTransform="translate(-12,-12)" - y2="48" - x2="48" - y1="16" - x1="16" - gradientUnits="userSpaceOnUse" - id="linearGradient4025" - xlink:href="#linearGradient3919-9" - inkscape:collect="always" /> - <linearGradient - inkscape:collect="always" - id="linearGradient3919-9-3"> - <stop - style="stop-color:#ff9e06;stop-opacity:1" - offset="0" - id="stop3921-2-9" /> - <stop - style="stop-color:#af4600;stop-opacity:1" - offset="1" - id="stop3923-3-4" /> - </linearGradient> - <linearGradient - gradientTransform="translate(-8,-8)" - y2="48" - x2="48" - y1="16" - x1="16" - gradientUnits="userSpaceOnUse" - id="linearGradient4065" - xlink:href="#linearGradient3919-9-3" - inkscape:collect="always" /> - <linearGradient - inkscape:collect="always" - id="linearGradient3919-9-35"> - <stop - style="stop-color:#ff9e06;stop-opacity:1" - offset="0" - id="stop3921-2-3" /> - <stop - style="stop-color:#af4600;stop-opacity:1" - offset="1" - id="stop3923-3-5" /> - </linearGradient> - <linearGradient - gradientTransform="translate(-8,-8)" - y2="48" - x2="48" - y1="16" - x1="16" - gradientUnits="userSpaceOnUse" - id="linearGradient4098" - xlink:href="#linearGradient3919-9-35" - inkscape:collect="always" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3954-5" - id="radialGradient4024" - gradientUnits="userSpaceOnUse" - cx="32" - cy="32" - fx="32" - fy="32" - r="20" - gradientTransform="matrix(1.1486906,1.2798015,-0.74419869,0.66795831,19.056258,-30.328315)" /> - <linearGradient - id="linearGradient3954-5"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop3956-5" /> - <stop - style="stop-color:#0f5f52;stop-opacity:1;" - offset="1" - id="stop3958-3" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - inkscape:collect="always" - id="filter3916-4" - x="-0.11491533" - width="1.2298307" - y="-0.11548609" - height="1.2309722"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.6059988" - id="feGaussianBlur3918-4" /> - </filter> - <filter - color-interpolation-filters="sRGB" - inkscape:collect="always" - id="filter4082-1" - x="-0.13465963" - width="1.2693193" - y="-0.12490681" - height="1.2498136"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.763901" - id="feGaussianBlur4084-4" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3919-9" - id="linearGradient4440" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.1428571,0,0,1.1428571,-2.2857143,-2.28571)" - x1="43.78125" - y1="42.687496" - x2="15.453125" - y2="21.578121" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3919-9" - id="linearGradient4442" - gradientUnits="userSpaceOnUse" - x1="28" - y1="28" - x2="44" - y2="32" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3954-5" - id="radialGradient4453" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.3784287,1.5357628,-0.89303843,0.80155051,16.46751,-42.794012)" - cx="32" - cy="32" - fx="32" - fy="32" - r="20" /> - <filter - inkscape:collect="always" - id="filter4462"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.68" - id="feGaussianBlur4464" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3919-9-1" - id="linearGradient4438-1" - gradientUnits="userSpaceOnUse" - x1="16" - y1="16" - x2="48" - y2="48" /> - <linearGradient - id="linearGradient3919-9-1"> - <stop - style="stop-color:#fff306;stop-opacity:1;" - offset="0" - id="stop3921-2-92" /> - <stop - style="stop-color:#ff7f01;stop-opacity:1;" - offset="1" - id="stop3923-3-6" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3919-9" - id="linearGradient5119" - gradientUnits="userSpaceOnUse" - x1="16" - y1="16" - x2="48" - y2="48" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5178" - id="linearGradient5184" - x1="10.429825" - y1="1007.6377" - x2="38.114223" - y2="1024.6941" - gradientUnits="userSpaceOnUse" /> - <filter - color-interpolation-filters="sRGB" - inkscape:collect="always" - id="filter3992"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.44" - id="feGaussianBlur3994" /> - </filter> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3954-1" - id="radialGradient4024-7" - gradientUnits="userSpaceOnUse" - cx="32" - cy="32" - fx="32" - fy="32" - r="20" - gradientTransform="matrix(1.1486906,1.2798015,-0.74419869,0.66795831,19.056258,-30.328315)" /> - <linearGradient - id="linearGradient3954-1"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop3956-2" /> - <stop - style="stop-color:#0f5f52;stop-opacity:1;" - offset="1" - id="stop3958-9" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - inkscape:collect="always" - id="filter3884"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.505" - id="feGaussianBlur3886" /> - </filter> - <filter - color-interpolation-filters="sRGB" - inkscape:collect="always" - id="filter3898" - x="-0.20110182" - width="1.4022036" - y="-0.20210065" - height="1.4042013"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.0604979" - id="feGaussianBlur3900" /> - </filter> - <filter - color-interpolation-filters="sRGB" - inkscape:collect="always" - id="filter3916" - x="-0.11491533" - width="1.2298307" - y="-0.11548609" - height="1.2309722"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.6059988" - id="feGaussianBlur3918" /> - </filter> - <filter - color-interpolation-filters="sRGB" - inkscape:collect="always" - id="filter4110" - x="-0.17716113" - width="1.3543223" - y="-0.17804106" - height="1.3560821"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.93424815" - id="feGaussianBlur4112" /> - </filter> - <filter - color-interpolation-filters="sRGB" - inkscape:collect="always" - id="filter4082" - x="-0.13465963" - width="1.2693193" - y="-0.12490681" - height="1.2498136"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.763901" - id="feGaussianBlur4084" /> - </filter> - <linearGradient - gradientTransform="translate(-72.736544,988.32667)" - inkscape:collect="always" - xlink:href="#linearGradient3919-9-7" - id="linearGradient3986-9" - gradientUnits="userSpaceOnUse" - x1="28" - y1="28" - x2="44" - y2="32" /> - <linearGradient - id="linearGradient3919-9-7"> - <stop - style="stop-color:#fff306;stop-opacity:1;" - offset="0" - id="stop3921-2-93" /> - <stop - style="stop-color:#ff7f01;stop-opacity:1;" - offset="1" - id="stop3923-3-0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3919-9-7" - id="linearGradient3917-1" - x1="43.78125" - y1="42.687496" - x2="15.453125" - y2="21.578121" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.1428571,0,0,1.1428571,-75.022254,986.04097)" /> - <linearGradient - id="linearGradient5362"> - <stop - style="stop-color:#fff306;stop-opacity:1;" - offset="0" - id="stop5364" /> - <stop - style="stop-color:#ff7f01;stop-opacity:1;" - offset="1" - id="stop5366" /> - </linearGradient> - <linearGradient - gradientTransform="translate(-72.736544,988.32667)" - inkscape:collect="always" - xlink:href="#linearGradient3919-9-7" - id="linearGradient3925-4-8" - x1="16" - y1="16" - x2="48" - y2="48" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient5369"> - <stop - style="stop-color:#fff306;stop-opacity:1;" - offset="0" - id="stop5371" /> - <stop - style="stop-color:#ff7f01;stop-opacity:1;" - offset="1" - id="stop5373" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3882" - id="linearGradient3888" - x1="42.125" - y1="10.375" - x2="24.75" - y2="56.125" - gradientUnits="userSpaceOnUse" - spreadMethod="pad" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient5178-5" - id="linearGradient5184-3" - x1="-58.570175" - y1="1003.1377" - x2="-18.635777" - y2="1034.4441" - gradientUnits="userSpaceOnUse" /> - <linearGradient - inkscape:collect="always" - id="linearGradient5178-5"> - <stop - style="stop-color:#13daba;stop-opacity:1" - offset="0" - id="stop5180-8" /> - <stop - style="stop-color:#03251f;stop-opacity:1" - offset="1" - id="stop5182-3" /> - </linearGradient> - <filter - color-interpolation-filters="sRGB" - inkscape:collect="always" - id="filter4462-8"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.68" - id="feGaussianBlur4464-6" /> - </filter> - <linearGradient - gradientTransform="translate(0.03199987,-988.33014)" - y2="1024.6941" - x2="38.114223" - y1="1007.6377" - x1="10.429825" - gradientUnits="userSpaceOnUse" - id="linearGradient3913" - xlink:href="#linearGradient5178-5" - inkscape:collect="always" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4001" - id="linearGradient3999" - x1="38.625706" - y1="34.124741" - x2="31.201086" - y2="28.82144" - gradientUnits="userSpaceOnUse" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4053" - id="linearGradient4023" - gradientUnits="userSpaceOnUse" - spreadMethod="pad" - x1="42.125" - y1="10.375" - x2="24.75" - y2="56.125" - gradientTransform="translate(0.375,988.42468)" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4001" - id="linearGradient4081" - gradientUnits="userSpaceOnUse" - x1="38.183765" - y1="33.064079" - x2="31.201086" - y2="28.82144" /> - <filter - inkscape:collect="always" - id="filter4101" - x="-0.2597809" - width="1.5195618" - y="-0.34475598" - height="1.689512"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.3585616" - id="feGaussianBlur4103" /> - </filter> - <filter - inkscape:collect="always" - id="filter4153" - x="-0.10485404" - width="1.2097081" - y="-0.054822425" - height="1.1096448"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.0071355" - id="feGaussianBlur4155" /> - </filter> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="20" - inkscape:cx="33.36206" - inkscape:cy="39.612969" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - showguides="true" - inkscape:guide-bbox="true" - inkscape:window-width="1607" - inkscape:window-height="1030" - inkscape:window-x="1676" - inkscape:window-y="-3" - inkscape:window-maximized="1"> - <inkscape:grid - type="xygrid" - id="grid2985" - empspacing="4" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" - spacingx="1px" - spacingy="1px" /> - <sodipodi:guide - orientation="0,1" - position="11.25,96.5" - id="guide4252" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-988.36218)"> - <g - id="g4430"> - <path - style="color:#000000;fill:url(#linearGradient5184);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4462);enable-background:accumulate;opacity:1" - d="m 28,992.36214 -4,4.00004 0,4.00002 -3,-3.00002 -6,0 -6,6.00002 0,6 3,3 -4,0 -4,4 0,8 4,4 4,0 -3,3 0,6 6,6 6,0 c 1.147043,0.435 1.437261,0.5242 1.5,3.3125 2.236628,0.5754 7.083754,1.6875 9.5,1.6875 15.46397,0 28,-12.536 28,-28 0,-11.5626 -6.99928,-21.50902 -17,-25.78131 -0.666614,1.59048 -2.504535,2.24015 -3,1.78129 l -4,-4.00004 z" - id="rect4162" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccccccccccccccsscccc" /> - <path - id="rect3071" - d="m 28,8 0,4.40625 c -0.222736,0.04523 -0.43627,0.103686 -0.65625,0.15625 -0.410499,0.09787 -0.818477,0.190041 -1.21875,0.3125 -0.02176,0.0067 -0.04077,0.02449 -0.0625,0.03125 -0.591863,0.183324 -1.183088,0.389835 -1.75,0.625 -0.500562,0.208804 -0.989768,0.440151 -1.46875,0.6875 -0.08271,0.04255 -0.167971,0.08132 -0.25,0.125 -0.556479,0.297288 -1.101494,0.621939 -1.625,0.96875 l -3.125,-3.125 -5.65625,5.65625 3.125,3.125 c -0.341672,0.515748 -0.675122,1.045976 -0.96875,1.59375 -0.04801,0.08987 -0.07834,0.190559 -0.125,0.28125 -0.232389,0.450012 -0.457832,0.905888 -0.65625,1.375 -0.01273,0.03027 -0.01866,0.0634 -0.03125,0.09375 -0.237526,0.569414 -0.440047,1.155357 -0.625,1.75 -0.130645,0.421788 -0.240463,0.848047 -0.34375,1.28125 C 12.509936,27.56373 12.451477,27.777264 12.40625,28 L 8,28 l 0,8 4.40625,0 c 0.04523,0.222736 0.103686,0.43627 0.15625,0.65625 0.09787,0.410499 0.190041,0.818477 0.3125,1.21875 0.0067,0.02176 0.02449,0.04077 0.03125,0.0625 0.183324,0.591863 0.389835,1.183088 0.625,1.75 0.208804,0.500562 0.440151,0.989768 0.6875,1.46875 0.04666,0.09069 0.07699,0.191375 0.125,0.28125 0.01751,0.03266 0.04481,0.06119 0.0625,0.09375 0.278784,0.514793 0.584173,1.01383 0.90625,1.5 l -3.125,3.125 5.65625,5.65625 3.125,-3.125 c 0.523506,0.346811 1.068521,0.671462 1.625,0.96875 0.08203,0.04368 0.167292,0.08245 0.25,0.125 0.450012,0.232389 0.905888,0.457832 1.375,0.65625 0.03027,0.01273 0.0634,0.01866 0.09375,0.03125 0.569414,0.237526 1.155357,0.440047 1.75,0.625 0.421788,0.130645 0.848047,0.240463 1.28125,0.34375 0.21027,0.05024 0.412209,0.112707 0.625,0.15625 0.01001,0.002 0.02124,-0.002 0.03125,0 l 8,0 c 0.22283,-0.04525 0.436163,-0.103776 0.65625,-0.15625 0.923563,-0.220682 1.81865,-0.499897 2.6875,-0.84375 0.618794,-0.243545 1.225752,-0.510633 1.8125,-0.8125 0.08255,-0.04263 0.168126,-0.08126 0.25,-0.125 0.558072,-0.297141 1.100165,-0.621059 1.625,-0.96875 l 5.65625,-5.65625 c 0.342758,-0.517388 0.6751,-1.044039 0.96875,-1.59375 0.04827,-0.09005 0.07808,-0.190386 0.125,-0.28125 0.301867,-0.586748 0.568955,-1.193706 0.8125,-1.8125 0.343853,-0.86885 0.623068,-1.763937 0.84375,-2.6875 0.05247,-0.220087 0.111003,-0.43342 0.15625,-0.65625 l 0,-8 c -0.002,-0.0098 0.002,-0.02142 0,-0.03125 -0.04353,-0.2127 -0.106134,-0.414805 -0.15625,-0.625 -0.220682,-0.923563 -0.499897,-1.81865 -0.84375,-2.6875 -0.243545,-0.618794 -0.510633,-1.225752 -0.8125,-1.8125 -0.04692,-0.09086 -0.07673,-0.191205 -0.125,-0.28125 C 49.3626,22.012789 49.030258,21.486138 48.6875,20.96875 L 43.03125,15.3125 c -0.484994,-0.321298 -0.986607,-0.627358 -1.5,-0.90625 -0.04094,-0.02217 -0.08389,-0.04061 -0.125,-0.0625 -0.08187,-0.04374 -0.167451,-0.08237 -0.25,-0.125 -0.586748,-0.301867 -1.193706,-0.568955 -1.8125,-0.8125 -0.86885,-0.343853 -1.763937,-0.623068 -2.6875,-0.84375 -0.210195,-0.05012 -0.4123,-0.112724 -0.625,-0.15625 -0.0098,-0.002 -0.02142,0.002 -0.03125,0 L 36,8 z m 4,20 c 2.209139,0 4,1.790861 4,4 0,2.209139 -1.790861,4 -4,4 -0.276142,0 -0.55211,-0.04047 -0.8125,-0.09375 C 29.364767,35.533265 28,33.932997 28,32 28,31.723858 28.040466,31.44789 28.09375,31.1875 28.466735,29.364767 30.067003,28 32,28 z" - style="color:#000000;fill:url(#linearGradient5119);fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccssscsss" - transform="translate(0,988.36218)" /> - <path - id="path3874" - transform="translate(0,988.36218)" - d="m 32,16 c -8.836556,0 -16,7.163444 -16,16 0,8.836556 7.163444,16 16,16 8.836556,0 16,-7.163444 16,-16 0,-8.836556 -7.163444,-16 -16,-16 z m 0,12 c 2.209139,0 4,1.790861 4,4 0,2.209139 -1.790861,4 -4,4 -2.209139,0 -4,-1.790861 -4,-4 0,-2.209139 1.790861,-4 4,-4 z" - style="fill:url(#linearGradient4440);fill-opacity:1;stroke:none" - inkscape:connector-curvature="0" /> - <path - id="path3876" - transform="translate(0,988.36218)" - d="m 32,24 c -4.418278,0 -8,3.581722 -8,8 0,4.418278 3.581722,8 8,8 4.418278,0 8,-3.581722 8,-8 0,-4.418278 -3.581722,-8 -8,-8 z m 0,4 c 2.209139,0 4,1.790861 4,4 0,2.209139 -1.790861,4 -4,4 -2.209139,0 -4,-1.790861 -4,-4 0,-2.209139 1.790861,-4 4,-4 z" - style="fill:url(#linearGradient4442);fill-opacity:1;stroke:none" - inkscape:connector-curvature="0" /> - <path - inkscape:connector-curvature="0" - id="path3927" - d="m 32,1004.3622 c -8.836556,0 -16,7.1634 -16,16 0,4.8907 2.198478,9.2526 5.65625,12.1875 C 19.373756,1029.7839 18,1026.2282 18,1022.3622 c 0,-8.8366 7.163444,-16 16,-16 3.86599,0 7.42176,1.3737 10.1875,3.6562 -2.93487,-3.4577 -7.29683,-5.6562 -12.1875,-5.6562 z" - style="fill:#000000;fill-opacity:0.39130435;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="path3970" - d="m 39.5625,1017.7997 c 0.272555,0.8054 0.4375,1.665 0.4375,2.5625 0,4.4183 -3.581722,8 -8,8 -2.720651,0 -5.117207,-1.3623 -6.5625,-3.4375 1.069255,3.1597 4.041685,5.4375 7.5625,5.4375 4.418278,0 8,-3.5817 8,-8 0,-1.6976 -0.535669,-3.2676 -1.4375,-4.5625 z" - style="fill:#000000;fill-opacity:0.39130435;stroke:none" /> - </g> - <g - id="g5168"> - <path - style="fill:url(#linearGradient4081);fill-opacity:1;stroke:none" - d="M 42.3125,10.34375 C 42.036647,17.156583 44.403627,25.298186 33,31 18.729736,38.135058 22.534188,45.86375 26.144531,55.257813 c 0.677562,0.217822 -0.12077,-0.0069 0.580514,0.151895 C 28.421984,55.79405 30.185284,56 32,56 45.254834,56 56,45.254843 56,32 56,22.438466 50.403908,14.202051 42.3125,10.34375 z" - id="path3997" - transform="translate(0,988.36218)" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cscsssc" /> - <path - sodipodi:type="arc" - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4101);enable-background:accumulate" - id="path4083" - sodipodi:cx="13.611806" - sodipodi:cy="37.881245" - sodipodi:rx="6.2755728" - sodipodi:ry="4.7287765" - d="m 19.887379,37.881245 c 0,2.611631 -2.80967,4.728776 -6.275573,4.728776 -3.465903,0 -6.2755729,-2.117145 -6.2755729,-4.728776 0,-2.611631 2.8096699,-4.728777 6.2755729,-4.728777 3.465903,0 6.275573,2.117146 6.275573,4.728777 z" - transform="matrix(1.338311,0,0,1.4370006,15.945267,978.21621)" /> - <path - id="path3014" - d="m 42.3125,10.34375 c 1.626929,3.407127 2.260167,8.676072 -0.03685,13.414814 -1.556024,3.210082 -3.304624,6.220765 -7.658776,8.522607 -4.247767,2.245602 -8.002291,2.8045 -9.732287,4.512181 -4.014531,3.96275 -2.278905,11.00222 1.274261,18.448146 C 28.475952,55.986401 29.435328,56 32,56 45.254834,56 56,45.254843 56,32 56,22.438466 50.403908,14.202051 42.3125,10.34375 z" - style="opacity:0.87029275;fill:url(#radialGradient4453);fill-opacity:1;stroke:none" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cssscssc" - transform="translate(0,988.36218)" /> - <path - sodipodi:nodetypes="ssccs" - inkscape:connector-curvature="0" - id="path3902" - d="m 28,1004.3622 c -6.627417,0 -12,5.3726 -12,12 0,0.2018 0.0214,0.3944 0.03125,0.5937 3.96875,-8.5937 5.96875,-6.5937 12.625,-12.5625 -0.219998,-0.012 -0.433254,-0.031 -0.65625,-0.031 z" - style="fill:#00ffcc;fill-opacity:1;stroke:none;filter:url(#filter3916-4);opacity:1" - transform="matrix(-1.8719467,0,0,-1.871948,82.871731,2921.8992)" /> - <path - transform="matrix(-1.2147547,0,0,-1.2147555,70.284181,2259.2303)" - style="fill:#d7f4d7;fill-opacity:1;stroke:none;filter:url(#filter3916-4);opacity:1" - d="m 28,1004.3622 c -6.627417,0 -12,5.3726 -12,12 0,0.2018 0.0214,0.3944 0.03125,0.5937 3.96875,-8.5937 5.96875,-6.5937 12.625,-12.5625 -0.219998,-0.012 -0.433254,-0.031 -0.65625,-0.031 z" - id="path3920" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ssccs" /> - <path - transform="translate(0,988.36218)" - id="path4036" - d="M 44.78125 21.6875 L 41.28125 22.8125 C 41.121938 23.226574 40.928384 23.623793 40.71875 24.03125 L 44.78125 21.6875 z M 36.90625 28.53125 C 35.824388 29.387261 34.550485 30.224758 33 31 C 31.216966 31.891508 29.738803 32.739507 28.5 33.5625 C 29.458327 33.796351 30.4375 34.03125 30.4375 34.03125 L 30.4375 37.09375 C 30.4375 38.113344 28.40625 40.167906 28.40625 41.1875 L 28.40625 44.25 C 28.40625 44.25 29.900129 47.688 30.03125 48.625 C 30.45923 51.683387 29.509385 42.154431 29.71875 41.78125 C 30.864146 39.739651 32.416773 37.15625 33.03125 37.15625 C 33.264553 37.15625 34.697228 36.035418 35.9375 37.4375 C 37.107979 38.760684 38.10456 42.614278 38.4375 42.28125 C 39.293559 41.424965 36.5625 34.03125 36.5625 34.03125 L 42.78125 33.34375 L 47.1875 28.875 L 42.03125 32 L 38.59375 32 L 36.5625 29.96875 L 36.90625 28.53125 z " - style="opacity:0.86178864;fill:#000000;fill-opacity:0.86666667;stroke:none;filter:url(#filter4082-1)" /> - <path - style="opacity:0.9497908;fill:url(#linearGradient3888);fill-opacity:1;stroke:none" - d="m 42.327724,10.343784 c -0.548738,-0.247754 -2.642269,-0.03831 -5.109835,2.376588 l 2.056042,0.657478 c 1.127203,-0.71102 1.815028,-0.50787 1.967315,-0.459692 1.494171,0.472705 0.645754,4.388833 0.1693,6.47919 -1.552718,8.361211 -9.002523,11.324205 -15.159208,14.152866 -3.345171,1.559801 -4.737296,4.36486 -5.23858,8.881728 -0.501284,4.516868 2.508904,8.819746 5.132693,12.829082 0.669966,0.210667 -0.142632,-0.006 0.54783,0.143209 0,0 -4.830399,-7.064617 -3.406092,-13.736155 1.213309,-5.683211 5.53111,-6.436498 9.626097,-8.496005 7.176567,-3.609337 10.985289,-9.424678 11.4425,-16.679509 0.19205,-3.226247 -1.020059,-5.693669 -2.028062,-6.14878 z" - id="path3112" - inkscape:connector-curvature="0" - sodipodi:nodetypes="sccscczccsscs" - transform="translate(0,988.36218)" /> - <path - sodipodi:nodetypes="ccczccsscc" - inkscape:connector-curvature="0" - id="path4021" - d="m 42.985537,999.28252 c 0.436543,5.62048 0.126695,2.81738 -1.199991,8.53948 -1.552718,8.3612 -6.315023,11.7617 -12.471708,14.5904 -3.345171,1.5598 -6.976573,2.6274 -7.477857,7.1442 -0.501284,4.5169 1.758904,9.6635 4.382693,13.6728 0.669966,0.2107 -0.142632,-0.01 0.54783,0.1432 0,0 -4.450497,-6.5927 -3.02619,-13.2642 1.213309,-5.6833 5.46861,-6.3427 9.563597,-8.4022 7.176567,-3.6094 11.032164,-9.3934 11.489375,-16.6483 0.19205,-3.2262 -0.760684,-4.5078 -1.807749,-5.77538 z" - style="opacity:1;fill:url(#linearGradient4023);fill-opacity:1;stroke:none;filter:url(#filter4153)" /> - </g> - <g - transform="translate(72.5,-1.500004)" - id="g4268"> - <path - transform="matrix(1.1666667,0,0,1.1666667,-5.3333344,983.02885)" - d="M 56,32 C 56,45.254834 45.254834,56 32,56 18.745166,56 8,45.254834 8,32 8,18.745166 18.745166,8 32,8 45.254834,8 56,18.745166 56,32 z" - sodipodi:ry="24" - sodipodi:rx="24" - sodipodi:cy="32" - sodipodi:cx="32" - id="path3005" - style="fill:#032620;fill-opacity:1;stroke:none;filter:url(#filter3992)" - sodipodi:type="arc" /> - <g - transform="matrix(1.0195929,0,0,1.0195936,-0.15674338,-19.992546)" - id="g4116"> - <path - sodipodi:type="arc" - style="fill:url(#radialGradient4024-7);fill-opacity:1;stroke:none" - id="path3014-0" - sodipodi:cx="32" - sodipodi:cy="32" - sodipodi:rx="20" - sodipodi:ry="20" - d="M 52,32 C 52,43.045695 43.045695,52 32,52 20.954305,52 12,43.045695 12,32 12,20.954305 20.954305,12 32,12 c 11.045695,0 20,8.954305 20,20 z" - transform="matrix(1.1769403,0,0,1.1769403,-6.1232836,982.70009)" /> - <path - style="fill:#00ffcc;fill-opacity:1;stroke:none;filter:url(#filter3884)" - d="m 28,16 c -6.627417,0 -12,5.372583 -12,12 0,0.20181 0.0214,0.394383 0.03125,0.59375 C 20,20 22,22 28.65625,16.03125 28.436252,16.019242 28.222996,16 28,16 z" - transform="matrix(1.1769403,0,0,1.1769403,-5.6620909,982.68843)" - id="path3866" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ssccs" /> - <path - sodipodi:nodetypes="ssccs" - inkscape:connector-curvature="0" - id="path3888" - d="m 28,1004.3622 c -6.627417,0 -12,5.3726 -12,12 0,0.2018 0.0214,0.3944 0.03125,0.5937 3.96875,-8.5937 5.96875,-6.5937 12.625,-12.5625 -0.219998,-0.012 -0.433254,-0.031 -0.65625,-0.031 z" - style="fill:#00ffcc;fill-opacity:1;stroke:none;filter:url(#filter3898)" - transform="matrix(1.487885,0,0,1.487885,-10.597031,-493.22036)" /> - <path - transform="matrix(-1.8359746,0,0,-1.8359746,81.432966,2885.3572)" - style="fill:#00ffcc;fill-opacity:1;stroke:none;filter:url(#filter3916)" - d="m 28,1004.3622 c -6.627417,0 -12,5.3726 -12,12 0,0.2018 0.0214,0.3944 0.03125,0.5937 3.96875,-8.5937 5.96875,-6.5937 12.625,-12.5625 -0.219998,-0.012 -0.433254,-0.031 -0.65625,-0.031 z" - id="path3902-7" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ssccs" /> - <path - sodipodi:nodetypes="ssccs" - inkscape:connector-curvature="0" - id="path3920-6" - d="m 28,1004.3622 c -6.627417,0 -12,5.3726 -12,12 0,0.2018 0.0214,0.3944 0.03125,0.5937 3.96875,-8.5937 5.96875,-6.5937 12.625,-12.5625 -0.219998,-0.012 -0.433254,-0.031 -0.65625,-0.031 z" - style="fill:#d7f4d7;fill-opacity:1;stroke:none;filter:url(#filter3916)" - transform="matrix(-1.1914115,0,0,-1.1914115,69.087304,2235.4229)" /> - <path - transform="matrix(0.58516297,0,0,0.58516297,6.7391969,416.10681)" - style="fill:#ffffff;fill-opacity:1;stroke:none;filter:url(#filter4110)" - d="m 28,1004.3622 c -6.627417,0 -12,5.3726 -12,12 0,0.2018 0.0214,0.3944 0.03125,0.5937 5.570868,-4.4816 8.905966,-4.4575 12.625,-12.5625 -0.219998,-0.012 -0.433254,-0.031 -0.65625,-0.031 z" - id="path3964" - inkscape:connector-curvature="0" - sodipodi:nodetypes="csccsc" /> - <path - style="opacity:0.86178864;fill:#000000;fill-opacity:0.86666667;stroke:none;filter:url(#filter4082)" - d="M 30,29 30.450431,19.407328 32.447263,28.5316 35,27 l 1,-6 -1,-4 1,-2 0,3 1.125,3.375 -0.07418,2.744617 L 44.0828,21.873859 37,26 l -1,4 2,2 3.375,0 5.0625,-3.0625 -4.3125,4.375 L 36,34 c 0,0 2.686048,7.256632 1.846439,8.096462 -0.326542,0.326628 -1.289256,-3.475594 -2.437243,-4.77335 C 34.192758,35.947974 32.79132,37.0625 32.5625,37.0625 c -0.602669,0 -2.136064,2.519769 -3.25945,4.522134 -0.205342,0.36601 0.728015,9.714733 0.308259,6.715119 C 29.482708,47.380759 28,44 28,44 c 0,0 0,-2 0,-3 0,-1 2,-3 2,-4 0,-1 0,-3 0,-3 0,0 -4.25,-1.125 -5.25,-1.125 -0.47674,0 -1.893857,0.89205 -3.377184,1.040709 C 19.744745,34.078874 18.0625,33.5 18.0625,33.5 L 16.774038,34.754808 17,39 l -2,-4 2,-3 3.8125,-0.0625 1.170423,-6.693425 3.092068,-2.055016 -2.122126,3.038537 -0.913529,5.350612 L 28,31 z" - id="path4036-3" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccccccccccccccssssscsscsscccccccccccc" - transform="translate(0,988.36218)" /> - </g> - </g> - <path - style="color:#000000;fill:url(#linearGradient5184-3);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4462-8);enable-background:accumulate" - d="m -44.736544,992.32667 -4,4 0,4.00003 -3,-3.00003 -6,0 -6,6.00003 0,6 3,3 -4,0 -4,4 0,8 4,4 4,0 -3,3 0,6 6,6 6,0 3,-3 0,4 4,4 8,0 4,-4 0,-4 3,3 6,0 6,-6 0,-6 -3,-3 4,0 4,-4 0,-8 -4,-4 -4,0 3,-3 0,-6 -6,-6.00003 -6,0 -3,3.00003 0,-4.00003 -4,-4 z" - id="rect4162-6" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccc" /> - <path - inkscape:connector-curvature="0" - style="color:#000000;fill:url(#linearGradient3925-4-8);fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="m -44.736544,996.32667 0,4.40623 c -0.222736,0.045 -0.43627,0.1037 -0.65625,0.1563 -0.410499,0.098 -0.818477,0.19 -1.21875,0.3125 -0.0218,0.01 -0.0408,0.024 -0.0625,0.031 -0.59186,0.1833 -1.18309,0.3898 -1.75,0.625 -0.50056,0.2088 -0.98977,0.4401 -1.46875,0.6875 -0.0827,0.043 -0.16797,0.081 -0.25,0.125 -0.55648,0.2973 -1.10149,0.6219 -1.625,0.9687 l -3.125,-3.125 -5.65625,5.6562 3.125,3.125 c -0.34167,0.5158 -0.67512,1.046 -0.96875,1.5938 -0.048,0.09 -0.0783,0.1905 -0.125,0.2812 -0.23239,0.45 -0.45783,0.9059 -0.65625,1.375 -0.0127,0.03 -0.0187,0.063 -0.0312,0.094 -0.23753,0.5694 -0.44005,1.1553 -0.625,1.75 -0.13065,0.4218 -0.24046,0.848 -0.34375,1.2812 -0.0526,0.22 -0.11102,0.4335 -0.15625,0.6563 l -4.40625,0 0,8 4.40625,0 c 0.0452,0.2227 0.10369,0.4363 0.15625,0.6562 0.0979,0.4105 0.19004,0.8185 0.3125,1.2188 0.007,0.022 0.0245,0.041 0.0312,0.062 0.18332,0.5918 0.38983,1.1831 0.625,1.75 0.2088,0.5005 0.44015,0.9897 0.6875,1.4687 0.0467,0.091 0.077,0.1914 0.125,0.2813 0.0175,0.033 0.0448,0.061 0.0625,0.094 0.27878,0.5148 0.58417,1.0139 0.90625,1.5 l -3.125,3.125 5.65625,5.6563 3.125,-3.125 c 0.52351,0.3468 1.06852,0.6714 1.625,0.9687 0.082,0.044 0.16729,0.082 0.25,0.125 0.45001,0.2324 0.90589,0.4579 1.375,0.6563 0.0303,0.013 0.0634,0.019 0.0937,0.031 0.56941,0.2376 1.15536,0.4401 1.75,0.625 0.42179,0.1307 0.848047,0.2405 1.28125,0.3438 0.21027,0.05 0.412209,0.1127 0.625,0.1562 0.01001,0 0.02124,0 0.03125,0 l 0,4.4063 8,0 0,-4.4063 c 0.22283,-0.045 0.436163,-0.1037 0.65625,-0.1562 0.923563,-0.2207 1.81865,-0.4999 2.6875,-0.8438 0.618794,-0.2435 1.225752,-0.5106 1.8125,-0.8125 0.08255,-0.043 0.168126,-0.081 0.25,-0.125 0.558072,-0.2971 1.100165,-0.621 1.625,-0.9687 l 3.125,3.125 5.65625,-5.6563 -3.125,-3.125 c 0.342758,-0.5174 0.6751,-1.044 0.96875,-1.5937 0.04827,-0.09 0.07808,-0.1904 0.125,-0.2813 0.301867,-0.5867 0.568955,-1.1937 0.8125,-1.8125 0.343853,-0.8688 0.623068,-1.7639 0.84375,-2.6875 0.05247,-0.2201 0.111003,-0.4334 0.15625,-0.6562 l 4.40625,0 0,-8 -4.40625,0 c -0.002,-0.01 0.002,-0.021 0,-0.031 -0.04353,-0.2127 -0.106134,-0.4148 -0.15625,-0.625 -0.220682,-0.9235 -0.499897,-1.8186 -0.84375,-2.6875 -0.243545,-0.6188 -0.510633,-1.2257 -0.8125,-1.8125 -0.04692,-0.091 -0.07673,-0.1912 -0.125,-0.2812 -0.29365,-0.5497 -0.625992,-1.0764 -0.96875,-1.5938 l 3.125,-3.125 -5.65625,-5.6562 -3.125,3.125 c -0.484994,-0.3213 -0.986607,-0.6273 -1.5,-0.9062 -0.04094,-0.022 -0.08389,-0.041 -0.125,-0.062 -0.08187,-0.044 -0.167451,-0.082 -0.25,-0.125 -0.586748,-0.3019 -1.193706,-0.569 -1.8125,-0.8125 -0.86885,-0.3439 -1.763937,-0.6231 -2.6875,-0.8438 -0.210195,-0.05 -0.4123,-0.1127 -0.625,-0.1562 -0.0098,0 -0.02142,0 -0.03125,0 l 0,-4.40633 -8,0 z m 4,20.00003 c 2.209139,0 4,1.7908 4,4 0,2.2091 -1.790861,4 -4,4 -0.276142,0 -0.55211,-0.041 -0.8125,-0.094 -1.822733,-0.373 -3.1875,-1.9732 -3.1875,-3.9062 0,-0.2762 0.04047,-0.5521 0.09375,-0.8125 0.372985,-1.8228 1.973253,-3.1875 3.90625,-3.1875 z" - id="rect3071-3" /> - <path - inkscape:connector-curvature="0" - style="fill:url(#linearGradient3917-1);fill-opacity:1;stroke:none" - d="m -40.736544,1004.3267 c -8.83656,0 -16,7.1634 -16,16 0,8.8365 7.16344,16 16,16 8.836556,0 16,-7.1635 16,-16 0,-8.8366 -7.163444,-16 -16,-16 z m 0,12 c 2.209139,0 4,1.7908 4,4 0,2.2091 -1.790861,4 -4,4 -2.209139,0 -4,-1.7909 -4,-4 0,-2.2092 1.790861,-4 4,-4 z" - id="path3874-0" /> - <path - inkscape:connector-curvature="0" - style="fill:url(#linearGradient3986-9);fill-opacity:1;stroke:none" - d="m -40.736544,1012.3267 c -4.418278,0 -8,3.5817 -8,8 0,4.4183 3.581722,8 8,8 4.418278,0 8,-3.5817 8,-8 0,-4.4183 -3.581722,-8 -8,-8 z m 0,4 c 2.209139,0 4,1.7908 4,4 0,2.2091 -1.790861,4 -4,4 -2.209139,0 -4,-1.7909 -4,-4 0,-2.2092 1.790861,-4 4,-4 z" - id="path3876-7" /> - <path - style="fill:#000000;fill-opacity:0.39130435;stroke:none" - d="m -40.736544,1004.3267 c -8.83656,0 -16,7.1634 -16,16 0,4.8907 2.19848,9.2526 5.65625,12.1875 -2.28249,-2.7658 -3.65625,-6.3215 -3.65625,-10.1875 0,-8.8366 7.16344,-16 16,-16 3.86599,0 7.42176,1.3737 10.1875,3.6562 -2.93487,-3.4577 -7.29683,-5.6562 -12.1875,-5.6562 z" - id="path3927-9" - inkscape:connector-curvature="0" /> - <path - style="fill:#000000;fill-opacity:0.39130435;stroke:none" - d="m -33.174044,1017.7642 c 0.272555,0.8054 0.4375,1.665 0.4375,2.5625 0,4.4183 -3.581722,8 -8,8 -2.720651,0 -5.117207,-1.3623 -6.5625,-3.4375 1.069255,3.1597 4.041685,5.4375 7.5625,5.4375 4.418278,0 8,-3.5817 8,-8 0,-1.6976 -0.535669,-3.2676 -1.4375,-4.5625 z" - id="path3970-3" - inkscape:connector-curvature="0" /> - </g> -</svg> diff --git a/application/resources/sources/meat.svg b/application/resources/sources/meat.svg deleted file mode 100644 index 69a20073..00000000 --- a/application/resources/sources/meat.svg +++ /dev/null @@ -1,371 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="32px" - height="32px" - id="svg2985" - version="1.1" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="meat.svg" - inkscape:export-filename="/home/peterix/projects/MultiMC4/src/resources/insticons/meat128.png" - inkscape:export-xdpi="360" - inkscape:export-ydpi="360"> - <defs - id="defs2987"> - <filter - inkscape:collect="always" - id="filter4454" - x="-0.16296296" - width="1.3259259" - y="-0.16296296" - height="1.3259259"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.2222222" - id="feGaussianBlur4456" /> - </filter> - <filter - inkscape:collect="always" - id="filter4863"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.53333333" - id="feGaussianBlur4865" /> - </filter> - <filter - inkscape:collect="always" - id="filter4974" - x="-0.18666667" - width="1.3733333" - y="-0.18666667" - height="1.3733333"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.8666667" - id="feGaussianBlur4976" /> - </filter> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="16" - inkscape:cx="9.6045985" - inkscape:cy="9.7795413" - inkscape:current-layer="layer1" - showgrid="true" - inkscape:grid-bbox="true" - inkscape:document-units="px" - inkscape:window-width="1607" - inkscape:window-height="1030" - inkscape:window-x="1676" - inkscape:window-y="-3" - inkscape:window-maximized="1"> - <inkscape:grid - type="xygrid" - id="grid3004" - empspacing="5" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" /> - </sodipodi:namedview> - <metadata - id="metadata2990"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="layer1" - inkscape:label="Layer 1" - inkscape:groupmode="layer"> - <path - style="fill:#ffcc00;stroke:none;filter:url(#filter4974)" - d="m 4,10 6,-6 4,0 10,10 0,4 2,0 2,2 0,4 -4,4 -6,0 0,-4 -4,0 -2,-2 -2,0 -6,-6 z" - id="path4952" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccccccccccccc" /> - <g - transform="translate(-68,24)" - id="g4869" /> - <g - id="g3473" - transform="translate(4,4)"> - <rect - y="2" - x="6" - height="2" - width="4" - id="rect3006" - style="fill:#0c0d0b;fill-opacity:1;stroke:none" /> - <rect - style="fill:#0c0d0b;fill-opacity:1;stroke:none" - id="rect3014" - width="2" - height="2" - x="4" - y="4" /> - <rect - y="6" - x="2" - height="6" - width="2" - id="rect3016" - style="fill:#0c0d0b;fill-opacity:1;stroke:none" /> - <rect - y="4" - x="10" - height="2" - width="2" - id="rect3018" - style="fill:#0c0d0b;fill-opacity:1;stroke:none" /> - <rect - style="fill:#0c0d0b;fill-opacity:1;stroke:none" - id="rect3020" - width="2" - height="2" - x="4" - y="12" /> - <rect - y="14" - x="6" - height="2" - width="2" - id="rect3022" - style="fill:#0c0d0b;fill-opacity:1;stroke:none" /> - <rect - style="fill:#0c0d0b;fill-opacity:1;stroke:none" - id="rect3024" - width="2" - height="2" - x="12" - y="6" /> - <rect - y="8" - x="14" - height="2" - width="2" - id="rect3026" - style="fill:#0c0d0b;fill-opacity:1;stroke:none" /> - <rect - style="fill:#0c0d0b;fill-opacity:1;stroke:none" - id="rect3028" - width="2" - height="2" - x="8" - y="14" /> - <rect - style="fill:#0c0d0b;fill-opacity:1;stroke:none" - id="rect3030" - width="4" - height="2" - x="18" - y="16" /> - <rect - style="fill:#0c0d0b;fill-opacity:1;stroke:none" - id="rect3034" - width="2" - height="4" - x="16" - y="18" /> - <rect - y="18" - x="20" - height="2" - width="2" - id="rect3036" - style="fill:#0c0d0b;fill-opacity:1;stroke:none" /> - <rect - style="fill:#0c0d0b;fill-opacity:1;stroke:none" - id="rect3038" - width="2" - height="2" - x="18" - y="20" /> - <rect - y="18" - x="18" - height="2" - width="2" - id="rect3040" - style="fill:#fff7dc;fill-opacity:1;stroke:none" /> - <rect - style="fill:#e2d5aa;fill-opacity:1;stroke:none" - id="rect3042" - width="2" - height="2" - x="16" - y="16" /> - <rect - y="12" - x="10" - height="2" - width="4" - id="rect3044" - style="fill:#7b512d;fill-opacity:1;stroke:none" /> - <rect - style="fill:#613c1b;fill-opacity:1;stroke:none" - id="rect3046" - width="2" - height="2" - x="8" - y="12" /> - <rect - y="10" - x="6" - height="2" - width="4" - id="rect3048" - style="fill:#7b512d;fill-opacity:1;stroke:none" /> - <path - sodipodi:nodetypes="ccccccc" - inkscape:connector-curvature="0" - id="rect3050" - d="m 10,8 2,0 0,2 2,0 0,2 -4,0 z" - style="fill:#9d6d43;fill-opacity:1;stroke:none" /> - <rect - y="8" - x="8" - height="2" - width="2" - id="rect3053" - style="fill:#b88458;fill-opacity:1;stroke:none" /> - <rect - style="fill:#b88458;fill-opacity:1;stroke:none" - id="rect3055" - width="2" - height="2" - x="10" - y="6" /> - <rect - y="8" - x="12" - height="2" - width="2" - id="rect3057" - style="fill:#b88458;fill-opacity:1;stroke:none" /> - <rect - y="12" - x="6" - height="2" - width="2" - id="rect3059" - style="fill:#613c1b;fill-opacity:1;stroke:none" /> - <rect - style="fill:#dfb18f;fill-opacity:1;stroke:none" - id="rect3061" - width="2" - height="2" - x="6" - y="6" /> - <rect - y="4" - x="8" - height="2" - width="2" - id="rect3063" - style="fill:#b21818;fill-opacity:1;stroke:none" /> - <rect - style="fill:#b21818;fill-opacity:1;stroke:none" - id="rect3065" - width="2" - height="2" - x="4" - y="8" /> - <rect - y="6" - x="4" - height="2" - width="2" - id="rect3067" - style="fill:#d42a2a;fill-opacity:1;stroke:none" /> - <rect - style="fill:#d42a2a;fill-opacity:1;stroke:none" - id="rect3069" - width="2" - height="2" - x="6" - y="4" /> - <rect - y="6" - x="8" - height="2" - width="2" - id="rect3071" - style="fill:#d42a2a;fill-opacity:1;stroke:none" /> - <rect - style="fill:#d42a2a;fill-opacity:1;stroke:none" - id="rect3073" - width="2" - height="2" - x="6" - y="8" /> - <rect - y="16" - x="10" - height="2" - width="6" - id="rect4470" - style="fill:#0c0d0b;fill-opacity:1;stroke:none" /> - <rect - style="fill:#0c0d0b;fill-opacity:1;stroke:none" - id="rect4472" - width="2" - height="6" - x="16" - y="10" /> - <rect - y="14" - x="12" - height="2" - width="4" - id="rect4474" - style="fill:#613c1b;fill-opacity:1;stroke:none" /> - <rect - y="12" - x="14" - height="2" - width="2" - id="rect4476" - style="fill:#9d6d43;fill-opacity:1;stroke:none" /> - <rect - style="fill:#502d16;fill-opacity:1;stroke:none" - id="rect4478" - width="2" - height="2" - x="10" - y="14" /> - <rect - style="fill:#b88458;fill-opacity:1;stroke:none" - id="rect4480" - width="2" - height="2" - x="14" - y="10" /> - <rect - style="fill:#613c1b;fill-opacity:1;stroke:none" - id="rect4978" - width="2" - height="2" - x="4" - y="10" /> - </g> - </g> -</svg> diff --git a/application/resources/sources/multimc-discord.svg b/application/resources/sources/multimc-discord.svg deleted file mode 100644 index c3c73044..00000000 --- a/application/resources/sources/multimc-discord.svg +++ /dev/null @@ -1,265 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - version="1.1" - id="svg4427" - height="68.26667" - width="68.26667"> - <defs - id="defs4429"> - <linearGradient - id="linearGradient4809"> - <stop - id="stop4805" - offset="0" - style="stop-color:#98c867;stop-opacity:1" /> - <stop - id="stop4807" - offset="1" - style="stop-color:#5c9a33;stop-opacity:1" /> - </linearGradient> - <linearGradient - id="linearGradient5668"> - <stop - style="stop-color:#75b54b;stop-opacity:1;" - offset="0" - id="stop5670" /> - <stop - style="stop-color:#75b54b;stop-opacity:0.6" - offset="1" - id="stop5672" /> - </linearGradient> - <linearGradient - id="linearGradient5084"> - <stop - style="stop-color:#000000;stop-opacity:0.8" - offset="0" - id="stop5086" /> - <stop - style="stop-color:#000000;stop-opacity:0.35" - offset="1" - id="stop5088" /> - </linearGradient> - <linearGradient - gradientTransform="translate(-0.01532073,-0.00938002)" - gradientUnits="userSpaceOnUse" - y2="61.773685" - x2="50.506943" - y1="28.510933" - x1="6.7342591" - id="linearGradient5072" - xlink:href="#linearGradient5668" /> - <linearGradient - gradientUnits="userSpaceOnUse" - y2="82.973114" - x2="44.097023" - y1="9.7948904" - x1="14.312115" - id="linearGradient5082" - xlink:href="#linearGradient5084" /> - <linearGradient - y2="61.773685" - x2="50.506943" - y1="28.510933" - x1="6.7342591" - gradientTransform="translate(-0.01532073,-0.00938002)" - gradientUnits="userSpaceOnUse" - id="linearGradient3281" - xlink:href="#linearGradient5668" /> - <linearGradient - y2="61.773685" - x2="50.506943" - y1="28.510933" - x1="6.7342591" - gradientTransform="translate(-0.01532073,-0.00938002)" - gradientUnits="userSpaceOnUse" - id="linearGradient3283" - xlink:href="#linearGradient5668" /> - <linearGradient - y2="61.773685" - x2="50.506943" - y1="28.510933" - x1="6.7342591" - gradientTransform="matrix(1.2671525,0,0,0.89790119,-0.01941371,-0.00842234)" - gradientUnits="userSpaceOnUse" - id="linearGradient3286" - xlink:href="#linearGradient5668" /> - <linearGradient - y2="82.973114" - x2="44.097023" - y1="9.7948904" - x1="14.312115" - gradientUnits="userSpaceOnUse" - id="linearGradient3288" - xlink:href="#linearGradient5084" /> - <linearGradient - y2="82.973114" - x2="44.097023" - y1="9.7948904" - x1="14.312115" - gradientUnits="userSpaceOnUse" - id="linearGradient3290" - xlink:href="#linearGradient5084" /> - <linearGradient - gradientTransform="scale(1.2671525,0.89790119)" - y2="82.973114" - x2="44.097023" - y1="9.7948904" - x1="14.312115" - gradientUnits="userSpaceOnUse" - id="linearGradient3293" - xlink:href="#linearGradient5084" /> - <linearGradient - id="linearGradient5580"> - <stop - id="stop5576" - offset="0" - style="stop-color:#000000;stop-opacity:0.0627451" /> - <stop - id="stop5578" - offset="1" - style="stop-color:#322217;stop-opacity:0.58823532" /> - </linearGradient> - <linearGradient - id="linearGradient3999"> - <stop - style="stop-color:#a3704b;stop-opacity:1" - offset="0" - id="stop3995" /> - <stop - style="stop-color:#6a4a33;stop-opacity:1" - offset="1" - id="stop3997" /> - </linearGradient> - <linearGradient - id="linearGradient2727"> - <stop - style="stop-color:#966c4a;stop-opacity:1" - offset="0" - id="stop2723" /> - <stop - style="stop-color:#593d29;stop-opacity:1" - offset="1" - id="stop2725" /> - </linearGradient> - <linearGradient - y2="97.065842" - x2="86.415741" - y1="33.80484" - x1="36.546478" - gradientUnits="userSpaceOnUse" - id="linearGradient2050" - xlink:href="#linearGradient2727" /> - <radialGradient - r="29.866665" - fy="34.133335" - fx="34.133331" - cy="34.133335" - cx="34.133331" - gradientTransform="matrix(1.1428572,0,0,1.1428572,-4.8771039,-4.8772393)" - gradientUnits="userSpaceOnUse" - id="radialGradient2052" - xlink:href="#linearGradient3999" /> - <linearGradient - y2="38.400913" - x2="38.400005" - y1="29.867579" - x1="29.866674" - gradientTransform="translate(77.635668,-7.276299)" - gradientUnits="userSpaceOnUse" - id="linearGradient2140" - xlink:href="#linearGradient5580" /> - <linearGradient - y2="82.973114" - x2="44.097023" - y1="9.7948904" - x1="14.312115" - gradientTransform="matrix(1.2671525,0,0,0.89790119,-0.82864077,-1.0012743)" - gradientUnits="userSpaceOnUse" - id="linearGradient4790" - xlink:href="#linearGradient5084" /> - <radialGradient - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.7500268,0.1250019,-0.01781176,0.24936465,95.393964,18.110151)" - r="34.132812" - fy="-34.134373" - fx="-42.66758" - cy="-34.134373" - cx="-42.66758" - id="radialGradient4803" - xlink:href="#linearGradient4809" /> - </defs> - <metadata - id="metadata4432"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="layer1"> - <g - transform="translate(9.113e-4,0.00104183)" - id="g2048"> - <rect - y="3.0270508e-06" - x="-1.3322676e-15" - height="68.26667" - width="68.26667" - id="rect2026" - style="fill:url(#linearGradient2050);fill-opacity:1;stroke:none;stroke-width:17.06666756" - ry="8.5333338" - rx="8.5333338" /> - <rect - ry="0" - style="fill:url(#radialGradient2052);fill-opacity:1;stroke:none;stroke-width:17.06666946" - id="rect2028" - width="68.26667" - height="68.26667" - x="-0.00091432704" - y="-0.0010418301" - rx="0" /> - <path - style="opacity:0.6;fill:#593d29;fill-opacity:1;stroke:none;stroke-width:17.06666756" - d="m 4.2669272,4.2645856 -9.11e-4,8.5333334 h 4.267577 v 4.267579 h 8.5332038 v 4.265625 h 4.265625 V 8.5322946 H 25.6 v 8.5332034 h 4.265625 v -4.267579 h 4.267578 v 8.533204 h 4.265625 v -4.265625 h 4.267578 v 4.265625 h 4.267579 v -4.265625 h 4.265624 v -4.267579 h 4.267579 v 4.267579 h 8.533203 l -1.3e-4,-12.8009124 z" - id="path4811" /> - <path - id="path4794" - d="m -9.113e-4,-0.0010388 6.52e-4,8.5324211 v 4.2675787 h 4.265625 V 8.5313823 c 0,-0.521698 0.105433,-1.01339 0.27539,-1.47461 -0.169616,0.460814 -0.27539,0.953462 -0.27539,1.47461 h 4.2675785 v 4.2675787 h 4.2656248 4.267578 v 4.265625 h 4.265625 V 12.798961 8.5313823 4.2657573 h 4.267578 v 4.265625 4.2675787 h 4.265625 V 8.5313823 h 4.267578 v 4.2675787 4.265625 h 4.265625 v -4.265625 h 4.267578 v 4.265625 h 4.267579 v -4.265625 h 4.265624 V 8.5313823 h 4.267579 v 4.2675787 h 4.265625 4.267578 V 8.5313823 h 4.265625 l 3.9e-4,-8.5324211 z m 5.5143245,5.5128891 c -0.318089,0.317888 -0.570428,0.695824 -0.7753915,1.101563 0.2048795,-0.405231 0.4576385,-0.784012 0.7753915,-1.101563 z" - style="fill:url(#radialGradient4803);fill-opacity:1;stroke:none;stroke-width:17.06666756" /> - </g> - <g - id="g1092"> - <path - d="m 38.886673,44.940882 c -0.974277,-0.801673 -2.231353,-2.137814 -3.771231,-4.008427 -2.105641,2.672298 -4.085536,4.598569 -5.939688,5.778816 -2.325625,1.425227 -5.295467,2.137836 -8.909534,2.137828 -4.242656,8e-6 -7.762467,-1.124578 -10.5594458,-3.37376 C 6.7526311,43.114834 5.275567,39.986037 5.2755773,36.088937 5.275567,32.347763 6.7526311,29.207831 9.7067742,26.669132 12.346618,24.419991 15.897857,23.295407 20.360501,23.295373 c 2.294138,3.4e-5 4.289747,0.334069 5.986829,1.002107 1.979863,0.73491 3.645488,1.737016 4.996881,3.00632 1.257039,1.135751 2.514115,2.471891 3.771231,4.008428 2.105563,-2.672257 4.085457,-4.598527 5.939689,-5.778816 2.325544,-1.425186 5.295385,-2.137794 8.909533,-2.137828 4.242577,3.4e-5 7.762388,1.124618 10.559447,3.37376 2.954063,2.360546 4.431127,5.489343 4.431197,9.386401 -7e-5,3.741216 -1.477134,6.881147 -4.431197,9.419806 -2.639925,2.24918 -6.191163,3.373767 -10.653727,3.373758 -2.294219,9e-6 -4.289826,-0.334026 -5.98683,-1.002106 -1.697101,-0.601255 -3.362726,-1.603361 -4.996881,-3.006321 M 19.747676,44.473233 c 5.185412,1.1e-5 9.333763,-2.672271 12.445062,-8.016856 -3.991253,-5.834464 -8.139602,-8.751705 -12.445062,-8.751733 -3.142715,2.8e-5 -5.515446,0.801713 -7.118198,2.405057 -1.728498,1.71474 -2.592737,3.707818 -2.592722,5.979236 -1.5e-5,2.494152 0.864224,4.509499 2.592722,6.046046 1.759887,1.558846 4.132618,2.338261 7.118198,2.33825 M 50.483209,27.77145 c -4.682663,2.9e-5 -8.831013,2.672312 -12.445062,8.016856 3.959745,5.834503 8.108095,8.751746 12.445062,8.751733 3.142633,1.3e-5 5.515364,-0.801671 7.118198,-2.405056 1.728416,-1.714701 2.592656,-3.707778 2.592722,-5.979238 -6.6e-5,-2.49411 -0.864306,-4.509456 -2.592722,-6.046044 -1.759968,-1.558805 -4.132699,-2.338222 -7.118198,-2.338251" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:76.18933868px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient4790);fill-opacity:1;stroke:none;stroke-width:1.06666672;opacity:0.5" - id="path4786" /> - <path - id="path3279" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:76.18933868px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient3293);fill-opacity:1;stroke:none;stroke-width:1.06666672;opacity:0.5" - d="m 39.715314,45.942156 c -0.974277,-0.801673 -2.231353,-2.137814 -3.771231,-4.008427 -2.105641,2.672298 -4.085536,4.598569 -5.939688,5.778816 -2.325625,1.425227 -5.295467,2.137836 -8.909534,2.137828 -4.242656,8e-6 -7.762467,-1.124578 -10.559446,-3.37376 -2.9541431,-2.360505 -4.4312072,-5.489302 -4.4311969,-9.386402 -1.03e-5,-3.741174 1.4770538,-6.881106 4.4311969,-9.419805 2.639844,-2.249141 6.191083,-3.373725 10.653727,-3.373759 2.294138,3.4e-5 4.289747,0.334069 5.986829,1.002107 1.979863,0.73491 3.645488,1.737016 4.996881,3.00632 1.257039,1.135751 2.514115,2.471891 3.771231,4.008428 2.105563,-2.672257 4.085457,-4.598527 5.939689,-5.778816 2.325544,-1.425186 5.295385,-2.137794 8.909533,-2.137828 4.242577,3.4e-5 7.762388,1.124618 10.559447,3.37376 2.954063,2.360546 4.431127,5.489343 4.431197,9.386401 -7e-5,3.741216 -1.477134,6.881147 -4.431197,9.419806 -2.639925,2.24918 -6.191163,3.373767 -10.653727,3.373758 -2.294219,9e-6 -4.289826,-0.334026 -5.98683,-1.002106 -1.697101,-0.601255 -3.362726,-1.603361 -4.996881,-3.006321 M 20.576317,45.474507 c 5.185412,1.1e-5 9.333763,-2.672271 12.445062,-8.016856 -3.991253,-5.834464 -8.139602,-8.751705 -12.445062,-8.751733 -3.142715,2.8e-5 -5.515446,0.801713 -7.118198,2.405057 -1.728498,1.71474 -2.592737,3.707818 -2.592722,5.979236 -1.5e-5,2.494152 0.864224,4.509499 2.592722,6.046046 1.759887,1.558846 4.132618,2.338261 7.118198,2.33825 M 51.31185,28.772724 c -4.682663,2.9e-5 -8.831013,2.672312 -12.445062,8.016856 3.959745,5.834503 8.108095,8.751746 12.445062,8.751733 3.142633,1.3e-5 5.515364,-0.801671 7.118198,-2.405056 1.728416,-1.714701 2.592656,-3.707778 2.592722,-5.979238 -6.6e-5,-2.49411 -0.864306,-4.509456 -2.592722,-6.046044 C 56.67008,29.55217 54.297349,28.772753 51.31185,28.772724" /> - <path - id="path3272" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:76.18933868px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient3286);fill-opacity:1;stroke:none;stroke-width:1.06666672" - d="m 37.904564,42.951873 c -0.974278,-0.801672 -2.231352,-2.137814 -3.771231,-4.008428 -2.105642,2.672298 -4.085537,4.598568 -5.939688,5.778817 -2.325625,1.425227 -5.295466,2.137836 -8.909534,2.137828 -4.242656,8e-6 -7.762467,-1.124577 -10.5594464,-3.37376 -2.9541428,-2.360505 -4.4312068,-5.489302 -4.4311963,-9.386401 -1.05e-5,-3.741175 1.4770535,-6.881107 4.4311963,-9.419805 2.6398444,-2.249142 6.1910824,-3.373727 10.6537284,-3.37376 2.294137,3.3e-5 4.289745,0.334068 5.986829,1.002107 1.979863,0.734909 3.645487,1.737016 4.99688,3.00632 1.257039,1.13575 2.514116,2.471891 3.771231,4.008428 2.105562,-2.672257 4.085456,-4.598528 5.939689,-5.778817 2.325544,-1.425185 5.295387,-2.137795 8.909534,-2.137828 4.242576,3.3e-5 7.762387,1.12462 10.559446,3.373761 2.954062,2.360545 4.431127,5.489343 4.431197,9.386401 -7e-5,3.741216 -1.477135,6.881148 -4.431197,9.419805 -2.639924,2.249182 -6.191164,3.373767 -10.653728,3.37376 -2.294217,7e-6 -4.289826,-0.334028 -5.986828,-1.002107 -1.697101,-0.601254 -3.362727,-1.603361 -4.996882,-3.006321 m -19.138997,-0.46765 c 5.185412,1.3e-5 9.333762,-2.67227 12.445062,-8.016856 -3.991252,-5.834462 -8.139602,-8.751704 -12.445062,-8.751733 -3.142714,2.9e-5 -5.515444,0.801714 -7.118198,2.405056 -1.7284972,1.714743 -2.5927368,3.707819 -2.5927216,5.979239 -1.52e-5,2.49415 0.8642244,4.509496 2.5927216,6.046045 1.759888,1.558845 4.132618,2.338262 7.118198,2.338249 M 49.5011,25.782442 c -4.682663,2.8e-5 -8.831014,2.672311 -12.445063,8.016855 3.959745,5.834504 8.108096,8.751745 12.445063,8.751733 3.142634,1.2e-5 5.515365,-0.801673 7.118198,-2.405056 1.728417,-1.7147 2.592657,-3.707778 2.592721,-5.979238 -6.4e-5,-2.49411 -0.864304,-4.509456 -2.592721,-6.046046 C 54.85933,26.561886 52.486599,25.78247 49.5011,25.782442" /> - <path - style="font-style:normal;font-weight:normal;font-size:76.18933868px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;opacity:0.3;fill:#ccff00;fill-opacity:1;stroke:none;stroke-width:1.06666672" - d="m 19.4,21.166667 c -4.462644,3.3e-5 -8.026822,1.150858 -10.6666667,3.4 -2.9541428,2.538698 -4.4333436,5.658825 -4.4333333,9.4 -1.03e-5,3.897098 1.4791905,7.039495 4.4333333,9.4 -1.622701,-2.044271 -2.433341,-4.51168 -2.4333333,-7.4 -1.03e-5,-3.741175 1.4791905,-6.861302 4.433333,-9.4 2.639845,-2.249142 6.204023,-3.399967 10.666667,-3.4 2.294138,3.3e-5 4.302916,0.365295 6,1.033333 1.979862,0.73491 3.615274,1.730695 4.966667,3 0.06836,0.06177 0.131637,0.137049 0.2,0.2 -0.731813,-0.797005 -1.468213,-1.538822 -2.2,-2.2 -1.351393,-1.269305 -2.986805,-2.26509 -4.966667,-3 -1.697084,-0.668038 -3.705862,-1.0333 -6,-1.033333 z m 29.6,0.1 c -3.614148,3.3e-5 -6.574457,0.74148 -8.9,2.166666 -1.818222,1.157367 -3.923451,3.291388 -5.983333,5.883334 0.618278,0.658774 1.248369,1.377605 1.866666,2.133333 2.105562,-2.672257 4.262434,-4.836378 6.116667,-6.016667 2.325543,-1.425186 5.285852,-2.166633 8.9,-2.166666 4.242576,3.3e-5 7.769607,1.150858 10.566667,3.4 -0.570388,-0.722129 -1.227721,-1.382884 -2,-2 C 56.769607,22.417525 53.242576,21.2667 49,21.266667 Z m 8.866667,8.1 c 0.9092,1.305235 1.366619,2.857751 1.366666,4.666666 -6.5e-5,2.271461 -0.871584,4.285301 -2.6,6 -1.602834,1.603384 -3.957366,2.400012 -7.1,2.4 -2.653707,8e-6 -5.320858,-1.032242 -7.833333,-3.216666 3.136636,3.509305 6.469807,5.216676 9.833333,5.216666 3.142634,1.2e-5 5.497166,-0.796616 7.1,-2.4 1.728416,-1.714699 2.599935,-3.728539 2.6,-6 -6.5e-5,-2.49411 -0.871584,-4.496744 -2.6,-6.033333 -0.24943,-0.220921 -0.49262,-0.443723 -0.766666,-0.633333 z m -26.633334,4.966666 c -3.1113,5.344585 -7.247921,8.033345 -12.433333,8.033334 -2.58055,1e-5 -4.543473,-0.352086 -6.208333,-1.516667 0.348871,0.50642 0.590094,0.752276 1.075,1.183333 1.759888,1.558846 4.147753,2.333345 7.133333,2.333334 5.185412,1.1e-5 9.322033,-2.688749 12.433333,-8.033334 z m 4.933334,6.5 c -0.04103,0.05207 -0.09239,0.08182 -0.133334,0.133334 0.687326,0.744419 1.306949,1.359747 1.833334,1.8 -0.529404,-0.580895 -1.078447,-1.178283 -1.7,-1.933334 z" - id="text5100" /> - <path - style="font-style:normal;font-weight:normal;font-size:76.18933868px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;opacity:0.6;fill:#ccff00;fill-opacity:1;stroke:none;stroke-width:1.06666672" - d="m 19.730474,21.54714 c -4.462645,3.3e-5 -8.026823,1.150859 -10.6666669,3.4 -2.9541429,2.538699 -4.433344,5.658826 -4.4333333,9.4 -1.07e-5,3.897099 1.4791904,7.039495 4.4333333,9.4 0.042837,0.03444 0.090155,0.06608 0.1333334,0.1 -2.2392086,-2.228193 -3.3666752,-5.040417 -3.3666667,-8.433333 -1.07e-5,-3.741174 1.4791904,-6.861301 4.4333332,-9.4 2.639844,-2.249141 6.204022,-3.399967 10.666667,-3.4 2.294137,3.3e-5 4.302916,0.365295 6,1.033333 1.870874,0.694455 3.42364,1.628367 4.733333,2.8 -0.314265,-0.308986 -0.652406,-0.582729 -0.966667,-0.866666 -1.351393,-1.269305 -2.986804,-2.265091 -4.966666,-3 -1.697084,-0.668039 -3.705863,-1.033301 -6,-1.033334 z m 29.6,0.1 c -3.614149,3.3e-5 -6.574457,0.741481 -8.9,2.166667 -1.813279,1.154221 -3.963039,3.235656 -6.016667,5.816667 0.355649,0.402628 0.711011,0.798625 1.066667,1.233333 2.105561,-2.672257 4.295767,-4.803044 6.15,-5.983333 2.325543,-1.425187 5.285851,-2.166634 8.9,-2.166667 4.22442,3.3e-5 7.742084,1.136734 10.533333,3.366667 -0.36096,-0.367566 -0.745726,-0.696967 -1.166667,-1.033334 -2.797059,-2.249141 -6.32409,-3.399967 -10.566666,-3.4 z m 8.233333,7.333334 c 1.323326,1.449243 1.999942,3.250987 2,5.433333 -6.5e-5,2.27146 -0.871584,4.2853 -2.6,6 -1.602834,1.603383 -3.957366,2.400012 -7.1,2.4 -2.406328,6e-6 -4.776468,-0.90386 -7.066667,-2.7 2.669147,2.483838 5.436929,3.766674 8.266667,3.766667 3.142634,1.1e-5 5.497166,-0.796617 7.1,-2.4 1.728416,-1.7147 2.599935,-3.72854 2.6,-6 -6.5e-5,-2.49411 -0.871584,-4.496745 -2.6,-6.033334 -0.185641,-0.164422 -0.400724,-0.319587 -0.6,-0.466666 z m -26,5.733333 c -3.1113,5.344584 -7.247921,8.033345 -12.433333,8.033333 -2.612382,1.1e-5 -4.759372,-0.60651 -6.433334,-1.8 0.166027,0.176488 0.313947,0.367942 0.5,0.533334 1.759888,1.558845 4.147754,2.333345 7.133334,2.333333 5.185412,1.2e-5 9.322033,-2.688749 12.433333,-8.033333 z m 4.133333,5.566667 c -0.04657,0.05909 -0.08689,0.108298 -0.133333,0.166666 1.038571,1.18897 1.9748,2.169945 2.7,2.766667 0.06249,0.05364 0.137426,0.08086 0.2,0.133333 -0.792178,-0.781249 -1.706288,-1.778539 -2.766667,-3.066666 z" - id="text5058-0" /> - </g> - </g> -</svg> diff --git a/application/resources/sources/netherstar.svg b/application/resources/sources/netherstar.svg deleted file mode 100644 index 4046e4ec..00000000 --- a/application/resources/sources/netherstar.svg +++ /dev/null @@ -1,342 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="64" - height="64" - id="svg2" - version="1.1" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="netherstar.svg" - inkscape:export-filename="/home/peterix/projects/MultiMC4/src/resources/insticons/netherstar.png" - inkscape:export-xdpi="45" - inkscape:export-ydpi="45"> - <defs - id="defs4"> - <linearGradient - id="linearGradient4065"> - <stop - id="stop4067" - offset="0" - style="stop-color:#556b6b;stop-opacity:1" /> - <stop - style="stop-color:#3b8585;stop-opacity:0.49803922;" - offset="0.5" - id="stop4069" /> - <stop - id="stop4071" - offset="1" - style="stop-color:#fafbfb;stop-opacity:1" /> - </linearGradient> - <linearGradient - id="linearGradient4053"> - <stop - id="stop4055" - offset="0" - style="stop-color:#556b6b;stop-opacity:1" /> - <stop - style="stop-color:#3b8585;stop-opacity:0.49803922;" - offset="0.5" - id="stop4057" /> - <stop - id="stop4059" - offset="1" - style="stop-color:#fafbfb;stop-opacity:1" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - id="linearGradient3802"> - <stop - style="stop-color:#cbd6d6;stop-opacity:1;" - offset="0" - id="stop3804" /> - <stop - style="stop-color:#637e7e;stop-opacity:1" - offset="1" - id="stop3806" /> - </linearGradient> - <linearGradient - id="linearGradient3006"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop3008" /> - <stop - id="stop3955" - offset="0.14285807" - style="stop-color:#fff656;stop-opacity:1;" /> - <stop - id="stop3949" - offset="0.28571615" - style="stop-color:#fdd300;stop-opacity:1;" /> - <stop - style="stop-color:#f6d01a;stop-opacity:1;" - offset="0.50000137" - id="stop3951" /> - <stop - style="stop-color:#fafd00;stop-opacity:0;" - offset="1" - id="stop3010" /> - </linearGradient> - <filter - inkscape:collect="always" - id="filter3893"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.3" - id="feGaussianBlur3895" /> - </filter> - <filter - inkscape:collect="always" - id="filter3901"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.3" - id="feGaussianBlur3903" /> - </filter> - <filter - inkscape:collect="always" - id="filter3905"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.3000003" - id="feGaussianBlur3907" /> - </filter> - <filter - inkscape:collect="always" - id="filter3913"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.3" - id="feGaussianBlur3915" /> - </filter> - <filter - inkscape:collect="always" - id="filter3945"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.74074074" - id="feGaussianBlur3947" /> - </filter> - <filter - inkscape:collect="always" - id="filter3967"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.4979424" - id="feGaussianBlur3969" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4053" - id="linearGradient3985" - gradientUnits="userSpaceOnUse" - x1="51" - y1="1014.3622" - x2="35" - y2="997.36218" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4065" - id="linearGradient3987" - gradientUnits="userSpaceOnUse" - x1="25" - y1="1039.3622" - x2="9" - y2="1023.3622" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3802" - id="linearGradient3989" - gradientUnits="userSpaceOnUse" - x1="28" - y1="28" - x2="36" - y2="36" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3006" - id="radialGradient3991" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.1034483,-2.1791858e-6,2.1791909e-6,1.103451,-3.1035149,985.25875)" - cx="30" - cy="30" - fx="30" - fy="30" - r="14.5" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3802" - id="linearGradient3993" - gradientUnits="userSpaceOnUse" - x1="24" - y1="48" - x2="36" - y2="48" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3802" - id="linearGradient3995" - gradientUnits="userSpaceOnUse" - x1="24" - y1="1000.3622" - x2="36" - y2="1000.3622" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3802" - id="linearGradient3997" - gradientUnits="userSpaceOnUse" - x1="44" - y1="1018.3622" - x2="52" - y2="1018.3622" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3802" - id="linearGradient3999" - gradientUnits="userSpaceOnUse" - x1="8" - y1="1018.3622" - x2="16" - y2="1018.3622" /> - <filter - inkscape:collect="always" - id="filter4108"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.39" - id="feGaussianBlur4110" /> - </filter> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="6" - inkscape:cx="32.789148" - inkscape:cy="31.233555" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:window-width="1607" - inkscape:window-height="1030" - inkscape:window-x="1676" - inkscape:window-y="-3" - inkscape:window-maximized="1"> - <inkscape:grid - type="xygrid" - id="grid2985" - empspacing="4" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" - spacingx="1px" - spacingy="1px" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-988.36218)"> - <g - id="g3971" - transform="translate(2,1.99998)"> - <path - style="fill:#cccccc;fill-opacity:1;stroke:none;filter:url(#filter3967)" - d="m 57,27.00002 0,6 -8,8 -8,0 0,8 -8,8 -6,0 -8,-8 0,-8 -8,0 -8,-8 0,-6 8,-8 8,0 0,-7 8,-9 6,0 8,8 0,8 8,0 z" - id="path3957" - inkscape:connector-curvature="0" - transform="translate(0,988.36218)" - sodipodi:nodetypes="ccccccccccccccccccccc" /> - <path - transform="translate(0,988.36218)" - inkscape:connector-curvature="0" - id="path3000" - d="m 56,28 0,4 -8,8 -8,0 0,8 -8,8 -4,0 -8,-8 0,-8 -8,0 -8,-8 0,-4 8,-8 8,0 0,-8 8,-8 4,0 4,4 4,4 0,8 8,0 z" - style="fill:#eff2f2;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="path3788" - d="m 52,1024.3622 0,-8 -4,-4 -8,0 -4,-4 0,-8 -4,-4.00002 -8,0 4,-4 4,0 8,8.00002 0,8 8,0 8,8 0,4 z" - style="fill:url(#linearGradient3985);fill-opacity:1;stroke:none" /> - <path - style="fill:url(#linearGradient3987);fill-opacity:1;stroke:none" - d="m 8,1012.3622 0,8 4,4 8,0 4,4 0,8 4,4 8.00001,0 -4,4 -4.00001,0 -8,-8 0,-8 -8,0 -8,-8 0,-4 z" - id="path3790" - inkscape:connector-curvature="0" /> - <path - transform="translate(0,988.36218)" - inkscape:connector-curvature="0" - id="path3002" - d="m 36,8 -8,0 -4,4 0,8 -4,4 -8,0 -4,4 0,8 -4,-4 0,-4 8,-8 8,0 0,-8 8,-8 4,0 z" - style="opacity:0.67364017;fill:#ffffff;stroke:none" /> - <path - transform="translate(0,988.36218)" - inkscape:connector-curvature="0" - id="path3800" - d="m 28,20 -8,8 0,4 8,8 4,0 8,-8 0,-4 -8,-8 z" - style="fill:url(#linearGradient3989);fill-opacity:1;stroke:none;filter:url(#filter3945)" /> - <path - inkscape:connector-curvature="0" - id="path3004" - d="m 28,1000.3622 0,16 -16,0 0,4 16,0 0,16 4,0 0,-16 16,0 0,-4 -16,0 0,-16 z" - style="fill:url(#radialGradient3991);fill-opacity:1;stroke:none" - sodipodi:nodetypes="ccccccccccccc" /> - <path - style="fill:#556b6b;fill-opacity:1;stroke:none" - d="m 23.99998,1040.3622 8,0 4,-4 0,-8 4,-4 8,0 4.00002,-4 0,-8 4,4 0,4 -8.00002,8 -8,0 0,8 -8,8 -4,0 z" - id="path3786" - inkscape:connector-curvature="0" /> - <path - transform="translate(0,988.36218)" - inkscape:connector-curvature="0" - id="path3792" - d="m 32,48 -4,0 -4,-4 0,4 4,4 4,0 4,-4 0,-4 z" - style="fill:url(#linearGradient3993);fill-opacity:1;stroke:none;filter:url(#filter3893)" /> - <path - style="fill:url(#linearGradient3995);fill-opacity:1;stroke:none;filter:url(#filter3905)" - d="m 32,1000.3622 -4,0 -4,4 0,-4 4,-4.00002 4,0 4,4.00002 0,4 z" - id="path3794" - inkscape:connector-curvature="0" /> - <path - inkscape:connector-curvature="0" - id="path3796" - d="m 48,1020.3622 0,-4 -4,-4 4,0 4,4 0,4 -4,4 -4,0 z" - style="fill:url(#linearGradient3997);fill-opacity:1;stroke:none;filter:url(#filter3901)" /> - <path - style="fill:url(#linearGradient3999);fill-opacity:1;stroke:none;filter:url(#filter3913)" - d="m 12,1016.3622 0,4 4,4 -4,0 -4,-4 0,-4 4,-4 4,0 z" - id="path3798" - inkscape:connector-curvature="0" /> - <path - style="fill:#eff2f2;fill-opacity:0.10628019000000000;stroke:none;filter:url(#filter4108)" - d="m 28,992.3622 -8,8 0,8 -8,0 -8.0000001,8 0,4 8.0000001,8 8,0 0,8 8,8 4,0 8,-8 0,-8 8,0 8,-8 0,-4 -8,-8 -8,0 0,-8 -4,-4 -4,-4 -4,0 z m 2.90625,2.25 c 1.790052,0.15723 3.5491,1.39991 5.03125,4.1875 5.21676,3.1721 -1.835545,14.0536 7.28125,11.3125 4.64748,-0.9978 13.08236,5.9966 9.65625,10.3437 -2.87943,6.7429 -10.8243,4.9933 -14.84375,6.6563 1.50952,6.5659 -1.74938,11.1566 -6.8125,15 -4.92726,-0.671 -10.654448,-6.4059 -9.1875,-12 1.831567,-8.2895 -10.191583,-0.2312 -12.4375001,-7.2813 -7.428566,-3.9347 -0.557092,-9.4767 3.4375001,-12.7187 7.835946,1.7735 10.684647,-1.4404 9,-9.1875 L 22.5,1000.4559 c 2.310711,-3.39825 5.42283,-6.10574 8.40625,-5.8437 z" - id="path4073" - inkscape:connector-curvature="0" /> - </g> - </g> -</svg> diff --git a/application/resources/sources/pskeleton.svg b/application/resources/sources/pskeleton.svg deleted file mode 100644 index c2783df8..00000000 --- a/application/resources/sources/pskeleton.svg +++ /dev/null @@ -1,581 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - version="1.1" - width="32" - height="32" - id="svg2"> - <defs - id="defs4"> - <filter - x="-0.18000001" - y="-0.36000001" - width="1.36" - height="1.72" - color-interpolation-filters="sRGB" - id="filter5719"> - <feGaussianBlur - id="feGaussianBlur5721" - stdDeviation="0.15" /> - </filter> - <filter - x="-0.20999999" - y="-0.28" - width="1.42" - height="1.5599999" - color-interpolation-filters="sRGB" - id="filter5723"> - <feGaussianBlur - id="feGaussianBlur5725" - stdDeviation="0.35" /> - </filter> - <filter - x="-0.1728" - y="-0.34560001" - width="1.3456" - height="1.6912" - color-interpolation-filters="sRGB" - id="filter5711"> - <feGaussianBlur - id="feGaussianBlur5713" - stdDeviation="0.144" /> - </filter> - <filter - x="-0.20999999" - y="-0.28" - width="1.42" - height="1.5599999" - color-interpolation-filters="sRGB" - id="filter5727"> - <feGaussianBlur - id="feGaussianBlur5729" - stdDeviation="0.35" /> - </filter> - <filter - x="-0.14708571" - y="-0.25740001" - width="1.2941715" - height="1.5148" - color-interpolation-filters="sRGB" - id="filter4028-6"> - <feGaussianBlur - id="feGaussianBlur4030-9" - stdDeviation="0.429" /> - </filter> - <filter - color-interpolation-filters="sRGB" - id="filter4056-6"> - <feGaussianBlur - id="feGaussianBlur4058-6" - stdDeviation="0.676" /> - </filter> - </defs> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - transform="translate(0,-1020.3622)" - id="layer1"> - <rect - width="24" - height="24" - x="3.9999998" - y="1024.3622" - id="rect4063-2" - style="fill:#999999;fill-opacity:1;stroke:none" /> - <rect - width="26" - height="26" - x="3" - y="3" - transform="matrix(1.0769231,0,0,1.0769237,-1.2307693,1019.1314)" - id="rect4038-2" - style="fill:#4d4d4d;fill-opacity:1;stroke:none;filter:url(#filter4056-6)" /> - <rect - width="20" - height="5.0000172" - x="5.9999995" - y="1041.3622" - id="rect3189-4" - style="fill:#494949;fill-opacity:1;stroke:none" /> - <path - d="m 6.0000007,1041.3622 20.0000003,0 0,2 -18.0000003,0 0,3 -2,0 z" - id="path4034-6" - style="fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter4028-6)" /> - <rect - width="8" - height="5.0000172" - x="5.9999995" - y="1035.3622" - id="rect3155-9" - style="fill:#494949;fill-opacity:1;stroke:none" /> - <rect - width="8" - height="5.0000172" - x="18" - y="1035.3622" - id="rect3163-4" - style="fill:#494949;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="3.9999998" - y="1024.3622" - id="rect3009-1" - style="fill:#a1a1a1;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="6.9999995" - y="1024.3622" - id="rect3011-9" - style="fill:#9b9b9b;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="10" - y="1024.3622" - id="rect3013-0" - style="fill:#a3a3a3;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="13" - y="1024.3622" - id="rect3017-9" - style="fill:#919191;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="16" - y="1024.3622" - id="rect3019-6" - style="fill:#888888;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="19" - y="1024.3622" - id="rect3021-8" - style="fill:#8f8f8f;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="22" - y="1024.3622" - id="rect3023-6" - style="fill:#9b9b9b;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="25" - y="1024.3622" - id="rect3025-7" - style="fill:#989898;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="3.9999998" - y="1027.3622" - id="rect3027-7" - style="fill:#9b9b9b;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="6.9999995" - y="1027.3622" - id="rect3029-6" - style="fill:#9b9b9b;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="10" - y="1027.3622" - id="rect3031-0" - style="fill:#a3a3a3;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="10" - y="1027.3622" - id="rect3033-4" - style="fill:#9b9b9b;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="13" - y="1027.3622" - id="rect3035-4" - style="fill:#aaaaaa;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="16" - y="1027.3622" - id="rect3037-2" - style="fill:#c1c1c1;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="19" - y="1027.3622" - id="rect3039-4" - style="fill:#bebebe;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="22" - y="1027.3622" - id="rect3041-2" - style="fill:#9b9b9b;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="25" - y="1027.3622" - id="rect3043-1" - style="fill:#919191;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="3.9999998" - y="1030.3622" - id="rect3045-3" - style="fill:#9b9b9b;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="6.9999995" - y="1030.3622" - id="rect3047-1" - style="fill:#c7c7c7;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="10" - y="1030.3622" - id="rect3049-5" - style="fill:#a3a3a3;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="10" - y="1030.3622" - id="rect3051-9" - style="fill:#cacaca;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="13" - y="1030.3622" - id="rect3053-2" - style="fill:#d8d8d8;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="16" - y="1030.3622" - id="rect3055-9" - style="fill:#cfcfcf;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="19" - y="1030.3622" - id="rect3057-7" - style="fill:#cfcfcf;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="22" - y="1030.3622" - id="rect3059-2" - style="fill:#bababa;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="25" - y="1030.3622" - id="rect3061-7" - style="fill:#aaaaaa;fill-opacity:1;stroke:none" /> - <path - d="m 6.0000007,1035.3622 8.0000003,0 0,2 -6.0000003,0 0,3 -2,0 z" - id="path4032-3" - style="fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter4028-6)" /> - <rect - width="3" - height="3" - x="3.9999998" - y="1033.3622" - id="rect3063-8" - style="fill:#bababa;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="6.9999995" - y="1033.3622" - id="rect3065-6" - style="fill:#c4c4c4;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="10" - y="1033.3622" - id="rect3067-1" - style="fill:#a3a3a3;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="10" - y="1033.3622" - id="rect3069-9" - style="fill:#bababa;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="13" - y="1033.3622" - id="rect3071-7" - style="fill:#c1c1c1;fill-opacity:1;stroke:none" /> - <path - d="m 18.000001,1035.3622 8,0 0,2 -6,0 0,3 -2,0 z" - id="path4036-6" - style="fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter4028-6)" /> - <rect - width="3" - height="3" - x="16" - y="1033.3622" - id="rect3073-1" - style="fill:#afafaf;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="19" - y="1033.3622" - id="rect3075-8" - style="fill:#cacaca;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="22" - y="1033.3622" - id="rect3077-8" - style="fill:#aaaaaa;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="25" - y="1033.3622" - id="rect3079-2" - style="fill:#aaaaaa;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="3.9999998" - y="1036.3622" - id="rect3153-6" - style="fill:#c4c4c4;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="13" - y="1036.3622" - id="rect3159-7" - style="fill:#c4c4c4;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="16" - y="1036.3622" - id="rect3161-0" - style="fill:#cacaca;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="25" - y="1036.3622" - id="rect3167-3" - style="fill:#bababa;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="3.9999998" - y="1039.3622" - id="rect3169-4" - style="fill:#a7a7a7;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="6.9999995" - y="1039.3622" - id="rect3171-8" - style="fill:#c1c1c1;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="10" - y="1039.3622" - id="rect3173-5" - style="fill:#a3a3a3;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="10" - y="1039.3622" - id="rect3175-0" - style="fill:#cacaca;fill-opacity:1;stroke:none" /> - <rect - width="6" - height="3" - x="13" - y="1039.3622" - id="rect3177-4" - style="fill:#828282;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="19" - y="1039.3622" - id="rect3181-9" - style="fill:#cacaca;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="22" - y="1039.3622" - id="rect3183-7" - style="fill:#aaaaaa;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="25" - y="1039.3622" - id="rect3185-6" - style="fill:#8f8f8f;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="3.9999998" - y="1042.3622" - id="rect3187-1" - style="fill:#9e9e9e;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="25" - y="1042.3622" - id="rect3203-8" - style="fill:#919191;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="3.9999998" - y="1045.3622" - id="rect3205-4" - style="fill:#828282;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="6.9999995" - y="1045.3622" - id="rect3207-2" - style="fill:#7f7f7f;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="10" - y="1045.3622" - id="rect3209-3" - style="fill:#a3a3a3;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="10" - y="1045.3622" - id="rect3211-3" - style="fill:#858585;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="13" - y="1045.3622" - id="rect3213-9" - style="fill:#858585;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="16" - y="1045.3622" - id="rect3215-7" - style="fill:#919191;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="19" - y="1045.3622" - id="rect3217-0" - style="fill:#858585;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="22" - y="1045.3622" - id="rect3219-4" - style="fill:#949494;fill-opacity:1;stroke:none" /> - <rect - width="3" - height="3" - x="25" - y="1045.3622" - id="rect3221-5" - style="fill:#888888;fill-opacity:1;stroke:none" /> - <path - d="m 4.0000007,1023.3622 -1,1 0,24 1,1 24.0000003,0 1,-1 0,-24 -1,-1 z m 0,1 24.0000003,0 0,24 -24.0000003,0 z" - id="rect3223-4" - style="fill:#333333;fill-opacity:1;stroke:none" /> - <rect - width="4" - height="3" - x="7.9999995" - y="1036.3622" - id="rect4124-4" - style="fill:#008080;fill-opacity:1;stroke:none;filter:url(#filter5727)" /> - <rect - width="2" - height="1" - x="9" - y="1037.3622" - id="rect4084-3" - style="fill:#00ffff;fill-opacity:1;stroke:none;filter:url(#filter5711)" /> - <rect - width="4" - height="3" - x="20" - y="1036.3622" - id="rect4124-9-2" - style="fill:#008080;fill-opacity:1;stroke:none;filter:url(#filter5723)" /> - <rect - width="2" - height="1" - x="21" - y="1037.3622" - id="rect4086-7" - style="fill:#00ffff;fill-opacity:1;stroke:none;filter:url(#filter5719)" /> - </g> -</svg> diff --git a/application/resources/sources/skeleton.svg b/application/resources/sources/skeleton.svg deleted file mode 100644 index 5d55f272..00000000 --- a/application/resources/sources/skeleton.svg +++ /dev/null @@ -1,610 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="32" - height="32" - id="svg2" - version="1.1" - inkscape:version="0.48.4 r9939" - sodipodi:docname="skeleton.svg" - inkscape:export-filename="/home/peterix/projects/MultiMC4/src/resources/insticons/skeleton128.png" - inkscape:export-xdpi="360" - inkscape:export-ydpi="360"> - <defs - id="defs4"> - <filter - color-interpolation-filters="sRGB" - inkscape:collect="always" - id="filter5723" - x="-0.20999999" - width="1.42" - y="-0.28" - height="1.5599999"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.35" - id="feGaussianBlur5725" /> - </filter> - <filter - color-interpolation-filters="sRGB" - inkscape:collect="always" - id="filter5727" - x="-0.20999999" - width="1.42" - y="-0.28" - height="1.5599999"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.35" - id="feGaussianBlur5729" /> - </filter> - <filter - color-interpolation-filters="sRGB" - inkscape:collect="always" - id="filter4028-6" - x="-0.14708571" - width="1.2941715" - y="-0.25740001" - height="1.5148"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.429" - id="feGaussianBlur4030-9" /> - </filter> - <filter - color-interpolation-filters="sRGB" - inkscape:collect="always" - id="filter4056-6"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.676" - id="feGaussianBlur4058-6" /> - </filter> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="11.313708" - inkscape:cx="-18.309169" - inkscape:cy="22.958832" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="true" - inkscape:window-width="1614" - inkscape:window-height="1030" - inkscape:window-x="1676" - inkscape:window-y="-3" - inkscape:window-maximized="1"> - <inkscape:grid - type="xygrid" - id="grid2996" - empspacing="4" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-1020.3622)"> - <rect - style="fill:#999999;fill-opacity:1;stroke:none" - id="rect4063-2" - width="24" - height="24" - x="3.9999998" - y="1024.3622" /> - <rect - style="fill:#4d4d4d;fill-opacity:1;stroke:none;filter:url(#filter4056-6)" - id="rect4038-2" - width="26" - height="26" - x="3" - y="3" - transform="matrix(1.0769231,0,0,1.0769237,-1.2307693,1019.1314)" /> - <rect - y="1041.3622" - x="5.9999995" - height="5.0000172" - width="20" - id="rect3189-4" - style="fill:#494949;fill-opacity:1;stroke:none" /> - <path - style="fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter4028-6)" - d="m 6.0000007,1041.3622 20.0000003,0 0,2 -18.0000003,0 0,3 -2,0 z" - id="path4034-6" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccc" /> - <rect - style="fill:#494949;fill-opacity:1;stroke:none" - id="rect3155-9" - width="8" - height="5.0000172" - x="5.9999995" - y="1035.3622" /> - <rect - y="1035.3622" - x="18" - height="5.0000172" - width="8" - id="rect3163-4" - style="fill:#494949;fill-opacity:1;stroke:none" /> - <rect - style="fill:#a1a1a1;fill-opacity:1;stroke:none" - id="rect3009-1" - width="3" - height="3" - x="3.9999998" - y="1024.3622" /> - <rect - y="1024.3622" - x="6.9999995" - height="3" - width="3" - id="rect3011-9" - style="fill:#9b9b9b;fill-opacity:1;stroke:none" /> - <rect - style="fill:#a3a3a3;fill-opacity:1;stroke:none" - id="rect3013-0" - width="3" - height="3" - x="10" - y="1024.3622" /> - <rect - style="fill:#919191;fill-opacity:1;stroke:none" - id="rect3017-9" - width="3" - height="3" - x="13" - y="1024.3622" /> - <rect - y="1024.3622" - x="16" - height="3" - width="3" - id="rect3019-6" - style="fill:#888888;fill-opacity:1;stroke:none" /> - <rect - style="fill:#8f8f8f;fill-opacity:1;stroke:none" - id="rect3021-8" - width="3" - height="3" - x="19" - y="1024.3622" /> - <rect - y="1024.3622" - x="22" - height="3" - width="3" - id="rect3023-6" - style="fill:#9b9b9b;fill-opacity:1;stroke:none" /> - <rect - style="fill:#989898;fill-opacity:1;stroke:none" - id="rect3025-7" - width="3" - height="3" - x="25" - y="1024.3622" /> - <rect - y="1027.3622" - x="3.9999998" - height="3" - width="3" - id="rect3027-7" - style="fill:#9b9b9b;fill-opacity:1;stroke:none" /> - <rect - style="fill:#9b9b9b;fill-opacity:1;stroke:none" - id="rect3029-6" - width="3" - height="3" - x="6.9999995" - y="1027.3622" /> - <rect - y="1027.3622" - x="10" - height="3" - width="3" - id="rect3031-0" - style="fill:#a3a3a3;fill-opacity:1;stroke:none" /> - <rect - style="fill:#9b9b9b;fill-opacity:1;stroke:none" - id="rect3033-4" - width="3" - height="3" - x="10" - y="1027.3622" /> - <rect - y="1027.3622" - x="13" - height="3" - width="3" - id="rect3035-4" - style="fill:#aaaaaa;fill-opacity:1;stroke:none" /> - <rect - style="fill:#c1c1c1;fill-opacity:1;stroke:none" - id="rect3037-2" - width="3" - height="3" - x="16" - y="1027.3622" /> - <rect - y="1027.3622" - x="19" - height="3" - width="3" - id="rect3039-4" - style="fill:#bebebe;fill-opacity:1;stroke:none" /> - <rect - style="fill:#9b9b9b;fill-opacity:1;stroke:none" - id="rect3041-2" - width="3" - height="3" - x="22" - y="1027.3622" /> - <rect - y="1027.3622" - x="25" - height="3" - width="3" - id="rect3043-1" - style="fill:#919191;fill-opacity:1;stroke:none" /> - <rect - y="1030.3622" - x="3.9999998" - height="3" - width="3" - id="rect3045-3" - style="fill:#9b9b9b;fill-opacity:1;stroke:none" /> - <rect - style="fill:#c7c7c7;fill-opacity:1;stroke:none" - id="rect3047-1" - width="3" - height="3" - x="6.9999995" - y="1030.3622" /> - <rect - y="1030.3622" - x="10" - height="3" - width="3" - id="rect3049-5" - style="fill:#a3a3a3;fill-opacity:1;stroke:none" /> - <rect - style="fill:#cacaca;fill-opacity:1;stroke:none" - id="rect3051-9" - width="3" - height="3" - x="10" - y="1030.3622" /> - <rect - y="1030.3622" - x="13" - height="3" - width="3" - id="rect3053-2" - style="fill:#d8d8d8;fill-opacity:1;stroke:none" /> - <rect - style="fill:#cfcfcf;fill-opacity:1;stroke:none" - id="rect3055-9" - width="3" - height="3" - x="16" - y="1030.3622" /> - <rect - y="1030.3622" - x="19" - height="3" - width="3" - id="rect3057-7" - style="fill:#cfcfcf;fill-opacity:1;stroke:none" /> - <rect - style="fill:#bababa;fill-opacity:1;stroke:none" - id="rect3059-2" - width="3" - height="3" - x="22" - y="1030.3622" /> - <rect - y="1030.3622" - x="25" - height="3" - width="3" - id="rect3061-7" - style="fill:#aaaaaa;fill-opacity:1;stroke:none" /> - <path - sodipodi:nodetypes="ccccccc" - inkscape:connector-curvature="0" - id="path4032-3" - d="m 6.0000007,1035.3622 8.0000003,0 0,2 -6.0000003,0 0,3 -2,0 z" - style="fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter4028-6)" /> - <rect - style="fill:#bababa;fill-opacity:1;stroke:none" - id="rect3063-8" - width="3" - height="3" - x="3.9999998" - y="1033.3622" /> - <rect - y="1033.3622" - x="6.9999995" - height="3" - width="3" - id="rect3065-6" - style="fill:#c4c4c4;fill-opacity:1;stroke:none" /> - <rect - style="fill:#a3a3a3;fill-opacity:1;stroke:none" - id="rect3067-1" - width="3" - height="3" - x="10" - y="1033.3622" /> - <rect - y="1033.3622" - x="10" - height="3" - width="3" - id="rect3069-9" - style="fill:#bababa;fill-opacity:1;stroke:none" /> - <rect - style="fill:#c1c1c1;fill-opacity:1;stroke:none" - id="rect3071-7" - width="3" - height="3" - x="13" - y="1033.3622" /> - <path - style="fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter4028-6)" - d="m 18.000001,1035.3622 8,0 0,2 -6,0 0,3 -2,0 z" - id="path4036-6" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccc" /> - <rect - y="1033.3622" - x="16" - height="3" - width="3" - id="rect3073-1" - style="fill:#afafaf;fill-opacity:1;stroke:none" /> - <rect - style="fill:#cacaca;fill-opacity:1;stroke:none" - id="rect3075-8" - width="3" - height="3" - x="19" - y="1033.3622" /> - <rect - y="1033.3622" - x="22" - height="3" - width="3" - id="rect3077-8" - style="fill:#aaaaaa;fill-opacity:1;stroke:none" /> - <rect - style="fill:#aaaaaa;fill-opacity:1;stroke:none" - id="rect3079-2" - width="3" - height="3" - x="25" - y="1033.3622" /> - <rect - y="1036.3622" - x="3.9999998" - height="3" - width="3" - id="rect3153-6" - style="fill:#c4c4c4;fill-opacity:1;stroke:none" /> - <rect - y="1036.3622" - x="13" - height="3" - width="3" - id="rect3159-7" - style="fill:#c4c4c4;fill-opacity:1;stroke:none" /> - <rect - style="fill:#cacaca;fill-opacity:1;stroke:none" - id="rect3161-0" - width="3" - height="3" - x="16" - y="1036.3622" /> - <rect - y="1036.3622" - x="25" - height="3" - width="3" - id="rect3167-3" - style="fill:#bababa;fill-opacity:1;stroke:none" /> - <rect - style="fill:#a7a7a7;fill-opacity:1;stroke:none" - id="rect3169-4" - width="3" - height="3" - x="3.9999998" - y="1039.3622" /> - <rect - y="1039.3622" - x="6.9999995" - height="3" - width="3" - id="rect3171-8" - style="fill:#c1c1c1;fill-opacity:1;stroke:none" /> - <rect - style="fill:#a3a3a3;fill-opacity:1;stroke:none" - id="rect3173-5" - width="3" - height="3" - x="10" - y="1039.3622" /> - <rect - y="1039.3622" - x="10" - height="3" - width="3" - id="rect3175-0" - style="fill:#cacaca;fill-opacity:1;stroke:none" /> - <rect - style="fill:#828282;fill-opacity:1;stroke:none" - id="rect3177-4" - width="6" - height="3" - x="13" - y="1039.3622" /> - <rect - style="fill:#cacaca;fill-opacity:1;stroke:none" - id="rect3181-9" - width="3" - height="3" - x="19" - y="1039.3622" /> - <rect - y="1039.3622" - x="22" - height="3" - width="3" - id="rect3183-7" - style="fill:#aaaaaa;fill-opacity:1;stroke:none" /> - <rect - style="fill:#8f8f8f;fill-opacity:1;stroke:none" - id="rect3185-6" - width="3" - height="3" - x="25" - y="1039.3622" /> - <rect - style="fill:#9e9e9e;fill-opacity:1;stroke:none" - id="rect3187-1" - width="3" - height="3" - x="3.9999998" - y="1042.3622" /> - <rect - style="fill:#919191;fill-opacity:1;stroke:none" - id="rect3203-8" - width="3" - height="3" - x="25" - y="1042.3622" /> - <rect - y="1045.3622" - x="3.9999998" - height="3" - width="3" - id="rect3205-4" - style="fill:#828282;fill-opacity:1;stroke:none" /> - <rect - style="fill:#7f7f7f;fill-opacity:1;stroke:none" - id="rect3207-2" - width="3" - height="3" - x="6.9999995" - y="1045.3622" /> - <rect - y="1045.3622" - x="10" - height="3" - width="3" - id="rect3209-3" - style="fill:#a3a3a3;fill-opacity:1;stroke:none" /> - <rect - style="fill:#858585;fill-opacity:1;stroke:none" - id="rect3211-3" - width="3" - height="3" - x="10" - y="1045.3622" /> - <rect - y="1045.3622" - x="13" - height="3" - width="3" - id="rect3213-9" - style="fill:#858585;fill-opacity:1;stroke:none" /> - <rect - style="fill:#919191;fill-opacity:1;stroke:none" - id="rect3215-7" - width="3" - height="3" - x="16" - y="1045.3622" /> - <rect - y="1045.3622" - x="19" - height="3" - width="3" - id="rect3217-0" - style="fill:#858585;fill-opacity:1;stroke:none" /> - <rect - style="fill:#949494;fill-opacity:1;stroke:none" - id="rect3219-4" - width="3" - height="3" - x="22" - y="1045.3622" /> - <rect - y="1045.3622" - x="25" - height="3" - width="3" - id="rect3221-5" - style="fill:#888888;fill-opacity:1;stroke:none" /> - <path - style="fill:#333333;fill-opacity:1;stroke:none" - d="m 4.0000007,1023.3622 -1,1 0,24 1,1 24.0000003,0 1,-1 0,-24 -1,-1 z m 0,1 24.0000003,0 0,24 -24.0000003,0 z" - id="rect3223-4" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccccccccccc" /> - <rect - style="fill:#008080;fill-opacity:1;stroke:none;filter:url(#filter5727)" - id="rect4124-4" - width="4" - height="3" - x="7.9999995" - y="1036.3622" /> - <rect - style="fill:#00ffff;fill-opacity:1;stroke:none;" - id="rect4084-3" - width="2" - height="1" - x="9" - y="1037.3622" /> - <rect - style="fill:#008080;fill-opacity:1;stroke:none;filter:url(#filter5723)" - id="rect4124-9-2" - width="4" - height="3" - x="20" - y="1036.3622" /> - <rect - style="fill:#00ffff;fill-opacity:1;stroke:none;" - id="rect4086-7" - width="2" - height="1" - x="21" - y="1037.3622" /> - </g> -</svg> diff --git a/application/resources/sources/squarecreeper.svg b/application/resources/sources/squarecreeper.svg deleted file mode 100644 index a1b0f4d1..00000000 --- a/application/resources/sources/squarecreeper.svg +++ /dev/null @@ -1,828 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="32" - height="32" - id="svg2" - version="1.1" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="squarecreeper.svg"> - <defs - id="defs4"> - <linearGradient - id="linearGradient3144"> - <stop - style="stop-color:#ffbe01;stop-opacity:1;" - offset="0" - id="stop3146" /> - <stop - id="stop3922" - offset="0.48206061" - style="stop-color:#ff0101;stop-opacity:1" /> - <stop - id="stop3920" - offset="0.76562566" - style="stop-color:#e70000;stop-opacity:0.45098039;" /> - <stop - style="stop-color:#d40000;stop-opacity:0;" - offset="1" - id="stop3148" /> - </linearGradient> - <linearGradient - id="linearGradient3917"> - <stop - id="stop3919" - offset="0" - style="stop-color:#115008;stop-opacity:1;" /> - <stop - style="stop-color:#39c228;stop-opacity:1;" - offset="0.49999952" - id="stop3921" /> - <stop - id="stop3923" - offset="1" - style="stop-color:#c7f7c2;stop-opacity:1;" /> - </linearGradient> - <linearGradient - id="linearGradient3892"> - <stop - style="stop-color:#1a1a1a;stop-opacity:1;" - offset="0" - id="stop3894" /> - <stop - style="stop-color:#1a1a1a;stop-opacity:0;" - offset="1" - id="stop3896" /> - </linearGradient> - <linearGradient - id="linearGradient3871"> - <stop - style="stop-color:#115008;stop-opacity:1;" - offset="0" - id="stop3873" /> - <stop - id="stop3900" - offset="0.5" - style="stop-color:#39c228;stop-opacity:1;" /> - <stop - style="stop-color:#c7f7c2;stop-opacity:1;" - offset="1" - id="stop3875" /> - </linearGradient> - <filter - inkscape:collect="always" - id="filter3867"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.792" - id="feGaussianBlur3869" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3892" - id="linearGradient3898" - x1="16" - y1="31" - x2="16" - y2="26" - gradientUnits="userSpaceOnUse" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3871" - id="linearGradient5605" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(0,1020.3622)" - x1="27" - y1="26" - x2="5" - y2="3" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3871-3" - id="linearGradient5605-2" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(0,1020.3622)" - x1="27" - y1="26" - x2="5" - y2="3" /> - <linearGradient - id="linearGradient3871-3"> - <stop - style="stop-color:#115008;stop-opacity:1;" - offset="0" - id="stop3873-5" /> - <stop - id="stop3900-7" - offset="0.5" - style="stop-color:#39c228;stop-opacity:1;" /> - <stop - style="stop-color:#c7f7c2;stop-opacity:1;" - offset="1" - id="stop3875-9" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3917" - id="linearGradient3147" - x1="31" - y1="1052.3622" - x2="4" - y2="1024.3622" - gradientUnits="userSpaceOnUse" - spreadMethod="reflect" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3144" - id="radialGradient3958" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.98990735,-2.841494e-6,-1.2215289e-6,0.96907996,-6.585324,13.296415)" - cx="10" - cy="1030.3622" - fx="10" - fy="1030.3622" - r="3.03125" /> - <filter - inkscape:collect="always" - id="filter4012" - x="-0.37037037" - width="1.7407407" - y="-0.37037037" - height="1.7407407"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.30864198" - id="feGaussianBlur4014" /> - </filter> - <filter - inkscape:collect="always" - id="filter4206" - x="-0.44837625" - width="1.8967525" - y="-0.44837625" - height="1.8967525"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="0.37364687" - id="feGaussianBlur4208" /> - </filter> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="1" - inkscape:cx="218.7892" - inkscape:cy="-32.230167" - inkscape:document-units="px" - inkscape:current-layer="g4186" - showgrid="false" - inkscape:window-width="1607" - inkscape:window-height="1030" - inkscape:window-x="1676" - inkscape:window-y="-3" - inkscape:window-maximized="1" - inkscape:snap-grids="true" - inkscape:snap-to-guides="true" - inkscape:snap-nodes="true" - inkscape:snap-bbox="false" - inkscape:snap-object-midpoints="true"> - <inkscape:grid - type="xygrid" - id="grid2985" - empspacing="4" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-1020.3622)"> - <rect - style="fill:#2b1100;fill-opacity:1;stroke:none" - id="rect3063" - width="22" - height="22" - x="5" - y="5" - rx="5" - ry="5" - transform="translate(0,1020.3622)" /> - <path - id="path3065" - d="m 6,1026.3622 0,22 22,0 0,-22 z m 2,2 6,0 0,6 6,0 0,-6 6,0 0,6 -6,0 0,3 3,0 0,9 -3,0 0,-3 -6,0 0,3 -3,0 0,-9 3,0 0,-3 -6,0 z" - style="fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter3867)" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccccccccccccccccccccccc" /> - <g - id="g4186" - transform="matrix(7.8663398,0,0,5.253808,-157.10208,-4373.7892)"> - <rect - y="9" - x="21" - height="2" - width="2" - id="rect4188" - style="opacity:0.25104603;fill:#ff0101;fill-opacity:1;stroke:#4d4d4d;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;filter:url(#filter4206)" - transform="matrix(0.74984559,0,0,1.4646069,5.5088131,1015.3024)" /> - </g> - <path - style="fill:url(#linearGradient5605);fill-opacity:1;stroke:none" - d="m 7,1022.3622 c -2.77,0 -5,0 -5,0 l 0,30 28,0 c 0,-10 0,-20 0,-30 z m 0,5 6,0 0,6 6,0 0,-6 6,0 0,6 -6,0 0,3 3,0 0,9 -3,0 0,-3 -6,0 0,3 -3,0 0,-9 3,0 0,-3 -6,0 z" - id="rect3045" - inkscape:connector-curvature="0" - sodipodi:nodetypes="sccccsccccccccccccccccccccc" /> - <g - id="g5466" - style="opacity:0.3" - transform="translate(0,-1)"> - <path - inkscape:connector-curvature="0" - id="rect3902" - d="m 3.999974,1022.3622 3,0 0,3 -3,0 z" - style="fill:#ffffff;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3904" - d="m 6.999974,1022.3622 3,0 0,3 -3,0 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3906" - d="m 3.999974,1025.3622 3,0 0,3 -3,0 z" - style="fill:#999999;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3908" - d="m 0.999974,1025.3622 3,0 0,3 -3,0 z" - style="fill:#f2f2f2;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3914" - d="m 3.999974,1028.3622 3,0 0,3 -3,0 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3916" - d="m 0.999974,1028.3622 3,0 0,3 -3,0 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3918" - d="m 6.999974,1025.3622 3,0 0,3 -3,0 z" - style="fill:#4d4d4d;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3924" - d="m 9.999974,1025.3622 3,0 0,3 -3,0 z" - style="fill:#999999;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3926" - d="m 12.999974,1028.3622 3,0 0,3 -3,0 z" - style="fill:#f2f2f2;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3930" - d="m 12.999974,1025.3622 3,0 0,3 -3,0 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3932" - d="m 9.999974,1022.3622 3,0 0,3 -3,0 z" - style="fill:#666666;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3936" - d="m 12.999974,1022.3622 3,0 0,3 -3,0 z" - style="fill:#333333;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect3999" - d="m 18.99998,1028.3622 0,-3 3,0 0,3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4007" - d="m 15.99998,1031.3622 0,-3 3,0 0,3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4009" - d="m 24.99998,1031.3622 0,-3 3,0 0,3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4011" - d="m 24.99998,1034.3622 0,-3 3,0 0,3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4013" - d="m 21.99998,1028.3622 0,-3 3,0 0,3 z" - style="fill:#4d4d4d;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4015" - d="m 24.99998,1028.3622 0,-3 3,0 0,3 z" - style="fill:#e6e6e6;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4017" - d="m 15.99998,1028.3622 0,-3 3,0 0,3 z" - style="fill:#e6e6e6;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4019" - d="m 21.99998,1025.3622 0,-3 3,0 0,3 z" - style="fill:#999999;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4023" - d="m 24.99998,1025.3622 0,-3 3,0 0,3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4027" - d="m 18.99998,1025.3622 0,-3 3,0 0,3 z" - style="fill:#666666;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4029" - d="m 15.99998,1025.3622 0,-3 3,0 0,3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4035" - d="m 15.99998,1034.3622 0,-3 3,0 0,3 z" - style="fill:#808080;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4039" - d="m 6.99998,1034.3622 0,3 3,0 0,-3 z" - style="fill:#ffffff;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4041" - d="m 6.99998,1037.3622 0,3 3,0 0,-3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4043" - d="m 9.99998,1034.3622 0,3 3,0 0,-3 z" - style="fill:#999999;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4049" - d="m 3.99998,1034.3622 0,3 3,0 0,-3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4053" - d="m 12.99998,1031.3622 0,3 3,0 0,-3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4059" - d="m 3.99998,1037.3622 0,3 3,0 0,-3 z" - style="fill:#e6e6e6;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4063" - d="m 12.99998,1043.3622 0,3 3,0 0,-3 z" - style="fill:#f2f2f2;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4069" - d="m 6.99998,1040.3622 0,3 3,0 0,-3 z" - style="fill:#666666;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4071" - d="m 3.99998,1040.3622 0,3 3,0 0,-3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4073" - d="m 6.99998,1043.3622 0,3 3,0 0,-3 z" - style="fill:#333333;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4075" - d="m 3.99998,1043.3622 0,3 3,0 0,-3 z" - style="fill:#ececec;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4077" - d="m 3.99998,1031.3622 0,3 3,0 0,-3 z" - style="fill:#808080;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4133" - d="m 28,1028.3622 0,3 3,0 0,-3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4143" - d="m 28,1031.3622 0,3 3,0 0,-3 z" - style="fill:#e6e6e6;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4155" - d="m 28,1034.3622 0,3 3,0 0,-3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4159" - d="m 28,1037.3622 0,3 3,0 0,-3 z" - style="fill:#ececec;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4161" - d="m 28,1025.3622 0,3 3,0 0,-3 z" - style="fill:#808080;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4175" - d="m 28,1043.3622 0,3 3,0 0,-3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4185" - d="m 28,1046.3622 0,3 3,0 0,-3 z" - style="fill:#e6e6e6;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4197" - d="m 28,1049.3622 0,3 3,0 0,-3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4203" - d="m 28,1040.3622 0,3 3,0 0,-3 z" - style="fill:#808080;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4207" - d="m 6.99998,1049.3622 0,3 3,0 0,-3 z" - style="fill:#ffffff;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4211" - d="m 9.99998,1049.3622 0,3 3,0 0,-3 z" - style="fill:#999999;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4213" - d="m 9.99998,1046.3622 0,3 3,0 0,-3 z" - style="fill:#f2f2f2;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4215" - d="m 6.99998,1046.3622 0,3 3,0 0,-3 z" - style="fill:#666666;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4217" - d="m 3.99998,1049.3622 0,3 3,0 0,-3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4219" - d="m 12.99998,1049.3622 0,3 3,0 0,-3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4221" - d="m 12.99998,1046.3622 0,3 3,0 0,-3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4245" - d="m 3.99998,1046.3622 0,3 3,0 0,-3 z" - style="fill:#808080;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4261" - d="m 0.99998,1034.3622 0,3 3,0 0,-3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4263" - d="m 0.99998,1031.3622 0,3 3,0 0,-3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4267" - d="m 0.99998,1037.3622 0,3 3,0 0,-3 z" - style="fill:#e6e6e6;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4273" - d="m 0.99998,1043.3622 0,3 3,0 0,-3 z" - style="fill:#f2f2f2;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4275" - d="m 0.99998,1040.3622 0,3 3,0 0,-3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4303" - d="m 0.99998,1049.3622 0,3 3,0 0,-3 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4305" - d="m 0.99998,1046.3622 0,3 3,0 0,-3 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4093" - d="m 12.999974,1043.3622 3,0 0,3 -3,0 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4099" - d="m 15.999974,1043.3622 3,0 0,3 -3,0 z" - style="fill:#e6e6e6;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4105" - d="m 21.999974,1043.3622 3,0 0,3 -3,0 z" - style="fill:#f2f2f2;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4109" - d="m 21.999974,1040.3622 3,0 0,3 -3,0 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4113" - d="m 18.999974,1034.3622 3,0 0,3 -3,0 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4115" - d="m 21.999974,1037.3622 3,0 0,3 -3,0 z" - style="fill:#333333;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4117" - d="m 21.999974,1034.3622 3,0 0,3 -3,0 z" - style="fill:#ececec;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4119" - d="m 9.999974,1034.3622 3,0 0,3 -3,0 z" - style="fill:#808080;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4377" - d="m 21.999974,1043.3622 3,0 0,3 -3,0 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4379" - d="m 18.999974,1046.3622 3,0 0,3 -3,0 z" - style="fill:#999999;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4381" - d="m 15.999974,1046.3622 3,0 0,3 -3,0 z" - style="fill:#f2f2f2;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4383" - d="m 15.999974,1043.3622 3,0 0,3 -3,0 z" - style="fill:#666666;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4387" - d="m 18.999974,1049.3622 3,0 0,3 -3,0 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4389" - d="m 15.999974,1049.3622 3,0 0,3 -3,0 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4391" - d="m 21.999974,1046.3622 3,0 0,3 -3,0 z" - style="fill:#4d4d4d;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4393" - d="m 21.999974,1049.3622 3,0 0,3 -3,0 z" - style="fill:#e6e6e6;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4395" - d="m 21.999974,1040.3622 3,0 0,3 -3,0 z" - style="fill:#e6e6e6;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4397" - d="m 24.999974,1046.3622 3,0 0,3 -3,0 z" - style="fill:#999999;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4399" - d="m 27.999974,1049.3622 3,0 0,3 -3,0 z" - style="fill:#f2f2f2;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4401" - d="m 24.999974,1049.3622 3,0 0,3 -3,0 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4403" - d="m 27.999974,1046.3622 3,0 0,3 -3,0 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4405" - d="m 24.999974,1043.3622 3,0 0,3 -3,0 z" - style="fill:#666666;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4407" - d="m 24.999974,1040.3622 3,0 0,3 -3,0 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4409" - d="m 27.999974,1043.3622 3,0 0,3 -3,0 z" - style="fill:#333333;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4411" - d="m 27.999974,1040.3622 3,0 0,3 -3,0 z" - style="fill:#ececec;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4417" - d="m 18.999974,1034.3622 3,0 0,3 -3,0 z" - style="fill:#ffffff;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4419" - d="m 21.999974,1034.3622 3,0 0,3 -3,0 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4433" - d="m 21.999974,1037.3622 3,0 0,3 -3,0 z" - style="fill:#4d4d4d;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4435" - d="m 21.999974,1040.3622 3,0 0,3 -3,0 z" - style="fill:#e6e6e6;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4439" - d="m 24.999974,1037.3622 3,0 0,3 -3,0 z" - style="fill:#999999;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4441" - d="m 27.999974,1040.3622 3,0 0,3 -3,0 z" - style="fill:#f2f2f2;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4443" - d="m 24.999974,1040.3622 3,0 0,3 -3,0 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4445" - d="m 27.999974,1037.3622 3,0 0,3 -3,0 z" - style="fill:#cccccc;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4447" - d="m 24.999974,1034.3622 3,0 0,3 -3,0 z" - style="fill:#666666;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4449" - d="m 24.999974,1031.3622 3,0 0,3 -3,0 z" - style="fill:#b3b3b3;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4451" - d="m 27.999974,1034.3622 3,0 0,3 -3,0 z" - style="fill:#333333;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4453" - d="m 27.999974,1031.3622 3,0 0,3 -3,0 z" - style="fill:#ececec;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="rect4455" - d="m 15.999974,1031.3622 3,0 0,3 -3,0 z" - style="fill:#808080;fill-opacity:1;stroke:none" /> - </g> - <path - style="fill:#000000;stroke:none" - d="m 0,1020.3622 c 0,10.0937 0,21.0424 0,32 l 2,0 c 0,-10 0,-20 0,-30 7.6666667,0 28,0 28,0 0,9.4258 0,19.9066 0,30 l 2,0 c 0,-10.6667 0,-21.3333 0,-32 z" - id="rect3887" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccccc" /> - <path - style="opacity:0.35;fill:url(#linearGradient3147);fill-opacity:1;stroke:none" - d="m 1,1021.3622 c 0,9.7507 0,20.4801 0,31 l 1,0 c 0,-10 0,-20 0,-30 7.6666667,0 28,0 28,0 0,9.4258 0,19.9066 0,30 l 1,0 c 0,-10.3333 0,-20.6667 0,-31 z" - id="rect3098" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccccc" /> - <rect - style="fill:url(#linearGradient3898);fill-opacity:1;stroke:none" - id="rect3890" - width="32" - height="6" - x="0" - y="26" - transform="translate(0,1020.3622)" /> - <rect - y="1008.7997" - x="0.24999999" - height="6.0625" - width="6.0625" - id="rect3931" - style="fill:url(#radialGradient3958);fill-opacity:1;stroke:#4d4d4d;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none" /> - <use - x="0" - y="0" - xlink:href="#rect3931" - id="use3954" - transform="translate(-12.8125,-2.374983)" - width="32" - height="32" /> - <g - id="g4046" - style="opacity:1;"> - <rect - transform="matrix(1.5471436,0,0,1.5471436,-12.037158,1014.8908)" - style="fill:#ff0101;fill-opacity:1;stroke:#4d4d4d;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;filter:url(#filter4012)" - id="rect4042" - width="2" - height="2" - x="21" - y="9" /> - <rect - transform="matrix(0.70378989,0,0,0.70378989,6.5166224,1023.3243)" - y="9" - x="21" - height="2" - width="2" - id="rect3960" - style="fill:#ffc501;fill-opacity:1;stroke:#4d4d4d;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;filter:url(#filter4012)" /> - <rect - style="fill:#fcff01;fill-opacity:1;stroke:#4d4d4d;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;filter:url(#filter4012)" - id="rect4044" - width="2" - height="2" - x="21" - y="9" - transform="matrix(0.16522605,0,0,0.16522605,18.365027,1028.7099)" /> - </g> - <use - x="0" - y="0" - xlink:href="#g4046" - id="use4096" - transform="translate(-12.000001,0)" - width="32" - height="32" /> - </g> -</svg> diff --git a/application/resources/sources/steve.svg b/application/resources/sources/steve.svg deleted file mode 100644 index 2233272c..00000000 --- a/application/resources/sources/steve.svg +++ /dev/null @@ -1,534 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="32" - height="32" - id="svg2" - version="1.1" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="steve.svg" - inkscape:export-filename="/home/peterix/projects/MultiMC4/src/resources/insticons/steve128.png" - inkscape:export-xdpi="360" - inkscape:export-ydpi="360"> - <defs - id="defs4"> - <filter - inkscape:collect="always" - id="filter3927" - x="-0.10864197" - width="1.2172839" - y="-0.10864198" - height="1.217284"> - <feGaussianBlur - inkscape:collect="always" - stdDeviation="1.1769547" - id="feGaussianBlur3929" /> - </filter> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#484848" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:zoom="4" - inkscape:cx="-15.767253" - inkscape:cy="34.171841" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:window-width="1607" - inkscape:window-height="1030" - inkscape:window-x="1676" - inkscape:window-y="-3" - inkscape:window-maximized="1"> - <inkscape:grid - type="xygrid" - id="grid2996" - empspacing="4" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-1020.3622)"> - <path - style="fill:#002020;fill-opacity:1;stroke:none;filter:url(#filter3927)" - d="m 5.6875,1024.4872 c -1,0 -2,1 -2,2 l 0,22 c 0,1 1,2 2,2 l 22,0 c 1,0 2,-1 2,-2 l 0,-22 c 0,-1 -1,-2 -2,-2 z" - id="rect3223-4" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccccc" /> - <path - style="fill:#2b1e0d;fill-opacity:1;stroke:none" - d="m 6,1024.3622 20,0 c 1,0 2,1 2,2 l 0,7 -3,0 0,-3 -18,0 0,3 -3,0 0,-7.005 c 0,-0.995 1,-1.995 2,-1.995 z" - id="rect3978" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccccccc" /> - <path - style="fill:#421d0a;fill-opacity:1;stroke:none" - d="m 10,22 3,0 0,-3 6,0 0,3 3,0 0,6 -12,0 z" - id="rect3981" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccccc" - transform="translate(0,1020.3622)" /> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:none" - id="rect3080" - width="8" - height="5.0000172" - x="6" - y="1035.3622" /> - <rect - y="1035.3622" - x="18" - height="4.9999957" - width="8" - id="rect3082" - style="fill:#ffffff;fill-opacity:1;stroke:none" /> - <path - style="fill:#9c694c;fill-opacity:1;stroke:none" - d="m 7,10 18,0 0,3 3,0 0,13 c 0,1 -1,2 -2,2 l -4,0 0,-6 -3,0 0,-3 6,0 0,-3 -6,0 0,3 -6,0 0,-3 -6,0 0,3 6,0 0,3 -3,0 0,6 -4,0 C 5,28 4,27 4,26 l 0,-10 0,-3 3,0 z" - id="rect3941" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccccccccccccccccccccccccc" - transform="translate(0,1020.3622)" /> - <rect - y="1024.3622" - x="6.9999995" - height="3" - width="3" - id="rect3011-9" - style="fill:#2b1e0d;fill-opacity:1;stroke:none" /> - <rect - style="fill:#2f1f0f;fill-opacity:1;stroke:none" - id="rect3013-0" - width="3" - height="3" - x="10" - y="1024.3622" /> - <rect - style="fill:#281c0b;fill-opacity:1;stroke:none" - id="rect3017-9" - width="3" - height="3" - x="13" - y="1024.3622" /> - <rect - y="1024.3622" - x="16" - height="3" - width="3" - id="rect3019-6" - style="fill:#241808;fill-opacity:1;stroke:none" /> - <rect - style="fill:#261a0a;fill-opacity:1;stroke:none" - id="rect3021-8" - width="3" - height="3" - x="19" - y="1024.3622" /> - <rect - y="1024.3622" - x="22" - height="3" - width="3" - id="rect3023-6" - style="fill:#2b1e0d;fill-opacity:1;stroke:none" /> - <rect - y="1027.3622" - x="3.9999998" - height="3" - width="3" - id="rect3027-7" - style="fill:#2b1e0d;fill-opacity:1;stroke:none" /> - <rect - style="fill:#2b1e0d;fill-opacity:1;stroke:none" - id="rect3029-6" - width="3" - height="3" - x="6.9999995" - y="1027.3622" /> - <rect - style="fill:#2b1e0d;fill-opacity:1;stroke:none" - id="rect3033-4" - width="3" - height="3" - x="10" - y="1027.3622" /> - <rect - y="1027.3622" - x="13" - height="3" - width="3" - id="rect3035-4" - style="fill:#332411;fill-opacity:1;stroke:none" /> - <rect - style="fill:#422a12;fill-opacity:1;stroke:none" - id="rect3037-2" - width="3" - height="3" - x="16" - y="1027.3622" /> - <rect - y="1027.3622" - x="19" - height="3" - width="3" - id="rect3039-4" - style="fill:#3f2a15;fill-opacity:1;stroke:none" /> - <rect - style="fill:#2c1e0e;fill-opacity:1;stroke:none" - id="rect3041-2" - width="3" - height="3" - x="22" - y="1027.3622" /> - <rect - y="1027.3622" - x="25" - height="3" - width="3" - id="rect3043-1" - style="fill:#281c0b;fill-opacity:1;stroke:none" /> - <rect - y="1030.3622" - x="3.9999998" - height="3" - width="3" - id="rect3045-3" - style="fill:#2b1e0d;fill-opacity:1;stroke:none" /> - <rect - y="1030.3622" - x="25" - height="3" - width="3" - id="rect3061-7" - style="fill:#342512;fill-opacity:1;stroke:none" /> - <rect - style="fill:#8a4c3d;fill-opacity:1;stroke:none" - id="rect3089" - width="6" - height="3" - x="13" - y="1042.3622" /> - <g - id="g3856" - transform="translate(0,1.7382813e-5)"> - <rect - y="1039.3622" - x="13" - height="3" - width="6" - id="rect3177-4" - style="fill:#6a4030;fill-opacity:1;stroke:none" /> - <rect - y="1042.3622" - x="10" - height="3" - width="3" - id="rect3085" - style="fill:#41210c;fill-opacity:1;stroke:none" /> - <rect - style="fill:#41210c;fill-opacity:1;stroke:none" - id="rect3091" - width="3" - height="3" - x="19" - y="1042.3622" /> - <rect - y="1045.3622" - x="13" - height="3" - width="3" - id="rect3093" - style="fill:#421d0a;fill-opacity:1;stroke:none" /> - <rect - style="fill:#45220e;fill-opacity:1;stroke:none" - id="rect3095" - width="3" - height="3" - x="19" - y="1045.3622" /> - <rect - y="1045.3622" - x="10" - height="3" - width="3" - id="rect3097" - style="fill:#45220e;fill-opacity:1;stroke:none" /> - <rect - style="fill:#45220e;fill-opacity:1;stroke:none" - id="rect3099" - width="3" - height="3" - x="16" - y="1045.3622" /> - </g> - <g - id="g3944" - transform="translate(-28,1.7382813e-5)"> - <rect - y="1030.3622" - x="35" - height="3" - width="3" - id="rect3047-1" - style="fill:#b6896c;fill-opacity:1;stroke:none" /> - <rect - y="1030.3622" - x="38" - height="3" - width="3" - id="rect3051-9" - style="fill:#bd8e72;fill-opacity:1;stroke:none" /> - <rect - style="fill:#c69680;fill-opacity:1;stroke:none" - id="rect3053-2" - width="3" - height="3" - x="41" - y="1030.3622" /> - <rect - y="1030.3622" - x="44" - height="3" - width="3" - id="rect3055-9" - style="fill:#bd8b72;fill-opacity:1;stroke:none" /> - <rect - style="fill:#bd8e74;fill-opacity:1;stroke:none" - id="rect3057-7" - width="3" - height="3" - x="47" - y="1030.3622" /> - <rect - y="1030.3622" - x="50" - height="3" - width="3" - id="rect3059-2" - style="fill:#ac765a;fill-opacity:1;stroke:none" /> - <rect - y="1033.3622" - x="32" - height="3" - width="3" - id="rect3063-8" - style="fill:#aa7d66;fill-opacity:1;stroke:none" /> - <rect - style="fill:#b4846d;fill-opacity:1;stroke:none" - id="rect3065-6" - width="3" - height="3" - x="35" - y="1033.3622" /> - <rect - style="fill:#aa7d66;fill-opacity:1;stroke:none" - id="rect3069-9" - width="3" - height="3" - x="38" - y="1033.3622" /> - <rect - y="1033.3622" - x="41" - height="3" - width="3" - id="rect3071-7" - style="fill:#ad806d;fill-opacity:1;stroke:none" /> - <rect - style="fill:#9c725c;fill-opacity:1;stroke:none" - id="rect3073-1" - width="3" - height="3" - x="44" - y="1033.3622" /> - <rect - y="1033.3622" - x="47" - height="3" - width="3" - id="rect3075-8" - style="fill:#bb8972;fill-opacity:1;stroke:none" /> - <rect - style="fill:#9c694c;fill-opacity:1;stroke:none" - id="rect3077-8" - width="3" - height="3" - x="50" - y="1033.3622" /> - <rect - y="1033.3622" - x="53" - height="3" - width="3" - id="rect3079-2" - style="fill:#9c694c;fill-opacity:1;stroke:none" /> - <rect - style="fill:#b4846d;fill-opacity:1;stroke:none" - id="rect3153-6" - width="3" - height="3" - x="32" - y="1036.3622" /> - <rect - style="fill:#b57b67;fill-opacity:1;stroke:none" - id="rect3159-7" - width="3" - height="3" - x="41" - y="1036.3622" /> - <rect - y="1036.3622" - x="44" - height="3" - width="3" - id="rect3161-0" - style="fill:#bb8972;fill-opacity:1;stroke:none" /> - <rect - style="fill:#aa7d66;fill-opacity:1;stroke:none" - id="rect3167-3" - width="3" - height="3" - x="53" - y="1036.3622" /> - <rect - y="1039.3622" - x="32" - height="3" - width="3" - id="rect3169-4" - style="fill:#9c6346;fill-opacity:1;stroke:none" /> - <rect - style="fill:#b37b62;fill-opacity:1;stroke:none" - id="rect3171-8" - width="3" - height="3" - x="35" - y="1039.3622" /> - <rect - style="fill:#b78272;fill-opacity:1;stroke:none" - id="rect3175-0" - width="3" - height="3" - x="38" - y="1039.3622" /> - <rect - y="1039.3622" - x="47" - height="3" - width="3" - id="rect3181-9" - style="fill:#be886c;fill-opacity:1;stroke:none" /> - <rect - style="fill:#a26a47;fill-opacity:1;stroke:none" - id="rect3183-7" - width="3" - height="3" - x="50" - y="1039.3622" /> - <rect - y="1039.3622" - x="53" - height="3" - width="3" - id="rect3185-6" - style="fill:#805334;fill-opacity:1;stroke:none" /> - <rect - y="1042.3622" - x="32" - height="3" - width="3" - id="rect3187-1" - style="fill:#905e43;fill-opacity:1;stroke:none" /> - <rect - y="1042.3622" - x="53" - height="3" - width="3" - id="rect3203-8" - style="fill:#815339;fill-opacity:1;stroke:none" /> - <path - style="fill:#6f452c;fill-opacity:1;stroke:none" - d="m 32,1045.3622 3,0 0,3 -1,0 c -1,0 -2,-1 -2,-2 z" - id="rect3205-4" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccc" /> - <rect - y="1045.3622" - x="35" - height="3" - width="3" - id="rect3207-2" - style="fill:#6d432a;fill-opacity:1;stroke:none" /> - <rect - y="1045.3622" - x="50" - height="3" - width="3" - id="rect3219-4" - style="fill:#83553b;fill-opacity:1;stroke:none" /> - <path - style="fill:#7a4e33;fill-opacity:1;stroke:none" - d="m 53,1045.3622 3,0 0,1 c 0,1 -1,2 -2,2 l -1,0 z" - id="rect3221-5" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccc" /> - <rect - style="fill:#965f40;fill-opacity:1;stroke:none" - id="rect3083" - width="3" - height="3" - x="35" - y="1042.3622" /> - <rect - y="1042.3622" - x="50" - height="3" - width="3" - id="rect3101" - style="fill:#8f5e3e;fill-opacity:1;stroke:none" /> - </g> - <rect - style="fill:#523d89;fill-opacity:1;stroke:none" - id="rect3084" - width="3" - height="3" - x="10" - y="16" - transform="translate(0,1020.3622)" /> - <rect - style="fill:#523d89;fill-opacity:1;stroke:none" - id="rect3086" - width="3" - height="3" - x="19" - y="16" - transform="translate(0,1020.3622)" /> - </g> -</svg> diff --git a/application/setupwizard/AnalyticsWizardPage.cpp b/application/setupwizard/AnalyticsWizardPage.cpp deleted file mode 100644 index 4fb0bcca..00000000 --- a/application/setupwizard/AnalyticsWizardPage.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include "AnalyticsWizardPage.h" -#include <MultiMC.h> - -#include <QVBoxLayout> -#include <QTextBrowser> -#include <QCheckBox> - -#include <ganalytics.h> -#include <BuildConfig.h> - -AnalyticsWizardPage::AnalyticsWizardPage(QWidget *parent) - : BaseWizardPage(parent) -{ - setObjectName(QStringLiteral("analyticsPage")); - verticalLayout_3 = new QVBoxLayout(this); - verticalLayout_3->setObjectName(QStringLiteral("verticalLayout_3")); - textBrowser = new QTextBrowser(this); - textBrowser->setObjectName(QStringLiteral("textBrowser")); - textBrowser->setAcceptRichText(false); - textBrowser->setOpenExternalLinks(true); - verticalLayout_3->addWidget(textBrowser); - - checkBox = new QCheckBox(this); - checkBox->setObjectName(QStringLiteral("checkBox")); - checkBox->setChecked(true); - verticalLayout_3->addWidget(checkBox); - retranslate(); -} - -AnalyticsWizardPage::~AnalyticsWizardPage() -{ -} - -bool AnalyticsWizardPage::validatePage() -{ - auto settings = MMC->settings(); - auto analytics = MMC->analytics(); - auto status = checkBox->isChecked(); - settings->set("AnalyticsSeen", analytics->version()); - settings->set("Analytics", status); - return true; -} - -void AnalyticsWizardPage::retranslate() -{ - setTitle(tr("Analytics")); - setSubTitle(tr("We track some anonymous statistics about users.")); - textBrowser->setHtml(tr( - "<html><body>" - "<p>MultiMC sends anonymous usage statistics on every start of the application. This helps us decide what platforms and issues to focus on.</p>" - "<p>The data is processed by Google Analytics, see their <a href=\"https://support.google.com/analytics/answer/6004245?hl=en\">article on the " - "matter</a>.</p>" - "<p>The following data is collected:</p>" - "<ul><li>A random unique ID of the MultiMC installation.<br />It is stored in the application settings (multimc.cfg).</li>" - "<li>Anonymized (partial) IP address.</li>" - "<li>MultiMC version.</li>" - "<li>Operating system name, version and architecture.</li>" - "<li>CPU architecture (kernel architecture on linux).</li>" - "<li>Size of system memory.</li>" - "<li>Java version, architecture and memory settings.</li></ul>" - "<p>If we change the tracked information, you will see this page again.</p></body></html>")); - checkBox->setText(tr("Enable Analytics")); -} diff --git a/application/setupwizard/AnalyticsWizardPage.h b/application/setupwizard/AnalyticsWizardPage.h deleted file mode 100644 index c451db2c..00000000 --- a/application/setupwizard/AnalyticsWizardPage.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include "BaseWizardPage.h" - -class QVBoxLayout; -class QTextBrowser; -class QCheckBox; - -class AnalyticsWizardPage : public BaseWizardPage -{ - Q_OBJECT -public: - explicit AnalyticsWizardPage(QWidget *parent = Q_NULLPTR); - virtual ~AnalyticsWizardPage(); - - bool validatePage() override; - -protected: - void retranslate() override; - -private: - QVBoxLayout *verticalLayout_3 = nullptr; - QTextBrowser *textBrowser = nullptr; - QCheckBox *checkBox = nullptr; -};
\ No newline at end of file diff --git a/application/setupwizard/BaseWizardPage.h b/application/setupwizard/BaseWizardPage.h deleted file mode 100644 index 72dbecfd..00000000 --- a/application/setupwizard/BaseWizardPage.h +++ /dev/null @@ -1,33 +0,0 @@ -#pragma once - -#include <QWizardPage> -#include <QEvent> - -class BaseWizardPage : public QWizardPage -{ -public: - explicit BaseWizardPage(QWidget *parent = Q_NULLPTR) - : QWizardPage(parent) - { - } - virtual ~BaseWizardPage() {}; - - virtual bool wantsRefreshButton() - { - return false; - } - virtual void refresh() - { - } - -protected: - virtual void retranslate() = 0; - void changeEvent(QEvent * event) override - { - if (event->type() == QEvent::LanguageChange) - { - retranslate(); - } - QWizardPage::changeEvent(event); - } -}; diff --git a/application/setupwizard/JavaWizardPage.cpp b/application/setupwizard/JavaWizardPage.cpp deleted file mode 100644 index ad571c09..00000000 --- a/application/setupwizard/JavaWizardPage.cpp +++ /dev/null @@ -1,96 +0,0 @@ -#include "JavaWizardPage.h" -#include <MultiMC.h> - -#include <QVBoxLayout> -#include <QGroupBox> -#include <QSpinBox> -#include <QLabel> -#include <QLineEdit> -#include <QPushButton> -#include <QToolButton> -#include <widgets/VersionSelectWidget.h> -#include <FileSystem.h> - -#include <java/JavaInstall.h> -#include <dialogs/CustomMessageBox.h> -#include <java/JavaUtils.h> -#include <sys.h> -#include <QFileDialog> -#include <JavaCommon.h> -#include "widgets/JavaSettingsWidget.h" - - -JavaWizardPage::JavaWizardPage(QWidget *parent) - :BaseWizardPage(parent) -{ - setupUi(); -} - -void JavaWizardPage::setupUi() -{ - setObjectName(QStringLiteral("javaPage")); - QVBoxLayout * layout = new QVBoxLayout(this); - - m_java_widget = new JavaSettingsWidget(this); - layout->addWidget(m_java_widget); - setLayout(layout); - - retranslate(); -} - -void JavaWizardPage::refresh() -{ - m_java_widget->refresh(); -} - -void JavaWizardPage::initializePage() -{ - m_java_widget->initialize(); -} - -bool JavaWizardPage::wantsRefreshButton() -{ - return true; -} - -bool JavaWizardPage::validatePage() -{ - auto settings = MMC->settings(); - auto result = m_java_widget->validate(); - switch(result) - { - default: - case JavaSettingsWidget::ValidationStatus::Bad: - { - return false; - } - case JavaSettingsWidget::ValidationStatus::AllOK: - { - settings->set("JavaPath", m_java_widget->javaPath()); - } - case JavaSettingsWidget::ValidationStatus::JavaBad: - { - // Memory - auto s = MMC->settings(); - s->set("MinMemAlloc", m_java_widget->minHeapSize()); - s->set("MaxMemAlloc", m_java_widget->maxHeapSize()); - if (m_java_widget->permGenEnabled()) - { - s->set("PermGen", m_java_widget->permGenSize()); - } - else - { - s->reset("PermGen"); - } - return true; - } - } -} - -void JavaWizardPage::retranslate() -{ - setTitle(tr("Java")); - setSubTitle(tr("You do not have a working Java set up yet or it went missing.\n" - "Please select one of the following or browse for a java executable.")); - m_java_widget->retranslate(); -} diff --git a/application/setupwizard/JavaWizardPage.h b/application/setupwizard/JavaWizardPage.h deleted file mode 100644 index 0d749039..00000000 --- a/application/setupwizard/JavaWizardPage.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include "BaseWizardPage.h" - -class JavaSettingsWidget; - -class JavaWizardPage : public BaseWizardPage -{ - Q_OBJECT -public: - explicit JavaWizardPage(QWidget *parent = Q_NULLPTR); - - virtual ~JavaWizardPage() - { - }; - - bool wantsRefreshButton() override; - void refresh() override; - void initializePage() override; - bool validatePage() override; - -protected: /* methods */ - void setupUi(); - void retranslate() override; - -private: /* data */ - JavaSettingsWidget *m_java_widget = nullptr; -}; - diff --git a/application/setupwizard/LanguageWizardPage.cpp b/application/setupwizard/LanguageWizardPage.cpp deleted file mode 100644 index ca93c6f5..00000000 --- a/application/setupwizard/LanguageWizardPage.cpp +++ /dev/null @@ -1,48 +0,0 @@ -#include "LanguageWizardPage.h" -#include <MultiMC.h> -#include <translations/TranslationsModel.h> - -#include "widgets/LanguageSelectionWidget.h" -#include <QVBoxLayout> - -LanguageWizardPage::LanguageWizardPage(QWidget *parent) - : BaseWizardPage(parent) -{ - setObjectName(QStringLiteral("languagePage")); - auto layout = new QVBoxLayout(this); - mainWidget = new LanguageSelectionWidget(this); - layout->setContentsMargins(0,0,0,0); - layout->addWidget(mainWidget); - - retranslate(); -} - -LanguageWizardPage::~LanguageWizardPage() -{ -} - -bool LanguageWizardPage::wantsRefreshButton() -{ - return true; -} - -void LanguageWizardPage::refresh() -{ - auto translations = MMC->translations(); - translations->downloadIndex(); -} - -bool LanguageWizardPage::validatePage() -{ - auto settings = MMC->settings(); - QString key = mainWidget->getSelectedLanguageKey(); - settings->set("Language", key); - return true; -} - -void LanguageWizardPage::retranslate() -{ - setTitle(tr("Language")); - setSubTitle(tr("Select the language to use in MultiMC")); - mainWidget->retranslate(); -} diff --git a/application/setupwizard/LanguageWizardPage.h b/application/setupwizard/LanguageWizardPage.h deleted file mode 100644 index 45a0e5c0..00000000 --- a/application/setupwizard/LanguageWizardPage.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#include "BaseWizardPage.h" - -class LanguageSelectionWidget; - -class LanguageWizardPage : public BaseWizardPage -{ - Q_OBJECT -public: - explicit LanguageWizardPage(QWidget *parent = Q_NULLPTR); - - virtual ~LanguageWizardPage(); - - bool wantsRefreshButton() override; - - void refresh() override; - - bool validatePage() override; - -protected: - void retranslate() override; - -private: - LanguageSelectionWidget *mainWidget = nullptr; -}; diff --git a/application/setupwizard/SetupWizard.cpp b/application/setupwizard/SetupWizard.cpp deleted file mode 100644 index 60a78b8d..00000000 --- a/application/setupwizard/SetupWizard.cpp +++ /dev/null @@ -1,88 +0,0 @@ -#include "SetupWizard.h" - -#include "LanguageWizardPage.h" -#include "JavaWizardPage.h" -#include "AnalyticsWizardPage.h" - -#include "translations/TranslationsModel.h" -#include <MultiMC.h> -#include <FileSystem.h> -#include <ganalytics.h> - -#include <QAbstractButton> - -SetupWizard::SetupWizard(QWidget *parent) : QWizard(parent) -{ - setObjectName(QStringLiteral("SetupWizard")); - resize(615, 659); - // make it ugly everywhere to avoid variability in theming - setWizardStyle(QWizard::ClassicStyle); - setOptions(QWizard::NoCancelButton | QWizard::IndependentPages | QWizard::HaveCustomButton1); - - retranslate(); - - connect(this, &QWizard::currentIdChanged, this, &SetupWizard::pageChanged); -} - -void SetupWizard::retranslate() -{ - setButtonText(QWizard::NextButton, tr("&Next >")); - setButtonText(QWizard::BackButton, tr("< &Back")); - setButtonText(QWizard::FinishButton, tr("&Finish")); - setButtonText(QWizard::CustomButton1, tr("&Refresh")); - setWindowTitle(tr("MultiMC Quick Setup")); -} - -BaseWizardPage * SetupWizard::getBasePage(int id) -{ - if(id == -1) - return nullptr; - auto pagePtr = page(id); - if(!pagePtr) - return nullptr; - return dynamic_cast<BaseWizardPage *>(pagePtr); -} - -BaseWizardPage * SetupWizard::getCurrentBasePage() -{ - return getBasePage(currentId()); -} - -void SetupWizard::pageChanged(int id) -{ - auto basePagePtr = getBasePage(id); - if(!basePagePtr) - { - return; - } - if(basePagePtr->wantsRefreshButton()) - { - setButtonLayout({QWizard::CustomButton1, QWizard::Stretch, QWizard::BackButton, QWizard::NextButton, QWizard::FinishButton}); - auto customButton = button(QWizard::CustomButton1); - connect(customButton, &QAbstractButton::pressed, [&](){ - auto basePagePtr = getCurrentBasePage(); - if(basePagePtr) - { - basePagePtr->refresh(); - } - }); - } - else - { - setButtonLayout({QWizard::Stretch, QWizard::BackButton, QWizard::NextButton, QWizard::FinishButton}); - } -} - - -void SetupWizard::changeEvent(QEvent *event) -{ - if (event->type() == QEvent::LanguageChange) - { - retranslate(); - } - QWizard::changeEvent(event); -} - -SetupWizard::~SetupWizard() -{ -} diff --git a/application/setupwizard/SetupWizard.h b/application/setupwizard/SetupWizard.h deleted file mode 100644 index 9b8adb4d..00000000 --- a/application/setupwizard/SetupWizard.h +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright 2017-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QWizard> - -namespace Ui -{ -class SetupWizard; -} - -class BaseWizardPage; - -class SetupWizard : public QWizard -{ - Q_OBJECT - -public: /* con/destructors */ - explicit SetupWizard(QWidget *parent = 0); - virtual ~SetupWizard(); - - void changeEvent(QEvent * event) override; - BaseWizardPage *getBasePage(int id); - BaseWizardPage *getCurrentBasePage(); - -private slots: - void pageChanged(int id); - -private: /* methods */ - void retranslate(); -}; - diff --git a/application/themes/BrightTheme.cpp b/application/themes/BrightTheme.cpp deleted file mode 100644 index b9188bdd..00000000 --- a/application/themes/BrightTheme.cpp +++ /dev/null @@ -1,56 +0,0 @@ -#include "BrightTheme.h" - -QString BrightTheme::id() -{ - return "bright"; -} - -QString BrightTheme::name() -{ - return QObject::tr("Bright"); -} - -bool BrightTheme::hasColorScheme() -{ - return true; -} - -QPalette BrightTheme::colorScheme() -{ - QPalette brightPalette; - brightPalette.setColor(QPalette::Window, QColor(239,240,241)); - brightPalette.setColor(QPalette::WindowText, QColor(49,54,59)); - brightPalette.setColor(QPalette::Base, QColor(252,252,252)); - brightPalette.setColor(QPalette::AlternateBase, QColor(239,240,241)); - brightPalette.setColor(QPalette::ToolTipBase, QColor(49,54,59)); - brightPalette.setColor(QPalette::ToolTipText, QColor(239,240,241)); - brightPalette.setColor(QPalette::Text, QColor(49,54,59)); - brightPalette.setColor(QPalette::Button, QColor(239,240,241)); - brightPalette.setColor(QPalette::ButtonText, QColor(49,54,59)); - brightPalette.setColor(QPalette::BrightText, Qt::red); - brightPalette.setColor(QPalette::Link, QColor(41, 128, 185)); - brightPalette.setColor(QPalette::Highlight, QColor(61, 174, 233)); - brightPalette.setColor(QPalette::HighlightedText, QColor(239,240,241)); - return fadeInactive(brightPalette, fadeAmount(), fadeColor()); -} - -double BrightTheme::fadeAmount() -{ - return 0.5; -} - -QColor BrightTheme::fadeColor() -{ - return QColor(239,240,241); -} - -bool BrightTheme::hasStyleSheet() -{ - return false; -} - -QString BrightTheme::appStyleSheet() -{ - return QString(); -} - diff --git a/application/themes/BrightTheme.h b/application/themes/BrightTheme.h deleted file mode 100644 index c61f52d5..00000000 --- a/application/themes/BrightTheme.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - -#include "FusionTheme.h" - -class BrightTheme: public FusionTheme -{ -public: - virtual ~BrightTheme() {} - - QString id() override; - QString name() override; - bool hasStyleSheet() override; - QString appStyleSheet() override; - bool hasColorScheme() override; - QPalette colorScheme() override; - double fadeAmount() override; - QColor fadeColor() override; -}; - diff --git a/application/themes/CustomTheme.cpp b/application/themes/CustomTheme.cpp deleted file mode 100644 index 3e3e27de..00000000 --- a/application/themes/CustomTheme.cpp +++ /dev/null @@ -1,244 +0,0 @@ -#include "CustomTheme.h" -#include <QDir> -#include <Json.h> -#include <FileSystem.h> - -const char * themeFile = "theme.json"; -const char * styleFile = "themeStyle.css"; - -static bool readThemeJson(const QString &path, QPalette &palette, double &fadeAmount, QColor &fadeColor, QString &name, QString &widgets) -{ - QFileInfo pathInfo(path); - if(pathInfo.exists() && pathInfo.isFile()) - { - try - { - auto doc = Json::requireDocument(path, "Theme JSON file"); - const QJsonObject root = doc.object(); - name = Json::requireString(root, "name", "Theme name"); - widgets = Json::requireString(root, "widgets", "Qt widget theme"); - auto colorsRoot = Json::requireObject(root, "colors", "colors object"); - auto readColor = [&](QString colorName) -> QColor - { - auto colorValue = Json::ensureString(colorsRoot, colorName, QString()); - if(!colorValue.isEmpty()) - { - QColor color(colorValue); - if(!color.isValid()) - { - qWarning() << "Color value" << colorValue << "for" << colorName << "was not recognized."; - return QColor(); - } - return color; - } - return QColor(); - }; - auto readAndSetColor = [&](QPalette::ColorRole role, QString colorName) - { - auto color = readColor(colorName); - if(color.isValid()) - { - palette.setColor(role, color); - } - else - { - qDebug() << "Color value for" << colorName << "was not present."; - } - }; - - // palette - readAndSetColor(QPalette::Window, "Window"); - readAndSetColor(QPalette::WindowText, "WindowText"); - readAndSetColor(QPalette::Base, "Base"); - readAndSetColor(QPalette::AlternateBase, "AlternateBase"); - readAndSetColor(QPalette::ToolTipBase, "ToolTipBase"); - readAndSetColor(QPalette::ToolTipText, "ToolTipText"); - readAndSetColor(QPalette::Text, "Text"); - readAndSetColor(QPalette::Button, "Button"); - readAndSetColor(QPalette::ButtonText, "ButtonText"); - readAndSetColor(QPalette::BrightText, "BrightText"); - readAndSetColor(QPalette::Link, "Link"); - readAndSetColor(QPalette::Highlight, "Highlight"); - readAndSetColor(QPalette::HighlightedText, "HighlightedText"); - - //fade - fadeColor = readColor("fadeColor"); - fadeAmount = Json::ensureDouble(colorsRoot, "fadeAmount", 0.5, "fade amount"); - - } - catch (const Exception &e) - { - qWarning() << "Couldn't load theme json: " << e.cause(); - return false; - } - } - else - { - qDebug() << "No theme json present."; - return false; - } - return true; -} - -static bool writeThemeJson(const QString &path, const QPalette &palette, double fadeAmount, QColor fadeColor, QString name, QString widgets) -{ - QJsonObject rootObj; - rootObj.insert("name", name); - rootObj.insert("widgets", widgets); - - QJsonObject colorsObj; - auto insertColor = [&](QPalette::ColorRole role, QString colorName) - { - colorsObj.insert(colorName, palette.color(role).name()); - }; - - // palette - insertColor(QPalette::Window, "Window"); - insertColor(QPalette::WindowText, "WindowText"); - insertColor(QPalette::Base, "Base"); - insertColor(QPalette::AlternateBase, "AlternateBase"); - insertColor(QPalette::ToolTipBase, "ToolTipBase"); - insertColor(QPalette::ToolTipText, "ToolTipText"); - insertColor(QPalette::Text, "Text"); - insertColor(QPalette::Button, "Button"); - insertColor(QPalette::ButtonText, "ButtonText"); - insertColor(QPalette::BrightText, "BrightText"); - insertColor(QPalette::Link, "Link"); - insertColor(QPalette::Highlight, "Highlight"); - insertColor(QPalette::HighlightedText, "HighlightedText"); - - // fade - colorsObj.insert("fadeColor", fadeColor.name()); - colorsObj.insert("fadeAmount", fadeAmount); - - rootObj.insert("colors", colorsObj); - try - { - Json::write(rootObj, path); - return true; - } - catch (const Exception &e) - { - qWarning() << "Failed to write theme json to" << path; - return false; - } -} - -CustomTheme::CustomTheme(ITheme* baseTheme, QString folder) -{ - m_id = folder; - QString path = FS::PathCombine("themes", m_id); - QString pathResources = FS::PathCombine("themes", m_id, "resources"); - - qDebug() << "Loading theme" << m_id; - - if(!FS::ensureFolderPathExists(path) || !FS::ensureFolderPathExists(pathResources)) - { - qWarning() << "couldn't create folder for theme!"; - m_palette = baseTheme->colorScheme(); - m_styleSheet = baseTheme->appStyleSheet(); - return; - } - - auto themeFilePath = FS::PathCombine(path, themeFile); - - m_palette = baseTheme->colorScheme(); - if (!readThemeJson(themeFilePath, m_palette, m_fadeAmount, m_fadeColor, m_name, m_widgets)) - { - m_name = "Custom"; - m_palette = baseTheme->colorScheme(); - m_fadeColor = baseTheme->fadeColor(); - m_fadeAmount = baseTheme->fadeAmount(); - m_widgets = baseTheme->qtTheme(); - - QFileInfo info(themeFilePath); - if(!info.exists()) - { - writeThemeJson(themeFilePath, m_palette, m_fadeAmount, m_fadeColor, "Custom", m_widgets); - } - } - else - { - m_palette = fadeInactive(m_palette, m_fadeAmount, m_fadeColor); - } - - auto cssFilePath = FS::PathCombine(path, styleFile); - QFileInfo info (cssFilePath); - if(info.isFile()) - { - try - { - // TODO: validate css? - m_styleSheet = QString::fromUtf8(FS::read(cssFilePath)); - } - catch (const Exception &e) - { - qWarning() << "Couldn't load css:" << e.cause() << "from" << cssFilePath; - m_styleSheet = baseTheme->appStyleSheet(); - } - } - else - { - qDebug() << "No theme css present."; - m_styleSheet = baseTheme->appStyleSheet(); - try - { - FS::write(cssFilePath, m_styleSheet.toUtf8()); - } - catch (const Exception &e) - { - qWarning() << "Couldn't write css:" << e.cause() << "to" << cssFilePath; - } - } -} - -QStringList CustomTheme::searchPaths() -{ - return { FS::PathCombine("themes", m_id, "resources") }; -} - - -QString CustomTheme::id() -{ - return m_id; -} - -QString CustomTheme::name() -{ - return m_name; -} - -bool CustomTheme::hasColorScheme() -{ - return true; -} - -QPalette CustomTheme::colorScheme() -{ - return m_palette; -} - -bool CustomTheme::hasStyleSheet() -{ - return true; -} - -QString CustomTheme::appStyleSheet() -{ - return m_styleSheet; -} - -double CustomTheme::fadeAmount() -{ - return m_fadeAmount; -} - -QColor CustomTheme::fadeColor() -{ - return m_fadeColor; -} - -QString CustomTheme::qtTheme() -{ - return m_widgets; -} diff --git a/application/themes/CustomTheme.h b/application/themes/CustomTheme.h deleted file mode 100644 index d216895d..00000000 --- a/application/themes/CustomTheme.h +++ /dev/null @@ -1,31 +0,0 @@ -#pragma once - -#include "ITheme.h" - -class CustomTheme: public ITheme -{ -public: - CustomTheme(ITheme * baseTheme, QString folder); - virtual ~CustomTheme() {} - - QString id() override; - QString name() override; - bool hasStyleSheet() override; - QString appStyleSheet() override; - bool hasColorScheme() override; - QPalette colorScheme() override; - double fadeAmount() override; - QColor fadeColor() override; - QString qtTheme() override; - QStringList searchPaths() override; - -private: /* data */ - QPalette m_palette; - QColor m_fadeColor; - double m_fadeAmount; - QString m_styleSheet; - QString m_name; - QString m_id; - QString m_widgets; -}; - diff --git a/application/themes/DarkTheme.cpp b/application/themes/DarkTheme.cpp deleted file mode 100644 index 31ecd559..00000000 --- a/application/themes/DarkTheme.cpp +++ /dev/null @@ -1,55 +0,0 @@ -#include "DarkTheme.h" - -QString DarkTheme::id() -{ - return "dark"; -} - -QString DarkTheme::name() -{ - return QObject::tr("Dark"); -} - -bool DarkTheme::hasColorScheme() -{ - return true; -} - -QPalette DarkTheme::colorScheme() -{ - QPalette darkPalette; - darkPalette.setColor(QPalette::Window, QColor(49,54,59)); - darkPalette.setColor(QPalette::WindowText, Qt::white); - darkPalette.setColor(QPalette::Base, QColor(35,38,41)); - darkPalette.setColor(QPalette::AlternateBase, QColor(49,54,59)); - darkPalette.setColor(QPalette::ToolTipBase, Qt::white); - darkPalette.setColor(QPalette::ToolTipText, Qt::white); - darkPalette.setColor(QPalette::Text, Qt::white); - darkPalette.setColor(QPalette::Button, QColor(49,54,59)); - darkPalette.setColor(QPalette::ButtonText, Qt::white); - darkPalette.setColor(QPalette::BrightText, Qt::red); - darkPalette.setColor(QPalette::Link, QColor(42, 130, 218)); - darkPalette.setColor(QPalette::Highlight, QColor(42, 130, 218)); - darkPalette.setColor(QPalette::HighlightedText, Qt::black); - return fadeInactive(darkPalette, fadeAmount(), fadeColor()); -} - -double DarkTheme::fadeAmount() -{ - return 0.5; -} - -QColor DarkTheme::fadeColor() -{ - return QColor(49,54,59); -} - -bool DarkTheme::hasStyleSheet() -{ - return true; -} - -QString DarkTheme::appStyleSheet() -{ - return "QToolTip { color: #ffffff; background-color: #2a82da; border: 1px solid white; }"; -} diff --git a/application/themes/DarkTheme.h b/application/themes/DarkTheme.h deleted file mode 100644 index 9bd2f343..00000000 --- a/application/themes/DarkTheme.h +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once - -#include "FusionTheme.h" - -class DarkTheme: public FusionTheme -{ -public: - virtual ~DarkTheme() {} - - QString id() override; - QString name() override; - bool hasStyleSheet() override; - QString appStyleSheet() override; - bool hasColorScheme() override; - QPalette colorScheme() override; - double fadeAmount() override; - QColor fadeColor() override; -}; diff --git a/application/themes/FusionTheme.cpp b/application/themes/FusionTheme.cpp deleted file mode 100644 index cf3286ba..00000000 --- a/application/themes/FusionTheme.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include "FusionTheme.h" - -QString FusionTheme::qtTheme() -{ - return "Fusion"; -} diff --git a/application/themes/FusionTheme.h b/application/themes/FusionTheme.h deleted file mode 100644 index ee34245a..00000000 --- a/application/themes/FusionTheme.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#include "ITheme.h" - -class FusionTheme: public ITheme -{ -public: - virtual ~FusionTheme() {} - - QString qtTheme() override; -}; diff --git a/application/themes/ITheme.cpp b/application/themes/ITheme.cpp deleted file mode 100644 index bfec87e7..00000000 --- a/application/themes/ITheme.cpp +++ /dev/null @@ -1,47 +0,0 @@ -#include "ITheme.h" -#include "rainbow.h" -#include <QStyleFactory> -#include <QDir> -#include "MultiMC.h" - -void ITheme::apply(bool) -{ - QApplication::setStyle(QStyleFactory::create(qtTheme())); - if(hasColorScheme()) - { - QApplication::setPalette(colorScheme()); - } - if(hasStyleSheet()) - { - MMC->setStyleSheet(appStyleSheet()); - } - else - { - MMC->setStyleSheet(QString()); - } - QDir::setSearchPaths("theme", searchPaths()); -} - -QPalette ITheme::fadeInactive(QPalette in, qreal bias, QColor color) -{ - auto blend = [&in, bias, color](QPalette::ColorRole role) - { - QColor from = in.color(QPalette::Active, role); - QColor blended = Rainbow::mix(from, color, bias); - in.setColor(QPalette::Disabled, role, blended); - }; - blend(QPalette::Window); - blend(QPalette::WindowText); - blend(QPalette::Base); - blend(QPalette::AlternateBase); - blend(QPalette::ToolTipBase); - blend(QPalette::ToolTipText); - blend(QPalette::Text); - blend(QPalette::Button); - blend(QPalette::ButtonText); - blend(QPalette::BrightText); - blend(QPalette::Link); - blend(QPalette::Highlight); - blend(QPalette::HighlightedText); - return in; -} diff --git a/application/themes/ITheme.h b/application/themes/ITheme.h deleted file mode 100644 index c2347cf6..00000000 --- a/application/themes/ITheme.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once -#include <QString> -#include <QPalette> - -class QStyle; - -class ITheme -{ -public: - virtual ~ITheme() {} - virtual void apply(bool initial); - virtual QString id() = 0; - virtual QString name() = 0; - virtual bool hasStyleSheet() = 0; - virtual QString appStyleSheet() = 0; - virtual QString qtTheme() = 0; - virtual bool hasColorScheme() = 0; - virtual QPalette colorScheme() = 0; - virtual QColor fadeColor() = 0; - virtual double fadeAmount() = 0; - virtual QStringList searchPaths() - { - return {}; - } - - static QPalette fadeInactive(QPalette in, qreal bias, QColor color); -}; diff --git a/application/themes/SystemTheme.cpp b/application/themes/SystemTheme.cpp deleted file mode 100644 index 49b1afaa..00000000 --- a/application/themes/SystemTheme.cpp +++ /dev/null @@ -1,83 +0,0 @@ -#include "SystemTheme.h" -#include <QApplication> -#include <QStyle> -#include <QStyleFactory> -#include <QDebug> - -SystemTheme::SystemTheme() -{ - qDebug() << "Determining System Theme..."; - const auto & style = QApplication::style(); - systemPalette = style->standardPalette(); - QString lowerThemeName = style->objectName(); - qDebug() << "System theme seems to be:" << lowerThemeName; - QStringList styles = QStyleFactory::keys(); - for(auto &st: styles) - { - qDebug() << "Considering theme from theme factory:" << st.toLower(); - if(st.toLower() == lowerThemeName) - { - systemTheme = st; - qDebug() << "System theme has been determined to be:" << systemTheme; - return; - } - } - // fall back to fusion if we can't find the current theme. - systemTheme = "Fusion"; - qDebug() << "System theme not found, defaulted to Fusion"; -} - -void SystemTheme::apply(bool initial) -{ - // if we are applying the system theme as the first theme, just don't touch anything. it's for the better... - if(initial) - { - return; - } - ITheme::apply(initial); -} - -QString SystemTheme::id() -{ - return "system"; -} - -QString SystemTheme::name() -{ - return QObject::tr("System"); -} - -QString SystemTheme::qtTheme() -{ - return systemTheme; -} - -QPalette SystemTheme::colorScheme() -{ - return systemPalette; -} - -QString SystemTheme::appStyleSheet() -{ - return QString(); -} - -double SystemTheme::fadeAmount() -{ - return 0.5; -} - -QColor SystemTheme::fadeColor() -{ - return QColor(128,128,128); -} - -bool SystemTheme::hasStyleSheet() -{ - return false; -} - -bool SystemTheme::hasColorScheme() -{ - return true; -} diff --git a/application/themes/SystemTheme.h b/application/themes/SystemTheme.h deleted file mode 100644 index fe450600..00000000 --- a/application/themes/SystemTheme.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include "ITheme.h" - -class SystemTheme: public ITheme -{ -public: - SystemTheme(); - virtual ~SystemTheme() {} - void apply(bool initial) override; - - QString id() override; - QString name() override; - QString qtTheme() override; - bool hasStyleSheet() override; - QString appStyleSheet() override; - bool hasColorScheme() override; - QPalette colorScheme() override; - double fadeAmount() override; - QColor fadeColor() override; -private: - QPalette systemPalette; - QString systemTheme; -}; diff --git a/application/widgets/Common.cpp b/application/widgets/Common.cpp deleted file mode 100644 index f72f3596..00000000 --- a/application/widgets/Common.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include "Common.h" - -// Origin: Qt -QStringList viewItemTextLayout(QTextLayout &textLayout, int lineWidth, qreal &height, - qreal &widthUsed) -{ - QStringList lines; - height = 0; - widthUsed = 0; - textLayout.beginLayout(); - QString str = textLayout.text(); - while (true) - { - QTextLine line = textLayout.createLine(); - if (!line.isValid()) - break; - if (line.textLength() == 0) - break; - line.setLineWidth(lineWidth); - line.setPosition(QPointF(0, height)); - height += line.height(); - lines.append(str.mid(line.textStart(), line.textLength())); - widthUsed = qMax(widthUsed, line.naturalTextWidth()); - } - textLayout.endLayout(); - return lines; -} diff --git a/application/widgets/Common.h b/application/widgets/Common.h deleted file mode 100644 index b3fbe1a0..00000000 --- a/application/widgets/Common.h +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once -#include <QStringList> -#include <QTextLayout> - -QStringList viewItemTextLayout(QTextLayout &textLayout, int lineWidth, qreal &height, - qreal &widthUsed);
\ No newline at end of file diff --git a/application/widgets/CustomCommands.cpp b/application/widgets/CustomCommands.cpp deleted file mode 100644 index 24bdc07d..00000000 --- a/application/widgets/CustomCommands.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#include "CustomCommands.h" -#include "ui_CustomCommands.h" - -CustomCommands::~CustomCommands() -{ - delete ui; -} - -CustomCommands::CustomCommands(QWidget* parent): - QWidget(parent), - ui(new Ui::CustomCommands) -{ - ui->setupUi(this); -} - -void CustomCommands::initialize(bool checkable, bool checked, const QString& prelaunch, const QString& wrapper, const QString& postexit) -{ - ui->customCommandsGroupBox->setCheckable(checkable); - if(checkable) - { - ui->customCommandsGroupBox->setChecked(checked); - } - ui->preLaunchCmdTextBox->setText(prelaunch); - ui->wrapperCmdTextBox->setText(wrapper); - ui->postExitCmdTextBox->setText(postexit); -} - - -bool CustomCommands::checked() const -{ - if(!ui->customCommandsGroupBox->isCheckable()) - return true; - return ui->customCommandsGroupBox->isChecked(); -} - -QString CustomCommands::prelaunchCommand() const -{ - return ui->preLaunchCmdTextBox->text(); -} - -QString CustomCommands::wrapperCommand() const -{ - return ui->wrapperCmdTextBox->text(); -} - -QString CustomCommands::postexitCommand() const -{ - return ui->postExitCmdTextBox->text(); -} diff --git a/application/widgets/CustomCommands.h b/application/widgets/CustomCommands.h deleted file mode 100644 index 8db991fa..00000000 --- a/application/widgets/CustomCommands.h +++ /dev/null @@ -1,43 +0,0 @@ -/* Copyright 2018-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QWidget> - -namespace Ui -{ -class CustomCommands; -} - -class CustomCommands : public QWidget -{ - Q_OBJECT - -public: - explicit CustomCommands(QWidget *parent = 0); - virtual ~CustomCommands(); - void initialize(bool checkable, bool checked, const QString & prelaunch, const QString & wrapper, const QString & postexit); - - bool checked() const; - QString prelaunchCommand() const; - QString wrapperCommand() const; - QString postexitCommand() const; - -private: - Ui::CustomCommands *ui; -}; - - diff --git a/application/widgets/CustomCommands.ui b/application/widgets/CustomCommands.ui deleted file mode 100644 index 25b2681b..00000000 --- a/application/widgets/CustomCommands.ui +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>CustomCommands</class> - <widget class="QWidget" name="CustomCommands"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>518</width> - <height>646</height> - </rect> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <widget class="QGroupBox" name="customCommandsGroupBox"> - <property name="enabled"> - <bool>true</bool> - </property> - <property name="title"> - <string>Cus&tom Commands</string> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="checked"> - <bool>false</bool> - </property> - <layout class="QGridLayout" name="gridLayout_4"> - <item row="2" column="0"> - <widget class="QLabel" name="labelPostExitCmd"> - <property name="text"> - <string>Post-exit command:</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLineEdit" name="preLaunchCmdTextBox"/> - </item> - <item row="0" column="0"> - <widget class="QLabel" name="labelPreLaunchCmd"> - <property name="text"> - <string>Pre-launch command:</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QLineEdit" name="postExitCmdTextBox"/> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="labelWrapperCmd"> - <property name="text"> - <string>Wrapper command:</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLineEdit" name="wrapperCmdTextBox"/> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QLabel" name="labelCustomCmdsDescription"> - <property name="text"> - <string><html><head/><body><p>Pre-launch command runs before the instance launches and post-exit command runs after it exits.</p><p>Both will be run in MultiMC's working folder with extra environment variables:</p><ul><li>$INST_NAME - Name of the instance</li><li>$INST_ID - ID of the instance (its folder name)</li><li>$INST_DIR - absolute path of the instance</li><li>$INST_MC_DIR - absolute path of minecraft</li><li>$INST_JAVA - java binary used for launch</li><li>$INST_JAVA_ARGS - command-line parameters used for launch</li></ul><p>Wrapper command allows launching using an extra wrapper program (like 'optirun' on Linux)</p></body></html></string> - </property> - <property name="alignment"> - <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - <property name="textInteractionFlags"> - <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set> - </property> - </widget> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/application/widgets/DropLabel.cpp b/application/widgets/DropLabel.cpp deleted file mode 100644 index a900e57c..00000000 --- a/application/widgets/DropLabel.cpp +++ /dev/null @@ -1,41 +0,0 @@ -#include "DropLabel.h" - -#include <QMimeData> -#include <QDropEvent> - -DropLabel::DropLabel(QWidget *parent) : QLabel(parent) -{ - setAcceptDrops(true); -} - -void DropLabel::dragEnterEvent(QDragEnterEvent *event) -{ - event->acceptProposedAction(); -} - -void DropLabel::dragMoveEvent(QDragMoveEvent *event) -{ - event->acceptProposedAction(); -} - -void DropLabel::dragLeaveEvent(QDragLeaveEvent *event) -{ - event->accept(); -} - -void DropLabel::dropEvent(QDropEvent *event) -{ - const QMimeData *mimeData = event->mimeData(); - - if (!mimeData) - { - return; - } - - if (mimeData->hasUrls()) { - auto urls = mimeData->urls(); - emit droppedURLs(urls); - } - - event->acceptProposedAction(); -} diff --git a/application/widgets/DropLabel.h b/application/widgets/DropLabel.h deleted file mode 100644 index c5ca0bcc..00000000 --- a/application/widgets/DropLabel.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include <QLabel> - -class DropLabel : public QLabel -{ - Q_OBJECT - -public: - explicit DropLabel(QWidget *parent = nullptr); - -signals: - void droppedURLs(QList<QUrl> urls); - -protected: - void dropEvent(QDropEvent *event) override; - void dragEnterEvent(QDragEnterEvent *event) override; - void dragMoveEvent(QDragMoveEvent *event) override; - void dragLeaveEvent(QDragLeaveEvent *event) override; -}; diff --git a/application/widgets/FocusLineEdit.cpp b/application/widgets/FocusLineEdit.cpp deleted file mode 100644 index b272100c..00000000 --- a/application/widgets/FocusLineEdit.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include "FocusLineEdit.h" -#include <QDebug> - -FocusLineEdit::FocusLineEdit(QWidget *parent) : QLineEdit(parent) -{ - _selectOnMousePress = false; -} - -void FocusLineEdit::focusInEvent(QFocusEvent *e) -{ - QLineEdit::focusInEvent(e); - selectAll(); - _selectOnMousePress = true; -} - -void FocusLineEdit::mousePressEvent(QMouseEvent *me) -{ - QLineEdit::mousePressEvent(me); - if (_selectOnMousePress) - { - selectAll(); - _selectOnMousePress = false; - } - qDebug() << selectedText(); -} diff --git a/application/widgets/FocusLineEdit.h b/application/widgets/FocusLineEdit.h deleted file mode 100644 index 71b4f140..00000000 --- a/application/widgets/FocusLineEdit.h +++ /dev/null @@ -1,17 +0,0 @@ -#include <QLineEdit> - -class FocusLineEdit : public QLineEdit -{ - Q_OBJECT -public: - FocusLineEdit(QWidget *parent); - virtual ~FocusLineEdit() - { - } - -protected: - void focusInEvent(QFocusEvent *e); - void mousePressEvent(QMouseEvent *me); - - bool _selectOnMousePress; -}; diff --git a/application/widgets/IconLabel.cpp b/application/widgets/IconLabel.cpp deleted file mode 100644 index bf1c2358..00000000 --- a/application/widgets/IconLabel.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include "IconLabel.h" - -#include <QStyle> -#include <QStyleOption> -#include <QLayout> -#include <QPainter> -#include <QRect> - -IconLabel::IconLabel(QWidget *parent, QIcon icon, QSize size) - : QWidget(parent), m_size(size), m_icon(icon) -{ - setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); -} - -QSize IconLabel::sizeHint() const -{ - return m_size; -} - -void IconLabel::setIcon(QIcon icon) -{ - m_icon = icon; - update(); -} - -void IconLabel::paintEvent(QPaintEvent *) -{ - QPainter p(this); - QRect rect = contentsRect(); - int width = rect.width(); - int height = rect.height(); - if(width < height) - { - rect.setHeight(width); - rect.translate(0, (height - width) / 2); - } - else if (width > height) - { - rect.setWidth(height); - rect.translate((width - height) / 2, 0); - } - m_icon.paint(&p, rect); -} diff --git a/application/widgets/IconLabel.h b/application/widgets/IconLabel.h deleted file mode 100644 index 6d212c4c..00000000 --- a/application/widgets/IconLabel.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once -#include <QWidget> -#include <QIcon> - -class QStyleOption; - -/** - * This is a trivial widget that paints a QIcon of the specified size. - */ -class IconLabel : public QWidget -{ - Q_OBJECT - -public: - /// Create a line separator. orientation is the orientation of the line. - explicit IconLabel(QWidget *parent, QIcon icon, QSize size); - - virtual QSize sizeHint() const; - virtual void paintEvent(QPaintEvent *); - - void setIcon(QIcon icon); - -private: - QSize m_size; - QIcon m_icon; -}; diff --git a/application/widgets/InstanceCardWidget.ui b/application/widgets/InstanceCardWidget.ui deleted file mode 100644 index 6eeeb076..00000000 --- a/application/widgets/InstanceCardWidget.ui +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>InstanceCardWidget</class> - <widget class="QWidget" name="InstanceCardWidget"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>473</width> - <height>118</height> - </rect> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0" rowspan="2"> - <widget class="QToolButton" name="iconButton"> - <property name="iconSize"> - <size> - <width>80</width> - <height>80</height> - </size> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLabel" name="nameLabel"> - <property name="text"> - <string>&Name:</string> - </property> - <property name="buddy"> - <cstring>instNameTextBox</cstring> - </property> - </widget> - </item> - <item row="0" column="2"> - <widget class="QLineEdit" name="instNameTextBox"/> - </item> - <item row="1" column="1"> - <widget class="QLabel" name="groupLabel"> - <property name="text"> - <string>&Group:</string> - </property> - <property name="buddy"> - <cstring>groupBox</cstring> - </property> - </widget> - </item> - <item row="1" column="2"> - <widget class="QComboBox" name="groupBox"> - <property name="editable"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/application/widgets/JavaSettingsWidget.cpp b/application/widgets/JavaSettingsWidget.cpp deleted file mode 100644 index 7f53dc23..00000000 --- a/application/widgets/JavaSettingsWidget.cpp +++ /dev/null @@ -1,428 +0,0 @@ -#include "JavaSettingsWidget.h" -#include <MultiMC.h> - -#include <java/JavaInstall.h> -#include <dialogs/CustomMessageBox.h> -#include <java/JavaUtils.h> -#include <sys.h> - -#include <QVBoxLayout> -#include <QGroupBox> -#include <QSpinBox> -#include <QLabel> -#include <QLineEdit> -#include <QPushButton> -#include <QToolButton> -#include <widgets/VersionSelectWidget.h> -#include <FileSystem.h> -#include <QFileDialog> - -JavaSettingsWidget::JavaSettingsWidget(QWidget* parent) : QWidget(parent) -{ - m_availableMemory = Sys::getSystemRam() / Sys::mebibyte; - - goodIcon = MMC->getThemedIcon("status-good"); - yellowIcon = MMC->getThemedIcon("status-yellow"); - badIcon = MMC->getThemedIcon("status-bad"); - setupUi(); - - connect(m_minMemSpinBox, SIGNAL(valueChanged(int)), this, SLOT(memoryValueChanged(int))); - connect(m_maxMemSpinBox, SIGNAL(valueChanged(int)), this, SLOT(memoryValueChanged(int))); - connect(m_permGenSpinBox, SIGNAL(valueChanged(int)), this, SLOT(memoryValueChanged(int))); - connect(m_versionWidget, &VersionSelectWidget::selectedVersionChanged, this, &JavaSettingsWidget::javaVersionSelected); - connect(m_javaBrowseBtn, &QPushButton::clicked, this, &JavaSettingsWidget::on_javaBrowseBtn_clicked); - connect(m_javaPathTextBox, &QLineEdit::textEdited, this, &JavaSettingsWidget::javaPathEdited); - connect(m_javaStatusBtn, &QToolButton::clicked, this, &JavaSettingsWidget::on_javaStatusBtn_clicked); -} - -void JavaSettingsWidget::setupUi() -{ - setObjectName(QStringLiteral("javaSettingsWidget")); - m_verticalLayout = new QVBoxLayout(this); - m_verticalLayout->setObjectName(QStringLiteral("verticalLayout")); - - m_versionWidget = new VersionSelectWidget(this); - m_verticalLayout->addWidget(m_versionWidget); - - m_horizontalLayout = new QHBoxLayout(); - m_horizontalLayout->setObjectName(QStringLiteral("horizontalLayout")); - m_javaPathTextBox = new QLineEdit(this); - m_javaPathTextBox->setObjectName(QStringLiteral("javaPathTextBox")); - - m_horizontalLayout->addWidget(m_javaPathTextBox); - - m_javaBrowseBtn = new QPushButton(this); - m_javaBrowseBtn->setObjectName(QStringLiteral("javaBrowseBtn")); - - m_horizontalLayout->addWidget(m_javaBrowseBtn); - - m_javaStatusBtn = new QToolButton(this); - m_javaStatusBtn->setIcon(yellowIcon); - m_horizontalLayout->addWidget(m_javaStatusBtn); - - m_verticalLayout->addLayout(m_horizontalLayout); - - m_memoryGroupBox = new QGroupBox(this); - m_memoryGroupBox->setObjectName(QStringLiteral("memoryGroupBox")); - m_gridLayout_2 = new QGridLayout(m_memoryGroupBox); - m_gridLayout_2->setObjectName(QStringLiteral("gridLayout_2")); - - m_labelMinMem = new QLabel(m_memoryGroupBox); - m_labelMinMem->setObjectName(QStringLiteral("labelMinMem")); - m_gridLayout_2->addWidget(m_labelMinMem, 0, 0, 1, 1); - - m_minMemSpinBox = new QSpinBox(m_memoryGroupBox); - m_minMemSpinBox->setObjectName(QStringLiteral("minMemSpinBox")); - m_minMemSpinBox->setSuffix(QStringLiteral(" MB")); - m_minMemSpinBox->setMinimum(128); - m_minMemSpinBox->setMaximum(m_availableMemory); - m_minMemSpinBox->setSingleStep(128); - m_labelMinMem->setBuddy(m_minMemSpinBox); - m_gridLayout_2->addWidget(m_minMemSpinBox, 0, 1, 1, 1); - - m_labelMaxMem = new QLabel(m_memoryGroupBox); - m_labelMaxMem->setObjectName(QStringLiteral("labelMaxMem")); - m_gridLayout_2->addWidget(m_labelMaxMem, 1, 0, 1, 1); - - m_maxMemSpinBox = new QSpinBox(m_memoryGroupBox); - m_maxMemSpinBox->setObjectName(QStringLiteral("maxMemSpinBox")); - m_maxMemSpinBox->setSuffix(QStringLiteral(" MB")); - m_maxMemSpinBox->setMinimum(128); - m_maxMemSpinBox->setMaximum(m_availableMemory); - m_maxMemSpinBox->setSingleStep(128); - m_labelMaxMem->setBuddy(m_maxMemSpinBox); - m_gridLayout_2->addWidget(m_maxMemSpinBox, 1, 1, 1, 1); - - m_labelPermGen = new QLabel(m_memoryGroupBox); - m_labelPermGen->setObjectName(QStringLiteral("labelPermGen")); - m_labelPermGen->setText(QStringLiteral("PermGen:")); - m_gridLayout_2->addWidget(m_labelPermGen, 2, 0, 1, 1); - m_labelPermGen->setVisible(false); - - m_permGenSpinBox = new QSpinBox(m_memoryGroupBox); - m_permGenSpinBox->setObjectName(QStringLiteral("permGenSpinBox")); - m_permGenSpinBox->setSuffix(QStringLiteral(" MB")); - m_permGenSpinBox->setMinimum(64); - m_permGenSpinBox->setMaximum(m_availableMemory); - m_permGenSpinBox->setSingleStep(8); - m_gridLayout_2->addWidget(m_permGenSpinBox, 2, 1, 1, 1); - m_permGenSpinBox->setVisible(false); - - m_verticalLayout->addWidget(m_memoryGroupBox); - - retranslate(); -} - -void JavaSettingsWidget::initialize() -{ - m_versionWidget->initialize(MMC->javalist().get()); - m_versionWidget->setResizeOn(2); - auto s = MMC->settings(); - // Memory - observedMinMemory = s->get("MinMemAlloc").toInt(); - observedMaxMemory = s->get("MaxMemAlloc").toInt(); - observedPermGenMemory = s->get("PermGen").toInt(); - m_minMemSpinBox->setValue(observedMinMemory); - m_maxMemSpinBox->setValue(observedMaxMemory); - m_permGenSpinBox->setValue(observedPermGenMemory); -} - -void JavaSettingsWidget::refresh() -{ - m_versionWidget->loadList(); -} - -JavaSettingsWidget::ValidationStatus JavaSettingsWidget::validate() -{ - switch(javaStatus) - { - default: - case JavaStatus::NotSet: - case JavaStatus::DoesNotExist: - case JavaStatus::DoesNotStart: - case JavaStatus::ReturnedInvalidData: - { - int button = CustomMessageBox::selectable( - this, - tr("No Java version selected"), - tr("You didn't select a Java version or selected something that doesn't work.\n" - "MultiMC will not be able to start Minecraft.\n" - "Do you wish to proceed without any Java?" - "\n\n" - "You can change the Java version in the settings later.\n" - ), - QMessageBox::Warning, - QMessageBox::Yes | QMessageBox::No, - QMessageBox::NoButton - )->exec(); - if(button == QMessageBox::No) - { - return ValidationStatus::Bad; - } - return ValidationStatus::JavaBad; - } - break; - case JavaStatus::Pending: - { - return ValidationStatus::Bad; - } - case JavaStatus::Good: - { - return ValidationStatus::AllOK; - } - } -} - -QString JavaSettingsWidget::javaPath() const -{ - return m_javaPathTextBox->text(); -} - -int JavaSettingsWidget::maxHeapSize() const -{ - return m_maxMemSpinBox->value(); -} - -int JavaSettingsWidget::minHeapSize() const -{ - return m_minMemSpinBox->value(); -} - -bool JavaSettingsWidget::permGenEnabled() const -{ - return m_permGenSpinBox->isVisible(); -} - -int JavaSettingsWidget::permGenSize() const -{ - return m_permGenSpinBox->value(); -} - -void JavaSettingsWidget::memoryValueChanged(int) -{ - bool actuallyChanged = false; - int min = m_minMemSpinBox->value(); - int max = m_maxMemSpinBox->value(); - int permgen = m_permGenSpinBox->value(); - QObject *obj = sender(); - if (obj == m_minMemSpinBox && min != observedMinMemory) - { - observedMinMemory = min; - actuallyChanged = true; - if (min > max) - { - observedMaxMemory = min; - m_maxMemSpinBox->setValue(min); - } - } - else if (obj == m_maxMemSpinBox && max != observedMaxMemory) - { - observedMaxMemory = max; - actuallyChanged = true; - if (min > max) - { - observedMinMemory = max; - m_minMemSpinBox->setValue(max); - } - } - else if (obj == m_permGenSpinBox && permgen != observedPermGenMemory) - { - observedPermGenMemory = permgen; - actuallyChanged = true; - } - if(actuallyChanged) - { - checkJavaPathOnEdit(m_javaPathTextBox->text()); - } -} - -void JavaSettingsWidget::javaVersionSelected(BaseVersionPtr version) -{ - auto java = std::dynamic_pointer_cast<JavaInstall>(version); - if(!java) - { - return; - } - auto visible = java->id.requiresPermGen(); - m_labelPermGen->setVisible(visible); - m_permGenSpinBox->setVisible(visible); - m_javaPathTextBox->setText(java->path); - checkJavaPath(java->path); -} - -void JavaSettingsWidget::on_javaBrowseBtn_clicked() -{ - QString filter; -#if defined Q_OS_WIN32 - filter = "Java (javaw.exe)"; -#else - filter = "Java (java)"; -#endif - QString raw_path = QFileDialog::getOpenFileName(this, tr("Find Java executable"), QString(), filter); - if(raw_path.isEmpty()) - { - return; - } - QString cooked_path = FS::NormalizePath(raw_path); - m_javaPathTextBox->setText(cooked_path); - checkJavaPath(cooked_path); -} - -void JavaSettingsWidget::on_javaStatusBtn_clicked() -{ - QString text; - bool failed = false; - switch(javaStatus) - { - case JavaStatus::NotSet: - checkJavaPath(m_javaPathTextBox->text()); - return; - case JavaStatus::DoesNotExist: - text += QObject::tr("The specified file either doesn't exist or is not a proper executable."); - failed = true; - break; - case JavaStatus::DoesNotStart: - { - text += QObject::tr("The specified java binary didn't start properly.<br />"); - auto htmlError = m_result.errorLog; - if(!htmlError.isEmpty()) - { - htmlError.replace('\n', "<br />"); - text += QString("<font color=\"red\">%1</font>").arg(htmlError); - } - failed = true; - break; - } - case JavaStatus::ReturnedInvalidData: - { - text += QObject::tr("The specified java binary returned unexpected results:<br />"); - auto htmlOut = m_result.outLog; - if(!htmlOut.isEmpty()) - { - htmlOut.replace('\n', "<br />"); - text += QString("<font color=\"red\">%1</font>").arg(htmlOut); - } - failed = true; - break; - } - case JavaStatus::Good: - text += QObject::tr("Java test succeeded!<br />Platform reported: %1<br />Java version " - "reported: %2<br />").arg(m_result.realPlatform, m_result.javaVersion.toString()); - break; - case JavaStatus::Pending: - // TODO: abort here? - return; - } - CustomMessageBox::selectable( - this, - failed ? QObject::tr("Java test success") : QObject::tr("Java test failure"), - text, - failed ? QMessageBox::Critical : QMessageBox::Information - )->show(); -} - -void JavaSettingsWidget::setJavaStatus(JavaSettingsWidget::JavaStatus status) -{ - javaStatus = status; - switch(javaStatus) - { - case JavaStatus::Good: - m_javaStatusBtn->setIcon(goodIcon); - break; - case JavaStatus::NotSet: - case JavaStatus::Pending: - m_javaStatusBtn->setIcon(yellowIcon); - break; - default: - m_javaStatusBtn->setIcon(badIcon); - break; - } -} - -void JavaSettingsWidget::javaPathEdited(const QString& path) -{ - checkJavaPathOnEdit(path); -} - -void JavaSettingsWidget::checkJavaPathOnEdit(const QString& path) -{ - auto realPath = FS::ResolveExecutable(path); - QFileInfo pathInfo(realPath); - if (pathInfo.baseName().toLower().contains("java")) - { - checkJavaPath(path); - } - else - { - if(!m_checker) - { - setJavaStatus(JavaStatus::NotSet); - } - } -} - -void JavaSettingsWidget::checkJavaPath(const QString &path) -{ - if(m_checker) - { - queuedCheck = path; - return; - } - auto realPath = FS::ResolveExecutable(path); - if(realPath.isNull()) - { - setJavaStatus(JavaStatus::DoesNotExist); - return; - } - setJavaStatus(JavaStatus::Pending); - m_checker.reset(new JavaChecker()); - m_checker->m_path = path; - m_checker->m_minMem = m_minMemSpinBox->value(); - m_checker->m_maxMem = m_maxMemSpinBox->value(); - if(m_permGenSpinBox->isVisible()) - { - m_checker->m_permGen = m_permGenSpinBox->value(); - } - connect(m_checker.get(), &JavaChecker::checkFinished, this, &JavaSettingsWidget::checkFinished); - m_checker->performCheck(); -} - -void JavaSettingsWidget::checkFinished(JavaCheckResult result) -{ - m_result = result; - switch(result.validity) - { - case JavaCheckResult::Validity::Valid: - { - setJavaStatus(JavaStatus::Good); - break; - } - case JavaCheckResult::Validity::ReturnedInvalidData: - { - setJavaStatus(JavaStatus::ReturnedInvalidData); - break; - } - case JavaCheckResult::Validity::Errored: - { - setJavaStatus(JavaStatus::DoesNotStart); - break; - } - } - m_checker.reset(); - if(!queuedCheck.isNull()) - { - checkJavaPath(queuedCheck); - queuedCheck.clear(); - } -} - -void JavaSettingsWidget::retranslate() -{ - m_memoryGroupBox->setTitle(tr("Memory")); - m_maxMemSpinBox->setToolTip(tr("The maximum amount of memory Minecraft is allowed to use.")); - m_labelMinMem->setText(tr("Minimum memory allocation:")); - m_labelMaxMem->setText(tr("Maximum memory allocation:")); - m_minMemSpinBox->setToolTip(tr("The amount of memory Minecraft is started with.")); - m_permGenSpinBox->setToolTip(tr("The amount of memory available to store loaded Java classes.")); - m_javaBrowseBtn->setText(tr("Browse")); -} diff --git a/application/widgets/JavaSettingsWidget.h b/application/widgets/JavaSettingsWidget.h deleted file mode 100644 index 0d280daf..00000000 --- a/application/widgets/JavaSettingsWidget.h +++ /dev/null @@ -1,102 +0,0 @@ -#pragma once -#include <QWidget> - -#include <java/JavaChecker.h> -#include <BaseVersion.h> -#include <QObjectPtr.h> -#include <QIcon> - -class QLineEdit; -class VersionSelectWidget; -class QSpinBox; -class QPushButton; -class QVBoxLayout; -class QHBoxLayout; -class QGroupBox; -class QGridLayout; -class QLabel; -class QToolButton; - -/** - * This is a widget for all the Java settings dialogs and pages. - */ -class JavaSettingsWidget : public QWidget -{ - Q_OBJECT - -public: - explicit JavaSettingsWidget(QWidget *parent); - virtual ~JavaSettingsWidget() {}; - - enum class JavaStatus - { - NotSet, - Pending, - Good, - DoesNotExist, - DoesNotStart, - ReturnedInvalidData - } javaStatus = JavaStatus::NotSet; - - enum class ValidationStatus - { - Bad, - JavaBad, - AllOK - }; - - void refresh(); - void initialize(); - ValidationStatus validate(); - void retranslate(); - - bool permGenEnabled() const; - int permGenSize() const; - int minHeapSize() const; - int maxHeapSize() const; - QString javaPath() const; - - -protected slots: - void memoryValueChanged(int); - void javaPathEdited(const QString &path); - void javaVersionSelected(BaseVersionPtr version); - void on_javaBrowseBtn_clicked(); - void on_javaStatusBtn_clicked(); - void checkFinished(JavaCheckResult result); - -protected: /* methods */ - void checkJavaPathOnEdit(const QString &path); - void checkJavaPath(const QString &path); - void setJavaStatus(JavaStatus status); - void setupUi(); - -private: /* data */ - VersionSelectWidget *m_versionWidget = nullptr; - QVBoxLayout *m_verticalLayout = nullptr; - - QLineEdit * m_javaPathTextBox = nullptr; - QPushButton * m_javaBrowseBtn = nullptr; - QToolButton * m_javaStatusBtn = nullptr; - QHBoxLayout *m_horizontalLayout = nullptr; - - QGroupBox *m_memoryGroupBox = nullptr; - QGridLayout *m_gridLayout_2 = nullptr; - QSpinBox *m_maxMemSpinBox = nullptr; - QLabel *m_labelMinMem = nullptr; - QLabel *m_labelMaxMem = nullptr; - QSpinBox *m_minMemSpinBox = nullptr; - QLabel *m_labelPermGen = nullptr; - QSpinBox *m_permGenSpinBox = nullptr; - QIcon goodIcon; - QIcon yellowIcon; - QIcon badIcon; - - int observedMinMemory = 0; - int observedMaxMemory = 0; - int observedPermGenMemory = 0; - QString queuedCheck; - uint64_t m_availableMemory = 0ull; - shared_qobject_ptr<JavaChecker> m_checker; - JavaCheckResult m_result; -}; diff --git a/application/widgets/LabeledToolButton.cpp b/application/widgets/LabeledToolButton.cpp deleted file mode 100644 index ab2d3278..00000000 --- a/application/widgets/LabeledToolButton.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <QLabel> -#include <QVBoxLayout> -#include <QResizeEvent> -#include <QStyleOption> -#include "LabeledToolButton.h" -#include <QApplication> -#include <QDebug> - -/* - * - * Tool Button with a label on it, instead of the normal text rendering - * - */ - -LabeledToolButton::LabeledToolButton(QWidget * parent) - : QToolButton(parent) - , m_label(new QLabel(this)) -{ - //QToolButton::setText(" "); - m_label->setWordWrap(true); - m_label->setMouseTracking(false); - m_label->setAlignment(Qt::AlignCenter); - m_label->setTextInteractionFlags(Qt::NoTextInteraction); - // somehow, this makes word wrap work in the QLabel. yay. - //m_label->setMinimumWidth(100); -} - -QString LabeledToolButton::text() const -{ - return m_label->text(); -} - -void LabeledToolButton::setText(const QString & text) -{ - m_label->setText(text); -} - -void LabeledToolButton::setIcon(QIcon icon) -{ - m_icon = icon; - resetIcon(); -} - - -/*! - \reimp -*/ -QSize LabeledToolButton::sizeHint() const -{ - /* - Q_D(const QToolButton); - if (d->sizeHint.isValid()) - return d->sizeHint; - */ - ensurePolished(); - - int w = 0, h = 0; - QStyleOptionToolButton opt; - initStyleOption(&opt); - QSize sz =m_label->sizeHint(); - w = sz.width(); - h = sz.height(); - - opt.rect.setSize(QSize(w, h)); // PM_MenuButtonIndicator depends on the height - if (popupMode() == MenuButtonPopup) - w += style()->pixelMetric(QStyle::PM_MenuButtonIndicator, &opt, this); - - QSize rawSize = style()->sizeFromContents(QStyle::CT_ToolButton, &opt, QSize(w, h), this); - QSize sizeHint = rawSize.expandedTo(QApplication::globalStrut()); - return sizeHint; -} - - - -void LabeledToolButton::resizeEvent(QResizeEvent * event) -{ - m_label->setGeometry(QRect(4, 4, width()-8, height()-8)); - if(!m_icon.isNull()) - { - resetIcon(); - } - QWidget::resizeEvent(event); -} - -void LabeledToolButton::resetIcon() -{ - auto iconSz = m_icon.actualSize(QSize(160, 80)); - float w = iconSz.width(); - float h = iconSz.height(); - float ar = w/h; - // FIXME: hardcoded max size of 160x80 - int newW = 80 * ar; - if(newW > 160) - newW = 160; - QSize newSz (newW, 80); - auto pixmap = m_icon.pixmap(newSz); - m_label->setPixmap(pixmap); - m_label->setMinimumHeight(80); - m_label->setSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::Preferred ); -} diff --git a/application/widgets/LabeledToolButton.h b/application/widgets/LabeledToolButton.h deleted file mode 100644 index 51f99e9b..00000000 --- a/application/widgets/LabeledToolButton.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QPushButton> -#include <QToolButton> - -class QLabel; - -class LabeledToolButton : public QToolButton -{ - Q_OBJECT - - QLabel * m_label; - QIcon m_icon; - -public: - LabeledToolButton(QWidget * parent = 0); - - QString text() const; - void setText(const QString & text); - void setIcon(QIcon icon); - virtual QSize sizeHint() const; -protected: - void resizeEvent(QResizeEvent * event); - void resetIcon(); -}; diff --git a/application/widgets/LanguageSelectionWidget.cpp b/application/widgets/LanguageSelectionWidget.cpp deleted file mode 100644 index 8d23bdc5..00000000 --- a/application/widgets/LanguageSelectionWidget.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "LanguageSelectionWidget.h" - -#include <QVBoxLayout> -#include <QTreeView> -#include <QHeaderView> -#include <QLabel> -#include "MultiMC.h" -#include "translations/TranslationsModel.h" - -LanguageSelectionWidget::LanguageSelectionWidget(QWidget *parent) : - QWidget(parent) -{ - verticalLayout = new QVBoxLayout(this); - verticalLayout->setObjectName(QStringLiteral("verticalLayout")); - languageView = new QTreeView(this); - languageView->setObjectName(QStringLiteral("languageView")); - languageView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - languageView->setAlternatingRowColors(true); - languageView->setRootIsDecorated(false); - languageView->setItemsExpandable(false); - languageView->setWordWrap(true); - languageView->header()->setCascadingSectionResizes(true); - languageView->header()->setStretchLastSection(false); - verticalLayout->addWidget(languageView); - helpUsLabel = new QLabel(this); - helpUsLabel->setObjectName(QStringLiteral("helpUsLabel")); - helpUsLabel->setTextInteractionFlags(Qt::LinksAccessibleByMouse); - helpUsLabel->setOpenExternalLinks(true); - helpUsLabel->setWordWrap(true); - verticalLayout->addWidget(helpUsLabel); - - auto translations = MMC->translations(); - auto index = translations->selectedIndex(); - languageView->setModel(translations.get()); - languageView->setCurrentIndex(index); - languageView->header()->setSectionResizeMode(QHeaderView::ResizeToContents); - languageView->header()->setSectionResizeMode(0, QHeaderView::Stretch); - connect(languageView->selectionModel(), &QItemSelectionModel::currentRowChanged, this, &LanguageSelectionWidget::languageRowChanged); - verticalLayout->setContentsMargins(0,0,0,0); -} - -QString LanguageSelectionWidget::getSelectedLanguageKey() const -{ - auto translations = MMC->translations(); - return translations->data(languageView->currentIndex(), Qt::UserRole).toString(); -} - -void LanguageSelectionWidget::retranslate() -{ - QString text = tr("Don't see your language or the quality is poor?<br/><a href=\"%1\">Help us with translations!</a>") - .arg("https://github.com/MultiMC/MultiMC5/wiki/Translating-MultiMC"); - helpUsLabel->setText(text); - -} - -void LanguageSelectionWidget::languageRowChanged(const QModelIndex& current, const QModelIndex& previous) -{ - if (current == previous) - { - return; - } - auto translations = MMC->translations(); - QString key = translations->data(current, Qt::UserRole).toString(); - translations->selectLanguage(key); - translations->updateLanguage(key); -} diff --git a/application/widgets/LanguageSelectionWidget.h b/application/widgets/LanguageSelectionWidget.h deleted file mode 100644 index e65936db..00000000 --- a/application/widgets/LanguageSelectionWidget.h +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QWidget> - -class QVBoxLayout; -class QTreeView; -class QLabel; - -class LanguageSelectionWidget: public QWidget -{ - Q_OBJECT -public: - explicit LanguageSelectionWidget(QWidget *parent = 0); - virtual ~LanguageSelectionWidget() { }; - - QString getSelectedLanguageKey() const; - void retranslate(); - -protected slots: - void languageRowChanged(const QModelIndex ¤t, const QModelIndex &previous); - -private: - QVBoxLayout *verticalLayout = nullptr; - QTreeView *languageView = nullptr; - QLabel *helpUsLabel = nullptr; -}; diff --git a/application/widgets/LineSeparator.cpp b/application/widgets/LineSeparator.cpp deleted file mode 100644 index d03e6762..00000000 --- a/application/widgets/LineSeparator.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include "LineSeparator.h" - -#include <QStyle> -#include <QStyleOption> -#include <QLayout> -#include <QPainter> - -void LineSeparator::initStyleOption(QStyleOption *option) const -{ - option->initFrom(this); - // in a horizontal layout, the line is vertical (and vice versa) - if (m_orientation == Qt::Vertical) - option->state |= QStyle::State_Horizontal; -} - -LineSeparator::LineSeparator(QWidget *parent, Qt::Orientation orientation) - : QWidget(parent), m_orientation(orientation) -{ - setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); -} - -QSize LineSeparator::sizeHint() const -{ - QStyleOption opt; - initStyleOption(&opt); - const int extent = - style()->pixelMetric(QStyle::PM_ToolBarSeparatorExtent, &opt, parentWidget()); - return QSize(extent, extent); -} - -void LineSeparator::paintEvent(QPaintEvent *) -{ - QPainter p(this); - QStyleOption opt; - initStyleOption(&opt); - style()->drawPrimitive(QStyle::PE_IndicatorToolBarSeparator, &opt, &p, parentWidget()); -} diff --git a/application/widgets/LineSeparator.h b/application/widgets/LineSeparator.h deleted file mode 100644 index 22927b68..00000000 --- a/application/widgets/LineSeparator.h +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once -#include <QWidget> - -class QStyleOption; - -class LineSeparator : public QWidget -{ - Q_OBJECT - -public: - /// Create a line separator. orientation is the orientation of the line. - explicit LineSeparator(QWidget *parent, Qt::Orientation orientation = Qt::Horizontal); - QSize sizeHint() const; - void paintEvent(QPaintEvent *); - void initStyleOption(QStyleOption *option) const; -private: - Qt::Orientation m_orientation = Qt::Horizontal; -}; diff --git a/application/widgets/LogView.cpp b/application/widgets/LogView.cpp deleted file mode 100644 index 26a2a527..00000000 --- a/application/widgets/LogView.cpp +++ /dev/null @@ -1,144 +0,0 @@ -#include "LogView.h" -#include <QTextBlock> -#include <QScrollBar> - -LogView::LogView(QWidget* parent) : QPlainTextEdit(parent) -{ - setWordWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); - m_defaultFormat = new QTextCharFormat(currentCharFormat()); -} - -LogView::~LogView() -{ - delete m_defaultFormat; -} - -void LogView::setWordWrap(bool wrapping) -{ - if(wrapping) - { - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setLineWrapMode(QPlainTextEdit::WidgetWidth); - } - else - { - setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); - setLineWrapMode(QPlainTextEdit::NoWrap); - } -} - -void LogView::setModel(QAbstractItemModel* model) -{ - if(m_model) - { - disconnect(m_model, &QAbstractItemModel::modelReset, this, &LogView::repopulate); - disconnect(m_model, &QAbstractItemModel::rowsInserted, this, &LogView::rowsInserted); - disconnect(m_model, &QAbstractItemModel::rowsAboutToBeInserted, this, &LogView::rowsAboutToBeInserted); - disconnect(m_model, &QAbstractItemModel::rowsRemoved, this, &LogView::rowsRemoved); - } - m_model = model; - if(m_model) - { - connect(m_model, &QAbstractItemModel::modelReset, this, &LogView::repopulate); - connect(m_model, &QAbstractItemModel::rowsInserted, this, &LogView::rowsInserted); - connect(m_model, &QAbstractItemModel::rowsAboutToBeInserted, this, &LogView::rowsAboutToBeInserted); - connect(m_model, &QAbstractItemModel::rowsRemoved, this, &LogView::rowsRemoved); - connect(m_model, &QAbstractItemModel::destroyed, this, &LogView::modelDestroyed); - } - repopulate(); -} - -QAbstractItemModel * LogView::model() const -{ - return m_model; -} - -void LogView::modelDestroyed(QObject* model) -{ - if(m_model == model) - { - setModel(nullptr); - } -} - -void LogView::repopulate() -{ - auto doc = document(); - doc->clear(); - if(!m_model) - { - return; - } - rowsInserted(QModelIndex(), 0, m_model->rowCount() - 1); -} - -void LogView::rowsAboutToBeInserted(const QModelIndex& parent, int first, int last) -{ - Q_UNUSED(parent) - Q_UNUSED(first) - Q_UNUSED(last) - QScrollBar *bar = verticalScrollBar(); - int max_bar = bar->maximum(); - int val_bar = bar->value(); - if (m_scroll) - { - m_scroll = (max_bar - val_bar) <= 1; - } - else - { - m_scroll = val_bar == max_bar; - } -} - -void LogView::rowsInserted(const QModelIndex& parent, int first, int last) -{ - for(int i = first; i <= last; i++) - { - auto idx = m_model->index(i, 0, parent); - auto text = m_model->data(idx, Qt::DisplayRole).toString(); - QTextCharFormat format(*m_defaultFormat); - auto font = m_model->data(idx, Qt::FontRole); - if(font.isValid()) - { - format.setFont(font.value<QFont>()); - } - auto fg = m_model->data(idx, Qt::TextColorRole); - if(fg.isValid()) - { - format.setForeground(fg.value<QColor>()); - } - auto bg = m_model->data(idx, Qt::BackgroundRole); - if(bg.isValid()) - { - format.setBackground(bg.value<QColor>()); - } - auto workCursor = textCursor(); - workCursor.movePosition(QTextCursor::End); - workCursor.insertText(text, format); - workCursor.insertBlock(); - } - if(m_scroll && !m_scrolling) - { - m_scrolling = true; - QMetaObject::invokeMethod( this, "scrollToBottom", Qt::QueuedConnection); - } -} - -void LogView::rowsRemoved(const QModelIndex& parent, int first, int last) -{ - // TODO: some day... maybe - Q_UNUSED(parent) - Q_UNUSED(first) - Q_UNUSED(last) -} - -void LogView::scrollToBottom() -{ - m_scrolling = false; - verticalScrollBar()->setSliderPosition(verticalScrollBar()->maximum()); -} - -void LogView::findNext(const QString& what, bool reverse) -{ - find(what, reverse ? QTextDocument::FindFlag::FindBackward : QTextDocument::FindFlag(0)); -} diff --git a/application/widgets/LogView.h b/application/widgets/LogView.h deleted file mode 100644 index 3143360a..00000000 --- a/application/widgets/LogView.h +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once -#include <QPlainTextEdit> -#include <QAbstractItemView> - -class QAbstractItemModel; - -class LogView: public QPlainTextEdit -{ - Q_OBJECT -public: - explicit LogView(QWidget *parent = nullptr); - virtual ~LogView(); - - virtual void setModel(QAbstractItemModel *model); - QAbstractItemModel *model() const; - -public slots: - void setWordWrap(bool wrapping); - void findNext(const QString & what, bool reverse); - void scrollToBottom(); - -protected slots: - void repopulate(); - // note: this supports only appending - void rowsInserted(const QModelIndex &parent, int first, int last); - void rowsAboutToBeInserted(const QModelIndex &parent, int first, int last); - // note: this supports only removing from front - void rowsRemoved(const QModelIndex &parent, int first, int last); - void modelDestroyed(QObject * model); - -protected: - QAbstractItemModel *m_model = nullptr; - QTextCharFormat *m_defaultFormat = nullptr; - bool m_scroll = false; - bool m_scrolling = false; -}; diff --git a/application/widgets/MCModInfoFrame.cpp b/application/widgets/MCModInfoFrame.cpp deleted file mode 100644 index 5b1f6230..00000000 --- a/application/widgets/MCModInfoFrame.cpp +++ /dev/null @@ -1,167 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <QMessageBox> -#include <QtGui> - -#include "MCModInfoFrame.h" -#include "ui_MCModInfoFrame.h" -#include "dialogs/CustomMessageBox.h" - -void MCModInfoFrame::updateWithMod(Mod &m) -{ - if (m.type() == m.MOD_FOLDER) - { - clear(); - return; - } - - QString text = ""; - QString name = ""; - if (m.name().isEmpty()) - name = m.mmc_id(); - else - name = m.name(); - - if (m.homeurl().isEmpty()) - text = name; - else - text = "<a href=\"" + m.homeurl() + "\">" + name + "</a>"; - if (!m.authors().isEmpty()) - text += " by " + m.authors().join(", "); - - setModText(text); - - if (m.description().isEmpty()) - { - setModDescription(QString()); - } - else - { - setModDescription(m.description()); - } -} - -void MCModInfoFrame::clear() -{ - setModText(QString()); - setModDescription(QString()); -} - -MCModInfoFrame::MCModInfoFrame(QWidget *parent) : - QFrame(parent), - ui(new Ui::MCModInfoFrame) -{ - ui->setupUi(this); - ui->label_ModDescription->setHidden(true); - ui->label_ModText->setHidden(true); - updateHiddenState(); -} - -MCModInfoFrame::~MCModInfoFrame() -{ - delete ui; -} - -void MCModInfoFrame::updateHiddenState() -{ - if(ui->label_ModDescription->isHidden() && ui->label_ModText->isHidden()) - { - setHidden(true); - } - else - { - setHidden(false); - } -} - -void MCModInfoFrame::setModText(QString text) -{ - if(text.isEmpty()) - { - ui->label_ModText->setHidden(true); - } - else - { - ui->label_ModText->setText(text); - ui->label_ModText->setHidden(false); - } - updateHiddenState(); -} - -void MCModInfoFrame::setModDescription(QString text) -{ - if(text.isEmpty()) - { - ui->label_ModDescription->setHidden(true); - updateHiddenState(); - return; - } - else - { - ui->label_ModDescription->setHidden(false); - updateHiddenState(); - } - ui->label_ModDescription->setToolTip(""); - QString intermediatetext = text.trimmed(); - bool prev(false); - QChar rem('\n'); - QString finaltext; - finaltext.reserve(intermediatetext.size()); - foreach(const QChar& c, intermediatetext) - { - if(c == rem && prev){ - continue; - } - prev = c == rem; - finaltext += c; - } - QString labeltext; - labeltext.reserve(300); - if(finaltext.length() > 290) - { - ui->label_ModDescription->setOpenExternalLinks(false); - ui->label_ModDescription->setTextFormat(Qt::TextFormat::RichText); - desc = text; - // This allows injecting HTML here. - labeltext.append("<html><body>" + finaltext.left(287) + "<a href=\"#mod_desc\">...</a></body></html>"); - QObject::connect(ui->label_ModDescription, &QLabel::linkActivated, this, &MCModInfoFrame::modDescEllipsisHandler); - } - else - { - ui->label_ModDescription->setTextFormat(Qt::TextFormat::PlainText); - labeltext.append(finaltext); - } - ui->label_ModDescription->setText(labeltext); -} - -void MCModInfoFrame::modDescEllipsisHandler(const QString &link) -{ - if(!currentBox) - { - currentBox = CustomMessageBox::selectable(this, QString(), desc); - connect(currentBox, &QMessageBox::finished, this, &MCModInfoFrame::boxClosed); - currentBox->show(); - } - else - { - currentBox->setText(desc); - } -} - -void MCModInfoFrame::boxClosed(int result) -{ - currentBox = nullptr; -} diff --git a/application/widgets/MCModInfoFrame.h b/application/widgets/MCModInfoFrame.h deleted file mode 100644 index 0b7ef537..00000000 --- a/application/widgets/MCModInfoFrame.h +++ /dev/null @@ -1,52 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QFrame> -#include "minecraft/mod/Mod.h" - -namespace Ui -{ -class MCModInfoFrame; -} - -class MCModInfoFrame : public QFrame -{ - Q_OBJECT - -public: - explicit MCModInfoFrame(QWidget *parent = 0); - ~MCModInfoFrame(); - - void setModText(QString text); - void setModDescription(QString text); - - void updateWithMod(Mod &m); - void clear(); - -public slots: - void modDescEllipsisHandler(const QString& link ); - void boxClosed(int result); - -private: - void updateHiddenState(); - -private: - Ui::MCModInfoFrame *ui; - QString desc; - class QMessageBox * currentBox = nullptr; -}; - diff --git a/application/widgets/MCModInfoFrame.ui b/application/widgets/MCModInfoFrame.ui deleted file mode 100644 index 5ef33379..00000000 --- a/application/widgets/MCModInfoFrame.ui +++ /dev/null @@ -1,92 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>MCModInfoFrame</class> - <widget class="QFrame" name="MCModInfoFrame"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>527</width> - <height>113</height> - </rect> - </property> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Minimum"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="maximumSize"> - <size> - <width>16777215</width> - <height>120</height> - </size> - </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <property name="spacing"> - <number>6</number> - </property> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <widget class="QLabel" name="label_ModText"> - <property name="text"> - <string notr="true"/> - </property> - <property name="textFormat"> - <enum>Qt::RichText</enum> - </property> - <property name="alignment"> - <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - <property name="openExternalLinks"> - <bool>true</bool> - </property> - <property name="textInteractionFlags"> - <set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="label_ModDescription"> - <property name="toolTip"> - <string notr="true"/> - </property> - <property name="text"> - <string notr="true"/> - </property> - <property name="textFormat"> - <enum>Qt::RichText</enum> - </property> - <property name="alignment"> - <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - <property name="openExternalLinks"> - <bool>true</bool> - </property> - <property name="textInteractionFlags"> - <set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> - </property> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/application/widgets/ModListView.cpp b/application/widgets/ModListView.cpp deleted file mode 100644 index c8ccd292..00000000 --- a/application/widgets/ModListView.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "ModListView.h" -#include <QHeaderView> -#include <QMouseEvent> -#include <QPainter> -#include <QDrag> -#include <QRect> - -ModListView::ModListView ( QWidget* parent ) - :QTreeView ( parent ) -{ - setAllColumnsShowFocus ( true ); - setExpandsOnDoubleClick ( false ); - setRootIsDecorated ( false ); - setSortingEnabled ( true ); - setAlternatingRowColors ( true ); - setSelectionMode ( QAbstractItemView::ExtendedSelection ); - setHeaderHidden ( false ); - setSelectionBehavior(QAbstractItemView::SelectRows); - setVerticalScrollBarPolicy ( Qt::ScrollBarAlwaysOn ); - setHorizontalScrollBarPolicy ( Qt::ScrollBarAsNeeded ); - setDropIndicatorShown(true); - setDragEnabled(true); - setDragDropMode(QAbstractItemView::DropOnly); - viewport()->setAcceptDrops(true); -} - -void ModListView::setModel ( QAbstractItemModel* model ) -{ - QTreeView::setModel ( model ); - auto head = header(); - head->setStretchLastSection(false); - // HACK: this is true for the checkbox column of mod lists - auto string = model->headerData(0,head->orientation()).toString(); - if(head->count() < 1) - { - return; - } - if(!string.size()) - { - head->setSectionResizeMode(0, QHeaderView::ResizeToContents); - head->setSectionResizeMode(1, QHeaderView::Stretch); - for(int i = 2; i < head->count(); i++) - head->setSectionResizeMode(i, QHeaderView::ResizeToContents); - } - else - { - head->setSectionResizeMode(0, QHeaderView::Stretch); - for(int i = 1; i < head->count(); i++) - head->setSectionResizeMode(i, QHeaderView::ResizeToContents); - } -} diff --git a/application/widgets/ModListView.h b/application/widgets/ModListView.h deleted file mode 100644 index 881e092f..00000000 --- a/application/widgets/ModListView.h +++ /dev/null @@ -1,25 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once -#include <QTreeView> - -class ModListView: public QTreeView -{ - Q_OBJECT -public: - explicit ModListView ( QWidget* parent = 0 ); - virtual void setModel ( QAbstractItemModel* model ); -}; diff --git a/application/widgets/PageContainer.cpp b/application/widgets/PageContainer.cpp deleted file mode 100644 index 05a5e6b4..00000000 --- a/application/widgets/PageContainer.cpp +++ /dev/null @@ -1,239 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "PageContainer.h" - -#include <QStackedLayout> -#include <QPushButton> -#include <QSortFilterProxyModel> -#include <QUrl> -#include <QStyledItemDelegate> -#include <QListView> -#include <QLineEdit> -#include <QLabel> -#include <QDialogButtonBox> -#include <QGridLayout> - -#include "MultiMC.h" -#include "settings/SettingsObject.h" -#include "widgets/IconLabel.h" -#include "PageContainer_p.h" -#include <MultiMC.h> -#include <DesktopServices.h> - -class PageEntryFilterModel : public QSortFilterProxyModel -{ -public: - explicit PageEntryFilterModel(QObject *parent = 0) : QSortFilterProxyModel(parent) - { - } - -protected: - bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const - { - const QString pattern = filterRegExp().pattern(); - const auto model = static_cast<PageModel *>(sourceModel()); - const auto page = model->pages().at(sourceRow); - if (!page->shouldDisplay()) - return false; - // Regular contents check, then check page-filter. - return QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent); - } -}; - -PageContainer::PageContainer(BasePageProvider *pageProvider, QString defaultId, - QWidget *parent) - : QWidget(parent) -{ - createUI(); - m_model = new PageModel(this); - m_proxyModel = new PageEntryFilterModel(this); - int counter = 0; - auto pages = pageProvider->getPages(); - for (auto page : pages) - { - page->stackIndex = m_pageStack->addWidget(dynamic_cast<QWidget *>(page)); - page->listIndex = counter; - page->setParentContainer(this); - counter++; - } - m_model->setPages(pages); - - m_proxyModel->setSourceModel(m_model); - m_proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive); - - m_pageList->setIconSize(QSize(pageIconSize, pageIconSize)); - m_pageList->setSelectionMode(QAbstractItemView::SingleSelection); - m_pageList->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); - m_pageList->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents); - m_pageList->setModel(m_proxyModel); - connect(m_pageList->selectionModel(), SIGNAL(currentRowChanged(QModelIndex, QModelIndex)), - this, SLOT(currentChanged(QModelIndex))); - m_pageStack->setStackingMode(QStackedLayout::StackOne); - m_pageList->setFocus(); - selectPage(defaultId); -} - -bool PageContainer::selectPage(QString pageId) -{ - // now find what we want to have selected... - auto page = m_model->findPageEntryById(pageId); - QModelIndex index; - if (page) - { - index = m_proxyModel->mapFromSource(m_model->index(page->listIndex)); - } - if(!index.isValid()) - { - index = m_proxyModel->index(0, 0); - } - if (index.isValid()) - { - m_pageList->setCurrentIndex(index); - return true; - } - return false; -} - -void PageContainer::refreshContainer() -{ - m_proxyModel->invalidate(); - if(!m_currentPage->shouldDisplay()) - { - auto index = m_proxyModel->index(0, 0); - if(index.isValid()) - { - m_pageList->setCurrentIndex(index); - } - else - { - // FIXME: unhandled corner case: what to do when there's no page to select? - } - } -} - -void PageContainer::createUI() -{ - m_pageStack = new QStackedLayout; - m_pageList = new PageView; - m_header = new QLabel(); - m_iconHeader = new IconLabel(this, QIcon(), QSize(24, 24)); - - QFont headerLabelFont = m_header->font(); - headerLabelFont.setBold(true); - const int pointSize = headerLabelFont.pointSize(); - if (pointSize > 0) - headerLabelFont.setPointSize(pointSize + 2); - m_header->setFont(headerLabelFont); - - QHBoxLayout *headerHLayout = new QHBoxLayout; - const int leftMargin = MMC->style()->pixelMetric(QStyle::PM_LayoutLeftMargin); - headerHLayout->addSpacerItem(new QSpacerItem(leftMargin, 0, QSizePolicy::Fixed, QSizePolicy::Ignored)); - headerHLayout->addWidget(m_header); - headerHLayout->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Ignored)); - headerHLayout->addWidget(m_iconHeader); - const int rightMargin = MMC->style()->pixelMetric(QStyle::PM_LayoutRightMargin); - headerHLayout->addSpacerItem(new QSpacerItem(rightMargin, 0, QSizePolicy::Fixed, QSizePolicy::Ignored)); - headerHLayout->setContentsMargins(0, 6, 0, 0); - - m_pageStack->setMargin(0); - m_pageStack->addWidget(new QWidget(this)); - - m_layout = new QGridLayout; - m_layout->addLayout(headerHLayout, 0, 1, 1, 1); - m_layout->addWidget(m_pageList, 0, 0, 2, 1); - m_layout->addLayout(m_pageStack, 1, 1, 1, 1); - m_layout->setColumnStretch(1, 4); - m_layout->setContentsMargins(0,0,0,6); - setLayout(m_layout); -} - -void PageContainer::addButtons(QWidget *buttons) -{ - m_layout->addWidget(buttons, 2, 0, 1, 2); -} - -void PageContainer::addButtons(QLayout *buttons) -{ - m_layout->addLayout(buttons, 2, 0, 1, 2); -} - -void PageContainer::showPage(int row) -{ - if (m_currentPage) - { - m_currentPage->closed(); - } - if (row != -1) - { - m_currentPage = m_model->pages().at(row); - } - else - { - m_currentPage = nullptr; - } - if (m_currentPage) - { - m_pageStack->setCurrentIndex(m_currentPage->stackIndex); - m_header->setText(m_currentPage->displayName()); - m_iconHeader->setIcon(m_currentPage->icon()); - m_currentPage->opened(); - } - else - { - m_pageStack->setCurrentIndex(0); - m_header->setText(QString()); - m_iconHeader->setIcon(MMC->getThemedIcon("bug")); - } -} - -void PageContainer::help() -{ - if (m_currentPage) - { - QString pageId = m_currentPage->helpPage(); - if (pageId.isEmpty()) - return; - DesktopServices::openUrl(QUrl("https://github.com/MultiMC/MultiMC5/wiki/" + pageId)); - } -} - -void PageContainer::currentChanged(const QModelIndex ¤t) -{ - showPage(current.isValid() ? m_proxyModel->mapToSource(current).row() : -1); -} - -bool PageContainer::prepareToClose() -{ - if(!saveAll()) - { - return false; - } - if (m_currentPage) - { - m_currentPage->closed(); - } - return true; -} - -bool PageContainer::saveAll() -{ - for (auto page : m_model->pages()) - { - if (!page->apply()) - return false; - } - return true; -} diff --git a/application/widgets/PageContainer.h b/application/widgets/PageContainer.h deleted file mode 100644 index 976d34e9..00000000 --- a/application/widgets/PageContainer.h +++ /dev/null @@ -1,89 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QWidget> -#include <QModelIndex> - -#include "pages/BasePageProvider.h" -#include "pages/BasePageContainer.h" - -class QLayout; -class IconLabel; -class QSortFilterProxyModel; -class PageModel; -class QLabel; -class QListView; -class QLineEdit; -class QStackedLayout; -class QGridLayout; - -class PageContainer : public QWidget, public BasePageContainer -{ - Q_OBJECT -public: - explicit PageContainer(BasePageProvider *pageProvider, QString defaultId = QString(), - QWidget *parent = 0); - virtual ~PageContainer() {} - - void addButtons(QWidget * buttons); - void addButtons(QLayout * buttons); - /* - * Save any unsaved state and prepare to be closed. - * @return true if everything can be saved, false if there is something that requires attention - */ - bool prepareToClose(); - bool saveAll(); - - /* request close - used by individual pages */ - bool requestClose() override - { - if(m_container) - { - return m_container->requestClose(); - } - return false; - } - - virtual bool selectPage(QString pageId) override; - - void refreshContainer() override; - virtual void setParentContainer(BasePageContainer * container) - { - m_container = container; - }; - -private: - void createUI(); - -public slots: - void help(); - -private slots: - void currentChanged(const QModelIndex ¤t); - void showPage(int row); - -private: - BasePageContainer * m_container = nullptr; - BasePage * m_currentPage = 0; - QSortFilterProxyModel *m_proxyModel; - PageModel *m_model; - QStackedLayout *m_pageStack; - QListView *m_pageList; - QLabel *m_header; - IconLabel *m_iconHeader; - QGridLayout *m_layout; -}; diff --git a/application/widgets/PageContainer_p.h b/application/widgets/PageContainer_p.h deleted file mode 100644 index da1a66f4..00000000 --- a/application/widgets/PageContainer_p.h +++ /dev/null @@ -1,123 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QListView> -#include <QStyledItemDelegate> -#include <QEvent> -#include <QScrollBar> - -class BasePage; -const int pageIconSize = 24; - -class PageViewDelegate : public QStyledItemDelegate -{ -public: - PageViewDelegate(QObject *parent) : QStyledItemDelegate(parent) - { - } - QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const - { - QSize size = QStyledItemDelegate::sizeHint(option, index); - size.setHeight(qMax(size.height(), 32)); - return size; - } -}; - -class PageModel : public QAbstractListModel -{ -public: - PageModel(QObject *parent = 0) : QAbstractListModel(parent) - { - QPixmap empty(pageIconSize, pageIconSize); - empty.fill(Qt::transparent); - m_emptyIcon = QIcon(empty); - } - virtual ~PageModel() {} - - int rowCount(const QModelIndex &parent = QModelIndex()) const - { - return parent.isValid() ? 0 : m_pages.size(); - } - QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const - { - switch (role) - { - case Qt::DisplayRole: - return m_pages.at(index.row())->displayName(); - case Qt::DecorationRole: - { - QIcon icon = m_pages.at(index.row())->icon(); - if (icon.isNull()) - icon = m_emptyIcon; - // HACK: fixes icon stretching on windows. TODO: report Qt bug for this - return QIcon(icon.pixmap(QSize(48,48))); - } - } - return QVariant(); - } - - void setPages(const QList<BasePage *> &pages) - { - beginResetModel(); - m_pages = pages; - endResetModel(); - } - const QList<BasePage *> &pages() const - { - return m_pages; - } - - BasePage * findPageEntryById(QString id) - { - for(auto page: m_pages) - { - if (page->id() == id) - return page; - } - return nullptr; - } - - QList<BasePage *> m_pages; - QIcon m_emptyIcon; -}; - -class PageView : public QListView -{ -public: - PageView(QWidget *parent = 0) : QListView(parent) - { - setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding); - setItemDelegate(new PageViewDelegate(this)); - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - } - - virtual QSize sizeHint() const - { - int width = sizeHintForColumn(0) + frameWidth() * 2 + 5; - if (verticalScrollBar()->isVisible()) - width += verticalScrollBar()->width(); - return QSize(width, 100); - } - - virtual bool eventFilter(QObject *obj, QEvent *event) - { - if (obj == verticalScrollBar() && - (event->type() == QEvent::Show || event->type() == QEvent::Hide)) - updateGeometry(); - return QListView::eventFilter(obj, event); - } -}; diff --git a/application/widgets/ProgressWidget.cpp b/application/widgets/ProgressWidget.cpp deleted file mode 100644 index 911e555d..00000000 --- a/application/widgets/ProgressWidget.cpp +++ /dev/null @@ -1,73 +0,0 @@ -// Licensed under the Apache-2.0 license. See README.md for details. - -#include "ProgressWidget.h" -#include <QProgressBar> -#include <QLabel> -#include <QVBoxLayout> -#include <QEventLoop> - -#include "tasks/Task.h" - -ProgressWidget::ProgressWidget(QWidget *parent) - : QWidget(parent) -{ - m_label = new QLabel(this); - m_label->setWordWrap(true); - m_bar = new QProgressBar(this); - m_bar->setMinimum(0); - m_bar->setMaximum(100); - QVBoxLayout *layout = new QVBoxLayout(this); - layout->addWidget(m_label); - layout->addWidget(m_bar); - layout->addStretch(); - setLayout(layout); -} - -void ProgressWidget::start(std::shared_ptr<Task> task) -{ - if (m_task) - { - disconnect(m_task.get(), 0, this, 0); - } - m_task = task; - connect(m_task.get(), &Task::finished, this, &ProgressWidget::handleTaskFinish); - connect(m_task.get(), &Task::status, this, &ProgressWidget::handleTaskStatus); - connect(m_task.get(), &Task::progress, this, &ProgressWidget::handleTaskProgress); - connect(m_task.get(), &Task::destroyed, this, &ProgressWidget::taskDestroyed); - if (!m_task->isRunning()) - { - QMetaObject::invokeMethod(m_task.get(), "start", Qt::QueuedConnection); - } -} -bool ProgressWidget::exec(std::shared_ptr<Task> task) -{ - QEventLoop loop; - connect(task.get(), &Task::finished, &loop, &QEventLoop::quit); - start(task); - if (task->isRunning()) - { - loop.exec(); - } - return task->wasSuccessful(); -} - -void ProgressWidget::handleTaskFinish() -{ - if (!m_task->wasSuccessful()) - { - m_label->setText(m_task->failReason()); - } -} -void ProgressWidget::handleTaskStatus(const QString &status) -{ - m_label->setText(status); -} -void ProgressWidget::handleTaskProgress(qint64 current, qint64 total) -{ - m_bar->setMaximum(total); - m_bar->setValue(current); -} -void ProgressWidget::taskDestroyed() -{ - m_task = nullptr; -} diff --git a/application/widgets/ProgressWidget.h b/application/widgets/ProgressWidget.h deleted file mode 100644 index fa67748a..00000000 --- a/application/widgets/ProgressWidget.h +++ /dev/null @@ -1,32 +0,0 @@ -// Licensed under the Apache-2.0 license. See README.md for details. - -#pragma once - -#include <QWidget> -#include <memory> - -class Task; -class QProgressBar; -class QLabel; - -class ProgressWidget : public QWidget -{ - Q_OBJECT -public: - explicit ProgressWidget(QWidget *parent = nullptr); - -public slots: - void start(std::shared_ptr<Task> task); - bool exec(std::shared_ptr<Task> task); - -private slots: - void handleTaskFinish(); - void handleTaskStatus(const QString &status); - void handleTaskProgress(qint64 current, qint64 total); - void taskDestroyed(); - -private: - QLabel *m_label; - QProgressBar *m_bar; - std::shared_ptr<Task> m_task; -}; diff --git a/application/widgets/ServerStatus.cpp b/application/widgets/ServerStatus.cpp deleted file mode 100644 index 87c34f70..00000000 --- a/application/widgets/ServerStatus.cpp +++ /dev/null @@ -1,179 +0,0 @@ -#include "ServerStatus.h" -#include "LineSeparator.h" -#include "IconLabel.h" -#include "status/StatusChecker.h" -#include <DesktopServices.h> - -#include "MultiMC.h" - -#include <QHBoxLayout> -#include <QFrame> -#include <QLabel> -#include <QMap> -#include <QToolButton> -#include <QAction> - -class ClickableLabel : public QLabel -{ - Q_OBJECT -public: - ClickableLabel(QWidget *parent) : QLabel(parent) - { - setCursor(Qt::PointingHandCursor); - } - - ~ClickableLabel(){}; - -signals: - void clicked(); - -protected: - void mousePressEvent(QMouseEvent *event) - { - emit clicked(); - } -}; - -class ClickableIconLabel : public IconLabel -{ - Q_OBJECT -public: - ClickableIconLabel(QWidget *parent, QIcon icon, QSize size) : IconLabel(parent, icon, size) - { - setCursor(Qt::PointingHandCursor); - } - - ~ClickableIconLabel(){}; - -signals: - void clicked(); - -protected: - void mousePressEvent(QMouseEvent *event) - { - emit clicked(); - } -}; - -ServerStatus::ServerStatus(QWidget *parent, Qt::WindowFlags f) : QWidget(parent, f) -{ - layout = new QHBoxLayout(this); - layout->setContentsMargins(0, 0, 0, 0); - goodIcon = MMC->getThemedIcon("status-good"); - yellowIcon = MMC->getThemedIcon("status-yellow"); - badIcon = MMC->getThemedIcon("status-bad"); - - addStatus("authserver.mojang.com", tr("Auth")); - addLine(); - addStatus("session.minecraft.net", tr("Session")); - addLine(); - addStatus("textures.minecraft.net", tr("Skins")); - addLine(); - addStatus("api.mojang.com", tr("API")); - - m_statusRefresh = new QToolButton(this); - m_statusRefresh->setCheckable(true); - m_statusRefresh->setToolButtonStyle(Qt::ToolButtonIconOnly); - m_statusRefresh->setIcon(MMC->getThemedIcon("refresh")); - layout->addWidget(m_statusRefresh); - - setLayout(layout); - - // Start status checker - m_statusChecker.reset(new StatusChecker()); - { - auto reloader = m_statusChecker.get(); - connect(reloader, &StatusChecker::statusChanged, this, &ServerStatus::StatusChanged); - connect(reloader, &StatusChecker::statusLoading, this, &ServerStatus::StatusReloading); - connect(m_statusRefresh, &QAbstractButton::clicked, this, &ServerStatus::reloadStatus); - m_statusChecker->startTimer(60000); - reloadStatus(); - } -} - -ServerStatus::~ServerStatus() -{ -} - -void ServerStatus::reloadStatus() -{ - m_statusChecker->reloadStatus(); -} - -void ServerStatus::addLine() -{ - layout->addWidget(new LineSeparator(this, Qt::Vertical)); -} - -void ServerStatus::addStatus(QString key, QString name) -{ - { - auto label = new ClickableIconLabel(this, badIcon, QSize(16, 16)); - label->setToolTip(key); - serverLabels[key] = label; - layout->addWidget(label); - connect(label,SIGNAL(clicked()),SLOT(clicked())); - } - { - auto label = new ClickableLabel(this); - label->setText(name); - label->setToolTip(key); - layout->addWidget(label); - connect(label,SIGNAL(clicked()),SLOT(clicked())); - } -} - -void ServerStatus::clicked() -{ - DesktopServices::openUrl(QUrl("https://github.com/MultiMC/MultiMC5/wiki/Mojang-Services-Status")); -} - -void ServerStatus::setStatus(QString key, int value) -{ - if (!serverLabels.contains(key)) - return; - IconLabel *label = serverLabels[key]; - switch(value) - { - case 0: - label->setIcon(goodIcon); - break; - case 1: - label->setIcon(yellowIcon); - break; - default: - case 2: - label->setIcon(badIcon); - break; - } -} - -void ServerStatus::StatusChanged(const QMap<QString, QString> statusEntries) -{ - auto convertStatus = [&](QString status)->int - { - if (status == "green") - return 0; - else if (status == "yellow") - return 1; - else if (status == "red") - return 2; - return 2; - } - ; - auto iter = statusEntries.begin(); - while (iter != statusEntries.end()) - { - QString key = iter.key(); - auto value = convertStatus(iter.value()); - setStatus(key, value); - iter++; - } -} - -void ServerStatus::StatusReloading(bool is_reloading) -{ - m_statusRefresh->setChecked(is_reloading); -} - -#include "ServerStatus.moc" diff --git a/application/widgets/ServerStatus.h b/application/widgets/ServerStatus.h deleted file mode 100644 index e1e70dfb..00000000 --- a/application/widgets/ServerStatus.h +++ /dev/null @@ -1,40 +0,0 @@ -#pragma once -#include <QString> -#include <QWidget> -#include <QMap> -#include <QIcon> -#include <memory> - -class IconLabel; -class QToolButton; -class QHBoxLayout; -class StatusChecker; - -class ServerStatus: public QWidget -{ - Q_OBJECT -public: - explicit ServerStatus(QWidget *parent = nullptr, Qt::WindowFlags f = 0); - virtual ~ServerStatus(); - -public slots: - void reloadStatus(); - void StatusChanged(const QMap<QString, QString> statuses); - void StatusReloading(bool is_reloading); - -private slots: - void clicked(); - -private: /* methods */ - void addLine(); - void addStatus(QString key, QString name); - void setStatus(QString key, int value); -private: /* data */ - QHBoxLayout * layout = nullptr; - QToolButton *m_statusRefresh = nullptr; - QMap<QString, IconLabel *> serverLabels; - QIcon goodIcon; - QIcon yellowIcon; - QIcon badIcon; - std::shared_ptr<StatusChecker> m_statusChecker; -}; diff --git a/application/widgets/VersionListView.cpp b/application/widgets/VersionListView.cpp deleted file mode 100644 index 8424fedd..00000000 --- a/application/widgets/VersionListView.cpp +++ /dev/null @@ -1,163 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <QHeaderView> -#include <QApplication> -#include <QMouseEvent> -#include <QDrag> -#include <QPainter> -#include "VersionListView.h" -#include "Common.h" - -VersionListView::VersionListView(QWidget *parent) - :QTreeView ( parent ) -{ - m_emptyString = tr("No versions are currently available."); -} - -void VersionListView::rowsInserted(const QModelIndex &parent, int start, int end) -{ - m_itemCount += end-start+1; - updateEmptyViewPort(); - QTreeView::rowsInserted(parent, start, end); -} - - -void VersionListView::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) -{ - m_itemCount -= end-start+1; - updateEmptyViewPort(); - QTreeView::rowsInserted(parent, start, end); -} - -void VersionListView::setModel(QAbstractItemModel *model) -{ - m_itemCount = model->rowCount(); - updateEmptyViewPort(); - QTreeView::setModel(model); -} - -void VersionListView::reset() -{ - if(model()) - { - m_itemCount = model()->rowCount(); - } - else { - m_itemCount = 0; - } - updateEmptyViewPort(); - QTreeView::reset(); -} - -void VersionListView::setEmptyString(QString emptyString) -{ - m_emptyString = emptyString; - updateEmptyViewPort(); -} - -void VersionListView::setEmptyErrorString(QString emptyErrorString) -{ - m_emptyErrorString = emptyErrorString; - updateEmptyViewPort(); -} - -void VersionListView::setEmptyMode(VersionListView::EmptyMode mode) -{ - m_emptyMode = mode; - updateEmptyViewPort(); -} - -void VersionListView::updateEmptyViewPort() -{ -#ifndef QT_NO_ACCESSIBILITY - setAccessibleDescription(currentEmptyString()); -#endif /* !QT_NO_ACCESSIBILITY */ - - if(!m_itemCount) - { - viewport()->update(); - } -} - -void VersionListView::paintEvent(QPaintEvent *event) -{ - if(m_itemCount) - { - QTreeView::paintEvent(event); - } - else - { - paintInfoLabel(event); - } -} - -QString VersionListView::currentEmptyString() const -{ - if(m_itemCount) { - return QString(); - } - switch(m_emptyMode) - { - default: - case VersionListView::Empty: - return QString(); - case VersionListView::String: - return m_emptyString; - case VersionListView::ErrorString: - return m_emptyErrorString; - } -} - - -void VersionListView::paintInfoLabel(QPaintEvent *event) const -{ - QString emptyString = currentEmptyString(); - - //calculate the rect for the overlay - QPainter painter(viewport()); - painter.setRenderHint(QPainter::Antialiasing, true); - QFont font("sans", 20); - font.setBold(true); - - QRect bounds = viewport()->geometry(); - bounds.moveTop(0); - auto innerBounds = bounds; - innerBounds.adjust(10, 10, -10, -10); - - QColor background = QApplication::palette().color(QPalette::Foreground); - QColor foreground = QApplication::palette().color(QPalette::Base); - foreground.setAlpha(190); - painter.setFont(font); - auto fontMetrics = painter.fontMetrics(); - auto textRect = fontMetrics.boundingRect(innerBounds, Qt::AlignHCenter | Qt::TextWordWrap, emptyString); - textRect.moveCenter(bounds.center()); - - auto wrapRect = textRect; - wrapRect.adjust(-10, -10, 10, 10); - - //check if we are allowed to draw in our area - if (!event->rect().intersects(wrapRect)) { - return; - } - - painter.setBrush(QBrush(background)); - painter.setPen(foreground); - painter.drawRoundedRect(wrapRect, 5.0, 5.0); - - painter.setPen(foreground); - painter.setFont(font); - painter.drawText(textRect, Qt::AlignHCenter | Qt::TextWordWrap, emptyString); -} diff --git a/application/widgets/VersionListView.h b/application/widgets/VersionListView.h deleted file mode 100644 index 4153b314..00000000 --- a/application/widgets/VersionListView.h +++ /dev/null @@ -1,56 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once -#include <QTreeView> - -class VersionListView : public QTreeView -{ - Q_OBJECT -public: - - explicit VersionListView(QWidget *parent = 0); - virtual void paintEvent(QPaintEvent *event) override; - virtual void setModel(QAbstractItemModel* model) override; - - enum EmptyMode - { - Empty, - String, - ErrorString - }; - - void setEmptyString(QString emptyString); - void setEmptyErrorString(QString emptyErrorString); - void setEmptyMode(EmptyMode mode); - -public slots: - virtual void reset() override; - -protected slots: - virtual void rowsAboutToBeRemoved(const QModelIndex & parent, int start, int end) override; - virtual void rowsInserted(const QModelIndex &parent, int start, int end) override; - -private: /* methods */ - void paintInfoLabel(QPaintEvent *event) const; - void updateEmptyViewPort(); - QString currentEmptyString() const; - -private: /* variables */ - int m_itemCount = 0; - QString m_emptyString; - QString m_emptyErrorString; - EmptyMode m_emptyMode = Empty; -}; diff --git a/application/widgets/VersionSelectWidget.cpp b/application/widgets/VersionSelectWidget.cpp deleted file mode 100644 index 9925a6b4..00000000 --- a/application/widgets/VersionSelectWidget.cpp +++ /dev/null @@ -1,202 +0,0 @@ -#include "VersionSelectWidget.h" -#include <QProgressBar> -#include <QVBoxLayout> -#include "VersionListView.h" -#include <QHeaderView> -#include <VersionProxyModel.h> -#include <dialogs/CustomMessageBox.h> - -VersionSelectWidget::VersionSelectWidget(QWidget* parent) - : QWidget(parent) -{ - setObjectName(QStringLiteral("VersionSelectWidget")); - verticalLayout = new QVBoxLayout(this); - verticalLayout->setObjectName(QStringLiteral("verticalLayout")); - verticalLayout->setContentsMargins(0, 0, 0, 0); - - m_proxyModel = new VersionProxyModel(this); - - listView = new VersionListView(this); - listView->setObjectName(QStringLiteral("listView")); - listView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - listView->setAlternatingRowColors(true); - listView->setRootIsDecorated(false); - listView->setItemsExpandable(false); - listView->setWordWrap(true); - listView->header()->setCascadingSectionResizes(true); - listView->header()->setStretchLastSection(false); - listView->setModel(m_proxyModel); - verticalLayout->addWidget(listView); - - sneakyProgressBar = new QProgressBar(this); - sneakyProgressBar->setObjectName(QStringLiteral("sneakyProgressBar")); - sneakyProgressBar->setFormat(QStringLiteral("%p%")); - verticalLayout->addWidget(sneakyProgressBar); - sneakyProgressBar->setHidden(true); - connect(listView->selectionModel(), &QItemSelectionModel::currentRowChanged, this, &VersionSelectWidget::currentRowChanged); - - QMetaObject::connectSlotsByName(this); -} - -void VersionSelectWidget::setCurrentVersion(const QString& version) -{ - m_currentVersion = version; - m_proxyModel->setCurrentVersion(version); -} - -void VersionSelectWidget::setEmptyString(QString emptyString) -{ - listView->setEmptyString(emptyString); -} - -void VersionSelectWidget::setEmptyErrorString(QString emptyErrorString) -{ - listView->setEmptyErrorString(emptyErrorString); -} - -VersionSelectWidget::~VersionSelectWidget() -{ -} - -void VersionSelectWidget::setResizeOn(int column) -{ - listView->header()->setSectionResizeMode(resizeOnColumn, QHeaderView::ResizeToContents); - resizeOnColumn = column; - listView->header()->setSectionResizeMode(resizeOnColumn, QHeaderView::Stretch); -} - -void VersionSelectWidget::initialize(BaseVersionList *vlist) -{ - m_vlist = vlist; - m_proxyModel->setSourceModel(vlist); - listView->header()->setSectionResizeMode(QHeaderView::ResizeToContents); - listView->header()->setSectionResizeMode(resizeOnColumn, QHeaderView::Stretch); - - if (!m_vlist->isLoaded()) - { - loadList(); - } - else - { - if (m_proxyModel->rowCount() == 0) - { - listView->setEmptyMode(VersionListView::String); - } - preselect(); - } -} - -void VersionSelectWidget::closeEvent(QCloseEvent * event) -{ - QWidget::closeEvent(event); -} - -void VersionSelectWidget::loadList() -{ - auto newTask = m_vlist->getLoadTask(); - if (!newTask) - { - return; - } - loadTask = newTask.get(); - connect(loadTask, &Task::succeeded, this, &VersionSelectWidget::onTaskSucceeded); - connect(loadTask, &Task::failed, this, &VersionSelectWidget::onTaskFailed); - connect(loadTask, &Task::progress, this, &VersionSelectWidget::changeProgress); - if(!loadTask->isRunning()) - { - loadTask->start(); - } - sneakyProgressBar->setHidden(false); -} - -void VersionSelectWidget::onTaskSucceeded() -{ - if (m_proxyModel->rowCount() == 0) - { - listView->setEmptyMode(VersionListView::String); - } - sneakyProgressBar->setHidden(true); - preselect(); - loadTask = nullptr; -} - -void VersionSelectWidget::onTaskFailed(const QString& reason) -{ - CustomMessageBox::selectable(this, tr("Error"), tr("List update failed:\n%1").arg(reason), QMessageBox::Warning)->show(); - onTaskSucceeded(); -} - -void VersionSelectWidget::changeProgress(qint64 current, qint64 total) -{ - sneakyProgressBar->setMaximum(total); - sneakyProgressBar->setValue(current); -} - -void VersionSelectWidget::currentRowChanged(const QModelIndex& current, const QModelIndex&) -{ - auto variant = m_proxyModel->data(current, BaseVersionList::VersionPointerRole); - emit selectedVersionChanged(variant.value<BaseVersionPtr>()); -} - -void VersionSelectWidget::preselect() -{ - if(preselectedAlready) - return; - selectCurrent(); - if(preselectedAlready) - return; - selectRecommended(); -} - -void VersionSelectWidget::selectCurrent() -{ - if(m_currentVersion.isEmpty()) - { - return; - } - auto idx = m_proxyModel->getVersion(m_currentVersion); - if(idx.isValid()) - { - preselectedAlready = true; - listView->selectionModel()->setCurrentIndex(idx,QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows); - listView->scrollTo(idx, QAbstractItemView::PositionAtCenter); - } -} - -void VersionSelectWidget::selectRecommended() -{ - auto idx = m_proxyModel->getRecommended(); - if(idx.isValid()) - { - preselectedAlready = true; - listView->selectionModel()->setCurrentIndex(idx,QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows); - listView->scrollTo(idx, QAbstractItemView::PositionAtCenter); - } -} - -bool VersionSelectWidget::hasVersions() const -{ - return m_proxyModel->rowCount(QModelIndex()) != 0; -} - -BaseVersionPtr VersionSelectWidget::selectedVersion() const -{ - auto currentIndex = listView->selectionModel()->currentIndex(); - auto variant = m_proxyModel->data(currentIndex, BaseVersionList::VersionPointerRole); - return variant.value<BaseVersionPtr>(); -} - -void VersionSelectWidget::setExactFilter(BaseVersionList::ModelRoles role, QString filter) -{ - m_proxyModel->setFilter(role, new ExactFilter(filter)); -} - -void VersionSelectWidget::setFuzzyFilter(BaseVersionList::ModelRoles role, QString filter) -{ - m_proxyModel->setFilter(role, new ContainsFilter(filter)); -} - -void VersionSelectWidget::setFilter(BaseVersionList::ModelRoles role, Filter *filter) -{ - m_proxyModel->setFilter(role, filter); -} diff --git a/application/widgets/VersionSelectWidget.h b/application/widgets/VersionSelectWidget.h deleted file mode 100644 index 0a649408..00000000 --- a/application/widgets/VersionSelectWidget.h +++ /dev/null @@ -1,81 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QWidget> -#include <QSortFilterProxyModel> -#include "BaseVersionList.h" - -class VersionProxyModel; -class VersionListView; -class QVBoxLayout; -class QProgressBar; -class Filter; - -class VersionSelectWidget: public QWidget -{ - Q_OBJECT -public: - explicit VersionSelectWidget(QWidget *parent = 0); - ~VersionSelectWidget(); - - //! loads the list if needed. - void initialize(BaseVersionList *vlist); - - //! Starts a task that loads the list. - void loadList(); - - bool hasVersions() const; - BaseVersionPtr selectedVersion() const; - void selectRecommended(); - void selectCurrent(); - - void setCurrentVersion(const QString & version); - void setFuzzyFilter(BaseVersionList::ModelRoles role, QString filter); - void setExactFilter(BaseVersionList::ModelRoles role, QString filter); - void setFilter(BaseVersionList::ModelRoles role, Filter *filter); - void setEmptyString(QString emptyString); - void setEmptyErrorString(QString emptyErrorString); - void setResizeOn(int column); - -signals: - void selectedVersionChanged(BaseVersionPtr version); - -protected: - virtual void closeEvent ( QCloseEvent* ); - -private slots: - void onTaskSucceeded(); - void onTaskFailed(const QString &reason); - void changeProgress(qint64 current, qint64 total); - void currentRowChanged(const QModelIndex ¤t, const QModelIndex &); - -private: - void preselect(); - -private: - QString m_currentVersion; - BaseVersionList *m_vlist = nullptr; - VersionProxyModel *m_proxyModel = nullptr; - int resizeOnColumn = 0; - Task * loadTask; - bool preselectedAlready = false; - -private: - QVBoxLayout *verticalLayout = nullptr; - VersionListView *listView = nullptr; - QProgressBar *sneakyProgressBar = nullptr; -}; diff --git a/application/widgets/WideBar.cpp b/application/widgets/WideBar.cpp deleted file mode 100644 index cbd6c617..00000000 --- a/application/widgets/WideBar.cpp +++ /dev/null @@ -1,116 +0,0 @@ -#include "WideBar.h" -#include <QToolButton> -#include <QMenu> - -class ActionButton : public QToolButton -{ - Q_OBJECT -public: - ActionButton(QAction * action, QWidget * parent = 0) : QToolButton(parent), m_action(action) { - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); - connect(action, &QAction::changed, this, &ActionButton::actionChanged); - connect(this, &ActionButton::clicked, action, &QAction::trigger); - actionChanged(); - }; -private slots: - void actionChanged() { - setEnabled(m_action->isEnabled()); - setChecked(m_action->isChecked()); - setCheckable(m_action->isCheckable()); - setText(m_action->text()); - setIcon(m_action->icon()); - setToolTip(m_action->toolTip()); - setHidden(!m_action->isVisible()); - setFocusPolicy(Qt::NoFocus); - } -private: - QAction * m_action; -}; - - -WideBar::WideBar(const QString& title, QWidget* parent) : QToolBar(title, parent) -{ - setFloatable(false); - setMovable(false); -} - -WideBar::WideBar(QWidget* parent) : QToolBar(parent) -{ - setFloatable(false); - setMovable(false); -} - -struct WideBar::BarEntry { - enum Type { - None, - Action, - Separator, - Spacer - } type = None; - QAction *qAction = nullptr; - QAction *wideAction = nullptr; -}; - - -WideBar::~WideBar() -{ - for(auto *iter: m_entries) { - delete iter; - } -} - -void WideBar::addAction(QAction* action) -{ - auto entry = new BarEntry(); - entry->qAction = addWidget(new ActionButton(action, this)); - entry->wideAction = action; - entry->type = BarEntry::Action; - m_entries.push_back(entry); -} - -void WideBar::addSeparator() -{ - auto entry = new BarEntry(); - entry->qAction = QToolBar::addSeparator(); - entry->type = BarEntry::Separator; - m_entries.push_back(entry); -} - -void WideBar::insertSpacer(QAction* action) -{ - auto iter = std::find_if(m_entries.begin(), m_entries.end(), [action](BarEntry * entry) { - return entry->wideAction == action; - }); - if(iter == m_entries.end()) { - return; - } - QWidget* spacer = new QWidget(); - spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - - auto entry = new BarEntry(); - entry->qAction = insertWidget((*iter)->qAction, spacer); - entry->type = BarEntry::Spacer; - m_entries.insert(iter, entry); -} - -QMenu * WideBar::createContextMenu(QWidget *parent, const QString & title) -{ - QMenu *contextMenu = new QMenu(title, parent); - for(auto & item: m_entries) { - switch(item->type) { - default: - case BarEntry::None: - break; - case BarEntry::Separator: - case BarEntry::Spacer: - contextMenu->addSeparator(); - break; - case BarEntry::Action: - contextMenu->addAction(item->wideAction); - break; - } - } - return contextMenu; -} - -#include "WideBar.moc" diff --git a/application/widgets/WideBar.h b/application/widgets/WideBar.h deleted file mode 100644 index d1b8cbe7..00000000 --- a/application/widgets/WideBar.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#include <QToolBar> -#include <QAction> -#include <QMap> - -class QMenu; - -class WideBar : public QToolBar -{ - Q_OBJECT - -public: - explicit WideBar(const QString &title, QWidget * parent = nullptr); - explicit WideBar(QWidget * parent = nullptr); - virtual ~WideBar(); - - void addAction(QAction *action); - void addSeparator(); - void insertSpacer(QAction *action); - QMenu *createContextMenu(QWidget *parent = nullptr, const QString & title = QString()); - -private: - struct BarEntry; - QList<BarEntry *> m_entries; -}; |