diff options
| author | LostDragonist <lost.dragonist@gmail.com> | 2018-12-20 14:33:08 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-12-20 14:33:08 -0600 |
| commit | ed67ac211306bee2067178ace1a0a7fbcd0bea1b (patch) | |
| tree | 8fe31503ba20a436457c8c94d61f953b4aa067b4 | |
| parent | 2232bdfc779b8575c8374a723d4d02a2b41fb352 (diff) | |
| parent | 9a33dc148054443cb0efd5916ff758fca5bc09e3 (diff) | |
Merge pull request #586 from ModOrganizer2/Develop
Release 2.1.6
286 files changed, 23209 insertions, 3588 deletions
diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..16be7907 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +root = true + +[*.cpp] +indent_style = space +indent_size = 2 +insert_final_newline = true + +[*.h] +indent_style = space +indent_size = 2 +insert_final_newline = true + +[*.ui] +indent_style = space +indent_size = 2 +insert_final_newline = true @@ -20,7 +20,7 @@ Through the work of a few people of the community MO2 has come quite far, now it ## Reporting Issues:
Issues should be reported to the GitHub page or on the open discord server: [ModOrganizerDevs](https://discord.gg/vD2ZbfX). Here is also where dev builds are tested, bugs are reported and investigated, suggestions are discussed and a lot more.
-Credits to Tannin, LePresidente, Silarn, erasmux, AL12 and many others for the development.
+Credits to Tannin, LePresidente, Silarn, erasmux, AL12, LostDragonist, AnyOldName3 and many others for the development.
## Download Location
@@ -49,6 +49,7 @@ Here is a complete list: * https://github.com/Modorganizer2/modorganizer-check_fnis
* https://github.com/Modorganizer2/modorganizer-diagnose_basic
* https://github.com/Modorganizer2/modorganizer-esptk
+* https://github.com/ModOrganizer2/modorganizer-fnistool
* https://github.com/Modorganizer2/modorganizer-helper
* https://github.com/Modorganizer2/modorganizer-game_fallout3
* https://github.com/Modorganizer2/modorganizer-game_fallout4
@@ -60,6 +61,7 @@ Here is a complete list: * https://github.com/Modorganizer2/modorganizer-game_oblivion
* https://github.com/Modorganizer2/modorganizer-game_skyrim
* https://github.com/Modorganizer2/modorganizer-game_skyrimSE
+* https://github.com/ModOrganizer2/modorganizer-game_skyrimVR
* https://github.com/Modorganizer2/modorganizer-game_ttw
* https://github.com/Modorganizer2/modorganizer-installer_bain
* https://github.com/Modorganizer2/modorganizer-installer_bundle
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 77ee4dfc..3f004ddc 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -37,6 +37,7 @@ SET(organizer_SRCS modinfoforeign.cpp modinfooverwrite.cpp modinforegular.cpp + modinfoseparator.cpp modinfowithconflictinfo.cpp messagedialog.cpp mainwindow.cpp @@ -90,6 +91,7 @@ SET(organizer_SRCS usvfsconnector.cpp eventfilter.cpp moshortcut.cpp + listdialog.cpp shared/windows_error.cpp shared/error_report.cpp @@ -128,6 +130,7 @@ SET(organizer_HDRS modinfoforeign.h modinfooverwrite.h modinforegular.h + modinfoseparator.h modinfowithconflictinfo.h messagedialog.h mainwindow.h @@ -183,6 +186,7 @@ SET(organizer_HDRS eventfilter.h descriptionpage.h moshortcut.h + listdialog.h shared/windows_error.h shared/error_report.h @@ -223,6 +227,7 @@ SET(organizer_UIS previewdialog.ui browserdialog.ui aboutdialog.ui + listdialog.ui ) SET(organizer_QRCS @@ -288,7 +293,8 @@ INCLUDE_DIRECTORIES(${project_path}/uibase/src ${project_path}/esptk/src ${project_path}/archive/src ${project_path}/../usvfs/include - ${project_path}/game_gamebryo/src + ${project_path}/game_gamebryo/src/gamebryo + ${project_path}/game_gamebryo/src/creation ${project_path}/game_features/src ${project_path}/githubpp/src ${LZ4_ROOT}/include) diff --git a/src/categories.h b/src/categories.h index 474a1440..48e0b44b 100644 --- a/src/categories.h +++ b/src/categories.h @@ -47,8 +47,10 @@ public: static const int CATEGORY_SPECIAL_NOCATEGORY = 10003;
static const int CATEGORY_SPECIAL_CONFLICT = 10004;
static const int CATEGORY_SPECIAL_NOTENDORSED = 10005;
- static const int CATEGORY_SPECIAL_MANAGED = 10006;
- static const int CATEGORY_SPECIAL_UNMANAGED = 10007;
+ static const int CATEGORY_SPECIAL_BACKUP = 10006;
+ static const int CATEGORY_SPECIAL_MANAGED = 10007;
+ static const int CATEGORY_SPECIAL_UNMANAGED = 10008;
+
public:
diff --git a/src/installationmanager.cpp b/src/installationmanager.cpp index fead2bc4..76b1e086 100644 --- a/src/installationmanager.cpp +++ b/src/installationmanager.cpp @@ -1,917 +1,928 @@ -/*
-Copyright (C) 2012 Sebastian Herbord. All rights reserved.
-
-This file is part of Mod Organizer.
-
-Mod Organizer is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-Mod Organizer is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "installationmanager.h"
-
-#include "utility.h"
-#include "report.h"
-#include "categories.h"
-#include "questionboxmemory.h"
-#include "settings.h"
-#include "queryoverwritedialog.h"
-#include "messagedialog.h"
-#include "iplugininstallersimple.h"
-#include "iplugininstallercustom.h"
-#include "nexusinterface.h"
-#include "selectiondialog.h"
-#include "modinfo.h"
-#include <scopeguard.h>
-#include <installationtester.h>
-#include <utility.h>
-#include <scopeguard.h>
-
-#include <QFileInfo>
-#include <QLibrary>
-#include <QInputDialog>
-#include <QRegExp>
-#include <QDir>
-#include <QMessageBox>
-#include <QSettings>
-#include <QPushButton>
-#include <QApplication>
-#include <QDateTime>
-#include <QDirIterator>
-#include <QDebug>
-#include <QTextDocument>
-#include <QtConcurrent/QtConcurrentRun>
-
-#include <Shellapi.h>
-
-#include <boost/assign.hpp>
-#include <boost/scoped_ptr.hpp>
-
-
-using namespace MOBase;
-using namespace MOShared;
-
-
-typedef Archive* (*CreateArchiveType)();
-
-
-
-template <typename T>
-static T resolveFunction(QLibrary &lib, const char *name)
-{
- T temp = reinterpret_cast<T>(lib.resolve(name));
- if (temp == nullptr) {
- throw std::runtime_error(QObject::tr("invalid 7-zip32.dll: %1")
- .arg(lib.errorString())
- .toLatin1()
- .constData());
- }
- return temp;
-}
-
-InstallationManager::InstallationManager()
- : m_ParentWidget(nullptr),
- m_SupportedExtensions({"zip", "rar", "7z", "fomod", "001"}) {
- QLibrary archiveLib(QCoreApplication::applicationDirPath() +
- "\\dlls\\archive.dll");
- if (!archiveLib.load()) {
- throw MyException(QObject::tr("archive.dll not loaded: \"%1\"")
- .arg(archiveLib.errorString()));
- }
-
- CreateArchiveType CreateArchiveFunc
- = resolveFunction<CreateArchiveType>(archiveLib, "CreateArchive");
-
- m_ArchiveHandler = CreateArchiveFunc();
- if (!m_ArchiveHandler->isValid()) {
- throw MyException(getErrorString(m_ArchiveHandler->getLastError()));
- }
-}
-
-InstallationManager::~InstallationManager()
-{
- delete m_ArchiveHandler;
-}
-
-void InstallationManager::setParentWidget(QWidget *widget)
-{
- for (IPluginInstaller *installer : m_Installers) {
- installer->setParentWidget(widget);
- }
-}
-
-void InstallationManager::setURL(QString const &url)
-{
- m_URL = url;
-}
-
-void InstallationManager::queryPassword(QString *password)
-{
- *password = QInputDialog::getText(nullptr, tr("Password required"),
- tr("Password"), QLineEdit::Password);
-}
-
-void InstallationManager::mapToArchive(const DirectoryTree::Node *node, QString path, FileData * const *data)
-{
- if (path.length() > 0) {
- // when using a long windows path (starting with \\?\) we apparently can have redundant
- // . components in the path. This wasn't a problem with "regular" path names.
- if (path == ".") {
- path.clear();
- } else {
- path.append("\\");
- }
- }
-
- for (DirectoryTree::const_leaf_iterator iter = node->leafsBegin(); iter != node->leafsEnd(); ++iter) {
- data[iter->getIndex()]->addOutputFileName(path + iter->getName().toQString());
- }
-
- for (DirectoryTree::const_node_iterator iter = node->nodesBegin(); iter != node->nodesEnd(); ++iter) {
- QString temp = path + (*iter)->getData().name.toQString();
- if ((*iter)->getData().index != -1) {
- data[(*iter)->getData().index]->addOutputFileName(temp);
- }
- mapToArchive(*iter, temp, data);
- }
-}
-
-
-void InstallationManager::mapToArchive(const DirectoryTree::Node *baseNode)
-{
- FileData* const *data;
- size_t size;
- m_ArchiveHandler->getFileList(data, size);
-
- mapToArchive(baseNode, "", data);
-}
-
-
-bool InstallationManager::unpackSingleFile(const QString &fileName)
-{
- FileData* const *data;
- size_t size;
- m_ArchiveHandler->getFileList(data, size);
-
- QString baseName = QFileInfo(fileName).fileName();
-
- bool available = false;
- for (size_t i = 0; i < size; ++i) {
- if (data[i]->getFileName().compare(fileName, Qt::CaseInsensitive) == 0) {
- available = true;
- data[i]->addOutputFileName(baseName);
- m_TempFilesToDelete.insert(baseName);
- }
- }
-
- if (!available) {
- return false;
- }
-
- m_InstallationProgress = new QProgressDialog(m_ParentWidget);
- ON_BLOCK_EXIT([this] () {
- m_InstallationProgress->hide();
- m_InstallationProgress->deleteLater();
- m_InstallationProgress = nullptr;
- m_Progress = 0;
- });
- m_InstallationProgress->setWindowFlags(
- m_InstallationProgress->windowFlags() & ~Qt::WindowContextHelpButtonHint);
-
- m_InstallationProgress->setWindowTitle(tr("Extracting files"));
- m_InstallationProgress->setWindowModality(Qt::WindowModal);
- m_InstallationProgress->setFixedSize(600, 100);
- m_InstallationProgress->show();
-
- QFuture<bool> future = QtConcurrent::run([&]() -> bool {
- return m_ArchiveHandler->extract(
- QDir::tempPath(),
- new MethodCallback<InstallationManager, void, float>(this, &InstallationManager::updateProgress),
- nullptr,
- new MethodCallback<InstallationManager, void, QString const &>(this, &InstallationManager::report7ZipError)
- );
- });
- do {
- if (m_Progress != m_InstallationProgress->value())
- m_InstallationProgress->setValue(m_Progress);
- QCoreApplication::processEvents();
- } while (!future.isFinished() || m_InstallationProgress->isVisible());
- bool res = future.result();
-
- return res;
-}
-
-
-QString InstallationManager::extractFile(const QString &fileName)
-{
- if (unpackSingleFile(fileName)) {
- return QDir::tempPath() + "/" + QFileInfo(fileName).fileName();
- } else {
- return QString();
- }
-}
-
-
-static QString canonicalize(const QString &name)
-{
- QString result(name);
- if ((result.startsWith('/')) ||
- (result.startsWith('\\'))) {
- result.remove(0, 1);
- }
- result.replace('/', '\\');
-
- return result;
-}
-
-
-QStringList InstallationManager::extractFiles(const QStringList &filesOrig, bool flatten)
-{
- QStringList files;
-
- for (const QString &file : filesOrig) {
- files.append(canonicalize(file));
- }
-
- QStringList result;
-
- FileData* const *data;
- size_t size;
- m_ArchiveHandler->getFileList(data, size);
-
- for (size_t i = 0; i < size; ++i) {
- //FIXME Use qstring all the way through
- if (files.contains(data[i]->getFileName(), Qt::CaseInsensitive)) {
- std::wstring temp = data[i]->getFileName().toStdWString();
- wchar_t const * const origFile = temp.c_str();
- const wchar_t *targetFile = origFile;
- //Note: I don't think 'flatten' is ever set to true. so this code
- //might never be executed
- if (flatten) {
- targetFile = wcsrchr(origFile/*data[i]->getFileName()*/, '\\');
- if (targetFile == nullptr) {
- targetFile = wcsrchr(origFile/*data[i]->getFileName()*/, '/');
- }
- if (targetFile == nullptr) {
- qCritical() << "Failed to find backslash in " << data[i]->getFileName();
- continue;
- } else {
- // skip the slash
- ++targetFile;
- }
- }
- data[i]->addOutputFileName(ToQString(targetFile));
-
- result.append(QDir::tempPath().append("/").append(ToQString(targetFile)));
-
- m_TempFilesToDelete.insert(ToQString(targetFile));
- }
- }
-
- m_InstallationProgress = new QProgressDialog(m_ParentWidget);
- ON_BLOCK_EXIT([this] () {
- m_InstallationProgress->hide();
- m_InstallationProgress->deleteLater();
- m_InstallationProgress = nullptr;
- m_Progress = 0;
- });
- m_InstallationProgress->setWindowFlags(
- m_InstallationProgress->windowFlags() & (~Qt::WindowContextHelpButtonHint));
- m_InstallationProgress->setWindowTitle(tr("Extracting files"));
- m_InstallationProgress->setWindowModality(Qt::WindowModal);
- m_InstallationProgress->setFixedSize(600, 100);
- m_InstallationProgress->show();
-
- // unpack only the files we need for the installer
- QFuture<bool> future = QtConcurrent::run([&]() -> bool {
- return m_ArchiveHandler->extract(
- QDir::tempPath(),
- new MethodCallback<InstallationManager, void, float>(this, &InstallationManager::updateProgress),
- nullptr,
- new MethodCallback<InstallationManager, void, QString const &>(this, &InstallationManager::report7ZipError)
- );
- });
- do {
- if (m_Progress != m_InstallationProgress->value())
- m_InstallationProgress->setValue(m_Progress);
- QCoreApplication::processEvents();
- } while (!future.isFinished() || m_InstallationProgress->isVisible());
- if (!future.result()) {
- throw MyException(QString("extracting failed (%1)").arg(m_ArchiveHandler->getLastError()));
- }
-
- return result;
-}
-
-IPluginInstaller::EInstallResult InstallationManager::installArchive(GuessedValue<QString> &modName, const QString &archiveName)
-{
- // in earlier versions the modName was copied here and the copy passed to install. I don't know why I did this and it causes
- // a problem if this is called by the bundle installer and the bundled installer adds additional names that then end up being used,
- // because the caller will then not have the right name.
- bool iniTweaks;
- if (install(archiveName, modName, iniTweaks)) {
- return IPluginInstaller::RESULT_SUCCESS;
- } else {
- return IPluginInstaller::RESULT_FAILED;
- }
-}
-
-
-DirectoryTree *InstallationManager::createFilesTree()
-{
- FileData* const *data;
- size_t size;
- m_ArchiveHandler->getFileList(data, size);
-
- QScopedPointer<DirectoryTree> result(new DirectoryTree);
-
- for (size_t i = 0; i < size; ++i) {
- // the files are in a flat list where each file has a a full path relative to the archive root
- // to create a tree, we have to iterate over each path component of each. This could be sped up by
- // grouping the filenames first, but so far there doesn't seem to be an actual performance problem
- DirectoryTree::Node *currentNode = result.data();
-
- QString fileName = data[i]->getFileName();
- QStringList components = fileName.split("\\");
-
- // iterate over all path-components of this filename (including the filename itself)
- for (QStringList::iterator componentIter = components.begin(); componentIter != components.end(); ++componentIter) {
- if (componentIter->size() == 0) {
- // empty string indicates fileName is actually only a directory name and we have
- // completely processed it already.
- break;
- }
-
- bool exists = false;
- // test if this path is already in the tree
- for (DirectoryTree::node_iterator nodeIter = currentNode->nodesBegin(); nodeIter != currentNode->nodesEnd(); ++nodeIter) {
- if ((*nodeIter)->getData().name == *componentIter) {
- currentNode = *nodeIter;
- exists = true;
- break;
- }
- }
-
- if (!exists) {
- if (componentIter + 1 == components.end()) {
- // last path component. directory or file?
- if (data[i]->isDirectory()) {
- // this is a bit problematic. archives will often only list directories if they are empty,
- // otherwise the dir only appears in the path of a file. In the UI however we allow the user
- // to uncheck all files in a directory while keeping the dir checked. Those directories are
- // currently not installed.
- DirectoryTree::Node *newNode = new DirectoryTree::Node;
- newNode->setData(
- DirectoryTreeInformation(*componentIter, static_cast<int>(i)));
- currentNode->addNode(newNode, false);
- currentNode = newNode;
- } else {
- currentNode->addLeaf(FileTreeInformation(*componentIter, i));
- }
- } else {
- DirectoryTree::Node *newNode = new DirectoryTree::Node;
- newNode->setData(DirectoryTreeInformation(*componentIter, -1));
- currentNode->addNode(newNode, false);
- currentNode = newNode;
- }
- }
- }
- }
-
- return result.take();
-}
-
-
-bool InstallationManager::isSimpleArchiveTopLayer(const DirectoryTree::Node *node, bool bainStyle)
-{
- // see if there is at least one directory that makes sense on the top level
- for (DirectoryTree::const_node_iterator iter = node->nodesBegin(); iter != node->nodesEnd(); ++iter) {
- if ((bainStyle && InstallationTester::isTopLevelDirectoryBain((*iter)->getData().name)) ||
- (!bainStyle && InstallationTester::isTopLevelDirectory((*iter)->getData().name))) {
- qDebug("%s on the top level", (*iter)->getData().name.toUtf8().constData());
- return true;
- }
- }
-
- // see if there is a file that makes sense on the top level
- for (DirectoryTree::const_leaf_iterator iter = node->leafsBegin(); iter != node->leafsEnd(); ++iter) {
- if (InstallationTester::isTopLevelSuffix(iter->getName())) {
- return true;
- }
- }
- return false;
-}
-
-
-DirectoryTree::Node *InstallationManager::getSimpleArchiveBase(DirectoryTree *dataTree)
-{
- DirectoryTree::Node *currentNode = dataTree;
-
- while (true) {
- if (isSimpleArchiveTopLayer(currentNode, false)) {
- return currentNode;
- } else if ((currentNode->numLeafs() == 0) &&
- (currentNode->numNodes() == 1)) {
- currentNode = *currentNode->nodesBegin();
- } else {
- qDebug("not a simple archive");
- return nullptr;
- }
- }
-}
-
-
-void InstallationManager::updateProgress(float percentage)
-{
- if (m_InstallationProgress != nullptr) {
- m_Progress = static_cast<int>(percentage * 100.0);
-
- if (m_InstallationProgress->wasCanceled()) {
- m_ArchiveHandler->cancel();
- m_InstallationProgress->reset();
- }
- }
-}
-
-
-void InstallationManager::updateProgressFile(QString const &fileName)
-{
- m_ProgressFile = fileName;
-}
-
-
-void InstallationManager::report7ZipError(QString const &errorMessage)
-{
- reportError(errorMessage);
- m_ArchiveHandler->cancel();
-}
-
-
-QString InstallationManager::generateBackupName(const QString &directoryName) const
-{
- QString backupName = directoryName + "_backup";
- if (QDir(backupName).exists()) {
- int idx = 2;
- QString temp = backupName + QString::number(idx);
- while (QDir(temp).exists()) {
- ++idx;
- temp = backupName + QString::number(idx);
- }
- backupName = temp;
- }
- return backupName;
-}
-
-
-bool InstallationManager::testOverwrite(GuessedValue<QString> &modName, bool *merge) const
-{
- QString targetDirectory = QDir::fromNativeSeparators(m_ModsDirectory + "\\" + modName);
- while (QDir(targetDirectory).exists()) {
- Settings &settings(Settings::instance());
- bool backup = settings.directInterface().value("backup_install", false).toBool();
- QueryOverwriteDialog overwriteDialog(m_ParentWidget,
- backup ? QueryOverwriteDialog::BACKUP_YES : QueryOverwriteDialog::BACKUP_NO);
- if (overwriteDialog.exec()) {
- settings.directInterface().setValue("backup_install", overwriteDialog.backup());
- if (overwriteDialog.backup()) {
- QString backupDirectory = generateBackupName(targetDirectory);
- if (!copyDir(targetDirectory, backupDirectory, false)) {
- reportError(tr("failed to create backup"));
- return false;
- }
- }
- if (merge != nullptr) {
- *merge = (overwriteDialog.action() == QueryOverwriteDialog::ACT_MERGE);
- }
- if (overwriteDialog.action() == QueryOverwriteDialog::ACT_RENAME) {
- bool ok = false;
- QString name = QInputDialog::getText(m_ParentWidget, tr("Mod Name"), tr("Name"),
- QLineEdit::Normal, modName, &ok);
- if (ok && !name.isEmpty()) {
- modName.update(name, GUESS_USER);
- if (!ensureValidModName(modName)) {
- return false;
- }
- targetDirectory = QDir::fromNativeSeparators(m_ModsDirectory) + "/" + modName;
- }
- } else if (overwriteDialog.action() == QueryOverwriteDialog::ACT_REPLACE) {
- // save original settings like categories. Because it makes sense
- QString metaFilename = targetDirectory + "/meta.ini";
- QFile settingsFile(metaFilename);
- QByteArray originalSettings;
- if (settingsFile.open(QIODevice::ReadOnly)) {
- originalSettings = settingsFile.readAll();
- settingsFile.close();
- }
-
- // remove the directory with all content, then recreate it empty
- shellDelete(QStringList(targetDirectory));
- if (!QDir().mkdir(targetDirectory)) {
- // windows may keep the directory around for a moment, preventing its re-creation. Not sure
- // if this still happens with shellDelete
- Sleep(100);
- QDir().mkdir(targetDirectory);
- }
- // restore the saved settings
- if (settingsFile.open(QIODevice::WriteOnly)) {
- settingsFile.write(originalSettings);
- settingsFile.close();
- } else {
- qCritical("failed to restore original settings: %s", metaFilename.toUtf8().constData());
- }
- return true;
- } else if (overwriteDialog.action() == QueryOverwriteDialog::ACT_MERGE) {
- return true;
- }
- } else {
- return false;
- }
- }
-
- QDir().mkdir(targetDirectory);
-
- return true;
-}
-
-
-bool InstallationManager::ensureValidModName(GuessedValue<QString> &name) const
-{
- while (name->isEmpty()) {
- bool ok;
- name.update(QInputDialog::getText(m_ParentWidget, tr("Invalid name"),
- tr("The name you entered is invalid, please enter a different one."),
- QLineEdit::Normal, "", &ok),
- GUESS_USER);
- if (!ok) {
- return false;
- }
- }
- return true;
-}
-
-bool InstallationManager::doInstall(GuessedValue<QString> &modName, QString gameName, int modID,
- const QString &version, const QString &newestVersion,
- int categoryID, const QString &repository)
-{
- if (!ensureValidModName(modName)) {
- return false;
- }
-
- bool merge = false;
- // determine target directory
- if (!testOverwrite(modName, &merge)) {
- return false;
- }
-
- QString targetDirectory = QDir(m_ModsDirectory + "/" + modName).canonicalPath();
- QString targetDirectoryNative = QDir::toNativeSeparators(targetDirectory);
-
- qDebug("installing to \"%s\"", targetDirectoryNative.toUtf8().constData());
-
- m_InstallationProgress = new QProgressDialog(m_ParentWidget);
- ON_BLOCK_EXIT([this] () {
- m_InstallationProgress->hide();
- m_InstallationProgress->deleteLater();
- m_InstallationProgress = nullptr;
- m_Progress = 0;
- m_ProgressFile = QString();
- });
-
- m_InstallationProgress->setWindowFlags(
- m_InstallationProgress->windowFlags() & (~Qt::WindowContextHelpButtonHint));
- m_InstallationProgress->setWindowModality(Qt::WindowModal);
- m_InstallationProgress->setFixedSize(600, 100);
- m_InstallationProgress->show();
- QFuture<bool> future = QtConcurrent::run([&]() -> bool {
- return m_ArchiveHandler->extract(
- targetDirectory,
- new MethodCallback<InstallationManager, void, float>(this, &InstallationManager::updateProgress),
- new MethodCallback<InstallationManager, void, QString const &>(this, &InstallationManager::updateProgressFile),
- new MethodCallback<InstallationManager, void, QString const &>(this, &InstallationManager::report7ZipError)
- );
- });
- do {
- if (m_Progress != m_InstallationProgress->value())
- m_InstallationProgress->setValue(m_Progress);
- if (m_ProgressFile != m_InstallationProgress->labelText())
- m_InstallationProgress->setLabelText(m_ProgressFile);
- QCoreApplication::processEvents();
- } while (!future.isFinished());
- if (!future.result()) {
- if (m_ArchiveHandler->getLastError() == Archive::ERROR_EXTRACT_CANCELLED) {
- return false;
- } else {
- throw MyException(QString("extracting failed (%1)").arg(m_ArchiveHandler->getLastError()));
- }
- }
-
- QSettings settingsFile(targetDirectory + "/meta.ini", QSettings::IniFormat);
-
- // overwrite settings only if they are actually are available or haven't been set before
- if ((gameName != "") || !settingsFile.contains("gameName")) {
- settingsFile.setValue("gameName", gameName);
- }
- if ((modID != 0) || !settingsFile.contains("modid")) {
- settingsFile.setValue("modid", modID);
- }
- if (!settingsFile.contains("version") ||
- (!version.isEmpty() &&
- (!merge || (VersionInfo(version) >= VersionInfo(settingsFile.value("version").toString()))))) {
- settingsFile.setValue("version", version);
- }
- if (!newestVersion.isEmpty() || !settingsFile.contains("newestVersion")) {
- settingsFile.setValue("newestVersion", newestVersion);
- }
- // issue #51 used to overwrite the manually set categories
- if (!settingsFile.contains("category")) {
- settingsFile.setValue("category", QString::number(categoryID));
- }
- settingsFile.setValue("installationFile", m_CurrentFile);
- settingsFile.setValue("repository", repository);
- settingsFile.setValue("url", m_URL);
-
- if (!merge) {
- // this does not clear the list we have in memory but the mod is going to have to be re-read anyway
- // btw.: installedFiles were written with beginWriteArray but we can still clear it with beginGroup. nice
- settingsFile.beginGroup("installedFiles");
- settingsFile.remove("");
- settingsFile.endGroup();
- }
-
- return true;
-}
-
-
-bool InstallationManager::wasCancelled()
-{
- return m_ArchiveHandler->getLastError() == Archive::ERROR_EXTRACT_CANCELLED;
-}
-
-
-void InstallationManager::postInstallCleanup()
-{
- m_ArchiveHandler->close();
-
- // directories we may want to remove. sorted from longest to shortest to ensure we remove subdirectories first.
- auto longestFirst = [](const QString &LHS, const QString &RHS) -> bool {
- if (LHS.size() != RHS.size()) return LHS.size() > RHS.size();
- else return LHS < RHS;
- };
-
- std::set<QString, std::function<bool(const QString&, const QString&)>> directoriesToRemove(longestFirst);
-
- // clean up temp files
- // TODO: this doesn't yet remove directories. Also, the files may be left there if this point isn't reached
- for (const QString &tempFile : m_TempFilesToDelete) {
- QFileInfo fileInfo(QDir::tempPath() + "/" + tempFile);
- QFile::remove(fileInfo.absoluteFilePath());
- directoriesToRemove.insert(fileInfo.absolutePath());
- }
-
- m_TempFilesToDelete.clear();
-
- // try to delete each directory we had temporary files in. the call fails for non-empty directories which is ok
- for (const QString &dir : directoriesToRemove) {
- QDir().rmdir(dir);
- }
-}
-
-bool InstallationManager::install(const QString &fileName,
- GuessedValue<QString> &modName,
- bool &hasIniTweaks)
-{
- QFileInfo fileInfo(fileName);
- if (m_SupportedExtensions.find(fileInfo.suffix()) == m_SupportedExtensions.end()) {
- reportError(tr("File format \"%1\" not supported").arg(fileInfo.suffix()));
- return false;
- }
-
- modName.setFilter(&fixDirectoryName);
-
- modName.update(QFileInfo(fileName).completeBaseName(), GUESS_FALLBACK);
-
- // read out meta information from the download if available
- QString gameName = "";
- int modID = 0;
- QString version = "";
- QString newestVersion = "";
- int categoryID = 0;
- QString repository = "Nexus";
-
- QString metaName = fileName + ".meta";
- if (QFile(metaName).exists()) {
- QSettings metaFile(metaName, QSettings::IniFormat);
- gameName = metaFile.value("gameName", "").toString();
- modID = metaFile.value("modID", 0).toInt();
- QTextDocument doc;
- doc.setHtml(metaFile.value("name", "").toString());
- modName.update(doc.toPlainText(), GUESS_FALLBACK);
- modName.update(metaFile.value("modName", "").toString(), GUESS_META);
-
- version = metaFile.value("version", "").toString();
- newestVersion = metaFile.value("newestVersion", "").toString();
- unsigned int categoryIndex = CategoryFactory::instance().resolveNexusID(
- metaFile.value("category", 0).toInt());
- categoryID = CategoryFactory::instance().getCategoryID(categoryIndex);
- repository = metaFile.value("repository", "").toString();
- }
-
- if (version.isEmpty()) {
- QDateTime lastMod = fileInfo.lastModified();
- version = "d" + lastMod.toString("yyyy.M.d");
- }
-
- { // guess the mod name and mod if from the file name if there was no meta information
- QString guessedModName;
- int guessedModID = modID;
- NexusInterface::interpretNexusFileName(QFileInfo(fileName).fileName(), guessedModName, guessedModID, false);
- if ((modID == 0) && (guessedModID != -1)) {
- modID = guessedModID;
- } else if (modID != guessedModID) {
- qDebug("passed mod id: %d, guessed id: %d", modID, guessedModID);
- }
-
- modName.update(guessedModName, GUESS_GOOD);
- }
-
- m_CurrentFile = fileInfo.absoluteFilePath();
- if (fileInfo.dir() == QDir(m_DownloadsDirectory)) {
- m_CurrentFile = fileInfo.fileName();
- }
- qDebug("using mod name \"%s\" (id %d) -> %s", modName->toUtf8().constData(), modID, qPrintable(m_CurrentFile));
-
- //If there's an archive already open, close it. This happens with the bundle
- //installer when it uncompresses a split archive, then finds it has a real archive
- //to deal with.
- m_ArchiveHandler->close();
-
- // open the archive and construct the directory tree the installers work on
- bool archiveOpen = m_ArchiveHandler->open(fileName,
- new MethodCallback<InstallationManager, void, QString *>(this, &InstallationManager::queryPassword));
- if (!archiveOpen) {
- qDebug("integrated archiver can't open %s: %s (%d)",
- qPrintable(fileName),
- qPrintable(getErrorString(m_ArchiveHandler->getLastError())),
- m_ArchiveHandler->getLastError());
- }
- ON_BLOCK_EXIT(std::bind(&InstallationManager::postInstallCleanup, this));
-
- QScopedPointer<DirectoryTree> filesTree(archiveOpen ? createFilesTree() : nullptr);
- IPluginInstaller::EInstallResult installResult = IPluginInstaller::RESULT_NOTATTEMPTED;
-
- std::sort(m_Installers.begin(), m_Installers.end(), [] (IPluginInstaller *LHS, IPluginInstaller *RHS) {
- return LHS->priority() > RHS->priority();
- });
-
- for (IPluginInstaller *installer : m_Installers) {
- // don't use inactive installers (installer can't be null here but vc static code analysis thinks it could)
- if ((installer == nullptr) || !installer->isActive()) {
- continue;
- }
-
- // try only manual installers if that was requested
- if (installResult == IPluginInstaller::RESULT_MANUALREQUESTED) {
- if (!installer->isManualInstaller()) {
- continue;
- }
- } else if (installResult != IPluginInstaller::RESULT_NOTATTEMPTED) {
- break;
- }
-
- try {
- { // simple case
- IPluginInstallerSimple *installerSimple
- = dynamic_cast<IPluginInstallerSimple *>(installer);
- if ((installerSimple != nullptr) && (filesTree != nullptr)
- && (installer->isArchiveSupported(*filesTree))) {
- installResult
- = installerSimple->install(modName, *filesTree, version, modID);
- if (installResult == IPluginInstaller::RESULT_SUCCESS) {
- mapToArchive(filesTree.data());
- // the simple installer only prepares the installation, the rest
- // works the same for all installers
- if (!doInstall(modName, gameName, modID, version, newestVersion, categoryID,
- repository)) {
- installResult = IPluginInstaller::RESULT_FAILED;
- }
- }
- }
- }
-
- { // custom case
- IPluginInstallerCustom *installerCustom
- = dynamic_cast<IPluginInstallerCustom *>(installer);
- if ((installerCustom != nullptr)
- && (((filesTree != nullptr)
- && installer->isArchiveSupported(*filesTree))
- || ((filesTree == nullptr)
- && installerCustom->isArchiveSupported(fileName)))) {
- std::set<QString> installerExt
- = installerCustom->supportedExtensions();
- if (installerExt.find(fileInfo.suffix()) != installerExt.end()) {
- installResult
- = installerCustom->install(modName, gameName, fileName, version, modID);
- unsigned int idx = ModInfo::getIndex(modName);
- if (idx != UINT_MAX) {
- ModInfo::Ptr info = ModInfo::getByIndex(idx);
- info->setRepository(repository);
- }
- }
- }
- }
- } catch (const IncompatibilityException &e) {
- qCritical("plugin \"%s\" incompatible: %s",
- qPrintable(installer->name()), e.what());
- }
-
- // act upon the installation result. at this point the files have already been
- // extracted to the correct location
- switch (installResult) {
- case IPluginInstaller::RESULT_CANCELED:
- case IPluginInstaller::RESULT_FAILED: {
- return false;
- } break;
- case IPluginInstaller::RESULT_SUCCESS:
- case IPluginInstaller::RESULT_SUCCESSCANCEL: {
- if (filesTree != nullptr) {
- DirectoryTree::node_iterator iniTweakNode = filesTree->nodeFind(DirectoryTreeInformation("INI Tweaks"));
- hasIniTweaks = (iniTweakNode != filesTree->nodesEnd()) &&
- ((*iniTweakNode)->numLeafs() != 0);
- return true;
- } else {
- return false;
- }
- } break;
- }
- }
-
- reportError(tr("None of the available installer plugins were able to handle that archive.\n"
- "This is likely due to a corrupted or incompatible download or unrecognized archive format."));
- return false;
-}
-
-
-
-QString InstallationManager::getErrorString(Archive::Error errorCode)
-{
- switch (errorCode) {
- case Archive::ERROR_NONE: {
- return tr("no error");
- } break;
- case Archive::ERROR_LIBRARY_NOT_FOUND: {
- return tr("7z.dll not found");
- } break;
- case Archive::ERROR_LIBRARY_INVALID: {
- return tr("7z.dll isn't valid");
- } break;
- case Archive::ERROR_ARCHIVE_NOT_FOUND: {
- return tr("archive not found");
- } break;
- case Archive::ERROR_FAILED_TO_OPEN_ARCHIVE: {
- return tr("failed to open archive");
- } break;
- case Archive::ERROR_INVALID_ARCHIVE_FORMAT: {
- return tr("unsupported archive type");
- } break;
- case Archive::ERROR_LIBRARY_ERROR: {
- return tr("internal library error");
- } break;
- case Archive::ERROR_ARCHIVE_INVALID: {
- return tr("archive invalid");
- } break;
- default: {
- // this probably means the archiver.dll is newer than this
- return tr("unknown archive error");
- } break;
- }
-}
-
-
-void InstallationManager::registerInstaller(IPluginInstaller *installer)
-{
- m_Installers.push_back(installer);
- installer->setInstallationManager(this);
- IPluginInstallerCustom *installerCustom = dynamic_cast<IPluginInstallerCustom*>(installer);
- if (installerCustom != nullptr) {
- std::set<QString> extensions = installerCustom->supportedExtensions();
- m_SupportedExtensions.insert(extensions.begin(), extensions.end());
- }
-}
-
-QStringList InstallationManager::getSupportedExtensions() const
-{
- QStringList result;
- foreach (const QString &extension, m_SupportedExtensions) {
- result.append(extension);
- }
- return result;
-}
+/* +Copyright (C) 2012 Sebastian Herbord. All rights reserved. + +This file is part of Mod Organizer. + +Mod Organizer is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Mod Organizer is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include "installationmanager.h" + +#include "utility.h" +#include "report.h" +#include "categories.h" +#include "questionboxmemory.h" +#include "settings.h" +#include "queryoverwritedialog.h" +#include "messagedialog.h" +#include "iplugininstallersimple.h" +#include "iplugininstallercustom.h" +#include "nexusinterface.h" +#include "selectiondialog.h" +#include "modinfo.h" +#include <scopeguard.h> +#include <installationtester.h> +#include <utility.h> +#include <scopeguard.h> + +#include <QFileInfo> +#include <QLibrary> +#include <QInputDialog> +#include <QRegExp> +#include <QDir> +#include <QMessageBox> +#include <QSettings> +#include <QPushButton> +#include <QApplication> +#include <QDateTime> +#include <QDirIterator> +#include <QDebug> +#include <QTextDocument> +#include <QtConcurrent/QtConcurrentRun> + +#include <Shellapi.h> + +#include <boost/assign.hpp> +#include <boost/scoped_ptr.hpp> + + +using namespace MOBase; +using namespace MOShared; + + +typedef Archive* (*CreateArchiveType)(); + + + +template <typename T> +static T resolveFunction(QLibrary &lib, const char *name) +{ + T temp = reinterpret_cast<T>(lib.resolve(name)); + if (temp == nullptr) { + throw std::runtime_error(QObject::tr("invalid 7-zip32.dll: %1") + .arg(lib.errorString()) + .toLatin1() + .constData()); + } + return temp; +} + +InstallationManager::InstallationManager() + : m_ParentWidget(nullptr), + m_SupportedExtensions({"zip", "rar", "7z", "fomod", "001"}) { + QLibrary archiveLib(QCoreApplication::applicationDirPath() + + "\\dlls\\archive.dll"); + if (!archiveLib.load()) { + throw MyException(QObject::tr("archive.dll not loaded: \"%1\"") + .arg(archiveLib.errorString())); + } + + CreateArchiveType CreateArchiveFunc + = resolveFunction<CreateArchiveType>(archiveLib, "CreateArchive"); + + m_ArchiveHandler = CreateArchiveFunc(); + if (!m_ArchiveHandler->isValid()) { + throw MyException(getErrorString(m_ArchiveHandler->getLastError())); + } +} + +InstallationManager::~InstallationManager() +{ + delete m_ArchiveHandler; +} + +void InstallationManager::setParentWidget(QWidget *widget) +{ + for (IPluginInstaller *installer : m_Installers) { + installer->setParentWidget(widget); + } +} + +void InstallationManager::setURL(QString const &url) +{ + m_URL = url; +} + +void InstallationManager::queryPassword(QString *password) +{ + *password = QInputDialog::getText(nullptr, tr("Password required"), + tr("Password"), QLineEdit::Password); +} + +void InstallationManager::mapToArchive(const DirectoryTree::Node *node, QString path, FileData * const *data) +{ + if (path.length() > 0) { + // when using a long windows path (starting with \\?\) we apparently can have redundant + // . components in the path. This wasn't a problem with "regular" path names. + if (path == ".") { + path.clear(); + } else { + path.append("\\"); + } + } + + for (DirectoryTree::const_leaf_iterator iter = node->leafsBegin(); iter != node->leafsEnd(); ++iter) { + data[iter->getIndex()]->addOutputFileName(path + iter->getName().toQString()); + } + + for (DirectoryTree::const_node_iterator iter = node->nodesBegin(); iter != node->nodesEnd(); ++iter) { + QString temp = path + (*iter)->getData().name.toQString(); + if ((*iter)->getData().index != -1) { + data[(*iter)->getData().index]->addOutputFileName(temp); + } + mapToArchive(*iter, temp, data); + } +} + + +void InstallationManager::mapToArchive(const DirectoryTree::Node *baseNode) +{ + FileData* const *data; + size_t size; + m_ArchiveHandler->getFileList(data, size); + + mapToArchive(baseNode, "", data); +} + + +bool InstallationManager::unpackSingleFile(const QString &fileName) +{ + FileData* const *data; + size_t size; + m_ArchiveHandler->getFileList(data, size); + + QString baseName = QFileInfo(fileName).fileName(); + + bool available = false; + for (size_t i = 0; i < size; ++i) { + if (data[i]->getFileName().compare(fileName, Qt::CaseInsensitive) == 0) { + available = true; + data[i]->addOutputFileName(baseName); + m_TempFilesToDelete.insert(baseName); + } + } + + if (!available) { + return false; + } + + m_InstallationProgress = new QProgressDialog(m_ParentWidget); + ON_BLOCK_EXIT([this] () { + m_InstallationProgress->hide(); + m_InstallationProgress->deleteLater(); + m_InstallationProgress = nullptr; + m_Progress = 0; + }); + m_InstallationProgress->setWindowFlags( + m_InstallationProgress->windowFlags() & ~Qt::WindowContextHelpButtonHint); + + m_InstallationProgress->setWindowTitle(tr("Extracting files")); + m_InstallationProgress->setWindowModality(Qt::WindowModal); + m_InstallationProgress->setFixedSize(600, 100); + m_InstallationProgress->show(); + + QFuture<bool> future = QtConcurrent::run([&]() -> bool { + return m_ArchiveHandler->extract( + QDir::tempPath(), + new MethodCallback<InstallationManager, void, float>(this, &InstallationManager::updateProgress), + nullptr, + new MethodCallback<InstallationManager, void, QString const &>(this, &InstallationManager::report7ZipError) + ); + }); + do { + if (m_Progress != m_InstallationProgress->value()) + m_InstallationProgress->setValue(m_Progress); + QCoreApplication::processEvents(); + } while (!future.isFinished() || m_InstallationProgress->isVisible()); + bool res = future.result(); + + return res; +} + + +QString InstallationManager::extractFile(const QString &fileName) +{ + if (unpackSingleFile(fileName)) { + return QDir::tempPath() + "/" + QFileInfo(fileName).fileName(); + } else { + return QString(); + } +} + + +static QString canonicalize(const QString &name) +{ + QString result(name); + if ((result.startsWith('/')) || + (result.startsWith('\\'))) { + result.remove(0, 1); + } + result.replace('/', '\\'); + + return result; +} + + +QStringList InstallationManager::extractFiles(const QStringList &filesOrig, bool flatten) +{ + QStringList files; + + for (const QString &file : filesOrig) { + files.append(canonicalize(file)); + } + + QStringList result; + + FileData* const *data; + size_t size; + m_ArchiveHandler->getFileList(data, size); + + for (size_t i = 0; i < size; ++i) { + //FIXME Use qstring all the way through + if (files.contains(data[i]->getFileName(), Qt::CaseInsensitive)) { + std::wstring temp = data[i]->getFileName().toStdWString(); + wchar_t const * const origFile = temp.c_str(); + const wchar_t *targetFile = origFile; + //Note: I don't think 'flatten' is ever set to true. so this code + //might never be executed + if (flatten) { + targetFile = wcsrchr(origFile/*data[i]->getFileName()*/, '\\'); + if (targetFile == nullptr) { + targetFile = wcsrchr(origFile/*data[i]->getFileName()*/, '/'); + } + if (targetFile == nullptr) { + qCritical() << "Failed to find backslash in " << data[i]->getFileName(); + continue; + } else { + // skip the slash + ++targetFile; + } + } + data[i]->addOutputFileName(ToQString(targetFile)); + + result.append(QDir::tempPath().append("/").append(ToQString(targetFile))); + + m_TempFilesToDelete.insert(ToQString(targetFile)); + } + } + + m_InstallationProgress = new QProgressDialog(m_ParentWidget); + ON_BLOCK_EXIT([this] () { + m_InstallationProgress->hide(); + m_InstallationProgress->deleteLater(); + m_InstallationProgress = nullptr; + m_Progress = 0; + }); + m_InstallationProgress->setWindowFlags( + m_InstallationProgress->windowFlags() & (~Qt::WindowContextHelpButtonHint)); + m_InstallationProgress->setWindowTitle(tr("Extracting files")); + m_InstallationProgress->setWindowModality(Qt::WindowModal); + m_InstallationProgress->setFixedSize(600, 100); + m_InstallationProgress->show(); + + // unpack only the files we need for the installer + QFuture<bool> future = QtConcurrent::run([&]() -> bool { + return m_ArchiveHandler->extract( + QDir::tempPath(), + new MethodCallback<InstallationManager, void, float>(this, &InstallationManager::updateProgress), + nullptr, + new MethodCallback<InstallationManager, void, QString const &>(this, &InstallationManager::report7ZipError) + ); + }); + do { + if (m_Progress != m_InstallationProgress->value()) + m_InstallationProgress->setValue(m_Progress); + QCoreApplication::processEvents(); + } while (!future.isFinished() || m_InstallationProgress->isVisible()); + if (!future.result()) { + throw MyException(QString("extracting failed (%1)").arg(m_ArchiveHandler->getLastError())); + } + + return result; +} + +IPluginInstaller::EInstallResult InstallationManager::installArchive(GuessedValue<QString> &modName, const QString &archiveName, const int &modId) +{ + // in earlier versions the modName was copied here and the copy passed to install. I don't know why I did this and it causes + // a problem if this is called by the bundle installer and the bundled installer adds additional names that then end up being used, + // because the caller will then not have the right name. + bool iniTweaks; + if (install(archiveName, modName, iniTweaks, modId)) { + return IPluginInstaller::RESULT_SUCCESS; + } else { + return IPluginInstaller::RESULT_FAILED; + } +} + + +DirectoryTree *InstallationManager::createFilesTree() +{ + FileData* const *data; + size_t size; + m_ArchiveHandler->getFileList(data, size); + + QScopedPointer<DirectoryTree> result(new DirectoryTree); + + for (size_t i = 0; i < size; ++i) { + // the files are in a flat list where each file has a a full path relative to the archive root + // to create a tree, we have to iterate over each path component of each. This could be sped up by + // grouping the filenames first, but so far there doesn't seem to be an actual performance problem + DirectoryTree::Node *currentNode = result.data(); + + QString fileName = data[i]->getFileName(); + QStringList components = fileName.split("\\"); + + // iterate over all path-components of this filename (including the filename itself) + for (QStringList::iterator componentIter = components.begin(); componentIter != components.end(); ++componentIter) { + if (componentIter->size() == 0) { + // empty string indicates fileName is actually only a directory name and we have + // completely processed it already. + break; + } + + bool exists = false; + // test if this path is already in the tree + for (DirectoryTree::node_iterator nodeIter = currentNode->nodesBegin(); nodeIter != currentNode->nodesEnd(); ++nodeIter) { + if ((*nodeIter)->getData().name == *componentIter) { + currentNode = *nodeIter; + exists = true; + break; + } + } + + if (!exists) { + if (componentIter + 1 == components.end()) { + // last path component. directory or file? + if (data[i]->isDirectory()) { + // this is a bit problematic. archives will often only list directories if they are empty, + // otherwise the dir only appears in the path of a file. In the UI however we allow the user + // to uncheck all files in a directory while keeping the dir checked. Those directories are + // currently not installed. + DirectoryTree::Node *newNode = new DirectoryTree::Node; + newNode->setData( + DirectoryTreeInformation(*componentIter, static_cast<int>(i))); + currentNode->addNode(newNode, false); + currentNode = newNode; + } else { + currentNode->addLeaf(FileTreeInformation(*componentIter, i)); + } + } else { + DirectoryTree::Node *newNode = new DirectoryTree::Node; + newNode->setData(DirectoryTreeInformation(*componentIter, -1)); + currentNode->addNode(newNode, false); + currentNode = newNode; + } + } + } + } + + return result.take(); +} + + +bool InstallationManager::isSimpleArchiveTopLayer(const DirectoryTree::Node *node, bool bainStyle) +{ + // see if there is at least one directory that makes sense on the top level + for (DirectoryTree::const_node_iterator iter = node->nodesBegin(); iter != node->nodesEnd(); ++iter) { + if ((bainStyle && InstallationTester::isTopLevelDirectoryBain((*iter)->getData().name)) || + (!bainStyle && InstallationTester::isTopLevelDirectory((*iter)->getData().name))) { + qDebug("%s on the top level", (*iter)->getData().name.toUtf8().constData()); + return true; + } + } + + // see if there is a file that makes sense on the top level + for (DirectoryTree::const_leaf_iterator iter = node->leafsBegin(); iter != node->leafsEnd(); ++iter) { + if (InstallationTester::isTopLevelSuffix(iter->getName())) { + return true; + } + } + return false; +} + + +DirectoryTree::Node *InstallationManager::getSimpleArchiveBase(DirectoryTree *dataTree) +{ + DirectoryTree::Node *currentNode = dataTree; + + while (true) { + if (isSimpleArchiveTopLayer(currentNode, false)) { + return currentNode; + } else if ((currentNode->numLeafs() == 0) && + (currentNode->numNodes() == 1)) { + currentNode = *currentNode->nodesBegin(); + } else { + qDebug("not a simple archive"); + return nullptr; + } + } +} + + +void InstallationManager::updateProgress(float percentage) +{ + if (m_InstallationProgress != nullptr) { + m_Progress = static_cast<int>(percentage * 100.0); + + if (m_InstallationProgress->wasCanceled()) { + m_ArchiveHandler->cancel(); + m_InstallationProgress->reset(); + } + } +} + + +void InstallationManager::updateProgressFile(QString const &fileName) +{ + m_ProgressFile = fileName; +} + + +void InstallationManager::report7ZipError(QString const &errorMessage) +{ + m_ErrorMessage = errorMessage; + m_ArchiveHandler->cancel(); +} + + +QString InstallationManager::generateBackupName(const QString &directoryName) const +{ + QString backupName = directoryName + "_backup"; + if (QDir(backupName).exists()) { + int idx = 2; + QString temp = backupName + QString::number(idx); + while (QDir(temp).exists()) { + ++idx; + temp = backupName + QString::number(idx); + } + backupName = temp; + } + return backupName; +} + + +bool InstallationManager::testOverwrite(GuessedValue<QString> &modName, bool *merge) const +{ + QString targetDirectory = QDir::fromNativeSeparators(m_ModsDirectory + "\\" + modName); + while (QDir(targetDirectory).exists()) { + Settings &settings(Settings::instance()); + bool backup = settings.directInterface().value("backup_install", false).toBool(); + QueryOverwriteDialog overwriteDialog(m_ParentWidget, + backup ? QueryOverwriteDialog::BACKUP_YES : QueryOverwriteDialog::BACKUP_NO); + if (overwriteDialog.exec()) { + settings.directInterface().setValue("backup_install", overwriteDialog.backup()); + if (overwriteDialog.backup()) { + QString backupDirectory = generateBackupName(targetDirectory); + if (!copyDir(targetDirectory, backupDirectory, false)) { + reportError(tr("failed to create backup")); + return false; + } + } + if (merge != nullptr) { + *merge = (overwriteDialog.action() == QueryOverwriteDialog::ACT_MERGE); + } + if (overwriteDialog.action() == QueryOverwriteDialog::ACT_RENAME) { + bool ok = false; + QString name = QInputDialog::getText(m_ParentWidget, tr("Mod Name"), tr("Name"), + QLineEdit::Normal, modName, &ok); + if (ok && !name.isEmpty()) { + modName.update(name, GUESS_USER); + if (!ensureValidModName(modName)) { + return false; + } + targetDirectory = QDir::fromNativeSeparators(m_ModsDirectory) + "/" + modName; + } + } else if (overwriteDialog.action() == QueryOverwriteDialog::ACT_REPLACE) { + // save original settings like categories. Because it makes sense + QString metaFilename = targetDirectory + "/meta.ini"; + QFile settingsFile(metaFilename); + QByteArray originalSettings; + if (settingsFile.open(QIODevice::ReadOnly)) { + originalSettings = settingsFile.readAll(); + settingsFile.close(); + } + + // remove the directory with all content, then recreate it empty + shellDelete(QStringList(targetDirectory)); + if (!QDir().mkdir(targetDirectory)) { + // windows may keep the directory around for a moment, preventing its re-creation. Not sure + // if this still happens with shellDelete + Sleep(100); + QDir().mkdir(targetDirectory); + } + // restore the saved settings + if (settingsFile.open(QIODevice::WriteOnly)) { + settingsFile.write(originalSettings); + settingsFile.close(); + } else { + qCritical("failed to restore original settings: %s", metaFilename.toUtf8().constData()); + } + return true; + } else if (overwriteDialog.action() == QueryOverwriteDialog::ACT_MERGE) { + return true; + } + } else { + return false; + } + } + + QDir().mkdir(targetDirectory); + + return true; +} + + +bool InstallationManager::ensureValidModName(GuessedValue<QString> &name) const +{ + while (name->isEmpty()) { + bool ok; + name.update(QInputDialog::getText(m_ParentWidget, tr("Invalid name"), + tr("The name you entered is invalid, please enter a different one."), + QLineEdit::Normal, "", &ok), + GUESS_USER); + if (!ok) { + return false; + } + } + return true; +} + +bool InstallationManager::doInstall(GuessedValue<QString> &modName, QString gameName, int modID, + const QString &version, const QString &newestVersion, + int categoryID, const QString &repository) +{ + if (!ensureValidModName(modName)) { + return false; + } + + bool merge = false; + // determine target directory + if (!testOverwrite(modName, &merge)) { + return false; + } + + QString targetDirectory = QDir(m_ModsDirectory + "/" + modName).canonicalPath(); + QString targetDirectoryNative = QDir::toNativeSeparators(targetDirectory); + + qDebug("installing to \"%s\"", targetDirectoryNative.toUtf8().constData()); + + m_InstallationProgress = new QProgressDialog(m_ParentWidget); + ON_BLOCK_EXIT([this] () { + m_InstallationProgress->hide(); + m_InstallationProgress->deleteLater(); + m_InstallationProgress = nullptr; + m_Progress = 0; + m_ProgressFile = QString(); + }); + + m_InstallationProgress->setWindowFlags( + m_InstallationProgress->windowFlags() & (~Qt::WindowContextHelpButtonHint)); + m_InstallationProgress->setWindowModality(Qt::WindowModal); + m_InstallationProgress->setFixedSize(600, 100); + m_InstallationProgress->show(); + QFuture<bool> future = QtConcurrent::run([&]() -> bool { + return m_ArchiveHandler->extract( + targetDirectory, + new MethodCallback<InstallationManager, void, float>(this, &InstallationManager::updateProgress), + new MethodCallback<InstallationManager, void, QString const &>(this, &InstallationManager::updateProgressFile), + new MethodCallback<InstallationManager, void, QString const &>(this, &InstallationManager::report7ZipError) + ); + }); + do { + if (m_Progress != m_InstallationProgress->value()) + m_InstallationProgress->setValue(m_Progress); + if (m_ProgressFile != m_InstallationProgress->labelText()) + m_InstallationProgress->setLabelText(m_ProgressFile); + QCoreApplication::processEvents(); + } while (!future.isFinished()); + if (!future.result()) { + if (m_ArchiveHandler->getLastError() == Archive::ERROR_EXTRACT_CANCELLED) { + if (!m_ErrorMessage.isEmpty()) { + throw MyException(QString("extracting failed (%1)").arg(m_ErrorMessage)); + } else { + return false; + } + } else { + throw MyException(QString("extracting failed (%1)").arg(m_ArchiveHandler->getLastError())); + } + } + + QSettings settingsFile(targetDirectory + "/meta.ini", QSettings::IniFormat); + + // overwrite settings only if they are actually are available or haven't been set before + if ((gameName != "") || !settingsFile.contains("gameName")) { + settingsFile.setValue("gameName", gameName); + } + if ((modID != 0) || !settingsFile.contains("modid")) { + settingsFile.setValue("modid", modID); + } + if (!settingsFile.contains("version") || + (!version.isEmpty() && + (!merge || (VersionInfo(version) >= VersionInfo(settingsFile.value("version").toString()))))) { + settingsFile.setValue("version", version); + } + if (!newestVersion.isEmpty() || !settingsFile.contains("newestVersion")) { + settingsFile.setValue("newestVersion", newestVersion); + } + // issue #51 used to overwrite the manually set categories + if (!settingsFile.contains("category")) { + settingsFile.setValue("category", QString::number(categoryID)); + } + settingsFile.setValue("installationFile", m_CurrentFile); + settingsFile.setValue("repository", repository); + settingsFile.setValue("url", m_URL); + + if (!merge) { + // this does not clear the list we have in memory but the mod is going to have to be re-read anyway + // btw.: installedFiles were written with beginWriteArray but we can still clear it with beginGroup. nice + settingsFile.beginGroup("installedFiles"); + settingsFile.remove(""); + settingsFile.endGroup(); + } + + return true; +} + + +bool InstallationManager::wasCancelled() +{ + return m_ArchiveHandler->getLastError() == Archive::ERROR_EXTRACT_CANCELLED; +} + + +void InstallationManager::postInstallCleanup() +{ + m_ArchiveHandler->close(); + + // directories we may want to remove. sorted from longest to shortest to ensure we remove subdirectories first. + auto longestFirst = [](const QString &LHS, const QString &RHS) -> bool { + if (LHS.size() != RHS.size()) return LHS.size() > RHS.size(); + else return LHS < RHS; + }; + + std::set<QString, std::function<bool(const QString&, const QString&)>> directoriesToRemove(longestFirst); + + // clean up temp files + // TODO: this doesn't yet remove directories. Also, the files may be left there if this point isn't reached + for (const QString &tempFile : m_TempFilesToDelete) { + QFileInfo fileInfo(QDir::tempPath() + "/" + tempFile); + if (fileInfo.exists()) { + if (!fileInfo.isReadable() || !fileInfo.isWritable()) { + QFile::setPermissions(fileInfo.absoluteFilePath(), QFile::ReadOther | QFile::WriteOther); + } + if (!QFile::remove(fileInfo.absoluteFilePath())) { + qWarning() << "Unable to delete " << fileInfo.absoluteFilePath(); + } + } + directoriesToRemove.insert(fileInfo.absolutePath()); + } + + m_TempFilesToDelete.clear(); + + // try to delete each directory we had temporary files in. the call fails for non-empty directories which is ok + for (const QString &dir : directoriesToRemove) { + QDir().rmdir(dir); + } +} + +bool InstallationManager::install(const QString &fileName, + GuessedValue<QString> &modName, + bool &hasIniTweaks, + int modID) +{ + QFileInfo fileInfo(fileName); + if (m_SupportedExtensions.find(fileInfo.suffix()) == m_SupportedExtensions.end()) { + reportError(tr("File format \"%1\" not supported").arg(fileInfo.suffix())); + return false; + } + + modName.setFilter(&fixDirectoryName); + + modName.update(QFileInfo(fileName).completeBaseName(), GUESS_FALLBACK); + + // read out meta information from the download if available + QString gameName = ""; + QString version = ""; + QString newestVersion = ""; + int categoryID = 0; + QString repository = "Nexus"; + + QString metaName = fileName + ".meta"; + if (QFile(metaName).exists()) { + QSettings metaFile(metaName, QSettings::IniFormat); + gameName = metaFile.value("gameName", "").toString(); + modID = metaFile.value("modID", 0).toInt(); + QTextDocument doc; + doc.setHtml(metaFile.value("name", "").toString()); + modName.update(doc.toPlainText(), GUESS_FALLBACK); + modName.update(metaFile.value("modName", "").toString(), GUESS_META); + + version = metaFile.value("version", "").toString(); + newestVersion = metaFile.value("newestVersion", "").toString(); + unsigned int categoryIndex = CategoryFactory::instance().resolveNexusID( + metaFile.value("category", 0).toInt()); + categoryID = CategoryFactory::instance().getCategoryID(categoryIndex); + repository = metaFile.value("repository", "").toString(); + } + + if (version.isEmpty()) { + QDateTime lastMod = fileInfo.lastModified(); + version = "d" + lastMod.toString("yyyy.M.d"); + } + + { // guess the mod name and mod if from the file name if there was no meta information + QString guessedModName; + int guessedModID = modID; + NexusInterface::interpretNexusFileName(QFileInfo(fileName).fileName(), guessedModName, guessedModID, false); + if ((modID == 0) && (guessedModID != -1)) { + modID = guessedModID; + } else if (modID != guessedModID) { + qDebug("passed mod id: %d, guessed id: %d", modID, guessedModID); + } + + modName.update(guessedModName, GUESS_GOOD); + } + + m_CurrentFile = fileInfo.absoluteFilePath(); + if (fileInfo.dir() == QDir(m_DownloadsDirectory)) { + m_CurrentFile = fileInfo.fileName(); + } + qDebug("using mod name \"%s\" (id %d) -> %s", modName->toUtf8().constData(), modID, qPrintable(m_CurrentFile)); + + //If there's an archive already open, close it. This happens with the bundle + //installer when it uncompresses a split archive, then finds it has a real archive + //to deal with. + m_ArchiveHandler->close(); + + // open the archive and construct the directory tree the installers work on + bool archiveOpen = m_ArchiveHandler->open(fileName, + new MethodCallback<InstallationManager, void, QString *>(this, &InstallationManager::queryPassword)); + if (!archiveOpen) { + qDebug("integrated archiver can't open %s: %s (%d)", + qPrintable(fileName), + qPrintable(getErrorString(m_ArchiveHandler->getLastError())), + m_ArchiveHandler->getLastError()); + } + ON_BLOCK_EXIT(std::bind(&InstallationManager::postInstallCleanup, this)); + + QScopedPointer<DirectoryTree> filesTree(archiveOpen ? createFilesTree() : nullptr); + IPluginInstaller::EInstallResult installResult = IPluginInstaller::RESULT_NOTATTEMPTED; + + std::sort(m_Installers.begin(), m_Installers.end(), [] (IPluginInstaller *LHS, IPluginInstaller *RHS) { + return LHS->priority() > RHS->priority(); + }); + + for (IPluginInstaller *installer : m_Installers) { + // don't use inactive installers (installer can't be null here but vc static code analysis thinks it could) + if ((installer == nullptr) || !installer->isActive()) { + continue; + } + + // try only manual installers if that was requested + if (installResult == IPluginInstaller::RESULT_MANUALREQUESTED) { + if (!installer->isManualInstaller()) { + continue; + } + } else if (installResult != IPluginInstaller::RESULT_NOTATTEMPTED) { + break; + } + + try { + { // simple case + IPluginInstallerSimple *installerSimple + = dynamic_cast<IPluginInstallerSimple *>(installer); + if ((installerSimple != nullptr) && (filesTree != nullptr) + && (installer->isArchiveSupported(*filesTree))) { + installResult + = installerSimple->install(modName, *filesTree, version, modID); + if (installResult == IPluginInstaller::RESULT_SUCCESS) { + mapToArchive(filesTree.data()); + // the simple installer only prepares the installation, the rest + // works the same for all installers + if (!doInstall(modName, gameName, modID, version, newestVersion, categoryID, + repository)) { + installResult = IPluginInstaller::RESULT_FAILED; + } + } + } + } + + { // custom case + IPluginInstallerCustom *installerCustom + = dynamic_cast<IPluginInstallerCustom *>(installer); + if ((installerCustom != nullptr) + && (((filesTree != nullptr) + && installer->isArchiveSupported(*filesTree)) + || ((filesTree == nullptr) + && installerCustom->isArchiveSupported(fileName)))) { + std::set<QString> installerExt + = installerCustom->supportedExtensions(); + if (installerExt.find(fileInfo.suffix()) != installerExt.end()) { + installResult + = installerCustom->install(modName, gameName, fileName, version, modID); + unsigned int idx = ModInfo::getIndex(modName); + if (idx != UINT_MAX) { + ModInfo::Ptr info = ModInfo::getByIndex(idx); + info->setRepository(repository); + } + } + } + } + } catch (const IncompatibilityException &e) { + qCritical("plugin \"%s\" incompatible: %s", + qPrintable(installer->name()), e.what()); + } + + // act upon the installation result. at this point the files have already been + // extracted to the correct location + switch (installResult) { + case IPluginInstaller::RESULT_CANCELED: + case IPluginInstaller::RESULT_FAILED: { + return false; + } break; + case IPluginInstaller::RESULT_SUCCESS: + case IPluginInstaller::RESULT_SUCCESSCANCEL: { + if (filesTree != nullptr) { + DirectoryTree::node_iterator iniTweakNode = filesTree->nodeFind(DirectoryTreeInformation("INI Tweaks")); + hasIniTweaks = (iniTweakNode != filesTree->nodesEnd()) && + ((*iniTweakNode)->numLeafs() != 0); + return true; + } else { + return false; + } + } break; + } + } + + reportError(tr("None of the available installer plugins were able to handle that archive.\n" + "This is likely due to a corrupted or incompatible download or unrecognized archive format.")); + return false; +} + + + +QString InstallationManager::getErrorString(Archive::Error errorCode) +{ + switch (errorCode) { + case Archive::ERROR_NONE: { + return tr("no error"); + } break; + case Archive::ERROR_LIBRARY_NOT_FOUND: { + return tr("7z.dll not found"); + } break; + case Archive::ERROR_LIBRARY_INVALID: { + return tr("7z.dll isn't valid"); + } break; + case Archive::ERROR_ARCHIVE_NOT_FOUND: { + return tr("archive not found"); + } break; + case Archive::ERROR_FAILED_TO_OPEN_ARCHIVE: { + return tr("failed to open archive"); + } break; + case Archive::ERROR_INVALID_ARCHIVE_FORMAT: { + return tr("unsupported archive type"); + } break; + case Archive::ERROR_LIBRARY_ERROR: { + return tr("internal library error"); + } break; + case Archive::ERROR_ARCHIVE_INVALID: { + return tr("archive invalid"); + } break; + default: { + // this probably means the archiver.dll is newer than this + return tr("unknown archive error"); + } break; + } +} + + +void InstallationManager::registerInstaller(IPluginInstaller *installer) +{ + m_Installers.push_back(installer); + installer->setInstallationManager(this); + IPluginInstallerCustom *installerCustom = dynamic_cast<IPluginInstallerCustom*>(installer); + if (installerCustom != nullptr) { + std::set<QString> extensions = installerCustom->supportedExtensions(); + m_SupportedExtensions.insert(extensions.begin(), extensions.end()); + } +} + +QStringList InstallationManager::getSupportedExtensions() const +{ + QStringList result; + foreach (const QString &extension, m_SupportedExtensions) { + result.append(extension); + } + return result; +} diff --git a/src/installationmanager.h b/src/installationmanager.h index e17aee17..7c43b4e2 100644 --- a/src/installationmanager.h +++ b/src/installationmanager.h @@ -1,224 +1,227 @@ -/*
-Copyright (C) 2012 Sebastian Herbord. All rights reserved.
-
-This file is part of Mod Organizer.
-
-Mod Organizer is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-Mod Organizer is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef INSTALLATIONMANAGER_H
-#define INSTALLATIONMANAGER_H
-
-
-#include <iinstallationmanager.h>
-#include <iplugininstaller.h>
-#include <guessedvalue.h>
-
-#include <QObject>
-#define WIN32_LEAN_AND_MEAN
-#include <Windows.h>
-#include <archive.h>
-#include <QProgressDialog>
-#include <set>
-#include <errorcodes.h>
-
-
-/**
- * @brief manages the installation of mod archives
- * This currently supports two special kind of archives:
- * - "simple" archives: properly packaged archives without options, so they can be extracted to the (virtual) data directory directly
- * - "complex" bain archives: archives with options for the bain system.
- * All other archives are managed through the manual "InstallDialog"
- * @todo this may be a good place to support plugins
- **/
-class InstallationManager : public QObject, public MOBase::IInstallationManager
-{
- Q_OBJECT
-
-public:
-
- /**
- * @brief constructor
- *
- * @param parent parent object.
- **/
- explicit InstallationManager();
-
- virtual ~InstallationManager();
-
- void setParentWidget(QWidget *widget);
-
- void setURL(const QString &url);
-
- /**
- * @brief update the directory where mods are to be installed
- * @param modsDirectory the mod directory
- * @note this is called a lot, probably redundantly
- */
- void setModsDirectory(const QString &modsDirectory) { m_ModsDirectory = modsDirectory; }
-
- /**
- * @brief update the directory where downloads are stored
- * @param downloadDirectory the download directory
- */
- void setDownloadDirectory(const QString &downloadDirectory) { m_DownloadsDirectory = downloadDirectory; }
-
- /**
- * @brief install a mod from an archive
- *
- * @param fileName absolute file name of the archive to install
- * @param modName suggested name of the mod. If this is empty (the default), a name will be guessed based on the filename. The user will always have a chance to rename the mod
- * @return true if the archive was installed, false if installation failed or was refused
- * @exception std::exception an exception may be thrown if the archive can't be opened (maybe the format is invalid or the file is damaged)
- **/
- bool install(const QString &fileName, MOBase::GuessedValue<QString> &modName, bool &hasIniTweaks);
-
- /**
- * @return true if the installation was canceled
- **/
- bool wasCancelled();
-
- /**
- * @brief retrieve a string describing the specified error code
- *
- * @param errorCode an error code as returned by the archiving function
- * @return the error string
- * @todo This function doesn't belong here, it is only public because the SelfUpdater class also uses "Archive" to get to the package.txt file
- **/
- static QString getErrorString(Archive::Error errorCode);
-
- /**
- * @brief register an installer-plugin
- * @param the installer to register
- */
- void registerInstaller(MOBase::IPluginInstaller *installer);
-
- /**
- * @return list of file extensions we can install
- */
- QStringList getSupportedExtensions() const;
-
- /**
- * @brief extract the specified file from the currently open archive to a temporary location
- * @param (relative) name of the file within the archive
- * @return the absolute name of the temporary file
- * @note the call will fail with an exception if no archive is open (plugins deriving
- * from IPluginInstallerSimple can rely on that, custom installers shouldn't)
- * @note the temporary file is automatically cleaned up after the installation
- * @note This call can be very slow if the archive is large and "solid"
- */
- virtual QString extractFile(const QString &fileName);
-
- /**
- * @brief extract the specified files from the currently open archive to a temporary location
- * @param (relative) names of files within the archive
- * @return the absolute names of the temporary files
- * @note the call will fail with an exception if no archive is open (plugins deriving
- * from IPluginInstallerSimple can rely on that, custom installers shouldn't)
- * @note the temporary file is automatically cleaned up after the installation
- * @note This call can be very slow if the archive is large and "solid"
- */
- virtual QStringList extractFiles(const QStringList &files, bool flatten);
-
- /**
- * @brief installs an archive
- * @param modName suggested name of the mod
- * @param archiveFile path to the archive to install
- * @return the installation result
- */
- virtual MOBase::IPluginInstaller::EInstallResult installArchive(MOBase::GuessedValue<QString> &modName, const QString &archiveName);
-
- /**
- * @brief test if the specified mod name is free. If not, query the user how to proceed
- * @param modName current possible names for the mod
- * @param merge if this value is not null, the value will be set to whether the use chose to merge or replace
- * @return true if we can proceed with the installation, false if the user canceled or in case of an unrecoverable error
- */
- virtual bool testOverwrite(MOBase::GuessedValue<QString> &modName, bool *merge = nullptr) const;
-
-private:
-
- void queryPassword(QString *password);
- void updateProgress(float percentage);
- void updateProgressFile(const QString &fileName);
- void report7ZipError(const QString &errorMessage);
-
- MOBase::DirectoryTree *createFilesTree();
-
- // remap all files in the archive to the directory structure represented by baseNode
- // files not present in baseNode are disabled
- void mapToArchive(const MOBase::DirectoryTree::Node *baseNode);
-
- // recursive worker function for mapToArchive
- void mapToArchive(const MOBase::DirectoryTree::Node *node, QString path, FileData * const *data);
- bool unpackSingleFile(const QString &fileName);
-
-
- bool isSimpleArchiveTopLayer(const MOBase::DirectoryTree::Node *node, bool bainStyle);
- MOBase::DirectoryTree::Node *getSimpleArchiveBase(MOBase::DirectoryTree *dataTree);
-
- bool doInstall(MOBase::GuessedValue<QString> &modName, QString gameName,
- int modID, const QString &version, const QString &newestVersion, int categoryID, const QString &repository);
-
- QString generateBackupName(const QString &directoryName) const;
-
- bool ensureValidModName(MOBase::GuessedValue<QString> &name) const;
-
- void postInstallCleanup();
-
-signals:
-
- void progressUpdate(float percentage);
- void progressUpdate(QString const fileName);
-
-private:
-
- struct ByPriority {
- bool operator()(MOBase::IPluginInstaller *LHS, MOBase::IPluginInstaller *RHS) const
- {
- return LHS->priority() > RHS->priority();
- }
- };
-
- struct CaseInsensitive {
- bool operator() (const QString &LHS, const QString &RHS) const
- {
- return QString::compare(LHS, RHS, Qt::CaseInsensitive) < 0;
- }
- };
-
-private:
-
- QWidget *m_ParentWidget;
-
- QString m_ModsDirectory;
- QString m_DownloadsDirectory;
-
- std::vector<MOBase::IPluginInstaller*> m_Installers;
- std::set<QString, CaseInsensitive> m_SupportedExtensions;
-
- Archive *m_ArchiveHandler;
- QString m_CurrentFile;
-
- QProgressDialog *m_InstallationProgress { nullptr };
- int m_Progress;
- QString m_ProgressFile;
-
- std::set<QString> m_TempFilesToDelete;
-
- QString m_URL;
-};
-
-
-#endif // INSTALLATIONMANAGER_H
+/* +Copyright (C) 2012 Sebastian Herbord. All rights reserved. + +This file is part of Mod Organizer. + +Mod Organizer is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Mod Organizer is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef INSTALLATIONMANAGER_H +#define INSTALLATIONMANAGER_H + + +#include <iinstallationmanager.h> +#include <iplugininstaller.h> +#include <guessedvalue.h> + +#include <QObject> +#define WIN32_LEAN_AND_MEAN +#include <Windows.h> +#include <archive.h> +#include <QProgressDialog> +#include <set> +#include <errorcodes.h> + + +/** + * @brief manages the installation of mod archives + * This currently supports two special kind of archives: + * - "simple" archives: properly packaged archives without options, so they can be extracted to the (virtual) data directory directly + * - "complex" bain archives: archives with options for the bain system. + * All other archives are managed through the manual "InstallDialog" + * @todo this may be a good place to support plugins + **/ +class InstallationManager : public QObject, public MOBase::IInstallationManager +{ + Q_OBJECT + +public: + + /** + * @brief constructor + * + * @param parent parent object. + **/ + explicit InstallationManager(); + + virtual ~InstallationManager(); + + void setParentWidget(QWidget *widget); + + void setURL(const QString &url); + + /** + * @brief update the directory where mods are to be installed + * @param modsDirectory the mod directory + * @note this is called a lot, probably redundantly + */ + void setModsDirectory(const QString &modsDirectory) { m_ModsDirectory = modsDirectory; } + + /** + * @brief update the directory where downloads are stored + * @param downloadDirectory the download directory + */ + void setDownloadDirectory(const QString &downloadDirectory) { m_DownloadsDirectory = downloadDirectory; } + + /** + * @brief install a mod from an archive + * + * @param fileName absolute file name of the archive to install + * @param modName suggested name of the mod. If this is empty (the default), a name will be guessed based on the filename. The user will always have a chance to rename the mod + * @return true if the archive was installed, false if installation failed or was refused + * @exception std::exception an exception may be thrown if the archive can't be opened (maybe the format is invalid or the file is damaged) + **/ + bool install(const QString &fileName, MOBase::GuessedValue<QString> &modName, bool &hasIniTweaks, int modID = 0); + + /** + * @return true if the installation was canceled + **/ + bool wasCancelled(); + + /** + * @brief retrieve a string describing the specified error code + * + * @param errorCode an error code as returned by the archiving function + * @return the error string + * @todo This function doesn't belong here, it is only public because the SelfUpdater class also uses "Archive" to get to the package.txt file + **/ + static QString getErrorString(Archive::Error errorCode); + + /** + * @brief register an installer-plugin + * @param the installer to register + */ + void registerInstaller(MOBase::IPluginInstaller *installer); + + /** + * @return list of file extensions we can install + */ + QStringList getSupportedExtensions() const; + + /** + * @brief extract the specified file from the currently open archive to a temporary location + * @param (relative) name of the file within the archive + * @return the absolute name of the temporary file + * @note the call will fail with an exception if no archive is open (plugins deriving + * from IPluginInstallerSimple can rely on that, custom installers shouldn't) + * @note the temporary file is automatically cleaned up after the installation + * @note This call can be very slow if the archive is large and "solid" + */ + virtual QString extractFile(const QString &fileName); + + /** + * @brief extract the specified files from the currently open archive to a temporary location + * @param (relative) names of files within the archive + * @return the absolute names of the temporary files + * @note the call will fail with an exception if no archive is open (plugins deriving + * from IPluginInstallerSimple can rely on that, custom installers shouldn't) + * @note the temporary file is automatically cleaned up after the installation + * @note This call can be very slow if the archive is large and "solid" + */ + virtual QStringList extractFiles(const QStringList &files, bool flatten); + + /** + * @brief installs an archive + * @param modName suggested name of the mod + * @param archiveFile path to the archive to install + * @return the installation result + */ + virtual MOBase::IPluginInstaller::EInstallResult installArchive(MOBase::GuessedValue<QString> &modName, const QString &archiveName, const int &modId = 0); + + /** + * @brief test if the specified mod name is free. If not, query the user how to proceed + * @param modName current possible names for the mod + * @param merge if this value is not null, the value will be set to whether the use chose to merge or replace + * @return true if we can proceed with the installation, false if the user canceled or in case of an unrecoverable error + */ + virtual bool testOverwrite(MOBase::GuessedValue<QString> &modName, bool *merge = nullptr) const; + + QString generateBackupName(const QString &directoryName) const; + +private: + + void queryPassword(QString *password); + void updateProgress(float percentage); + void updateProgressFile(const QString &fileName); + void report7ZipError(const QString &errorMessage); + + MOBase::DirectoryTree *createFilesTree(); + + // remap all files in the archive to the directory structure represented by baseNode + // files not present in baseNode are disabled + void mapToArchive(const MOBase::DirectoryTree::Node *baseNode); + + // recursive worker function for mapToArchive + void mapToArchive(const MOBase::DirectoryTree::Node *node, QString path, FileData * const *data); + bool unpackSingleFile(const QString &fileName); + + + bool isSimpleArchiveTopLayer(const MOBase::DirectoryTree::Node *node, bool bainStyle); + MOBase::DirectoryTree::Node *getSimpleArchiveBase(MOBase::DirectoryTree *dataTree); + + bool doInstall(MOBase::GuessedValue<QString> &modName, QString gameName, + int modID, const QString &version, const QString &newestVersion, int categoryID, const QString &repository); + + //QString generateBackupName(const QString &directoryName) const; + + bool ensureValidModName(MOBase::GuessedValue<QString> &name) const; + + void postInstallCleanup(); + +signals: + + void progressUpdate(float percentage); + void progressUpdate(QString const fileName); + +private: + + struct ByPriority { + bool operator()(MOBase::IPluginInstaller *LHS, MOBase::IPluginInstaller *RHS) const + { + return LHS->priority() > RHS->priority(); + } + }; + + struct CaseInsensitive { + bool operator() (const QString &LHS, const QString &RHS) const + { + return QString::compare(LHS, RHS, Qt::CaseInsensitive) < 0; + } + }; + +private: + + QWidget *m_ParentWidget; + + QString m_ModsDirectory; + QString m_DownloadsDirectory; + + std::vector<MOBase::IPluginInstaller*> m_Installers; + std::set<QString, CaseInsensitive> m_SupportedExtensions; + + Archive *m_ArchiveHandler; + QString m_CurrentFile; + QString m_ErrorMessage; + + QProgressDialog *m_InstallationProgress { nullptr }; + int m_Progress; + QString m_ProgressFile; + + std::set<QString> m_TempFilesToDelete; + + QString m_URL; +}; + + +#endif // INSTALLATIONMANAGER_H diff --git a/src/instancemanager.cpp b/src/instancemanager.cpp index 1c6542e8..9066741d 100644 --- a/src/instancemanager.cpp +++ b/src/instancemanager.cpp @@ -66,6 +66,7 @@ void InstanceManager::clearCurrentInstance() { setCurrentInstance(""); m_Reset = true; + m_overrideInstance = false; } void InstanceManager::setCurrentInstance(const QString &name) @@ -136,12 +137,13 @@ QString InstanceManager::queryInstanceName(const QStringList &instanceList) cons QInputDialog dialog; dialog.setWindowTitle(QObject::tr("Enter a Name for the new Instance")); - dialog.setLabelText(QObject::tr("Enter a new name or select one from the suggested list:")); + dialog.setLabelText(QObject::tr("Enter a new name or select one from the suggested list: \n" + "(This is just the name of the Instance, not the game selection)")); // would be neat if we could take the names from the game plugins but // the required initialization order requires the ini file to be // available *before* we load plugins - dialog.setComboBoxItems({ "NewName", "Fallout 4", "SkyrimSE", "Skyrim", "Fallout 3", - "Fallout NV", "FO4VR", "Oblivion" }); + dialog.setComboBoxItems({ "NewName", "Fallout 4", "SkyrimSE", "Skyrim", "SkyrimVR", "Fallout 3", + "Fallout NV", "TTW", "FO4VR", "Oblivion", "Morrowind" }); dialog.setComboBoxEditable(true); if (dialog.exec() == QDialog::Rejected) { @@ -324,4 +326,4 @@ QString InstanceManager::sanitizeInstanceName(const QString &name) const return sanitizeInstanceName(new_name); } return new_name; -}
\ No newline at end of file +} diff --git a/src/iuserinterface.h b/src/iuserinterface.h index 7ce71c24..034fa029 100644 --- a/src/iuserinterface.h +++ b/src/iuserinterface.h @@ -8,6 +8,8 @@ #include <ipluginmodpage.h>
#include <delayedfilewriter.h>
+#include <QMenu>
+
class QSettings;
class IUserInterface
@@ -16,7 +18,8 @@ public: virtual void storeSettings(QSettings &settings) = 0;
- virtual void registerPluginTool(MOBase::IPluginTool *tool) = 0;
+ virtual void registerPluginTool(MOBase::IPluginTool *tool, QString name = QString(), QMenu *menu = nullptr) = 0;
+ virtual void registerPluginTools(std::vector<MOBase::IPluginTool *> toolPlugins) = 0;
virtual void registerModPage(MOBase::IPluginModPage *modPage) = 0;
virtual void installTranslator(const QString &name) = 0;
diff --git a/src/listdialog.cpp b/src/listdialog.cpp new file mode 100644 index 00000000..52bba80d --- /dev/null +++ b/src/listdialog.cpp @@ -0,0 +1,74 @@ +/* +This file is part of Mod Organizer. + +Mod Organizer is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Mod Organizer is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include "listdialog.h" +#include "ui_listdialog.h" + +ListDialog::ListDialog(QWidget *parent) + : QDialog(parent) + , ui(new Ui::ListDialog) + , m_Choices() +{ + ui->setupUi(this); + ui->filterEdit->setFocus(); +} + +ListDialog::~ListDialog() +{ + delete ui; +} + +void ListDialog::setChoices(QStringList choices) +{ + m_Choices = choices; + ui->choiceList->clear(); + ui->choiceList->addItems(m_Choices); +} + +QString ListDialog::getChoice() const +{ + if (ui->choiceList->selectedItems().length()) { + return ui->choiceList->currentItem()->text(); + } else { + return ""; + } +} + +void ListDialog::on_filterEdit_textChanged(QString filter) +{ + QStringList newChoices; + for (auto choice : m_Choices) { + if (choice.contains(filter, Qt::CaseInsensitive)){ + newChoices << choice; + } + } + ui->choiceList->clear(); + ui->choiceList->addItems(newChoices); + + if (newChoices.length() == 1) { + QListWidgetItem *item = ui->choiceList->item(0); + ui->choiceList->setItemSelected(item, true); + ui->choiceList->setCurrentItem(item); + } + + if (!filter.isEmpty()) { + ui->choiceList->setStyleSheet("QListWidget { border: 2px ridge #f00; }"); + } else { + ui->choiceList->setStyleSheet(""); + } +} + diff --git a/src/listdialog.h b/src/listdialog.h new file mode 100644 index 00000000..7b5a5461 --- /dev/null +++ b/src/listdialog.h @@ -0,0 +1,29 @@ +#ifndef LISTDIALOG_H +#define LISTDIALOG_H + +#include <QDialog> + +namespace Ui { +class ListDialog; +} + +class ListDialog : public QDialog +{ + Q_OBJECT + +public: + explicit ListDialog(QWidget *parent = nullptr); + ~ListDialog(); + + void setChoices(QStringList choices); + QString getChoice() const; + +public slots: + void on_filterEdit_textChanged(QString filter); + +private: + Ui::ListDialog *ui; + QStringList m_Choices; +}; + +#endif // LISTDIALOG_H diff --git a/src/listdialog.ui b/src/listdialog.ui new file mode 100644 index 00000000..7aa3eba0 --- /dev/null +++ b/src/listdialog.ui @@ -0,0 +1,103 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>ListDialog</class> + <widget class="QDialog" name="ListDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>260</width> + <height>380</height> + </rect> + </property> + <property name="windowTitle"> + <string>Select an item...</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QListWidget" name="choiceList"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>240</width> + <height>280</height> + </size> + </property> + <property name="verticalScrollMode"> + <enum>QAbstractItemView::ScrollPerPixel</enum> + </property> + </widget> + </item> + <item> + <widget class="MOBase::LineEditClear" name="filterEdit"> + <property name="text"> + <string/> + </property> + <property name="placeholderText"> + <string>Filter</string> + </property> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="layoutDirection"> + <enum>Qt::LeftToRight</enum> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>MOBase::LineEditClear</class> + <extends>QLineEdit</extends> + <header>lineeditclear.h</header> + </customwidget> + </customwidgets> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>ListDialog</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>ListDialog</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/src/main.cpp b/src/main.cpp index bfc3b926..4d2bb7ed 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -322,7 +322,7 @@ MOBase::IPluginGame *determineCurrentGame(QString const &moPath, QSettings &sett //The following code would try to determine the right game to mange but it would usually find the wrong one
//so it was commented out.
- /*
+ /*
//OK, we are in a new setup or existing info is useless.
//See if MO has been installed inside a game directory
for (IPluginGame * const game : plugins.plugins<IPluginGame>()) {
@@ -383,7 +383,7 @@ MOBase::IPluginGame *determineCurrentGame(QString const &moPath, QSettings &sett }
}
reportError(QObject::tr("No game identified in \"%1\". The directory is required to contain "
- "the game binary and its launcher.").arg(gamePath));
+ "the game binary.").arg(gamePath));
}
}
@@ -715,5 +715,6 @@ int main(int argc, char *argv[]) return result;
}
argc = 1;
+ moshortcut = MOShortcut("");
} while (true);
}
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 3c749bf5..954c88c6 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -84,6 +84,8 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. #include <taskprogressmanager.h>
#include <scopeguard.h>
#include <usvfs.h>
+#include "localsavegames.h"
+#include "listdialog.h"
#include <QAbstractItemDelegate>
#include <QAbstractProxyModel>
@@ -105,6 +107,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. #include <QDropEvent>
#include <QEvent>
#include <QFileDialog>
+#include <QFIleIconProvider>
#include <QFont>
#include <QFuture>
#include <QHash>
@@ -153,6 +156,8 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. #include <QWidgetAction>
#include <QWebEngineProfile>
#include <QShortcut>
+#include <QColorDialog>
+#include <QColor>
#include <QDebug>
#include <QtGlobal>
@@ -201,6 +206,7 @@ MainWindow::MainWindow(QSettings &initSettings , m_CategoryFactory(CategoryFactory::instance())
, m_ContextItem(nullptr)
, m_ContextAction(nullptr)
+ , m_ContextRow(-1)
, m_CurrentSaveView(nullptr)
, m_OrganizerCore(organizerCore)
, m_PluginContainer(pluginContainer)
@@ -261,7 +267,7 @@ MainWindow::MainWindow(QSettings &initSettings // insert spacers
ui->toolBar->insertWidget(action, spacer);
m_Sep = action;
- // m_Sep would only use the last seperator anyway, and we only have the one anyway?
+ // m_Sep would only use the last separator anyway, and we only have the one anyway?
break;
}
}
@@ -293,6 +299,7 @@ MainWindow::MainWindow(QSettings &initSettings ui->modList->header()->setSectionHidden(ModList::COL_MODID, true);
ui->modList->header()->setSectionHidden(ModList::COL_GAME, true);
ui->modList->header()->setSectionHidden(ModList::COL_INSTALLTIME, true);
+ ui->modList->header()->setSectionHidden(ModList::COL_NOTES, true);
}
ui->modList->header()->setSectionHidden(ModList::COL_NAME, false); // prevent the name-column from being hidden
@@ -306,7 +313,7 @@ MainWindow::MainWindow(QSettings &initSettings ui->espList->setItemDelegateForColumn(PluginList::COL_FLAGS, new GenericIconDelegate(ui->espList));
ui->espList->installEventFilter(m_OrganizerCore.pluginList());
- ui->bsaList->setLocalMoveOnly(true);
+ //ui->bsaList->setLocalMoveOnly(true);
bool pluginListAdjusted = registerWidgetState(ui->espList->objectName(), ui->espList->header(), "plugin_list_state");
registerWidgetState(ui->dataTree->objectName(), ui->dataTree->header());
@@ -325,6 +332,7 @@ MainWindow::MainWindow(QSettings &initSettings ui->linkButton->setMenu(linkMenu);
ui->listOptionsBtn->setMenu(modListContextMenu());
+ connect(ui->listOptionsBtn, SIGNAL(pressed()), this, SLOT(on_listOptionsBtn_pressed()));
ui->openFolderMenu->setMenu(openFolderMenu());
@@ -404,6 +412,8 @@ MainWindow::MainWindow(QSettings &initSettings new QShortcut(QKeySequence::Refresh, this, SLOT(refreshProfile_activated()));
+ new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_F), this, SLOT(search_activated()));
+ new QShortcut(QKeySequence(Qt::Key_Escape), this, SLOT(searchClear_activated()));
m_UpdateProblemsTimer.setSingleShot(true);
connect(&m_UpdateProblemsTimer, SIGNAL(timeout()), this, SLOT(updateProblemsButton()));
@@ -426,9 +436,8 @@ MainWindow::MainWindow(QSettings &initSettings for (const QString &fileName : m_PluginContainer.pluginFileNames()) {
installTranslator(QFileInfo(fileName).baseName());
}
- for (IPluginTool *toolPlugin : m_PluginContainer.plugins<IPluginTool>()) {
- registerPluginTool(toolPlugin);
- }
+
+ registerPluginTools(m_PluginContainer.plugins<IPluginTool>());
for (IPluginModPage *modPagePlugin : m_PluginContainer.plugins<IPluginModPage>()) {
registerModPage(modPagePlugin);
@@ -1029,15 +1038,57 @@ void MainWindow::modPagePluginInvoke() }
}
-void MainWindow::registerPluginTool(IPluginTool *tool)
+void MainWindow::registerPluginTool(IPluginTool *tool, QString name, QMenu *menu)
{
- QAction *action = new QAction(tool->icon(), tool->displayName(), ui->toolBar);
+ if (name.isEmpty())
+ name = tool->displayName();
+
+ QAction *action = new QAction(tool->icon(), name, ui->toolBar);
action->setToolTip(tool->tooltip());
tool->setParentWidget(this);
action->setData(qVariantFromValue((QObject*)tool));
connect(action, SIGNAL(triggered()), this, SLOT(toolPluginInvoke()), Qt::QueuedConnection);
- QToolButton *toolBtn = qobject_cast<QToolButton*>(ui->toolBar->widgetForAction(ui->actionTool));
- toolBtn->menu()->addAction(action);
+
+ if (menu == nullptr) {
+ QToolButton *toolBtn = qobject_cast<QToolButton*>(ui->toolBar->widgetForAction(ui->actionTool));
+ toolBtn->menu()->addAction(action);
+ } else {
+ menu->addAction(action);
+ }
+}
+
+void MainWindow::registerPluginTools(std::vector<IPluginTool *> toolPlugins)
+{
+ // Sort the plugins by display name
+ std::sort(toolPlugins.begin(), toolPlugins.end(),
+ [](IPluginTool *left, IPluginTool *right) {
+ return left->displayName().toLower() < right->displayName().toLower();
+ }
+ );
+
+ // Group the plugins into submenus
+ QMap<QString, QList<QPair<QString, IPluginTool *>>> submenuMap;
+ for (auto toolPlugin : toolPlugins) {
+ QStringList toolName = toolPlugin->displayName().split("/");
+ QString submenu = toolName[0];
+ toolName.pop_front();
+ submenuMap[submenu].append(QPair<QString, IPluginTool *>(toolName.join("/"), toolPlugin));
+ }
+
+ // Start registering plugins
+ for (auto submenuKey : submenuMap.keys()) {
+ if (submenuMap[submenuKey].length() > 1) {
+ QMenu *submenu = new QMenu(submenuKey, this);
+ for (auto info : submenuMap[submenuKey]) {
+ registerPluginTool(info.second, info.first, submenu);
+ }
+ QToolButton *toolBtn = qobject_cast<QToolButton*>(ui->toolBar->widgetForAction(ui->actionTool));
+ toolBtn->menu()->addMenu(submenu);
+ }
+ else {
+ registerPluginTool(submenuMap[submenuKey].front().second);
+ }
+ }
}
void MainWindow::registerModPage(IPluginModPage *modPage)
@@ -1132,11 +1183,70 @@ void MainWindow::on_profileBox_currentIndexChanged(int index) } else {
activateSelectedProfile();
}
+
+ LocalSavegames *saveGames = m_OrganizerCore.managedGame()->feature<LocalSavegames>();
+ if (saveGames != nullptr) {
+ if (saveGames->prepareProfile(m_OrganizerCore.currentProfile()))
+ refreshSaveList();
+ }
+
+ BSAInvalidation *invalidation = m_OrganizerCore.managedGame()->feature<BSAInvalidation>();
+ if (invalidation != nullptr) {
+ if (invalidation->prepareProfile(m_OrganizerCore.currentProfile()))
+ QTimer::singleShot(5, &m_OrganizerCore, SLOT(profileRefresh()));
+ }
}
}
-void MainWindow::updateTo(QTreeWidgetItem *subTree, const std::wstring &directorySoFar, const DirectoryEntry &directoryEntry, bool conflictsOnly)
+void MainWindow::updateTo(QTreeWidgetItem *subTree, const std::wstring &directorySoFar, const DirectoryEntry &directoryEntry, bool conflictsOnly, QIcon *fileIcon, QIcon *folderIcon)
{
+ bool isDirectory = true;
+ //QIcon folderIcon = (new QFileIconProvider())->icon(QFileIconProvider::Folder);
+ //QIcon fileIcon = (new QFileIconProvider())->icon(QFileIconProvider::File);
+
+ std::wostringstream temp;
+ temp << directorySoFar << "\\" << directoryEntry.getName();
+ {
+ std::vector<DirectoryEntry*>::const_iterator current, end;
+ directoryEntry.getSubDirectories(current, end);
+ for (; current != end; ++current) {
+ QString pathName = ToQString((*current)->getName());
+ QStringList columns(pathName);
+ columns.append("");
+ if (!(*current)->isEmpty()) {
+ QTreeWidgetItem *directoryChild = new QTreeWidgetItem(columns);
+ directoryChild->setData(0, Qt::DecorationRole, *folderIcon);
+ directoryChild->setData(0, Qt::UserRole + 3, isDirectory);
+
+ if (conflictsOnly) {
+ updateTo(directoryChild, temp.str(), **current, conflictsOnly, fileIcon, folderIcon);
+ if (directoryChild->childCount() != 0) {
+ subTree->addChild(directoryChild);
+ }
+ else {
+ delete directoryChild;
+ }
+ }
+ else {
+ QTreeWidgetItem *onDemandLoad = new QTreeWidgetItem(QStringList());
+ onDemandLoad->setData(0, Qt::UserRole + 0, "__loaded_on_demand__");
+ onDemandLoad->setData(0, Qt::UserRole + 1, ToQString(temp.str()));
+ onDemandLoad->setData(0, Qt::UserRole + 2, conflictsOnly);
+ directoryChild->addChild(onDemandLoad);
+ subTree->addChild(directoryChild);
+ }
+ }
+ else {
+ QTreeWidgetItem *directoryChild = new QTreeWidgetItem(columns);
+ directoryChild->setData(0, Qt::DecorationRole, *folderIcon);
+ directoryChild->setData(0, Qt::UserRole + 3, isDirectory);
+ subTree->addChild(directoryChild);
+ }
+ }
+ }
+
+
+ isDirectory = false;
{
for (const FileEntry::Ptr current : directoryEntry.getFiles()) {
if (conflictsOnly && (current->getAlternatives().size() == 0)) {
@@ -1173,6 +1283,8 @@ void MainWindow::updateTo(QTreeWidgetItem *subTree, const std::wstring &director fileChild->setFont(1, font);
}
fileChild->setData(0, Qt::UserRole, ToQString(current->getFullPath()));
+ fileChild->setData(0, Qt::DecorationRole, *fileIcon);
+ fileChild->setData(0, Qt::UserRole + 3, isDirectory);
fileChild->setData(0, Qt::UserRole + 1, isArchive);
fileChild->setData(1, Qt::UserRole, source);
fileChild->setData(1, Qt::UserRole + 1, originID);
@@ -1198,37 +1310,8 @@ void MainWindow::updateTo(QTreeWidgetItem *subTree, const std::wstring &director }
}
- std::wostringstream temp;
- temp << directorySoFar << "\\" << directoryEntry.getName();
- {
- std::vector<DirectoryEntry*>::const_iterator current, end;
- directoryEntry.getSubDirectories(current, end);
- for (; current != end; ++current) {
- QString pathName = ToQString((*current)->getName());
- QStringList columns(pathName);
- columns.append("");
- if (!(*current)->isEmpty()) {
- QTreeWidgetItem *directoryChild = new QTreeWidgetItem(columns);
- if (conflictsOnly) {
- updateTo(directoryChild, temp.str(), **current, conflictsOnly);
- if (directoryChild->childCount() != 0) {
- subTree->addChild(directoryChild);
- } else {
- delete directoryChild;
- }
- } else {
- QTreeWidgetItem *onDemandLoad = new QTreeWidgetItem(QStringList());
- onDemandLoad->setData(0, Qt::UserRole + 0, "__loaded_on_demand__");
- onDemandLoad->setData(0, Qt::UserRole + 1, ToQString(temp.str()));
- onDemandLoad->setData(0, Qt::UserRole + 2, conflictsOnly);
- directoryChild->addChild(onDemandLoad);
- subTree->addChild(directoryChild);
- }
- }
- }
- }
- subTree->sortChildren(0, Qt::AscendingOrder);
+ //subTree->sortChildren(0, Qt::AscendingOrder);
}
void MainWindow::delayedRemove()
@@ -1241,6 +1324,7 @@ void MainWindow::delayedRemove() void MainWindow::expandDataTreeItem(QTreeWidgetItem *item)
{
+
if ((item->childCount() == 1) && (item->child(0)->data(0, Qt::UserRole).toString() == "__loaded_on_demand__")) {
// read the data we need from the sub-item, then dispose of it
QTreeWidgetItem *onDemandDataItem = item->child(0);
@@ -1250,7 +1334,9 @@ void MainWindow::expandDataTreeItem(QTreeWidgetItem *item) std::wstring virtualPath = (path + L"\\").substr(6) + ToWString(item->text(0));
DirectoryEntry *dir = m_OrganizerCore.directoryStructure()->findSubDirectoryRecursive(virtualPath);
if (dir != nullptr) {
- updateTo(item, path, *dir, conflictsOnly);
+ QIcon folderIcon = (new QFileIconProvider())->icon(QFileIconProvider::Folder);
+ QIcon fileIcon = (new QFileIconProvider())->icon(QFileIconProvider::File);
+ updateTo(item, path, *dir, conflictsOnly, &fileIcon, &folderIcon);
} else {
qWarning("failed to update view of %ls", path.c_str());
}
@@ -1325,11 +1411,14 @@ void MainWindow::refreshDataTree() {
QCheckBox *conflictsBox = findChild<QCheckBox*>("conflictsCheckBox");
QTreeWidget *tree = findChild<QTreeWidget*>("dataTree");
+ QIcon folderIcon = (new QFileIconProvider())->icon(QFileIconProvider::Folder);
+ QIcon fileIcon = (new QFileIconProvider())->icon(QFileIconProvider::File);
tree->clear();
QStringList columns("data");
columns.append("");
QTreeWidgetItem *subTree = new QTreeWidgetItem(columns);
- updateTo(subTree, L"", *m_OrganizerCore.directoryStructure(), conflictsBox->isChecked());
+ subTree->setData(0, Qt::DecorationRole, (new QFileIconProvider())->icon(QFileIconProvider::Folder));
+ updateTo(subTree, L"", *m_OrganizerCore.directoryStructure(), conflictsBox->isChecked(), &fileIcon, &folderIcon);
tree->insertTopLevelItem(0, subTree);
subTree->setExpanded(true);
}
@@ -1338,7 +1427,8 @@ void MainWindow::refreshDataTreeKeepExpandedNodes() {
QCheckBox *conflictsBox = findChild<QCheckBox*>("conflictsCheckBox");
QTreeWidget *tree = findChild<QTreeWidget*>("dataTree");
-
+ QIcon folderIcon = (new QFileIconProvider())->icon(QFileIconProvider::Folder);
+ QIcon fileIcon = (new QFileIconProvider())->icon(QFileIconProvider::File);
QStringList expandedNodes;
QTreeWidgetItemIterator it1(tree, QTreeWidgetItemIterator::NotHidden | QTreeWidgetItemIterator::HasChildren);
while (*it1) {
@@ -1353,7 +1443,8 @@ void MainWindow::refreshDataTreeKeepExpandedNodes() QStringList columns("data");
columns.append("");
QTreeWidgetItem *subTree = new QTreeWidgetItem(columns);
- updateTo(subTree, L"", *m_OrganizerCore.directoryStructure(), conflictsBox->isChecked());
+ subTree->setData(0, Qt::DecorationRole, (new QFileIconProvider())->icon(QFileIconProvider::Folder));
+ updateTo(subTree, L"", *m_OrganizerCore.directoryStructure(), conflictsBox->isChecked(), &fileIcon, &folderIcon);
tree->insertTopLevelItem(0, subTree);
subTree->setExpanded(true);
QTreeWidgetItemIterator it2(tree, QTreeWidgetItemIterator::HasChildren);
@@ -1380,12 +1471,17 @@ QDir MainWindow::currentSavesDir() const if (m_OrganizerCore.currentProfile()->localSavesEnabled()) {
savesDir.setPath(m_OrganizerCore.currentProfile()->savePath());
} else {
+ QString iniPath = m_OrganizerCore.currentProfile()->localSettingsEnabled()
+ ? m_OrganizerCore.currentProfile()->absolutePath()
+ : m_OrganizerCore.managedGame()->documentsDirectory().absolutePath();
+ iniPath += "/" + m_OrganizerCore.managedGame()->iniFiles()[0];
+
wchar_t path[MAX_PATH];
::GetPrivateProfileStringW(
L"General", L"SLocalSavePath", L"Saves",
path, MAX_PATH,
- ToWString(m_OrganizerCore.currentProfile()->absolutePath() + "/" +
- m_OrganizerCore.managedGame()->iniFiles()[0]).c_str());
+ iniPath.toStdWString().c_str()
+ );
savesDir.setPath(m_OrganizerCore.managedGame()->documentsDirectory().absoluteFilePath(QString::fromWCharArray(path)));
}
@@ -1687,6 +1783,9 @@ void MainWindow::processUpdates() { lastHidden = hidden;
}
}
+ if (lastVersion < QVersionNumber(2,1,6)) {
+ ui->modList->header()->setSectionHidden(ModList::COL_NOTES, true);
+ }
}
if (currentVersion > lastVersion)
@@ -1699,21 +1798,31 @@ void MainWindow::processUpdates() { void MainWindow::storeSettings(QSettings &settings) {
settings.setValue("group_state", ui->groupCombo->currentIndex());
-
- settings.setValue("window_geometry", saveGeometry());
- settings.setValue("window_split", ui->splitter->saveState());
- settings.setValue("log_split", ui->topLevelSplitter->saveState());
-
- settings.setValue("browser_geometry", m_IntegratedBrowser.saveGeometry());
-
- settings.setValue("filters_visible", ui->displayCategoriesBtn->isChecked());
-
settings.setValue("selected_executable",
ui->executablesListBox->currentIndex());
- for (const std::pair<QString, QHeaderView*> kv : m_PersistedGeometry) {
- QString key = QString("geometry/") + kv.first;
- settings.setValue(key, kv.second->saveState());
+ if (settings.value("reset_geometry", false).toBool()) {
+ settings.remove("window_geometry");
+ settings.remove("window_split");
+ settings.remove("log_split");
+ settings.remove("filters_visible");
+ settings.remove("browser_geometry");
+ settings.beginGroup("geometry");
+ for (auto key : settings.childKeys()) {
+ settings.remove(key);
+ }
+ settings.endGroup();
+ settings.remove("reset_geometry");
+ } else {
+ settings.setValue("window_geometry", saveGeometry());
+ settings.setValue("window_split", ui->splitter->saveState());
+ settings.setValue("log_split", ui->topLevelSplitter->saveState());
+ settings.setValue("browser_geometry", m_IntegratedBrowser.saveGeometry());
+ settings.setValue("filters_visible", ui->displayCategoriesBtn->isChecked());
+ for (const std::pair<QString, QHeaderView*> kv : m_PersistedGeometry) {
+ QString key = QString("geometry/") + kv.first;
+ settings.setValue(key, kv.second->saveState());
+ }
}
}
@@ -1758,6 +1867,11 @@ void MainWindow::on_btnRefreshData_clicked() m_OrganizerCore.refreshDirectoryStructure();
}
+void MainWindow::on_btnRefreshDownloads_clicked()
+{
+ m_OrganizerCore.downloadManager()->refreshList();
+}
+
void MainWindow::on_tabWidget_currentChanged(int index)
{
if (index == 0) {
@@ -1765,7 +1879,7 @@ void MainWindow::on_tabWidget_currentChanged(int index) } else if (index == 1) {
m_OrganizerCore.refreshBSAList();
} else if (index == 2) {
- refreshDataTree();
+ refreshDataTreeKeepExpandedNodes();
} else if (index == 3) {
refreshSaveList();
}
@@ -1796,14 +1910,21 @@ void MainWindow::installMod(QString fileName) }
void MainWindow::on_startButton_clicked() {
- const Executable &selectedExecutable(getSelectedExecutable());
- QString customOverwrite = m_OrganizerCore.currentProfile()->setting("custom_overwrites", selectedExecutable.m_Title).toString();
- m_OrganizerCore.spawnBinary(
- selectedExecutable.m_BinaryInfo, selectedExecutable.m_Arguments,
- selectedExecutable.m_WorkingDirectory.length() != 0
- ? selectedExecutable.m_WorkingDirectory
- : selectedExecutable.m_BinaryInfo.absolutePath(),
- selectedExecutable.m_SteamAppID, customOverwrite);
+ ui->startButton->setEnabled(false);
+ try {
+ const Executable &selectedExecutable(getSelectedExecutable());
+ QString customOverwrite = m_OrganizerCore.currentProfile()->setting("custom_overwrites", selectedExecutable.m_Title).toString();
+ m_OrganizerCore.spawnBinary(
+ selectedExecutable.m_BinaryInfo, selectedExecutable.m_Arguments,
+ selectedExecutable.m_WorkingDirectory.length() != 0
+ ? selectedExecutable.m_WorkingDirectory
+ : selectedExecutable.m_BinaryInfo.absolutePath(),
+ selectedExecutable.m_SteamAppID, customOverwrite);
+ } catch (...) {
+ ui->startButton->setEnabled(true);
+ throw;
+ }
+ ui->startButton->setEnabled(true);
}
static HRESULT CreateShortcut(LPCWSTR targetFileName, LPCWSTR arguments,
@@ -1895,10 +2016,16 @@ bool MainWindow::modifyExecutablesDialog() EditExecutablesDialog dialog(*m_OrganizerCore.executablesList(),
*m_OrganizerCore.modList(),
m_OrganizerCore.currentProfile());
+ QSettings &settings = m_OrganizerCore.settings().directInterface();
+ QString key = QString("geometry/%1").arg(dialog.objectName());
+ if (settings.contains(key)) {
+ dialog.restoreGeometry(settings.value(key).toByteArray());
+ }
if (dialog.exec() == QDialog::Accepted) {
m_OrganizerCore.setExecutablesList(dialog.getExecutablesList());
result = true;
}
+ settings.setValue(key, dialog.saveGeometry());
refreshExecutablesList();
} catch (const std::exception &e) {
reportError(e.what());
@@ -1964,16 +2091,33 @@ void MainWindow::on_actionAdd_Profile_triggered() ProfilesDialog profilesDialog(m_OrganizerCore.currentProfile()->name(),
m_OrganizerCore.managedGame(),
this);
+ QSettings &settings = m_OrganizerCore.settings().directInterface();
+ QString key = QString("geometry/%1").arg(profilesDialog.objectName());
+ if (settings.contains(key)) {
+ profilesDialog.restoreGeometry(settings.value(key).toByteArray());
+ }
// workaround: need to disable monitoring of the saves directory, otherwise the active
// profile directory is locked
stopMonitorSaves();
profilesDialog.exec();
+ settings.setValue(key, profilesDialog.saveGeometry());
refreshSaveList(); // since the save list may now be outdated we have to refresh it completely
if (refreshProfiles() && !profilesDialog.failed()) {
break;
}
}
-// addProfile();
+
+ LocalSavegames *saveGames = m_OrganizerCore.managedGame()->feature<LocalSavegames>();
+ if (saveGames != nullptr) {
+ if (saveGames->prepareProfile(m_OrganizerCore.currentProfile()))
+ refreshSaveList();
+ }
+
+ BSAInvalidation *invalidation = m_OrganizerCore.managedGame()->feature<BSAInvalidation>();
+ if (invalidation != nullptr) {
+ if (invalidation->prepareProfile(m_OrganizerCore.currentProfile()))
+ QTimer::singleShot(5, &m_OrganizerCore, SLOT(profileRefresh()));
+ }
}
void MainWindow::on_actionModify_Executables_triggered()
@@ -2015,7 +2159,9 @@ void MainWindow::refresher_progress(int percent) if (percent == 100) {
m_RefreshProgress->setVisible(false);
statusBar()->hide();
+ this->setEnabled(true);
} else if (!m_RefreshProgress->isVisible()) {
+ this->setEnabled(false);
statusBar()->show();
m_RefreshProgress->setVisible(true);
m_RefreshProgress->setRange(0, 100);
@@ -2027,7 +2173,7 @@ void MainWindow::directory_refreshed() {
// some problem-reports may rely on the virtual directory tree so they need to be updated
// now
- refreshDataTree();
+ refreshDataTreeKeepExpandedNodes();
updateProblemsButton();
statusBar()->hide();
}
@@ -2206,6 +2352,7 @@ void MainWindow::refreshFilters() addFilterItem(nullptr, tr("<Checked>"), CategoryFactory::CATEGORY_SPECIAL_CHECKED, ModListSortProxy::TYPE_SPECIAL);
addFilterItem(nullptr, tr("<Unchecked>"), CategoryFactory::CATEGORY_SPECIAL_UNCHECKED, ModListSortProxy::TYPE_SPECIAL);
addFilterItem(nullptr, tr("<Update>"), CategoryFactory::CATEGORY_SPECIAL_UPDATEAVAILABLE, ModListSortProxy::TYPE_SPECIAL);
+ addFilterItem(nullptr, tr("<Mod Backup>"), CategoryFactory::CATEGORY_SPECIAL_BACKUP, ModListSortProxy::TYPE_SPECIAL);
addFilterItem(nullptr, tr("<Managed by MO>"), CategoryFactory::CATEGORY_SPECIAL_MANAGED, ModListSortProxy::TYPE_SPECIAL);
addFilterItem(nullptr, tr("<Managed outside MO>"), CategoryFactory::CATEGORY_SPECIAL_UNMANAGED, ModListSortProxy::TYPE_SPECIAL);
addFilterItem(nullptr, tr("<No category>"), CategoryFactory::CATEGORY_SPECIAL_NOCATEGORY, ModListSortProxy::TYPE_SPECIAL);
@@ -2307,13 +2454,13 @@ void MainWindow::modlistSelectionChanged(const QModelIndex ¤t, const QMode void MainWindow::modlistSelectionsChanged(const QItemSelection &selected)
{
- m_OrganizerCore.pluginList()->highlightPlugins(selected, *m_OrganizerCore.directoryStructure(), *m_OrganizerCore.currentProfile());
+ m_OrganizerCore.pluginList()->highlightPlugins(ui->modList->selectionModel(), *m_OrganizerCore.directoryStructure(), *m_OrganizerCore.currentProfile());
ui->espList->verticalScrollBar()->repaint();
}
void MainWindow::esplistSelectionsChanged(const QItemSelection &selected)
{
- m_OrganizerCore.modList()->highlightMods(selected, *m_OrganizerCore.directoryStructure());
+ m_OrganizerCore.modList()->highlightMods(ui->espList->selectionModel(), *m_OrganizerCore.directoryStructure());
ui->modList->verticalScrollBar()->repaint();
}
@@ -2335,7 +2482,7 @@ void MainWindow::removeMod_clicked() continue;
}
mods += "<li>" + name + "</li>";
- modNames.append(name);
+ modNames.append(ModInfo::getByIndex(idx.data(Qt::UserRole + 1).toInt())->name());
}
if (QMessageBox::question(this, tr("Confirm"),
tr("Remove the following mods?<br><ul>%1</ul>").arg(mods),
@@ -2391,6 +2538,16 @@ void MainWindow::reinstallMod_clicked() }
}
+void MainWindow::backupMod_clicked()
+{
+ ModInfo::Ptr modInfo = ModInfo::getByIndex(m_ContextRow);
+ QString backupDirectory = m_OrganizerCore.installationManager()->generateBackupName(modInfo->absolutePath());
+ if (!copyDir(modInfo->absolutePath(), backupDirectory, false)) {
+ QMessageBox::information(this, tr("Failed"),
+ tr("Failed to create backup."));
+ }
+ m_OrganizerCore.refreshModList();
+}
void MainWindow::resumeDownload(int downloadIndex)
{
@@ -2468,6 +2625,9 @@ void MainWindow::overwriteClosed(int) OverwriteInfoDialog *dialog = this->findChild<OverwriteInfoDialog*>("__overwriteDialog");
if (dialog != nullptr) {
m_OrganizerCore.modList()->modInfoChanged(dialog->modInfo());
+ QSettings &settings = m_OrganizerCore.settings().directInterface();
+ QString key = QString("geometry/%1").arg(dialog->objectName());
+ settings.setValue(key, dialog->saveGeometry());
dialog->deleteLater();
}
m_OrganizerCore.refreshDirectoryStructure();
@@ -2490,6 +2650,11 @@ void MainWindow::displayModInformation(ModInfo::Ptr modInfo, unsigned int index, } else {
qobject_cast<OverwriteInfoDialog*>(dialog)->setModInfo(modInfo);
}
+ QSettings &settings = m_OrganizerCore.settings().directInterface();
+ QString key = QString("geometry/%1").arg(dialog->objectName());
+ if (settings.contains(key)) {
+ dialog->restoreGeometry(settings.value(key).toByteArray());
+ }
dialog->show();
dialog->raise();
dialog->activateWindow();
@@ -2513,7 +2678,12 @@ void MainWindow::displayModInformation(ModInfo::Ptr modInfo, unsigned int index, dialog.openTab(tab);
}
- dialog.restoreTabState(m_OrganizerCore.settings().directInterface().value("mod_info_tabs").toByteArray());
+ dialog.restoreTabState(m_OrganizerCore.settings().directInterface().value("mod_info_tabs").toByteArray());
+ QSettings &settings = m_OrganizerCore.settings().directInterface();
+ QString key = QString("geometry/%1").arg(dialog.objectName());
+ if (settings.contains(key)) {
+ dialog.restoreGeometry(settings.value(key).toByteArray());
+ }
//If no tab was specified use the first tab from the left based on the user order.
if (tab == -1) {
@@ -2527,6 +2697,8 @@ void MainWindow::displayModInformation(ModInfo::Ptr modInfo, unsigned int index, dialog.exec();
m_OrganizerCore.settings().directInterface().setValue("mod_info_tabs", dialog.saveTabState());
+ settings.setValue(key, dialog.saveGeometry());
+
modInfo->saveMeta();
emit modInfoDisplayed();
@@ -2574,8 +2746,9 @@ void MainWindow::modOpenNext(int tab) ModInfo::Ptr mod = ModInfo::getByIndex(m_ContextRow);
std::vector<ModInfo::EFlag> flags = mod->getFlags();
if ((std::find(flags.begin(), flags.end(), ModInfo::FLAG_OVERWRITE) != flags.end()) ||
- (std::find(flags.begin(), flags.end(), ModInfo::FLAG_BACKUP) != flags.end())) {
- // skip overwrite and backups
+ (std::find(flags.begin(), flags.end(), ModInfo::FLAG_BACKUP) != flags.end()) ||
+ (std::find(flags.begin(), flags.end(), ModInfo::FLAG_SEPARATOR) != flags.end())) {
+ // skip overwrite and backups and separators
modOpenNext(tab);
} else {
displayModInformation(m_ContextRow,tab);
@@ -2594,8 +2767,9 @@ void MainWindow::modOpenPrev(int tab) ModInfo::Ptr mod = ModInfo::getByIndex(m_ContextRow);
std::vector<ModInfo::EFlag> flags = mod->getFlags();
if ((std::find(flags.begin(), flags.end(), ModInfo::FLAG_OVERWRITE) != flags.end()) ||
- (std::find(flags.begin(), flags.end(), ModInfo::FLAG_BACKUP) != flags.end())) {
- // skip overwrite and backups
+ (std::find(flags.begin(), flags.end(), ModInfo::FLAG_BACKUP) != flags.end()) ||
+ (std::find(flags.begin(), flags.end(), ModInfo::FLAG_SEPARATOR) != flags.end())) {
+ // skip overwrite and backups and separators
modOpenPrev(tab);
} else {
displayModInformation(m_ContextRow,tab);
@@ -2629,16 +2803,18 @@ void MainWindow::ignoreMissingData_clicked() for (QModelIndex idx : selection->selectedRows()) {
int row_idx = idx.data(Qt::UserRole + 1).toInt();
ModInfo::Ptr info = ModInfo::getByIndex(row_idx);
- QDir(info->absolutePath()).mkdir("textures");
+ //QDir(info->absolutePath()).mkdir("textures");
info->testValid();
+ info->markValidated(true);
connect(this, SIGNAL(modListDataChanged(QModelIndex, QModelIndex)), m_OrganizerCore.modList(), SIGNAL(dataChanged(QModelIndex, QModelIndex)));
emit modListDataChanged(m_OrganizerCore.modList()->index(row_idx, 0), m_OrganizerCore.modList()->index(row_idx, m_OrganizerCore.modList()->columnCount() - 1));
}
} else {
ModInfo::Ptr info = ModInfo::getByIndex(m_ContextRow);
- QDir(info->absolutePath()).mkdir("textures");
+ //QDir(info->absolutePath()).mkdir("textures");
info->testValid();
+ info->markValidated(true);
connect(this, SIGNAL(modListDataChanged(QModelIndex, QModelIndex)), m_OrganizerCore.modList(), SIGNAL(dataChanged(QModelIndex, QModelIndex)));
emit modListDataChanged(m_OrganizerCore.modList()->index(m_ContextRow, 0), m_OrganizerCore.modList()->index(m_ContextRow, m_OrganizerCore.modList()->columnCount() - 1));
@@ -2701,6 +2877,29 @@ void MainWindow::openExplorer_clicked() }
}
+void MainWindow::openOriginExplorer_clicked()
+{
+ QItemSelectionModel *selection = ui->espList->selectionModel();
+ if (selection->hasSelection() && selection->selectedRows().count() > 0) {
+ for (QModelIndex idx : selection->selectedRows()) {
+ QString fileName = idx.data().toString();
+ ModInfo::Ptr modInfo = ModInfo::getByIndex(ModInfo::getIndex(m_OrganizerCore.pluginList()->origin(fileName)));
+ std::vector<ModInfo::EFlag> flags = modInfo->getFlags();
+
+ ::ShellExecuteW(nullptr, L"explore", ToWString(modInfo->absolutePath()).c_str(), nullptr, nullptr, SW_SHOWNORMAL);
+ }
+ }
+ else {
+ QModelIndex idx = selection->currentIndex();
+ QString fileName = idx.data().toString();
+
+ ModInfo::Ptr modInfo = ModInfo::getByIndex(ModInfo::getIndex(m_OrganizerCore.pluginList()->origin(fileName)));
+ std::vector<ModInfo::EFlag> flags = modInfo->getFlags();
+
+ ::ShellExecuteW(nullptr, L"explore", ToWString(modInfo->absolutePath()).c_str(), nullptr, nullptr, SW_SHOWNORMAL);
+ }
+}
+
void MainWindow::openExplorer_activated()
{
if (ui->modList->hasFocus()) {
@@ -2744,6 +2943,32 @@ void MainWindow::refreshProfile_activated() m_OrganizerCore.profileRefresh();
}
+void MainWindow::search_activated()
+{
+ if (ui->modList->hasFocus() || ui->modFilterEdit->hasFocus()) {
+ ui->modFilterEdit->setFocus();
+ ui->modFilterEdit->setSelection(0, INT_MAX);
+ }
+
+ if (ui->espList->hasFocus() || ui->espFilterEdit->hasFocus()) {
+ ui->espFilterEdit->setFocus();
+ ui->espFilterEdit->setSelection(0, INT_MAX);
+ }
+}
+
+void MainWindow::searchClear_activated()
+{
+ if (ui->modFilterEdit->hasFocus()) {
+ ui->modFilterEdit->clear();
+ ui->modList->setFocus();
+ }
+
+ if (ui->espFilterEdit->hasFocus()) {
+ ui->espFilterEdit->clear();
+ ui->espList->setFocus();
+ }
+}
+
void MainWindow::information_clicked()
{
try {
@@ -2774,12 +2999,120 @@ void MainWindow::createEmptyMod_clicked() return;
}
+ int newPriority = -1;
+ if (m_ContextRow >= 0 && m_ModListSortProxy->sortColumn() == ModList::COL_PRIORITY) {
+ newPriority = m_OrganizerCore.currentProfile()->getModPriority(m_ContextRow);
+ }
+
IModInterface *newMod = m_OrganizerCore.createMod(name);
if (newMod == nullptr) {
return;
}
m_OrganizerCore.refreshModList();
+
+ if (newPriority >= 0) {
+ m_OrganizerCore.modList()->changeModPriority(ModInfo::getIndex(name), newPriority);
+ }
+}
+
+void MainWindow::createSeparator_clicked()
+{
+ GuessedValue<QString> name;
+ name.setFilter(&fixDirectoryName);
+ while (name->isEmpty())
+ {
+ bool ok;
+ name.update(QInputDialog::getText(this, tr("Create Separator..."),
+ tr("This will create a new separator.\n"
+ "Please enter a name:"), QLineEdit::Normal, "", &ok),
+ GUESS_USER);
+ if (!ok) { return; }
+ }
+ if (m_OrganizerCore.getMod(name) != nullptr)
+ {
+ reportError(tr("A separator with this name already exists"));
+ return;
+ }
+ name->append("_separator");
+ if (m_OrganizerCore.getMod(name) != nullptr)
+ {
+ return;
+ }
+
+ int newPriority = -1;
+ if (m_ContextRow >= 0 && m_ModListSortProxy->sortColumn() == ModList::COL_PRIORITY)
+ {
+ newPriority = m_OrganizerCore.currentProfile()->getModPriority(m_ContextRow);
+ }
+
+ if (m_OrganizerCore.createMod(name) == nullptr) { return; }
+ m_OrganizerCore.refreshModList();
+
+ if (newPriority >= 0)
+ {
+ m_OrganizerCore.modList()->changeModPriority(ModInfo::getIndex(name), newPriority);
+ }
+ QSettings &settings = m_OrganizerCore.settings().directInterface();
+ QColor previousColor = settings.value("previousSeparatorColor", QColor()).value<QColor>();
+ if (previousColor.isValid()) {
+ ModInfo::getByIndex(ModInfo::getIndex(name))->setColor(previousColor);
+ }
+
+}
+
+void MainWindow::setColor_clicked()
+{
+ QSettings &settings = m_OrganizerCore.settings().directInterface();
+ ModInfo::Ptr modInfo = ModInfo::getByIndex(m_ContextRow);
+ QColorDialog dialog(this);
+ QColor currentColor = modInfo->getColor();
+ QColor previousColor = settings.value("previousSeparatorColor", QColor()).value<QColor>();
+ if (currentColor.isValid())
+ dialog.setCurrentColor(currentColor);
+ else
+ dialog.setCurrentColor(previousColor);
+ if (!dialog.exec())
+ return;
+ currentColor = dialog.currentColor();
+ if (!currentColor.isValid())
+ return;
+ settings.setValue("previousSeparatorColor", currentColor);
+ QItemSelectionModel *selection = ui->modList->selectionModel();
+ if (selection->hasSelection() && selection->selectedRows().count() > 1) {
+ for (QModelIndex idx : selection->selectedRows()) {
+ ModInfo::Ptr info = ModInfo::getByIndex(idx.data(Qt::UserRole + 1).toInt());
+ auto flags = info->getFlags();
+ if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_SEPARATOR) != flags.end())
+ {
+ info->setColor(currentColor);
+ }
+ }
+ }
+ else {
+ modInfo->setColor(currentColor);
+ }
+}
+
+void MainWindow::resetColor_clicked()
+{
+ ModInfo::Ptr modInfo = ModInfo::getByIndex(m_ContextRow);
+ QColor color = QColor();
+ QItemSelectionModel *selection = ui->modList->selectionModel();
+ if (selection->hasSelection() && selection->selectedRows().count() > 1) {
+ for (QModelIndex idx : selection->selectedRows()) {
+ ModInfo::Ptr info = ModInfo::getByIndex(idx.data(Qt::UserRole + 1).toInt());
+ auto flags = info->getFlags();
+ if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_SEPARATOR) != flags.end())
+ {
+ info->setColor(color);
+ }
+ }
+ }
+ else {
+ modInfo->setColor(color);
+ }
+ Settings::instance().directInterface().remove("previousSeparatorColor");
}
void MainWindow::createModFromOverwrite()
@@ -2893,6 +3226,44 @@ void MainWindow::on_modList_doubleClicked(const QModelIndex &index) }
}
+void MainWindow::on_listOptionsBtn_pressed()
+{
+ m_ContextRow = -1;
+}
+
+void MainWindow::openOriginInformation_clicked()
+{
+ try {
+ QItemSelectionModel *selection = ui->espList->selectionModel();
+ //we don't want to open multiple modinfodialogs.
+ /*if (selection->hasSelection() && selection->selectedRows().count() > 0) {
+
+ for (QModelIndex idx : selection->selectedRows()) {
+ QString fileName = idx.data().toString();
+ ModInfo::Ptr modInfo = ModInfo::getByIndex(ModInfo::getIndex(m_OrganizerCore.pluginList()->origin(fileName)));
+ std::vector<ModInfo::EFlag> flags = modInfo->getFlags();
+
+ if (modInfo->isRegular() || (std::find(flags.begin(), flags.end(), ModInfo::FLAG_OVERWRITE) != flags.end())) {
+ displayModInformation(ModInfo::getIndex(m_OrganizerCore.pluginList()->origin(fileName)));
+ }
+ }
+ }
+ else {}*/
+ QModelIndex idx = selection->currentIndex();
+ QString fileName = idx.data().toString();
+
+ ModInfo::Ptr modInfo = ModInfo::getByIndex(ModInfo::getIndex(m_OrganizerCore.pluginList()->origin(fileName)));
+ std::vector<ModInfo::EFlag> flags = modInfo->getFlags();
+
+ if (modInfo->isRegular() || (std::find(flags.begin(), flags.end(), ModInfo::FLAG_OVERWRITE) != flags.end())) {
+ displayModInformation(ModInfo::getIndex(m_OrganizerCore.pluginList()->origin(fileName)));
+ }
+ }
+ catch (const std::exception &e) {
+ reportError(e.what());
+ }
+}
+
void MainWindow::on_espList_doubleClicked(const QModelIndex &index)
{
if (!index.isValid()) {
@@ -3268,7 +3639,11 @@ void MainWindow::disableVisibleMods() void MainWindow::openInstanceFolder()
{
- ::ShellExecuteW(nullptr, L"explore", ToWString(m_OrganizerCore.settings().getBaseDirectory()).c_str(), nullptr, nullptr, SW_SHOWNORMAL);
+ QString dataPath = qApp->property("dataPath").toString();
+ ::ShellExecuteW(nullptr, L"explore", ToWString(dataPath).c_str(), nullptr, nullptr, SW_SHOWNORMAL);
+
+ //opens BaseDirectory instead
+ //::ShellExecuteW(nullptr, L"explore", ToWString(m_OrganizerCore.settings().getBaseDirectory()).c_str(), nullptr, nullptr, SW_SHOWNORMAL);
}
void MainWindow::openLogsFolder()
@@ -3294,6 +3669,17 @@ void MainWindow::openProfileFolder() ::ShellExecuteW(nullptr, L"explore", ToWString(m_OrganizerCore.currentProfile()->absolutePath()).c_str(), nullptr, nullptr, SW_SHOWNORMAL);
}
+void MainWindow::openIniFolder()
+{
+ if (m_OrganizerCore.currentProfile()->localSettingsEnabled())
+ {
+ ::ShellExecuteW(nullptr, L"explore", ToWString(m_OrganizerCore.currentProfile()->absolutePath()).c_str(), nullptr, nullptr, SW_SHOWNORMAL);
+ }
+ else {
+ ::ShellExecuteW(nullptr, L"explore", ToWString(m_OrganizerCore.managedGame()->documentsDirectory().absolutePath()).c_str(), nullptr, nullptr, SW_SHOWNORMAL);
+ }
+}
+
void MainWindow::openDownloadsFolder()
{
::ShellExecuteW(nullptr, L"explore", ToWString(m_OrganizerCore.settings().getDownloadDirectory()).c_str(), nullptr, nullptr, SW_SHOWNORMAL);
@@ -3493,6 +3879,8 @@ QMenu *MainWindow::openFolderMenu() FolderMenu->addAction(tr("Open MyGames folder"), this, SLOT(openMyGamesFolder()));
+ FolderMenu->addAction(tr("Open INIs folder"), this, SLOT(openIniFolder()));
+
FolderMenu->addSeparator();
FolderMenu->addAction(tr("Open Instance folder"), this, SLOT(openInstanceFolder()));
@@ -3522,6 +3910,8 @@ QMenu *MainWindow::modListContextMenu() menu->addAction(tr("Create empty mod"), this, SLOT(createEmptyMod_clicked()));
+ menu->addAction(tr("Create Separator"), this, SLOT(createSeparator_clicked()));
+
menu->addSeparator();
menu->addAction(tr("Enable all visible"), this, SLOT(enableVisibleMods()));
@@ -3537,6 +3927,37 @@ QMenu *MainWindow::modListContextMenu() return menu;
}
+void MainWindow::addModSendToContextMenu(QMenu *menu)
+{
+ if (m_ModListSortProxy->sortColumn() != ModList::COL_PRIORITY)
+ return;
+
+ QMenu *sub_menu = new QMenu(this);
+ sub_menu->setTitle(tr("Send to"));
+ sub_menu->addAction(tr("Top"), this, SLOT(sendSelectedModsToTop_clicked()));
+ sub_menu->addAction(tr("Bottom"), this, SLOT(sendSelectedModsToBottom_clicked()));
+ sub_menu->addAction(tr("Priority..."), this, SLOT(sendSelectedModsToPriority_clicked()));
+ sub_menu->addAction(tr("Separator..."), this, SLOT(sendSelectedModsToSeparator_clicked()));
+
+ menu->addMenu(sub_menu);
+ menu->addSeparator();
+}
+
+void MainWindow::addPluginSendToContextMenu(QMenu *menu)
+{
+ if (m_PluginListSortProxy->sortColumn() != PluginList::COL_PRIORITY)
+ return;
+
+ QMenu *sub_menu = new QMenu(this);
+ sub_menu->setTitle(tr("Send to"));
+ sub_menu->addAction(tr("Top"), this, SLOT(sendSelectedPluginsToTop_clicked()));
+ sub_menu->addAction(tr("Bottom"), this, SLOT(sendSelectedPluginsToBottom_clicked()));
+ sub_menu->addAction(tr("Priority..."), this, SLOT(sendSelectedPluginsToPriority_clicked()));
+
+ menu->addMenu(sub_menu);
+ menu->addSeparator();
+}
+
void MainWindow::on_modList_customContextMenuRequested(const QPoint &pos)
{
try {
@@ -3554,6 +3975,7 @@ void MainWindow::on_modList_customContextMenuRequested(const QPoint &pos) menu = new QMenu(this);
allMods->setTitle(tr("All Mods"));
menu->addMenu(allMods);
+ menu->addSeparator();
ModInfo::Ptr info = ModInfo::getByIndex(m_ContextRow);
std::vector<ModInfo::EFlag> flags = info->getFlags();
if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_OVERWRITE) != flags.end()) {
@@ -3566,30 +3988,42 @@ void MainWindow::on_modList_customContextMenuRequested(const QPoint &pos) } else if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_BACKUP) != flags.end()) {
menu->addAction(tr("Restore Backup"), this, SLOT(restoreBackup_clicked()));
menu->addAction(tr("Remove Backup..."), this, SLOT(removeMod_clicked()));
+ } else if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_SEPARATOR) != flags.end()){
+ menu->addSeparator();
+ QMenu *addRemoveCategoriesMenu = new QMenu(tr("Change Categories"));
+ populateMenuCategories(addRemoveCategoriesMenu, 0);
+ connect(addRemoveCategoriesMenu, SIGNAL(aboutToHide()), this, SLOT(addRemoveCategories_MenuHandler()));
+ addMenuAsPushButton(menu, addRemoveCategoriesMenu);
+ QMenu *primaryCategoryMenu = new QMenu(tr("Primary Category"));
+ connect(primaryCategoryMenu, SIGNAL(aboutToShow()), this, SLOT(addPrimaryCategoryCandidates()));
+ addMenuAsPushButton(menu, primaryCategoryMenu);
+ menu->addSeparator();
+ menu->addAction(tr("Rename Separator..."), this, SLOT(renameMod_clicked()));
+ menu->addAction(tr("Remove Separator..."), this, SLOT(removeMod_clicked()));
+ menu->addSeparator();
+ addModSendToContextMenu(menu);
+ menu->addAction(tr("Select Color..."), this, SLOT(setColor_clicked()));
+ if(info->getColor().isValid())
+ menu->addAction(tr("Reset Color"), this, SLOT(resetColor_clicked()));
+ menu->addSeparator();
} else if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_FOREIGN) != flags.end()) {
- // nop, nothing to do with this mod
+ addModSendToContextMenu(menu);
} else {
QMenu *addRemoveCategoriesMenu = new QMenu(tr("Change Categories"));
populateMenuCategories(addRemoveCategoriesMenu, 0);
connect(addRemoveCategoriesMenu, SIGNAL(aboutToHide()), this, SLOT(addRemoveCategories_MenuHandler()));
addMenuAsPushButton(menu, addRemoveCategoriesMenu);
- //Removed as it was redundant, just making the categories look more complicated.
- /*
- QMenu *replaceCategoriesMenu = new QMenu(tr("Replace Categories"));
- populateMenuCategories(replaceCategoriesMenu, 0);
- connect(replaceCategoriesMenu, SIGNAL(aboutToHide()), this, SLOT(replaceCategories_MenuHandler()));
- addMenuAsPushButton(menu, replaceCategoriesMenu);
- */
-
QMenu *primaryCategoryMenu = new QMenu(tr("Primary Category"));
connect(primaryCategoryMenu, SIGNAL(aboutToShow()), this, SLOT(addPrimaryCategoryCandidates()));
addMenuAsPushButton(menu, primaryCategoryMenu);
menu->addSeparator();
+
if (info->downgradeAvailable()) {
menu->addAction(tr("Change versioning scheme"), this, SLOT(changeVersioningScheme()));
}
+
if (info->updateAvailable() || info->downgradeAvailable()) {
if (info->updateIgnored()) {
menu->addAction(tr("Un-ignore update"), this, SLOT(unignoreUpdate()));
@@ -3605,11 +4039,14 @@ void MainWindow::on_modList_customContextMenuRequested(const QPoint &pos) menu->addSeparator();
+ addModSendToContextMenu(menu);
+
menu->addAction(tr("Rename Mod..."), this, SLOT(renameMod_clicked()));
menu->addAction(tr("Reinstall Mod"), this, SLOT(reinstallMod_clicked()));
- menu->addAction(tr("Remove Mod..."), this, SLOT(removeMod_clicked()));
+ menu->addAction(tr("Remove Mod..."), this, SLOT(removeMod_clicked()));
+ menu->addAction(tr("Create Backup"), this, SLOT(backupMod_clicked()));
- menu->addSeparator();
+ menu->addSeparator();
if (info->getNexusID() > 0) {
switch (info->endorsedState()) {
@@ -3631,7 +4068,7 @@ void MainWindow::on_modList_customContextMenuRequested(const QPoint &pos) }
}
- menu->addSeparator();
+ menu->addSeparator();
std::vector<ModInfo::EFlag> flags = info->getFlags();
if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_INVALID) != flags.end()) {
@@ -3879,11 +4316,22 @@ void MainWindow::on_actionSettings_triggered() QString oldModDirectory(settings.getModDirectory());
QString oldCacheDirectory(settings.getCacheDirectory());
QString oldProfilesDirectory(settings.getProfileDirectory());
+ QString oldManagedGameDirectory(settings.getManagedGameDirectory());
bool oldDisplayForeign(settings.displayForeign());
bool proxy = settings.useProxy();
+ DownloadManager *dlManager = m_OrganizerCore.downloadManager();
settings.query(&m_PluginContainer, this);
+ if (oldManagedGameDirectory != settings.getManagedGameDirectory()) {
+ QMessageBox::about(this, tr("Restarting MO"),
+ tr("Changing the managed game directory requires restarting MO.\n"
+ "Any pending downloads will be paused.\n\n"
+ "Click OK to restart MO now."));
+ dlManager->pauseAll();
+ qApp->exit(INT_MAX);
+ }
+
InstallationManager *instManager = m_OrganizerCore.installationManager();
instManager->setModsDirectory(settings.getModDirectory());
instManager->setDownloadDirectory(settings.getDownloadDirectory());
@@ -3895,8 +4343,6 @@ void MainWindow::on_actionSettings_triggered() refreshProfiles();
}
- DownloadManager *dlManager = m_OrganizerCore.downloadManager();
-
if (dlManager->getOutputDirectory() != settings.getDownloadDirectory()) {
if (dlManager->downloadsInProgress()) {
MessageDialog::showMessage(tr("Can't change download directory while "
@@ -3925,7 +4371,7 @@ void MainWindow::on_actionSettings_triggered() updateDownloadListDelegate();
- m_OrganizerCore.updateVFSParams(settings.logLevel(), settings.crashDumpsType());
+ m_OrganizerCore.updateVFSParams(settings.logLevel(), settings.crashDumpsType(), settings.executablesBlacklist());
m_OrganizerCore.cycleDiagnostics();
}
@@ -4188,6 +4634,27 @@ void MainWindow::disableSelectedPlugins_clicked() m_OrganizerCore.pluginList()->disableSelected(ui->espList->selectionModel());
}
+void MainWindow::sendSelectedPluginsToTop_clicked()
+{
+ m_OrganizerCore.pluginList()->sendToPriority(ui->espList->selectionModel(), 0);
+}
+
+void MainWindow::sendSelectedPluginsToBottom_clicked()
+{
+ m_OrganizerCore.pluginList()->sendToPriority(ui->espList->selectionModel(), INT_MAX);
+}
+
+void MainWindow::sendSelectedPluginsToPriority_clicked()
+{
+ bool ok;
+ int newPriority = QInputDialog::getInt(this,
+ tr("Set Priority"), tr("Set the priority of the selected plugins"),
+ 0, 0, INT_MAX, 1, &ok);
+ if (!ok) return;
+
+ m_OrganizerCore.pluginList()->sendToPriority(ui->espList->selectionModel(), newPriority);
+}
+
void MainWindow::enableSelectedMods_clicked()
{
@@ -4255,7 +4722,13 @@ void MainWindow::previewDataFile() addFunc(alt.first);
}
if (preview.numVariants() > 0) {
+ QSettings &settings = m_OrganizerCore.settings().directInterface();
+ QString key = QString("geometry/%1").arg(preview.objectName());
+ if (settings.contains(key)) {
+ preview.restoreGeometry(settings.value(key).toByteArray());
+ }
preview.exec();
+ settings.setValue(key, preview.saveGeometry());
} else {
QMessageBox::information(this, tr("Sorry"), tr("Sorry, can't preview anything. This function currently does not support extracting from bsas."));
}
@@ -4327,7 +4800,8 @@ void MainWindow::on_dataTree_customContextMenuRequested(const QPoint &pos) m_ContextItem = dataTree->itemAt(pos.x(), pos.y());
QMenu menu;
- if ((m_ContextItem != nullptr) && (m_ContextItem->childCount() == 0)) {
+ if ((m_ContextItem != nullptr) && (m_ContextItem->childCount() == 0)
+ && (m_ContextItem->data(0, Qt::UserRole + 3).toBool() != true)) {
menu.addAction(tr("Open/Execute"), this, SLOT(openDataFile()));
menu.addAction(tr("Add as Executable"), this, SLOT(addAsExecutable()));
@@ -4355,7 +4829,7 @@ void MainWindow::on_dataTree_customContextMenuRequested(const QPoint &pos) void MainWindow::on_conflictsCheckBox_toggled(bool)
{
- refreshDataTree();
+ refreshDataTreeKeepExpandedNodes();
}
@@ -4517,7 +4991,7 @@ void MainWindow::nxmDownloadURLs(QString, int, int, QVariant, QVariant resultDat info.name = serverInfo["Name"].toString();
info.premium = serverInfo["IsPremium"].toBool();
info.lastSeen = QDate::currentDate();
- info.preferred = 0;
+ info.preferred = !info.name.compare("CDN", Qt::CaseInsensitive);
// other keys: ConnectedUsers, Country, URI
servers.append(info);
}
@@ -4716,9 +5190,16 @@ void MainWindow::on_displayCategoriesBtn_toggled(bool checked) void MainWindow::editCategories()
{
CategoriesDialog dialog(this);
+ QSettings &settings = m_OrganizerCore.settings().directInterface();
+ QString key = QString("geometry/%1").arg(dialog.objectName());
+ if (settings.contains(key)) {
+ dialog.restoreGeometry(settings.value(key).toByteArray());
+ }
if (dialog.exec() == QDialog::Accepted) {
dialog.commitChanges();
}
+ settings.setValue(key, dialog.saveGeometry());
+
}
void MainWindow::deselectFilters()
@@ -4800,6 +5281,10 @@ void MainWindow::on_espList_customContextMenuRequested(const QPoint &pos) menu.addAction(tr("Enable all"), m_OrganizerCore.pluginList(), SLOT(enableAll()));
menu.addAction(tr("Disable all"), m_OrganizerCore.pluginList(), SLOT(disableAll()));
+ menu.addSeparator();
+
+ addPluginSendToContextMenu(&menu);
+
QItemSelection currentSelection = ui->espList->selectionModel()->selection();
bool hasLocked = false;
bool hasUnlocked = false;
@@ -4814,8 +5299,6 @@ void MainWindow::on_espList_customContextMenuRequested(const QPoint &pos) }
}
- menu.addSeparator();
-
if (hasLocked) {
menu.addAction(tr("Unlock load order"), this, SLOT(unlockESPIndex()));
}
@@ -4823,6 +5306,18 @@ void MainWindow::on_espList_customContextMenuRequested(const QPoint &pos) menu.addAction(tr("Lock load order"), this, SLOT(lockESPIndex()));
}
+ menu.addSeparator();
+ menu.addAction(tr("Open Origin in Explorer"), this, SLOT(openOriginExplorer_clicked()));
+
+ QModelIndex idx = ui->espList->selectionModel()->currentIndex();
+ ModInfo::Ptr modInfo = ModInfo::getByIndex(ModInfo::getIndex(m_OrganizerCore.pluginList()->origin(idx.data().toString())));
+ std::vector<ModInfo::EFlag> flags = modInfo->getFlags();
+
+ if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_FOREIGN) == flags.end()) {
+ QAction *infoAction = menu.addAction(tr("Open Origin Info..."), this, SLOT(openOriginInformation_clicked()));
+ menu.setDefaultAction(infoAction);
+ }
+
try {
menu.exec(ui->espList->mapToGlobal(pos));
} catch (const std::exception &e) {
@@ -5410,3 +5905,91 @@ void MainWindow::on_clearFiltersButton_clicked() {
deselectFilters();
}
+
+void MainWindow::sendSelectedModsToPriority(int newPriority)
+{
+ QItemSelectionModel *selection = ui->modList->selectionModel();
+ if (selection->hasSelection() && selection->selectedRows().count() > 1) {
+ std::vector<int> modsToMove;
+ for (auto idx : selection->selectedRows(ModList::COL_PRIORITY)) {
+ modsToMove.push_back(m_OrganizerCore.currentProfile()->modIndexByPriority(idx.data().toInt()));
+ }
+ m_OrganizerCore.modList()->changeModPriority(modsToMove, newPriority);
+ } else {
+ m_OrganizerCore.modList()->changeModPriority(m_ContextRow, newPriority);
+ }
+}
+
+void MainWindow::sendSelectedModsToTop_clicked()
+{
+ sendSelectedModsToPriority(0);
+}
+
+void MainWindow::sendSelectedModsToBottom_clicked()
+{
+ sendSelectedModsToPriority(INT_MAX);
+}
+
+void MainWindow::sendSelectedModsToPriority_clicked()
+{
+ bool ok;
+ int newPriority = QInputDialog::getInt(this,
+ tr("Set Priority"), tr("Set the priority of the selected mods"),
+ 0, 0, INT_MAX, 1, &ok);
+ if (!ok) return;
+
+ sendSelectedModsToPriority(newPriority);
+}
+
+void MainWindow::sendSelectedModsToSeparator_clicked()
+{
+ QStringList separators;
+ for (auto mod : m_OrganizerCore.modList()->allMods()) {
+ ModInfo::Ptr modInfo = ModInfo::getByIndex(ModInfo::getIndex(mod));
+ if (modInfo->hasFlag(ModInfo::FLAG_SEPARATOR)) {
+ separators << mod.chopped(10);
+ }
+ }
+
+ ListDialog dialog(this);
+ QSettings &settings = m_OrganizerCore.settings().directInterface();
+ QString key = QString("geometry/%1").arg(dialog.objectName());
+
+ dialog.setWindowTitle("Select a separator...");
+ dialog.setChoices(separators);
+ dialog.restoreGeometry(settings.value(key).toByteArray());
+ if (dialog.exec() == QDialog::Accepted) {
+ QString result = dialog.getChoice();
+ if (!result.isEmpty()) {
+ result += "_separator";
+
+ int newPriority = INT_MAX;
+ bool foundSection = false;
+ for (auto mod : m_OrganizerCore.modsSortedByProfilePriority()) {
+ unsigned int modIndex = ModInfo::getIndex(mod);
+ ModInfo::Ptr modInfo = ModInfo::getByIndex(modIndex);
+ if (!foundSection && result.compare(mod) == 0) {
+ foundSection = true;
+ } else if (foundSection && modInfo->hasFlag(ModInfo::FLAG_SEPARATOR)) {
+ newPriority = m_OrganizerCore.currentProfile()->getModPriority(modIndex);
+ break;
+ }
+ }
+
+ QItemSelectionModel *selection = ui->modList->selectionModel();
+ if (selection->hasSelection() && selection->selectedRows().count() > 1) {
+ std::vector<int> modsToMove;
+ for (QModelIndex idx : selection->selectedRows(ModList::COL_PRIORITY)) {
+ modsToMove.push_back(m_OrganizerCore.currentProfile()->modIndexByPriority(idx.data().toInt()));
+ }
+ m_OrganizerCore.modList()->changeModPriority(modsToMove, newPriority);
+ } else {
+ int oldPriority = m_OrganizerCore.currentProfile()->getModPriority(m_ContextRow);
+ if (oldPriority < newPriority)
+ --newPriority;
+ m_OrganizerCore.modList()->changeModPriority(m_ContextRow, newPriority);
+ }
+ }
+ }
+ settings.setValue(key, dialog.saveGeometry());
+}
diff --git a/src/mainwindow.h b/src/mainwindow.h index ad0972da..e799a64a 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -132,7 +132,8 @@ public: void saveArchiveList();
- void registerPluginTool(MOBase::IPluginTool *tool);
+ void registerPluginTool(MOBase::IPluginTool *tool, QString name = QString(), QMenu *menu = nullptr);
+ void registerPluginTools(std::vector<MOBase::IPluginTool *> toolPlugins);
void registerModPage(MOBase::IPluginModPage *modPage);
void addPrimaryCategoryCandidates(QMenu *primaryCategoryMenu, ModInfo::Ptr info);
@@ -210,7 +211,7 @@ private: void startSteam();
- void updateTo(QTreeWidgetItem *subTree, const std::wstring &directorySoFar, const MOShared::DirectoryEntry &directoryEntry, bool conflictsOnly);
+ void updateTo(QTreeWidgetItem *subTree, const std::wstring &directorySoFar, const MOShared::DirectoryEntry &directoryEntry, bool conflictsOnly, QIcon *fileIcon, QIcon *folderIcon);
bool refreshProfiles(bool selectProfile = true);
void refreshExecutablesList();
void installMod(QString fileName = "");
@@ -278,6 +279,8 @@ private: QString queryRestore(const QString &filePath);
QMenu *modListContextMenu();
+ void addModSendToContextMenu(QMenu *menu);
+ void addPluginSendToContextMenu(QMenu *menu);
QMenu *openFolderMenu();
@@ -294,6 +297,9 @@ private: bool registerWidgetState(const QString &name, QHeaderView *view, const char *oldSettingName = nullptr);
+ void sendSelectedModsToPriority(int newPriority);
+ void sendSelectedPluginsToPriority(int newPriority);
+
private:
static const char *PATTERN_BACKUP_GLOB;
@@ -404,9 +410,13 @@ private slots: // modlist context menu
void installMod_clicked();
void createEmptyMod_clicked();
+ void createSeparator_clicked();
void restoreBackup_clicked();
void renameMod_clicked();
void removeMod_clicked();
+ void setColor_clicked();
+ void resetColor_clicked();
+ void backupMod_clicked();
void reinstallMod_clicked();
void endorse_clicked();
void dontendorse_clicked();
@@ -416,9 +426,15 @@ private slots: void visitOnNexus_clicked();
void visitWebPage_clicked();
void openExplorer_clicked();
+ void openOriginExplorer_clicked();
+ void openOriginInformation_clicked();
void information_clicked();
void enableSelectedMods_clicked();
void disableSelectedMods_clicked();
+ void sendSelectedModsToTop_clicked();
+ void sendSelectedModsToBottom_clicked();
+ void sendSelectedModsToPriority_clicked();
+ void sendSelectedModsToSeparator_clicked();
// savegame context menu
void deleteSavegame_clicked();
void fixMods_clicked(SaveGameInfo::MissingAssets const &missingAssets);
@@ -433,6 +449,9 @@ private slots: // pluginlist context menu
void enableSelectedPlugins_clicked();
void disableSelectedPlugins_clicked();
+ void sendSelectedPluginsToTop_clicked();
+ void sendSelectedPluginsToBottom_clicked();
+ void sendSelectedPluginsToPriority_clicked();
void linkToolbar();
void linkDesktop();
@@ -510,6 +529,7 @@ private slots: void openDownloadsFolder();
void openModsFolder();
void openProfileFolder();
+ void openIniFolder();
void openGameFolder();
void openMyGamesFolder();
void startExeAction();
@@ -561,6 +581,9 @@ private slots: void modlistSelectionsChanged(const QItemSelection ¤t);
void esplistSelectionsChanged(const QItemSelection ¤t);
+ void search_activated();
+ void searchClear_activated();
+
private slots: // ui slots
// actions
void on_actionAdd_Profile_triggered();
@@ -575,12 +598,14 @@ private slots: // ui slots void on_bsaList_customContextMenuRequested(const QPoint &pos);
void on_clearFiltersButton_clicked();
void on_btnRefreshData_clicked();
+ void on_btnRefreshDownloads_clicked();
void on_categoriesList_customContextMenuRequested(const QPoint &pos);
void on_conflictsCheckBox_toggled(bool checked);
void on_dataTree_customContextMenuRequested(const QPoint &pos);
void on_executablesListBox_currentIndexChanged(int index);
void on_modList_customContextMenuRequested(const QPoint &pos);
void on_modList_doubleClicked(const QModelIndex &index);
+ void on_listOptionsBtn_pressed();
void on_espList_doubleClicked(const QModelIndex &index);
void on_profileBox_currentIndexChanged(int index);
void on_savegameList_customContextMenuRequested(const QPoint &pos);
diff --git a/src/mainwindow.ui b/src/mainwindow.ui index cf0f2aa4..e42bed27 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -65,13 +65,13 @@ <widget class="QTreeWidget" name="categoriesList">
<property name="minimumSize">
<size>
- <width>100</width>
+ <width>120</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
- <width>161</width>
+ <width>214</width>
<height>16777215</height>
</size>
</property>
@@ -84,6 +84,9 @@ <property name="indentation">
<number>0</number>
</property>
+ <property name="uniformRowHeights">
+ <bool>true</bool>
+ </property>
<attribute name="headerVisible">
<bool>false</bool>
</attribute>
@@ -432,6 +435,9 @@ p, li { white-space: pre-wrap; } <property name="indentation">
<number>20</number>
</property>
+ <property name="uniformRowHeights">
+ <bool>true</bool>
+ </property>
<property name="itemsExpandable">
<bool>true</bool>
</property>
@@ -825,9 +831,6 @@ p, li { white-space: pre-wrap; } <layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<widget class="QPushButton" name="bossButton">
- <property name="visible">
- <bool>true</bool>
- </property>
<property name="text">
<string>Sort</string>
</property>
@@ -1042,7 +1045,7 @@ p, li { white-space: pre-wrap; } </layout>
</item>
<item>
- <widget class="MOBase::SortableTreeWidget" name="bsaList">
+ <widget class="QTreeWidget" name="bsaList">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
@@ -1058,21 +1061,26 @@ p, li { white-space: pre-wrap; } <property name="showDropIndicator" stdset="0">
<bool>false</bool>
</property>
- <property name="dragEnabled" stdset="0">
+ <property name="dragEnabled">
<bool>false</bool>
</property>
- <property name="dragDropOverwriteMode" stdset="0">
+ <property name="dragDropOverwriteMode">
<bool>false</bool>
</property>
- <property name="indentation" stdset="0">
+ <property name="indentation">
<number>20</number>
</property>
- <property name="itemsExpandable" stdset="0">
+ <property name="itemsExpandable">
<bool>true</bool>
</property>
- <property name="columnCount" stdset="0">
+ <property name="columnCount">
<number>1</number>
</property>
+ <column>
+ <property name="text">
+ <string notr="true">Archives</string>
+ </property>
+ </column>
</widget>
</item>
</layout>
@@ -1121,6 +1129,9 @@ p, li { white-space: pre-wrap; } <property name="whatsThis">
<string>This is an overview of your data directory as visible to the game (and tools). </string>
</property>
+ <property name="uniformRowHeights">
+ <bool>true</bool>
+ </property>
<property name="animated">
<bool>true</bool>
</property>
@@ -1186,7 +1197,7 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This is a list of all savegames for this game. Hover over a list entry to get detailed information about the save including a list of esps/esms that were used at the time this save was created but aren't active now.</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This is a list of all save games for this game. Hover over a list entry to get detailed information about the save including a list of esps/esms that were used at the time this save was created but aren't active now.</span></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">If you click &quot;Fix Mods...&quot; in the context menu, MO will try to activate all mods and esps to fix those missing esps. It will not disable anything!</span></p></body></html></string>
</property>
@@ -1218,6 +1229,20 @@ p, li { white-space: pre-wrap; } <number>2</number>
</property>
<item>
+ <widget class="QPushButton" name="btnRefreshDownloads">
+ <property name="toolTip">
+ <string>Refresh downloads view</string>
+ </property>
+ <property name="text">
+ <string>Refresh</string>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/MO/gui/resources/view-refresh.png</normaloff>:/MO/gui/resources/view-refresh.png</iconset>
+ </property>
+ </widget>
+ </item>
+ <item>
<layout class="QVBoxLayout" name="downloadLayout">
<item>
<widget class="QTreeView" name="downloadView">
@@ -1243,7 +1268,7 @@ p, li { white-space: pre-wrap; } <enum>Qt::ScrollBarAlwaysOn</enum>
</property>
<property name="horizontalScrollBarPolicy">
- <enum>Qt::ScrollBarAsNeeded</enum>
+ <enum>Qt::ScrollBarAsNeeded</enum>
</property>
<property name="dragEnabled">
<bool>true</bool>
@@ -1278,7 +1303,7 @@ p, li { white-space: pre-wrap; } <attribute name="headerDefaultSectionSize">
<number>50</number>
</attribute>
- <attribute name="headerMinimumSectionSize">
+ <attribute name="headerMinimumSectionSize">
<number>15</number>
</attribute>
<attribute name="headerStretchLastSection">
@@ -1336,6 +1361,9 @@ p, li { white-space: pre-wrap; } <property name="selectionMode">
<enum>QAbstractItemView::NoSelection</enum>
</property>
+ <property name="uniformRowHeights">
+ <bool>true</bool>
+ </property>
<property name="itemsExpandable">
<bool>false</bool>
</property>
diff --git a/src/modinfo.cpp b/src/modinfo.cpp index 91f3c1a1..1c6139f6 100644 --- a/src/modinfo.cpp +++ b/src/modinfo.cpp @@ -23,6 +23,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. #include "modinforegular.h" #include "modinfoforeign.h" #include "modinfooverwrite.h" +#include "modinfoseparator.h" #include "installationtester.h" #include "categories.h" @@ -64,11 +65,14 @@ bool ModInfo::ByName(const ModInfo::Ptr &LHS, const ModInfo::Ptr &RHS) ModInfo::Ptr ModInfo::createFrom(PluginContainer *pluginContainer, const MOBase::IPluginGame *game, const QDir &dir, DirectoryEntry **directoryStructure) { QMutexLocker locker(&s_Mutex); -// int id = s_NextID++; + // int id = s_NextID++; static QRegExp backupExp(".*backup[0-9]*"); + static QRegExp separatorExp(".*_separator"); ModInfo::Ptr result; if (backupExp.exactMatch(dir.dirName())) { result = ModInfo::Ptr(new ModInfoBackup(pluginContainer, game, dir, directoryStructure)); + } else if(separatorExp.exactMatch(dir.dirName())){ + result = Ptr(new ModInfoSeparator(pluginContainer, game, dir, directoryStructure)); } else { result = ModInfo::Ptr(new ModInfoRegular(pluginContainer, game, dir, directoryStructure)); } @@ -100,9 +104,12 @@ QString ModInfo::getContentTypeName(int contentType) case CONTENT_SOUND: return tr("Sound Effects"); case CONTENT_SCRIPT: return tr("Scripts"); case CONTENT_SKSE: return tr("Script Extender"); + case CONTENT_SKSEFILES: return tr("Script Extender Files"); case CONTENT_SKYPROC: return tr("SkyProc Tools"); case CONTENT_MCM: return tr("MCM Data"); case CONTENT_INI: return tr("INI files"); + case CONTENT_MODGROUP: return tr("ModGroup files"); + default: throw MyException(tr("invalid content type %1").arg(contentType)); } } @@ -415,4 +422,4 @@ void ModInfo::testValid() while (dirIter.hasNext()) { dirIter.next(); } -}
\ No newline at end of file +} diff --git a/src/modinfo.h b/src/modinfo.h index 4cdd7bcf..5a69185d 100644 --- a/src/modinfo.h +++ b/src/modinfo.h @@ -31,6 +31,7 @@ class QDir; #include <QSharedPointer>
#include <QString>
#include <QStringList>
+#include <QColor>
#include <boost/function.hpp>
@@ -43,7 +44,7 @@ namespace MOShared { class DirectoryEntry; } /**
* @brief Represents meta information about a single mod.
- *
+ *
* Represents meta information about a single mod. The class interface is used
* to manage the mod collection
*
@@ -62,6 +63,7 @@ public: enum EFlag {
FLAG_INVALID,
FLAG_BACKUP,
+ FLAG_SEPARATOR,
FLAG_OVERWRITE,
FLAG_FOREIGN,
FLAG_NOTENDORSED,
@@ -83,12 +85,15 @@ public: CONTENT_SOUND,
CONTENT_SCRIPT,
CONTENT_SKSE,
+ CONTENT_SKSEFILES,
CONTENT_SKYPROC,
CONTENT_MCM,
- CONTENT_INI
+ CONTENT_INI,
+ CONTENT_MODGROUP
+
};
- static const int NUM_CONTENT_TYPES = CONTENT_INI + 1;
+ static const int NUM_CONTENT_TYPES = CONTENT_MODGROUP + 1;
enum EHighlight {
HIGHLIGHT_NONE = 0,
@@ -264,6 +269,12 @@ public: virtual void setCategory(int categoryID, bool active) = 0;
/**
+ * @brief changes the comments (manually set information displayed in the mod list) for this mod
+ * @param comments new comments
+ */
+ virtual void setComments(const QString &comments) = 0;
+
+ /**
* @brief change the notes (manually set information) for this mod
* @param notes new notes
*/
@@ -491,6 +502,11 @@ public: virtual QString getDescription() const = 0;
/**
+ * @return comments for this mod
+ */
+ virtual QString comments() const = 0;
+
+ /**
* @return notes for this mod
*/
virtual QString notes() const = 0;
@@ -520,6 +536,16 @@ public: */
virtual QStringList archives() const = 0;
+ /*
+ *@return the color choosen by the user for the mod/separator
+ */
+ virtual QColor getColor() { return QColor(); }
+
+ /*
+ *@return true if the color has been set successfully.
+ */
+ virtual void setColor(QColor color) { }
+
/**
* @brief adds the information that a file has been installed into this mod
* @param modId id of the mod installed
@@ -557,7 +583,7 @@ public: /**
* @return true if this mod is considered "valid", that is: it contains data used by the game
**/
- bool isValid() const { return m_Valid; }
+ virtual bool isValid() const { return m_Valid; }
/**
* @return true if the file has been endorsed on nexus
@@ -575,6 +601,11 @@ public: virtual void markConverted(bool converted) {}
/**
+ * @brief updates the mod to flag it as valid in order to ignore the invalid game data flag
+ */
+ virtual void markValidated(bool validated) {}
+
+ /**
* @brief reads meta information from disk
*/
virtual void readMeta() {}
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp index 12654755..416eca58 100644 --- a/src/modinfodialog.cpp +++ b/src/modinfodialog.cpp @@ -112,6 +112,7 @@ ModInfoDialog::ModInfoDialog(ModInfo::Ptr modInfo, const DirectoryEntry *directo }
ui->sourceGameEdit->setCurrentIndex(ui->sourceGameEdit->findData(gameName));
+ ui->commentsEdit->setText(modInfo->comments());
ui->notesEdit->setText(modInfo->notes());
ui->descriptionView->setPage(new DescriptionPage);
@@ -134,7 +135,22 @@ ModInfoDialog::ModInfoDialog(ModInfo::Ptr modInfo, const DirectoryEntry *directo refreshLists();
- if (unmanaged) {
+ if (modInfo->hasFlag(ModInfo::FLAG_SEPARATOR))
+ {
+ ui->tabWidget->setTabEnabled(TAB_TEXTFILES, false);
+ ui->tabWidget->setTabEnabled(TAB_INIFILES, false);
+ ui->tabWidget->setTabEnabled(TAB_IMAGES, false);
+ ui->tabWidget->setTabEnabled(TAB_ESPS, false);
+ ui->tabWidget->setTabEnabled(TAB_CONFLICTS, false);
+ //ui->tabWidget->setTabEnabled(TAB_CATEGORIES, false);
+ addCategories(CategoryFactory::instance(), modInfo->getCategories(), ui->categoriesTree->invisibleRootItem(), 0);
+ refreshPrimaryCategoriesBox();
+ ui->tabWidget->setTabEnabled(TAB_NEXUS, false);
+ //ui->tabWidget->setTabEnabled(TAB_NOTES, false);
+ ui->tabWidget->setTabEnabled(TAB_FILETREE, false);
+ }
+ else if (unmanaged)
+ {
ui->tabWidget->setTabEnabled(TAB_INIFILES, false);
ui->tabWidget->setTabEnabled(TAB_CATEGORIES, false);
ui->tabWidget->setTabEnabled(TAB_NEXUS, false);
@@ -174,6 +190,7 @@ ModInfoDialog::ModInfoDialog(ModInfo::Ptr modInfo, const DirectoryEntry *directo ModInfoDialog::~ModInfoDialog()
{
+ m_ModInfo->setComments(ui->commentsEdit->text());
m_ModInfo->setNotes(ui->notesEdit->toPlainText());
saveCategories(ui->categoriesTree->invisibleRootItem());
saveIniTweaks(); // ini tweaks are written to the ini file directly. This is the only information not managed by ModInfo
@@ -1080,7 +1097,7 @@ void ModInfoDialog::openFile(const QModelIndex &index) QString fileName = m_FileSystemModel->filePath(index);
HINSTANCE res = ::ShellExecuteW(nullptr, L"open", ToWString(fileName).c_str(), nullptr, nullptr, SW_SHOW);
- if ((int)res <= 32) {
+ if ((unsigned long long)res <= 32) {
qCritical("failed to invoke %s: %d", fileName.toUtf8().constData(), res);
}
}
diff --git a/src/modinfodialog.ui b/src/modinfodialog.ui index de9fe5ed..736214f4 100644 --- a/src/modinfodialog.ui +++ b/src/modinfodialog.ui @@ -20,7 +20,7 @@ <enum>QTabWidget::Rounded</enum>
</property>
<property name="currentIndex">
- <number>8</number>
+ <number>0</number>
</property>
<property name="movable">
<bool>true</bool>
@@ -238,8 +238,8 @@ <rect>
<x>0</x>
<y>0</y>
- <width>98</width>
- <height>28</height>
+ <width>746</width>
+ <height>126</height>
</rect>
</property>
<property name="toolTip">
@@ -677,12 +677,12 @@ p, li { white-space: pre-wrap; } <widget class="QLineEdit" name="versionEdit">
<property name="maximumSize">
<size>
- <width>50</width>
+ <width>150</width>
<height>16777215</height>
</size>
</property>
<property name="maxLength">
- <number>10</number>
+ <number>32</number>
</property>
</widget>
</item>
@@ -723,8 +723,20 @@ p, li { white-space: pre-wrap; } </layout>
</item>
<item>
- <widget class="QWebEngineView" name="descriptionView">
- <property name="url">
+ <widget class="QWebEngineView" name="descriptionView" native="true">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>200</height>
+ </size>
+ </property>
+ <property name="url" stdset="0">
<url>
<string>about:blank</string>
</url>
@@ -770,7 +782,30 @@ p, li { white-space: pre-wrap; } </attribute>
<layout class="QVBoxLayout" name="verticalLayout_10">
<item>
- <widget class="QTextEdit" name="notesEdit"/>
+ <widget class="QLineEdit" name="commentsEdit">
+ <property name="toolTip">
+ <string>Enter comments about the mod here. These are displayed in the notes column of the mod list.</string>
+ </property>
+ <property name="whatsThis">
+ <string>Enter comments about the mod here. These are displayed in the notes column of the mod list.</string>
+ </property>
+ <property name="placeholderText">
+ <string>Enter comments about the mod here. These are displayed in the notes column of the mod list.</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QTextEdit" name="notesEdit">
+ <property name="toolTip">
+ <string>Enter notes about the mod here. These can be viewed in the mod list by hovering over the notes column or the flags column.</string>
+ </property>
+ <property name="whatsThis">
+ <string>Enter notes about the mod here. These can be viewed in the mod list by hovering over the notes column or the flags column.</string>
+ </property>
+ <property name="placeholderText">
+ <string>Enter notes about the mod here. These can be viewed in the mod list by hovering over the notes column or the flags column.</string>
+ </property>
+ </widget>
</item>
</layout>
</widget>
@@ -795,7 +830,7 @@ p, li { white-space: pre-wrap; } </widget>
</item>
<item>
- <spacer name="horizontalSpacer_4">
+ <spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
diff --git a/src/modinfoforeign.h b/src/modinfoforeign.h index 0d7b3847..93061294 100644 --- a/src/modinfoforeign.h +++ b/src/modinfoforeign.h @@ -18,6 +18,7 @@ public: virtual bool updateNXMInfo() { return false; } virtual void setCategory(int, bool) {} virtual bool setName(const QString&) { return false; } + virtual void setComments(const QString&) {} virtual void setNotes(const QString&) {} virtual void setGameName(QString) {} virtual void setNexusID(int) {} @@ -33,6 +34,7 @@ public: virtual bool isEmpty() const { return false; } virtual QString name() const; virtual QString internalName() const { return name(); } + virtual QString comments() const { return ""; } virtual QString notes() const { return ""; } virtual QDateTime creationTime() const; virtual QString absolutePath() const; diff --git a/src/modinfooverwrite.h b/src/modinfooverwrite.h index 5681dc6f..4b98d715 100644 --- a/src/modinfooverwrite.h +++ b/src/modinfooverwrite.h @@ -20,6 +20,7 @@ public: virtual bool updateNXMInfo() { return false; } virtual void setCategory(int, bool) {} virtual bool setName(const QString&) { return false; } + virtual void setComments(const QString&) {} virtual void setNotes(const QString&) {} virtual void setGameName(QString) {} virtual void setNexusID(int) {} @@ -35,6 +36,7 @@ public: virtual bool alwaysEnabled() const { return true; } virtual bool isEmpty() const; virtual QString name() const { return "Overwrite"; } + virtual QString comments() const { return ""; } virtual QString notes() const { return ""; } virtual QDateTime creationTime() const { return QDateTime(); } virtual QString absolutePath() const; diff --git a/src/modinforegular.cpp b/src/modinforegular.cpp index 5b6ddcda..6a52d3df 100644 --- a/src/modinforegular.cpp +++ b/src/modinforegular.cpp @@ -31,6 +31,7 @@ ModInfoRegular::ModInfoRegular(PluginContainer *pluginContainer, const IPluginGa , m_GameName(game->gameShortName()) , m_IsAlternate(false) , m_Converted(false) + , m_Validated(false) , m_MetaInfoChanged(false) , m_EndorsedState(ENDORSED_UNKNOWN) , m_NexusBridge(pluginContainer) @@ -75,6 +76,7 @@ bool ModInfoRegular::isEmpty() const void ModInfoRegular::readMeta() { QSettings metaFile(m_Path + "/meta.ini", QSettings::IniFormat); + m_Comments = metaFile.value("comments", "").toString(); m_Notes = metaFile.value("notes", "").toString(); QString tempGameName = metaFile.value("gameName", m_GameName).toString(); if (tempGameName.size()) m_GameName = tempGameName; @@ -86,8 +88,10 @@ void ModInfoRegular::readMeta() m_NexusDescription = metaFile.value("nexusDescription", "").toString(); m_Repository = metaFile.value("repository", "Nexus").toString(); m_Converted = metaFile.value("converted", false).toBool(); + m_Validated = metaFile.value("validated", false).toBool(); m_URL = metaFile.value("url", "").toString(); m_LastNexusQuery = QDateTime::fromString(metaFile.value("lastNexusQuery", "").toString(), Qt::ISODate); + m_Color = metaFile.value("color",QColor()).value<QColor>(); if (metaFile.contains("endorsed")) { if (metaFile.value("endorsed").canConvert<int>()) { switch (metaFile.value("endorsed").toInt()) { @@ -145,11 +149,14 @@ void ModInfoRegular::saveMeta() metaFile.setValue("repository", m_Repository); metaFile.setValue("gameName", m_GameName); metaFile.setValue("modid", m_NexusID); + metaFile.setValue("comments", m_Comments); metaFile.setValue("notes", m_Notes); metaFile.setValue("nexusDescription", m_NexusDescription); metaFile.setValue("url", m_URL); metaFile.setValue("lastNexusQuery", m_LastNexusQuery.toString(Qt::ISODate)); metaFile.setValue("converted", m_Converted); + metaFile.setValue("validated", m_Validated); + metaFile.setValue("color", m_Color); if (m_EndorsedState != ENDORSED_UNKNOWN) { metaFile.setValue("endorsed", m_EndorsedState); } @@ -319,6 +326,12 @@ bool ModInfoRegular::setName(const QString &name) return true; } +void ModInfoRegular::setComments(const QString &comments) +{ + m_Comments = comments; + m_MetaInfoChanged = true; +} + void ModInfoRegular::setNotes(const QString ¬es) { m_Notes = notes; @@ -394,6 +407,17 @@ void ModInfoRegular::setNeverEndorse() } +void ModInfoRegular::setColor(QColor color) +{ + m_Color = color; + m_MetaInfoChanged = true; +} + +QColor ModInfoRegular::getColor() +{ + return m_Color; +} + bool ModInfoRegular::remove() { m_MetaInfoChanged = false; @@ -415,6 +439,13 @@ void ModInfoRegular::markConverted(bool converted) emit modDetailsUpdated(true); } +void ModInfoRegular::markValidated(bool validated) +{ + m_Validated = validated; + m_MetaInfoChanged = true; + saveMeta(); + emit modDetailsUpdated(true); +} QString ModInfoRegular::absolutePath() const { @@ -438,7 +469,7 @@ std::vector<ModInfo::EFlag> ModInfoRegular::getFlags() const if ((m_NexusID > 0) && (endorsedState() == ENDORSED_FALSE)) { result.push_back(ModInfo::FLAG_NOTENDORSED); } - if (!isValid()) { + if (!isValid() && !m_Validated) { result.push_back(ModInfo::FLAG_INVALID); } if (m_Notes.length() != 0) { @@ -471,14 +502,23 @@ std::vector<ModInfo::EContent> ModInfoRegular::getContents() const m_CachedContent.push_back(CONTENT_INI); } + if (dir.entryList(QStringList() << "*.modgroups").size() > 0) { + m_CachedContent.push_back(CONTENT_MODGROUP); + } + ScriptExtender *extender = qApp->property("managed_game") .value<IPluginGame *>() ->feature<ScriptExtender>(); if (extender != nullptr) { QString sePluginPath = extender->PluginPath(); - if (dir.exists(sePluginPath)) - m_CachedContent.push_back(CONTENT_SKSE); + if (dir.exists(sePluginPath)) { + m_CachedContent.push_back(CONTENT_SKSEFILES); + QDir sePluginDir(absolutePath() + "/" + sePluginPath); + if (sePluginDir.entryList(QStringList() << "*.dll").size() > 0) { + m_CachedContent.push_back(CONTENT_SKSE); + } + } } if (dir.exists("textures") || dir.exists("icons") || dir.exists("bookart")) m_CachedContent.push_back(CONTENT_TEXTURE); @@ -505,7 +545,7 @@ std::vector<ModInfo::EContent> ModInfoRegular::getContents() const int ModInfoRegular::getHighlight() const { - if (!isValid()) + if (!isValid() && !m_Validated) return HIGHLIGHT_INVALID; auto flags = getFlags(); if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_PLUGIN_SELECTED) != flags.end()) @@ -516,7 +556,7 @@ int ModInfoRegular::getHighlight() const QString ModInfoRegular::getDescription() const { - if (!isValid()) { + if (!isValid() && !m_Validated) { return tr("%1 contains no esp/esm/esl and no asset (textures, meshes, interface, ...) directory").arg(name()); } else { const std::set<int> &categories = getCategories(); @@ -535,6 +575,11 @@ QString ModInfoRegular::getDescription() const } } +QString ModInfoRegular::comments() const +{ + return m_Comments; +} + QString ModInfoRegular::notes() const { return m_Notes; diff --git a/src/modinforegular.h b/src/modinforegular.h index 3abaded4..33b26998 100644 --- a/src/modinforegular.h +++ b/src/modinforegular.h @@ -28,6 +28,7 @@ public: bool isAlternate() { return m_IsAlternate; } bool isConverted() { return m_Converted; } + bool isValidated() { return m_Validated; } /** * @brief test if there is a newer version of the mod @@ -90,6 +91,12 @@ public: bool setName(const QString &name); /** + * @brief changes the comments (manually set information displayed in the mod list) for this mod + * @param comments new comments + */ + void setComments(const QString &comments); + + /** * @brief change the notes (manually set information) for this mod * @param notes new notes */ @@ -189,6 +196,11 @@ public: virtual void markConverted(bool converted) override; /** + * @brief updates the mod to flag it as valid in order to ignore the invalid game data flag + */ + virtual void markValidated(bool validated) override; + + /** * @brief getter for the mod name * * @return the mod name @@ -274,6 +286,11 @@ public: virtual QString getDescription() const; /** + * @return comments for this mod + */ + virtual QString comments() const; + + /** * @return manually set notes for this mod */ virtual QString notes() const; @@ -305,6 +322,10 @@ public: virtual QStringList archives() const; + virtual void setColor(QColor color); + + virtual QColor getColor(); + virtual void addInstalledFile(int modId, int fileId); /** @@ -343,21 +364,26 @@ private: QString m_Name; QString m_Path; QString m_InstallationFile; + QString m_Comments; QString m_Notes; QString m_NexusDescription; QString m_Repository; QString m_URL; QString m_GameName; + QDateTime m_CreationTime; QDateTime m_LastNexusQuery; + QColor m_Color; + int m_NexusID; std::set<std::pair<int, int>> m_InstalledFileIDs; bool m_MetaInfoChanged; bool m_IsAlternate; bool m_Converted; + bool m_Validated; MOBase::VersionInfo m_NewestVersion; MOBase::VersionInfo m_IgnoredVersion; diff --git a/src/modinfoseparator.cpp b/src/modinfoseparator.cpp new file mode 100644 index 00000000..58c8310a --- /dev/null +++ b/src/modinfoseparator.cpp @@ -0,0 +1,36 @@ +#include "modinfoseparator.h" + +bool ModInfoSeparator::setName(const QString& name) +{ + return ModInfoRegular::setName(name); +} + +std::vector<ModInfo::EFlag> ModInfoSeparator::getFlags() const +{ + { + auto result = ModInfoRegular::getFlags(); + result.push_back(FLAG_SEPARATOR); + return result; + } +} + +int ModInfoSeparator::getHighlight() const +{ + return HIGHLIGHT_CENTER; +} + +QString ModInfoSeparator::getDescription() const +{ + return tr("This is a Separator"); +} + +QString ModInfoSeparator::name() const +{ + return ModInfoRegular::name(); +} + + +ModInfoSeparator::ModInfoSeparator(PluginContainer *pluginContainer, const MOBase::IPluginGame *game, const QDir &path, MOShared::DirectoryEntry **directoryStructure) + : ModInfoRegular(pluginContainer, game, path, directoryStructure) +{ +} diff --git a/src/modinfoseparator.h b/src/modinfoseparator.h new file mode 100644 index 00000000..f215fb17 --- /dev/null +++ b/src/modinfoseparator.h @@ -0,0 +1,77 @@ +#ifndef MODINFOSEPARATOR_H +#define MODINFOSEPARATOR_H + +#include "modinforegular.h" + +class ModInfoSeparator: + public ModInfoRegular +{ + friend class ModInfo; + +public: + + virtual bool updateAvailable() const { return false; } + virtual bool updateIgnored() const { return false; } + virtual bool downgradeAvailable() const { return false; } + virtual bool updateNXMInfo() { return false; } + virtual bool isValid() const { return true; } + //TODO: Fix renaming method to avoid priority reset + virtual bool setName(const QString& name); + + virtual int getNexusID() const { return -1; } + + virtual void setGameName(QString /*gameName*/) + { + } + + virtual void setNexusID(int /*modID*/) + { + } + + virtual void endorse(bool /*doEndorse*/) + { + } + + virtual void ignoreUpdate(bool /*ignore*/) + { + } + + virtual bool canBeUpdated() const { return false; } + virtual bool canBeEnabled() const { return false; } + virtual std::vector<QString> getIniTweaks() const { return std::vector<QString>(); } + + virtual std::vector<EFlag> getFlags() const; + virtual int getHighlight() const; + + virtual QString getDescription() const; + virtual QString name() const; + virtual QString getGameName() const { return ""; } + virtual QString getInstallationFile() const { return ""; } + virtual QString getURL() const { return ""; } + virtual QString repository() const { return ""; } + + virtual QDateTime getLastNexusQuery() const { return QDateTime(); } + virtual QDateTime creationTime() const { return QDateTime(); } + + virtual void getNexusFiles + ( + QList<MOBase::ModRepositoryFileInfo*>::const_iterator& /*unused*/, + QList<MOBase::ModRepositoryFileInfo*>::const_iterator& /*unused*/) + { + } + + virtual QString getNexusDescription() const { return QString(); } + + virtual void addInstalledFile(int /*modId*/, int /*fileId*/) + { + } + +private: + + ModInfoSeparator + ( + PluginContainer* pluginContainer, const MOBase::IPluginGame* game, const QDir& path, + MOShared::DirectoryEntry** directoryStructure); +}; + +#endif diff --git a/src/modlist.cpp b/src/modlist.cpp index afed2241..16d2cd07 100644 --- a/src/modlist.cpp +++ b/src/modlist.cpp @@ -24,6 +24,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. #include "qtgroupingproxy.h"
#include "viewmarkingscrollbar.h"
#include "modlistsortproxy.h"
+#include "pluginlist.h"
#include "settings.h"
#include "modinforegular.h"
#include <appconfig.h>
@@ -45,6 +46,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. #include <QAbstractItemView>
#include <QSortFilterProxyModel>
#include <QApplication>
+#include <QFontDatabase>
#include <sstream>
#include <stdexcept>
@@ -74,6 +76,7 @@ ModList::ModList(PluginContainer *pluginContainer, QObject *parent) m_ContentIcons[ModInfo::CONTENT_TEXTURE] = std::make_tuple(":/MO/gui/content/texture", tr("Textures"));
m_ContentIcons[ModInfo::CONTENT_MCM] = std::make_tuple(":/MO/gui/content/menu", tr("MCM Configuration"));
m_ContentIcons[ModInfo::CONTENT_INI] = std::make_tuple(":/MO/gui/content/inifile", tr("INI files"));
+ m_ContentIcons[ModInfo::CONTENT_MODGROUP] = std::make_tuple(":/MO/gui/content/modgroup", tr("ModGroup files"));
m_LastCheck.start();
}
@@ -144,9 +147,17 @@ QString ModList::getFlagText(ModInfo::EFlag flag, ModInfo::Ptr modInfo) const {
switch (flag) {
case ModInfo::FLAG_BACKUP: return tr("Backup");
+ case ModInfo::FLAG_SEPARATOR: return tr("Separator");
case ModInfo::FLAG_INVALID: return tr("No valid game data");
case ModInfo::FLAG_NOTENDORSED: return tr("Not endorsed yet");
- case ModInfo::FLAG_NOTES: return QString("<i>%1</i>").arg(modInfo->notes().replace("\n", "<br>"));
+ case ModInfo::FLAG_NOTES: {
+ QStringList output;
+ if (!modInfo->comments().isEmpty())
+ output << QString("<i>%1</i>").arg(modInfo->comments());
+ if (!modInfo->notes().isEmpty())
+ output << QString("<i>%1</i>").arg(modInfo->notes()).replace("\n", "<br>");
+ return output.join("<br>");
+ }
case ModInfo::FLAG_CONFLICT_OVERWRITE: return tr("Overwrites files");
case ModInfo::FLAG_CONFLICT_OVERWRITTEN: return tr("Overwritten files");
case ModInfo::FLAG_CONFLICT_MIXED: return tr("Overwrites & Overwritten");
@@ -202,7 +213,13 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const || (column == COL_CONTENT)) {
return QVariant();
} else if (column == COL_NAME) {
- return modInfo->name();
+ auto flags = modInfo->getFlags();
+ if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_SEPARATOR) != flags.end())
+ {
+ return modInfo->name().replace("_separator", "");
+ }
+ else
+ return modInfo->name();
} else if (column == COL_VERSION) {
VersionInfo verInfo = modInfo->getVersion();
QString version = verInfo.displayString();
@@ -266,6 +283,8 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const } else {
return QVariant();
}
+ } else if (column == COL_NOTES) {
+ return modInfo->comments();
} else {
return tr("invalid");
}
@@ -276,6 +295,7 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const return QVariant();
}
} else if (role == Qt::TextAlignmentRole) {
+ auto flags = modInfo->getFlags();
if (column == COL_NAME) {
if (modInfo->getHighlight() & ModInfo::HIGHLIGHT_CENTER) {
return QVariant(Qt::AlignCenter | Qt::AlignVCenter);
@@ -284,6 +304,8 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const }
} else if (column == COL_VERSION) {
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
+ } else if (column == COL_NOTES) {
+ return QVariant(Qt::AlignLeft | Qt::AlignVCenter);
} else {
return QVariant(Qt::AlignCenter | Qt::AlignVCenter);
}
@@ -326,8 +348,15 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const return modInfo->getGameName();
} else if (role == Qt::FontRole) {
QFont result;
+ auto flags = modInfo->getFlags();
if (column == COL_NAME) {
- if (modInfo->getHighlight() & ModInfo::HIGHLIGHT_INVALID) {
+ if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_SEPARATOR) != flags.end())
+ {
+ //result.setCapitalization(QFont::AllUppercase);
+ result.setItalic(true);
+ //result.setUnderline(true);
+ result.setBold(true);
+ } else if (modInfo->getHighlight() & ModInfo::HIGHLIGHT_INVALID) {
result.setItalic(true);
}
} else if ((column == COL_CATEGORY) && (modInfo->hasFlag(ModInfo::FLAG_FOREIGN))) {
@@ -350,10 +379,14 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const }
return QVariant();
} else if (role == Qt::ForegroundRole) {
- if (column == COL_NAME) {
+ if (modInfo->hasFlag(ModInfo::FLAG_SEPARATOR) && modInfo->getColor().isValid()) {
+ return Settings::getIdealTextColor(modInfo->getColor());
+ } else if (column == COL_NAME) {
int highlight = modInfo->getHighlight();
- if (highlight & ModInfo::HIGHLIGHT_IMPORTANT) return QBrush(Qt::darkRed);
- else if (highlight & ModInfo::HIGHLIGHT_INVALID) return QBrush(Qt::darkGray);
+ if (highlight & ModInfo::HIGHLIGHT_IMPORTANT)
+ return QBrush(Qt::darkRed);
+ else if (highlight & ModInfo::HIGHLIGHT_INVALID)
+ return QBrush(Qt::darkGray);
} else if (column == COL_VERSION) {
if (!modInfo->getNewestVersion().isValid()) {
return QVariant();
@@ -367,11 +400,17 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const } else if ((role == Qt::BackgroundRole)
|| (role == ViewMarkingScrollBar::DEFAULT_ROLE)) {
if (modInfo->getHighlight() & ModInfo::HIGHLIGHT_PLUGIN) {
- return QColor(0, 0, 255, 64);
+ return Settings::instance().modlistContainsPluginColor();
} else if (m_Overwrite.find(modIndex) != m_Overwrite.end()) {
- return QColor(0, 255, 0, 64);
- } else if (m_Overwritten.find(modIndex) != m_Overwritten.end()) {
- return QColor(255, 0, 0, 64);
+ return Settings::instance().modlistOverwrittenLooseColor();
+ }
+ else if (m_Overwritten.find(modIndex) != m_Overwritten.end()) {
+ return Settings::instance().modlistOverwritingLooseColor();
+ } else if (modInfo->hasFlag(ModInfo::FLAG_SEPARATOR)
+ && modInfo->getColor().isValid()
+ && ((role != ViewMarkingScrollBar::DEFAULT_ROLE)
+ || Settings::instance().colorSeparatorScrollbar())) {
+ return modInfo->getColor();
} else {
return QVariant();
}
@@ -421,6 +460,8 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const }
return ToQString(categoryString.str());
+ } else if (column == COL_NOTES) {
+ return getFlagText(ModInfo::FLAG_NOTES, modInfo);
} else {
return QVariant();
}
@@ -475,6 +516,7 @@ bool ModList::setData(const QModelIndex &index, const QVariant &value, int role) ModInfo::Ptr info = ModInfo::getByIndex(modID);
IModList::ModStates oldState = state(modID);
+
bool result = false;
emit aboutToChangeData();
@@ -492,11 +534,20 @@ bool ModList::setData(const QModelIndex &index, const QVariant &value, int role) } else if (role == Qt::EditRole) {
switch (index.column()) {
case COL_NAME: {
- result = renameMod(modID, value.toString());
+ auto flags = info->getFlags();
+ if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_SEPARATOR) != flags.end())
+ {
+ result = renameMod(modID, value.toString() + "_separator");
+ }
+ else
+ result = renameMod(modID, value.toString());
} break;
case COL_PRIORITY: {
bool ok = false;
int newPriority = value.toInt(&ok);
+ if (ok && newPriority < 0) {
+ newPriority = 0;
+ }
if (ok) {
m_Profile->setModPriority(modID, newPriority);
@@ -527,6 +578,10 @@ bool ModList::setData(const QModelIndex &index, const QVariant &value, int role) result = false;
}
} break;
+ case COL_NOTES: {
+ info->setComments(value.toString());
+ result = true;
+ } break;
default: {
qWarning("edit on column \"%s\" not supported",
getColumnName(index.column()).toUtf8().constData());
@@ -584,17 +639,21 @@ Qt::ItemFlags ModList::flags(const QModelIndex &modelIndex) const }
if (modelIndex.isValid()) {
ModInfo::Ptr modInfo = ModInfo::getByIndex(modelIndex.row());
+ std::vector<ModInfo::EFlag> flags = modInfo->getFlags();
if (modInfo->getFixedPriority() == INT_MIN) {
result |= Qt::ItemIsDragEnabled;
result |= Qt::ItemIsUserCheckable;
- if ((modelIndex.column() == COL_NAME) ||
- (modelIndex.column() == COL_PRIORITY) ||
+ if ((modelIndex.column() == COL_PRIORITY) ||
(modelIndex.column() == COL_VERSION) ||
(modelIndex.column() == COL_MODID)) {
result |= Qt::ItemIsEditable;
}
+ if (((modelIndex.column() == COL_NAME) ||
+ (modelIndex.column() == COL_NOTES))
+ && (std::find(flags.begin(), flags.end(), ModInfo::FLAG_FOREIGN) == flags.end())) {
+ result |= Qt::ItemIsEditable;
+ }
}
- std::vector<ModInfo::EFlag> flags = modInfo->getFlags();
if (m_DropOnItems
&& (std::find(flags.begin(), flags.end(), ModInfo::FLAG_OVERWRITE) == flags.end())) {
result |= Qt::ItemIsDropEnabled;
@@ -626,26 +685,48 @@ void ModList::changeModPriority(std::vector<int> sourceIndices, int newPriority) emit layoutAboutToBeChanged();
Profile *profile = m_Profile;
- // sort rows to insert by their old priority (ascending) and insert them move them in that order
+
+ // sort the moving mods by ascending priorities
std::sort(sourceIndices.begin(), sourceIndices.end(),
- [profile](const int &LHS, const int &RHS) {
- return profile->getModPriority(LHS) < profile->getModPriority(RHS);
- });
+ [profile](const int &LHS, const int &RHS) {
+ return profile->getModPriority(LHS) > profile->getModPriority(RHS);
+ });
- // odd stuff: if any of the dragged sources has priority lower than the destination then the
- // target idx is that of the row BELOW the dropped location, otherwise it's the one above. why?
+ // move mods that are decreasing in priority
for (std::vector<int>::const_iterator iter = sourceIndices.begin();
iter != sourceIndices.end(); ++iter) {
- if (profile->getModPriority(*iter) < newPriority) {
+ int oldPriority = profile->getModPriority(*iter);
+ if (oldPriority > newPriority) {
+ profile->setModPriority(*iter, newPriority);
+ m_ModMoved(ModInfo::getByIndex(*iter)->name(), oldPriority, newPriority);
+ }
+ }
+
+ // sort the moving mods by descending priorities
+ std::sort(sourceIndices.begin(), sourceIndices.end(),
+ [profile](const int &LHS, const int &RHS) {
+ return profile->getModPriority(LHS) < profile->getModPriority(RHS);
+ });
+
+ // if at least one mod is increasing in priority, the target index is
+ // that of the row BELOW the dropped location, otherwise it's the one above
+ for (std::vector<int>::const_iterator iter = sourceIndices.begin();
+ iter != sourceIndices.end(); ++iter) {
+ int oldPriority = profile->getModPriority(*iter);
+ if (oldPriority < newPriority) {
--newPriority;
break;
}
}
+
+ // move mods that are increasing in priority
for (std::vector<int>::const_iterator iter = sourceIndices.begin();
- iter != sourceIndices.end(); ++iter) {
- int oldPriority = m_Profile->getModPriority(*iter);
- m_Profile->setModPriority(*iter, newPriority);
- m_ModMoved(ModInfo::getByIndex(*iter)->name(), oldPriority, newPriority);
+ iter != sourceIndices.end(); ++iter) {
+ int oldPriority = profile->getModPriority(*iter);
+ if (oldPriority < newPriority) {
+ profile->setModPriority(*iter, newPriority);
+ m_ModMoved(ModInfo::getByIndex(*iter)->name(), oldPriority, newPriority);
+ }
}
emit layoutChanged();
@@ -718,12 +799,12 @@ int ModList::timeElapsedSinceLastChecked() const return m_LastCheck.elapsed();
}
-void ModList::highlightMods(const QItemSelection &selected, const MOShared::DirectoryEntry &directoryEntry)
+void ModList::highlightMods(const QItemSelectionModel *selection, const MOShared::DirectoryEntry &directoryEntry)
{
for (unsigned int i = 0; i < ModInfo::getNumMods(); ++i) {
ModInfo::getByIndex(i)->setPluginSelected(false);
}
- for (QModelIndex idx : selected.indexes()) {
+ for (QModelIndex idx : selection->selectedRows(PluginList::COL_NAME)) {
QString modName = idx.data().toString();
const MOShared::FileEntry::Ptr fileEntry = directoryEntry.findFile(modName.toStdWString());
@@ -767,6 +848,8 @@ IModList::ModStates ModList::state(unsigned int modIndex) const QSharedPointer<ModInfoRegular> modInfoRegular = modInfo.staticCast<ModInfoRegular>();
if (modInfoRegular->isAlternate() && !modInfoRegular->isConverted())
result |= IModList::STATE_ALTERNATE;
+ if (!modInfo->isValid() && modInfoRegular->isValidated())
+ result |= IModList::STATE_VALID;
}
if (modInfo->canBeEnabled()) {
if (m_Profile->modEnabled(modIndex)) {
@@ -1088,6 +1171,7 @@ QString ModList::getColumnName(int column) case COL_GAME: return tr("Source Game");
case COL_MODID: return tr("Nexus ID");
case COL_INSTALLTIME: return tr("Installation");
+ case COL_NOTES: return tr("Notes");
default: return tr("unknown");
}
}
@@ -1119,8 +1203,11 @@ QString ModList::getColumnToolTip(int column) "<tr><td><img src=\":/MO/gui/content/skyproc\" width=32/></td><td>SkyProc Patcher</td></tr>"
"<tr><td><img src=\":/MO/gui/content/menu\" width=32/></td><td>Mod Configuration Menu</td></tr>"
"<tr><td><img src=\":/MO/gui/content/inifile\" width=32/></td><td>INI files</td></tr>"
+ "<tr><td><img src=\":/MO/gui/content/modgroup\" width=32/></td><td>ModGroup files</td></tr>"
+
"</table>");
case COL_INSTALLTIME: return tr("Time this mod was installed");
+ case COL_NOTES: return tr("User notes about the mod");
default: return tr("unknown");
}
}
@@ -1260,4 +1347,4 @@ void ModList::disableSelected(const QItemSelectionModel *selectionModel) }
}
}
-}
\ No newline at end of file +}
diff --git a/src/modlist.h b/src/modlist.h index 15376ed5..42269386 100644 --- a/src/modlist.h +++ b/src/modlist.h @@ -65,8 +65,9 @@ public: COL_VERSION,
COL_INSTALLTIME,
COL_PRIORITY,
+ COL_NOTES,
- COL_LASTCOLUMN = COL_PRIORITY
+ COL_LASTCOLUMN = COL_NOTES
};
typedef boost::signals2::signal<void (const QString &, ModStates)> SignalModStateChanged;
@@ -106,6 +107,7 @@ public: static QString getColumnName(int column);
void changeModPriority(int sourceIndex, int newPriority);
+ void changeModPriority(std::vector<int> sourceIndices, int newPriority);
void setOverwriteMarkers(const std::set<unsigned int> &overwrite, const std::set<unsigned int> &overwritten);
void setPluginContainer(PluginContainer *pluginContainer);
@@ -117,7 +119,7 @@ public: int timeElapsedSinceLastChecked() const;
- void highlightMods(const QItemSelection &selected, const MOShared::DirectoryEntry &directoryEntry);
+ void highlightMods(const QItemSelectionModel *selection, const MOShared::DirectoryEntry &directoryEntry);
public:
@@ -266,8 +268,6 @@ private: bool testValid(const QString &modDir);
- void changeModPriority(std::vector<int> sourceIndices, int newPriority);
-
QVariant getOverwriteData(int column, int role) const;
QString getFlagText(ModInfo::EFlag flag, ModInfo::Ptr modInfo) const;
diff --git a/src/modlistsortproxy.cpp b/src/modlistsortproxy.cpp index 88084ae1..9adaa511 100644 --- a/src/modlistsortproxy.cpp +++ b/src/modlistsortproxy.cpp @@ -253,7 +253,7 @@ bool ModListSortProxy::filterMatchesModAnd(ModInfo::Ptr info, bool enabled) cons for (auto iter = m_CategoryFilter.begin(); iter != m_CategoryFilter.end(); ++iter) {
switch (*iter) {
case CategoryFactory::CATEGORY_SPECIAL_CHECKED: {
- if (!enabled && !info->alwaysEnabled()) return false;
+ if (!enabled && !info->alwaysEnabled() && !info->hasFlag(ModInfo::FLAG_SEPARATOR)) return false;
} break;
case CategoryFactory::CATEGORY_SPECIAL_UNCHECKED: {
if (enabled || info->alwaysEnabled()) return false;
@@ -271,6 +271,9 @@ bool ModListSortProxy::filterMatchesModAnd(ModInfo::Ptr info, bool enabled) cons ModInfo::EEndorsedState state = info->endorsedState();
if (state != ModInfo::ENDORSED_FALSE) return false;
} break;
+ case CategoryFactory::CATEGORY_SPECIAL_BACKUP: {
+ if (!info->hasFlag(ModInfo::FLAG_BACKUP)) return false;
+ } break;
case CategoryFactory::CATEGORY_SPECIAL_MANAGED: {
if (info->hasFlag(ModInfo::FLAG_FOREIGN)) return false;
} break;
@@ -313,6 +316,9 @@ bool ModListSortProxy::filterMatchesModOr(ModInfo::Ptr info, bool enabled) const ModInfo::EEndorsedState state = info->endorsedState();
if ((state == ModInfo::ENDORSED_FALSE) || (state == ModInfo::ENDORSED_NEVER)) return true;
} break;
+ case CategoryFactory::CATEGORY_SPECIAL_BACKUP: {
+ if (info->hasFlag(ModInfo::FLAG_BACKUP)) return true;
+ } break;
case CategoryFactory::CATEGORY_SPECIAL_MANAGED: {
if (!info->hasFlag(ModInfo::FLAG_FOREIGN)) return true;
} break;
diff --git a/src/organizer.pro b/src/organizer.pro index 0ef2638b..582fde9f 100644 --- a/src/organizer.pro +++ b/src/organizer.pro @@ -91,7 +91,8 @@ SOURCES += \ modinforegular.cpp \
modinfobackup.cpp \
modinfooverwrite.cpp \
- modinfoforeign.cpp
+ modinfoforeign.cpp \
+ listdialog.cpp
HEADERS += \
@@ -167,7 +168,8 @@ HEADERS += \ modinforegular.h \
modinfobackup.h \
modinfooverwrite.h \
- modinfoforeign.h
+ modinfoforeign.h \
+ listdialog.h
FORMS += \
transfersavesdialog.ui \
@@ -196,7 +198,8 @@ FORMS += \ problemsdialog.ui \
previewdialog.ui \
browserdialog.ui \
- aboutdialog.ui
+ aboutdialog.ui \
+ listdialog.ui
RESOURCES += \
resources.qrc \
diff --git a/src/organizer_en.ts b/src/organizer_en.ts index 8b8bd101..68fd3b65 100644 --- a/src/organizer_en.ts +++ b/src/organizer_en.ts @@ -817,212 +817,220 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="813"/> + <location filename="downloadmanager.cpp" line="815"/> <source>No known download urls. Sorry, this download can't be resumed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="854"/> + <location filename="downloadmanager.cpp" line="856"/> <source>query: invalid download index %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="876"/> + <location filename="downloadmanager.cpp" line="878"/> <source>Please enter the nexus mod id</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="876"/> + <location filename="downloadmanager.cpp" line="878"/> <source>Mod ID:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="886"/> + <location filename="downloadmanager.cpp" line="888"/> <source>Please select the source game code for %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="905"/> + <location filename="downloadmanager.cpp" line="907"/> <source>VisitNexus: invalid download index %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="926"/> + <location filename="downloadmanager.cpp" line="928"/> <source>Nexus ID for this Mod is unknown</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="933"/> + <location filename="downloadmanager.cpp" line="935"/> <source>OpenFile: invalid download index %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="950"/> + <location filename="downloadmanager.cpp" line="952"/> <source>OpenFileInDownloadsFolder: invalid download index %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="986"/> + <location filename="downloadmanager.cpp" line="988"/> <source>get pending: invalid download index %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="995"/> + <location filename="downloadmanager.cpp" line="997"/> <source>get path: invalid download index %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1004"/> + <location filename="downloadmanager.cpp" line="1006"/> <source>Main</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1005"/> + <location filename="downloadmanager.cpp" line="1007"/> <source>Update</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1006"/> + <location filename="downloadmanager.cpp" line="1008"/> <source>Optional</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1007"/> + <location filename="downloadmanager.cpp" line="1009"/> <source>Old</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1008"/> + <location filename="downloadmanager.cpp" line="1010"/> <source>Misc</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1009"/> + <location filename="downloadmanager.cpp" line="1011"/> <source>Unknown</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1016"/> + <location filename="downloadmanager.cpp" line="1018"/> <source>display name: invalid download index %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1036"/> + <location filename="downloadmanager.cpp" line="1038"/> <source>file name: invalid download index %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1045"/> + <location filename="downloadmanager.cpp" line="1047"/> <source>file time: invalid download index %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1059"/> + <location filename="downloadmanager.cpp" line="1061"/> <source>file size: invalid download index %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1069"/> + <location filename="downloadmanager.cpp" line="1071"/> <source>progress: invalid download index %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1079"/> + <location filename="downloadmanager.cpp" line="1081"/> <source>state: invalid download index %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1089"/> + <location filename="downloadmanager.cpp" line="1091"/> <source>infocomplete: invalid download index %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1104"/> - <location filename="downloadmanager.cpp" line="1112"/> + <location filename="downloadmanager.cpp" line="1106"/> + <location filename="downloadmanager.cpp" line="1114"/> <source>mod id: invalid download index %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1120"/> + <location filename="downloadmanager.cpp" line="1122"/> <source>ishidden: invalid download index %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1129"/> + <location filename="downloadmanager.cpp" line="1131"/> <source>file info: invalid download index %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1139"/> + <location filename="downloadmanager.cpp" line="1141"/> <source>mark installed: invalid download index %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1184"/> + <location filename="downloadmanager.cpp" line="1186"/> <source>mark uninstalled: invalid download index %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1357"/> + <location filename="downloadmanager.cpp" line="1359"/> <source>Memory allocation error (in processing progress event).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1370"/> + <location filename="downloadmanager.cpp" line="1369"/> <source>Memory allocation error (in processing downloaded data).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1496"/> + <location filename="downloadmanager.cpp" line="1495"/> <source>Information updated</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1498"/> - <location filename="downloadmanager.cpp" line="1512"/> + <location filename="downloadmanager.cpp" line="1497"/> + <location filename="downloadmanager.cpp" line="1511"/> <source>No matching file found on Nexus! Maybe this file is no longer available or it was renamed?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1500"/> + <location filename="downloadmanager.cpp" line="1499"/> <source>No file on Nexus matches the selected file by name. Please manually choose the correct one.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1629"/> + <location filename="downloadmanager.cpp" line="1628"/> <source>No download server available. Please try again later.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1672"/> + <location filename="downloadmanager.cpp" line="1671"/> <source>Failed to request file info from nexus: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1699"/> + <location filename="downloadmanager.cpp" line="1698"/> <source>Warning: Content type is: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1704"/> + <location filename="downloadmanager.cpp" line="1703"/> <source>Download header content length: %1 downloaded file size: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1706"/> + <location filename="downloadmanager.cpp" line="1705"/> <source>Download failed: %1 (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1728"/> + <location filename="downloadmanager.cpp" line="1727"/> <source>We were unable to download the file due to errors after four retries. There may be an issue with the Nexus servers.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="downloadmanager.cpp" line="1811"/> + <location filename="downloadmanager.cpp" line="1810"/> <source>failed to re-open %1</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="downloadmanager.cpp" line="1851"/> + <source>Unable to write download to drive (return %1). +Check the drive's available storage. + +Canceling download "%2"...</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>EditExecutablesDialog</name> @@ -1378,63 +1386,76 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location filename="installationmanager.cpp" line="694"/> + <location filename="installationmanager.cpp" line="706"/> <source>File format "%1" not supported</source> <translation type="unfinished"></translation> </message> <message> - <location filename="installationmanager.cpp" line="857"/> + <location filename="installationmanager.cpp" line="868"/> <source>None of the available installer plugins were able to handle that archive. This is likely due to a corrupted or incompatible download or unrecognized archive format.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="installationmanager.cpp" line="868"/> + <location filename="installationmanager.cpp" line="879"/> <source>no error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="installationmanager.cpp" line="871"/> + <location filename="installationmanager.cpp" line="882"/> <source>7z.dll not found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="installationmanager.cpp" line="874"/> + <location filename="installationmanager.cpp" line="885"/> <source>7z.dll isn't valid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="installationmanager.cpp" line="877"/> + <location filename="installationmanager.cpp" line="888"/> <source>archive not found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="installationmanager.cpp" line="880"/> + <location filename="installationmanager.cpp" line="891"/> <source>failed to open archive</source> <translation type="unfinished"></translation> </message> <message> - <location filename="installationmanager.cpp" line="883"/> + <location filename="installationmanager.cpp" line="894"/> <source>unsupported archive type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="installationmanager.cpp" line="886"/> + <location filename="installationmanager.cpp" line="897"/> <source>internal library error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="installationmanager.cpp" line="889"/> + <location filename="installationmanager.cpp" line="900"/> <source>archive invalid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="installationmanager.cpp" line="893"/> + <location filename="installationmanager.cpp" line="904"/> <source>unknown archive error</source> <translation type="unfinished"></translation> </message> </context> <context> + <name>ListDialog</name> + <message> + <location filename="listdialog.ui" line="14"/> + <source>Select an item...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="listdialog.ui" line="42"/> + <source>Filter</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>LockedDialog</name> <message> <location filename="lockeddialog.ui" line="14"/> @@ -1526,47 +1547,47 @@ This is likely due to a corrupted or incompatible download or unrecognized archi <name>MainWindow</name> <message> <location filename="mainwindow.ui" line="46"/> - <location filename="mainwindow.ui" line="590"/> + <location filename="mainwindow.ui" line="596"/> <source>Categories</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="115"/> + <location filename="mainwindow.ui" line="118"/> <source>Clear</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="134"/> + <location filename="mainwindow.ui" line="137"/> <source>If checked, only mods that match all selected categories are displayed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="137"/> + <location filename="mainwindow.ui" line="140"/> <source>And</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="147"/> + <location filename="mainwindow.ui" line="150"/> <source>If checked, all mods that match at least one of the selected categories are displayed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="150"/> + <location filename="mainwindow.ui" line="153"/> <source>Or</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="189"/> + <location filename="mainwindow.ui" line="192"/> <source>Profile</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="199"/> + <location filename="mainwindow.ui" line="202"/> <source>Pick a module collection</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="202"/> + <location filename="mainwindow.ui" line="205"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1576,76 +1597,77 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="233"/> + <location filename="mainwindow.ui" line="236"/> <source>Open list options...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="236"/> + <location filename="mainwindow.ui" line="239"/> <source>Refresh list. This is usually not necessary unless you modified data outside the program.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="256"/> + <location filename="mainwindow.ui" line="259"/> <source>Show Open Folders menu...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="270"/> - <location filename="mainwindow.ui" line="856"/> + <location filename="mainwindow.ui" line="273"/> + <location filename="mainwindow.ui" line="859"/> <source>Restore Backup...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="284"/> - <location filename="mainwindow.ui" line="876"/> + <location filename="mainwindow.ui" line="287"/> + <location filename="mainwindow.ui" line="879"/> + <location filename="mainwindow.cpp" line="4030"/> <source>Create Backup</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="400"/> + <location filename="mainwindow.ui" line="403"/> <source>List of available mods.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="403"/> + <location filename="mainwindow.ui" line="406"/> <source>This is a list of installed mods. Use the checkboxes to activate/deactivate mods and drag & drop mods to change their "installation" orders.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="488"/> + <location filename="mainwindow.ui" line="494"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="545"/> + <location filename="mainwindow.ui" line="551"/> <source>Clear all Filters</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="585"/> + <location filename="mainwindow.ui" line="591"/> <source>No groups</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="595"/> + <location filename="mainwindow.ui" line="601"/> <source>Nexus IDs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="609"/> - <location filename="mainwindow.ui" line="999"/> - <location filename="mainwindow.ui" line="1316"/> + <location filename="mainwindow.ui" line="615"/> + <location filename="mainwindow.ui" line="1002"/> + <location filename="mainwindow.ui" line="1341"/> <source>Namefilter</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="644"/> + <location filename="mainwindow.ui" line="650"/> <source>Pick a program to run.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="647"/> + <location filename="mainwindow.ui" line="653"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1655,12 +1677,12 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="695"/> + <location filename="mainwindow.ui" line="701"/> <source>Run program</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="698"/> + <location filename="mainwindow.ui" line="704"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1669,17 +1691,17 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="708"/> + <location filename="mainwindow.ui" line="714"/> <source>Run</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="749"/> + <location filename="mainwindow.ui" line="755"/> <source>Create a shortcut in your start menu or on the desktop to the specified program</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="752"/> + <location filename="mainwindow.ui" line="758"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1688,27 +1710,27 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="759"/> + <location filename="mainwindow.ui" line="765"/> <source>Shortcut</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="809"/> + <location filename="mainwindow.ui" line="815"/> <source>Plugins</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="832"/> + <location filename="mainwindow.ui" line="835"/> <source>Sort</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="938"/> + <location filename="mainwindow.ui" line="941"/> <source>List of available esp/esm files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="941"/> + <location filename="mainwindow.ui" line="944"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1717,27 +1739,27 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1012"/> + <location filename="mainwindow.ui" line="1015"/> <source>Archives</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1032"/> + <location filename="mainwindow.ui" line="1035"/> <source><html><head/><body><p>BSAs / BA2s are bundles of game assets (textures, scripts, etc.). By default, the engine loads these bundles in a separate step from loose files. <p>Their load order is specified by the priority of the corresponding plugin (right pane, plugins tab).</p><p>If there is a matching plugin, the game will load them no matter what.</p></body></html></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1035"/> + <location filename="mainwindow.ui" line="1038"/> <source><html><head/><body><p>Currently detected archives. (<a href="#"><span style=" text-decoration: underline; color:#0000ff;">What is an archive?</span></a>)</p></body></html></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1050"/> + <location filename="mainwindow.ui" line="1053"/> <source>List of available BS Archives. Archives not checked here are not managed by MO and ignore installation order.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1053"/> + <location filename="mainwindow.ui" line="1056"/> <source>BSA files are archives (comparable to .zip files) that contain data assets (meshes, textures, ...) to be used by the game. As such they "compete" with loose files in your data directory over which is loaded. By default, BSAs that share their base name with an enabled ESP (i.e. plugin.esp and plugin.bsa) are automatically loaded and will have precedence over all loose files, the installation order you set up to the left is then ignored! @@ -1745,219 +1767,225 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1082"/> + <location filename="mainwindow.ui" line="1090"/> <source>Data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1100"/> + <location filename="mainwindow.ui" line="1108"/> <source>refresh data-directory overview</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1103"/> + <location filename="mainwindow.ui" line="1111"/> <source>Refresh the overview. This may take a moment.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1106"/> - <location filename="mainwindow.cpp" line="3532"/> - <location filename="mainwindow.cpp" line="4351"/> + <location filename="mainwindow.ui" line="1114"/> + <location filename="mainwindow.ui" line="1237"/> + <location filename="mainwindow.cpp" line="3905"/> + <location filename="mainwindow.cpp" line="4808"/> <source>Refresh</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1122"/> + <location filename="mainwindow.ui" line="1130"/> <source>This is an overview of your data directory as visible to the game (and tools). </source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1132"/> + <location filename="mainwindow.ui" line="1143"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1137"/> + <location filename="mainwindow.ui" line="1148"/> <source>Mod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1147"/> - <location filename="mainwindow.ui" line="1150"/> + <location filename="mainwindow.ui" line="1158"/> + <location filename="mainwindow.ui" line="1161"/> <source>Filter the above list so that only conflicts are displayed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1153"/> + <location filename="mainwindow.ui" line="1164"/> <source>Show only conflicts</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1161"/> + <location filename="mainwindow.ui" line="1172"/> <source>Saves</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1185"/> + <location filename="mainwindow.ui" line="1196"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This is a list of all savegames for this game. Hover over a list entry to get detailed information about the save including a list of esps/esms that were used at the time this save was created but aren't active now.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This is a list of all save games for this game. Hover over a list entry to get detailed information about the save including a list of esps/esms that were used at the time this save was created but aren't active now.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">If you click &quot;Fix Mods...&quot; in the context menu, MO will try to activate all mods and esps to fix those missing esps. It will not disable anything!</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1205"/> + <location filename="mainwindow.ui" line="1216"/> <source>Downloads</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1240"/> + <location filename="mainwindow.ui" line="1234"/> + <source>Refresh downloads view</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.ui" line="1265"/> <source>This is a list of mods you downloaded from Nexus. Double click one to install it. You can also drag an archive into here.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1296"/> + <location filename="mainwindow.ui" line="1321"/> <source>Show Hidden</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1358"/> + <location filename="mainwindow.ui" line="1386"/> <source>Tool Bar</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1401"/> + <location filename="mainwindow.ui" line="1429"/> <source>Install Mod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1404"/> + <location filename="mainwindow.ui" line="1432"/> <source>Install &Mod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1407"/> + <location filename="mainwindow.ui" line="1435"/> <source>Install a new mod from an archive</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1410"/> + <location filename="mainwindow.ui" line="1438"/> <source>Ctrl+M</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1419"/> + <location filename="mainwindow.ui" line="1447"/> <source>Profiles</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1422"/> + <location filename="mainwindow.ui" line="1450"/> <source>&Profiles</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1425"/> + <location filename="mainwindow.ui" line="1453"/> <source>Configure Profiles</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1428"/> + <location filename="mainwindow.ui" line="1456"/> <source>Ctrl+P</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1437"/> + <location filename="mainwindow.ui" line="1465"/> <source>Executables</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1440"/> + <location filename="mainwindow.ui" line="1468"/> <source>&Executables</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1443"/> + <location filename="mainwindow.ui" line="1471"/> <source>Configure the executables that can be started through Mod Organizer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1446"/> + <location filename="mainwindow.ui" line="1474"/> <source>Ctrl+E</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1455"/> - <location filename="mainwindow.ui" line="1461"/> + <location filename="mainwindow.ui" line="1483"/> + <location filename="mainwindow.ui" line="1489"/> <source>Tools</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1458"/> + <location filename="mainwindow.ui" line="1486"/> <source>&Tools</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1464"/> + <location filename="mainwindow.ui" line="1492"/> <source>Ctrl+I</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1473"/> + <location filename="mainwindow.ui" line="1501"/> <source>Settings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1476"/> + <location filename="mainwindow.ui" line="1504"/> <source>&Settings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1479"/> + <location filename="mainwindow.ui" line="1507"/> <source>Configure settings and workarounds</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1482"/> + <location filename="mainwindow.ui" line="1510"/> <source>Ctrl+S</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1491"/> + <location filename="mainwindow.ui" line="1519"/> <source>Nexus</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1494"/> + <location filename="mainwindow.ui" line="1522"/> <source>Search nexus network for more mods</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1497"/> + <location filename="mainwindow.ui" line="1525"/> <source>Ctrl+N</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1509"/> - <location filename="mainwindow.cpp" line="4292"/> + <location filename="mainwindow.ui" line="1537"/> + <location filename="mainwindow.cpp" line="4748"/> <source>Update</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1512"/> + <location filename="mainwindow.ui" line="1540"/> <source>Mod Organizer is up-to-date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1524"/> - <location filename="mainwindow.cpp" line="636"/> + <location filename="mainwindow.ui" line="1552"/> + <location filename="mainwindow.cpp" line="645"/> <source>No Problems</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1527"/> + <location filename="mainwindow.ui" line="1555"/> <source>This button will be highlighted if MO discovered potential problems in your setup and provide tips on how to fix them. !Work in progress! @@ -1965,747 +1993,830 @@ Right now this has very limited functionality</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1539"/> - <location filename="mainwindow.ui" line="1542"/> + <location filename="mainwindow.ui" line="1567"/> + <location filename="mainwindow.ui" line="1570"/> <source>Help</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1545"/> + <location filename="mainwindow.ui" line="1573"/> <source>Ctrl+H</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1554"/> + <location filename="mainwindow.ui" line="1582"/> <source>Endorse MO</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1557"/> - <location filename="mainwindow.cpp" line="4374"/> + <location filename="mainwindow.ui" line="1585"/> + <location filename="mainwindow.cpp" line="4831"/> <source>Endorse Mod Organizer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1562"/> + <location filename="mainwindow.ui" line="1590"/> <source>Copy Log to Clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1571"/> + <location filename="mainwindow.ui" line="1599"/> <source>Change Game</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1574"/> + <location filename="mainwindow.ui" line="1602"/> <source>Open the Instance selection dialog to manage a different Game</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="322"/> + <location filename="mainwindow.cpp" line="329"/> <source>Toolbar</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="323"/> + <location filename="mainwindow.cpp" line="330"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="324"/> + <location filename="mainwindow.cpp" line="331"/> <source>Start Menu</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="348"/> + <location filename="mainwindow.cpp" line="356"/> <source>There is no supported sort mechanism for this game. You will probably have to use a third-party tool.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="624"/> + <location filename="mainwindow.cpp" line="633"/> <source>Problems</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="625"/> + <location filename="mainwindow.cpp" line="634"/> <source>There are potential problems with your setup</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="637"/> + <location filename="mainwindow.cpp" line="646"/> <source>Everything seems to be in order</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="699"/> + <location filename="mainwindow.cpp" line="708"/> <source>Help on UI</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="703"/> + <location filename="mainwindow.cpp" line="712"/> <source>Documentation Wiki</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="707"/> + <location filename="mainwindow.cpp" line="716"/> <source>Report Issue</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="711"/> + <location filename="mainwindow.cpp" line="720"/> <source>Tutorials</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="750"/> + <location filename="mainwindow.cpp" line="759"/> <source>About</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="751"/> + <location filename="mainwindow.cpp" line="760"/> <source>About Qt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="803"/> + <location filename="mainwindow.cpp" line="812"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="804"/> + <location filename="mainwindow.cpp" line="813"/> <source>Please enter a name for the new profile</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="812"/> + <location filename="mainwindow.cpp" line="821"/> <source>failed to create profile: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="856"/> + <location filename="mainwindow.cpp" line="865"/> <source>Show tutorial?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="857"/> + <location filename="mainwindow.cpp" line="866"/> <source>You are starting Mod Organizer for the first time. Do you want to show a tutorial of its basic features? If you choose no you can always start the tutorial from the "Help"-menu.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="893"/> + <location filename="mainwindow.cpp" line="902"/> <source>Downloads in progress</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="894"/> + <location filename="mainwindow.cpp" line="903"/> <source>There are still downloads in progress, do you really want to quit?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1011"/> + <location filename="mainwindow.cpp" line="1020"/> <source>Plugin "%1" failed: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1013"/> + <location filename="mainwindow.cpp" line="1022"/> <source>Plugin "%1" failed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1049"/> + <location filename="mainwindow.cpp" line="1100"/> <source>Browse Mod Page</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1184"/> + <location filename="mainwindow.cpp" line="1296"/> <source>Also in: <br></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1195"/> + <location filename="mainwindow.cpp" line="1307"/> <source>No conflict</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1307"/> + <location filename="mainwindow.cpp" line="1393"/> <source><Edit...></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1575"/> + <location filename="mainwindow.cpp" line="1671"/> <source>This bsa is enabled in the ini file so it may be required!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1637"/> + <location filename="mainwindow.cpp" line="1733"/> <source>Activating Network Proxy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1695"/> + <location filename="mainwindow.cpp" line="1794"/> <source>Notice: Your current MO version (%1) is lower than the previous version (%2).<br>The GUI may not downgrade gracefully, so you may experience oddities.<br>However, there should be no serious issues.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1784"/> + <location filename="mainwindow.cpp" line="1898"/> <source>Choose Mod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1785"/> + <location filename="mainwindow.cpp" line="1899"/> <source>Mod Archive</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1947"/> + <location filename="mainwindow.cpp" line="2074"/> <source>Start Tutorial?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1948"/> + <location filename="mainwindow.cpp" line="2075"/> <source>You're about to start a tutorial. For technical reasons it's not possible to end the tutorial early. Continue?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2083"/> + <location filename="mainwindow.cpp" line="2229"/> <source>failed to spawn notepad.exe: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2123"/> + <location filename="mainwindow.cpp" line="2269"/> <source>failed to change origin name: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2147"/> + <location filename="mainwindow.cpp" line="2293"/> <source>failed to move "%1" from mod "%2" to "%3": %4</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2171"/> + <location filename="mainwindow.cpp" line="2317"/> <source><Contains %1></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2206"/> + <location filename="mainwindow.cpp" line="2352"/> <source><Checked></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2207"/> + <location filename="mainwindow.cpp" line="2353"/> <source><Unchecked></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2208"/> + <location filename="mainwindow.cpp" line="2354"/> <source><Update></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2209"/> + <location filename="mainwindow.cpp" line="2355"/> + <source><Mod Backup></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.cpp" line="2356"/> <source><Managed by MO></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2210"/> + <location filename="mainwindow.cpp" line="2357"/> <source><Managed outside MO></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2211"/> + <location filename="mainwindow.cpp" line="2358"/> <source><No category></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2212"/> + <location filename="mainwindow.cpp" line="2359"/> <source><Conflicted></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2213"/> + <location filename="mainwindow.cpp" line="2360"/> <source><Not Endorsed></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2259"/> + <location filename="mainwindow.cpp" line="2406"/> <source>failed to rename mod: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2272"/> + <location filename="mainwindow.cpp" line="2419"/> <source>Overwrite?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2273"/> + <location filename="mainwindow.cpp" line="2420"/> <source>This will replace the existing mod "%1". Continue?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2276"/> + <location filename="mainwindow.cpp" line="2423"/> <source>failed to remove mod "%1"</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2280"/> - <location filename="mainwindow.cpp" line="4151"/> - <location filename="mainwindow.cpp" line="4175"/> + <location filename="mainwindow.cpp" line="2427"/> + <location filename="mainwindow.cpp" line="4580"/> + <location filename="mainwindow.cpp" line="4604"/> <source>failed to rename "%1" to "%2"</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2340"/> - <location filename="mainwindow.cpp" line="3255"/> - <location filename="mainwindow.cpp" line="3263"/> - <location filename="mainwindow.cpp" line="3735"/> + <location filename="mainwindow.cpp" line="2487"/> + <location filename="mainwindow.cpp" line="3626"/> + <location filename="mainwindow.cpp" line="3634"/> + <location filename="mainwindow.cpp" line="4155"/> <source>Confirm</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2341"/> + <location filename="mainwindow.cpp" line="2488"/> <source>Remove the following mods?<br><ul>%1</ul></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2354"/> + <location filename="mainwindow.cpp" line="2501"/> <source>failed to remove mod: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2386"/> - <location filename="mainwindow.cpp" line="2389"/> + <location filename="mainwindow.cpp" line="2533"/> + <location filename="mainwindow.cpp" line="2536"/> + <location filename="mainwindow.cpp" line="2546"/> <source>Failed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2386"/> + <location filename="mainwindow.cpp" line="2533"/> <source>Installation file no longer exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2390"/> + <location filename="mainwindow.cpp" line="2537"/> <source>Mods installed with old versions of MO can't be reinstalled in this way.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2407"/> + <location filename="mainwindow.cpp" line="2547"/> + <source>Failed to create backup.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.cpp" line="2564"/> <source>You need to be logged in with Nexus to resume a download</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2423"/> - <location filename="mainwindow.cpp" line="2450"/> + <location filename="mainwindow.cpp" line="2580"/> + <location filename="mainwindow.cpp" line="2607"/> <source>You need to be logged in with Nexus to endorse</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2498"/> + <location filename="mainwindow.cpp" line="2663"/> <source>Failed to display overwrite dialog: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2675"/> + <location filename="mainwindow.cpp" line="2851"/> <source>Nexus ID for this Mod is unknown</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2685"/> + <location filename="mainwindow.cpp" line="2861"/> <source>Web page for this mod is unknown</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2763"/> - <location filename="mainwindow.cpp" line="2792"/> - <location filename="mainwindow.cpp" line="3562"/> + <location filename="mainwindow.cpp" line="2988"/> + <location filename="mainwindow.cpp" line="3125"/> + <location filename="mainwindow.cpp" line="3967"/> <source>Create Mod...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2764"/> + <location filename="mainwindow.cpp" line="2989"/> <source>This will create an empty mod. Please enter a name:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2773"/> - <location filename="mainwindow.cpp" line="2802"/> + <location filename="mainwindow.cpp" line="2998"/> + <location filename="mainwindow.cpp" line="3135"/> <source>A mod with this name already exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2793"/> + <location filename="mainwindow.cpp" line="3026"/> + <source>Create Separator...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.cpp" line="3027"/> + <source>This will create a new separator. +Please enter a name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.cpp" line="3034"/> + <source>A separator with this name already exists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.cpp" line="3126"/> <source>This will move all files from overwrite into a new, regular mod. Please enter a name:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2834"/> - <location filename="mainwindow.cpp" line="4691"/> + <location filename="mainwindow.cpp" line="3167"/> + <location filename="mainwindow.cpp" line="5148"/> <source>Are you sure?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2835"/> + <location filename="mainwindow.cpp" line="3168"/> <source>About to recursively delete: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3149"/> + <location filename="mainwindow.cpp" line="3520"/> <source>Not logged in, endorsement information will be wrong</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3157"/> + <location filename="mainwindow.cpp" line="3528"/> <source>Continue?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3158"/> + <location filename="mainwindow.cpp" line="3529"/> <source>The versioning scheme decides which version is considered newer than another. This function will guess the versioning scheme under the assumption that the installed version is outdated.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3178"/> - <location filename="mainwindow.cpp" line="4260"/> + <location filename="mainwindow.cpp" line="3549"/> + <location filename="mainwindow.cpp" line="4716"/> <source>Sorry</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3179"/> + <location filename="mainwindow.cpp" line="3550"/> <source>I don't know a versioning scheme where %1 is newer than %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3255"/> + <location filename="mainwindow.cpp" line="3626"/> <source>Really enable all visible mods?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3263"/> + <location filename="mainwindow.cpp" line="3634"/> <source>Really disable all visible mods?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3328"/> + <location filename="mainwindow.cpp" line="3699"/> <source>Export to csv</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3331"/> + <location filename="mainwindow.cpp" line="3702"/> <source>CSV (Comma Separated Values) is a format that can be imported in programs like Excel to create a spreadsheet. You can also use online editors and converters instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3334"/> + <location filename="mainwindow.cpp" line="3705"/> <source>Select what mods you want export:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3335"/> + <location filename="mainwindow.cpp" line="3706"/> <source>All installed mods</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3336"/> + <location filename="mainwindow.cpp" line="3707"/> <source>Only active (checked) mods from your current profile</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3337"/> + <location filename="mainwindow.cpp" line="3708"/> <source>All currently visible mods in the mod list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3358"/> + <location filename="mainwindow.cpp" line="3729"/> <source>Choose what Columns to export:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3361"/> + <location filename="mainwindow.cpp" line="3732"/> <source>Mod_Priority</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3363"/> + <location filename="mainwindow.cpp" line="3734"/> <source>Mod_Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3365"/> + <location filename="mainwindow.cpp" line="3736"/> <source>Mod_Status</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3366"/> + <location filename="mainwindow.cpp" line="3737"/> <source>Primary_Category</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3367"/> + <location filename="mainwindow.cpp" line="3738"/> <source>Nexus_ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3368"/> + <location filename="mainwindow.cpp" line="3739"/> <source>Mod_Nexus_URL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3369"/> + <location filename="mainwindow.cpp" line="3740"/> <source>Mod_Version</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3370"/> + <location filename="mainwindow.cpp" line="3741"/> <source>Install_Date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3371"/> + <location filename="mainwindow.cpp" line="3742"/> <source>Download_File_Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3473"/> + <location filename="mainwindow.cpp" line="3844"/> <source>export failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3492"/> + <location filename="mainwindow.cpp" line="3863"/> <source>Open Game folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3494"/> + <location filename="mainwindow.cpp" line="3865"/> <source>Open MyGames folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3498"/> + <location filename="mainwindow.cpp" line="3869"/> <source>Open Instance folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3500"/> + <location filename="mainwindow.cpp" line="3871"/> <source>Open Mods folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3502"/> + <location filename="mainwindow.cpp" line="3873"/> <source>Open Profile folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3504"/> + <location filename="mainwindow.cpp" line="3875"/> <source>Open Downloads folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3508"/> + <location filename="mainwindow.cpp" line="3879"/> <source>Open MO2 Install folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3510"/> + <location filename="mainwindow.cpp" line="3881"/> <source>Open MO2 Plugins folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3512"/> + <location filename="mainwindow.cpp" line="3883"/> <source>Open MO2 Logs folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3521"/> + <location filename="mainwindow.cpp" line="3892"/> <source>Install Mod...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3523"/> + <location filename="mainwindow.cpp" line="3894"/> <source>Create empty mod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3527"/> + <location filename="mainwindow.cpp" line="3896"/> + <source>Create Separator</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.cpp" line="3900"/> <source>Enable all visible</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3528"/> + <location filename="mainwindow.cpp" line="3901"/> <source>Disable all visible</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3530"/> + <location filename="mainwindow.cpp" line="3903"/> <source>Check all for update</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3534"/> + <location filename="mainwindow.cpp" line="3907"/> <source>Export to csv...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3555"/> + <location filename="mainwindow.cpp" line="3919"/> + <location filename="mainwindow.cpp" line="3935"/> + <source>Send to</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.cpp" line="3920"/> + <location filename="mainwindow.cpp" line="3936"/> + <source>Top</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.cpp" line="3921"/> + <location filename="mainwindow.cpp" line="3937"/> + <source>Bottom</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.cpp" line="3922"/> + <location filename="mainwindow.cpp" line="3938"/> + <source>Priority...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.cpp" line="3923"/> + <source>Separator...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.cpp" line="3959"/> <source>All Mods</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3561"/> + <location filename="mainwindow.cpp" line="3966"/> <source>Sync to Mods...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3563"/> + <location filename="mainwindow.cpp" line="3968"/> <source>Clear Overwrite...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3565"/> - <location filename="mainwindow.cpp" line="3651"/> + <location filename="mainwindow.cpp" line="3970"/> + <location filename="mainwindow.cpp" line="4071"/> <source>Open in Explorer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3567"/> + <location filename="mainwindow.cpp" line="3972"/> <source>Restore Backup</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3568"/> + <location filename="mainwindow.cpp" line="3973"/> <source>Remove Backup...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3572"/> + <location filename="mainwindow.cpp" line="3976"/> + <location filename="mainwindow.cpp" line="3995"/> <source>Change Categories</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3585"/> + <location filename="mainwindow.cpp" line="3980"/> + <location filename="mainwindow.cpp" line="4000"/> <source>Primary Category</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3591"/> + <location filename="mainwindow.cpp" line="3984"/> + <source>Rename Separator...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.cpp" line="3985"/> + <source>Remove Separator...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.cpp" line="3988"/> + <source>Select Color...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.cpp" line="3990"/> + <source>Reset Color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.cpp" line="4007"/> <source>Change versioning scheme</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3595"/> + <location filename="mainwindow.cpp" line="4012"/> <source>Un-ignore update</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3597"/> + <location filename="mainwindow.cpp" line="4014"/> <source>Ignore update</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3603"/> - <location filename="mainwindow.cpp" line="4795"/> + <location filename="mainwindow.cpp" line="4020"/> + <location filename="mainwindow.cpp" line="5259"/> <source>Enable selected</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3604"/> - <location filename="mainwindow.cpp" line="4796"/> + <location filename="mainwindow.cpp" line="4021"/> + <location filename="mainwindow.cpp" line="5260"/> <source>Disable selected</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3608"/> + <location filename="mainwindow.cpp" line="4027"/> <source>Rename Mod...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3609"/> + <location filename="mainwindow.cpp" line="4028"/> <source>Reinstall Mod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3610"/> + <location filename="mainwindow.cpp" line="4029"/> <source>Remove Mod...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3617"/> + <location filename="mainwindow.cpp" line="4037"/> <source>Un-Endorse</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3620"/> - <location filename="mainwindow.cpp" line="3624"/> + <location filename="mainwindow.cpp" line="4040"/> + <location filename="mainwindow.cpp" line="4044"/> <source>Endorse</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3621"/> + <location filename="mainwindow.cpp" line="4041"/> <source>Won't endorse</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3627"/> + <location filename="mainwindow.cpp" line="4047"/> <source>Endorsement state unknown</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3638"/> + <location filename="mainwindow.cpp" line="4058"/> <source>Ignore missing data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3642"/> + <location filename="mainwindow.cpp" line="4062"/> <source>Mark as converted/working</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3646"/> + <location filename="mainwindow.cpp" line="4066"/> <source>Visit on Nexus</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3648"/> + <location filename="mainwindow.cpp" line="4068"/> <source>Visit web page</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3655"/> + <location filename="mainwindow.cpp" line="4075"/> <source>Information...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3662"/> - <location filename="mainwindow.cpp" line="4829"/> + <location filename="mainwindow.cpp" line="4082"/> + <location filename="mainwindow.cpp" line="5307"/> <source>Exception: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3664"/> - <location filename="mainwindow.cpp" line="4831"/> + <location filename="mainwindow.cpp" line="4084"/> + <location filename="mainwindow.cpp" line="5309"/> <source>Unknown exception</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3695"/> + <location filename="mainwindow.cpp" line="4115"/> <source><All></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3697"/> + <location filename="mainwindow.cpp" line="4117"/> <source><Multiple></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3732"/> + <location filename="mainwindow.cpp" line="4152"/> <source>%1 more</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="mainwindow.cpp" line="3736"/> + <location filename="mainwindow.cpp" line="4156"/> <source>Are you sure you want to remove the following %n save(s)?<br><ul>%1</ul><br>Removed saves will be sent to the Recycle Bin.</source> <translation type="unfinished"> <numerusform></numerusform> @@ -2713,12 +2824,12 @@ You can also use online editors and converters instead.</source> </translation> </message> <message> - <location filename="mainwindow.cpp" line="3781"/> + <location filename="mainwindow.cpp" line="4201"/> <source>Enable Mods...</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="mainwindow.cpp" line="3796"/> + <location filename="mainwindow.cpp" line="4216"/> <source>Delete %n save(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -2726,322 +2837,361 @@ You can also use online editors and converters instead.</source> </translation> </message> <message> - <location filename="mainwindow.cpp" line="3838"/> + <location filename="mainwindow.cpp" line="4258"/> <source>failed to remove %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3860"/> + <location filename="mainwindow.cpp" line="4280"/> <source>failed to create %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3902"/> + <location filename="mainwindow.cpp" line="4310"/> + <source>Restarting MO</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.cpp" line="4311"/> + <source>Changing the managed game directory requires restarting MO. +Any pending downloads will be paused. + +Click OK to restart MO now.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.cpp" line="4331"/> <source>Can't change download directory while downloads are in progress!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4023"/> + <location filename="mainwindow.cpp" line="4452"/> <source>failed to write to file %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4029"/> + <location filename="mainwindow.cpp" line="4458"/> <source>%1 written</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4070"/> + <location filename="mainwindow.cpp" line="4499"/> <source>Select binary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4070"/> + <location filename="mainwindow.cpp" line="4499"/> <source>Binary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4096"/> + <location filename="mainwindow.cpp" line="4525"/> <source>Enter Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4097"/> + <location filename="mainwindow.cpp" line="4526"/> <source>Please enter a name for the executable</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4111"/> + <location filename="mainwindow.cpp" line="4540"/> <source>Not an executable</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4111"/> + <location filename="mainwindow.cpp" line="4540"/> <source>This is not a recognized executable.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4136"/> - <location filename="mainwindow.cpp" line="4161"/> + <location filename="mainwindow.cpp" line="4565"/> + <location filename="mainwindow.cpp" line="4590"/> <source>Replace file?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4136"/> + <location filename="mainwindow.cpp" line="4565"/> <source>There already is a hidden version of this file. Replace it?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4139"/> - <location filename="mainwindow.cpp" line="4164"/> + <location filename="mainwindow.cpp" line="4568"/> + <location filename="mainwindow.cpp" line="4593"/> <source>File operation failed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4139"/> - <location filename="mainwindow.cpp" line="4164"/> + <location filename="mainwindow.cpp" line="4568"/> + <location filename="mainwindow.cpp" line="4593"/> <source>Failed to remove "%1". Maybe you lack the required file permissions?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4161"/> + <location filename="mainwindow.cpp" line="4590"/> <source>There already is a visible version of this file. Replace it?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4233"/> + <location filename="mainwindow.cpp" line="4634"/> + <location filename="mainwindow.cpp" line="5920"/> + <source>Set Priority</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.cpp" line="4634"/> + <source>Set the priority of the selected plugins</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.cpp" line="4683"/> <source>file not found: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4246"/> + <location filename="mainwindow.cpp" line="4696"/> <source>failed to generate preview for %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4260"/> + <location filename="mainwindow.cpp" line="4716"/> <source>Sorry, can't preview anything. This function currently does not support extracting from bsas.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4294"/> + <location filename="mainwindow.cpp" line="4750"/> <source>Update available</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4331"/> + <location filename="mainwindow.cpp" line="4788"/> <source>Open/Execute</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4332"/> + <location filename="mainwindow.cpp" line="4789"/> <source>Add as Executable</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4336"/> + <location filename="mainwindow.cpp" line="4793"/> <source>Preview</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4342"/> + <location filename="mainwindow.cpp" line="4799"/> <source>Un-Hide</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4344"/> + <location filename="mainwindow.cpp" line="4801"/> <source>Hide</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4350"/> + <location filename="mainwindow.cpp" line="4807"/> <source>Write To File...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4375"/> + <location filename="mainwindow.cpp" line="4832"/> <source>Do you want to endorse Mod Organizer on %1 now?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4500"/> + <location filename="mainwindow.cpp" line="4957"/> <source>Thank you!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4500"/> + <location filename="mainwindow.cpp" line="4957"/> <source>Thank you for your endorsement!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4535"/> + <location filename="mainwindow.cpp" line="4992"/> <source>Request to Nexus failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4550"/> - <location filename="mainwindow.cpp" line="4612"/> + <location filename="mainwindow.cpp" line="5007"/> + <location filename="mainwindow.cpp" line="5069"/> <source>failed to read %1: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4562"/> <location filename="mainwindow.cpp" line="5019"/> + <location filename="mainwindow.cpp" line="5497"/> <source>Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4562"/> + <location filename="mainwindow.cpp" line="5019"/> <source>failed to extract %1 (errorcode %2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4594"/> + <location filename="mainwindow.cpp" line="5051"/> <source>Extract BSA</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4623"/> + <location filename="mainwindow.cpp" line="5080"/> <source>This archive contains invalid hashes. Some files may be broken.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4669"/> + <location filename="mainwindow.cpp" line="5126"/> <source>Extract...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4692"/> + <location filename="mainwindow.cpp" line="5149"/> <source>This will restart MO, continue?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4732"/> + <location filename="mainwindow.cpp" line="5196"/> <source>Edit Categories...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4733"/> + <location filename="mainwindow.cpp" line="5197"/> <source>Deselect filter</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4784"/> + <location filename="mainwindow.cpp" line="5248"/> <source>Remove</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4800"/> + <location filename="mainwindow.cpp" line="5264"/> <source>Enable all</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4801"/> + <location filename="mainwindow.cpp" line="5265"/> <source>Disable all</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4820"/> + <location filename="mainwindow.cpp" line="5286"/> <source>Unlock load order</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4823"/> + <location filename="mainwindow.cpp" line="5289"/> <source>Lock load order</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4965"/> + <location filename="mainwindow.cpp" line="5293"/> + <source>Open Origin in Explorer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.cpp" line="5300"/> + <source>Open Origin Info...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="mainwindow.cpp" line="5443"/> <source>depends on missing "%1"</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4969"/> + <location filename="mainwindow.cpp" line="5447"/> <source>incompatible with "%1"</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4995"/> + <location filename="mainwindow.cpp" line="5473"/> <source>Please wait while LOOT is running</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5092"/> + <location filename="mainwindow.cpp" line="5570"/> <source>loot failed. Exit code was: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5114"/> + <location filename="mainwindow.cpp" line="5592"/> <source>failed to start loot</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5117"/> + <location filename="mainwindow.cpp" line="5595"/> <source>failed to run loot: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5121"/> + <location filename="mainwindow.cpp" line="5599"/> <source>Errors occured</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5168"/> + <location filename="mainwindow.cpp" line="5646"/> <source>Backup of load order created</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5178"/> + <location filename="mainwindow.cpp" line="5656"/> <source>Choose backup to restore</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5191"/> + <location filename="mainwindow.cpp" line="5669"/> <source>No Backups</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5191"/> + <location filename="mainwindow.cpp" line="5669"/> <source>There are no backups to restore</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5212"/> - <location filename="mainwindow.cpp" line="5234"/> + <location filename="mainwindow.cpp" line="5690"/> + <location filename="mainwindow.cpp" line="5712"/> <source>Restore failed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5213"/> - <location filename="mainwindow.cpp" line="5235"/> + <location filename="mainwindow.cpp" line="5691"/> + <location filename="mainwindow.cpp" line="5713"/> <source>Failed to restore the backup. Errorcode: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5224"/> + <location filename="mainwindow.cpp" line="5702"/> <source>Backup of modlist created</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5330"/> + <location filename="mainwindow.cpp" line="5808"/> <source>A file with the same name has already been downloaded. What would you like to do?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5332"/> + <location filename="mainwindow.cpp" line="5810"/> <source>Overwrite</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5333"/> + <location filename="mainwindow.cpp" line="5811"/> <source>Rename new file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5334"/> + <location filename="mainwindow.cpp" line="5812"/> <source>Ignore file</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="mainwindow.cpp" line="5920"/> + <source>Set the priority of the selected mods</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>MessageDialog</name> @@ -3055,72 +3205,82 @@ You can also use online editors and converters instead.</source> <context> <name>ModInfo</name> <message> - <location filename="modinfo.cpp" line="95"/> + <location filename="modinfo.cpp" line="99"/> <source>Plugins</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfo.cpp" line="96"/> + <location filename="modinfo.cpp" line="100"/> <source>Textures</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfo.cpp" line="97"/> + <location filename="modinfo.cpp" line="101"/> <source>Meshes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfo.cpp" line="98"/> + <location filename="modinfo.cpp" line="102"/> <source>Bethesda Archive</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfo.cpp" line="99"/> + <location filename="modinfo.cpp" line="103"/> <source>UI Changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfo.cpp" line="100"/> + <location filename="modinfo.cpp" line="104"/> <source>Sound Effects</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfo.cpp" line="101"/> + <location filename="modinfo.cpp" line="105"/> <source>Scripts</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfo.cpp" line="102"/> + <location filename="modinfo.cpp" line="106"/> <source>Script Extender</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfo.cpp" line="103"/> + <location filename="modinfo.cpp" line="107"/> + <source>Script Extender Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="modinfo.cpp" line="108"/> <source>SkyProc Tools</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfo.cpp" line="104"/> + <location filename="modinfo.cpp" line="109"/> <source>MCM Data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfo.cpp" line="105"/> + <location filename="modinfo.cpp" line="110"/> <source>INI files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfo.cpp" line="106"/> + <location filename="modinfo.cpp" line="111"/> + <source>ModGroup files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="modinfo.cpp" line="113"/> <source>invalid content type %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfo.cpp" line="129"/> + <location filename="modinfo.cpp" line="136"/> <source>invalid mod index %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfo.cpp" line="159"/> + <location filename="modinfo.cpp" line="166"/> <source>remove: invalid mod index %1</source> <translation type="unfinished"></translation> </message> @@ -3390,37 +3550,51 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.ui" line="729"/> + <location filename="modinfodialog.ui" line="741"/> <source>about:blank</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.ui" line="755"/> + <location filename="modinfodialog.ui" line="767"/> <source>Endorse</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.ui" line="769"/> + <location filename="modinfodialog.ui" line="781"/> <source>Notes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.ui" line="779"/> + <location filename="modinfodialog.ui" line="787"/> + <location filename="modinfodialog.ui" line="790"/> + <location filename="modinfodialog.ui" line="793"/> + <source>Enter comments about the mod here. These are displayed in the notes column of the mod list.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="modinfodialog.ui" line="800"/> + <location filename="modinfodialog.ui" line="803"/> + <location filename="modinfodialog.ui" line="806"/> + <source>Enter notes about the mod here. These can be viewed in the mod list by hovering over the notes column or the flags column.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="modinfodialog.ui" line="814"/> <source>Filetree</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.ui" line="793"/> + <location filename="modinfodialog.ui" line="828"/> <source>Open Mod in Explorer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.ui" line="818"/> + <location filename="modinfodialog.ui" line="853"/> <source>A directory view of this mod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.ui" line="821"/> + <location filename="modinfodialog.ui" line="856"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -3430,288 +3604,288 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.ui" line="848"/> + <location filename="modinfodialog.ui" line="883"/> <source>Previous</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.ui" line="855"/> + <location filename="modinfodialog.ui" line="890"/> <source>Next</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.ui" line="875"/> + <location filename="modinfodialog.ui" line="910"/> <source>Close</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="211"/> + <location filename="modinfodialog.cpp" line="228"/> <source>&Delete</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="212"/> + <location filename="modinfodialog.cpp" line="229"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="213"/> + <location filename="modinfodialog.cpp" line="230"/> <source>&Hide</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="214"/> + <location filename="modinfodialog.cpp" line="231"/> <source>&Unhide</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="215"/> + <location filename="modinfodialog.cpp" line="232"/> <source>&Open</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="216"/> + <location filename="modinfodialog.cpp" line="233"/> <source>&New Folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="468"/> - <location filename="modinfodialog.cpp" line="483"/> + <location filename="modinfodialog.cpp" line="485"/> + <location filename="modinfodialog.cpp" line="500"/> <source>Save changes?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="468"/> - <location filename="modinfodialog.cpp" line="483"/> + <location filename="modinfodialog.cpp" line="485"/> + <location filename="modinfodialog.cpp" line="500"/> <source>Save changes to "%1"?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="673"/> + <location filename="modinfodialog.cpp" line="690"/> <source>File Exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="673"/> + <location filename="modinfodialog.cpp" line="690"/> <source>A file with that name exists, please enter a new one</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="690"/> + <location filename="modinfodialog.cpp" line="707"/> <source>failed to move file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="715"/> + <location filename="modinfodialog.cpp" line="732"/> <source>failed to create directory "optional"</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="759"/> - <location filename="modinfodialog.cpp" line="1483"/> + <location filename="modinfodialog.cpp" line="776"/> + <location filename="modinfodialog.cpp" line="1500"/> <source>Info requested, please wait</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="813"/> + <location filename="modinfodialog.cpp" line="830"/> <source>Main</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="814"/> + <location filename="modinfodialog.cpp" line="831"/> <source>Update</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="815"/> + <location filename="modinfodialog.cpp" line="832"/> <source>Optional</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="816"/> + <location filename="modinfodialog.cpp" line="833"/> <source>Old</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="817"/> + <location filename="modinfodialog.cpp" line="834"/> <source>Misc</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="818"/> + <location filename="modinfodialog.cpp" line="835"/> <source>Unknown</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="829"/> + <location filename="modinfodialog.cpp" line="846"/> <source>Current Version: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="833"/> + <location filename="modinfodialog.cpp" line="850"/> <source>No update available</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="876"/> + <location filename="modinfodialog.cpp" line="893"/> <source>(description incomplete, please visit nexus)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="891"/> + <location filename="modinfodialog.cpp" line="908"/> <source><a href="%1">Visit on Nexus</a></source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="984"/> + <location filename="modinfodialog.cpp" line="1001"/> <source>Failed to delete %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1000"/> - <location filename="modinfodialog.cpp" line="1006"/> - <location filename="modinfodialog.cpp" line="1025"/> - <location filename="modinfodialog.cpp" line="1030"/> + <location filename="modinfodialog.cpp" line="1017"/> + <location filename="modinfodialog.cpp" line="1023"/> + <location filename="modinfodialog.cpp" line="1042"/> + <location filename="modinfodialog.cpp" line="1047"/> <source>Confirm</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1000"/> - <location filename="modinfodialog.cpp" line="1025"/> + <location filename="modinfodialog.cpp" line="1017"/> + <location filename="modinfodialog.cpp" line="1042"/> <source>Are sure you want to delete "%1"?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1006"/> - <location filename="modinfodialog.cpp" line="1030"/> + <location filename="modinfodialog.cpp" line="1023"/> + <location filename="modinfodialog.cpp" line="1047"/> <source>Are sure you want to delete the selected files?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1104"/> - <location filename="modinfodialog.cpp" line="1110"/> + <location filename="modinfodialog.cpp" line="1121"/> + <location filename="modinfodialog.cpp" line="1127"/> <source>New Folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1116"/> + <location filename="modinfodialog.cpp" line="1133"/> <source>Failed to create "%1"</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1220"/> - <location filename="modinfodialog.cpp" line="1244"/> + <location filename="modinfodialog.cpp" line="1237"/> + <location filename="modinfodialog.cpp" line="1261"/> <source>Replace file?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1220"/> + <location filename="modinfodialog.cpp" line="1237"/> <source>There already is a hidden version of this file. Replace it?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1223"/> - <location filename="modinfodialog.cpp" line="1247"/> + <location filename="modinfodialog.cpp" line="1240"/> + <location filename="modinfodialog.cpp" line="1264"/> <source>File operation failed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1223"/> - <location filename="modinfodialog.cpp" line="1247"/> + <location filename="modinfodialog.cpp" line="1240"/> + <location filename="modinfodialog.cpp" line="1264"/> <source>Failed to remove "%1". Maybe you lack the required file permissions?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1234"/> - <location filename="modinfodialog.cpp" line="1257"/> + <location filename="modinfodialog.cpp" line="1251"/> + <location filename="modinfodialog.cpp" line="1274"/> <source>failed to rename %1 to %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1244"/> + <location filename="modinfodialog.cpp" line="1261"/> <source>There already is a visible version of this file. Replace it?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1320"/> + <location filename="modinfodialog.cpp" line="1337"/> <source>Select binary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1320"/> + <location filename="modinfodialog.cpp" line="1337"/> <source>Binary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1392"/> + <location filename="modinfodialog.cpp" line="1409"/> <source>file not found: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1405"/> + <location filename="modinfodialog.cpp" line="1422"/> <source>failed to generate preview for %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1421"/> + <location filename="modinfodialog.cpp" line="1438"/> <source>Sorry</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1421"/> + <location filename="modinfodialog.cpp" line="1438"/> <source>Sorry, can't preview anything. This function currently does not support extracting from bsas.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1435"/> + <location filename="modinfodialog.cpp" line="1452"/> <source>Un-Hide</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1437"/> + <location filename="modinfodialog.cpp" line="1454"/> <source>Hide</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1440"/> - <location filename="modinfodialog.cpp" line="1460"/> + <location filename="modinfodialog.cpp" line="1457"/> + <location filename="modinfodialog.cpp" line="1477"/> <source>Open/Execute</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1444"/> - <location filename="modinfodialog.cpp" line="1464"/> + <location filename="modinfodialog.cpp" line="1461"/> + <location filename="modinfodialog.cpp" line="1481"/> <source>Preview</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1512"/> + <location filename="modinfodialog.cpp" line="1529"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1512"/> + <location filename="modinfodialog.cpp" line="1529"/> <source>Please enter a name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1516"/> - <location filename="modinfodialog.cpp" line="1519"/> + <location filename="modinfodialog.cpp" line="1533"/> + <location filename="modinfodialog.cpp" line="1536"/> <source>Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1516"/> + <location filename="modinfodialog.cpp" line="1533"/> <source>Invalid name. Must be a valid file name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1519"/> + <location filename="modinfodialog.cpp" line="1536"/> <source>A tweak by that name exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinfodialog.cpp" line="1533"/> + <location filename="modinfodialog.cpp" line="1550"/> <source>Create Tweak</source> <translation type="unfinished"></translation> </message> @@ -3750,275 +3924,303 @@ p, li { white-space: pre-wrap; } <context> <name>ModInfoRegular</name> <message> - <location filename="modinforegular.cpp" line="171"/> - <location filename="modinforegular.cpp" line="174"/> + <location filename="modinforegular.cpp" line="178"/> + <location filename="modinforegular.cpp" line="181"/> <source>failed to write %1/meta.ini: error %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinforegular.cpp" line="520"/> + <location filename="modinforegular.cpp" line="560"/> <source>%1 contains no esp/esm/esl and no asset (textures, meshes, interface, ...) directory</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modinforegular.cpp" line="524"/> + <location filename="modinforegular.cpp" line="564"/> <source>Categories: <br></source> <translation type="unfinished"></translation> </message> </context> <context> + <name>ModInfoSeparator</name> + <message> + <location filename="modinfoseparator.cpp" line="24"/> + <source>This is a Separator</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ModList</name> <message> - <location filename="modlist.cpp" line="66"/> + <location filename="modlist.cpp" line="68"/> <source>Game Plugins (ESP/ESM/ESL)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="67"/> + <location filename="modlist.cpp" line="69"/> <source>Interface</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="68"/> + <location filename="modlist.cpp" line="70"/> <source>Meshes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="69"/> + <location filename="modlist.cpp" line="71"/> <source>Bethesda Archive</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="70"/> + <location filename="modlist.cpp" line="72"/> <source>Scripts (Papyrus)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="71"/> + <location filename="modlist.cpp" line="73"/> <source>Script Extender Plugin</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="72"/> + <location filename="modlist.cpp" line="74"/> <source>SkyProc Patcher</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="73"/> + <location filename="modlist.cpp" line="75"/> <source>Sound or Music</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="74"/> + <location filename="modlist.cpp" line="76"/> <source>Textures</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="75"/> + <location filename="modlist.cpp" line="77"/> <source>MCM Configuration</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="76"/> + <location filename="modlist.cpp" line="78"/> <source>INI files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="137"/> + <location filename="modlist.cpp" line="79"/> + <source>ModGroup files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="modlist.cpp" line="140"/> <source>This entry contains files that have been created inside the virtual data tree (i.e. by the construction kit)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="146"/> + <location filename="modlist.cpp" line="149"/> <source>Backup</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="147"/> + <location filename="modlist.cpp" line="150"/> + <source>Separator</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="modlist.cpp" line="151"/> <source>No valid game data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="148"/> + <location filename="modlist.cpp" line="152"/> <source>Not endorsed yet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="150"/> + <location filename="modlist.cpp" line="161"/> <source>Overwrites files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="151"/> + <location filename="modlist.cpp" line="162"/> <source>Overwritten files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="152"/> + <location filename="modlist.cpp" line="163"/> <source>Overwrites & Overwritten</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="153"/> + <location filename="modlist.cpp" line="164"/> <source>Redundant</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="154"/> + <location filename="modlist.cpp" line="165"/> <source>Alternate game source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="240"/> + <location filename="modlist.cpp" line="257"/> <source>Non-MO</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="270"/> + <location filename="modlist.cpp" line="289"/> <source>invalid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="398"/> + <location filename="modlist.cpp" line="437"/> <source>installed version: "%1", newest version: "%2"</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="400"/> + <location filename="modlist.cpp" line="439"/> <source>The newest version on Nexus seems to be older than the one you have installed. This could either mean the version you have has been withdrawn (i.e. due to a bug) or the author uses a non-standard versioning scheme and that newest version is actually newer. Either way you may want to "upgrade".</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="408"/> + <location filename="modlist.cpp" line="447"/> <source>Categories: <br></source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="437"/> + <location filename="modlist.cpp" line="478"/> <source>Invalid name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="442"/> + <location filename="modlist.cpp" line="483"/> <source>Name is already in use by another mod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="939"/> + <location filename="modlist.cpp" line="1022"/> <source>drag&drop failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="1018"/> + <location filename="modlist.cpp" line="1101"/> <source>Confirm</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="1019"/> + <location filename="modlist.cpp" line="1102"/> <source>Are you sure you want to remove "%1"?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="1082"/> + <location filename="modlist.cpp" line="1165"/> <source>Flags</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="1083"/> + <location filename="modlist.cpp" line="1166"/> <source>Content</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="1084"/> + <location filename="modlist.cpp" line="1167"/> <source>Mod Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="1085"/> + <location filename="modlist.cpp" line="1168"/> <source>Version</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="1086"/> + <location filename="modlist.cpp" line="1169"/> <source>Priority</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="1087"/> + <location filename="modlist.cpp" line="1170"/> <source>Category</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="1088"/> + <location filename="modlist.cpp" line="1171"/> <source>Source Game</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="1089"/> + <location filename="modlist.cpp" line="1172"/> <source>Nexus ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="1090"/> + <location filename="modlist.cpp" line="1173"/> <source>Installation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="1091"/> - <location filename="modlist.cpp" line="1124"/> + <location filename="modlist.cpp" line="1174"/> + <source>Notes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="modlist.cpp" line="1175"/> + <location filename="modlist.cpp" line="1211"/> <source>unknown</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="1099"/> + <location filename="modlist.cpp" line="1183"/> <source>Name of your mods</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="1100"/> + <location filename="modlist.cpp" line="1184"/> <source>Version of the mod (if available)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="1101"/> + <location filename="modlist.cpp" line="1185"/> <source>Installation priority of your mod. The higher, the more "important" it is and thus overwrites files from mods with lower priority.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="1103"/> + <location filename="modlist.cpp" line="1187"/> <source>Category of the mod.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="1104"/> + <location filename="modlist.cpp" line="1188"/> <source>The source game which was the origin of this mod.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="1105"/> + <location filename="modlist.cpp" line="1189"/> <source>Id of the mod as used on Nexus.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="1106"/> + <location filename="modlist.cpp" line="1190"/> <source>Emblemes to highlight things that might require attention.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="1107"/> - <source>Depicts the content of the mod:<br><table cellspacing=7><tr><td><img src=":/MO/gui/content/plugin" width=32/></td><td>Game plugins (esp/esm/esl)</td></tr><tr><td><img src=":/MO/gui/content/interface" width=32/></td><td>Interface</td></tr><tr><td><img src=":/MO/gui/content/mesh" width=32/></td><td>Meshes</td></tr><tr><td><img src=":/MO/gui/content/bsa" width=32/></td><td>BSA</td></tr><tr><td><img src=":/MO/gui/content/texture" width=32/></td><td>Textures</td></tr><tr><td><img src=":/MO/gui/content/sound" width=32/></td><td>Sounds</td></tr><tr><td><img src=":/MO/gui/content/music" width=32/></td><td>Music</td></tr><tr><td><img src=":/MO/gui/content/string" width=32/></td><td>Strings</td></tr><tr><td><img src=":/MO/gui/content/script" width=32/></td><td>Scripts (Papyrus)</td></tr><tr><td><img src=":/MO/gui/content/skse" width=32/></td><td>Script Extender plugins</td></tr><tr><td><img src=":/MO/gui/content/skyproc" width=32/></td><td>SkyProc Patcher</td></tr><tr><td><img src=":/MO/gui/content/menu" width=32/></td><td>Mod Configuration Menu</td></tr><tr><td><img src=":/MO/gui/content/inifile" width=32/></td><td>INI files</td></tr></table></source> + <location filename="modlist.cpp" line="1191"/> + <source>Depicts the content of the mod:<br><table cellspacing=7><tr><td><img src=":/MO/gui/content/plugin" width=32/></td><td>Game plugins (esp/esm/esl)</td></tr><tr><td><img src=":/MO/gui/content/interface" width=32/></td><td>Interface</td></tr><tr><td><img src=":/MO/gui/content/mesh" width=32/></td><td>Meshes</td></tr><tr><td><img src=":/MO/gui/content/bsa" width=32/></td><td>BSA</td></tr><tr><td><img src=":/MO/gui/content/texture" width=32/></td><td>Textures</td></tr><tr><td><img src=":/MO/gui/content/sound" width=32/></td><td>Sounds</td></tr><tr><td><img src=":/MO/gui/content/music" width=32/></td><td>Music</td></tr><tr><td><img src=":/MO/gui/content/string" width=32/></td><td>Strings</td></tr><tr><td><img src=":/MO/gui/content/script" width=32/></td><td>Scripts (Papyrus)</td></tr><tr><td><img src=":/MO/gui/content/skse" width=32/></td><td>Script Extender plugins</td></tr><tr><td><img src=":/MO/gui/content/skyproc" width=32/></td><td>SkyProc Patcher</td></tr><tr><td><img src=":/MO/gui/content/menu" width=32/></td><td>Mod Configuration Menu</td></tr><tr><td><img src=":/MO/gui/content/inifile" width=32/></td><td>INI files</td></tr><tr><td><img src=":/MO/gui/content/modgroup" width=32/></td><td>ModGroup files</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="modlist.cpp" line="1123"/> + <location filename="modlist.cpp" line="1209"/> <source>Time this mod was installed</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="modlist.cpp" line="1210"/> + <source>User notes about the mod</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ModListSortProxy</name> <message> - <location filename="modlistsortproxy.cpp" line="393"/> + <location filename="modlistsortproxy.cpp" line="399"/> <source>Drag&Drop is only supported when sorting by priority</source> <translation type="unfinished"></translation> </message> @@ -4184,123 +4386,135 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1264"/> + <location filename="organizercore.cpp" line="1266"/> <source>Executable "%1" not found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1291"/> + <location filename="organizercore.cpp" line="1294"/> <source>Start Steam?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1292"/> + <location filename="organizercore.cpp" line="1295"/> <source>Steam is required to be running already to correctly start the game. Should MO try to start steam now?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1318"/> + <location filename="organizercore.cpp" line="1324"/> <source>Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1326"/> + <location filename="organizercore.cpp" line="1332"/> <source>Windows Event Log Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1327"/> + <location filename="organizercore.cpp" line="1333"/> <source>The Windows Event Log service is disabled and/or not running. This prevents USVFS from running properly. Your mods may not be working in the executable that you are launching. Note that you may have to restart MO and/or your PC after the service is fixed. Continue launching %1?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1415"/> + <location filename="organizercore.cpp" line="1345"/> + <source>Blacklisted Executable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="organizercore.cpp" line="1346"/> + <source>The executable you are attempted to launch is blacklisted in the virtual file system. This will likely prevent the executable, and any executables that are launched by this one, from seeing any mods. This could extend to INI files, save games and any other virtualized files. + +Continue launching %1?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="organizercore.cpp" line="1435"/> <source>No profile set</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1701"/> + <location filename="organizercore.cpp" line="1724"/> <source>Failed to refresh list of esps: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1785"/> + <location filename="organizercore.cpp" line="1817"/> <source>Multiple esps/esls activated, please check that they don't conflict.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1860"/> + <location filename="organizercore.cpp" line="1892"/> <source>Download?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1861"/> + <location filename="organizercore.cpp" line="1893"/> <source>A download has been started but no installed page plugin recognizes it. If you download anyway no information (i.e. version) will be associated with the download. Continue?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1995"/> + <location filename="organizercore.cpp" line="2027"/> <source>failed to update mod list: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2002"/> - <location filename="organizercore.cpp" line="2019"/> + <location filename="organizercore.cpp" line="2034"/> + <location filename="organizercore.cpp" line="2051"/> <source>login successful</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2026"/> + <location filename="organizercore.cpp" line="2058"/> <source>Login failed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2027"/> + <location filename="organizercore.cpp" line="2059"/> <source>Login failed, try again?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2036"/> + <location filename="organizercore.cpp" line="2068"/> <source>login failed: %1. Download will not be associated with an account</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2044"/> + <location filename="organizercore.cpp" line="2076"/> <source>login failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2054"/> + <location filename="organizercore.cpp" line="2086"/> <source>login failed: %1. You need to log-in with Nexus to update MO.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2107"/> + <location filename="organizercore.cpp" line="2139"/> <source>MO1 "Script Extender" load mechanism has left hook.dll in your game folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2110"/> - <location filename="organizercore.cpp" line="2126"/> + <location filename="organizercore.cpp" line="2142"/> + <location filename="organizercore.cpp" line="2158"/> <source>Description missing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2119"/> + <location filename="organizercore.cpp" line="2151"/> <source><a href="%1">hook.dll</a> has been found in your game folder (right click to copy the full path). This is most likely a leftover of setting the ModOrganizer 1 load mechanism to "Script Extender", in which case you must remove this file either by changing the load mechanism in ModOrganizer 1 or manually removing the file, otherwise the game is likely to crash and burn.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2153"/> + <location filename="organizercore.cpp" line="2185"/> <source>failed to save load order: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2225"/> + <location filename="organizercore.cpp" line="2257"/> <source>The designated write target "%1" is not enabled.</source> <translation type="unfinished"></translation> </message> @@ -4406,135 +4620,135 @@ Continue?</source> <context> <name>PluginList</name> <message> - <location filename="pluginlist.cpp" line="102"/> + <location filename="pluginlist.cpp" line="103"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="103"/> + <location filename="pluginlist.cpp" line="104"/> <source>Priority</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="104"/> + <location filename="pluginlist.cpp" line="105"/> <source>Mod Index</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="105"/> + <location filename="pluginlist.cpp" line="106"/> <source>Flags</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="106"/> - <location filename="pluginlist.cpp" line="118"/> + <location filename="pluginlist.cpp" line="107"/> + <location filename="pluginlist.cpp" line="119"/> <source>unknown</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="114"/> + <location filename="pluginlist.cpp" line="115"/> <source>Name of your mods</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="115"/> + <location filename="pluginlist.cpp" line="116"/> <source>Load priority of your mod. The higher, the more "important" it is and thus overwrites data from plugins with lower priority.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="117"/> + <location filename="pluginlist.cpp" line="118"/> <source>The modindex determines the formids of objects originating from this mods.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="215"/> + <location filename="pluginlist.cpp" line="221"/> <source>failed to update esp info for file %1 (source id: %2), error: %3</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="288"/> + <location filename="pluginlist.cpp" line="294"/> <source>esp not found: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="336"/> - <location filename="pluginlist.cpp" line="348"/> + <location filename="pluginlist.cpp" line="342"/> + <location filename="pluginlist.cpp" line="354"/> <source>Confirm</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="336"/> + <location filename="pluginlist.cpp" line="342"/> <source>Really enable all plugins?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="348"/> + <location filename="pluginlist.cpp" line="354"/> <source>Really disable all plugins?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="438"/> + <location filename="pluginlist.cpp" line="459"/> <source>The file containing locked plugin indices is broken</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="934"/> - <location filename="pluginlist.cpp" line="938"/> + <location filename="pluginlist.cpp" line="955"/> + <location filename="pluginlist.cpp" line="959"/> <source><b>Origin</b>: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="935"/> + <location filename="pluginlist.cpp" line="956"/> <source><br><b><i>This plugin can't be disabled (enforced by the game).</i></b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="940"/> + <location filename="pluginlist.cpp" line="961"/> <source>Author</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="943"/> + <location filename="pluginlist.cpp" line="964"/> <source>Description</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="946"/> + <location filename="pluginlist.cpp" line="967"/> <source>Missing Masters</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="953"/> + <location filename="pluginlist.cpp" line="974"/> <source>Enabled Masters</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="956"/> + <location filename="pluginlist.cpp" line="977"/> <source>Loads Archives</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="957"/> + <location filename="pluginlist.cpp" line="978"/> <source>There are Archives connected to this plugin. Their assets will be added to your game, overwriting in case of conflicts following the plugin order. Loose files will always overwrite assets from Archives. (This flag only checks for Archives from the same mod as the plugin)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="962"/> + <location filename="pluginlist.cpp" line="983"/> <source>Loads INI settings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="963"/> + <location filename="pluginlist.cpp" line="984"/> <source>There is an ini file connected to this plugin. Its settings will be added to your game settings, overwriting in case of conflicts.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="967"/> + <location filename="pluginlist.cpp" line="988"/> <source>This ESP is flagged as an ESL. It will adhere to the ESP load order but the records will be loaded in ESL space.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="1142"/> + <location filename="pluginlist.cpp" line="1163"/> <source>failed to restore load order for %1</source> <translation type="unfinished"></translation> </message> @@ -4596,67 +4810,87 @@ p, li { white-space: pre-wrap; } <context> <name>Profile</name> <message> - <location filename="profile.cpp" line="81"/> + <location filename="profile.cpp" line="78"/> <source>invalid profile name %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profile.cpp" line="85"/> + <location filename="profile.cpp" line="82"/> <source>failed to create %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profile.cpp" line="211"/> + <location filename="profile.cpp" line="256"/> <source>failed to write mod list: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profile.cpp" line="222"/> + <location filename="profile.cpp" line="267"/> <source>failed to update tweaked ini file, wrong settings may be used: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profile.cpp" line="242"/> + <location filename="profile.cpp" line="287"/> <source>failed to create tweaked ini: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profile.cpp" line="267"/> + <location filename="profile.cpp" line="312"/> <source>failed to open %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profile.cpp" line="326"/> + <location filename="profile.cpp" line="371"/> <source>"%1" is missing or inaccessible</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profile.cpp" line="371"/> - <location filename="profile.cpp" line="410"/> - <location filename="profile.cpp" line="512"/> - <location filename="profile.cpp" line="531"/> - <location filename="profile.cpp" line="541"/> + <location filename="profile.cpp" line="416"/> + <location filename="profile.cpp" line="455"/> + <location filename="profile.cpp" line="552"/> + <location filename="profile.cpp" line="571"/> + <location filename="profile.cpp" line="581"/> <source>invalid index %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profile.cpp" line="493"/> + <location filename="profile.cpp" line="533"/> <source>Overwrite directory couldn't be parsed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profile.cpp" line="502"/> + <location filename="profile.cpp" line="544"/> <source>invalid priority %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profile.cpp" line="725"/> - <source>Delete savegames?</source> + <location filename="profile.cpp" line="751"/> + <source>Delete profile-specific save games?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="profile.cpp" line="752"/> + <source>Do you want to delete the profile-specific save games? (If you select "No", the save games will show up again if you re-enable profile-specific save games)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="profile.cpp" line="782"/> + <source>Missing profile-specific game INI files!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="profile.cpp" line="783"/> + <source>Some of your profile-specific game INI files were missing. They will now be copied from the vanilla game folder. You might want double-check your settings.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="profile.cpp" line="798"/> + <source>Delete profile-specific game INI files?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profile.cpp" line="726"/> - <source>Do you want to delete local savegames? (If you select "No", the save games will show up again if you re-enable local savegames)</source> + <location filename="profile.cpp" line="799"/> + <source>Do you want to delete the profile-specific game INI files? (If you select "No", the INI files will be used again if you re-enable profile-specific game INI files.)</source> <translation type="unfinished"></translation> </message> </context> @@ -4674,17 +4908,17 @@ p, li { white-space: pre-wrap; } </message> <message> <location filename="profileinputdialog.ui" line="30"/> - <source>If checked, the new profile will use the default game settings.</source> + <source>If checked, the new profile will use the default game INI settings.</source> <translation type="unfinished"></translation> </message> <message> <location filename="profileinputdialog.ui" line="33"/> - <source>If checked, the new profile will use the default game settings instead of the "global" settings. Global settings are the settings you configure when running the game launcher directly, without MO.</source> + <source>If checked, the new profile will use the default game INI settings instead of the "global" settings. Global settings are the settings you configure when running the game launcher directly, without MO.</source> <translation type="unfinished"></translation> </message> <message> <location filename="profileinputdialog.ui" line="36"/> - <source>Default Game Settings</source> + <source>Default Game INI Settings</source> <translation type="unfinished"></translation> </message> </context> @@ -4713,27 +4947,41 @@ p, li { white-space: pre-wrap; } </message> <message> <location filename="profilesdialog.ui" line="38"/> + <source><html><head/><body><p>If checked, save games are stored locally to this profile and will not appear when starting with a different profile.</p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="profilesdialog.ui" line="41"/> - <source>If checked, savegames are local to this profile and will not appear when starting with a different profile.</source> + <source>If checked, save games are local to this profile and will not appear when starting with a different profile.</source> <translation type="unfinished"></translation> </message> <message> <location filename="profilesdialog.ui" line="44"/> - <source>Local Savegames</source> + <source>Use profile-specific Save Games</source> <translation type="unfinished"></translation> </message> <message> <location filename="profilesdialog.ui" line="51"/> - <source>Local Game Settings</source> + <source><html><head/><body><p>If checked MO2 will use his own profile-specific game INI files, so that the &quot;Global&quot; ones in MyGames can be left vanilla. This different set of INI files is then offered to the game instead of the default one.</p></body></html></source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.ui" line="61"/> + <location filename="profilesdialog.ui" line="54"/> + <source><html><head/><body><p>If checked, MO2 will use a local set of game INI files (configuration and settings files), different from the default ones found in MyGames. This way changes to the INI settings will only affect this profile and the Global INI files can remain vanilla. MO2 will then show the profile INI files to the game instead of the Global ones.</p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="profilesdialog.ui" line="57"/> + <source>Use profile-specific Game INI Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="profilesdialog.ui" line="67"/> <source>This ensures data files from mods are actually used. You want to enable this unless you use a different tool for Archive Invalidation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.ui" line="64"/> + <location filename="profilesdialog.ui" line="70"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4745,141 +4993,151 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.ui" line="74"/> + <location filename="profilesdialog.ui" line="80"/> <source>Automatic Archive Invalidation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.ui" line="85"/> - <location filename="profilesdialog.ui" line="88"/> + <location filename="profilesdialog.ui" line="91"/> + <location filename="profilesdialog.ui" line="94"/> <source>Create a new profile from scratch</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.ui" line="91"/> + <location filename="profilesdialog.ui" line="97"/> <source>Create</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.ui" line="101"/> + <location filename="profilesdialog.ui" line="107"/> <source>Clone the selected profile</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.ui" line="104"/> + <location filename="profilesdialog.ui" line="110"/> <source>This creates a new profile with the same settings and active mods as the selected one.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.ui" line="107"/> + <location filename="profilesdialog.ui" line="113"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.ui" line="117"/> - <location filename="profilesdialog.ui" line="120"/> + <location filename="profilesdialog.ui" line="123"/> + <location filename="profilesdialog.ui" line="126"/> <source>Delete the selected Profile. This can not be un-done!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.ui" line="123"/> + <location filename="profilesdialog.ui" line="129"/> <source>Remove</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.ui" line="133"/> + <location filename="profilesdialog.ui" line="139"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.ui" line="143"/> - <location filename="profilesdialog.ui" line="146"/> + <location filename="profilesdialog.ui" line="149"/> + <location filename="profilesdialog.ui" line="152"/> <source>Transfer save games to the selected profile.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.ui" line="149"/> + <location filename="profilesdialog.ui" line="155"/> <source>Transfer Saves</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.ui" line="172"/> + <location filename="profilesdialog.ui" line="178"/> <source>Close</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.cpp" line="75"/> + <location filename="profilesdialog.cpp" line="77"/> <source>Archive invalidation isn't required for this game.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.cpp" line="113"/> - <location filename="profilesdialog.cpp" line="154"/> + <location filename="profilesdialog.cpp" line="115"/> + <location filename="profilesdialog.cpp" line="156"/> <source>failed to create profile: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.cpp" line="163"/> + <location filename="profilesdialog.cpp" line="165"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.cpp" line="163"/> + <location filename="profilesdialog.cpp" line="165"/> <source>Please enter a name for the new profile</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.cpp" line="174"/> + <location filename="profilesdialog.cpp" line="176"/> <source>failed to copy profile: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.cpp" line="177"/> + <location filename="profilesdialog.cpp" line="179"/> <source>Invalid name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.cpp" line="178"/> + <location filename="profilesdialog.cpp" line="180"/> <source>Invalid profile name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.cpp" line="185"/> - <source>Confirm</source> + <location filename="profilesdialog.cpp" line="189"/> + <source>Deleting active profile</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="profilesdialog.cpp" line="190"/> + <source>Unable to delete active profile. Please change to a different profile first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.cpp" line="185"/> - <source>Are you sure you want to remove this profile (including local savegames if any)?</source> + <location filename="profilesdialog.cpp" line="194"/> + <source>Confirm</source> <translation type="unfinished"></translation> </message> <message> <location filename="profilesdialog.cpp" line="194"/> + <source>Are you sure you want to remove this profile (including profile-specific save games, if any)?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="profilesdialog.cpp" line="202"/> <source>Profile broken</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.cpp" line="195"/> + <location filename="profilesdialog.cpp" line="203"/> <source>This profile you're about to delete seems to be broken or the path is invalid. I'm about to delete the following folder: "%1". Proceed?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.cpp" line="227"/> + <location filename="profilesdialog.cpp" line="235"/> <source>Rename Profile</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.cpp" line="227"/> + <location filename="profilesdialog.cpp" line="235"/> <source>New Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.cpp" line="262"/> + <location filename="profilesdialog.cpp" line="270"/> <source>failed to change archive invalidation state: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.cpp" line="296"/> + <location filename="profilesdialog.cpp" line="304"/> <source>failed to determine if invalidation is active: %1</source> <translation type="unfinished"></translation> </message> @@ -5011,135 +5269,136 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="81"/> + <location filename="instancemanager.cpp" line="82"/> <source>Deleting folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="82"/> + <location filename="instancemanager.cpp" line="83"/> <source>I'm about to delete the following folder: "%1". Proceed?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="103"/> + <location filename="instancemanager.cpp" line="104"/> <source>Choose Instance to Delete</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="104"/> + <location filename="instancemanager.cpp" line="105"/> <source>Be Carefull! Deleting an Instance will remove all your files for that Instance (mods, downloads, profiles, configuration, ...). Custom paths outside of the instance folder for downloads, mods, etc. will be left untoched.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="117"/> + <location filename="instancemanager.cpp" line="118"/> <source>Are you sure?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="118"/> + <location filename="instancemanager.cpp" line="119"/> <source>Are you really sure you want to delete the Instance "%1" with all its files?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="122"/> + <location filename="instancemanager.cpp" line="123"/> <source>Failed to delete Instance</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="123"/> + <location filename="instancemanager.cpp" line="124"/> <source>Could not delete Instance "%1". If the folder was still in use, restart MO and try again.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="138"/> + <location filename="instancemanager.cpp" line="139"/> <source>Enter a Name for the new Instance</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="139"/> - <source>Enter a new name or select one from the suggested list:</source> + <location filename="instancemanager.cpp" line="140"/> + <source>Enter a new name or select one from the suggested list: +(This is just the name of the Instance, not the game selection)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="148"/> - <location filename="instancemanager.cpp" line="219"/> + <location filename="instancemanager.cpp" line="150"/> + <location filename="instancemanager.cpp" line="221"/> <source>Canceled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="154"/> + <location filename="instancemanager.cpp" line="156"/> <source>Invalid instance name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="155"/> + <location filename="instancemanager.cpp" line="157"/> <source>The instance name "%1" is invalid. Use the name "%2" instead?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="170"/> + <location filename="instancemanager.cpp" line="172"/> <source>The instance "%1" already exists.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="171"/> + <location filename="instancemanager.cpp" line="173"/> <source>Please choose a different instance name, like: "%1 1" .</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="190"/> + <location filename="instancemanager.cpp" line="192"/> <source>Choose Instance</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="191"/> + <location filename="instancemanager.cpp" line="193"/> <source>Each Instance is a full set of MO data files (mods, downloads, profiles, configuration, ...). You can use multiple instances for different games. Instances are stored in Appdata and can be accessed by all MO installations. If your MO folder is writable, you can also store a single instance locally (called a Portable install, and all the MO data files will be inside the installation folder).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="203"/> + <location filename="instancemanager.cpp" line="205"/> <source>New</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="204"/> + <location filename="instancemanager.cpp" line="206"/> <source>Create a new instance.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="208"/> + <location filename="instancemanager.cpp" line="210"/> <source>Portable</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="209"/> + <location filename="instancemanager.cpp" line="211"/> <source>Use MO folder for data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="213"/> + <location filename="instancemanager.cpp" line="215"/> <source>Manage Instances</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="214"/> + <location filename="instancemanager.cpp" line="216"/> <source>Delete an Instance.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="265"/> + <location filename="instancemanager.cpp" line="267"/> <location filename="profile.cpp" line="66"/> <source>failed to create %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="268"/> + <location filename="instancemanager.cpp" line="270"/> <source>Data directory created</source> <translation type="unfinished"></translation> </message> <message> - <location filename="instancemanager.cpp" line="269"/> + <location filename="instancemanager.cpp" line="271"/> <source>New data directory created at %1. If you don't want to store a lot of data there, reconfigure the storage directories via settings.</source> <translation type="unfinished"></translation> </message> @@ -5231,7 +5490,7 @@ If the folder was still in use, restart MO and try again.</source> </message> <message> <location filename="main.cpp" line="385"/> - <source>No game identified in "%1". The directory is required to contain the game binary and its launcher.</source> + <source>No game identified in "%1". The directory is required to contain the game binary.</source> <translation type="unfinished"></translation> </message> <message> @@ -5251,7 +5510,7 @@ If the folder was still in use, restart MO and try again.</source> </message> <message> <location filename="main.cpp" line="682"/> - <location filename="settings.cpp" line="968"/> + <location filename="settings.cpp" line="1095"/> <source>Mod Organizer</source> <translation type="unfinished"></translation> </message> @@ -5266,18 +5525,18 @@ If the folder was still in use, restart MO and try again.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="869"/> + <location filename="mainwindow.cpp" line="878"/> <source>Please use "Help" from the toolbar to get usage instructions to all elements</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1271"/> - <location filename="mainwindow.cpp" line="3980"/> + <location filename="mainwindow.cpp" line="1357"/> + <location filename="mainwindow.cpp" line="4409"/> <source><Manage...></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1283"/> + <location filename="mainwindow.cpp" line="1369"/> <source>failed to parse profile %1: %2</source> <translation type="unfinished"></translation> </message> @@ -5313,42 +5572,42 @@ If the folder was still in use, restart MO and try again.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="514"/> + <location filename="pluginlist.cpp" line="535"/> <source>failed to access %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="528"/> + <location filename="pluginlist.cpp" line="549"/> <source>failed to set file time %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="profilesdialog.cpp" line="94"/> + <location filename="profilesdialog.cpp" line="96"/> <source>Before you can use ModOrganizer, you need to create at least one profile. ATTENTION: Run the game at least once before creating a profile!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settings.cpp" line="975"/> + <location filename="settings.cpp" line="1102"/> <source>Script Extender</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settings.cpp" line="982"/> + <location filename="settings.cpp" line="1109"/> <source>Proxy DLL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="spawn.cpp" line="143"/> + <location filename="spawn.cpp" line="146"/> <source>failed to spawn "%1"</source> <translation type="unfinished"></translation> </message> <message> - <location filename="spawn.cpp" line="150"/> + <location filename="spawn.cpp" line="153"/> <source>Elevation required</source> <translation type="unfinished"></translation> </message> <message> - <location filename="spawn.cpp" line="151"/> + <location filename="spawn.cpp" line="154"/> <source>This process requires elevation to run. This is a potential security risk so I highly advice you to investigate if "%1" @@ -5358,7 +5617,7 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe <translation type="unfinished"></translation> </message> <message> - <location filename="spawn.cpp" line="166"/> + <location filename="spawn.cpp" line="169"/> <source>failed to spawn "%1": %2</source> <translation type="unfinished"></translation> </message> @@ -5524,12 +5783,12 @@ Select Show Details option to see the full change-log.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="selfupdater.cpp" line="337"/> + <location filename="selfupdater.cpp" line="339"/> <source>Failed to start %1: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="selfupdater.cpp" line="347"/> + <location filename="selfupdater.cpp" line="349"/> <source>Error</source> <translation type="unfinished"></translation> </message> @@ -5537,31 +5796,42 @@ Select Show Details option to see the full change-log.</source> <context> <name>Settings</name> <message> - <location filename="settings.cpp" line="143"/> + <location filename="settings.cpp" line="146"/> <source>Failed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settings.cpp" line="144"/> + <location filename="settings.cpp" line="147"/> <source>Sorry, failed to start the helper application</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settings.cpp" line="435"/> - <location filename="settings.cpp" line="454"/> + <location filename="settings.cpp" line="495"/> + <location filename="settings.cpp" line="514"/> <source>attempt to store setting for unknown plugin "%1"</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settings.cpp" line="758"/> + <location filename="settings.cpp" line="877"/> <source>Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settings.cpp" line="759"/> + <location filename="settings.cpp" line="878"/> <source>Failed to create "%1", you may not have the necessary permission. path remains unchanged.</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="settings.cpp" line="1146"/> + <source>Restart Mod Organizer?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settings.cpp" line="1147"/> + <source>In order to reset the window geometries, MO must be restarted. +Restart it now?</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SettingsDialog</name> @@ -5635,136 +5905,178 @@ If you use pre-releases, never contact me directly by e-mail or via private mess </message> <message> <location filename="settingsdialog.ui" line="99"/> - <source>If checked, the download interface will be more compact.</source> + <source>Colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="102"/> - <source>Compact Download Interface</source> + <location filename="settingsdialog.ui" line="105"/> + <source>Reset Colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="109"/> - <source>If checked, the download list will display meta information instead of file names.</source> + <location filename="settingsdialog.ui" line="112"/> + <source>Is overwritten (loose files)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="112"/> - <source>Download Meta Information</source> + <location filename="settingsdialog.ui" line="119"/> + <source>Mod Contains selected Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settingsdialog.ui" line="126"/> + <source>Plugin is Contained in selected Mod</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settingsdialog.ui" line="133"/> + <source>Is overwriting (loose files)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settingsdialog.ui" line="140"/> + <location filename="settingsdialog.ui" line="143"/> + <source>When this is enabled, the color defined for a separator will be shown on the mod list scrollbar at the location of the separator. This can be useful for quick navigation between separator sections or to a specific separator section.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settingsdialog.ui" line="146"/> + <source>Show mod list separator colors on the scrollbar</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settingsdialog.ui" line="159"/> + <location filename="settingsdialog.ui" line="162"/> + <source>Modify the categories available to arrange your mods.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="125"/> + <location filename="settingsdialog.ui" line="165"/> + <source>Configure Mod Categories</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settingsdialog.ui" line="178"/> <source>Reset stored information from dialogs.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="128"/> + <location filename="settingsdialog.ui" line="181"/> <source>This will make all dialogs show up again where you checked the "Remember selection"-box.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="131"/> + <location filename="settingsdialog.ui" line="184"/> <source>Reset Dialogs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="151"/> - <location filename="settingsdialog.ui" line="154"/> - <source>Modify the categories available to arrange your mods.</source> + <location filename="settingsdialog.ui" line="191"/> + <source>If checked, the download interface will be more compact.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="157"/> - <source>Configure Mod Categories</source> + <location filename="settingsdialog.ui" line="194"/> + <source>Compact Download Interface</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settingsdialog.ui" line="214"/> + <source>If checked, the download list will display meta information instead of file names.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settingsdialog.ui" line="217"/> + <source>Download Meta Information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="168"/> + <location filename="settingsdialog.ui" line="228"/> <source>Paths</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="176"/> - <location filename="settingsdialog.ui" line="193"/> - <location filename="settingsdialog.ui" line="290"/> + <location filename="settingsdialog.ui" line="236"/> + <location filename="settingsdialog.ui" line="253"/> + <location filename="settingsdialog.ui" line="350"/> + <location filename="settingsdialog.ui" line="408"/> <source>...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="203"/> + <location filename="settingsdialog.ui" line="263"/> <source>Caches</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="210"/> + <location filename="settingsdialog.ui" line="270"/> <source>Overwrite</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="217"/> - <location filename="settingsdialog.ui" line="220"/> + <location filename="settingsdialog.ui" line="277"/> + <location filename="settingsdialog.ui" line="280"/> <source>Directory where downloads are stored.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="237"/> + <location filename="settingsdialog.ui" line="297"/> <source>Downloads</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="257"/> + <location filename="settingsdialog.ui" line="317"/> <source>Profiles</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="280"/> + <location filename="settingsdialog.ui" line="340"/> <source>Directory where mods are stored.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="283"/> + <location filename="settingsdialog.ui" line="343"/> <source>Directory where mods are stored. Please note that changing this will break all associations of profiles with mods that don't exist in the new location (with the same name).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="307"/> + <location filename="settingsdialog.ui" line="367"/> <source>Mods</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="327"/> + <location filename="settingsdialog.ui" line="387"/> <source>Managed Game</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="334"/> + <location filename="settingsdialog.ui" line="394"/> <source>Base Directory</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="341"/> + <location filename="settingsdialog.ui" line="401"/> <source>Use %BASE_DIR% to refer to the Base Directory.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="363"/> + <location filename="settingsdialog.ui" line="430"/> <source>Important: All directories have to be writeable!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="371"/> - <location filename="settingsdialog.ui" line="387"/> + <location filename="settingsdialog.ui" line="438"/> + <location filename="settingsdialog.ui" line="454"/> <source>Nexus</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="377"/> + <location filename="settingsdialog.ui" line="444"/> <source>Allows automatic log-in when the Nexus-Page for the game is clicked.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="380"/> + <location filename="settingsdialog.ui" line="447"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5773,144 +6085,144 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="396"/> + <location filename="settingsdialog.ui" line="463"/> <source>If checked and if correct credentials are entered below, log-in to Nexus (for browsing and downloading) is automatic.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="399"/> + <location filename="settingsdialog.ui" line="466"/> <source>Automatically Log-In to Nexus</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="408"/> - <location filename="settingsdialog.ui" line="594"/> + <location filename="settingsdialog.ui" line="475"/> + <location filename="settingsdialog.ui" line="661"/> <source>Username</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="422"/> - <location filename="settingsdialog.ui" line="604"/> + <location filename="settingsdialog.ui" line="489"/> + <location filename="settingsdialog.ui" line="671"/> <source>Password</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="443"/> + <location filename="settingsdialog.ui" line="510"/> <source>Remove cache and cookies. Forces a new login.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="446"/> + <location filename="settingsdialog.ui" line="513"/> <source>Clear Cache</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="475"/> + <location filename="settingsdialog.ui" line="542"/> <source>Disable automatic internet features</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="478"/> + <location filename="settingsdialog.ui" line="545"/> <source>Disable automatic internet features. This does not affect features that are explicitly invoked by the user (like checking mods for updates, endorsing, opening the web browser)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="481"/> + <location filename="settingsdialog.ui" line="548"/> <source>Offline Mode</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="488"/> + <location filename="settingsdialog.ui" line="555"/> <source>Use a proxy for network connections.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="491"/> + <location filename="settingsdialog.ui" line="558"/> <source>Use a proxy for network connections. This uses the system-wide settings which can be configured in Internet Explorer. Please note that MO will start up a few seconds slower on some systems when using a proxy.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="494"/> + <location filename="settingsdialog.ui" line="561"/> <source>Use HTTP Proxy (Uses System Settings)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="503"/> + <location filename="settingsdialog.ui" line="570"/> <source>Associate with "Download with manager" links</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="532"/> + <location filename="settingsdialog.ui" line="599"/> <source>Known Servers (updated on download)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="553"/> + <location filename="settingsdialog.ui" line="620"/> <source>Preferred Servers (Drag & Drop)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="588"/> + <location filename="settingsdialog.ui" line="655"/> <source>Steam</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="634"/> + <location filename="settingsdialog.ui" line="701"/> <source>If you save your steam user ID and password here, they will be used when logging into steam. Note, however, your password will be stored unencrypted, so make sure your computer is secure.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="661"/> + <location filename="settingsdialog.ui" line="728"/> <source>Plugins</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="683"/> + <location filename="settingsdialog.ui" line="753"/> <source>Author:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="697"/> + <location filename="settingsdialog.ui" line="767"/> <source>Version:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="711"/> + <location filename="settingsdialog.ui" line="781"/> <source>Description:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="749"/> + <location filename="settingsdialog.ui" line="819"/> <source>Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="754"/> + <location filename="settingsdialog.ui" line="824"/> <source>Value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="766"/> + <location filename="settingsdialog.ui" line="836"/> <source>Blacklisted Plugins (use <del> to remove):</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="777"/> + <location filename="settingsdialog.ui" line="847"/> <source>Workarounds</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="785"/> + <location filename="settingsdialog.ui" line="855"/> <source>Steam App ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="805"/> + <location filename="settingsdialog.ui" line="875"/> <source>The Steam AppID for your game</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="808"/> + <location filename="settingsdialog.ui" line="878"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5926,17 +6238,17 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="839"/> + <location filename="settingsdialog.ui" line="909"/> <source>Load Mechanism</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="859"/> + <location filename="settingsdialog.ui" line="929"/> <source>Select loading mechanism. See help for details.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="862"/> + <location filename="settingsdialog.ui" line="932"/> <source>Mod Organizer needs a dll to be injected into the game so all mods are visible to it. There are several means to do this: *Mod Organizer* (default) In this mode the Mod Organizer itself injects the dll. The disadvantage is that you always have to start the game through MO or a link created by it. @@ -5947,17 +6259,17 @@ If you use the Steam version of Oblivion the default will NOT work. In this case <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="879"/> + <location filename="settingsdialog.ui" line="949"/> <source>NMM Version</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="899"/> + <location filename="settingsdialog.ui" line="969"/> <source>The Version of Nexus Mod Manager to impersonate.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="902"/> + <location filename="settingsdialog.ui" line="972"/> <source>Mod Organizer uses an API provided by the Nexus to provide features like checking for updates and downloading files. Unfortunately this API has not been made available officially to third party tools like MO so we have to impersonate the Nexus Mod Manager to be allowed in. On top of this Nexus has used the client identification to lock out outdated versions of NMM to force users to update. This means that MO also needs to impersonate the new version of NMM even if MO doesn't need an update. Therefore you can configure the version to identify as here. Please note that MO does identify itself as MO to the webserver, it's not lying about what it is. It is merely adding a "compatible" NMM version to the user agent. @@ -5966,44 +6278,28 @@ tl;dr-version: If Nexus-features don't work, insert the current version num <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="927"/> - <source>Enforces that inactive ESPs and ESMs are never loaded.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="settingsdialog.ui" line="930"/> - <source>It seems that the Games occasionally load ESP or ESM files even if they haven't been activated as plugins. -I don't yet know what the circumstances are, but user reports imply it is in some cases unwanted. If this is checked, ESPs and ESMs not checked in the List are invisible to the game and can not be loaded.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="settingsdialog.ui" line="934"/> - <source>Hide inactive ESPs/ESMs</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="settingsdialog.ui" line="941"/> + <location filename="settingsdialog.ui" line="996"/> <source>If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="944"/> + <location filename="settingsdialog.ui" line="999"/> <source>If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on) Uncheck this if you want to use Mod Organizer with total conversions (like Nehrim) but be aware that the game will crash if required files are not enabled.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="948"/> + <location filename="settingsdialog.ui" line="1003"/> <source>Force-enable game files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="958"/> + <location filename="settingsdialog.ui" line="1013"/> <source>Disable this to no longer display mods installed outside MO in the mod list (left pane). Assets from those mods will then be treated as having lowest mod priority together with the original game content.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="961"/> + <location filename="settingsdialog.ui" line="1016"/> <source>By default Mod Organizer will display esp+bsa bundles installed with foreign tools as mods (left pane). This allows you to control their priority in relation to other mods. This is particularly useful if you also use Steam Workshop to install mods. However, if you installed loose file mods outside MO which conflict with BSAs also installed outside MO those conflicts can't be resolved correctly. @@ -6011,82 +6307,134 @@ If you disable this feature, MO will only display official DLCs this way. Please <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="967"/> + <location filename="settingsdialog.ui" line="1022"/> <source>Display mods installed outside MO</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="977"/> - <location filename="settingsdialog.ui" line="981"/> + <location filename="settingsdialog.ui" line="1035"/> + <source>Enforces that inactive ESPs and ESMs are never loaded.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settingsdialog.ui" line="1038"/> + <source>It seems that the Games occasionally load ESP or ESM files even if they haven't been activated as plugins. +I don't yet know what the circumstances are, but user reports imply it is in some cases unwanted. If this is checked, ESPs and ESMs not checked in the List are invisible to the game and can not be loaded.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settingsdialog.ui" line="1042"/> + <source>Hide inactive ESPs/ESMs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settingsdialog.ui" line="1049"/> + <location filename="settingsdialog.ui" line="1052"/> + <source>Disable this to prevent the GUI from being locked when running an executable. This may result in abnormal behavior.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settingsdialog.ui" line="1055"/> + <source>Lock GUI when running executable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settingsdialog.ui" line="1067"/> + <location filename="settingsdialog.ui" line="1071"/> <source>For Skyrim, this can be used instead of Archive Invalidation. It should make AI redundant for all Profiles. For the other games this is not a sufficient replacement for AI!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="985"/> + <location filename="settingsdialog.ui" line="1075"/> <source>Back-date BSAs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="1009"/> - <source>These are workarounds for problems with Mod Organizer. Please make sure you read the help text before changing anything here.</source> + <location filename="settingsdialog.ui" line="1086"/> + <source>Add executables to the blacklist to prevent them from +accessing the virtual file system. This is useful to prevent +unintended programs from being hooked. Hooking unintended +programs may affect the execution of these programs or the +programs you are intentionally running.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="1020"/> - <source>Diagnostics</source> + <location filename="settingsdialog.ui" line="1093"/> + <source>Add executables to the blacklist to prevent them from accessing the virtual file system. This is useful to prevent unintended programs from being hooked. Hooking unintended programs may affect the execution of these programs or the programs you are intentionally running.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="1028"/> - <source>Log Level</source> + <location filename="settingsdialog.ui" line="1096"/> + <source>Configure Executables Blacklist</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="1035"/> - <source>Decides the amount of data printed to "ModOrganizer.log"</source> + <location filename="settingsdialog.ui" line="1106"/> + <location filename="settingsdialog.ui" line="1109"/> + <source>Resets the window geometries for all windows. This can be useful if a window becomes too small or too large, if a column becomes too thin or too wide, and in similar situations.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="1038"/> - <source> - Decides the amount of data printed to "ModOrganizer.log". - "Debug" produces very useful information for finding problems. There is usually no noteworthy performance impact but the file may become rather large. If this is a problem you may prefer the "Info" level for regluar use. On the "Error" level the log file usually remains empty. - </source> + <location filename="settingsdialog.ui" line="1112"/> + <source>Reset Window Geometries</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="1045"/> - <source>Debug</source> + <location filename="settingsdialog.ui" line="1135"/> + <source>These are workarounds for problems with Mod Organizer. Please make sure you read the help text before changing anything here.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="1050"/> - <source>Info (recommended)</source> + <location filename="settingsdialog.ui" line="1146"/> + <source>Diagnostics</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="1055"/> - <source>Warning</source> + <location filename="settingsdialog.ui" line="1154"/> + <source>Max Dumps To Keep</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="1060"/> - <source>Error</source> + <location filename="settingsdialog.ui" line="1174"/> + <source>Maximum number of crash dumps to keep on disk. Use 0 for unlimited.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="1085"/> + <location filename="settingsdialog.ui" line="1177"/> + <source> + Maximum number of crash dumps to keep on disk. Use 0 for unlimited. + Set "Crash Dumps" above to None to disable crash dump collection. + </source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settingsdialog.ui" line="1189"/> + <source>Hint: right click link and copy link location</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settingsdialog.ui" line="1192"/> + <source> + Logs and crash dumps are stored under your current instance in the <a href="LOGS_FULL_PATH">LOGS_DIR</a> + and <a href="DUMPS_FULL_PATH">DUMPS_DIR</a> folders. + Sending logs and/or crash dumps to the developers can help investigate issues. + It is recommended to compress large log and dmp files before sending. + </source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settingsdialog.ui" line="1209"/> <source>Crash Dumps</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="1092"/> + <location filename="settingsdialog.ui" line="1216"/> <source>Decides which type of crash dumps are collected when injected processes crash.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="1095"/> + <location filename="settingsdialog.ui" line="1219"/> <source> Decides which type of crash dumps are collected when injected processes crash. "None" Disables the generation of crash dumps by MO. @@ -6097,105 +6445,131 @@ For the other games this is not a sufficient replacement for AI!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="1105"/> + <location filename="settingsdialog.ui" line="1229"/> <source>None</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="1110"/> + <location filename="settingsdialog.ui" line="1234"/> <source>Mini (recommended)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="1115"/> + <location filename="settingsdialog.ui" line="1239"/> <source>Data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="1120"/> + <location filename="settingsdialog.ui" line="1244"/> <source>Full</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="1132"/> - <source>Max Dumps To Keep</source> + <location filename="settingsdialog.ui" line="1272"/> + <source>Log Level</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="1152"/> - <source>Maximum number of crash dumps to keep on disk. Use 0 for unlimited.</source> + <location filename="settingsdialog.ui" line="1279"/> + <source>Decides the amount of data printed to "ModOrganizer.log"</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="1155"/> + <location filename="settingsdialog.ui" line="1282"/> <source> - Maximum number of crash dumps to keep on disk. Use 0 for unlimited. - Set "Crash Dumps" above to None to disable crash dump collection. + Decides the amount of data printed to "ModOrganizer.log". + "Debug" produces very useful information for finding problems. There is usually no noteworthy performance impact but the file may become rather large. If this is a problem you may prefer the "Info" level for regluar use. On the "Error" level the log file usually remains empty. </source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="1167"/> - <source>Hint: right click link and copy link location</source> + <location filename="settingsdialog.ui" line="1289"/> + <source>Debug</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.ui" line="1170"/> - <source> - Logs and crash dumps are stored under your current instance in the <a href="LOGS_FULL_PATH">LOGS_DIR</a> - and <a href="DUMPS_FULL_PATH">DUMPS_DIR</a> folders. - Sending logs and/or crash dumps to the developers can help investigate issues. - It is recommended to compress large log and dmp files before sending. - </source> + <location filename="settingsdialog.ui" line="1294"/> + <source>Info (recommended)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settingsdialog.ui" line="1299"/> + <source>Warning</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.cpp" line="70"/> + <location filename="settingsdialog.ui" line="1304"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settingsdialog.cpp" line="83"/> <source>Confirm</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.cpp" line="71"/> + <location filename="settingsdialog.cpp" line="84"/> <source>Changing the mod directory affects all your profiles! Mods not present (or named differently) in the new location will be disabled in all profiles. There is no way to undo this unless you backed up your profiles manually. Proceed?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.cpp" line="119"/> + <location filename="settingsdialog.cpp" line="128"/> + <source>Executables Blacklist</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settingsdialog.cpp" line="129"/> + <source>Enter one executable per line to be blacklisted from the virtual file system. +Mods and other virtualized files will not be visible to these executables and +any executables launched by them. + +Example: + Chrome.exe + Firefox.exe</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settingsdialog.cpp" line="162"/> <source>Select base directory</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.cpp" line="130"/> + <location filename="settingsdialog.cpp" line="173"/> <source>Select download directory</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.cpp" line="141"/> + <location filename="settingsdialog.cpp" line="184"/> <source>Select mod directory</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.cpp" line="152"/> + <location filename="settingsdialog.cpp" line="195"/> <source>Select cache directory</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.cpp" line="163"/> + <location filename="settingsdialog.cpp" line="206"/> <source>Select profiles directory</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.cpp" line="174"/> + <location filename="settingsdialog.cpp" line="217"/> <source>Select overwrite directory</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.cpp" line="182"/> + <location filename="settingsdialog.cpp" line="227"/> + <source>Select game executable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="settingsdialog.cpp" line="332"/> <source>Confirm?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.cpp" line="183"/> + <location filename="settingsdialog.cpp" line="333"/> <source>This will make all dialogs show up again where you checked the "Remember selection"-box. Continue?</source> <translation type="unfinished"></translation> </message> @@ -6307,7 +6681,7 @@ For the other games this is not a sufficient replacement for AI!</source> <name>TransferSavesDialog</name> <message> <location filename="transfersavesdialog.ui" line="14"/> - <source>Transfer Savegames</source> + <source>Transfer Save Games</source> <translation type="unfinished"></translation> </message> <message> @@ -6399,7 +6773,7 @@ On Windows XP: <context> <name>UsvfsConnector</name> <message> - <location filename="usvfsconnector.cpp" line="157"/> + <location filename="usvfsconnector.cpp" line="161"/> <source>Preparing vfs</source> <translation type="unfinished"></translation> </message> diff --git a/src/organizercore.cpp b/src/organizercore.cpp index 5c85e323..d52ef40b 100644 --- a/src/organizercore.cpp +++ b/src/organizercore.cpp @@ -762,9 +762,9 @@ void OrganizerCore::prepareVFS() m_USVFS.updateMapping(fileMapping(m_CurrentProfile->name(), QString()));
}
-void OrganizerCore::updateVFSParams(int logLevel, int crashDumpsType) {
+void OrganizerCore::updateVFSParams(int logLevel, int crashDumpsType, QString executableBlacklist) {
setGlobalCrashDumpsType(crashDumpsType);
- m_USVFS.updateParams(logLevel, crashDumpsType);
+ m_USVFS.updateParams(logLevel, crashDumpsType, executableBlacklist);
}
bool OrganizerCore::cycleDiagnostics() {
@@ -1183,7 +1183,9 @@ ModList *OrganizerCore::modList() QStringList OrganizerCore::modsSortedByProfilePriority() const
{
QStringList res;
- for (unsigned int i = 0; i < currentProfile()->numRegularMods(); ++i) {
+ for (int i = currentProfile()->getPriorityMinimum();
+ i < currentProfile()->getPriorityMinimum() + (int)currentProfile()->numRegularMods();
+ ++i) {
int modIndex = currentProfile()->modIndexByPriority(i);
res.push_back(ModInfo::getByIndex(modIndex)->name());
}
@@ -1221,7 +1223,7 @@ HANDLE OrganizerCore::spawnBinaryDirect(const QFileInfo &binary, LPDWORD exitCode)
{
HANDLE processHandle = spawnBinaryProcess(binary, arguments, profileName, currentDirectory, steamAppID, customOverwrite);
- if (processHandle != INVALID_HANDLE_VALUE) {
+ if (Settings::instance().lockGUI() && processHandle != INVALID_HANDLE_VALUE) {
std::unique_ptr<LockedDialog> dlg;
ILockedWaitingForProcess* uilock = nullptr;
@@ -1287,12 +1289,16 @@ HANDLE OrganizerCore::spawnBinaryProcess(const QFileInfo &binary, .exists())
&& (m_Settings.getLoadMechanism() == LoadMechanism::LOAD_MODORGANIZER)) {
if (!testForSteam()) {
- if (QuestionBoxMemory::query(window, "steamQuery", binary.fileName(),
- tr("Start Steam?"),
- tr("Steam is required to be running already to correctly start the game. "
- "Should MO try to start steam now?"),
- QDialogButtonBox::Yes | QDialogButtonBox::No) == QDialogButtonBox::Yes) {
+ QDialogButtonBox::StandardButton result;
+ result = QuestionBoxMemory::query(window, "steamQuery", binary.fileName(),
+ tr("Start Steam?"),
+ tr("Steam is required to be running already to correctly start the game. "
+ "Should MO try to start steam now?"),
+ QDialogButtonBox::Yes | QDialogButtonBox::No | QDialogButtonBox::Cancel);
+ if (result == QDialogButtonBox::Yes) {
startSteam(window);
+ } else if(result == QDialogButtonBox::Cancel) {
+ return INVALID_HANDLE_VALUE;
}
}
}
@@ -1332,11 +1338,25 @@ HANDLE OrganizerCore::spawnBinaryProcess(const QFileInfo &binary, return INVALID_HANDLE_VALUE;
}
}
-
+
+ for (auto exec : settings().executablesBlacklist().split(";")) {
+ if (exec.compare(binary.fileName(), Qt::CaseInsensitive) == 0) {
+ if (QuestionBoxMemory::query(window, QString("blacklistedExecutable"), binary.fileName(),
+ tr("Blacklisted Executable"),
+ tr("The executable you are attempted to launch is blacklisted in the virtual file"
+ " system. This will likely prevent the executable, and any executables that are"
+ " launched by this one, from seeing any mods. This could extend to INI files, save"
+ " games and any other virtualized files.\n\nContinue launching %1?").arg(binary.fileName()),
+ QDialogButtonBox::Yes | QDialogButtonBox::No) == QDialogButtonBox::No) {
+ return INVALID_HANDLE_VALUE;
+ }
+ }
+ }
+
QString modsPath = settings().getModDirectory();
// Check if this a request with either an executable or a working directory under our mods folder
- // then will start the processs in a virtualized "environment" with the appropriate paths fixed:
+ // then will start the process in a virtualized "environment" with the appropriate paths fixed:
// (i.e. mods\FNIS\path\exe => game\data\path\exe)
QString cwdPath = currentDirectory.absolutePath();
bool virtualizedCwd = cwdPath.startsWith(modsPath, Qt::CaseInsensitive);
@@ -1465,6 +1485,9 @@ HANDLE OrganizerCore::startApplication(const QString &executable, bool OrganizerCore::waitForApplication(HANDLE handle, LPDWORD exitCode)
{
+ if (!Settings::instance().lockGUI())
+ return true;
+
ILockedWaitingForProcess* uilock = nullptr;
if (m_UserInterface != nullptr) {
uilock = m_UserInterface->lock();
@@ -1725,7 +1748,7 @@ void OrganizerCore::refreshBSAList() if (m_ActiveArchives.isEmpty()) {
m_ActiveArchives = m_DefaultArchives;
}
-
+
if (m_UserInterface != nullptr) {
m_UserInterface->updateBSAList(m_DefaultArchives, m_ActiveArchives);
}
@@ -1749,7 +1772,16 @@ void OrganizerCore::updateModActiveState(int index, bool active) QDir dir(modInfo->absolutePath());
for (const QString &esm :
dir.entryList(QStringList() << "*.esm", QDir::Files)) {
- m_PluginList.enableESP(esm, active);
+ const FileEntry::Ptr file = m_DirectoryStructure->findFile(ToWString(esm));
+ if (file.get() == nullptr) {
+ qWarning("failed to activate %s", qPrintable(esm));
+ continue;
+ }
+
+ if (active != m_PluginList.isEnabled(esm)
+ && file->getAlternatives().empty()) {
+ m_PluginList.enableESP(esm, active);
+ }
}
int enabled = 0;
for (const QString &esl :
@@ -2304,4 +2336,4 @@ std::vector<Mapping> OrganizerCore::fileMapping( result.insert(result.end(), subRes.begin(), subRes.end());
}
return result;
-}
\ No newline at end of file +}
diff --git a/src/organizercore.h b/src/organizercore.h index 28ecef48..086fa11d 100644 --- a/src/organizercore.h +++ b/src/organizercore.h @@ -167,7 +167,7 @@ public: void prepareVFS();
- void updateVFSParams(int logLevel, int crashDumpsType);
+ void updateVFSParams(int logLevel, int crashDumpsType, QString executableBlacklist);
bool cycleDiagnostics();
diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp index 18e40a6e..b0f59e1e 100644 --- a/src/pluginlist.cpp +++ b/src/pluginlist.cpp @@ -21,6 +21,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. #include "settings.h"
#include "scopeguard.h"
#include "modinfo.h"
+#include "modlist.h"
#include "viewmarkingscrollbar.h"
#include <utility.h>
#include <iplugingame.h>
@@ -119,14 +120,19 @@ QString PluginList::getColumnToolTip(int column) }
}
-void PluginList::highlightPlugins(const QItemSelection &selected, const MOShared::DirectoryEntry &directoryEntry, const Profile &profile)
+void PluginList::highlightPlugins(const QItemSelectionModel *selection, const MOShared::DirectoryEntry &directoryEntry, const Profile &profile)
{
for (auto &esp : m_ESPs) {
esp.m_ModSelected = false;
}
- for (QModelIndex idx : selected.indexes()) {
- ModInfo::Ptr selectedMod = ModInfo::getByIndex(idx.data(Qt::UserRole + 1).toInt());
- if (!selectedMod.isNull() && profile.modEnabled(idx.data(Qt::UserRole + 1).toInt())) {
+ for (QModelIndex idx : selection->selectedRows(ModList::COL_PRIORITY)) {
+ int modPriority = idx.data(Qt::UserRole).toInt();
+ if (modPriority < 0 || modPriority == INT_MAX)
+ continue;
+
+ int modIndex = profile.modIndexByPriority(modPriority);
+ ModInfo::Ptr selectedMod = ModInfo::getByIndex(modIndex);
+ if (!selectedMod.isNull() && profile.modEnabled(modIndex)) {
QDir dir(selectedMod->absolutePath());
QStringList plugins = dir.entryList(QStringList() << "*.esp" << "*.esm" << "*.esl");
MOShared::FilesOrigin origin = directoryEntry.getOriginByName(selectedMod->internalName().toStdWString());
@@ -289,21 +295,26 @@ void PluginList::enableESP(const QString &name, bool enable) }
}
+int PluginList::findPluginByPriority(int priority)
+{
+ for (int i = 0; i < m_ESPs.size(); i++ ) {
+ if (m_ESPs[i].m_Priority == priority) {
+ return i;
+ }
+ }
+ qCritical(QString("No plugin with priority %1").arg(priority).toLocal8Bit());
+ return -1;
+}
+
void PluginList::enableSelected(const QItemSelectionModel *selectionModel)
{
- if (selectionModel->hasSelection()){
+ if (selectionModel->hasSelection()) {
bool dirty = false;
for (auto row : selectionModel->selectedRows(COL_PRIORITY)) {
- int rowPriority = row.data().toInt();
- for (int i = 0; i < m_ESPs.size(); i++) {
- if (m_ESPs[i].m_Priority == rowPriority) {
- if (!m_ESPs[i].m_Enabled) {
- m_ESPs[i].m_Enabled = true;
- dirty = true;
- }
-
- break;
- }
+ int rowIndex = findPluginByPriority(row.data().toInt());
+ if (!m_ESPs[rowIndex].m_Enabled) {
+ m_ESPs[rowIndex].m_Enabled = true;
+ dirty = true;
}
}
if (dirty) emit writePluginsList();
@@ -312,18 +323,13 @@ void PluginList::enableSelected(const QItemSelectionModel *selectionModel) void PluginList::disableSelected(const QItemSelectionModel *selectionModel)
{
- if (selectionModel->hasSelection()){
+ if (selectionModel->hasSelection()) {
bool dirty = false;
for (auto row : selectionModel->selectedRows(COL_PRIORITY)) {
- int rowPriority = row.data().toInt();
- for (int i = 0; i < m_ESPs.size(); i++) {
- if (m_ESPs[i].m_Priority == rowPriority) {
- if (!m_ESPs[i].m_ForceEnabled && m_ESPs[i].m_Enabled) {
- m_ESPs[i].m_Enabled = false;
- dirty = true;
- }
- break;
- }
+ int rowIndex = findPluginByPriority(row.data().toInt());
+ if (!m_ESPs[rowIndex].m_ForceEnabled && m_ESPs[rowIndex].m_Enabled) {
+ m_ESPs[rowIndex].m_Enabled = false;
+ dirty = true;
}
}
if (dirty) emit writePluginsList();
@@ -356,6 +362,21 @@ void PluginList::disableAll() }
}
+void PluginList::sendToPriority(const QItemSelectionModel *selectionModel, int newPriority)
+{
+ if (selectionModel->hasSelection()) {
+ std::vector<int> pluginsToMove;
+ for (auto row: selectionModel->selectedRows(COL_PRIORITY)) {
+ int rowIndex = findPluginByPriority(row.data().toInt());
+ if (!m_ESPs[rowIndex].m_ForceEnabled) {
+ pluginsToMove.push_back(rowIndex);
+ }
+ }
+ if (pluginsToMove.size()) {
+ changePluginPriority(pluginsToMove, newPriority);
+ }
+ }
+}
bool PluginList::isEnabled(const QString &name)
{
@@ -902,7 +923,7 @@ QVariant PluginList::data(const QModelIndex &modelIndex, int role) const } else if (role == Qt::BackgroundRole
|| (role == ViewMarkingScrollBar::DEFAULT_ROLE)) {
if (m_ESPs[index].m_ModSelected) {
- return QColor(0, 0, 255, 64);
+ return Settings::instance().pluginListContainedColor();
} else {
return QVariant();
}
@@ -1092,6 +1113,12 @@ void PluginList::setPluginPriority(int row, int &newPriority) {
int newPriorityTemp = newPriority;
+ // enforce valid range
+ if (newPriorityTemp < 0)
+ newPriorityTemp = 0;
+ else if (newPriorityTemp >= static_cast<int>(m_ESPsByPriority.size()))
+ newPriorityTemp = static_cast<int>(m_ESPsByPriority.size()) - 1;
+
if (!m_ESPs[row].m_IsMaster && !m_ESPs[row].m_IsLight) {
// don't allow esps to be moved above esms
while ((newPriorityTemp < static_cast<int>(m_ESPsByPriority.size() - 1)) &&
@@ -1113,12 +1140,6 @@ void PluginList::setPluginPriority(int row, int &newPriority) }
}
- // enforce valid range
- if (newPriorityTemp < 0)
- newPriorityTemp = 0;
- else if (newPriorityTemp >= static_cast<int>(m_ESPsByPriority.size()))
- newPriorityTemp = static_cast<int>(m_ESPsByPriority.size()) - 1;
-
try {
int oldPriority = m_ESPs.at(row).m_Priority;
if (newPriorityTemp > oldPriority) {
@@ -1149,17 +1170,35 @@ void PluginList::setPluginPriority(int row, int &newPriority) void PluginList::changePluginPriority(std::vector<int> rows, int newPriority)
{
ChangeBracket<PluginList> layoutChange(this);
- // sort rows to insert by their old priority (ascending) and insert them move them in that order
const std::vector<ESPInfo> &esp = m_ESPs;
+
+ int minPriority = INT_MAX;
+ int maxPriority = INT_MIN;
+
+ // don't try to move plugins before force-enabled plugins
+ for (std::vector<ESPInfo>::const_iterator iter = m_ESPs.begin();
+ iter != m_ESPs.end(); ++iter) {
+ if (iter->m_ForceEnabled) {
+ newPriority = std::max(newPriority, iter->m_Priority+1);
+ }
+ maxPriority = std::max(maxPriority, iter->m_Priority+1);
+ minPriority = std::min(minPriority, iter->m_Priority);
+ }
+
+ // limit the new priority to existing priorities
+ newPriority = std::min(newPriority, maxPriority);
+ newPriority = std::max(newPriority, minPriority);
+
+ // sort the moving plugins by ascending priorities
std::sort(rows.begin(), rows.end(),
- [&esp](const int &LHS, const int &RHS) {
- return esp[LHS].m_Priority < esp[RHS].m_Priority;
- });
+ [&esp](const int &LHS, const int &RHS) {
+ return esp[LHS].m_Priority < esp[RHS].m_Priority;
+ });
- // odd stuff: if any of the dragged sources has priority lower than the destination then the
- // target idx is that of the row BELOW the dropped location, otherwise it's the one above. why?
+ // if at least on plugin is increasing in priority, the target index is
+ // that of the row BELOW the dropped location, otherwise it's the one above
for (std::vector<int>::const_iterator iter = rows.begin();
- iter != rows.end(); ++iter) {
+ iter != rows.end(); ++iter) {
if (m_ESPs[*iter].m_Priority < newPriority) {
--newPriority;
break;
diff --git a/src/pluginlist.h b/src/pluginlist.h index 03d6426a..228ccdec 100644 --- a/src/pluginlist.h +++ b/src/pluginlist.h @@ -206,7 +206,7 @@ public: static QString getColumnName(int column);
static QString getColumnToolTip(int column);
- void highlightPlugins(const QItemSelection &selected, const MOShared::DirectoryEntry &directoryEntry, const Profile &profile);
+ void highlightPlugins(const QItemSelectionModel *selection, const MOShared::DirectoryEntry &directoryEntry, const Profile &profile);
void refreshLoadOrder();
@@ -265,6 +265,11 @@ public slots: void disableAll();
/**
+ * @brief moves selected plugins to specified priority
+ **/
+ void sendToPriority(const QItemSelectionModel *selectionModel, int priority);
+
+ /**
* @brief The currently managed game has changed
* @param gamePlugin
*/
@@ -340,6 +345,8 @@ private: void fixPriorities();
+ int findPluginByPriority(int priority);
+
private:
std::vector<ESPInfo> m_ESPs;
diff --git a/src/profile.cpp b/src/profile.cpp index 7f10bd02..8eb1c49a 100644 --- a/src/profile.cpp +++ b/src/profile.cpp @@ -73,9 +73,6 @@ Profile::Profile(const QString &name, IPluginGame const *gamePlugin, bool useDef { QString profilesDir = Settings::instance().getProfileDirectory(); QDir profileBase(profilesDir); - - m_Settings = new QSettings(profileBase.absoluteFilePath("settings.ini")); - QString fixedName = name; if (!fixDirectoryName(fixedName)) { throw MyException(tr("invalid profile name %1").arg(name)); @@ -86,6 +83,9 @@ Profile::Profile(const QString &name, IPluginGame const *gamePlugin, bool useDef } QString fullPath = profilesDir + "/" + fixedName; m_Directory = QDir(fullPath); + m_Settings = new QSettings(m_Directory.absoluteFilePath("settings.ini"), + QSettings::IniFormat); + findProfileSettings(); try { // create files. Needs to happen after m_Directory was set! @@ -119,6 +119,7 @@ Profile::Profile(const QDir &directory, IPluginGame const *gamePlugin) m_Settings = new QSettings(directory.absoluteFilePath("settings.ini"), QSettings::IniFormat); + findProfileSettings(); if (!QFile::exists(m_Directory.filePath("modlist.txt"))) { qWarning("missing modlist.txt in %s", qPrintable(directory.path())); @@ -141,6 +142,7 @@ Profile::Profile(const Profile &reference) { m_Settings = new QSettings(m_Directory.absoluteFilePath("settings.ini"), QSettings::IniFormat); + findProfileSettings(); refreshModStatus(); } @@ -151,6 +153,48 @@ Profile::~Profile() m_ModListWriter.writeImmediately(true); } +void Profile::findProfileSettings() +{ + if (setting("LocalSaves") == QVariant()) { + if (m_Directory.exists("saves")) { + storeSetting("LocalSaves", true); + } else { + if (m_Directory.exists("_saves")) { + m_Directory.rename("_saves", "saves"); + } + storeSetting("LocalSaves", false); + } + } + + if (setting("LocalSettings") == QVariant()) { + QString backupFile = getIniFileName() + "_"; + if (m_Directory.exists(backupFile)) { + storeSetting("LocalSettings", false); + m_Directory.rename(backupFile, getIniFileName()); + } else { + storeSetting("LocalSettings", true); + } + } + + if (setting("AutomaticArchiveInvalidation") == QVariant()) { + BSAInvalidation *invalidation = m_GamePlugin->feature<BSAInvalidation>(); + DataArchives *dataArchives = m_GamePlugin->feature<DataArchives>(); + bool found = false; + if ((invalidation != nullptr) && (dataArchives != nullptr)) { + for (const QString &archive : dataArchives->archives(this)) { + if (invalidation->isInvalidationBSA(archive)) { + storeSetting("AutomaticArchiveInvalidation", true); + found = true; + break; + } + } + } + if (!found) { + storeSetting("AutomaticArchiveInvalidation", false); + } + } +} + bool Profile::exists() const { return m_Directory.exists(); @@ -184,9 +228,10 @@ void Profile::doWriteModlist() return; } - for (int i = static_cast<int>(m_ModStatus.size()) - 1; i >= 0; --i) { + for (std::map<int, unsigned int>::const_reverse_iterator iter = m_ModIndexByPriority.crbegin(); iter != m_ModIndexByPriority.crend(); iter++ ) { + //qDebug(QString("write mod %1 to priority %2").arg(iter->first).arg(iter->second).toLocal8Bit()); // the priority order was inverted on load so it has to be inverted again - unsigned int index = m_ModIndexByPriority[i]; + unsigned int index = iter->second; if (index != UINT_MAX) { ModInfo::Ptr modInfo = ModInfo::getByIndex(index); std::vector<ModInfo::EFlag> flags = modInfo->getFlags(); @@ -223,9 +268,9 @@ void Profile::createTweakedIniFile() return; } - for (unsigned int i = 0; i < m_ModStatus.size(); ++i) { + for (int i = getPriorityMinimum(); i < getPriorityMinimum() + (int)numRegularMods(); ++i) { unsigned int idx = modIndexByPriority(i); - if ((idx != UINT_MAX) && m_ModStatus[idx].m_Enabled) { + if (m_ModStatus[idx].m_Enabled) { ModInfo::Ptr modInfo = ModInfo::getByIndex(idx); mergeTweaks(modInfo, tweakedIni); } @@ -454,18 +499,14 @@ void Profile::updateIndices() { m_NumRegularMods = 0; m_ModIndexByPriority.clear(); - m_ModIndexByPriority.resize(m_ModStatus.size(), UINT_MAX); for (unsigned int i = 0; i < m_ModStatus.size(); ++i) { int priority = m_ModStatus[i].m_Priority; - if (priority < 0) { + if (priority == INT_MIN) { // don't assign this to mapping at all, it's probably the overwrite mod continue; - } else if (priority >= static_cast<int>(m_ModIndexByPriority.size())) { - qCritical("invalid priority %d for mod", priority); - continue; } else { ++m_NumRegularMods; - m_ModIndexByPriority.at(priority) = i; + m_ModIndexByPriority[priority] = i; } } } @@ -474,11 +515,10 @@ void Profile::updateIndices() std::vector<std::tuple<QString, QString, int> > Profile::getActiveMods() { std::vector<std::tuple<QString, QString, int> > result; - for (std::vector<unsigned int>::const_iterator iter = m_ModIndexByPriority.begin(); - iter != m_ModIndexByPriority.end(); ++iter) { - if ((*iter != UINT_MAX) && m_ModStatus[*iter].m_Enabled) { - ModInfo::Ptr modInfo = ModInfo::getByIndex(*iter); - result.push_back(std::make_tuple(modInfo->internalName(), modInfo->absolutePath(), m_ModStatus[*iter].m_Priority)); + for (std::map<int, unsigned int>::const_iterator iter = m_ModIndexByPriority.begin(); iter != m_ModIndexByPriority.end(); iter++ ) { + if ((iter->second != UINT_MAX) && m_ModStatus[iter->second].m_Enabled) { + ModInfo::Ptr modInfo = ModInfo::getByIndex(iter->second); + result.push_back(std::make_tuple(modInfo->internalName(), modInfo->absolutePath(), m_ModStatus[iter->second].m_Priority)); } } @@ -496,13 +536,13 @@ std::vector<std::tuple<QString, QString, int> > Profile::getActiveMods() } -unsigned int Profile::modIndexByPriority(unsigned int priority) const +unsigned int Profile::modIndexByPriority(int priority) const { - if (priority >= m_ModStatus.size()) { + try { + return m_ModIndexByPriority.at(priority); + } catch (std::out_of_range) { throw MyException(tr("invalid priority %1").arg(priority)); } - - return m_ModIndexByPriority[priority]; } @@ -552,30 +592,26 @@ void Profile::setModPriority(unsigned int index, int &newPriority) return; } - int newPriorityTemp = - (std::max)(0, (std::min<int>)(static_cast<int>(m_ModStatus.size()) - 1, - newPriority)); + int oldPriority = m_ModStatus.at(index).m_Priority; + int lastPriority = INT_MIN; - // don't try to place below overwrite - while ((m_ModIndexByPriority.at(newPriorityTemp) >= m_ModStatus.size()) || - m_ModStatus.at(m_ModIndexByPriority.at(newPriorityTemp)).m_Overwrite) { - --newPriorityTemp; + if (newPriority == oldPriority) { + // nothing to do + return; } - int oldPriority = m_ModStatus.at(index).m_Priority; - if (newPriorityTemp > oldPriority) { - // priority is higher than the old, so the gap we left is in lower priorities - for (int i = oldPriority + 1; i <= newPriorityTemp; ++i) { - --m_ModStatus.at(m_ModIndexByPriority.at(i)).m_Priority; + for (std::map<int, unsigned int>::iterator iter = m_ModIndexByPriority.begin(); iter != m_ModIndexByPriority.end(); iter++) { + if (newPriority < oldPriority && iter->first >= newPriority && iter->first < oldPriority) { + m_ModStatus.at(iter->second).m_Priority += 1; } - } else { - for (int i = newPriorityTemp; i < oldPriority; ++i) { - ++m_ModStatus.at(m_ModIndexByPriority.at(i)).m_Priority; + else if (newPriority > oldPriority && iter->first <= newPriority && iter->first > oldPriority) { + m_ModStatus.at(iter->second).m_Priority -= 1; } - ++newPriority; + lastPriority = std::max(lastPriority, iter->first); } - m_ModStatus.at(index).m_Priority = newPriorityTemp; + newPriority = std::min(newPriority, lastPriority); + m_ModStatus.at(index).m_Priority = std::min(newPriority, lastPriority); updateIndices(); m_ModListWriter.write(); @@ -666,23 +702,11 @@ bool Profile::invalidationActive(bool *supported) const BSAInvalidation *invalidation = m_GamePlugin->feature<BSAInvalidation>(); DataArchives *dataArchives = m_GamePlugin->feature<DataArchives>(); - if ((invalidation != nullptr) && (dataArchives != nullptr)) { - if (supported != nullptr) { - *supported = true; - } - - for (const QString &archive : dataArchives->archives(this)) { - if (invalidation->isInvalidationBSA(archive)) { - return true; - } - } - return false; - } else { - if (supported != nullptr) { - *supported = false; - } + if (supported != nullptr) { + *supported = ((invalidation != nullptr) && (dataArchives != nullptr)); } - return false; + + return setting("AutomaticArchiveInvalidation", false).toBool(); } @@ -693,6 +717,8 @@ void Profile::deactivateInvalidation() if (invalidation != nullptr) { invalidation->deactivate(this); } + + storeSetting("AutomaticArchiveInvalidation", false); } @@ -703,66 +729,90 @@ void Profile::activateInvalidation() if (invalidation != nullptr) { invalidation->activate(this); } + + storeSetting("AutomaticArchiveInvalidation", true); } bool Profile::localSavesEnabled() const { - return m_Directory.exists("saves"); + return setting("LocalSaves", false).toBool(); } bool Profile::enableLocalSaves(bool enable) { if (enable) { - if (m_Directory.exists("_saves")) { - m_Directory.rename("_saves", "saves"); - } else { + if (!m_Directory.exists("saves")) { m_Directory.mkdir("saves"); } - } else { + } else { QMessageBox::StandardButton res = QMessageBox::question( - QApplication::activeModalWidget(), tr("Delete savegames?"), - tr("Do you want to delete local savegames? (If you select \"No\", the " - "save games will show up again if you re-enable local savegames)"), - QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, - QMessageBox::Cancel); + QApplication::activeModalWidget(), tr("Delete profile-specific save games?"), + tr("Do you want to delete the profile-specific save games? (If you select \"No\", the " + "save games will show up again if you re-enable profile-specific save games)"), + QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, + QMessageBox::Cancel); if (res == QMessageBox::Yes) { shellDelete(QStringList(m_Directory.absoluteFilePath("saves"))); } else if (res == QMessageBox::No) { - m_Directory.rename("saves", "_saves"); + // No action } else { return false; } } - - // default: assume success + storeSetting("LocalSaves", enable); return true; + } bool Profile::localSettingsEnabled() const { - return m_Directory.exists(getIniFileName()); + bool enabled = setting("LocalSettings", false).toBool(); + if (enabled) { + bool reinitConfig = false; + for (QString file : m_GamePlugin->iniFiles()) { + if (!QFile::exists(m_Directory.filePath(file))) { + qWarning("missing %s in %s", qPrintable(file), qPrintable(m_Directory.path())); + reinitConfig = true; + } + } + if (reinitConfig) { + QMessageBox::StandardButton res = QMessageBox::warning( + QApplication::activeModalWidget(), tr("Missing profile-specific game INI files!"), + tr("Some of your profile-specific game INI files were missing. They will now be copied " + "from the vanilla game folder. You might want double-check your settings.") + ); + m_GamePlugin->initializeProfile(m_Directory, IPluginGame::CONFIGURATION); + } + } + return enabled; } bool Profile::enableLocalSettings(bool enable) { - // TODO: this currently assumes game settings are stored in an ini file. - // This shall become very interesting when a game stores its settings in the - // registry - QString backupFile = getIniFileName() + "_"; if (enable) { - if (m_Directory.exists(backupFile)) { - - shellRename(backupFile, getIniFileName()); + m_GamePlugin->initializeProfile(m_Directory.absolutePath(), IPluginGame::CONFIGURATION); + } else { + QMessageBox::StandardButton res = QMessageBox::question( + QApplication::activeModalWidget(), tr("Delete profile-specific game INI files?"), + tr("Do you want to delete the profile-specific game INI files? (If you select \"No\", the " + "INI files will be used again if you re-enable profile-specific game INI files.)"), + QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, + QMessageBox::Cancel); + if (res == QMessageBox::Yes) { + QStringList filesToDelete; + for (QString file : m_GamePlugin->iniFiles()) { + filesToDelete << m_Directory.absoluteFilePath(file); + } + shellDelete(filesToDelete, true); + } else if (res == QMessageBox::No) { + // No action } else { - IPluginGame *game = qApp->property("managed_game").value<IPluginGame *>(); - game->initializeProfile(m_Directory, IPluginGame::CONFIGURATION); + return false; } - } else { - shellRename(getIniFileName(), backupFile); } - + storeSetting("LocalSettings", enable); return true; } @@ -825,18 +875,34 @@ void Profile::rename(const QString &newName) } QVariant Profile::setting(const QString §ion, const QString &name, - const QVariant &fallback) + const QVariant &fallback) const { return m_Settings->value(section + "/" + name, fallback); } + void Profile::storeSetting(const QString §ion, const QString &name, const QVariant &value) { m_Settings->setValue(section + "/" + name, value); } +void Profile::storeSetting(const QString &name, const QVariant &value) +{ + storeSetting("", name, value); +} + void Profile::removeSetting(const QString §ion, const QString &name) { m_Settings->remove(section + "/" + name); -}
\ No newline at end of file +} + +void Profile::removeSetting(const QString &name) +{ + removeSetting("", name); +} + +int Profile::getPriorityMinimum() const +{ + return m_ModIndexByPriority.begin()->first; +} diff --git a/src/profile.h b/src/profile.h index 1fcad046..a9d68062 100644 --- a/src/profile.h +++ b/src/profile.h @@ -79,6 +79,13 @@ public: ~Profile(); /** + * Determines the default settings for the profile based on the current state of the profile's + * files. This function should remain backwards compatible as much as possible. + **/ + + void findProfileSettings(void); + + /** * @return true if this profile (still) exists on disc */ bool exists() const; @@ -230,7 +237,7 @@ public: * retrieve the number of mods for which this object has status information. * This is usually the same as ModInfo::getNumMods() except between * calls to ModInfo::updateFromDisc() and the Profile::refreshModStatus() - * + * * @return number of mods for which the profile has status information **/ size_t numMods() const { return m_ModStatus.size(); } @@ -247,7 +254,7 @@ public: * @return the index of the mod * @throw std::exception an exception is thrown if there is no mod with the specified priority **/ - unsigned int modIndexByPriority(unsigned int priority) const; + unsigned int modIndexByPriority(int priority) const; /** * @brief enable or disable a mod @@ -287,12 +294,16 @@ public: void dumpModStatus() const; - QVariant setting(const QString §ion, const QString &name, - const QVariant &fallback = QVariant()); + QVariant setting(const QString §ion, const QString &name = QString(), + const QVariant &fallback = QVariant()) const; void storeSetting(const QString §ion, const QString &name, const QVariant &value); - void removeSetting(const QString §ion, const QString &name); + void storeSetting(const QString &name, const QVariant &value); + void removeSetting(const QString §ion, const QString &name = QString()); + void removeSetting(const QString &name); + + int getPriorityMinimum() const; signals: @@ -347,7 +358,7 @@ private: mutable QByteArray m_LastModlistHash; std::vector<ModStatus> m_ModStatus; - std::vector<unsigned int> m_ModIndexByPriority; + std::map<int, unsigned int> m_ModIndexByPriority; unsigned int m_NumRegularMods; MOBase::DelayedFileWriter m_ModListWriter; diff --git a/src/profileinputdialog.ui b/src/profileinputdialog.ui index 76265aa1..55b3b15c 100644 --- a/src/profileinputdialog.ui +++ b/src/profileinputdialog.ui @@ -27,13 +27,13 @@ <item>
<widget class="QCheckBox" name="defaultSettingsBox">
<property name="toolTip">
- <string>If checked, the new profile will use the default game settings.</string>
+ <string>If checked, the new profile will use the default game INI settings.</string>
</property>
<property name="whatsThis">
- <string>If checked, the new profile will use the default game settings instead of the "global" settings. Global settings are the settings you configure when running the game launcher directly, without MO.</string>
+ <string>If checked, the new profile will use the default game INI settings instead of the "global" settings. Global settings are the settings you configure when running the game launcher directly, without MO.</string>
</property>
<property name="text">
- <string>Default Game Settings</string>
+ <string>Default Game INI Settings</string>
</property>
</widget>
</item>
diff --git a/src/profilesdialog.cpp b/src/profilesdialog.cpp index ed54f33c..17844357 100644 --- a/src/profilesdialog.cpp +++ b/src/profilesdialog.cpp @@ -191,7 +191,7 @@ void ProfilesDialog::on_removeProfileButton_clicked() return;
}
- QMessageBox confirmBox(QMessageBox::Question, tr("Confirm"), tr("Are you sure you want to remove this profile (including local savegames if any)?"),
+ QMessageBox confirmBox(QMessageBox::Question, tr("Confirm"), tr("Are you sure you want to remove this profile (including profile-specific save games, if any)?"),
QMessageBox::Yes | QMessageBox::No, this);
if (confirmBox.exec() == QMessageBox::Yes) {
diff --git a/src/profilesdialog.ui b/src/profilesdialog.ui index 9b4e7e62..f040faed 100644 --- a/src/profilesdialog.ui +++ b/src/profilesdialog.ui @@ -35,20 +35,26 @@ p, li { white-space: pre-wrap; } <item>
<widget class="QCheckBox" name="localSavesBox">
<property name="toolTip">
- <string>If checked, savegames are local to this profile and will not appear when starting with a different profile.</string>
+ <string><html><head/><body><p>If checked, save games are stored locally to this profile and will not appear when starting with a different profile.</p></body></html></string>
</property>
<property name="whatsThis">
- <string>If checked, savegames are local to this profile and will not appear when starting with a different profile.</string>
+ <string>If checked, save games are local to this profile and will not appear when starting with a different profile.</string>
</property>
<property name="text">
- <string>Local Savegames</string>
+ <string>Use profile-specific Save Games</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="localIniFilesBox">
+ <property name="toolTip">
+ <string><html><head/><body><p>If checked MO2 will use his own profile-specific game INI files, so that the &quot;Global&quot; ones in MyGames can be left vanilla. This different set of INI files is then offered to the game instead of the default one.</p></body></html></string>
+ </property>
+ <property name="whatsThis">
+ <string><html><head/><body><p>If checked, MO2 will use a local set of game INI files (configuration and settings files), different from the default ones found in MyGames. This way changes to the INI settings will only affect this profile and the Global INI files can remain vanilla. MO2 will then show the profile INI files to the game instead of the Global ones.</p></body></html></string>
+ </property>
<property name="text">
- <string>Local Game Settings</string>
+ <string>Use profile-specific Game INI Files</string>
</property>
<property name="checked">
<bool>false</bool>
diff --git a/src/resources.qrc b/src/resources.qrc index f3459ea7..1dccce0b 100644 --- a/src/resources.qrc +++ b/src/resources.qrc @@ -94,6 +94,7 @@ <file alias="bsa">resources/contents/locked-chest.png</file> <file alias="menu">resources/contents/config.png</file> <file alias="inifile">resources/contents/feather-and-scroll.png</file> + <file alias="modgroup">resources/contents/xedit.png</file> </qresource> <qresource prefix="/qt/etc"> <file>qt.conf</file> diff --git a/src/resources/contents/xedit.png b/src/resources/contents/xedit.png Binary files differnew file mode 100644 index 00000000..49453d71 --- /dev/null +++ b/src/resources/contents/xedit.png diff --git a/src/selfupdater.cpp b/src/selfupdater.cpp index 2b051b09..7c0682bf 100644 --- a/src/selfupdater.cpp +++ b/src/selfupdater.cpp @@ -327,8 +327,10 @@ void SelfUpdater::installUpdate() const QString mopath
= QDir::fromNativeSeparators(qApp->property("dataPath").toString());
+ const std::wstring params = L"/DIR=" + qApp->applicationDirPath().toStdWString();
+
HINSTANCE res = ::ShellExecuteW(
- nullptr, L"open", m_UpdateFile.fileName().toStdWString().c_str(), nullptr,
+ nullptr, L"open", m_UpdateFile.fileName().toStdWString().c_str(), params.c_str(),
nullptr, SW_SHOW);
if (res > (HINSTANCE)32) {
diff --git a/src/settings.cpp b/src/settings.cpp index db4ea565..18e893cb 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -50,6 +50,8 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. #include <QStringList> #include <QVariantMap> #include <QLabel> +#include <QPushButton> +#include <QPalette> #include <Qt> // for Qt::UserRole, etc #include <QtDebug> // for qDebug, qWarning @@ -62,6 +64,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. #include <string> #include <utility> // for pair, make_pair + using namespace MOBase; template <typename T> @@ -145,6 +148,11 @@ void Settings::registerAsNXMHandler(bool force) } } +bool Settings::colorSeparatorScrollbar() const +{ + return m_Settings.value("Settings/colorSeparatorScrollbars", true).toBool(); +} + void Settings::managedGameChanged(IPluginGame const *gamePlugin) { m_GamePlugin = gamePlugin; @@ -189,6 +197,14 @@ QString Settings::deObfuscate(const QString &password) return QString::fromUtf8(buffer.constData()); } +QColor Settings::getIdealTextColor(const QColor& rBackgroundColor) +{ + const int THRESHOLD = 106; + int BackgroundDelta = (rBackgroundColor.red() * 0.299) + (rBackgroundColor.green() * 0.587) + (rBackgroundColor.blue() * 0.114); + return QColor((255 - BackgroundDelta <= THRESHOLD) ? Qt::black : Qt::white); +} + + bool Settings::hideUncheckedPlugins() const { return m_Settings.value("Settings/hide_unchecked_plugins", false).toBool(); @@ -199,6 +215,11 @@ bool Settings::forceEnableCoreFiles() const return m_Settings.value("Settings/force_enable_core_files", true).toBool(); } +bool Settings::lockGUI() const +{ + return m_Settings.value("Settings/lock_gui", true).toBool(); +} + bool Settings::automaticLoginEnabled() const { return m_Settings.value("Settings/nexus_login", false).toBool(); @@ -282,6 +303,11 @@ QString Settings::getModDirectory(bool resolve) const return getConfigurablePath("mod_directory", ToQString(AppConfig::modsPath()), resolve); } +QString Settings::getManagedGameDirectory() const +{ + return m_Settings.value("gamePath", "").toString(); +} + QString Settings::getProfileDirectory(bool resolve) const { return getConfigurablePath("profiles_directory", ToQString(AppConfig::profilesPath()), resolve); @@ -355,6 +381,40 @@ int Settings::crashDumpsMax() const return m_Settings.value("Settings/crash_dumps_max", 5).toInt(); } +QColor Settings::modlistOverwrittenLooseColor() const +{ + return m_Settings.value("Settings/overwrittenLooseFilesColor", QColor(0, 255, 0, 64)).value<QColor>(); +} + +QColor Settings::modlistOverwritingLooseColor() const +{ + return m_Settings.value("Settings/overwritingLooseFilesColor", QColor(255, 0, 0, 64)).value<QColor>(); +} + +QColor Settings::modlistContainsPluginColor() const +{ + return m_Settings.value("Settings/containsPluginColor", QColor(0, 0, 255, 64)).value<QColor>(); +} + +QColor Settings::pluginListContainedColor() const +{ + return m_Settings.value("Settings/containedColor", QColor(0, 0, 255, 64)).value<QColor>(); +} + +QString Settings::executablesBlacklist() const +{ + return m_Settings.value("Settings/executable_blacklist", ( + QStringList() + << "Chrome.exe" + << "Firefox.exe" + << "TSVNCache.exe" + << "TGitCache.exe" + << "Steam.exe" + << "GameOverlayUI.exe" + ).join(";") + ).toString(); +} + void Settings::setNexusLogin(QString username, QString password) { m_Settings.setValue("Settings/nexus_login", true); @@ -587,7 +647,6 @@ void Settings::resetDialogs() QuestionBoxMemory::resetDialogs(); } - void Settings::query(PluginContainer *pluginContainer, QWidget *parent) { SettingsDialog dialog(pluginContainer, parent); @@ -604,6 +663,12 @@ void Settings::query(PluginContainer *pluginContainer, QWidget *parent) tabs.push_back(std::unique_ptr<SettingsTab>(new PluginsTab(this, dialog))); tabs.push_back(std::unique_ptr<SettingsTab>(new WorkaroundsTab(this, dialog))); + + QString key = QString("geometry/%1").arg(dialog.objectName()); + if (m_Settings.contains(key)) { + dialog.restoreGeometry(m_Settings.value(key).toByteArray()); + } + if (dialog.exec() == QDialog::Accepted) { // remember settings before change QMap<QString, QString> before; @@ -631,6 +696,8 @@ void Settings::query(PluginContainer *pluginContainer, QWidget *parent) } m_Settings.endGroup(); } + m_Settings.setValue(key, dialog.saveGeometry()); + } Settings::SettingsTab::SettingsTab(Settings *m_parent, SettingsDialog &m_dialog) @@ -650,6 +717,11 @@ Settings::GeneralTab::GeneralTab(Settings *m_parent, SettingsDialog &m_dialog) , m_compactBox(m_dialog.findChild<QCheckBox *>("compactBox")) , m_showMetaBox(m_dialog.findChild<QCheckBox *>("showMetaBox")) , m_usePrereleaseBox(m_dialog.findChild<QCheckBox *>("usePrereleaseBox")) + , m_overwritingBtn(m_dialog.findChild<QPushButton *>("overwritingBtn")) + , m_overwrittenBtn(m_dialog.findChild<QPushButton *>("overwrittenBtn")) + , m_containsBtn(m_dialog.findChild<QPushButton *>("containsBtn")) + , m_containedBtn(m_dialog.findChild<QPushButton *>("containedBtn")) + , m_colorSeparatorsBox(m_dialog.findChild<QCheckBox *>("colorSeparatorsBox")) { // FIXME I think 'addLanguages' lives in here not in parent m_parent->addLanguages(m_languageBox); @@ -677,10 +749,52 @@ Settings::GeneralTab::GeneralTab(Settings *m_parent, SettingsDialog &m_dialog) m_styleBox->setCurrentIndex(currentID); } } + /* verision using palette only works with fusion theme for some stupid reason... + m_overwritingBtn->setAutoFillBackground(true); + m_overwrittenBtn->setAutoFillBackground(true); + m_containsBtn->setAutoFillBackground(true); + m_containedBtn->setAutoFillBackground(true); + m_overwritingBtn->setPalette(QPalette(m_parent->modlistOverwritingLooseColor())); + m_overwrittenBtn->setPalette(QPalette(m_parent->modlistOverwrittenLooseColor())); + m_containsBtn->setPalette(QPalette(m_parent->modlistContainsPluginColor())); + m_containedBtn->setPalette(QPalette(m_parent->pluginListContainedColor())); + QPalette palette1 = m_overwritingBtn->palette(); + QPalette palette2 = m_overwrittenBtn->palette(); + QPalette palette3 = m_containsBtn->palette(); + QPalette palette4 = m_containedBtn->palette(); + palette1.setColor(QPalette::Background, m_parent->modlistOverwritingLooseColor()); + palette2.setColor(QPalette::Background, m_parent->modlistOverwrittenLooseColor()); + palette3.setColor(QPalette::Background, m_parent->modlistContainsPluginColor()); + palette4.setColor(QPalette::Background, m_parent->pluginListContainedColor()); + m_overwritingBtn->setPalette(palette1); + m_overwrittenBtn->setPalette(palette2); + m_containsBtn->setPalette(palette3); + m_containedBtn->setPalette(palette4); + */ + + //version with stylesheet + m_overwritingBtn->setStyleSheet(m_dialog.getColoredButtonStyleSheet().arg( + m_parent->modlistOverwritingLooseColor().name()).arg(getIdealTextColor( + m_parent->modlistOverwritingLooseColor()).name())); + m_overwrittenBtn->setStyleSheet(m_dialog.getColoredButtonStyleSheet().arg( + m_parent->modlistOverwrittenLooseColor().name()).arg(getIdealTextColor( + m_parent->modlistOverwrittenLooseColor()).name())); + m_containsBtn->setStyleSheet(m_dialog.getColoredButtonStyleSheet().arg( + m_parent->modlistContainsPluginColor().name()).arg(getIdealTextColor( + m_parent->modlistContainsPluginColor()).name())); + m_containedBtn->setStyleSheet(m_dialog.getColoredButtonStyleSheet().arg( + m_parent->pluginListContainedColor().name()).arg(getIdealTextColor( + m_parent->pluginListContainedColor()).name())); + + m_dialog.setOverwritingColor(m_parent->modlistOverwritingLooseColor()); + m_dialog.setOverwrittenColor(m_parent->modlistOverwrittenLooseColor()); + m_dialog.setContainsColor(m_parent->modlistContainsPluginColor()); + m_dialog.setContainedColor(m_parent->pluginListContainedColor()); m_compactBox->setChecked(m_parent->compactDownloads()); m_showMetaBox->setChecked(m_parent->metaDownloads()); m_usePrereleaseBox->setChecked(m_parent->usePrereleases()); + m_colorSeparatorsBox->setChecked(m_parent->colorSeparatorScrollbar()); } void Settings::GeneralTab::update() @@ -699,9 +813,14 @@ void Settings::GeneralTab::update() emit m_parent->styleChanged(newStyle); } + m_Settings.setValue("Settings/overwritingLooseFilesColor", m_dialog.getOverwritingColor()); + m_Settings.setValue("Settings/overwrittenLooseFilesColor", m_dialog.getOverwrittenColor()); + m_Settings.setValue("Settings/containsPluginColor", m_dialog.getContainsColor()); + m_Settings.setValue("Settings/containedColor", m_dialog.getContainedColor()); m_Settings.setValue("Settings/compact_downloads", m_compactBox->isChecked()); m_Settings.setValue("Settings/meta_downloads", m_showMetaBox->isChecked()); m_Settings.setValue("Settings/use_prereleases", m_usePrereleaseBox->isChecked()); + m_Settings.setValue("Settings/colorSeparatorScrollbars", m_colorSeparatorsBox->isChecked()); } Settings::PathsTab::PathsTab(Settings *parent, SettingsDialog &dialog) @@ -776,6 +895,12 @@ void Settings::PathsTab::update() } else { m_Settings.remove("Settings/base_directory"); } + + QFileInfo oldGameExe(m_parent->m_GamePlugin->gameDirectory().absoluteFilePath(m_parent->m_GamePlugin->binaryName())); + QFileInfo newGameExe(m_managedGameDirEdit->text()); + if (oldGameExe != newGameExe) { + m_Settings.setValue("gamePath", newGameExe.absolutePath()); + } } Settings::DiagnosticsTab::DiagnosticsTab(Settings *m_parent, SettingsDialog &m_dialog) @@ -830,9 +955,10 @@ Settings::NexusTab::NexusTab(Settings *parent, SettingsDialog &dialog) m_Settings.beginGroup("Servers"); for (const QString &key : m_Settings.childKeys()) { QVariantMap val = m_Settings.value(key).toMap(); - QString type = val["premium"].toBool() ? "(premium)" : "(free)"; - - QString descriptor = key + " " + type; + QString descriptor = key; + if (!descriptor.compare("CDN", Qt::CaseInsensitive)) { + descriptor += QStringLiteral(" (automatic)"); + } if (val.contains("downloadSpeed") && val.contains("downloadCount") && (val["downloadCount"].toInt() > 0)) { int bps = static_cast<int>(val["downloadSpeed"].toDouble() / val["downloadCount"].toInt()); descriptor += QString(" (%1 kbps)").arg(bps / 1024); @@ -958,6 +1084,7 @@ Settings::WorkaroundsTab::WorkaroundsTab(Settings *m_parent, , m_hideUncheckedBox(m_dialog.findChild<QCheckBox *>("hideUncheckedBox")) , m_forceEnableBox(m_dialog.findChild<QCheckBox *>("forceEnableBox")) , m_displayForeignBox(m_dialog.findChild<QCheckBox *>("displayForeignBox")) + , m_lockGUIBox(m_dialog.findChild<QCheckBox *>("lockGUIBox")) { m_appIDEdit->setText(m_parent->getSteamAppID()); @@ -991,6 +1118,9 @@ Settings::WorkaroundsTab::WorkaroundsTab(Settings *m_parent, m_hideUncheckedBox->setChecked(m_parent->hideUncheckedPlugins()); m_forceEnableBox->setChecked(m_parent->forceEnableCoreFiles()); m_displayForeignBox->setChecked(m_parent->displayForeign()); + m_lockGUIBox->setChecked(m_parent->lockGUI()); + + m_dialog.setExecutableBlacklist(m_parent->executablesBlacklist()); } @@ -1006,4 +1136,18 @@ void Settings::WorkaroundsTab::update() m_Settings.setValue("Settings/hide_unchecked_plugins", m_hideUncheckedBox->isChecked()); m_Settings.setValue("Settings/force_enable_core_files", m_forceEnableBox->isChecked()); m_Settings.setValue("Settings/display_foreign", m_displayForeignBox->isChecked()); + m_Settings.setValue("Settings/lock_gui", m_lockGUIBox->isChecked()); + + m_Settings.setValue("Settings/executable_blacklist", m_dialog.getExecutableBlacklist()); + + if (m_dialog.getResetGeometries()) { + m_Settings.setValue("reset_geometry", true); + if (QMessageBox::question(nullptr, + tr("Restart Mod Organizer?"), + tr("In order to reset the window geometries, MO must be restarted.\n" + "Restart it now?"), + QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) { + qApp->exit(INT_MAX); + } + } } diff --git a/src/settings.h b/src/settings.h index c49edfcb..912864e2 100644 --- a/src/settings.h +++ b/src/settings.h @@ -17,8 +17,8 @@ You should have received a copy of the GNU General Public License along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef WORKAROUNDS_H -#define WORKAROUNDS_H +#ifndef SETTINGS_H +#define SETTINGS_H #include "loadmechanism.h" @@ -29,6 +29,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. #include <QSettings> #include <QString> #include <QVariant> +#include <QColor> #include <QtGlobal> //for uint @@ -42,6 +43,7 @@ class QSpinBox; class QListWidget; class QWidget; class QLabel; +class QPushButton; struct ServerInfo; @@ -108,6 +110,11 @@ public: bool forceEnableCoreFiles() const; /** + * @return true if the GUI should be locked when running executables + */ + bool lockGUI() const; + + /** * @brief register download speed * @param url complete download url * @param bytesPerSecond download size in bytes per second @@ -154,6 +161,11 @@ public: QString getCacheDirectory(bool resolve = true) const; /** + * retrieve the directory where the managed game is stored (with native separators) + **/ + QString getManagedGameDirectory() const; + + /** * retrieve the directory where profiles stored (with native separators) **/ QString getProfileDirectory(bool resolve = true) const; @@ -217,6 +229,16 @@ public: */ int crashDumpsMax() const; + QColor modlistOverwrittenLooseColor() const; + + QColor modlistOverwritingLooseColor() const; + + QColor modlistContainsPluginColor() const; + + QColor pluginListContainedColor() const; + + QString executablesBlacklist() const; + /** * @brief set the nexus login information * @@ -343,10 +365,17 @@ public: */ void registerAsNXMHandler(bool force); + /** + * @brief color the scrollbar of the mod list for custom separator colors? + * @return the state of the setting + */ + bool colorSeparatorScrollbar() const; + public slots: void managedGameChanged(MOBase::IPluginGame const *gamePlugin); - +public: + static QColor getIdealTextColor(const QColor& rBackgroundColor); private: static QString obfuscate(const QString &password); @@ -387,6 +416,11 @@ private: QCheckBox *m_compactBox; QCheckBox *m_showMetaBox; QCheckBox *m_usePrereleaseBox; + QPushButton *m_overwritingBtn; + QPushButton *m_overwrittenBtn; + QPushButton *m_containsBtn; + QPushButton *m_containedBtn; + QCheckBox *m_colorSeparatorsBox; }; class PathsTab : public SettingsTab @@ -479,6 +513,7 @@ private: QCheckBox *m_hideUncheckedBox; QCheckBox *m_forceEnableBox; QCheckBox *m_displayForeignBox; + QCheckBox *m_lockGUIBox; }; private slots: @@ -509,4 +544,4 @@ private: }; -#endif // WORKAROUNDS_H +#endif // SETTINGS_H diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp index 058d082a..0d96e63a 100644 --- a/src/settingsdialog.cpp +++ b/src/settingsdialog.cpp @@ -33,6 +33,8 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. #include <QFileDialog> #include <QMessageBox> #include <QShortcut> +#include <QColorDialog> +#include <QInputDialog> #define WIN32_LEAN_AND_MEAN #include <Windows.h> @@ -47,6 +49,7 @@ SettingsDialog::SettingsDialog(PluginContainer *pluginContainer, QWidget *parent , m_PluginContainer(pluginContainer) { ui->setupUi(this); + ui->pluginSettingsList->setStyleSheet("QTreeWidget::item {padding-right: 10px;}"); QShortcut *delShortcut = new QShortcut(QKeySequence(Qt::Key_Delete), ui->pluginBlacklist); @@ -58,6 +61,16 @@ SettingsDialog::~SettingsDialog() delete ui; } +QString SettingsDialog::getColoredButtonStyleSheet() const +{ + return QString("QPushButton {" + "background-color: %1;" + "color: %2;" + "border: 1px solid;" + "padding: 3px;" + "}"); +} + void SettingsDialog::accept() { QString newModPath = ui->modDirEdit->text(); @@ -81,6 +94,10 @@ void SettingsDialog::accept() TutorableDialog::accept(); } +bool SettingsDialog::getResetGeometries() +{ + return ui->resetGeometryBtn->isChecked(); +} void SettingsDialog::on_loginCheckBox_toggled(bool checked) { @@ -103,6 +120,32 @@ void SettingsDialog::on_categoriesBtn_clicked() } } +void SettingsDialog::on_execBlacklistBtn_clicked() +{ + bool ok = false; + QString result = QInputDialog::getMultiLineText( + this, + tr("Executables Blacklist"), + tr("Enter one executable per line to be blacklisted from the virtual file system.\n" + "Mods and other virtualized files will not be visible to these executables and\n" + "any executables launched by them.\n\n" + "Example:\n" + " Chrome.exe\n" + " Firefox.exe"), + m_ExecutableBlacklist.split(";").join("\n"), + &ok + ); + if (ok) { + QStringList blacklist; + for (auto exec : result.split("\n")) { + if (exec.trimmed().endsWith(".exe", Qt::CaseInsensitive)) { + blacklist << exec.trimmed(); + } + } + m_ExecutableBlacklist = blacklist.join(";"); + } +} + void SettingsDialog::on_bsaDateBtn_clicked() { IPluginGame const *game @@ -177,6 +220,113 @@ void SettingsDialog::on_browseOverwriteDirBtn_clicked() } } +void SettingsDialog::on_browseGameDirBtn_clicked() +{ + QFileInfo oldGameExe(ui->managedGameDirEdit->text()); + + QString temp = QFileDialog::getOpenFileName(this, tr("Select game executable"), oldGameExe.absolutePath(), oldGameExe.fileName()); + if (!temp.isEmpty()) { + ui->managedGameDirEdit->setText(temp); + } +} + +void SettingsDialog::on_containsBtn_clicked() +{ + QColor result = QColorDialog::getColor(m_ContainsColor, this); + if (result.isValid()) { + m_ContainsColor = result; + + ui->containsBtn->setStyleSheet(getColoredButtonStyleSheet().arg( + result.name()).arg(Settings::getIdealTextColor( + result).name())); + + /*ui->containsBtn->setAutoFillBackground(true); + ui->containsBtn->setPalette(QPalette(result)); + QPalette palette = ui->containsBtn->palette(); + palette.setColor(QPalette::Background, result); + ui->containsBtn->setPalette(palette);*/ + } +} + +void SettingsDialog::on_containedBtn_clicked() +{ + QColor result = QColorDialog::getColor(m_ContainedColor, this); + if (result.isValid()) { + m_ContainedColor = result; + + ui->containedBtn->setStyleSheet(getColoredButtonStyleSheet().arg( + result.name()).arg(Settings::getIdealTextColor( + result).name())); + + /*ui->containedBtn->setAutoFillBackground(true); + ui->containedBtn->setPalette(QPalette(result)); + QPalette palette = ui->containedBtn->palette(); + palette.setColor(QPalette::Background, result); + ui->containedBtn->setPalette(palette);*/ + } +} + +void SettingsDialog::on_overwrittenBtn_clicked() +{ + QColor result = QColorDialog::getColor(m_OverwrittenColor, this); + if (result.isValid()) { + m_OverwrittenColor = result; + + ui->overwrittenBtn->setStyleSheet(getColoredButtonStyleSheet().arg( + result.name()).arg(Settings::getIdealTextColor( + result).name())); + + /*ui->overwrittenBtn->setAutoFillBackground(true); + ui->overwrittenBtn->setPalette(QPalette(result)); + QPalette palette = ui->overwrittenBtn->palette(); + palette.setColor(QPalette::Background, result); + ui->overwrittenBtn->setPalette(palette);*/ + } +} + +void SettingsDialog::on_overwritingBtn_clicked() +{ + QColor result = QColorDialog::getColor(m_OverwritingColor, this); + if (result.isValid()) { + m_OverwritingColor = result; + + ui->overwritingBtn->setStyleSheet(getColoredButtonStyleSheet().arg( + result.name()).arg(Settings::getIdealTextColor( + result).name())); + + /*ui->overwritingBtn->setAutoFillBackground(true); + ui->overwritingBtn->setPalette(QPalette(result)); + QPalette palette = ui->overwritingBtn->palette(); + palette.setColor(QPalette::Background, result); + ui->overwritingBtn->setPalette(palette);*/ + } +} + +void SettingsDialog::on_resetColorsBtn_clicked() +{ + m_OverwritingColor = QColor(255, 0, 0, 64); + m_OverwrittenColor = QColor(0, 255, 0, 64); + m_ContainsColor = QColor(0, 0, 255, 64); + m_ContainedColor = QColor(0, 0, 255, 64); + + ui->overwritingBtn->setStyleSheet(getColoredButtonStyleSheet().arg( + QColor(255, 0, 0, 64).name()).arg(Settings::getIdealTextColor( + QColor(255, 0, 0, 64)).name())); + + ui->overwrittenBtn->setStyleSheet(getColoredButtonStyleSheet().arg( + QColor(0, 255, 0, 64).name()).arg(Settings::getIdealTextColor( + QColor(0, 255, 0, 64)).name())); + + ui->containsBtn->setStyleSheet(getColoredButtonStyleSheet().arg( + QColor(0, 0, 255, 64).name()).arg(Settings::getIdealTextColor( + QColor(0, 0, 255, 64)).name())); + + ui->containedBtn->setStyleSheet(getColoredButtonStyleSheet().arg( + QColor(0, 0, 255, 64).name()).arg(Settings::getIdealTextColor( + QColor(0, 0, 255, 64)).name())); + +} + void SettingsDialog::on_resetDialogsButton_clicked() { if (QMessageBox::question(this, tr("Confirm?"), @@ -232,6 +382,9 @@ void SettingsDialog::on_pluginsList_currentItemChanged(QListWidgetItem *current, newItem->setFlags(newItem->flags() | Qt::ItemIsEditable); ui->pluginSettingsList->addTopLevelItem(newItem); } + + ui->pluginSettingsList->resizeColumnToContents(0); + ui->pluginSettingsList->resizeColumnToContents(1); } void SettingsDialog::deleteBlacklistItem() @@ -250,3 +403,41 @@ void SettingsDialog::on_clearCacheButton_clicked() NexusInterface::instance(m_PluginContainer)->clearCache(); } +void SettingsDialog::normalizePath(QLineEdit *lineEdit) +{ + QString text = lineEdit->text(); + while (text.endsWith('/') || text.endsWith('\\')) { + text.chop(1); + } + lineEdit->setText(text); +} + +void SettingsDialog::on_baseDirEdit_editingFinished() +{ + normalizePath(ui->baseDirEdit); +} + +void SettingsDialog::on_downloadDirEdit_editingFinished() +{ + normalizePath(ui->downloadDirEdit); +} + +void SettingsDialog::on_modDirEdit_editingFinished() +{ + normalizePath(ui->modDirEdit); +} + +void SettingsDialog::on_cacheDirEdit_editingFinished() +{ + normalizePath(ui->cacheDirEdit); +} + +void SettingsDialog::on_profilesDirEdit_editingFinished() +{ + normalizePath(ui->profilesDirEdit); +} + +void SettingsDialog::on_overwriteDirEdit_editingFinished() +{ + normalizePath(ui->overwriteDirEdit); +} diff --git a/src/settingsdialog.h b/src/settingsdialog.h index 2e270131..f0567d87 100644 --- a/src/settingsdialog.h +++ b/src/settingsdialog.h @@ -17,8 +17,8 @@ You should have received a copy of the GNU General Public License along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef WORKAROUNDDIALOG_H
-#define WORKAROUNDDIALOG_H
+#ifndef SETTINGSDIALOG_H
+#define SETTINGSDIALOG_H
#include "tutorabledialog.h"
#include <iplugin.h>
@@ -44,6 +44,12 @@ public: explicit SettingsDialog(PluginContainer *pluginContainer, QWidget *parent = 0);
~SettingsDialog();
+ /**
+ * @brief get stylesheet of settings buttons with colored background
+ * @return string of stylesheet
+ */
+ QString getColoredButtonStyleSheet() const;
+
public slots:
virtual void accept();
@@ -55,12 +61,31 @@ signals: private:
void storeSettings(QListWidgetItem *pluginItem);
+ void normalizePath(QLineEdit *lineEdit);
+
+public:
+
+ QColor getOverwritingColor() { return m_OverwritingColor; }
+ QColor getOverwrittenColor() { return m_OverwrittenColor; }
+ QColor getContainsColor() { return m_ContainsColor; }
+ QColor getContainedColor() { return m_ContainedColor; }
+ QString getExecutableBlacklist() { return m_ExecutableBlacklist; }
+ bool getResetGeometries();
+
+ void setOverwritingColor(QColor col) { m_OverwritingColor = col; }
+ void setOverwrittenColor(QColor col) { m_OverwrittenColor = col; }
+ void setContainsColor(QColor col) { m_ContainsColor = col; }
+ void setContainedColor(QColor col) { m_ContainedColor = col; }
+ void setExecutableBlacklist(QString blacklist) { m_ExecutableBlacklist = blacklist; }
+
private slots:
void on_loginCheckBox_toggled(bool checked);
void on_categoriesBtn_clicked();
+ void on_execBlacklistBtn_clicked();
+
void on_bsaDateBtn_clicked();
void on_browseDownloadDirBtn_clicked();
@@ -85,11 +110,42 @@ private slots: void on_browseProfilesDirBtn_clicked();
+ void on_browseGameDirBtn_clicked();
+
+ void on_overwritingBtn_clicked();
+
+ void on_overwrittenBtn_clicked();
+
+ void on_containsBtn_clicked();
+
+ void on_containedBtn_clicked();
+
+ void on_resetColorsBtn_clicked();
+
+ void on_baseDirEdit_editingFinished();
+
+ void on_downloadDirEdit_editingFinished();
+
+ void on_modDirEdit_editingFinished();
+
+ void on_cacheDirEdit_editingFinished();
+
+ void on_profilesDirEdit_editingFinished();
+
+ void on_overwriteDirEdit_editingFinished();
+
private:
Ui::SettingsDialog *ui;
PluginContainer *m_PluginContainer;
+
+ QColor m_OverwritingColor;
+ QColor m_OverwrittenColor;
+ QColor m_ContainsColor;
+ QColor m_ContainedColor;
+
+ QString m_ExecutableBlacklist;
};
-#endif // WORKAROUNDDIALOG_H
+#endif // SETTINGSDIALOG_H
diff --git a/src/settingsdialog.ui b/src/settingsdialog.ui index 374e1b84..0412fc10 100644 --- a/src/settingsdialog.ui +++ b/src/settingsdialog.ui @@ -17,7 +17,7 @@ <item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
- <number>1</number>
+ <number>0</number>
</property>
<widget class="QWidget" name="generalTab">
<attribute name="title">
@@ -92,28 +92,81 @@ If you use pre-releases, never contact me directly by e-mail or via private mess <property name="title">
<string>User interface</string>
</property>
- <layout class="QVBoxLayout" name="verticalLayout_11">
- <item>
- <widget class="QCheckBox" name="compactBox">
- <property name="toolTip">
- <string>If checked, the download interface will be more compact.</string>
- </property>
- <property name="text">
- <string>Compact Download Interface</string>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="2" column="0" colspan="2">
+ <widget class="QGroupBox" name="ModlistGroupBox">
+ <property name="title">
+ <string>Colors</string>
</property>
+ <layout class="QGridLayout" name="gridLayout_5">
+ <item row="4" column="0" colspan="2">
+ <widget class="QPushButton" name="resetColorsBtn">
+ <property name="text">
+ <string>Reset Colors</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QPushButton" name="overwrittenBtn">
+ <property name="text">
+ <string>Is overwritten (loose files)</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="2">
+ <widget class="QPushButton" name="containsBtn">
+ <property name="text">
+ <string>Mod Contains selected Plugin</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="2">
+ <widget class="QPushButton" name="containedBtn">
+ <property name="text">
+ <string>Plugin is Contained in selected Mod</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QPushButton" name="overwritingBtn">
+ <property name="text">
+ <string>Is overwriting (loose files)</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0">
+ <widget class="QCheckBox" name="colorSeparatorsBox">
+ <property name="toolTip">
+ <string>When this is enabled, the color defined for a separator will be shown on the mod list scrollbar at the location of the separator. This can be useful for quick navigation between separator sections or to a specific separator section.</string>
+ </property>
+ <property name="whatsThis">
+ <string>When this is enabled, the color defined for a separator will be shown on the mod list scrollbar at the location of the separator. This can be useful for quick navigation between separator sections or to a specific separator section.</string>
+ </property>
+ <property name="text">
+ <string>Show mod list separator colors on the scrollbar</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
</widget>
</item>
- <item>
- <widget class="QCheckBox" name="showMetaBox">
+ <item row="6" column="0" colspan="2">
+ <widget class="QPushButton" name="categoriesBtn">
<property name="toolTip">
- <string>If checked, the download list will display meta information instead of file names.</string>
+ <string>Modify the categories available to arrange your mods.</string>
+ </property>
+ <property name="whatsThis">
+ <string>Modify the categories available to arrange your mods.</string>
</property>
<property name="text">
- <string>Download Meta Information</string>
+ <string>Configure Mod Categories</string>
</property>
</widget>
</item>
- <item>
+ <item row="5" column="0" colspan="2">
<widget class="QPushButton" name="resetDialogsButton">
<property name="maximumSize">
<size>
@@ -132,7 +185,17 @@ If you use pre-releases, never contact me directly by e-mail or via private mess </property>
</widget>
</item>
- <item>
+ <item row="0" column="0">
+ <widget class="QCheckBox" name="compactBox">
+ <property name="toolTip">
+ <string>If checked, the download interface will be more compact.</string>
+ </property>
+ <property name="text">
+ <string>Compact Download Interface</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0" colspan="2">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
@@ -145,16 +208,13 @@ If you use pre-releases, never contact me directly by e-mail or via private mess </property>
</spacer>
</item>
- <item>
- <widget class="QPushButton" name="categoriesBtn">
+ <item row="0" column="1">
+ <widget class="QCheckBox" name="showMetaBox">
<property name="toolTip">
- <string>Modify the categories available to arrange your mods.</string>
- </property>
- <property name="whatsThis">
- <string>Modify the categories available to arrange your mods.</string>
+ <string>If checked, the download list will display meta information instead of file names.</string>
</property>
<property name="text">
- <string>Configure Mod Categories</string>
+ <string>Download Meta Information</string>
</property>
</widget>
</item>
@@ -342,6 +402,13 @@ If you use pre-releases, never contact me directly by e-mail or via private mess </property>
</widget>
</item>
+ <item row="11" column="2">
+ <widget class="QPushButton" name="browseGameDirBtn">
+ <property name="text">
+ <string>...</string>
+ </property>
+ </widget>
+ </item>
</layout>
</item>
<item>
@@ -671,6 +738,9 @@ p, li { white-space: pre-wrap; } <verstretch>0</verstretch>
</sizepolicy>
</property>
+ <property name="sortingEnabled">
+ <bool>true</bool>
+ </property>
</widget>
</item>
<item>
@@ -919,74 +989,130 @@ tl;dr-version: If Nexus-features don't work, insert the current version number o </layout>
</item>
<item>
- <widget class="QCheckBox" name="hideUncheckedBox">
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="toolTip">
- <string>Enforces that inactive ESPs and ESMs are never loaded.</string>
- </property>
- <property name="whatsThis">
- <string>It seems that the Games occasionally load ESP or ESM files even if they haven't been activated as plugins.
+ <layout class="QGridLayout" name="gridLayout_6">
+ <item row="1" column="1">
+ <widget class="QCheckBox" name="forceEnableBox">
+ <property name="toolTip">
+ <string>If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on)</string>
+ </property>
+ <property name="whatsThis">
+ <string>If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on)
+Uncheck this if you want to use Mod Organizer with total conversions (like Nehrim) but be aware that the game will crash if required files are not enabled.</string>
+ </property>
+ <property name="text">
+ <string>Force-enable game files</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QCheckBox" name="displayForeignBox">
+ <property name="toolTip">
+ <string>Disable this to no longer display mods installed outside MO in the mod list (left pane). Assets from those mods will then be treated as having lowest mod priority together with the original game content.</string>
+ </property>
+ <property name="whatsThis">
+ <string>By default Mod Organizer will display esp+bsa bundles installed with foreign tools as mods (left pane). This allows you to control their priority in relation to other mods. This is particularly useful if you also use Steam Workshop to install mods.
+However, if you installed loose file mods outside MO which conflict with BSAs also installed outside MO those conflicts can't be resolved correctly.
+
+If you disable this feature, MO will only display official DLCs this way. Please note that plugins (esps, esms, and esls) displayed in the right pane are completely unaffected by this feature.</string>
+ </property>
+ <property name="text">
+ <string>Display mods installed outside MO</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QCheckBox" name="hideUncheckedBox">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="toolTip">
+ <string>Enforces that inactive ESPs and ESMs are never loaded.</string>
+ </property>
+ <property name="whatsThis">
+ <string>It seems that the Games occasionally load ESP or ESM files even if they haven't been activated as plugins.
I don't yet know what the circumstances are, but user reports imply it is in some cases unwanted. If this is checked, ESPs and ESMs not checked in the List are invisible to the game and can not be loaded.</string>
- </property>
- <property name="text">
- <string>Hide inactive ESPs/ESMs</string>
- </property>
- </widget>
+ </property>
+ <property name="text">
+ <string>Hide inactive ESPs/ESMs</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QCheckBox" name="lockGUIBox">
+ <property name="toolTip">
+ <string>Disable this to prevent the GUI from being locked when running an executable. This may result in abnormal behavior.</string>
+ </property>
+ <property name="whatsThis">
+ <string>Disable this to prevent the GUI from being locked when running an executable. This may result in abnormal behavior.</string>
+ </property>
+ <property name="text">
+ <string>Lock GUI when running executable</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
</item>
<item>
- <widget class="QCheckBox" name="forceEnableBox">
+ <widget class="QPushButton" name="bsaDateBtn">
<property name="toolTip">
- <string>If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on)</string>
+ <string>For Skyrim, this can be used instead of Archive Invalidation. It should make AI redundant for all Profiles.
+For the other games this is not a sufficient replacement for AI!</string>
</property>
<property name="whatsThis">
- <string>If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on)
-Uncheck this if you want to use Mod Organizer with total conversions (like Nehrim) but be aware that the game will crash if required files are not enabled.</string>
+ <string>For Skyrim, this can be used instead of Archive Invalidation. It should make AI redundant for all Profiles.
+For the other games this is not a sufficient replacement for AI!</string>
</property>
<property name="text">
- <string>Force-enable game files</string>
+ <string>Back-date BSAs</string>
</property>
- <property name="checked">
- <bool>true</bool>
+ <property name="icon">
+ <iconset>
+ <normaloff>:/MO/gui/resources/emblem-readonly.png</normaloff>:/MO/gui/resources/emblem-readonly.png</iconset>
</property>
</widget>
</item>
<item>
- <widget class="QCheckBox" name="displayForeignBox">
+ <widget class="QPushButton" name="execBlacklistBtn">
<property name="toolTip">
- <string>Disable this to no longer display mods installed outside MO in the mod list (left pane). Assets from those mods will then be treated as having lowest mod priority together with the original game content.</string>
+ <string>Add executables to the blacklist to prevent them from
+accessing the virtual file system. This is useful to prevent
+unintended programs from being hooked. Hooking unintended
+programs may affect the execution of these programs or the
+programs you are intentionally running.</string>
</property>
<property name="whatsThis">
- <string>By default Mod Organizer will display esp+bsa bundles installed with foreign tools as mods (left pane). This allows you to control their priority in relation to other mods. This is particularly useful if you also use Steam Workshop to install mods.
-However, if you installed loose file mods outside MO which conflict with BSAs also installed outside MO those conflicts can't be resolved correctly.
-
-If you disable this feature, MO will only display official DLCs this way. Please note that plugins (esps, esms, and esls) displayed in the right pane are completely unaffected by this feature.</string>
+ <string>Add executables to the blacklist to prevent them from accessing the virtual file system. This is useful to prevent unintended programs from being hooked. Hooking unintended programs may affect the execution of these programs or the programs you are intentionally running.</string>
</property>
<property name="text">
- <string>Display mods installed outside MO</string>
+ <string>Configure Executables Blacklist</string>
</property>
- <property name="checked">
- <bool>true</bool>
+ <property name="autoDefault">
+ <bool>false</bool>
</property>
</widget>
</item>
<item>
- <widget class="QPushButton" name="bsaDateBtn">
+ <widget class="QPushButton" name="resetGeometryBtn">
<property name="toolTip">
- <string>For Skyrim, this can be used instead of Archive Invalidation. It should make AI redundant for all Profiles.
-For the other games this is not a sufficient replacement for AI!</string>
+ <string>Resets the window geometries for all windows. This can be useful if a window becomes too small or too large, if a column becomes too thin or too wide, and in similar situations.</string>
</property>
<property name="whatsThis">
- <string>For Skyrim, this can be used instead of Archive Invalidation. It should make AI redundant for all Profiles.
-For the other games this is not a sufficient replacement for AI!</string>
+ <string>Resets the window geometries for all windows. This can be useful if a window becomes too small or too large, if a column becomes too thin or too wide, and in similar situations.</string>
</property>
<property name="text">
- <string>Back-date BSAs</string>
+ <string>Reset Window Geometries</string>
</property>
- <property name="icon">
- <iconset>
- <normaloff>:/MO/gui/resources/emblem-readonly.png</normaloff>:/MO/gui/resources/emblem-readonly.png</iconset>
+ <property name="checkable">
+ <bool>true</bool>
</property>
</widget>
</item>
@@ -1020,64 +1146,62 @@ For the other games this is not a sufficient replacement for AI!</string> <string>Diagnostics</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_4">
- <item row="0" column="0">
- <layout class="QHBoxLayout" name="horizontalLayout_6">
+ <item row="2" column="0">
+ <layout class="QHBoxLayout" name="horizontalLayout_13">
<item>
- <widget class="QLabel" name="label_12">
+ <widget class="QLabel" name="label_28">
<property name="text">
- <string>Log Level</string>
+ <string>Max Dumps To Keep</string>
</property>
</widget>
</item>
<item>
- <widget class="QComboBox" name="logLevelBox">
+ <spacer name="horizontalSpacer_6">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>60</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="dumpsMaxEdit">
<property name="toolTip">
- <string>Decides the amount of data printed to "ModOrganizer.log"</string>
+ <string>Maximum number of crash dumps to keep on disk. Use 0 for unlimited.</string>
</property>
<property name="whatsThis">
<string>
- Decides the amount of data printed to "ModOrganizer.log".
- "Debug" produces very useful information for finding problems. There is usually no noteworthy performance impact but the file may become rather large. If this is a problem you may prefer the "Info" level for regluar use. On the "Error" level the log file usually remains empty.
+ Maximum number of crash dumps to keep on disk. Use 0 for unlimited.
+ Set "Crash Dumps" above to None to disable crash dump collection.
</string>
</property>
- <item>
- <property name="text">
- <string>Debug</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Info (recommended)</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Warning</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Error</string>
- </property>
- </item>
</widget>
</item>
</layout>
</item>
- <item row="1" column="0">
- <spacer name="verticalSpacer_9">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
+ <item row="3" column="0">
+ <widget class="QLabel" name="diagnosticsExplainedLabel">
+ <property name="toolTip">
+ <string>Hint: right click link and copy link location</string>
</property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
+ <property name="text">
+ <string>
+ Logs and crash dumps are stored under your current instance in the <a href="LOGS_FULL_PATH">LOGS_DIR</a>
+ and <a href="DUMPS_FULL_PATH">DUMPS_DIR</a> folders.
+ Sending logs and/or crash dumps to the developers can help investigate issues.
+ It is recommended to compress large log and dmp files before sending.
+ </string>
</property>
- </spacer>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
</item>
- <item row="2" column="0">
+ <item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_12">
<item>
<widget class="QLabel" name="label_27">
@@ -1124,62 +1248,7 @@ For the other games this is not a sufficient replacement for AI!</string> </item>
</layout>
</item>
- <item row="3" column="0">
- <layout class="QHBoxLayout" name="horizontalLayout_13">
- <item>
- <widget class="QLabel" name="label_28">
- <property name="text">
- <string>Max Dumps To Keep</string>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer_6">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>60</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QSpinBox" name="dumpsMaxEdit">
- <property name="toolTip">
- <string>Maximum number of crash dumps to keep on disk. Use 0 for unlimited.</string>
- </property>
- <property name="whatsThis">
- <string>
- Maximum number of crash dumps to keep on disk. Use 0 for unlimited.
- Set "Crash Dumps" above to None to disable crash dump collection.
- </string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
<item row="4" column="0">
- <widget class="QLabel" name="diagnosticsExplainedLabel">
- <property name="toolTip">
- <string>Hint: right click link and copy link location</string>
- </property>
- <property name="text">
- <string>
- Logs and crash dumps are stored under your current instance in the <a href="LOGS_FULL_PATH">LOGS_DIR</a>
- and <a href="DUMPS_FULL_PATH">DUMPS_DIR</a> folders.
- Sending logs and/or crash dumps to the developers can help investigate issues.
- It is recommended to compress large log and dmp files before sending.
- </string>
- </property>
- <property name="wordWrap">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item row="5" column="0">
<spacer name="verticalSpacer_10">
<property name="orientation">
<enum>Qt::Vertical</enum>
@@ -1195,6 +1264,50 @@ For the other games this is not a sufficient replacement for AI!</string> </property>
</spacer>
</item>
+ <item row="0" column="0">
+ <layout class="QHBoxLayout" name="horizontalLayout_6">
+ <item>
+ <widget class="QLabel" name="label_12">
+ <property name="text">
+ <string>Log Level</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="logLevelBox">
+ <property name="toolTip">
+ <string>Decides the amount of data printed to "ModOrganizer.log"</string>
+ </property>
+ <property name="whatsThis">
+ <string>
+ Decides the amount of data printed to "ModOrganizer.log".
+ "Debug" produces very useful information for finding problems. There is usually no noteworthy performance impact but the file may become rather large. If this is a problem you may prefer the "Info" level for regluar use. On the "Error" level the log file usually remains empty.
+ </string>
+ </property>
+ <item>
+ <property name="text">
+ <string>Debug</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Info (recommended)</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Warning</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Error</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ </layout>
+ </item>
</layout>
</widget>
</widget>
@@ -1217,8 +1330,6 @@ For the other games this is not a sufficient replacement for AI!</string> <tabstop>logLevelBox</tabstop>
<tabstop>usePrereleaseBox</tabstop>
<tabstop>compactBox</tabstop>
- <tabstop>showMetaBox</tabstop>
- <tabstop>resetDialogsButton</tabstop>
<tabstop>categoriesBtn</tabstop>
<tabstop>baseDirEdit</tabstop>
<tabstop>browseBaseDirBtn</tabstop>
@@ -1249,9 +1360,6 @@ For the other games this is not a sufficient replacement for AI!</string> <tabstop>appIDEdit</tabstop>
<tabstop>mechanismBox</tabstop>
<tabstop>nmmVersionEdit</tabstop>
- <tabstop>hideUncheckedBox</tabstop>
- <tabstop>forceEnableBox</tabstop>
- <tabstop>displayForeignBox</tabstop>
<tabstop>bsaDateBtn</tabstop>
<tabstop>tabWidget</tabstop>
</tabstops>
diff --git a/src/spawn.cpp b/src/spawn.cpp index ac8ccf30..f92387d5 100644 --- a/src/spawn.cpp +++ b/src/spawn.cpp @@ -29,6 +29,8 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. #include <QApplication>
#include <QMessageBox>
+#include <QtDebug>
+
#include <Shellapi.h>
@@ -91,6 +93,7 @@ static bool spawn(LPCWSTR binary, LPCWSTR arguments, LPCWSTR currentDirectory, PROCESS_INFORMATION pi;
BOOL success = FALSE;
if (hooked) {
+ qDebug() << "Creating process hooked: <" << QString::fromWCharArray(commandLine, length) <<">";
success = ::CreateProcessHooked(nullptr,
commandLine,
nullptr, nullptr, // no special process or thread attributes
diff --git a/src/stylesheets/Night Eyes.qss b/src/stylesheets/Night Eyes.qss new file mode 100644 index 00000000..e9bb6c44 --- /dev/null +++ b/src/stylesheets/Night Eyes.qss @@ -0,0 +1,650 @@ +/* Night Eyes theme v1.0.1 for Mod Organizer 2 by Ciathyza */ +/* https://github.com/ciathyza/mo2-themes */ + +/* Main Window ---------------------------------------------------------------- */ + +QWidget +{ + background: #181818; + color: #AAAAAA; +} + +QWidget:disabled +{ + background: #181818; + color: #808080; +} + +QMainWindow::separator +{ + border: 0px; +} + +QAbstractItemView +{ + background: #141414; + alternate-background-color: #1A1A1A; + show-decoration-selected: 1; + selection-background-color: #251100; + selection-color: #AAAAAA; +} + +QAbstractItemView::item:hover +{ + background: #242424; + color: #FFCC88; +} + +QAbstractItemView::item:selected +{ + background: #251100; + color: #FFCC88; +} + +QAbstractScrollArea::corner +{ + background: #141414; + border: 2px solid #181818; + border-bottom-right-radius: 6px; + margin: 0px -2px -2px 0px; +} + + +/* Toolbar -------------------------------------------------------------------- */ + +QToolBar +{ + background: #181818; + border: 1px solid #181818; +} + +QToolBar::separator +{ + background: #181818; +} + +QToolButton +{ + padding: 4px 1px; + border-radius: 2px; + margin: 4px 1px 0px 1px; +} + +QToolButton:hover +{ + background: #282828; +} + +QToolButton:pressed +{ + background: #181818; +} + + +/* Left Pane & File Trees ----------------------------------------------------- */ + +QTreeView +{ + border-radius: 6px; +} + +QTreeView::branch:hover +{ + background: #242424; + color: #FFCC88; +} + +QTreeView::branch:selected +{ + background: #251100; + color: #FFCC88; +} + +QTreeView::item:selected +{ + background: #251100; + color: #FFCC88; +} + +QTreeView::branch:has-children:!has-siblings:closed, +QTreeView::branch:closed:has-children:has-siblings +{ + image: url(:/stylesheet/branch-closed.png); + border: 0px; +} + +QTreeView::branch:open:has-children:!has-siblings, +QTreeView::branch:open:has-children:has-siblings +{ + image: url(:/stylesheet/branch-open.png); + border: 0px; +} + +QListView +{ + border-radius: 6px; +} + +QListView::item:hover +{ + background: #242424; + color: #FFCC88; +} + +QListView::item:selected +{ + background: #251100; + color: #FFCC88; +} + +QTextEdit +{ + background: #141414; + border-radius: 6px; +} + +QWebView +{ + background: #141414; + border-radius: 6px; +} + + +/* Group Boxes ---------------------------------------------------------------- */ + +QGroupBox +{ + padding: 24px 4px; + border: 2px solid #141414; + border-radius: 10px; +} + +QGroupBox::title +{ + subcontrol-origin: padding; + subcontrol-position: top left; + padding: 8px; +} + + +/* Search Boxes --------------------------------------------------------------- */ + +QLineEdit +{ + background: #141414; + min-height: 14px; + padding: 2px; + border: 2px solid #141414; + border-radius: 6px; + margin-top: 3px; +} + +QLineEdit:hover +{ + border: 2px solid #242424; +} + + +/* Most Dropdowns ------------------------------------------------------------- */ + +QComboBox +{ + background: #141414; + min-height: 20px; + padding-left: 5px; + border: 2px solid #141414; + border-radius: 6px; + margin: 3px 0px 1px 0px; +} + +QComboBox:hover +{ + border: 2px solid #242424; +} + +QComboBox:on +{ + background: #181818; + color: #FFCC88; + border: 2px solid #181818; +} + +QComboBox::drop-down +{ + width: 20px; + subcontrol-origin: padding; + subcontrol-position: top right; + border: none; +} + +QComboBox QAbstractItemView +{ + border: 0px; +} + +QComboBox::down-arrow +{ + image: url(:/stylesheet/combobox-down.png); +} + + +/* Most Buttons --------------------------------------------------------------- */ + +QPushButton +{ + background: #141414; + color: #FFCC88; + min-height: 18px; + padding: 2px 12px; + border-radius: 6px; +} + +QPushButton:hover +{ + background: #242424; + color: #FFCC88; +} + +QPushButton:pressed +{ + background: #181818; + color: #FFCC88; +} + +QPushButton:checked +{ + background: #181818; + color: #FFCC88; + margin: 4px; +} + + +/* Scroll Bars ---------------------------------------------------------------- */ + +/* Horizontal */ + +QScrollBar:horizontal +{ + background: #141414; + height: 16px; + border: 2px solid #181818; + margin: 0px 23px -2px 23px; +} + +QScrollBar::handle:horizontal +{ + background: #222222; + min-width: 32px; + border-radius: 6px; + margin: 2px; +} + +QScrollBar::add-line:horizontal +{ + background: #141414; + width: 23px; + subcontrol-position: right; + subcontrol-origin: margin; + border: 2px solid #181818; + margin: 0px -2px -2px 0px; +} + +QScrollBar::sub-line:horizontal +{ + background: #141414; + width: 23px; + subcontrol-position: left; + subcontrol-origin: margin; + border: 2px solid #181818; + border-bottom-left-radius: 6px; + margin: 0px 0px -2px -2px; +} + +/* Vertical */ + +QScrollBar:vertical +{ + background: #141414; + width: 16px; + border: 2px solid #181818; + margin: 23px -2px 23px 0px; +} + +QScrollBar::handle:vertical +{ + background: #222222; + min-height: 32px; + border-radius: 6px; + margin: 2px; +} + +QScrollBar::add-line:vertical +{ + background: #141414; + height: 23px; + subcontrol-position: bottom; + subcontrol-origin: margin; + border: 2px solid #181818; + border-bottom-right-radius: 6px; + margin: 0px -2px -2px 0px; +} + +QScrollBar::sub-line:vertical +{ + background: #141414; + height: 23px; + subcontrol-position: top; + subcontrol-origin: margin; + border: 2px solid #181818; + border-top-right-radius: 6px; + margin: -2px -2px 0px 0px; +} + +/* Combined */ + +QScrollBar::handle:horizontal:hover, +QScrollBar::handle:vertical:hover, +QScrollBar::add-line:horizontal:hover, +QScrollBar::sub-line:horizontal:hover, +QScrollBar::add-line:vertical:hover, +QScrollBar::sub-line:vertical:hover +{ + background: #242424; +} + +QScrollBar::handle:horizontal:pressed, +QScrollBar::handle:vertical:pressed, +QScrollBar::add-line:horizontal:pressed, +QScrollBar::sub-line:horizontal:pressed, +QScrollBar::add-line:vertical:pressed, +QScrollBar::sub-line:vertical:pressed +{ + background: #181818; +} + +QScrollBar::add-page:horizontal, +QScrollBar::sub-page:horizontal, +QScrollBar::add-page:vertical, +QScrollBar::sub-page:vertical +{ + background: transparent; +} + +QScrollBar::up-arrow:vertical, +QScrollBar::right-arrow:horizontal, +QScrollBar::down-arrow:vertical, +QScrollBar::left-arrow:horizontal +{ + height: 1px; + width: 1px; + border: 1px solid #181818; +} + + +/* Header Rows ---------------------------------------------------------------- */ + +QHeaderView +{ + background: #181818; +} + +QHeaderView::section +{ + background: #141414; + color: #D3D3D3; + height: 22px; + padding: 0px 5px; + border: 0px; + border-bottom: 2px solid #181818; + border-right: 2px solid #181818; +} + +QHeaderView::section:first +{ + border-top-left-radius: 6px; +} + +QHeaderView::section:last +{ + border-right: 0px; + border-top-right-radius: 6px; +} + +QHeaderView::section:hover +{ + background: #242424; + color: #FFCC88; +} + +QHeaderView::down-arrow +{ + padding-right: 4px; + height: 10px; + width: 10px; +} + + +/* Context Menus, Toolbar Dropdowns, & Tooltips ------------------------------- */ + +QMenu +{ + background: #141414; + selection-color: #FFCC88; + border: 0px; +} + +QMenu::item +{ + background: #141414; + selection-background-color: #242424; + padding: 4px 20px; +} + +QMenu::item:selected +{ + background: #242424; + color: #FFCC88; +} + +QMenu::item:disabled +{ + background: #242424; + color: #808080; +} + +QMenu::separator +{ + background: #181818; + height: 2px; +} + +QMenu::icon +{ + margin: 1px; +} + +QToolTip +{ + background: #181818; + color: #FFCC88; + padding: 1px; + border: 0px; +} + + +/* Progress Bars (Downloads) -------------------------------------------------- */ + +QProgressBar +{ + background: #141414; + text-align: center; + border: 0px; + border-radius: 6px; + margin: 0px 10px; +} + +QProgressBar::chunk +{ + background: #242424; + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} + + +/* Right Pane and Tab Bars ---------------------------------------------------- */ + +QTabWidget::pane +{ + top: 1px; + padding: 2px 2px 10px 2px; + border: 2px solid #141414; + border-radius: 10px; +} + +QTabWidget::tab-bar +{ + alignment: center; +} + +QTabBar::tab +{ + background: #141414; + color: #141414; + padding: 4px 1em; + border: 1px solid #181818; + border-top: 0px; + border-bottom: 0px; +} + +QTabBar::tab:!selected +{ + background: #141414; + color: #D3D3D3; +} + +QTabBar::tab:disabled +{ + background: #181818; + color: #808080; +} + +QTabBar::tab:selected +{ + background: #181818; + color: #FFCC88; + +} + +QTabBar::tab:!selected:hover +{ + background: #242424; + color: #FFCC88; +} + +QTabBar::tab:first +{ + border-top-left-radius: 10px; + border-bottom-left-radius: 10px; +} + +QTabBar::tab:last +{ + border-top-right-radius: 10px; + border-bottom-right-radius: 10px; +} + +QTabBar QToolButton +{ + background: #242424; + padding: 1px; + border-radius: 6px; + margin: 1px; +} + +QTabBar QToolButton:disabled +{ + background: transparent; +} + + +/* Sliders (Configurator) ----------------------------------------------------- */ + +/* QSlider::groove:horizontal +{ + background: #FFCC88; + height: 1px; + border: 1px solid #FFCC88; +} + +QSlider::handle:horizontal +{ + background: #242424; + width: 10px; + border: 2px solid #242424; + border-radius: 6px; + margin: -10px 0px; +} + +QSlider::handle:horizontal:hover +{ + background: #181818; + border: 2px solid #181818; +} */ + + +/* Tables (Configure Mod Categories) ------------------------------------------ */ + +QTableView +{ + gridline-color: #181818; + border: 0px; +} + +QListWidget::item#executablesListBox +{ + /* fixes the black text problem on the Modify Executables window */ + color: #D3D3D3; +} + + +/* Downloads tab -------------------------------------------------------------- */ + +QWidget#downloadTab QAbstractScrollArea +{ + /* background of the entire downloads tab */ + background: #242424; +} + +DownloadListWidget QFrame, +DownloadListWidgetCompact, +DownloadListWidgetCompact QLabel +{ + /* an entry on the Downloads tab */ + background: #141414; +} + +DownloadListWidget QFrame#frame +{ + /* outer box of an entry on the Downloads tab */ + border: 2px solid #141414; +} + +DownloadListWidget QLabel#installLabel +{ + color: none; +} + +DownloadListWidget QFrame:clicked +{ + background: #242424; +} + +/* compact downloads view */ + +DownloadListWidgetCompact, +DownloadListWidgetCompact QLabel +{ + /* an entry on the Downloads tab */ + background: #141414; + padding: 4px; +} diff --git a/src/stylesheets/Paper Automata.qss b/src/stylesheets/Paper Automata.qss new file mode 100644 index 00000000..748e589e --- /dev/null +++ b/src/stylesheets/Paper Automata.qss @@ -0,0 +1,939 @@ +/* v1.1 Paper Automata by 6788-00 */ +/* https://6788-00.tumblr.com/ */ + +/* Color Palette */ +/* Background - Main | #CDC8B0 */ +/* Background - Content | #DAD4BB */ +/* Hover | #B4AF9A */ +/* Selected | #4E4B42 */ +/* Accent | #CD664D */ + +/* All */ + +* { + color: #4E4B42; + font-size: 13px; +} + +/* Main Window */ + +QMainWindow, +QDialog { + /* most windows */ + background: url(./Paper/Automata/background.svg); +} + +QWidget:disabled { + /* disabled parts of the window like the update button when there are no updates */ + background: url(./Paper/Automata/background.svg); + color: #B4AF9A; +} + +QSplitter { + /* for resizing the left pane, right pane, or log console */ + height: 2px; + width: 8px; +} + +QSplitter::handle:horizontal { + /* horizontal handle */ + background: transparent; +} + +QSplitter::handle { + /* actual visible handle */ + background: #4E4B42; + margin-top: 6px; +} + +QAbstractItemView { + /* left and right pane container */ + background: #DAD4BB; + alternate-background-color: transparent; + show-decoration-selected: 1; + selection-background-color: #B4AF9A; + selection-color: #4E4B42; +} + +QAbstractItemView::item:hover { + /* rows on left and right pane when moused-over */ + background: #B4AF9A; +} + +QAbstractItemView::item:selected { + /* rows on left and right pane when clicked */ + background: #4E4B42; + color: #CDC8B0; +} + +QAbstractScrollArea::corner { + /* corner between where a vertical scrollbar and a horizontal scrollbar meet */ + background: #4E4B42; + border: 2px solid #4E4B42; + margin: 0px -2px -2px 0px; +} + +/* Toolbar */ + +QToolBar { + /* top toolbar; */ + border-bottom: 2px solid #4E4B42; + margin-left: 12px; + margin-right: 12px; +} + +QToolBar QWidget { + background: transparent; + margin: 0px; +} + +QToolButton { + /* toolbar buttons */ + padding: 4px 6px; + border: 2px solid transparent; + margin: 4px 4px 0px 4px; +} + +QToolButton:hover, +QToolButton:pressed { + background: #B4AF9A; + border-bottom: 2px solid #4E4B42; +} + +QToolButton:menu-indicator { + /* expandable indicator on toolbar buttons */ + image: url(./Paper/Automata/Arrows/down.svg); + margin: 4px; +} + +QToolButton QMenu { + /* toolbar button dropdown menus */ + margin: 0px; +} + +/* Toolbar Button Icons */ + +#actionChange_Game { + qproperty-icon: url(./Paper/Automata/Toolbar/instances.svg); +} + +#actionInstallMod { + qproperty-icon: url(./Paper/Automata/Toolbar/archives.svg); +} + +#actionNexus { + qproperty-icon: url(./Paper/Automata/Toolbar/nexus.svg); +} + +#actionAdd_Profile { + qproperty-icon: url(./Paper/Automata/Toolbar/profiles.svg); +} + +#actionModify_Executables { + qproperty-icon: url(./Paper/Automata/Toolbar/executables.svg); +} + +#actionTool { + qproperty-icon: url(./Paper/Automata/Toolbar/tools.svg); +} + +#actionSettings { + qproperty-icon: url(./Paper/Automata/Toolbar/settings.svg); +} + +#actionProblems { + qproperty-icon: url(./Paper/Automata/Toolbar/problems.svg); +} + +#actionUpdate { + qproperty-icon: url(./Paper/Automata/Toolbar/update.svg); +} + +#actionHelp { + qproperty-icon: url(./Paper/Automata/Toolbar/help.svg); +} + +/* Left Pane & File Trees */ + +QTreeView { + /* left pane and right pane under QAbstractItemView*/ + border: none; +} + +QTreeView::branch:has-siblings:!adjoins-item{ + background: none; +} + +QTreeView::branch:closed:has-children:has-siblings, +QTreeView::branch:closed:has-children:!has-siblings { + /* a branch that is closed */ + image: url(./Paper/Automata/collapsed.svg) center no-repeat; +} + +QTreeView::branch:open:has-children:has-siblings, +QTreeView::branch:open:has-children:!has-siblings { + /* a branch that is open */ + image: url(./Paper/Automata/expanded.svg) center no-repeat; +} + +QTreeView::branch:hover { + background: #B4AF9A; +} + +QTreeView::branch:selected { + /* rows on the left pane when clicked (below QAbstractItemView, i.e. to the left of the checkbox) */ + background: #4E4B42; + color: #CDC8B0; +} + +QTreeView::item:selected { + /* entry on left pane when clicked */ + background: #4E4B42; + color: #CDC8B0; +} + +QListView { + /* saves window */ + border: none; +} + +QListView::item:hover { + /* uncertain, assumed: rows on the saves window when moused-over */ + background: #B4AF9A; +} + +QListView::item:selected { + /*uncertain, assumed: rows on the saves window when clicked */ + background: #4E4B42; + color: #FFFFFF; +} + +QTextEdit { + /* large text fields */ + background: #DAD4BB; + border: none; +} + +QWebView { + /* Nexus Info window */ + background: #DAD4BB; + border-radius: 0px; +} + +/* Group Boxes */ + +QGroupBox { + /* boxes that group multiple elements together (e.g. on Settings) */ + padding: 24px 4px; + border: none; +} + +QGroupBox::title { + /* title of group boxes */ + background: transparent; + subcontrol-origin: padding; + subcontrol-position: top left; + padding: 8px; +} + +/* Text Fields */ + +QLineEdit { + /* text fields like NameFilter and directory fields */ + background: #DAD4BB; + min-height: 14px; + padding: 2px; + border: 2px solid #DAD4BB; + border-radius: 0px; +} + +QLineEdit:hover { + /* text fields when moused-over */ + background: 2px solid #B4AF9A; + border: 2px solid #B4AF9A; +} + +/* Most Dropdown Menus */ + +QComboBox { + /* dropdown menus */ + background: #DAD4BB; + min-height: 20px; + padding-left: 5px; + border: 2px solid #DAD4BB; + border-radius: 0px; + margin: 4px 0px; +} + +QComboBox:hover { + /* dropdown menus when moused-over */ + background: 2px solid #B4AF9A; + border: 2px solid #B4AF9A; +} + +QComboBox:on { + /* dropdown menus when expanded */ + background: #4E4B42; + color: #DAD4BB; + border: 2px solid #4E4B42; +} + +QComboBox::drop-down { + /* area for expandable indicator */ + width: 20px; + subcontrol-origin: padding; + subcontrol-position: top right; + border: none; +} + +QComboBox QAbstractItemView { + /* actual menu that expands */ + background: #DAD4BB; + border: 2px solid #CDC8B0; + border-radius: 0px; +} + +QComboBox::down-arrow { + /* expandable indicator */ + image: url(./Paper/Automata/Arrows/down.svg); +} + +/* Most Buttons */ + +QPushButton { + /* most buttons */ + background: #B4AF9A; + min-height: 20px; + padding: 2px 12px; + border-radius: 0px; +} + +QPushButton:disabled { + /* most buttons when disabled */ + background: transparent; + border: 2px solid #DAD4BB; +} + +QPushButton:hover { + /* most buttons when hovered */ + background: #DAD4BB; +} + +QPushButton:pressed { + /* most buttons when clicked */ + background: #4E4B42; + color: #DAD4BB; +} + +QPushButton::menu-indicator { + /* expandable indicator for most buttons */ + subcontrol-position: right center; + image: url(./Paper/Automata/Arrows/down.svg); + padding: 2px; + margin: 4px 4px; +} + +/* Icons */ + +QPushButton#listOptionsBtn { + /* Options button */ + qproperty-icon: url(./Paper/Automata/dots.svg); + qproperty-iconSize: 16px; + padding-left: 2px; +} + +QPushButton#openFolderMenu { + /* Open Folder button */ + qproperty-icon: url(./Paper/Automata/folder.svg); + qproperty-iconSize: 14px; + padding-left: 4px; +} + +QPushButton#restoreModsButton, +QPushButton#restoreButton { + /* Restore Backup buttons */ + qproperty-icon: url(./Paper/Automata/restore.svg); + qproperty-iconSize: 14px; +} + +QPushButton#saveModsButton, +QPushButton#saveButton { + /* Backup buttons */ + qproperty-icon: url(./Paper/Automata/backup.svg); + qproperty-iconSize: 14px; +} + +QPushButton#bossButton { + /* Sort button */ + qproperty-icon: url(./Paper/Automata/sort.svg); + qproperty-iconSize: 14px; +} + +QPushButton#linkButton { + /* Shortcuts button */ + qproperty-icon: url(./Paper/Automata/shortcut.svg); + qproperty-iconSize: 14px; +} + +QPushButton#btnRefreshData, +QPushButton#refreshButton { + /* Refresh buttons */ + qproperty-icon: url(./Paper/Automata/refresh.svg); + qproperty-iconSize: 14px; +} + +QPushButton#endorseBtn { + /* Endorse button on the Nexus Info tab of the Information window */ + qproperty-icon: url(./Paper/Automata/heart.svg); + qproperty-iconSize: 14px; +} + +QPushButton#clearCacheButton { + /* Clear Cache button on the Nexus tab of the Settings window */ + qproperty-icon: url(./Paper/Automata/cross.svg); + qproperty-iconSize: 14px; +} + +QToolButton#deactivateESP, +QToolButton#activateESP { + /* activate and deactivate ESP buttons */ + background: #DAD4BB; +} + +QToolButton:hover#deactivateESP, +QToolButton:hover#activateESP { + /* activate and deactivate ESP buttons when moused-over */ + background: #B4AF9A; +} + +QToolButton#deactivateESP { + /* icon for the deactivate ESP button */ + qproperty-icon: url(./Paper/Automata/backup.svg); +} + +QToolButton#activateESP { + /* icon for the activate ESP button */ + qproperty-icon: url(./Paper/Automata/restore-alt.svg); +} + +/* Run button */ + +QPushButton#startButton { + /* Run button */ + background: #4E4B42; + color: #DAD4BB; + qproperty-icon: url(./Paper/Automata/run.svg); + qproperty-iconSize: 30px; + padding: 6px; +} + +QPushButton:hover#startButton { + /* Run button when moused-over*/ + background: #B4AF9A; + color: #4E4B42; +} + +/* Scroll Bars */ + +/* Horizontal */ + +QScrollBar:horizontal { + /* horizontal scroll bar */ + background: #DAD4BB; + height: 18px; + border: 2px solid #DAD4BB; + margin: 0px 23px -2px 23px; +} + +QScrollBar::handle:horizontal { + /* handle for horizontal scroll bars */ + background: #4E4B42; + min-width: 32px; + margin: 2px; +} + +QScrollBar::add-line:horizontal { + /* scroll right button */ + background: #DAD4BB; + image: url(./Paper/Automata/Arrows/right.svg); + width: 23px; + subcontrol-position: right; + subcontrol-origin: margin; + border: 2px solid #CDC8B0; + margin: 0px -2px -2px 0px; +} + +QScrollBar::sub-line:horizontal { + /* scroll left button */ + background: #DAD4BB; + image: url(./Paper/Automata/Arrows/left.svg); + width: 23px; + subcontrol-position: left; + subcontrol-origin: margin; + border: 2px solid #CDC8B0; + margin: 0px 0px -2px -2px; +} + +/* Vertical */ + +QScrollBar:vertical { + /* vertical scroll bar */ + background: #DAD4BB; + width: 18px; + border: 2px solid #CDC8B0; + margin: 23px -2px 23px 0px; +} + +QScrollBar::handle:vertical { + /* handle for vertical scroll bars */ + background: #4E4B42; + min-height: 32px; + margin: 2px; +} + +QScrollBar::add-line:vertical { + /* scroll down button */ + background: #DAD4BB; + image: url(./Paper/Automata/Arrows/down.svg); + height: 23px; + subcontrol-position: bottom; + subcontrol-origin: margin; + border: 2px solid #CDC8B0; + border-bottom-right-radius: 0px; + margin: 0px -2px -2px 0px; +} + +QScrollBar::sub-line:vertical { + /* scroll up button */ + background: #B4AF9A; + image: url(./Paper/Automata/Arrows/up.svg); + height: 23px; + subcontrol-position: top; + subcontrol-origin: margin; + border: 2px solid #CDC8B0; + border-top-right-radius: 0px; + margin: -2px -2px 0px 0px; +} + +/* Combined */ + +QScrollBar::handle:horizontal:hover, +QScrollBar::handle:vertical:hover, +QScrollBar::add-line:horizontal:hover, +QScrollBar::sub-line:horizontal:hover, +QScrollBar::add-line:vertical:hover, +QScrollBar::sub-line:vertical:hover { + /* buttons and handles when moused-over */ + background: #B4AF9A; +} + +QScrollBar::handle:horizontal:pressed, +QScrollBar::handle:vertical:pressed, +QScrollBar::add-line:horizontal:pressed, +QScrollBar::sub-line:horizontal:pressed, +QScrollBar::add-line:vertical:pressed, +QScrollBar::sub-line:vertical:pressed { + /* buttons and handles when clicked */ + background: #4E4B42; +} + +QScrollBar::add-page:horizontal, +QScrollBar::sub-page:horizontal, +QScrollBar::add-page:vertical, +QScrollBar::sub-page:vertical { + /* area on scroll bars where clicking it scrolls to where you clicked */ + background: transparent; +} + +/* Header Rows */ + +QHeaderView { + /* header row (i.e. Mod Name, Flags, Category, etc.) */ + background: #B4AF9A; +} + +QHeaderView::section { + /* each section on the header row (i.e. Mod name is one section and Flags another) */ + background: #B4AF9A; + height: 22px; + padding: 0px 5px; + border: 0px; + border-bottom: 2px solid #CDC8B0; + border-right: 2px solid #CDC8B0; +} + +QHeaderView::section:hover { + /* a section on a header row when hovered */ + background: #B4AF9A; +} + +QHeaderView::up-arrow { + /* ascending sort indicator */ + image: url(./Paper/Automata/Arrows/up.svg); + padding-right: 4px; + height: 10px; + width: 10px; +} + +QHeaderView::down-arrow { + /* descending sort indicator */ + image: url(./Paper/Automata/Arrows/down.svg); + padding-right: 4px; + height: 10px; + width: 10px; +} + +QHeaderView::section:last { + margin-right: -2px; +} + +/* Right Click Menus, Toolbar Dropdown Menus, & Tooltips */ + +QMenu { + /* right click menu */ + background: #DAD4BB; + border: 2px solid #CDC8B0; +} + +QMenu::item { + /* rows on right click menus */ + background: #DAD4BB; + padding: 5px 20px 5px 24px; +} + +QMenu::item:selected { + /* rows on right click menus when moused-over (i dunno) */ + background: #B4AF9A; + border: none; +} + +QMenu::item:disabled { + /* unavailable rows on right click menus */ + background: #CDC8B0; + color: #B4AF9A; +} + +QMenu::separator { + /* seperators on right click menus */ + height: 2px; + background: #CDC8B0; +} + +QMenu::icon { + /* area for icons on right click menus */ + padding: 4px; +} + +QMenu::right-arrow { + /* submenu indicator */ + image: url(./Paper/Automata/Arrows/right.svg); + padding-right: 5px; +} + +QMenu QPushButton { + /* Change Categories and Primary Categories buttons */ + background: #DAD4BB; + padding: 2px 24px; + text-align: left; + border: none; +} + +QMenu QPushButton:hover { + /* Change Categories and Primary Categories buttons when moused-over */ + background: #B4AF9A; + border: none; +} + +QMenu QCheckBox { + /* checkboxes on right click menus (change categories)*/ + background: #DAD4BB; + padding: 2px 6px; +} + +QMenu QCheckBox:hover { + /* checkboxes on right click menus when moused-over (change categories) */ + background: #B4AF9A; +} + +QMenu QRadioButton { + /* radio buttons on right click menus (primary categories) */ + background: #DAD4BB; + padding: 2px 6px; +} + +QToolTip { + /* all tooltips */ + background: #DAD4BB; + border: 2px solid #CDC8B0; +} + +/* Progress Bars (Downloads) */ + +QProgressBar { + /* progress bars when downloading */ + background: #DAD4BB; + text-align: center; + border: 0px; + margin: 0px 10px; +} + +QProgressBar::chunk { + /* the loading part that moves on progress bars */ + background: #CD664D; +} + +/* Right Pane and Tab Bars */ + +QTabWidget::pane { + /* right pane */ + top: 1px; + padding: 2px 2px 3px 2px; + border-top: 2px solid #4E4B42; +} + +QTabWidget::tab-bar { + /* tabs */ + alignment: center; +} + +QTabBar::tab { + /* a tab */ + background: #B4AF9A; + padding: 4px 1em; + border: 2px solid #DAD4BB; + margin: 3px 1px; +} + +QTabBar::tab:!selected { + /* an unselected tab */ + background: #B4AF9A; + border: 2px solid #B4AF9A; +} + +QTabBar::tab:disabled { + /* An unavailable tab */ + background: transparent; + color: #B4AF9A; + border: transparent; +} + +QTabBar::tab:selected { + /* a clicked tab */ + color: #CDC8B0; + background: #4E4B42; + border: 2px solid #4E4B42; +} + +QTabBar::tab:hover { + /* a tab when hovered */ + background: #DAD4BB; + color: #4E4B42; + border: 2px solid #DAD4BB; +} + +QTabBar QToolButton { + /* buttons to scroll between more tabs on a tab bar */ + background: #CD664D; + padding: 0px; + margin: 3px; +} + +QTabBar QToolButton:disabled { + /* buttons to scroll on a tab bar when it's unavailable */ + background: transparent; + border: 2px solid transparent; +} + +QLCDNumber { + /* LCD number on the Conflicts tab */ + background: #DAD4BB; + color: #CD664D; + border: none; +} + +/* Tables (Configure Mod Categories) */ + +QTableView { + /* tables */ + gridline-color: #CDC8B0; + border: 0px; +} + +/* Checkboxes */ + +QCheckBox::indicator { + /* a checkbox */ + width: 12px; + height: 12px; +} + +QCheckBox::indicator:disabled, +QRadioButton::indicator:disabled { + /* a checkbox that is disabled */ + background: none; + border: 2px solid #B4AF9A; +} + +QTreeView::indicator:unchecked, +QCheckBox::indicator:unchecked, +QGroupBox::indicator:unchecked, +QRadioButton::indicator:unchecked { + /* a checkbox when unchecked */ + border: 2px solid #4E4B42; +} + +QCheckBox::indicator:unchecked:hover, +QRadioButton::indicator:unchecked:hover { + /* a checkbox that is unchecked when moused-over */ + background: #B4AF9A; +} + +QTreeView::indicator:unchecked:selected, +QRadioButton::indicator:unchecked:selected { + /* a checkbox that is unchecked when clicked */ + image: url(./Paper/Automata/unchecked-alt.svg); +} + +QTreeView::indicator:checked, +QCheckBox::indicator:checked, +QGroupBox::indicator:checked, +QRadioButton::indicator:checked { + /* a checkbox when checked */ + background: #CD664D; + border: 2px solid #CD664D; +} + +QCheckBox::indicator:checked:hover, +QRadioButton::indicator:checked:hover { + /* a checkbox that is checked when moused-over */ + border: 2px solid #4E4B42; +} + +/* Spinboxes */ + +QSpinBox, +QDoubleSpinBox { + /* usually boxes for selecting numbers */ + min-height: 24px; + min-width: 60px; + background: #DAD4BB; + padding: 0px 2px; + border: 2px solid #CDC8B0; + margin: 0px -4px; +} + +QSpinBox::up-button, +QDoubleSpinBox::up-button { + /* up button on spinboxes */ + min-height: 28px; + min-width: 18px; + subcontrol-position: center right; + border: 2px solid #CDC8B0; +} + +QSpinBox::up-arrow, +QDoubleSpinBox::up-arrow { + /* arrow for the up button */ + image: url(./Paper/Automata/Arrows/up.svg); +} + +QSpinBox::up-button:hover, +QDoubleSpinBox::up-button:hover { + /* up button on spinboxes when moused-over */ + background: #B4AF9A; +} + +QSpinBox::down-button, +QDoubleSpinBox::down-button { + /* down button on spinboxes */ + min-height: 28px; + min-width: 18px; + subcontrol-position: center left; + border: 2px solid #CDC8B0; +} + +QSpinBox::down-arrow, +QDoubleSpinBox::down-arrow { + /* arrow for the up button */ + image: url(./Paper/Automata/Arrows/down.svg); +} + +QSpinBox::down-button:hover, +QDoubleSpinBox::down-button:hover { + /* down button on spinboxes when moused-over */ + background: #B4AF9A; +} + +/* Sliders */ + +QSlider::groove { + /* sliders */ + height: 0px; + border: 1px solid #B4AF9A; +} + +QSlider::handle { + /* slider handles */ + background: #DAD4BB; + border: 2px solid #4E4B42; + border-radius: 0px; + margin: -10px; +} + +QSlider::handle:hover { + /* Slider handles when moused-over */ + background: #4E4B42; +} + +/* Downloads Tab */ + +QWidget#downloadTab QAbstractScrollArea, +DownloadListWidget { + /* background of the entire downloads tab */ + background: transparent; +} + +DownloadListWidget QFrame, +DownloadListWidgetCompact, +DownloadListWidgetCompact QLabel { + /* an entry on the Downloads tab */ + background: #DAD4BB; +} + +DownloadListWidget QFrame#frame { + /* outer box of an entry on the Downloads tab */ + border: 2px solid #DAD4BB; +} + +DownloadListWidget QLabel#installLabel { + /* installed/done label */ + color: none; +} + +/* Compact Downloads View */ + +DownloadListWidgetCompact, +DownloadListWidgetCompact QLabel { + /* an entry on the Downloads tab */ + background: #DAD4BB; +} + +/* Categories Filter */ + +QPushButton#displayCategoriesBtn { + /* Filter button */ + min-width: 12px; +} + +QTreeWidget#categoriesList { + /* Categories panel */ + min-width: 200px; + margin-bottom: 4px; +} + +QGroupBox#categoriesGroup { + /* Categories group box */ + padding-bottom: 0px; +} + +/* For the Glory of Mankind */
\ No newline at end of file diff --git a/src/stylesheets/Paper Dark by 6788-00.qss b/src/stylesheets/Paper Dark by 6788-00.qss deleted file mode 100644 index 11f5b922..00000000 --- a/src/stylesheets/Paper Dark by 6788-00.qss +++ /dev/null @@ -1,550 +0,0 @@ -/* v3.0.1 Paper Dark by 6788-00 */ -/* https://6788-00.tumblr.com/ */ - -/* Main Window */ - -QWidget { - background: #222222; - color: #D3D3D3; -} - -QWidget:disabled { - background: #222222; - color: #808080; -} - -QMainWindow::separator { - border: 0px; -} - -QAbstractItemView { - background: #141414; - alternate-background-color: #1A1A1A; - show-decoration-selected: 1; - selection-background-color: #007272; - selection-color: #FFFFFF; -} - -QAbstractItemView::item:hover { - background: #007E7E; - color: #FFFFFF; -} - -QAbstractItemView::item:selected { - background: #007272; - color: #FFFFFF; -} - -QAbstractScrollArea::corner { - background: #141414; - border: 2px solid #222222; - border-bottom-right-radius: 6px; - margin: 0px -2px -2px 0px; -} - -/* Toolbar */ - -QToolBar { - background: #222222; - border: 1px solid #222222; -} - -QToolBar::separator { - background: #222222; -} - -QToolButton { - padding: 4px 6px; - border-radius: 6px; - margin: 4px 4px 0px 4px; -} - -QToolButton:hover { - background: #007E7E; -} - -QToolButton:pressed { - background: #007272; -} - -/* Left Pane & File Trees */ - -QTreeView { - border-radius: 6px; -} - -QTreeView::branch:hover { - background: #007E7E; - color: #FFFFFF; -} - -QTreeView::branch:selected { - background: #007272; - color: #FFFFFF; -} - -QTreeView::item:selected { - background: #007272; - color: #FFFFFF; -} - -QTreeView::branch:has-children:!has-siblings:closed, -QTreeView::branch:closed:has-children:has-siblings { - image: url(:/stylesheet/branch-closed.png); - border: 0px; -} - -QTreeView::branch:open:has-children:!has-siblings, -QTreeView::branch:open:has-children:has-siblings { - image: url(:/stylesheet/branch-open.png); - border: 0px; -} - -QListView { - border-radius: 6px; -} - -QListView::item:hover { - background: #007E7E; - color: #FFFFFF; -} - -QListView::item:selected { - background: #007272; - color: #FFFFFF; -} - -QTextEdit { - background: #141414; - border-radius: 6px; -} - -QWebView { - background: #141414; - border-radius: 6px; -} - -/* Group Boxes */ - -QGroupBox { - padding: 24px 4px; - border: 2px solid #141414; - border-radius: 10px; -} - -QGroupBox::title { - subcontrol-origin: padding; - subcontrol-position: top left; - padding: 8px; -} - -/* Search Boxes */ - -QLineEdit { - background: #141414; - min-height: 14px; - padding: 2px; - border: 2px solid #141414; - border-radius: 6px; - margin-top: 3px; -} - -QLineEdit:hover { - border: 2px solid #007E7E; -} - -/* Most Dropdowns */ - -QComboBox { - background: #141414; - min-height: 20px; - padding-left: 5px; - border: 2px solid #141414; - border-radius: 6px; - margin: 3px 0px 1px 0px; -} - -QComboBox:hover { - border: 2px solid #007E7E; -} - -QComboBox:on { - background: #007272; - color: #FFFFFF; - border: 2px solid #007272; -} - -QComboBox::drop-down { - width: 20px; - subcontrol-origin: padding; - subcontrol-position: top right; - border: none; -} - -QComboBox QAbstractItemView { - border: 0px; -} - -QComboBox::down-arrow { - image: url(:/stylesheet/combobox-down.png); -} - -/* Most Buttons */ - -QPushButton { - background: #141414; - color: #FFFFFF; - min-height: 18px; - padding: 2px 12px; - border-radius: 6px; -} - -QPushButton:hover { - background: #007E7E; - color: #FFFFFF; -} - -QPushButton:pressed { - background: #007272; - color: #FFFFFF; -} - -QPushButton:checked { - background: #007272; - color: #FFFFFF; - margin: 4px; -} - -/* Scroll Bars */ - -/* Horizontal */ - -QScrollBar:horizontal { - background: #141414; - height: 20px; - border: 2px solid #222222; - margin: 0px 23px -2px 23px; -} - -QScrollBar::handle:horizontal { - background: #222222; - min-width: 32px; - border-radius: 6px; - margin: 2px; -} - -QScrollBar::add-line:horizontal { - background: #141414; - width: 23px; - subcontrol-position: right; - subcontrol-origin: margin; - border: 2px solid #222222; - margin: 0px -2px -2px 0px; -} - -QScrollBar::sub-line:horizontal { - background: #141414; - width: 23px; - subcontrol-position: left; - subcontrol-origin: margin; - border: 2px solid #222222; - border-bottom-left-radius: 6px; - margin: 0px 0px -2px -2px; -} - -/* Vertical */ - -QScrollBar:vertical { - background: #141414; - width: 20px; - border: 2px solid #222222; - margin: 23px -2px 23px 0px; -} - -QScrollBar::handle:vertical { - background: #222222; - min-height: 32px; - border-radius: 6px; - margin: 2px; -} - -QScrollBar::add-line:vertical { - background: #141414; - height: 23px; - subcontrol-position: bottom; - subcontrol-origin: margin; - border: 2px solid #222222; - border-bottom-right-radius: 6px; - margin: 0px -2px -2px 0px; -} - -QScrollBar::sub-line:vertical { - background: #141414; - height: 23px; - subcontrol-position: top; - subcontrol-origin: margin; - border: 2px solid #222222; - border-top-right-radius: 6px; - margin: -2px -2px 0px 0px; -} - -/* Combined */ - -QScrollBar::handle:horizontal:hover, -QScrollBar::handle:vertical:hover, -QScrollBar::add-line:horizontal:hover, -QScrollBar::sub-line:horizontal:hover, -QScrollBar::add-line:vertical:hover, -QScrollBar::sub-line:vertical:hover { - background: #007E7E; -} - -QScrollBar::handle:horizontal:pressed, -QScrollBar::handle:vertical:pressed, -QScrollBar::add-line:horizontal:pressed, -QScrollBar::sub-line:horizontal:pressed, -QScrollBar::add-line:vertical:pressed, -QScrollBar::sub-line:vertical:pressed { - background: #007272; -} - -QScrollBar::add-page:horizontal, -QScrollBar::sub-page:horizontal, -QScrollBar::add-page:vertical, -QScrollBar::sub-page:vertical { - background: transparent; -} - -QScrollBar::up-arrow:vertical, -QScrollBar::right-arrow:horizontal, -QScrollBar::down-arrow:vertical, -QScrollBar::left-arrow:horizontal { - height: 1px; - width: 1px; - border: 1px solid #222222; -} - -/* Header Rows */ - -QHeaderView { - background: #222222; -} - -QHeaderView::section { - background: #141414; - color: #D3D3D3; - height: 22px; - padding: 0px 5px; - border: 0px; - border-bottom: 2px solid #222222; - border-right: 2px solid #222222; -} - -QHeaderView::section:first { - border-top-left-radius: 6px; -} - -QHeaderView::section:last { - border-right: 0px; - border-top-right-radius: 6px; -} - -QHeaderView::section:hover { - background: #007E7E; - color: #FFFFFF; -} - -QHeaderView::down-arrow { - padding-right: 4px; - height: 10px; - width: 10px; -} - -/* Context Menus, Toolbar Dropdowns, & Tooltips */ - -QMenu { - background: #141414; - selection-color: #FFFFFF; - border: 0px; -} - -QMenu::item { - background: #141414; - selection-background-color: #007E7E; - padding: 4px 20px; -} - -QMenu::item:selected { - background: #007E7E; - color: #FFFFFF; -} - -QMenu::item:disabled { - background: #242424; - color: #808080; -} - -QMenu::separator { - background: #222222; - height: 2px; -} - -QMenu::icon { - margin: 1px; -} - -QToolTip { - background: #222222; - color: #FFFFFF; - padding: 1px; - border: 0px; -} - -/* Progress Bars (Downloads) */ - -QProgressBar { - background: #141414; - text-align: center; - border: 0px; - border-radius: 6px; - margin: 0px 10px; -} - -QProgressBar::chunk { - background: #007E7E; - border-top-left-radius: 6px; - border-bottom-left-radius: 6px; -} - -/* Right Pane and Tab Bars */ - -QTabWidget::pane { - top: 1px; - padding: 2px 2px 10px 2px; - border: 2px solid #141414; - border-radius: 10px; -} - -QTabWidget::tab-bar { - alignment: center; -} - -QTabBar::tab { - background: #141414; - color: #141414; - padding: 4px 1em; - border: 1px solid #222222; - border-top: 0px; - border-bottom: 0px; -} - -QTabBar::tab:!selected { - background: #141414; - color: #D3D3D3; -} - -QTabBar::tab:disabled { - background: #222222; - color: #808080; -} - -QTabBar::tab:selected { - background: #007272; - color: #FFFFFF; - -} - -QTabBar::tab:!selected:hover { - background: #007E7E; - color: #FFFFFF; -} - -QTabBar::tab:first { - border-top-left-radius: 10px; - border-bottom-left-radius: 10px; -} - -QTabBar::tab:last { - border-top-right-radius: 10px; - border-bottom-right-radius: 10px; -} - -QTabBar QToolButton { - background: #007E7E; - padding: 1px; - border-radius: 6px; - margin: 1px; -} - -QTabBar QToolButton:disabled { - background: transparent; -} - -/* Sliders (Configurator) */ - -/* QSlider::groove:horizontal { - background: #FFFFFF; - height: 1px; - border: 1px solid #FFFFFF; -} - -QSlider::handle:horizontal { - background: #007E7E; - width: 10px; - border: 2px solid #007E7E; - border-radius: 6px; - margin: -10px 0px; -} - -QSlider::handle:horizontal:hover { - background: #007272; - border: 2px solid #007272; -} */ - -/* Tables (Configure Mod Categories) */ - -QTableView { - gridline-color: #222222; - border: 0px; -} - -QListWidget::item#executablesListBox { - /* fixes the black text problem on the Modify Executables window */ - color: #D3D3D3; -} - -/* downloads tab */ - -QWidget#downloadTab QAbstractScrollArea { - /* background of the entire downloads tab */ - background: #242424; -} - -DownloadListWidget QFrame, -DownloadListWidgetCompact, -DownloadListWidgetCompact QLabel { - /* an entry on the Downloads tab */ - background: #141414; -} - -DownloadListWidget QFrame#frame { - /* outer box of an entry on the Downloads tab */ - border: 2px solid #141414; -} - -DownloadListWidget QLabel#installLabel { - color: none; -} - -DownloadListWidget QFrame:clicked { - background: #007E7E; -} - -/* compact downloads view */ - -DownloadListWidgetCompact, -DownloadListWidgetCompact QLabel { - /* an entry on the Downloads tab */ - background: #141414; - padding: 4px; -}
\ No newline at end of file diff --git a/src/stylesheets/Paper Dark by 6788.qss b/src/stylesheets/Paper Dark by 6788.qss new file mode 100644 index 00000000..9f4db66f --- /dev/null +++ b/src/stylesheets/Paper Dark by 6788.qss @@ -0,0 +1,970 @@ +/* v4.3 Paper Dark by 6788-00 */ +/* https://6788-00.tumblr.com/ */ + +/* Color Palette */ +/* Background - Main | #242424 */ +/* Background - Content | #141414 */ +/* Background - Alternate | #1C1C1C */ +/* Hover | #3D3D3D */ +/* Selected | #006868 */ + +/* All */ + +* { + color: #D3D3D3; + font-size: 12px; +} + +/* Main Window */ + +QWidget { + /* most of the window */ + background: #242424; + color: #D3D3D3; +} + +QWidget:disabled { + /* disabled parts of the window like the update button when there are no updates */ + background: #242424; + color: #808080; +} + +QAbstractItemView { + /* left and right pane container */ + background: #141414; + alternate-background-color: #1C1C1C; + show-decoration-selected: 1; + selection-background-color: #006868; + selection-color: #FFFFFF; +} + +QAbstractItemView::item { + padding: 1px; +} + +QAbstractItemView::item:hover { + /* rows on left and right pane when moused-over */ + background: #3D3D3D; + color: #FFFFFF; +} + +QAbstractItemView::item:selected { + /* rows on left and right pane when clicked */ + background: #006868; + color: #FFFFFF; +} + +QAbstractScrollArea::corner { + /* corner between where a vertical scrollbar and a horizontal scrollbar meet */ + background: #141414; + border: 2px solid #242424; + border-bottom-right-radius: 6px; + margin: 0px -2px -2px 0px; +} + +QSplitter { + width: 8px; +} + +/* Toolbar */ + +QToolBar { + /* top toolbar; */ + background: #242424; + border: 1px solid #242424; +} + +QToolBar::separator { + /* uncertain, assumed: vertical seperator on toolbar left of the warnings button*/ + background: #242424; + margin: 6px 8px; +} + +QToolButton { + /* toolbar buttons */ + padding: 6px; + border-radius: 10px; + margin: 4px 4px 0px 4px; +} + +QToolButton:hover { + /* toolbar buttons when moused-over; */ + background: #006868; +} + +QToolButton:pressed { + /* toolbar buttons when clicked; */ + background: #006868; +} + +QToolButton:menu-indicator { + /* expandable indicator on toolbar buttons */ + image: url(./Paper/Dark/Arrows/down.svg); + margin: 4px; +} + +/* Toolbar Button Icons */ + +#actionChange_Game { + qproperty-icon: url(./Paper/Dark/Toolbar/instances.svg); +} + +#actionInstallMod { + qproperty-icon: url(./Paper/Dark/Toolbar/archives.svg); +} + +#actionNexus { + qproperty-icon: url(./Paper/Dark/Toolbar/nexus.svg); +} + +#actionAdd_Profile { + qproperty-icon: url(./Paper/Dark/Toolbar/profiles.svg); +} + +#actionModify_Executables { + qproperty-icon: url(./Paper/Dark/Toolbar/executables.svg); +} + +#actionTool { + qproperty-icon: url(./Paper/Dark/Toolbar/tools.svg); +} + +#actionSettings { + qproperty-icon: url(./Paper/Dark/Toolbar/settings.svg); +} + +#actionProblems { + qproperty-icon: url(./Paper/Dark/Toolbar/problems.svg); +} + +#actionUpdate { + qproperty-icon: url(./Paper/Dark/Toolbar/update.svg); +} + +#actionHelp { + qproperty-icon: url(./Paper/Dark/Toolbar/help.svg); +} + +/* Left Pane & File Trees */ + +ModListView, PluginListView { + /* Mods List and Plugins List specifically */ + margin: 2px 0px; +} + +QTreeView { + /* left pane and right pane under QAbstractItemView*/ + border-radius: 6px; +} + +QTreeView::branch:hover { + /* rows on the left pane when moused-over (below QAbstractItemView, i.e. to the left of the checkbox) */ + background: #3A3A3A; + color: #FFFFFF; +} + +QTreeView::branch:selected { + /* rows on the left pane when clicked (below QAbstractItemView, i.e. to the left of the checkbox) */ + background: #006868; + color: #FFFFFF; +} + +QTreeView::branch:closed:has-children:has-siblings, +QTreeView::branch:closed:has-children:!has-siblings { + /* a branch that is closed */ + image: url(./Paper/Dark/Arrows/right.svg); +} + +QTreeView::branch:open:has-children:has-siblings, +QTreeView::branch:open:has-children:!has-siblings { + /* a branch that is open */ + image: url(./Paper/Dark/Arrows/down.svg); +} + +QListView { + /* saves window */ + border-radius: 6px; +} + +QListView::item:hover { + /* a row on the saves tab when moused-over */ + background: #3D3D3D; + color: #FFFFFF; + padding: 2px 0px; +} + +QListView::item:selected { + /* a row on the saves tab when clicked */ + background: #006868; + color: #FFFFFF; + padding: 2px 0px; +} + +QTextEdit { + /* large text fields */ + background: #141414; + border-radius: 6px; +} + +QWebView { + /* Nexus Info window */ + background: #141414; + border-radius: 6px; +} + +/* Group Boxes */ + +QGroupBox { + /* boxes that group multiple elements together (e.g. on Settings) */ + padding: 24px 4px; + border: 2px solid #141414; + border-radius: 10px; +} + +QGroupBox::title { + /* title of group boxes */ + background: transparent; + subcontrol-origin: padding; + subcontrol-position: top left; + padding: 8px; +} + +/* Text Fields */ + +QLineEdit { + /* text fields like NameFilter and directory fields */ + background: #141414; + min-height: 14px; + padding: 2px; + border: 2px solid #141414; + border-radius: 6px; +} + +QLineEdit:hover { + /* text fields when moused-over */ + border: 2px solid #006868; +} + +/* Most Dropdown Menus */ + +QComboBox { + /* dropdown menus */ + background: #141414; + min-height: 20px; + padding-left: 5px; + border: 2px solid #141414; + border-radius: 6px; + margin: 4px 0px; +} + +QComboBox:hover { + /* dropdown menus when moused-over */ + border: 2px solid #006868; +} + +QComboBox:on { + /* dropdown menus when expanded */ + background: #006868; + color: #FFFFFF; + border: 2px solid #006868; +} + +QComboBox::drop-down { + /* area for expandable indicator */ + width: 20px; + subcontrol-origin: padding; + subcontrol-position: top right; + border: none; +} + +QComboBox QAbstractItemView { + /* actual menu that expands */ + background: #141414; + border: 2px solid #242424; + border-radius: 6px; +} + +QComboBox::down-arrow { + /* expandable indicator */ + image: url(./Paper/Dark/Arrows/down.svg); +} + +/* Most Buttons */ + +QPushButton { + /* most buttons */ + background: #141414; + color: #D3D3D3; + min-height: 20px; + padding: 2px 12px; + border-radius: 6px; + margin: 2px 0px; +} + +QPushButton:disabled { + /* most buttons when disabled */ + border: 2px solid #141414; +} + +QPushButton:hover { + /* most buttons when hovered */ + background: #006868; + color: #FFFFFF; +} + +QPushButton:pressed { + /* most buttons when clicked */ + background: #006868; + color: #FFFFFF; +} + +QPushButton::menu-indicator { + /* expandable indicator for most buttons */ + subcontrol-position: right center; + image: url(./Paper/Dark/Arrows/down.svg); + padding: 2px; + margin: 4px 4px; +} + +/* Icons */ + +#listOptionsBtn { + /* Options button */ + qproperty-icon: url(./Paper/Dark/dots.svg); + qproperty-iconSize: 16px; + padding-left: 2px; +} + +#openFolderMenu { + /* Open Folder button */ + qproperty-icon: url(./Paper/Dark/folder.svg); + qproperty-iconSize: 14px; + padding-left: 4px; +} + +#restoreModsButton, +#restoreButton { + /* Restore Backup buttons */ + qproperty-icon: url(./Paper/Dark/restore.svg); + qproperty-iconSize: 14px; +} + +#saveModsButton, +#saveButton { + /* Backup buttons */ + qproperty-icon: url(./Paper/Dark/backup.svg); + qproperty-iconSize: 14px; +} + +#bossButton { + /* Sort button */ + qproperty-icon: url(./Paper/Dark/sort.svg); + qproperty-iconSize: 14px; +} + +#linkButton { + /* Shortcuts button */ + qproperty-icon: url(./Paper/Dark/shortcut.svg); + qproperty-iconSize: 14px; +} + +#refreshButton, +#btnRefreshData, +#btnRefreshDownloads { + /* Refresh buttons */ + qproperty-icon: url(./Paper/Dark/refresh.svg); + qproperty-iconSize: 14px; +} + +#endorseBtn { + /* Endorse button on the Nexus Info tab of the Information window */ + qproperty-icon: url(./Paper/Dark/heart.svg); + qproperty-iconSize: 14px; +} + +#clearCacheButton { + /* Clear Cache button on the Nexus tab of the Settings window */ + qproperty-icon: url(./Paper/Dark/cross.svg); + qproperty-iconSize: 14px; +} + +#deactivateESP, +#activateESP { + /* activate and deactivate ESP buttons */ + background: #141414; +} + +#deactivateESP:hover, +#activateESP:hover { + /* activate and deactivate ESP buttons when moused-over */ + background: #006868; +} + +#deactivateESP { + /* icon for the deactivate ESP button */ + qproperty-icon: url(./Paper/Dark/backup.svg); +} + +#activateESP { + /* icon for the activate ESP button */ + qproperty-icon: url(./Paper/Dark/restore-alt.svg); +} + +/* Run button */ + +#startButton { + /* Run button */ + background: #006868; + color: #FFFFFF; + qproperty-icon: url(./Paper/Dark/run.svg); + qproperty-iconSize: 30px; + padding: 6px; +} + +#startButton:hover { + /* Run button when moused-over*/ + background: #3D3D3D; +} + +/* Scroll Bars */ + +/* Horizontal */ + +QScrollBar:horizontal { + /* horizontal scroll bar */ + background: #141414; + height: 20px; + border: 2px solid #242424; + margin: 0px 23px -2px 23px; +} + +QScrollBar::handle:horizontal { + /* handle for horizontal scroll bars */ + background: #3D3D3D; + min-width: 32px; + border-radius: 6px; + margin: 2px; +} + +QScrollBar::add-line:horizontal { + /* scroll right button */ + background: #141414; + image: url(./Paper/Dark/Arrows/right.svg); + width: 23px; + subcontrol-position: right; + subcontrol-origin: margin; + border: 2px solid #242424; + margin: 0px -2px -2px 0px; +} + +QScrollBar::sub-line:horizontal { + /* scroll left button */ + background: #141414; + image: url(./Paper/Dark/Arrows/left.svg); + width: 23px; + subcontrol-position: left; + subcontrol-origin: margin; + border: 2px solid #242424; + border-bottom-left-radius: 6px; + margin: 0px 0px -2px -2px; +} + +/* Vertical */ + +QScrollBar:vertical { + /* vertical scroll bar */ + background: #141414; + width: 20px; + border: 2px solid #242424; + margin: 23px -2px 23px 0px; +} + +QScrollBar::handle:vertical { + /* handle for vertical scroll bars */ + background: #3D3D3D; + min-height: 32px; + border-radius: 6px; + margin: 2px; +} + +QScrollBar::add-line:vertical { + /* scroll down button */ + background: #141414; + image: url(./Paper/Dark/Arrows/down.svg); + height: 23px; + subcontrol-position: bottom; + subcontrol-origin: margin; + border: 2px solid #242424; + border-bottom-right-radius: 6px; + margin: 0px -2px -2px 0px; +} + +QScrollBar::sub-line:vertical { + /* scroll up button */ + background: #141414; + image: url(./Paper/Dark/Arrows/up.svg); + height: 23px; + subcontrol-position: top; + subcontrol-origin: margin; + border: 2px solid #242424; + border-top-right-radius: 6px; + margin: -2px -2px 0px 0px; +} + +/* Combined */ + +QScrollBar::handle:horizontal:hover, +QScrollBar::handle:vertical:hover, +QScrollBar::add-line:horizontal:hover, +QScrollBar::sub-line:horizontal:hover, +QScrollBar::add-line:vertical:hover, +QScrollBar::sub-line:vertical:hover { + /* buttons and handles when moused-over */ + background: #006868; +} + +QScrollBar::handle:horizontal:pressed, +QScrollBar::handle:vertical:pressed, +QScrollBar::add-line:horizontal:pressed, +QScrollBar::sub-line:horizontal:pressed, +QScrollBar::add-line:vertical:pressed, +QScrollBar::sub-line:vertical:pressed { + /* buttons and handles when clicked */ + background: #006868; +} + +QScrollBar::add-page:horizontal, +QScrollBar::sub-page:horizontal, +QScrollBar::add-page:vertical, +QScrollBar::sub-page:vertical { + /* area on scroll bars where clicking it scrolls to where you clicked */ + background: transparent; +} + +/* Header Rows */ + +QHeaderView { + /* header row (i.e. Mod Name, Flags, Category, etc.) */ + background: #242424; +} + +QHeaderView::section { + /* each section on the header row (i.e. Mod name is one section and Flags another) */ + background: #141414; + color: #D3D3D3; + height: 22px; + padding: 0px 5px; + border: 0px; + border-bottom: 2px solid #242424; + border-right: 2px solid #242424; +} + +QHeaderView::section:first { + /* first section on a header row */ + border-top-left-radius: 6px; +} + +QHeaderView::section:last { + /* last section on a header row */ + border-right: 0px; + border-top-right-radius: 6px; +} + +QHeaderView::section:hover { + /* a section on a header row when hovered */ + background: #3D3D3D; + color: #FFFFFF; +} + +QHeaderView::up-arrow { + /* ascending sort indicator */ + image: url(./Paper/Dark/Arrows/up.svg); + padding-right: 4px; + height: 10px; + width: 10px; +} + +QHeaderView::down-arrow { + /* descending sort indicator */ + image: url(./Paper/Dark/Arrows/down.svg); + padding-right: 4px; + height: 10px; + width: 10px; +} + +/* Right Click Menus, Toolbar Dropdown Menus, & Tooltips */ + +QMenu { + /* right click menu */ + background: #141414; + border: 2px solid #242424; + border-radius: 6px; +} + +QMenu::item { + /* rows on right click menus */ + background: #141414; + padding: 5px 20px 5px 24px; +} + +QMenu::item:selected { + /* rows on right click menus when moused-over (i dunno) */ + background: #006868; + color: #FFFFFF; + border: 0px; + border-radius: 4px; +} + +QMenu::item:disabled { + /* unavailable rows on right click menus */ + background: #242424; + color: #808080; +} + +QMenu::separator { + /* seperators on right click menus */ + height: 2px; + background: #242424; +} + +QMenu::icon { + /* area for icons on right click menus */ + padding: 4px; +} + +QMenu::right-arrow { + /* submenu indicator */ + image: url(./Paper/Dark/Arrows/right.svg); + padding-right: 5px; +} + +QMenu QPushButton { + /* Change Categories and Primary Categories buttons */ + background: #141414; + color: #D3D3D3; + padding: 2px 24px; + text-align: left; + border-radius: 0px; +} + +QMenu QPushButton:hover { + /* Change Categories and Primary Categories buttons when moused-over */ + border-radius: 6px; +} + +QMenu QCheckBox { + /* checkboxes on right click menus (change categories)*/ + background: #141414; + padding: 2px 6px; +} + +QMenu QCheckBox:hover { + /* checkboxes on right click menus when moused-over (change categories) */ + background: #3D3D3D; + color: #FFFFFF; +} + +QMenu QRadioButton { + /* radio buttons on right click menus (primary categories) */ + background: #141414; + padding: 2px 6px; +} + +QToolTip { + /* all tooltips */ + background: #141414; + border: 2px solid #242424; + border-radius: 6px; +} + +/* Progress Bars (Downloads) */ + +QProgressBar { + /* progress bars when downloading */ + background: #141414; + text-align: center; + border: 2px solid #242424; + border-radius: 6px; + margin: 0px 10px; +} + +QProgressBar::chunk { + /* the loading part that moves on progress bars */ + background: #006868; + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} + +/* Right Pane and Tab Bars */ + +QTabWidget::pane { + /* right pane */ + top: 1px; + padding: 2px 2px 10px 2px; + border: 2px solid #141414; + border-radius: 10px; +} + +QTabWidget QAbstractScrollArea::item { + padding: 2px; +} + +QTabWidget::tab-bar { + /* tabs */ + alignment: center; +} + +QTabBar::tab { + /* a tab */ + background: #141414; + color: #141414; + padding: 4px 1em; + border: 2px solid #141414; + margin: 3px 1px; +} + +QTabBar::tab:!selected { + /* a tab that is not clicked */ + background: #141414; + color: #D3D3D3; + border: 2px solid #141414; +} + +QTabBar::tab:disabled { + /* a tab that is disabled */ + background: #242424; + color: #808080; + border: 2px solid transparent; +} + +QTabBar::tab:selected { + /* a tab that is clicked */ + color: #FFFFFF; + background: #006868; + border: 2px solid #006868; +} + +QTabBar::tab:hover { + /* a tab when moused-over */ + color: #FFFFFF; + background: #3D3D3D; + border: 2px solid #3D3D3D; +} + +QTabBar::tab:first { + /* that first tab */ + border-top-left-radius: 10px; + border-bottom-left-radius: 10px; +} + +QTabBar::tab:last { + /* the last tab */ + border-top-right-radius: 10px; + border-bottom-right-radius: 10px; +} + +QTabBar QToolButton { + /* buttons to scroll between more tabs on a tab bar */ + background: #3D3D3D; + padding: 1px; + border-radius: 6px; + margin: 1px; +} + +QTabBar QToolButton:disabled { + /* buttons to scroll on a tab bar when it's unavailable */ + background: transparent; +} + +QLCDNumber { + /* LCD number on the Conflicts tab */ + background: #141414; + color: #006868; + border-radius: 6px; +} + +/* Tables (Configure Mod Categories) */ + +QTableView { + /* a table */ + gridline-color: #242424; + border: 0px; +} + +/* Checkboxes */ + +QTreeView::indicator:unchecked, +QCheckBox::indicator:unchecked, +QGroupBox::indicator:unchecked, +QRadioButton::indicator:unchecked { + /* a checkbox that is unchecked */ + image: url(./Paper/Dark/unchecked.svg); + width: 14px; + height: 14px; +} + +QCheckBox::indicator:unchecked:hover, +QRadioButton::indicator:unchecked:hover { + /* a checkbox that is unchecked when moused-over and clicked */ + image: url(./Paper/Dark/unchecked-alt.svg); +} + +QTreeView::indicator:checked, +QCheckBox::indicator:checked, +QGroupBox::indicator:checked, +QRadioButton::indicator:checked { + /* a checkbox that is checked */ + image: url(./Paper/Dark/check.svg); + width: 14px; + height: 14px; +} + +QTreeView::indicator:checked:selected, +QCheckBox::indicator:checked:hover, +QRadioButton::indicator:checked:hover { + /* a checkbox that is checked when moused-over and clicked */ + image: url(./Paper/Dark/check-alt.svg); +} + +QCheckBox::indicator:disabled { + /* a checkbox that is disabled */ + image: url(./Paper/Dark/unchecked-disabled.svg); +} + +/* Spinboxes */ + +QSpinBox, +QDoubleSpinBox { + /* usually boxes for selecting numbers */ + min-height: 24px; + min-width: 60px; + background: #141414; + padding: 0px 2px; + border: 2px solid #242424; + border-radius: 6px; + margin: 0px -4px; +} + +QSpinBox::up-button, +QDoubleSpinBox::up-button { + /* up button on spinboxes */ + min-height: 28px; + min-width: 20px; + subcontrol-position: center right; + border: 2px solid #242424; + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +QSpinBox::up-arrow, +QDoubleSpinBox::up-arrow { + /* arrow for the up button */ + image: url(./Paper/Dark/Arrows/up.svg); +} + +QSpinBox::up-button:hover, +QDoubleSpinBox::up-button:hover { + /* up button on spinboxes when moused-over */ + background: #3D3D3D; +} + +QSpinBox::down-button, +QDoubleSpinBox::down-button { + /* down button on spinboxes */ + min-height: 28px; + min-width: 20px; + subcontrol-position: center left; + border: 2px solid #242424; + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} + +QSpinBox::down-arrow, +QDoubleSpinBox::down-arrow { + /* arrow for the up button */ + image: url(./Paper/Dark/Arrows/down.svg); +} + +QSpinBox::down-button:hover, +QDoubleSpinBox::down-button:hover { + /* down button on spinboxes when moused-over */ + background: #3D3D3D; +} + +/* Sliders */ + +QSlider::groove { + /* sliders */ + height: 0px; + border: 1px solid #3D3D3D; +} + +QSlider::handle { + /* slider handles */ + background: #141414; + border: 2px solid #3D3D3D; + border-radius: 6px; + margin: -10px; +} + +QSlider::handle:hover { + /* Slider handles when moused-over */ + background: #3D3D3D; +} + +/* Downloads Tab */ + +#downloadTab QAbstractScrollArea { + /* background of the entire downloads tab */ + background: #242424; +} + +DownloadListWidget QFrame, +DownloadListWidgetCompact, +DownloadListWidgetCompact QLabel { + /* an entry on the Downloads tab */ + background: #141414; +} + +DownloadListWidget#frame { + /* outer box of an entry on the Downloads tab */ + border: none; +} + +#installLabel { + /* installed/done label */ + color: none; +} + +/* Compact Downloads View */ + +DownloadListWidgetCompact, +DownloadListWidgetCompact QLabel { + /* an entry on the Downloads tab */ + background: #141414; +} + +/* Categories Filter */ + +#displayCategoriesBtn { + /* Filter button */ + min-width: 12px; +} + +#categoriesList { + /* Categories panel */ + min-width: 200px; + margin-bottom: 4px; +} + +#categoriesGroup { + /* Categories group box */ + padding-bottom: 0px; +} + +/* Fixes */ + +#executablesListBox::item { + /* fixes the black text problem on the Modify Executables window */ + color: #D3D3D3; +}
\ No newline at end of file diff --git a/src/stylesheets/Paper Light by 6788-00.qss b/src/stylesheets/Paper Light by 6788-00.qss deleted file mode 100644 index 5f6e2867..00000000 --- a/src/stylesheets/Paper Light by 6788-00.qss +++ /dev/null @@ -1,541 +0,0 @@ -/* v3.0.1 Paper Light by 6788-00 */ -/* https://6788-00.tumblr.com/ */ - -/* Main Window */ - -QWidget { - background: #EFEFEF; - color: #000000; -} - -QWidget:disabled { - background: #EFEFEF; - color: #6C6C6C; -} - -QMainWindow::separator { - border: 0px; -} - -QAbstractItemView { - background: #FFFFFF; - alternate-background-color: #F6F6F6; - show-decoration-selected: 1; - selection-background-color: #008484; - selection-color: #FFFFFF; -} - -QAbstractItemView::item:hover { - background: #008F8F; - color: #FFFFFF; -} - -QAbstractItemView::item:selected { - background: #008484; - color: #FFFFFF; -} - -QAbstractScrollArea::corner { - background: #FFFFFF; - border: 2px solid #EFEFEF; - border-bottom-right-radius: 6px; - margin: 0px -2px -2px 0px; -} - -/* Toolbar */ - -QToolBar { - background: #EFEFEF; - border: 1px solid #EFEFEF; -} - -QToolBar::separator { - background: #EFEFEF; -} - -QToolButton { - padding: 4px 6px; - border-radius: 6px; - margin: 4px 4px 0px 4px; -} - -QToolButton:hover { - background: #008F8F; -} - -QToolButton:pressed { - background: #008484; -} - -/* Left Pane & File Trees */ - -QTreeView { - border-radius: 6px; -} - -QTreeView::branch:hover { - background: #008F8F; - color: #FFFFFF; -} - -QTreeView::branch:selected { - background: #008484; - color: #FFFFFF; -} - -QTreeView::item:selected { - background: #008484; - color: #FFFFFF; -} - -QTreeView::branch:has-children:!has-siblings:closed, -QTreeView::branch:closed:has-children:has-siblings { - image: url(:/stylesheet/branch-closed.png); - border: 0px; -} - -QTreeView::branch:open:has-children:!has-siblings, -QTreeView::branch:open:has-children:has-siblings { - image: url(:/stylesheet/branch-open.png); - border: 0px; -} - -QListView { - border-radius: 6px; -} - -QListView::item:hover { - background: #008F8F; - color: #FFFFFF; -} - -QListView::item:selected { - background: #008484; - color: #FFFFFF; -} - -QTextEdit { - background: #FFFFFF; - border-radius: 6px; -} - -QWebView { - background: #FFFFFF; - border-radius: 6px; -} - -/* Group Boxes */ - -QGroupBox { - padding: 24px 4px; - border: 2px solid #FFFFFF; - border-radius: 10px; -} - -QGroupBox::title { - subcontrol-origin: padding; - subcontrol-position: top left; - padding: 8px; -} - -/* Search Boxes */ - -QLineEdit { - background: #FFFFFF; - min-height: 14px; - padding: 2px; - border: 2px solid #FFFFFF; - border-radius: 6px; - margin-top: 3px; -} - -QLineEdit:hover { - border: 2px solid #008F8F; -} - -/* Most Dropdowns */ - -QComboBox { - background: #FFFFFF; - min-height: 20px; - padding-left: 5px; - border: 2px solid #FFFFFF; - border-radius: 6px; - margin: 3px 0px 1px 0px; -} - -QComboBox:hover { - border: 2px solid #008F8F; -} - -QComboBox:on { - background: #008484; - color: #FFFFFF; - border: 2px solid #008484; -} - -QComboBox::drop-down { - width: 20px; - subcontrol-origin: padding; - subcontrol-position: top right; - border: none; -} - -QComboBox QAbstractItemView { - border: 0px; -} - -QComboBox::down-arrow { - image: url(:/stylesheet/combobox-down.png); -} - -/* Most Buttons */ - -QPushButton { - background: #FFFFFF; - color: #000000; - min-height: 18px; - padding: 2px 12px; - border-radius: 6px; -} - -QPushButton:hover { - background: #008F8F; - color: #FFFFFF; -} - -QPushButton:pressed { - background: #008484; - color: #FFFFFF; -} - -QPushButton:checked { - background: #008484; - color: #FFFFFF; - margin: 4px; -} - -/* Scroll Bars */ - -/* Horizontal */ - -QScrollBar:horizontal { - background: #FFFFFF; - height: 20px; - border: 2px solid #EFEFEF; - margin: 0px 23px -2px 23px; -} - -QScrollBar::handle:horizontal { - background: #EFEFEF; - min-width: 32px; - border-radius: 6px; - margin: 2px; -} - -QScrollBar::add-line:horizontal { - background: #FFFFFF; - width: 23px; - subcontrol-position: right; - subcontrol-origin: margin; - border: 2px solid #EFEFEF; - margin: 0px -2px -2px 0px; -} - -QScrollBar::sub-line:horizontal { - background: #FFFFFF; - width: 23px; - subcontrol-position: left; - subcontrol-origin: margin; - border: 2px solid #EFEFEF; - border-bottom-left-radius: 6px; - margin: 0px 0px -2px -2px; -} - -/* Vertical */ - -QScrollBar:vertical { - background: #FFFFFF; - width: 20px; - border: 2px solid #EFEFEF; - margin: 23px -2px 23px 0px; -} - -QScrollBar::handle:vertical { - background: #EFEFEF; - min-height: 32px; - border-radius: 6px; - margin: 2px; -} - -QScrollBar::add-line:vertical { - background: #FFFFFF; - height: 23px; - subcontrol-position: bottom; - subcontrol-origin: margin; - border: 2px solid #EFEFEF; - border-bottom-right-radius: 6px; - margin: 0px -2px -2px 0px; -} - -QScrollBar::sub-line:vertical { - background: #FFFFFF; - height: 23px; - subcontrol-position: top; - subcontrol-origin: margin; - border: 2px solid #EFEFEF; - border-top-right-radius: 6px; - margin: -2px -2px 0px 0px; -} - -/* Combined */ - -QScrollBar::handle:horizontal:hover, -QScrollBar::handle:vertical:hover, -QScrollBar::add-line:horizontal:hover, -QScrollBar::sub-line:horizontal:hover, -QScrollBar::add-line:vertical:hover, -QScrollBar::sub-line:vertical:hover { - background: #008F8F; -} - -QScrollBar::handle:horizontal:pressed, -QScrollBar::handle:vertical:pressed, -QScrollBar::add-line:horizontal:pressed, -QScrollBar::sub-line:horizontal:pressed, -QScrollBar::add-line:vertical:pressed, -QScrollBar::sub-line:vertical:pressed { - background: #008484; -} - -QScrollBar::add-page:horizontal, -QScrollBar::sub-page:horizontal, -QScrollBar::add-page:vertical, -QScrollBar::sub-page:vertical { - background: transparent; -} - -QScrollBar::up-arrow:vertical, -QScrollBar::right-arrow:horizontal, -QScrollBar::down-arrow:vertical, -QScrollBar::left-arrow:horizontal { - height: 1px; - width: 1px; - border: 1px solid #EFEFEF; -} - -/* Header Rows */ - -QHeaderView { - background: #EFEFEF; -} - -QHeaderView::section { - background: #FFFFFF; - color: #000000; - height: 22px; - padding: 0px 5px; - border: 0px; - border-bottom: 2px solid #EFEFEF; - border-right: 2px solid #EFEFEF; -} - -QHeaderView::section:first { - border-top-left-radius: 6px; -} - -QHeaderView::section:last { - border-right: 0px; - border-top-right-radius: 6px; -} - -QHeaderView::section:hover { - background: #008F8F; - color: #FFFFFF; -} - -QHeaderView::down-arrow { - padding-right: 4px; - height: 10px; - width: 10px; -} - -/* Context Menus, Toolbar Dropdowns, & Tooltips */ - -QMenu { - background: #FFFFFF; - selection-color: #FFFFFF; - border: 0px; -} - -QMenu::item { - background: #FFFFFF; - selection-background-color: #008F8F; - padding: 4px 20px; -} - -QMenu::item:selected { - background: #008F8F; - color: #FFFFFF; -} - -QMenu::item:disabled { - background: #FFFFFF; - color: #6C6C6C; -} - -QMenu::separator { - background: #EFEFEF; - height: 2px; -} - -QMenu::icon { - margin: 1px; -} - -QToolTip { - background: #FFFFFF; - color: #000000; - padding: 1px; - border: 0px; -} - -/* Progress Bars (Downloads) */ - -QProgressBar { - background: #FFFFFF; - text-align: center; - border: 0px; - border-radius: 6px; - margin: 0px 10px; -} - -QProgressBar::chunk { - background: #008F8F; - border-top-left-radius: 6px; - border-bottom-left-radius: 6px; -} - -/* Right Pane and Tab Bars */ - -QTabWidget::pane { - top: 1px; - padding: 2px 2px 10px 2px; - border: 2px solid #FFFFFF; - border-radius: 10px; -} - -QTabWidget::tab-bar { - alignment: center; -} - -QTabBar::tab { - background: #FFFFFF; - color: #000000; - padding: 4px 1em; - border: 1px solid #EFEFEF; - border-top: 0px; - border-bottom: 0px; -} - -QTabBar::tab:!selected { - background: #FFFFFF; - color: #000000; -} - -QTabBar::tab:disabled { - background: #EFEFEF; - color: #6C6C6C; -} - -QTabBar::tab:selected { - background: #008484; - color: #FFFFFF; - -} - -QTabBar::tab:!selected:hover { - background: #008484; - color: #FFFFFF; -} - -QTabBar::tab:first { - border-top-left-radius: 10px; - border-bottom-left-radius: 10px; -} - -QTabBar::tab:last { - border-top-right-radius: 10px; - border-bottom-right-radius: 10px; -} - -QTabBar QToolButton { - background: #008F8F; - padding: 1px; - border-radius: 6px; - margin: 1px; -} - -QTabBar QToolButton:disabled { - background: transparent; -} - -/* Sliders (Configurator) */ - -/* QSlider::groove:horizontal { - background: #FFFFFF; - height: 1px; - border: 1px solid #FFFFFF; -} - -QSlider::handle:horizontal { - background: #008F8F; - width: 10px; - border: 2px solid #008F8F; - border-radius: 6px; - margin: -10px 0px; -} - -QSlider::handle:horizontal:hover { - background: #008484; - border: 2px solid #008484; -} */ - -/* Tables (Configure Mod Categories) */ - -QTableView { - gridline-color: #EFEFEF; - border: 0px; -} - -/* downloads tab */ - -QWidget#downloadTab QAbstractScrollArea { - /* background of the entire downloads tab */ - background: #EFEFEF; -} - -DownloadListWidget QFrame, -DownloadListWidgetCompact, -DownloadListWidgetCompact QLabel { - /* an entry on the Downloads tab */ - background: #FFFFFF; -} - -DownloadListWidget QFrame#frame { - /* outer box of an entry on the Downloads tab */ - border: 2px solid #FFFFFF; -} - -DownloadListWidget QLabel#installLabel { - color: none; -} - -/* compact downloads view */ - -DownloadListWidgetCompact, -DownloadListWidgetCompact QLabel { - /* an entry on the Downloads tab */ - background: #FFFFFF; - padding: 4px; -}
\ No newline at end of file diff --git a/src/stylesheets/Paper Light by 6788.qss b/src/stylesheets/Paper Light by 6788.qss new file mode 100644 index 00000000..36585291 --- /dev/null +++ b/src/stylesheets/Paper Light by 6788.qss @@ -0,0 +1,973 @@ +/* v4.3 Paper Light by 6788-00 */ +/* https://6788-00.tumblr.com/ */ + +/* Color Palette */ +/* Background - Main | #EBEBEB */ +/* Background - Content | #FFFFFF */ +/* Background - Alternate | #F6F6F6 */ +/* Hover | #C2C2C2 */ +/* Selected | #008484 */ + +/* All */ + +* { + color: #000000; + font-size: 12px; +} + +/* Main Window */ + +QWidget { + /* most of the window */ + background: #EBEBEB; + color: #000000; +} + +QWidget:disabled { + /* disabled parts of the window like the update button when there are no updates */ + background: #EBEBEB; + color: #808080; +} + +QAbstractItemView { + /* left and right pane container */ + background: #FFFFFF; + alternate-background-color: #F6F6F6; + show-decoration-selected: 1; + selection-background-color: #008484; + selection-color: #FFFFFF; +} + +QAbstractItemView::item:hover { + /* rows on left and right pane when moused-over */ + background: #C2C2C2; +} + +QAbstractItemView::item:selected { + /* rows on left and right pane when clicked */ + background: #008484; + color: #FFFFFF; +} + +QAbstractScrollArea::corner { + /* corner between where a vertical scrollbar and a horizontal scrollbar meet */ + background: #FFFFFF; + border: 2px solid #EBEBEB; + border-bottom-right-radius: 6px; + margin: 0px -2px -2px 0px; +} + +QSplitter { + width: 8px; +} + +/* Toolbar */ + +QToolBar { + /* top toolbar; */ + background: #EBEBEB; + border: 1px solid #EBEBEB; +} + +QToolBar::separator { + /* uncertain, assumed: vertical seperator on toolbar left of the warnings button*/ + background: #EBEBEB; + margin: 6px 8px; +} + +QToolButton { + /* toolbar buttons */ + padding: 6px; + border-radius: 10px; + margin: 4px 4px 0px 4px; +} + +QToolButton:hover { + /* toolbar buttons when moused-over; */ + background: #008484; +} + +QToolButton:pressed { + /* toolbar buttons when clicked; */ + background: #008484; +} + +QToolButton:menu-indicator { + /* expandable indicator on toolbar buttons */ + image: url(./Paper/Light/Arrows/down.svg); + margin: 4px; +} + +/* Toolbar Button Icons */ + +#actionChange_Game { + qproperty-icon: url(./Paper/Light/Toolbar/instances.svg); +} + +#actionInstallMod { + qproperty-icon: url(./Paper/Light/Toolbar/archives.svg); +} + +#actionNexus { + qproperty-icon: url(./Paper/Light/Toolbar/nexus.svg); +} + +#actionAdd_Profile { + qproperty-icon: url(./Paper/Light/Toolbar/profiles.svg); +} + +#actionModify_Executables { + qproperty-icon: url(./Paper/Light/Toolbar/executables.svg); +} + +#actionTool { + qproperty-icon: url(./Paper/Light/Toolbar/tools.svg); +} + +#actionSettings { + qproperty-icon: url(./Paper/Light/Toolbar/settings.svg); +} + +#actionProblems { + qproperty-icon: url(./Paper/Light/Toolbar/problems.svg); +} + +#actionUpdate { + qproperty-icon: url(./Paper/Light/Toolbar/update.svg); +} + +#actionHelp { + qproperty-icon: url(./Paper/Light/Toolbar/help.svg); +} + +/* Left Pane & File Trees */ + +ModListView, PluginListView { + /* Mods List and Plugins List specifically */ + margin: 4px 0px; +} + +QTreeView { + /* left pane and right pane under QAbstractItemView*/ + border-radius: 6px; +} + +QTreeView::branch:hover { + /* rows on the left pane when moused-over (below QAbstractItemView, i.e. to the left of the checkbox) */ + background: #C2C2C2; + color: #FFFFFF; +} + +QTreeView::branch:selected { + /* rows on the left pane when clicked (below QAbstractItemView, i.e. to the left of the checkbox) */ + background: #008484; + color: #FFFFFF; +} + +QTreeView::item:selected { + /* rows on the left pane when selected */ + background: #008484; + color: #FFFFFF; +} + +QTreeView::branch:closed:has-children:has-siblings, +QTreeView::branch:closed:has-children:!has-siblings { + /* a branch that is closed */ + image: url(./Paper/Light/Arrows/right.svg); +} + +QTreeView::branch:open:has-children:has-siblings, +QTreeView::branch:open:has-children:!has-siblings { + /* a branch that is open */ + image: url(./Paper/Light/Arrows/down.svg); +} + +QListView { + /* saves window */ + border-radius: 6px; +} + +QListView::item { + /* Increases the line height of the Saves tab */ + padding: 2px 0px; +} + +QListView::item:hover { + /* uncertain, assumed: rows on the saves window when moused-over */ + background: #C2C2C2; + padding: 2px 0px; +} + +QListView::item:selected { + /*uncertain, assumed: rows on the saves window when clicked */ + background: #008484; + color: #FFFFFF; + padding: 2px 0px; +} + +QTextEdit { + /* large text fields */ + background: #FFFFFF; + border-radius: 6px; +} + +QWebView { + /* Nexus Info window */ + background: #FFFFFF; + border-radius: 6px; +} + +/* Group Boxes */ + +QGroupBox { + /* boxes that group multiple elements together (e.g. on Settings) */ + padding: 24px 4px; + border: 2px solid #FFFFFF; + border-radius: 10px; +} + +QGroupBox::title { + /* title of group boxes */ + background: transparent; + subcontrol-origin: padding; + subcontrol-position: top left; + padding: 8px; +} + +/* Text Fields */ + +QLineEdit { + /* text fields like NameFilter and directory fields */ + background: #FFFFFF; + min-height: 14px; + padding: 2px; + border: 2px solid #FFFFFF; + border-radius: 6px; +} + +QLineEdit:hover { + /* text fields when moused-over */ + border: 2px solid #008484; +} + +/* Most Dropdown Menus */ + +QComboBox { + /* dropdown menus */ + background: #FFFFFF; + min-height: 20px; + padding-left: 5px; + border: 2px solid #FFFFFF; + border-radius: 6px; + margin: 4px 0px; +} + +QComboBox:hover { + /* dropdown menus when moused-over */ + border: 2px solid #008484; +} + +QComboBox:on { + /* dropdown menus when expanded */ + background: #008484; + color: #FFFFFF; + border: 2px solid #008484; +} + +QComboBox::drop-down { + /* area for expandable indicator */ + width: 20px; + subcontrol-origin: padding; + subcontrol-position: top right; + border: none; +} + +QComboBox QAbstractItemView { + /* actual menu that expands */ + background: #FFFFFF; + border: 2px solid #EBEBEB; + border-radius: 6px; +} + +QComboBox::down-arrow { + /* expandable indicator */ + image: url(./Paper/Light/Arrows/down.svg); +} + +/* Most Buttons */ + +QPushButton { + /* most buttons */ + background: #FFFFFF; + color: #000000; + min-height: 20px; + padding: 2px 12px; + border-radius: 6px; +} + +QPushButton:disabled { + /* most buttons when disabled */ + border: 2px solid #FFFFFF; +} + +QPushButton:hover { + /* most buttons when hovered */ + background: #008484; + color: #FFFFFF; +} + +QPushButton:pressed { + /* most buttons when clicked */ + background: #008484; + color: #FFFFFF; +} + +QPushButton::menu-indicator { + /* expandable indicator for most buttons */ + subcontrol-position: right center; + image: url(./Paper/Light/Arrows/down.svg); + padding: 2px; + margin: 4px 4px; +} + +/* Icons */ + +#listOptionsBtn { + /* Options button */ + qproperty-icon: url(./Paper/Light/dots.svg); + qproperty-iconSize: 16px; + padding-left: 2px; +} + +#openFolderMenu { + /* Open Folder button */ + qproperty-icon: url(./Paper/Light/folder.svg); + qproperty-iconSize: 14px; + padding-left: 4px; +} + +#restoreModsButton, +#restoreButton { + /* Restore Backup buttons */ + qproperty-icon: url(./Paper/Light/restore.svg); + qproperty-iconSize: 14px; +} + +#saveModsButton, +#saveButton { + /* Backup buttons */ + qproperty-icon: url(./Paper/Light/backup.svg); + qproperty-iconSize: 14px; +} + +#bossButton { + /* Sort button */ + qproperty-icon: url(./Paper/Light/sort.svg); + qproperty-iconSize: 14px; +} + +#linkButton { + /* Shortcuts button */ + qproperty-icon: url(./Paper/Light/shortcut.svg); + qproperty-iconSize: 14px; +} + +#refreshButton, +#btnRefreshData, +#btnRefreshDownloads { + /* Refresh buttons */ + qproperty-icon: url(./Paper/Light/refresh.svg); + qproperty-iconSize: 14px; +} + +#endorseBtn { + /* Endorse button on the Nexus Info tab of the Information window */ + qproperty-icon: url(./Paper/Light/heart.svg); + qproperty-iconSize: 14px; +} + +#clearCacheButton { + /* Clear Cache button on the Nexus tab of the Settings window */ + qproperty-icon: url(./Paper/Light/cross.svg); + qproperty-iconSize: 14px; +} + +#deactivateESP, +#activateESP { + /* activate and deactivate ESP buttons */ + background: #FFFFFF; +} + +#deactivateESP:hover, +#activateESP:hover { + /* activate and deactivate ESP buttons when moused-over */ + background: #008484; +} + +#deactivateESP { + /* icon for the deactivate ESP button */ + qproperty-icon: url(./Paper/Light/backup.svg); +} + +#activateESP { + /* icon for the activate ESP button */ + qproperty-icon: url(./Paper/Light/restore-alt.svg); +} + +/* Run button */ + +#startButton { + /* Run button */ + background: #008484; + color: #FFFFFF; + qproperty-icon: url(./Paper/Light/run.svg); + qproperty-iconSize: 30px; + padding: 6px; +} + +#startButton:hover { + /* Run button when moused-over*/ + background: #C2C2C2; +} + +/* Scroll Bars */ + +/* Horizontal */ + +QScrollBar:horizontal { + /* horizontal scroll bar */ + background: #FFFFFF; + height: 20px; + border: 2px solid #EBEBEB; + margin: 0px 23px -2px 23px; +} + +QScrollBar::handle:horizontal { + /* handle for horizontal scroll bars */ + background: #C2C2C2; + min-width: 32px; + border-radius: 6px; + margin: 2px; +} + +QScrollBar::add-line:horizontal { + /* scroll right button */ + background: #FFFFFF; + image: url(./Paper/Light/Arrows/right.svg); + width: 23px; + subcontrol-position: right; + subcontrol-origin: margin; + border: 2px solid #EBEBEB; + margin: 0px -2px -2px 0px; +} + +QScrollBar::sub-line:horizontal { + /* scroll left button */ + background: #FFFFFF; + image: url(./Paper/Light/Arrows/left.svg); + width: 23px; + subcontrol-position: left; + subcontrol-origin: margin; + border: 2px solid #EBEBEB; + border-bottom-left-radius: 6px; + margin: 0px 0px -2px -2px; +} + +/* Vertical */ + +QScrollBar:vertical { + /* vertical scroll bar */ + background: #FFFFFF; + width: 20px; + border: 2px solid #EBEBEB; + margin: 23px -2px 23px 0px; +} + +QScrollBar::handle:vertical { + /* handle for vertical scroll bars */ + background: #C2C2C2; + min-height: 32px; + border-radius: 6px; + margin: 2px; +} + +QScrollBar::add-line:vertical { + /* scroll down button */ + background: #FFFFFF; + image: url(./Paper/Light/Arrows/down.svg); + height: 23px; + subcontrol-position: bottom; + subcontrol-origin: margin; + border: 2px solid #EBEBEB; + border-bottom-right-radius: 6px; + margin: 0px -2px -2px 0px; +} + +QScrollBar::sub-line:vertical { + /* scroll up button */ + background: #FFFFFF; + image: url(./Paper/Light/Arrows/up.svg); + height: 23px; + subcontrol-position: top; + subcontrol-origin: margin; + border: 2px solid #EBEBEB; + border-top-right-radius: 6px; + margin: -2px -2px 0px 0px; +} + +/* Combined */ + +QScrollBar::handle:horizontal:hover, +QScrollBar::handle:vertical:hover, +QScrollBar::add-line:horizontal:hover, +QScrollBar::sub-line:horizontal:hover, +QScrollBar::add-line:vertical:hover, +QScrollBar::sub-line:vertical:hover { + /* buttons and handles when moused-over */ + background: #008484; +} + +QScrollBar::handle:horizontal:pressed, +QScrollBar::handle:vertical:pressed, +QScrollBar::add-line:horizontal:pressed, +QScrollBar::sub-line:horizontal:pressed, +QScrollBar::add-line:vertical:pressed, +QScrollBar::sub-line:vertical:pressed { + /* buttons and handles when clicked */ + background: #008484; +} + +QScrollBar::add-page:horizontal, +QScrollBar::sub-page:horizontal, +QScrollBar::add-page:vertical, +QScrollBar::sub-page:vertical { + /* area on scroll bars where clicking it scrolls to where you clicked */ + background: transparent; +} + +/* Header Rows */ + +QHeaderView { + /* header row (i.e. Mod Name, Flags, Category, etc.) */ + background: #EBEBEB; +} + +QHeaderView::section { + /* each section on the header row (i.e. Mod name is one section and Flags another) */ + background: #FFFFFF; + color: #000000; + height: 22px; + padding: 0px 5px; + border: 0px; + border-bottom: 2px solid #EBEBEB; + border-right: 2px solid #EBEBEB; +} + +QHeaderView::section:first { + /* first section on a header row */ + border-top-left-radius: 6px; +} + +QHeaderView::section:last { + /* last section on a header row */ + border-right: 0px; + border-top-right-radius: 6px; +} + +QHeaderView::section:hover { + /* a section on a header row when hovered */ + background: #C2C2C2; +} + +QHeaderView::up-arrow { + /* ascending sort indicator */ + image: url(./Paper/Light/Arrows/up.svg); + padding-right: 4px; + height: 10px; + width: 10px; +} + +QHeaderView::down-arrow { + /* descending sort indicator */ + image: url(./Paper/Light/Arrows/down.svg); + padding-right: 4px; + height: 10px; + width: 10px; +} + +/* Right Click Menus, Toolbar Dropdown Menus, & Tooltips */ + +QMenu { + /* right click menu */ + background: #FFFFFF; + border: 2px solid #EBEBEB; + border-radius: 6px; +} + +QMenu::item { + /* rows on right click menus */ + background: #FFFFFF; + padding: 5px 20px 5px 24px; +} + +QMenu::item:selected { + /* rows on right click menus when moused-over (i dunno) */ + background: #008484; + color: #FFFFFF; + border: 0px; + border-radius: 4px; +} + +QMenu::item:disabled { + /* unavailable rows on right click menus */ + background: #EBEBEB; + color: #808080; +} + +QMenu::separator { + /* seperators on right click menus */ + height: 2px; + background: #EBEBEB; +} + +QMenu::icon { + /* area for icons on right click menus */ + padding: 4px; +} + +QMenu::right-arrow { + /* submenu indicator */ + image: url(./Paper/Light/Arrows/right.svg); + padding-right: 5px; +} + +QMenu QPushButton { + /* Change Categories and Primary Categories buttons */ + background: #FFFFFF; + color: #000000; + padding: 2px 24px; + text-align: left; + border-radius: 0px; +} + +QMenu QPushButton:hover { + /* Change Categories and Primary Categories buttons when moused-over */ + border-radius: 6px; +} + +QMenu QCheckBox { + /* checkboxes on right click menus (change categories)*/ + background: #FFFFFF; + padding: 2px 6px; +} + +QMenu QCheckBox:hover { + /* checkboxes on right click menus when moused-over (change categories) */ + background: #C2C2C2; + color: #FFFFFF; +} + +QMenu QRadioButton { + /* radio buttons on right click menus (primary categories) */ + background: #FFFFFF; + padding: 2px 6px; +} + +QToolTip { + /* all tooltips */ + background: #FFFFFF; + border: 2px solid #EBEBEB; + border-radius: 6px; +} + +/* Progress Bars (Downloads) */ + +QProgressBar { + /* progress bars when downloading */ + background: #FFFFFF; + text-align: center; + border: 0px; + border-radius: 6px; + margin: 0px 10px; +} + +QProgressBar::chunk { + /* the loading part that moves on progress bars */ + background: #C2C2C2; + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} + +/* Right Pane and Tab Bars */ + +QTabWidget::pane { + /* right pane */ + top: 1px; + padding: 2px 2px 10px 2px; + border: 2px solid #FFFFFF; + border-radius: 10px; +} + +QTabWidget QAbstractScrollArea::item { + padding: 2px; +} + +QTabWidget::tab-bar { + /* tabs */ + alignment: center; +} + +QTabBar::tab { + /* a tab */ + background: #FFFFFF; + color: #000000; + padding: 4px 1em; + border: 2px solid #FFFFFF; + margin: 3px 1px; +} + +QTabBar::tab:!selected { + /* a tab that is not clicked */ + background: #FFFFFF; + color: #000000; + border: 2px solid #FFFFFF; +} + +QTabBar::tab:disabled { + /* a tab that is disabled */ + background: #EBEBEB; + color: #808080; + border: 2px solid transparent; +} + +QTabBar::tab:selected { + /* a tab that is clicked */ + color: #FFFFFF; + background: #008484; + border: 2px solid #008484; +} + +QTabBar::tab:hover { + /* a tab when moused-over */ + background: #C2C2C2; + color: #000000; + border: 2px solid #C2C2C2; +} + +QTabBar::tab:first { + /* that first tab */ + border-top-left-radius: 10px; + border-bottom-left-radius: 10px; +} + +QTabBar::tab:last { + /* the last tab */ + border-top-right-radius: 10px; + border-bottom-right-radius: 10px; +} + +QTabBar QToolButton { + /* buttons to scroll between more tabs on a tab bar */ + background: #C2C2C2; + padding: 1px; + border-radius: 6px; + margin: 1px; +} + +QTabBar QToolButton:disabled { + /* buttons to scroll on a tab bar when it's unavailable */ + background: transparent; +} + +QLCDNumber { + /* LCD number on the Conflicts tab */ + background: #FFFFFF; + color: #008484; + border-radius: 6px; +} + +/* Tables (Configure Mod Categories) */ + +QTableView { + /* a table */ + gridline-color: #EBEBEB; + border: 0px; +} + +/* Checkboxes */ + +QTreeView::indicator:unchecked, +QCheckBox::indicator:unchecked, +QGroupBox::indicator:unchecked, +QRadioButton::indicator:unchecked { + /* a checkbox that is unchecked */ + image: url(./Paper/Light/unchecked.svg); + width: 14px; + height: 14px; +} + +QCheckBox::indicator:unchecked:hover, +QRadioButton::indicator:unchecked:hover { + /* a checkbox that is unchecked when moused-over and clicked */ + image: url(./Paper/Light/unchecked-hover.svg); +} + +QTreeView::indicator:unchecked:selected { + image: url(./Paper/Light/unchecked-alt.svg); +} + +QTreeView::indicator:checked, +QCheckBox::indicator:checked, +QGroupBox::indicator:checked, +QRadioButton::indicator:checked { + /* a checkbox that is checked */ + image: url(./Paper/Light/check.svg); + width: 14px; + height: 14px; +} + +QCheckBox::indicator:checked:hover, +QRadioButton::indicator:checked:hover { + /* a checkbox that is checked when moused-over and clicked */ + image: url(./Paper/Light/check-alt.svg); +} + +QTreeView::indicator:checked:selected { + image: url(./Paper/Light/check-white.svg); +} + +QCheckBox::indicator:disabled { + /* a checkbox that is disabled */ + image: url(./Paper/Light/unchecked-disabled.svg); +} + +/* Spinboxes */ + +QSpinBox, +QDoubleSpinBox { + /* usually boxes for selecting numbers */ + min-height: 24px; + min-width: 60px; + background: #FFFFFF; + padding: 0px 2px; + border: 2px solid #EBEBEB; + border-radius: 6px; + margin: 0px -4px; +} + +QSpinBox::up-button, +QDoubleSpinBox::up-button { + /* up button on spinboxes */ + min-height: 28px; + min-width: 20px; + subcontrol-position: center right; + border: 2px solid #EBEBEB; + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +QSpinBox::up-arrow, +QDoubleSpinBox::up-arrow { + /* arrow for the up button */ + image: url(./Paper/Light/Arrows/up.svg); +} + +QSpinBox::up-button:hover, +QDoubleSpinBox::up-button:hover { + /* up button on spinboxes when moused-over */ + background: #C2C2C2; +} + +QSpinBox::down-button, +QDoubleSpinBox::down-button { + /* down button on spinboxes */ + min-height: 28px; + min-width: 20px; + subcontrol-position: center left; + border: 2px solid #EBEBEB; + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} + +QSpinBox::down-arrow, +QDoubleSpinBox::down-arrow { + /* arrow for the up button */ + image: url(./Paper/Light/Arrows/down.svg); +} + +QSpinBox::down-button:hover, +QDoubleSpinBox::down-button:hover { + /* down button on spinboxes when moused-over */ + background: #C2C2C2; +} + +/* Sliders */ + +QSlider::groove { + /* sliders */ + height: 0px; + border: 1px solid #008484; +} + +QSlider::handle { + /* slider handles */ + background: #FFFFFF; + border: 2px solid #008484; + border-radius: 6px; + margin: -10px; +} + +QSlider::handle:hover { + /* Slider handles when moused-over */ + background: #008484; +} + +/* Downloads Tab */ + +#downloadTab QAbstractScrollArea { + /* background of the entire downloads tab */ + background: #EBEBEB; +} + +DownloadListWidget QFrame, +DownloadListWidgetCompact, +DownloadListWidgetCompact QLabel { + /* an entry on the Downloads tab */ + background: #FFFFFF; +} + +DownloadListWidget #frame { + /* outer box of an entry on the Downloads tab */ + border: none; +} + +#installLabel { + /* installed/done label */ + color: none; +} + +/* Compact Downloads View */ + +DownloadListWidgetCompact, +DownloadListWidgetCompact QLabel { + /* an entry on the Downloads tab */ + background: #FFFFFF; +} + +/* Categories Filter */ + +#displayCategoriesBtn { + /* Filter button */ + min-width: 12px; +} + +#categoriesList { + /* Categories panel */ + min-width: 200px; + margin-bottom: 4px; +} + +#categoriesGroup { + /* Categories group box */ + padding-bottom: 0px; +}
\ No newline at end of file diff --git a/src/stylesheets/Paper/Automata/Arrows/down.svg b/src/stylesheets/Paper/Automata/Arrows/down.svg new file mode 100644 index 00000000..30f13836 --- /dev/null +++ b/src/stylesheets/Paper/Automata/Arrows/down.svg @@ -0,0 +1,97 @@ +<?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="8" + height="8" + viewBox="0 0 8 8" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="down.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="116.25" + inkscape:cx="4" + inkscape:cy="4" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="4,4" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="4,4" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,-12)"> + <path + style="display:inline;opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:212.1320343;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="M 0,15 2,17 4,19 6,17 8,15 6,13 4,15 2,13 Z" + id="rect3900-0" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/Arrows/left.svg b/src/stylesheets/Paper/Automata/Arrows/left.svg new file mode 100644 index 00000000..97094916 --- /dev/null +++ b/src/stylesheets/Paper/Automata/Arrows/left.svg @@ -0,0 +1,97 @@ +<?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="8" + height="8" + viewBox="0 0 8 8" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="left.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="116.25" + inkscape:cx="4" + inkscape:cy="4" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="4,4" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="4,4" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,-12)"> + <path + style="display:inline;opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:212.1320343;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="M 5,20 3,18 1,16 3,14 5,12 7,14 5,16 7,18 Z" + id="rect3900-0" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/Arrows/right.svg b/src/stylesheets/Paper/Automata/Arrows/right.svg new file mode 100644 index 00000000..5eaa99cf --- /dev/null +++ b/src/stylesheets/Paper/Automata/Arrows/right.svg @@ -0,0 +1,97 @@ +<?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="8" + height="8" + viewBox="0 0 8 8" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="right.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="116.25" + inkscape:cx="4" + inkscape:cy="4" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="4,4" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="4,4" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,-12)"> + <path + style="display:inline;opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:212.1320343;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="M 3,20 5,18 7,16 5,14 3,12 1,14 3,16 1,18 Z" + id="rect3900-0" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/Arrows/up.svg b/src/stylesheets/Paper/Automata/Arrows/up.svg new file mode 100644 index 00000000..5fa569f4 --- /dev/null +++ b/src/stylesheets/Paper/Automata/Arrows/up.svg @@ -0,0 +1,97 @@ +<?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="8" + height="8" + viewBox="0 0 8 8" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="up.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="116.25" + inkscape:cx="4" + inkscape:cy="4" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="4,4" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="4,4" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,-12)"> + <path + style="display:inline;opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:212.1320343;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="m 0,17 2,-2 2,-2 2,2 2,2 -2,2 -2,-2 -2,2 z" + id="rect3900-0" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/Toolbar/archives.svg b/src/stylesheets/Paper/Automata/Toolbar/archives.svg new file mode 100644 index 00000000..c13182c9 --- /dev/null +++ b/src/stylesheets/Paper/Automata/Toolbar/archives.svg @@ -0,0 +1,99 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="archives.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="8.1349342" + inkscape:cx="95.872503" + inkscape:cy="56.896625" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true" + inkscape:lockguides="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="true" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="true" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <path + style="opacity:1;fill:#4e4b42;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + d="m 73.998642,-83.999999 -9.998644,10.001356 H 14.001355 V -4.000001 H 113.99864 V -73.998643 L 104,-83.999999 H 88.999315 Z" + id="path3849" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/Toolbar/executables.svg b/src/stylesheets/Paper/Automata/Toolbar/executables.svg new file mode 100644 index 00000000..6c442f76 --- /dev/null +++ b/src/stylesheets/Paper/Automata/Toolbar/executables.svg @@ -0,0 +1,99 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="executables.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="3.100169" + inkscape:cx="188.48486" + inkscape:cy="-11.491737" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <path + inkscape:connector-curvature="0" + style="display:inline;opacity:1;fill:#4e4b42;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.00000048;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="m 69.224291,-99 v 25.297161 A 57.019516,45.615413 0 0 0 12.206203,-28.088371 57.019516,45.615413 0 0 0 40.038762,11 h 7.071835 A 34.069164,27.255211 0 0 1 35.161239,-9.7379829 34.069164,27.255211 0 0 1 69.224291,-36.979329 v 25.297161 L 115.7938,-55.341082 Z" + id="rect3929" + inkscape:transform-center-x="-6.418094" + inkscape:transform-center-y="3.2118799" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/Toolbar/help.svg b/src/stylesheets/Paper/Automata/Toolbar/help.svg new file mode 100644 index 00000000..2cab3931 --- /dev/null +++ b/src/stylesheets/Paper/Automata/Toolbar/help.svg @@ -0,0 +1,128 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="help.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="4.7258155" + inkscape:cx="76.464409" + inkscape:cy="41.213613" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <circle + style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#4e4b42;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + id="path3848" + cx="64" + cy="-44" + r="60" /> + <g + id="g3871" + transform="translate(0,-1.242582)" + style="stroke-width:1;fill:#4e4b42;fill-opacity:1"> + <path + id="path3851" + d="m 64,-80 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 -6.7e-4,4.11389 3.33402,7.449258 7.44791,7.449426 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 C 71.447743,-76.665387 68.113298,-79.999833 64,-80 Z" + style="opacity:1;fill:#4e4b42;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path3860" + d="m 56.55209,-50.206086 v 34.757418 h 14.89582 v -34.757418 z" + style="opacity:1;fill:#4e4b42;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + <path + style="opacity:1;fill:#4e4b42;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="m 64,-80 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 -6.7e-4,4.11389 3.33402,7.449258 7.44791,7.449426 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 C 71.447743,-76.665387 68.113298,-79.999833 64,-80 Z" + id="path3853" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path3862" + d="m 64,-57.654754 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 -6.7e-4,4.11389 3.33402,7.449258 7.44791,7.449426 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 -1.67e-4,-4.113297 -3.334612,-7.447743 -7.44791,-7.44791 z" + style="opacity:1;fill:#4e4b42;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + <path + style="opacity:1;fill:#4e4b42;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="m 64,-22.897336 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 C 56.55142,-11.335536 59.88611,-8.000168 64,-8 c 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 -1.67e-4,-4.113297 -3.334612,-7.447743 -7.44791,-7.44791 z" + id="path3864" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/Toolbar/instances.svg b/src/stylesheets/Paper/Automata/Toolbar/instances.svg new file mode 100644 index 00000000..4b0cd707 --- /dev/null +++ b/src/stylesheets/Paper/Automata/Toolbar/instances.svg @@ -0,0 +1,98 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="instances.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="3.7735291" + inkscape:cx="64.04823" + inkscape:cy="-33.258287" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <path + style="opacity:1;fill:#4e4b42;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + d="m 43.074486,-84 c -7.191305,0.179697 -13.681107,2.360737 -19.604836,6.184844 l -0.829325,3.561678 -4.167425,3.208112 -5.581697,14.982451 c -5.7982022,15.544107 -18.3828084,44.900541 4.037437,52.0629145 5.467067,-4.389774 11.744564,-10.4769935 18.039776,-16.6021055 3.729503,-3.62877 7.012953,-4.081632 14.160925,-4.081632 h 14.865463 14.865462 c 7.147976,0 10.431426,0.452872 14.160926,4.081632 6.2952,6.125112 12.583088,12.2123315 18.050168,16.6021055 22.42024,-7.1623735 9.83564,-36.5188075 4.03744,-52.0629145 l -5.5921,-14.982451 -4.15702,-3.208112 -0.82933,-3.561678 C 98.606622,-81.639263 92.106422,-83.820123 84.915122,-84 l -5.46211,2.979332 H 63.994804 48.546994 Z m 51.652146,11.766541 c 2.28943,-7.75e-4 4.14597,1.854604 4.14663,4.144028 7.8e-4,2.290441 -1.85618,4.147401 -4.14663,4.146627 -2.28942,-6.62e-4 -4.1448,-1.857203 -4.14402,-4.146627 6.6e-4,-2.288409 1.85562,-4.143366 4.14402,-4.144028 z m -61.453263,4.144028 c 4.578848,-1.12e-4 8.290765,3.711805 8.290653,8.290653 1.13e-4,4.578848 -3.711805,8.290766 -8.290653,8.290655 -4.578848,1.13e-4 -8.290768,-3.711807 -8.290654,-8.290655 -1.12e-4,-4.578848 3.711806,-8.290766 8.290654,-8.290653 z m 53.162613,4.146627 c 2.28943,-7.75e-4 4.14597,1.854603 4.14663,4.144026 7.7e-4,2.290441 -1.85619,4.147403 -4.14663,4.146627 -2.289423,-6.62e-4 -4.144799,-1.857203 -4.144025,-4.146627 6.62e-4,-2.288409 1.855618,-4.143365 4.144025,-4.144026 z m 16.581308,0 c 2.28942,-7.75e-4 4.14596,1.854603 4.14663,4.144026 7.7e-4,2.290441 -1.85619,4.147403 -4.14663,4.146627 -2.28943,-6.62e-4 -4.144798,-1.857203 -4.144028,-4.146627 6.6e-4,-2.288409 1.855618,-4.143365 4.144028,-4.144026 z m -8.290658,8.290654 c 2.28943,-7.75e-4 4.14597,1.854602 4.14663,4.144027 7.8e-4,2.29044 -1.85618,4.147401 -4.14663,4.146626 -2.28942,-6.62e-4 -4.1448,-1.857203 -4.14402,-4.146626 6.6e-4,-2.28841 1.85562,-4.143366 4.14402,-4.144027 z m -48.662414,6.184843 h 5.527101 v 5.527103 h 5.527103 v 5.527102 H 51.591319 V -32.886 h -5.527101 v -5.527102 h -5.527103 v -5.527102 h 5.527103 z m 33.10802,0 c 4.578848,-1.12e-4 8.290764,3.711806 8.290654,8.290654 1.1e-4,4.578848 -3.711806,8.290765 -8.290654,8.290653 -4.578848,1.13e-4 -8.290766,-3.711805 -8.290654,-8.290653 -1.13e-4,-4.578848 3.711806,-8.290767 8.290654,-8.290654 z" + id="path3849" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccscscccccccccccccccccccccccccccccccccccccccccccccccccccccc" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/Toolbar/nexus.svg b/src/stylesheets/Paper/Automata/Toolbar/nexus.svg new file mode 100644 index 00000000..852f0034 --- /dev/null +++ b/src/stylesheets/Paper/Automata/Toolbar/nexus.svg @@ -0,0 +1,122 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="nexus.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="12.991372" + inkscape:cx="76.213845" + inkscape:cy="37.493768" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="108.073,108.073" + inkscape:measure-end="112.737,112.737" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="255" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <path + style="opacity:1;fill:#4e4b42;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.99999952;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + d="m 37.578906,-103.99986 -2.327345,1.09219 c -5.625077,2.65309 -12.341703,6.959572 -18.124217,14.742184 l -1.439062,1.942967 -0.3,2.397657 c -0.727944,5.785703 0.645537,10.927203 2.601562,15.550782 -3.97001,7.523426 -6.539675,15.713366 -6.546095,24.274216 h 0.01176 v 0.06094 c 0.01254,2.097981 0.399663,4.072256 0.646875,6.100783 -3.5620623,4.427533 -7.0313403,9.956846 -7.8375002,17.704685 l -0.2648844,2.554689 1.0921859,2.327343 c 2.6531016,5.6250757 6.9595777,12.341692 14.7421887,18.12422 l 1.94297,1.4390639 2.397656,0.3 c 5.785701,0.727944 10.927203,-0.6455399 15.55078,-2.6015644 7.523428,3.9700084 15.713368,6.539664 24.274217,6.546096 v -0.012 h 0.06094 c 2.097982,-0.0126 4.072257,-0.39966 6.100783,-0.646872 4.427536,3.5620555 9.956847,7.0313275 17.704687,7.8374995 l 2.554687,0.26484 2.327343,-1.092192 C 98.373512,12.254575 105.09014,7.9480995 110.87265,0.1654875 l 1.43672,-1.9429715 0.30236,-2.3976556 c 0.72794,-5.7854267 -0.64555,-10.9269284 -2.60157,-15.5505044 3.97001,-7.523428 6.53967,-15.713368 6.5461,-24.27422 h -0.012 v -0.06094 c -0.0133,-2.097984 -0.39967,-4.072258 -0.64688,-6.100783 3.56206,-4.427535 7.03131,-9.956848 7.8375,-17.704688 L 124,-70.420959 l -1.09219,-2.327345 c -2.6531,-5.625076 -6.95957,-12.341702 -14.74219,-18.124218 l -1.94297,-1.436719 -2.39765,-0.302345 c -5.785706,-0.727943 -10.927203,0.64554 -15.550778,2.601564 -7.523434,-3.970005 -15.713374,-6.539667 -24.274225,-6.546088 v 0.01172 h -0.06094 c -2.097982,0.01266 -4.072255,0.399662 -6.100782,0.646874 -4.427534,-3.562058 -9.956847,-7.031344 -17.704687,-7.837494 z m 1.485937,6.351563 c 0.03984,-7.78e-4 0.07969,-7.78e-4 0.119532,0 0.08844,8.72e-4 0.176806,0.0056 0.264842,0.01406 0.01563,-1.23e-4 0.03128,-1.23e-4 0.04686,0 0.06038,0.0056 0.120558,0.01378 0.180468,0.02344 0.03369,0.0037 0.06016,0.01978 0.09376,0.02344 8.119439,0.924618 13.438311,4.913385 17.695312,8.847652 0.518092,0.475264 0.857314,1.113992 0.960938,1.809374 1.846847,-0.259602 3.708531,-0.399736 5.573432,-0.419528 7.414774,0.0056 14.704137,1.913317 21.171093,5.540624 3.592503,-2.496611 7.615515,-4.335787 12.384376,-4.79531 1.744997,-0.168149 3.586634,-0.159114 5.503124,0.082 0.5255,0.06779 1.0245,0.270451 1.44845,0.588283 6.86031,5.097232 10.33844,10.548846 12.76641,15.658591 0.0245,0.05156 0.0622,0.100836 0.0867,0.152346 0.0157,0.04031 0.0306,0.08093 0.0445,0.121879 0.0412,0.09035 0.0779,0.182649 0.11015,0.276564 0,0.0029 0,0.0063 0,0.0094 4e-5,0.0086 4e-5,0.01718 0,0.02577 0.0284,0.09024 0.0527,0.18174 0.0727,0.274217 0.0197,0.09143 0.0355,0.18371 0.0469,0.276565 1e-5,0.0079 1e-5,0.01562 0,0.02344 0.005,0.06 0.0108,0.120187 0.0141,0.180468 7.7e-4,0.03984 7.7e-4,0.07969 0,0.119532 -8.7e-4,0.08844 -0.005,0.176808 -0.0141,0.264844 1.2e-4,0.01563 1.2e-4,0.03125 0,0.04685 -0.008,0.06038 -0.0139,0.12056 -0.0233,0.180468 -0.004,0.03369 -0.0199,0.06016 -0.0234,0.09376 -0.92463,8.119438 -4.91339,13.438312 -8.84766,17.695313 -0.47526,0.51809 -1.114,0.857312 -1.80939,0.960935 0.25962,1.846853 0.39976,3.708535 0.41955,5.573439 -0.005,7.414773 -1.91333,14.704135 -5.54064,21.171093 2.49662,3.592503 4.33578,7.615515 4.79533,12.384375 0.16814,1.7449932 0.1591,3.586632 -0.0819,5.5031256 -0.0677,0.5254956 -0.27045,1.0244952 -0.58828,1.4484372 -5.09716,6.8603052 -10.548768,10.3384447 -15.658515,12.7664047 -0.05156,0.02448 -0.100836,0.06228 -0.152342,0.08676 -0.04031,0.01572 -0.08092,0.0306 -0.12188,0.04452 -0.09035,0.04116 -0.182648,0.07788 -0.276562,0.11016 -0.0031,0 -0.0063,0 -0.0094,0 -0.0086,3.5e-5 -0.01718,3.5e-5 -0.02577,0 -0.09024,0.02844 -0.181741,0.05268 -0.274216,0.07272 -0.09143,0.0198 -0.183711,0.03552 -0.276563,0.04692 -0.0079,2.4e-5 -0.01563,2.4e-5 -0.02344,0 -0.06,0.006 -0.120186,0.0108 -0.180468,0.01404 -0.03984,7.8e-4 -0.0797,7.8e-4 -0.119532,0 -0.08844,-8.64e-4 -0.176806,-0.006 -0.264846,-0.01404 -0.01563,1.2e-4 -0.03128,1.2e-4 -0.04686,0 -0.06037,-0.006 -0.120559,-0.0138 -0.180469,-0.0234 -0.03369,-0.0036 -0.06014,-0.0198 -0.09376,-0.0234 C 80.110654,8.6632245 74.79178,4.6744608 70.534779,0.740188 c -0.51809,-0.47526 -0.857313,-1.113984 -0.960936,-1.8093745 -1.847084,0.259404 -3.708765,0.3995425 -5.573668,0.4193305 -7.414776,-0.006 -14.704135,-1.9133172 -21.171094,-5.5406236 -3.592503,2.4966096 -7.615515,4.3357863 -12.384377,4.7953119 -1.744993,0.1681465 -3.586632,0.1591105 -5.503122,-0.082008 -0.525498,-0.067788 -1.024497,-0.2704523 -1.448438,-0.5882844 -6.860299,-5.0972295 -10.338443,-10.5488439 -12.766408,-15.6585929 -0.0245,-0.05156 -0.06234,-0.10086 -0.08672,-0.152343 -0.0157,-0.0403 -0.03056,-0.08095 -0.04453,-0.12188 -0.04117,-0.09035 -0.07795,-0.182646 -0.11016,-0.276563 -6e-6,-0.0031 -6e-6,-0.0063 0,-0.0094 -3.6e-5,-0.0086 -3.6e-5,-0.01718 0,-0.02577 -0.02843,-0.09024 -0.05268,-0.181742 -0.07265,-0.274218 -0.01984,-0.09143 -0.03547,-0.183709 -0.04685,-0.276562 -3.1e-5,-0.0077 -3.1e-5,-0.01562 0,-0.02344 -0.0067,-0.06 -0.01116,-0.120186 -0.0141,-0.180469 -7.76e-4,-0.03984 -7.76e-4,-0.07969 0,-0.119532 8.7e-4,-0.08844 0.0053,-0.176808 0.0141,-0.264847 -1.19e-4,-0.01563 -1.19e-4,-0.03125 0,-0.04685 0.006,-0.06037 0.0138,-0.120559 0.02344,-0.180469 0.0037,-0.03369 0.01981,-0.06014 0.02344,-0.09376 0.924627,-8.119438 4.91339,-13.438313 8.847658,-17.695312 0.475263,-0.518093 1.113993,-0.857315 1.809373,-0.960938 -0.259589,-1.846868 -0.399724,-3.708551 -0.419516,-5.573451 0.0056,-7.414775 1.913317,-14.704137 5.540624,-21.171094 -2.49661,-3.592502 -4.335787,-7.615515 -4.79531,-12.384377 -0.168149,-1.744994 -0.159113,-3.58663 0.082,-5.503124 0.06779,-0.525498 0.270452,-1.024496 0.588283,-1.448437 5.097232,-6.860299 10.548845,-10.338443 15.658591,-12.766403 0.05156,-0.02447 0.100837,-0.06234 0.152347,-0.08672 0.04031,-0.01575 0.08093,-0.03056 0.121878,-0.04453 0.09035,-0.04116 0.182646,-0.07791 0.276563,-0.110157 0.0029,0 0.0063,0 0.0094,0 0.0086,-3.7e-5 0.01718,-3.7e-5 0.02578,0 0.09024,-0.02841 0.181741,-0.05269 0.274218,-0.07266 0.09143,-0.01987 0.183711,-0.03544 0.276563,-0.04687 0.0077,-2.8e-5 0.01563,-2.8e-5 0.02344,0 0.06,-0.0066 0.120186,-0.01116 0.180468,-0.01416 z m 0.119532,3.070311 c -4.918893,2.320027 -9.830756,5.400922 -14.6625,11.903905 -0.106116,0.843338 -0.161184,1.665537 -0.171096,2.467968 -0.0098,0.802433 0.02693,1.584662 0.100776,2.350782 1.033521,10.725648 10.216452,17.923996 18.292968,25.258593 l -3.764063,4.246876 21.255469,-0.131254 -2.578125,-20.934377 -4.446092,5.025 c -7.369823,-8.23868 -18.074776,-20.906037 -14.02734,-30.187495 z m 3.009373,0.623437 c -0.04253,0.205977 -0.106176,0.407033 -0.189841,0.599999 -0.355764,0.815838 -0.552587,1.702983 -0.602346,2.660157 -0.01586,0.305199 -0.01586,0.61855 0,0.9375 0.111036,2.232626 0.98277,4.789133 2.3625,7.502343 3.563011,-1.890229 7.372419,-3.27389 11.317968,-4.110937 l 0.3,-0.119533 c -3.54753,-3.278554 -7.503737,-6.172443 -13.188279,-7.46953 z m 12.2625,4.582031 -0.215624,0.07031 -0.01176,0.02344 c 0.08105,-0.01726 0.146146,-0.07651 0.227344,-0.09376 z m 45.750002,5.723437 c -0.802434,-0.0098 -1.584666,0.02696 -2.350781,0.100775 -10.725652,1.03352 -17.923998,10.216453 -25.258595,18.292968 l -4.246878,-3.764057 0.131254,21.255469 20.934376,-2.578123 -5.025,-4.446096 c 8.238683,-7.369823 20.906044,-18.072433 30.187494,-14.025 -2.32001,-4.918892 -5.40091,-9.833098 -11.9039,-14.664842 -0.84333,-0.106117 -1.66554,-0.161182 -2.46797,-0.171094 z m 9.55079,17.050783 c -2.23265,0.111035 -4.78915,0.982766 -7.50235,2.362499 1.89023,3.563012 3.27389,7.372418 4.11093,11.317966 l 0.11965,0.3 c 3.27856,-3.547531 6.17244,-7.503737 7.46954,-13.18828 -0.20598,-0.04252 -0.40703,-0.106175 -0.6,-0.189842 -0.81584,-0.355764 -1.70298,-0.552585 -2.66016,-0.602343 -0.30519,-0.01586 -0.61855,-0.01586 -0.9375,0 z m -0.47813,12.827343 c 0.0173,0.08105 0.0764,0.146144 0.0937,0.227342 l -0.0702,-0.215625 z m -49.762503,13.535156 -20.932032,2.578124 5.025,4.446095 c -8.238684,7.369824 -20.906042,18.074776 -30.1875,14.027343 2.320026,4.918894 5.400921,9.8307519 11.903905,14.662499 0.843337,0.106116 1.665539,0.1611829 2.467968,0.1710949 0.802431,0.00984 1.584663,-0.026952 2.350782,-0.100776 10.72565,-1.0335217 17.923997,-10.2164539 25.258593,-18.2929699 l 4.246874,3.764056 z m 29.503121,0.585935 -21.255467,0.133592 2.578124,20.932032 4.446095,-5.025 c 7.369824,8.238685 18.072432,20.9060398 14.024999,30.1875015 4.91889,-2.3200323 9.833102,-5.4009245 14.664841,-11.9039095 0.10608,-0.8433371 0.16119,-1.6655363 0.1711,-2.4679691 0.01,-0.8024304 -0.027,-1.5846612 -0.1008,-2.3507799 C 102.5149,-20.870044 93.331956,-28.06839 85.255441,-35.402988 Z m -67.504684,4.267971 c -3.278554,3.547531 -6.172444,7.503737 -7.469533,13.18828 0.205978,0.04256 0.407034,0.106176 0.6,0.189843 0.815838,0.355762 1.702981,0.552586 2.660158,0.602343 0.305198,0.01586 0.618549,0.01586 0.9375,0 2.232626,-0.111036 4.789133,-0.982768 7.502342,-2.3625 -1.890227,-3.56301 -3.273887,-7.372418 -4.110936,-11.317966 z m -2.8875,0.92578 0.0703,0.215625 0.02344,0.01176 c -0.01726,-0.08105 -0.0765,-0.146143 -0.09375,-0.227344 z m 65.608592,28.7109367 c -3.563012,1.8902291 -7.37242,3.2738893 -11.317967,4.1109373 l -0.3,0.119532 c 3.54753,3.2785476 7.503737,6.1724429 13.188278,7.4695349 0.04252,-0.20598 0.106177,-0.407028 0.189844,-0.6 0.355763,-0.815844 0.552585,-1.7029799 0.602345,-2.6601593 0.01586,-0.305196 0.01586,-0.618552 0,-0.9375 -0.111036,-2.2326384 -0.982768,-4.789134 -2.3625,-7.5023449 z M 73.771091,1.2790394 c -0.08105,0.01728 -0.146145,0.07644 -0.227344,0.09372 l 0.215627,-0.07032 z" + id="path3849" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccscccccccccccccccccccccscccccccccccccccccccccscccccccccccccccccccccscccccccccccccccccccccccccsccccccccccccccccccccccccccccccccccccccccccccccccccccccsccccccccccccccccccc" /> + <g + style="fill:#505050;fill-opacity:1;stroke-width:0.19550784" + id="g4412" + inkscape:transform-center-x="-5.0913502" + inkscape:transform-center-y="-4.4596393" + transform="matrix(5.1148849,0,0,5.1148849,12.851148,-95.148848)" /> + <g + transform="matrix(0,4.9102895,-4.9102895,0,113.1029,-93.102895)" + inkscape:transform-center-y="24" + inkscape:transform-center-x="-21.022466" + id="g4064" + style="fill:#505050;fill-opacity:1;stroke-width:0.20365398" /> + <g + style="fill:#505050;fill-opacity:1;stroke-width:0.20365398" + id="g4068" + inkscape:transform-center-x="24.000005" + inkscape:transform-center-y="21.022466" + transform="matrix(-4.9102895,0,0,-4.9102895,113.10289,5.1029002)" /> + <g + transform="matrix(-2.719147e-8,-4.9102894,4.9102894,-2.719147e-8,14.8971,5.1028901)" + inkscape:transform-center-y="-24.000003" + inkscape:transform-center-x="21.022466" + id="g4072" + style="fill:#505050;fill-opacity:1;stroke-width:0.20365398" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/Toolbar/problems.svg b/src/stylesheets/Paper/Automata/Toolbar/problems.svg new file mode 100644 index 00000000..f3fed97c --- /dev/null +++ b/src/stylesheets/Paper/Automata/Toolbar/problems.svg @@ -0,0 +1,132 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="problems.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="10.201449" + inkscape:cx="14.047399" + inkscape:cy="24.756816" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="false" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <g + id="g3861" + transform="matrix(0.55290621,0,0,0.55290621,28.614002,-29.750801)" + style="fill:#737373;fill-opacity:1;stroke-width:1.80862486" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#4e4b42;stroke-width:7.99999952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 64.344931,-96.263216 c -2.808173,-0.131523 -5.455193,1.310482 -6.861125,3.737706 L 4.9422487,-1.7926865 C 2.0494853,3.2027814 5.6651359,9.4471972 11.450616,9.4476002 H 116.53373 c 5.78548,-4.1e-4 9.40112,-6.2448225 6.50836,-11.2402867 L 70.500541,-92.52551 c -1.279824,-2.209515 -3.599319,-3.61792 -6.15561,-3.737706 z" + id="path3875" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccc" /> + <g + transform="matrix(-0.83333333,0,0,-0.83333333,117.3255,-70.7681)" + id="g3871" + style="stroke-width:1.20000005;fill:#4e4b42;fill-opacity:1"> + <path + inkscape:connector-curvature="0" + id="path3851" + d="m 64,-80 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 -6.7e-4,4.11389 3.33402,7.449258 7.44791,7.449426 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 C 71.447743,-76.665387 68.113298,-79.999833 64,-80 Z" + style="opacity:1;fill:#4e4b42;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:9.60000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + <path + inkscape:connector-curvature="0" + id="path3860-8" + d="m 56.55209,-50.206086 v 34.757418 h 14.89582 v -34.757418 z" + style="opacity:1;fill:#4e4b42;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:9.60000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + <path + inkscape:connector-curvature="0" + style="opacity:1;fill:#4e4b42;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:9.60000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="m 64,-80 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 -6.7e-4,4.11389 3.33402,7.449258 7.44791,7.449426 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 C 71.447743,-76.665387 68.113298,-79.999833 64,-80 Z" + id="path3853" /> + <path + inkscape:connector-curvature="0" + id="path3862" + d="m 64,-57.654754 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 -6.7e-4,4.11389 3.33402,7.449258 7.44791,7.449426 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 -1.67e-4,-4.113297 -3.334612,-7.447743 -7.44791,-7.44791 z" + style="opacity:1;fill:#4e4b42;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:9.60000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + <path + style="opacity:1;fill:#4e4b42;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:9.60000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="m 64,-22.897336 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 C 56.55142,-11.335536 59.88611,-8.000168 64,-8 c 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 -1.67e-4,-4.113297 -3.334612,-7.447743 -7.44791,-7.44791 z" + id="path3864" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/Toolbar/profiles.svg b/src/stylesheets/Paper/Automata/Toolbar/profiles.svg new file mode 100644 index 00000000..306c94f5 --- /dev/null +++ b/src/stylesheets/Paper/Automata/Toolbar/profiles.svg @@ -0,0 +1,112 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="profiles.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="14.003331" + inkscape:cx="54.048348" + inkscape:cy="44.931547" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="64,11.9981" + inkscape:measure-end="64,7.93514" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true" + inkscape:lockguides="true" + inkscape:snap-nodes="false"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="true" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="true" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <g + id="g3856" + style="fill:#4e4b42;fill-opacity:1;stroke-width:0.81111115" + transform="matrix(1.2328767,0,0,1.2328767,-14.376763,-8.863014)"> + <circle + r="21" + cy="-44" + cx="64" + id="path3874" + style="opacity:1;fill:#4e4b42;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.24444389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + <path + sodipodi:nodetypes="ccsscc" + inkscape:connector-curvature="0" + id="path3858" + transform="translate(0,-108)" + d="M 63.421875,89.005859 C 48.016021,89.029098 33.691706,97.71624 25.455078,112.03125 29.673503,114.55644 34.640748,116 40,116 h 48 c 5.001681,0 9.660535,-1.26009 13.68945,-3.48047 C 93.502774,97.918077 79.022242,89.020453 63.421875,89.005859 Z" + style="opacity:1;fill:#4e4b42;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.40555558;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/Toolbar/settings.svg b/src/stylesheets/Paper/Automata/Toolbar/settings.svg new file mode 100644 index 00000000..adc4ca7a --- /dev/null +++ b/src/stylesheets/Paper/Automata/Toolbar/settings.svg @@ -0,0 +1,95 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="settings.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="17.011826" + inkscape:cx="26.380278" + inkscape:cy="24.43076" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="8,64" + inkscape:measure-end="17.9742,64" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3854" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#4e4b42;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 55.75,-99 v 4.125 7.809571 c -5.874077,1.121199 -11.426558,3.415826 -16.37915,6.767577 l -8.427247,-8.427246 -11.668701,11.668701 8.429933,8.429932 c -3.36362,4.949109 -5.670511,10.500514 -6.802492,16.376465 H 9 v 16.5 h 11.934571 c 1.121199,5.874077 3.415826,11.426558 6.767577,16.37915 l -8.427246,8.427247 11.668701,11.66870105 8.429933,-8.42993305 c 4.949109,3.36362 10.500513,5.6705116 16.376464,6.80249075 V 11 h 16.5 V -0.93457095 C 78.124077,-2.0557723 83.676558,-4.3503989 88.62915,-7.702148 l 8.42725,8.42724605 11.6687,-11.66870105 -8.42994,-8.429933 c 3.36362,-4.949109 5.67052,-10.500513 6.8025,-16.376464 H 119 v -16.5 h -11.93457 c -1.1212,-5.874077 -3.41582,-11.426558 -6.76757,-16.37915 l 8.42724,-8.427247 -11.6687,-11.668701 -8.429935,8.429932 C 83.677355,-83.658785 78.125951,-85.965676 72.25,-87.097656 V -99 Z M 64,-68.75 c 13.603902,0 24.75,11.146098 24.75,24.75 0,13.603902 -11.146098,24.75 -24.75,24.75 -13.603902,0 -24.75,-11.146098 -24.75,-24.75 0,-13.603902 11.146098,-24.75 24.75,-24.75 z m 0,11 c -0.478691,0 -0.949948,0.02335 -1.415283,0.06982 -6.488691,0.656052 -11.608841,5.776202 -12.264893,12.264893 -1.79e-4,0.0018 1.79e-4,0.0036 0,0.0054 -0.04613,0.463616 -0.06983,0.933021 -0.06983,1.4099 0,0.476656 0.02311,0.946126 0.06982,1.409913 1.76e-4,0.0018 -1.76e-4,0.0036 0,0.0054 0.656052,6.488691 5.776202,11.60884 12.264893,12.264892 0.0018,1.79e-4 0.0035,-1.78e-4 0.0054,0 0.463616,0.04611 0.933021,0.06981 1.4099,0.06981 0.476878,0 0.946282,-0.02369 1.409913,-0.06982 0.0018,-1.78e-4 0.0035,1.78e-4 0.0054,0 6.488691,-0.656052 11.60884,-5.776202 12.264892,-12.264893 0.04705,-0.465516 0.06981,-0.936808 0.06981,-1.41529 0,-0.478482 -0.02276,-0.949774 -0.06982,-1.415283 -0.656052,-6.488691 -5.776203,-11.608841 -12.264894,-12.264893 -0.0018,-1.76e-4 -0.0035,1.76e-4 -0.0054,0 -0.463773,-0.04671 -0.933243,-0.06983 -1.409899,-0.06983 z" + id="path3915" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/Toolbar/tools.svg b/src/stylesheets/Paper/Automata/Toolbar/tools.svg new file mode 100644 index 00000000..555472e8 --- /dev/null +++ b/src/stylesheets/Paper/Automata/Toolbar/tools.svg @@ -0,0 +1,117 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="tools.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="9.90185" + inkscape:cx="62.575038" + inkscape:cy="1.523437" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="54,64" + inkscape:measure-end="64,64" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true" + inkscape:bbox-paths="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <g + id="g3997" + transform="matrix(0.55904332,-0.55901902,-0.55904332,-0.55901902,4.4028105,-32.039863)" + style="fill:#4e4b42;fill-opacity:1;stroke-width:1.26487899"> + <path + id="path3965" + transform="translate(0,-108)" + d="M -8,52 A 12,12 0 0 0 -20,64 12,12 0 0 0 -8,76 H 44 V 52 Z" + style="opacity:1;fill:#4e4b42;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.05951595;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + inkscape:connector-curvature="0" /> + <path + id="rect3969" + transform="translate(0,-108)" + d="m 128,53 -18,5 H 84 v 12 h 26 l 18,5 18,-5 V 58 Z" + style="opacity:1;fill:#4e4b42;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.05951595;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + inkscape:connector-curvature="0" /> + <path + style="opacity:1;fill:#4e4b42;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.86491537;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="m 32.291016,50.410156 c -5.753358,0.0068 -10.878972,3.636181 -12.796875,9.060547 h 12.796875 c 2.50182,-5.4e-5 4.529351,2.027478 4.529296,4.529297 -5.4e-5,2.501819 -2.027476,4.531196 -4.529296,4.53125 H 19.496094 c 1.917396,5.423518 7.042374,9.051114 12.794922,9.058594 5.30786,-0.0064 10.126181,-3.102522 12.33789,-7.927735 H 64 105.23759 v -0.0039 c 0.0293,0.0015 0.0586,0.0028 0.0879,0.0039 3.12696,-3.3e-4 5.66178,-2.535151 5.6621,-5.662109 -3.2e-4,-3.126962 -2.53514,-5.661785 -5.66211,-5.662109 -0.0299,0.0011 -0.0599,0.0024 -0.0898,0.0039 v -0.0039 H 64 44.626953 c -2.211168,-4.82439 -7.028882,-7.920713 -12.335937,-7.927735 z" + transform="matrix(-3.8373246e-5,-1.7660262,-1.7660262,-3.8373246e-5,177.02814,69.028134)" + id="rect3945" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccsccccccccccccccc" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/Toolbar/update.svg b/src/stylesheets/Paper/Automata/Toolbar/update.svg new file mode 100644 index 00000000..28bef275 --- /dev/null +++ b/src/stylesheets/Paper/Automata/Toolbar/update.svg @@ -0,0 +1,141 @@ +<?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" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="update.svg"> + <defs + id="defs2"> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4152-4-4-9"> + <rect + style="fill:#fdf6e3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4154-6-3-0" + width="598.57141" + height="928.57141" + x="352.85715" + y="22.362183" /> + </clipPath> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="7.2039069" + inkscape:cx="42.76634" + inkscape:cy="57.923463" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <g + id="g4217-3-45" + transform="matrix(0.50121193,0,0,0.50121193,-6.8260092,-112.83314)" + style="display:inline;fill:#4e4b42;fill-opacity:1" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96"> + <g + style="display:none;fill:#4e4b42;fill-opacity:1" + transform="translate(0,-783.36216)" + id="layer1-9-66" + inkscape:label="Reference"> + <image + width="269" + height="269" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image4166-8-4" + x="0" + y="793.00507" + style="fill:#4e4b42;fill-opacity:1" /> + </g> + <g + style="display:inline;fill:#4e4b42;fill-opacity:1" + inkscape:label="Trace" + id="layer2-9-1-52"> + <g + id="g4216-4-8" + style="fill:#4e4b42;fill-opacity:1"> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#4e4b42;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:45.99133301;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="M 32.360048,65.606228 A 18.742595,18.742595 0 0 0 13.619017,84.347257 v 52.986143 52.98616 a 18.742595,18.742595 0 0 0 18.741031,18.74102 h 66.931502 52.98614 a 18.742595,18.742595 0 0 0 14.56367,-6.9571 c 9.39466,4.42246 19.71589,6.94877 30.41586,6.9571 a 18.742595,18.742595 0 0 0 0.0133,0 c 39.39268,0.001 71.72926,-32.3342 71.72947,-71.72718 -2.1e-4,-39.392981 -32.33679,-71.728471 -71.72977,-71.727172 a 18.742595,18.742595 0 0 0 -0.0106,0 c -18.56058,0.0092 -35.9395,7.273903 -48.98023,19.491814 C 135.2392,72.880337 117.85926,65.616053 99.29911,65.606228 a 18.742595,18.742595 0 0 0 -0.008,0 z M 32.20937,84.347257 H 99.14088 A 52.987154,52.987154 0 0 1 148.1289,117.2103 52.987154,52.987154 0 0 1 197.12213,84.347257 52.987154,52.987154 0 0 1 250.11087,137.3334 52.987154,52.987154 0 0 1 197.12213,190.31956 52.987154,52.987154 0 0 1 152.12702,165.2527 v 25.06686 H 99.14088 32.20937 V 137.3334 Z" + id="path4176-3-9" + inkscape:connector-curvature="0" /> + </g> + </g> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/background.svg b/src/stylesheets/Paper/Automata/background.svg new file mode 100644 index 00000000..76468b68 --- /dev/null +++ b/src/stylesheets/Paper/Automata/background.svg @@ -0,0 +1,99 @@ +<?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="7" + height="7" + viewBox="0 0 7 7" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="background.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="63.914764" + inkscape:cx="9.5445856" + inkscape:cy="4.6988181" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="-15.1166,28.7091" + inkscape:measure-end="-12,31" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true" + inkscape:bbox-paths="true"> + <sodipodi:guide + position="14,14" + orientation="0,1" + id="guide4010" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,-13)"> + <path + sodipodi:nodetypes="cccccc" + inkscape:connector-curvature="0" + id="path3876" + d="M 0,13 V 14.399999 20 h 7 v -7 z" + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#c6c1ab;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + <rect + style="opacity:1;fill:#cbc6b0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + id="rect4092" + width="5" + height="5" + x="1" + y="14" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/backup.svg b/src/stylesheets/Paper/Automata/backup.svg new file mode 100644 index 00000000..1c55c45f --- /dev/null +++ b/src/stylesheets/Paper/Automata/backup.svg @@ -0,0 +1,126 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="backup.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="11.29864" + inkscape:cx="-6.8920047" + inkscape:cy="14.09106" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <g + id="g3865" + style="fill:#4d4a41;fill-opacity:1"> + <path + id="rect3928" + d="M 0 0 L 0 3 L 0 6 L 3 6 L 3 3 L 17 3 L 17 6 L 20 6 L 20 3 L 20 0 L 0 0 z " + style="opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + <g + id="g3858" + style="fill:#4d4a41;fill-opacity:1"> + <rect + y="-12.83" + x="-20" + height="5.6599998" + width="13.981334" + id="rect3930" + style="opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + transform="matrix(0,-1,-1,0,0,0)" /> + <path + sodipodi:type="star" + style="opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.83595276;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + id="path3932" + sodipodi:sides="3" + sodipodi:cx="8.9146461" + sodipodi:cy="9.684866" + sodipodi:r1="4.0292788" + sodipodi:r2="2.0146394" + sodipodi:arg1="-1.5707963" + sodipodi:arg2="-0.52359878" + inkscape:flatsided="true" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 8.9146463,5.6555872 3.4894577,6.0439178 -6.9789157,0 z" + inkscape:transform-center-y="-1.3333344" + transform="matrix(-2.1493311,0,0,1.3236446,29.160526,-4.4859875)" /> + </g> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/branch.svg b/src/stylesheets/Paper/Automata/branch.svg new file mode 100644 index 00000000..edabfeab --- /dev/null +++ b/src/stylesheets/Paper/Automata/branch.svg @@ -0,0 +1,99 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="branch.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="19.449279" + inkscape:cx="15.344006" + inkscape:cy="13.455246" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <g + id="g3867" + transform="matrix(2,0,0,2,-11.124285,-10)" + style="stroke-width:0.5;fill:#b4af9a;fill-opacity:1"> + <path + style="opacity:1;fill:#b4af9a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="M 4 0 L 4 20 L 10 20 L 10 0 L 4 0 z M 14 0 L 14 20 L 16 20 L 16 0 L 14 0 z " + transform="matrix(0.5,0,0,0.5,5.5621425,5)" + id="rect3861" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/collapsed.svg b/src/stylesheets/Paper/Automata/collapsed.svg new file mode 100644 index 00000000..614cca6b --- /dev/null +++ b/src/stylesheets/Paper/Automata/collapsed.svg @@ -0,0 +1,97 @@ +<?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="14" + height="14" + viewBox="0 0 14 14" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="collapsed.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="26.733251" + inkscape:cx="5.8544957" + inkscape:cy="4.1342917" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="false" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="2,12" + inkscape:measure-end="0,12" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="7,7" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="7,7" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,-6)"> + <path + style="opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="M 0 0 L 0 14 L 14 14 L 14 0 L 0 0 z M 6 4 L 8 4 L 8 6 L 10 6 L 10 8 L 8 8 L 8 10 L 6 10 L 6 8 L 4 8 L 4 6 L 6 6 L 6 4 z " + transform="translate(0,6)" + id="rect3848" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/cross.svg b/src/stylesheets/Paper/Automata/cross.svg new file mode 100644 index 00000000..450623c3 --- /dev/null +++ b/src/stylesheets/Paper/Automata/cross.svg @@ -0,0 +1,94 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="cross.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="46.5" + inkscape:cx="10" + inkscape:cy="10" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + style="display:inline;opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:169.70561218;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="m 4,1.5e-7 -4,3.99999995 2,2 L 6,10 l -4,4 -2,2 4,4 2,-2 4,-4 4,4 2,2 4,-4 -2,-2 -4,-4 4,-3.9999999 2,-2 L 16,1.5e-7 14,2.0000002 10,6.0000001 6,2.0000002 Z" + id="path3944" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/dots.svg b/src/stylesheets/Paper/Automata/dots.svg new file mode 100644 index 00000000..08d5139f --- /dev/null +++ b/src/stylesheets/Paper/Automata/dots.svg @@ -0,0 +1,111 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="dots.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="46.5" + inkscape:cx="10" + inkscape:cy="10" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <g + id="g3853" + style="fill:#4d4a41;fill-opacity:1"> + <circle + r="2.5" + cy="10" + cx="10" + id="path4063" + style="opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + <circle + style="opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + id="circle3937" + cx="17.5" + cy="10" + r="2.5" /> + <circle + r="2.5" + cy="10" + cx="2.5" + id="circle3939" + style="opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/expanded.svg b/src/stylesheets/Paper/Automata/expanded.svg new file mode 100644 index 00000000..19f776d3 --- /dev/null +++ b/src/stylesheets/Paper/Automata/expanded.svg @@ -0,0 +1,104 @@ +<?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="14" + height="14" + viewBox="0 0 14 14" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="expanded.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="14.407815" + inkscape:cx="5.5919938" + inkscape:cy="2.0247774" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="false" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="2,12" + inkscape:measure-end="0,12" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="7,7" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="7,7" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,-6)"> + <path + style="opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="M 0 0 L 0 14 L 14 14 L 14 0 L 0 0 z M 2 2 L 12 2 L 12 12 L 2 12 L 2 2 z " + transform="translate(0,6)" + id="rect3848" /> + <rect + style="opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + id="rect3849" + width="6" + height="2" + x="4" + y="12" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/folder.svg b/src/stylesheets/Paper/Automata/folder.svg new file mode 100644 index 00000000..4ac83f47 --- /dev/null +++ b/src/stylesheets/Paper/Automata/folder.svg @@ -0,0 +1,94 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="folder.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="46.5" + inkscape:cx="10" + inkscape:cy="10" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + style="display:inline;opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + d="M 12,2.0000002 10,4.0000001 H 2.5e-7 V 18 H 20 V 4.0000001 L 18,2.0000002 h -3 z" + id="rect3909" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/heart.svg b/src/stylesheets/Paper/Automata/heart.svg new file mode 100644 index 00000000..396fab55 --- /dev/null +++ b/src/stylesheets/Paper/Automata/heart.svg @@ -0,0 +1,111 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="heart.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="46.5" + inkscape:cx="10" + inkscape:cy="10" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <g + style="display:inline;fill:#4d4a41;fill-opacity:1" + id="g4198" + transform="translate(0,1)"> + <circle + r="5.5" + cy="5.5" + cx="5.5" + id="path4174" + style="opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + <circle + r="5.5" + style="opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + id="circle4176" + cx="14.5" + cy="5.5" /> + <path + id="path4178" + d="M 0,5.5 C 0,10.950465 5.8158604,15.070234 10,18 14.18414,15.070234 20,10.950465 20,5.5 H 10 Z" + style="fill:#4d4a41;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/refresh.svg b/src/stylesheets/Paper/Automata/refresh.svg new file mode 100644 index 00000000..a148aa1d --- /dev/null +++ b/src/stylesheets/Paper/Automata/refresh.svg @@ -0,0 +1,103 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="refresh.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="46.5" + inkscape:cx="10" + inkscape:cy="10" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <g + style="display:inline;fill:#4d4a41;fill-opacity:1" + id="g3986"> + <path + inkscape:connector-curvature="0" + id="path4137" + d="M 0,11.998047 V 20 L 2.9335938,17.066406 A 10,10 0 0 0 10,20 10,10 0 0 0 19.787109,11.998047 H 16.705078 A 7,7 0 0 1 10,17 7,7 0 0 1 5.0527344,14.947266 L 8,11.998047 Z" + style="opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + <path + inkscape:connector-curvature="0" + id="rect4142" + d="M 10,0 A 10,10 0 0 0 0.21289062,8.0019531 H 3.2949219 A 7,7 0 0 1 10,3 7,7 0 0 1 14.947266,5.0527344 L 12,8.0019531 h 8 V 0 L 17.066406,2.9335938 A 10,10 0 0 0 10,0 Z" + style="opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/restore-alt.svg b/src/stylesheets/Paper/Automata/restore-alt.svg new file mode 100644 index 00000000..79f96c1a --- /dev/null +++ b/src/stylesheets/Paper/Automata/restore-alt.svg @@ -0,0 +1,126 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="restore-alt.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="90.389123" + inkscape:cx="14.98971" + inkscape:cy="2.6868089" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <g + id="g3866" + style="fill:#4d4a41;fill-opacity:1;stroke:none"> + <path + id="rect3928" + d="M 0 14 L 0 17 L 0 20 L 20 20 L 20 17 L 20 14 L 17 14 L 17 17 L 3 17 L 3 14 L 0 14 z " + style="opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + <g + id="g3860" + style="fill:#4d4a41;fill-opacity:1;stroke:none"> + <rect + y="-12.83" + x="7.85585e-016" + height="5.6599998" + width="13.981334" + id="rect3930" + style="opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + transform="rotate(90)" /> + <path + sodipodi:type="star" + style="opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.83595276;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + id="path3932" + sodipodi:sides="3" + sodipodi:cx="8.9146461" + sodipodi:cy="9.684866" + sodipodi:r1="4.0292788" + sodipodi:r2="2.0146394" + sodipodi:arg1="-1.5707963" + sodipodi:arg2="-0.52359878" + inkscape:flatsided="true" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 8.9146463,5.6555872 3.4894577,6.0439178 -6.9789157,0 z" + inkscape:transform-center-y="-1.3333344" + transform="matrix(-2.1493311,0,0,-1.3236446,29.160526,24.485987)" /> + </g> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/restore.svg b/src/stylesheets/Paper/Automata/restore.svg new file mode 100644 index 00000000..b5fbbee1 --- /dev/null +++ b/src/stylesheets/Paper/Automata/restore.svg @@ -0,0 +1,94 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="restore.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="46.5" + inkscape:cx="10" + inkscape:cy="10" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + style="opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="m 10,-2.5e-7 a 10,10 0 0 1 0.998047,0.05078 A 10,10 0 0 1 19.787109,8.0019518 10,10 0 0 1 20,10 10,10 0 0 1 10,20 10,10 0 0 1 0.2128895,11.998047 h 3.082032 A 7,7 0 0 0 10,17 a 7,7 0 0 0 7,-7 7,7 0 0 0 -0.294922,-1.9980473 7,7 0 0 0 -0.53125,-1.291016 7,7 0 0 0 0,-0.0019 7,7 0 0 0 -0.359375,-0.599609 7,7 0 0 0 -0.417969,-0.5625 7,7 0 0 0 -0.40625,-0.447266 7,7 0 0 0 -0.07422,-0.07813 7,7 0 0 0 -0.435547,-0.390625 7,7 0 0 0 -0.08594,-0.07422 7,7 0 0 0 -0.490234,-0.359375 7,7 0 0 0 -0.07227,-0.05078 7,7 0 0 0 -0.49023,-0.289062 7,7 0 0 0 -0.119141,-0.06836 7,7 0 0 0 -0.439453,-0.203125 7,7 0 0 0 -0.207031,-0.0918 7,7 0 0 0 -0.402344,-0.138672 7,7 0 0 0 -0.259766,-0.08594 7,7 0 0 0 -0.466797,-0.109375 7,7 0 0 0 -0.208984,-0.04687 7,7 0 0 0 -0.458984,-0.06055 7,7 0 0 0 -0.246094,-0.03125 A 7,7 0 0 0 10,2.9999997 a 7,7 0 0 0 -2.06836,0.314453 7,7 0 0 0 -0.0019,0 7,7 0 0 0 -0.654297,0.240234 7,7 0 0 0 -0.0019,0 7,7 0 0 0 -0.628906,0.304688 7,7 0 0 0 -1.587891,1.197266 L 8,8.0019527 H 3.2968745 0.2031245 -5e-7 V -2.5e-7 l 2.933594,2.93359395 a 10,10 0 0 1 0.01172,-0.01172 10,10 0 0 1 0.591797,-0.535156 10,10 0 0 1 0.169922,-0.148438 10,10 0 0 1 0.6015635,-0.447265 10,10 0 0 1 0.199218,-0.142579 10,10 0 0 1 0.644532,-0.380859 10,10 0 0 1 0.222656,-0.126953 10,10 0 0 1 0.632812,-0.29492195 10,10 0 0 1 0.283204,-0.126953 10,10 0 0 1 0.623046,-0.216797 10,10 0 0 1 0.328125,-0.109375 10,10 0 0 1 0.601563,-0.144531 10,10 0 0 1 0.375,-0.08398 10,10 0 0 1 0.603516,-0.08203 10,10 0 0 1 0.394531,-0.04883 A 10,10 0 0 1 10,-2.5e-7 Z" + id="path3956" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/run.svg b/src/stylesheets/Paper/Automata/run.svg new file mode 100644 index 00000000..e969e49f --- /dev/null +++ b/src/stylesheets/Paper/Automata/run.svg @@ -0,0 +1,109 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="run.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="11.298641" + inkscape:cx="8.3473457" + inkscape:cy="69.793752" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <path + sodipodi:type="star" + style="display:inline;opacity:1;fill:#cd664d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + id="path3868" + sodipodi:sides="3" + sodipodi:cx="63.999996" + sodipodi:cy="-43.999996" + sodipodi:r1="64.000008" + sodipodi:r2="32.000004" + sodipodi:arg1="0" + sodipodi:arg2="1.0471976" + inkscape:flatsided="true" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 128,-43.999996 -96.000008,55.425632 0,-110.851265 z" + inkscape:transform-center-x="-15.999997" + inkscape:transform-center-y="3.8146973e-006" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/shortcut.svg b/src/stylesheets/Paper/Automata/shortcut.svg new file mode 100644 index 00000000..72b918ec --- /dev/null +++ b/src/stylesheets/Paper/Automata/shortcut.svg @@ -0,0 +1,94 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="shortcut.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="46.5" + inkscape:cx="10" + inkscape:cy="10" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + inkscape:connector-curvature="0" + style="display:inline;opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="M 12,1.1035163 V 5.4492195 A 9.7951674,7.8360994 0 0 0 2.2050782,13.285156 9.7951674,7.8360994 0 0 0 6.9863282,20 H 8.201172 A 5.8526129,4.68207 0 0 1 6.1484376,16.4375 5.8526129,4.68207 0 0 1 12,11.757812 v 4.345704 l 8,-7.5 z" + id="rect3929" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Automata/sort.svg b/src/stylesheets/Paper/Automata/sort.svg new file mode 100644 index 00000000..32c08366 --- /dev/null +++ b/src/stylesheets/Paper/Automata/sort.svg @@ -0,0 +1,125 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="sort.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="63.914761" + inkscape:cx="0.055319431" + inkscape:cy="1.8950951" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <g + id="g3898" + style="fill:#4d4a41;fill-opacity:1"> + <g + id="g3886" + style="fill:#4d4a41;fill-opacity:1"> + <rect + y="4" + x="13" + height="16" + width="3" + id="rect4003" + style="display:inline;opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + <path + style="display:inline;opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + d="m 13,0 v 7.9999998 h 7 z" + id="path4009" + inkscape:connector-curvature="0" /> + </g> + <g + id="g3890" + style="fill:#4d4a41;fill-opacity:1"> + <rect + style="display:inline;opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + id="rect3999" + width="3" + height="16" + x="4" + y="2.2775268e-008" /> + <path + inkscape:connector-curvature="0" + id="path4016" + d="M 7,20 V 12 H 0 Z" + style="display:inline;opacity:1;fill:#4d4a41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + </g> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/Arrows/down.svg b/src/stylesheets/Paper/Dark/Arrows/down.svg new file mode 100644 index 00000000..21d34b87 --- /dev/null +++ b/src/stylesheets/Paper/Dark/Arrows/down.svg @@ -0,0 +1,97 @@ +<?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="8" + height="8" + viewBox="0 0 8 8" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="down.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="26.25481" + inkscape:cx="0.53776101" + inkscape:cy="5.6881881" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="4,4" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="4,4" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,-12)"> + <path + style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:212.1320343;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="M 0,15 2,17 4,19 6,17 8,15 6,13 4,15 2,13 Z" + id="rect3900-0" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/Arrows/left.svg b/src/stylesheets/Paper/Dark/Arrows/left.svg new file mode 100644 index 00000000..b4aa8784 --- /dev/null +++ b/src/stylesheets/Paper/Dark/Arrows/left.svg @@ -0,0 +1,97 @@ +<?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="8" + height="8" + viewBox="0 0 8 8" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="left.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="26.25481" + inkscape:cx="0.53776101" + inkscape:cy="5.6881881" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="4,4" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="4,4" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,-12)"> + <path + style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:212.1320343;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="M 5,20 3,18 1,16 3,14 5,12 7,14 5,16 7,18 Z" + id="rect3900-0" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/Arrows/right.svg b/src/stylesheets/Paper/Dark/Arrows/right.svg new file mode 100644 index 00000000..37c9c20b --- /dev/null +++ b/src/stylesheets/Paper/Dark/Arrows/right.svg @@ -0,0 +1,97 @@ +<?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="8" + height="8" + viewBox="0 0 8 8" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="right.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="26.25481" + inkscape:cx="0.53776101" + inkscape:cy="5.6881881" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="4,4" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="4,4" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,-12)"> + <path + style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:212.1320343;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="M 3,20 5,18 7,16 5,14 3,12 1,14 3,16 1,18 Z" + id="rect3900-0" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/Arrows/up.svg b/src/stylesheets/Paper/Dark/Arrows/up.svg new file mode 100644 index 00000000..b5aed913 --- /dev/null +++ b/src/stylesheets/Paper/Dark/Arrows/up.svg @@ -0,0 +1,97 @@ +<?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="8" + height="8" + viewBox="0 0 8 8" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="up.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="26.25481" + inkscape:cx="0.53776101" + inkscape:cy="5.6881881" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="4,4" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="4,4" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,-12)"> + <path + style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:212.1320343;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="m 0,17 2,-2 2,-2 2,2 2,2 -2,2 -2,-2 -2,2 z" + id="rect3900-0" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/Toolbar/archives.svg b/src/stylesheets/Paper/Dark/Toolbar/archives.svg new file mode 100644 index 00000000..32758c87 --- /dev/null +++ b/src/stylesheets/Paper/Dark/Toolbar/archives.svg @@ -0,0 +1,99 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="archives.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="4.3843014" + inkscape:cx="83.662365" + inkscape:cy="55.175634" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true" + inkscape:lockguides="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="true" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="true" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <path + style="opacity:1;fill:#d3d3d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + d="m 73.998642,-83.999999 -9.998644,10.001356 H 14.001355 V -4.000001 H 113.99864 V -73.998643 L 104,-83.999999 H 88.999315 Z" + id="path3849" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/Toolbar/executables.svg b/src/stylesheets/Paper/Dark/Toolbar/executables.svg new file mode 100644 index 00000000..c1b815c2 --- /dev/null +++ b/src/stylesheets/Paper/Dark/Toolbar/executables.svg @@ -0,0 +1,99 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="executables.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="2.3629075" + inkscape:cx="146.96542" + inkscape:cy="0.84722465" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <path + inkscape:connector-curvature="0" + style="display:inline;opacity:1;fill:#d3d3d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.00000048;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="m 69.224291,-99 v 25.297161 A 57.019516,45.615413 0 0 0 12.206203,-28.088371 57.019516,45.615413 0 0 0 40.038762,11 h 7.071835 A 34.069164,27.255211 0 0 1 35.161239,-9.7379829 34.069164,27.255211 0 0 1 69.224291,-36.979329 v 25.297161 L 115.7938,-55.341082 Z" + id="rect3929" + inkscape:transform-center-x="-6.418094" + inkscape:transform-center-y="3.2118799" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/Toolbar/help.svg b/src/stylesheets/Paper/Dark/Toolbar/help.svg new file mode 100644 index 00000000..7f0024d5 --- /dev/null +++ b/src/stylesheets/Paper/Dark/Toolbar/help.svg @@ -0,0 +1,128 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="help.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="3.6019536" + inkscape:cx="85.162903" + inkscape:cy="57.782228" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <circle + style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#d3d3d3;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + id="path3848" + cx="64" + cy="-44" + r="60" /> + <g + id="g3871" + transform="translate(0,-1.242582)" + style="stroke-width:1;fill:#d3d3d3;fill-opacity:1"> + <path + id="path3851" + d="m 64,-80 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 -6.7e-4,4.11389 3.33402,7.449258 7.44791,7.449426 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 C 71.447743,-76.665387 68.113298,-79.999833 64,-80 Z" + style="opacity:1;fill:#d3d3d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path3860" + d="m 56.55209,-50.206086 v 34.757418 h 14.89582 v -34.757418 z" + style="opacity:1;fill:#d3d3d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + <path + style="opacity:1;fill:#d3d3d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="m 64,-80 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 -6.7e-4,4.11389 3.33402,7.449258 7.44791,7.449426 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 C 71.447743,-76.665387 68.113298,-79.999833 64,-80 Z" + id="path3853" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path3862" + d="m 64,-57.654754 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 -6.7e-4,4.11389 3.33402,7.449258 7.44791,7.449426 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 -1.67e-4,-4.113297 -3.334612,-7.447743 -7.44791,-7.44791 z" + style="opacity:1;fill:#d3d3d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + <path + style="opacity:1;fill:#d3d3d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="m 64,-22.897336 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 C 56.55142,-11.335536 59.88611,-8.000168 64,-8 c 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 -1.67e-4,-4.113297 -3.334612,-7.447743 -7.44791,-7.44791 z" + id="path3864" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/Toolbar/instances.svg b/src/stylesheets/Paper/Dark/Toolbar/instances.svg new file mode 100644 index 00000000..c5e58489 --- /dev/null +++ b/src/stylesheets/Paper/Dark/Toolbar/instances.svg @@ -0,0 +1,98 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="instances.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="4.0674672" + inkscape:cx="96.400649" + inkscape:cy="-7.2667309" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <path + style="opacity:1;fill:#d3d3d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + d="m 43.074486,-84 c -7.191305,0.179697 -13.681107,2.360737 -19.604836,6.184844 l -0.829325,3.561678 -4.167425,3.208112 -5.581697,14.982451 c -5.7982022,15.544107 -18.3828084,44.900541 4.037437,52.0629145 5.467067,-4.389774 11.744564,-10.4769935 18.039776,-16.6021055 3.729503,-3.62877 7.012953,-4.081632 14.160925,-4.081632 h 14.865463 14.865462 c 7.147976,0 10.431426,0.452872 14.160926,4.081632 6.2952,6.125112 12.583088,12.2123315 18.050168,16.6021055 22.42024,-7.1623735 9.83564,-36.5188075 4.03744,-52.0629145 l -5.5921,-14.982451 -4.15702,-3.208112 -0.82933,-3.561678 C 98.606622,-81.639263 92.106422,-83.820123 84.915122,-84 l -5.46211,2.979332 H 63.994804 48.546994 Z m 51.652146,11.766541 c 2.28943,-7.75e-4 4.14597,1.854604 4.14663,4.144028 7.8e-4,2.290441 -1.85618,4.147401 -4.14663,4.146627 -2.28942,-6.62e-4 -4.1448,-1.857203 -4.14402,-4.146627 6.6e-4,-2.288409 1.85562,-4.143366 4.14402,-4.144028 z m -61.453263,4.144028 c 4.578848,-1.12e-4 8.290765,3.711805 8.290653,8.290653 1.13e-4,4.578848 -3.711805,8.290766 -8.290653,8.290655 -4.578848,1.13e-4 -8.290768,-3.711807 -8.290654,-8.290655 -1.12e-4,-4.578848 3.711806,-8.290766 8.290654,-8.290653 z m 53.162613,4.146627 c 2.28943,-7.75e-4 4.14597,1.854603 4.14663,4.144026 7.7e-4,2.290441 -1.85619,4.147403 -4.14663,4.146627 -2.289423,-6.62e-4 -4.144799,-1.857203 -4.144025,-4.146627 6.62e-4,-2.288409 1.855618,-4.143365 4.144025,-4.144026 z m 16.581308,0 c 2.28942,-7.75e-4 4.14596,1.854603 4.14663,4.144026 7.7e-4,2.290441 -1.85619,4.147403 -4.14663,4.146627 -2.28943,-6.62e-4 -4.144798,-1.857203 -4.144028,-4.146627 6.6e-4,-2.288409 1.855618,-4.143365 4.144028,-4.144026 z m -8.290658,8.290654 c 2.28943,-7.75e-4 4.14597,1.854602 4.14663,4.144027 7.8e-4,2.29044 -1.85618,4.147401 -4.14663,4.146626 -2.28942,-6.62e-4 -4.1448,-1.857203 -4.14402,-4.146626 6.6e-4,-2.28841 1.85562,-4.143366 4.14402,-4.144027 z m -48.662414,6.184843 h 5.527101 v 5.527103 h 5.527103 v 5.527102 H 51.591319 V -32.886 h -5.527101 v -5.527102 h -5.527103 v -5.527102 h 5.527103 z m 33.10802,0 c 4.578848,-1.12e-4 8.290764,3.711806 8.290654,8.290654 1.1e-4,4.578848 -3.711806,8.290765 -8.290654,8.290653 -4.578848,1.13e-4 -8.290766,-3.711805 -8.290654,-8.290653 -1.13e-4,-4.578848 3.711806,-8.290767 8.290654,-8.290654 z" + id="path3849" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccscscccccccccccccccccccccccccccccccccccccccccccccccccccccc" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/Toolbar/nexus.svg b/src/stylesheets/Paper/Dark/Toolbar/nexus.svg new file mode 100644 index 00000000..9bf09e14 --- /dev/null +++ b/src/stylesheets/Paper/Dark/Toolbar/nexus.svg @@ -0,0 +1,122 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="nexus.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="3.5008328" + inkscape:cx="88.067867" + inkscape:cy="37.493768" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="108.073,108.073" + inkscape:measure-end="112.737,112.737" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="255" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <path + style="opacity:1;fill:#d3d3d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.99999952;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + d="m 37.578906,-103.99986 -2.327345,1.09219 c -5.625077,2.65309 -12.341703,6.959572 -18.124217,14.742184 l -1.439062,1.942967 -0.3,2.397657 c -0.727944,5.785703 0.645537,10.927203 2.601562,15.550782 -3.97001,7.523426 -6.539675,15.713366 -6.546095,24.274216 h 0.01176 v 0.06094 c 0.01254,2.097981 0.399663,4.072256 0.646875,6.100783 -3.5620623,4.427533 -7.0313403,9.956846 -7.8375002,17.704685 l -0.2648844,2.554689 1.0921859,2.327343 c 2.6531016,5.6250757 6.9595777,12.341692 14.7421887,18.12422 l 1.94297,1.4390639 2.397656,0.3 c 5.785701,0.727944 10.927203,-0.6455399 15.55078,-2.6015644 7.523428,3.9700084 15.713368,6.539664 24.274217,6.546096 v -0.012 h 0.06094 c 2.097982,-0.0126 4.072257,-0.39966 6.100783,-0.646872 4.427536,3.5620555 9.956847,7.0313275 17.704687,7.8374995 l 2.554687,0.26484 2.327343,-1.092192 C 98.373512,12.254575 105.09014,7.9480995 110.87265,0.1654875 l 1.43672,-1.9429715 0.30236,-2.3976556 c 0.72794,-5.7854267 -0.64555,-10.9269284 -2.60157,-15.5505044 3.97001,-7.523428 6.53967,-15.713368 6.5461,-24.27422 h -0.012 v -0.06094 c -0.0133,-2.097984 -0.39967,-4.072258 -0.64688,-6.100783 3.56206,-4.427535 7.03131,-9.956848 7.8375,-17.704688 L 124,-70.420959 l -1.09219,-2.327345 c -2.6531,-5.625076 -6.95957,-12.341702 -14.74219,-18.124218 l -1.94297,-1.436719 -2.39765,-0.302345 c -5.785706,-0.727943 -10.927203,0.64554 -15.550778,2.601564 -7.523434,-3.970005 -15.713374,-6.539667 -24.274225,-6.546088 v 0.01172 h -0.06094 c -2.097982,0.01266 -4.072255,0.399662 -6.100782,0.646874 -4.427534,-3.562058 -9.956847,-7.031344 -17.704687,-7.837494 z m 1.485937,6.351563 c 0.03984,-7.78e-4 0.07969,-7.78e-4 0.119532,0 0.08844,8.72e-4 0.176806,0.0056 0.264842,0.01406 0.01563,-1.23e-4 0.03128,-1.23e-4 0.04686,0 0.06038,0.0056 0.120558,0.01378 0.180468,0.02344 0.03369,0.0037 0.06016,0.01978 0.09376,0.02344 8.119439,0.924618 13.438311,4.913385 17.695312,8.847652 0.518092,0.475264 0.857314,1.113992 0.960938,1.809374 1.846847,-0.259602 3.708531,-0.399736 5.573432,-0.419528 7.414774,0.0056 14.704137,1.913317 21.171093,5.540624 3.592503,-2.496611 7.615515,-4.335787 12.384376,-4.79531 1.744997,-0.168149 3.586634,-0.159114 5.503124,0.082 0.5255,0.06779 1.0245,0.270451 1.44845,0.588283 6.86031,5.097232 10.33844,10.548846 12.76641,15.658591 0.0245,0.05156 0.0622,0.100836 0.0867,0.152346 0.0157,0.04031 0.0306,0.08093 0.0445,0.121879 0.0412,0.09035 0.0779,0.182649 0.11015,0.276564 0,0.0029 0,0.0063 0,0.0094 4e-5,0.0086 4e-5,0.01718 0,0.02577 0.0284,0.09024 0.0527,0.18174 0.0727,0.274217 0.0197,0.09143 0.0355,0.18371 0.0469,0.276565 1e-5,0.0079 1e-5,0.01562 0,0.02344 0.005,0.06 0.0108,0.120187 0.0141,0.180468 7.7e-4,0.03984 7.7e-4,0.07969 0,0.119532 -8.7e-4,0.08844 -0.005,0.176808 -0.0141,0.264844 1.2e-4,0.01563 1.2e-4,0.03125 0,0.04685 -0.008,0.06038 -0.0139,0.12056 -0.0233,0.180468 -0.004,0.03369 -0.0199,0.06016 -0.0234,0.09376 -0.92463,8.119438 -4.91339,13.438312 -8.84766,17.695313 -0.47526,0.51809 -1.114,0.857312 -1.80939,0.960935 0.25962,1.846853 0.39976,3.708535 0.41955,5.573439 -0.005,7.414773 -1.91333,14.704135 -5.54064,21.171093 2.49662,3.592503 4.33578,7.615515 4.79533,12.384375 0.16814,1.7449932 0.1591,3.586632 -0.0819,5.5031256 -0.0677,0.5254956 -0.27045,1.0244952 -0.58828,1.4484372 -5.09716,6.8603052 -10.548768,10.3384447 -15.658515,12.7664047 -0.05156,0.02448 -0.100836,0.06228 -0.152342,0.08676 -0.04031,0.01572 -0.08092,0.0306 -0.12188,0.04452 -0.09035,0.04116 -0.182648,0.07788 -0.276562,0.11016 -0.0031,0 -0.0063,0 -0.0094,0 -0.0086,3.5e-5 -0.01718,3.5e-5 -0.02577,0 -0.09024,0.02844 -0.181741,0.05268 -0.274216,0.07272 -0.09143,0.0198 -0.183711,0.03552 -0.276563,0.04692 -0.0079,2.4e-5 -0.01563,2.4e-5 -0.02344,0 -0.06,0.006 -0.120186,0.0108 -0.180468,0.01404 -0.03984,7.8e-4 -0.0797,7.8e-4 -0.119532,0 -0.08844,-8.64e-4 -0.176806,-0.006 -0.264846,-0.01404 -0.01563,1.2e-4 -0.03128,1.2e-4 -0.04686,0 -0.06037,-0.006 -0.120559,-0.0138 -0.180469,-0.0234 -0.03369,-0.0036 -0.06014,-0.0198 -0.09376,-0.0234 C 80.110654,8.6632245 74.79178,4.6744608 70.534779,0.740188 c -0.51809,-0.47526 -0.857313,-1.113984 -0.960936,-1.8093745 -1.847084,0.259404 -3.708765,0.3995425 -5.573668,0.4193305 -7.414776,-0.006 -14.704135,-1.9133172 -21.171094,-5.5406236 -3.592503,2.4966096 -7.615515,4.3357863 -12.384377,4.7953119 -1.744993,0.1681465 -3.586632,0.1591105 -5.503122,-0.082008 -0.525498,-0.067788 -1.024497,-0.2704523 -1.448438,-0.5882844 -6.860299,-5.0972295 -10.338443,-10.5488439 -12.766408,-15.6585929 -0.0245,-0.05156 -0.06234,-0.10086 -0.08672,-0.152343 -0.0157,-0.0403 -0.03056,-0.08095 -0.04453,-0.12188 -0.04117,-0.09035 -0.07795,-0.182646 -0.11016,-0.276563 -6e-6,-0.0031 -6e-6,-0.0063 0,-0.0094 -3.6e-5,-0.0086 -3.6e-5,-0.01718 0,-0.02577 -0.02843,-0.09024 -0.05268,-0.181742 -0.07265,-0.274218 -0.01984,-0.09143 -0.03547,-0.183709 -0.04685,-0.276562 -3.1e-5,-0.0077 -3.1e-5,-0.01562 0,-0.02344 -0.0067,-0.06 -0.01116,-0.120186 -0.0141,-0.180469 -7.76e-4,-0.03984 -7.76e-4,-0.07969 0,-0.119532 8.7e-4,-0.08844 0.0053,-0.176808 0.0141,-0.264847 -1.19e-4,-0.01563 -1.19e-4,-0.03125 0,-0.04685 0.006,-0.06037 0.0138,-0.120559 0.02344,-0.180469 0.0037,-0.03369 0.01981,-0.06014 0.02344,-0.09376 0.924627,-8.119438 4.91339,-13.438313 8.847658,-17.695312 0.475263,-0.518093 1.113993,-0.857315 1.809373,-0.960938 -0.259589,-1.846868 -0.399724,-3.708551 -0.419516,-5.573451 0.0056,-7.414775 1.913317,-14.704137 5.540624,-21.171094 -2.49661,-3.592502 -4.335787,-7.615515 -4.79531,-12.384377 -0.168149,-1.744994 -0.159113,-3.58663 0.082,-5.503124 0.06779,-0.525498 0.270452,-1.024496 0.588283,-1.448437 5.097232,-6.860299 10.548845,-10.338443 15.658591,-12.766403 0.05156,-0.02447 0.100837,-0.06234 0.152347,-0.08672 0.04031,-0.01575 0.08093,-0.03056 0.121878,-0.04453 0.09035,-0.04116 0.182646,-0.07791 0.276563,-0.110157 0.0029,0 0.0063,0 0.0094,0 0.0086,-3.7e-5 0.01718,-3.7e-5 0.02578,0 0.09024,-0.02841 0.181741,-0.05269 0.274218,-0.07266 0.09143,-0.01987 0.183711,-0.03544 0.276563,-0.04687 0.0077,-2.8e-5 0.01563,-2.8e-5 0.02344,0 0.06,-0.0066 0.120186,-0.01116 0.180468,-0.01416 z m 0.119532,3.070311 c -4.918893,2.320027 -9.830756,5.400922 -14.6625,11.903905 -0.106116,0.843338 -0.161184,1.665537 -0.171096,2.467968 -0.0098,0.802433 0.02693,1.584662 0.100776,2.350782 1.033521,10.725648 10.216452,17.923996 18.292968,25.258593 l -3.764063,4.246876 21.255469,-0.131254 -2.578125,-20.934377 -4.446092,5.025 c -7.369823,-8.23868 -18.074776,-20.906037 -14.02734,-30.187495 z m 3.009373,0.623437 c -0.04253,0.205977 -0.106176,0.407033 -0.189841,0.599999 -0.355764,0.815838 -0.552587,1.702983 -0.602346,2.660157 -0.01586,0.305199 -0.01586,0.61855 0,0.9375 0.111036,2.232626 0.98277,4.789133 2.3625,7.502343 3.563011,-1.890229 7.372419,-3.27389 11.317968,-4.110937 l 0.3,-0.119533 c -3.54753,-3.278554 -7.503737,-6.172443 -13.188279,-7.46953 z m 12.2625,4.582031 -0.215624,0.07031 -0.01176,0.02344 c 0.08105,-0.01726 0.146146,-0.07651 0.227344,-0.09376 z m 45.750002,5.723437 c -0.802434,-0.0098 -1.584666,0.02696 -2.350781,0.100775 -10.725652,1.03352 -17.923998,10.216453 -25.258595,18.292968 l -4.246878,-3.764057 0.131254,21.255469 20.934376,-2.578123 -5.025,-4.446096 c 8.238683,-7.369823 20.906044,-18.072433 30.187494,-14.025 -2.32001,-4.918892 -5.40091,-9.833098 -11.9039,-14.664842 -0.84333,-0.106117 -1.66554,-0.161182 -2.46797,-0.171094 z m 9.55079,17.050783 c -2.23265,0.111035 -4.78915,0.982766 -7.50235,2.362499 1.89023,3.563012 3.27389,7.372418 4.11093,11.317966 l 0.11965,0.3 c 3.27856,-3.547531 6.17244,-7.503737 7.46954,-13.18828 -0.20598,-0.04252 -0.40703,-0.106175 -0.6,-0.189842 -0.81584,-0.355764 -1.70298,-0.552585 -2.66016,-0.602343 -0.30519,-0.01586 -0.61855,-0.01586 -0.9375,0 z m -0.47813,12.827343 c 0.0173,0.08105 0.0764,0.146144 0.0937,0.227342 l -0.0702,-0.215625 z m -49.762503,13.535156 -20.932032,2.578124 5.025,4.446095 c -8.238684,7.369824 -20.906042,18.074776 -30.1875,14.027343 2.320026,4.918894 5.400921,9.8307519 11.903905,14.662499 0.843337,0.106116 1.665539,0.1611829 2.467968,0.1710949 0.802431,0.00984 1.584663,-0.026952 2.350782,-0.100776 10.72565,-1.0335217 17.923997,-10.2164539 25.258593,-18.2929699 l 4.246874,3.764056 z m 29.503121,0.585935 -21.255467,0.133592 2.578124,20.932032 4.446095,-5.025 c 7.369824,8.238685 18.072432,20.9060398 14.024999,30.1875015 4.91889,-2.3200323 9.833102,-5.4009245 14.664841,-11.9039095 0.10608,-0.8433371 0.16119,-1.6655363 0.1711,-2.4679691 0.01,-0.8024304 -0.027,-1.5846612 -0.1008,-2.3507799 C 102.5149,-20.870044 93.331956,-28.06839 85.255441,-35.402988 Z m -67.504684,4.267971 c -3.278554,3.547531 -6.172444,7.503737 -7.469533,13.18828 0.205978,0.04256 0.407034,0.106176 0.6,0.189843 0.815838,0.355762 1.702981,0.552586 2.660158,0.602343 0.305198,0.01586 0.618549,0.01586 0.9375,0 2.232626,-0.111036 4.789133,-0.982768 7.502342,-2.3625 -1.890227,-3.56301 -3.273887,-7.372418 -4.110936,-11.317966 z m -2.8875,0.92578 0.0703,0.215625 0.02344,0.01176 c -0.01726,-0.08105 -0.0765,-0.146143 -0.09375,-0.227344 z m 65.608592,28.7109367 c -3.563012,1.8902291 -7.37242,3.2738893 -11.317967,4.1109373 l -0.3,0.119532 c 3.54753,3.2785476 7.503737,6.1724429 13.188278,7.4695349 0.04252,-0.20598 0.106177,-0.407028 0.189844,-0.6 0.355763,-0.815844 0.552585,-1.7029799 0.602345,-2.6601593 0.01586,-0.305196 0.01586,-0.618552 0,-0.9375 -0.111036,-2.2326384 -0.982768,-4.789134 -2.3625,-7.5023449 z M 73.771091,1.2790394 c -0.08105,0.01728 -0.146145,0.07644 -0.227344,0.09372 l 0.215627,-0.07032 z" + id="path3849" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccscccccccccccccccccccccscccccccccccccccccccccscccccccccccccccccccccscccccccccccccccccccccccccsccccccccccccccccccccccccccccccccccccccccccccccccccccccsccccccccccccccccccc" /> + <g + style="fill:#505050;fill-opacity:1;stroke-width:0.19550784" + id="g4412" + inkscape:transform-center-x="-5.0913502" + inkscape:transform-center-y="-4.4596393" + transform="matrix(5.1148849,0,0,5.1148849,12.851148,-95.148848)" /> + <g + transform="matrix(0,4.9102895,-4.9102895,0,113.1029,-93.102895)" + inkscape:transform-center-y="24" + inkscape:transform-center-x="-21.022466" + id="g4064" + style="fill:#505050;fill-opacity:1;stroke-width:0.20365398" /> + <g + style="fill:#505050;fill-opacity:1;stroke-width:0.20365398" + id="g4068" + inkscape:transform-center-x="24.000005" + inkscape:transform-center-y="21.022466" + transform="matrix(-4.9102895,0,0,-4.9102895,113.10289,5.1029002)" /> + <g + transform="matrix(-2.719147e-8,-4.9102894,4.9102894,-2.719147e-8,14.8971,5.1028901)" + inkscape:transform-center-y="-24.000003" + inkscape:transform-center-x="21.022466" + id="g4072" + style="fill:#505050;fill-opacity:1;stroke-width:0.20365398" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/Toolbar/problems.svg b/src/stylesheets/Paper/Dark/Toolbar/problems.svg new file mode 100644 index 00000000..6cb095aa --- /dev/null +++ b/src/stylesheets/Paper/Dark/Toolbar/problems.svg @@ -0,0 +1,132 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="problems.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="2.7490221" + inkscape:cx="29.143293" + inkscape:cy="24.756816" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="false" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <g + id="g3861" + transform="matrix(0.55290621,0,0,0.55290621,28.614002,-29.750801)" + style="fill:#737373;fill-opacity:1;stroke-width:1.80862486" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#d3d3d3;stroke-width:7.99999952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 64.344931,-96.263216 c -2.808173,-0.131523 -5.455193,1.310482 -6.861125,3.737706 L 4.9422487,-1.7926865 C 2.0494853,3.2027814 5.6651359,9.4471972 11.450616,9.4476002 H 116.53373 c 5.78548,-4.1e-4 9.40112,-6.2448225 6.50836,-11.2402867 L 70.500541,-92.52551 c -1.279824,-2.209515 -3.599319,-3.61792 -6.15561,-3.737706 z" + id="path3875" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccc" /> + <g + transform="matrix(-0.83333333,0,0,-0.83333333,117.3255,-70.7681)" + id="g3871" + style="stroke-width:1.20000005;fill:#d3d3d3;fill-opacity:1"> + <path + inkscape:connector-curvature="0" + id="path3851" + d="m 64,-80 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 -6.7e-4,4.11389 3.33402,7.449258 7.44791,7.449426 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 C 71.447743,-76.665387 68.113298,-79.999833 64,-80 Z" + style="opacity:1;fill:#d3d3d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:9.60000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + <path + inkscape:connector-curvature="0" + id="path3860-8" + d="m 56.55209,-50.206086 v 34.757418 h 14.89582 v -34.757418 z" + style="opacity:1;fill:#d3d3d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:9.60000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + <path + inkscape:connector-curvature="0" + style="opacity:1;fill:#d3d3d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:9.60000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="m 64,-80 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 -6.7e-4,4.11389 3.33402,7.449258 7.44791,7.449426 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 C 71.447743,-76.665387 68.113298,-79.999833 64,-80 Z" + id="path3853" /> + <path + inkscape:connector-curvature="0" + id="path3862" + d="m 64,-57.654754 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 -6.7e-4,4.11389 3.33402,7.449258 7.44791,7.449426 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 -1.67e-4,-4.113297 -3.334612,-7.447743 -7.44791,-7.44791 z" + style="opacity:1;fill:#d3d3d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:9.60000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + <path + style="opacity:1;fill:#d3d3d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:9.60000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="m 64,-22.897336 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 C 56.55142,-11.335536 59.88611,-8.000168 64,-8 c 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 -1.67e-4,-4.113297 -3.334612,-7.447743 -7.44791,-7.44791 z" + id="path3864" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/Toolbar/profiles.svg b/src/stylesheets/Paper/Dark/Toolbar/profiles.svg new file mode 100644 index 00000000..3679449a --- /dev/null +++ b/src/stylesheets/Paper/Dark/Toolbar/profiles.svg @@ -0,0 +1,112 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="profiles.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="3.7735292" + inkscape:cx="65.045731" + inkscape:cy="44.931547" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="64,11.9981" + inkscape:measure-end="64,7.93514" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true" + inkscape:lockguides="true" + inkscape:snap-nodes="false"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="true" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="true" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <g + id="g3856" + style="fill:#d3d3d3;fill-opacity:1;stroke-width:0.81111115" + transform="matrix(1.2328767,0,0,1.2328767,-14.376763,-8.863014)"> + <circle + r="21" + cy="-44" + cx="64" + id="path3874" + style="opacity:1;fill:#d3d3d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.24444389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + <path + sodipodi:nodetypes="ccsscc" + inkscape:connector-curvature="0" + id="path3858" + transform="translate(0,-108)" + d="M 63.421875,89.005859 C 48.016021,89.029098 33.691706,97.71624 25.455078,112.03125 29.673503,114.55644 34.640748,116 40,116 h 48 c 5.001681,0 9.660535,-1.26009 13.68945,-3.48047 C 93.502774,97.918077 79.022242,89.020453 63.421875,89.005859 Z" + style="opacity:1;fill:#d3d3d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.40555558;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/Toolbar/settings.svg b/src/stylesheets/Paper/Dark/Toolbar/settings.svg new file mode 100644 index 00000000..c58bd3dd --- /dev/null +++ b/src/stylesheets/Paper/Dark/Toolbar/settings.svg @@ -0,0 +1,95 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.3 (2405546, 2018-03-11)" + sodipodi:docname="settings.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="1.9728069" + inkscape:cx="-7.9211047" + inkscape:cy="7.7686433" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="8,64" + inkscape:measure-end="17.9742,64" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3854" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#d3d3d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 55.75,-99 v 4.125 7.80957 c -5.874077,1.1212 -11.426558,3.41583 -16.379154,6.76757 l -8.427243,-8.42724 -11.668701,11.6687 8.429938,8.42993 c -3.363624,4.949109 -5.670511,10.500523 -6.802499,16.37647 H 9 v 16.5 h 11.934571 c 1.121197,5.874077 3.41583,11.426558 6.767574,16.379154 l -8.427243,8.427243 11.668701,11.668701 8.429938,-8.429938 C 44.32265,-4.341216 49.874053,-2.034329 55.75,-0.902341 V 11 h 16.5 V -0.934571 c 5.87408,-1.121197 11.42656,-3.41583 16.37915,-6.767574 l 8.42724,8.427243 11.66871,-11.668701 -8.42994,-8.429938 c 3.36362,-4.949109 5.67052,-10.500512 6.80249,-16.376459 H 119 v -16.5 h -11.93458 c -1.12119,-5.874077 -3.41581,-11.426558 -6.76757,-16.37915 l 8.42725,-8.42725 -11.66871,-11.6687 -8.42994,8.42993 c -4.9491,-3.36361 -10.5005,-5.6705 -16.37645,-6.80249 V -99 Z M 64,-68.75 c 13.6039,0 24.75,11.146102 24.75,24.75 0,13.603898 -11.1461,24.75 -24.75,24.75 -13.603898,0 -24.75,-11.146102 -24.75,-24.75 0,-13.603898 11.146102,-24.75 24.75,-24.75 z m 0,11 c -0.47872,0 -0.94996,0.0231 -1.415282,0.0693 -6.488691,0.65604 -11.608839,5.776199 -12.26489,12.26489 -1.87e-4,0.0018 1.76e-4,0.0036 0,0.0052 -0.0462,0.46365 -0.0693,0.93302 -0.0693,1.409903 0,0.47663 0.0231,0.94611 0.0693,1.409914 1.76e-4,0.0018 -1.76e-4,0.0036 0,0.0052 0.65604,6.488694 5.776199,11.608842 12.26489,12.264893 0.0018,1.76e-4 0.0036,-1.76e-4 0.0052,0 0.46365,0.0462 0.93302,0.0693 1.409903,0.0693 0.47685,0 0.94633,-0.0242 1.409899,-0.0693 0.002,-1.76e-4 0.004,1.76e-4 0.005,0 6.4887,-0.65604 11.60884,-5.776199 12.26491,-12.264893 0.0473,-0.46552 0.0693,-0.93676 0.0693,-1.415293 0,-0.4785 -0.0231,-0.94974 -0.0693,-1.415282 -0.65604,-6.488746 -5.77621,-11.608894 -12.26491,-12.264945 -0.002,-1.76e-4 -0.004,1.76e-4 -0.005,0 -0.463745,-0.0462 -0.933225,-0.0704 -1.409877,-0.0704 z" + id="path3915" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/Toolbar/tools.svg b/src/stylesheets/Paper/Dark/Toolbar/tools.svg new file mode 100644 index 00000000..ac492405 --- /dev/null +++ b/src/stylesheets/Paper/Dark/Toolbar/tools.svg @@ -0,0 +1,117 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="tools.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="2.668288" + inkscape:cx="78.127687" + inkscape:cy="1.523437" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="54,64" + inkscape:measure-end="64,64" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true" + inkscape:bbox-paths="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <g + id="g3997" + transform="matrix(0.55904332,-0.55901902,-0.55904332,-0.55901902,4.4028105,-32.039863)" + style="fill:#d3d3d3;fill-opacity:1;stroke-width:1.26487899"> + <path + id="path3965" + transform="translate(0,-108)" + d="M -8,52 A 12,12 0 0 0 -20,64 12,12 0 0 0 -8,76 H 44 V 52 Z" + style="opacity:1;fill:#d3d3d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.05951595;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + inkscape:connector-curvature="0" /> + <path + id="rect3969" + transform="translate(0,-108)" + d="m 128,53 -18,5 H 84 v 12 h 26 l 18,5 18,-5 V 58 Z" + style="opacity:1;fill:#d3d3d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.05951595;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + inkscape:connector-curvature="0" /> + <path + style="opacity:1;fill:#d3d3d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.86491537;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="m 32.291016,50.410156 c -5.753358,0.0068 -10.878972,3.636181 -12.796875,9.060547 h 12.796875 c 2.50182,-5.4e-5 4.529351,2.027478 4.529296,4.529297 -5.4e-5,2.501819 -2.027476,4.531196 -4.529296,4.53125 H 19.496094 c 1.917396,5.423518 7.042374,9.051114 12.794922,9.058594 5.30786,-0.0064 10.126181,-3.102522 12.33789,-7.927735 H 64 105.23759 v -0.0039 c 0.0293,0.0015 0.0586,0.0028 0.0879,0.0039 3.12696,-3.3e-4 5.66178,-2.535151 5.6621,-5.662109 -3.2e-4,-3.126962 -2.53514,-5.661785 -5.66211,-5.662109 -0.0299,0.0011 -0.0599,0.0024 -0.0898,0.0039 v -0.0039 H 64 44.626953 c -2.211168,-4.82439 -7.028882,-7.920713 -12.335937,-7.927735 z" + transform="matrix(-3.8373246e-5,-1.7660262,-1.7660262,-3.8373246e-5,177.02814,69.028134)" + id="rect3945" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccsccccccccccccccc" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/Toolbar/update.svg b/src/stylesheets/Paper/Dark/Toolbar/update.svg new file mode 100644 index 00000000..a6c272be --- /dev/null +++ b/src/stylesheets/Paper/Dark/Toolbar/update.svg @@ -0,0 +1,141 @@ +<?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" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.3 (2405546, 2018-03-11)" + sodipodi:docname="update.svg"> + <defs + id="defs2"> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4152-4-4-9"> + <rect + style="fill:#fdf6e3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4154-6-3-0" + width="598.57141" + height="928.57141" + x="352.85715" + y="22.362183" /> + </clipPath> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="7.2039069" + inkscape:cx="73.953922" + inkscape:cy="61.867245" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <g + id="g4217-3-45" + transform="matrix(0.50121193,0,0,0.50121193,-6.8260092,-112.83314)" + style="display:inline;fill:#006868;fill-opacity:1" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96"> + <g + style="display:none;fill:#006868;fill-opacity:1" + transform="translate(0,-783.36216)" + id="layer1-9-66" + inkscape:label="Reference"> + <image + width="269" + height="269" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQ0AAAENCAYAAAAVEjAIAAAABHNCSVQICAgIfAhkiAAAIABJREFU eJzsnXd4HNXVh987s129WZJ7t+VuA8amGNOLA6GXQEIgQAotBAghJAQSEgKEJAQSekvoYHpJ4ANT jcEN27hXucjqfbVlduZ+f8zMatVsrSRbtjzv84iyO3PnzuzMb84599xzxaJSKXFwcHDoJEpvd8DB wWH/whENBweHpHBEw8HBISkc0XBwcEgKRzQcHBySwhENBweHpHBEw8HBISkc0XBwcEgKRzQcHByS whENBweHpHBEw8HBISkc0XBwcEgKRzQcHBySwhENBweHpHBEw8HBISkc0XBwcEgKRzQcHBySwhEN BweHpHBEw8HBISkc0XBwcEgKRzQcHBySwhENBweHpHBEw8HBISkc0XBwcEgKRzQcHBySwhENBweH pHBEw8HBISkc0XBwcEgKRzQcHBySwhENBweHpHBEw8HBISkc0XBwcEgKRzQcHBySwhENBweHpHBE w8HBISkc0XBwcEgKRzQcHBySwhENBweHpHBEw8HBISkc0XBwcEgKRzQcHBySwhENBweHpHBEw8HB ISkc0XBwcEgKRzQcHBySwhENBweHpHBEw8HBISkc0XBwcEgKRzQcHBySwhENBweHpHBEw8HBISkc 0XBwcEgKRzQcHBySwrW3DqRrEUqKN7J9yyaKN6xhS/FmYtEoUsq91YV9EsXlwuf1kZaaQkZGJjn9 CkjLLSQ3L4/C/gMJZOT0dhf3eaSh01hdxs6SEioryglWl1JdXUVDfT2NwSZC4TCGrmPoMRSXC5fb g9vtJjMtlfSMDLKycwhkF5Kfn09BYSGBzH69fUr7NHtMNKLBWjZv2sjObVvYsGo5WzZvpL6mimBj A5FQiFhMwzAMOMBFAwAhEEKgqioutwev14cvECCQkkpmVi6jxoxh4PAxDBk+kvyBQ1Fcnt7uca8S bqhha/Fmdm5Zz+YNa9m8aSPB+jpCTUFCoSa0SIRYTEPX9V3eX0JRUBQFt9uD2+vF5w8QCKSQmpnF 6NFjGDxiDP2HjmTg4GG4fSl78Qz3bcSi0p59andsXse7r77A1o1rqamupKmxgVBTkHCoiUg4jBaN oMdiGNIwRcMBACEEiqIghILL5cLlduNyufF4fXj9fnz+AGnpGaRnZjNi9BhGjp1E4eChDBo8BHcg o7e7v0dpqC5n86aNlBavZ+3K5ezYVkxDXS3BxgbCoSaikTBRWyhisU7fX8ISa0UoqAnX3O314vOZ 1zyQlk56eiZDh49g9PjJ5A8axrARo/Gl9u1rvit6TDRkLMr8j9/nvbnPUbJtC3U11YSaGlv+mLqO YehIKU23xLEymhHC+lfzjSwUBVVVUV0u3G4PLrcHnyUgPn+AQGoaaemZDBwylKLxExk4ooiho4rw +AK9fDLdo6a8hM3rV7N94xpWr1pJTVUF9bU1BBNeQNFIGC0aRddj8XtLGgYSmdz9ZV3vxGuuKJaI uNx4vF48Xh8+fwB/IIVAahrpGVnk5RcybsIE+g8by4gx40jJyN7zF2YfoUdEo76mijeeeZgFn82j rGQ79XU1hENNxDQNw9DjbogdvzjQ4xi7Q1gCYv+3UBTLElHjIuJyuXF7PLg93vgNnZqeQU5ePmOK JjDxoBmMHDuOQGZeL55J5zBiGts2rWXdiiV8u3wZpTuKqa2uosmyJCKRcFwk7BeQoevN1kTCvQVd u79aX3Msy08RCkqCcLs9HtP68/rwBVJITUsnIyuHQcNGMH7SVMZMnEr+oOEI0XfHGLotGuuWfcUr /3mC9auXU1m2k4b6WqLhMDE9hrTMQ0ckuo9IsETau6FdLjdenw+vz48/JdV6GxYw5aBDmTxjFiPH TgDV3ctn0ZKash2sWPg58z+dR9nO7dRWV8Vdjkg41EIkpGGgW1bq3noBdeaauz0e85pbVkh2Th4D Bg/liKOPp2jKoaRm5e6x/vUW3RKN9cu/5t8P3cem9aupKi8l2FCPpkXNH9kRij2ObVYn3tC2b+7x +gikpJKalkFWbh6jxo5n9gnfYeyU6bh70X2RukbxxrV88eF7rFjyNRVlO2mwXI9IOISmRU0L1bIk Wr94evO+ai0iQghURUVRVfOae7x4fX4CqWlkZuWQV9Cfgw8/ihlHHkv+oGEIRe21vvckXRaN+poq /vmnX/PtNwup2LmDYGMDmhY1/UpHMHoFW0SEoqAqlknt8bZ0XcZNZPaJpzLh4MNQPb691jepa2xY uZSP//smq1Z8Q1V5GfV1NTQFG+NWRWtXdn+4j1oLt6q64tZHSlp6PP4x5eBDmXXCqQwcMXa/F48u iYahRXj2oXv56L9vsXO7Gcl2BGPfIh7cU1VU1YXHa4tHJrn9Chg3aSonnnY2oyYfusf7Urx2Oe+/ +TIrli4yXdi6WpqCjUQjYWKahm7o+5VQdESigLjUBIvPCp72KxzA9MOO5Og5Z5E/aHhvd7fLdClP Y/7H77Pgs3lUlu2MuySOYOxbyISH0NB1YjGNSDhMU7CRxvo6aqoq2LBuNdMPn82cs75HRl7/Hu9D sKaC9996mfnzPqBkezF1VnAzEgmj6zEMw+hT902i6GmGQUyPEY1GCIeaCDbUU19bTWV5KcuWLeHY E05l1gnfwZOS3su9Tp6kRWPH5nX899XnKSvZTmNDnSMY+zjxG9kwMHQdXY+hRaPxG7mmsoLVK5Zy 8hnnc9jRJ/VIsNSIRVn21We888qzbN6wlsryUhrr6+IxC/t+6cv3jJQSaQ0D26IdjYQJNQVprK+l unQnyxZ/yWnn/ZCR46fsVy5L0qLxztznKdm2hfq6GiKhEIau9+kfvy8hpWweidBjaNZbsLG+jsqy UlYu/Zqzvn8F2QWDunyM+spS3nzxKb76/GPKdmyjtqaKcFOQaDQSv1cOpPuljcWnaUQs8airrWbH 1mJmn/gdTvjuufhSM3u7u50iKdGINNawbdM66mqqzTwMy8R02L8wrDe9YRjosWYTurG+jq1bNnHO RZcxaebRSbe7ctEXvPbcE2xYs5Kq8lIaG+qIhMPEYtoBb402i4eGIc3rHgmb4lFfV8Pmdas5/cLL GDJ6fG93dbckJRpbNm2ktqaKUFOQmKY5GZ37Mbb5rFn5DzHNNJ/DoSYef+AeDl+1nFPP+yH+TqRL h5sa+b83XmTef99ie/FGaqoqCAUb0bToAWld7Arb4tAsa892W5qCjZSWlTLn9HOYccwcXB5vb3e1 Q5ISjdLtxWbgMxqJp4M77N/YN3HUCDcHTCNhGupq2bZ5E2df+EOGFE3tcP+dm1Yz99knWbZ4ARWl JdTXWtnAjnXRIYkuS9hoQo+ZcaZIKERdVQWb1q1mzjnfJ6dwcG93tV2SEo11q5YTagqawSznZugz 2DdwLKZhNFkui+V3l5Vs48yLfsT0I49DcTe//aSusWT+x7z+/JNsWr+GmspyGhvqiUbCjnXRSewA tWbFe8wRrhDBxgZKtm/lzIsuY/SEabCPBUk7LRq6FqF480Yi4VA8mObcFH0LO9YRNgxi9tsvHOLp B//Gum+XcvYPrySQnkU42MBbzz/Gpx/+j53biqmtrjRd1pjmBMaTpEWso6lljKmqopyTTz+HI086 E7d37yXi7Y5Oi0ZJ8UYaaqsJh0JmnQKHPokd64hJSVOj6XdHIxGC9XWU7yxhzrkX88EbL7B04QKq yktpqK8166PozoukO9huopnDYsaYtGiEuc82Ul1VxZyzL8KfntXb3QSSEI1tWzbS2FBPzMnLOCAw rY6W7kptTRVLvvqCYLDRnKKeMJTqjKJ1n0TBDhkGhqGjRaO89/qL7Ny2hXMv+Rn5g0f0djc7LxrF G9aYs1c1c8jIoe/T4u0XixFqClJbXWnmecRijnWxh0gU7HhCXiRCJBLmwh//nMIho3q1f50Wja3F xabPKnsmm++oPz1D2pAxAIjdbNuXkYAWCVNdup1YTSXh0q1Ey7dSU7aDph2biVTtjM/07JX+JQzN xmJavFjQvjRXRHF78PYbiC+vP9n9BuDrNxBXbiHurH54MnPIzm1Z81MaBlXlZWh1VcTqKtHKtxIq L6GqdDvRqp1Eyrf36jWHloJt1Brous7ShaZFd9FPrqP/0NG91rdOi0ZMi5rVkXroJkntP4zMoWN6 pK2+QN6YyS3+PxJqQmuoIVxTSemyBVQv/5zK9d8SKtmCNPZ+TGlfEQgAlz+FlOFFFIyaRPrEwygo moIrJR1XIB1voHPT/rOGF7X5LNTYgN7USKypnu1L59O48itK168gVLwGXdN6+jR2S3w4XEaQ9XVI KVm2+Ct46G+9KhydFo0W9Qz2kZunL+P1B/D6A6T2G0DumMkYZ11OqKac8vUrKPv8HXYu/YLQtg0Y vSAgvYEnLZO8STPIO+hoCg6aRWrBIHypPTvZy5+aBqlpQKH5QjvjEoK11dSXbKF86XxKv/6A2hUL 0CKhHj3urogPy2pRgg31ACxb/BXKI/fx/Z/8oldiHMnNPXHEotdQVIWU3AKG5RYw9NDjCNVUULpy IVs/eInSBf9HrKmht7vY4yhuDxmjJzP0uHMYPPN4/IWDcO3lSuwpmdmkZGZTOG4a486+jKadxWz6 v7kUf/IWjZtXw16I77UWDiEEyxd/zctPPcilP7+FwF4eVel0PY07rr+c5QvnU1qyjXBTsNvR8jlP fUHWqIndasMBjFiM6k0r2fDWv9k273UiNRW93aVu4/KnUjjzBAaeeAH9J8/An7bvVf4O1lRS+e3X rJv7CBVLP8OI7Xn3xS6w5PF4Sc/MonDQUE4+/Ty+e+HlezWPY68tltQGx2jpERSXi9zRk8m57h5G n3kZ615/guL3X0arr+7triWNy59K/yNOZszZPyFnzGRc7n13fZeUrFxSjjyF/ofMpmzZAla/8AAV Sz/F0KJ77JiJFkdjfR3lJduZ9983ycrO5tjTzt9rmaO9JxoH8pDJHkAoCtnDijj02rsYdeoPWPn8 /Wyf9wbGXvS/u4ri9pA97SimXHwDueMP2usuSHdw+wIMPPQY8ifPYOeiT1nzwv1ULJu/x4LV8eBo NEJDfS07txfzvzfnMmj4aEZPOmSPHLM1fbfO+gGKUBRyRk7kyJv/xYzbniB7zJTe7tIuSR82hkN+ 9U9m/+FpCibP3K8EIxG3L8DgI05i9t0vMOnKO/DvgUpoNvHh2FCI2uoqijetZ+5/HqV659Y9dsxE ek80HPdkjyJcLobPmsNRd7/M6POvRvWn9naXWqD6Uhh1xmUcdfcrjDrpPHwp+1b/uoonkMbE869k 1l9eZdDs7yJce2bZCMOaWh8ONVFTVcHqFd/w9sv/QYuE98jxEuk90XDck71CSm4+h/zsD8y4/Umy Rkzo7e4AkDZ4JAff8iAHX3sXGf2H9HZ39gh5I8dx2G8fYdJVd+LLyd8jx7BnJoeCjVRXlLHgs3ks +PCdPXKsRBz35ABAqArDDj+RWXe/SP7hJ7dYTWyv9kNRyJtxAkfe+QKjjjkd1b1vLd7U07h9fiae cwWH3/EMGWOn9vh1l1IiDYNoNEJjQx2lJdt4782X2bx2RY8epzWOaBxApBUM4ohbH2Ps93+B4vXv 1WMrXj/jz7+So257nOxeTIHuDQonHcrRf36Rwadc2OPuSmJ8o76mmi0b1vLGs48Taqjp0eMk4sQ0 DjD8qWlMu/y3TLvuL7j20srnrpR0Jv7090y84jZ8+2DOxd4gNa+AGdfdw4hzfobSw6X8pJToujmh sKaynG+XLeb9119C6rEePY6NE9M4ABGKwpjvXMQhtzyMJ3PPrjXqzcxl6g1/Z/yZl/V5d2R3uP0p HHzFbxlz6W9w+VN6tG07vhFsbKCitIRPPniHdd8u6dFj2DiWxgGKEILhR57MjN//B19u4R45hjcr j6k33s+o485CUfetknW9hcvjYfIFV1J0xe9wBXpuxCiev2HVdy3ZtoW3X/4P4cbaHjuGjWNpHMAI IRg07TCm3/5UjwuHNzOXqTf+gxGzTkFRnB87EZfLxfizLqfosltx9eBQeDy+EQ5RV1PF2pXL+eT9 t3qsfRsnEHqAI4Rg8JQZTL/1cVxpPTPxSQ2kMfkXf2X4kacgHMFoF5eqMv6syxj9w1/2aIzDdlOa go1Ulu3kk/ffobR4Q4+1D45oOAAgGHzQ4Rxyy0OogbRutaS4vUz86e8ZOftUx8LYDS6Xi0nn/owR Z/+4x0ZV4m5K2HRTtm/eyEfvzO3RtHZHNBwsBCOOPImp1/wJ1dW1KUlCURh/3k8pOvUHTgyjk7g8 HqZdejPDZp/WY3kcUkp0QyccaqK2upJFCz5n24ZVPdI2OIFQhxYIxp56MUUXXtelG7jfYScz7pJf HfCjJMni9qcw8ao/kT6m40WpkkXa9TcaGyjfWcIn/3urx6wNJxDq0Iaii28kb8YJSe2TNmQUh157 F25f58rtObQkLa+Qg675c4+lnCcGRevrali2+GtKtvRMbMOxNBza4PX6OPxX95PWf2intld8AaZc exfp/ffNZQT3F/pPnsGYi65H9NBMXymlWUU+2EhleSlfffZhj7TrWBoO7ZKSW8CkG+7rVLr56LMu Z9DBya8y79CWsaddzMAjTu6RtuzYRiQSpr62miULPqeuurzb7TqBUIcOGXbo0Yw598rmZQvaIX3E OMaed40T+Owh3D4/RZfchL9fz9TjkIZBLGrHNnawctH8brfpiIbDLhn//evI7KCWq+LyMPnHt5Oa k7eXe9W36TdyAqPOvQrRQ0KsG1bCV201Cz6b1+2A6H4jGgJQAb8qSHXt+i+gClQ65wGpgFdht22m ugRqL7tUCrs+/2TOu7P4UtKYevVdqO0kIOUdcQoDpjtuyZ5g7HcvJmfC9G63Y0+f16JRmhob2LF1 Czu3buxWm/tFIFRgPiyZHkHAJfCpAr8qSHG1/POr9neQ6TE/60irFUyhyPCYD1xHbQasNr0KZLrN bff2RbPPP90tCKjE+xpo1ceAS8TPuyeFY8C0wyk86vQWn7n8KRx0+S37dPHf/RlPII1xF1zbI9mi iSMpNdWVrFuxtFvt7ReBUFsIFCFwCXAL8Cjmn1cReBWBRxF4FPM7lyJQhPmgp7nbPkAK5udeBVQh cClmu4ltxttTwNWqTf9eNjlcCvhVsw+qYlo8butc3Urzf6uCeB9TXD3bx4N/djvehBmxQ0+6gKxB vbumaF+n8JDZ5E05otvt2AHRaDRCU2MD3+63otFJS0NgPrRCCBTrwfBYb9pUl0K6W5DhFqS5BSku BZ8q4g+QKswHLNHisAXDZT1gijDbt9/UaW6FDLcwrQq3QkAVeFVhPZDWQ6nSoQXT06gKpKgi3lfT nbItC4WAquC3+uhK6KNL9KybktqvPyPPvAKEwOVPYcy5VyHU/ca73S9x+wIUnXcVak8UTJKSmKYR agqyo3gzDd1YH2efX8JAsd7+ccFQBLGaMoQWwq2AUE13wVyoGDwZebh8KUR00AyJROBRJC6PQNPN t7aaIBgexRQMTzRMpKYUYVk0ErM9zQDD7ceTlU/UkEhASEh1CxpiEtEJ8ZNAMktLKdbl8VhukWIJ gAK4FYESbkSrqwBVIIRANyRR4cKXNxAMSQzi1ki0BxcAG33m5VR//haFR8whc8DQnmvYoUPyp8wk d+JMyhZ91K12El2U2qpKNq1bzeRDuxbA7j3R6CQi4d8uYb5hn//9Nayc93a7288851LOv+3vNAgX TTGJYYBEgJR4VLMdAXHB8KsKaS7JB/ffwbuP/q3dNicedyrn3vschlDQpTStHiQZlusT1z/R7ApJ iC9jqUtTfGJSEjPaioiCKY5ea2jTFkm7PYEtAub5r/30HZ696dIWfcwbMpLr3llOLAa6vmcy51Ky cph6+W/ImDrLsTL2Em5fgNFnXkb5kk+6PephSDMgGmxsYMemNUw+dFaX2tkvfnnzITUfHJ9q+u8d sfit51g1710y3MRNdlU0i4UAVCuG4VME6W6o+vYr3n/6Xx226bECjS7RbAWY/RHNMRHFdIvsP4/1 kLsUYbpT1ghHhscMaKaoZgAzxQpwZrjMbQIuc/sW7SmmheVTBWluSHO3/dmEMIOkLqtvyh4qHpw9 8yTUHq465bBr8ibOIG1Y21Xuk0FKiWEYxGIa4aYgq1eu7HJb+4VoQLN14LPfwh0QDYd5577boLrU Cnaa8QxV2HEB8//diiDFLfCEG/n3b68mFo102KbLOq6qCCtmQKvgqTWaoTY/+H4r7uJVBR5LRMx9 zPiIVzUF0NcqwOlJEIiA2txuiluQ4YZsj0KGp+0FEJhulqrsMher+/RSJfMDmUB2LgNnzel+Q1Za eSQSprKilKb6rhUf3ucDoTYi4WHd3Vt0+/o1zL3vDjJUg4BL4FKbg6iK9eZOcQnSVMmHj9zF1rW7 Vl1VWIFGpVks3FYsJMVlBk6zPIIcryDPK8i1/rK9ZkA1za3gd5kCZrfRQsQsi8KrCgKqGdzN8pj7 5/kEeT6Ffl5BP59CjkdpNwgrbGFynuk+yfDZp3d7MmBiScD62ho2b1rfpXb2+UBoy13MB6wzL7v5 rz/HpKNOpOi409CkREowpLmvV1VIc8HO5V/xxuMP7LYtxX6oBcQUM7ZixhfAK2OE6qopW7+C6q0b KV6zEl3XycjOYdDYieQNH0PGgCFIXzphHZp0iBrNsQ3TXTJHRAKqwKfoaJU7KVu3gq2rllNRsg2P x8vIceMZOGI0g8ZOIGa0XaHcDIHYDpgzG7CvkTJwOJlF06hY+nm32onHNRrqKSveyPgpySeQ7Zer xrenGUJRkEZzeDEaCfPqvb/h19MOIT2jAEOCbpgPaIYblHADT/32mjZuSet2bDwq+AzAHnUxYmxf /DkfvPAEKz/+H+FgQ4f9HTx6HDPPuJDpp19EZmYewZggokt0aQqSVxWkqpJw6RZef+I+vnr9OZoa 228vt6A/WXn9On1dHPoGbp+fftNmdUs0EuMaoaYg61at4JjvXpB0O/tFcldnmHbkMWT1K2jx2faN 63nxb38gyyUtN8HM6chQJR89fDdb1nzbYnuP18fUI2a321W/5YpkewTuujJeuu1q7vnhaSx+55Vd CgbA1nWrePGuW7j7/KPZ8slbZLgMM6/ELUhzCTJdsO3z97jne8cz75mHOxQMgMrSEtav+KbT18Wh 71Aw/dh20/mTwo5rhEMUb95ItGnX92577DeB0N0xeuohnH3VL1GUlh7//NefY+mHb1PgV8n3KeT7 FEpXtOOWCMF3r7iOooNmtGlbYo60ZHsU1PoK/nH5GXz68tPoSS5GU1a8iYevv5Tlbz9PjhtyPWYM pG79Mh7/9c+oLt2R7Gk7HEBkDBiOv5tZuHaNjWgkTEN9Ldu2bk66jT4jGqqAOd+7lImzjm/xuRaJ 8PLdt2DUlNLPp6CG63n4N9egtXJLRkyYxPevvbHD9hUBXqHz6B9vYcO3y9p87/Z4ySoYwEFHHcf0 Y09ixITJBNLS2pTNCweDvPinm6hdvZACn0qaKpn799upq2xb58AXCDBi/CSmH3sSRQcfSiAtHUXp Mz+ZQ5IEsnLIHzm+2+0Y0iAaMVPKd3ahmtc+n9yVDIFAgCt/9yd++e0SahMewu2bNvDQnb/jprsf 4JX772LL6lZuic/Hz+64H99uFq9Z9uWnLHjzBaRsGZAZMX4SF954O0VHnoDH5UKXpojV7djEy089 xrxnHiLcFIxvX19Tzav/vIebH36GdYsWsurLT1oeSAgmHHY0l/7mT4wYPxUD00WqL9vBe6+/zDv/ upv6mqouXSOH/Zu08TPgfy92ef/WcY3ijWtJdnbLfjPk2lkGj57AOdfc3OaNPP/153j0zt/y2mMt 3RIhBKdffh0TDzHdknaDrNa/P3j7DWJay5GLwaPG8vunXmPi7FOo1xW2NulsbdIpCem48ofxk9/8 iXN+cStqqxL1y776nO3FW1m38DMioVCL7/oPHc719z7CwKKplIYNtgZ1doR0RE5/LvzJdfzwzgeT vzAOfYKBk6Z3v+CRnVIeCbN+3bp45nJn6TOBUICYAWFdcuL5lzDhyFZuSjTKaw//rR23ZDIXXHMj wZgkupss3Q1ff9Lms1N/dDWp+QOpjBrURCW1UUldVFITheqoQVCXfOeiH5HTf2CL/RrrainevIm1 Sxe1aXPWnDPJHTCYWs2gNiqp1SS1UaiJGARjBmmFQzp5RRz6GmpaJp7c7lf10nUdLRIhWF9LY01Z Uvv2GUtDAo0xSU3UoEn1ccWtd5GZu+sJOV6fn8v+8A8a1QC1UYPGmNFut+zPStsJGg0fPYaYhJgh iRqgSXOuSUxKNAOiOqSnpeP1tK07IYPVVJe3/cH6DRxktmFIYtZQcUxKs22cLIwDGVdKBt6cgt1v uAvswjyxmEZTU5CdJSVJ7d9nLA1DmlZGY0xSGzXwDh7DGVff0uH6HUIITrrsWvInTKc2atCgSUK6 +cB3xMARY9p8tmb5N+ZcE2tGqp2V6VYEbsVMF6+uriIcaZumrmbkkz9wUJvPN3y7HJeQVl0PM4/D ng7vVfZ+ESCHfQd/WjqZ+d23NAxpENM0wqEmKiuTmybfp+6/qCEJ69CoQ70mOeTMiyk6sv31O4ZP mMwpV9xATdQgGIOoBF1KFEXF5fHG/8w8VJNRh85u084bj95HxZZ15HoUsr1m+neWV5DtgVyvgk+R vPro/VSVbGuxX2ZOHsOGDWP4+Elt2vzi3ddYuewbMy3dZ7ab4xXkegQedHas3v/zNATECxq19+dR nGS1jvDndV80pJRxFyVUXZrUvvudaEjaN88lpukekxDRJY2aJKh4OeeXd5CWlYPqcqO63Hh8flIy sjjjprsJuwOEDXM/MOeYBNIyyMgrIC07D39aOqnZuXgCKQjg5O+egcfra3Hc8h3buPmCU/jqrRfx aU0M8EgGeCR5Lp26DSu45+dX8Pq/7sbQWwZMph4xm8IBgxh3+HH4U1pvlZHxAAAgAElEQVSO2tRV V3HPFWfx/lP/JFpbRT9VwxNuYNNXH3HXVRfzn99e3eG12R8IqKa4plrlClNdZuJdmrv5szSXuc3e rpK2P+DO7976MlJKaxRFR9OiVFVVJrX/fjXkKpEYUrQZ8gTTStANiWaYvr+UoGsS79Dx/OL1Rfgj 9eabSwCKQmDACJr05oLFXsuV6JeVxrjhg2kIm6MkwWCQ7OwcXIpg3EEzOPHSq/ng6QeJRsIYVnJX +Y5t3H3VD3B7vQweOQZVdVFdUUblzvaTtbLzCzjryl+iqR5GTj2UyUedyIJ357bYprJkO/+69Xq4 9fpOXhswpETu49IRSCjdKIQ9jb/ZqpDCdDUNIZASAqo5Qye0h2qE7I+4M3J6pB17+LW+ri6p/fab uSeGNeFMMyRGO/vqhlmlSjdAN8x5HYYAIwberHyEko/bKtOnWO15LTvLnoaeqirk5/WjqMisXdDU 1EQ4HGbkgHwkphVz6XU3U128nm+++BQtGiYaDsWHrLRIhI0rl+/yPFIzMvnB7x/AN2wCO0M6LkVw 5vW3sX7pV1Tt3J7cRUlASuv8E66NWxFE27tYvYQ99T+xdKNLEbgwyw5guYgxK5Acw3QOvYo5stVz 657v37jSe0A0LGtDSkldY1Nyx+/+0btIklanxHwgwh0EKyPW6IWOKQj2Qx5XGCEQ1oQ1tyrwClCR NNZW0lCymdKaKratW8WadesZniLITE8jKyuL1NRUMoaPBSGIxsDwpnDVvU/w5pMP8N7TD6GoLrRw CD3WduZpy/MVDBxVxA9/fz8FU2ZSGZHEpMQlINB/BD/914s8dsNllG5cndyFiV8fSciQ6EbzsLvb Km24L7yk7fiFalsXmKLmVyQ+q6QjmHGpkC4JSwVpdVwVZl3XBk06wgHk9eve6EkLpETb3b3biv3C 0pBSIoVAl5KwIUwxaEVYh5AuiRkSA/PBsQdOFMwRjYAKKYpky6JP+PTNl1n20TvtDnl+0er/Dzro IKZv3Mrs08/FlZEHvgCn//SXzDj9Qt5/5hEWvv4sVeVlHQrH6KmHMPvCnzDlpLMJK26qo6bIGVKi CIgYgqwxU/n13E/5+D8P8unzj1JTXopoJ2V81PhJ9Bs3jU+efbjVNRKEdFMoTeGUCCC9VTX2NqNJ sqVDE0p4KjUpcbW3TytsCwKsd4G9fULbiccQwqzV6lUED11wJNtXLmnR3ojps7j4sf+a1qVhuicK kjS3INKDNU+BeG0Us1/N52m7wGaZRvMzzSrXqCrg6WYxooguk6obuyfRo9Gktt+vLA07eeuCf7yE P6HsX1RCKGaKht5sWMQrdPldggyXZOeSz3npnt+ydunXSR178eLFLF68mH/fcxtnXHY1x/70V3jd bjLzB3De9bdz9i9up2bTKsqKN7Bj03oM3SA1M4vBo8aSM2wsrowcQjFJvQ5hTRK13ScJQpjulpTg d6VwzOU3cPJPbqR+2wbKN66mZPMGsrIyKRw2mn5DRpKWVwjAT+64D01CVJeEdUkwBsGYRLdudiEE ipRm7MC63u1ecuvml9Y/UlyWSAN+aw8R37Tj4d52n6GEts16JmZ/7HKEXqX9SLxilXXUDNPFNNsw T8DThdC9fU1aCFfi+bR3bYRAYoqK+RIyi1Qn7g9tr4m97e7wqwJdQoPW++KxWyu5Fft8IDRmQMQA n1VfRtNNPyyq2xW8zAdQt5Kp7B9AwXRDUlyCDBHjowfv4pX7/titvgQb6nnmb3/kkzdf5qbH55I2 aBRB3XxQvUOKGDa0iJGzzW0ldpxF0hC1Er0ssZBWoRxFWA8TkqhhVkDXEQSkJDBwJKMHjWTcMebt aUhz3+qoEd9HNyAGaLoZz7DPXWDVRbVuaLvqmS0g9h9YNznNwqUnBCFlQnuJQUsbWyhEwjYCqzo8 zcFZAzAM0K0d7GUj3B2UJlQE+BXQrJETRcp4AaVksM9BkSIuXHbhIyGar1PitYnva10Tw7om0rom 9jygjq6Jec6i5bVL+C7+J0EgSXcL6ntZOFpPcdgd+7xogJkZKRXzYYsJK0MSibDWDzAkcZcE7LKA ZqQ+XWi8f//tvP5w+5XGu8K2jeu44wencvNTbxAYNBpNN/tju0E2hrTcBatfLiFQhMQtwUC06Ld9 E9thGNslo8X7zdzGQMb3UaR10yugSjAUgTAkCFAQ1kJPZt1Rl1Vf1S6ODObxdSniWadRw3zD69aD Kml+sFyiuQ17JFRYeSyKSPiz2tYB3RBxwdQSrA1VmIWT29MBBfC5BFFrW/v6qaLzK8cZmPeNIc0s 3Zi1/ISkWSRs4XJbRZyVhNwQXZr9jhmm4GvSDLAbdhuY19Wu+WoLhy28iaJhY8flYtKOzVi/r/3D 9xKKKzkZ2C9iGmEDiEkCLnPNESFEXPGRrZYDsG5ojxCkuGDRa8/zxsN/a3dSjhCCsdOmM2rGbCZM nkr+oKEoLpWG6iq2rV3J8hUrWPb+6zTW1bbZt3TrFu67+gf8+sWP8HkDRHVpLtCkND8MEqyHUCbE Y83bSLcEJWY9oFgPkU8Bv0ug1ZRTsnktW1avIBwMkp6Ty7CiCWQNH0dOWpppWWkaaxbOJ2PEBNIz s2jC9PljYJnyZklCnwJaQy2Rih00VJZRWbKN2spyfIE0Bo0cjTctk/ScXPyFQ4jokqaYGSPSZPMD 4lXNtvyqGYtQhVnE2DoUoWCQmuJ1bFy9kuoyc6i5YMhwCkYUkTF4NNLrMpPorDKHbsWMDdz75ucE Wt2FOlAXE5a1JhFCia9509m0jZg10haKmZm+YYN4iUW7rYDLdBNCtdXUbllL6ZYN1JTvxO0LMHzC FDKGjiUrO5eQdU0iuh3fMMXMo9jLZJq/uyBhhI/mqvVCNL9Awrr5FzGaX3h+VdDYXqCuAyrKk0vG 2iVC4EmysM9+E9MIG6BFJR61pSwrmKX47P8WVrFen0ug1Vfzzr/ubNfHHD1pKj/+69MMGj6SoKEQ 1pvjARmDBP2mHcVhF4L84/189MS9/Pvu32O0KgO4aeUyvpz7NCdffCVRl+TaI8ZQU76zxTazTjuX a//2OGFdsmXVNyz5+H1KN6yirGQHW1ev4IRLr+WUK39lmsp6lDWffcC7T/yD1Qu/REoDQzffbUII FEVBKCojJ0zm4OO/gwik8+wfbsDj8zPtuDkcet6PGTB5Broi0GMaa//vTdZ8+CbrFs2noaoCaRjW MJv5b7N0ofl6FUKQnV/IhOO+y7HnXkz2iPGEdPOmVgR88dR9vPP337W5jpfcdi/fzHuP5V98TCwa xTD0+PUWioKiKKRmZDH9lLM49kfXkpk/BE1ay1EogpvPPprNK8xAqO06TJw5i9898w6blyzgtgva z+hNhkBWDje9tRh/aiZgxkVcGCx95yUWvPwEa5d8hWEY8esDAkU1+z566nQOO+9yJp9yDlHVFGUp Tatn0YuP8Pqff9nmeA9+toq8/oMor65mxacfsG7RfCq2baF0WzGarnPpY+/izilE6jLuYidDrL4H yiIIc6EtIQQZqckVLN4v3BMbHdpN8olJCLhE3Id3C/ONuPyD1yjfXtxm+yknncVNDzxNBBclEYMm 3TDjIVYAUMEu9gtpbhdzfnwTBVOO4p7vn4Deamr8h88/wakXXExqShpS14hpLSPRkaYGPn7hcV55 5O+UbNmEHmtZ7SvdJenvU6mrq+HJ237BR6+90CZ7FJrTftF11ixdyJpvFqEIgWEYhIONzH/jRRa8 PZepc87lorseAwmL33mZb//vzY4vqJQYsvlYFTu2Me/pB/j02Yc589pbOOEnN1nDwgKfMNqcG8Bj v7223ZqqANIw0A2DuqoKPvjPQyx5/00uveshxh1xArqU+F0KRiyK1qpdPaZZ82xku8dMFqlFyXPp uDzmC2Xnum956PpL2Lp2ZQd9N6eOG7rOqq+/YPWiLxn6xN+44q9Pkzt8DFHdzC8JdNC/0rUreO7O X/HlB+8RCYdaHCNv8DB8KmZ8rotuiVbXM7VU7BdRekZGUvv1iVmuEcsPB2vURBEosSjL5r3bZtvM vAKuv/PvhFGpiBhURyT1mqQpZtAUM83ZYMygUTOo1SRVEUl5VHLIzMM448e/aDP8uGXtSjZt29bh Wixf/u9t7vvVVWzbsK6NYNj9NSJBHv71lXw497l2BaNdrGy+RFxuN0edfr6Ziu3zcOyZ3+tcW63Q Yxqv/PX3LH7hQXNOjUch0MHaCB0JRntUlZXw799cRV3pNjLcCqkugdKBySlEDy7HoLrwZOSS61Oo WLWYv1xyKsWrV3S679Iw2LxyGX+5+BTq1q8g36eS51VI6cBXuu1H5zLvjVcINwXbPYYdA+nq6Wll W7u4p4ltYSiKitvtITs7uWSx/cY92R22aWtH5kUsTE07GZYzT78AX1Y/doR0GjRzuDJGc0KY3TUh zag90h4eNDj+oh/z5mP/MLNA4weWVKxZBkXj2u2Xsbul9CT899UX+OztV9t1o9weDwOGjcTl9lBZ tpPaio5rH6Tn5jFt5uEYihkPmDTzSAoGD6WiZDuTZx5J1uBR5GSkMWTMOHx+P00N9axavZqytStY 8lnLtUKlNHj+b3/kxLMvIiUjc5cLVNn4Ayn0HzocoShU7NxBXTtzGsq2b+WTZx7iit/eudv4RBJu /i6RmJZBfX0D91//I6rKWrqQaZlZHDbnDGbPOZ20rBwa62pZtHAh8555uMW2VaUl/OOai7jnpQ/I KCiko8qLuxvCtEdPukqoIrmp7O0hhEBVVdxeL4GcwqT23a/ck11hCwaYb6lIYwNb1rRdBGngoMGE dDM4plmpynZUvHV7EoFmSCJW8Kqw/4B2qyatXLSAo89IvhQ8QEMwyKdPP9zmjeT1+/nO5T/ntB/+ lPT0DHM0QDfYvn4Vbz7yd7547402prHb5SYrLY1GzbwjfTm53PDg8+TlF6AZBrXbt7Bj41oaqquJ pqQwaPhIxh1yOOkDhrF93Qr+fPm5lG1vno1bV13FplXLmTiz4zU/3R4vR552LidfcDGFYyfjcXtQ FZC6zudvvsjDt91AKBhssc/qrz4h1FBLanomHZmcugHZQ0dxzf3PABKvapYaSNQZXcLyBZ/z7tMP ddg/RVUpOuwYAi7Ba889xtb1a1p8P2jkaH7/1GsUDh3RotrblCOP55wfXMrvrvwRaz7/IP75tg3r eOaBe7jq9ns6POaukNIMqKqSdqdD7I5QQz21Zd0XDUUouNxufP4AubupO9OaPiMabWjHfIeu+2N2 rKM9dmtNAOlZ2RTNnM3wsRMYd/B0UvMKcecMor5kE/PmPtNm+xO/dxmX3HArYalQFTWISTPiP2zi wfziH0+R+9c7mPuPO1vsIzCHAVMsuz5YuZPVX3zII+++TvG61RixGDFNQ0oDIRRcbheKqqJ6vEyf fTzpA4e3EA2AlYu/2qVo3PDwC8w4+gQaDJU6zUDTwSPNpSKOP/8Stm3fwdz77mixT3nJDhprayzR aN/ciBgSJT2HcSeehRDmCEOWW8FraXZZdS2v/u02PnjhqQ77VjhsJBfeeDtHnnw6SjTEkvffaLON PyWVVx76a4dtZHhVhGg5SfLT157jgutv63Afm6Jph9B/3EFMmj6DjMLBiLQsQsKNmplL1HpRtV/2 qWNiwToiVd0bPRFCIBQFl8tNIJBCYf/kptrvF0OunW3OVm4pwZOaxpDRRRSvazmXY2d5OT5F4FXB HRPEsIYHWsm+sMbfXUrzAtBVlZXtxhyKphzSYb9SMzI56+qbOebsi3CnZhKWCjqmC5XhVqhdVUFt RdtK5IcePwdFUQlGzFiLJiGmSLy6Qo7Xzdix7btDtnB88tEHPPWbqyjdWoyUbcVTWittARAK8fEb L7fbXqixvsNzA5h68KHUGyqVEbOQUcwAt2rmZahCYcSotiX3q8tLCTbY7XZgaUhruFo38xjcgOEC XdP49L9v8u+7b6Nk07oOXDovx37vR5zz0xtIzR+ArkC4vobVS9pmAq9btoR1y5a0+XxX1NdUs3np /A6/nzL7RL5/420MHDWOsOKhUTfrvIQN8OhWRrBh3XISwkmYHHpDLdHKnbvfcDcoioLb6yUlI4vU rPyk9u0zMQ1o9hVjEnD7yCoY0EY0Frz+HN/76XVkeNLQrOc/YkhcimjhoqjCHFbzqYJ0F2S5Fd58 6Qm0SLjNcfPHti2kYzNt1vGc++NrqdGgPGLQpJuJWR4FYtLAnZqJPzWNpoaWD2e4sdEM6gpzJMcw 7FXqd38dln41n7//7HuEGpKb8twVooakLmpQr5kTzQxrroaCoCEm2/fdpZ1mBR3eCFZsSlfM8/a7 BKVb1/Ofu29nwXuvdziqMnLiVC7+1R8YPfMYQoZCUDPwqoJITHY+yNwJVi1aQFZu+yvd/fxPfyd9 4HAqwga1YUnYShAzyzc0T6o0rGzmJGLJbF/+dbwkQ5cRAtXlwuv1MWrUqKRTbfuce2LYmXteLxOO OJ5vPv2/Ft9X7NjKP+/4DdfceT9g4FIgpIt49qAdUFUVM48gxWUuaLRmzSpefuDuNm+2/kNHMGzo 8A77o7pUmnRBVUSnTjPjI5LmeTPevP6kZ+e0EY23n36QkdMPJycrB1WYiVZeRZCiClYv/ZqXH/57 u8eLRKLMfeS+NoKhqCoTDz2cwWMnUTRlGgC1VVVs2rie6i3rWbHwy3YFcXdE9ObRq5j99rRmHNsJ Yl3BKwQBl4JXSohG+N+zT/PWA3dSXVbarnXhCwQ479pfc/LFPyMlJZXaqEFUNmfTpnhUfIGUFktJ dIdQY32HooHLTXXELDTdGDMtC/veslPRpTUtINm5Jw0rF3Sr3/Ywq8tlxjOGtFPCcnf0GfckrJtT rA0h4pl3E085h8xH7m2xBoqUki9efJxI+VYu+eO/GJjfn/qYJKKbs2jt2IXHqrHhUmDB3Kd4+Pab CLWzXOLR5/yAlPT0jk9TQpMuadLtB8zKBBSg6pCZXcjYGUdRWry5xX7ffDGPG+fM5LCTv0v+4JG4 VahuDLFlyecs+eTDDm/+YF0Vm5d+2ebz71z8E6645U+4/f4W73ZDgh4JUVrTwL9vu5ZP3prbZt9d YafJ2+nVBs2p8Ynp1MniUSFDCL5dtoR/33Urq+fPa3fIWlFUJh02i0tv/Quji8ahqCqaYaaGS8yX qE8VuP0pjJo4hRVftZzDPGHGEfzywRfM3IldENahZP0qho0pQgiB1+fn/Zf+0+62UV0SjpmWV9Sy MuwcILDmCUlzpmsytk9TbRVlG9oG95NFEQoer5eUtHQKh4xMev++457IRPfE9CEzcwo48YrrefFP N7XY1DB0vv7wf6xccghTZ85i5OHHMXL0GLLzC804Qn0t24s3sXb1Kha/+zKlxZvarHcCMGD4KE74 /hVohohPr26NORlNxtPFE4d2I9bb+MhLfsGyzz6kJqGOqDQMyrdt4fVH7kvqMsSiGo31bd2S3H75 ePz+Np8rAhSfn+xAuP2SA7t5DcY9jXg8ScZniMa/7wJaOMQLD9zNa4//i8a6mna3URSVI087i+PP /QF6Uz2rFze/hXXZXLTHBahuF+OOPKGNaKxa+CWP33Y937/uZgaMGtfG/ausrmHxZx/x/tMPsm3D Gu7/7wLyWy1H0ZqoNP/igmoVFmqIyTbTHpKhbvsmQtvWd3FvE2G5Jh6vj7T0TAYNGZZ0G33GPdEx FVyoEiHNilVBXXD4uZdSsWEVH730dKs9JMGaKj5/9zU+f/c1vH4/bisH39B1IuFQu282m6x+BVx5 zyOIlExqogYZ7vZV0FyKwJpkhi1s5jRr3TAtkOwhI7n4d/fy9K3XUlPWvSBXSkYGQ8eMZ+03LddT eenBv9Ko6Uw95FDyBwzC5XZTX13Ntk0bWLNmNV++/hyV7eS1rFv4BcFox9fBtjB29X377PqtEW5q 5PN3X+9QMMCsqP3lf9/kq/ff3mVbACnZudzy2pd8/uoz7NjU/OAZus4nb7zIoo/eI3/wMEZNmERK eiaxaJjN69awZd0amupq47kXLzz0d6669S4UV8emScww4xRx4cRcXqO7RdRKv/4QPdq2qn1S2PEM n58hw4bjCaQl3USfEQ0wU8w9VkBTMyAUk7hcKZx+8z243B7ef/bRDveNhEJtVjrriNz+g7jyvqfJ mnAoNVGJKsxJVe3dFFKaE5gSK2rZZnxMmoHEYEwwctYcfv3sGN546K8seudlwqFdl2Dzp6QSCja2 +EzTY2ioHHP2RW1Eo7GulpfuvZ3XfT48Xh9CmPNTwqHQLgOEqxbO55Hf/pyswvbfrpphJcclnrP1 /3aco31kq393ASmJhjsXh3H5w+RlZ3PDXx/mD1dc0Kb4UrChnk0rl7FpZdt1ehN5/98Pc8y5lzBy 7PgOraioNWnQ/r51GcauoEVClC/5tFttJMYz/IEURo/rOIC/K/pMTAOah+m8ikQXprXRGAPcqZz6 q7sYOW0Gbz/8F7au61pJPV8ghSNOO4/jL7sO74AR1GhmEpJZF6L9EfeYNN2QxDeybW0YCLNeiC5p UgR5Q0fzi7v/RclVN7Lov6+x+puFNFaW01hfixAKaZlZ+PMGMH3mYXjyBvLXK85ucaxQfR1VW9Zz 0nk/oGTjWt555vE2owzRcLjTDxpAXkF/TrngYr754pN2vw/p1rTzVhXApJREpSDawdNiWPVc98gw WntIA6mFGT7tMH792Fzu/+11FC9bmHQzuQMGsWPnTvJGFMXjU60J6xLZKo7RXYLbNlK7Ormh4fZQ hILb4yElLZ38ISO61EbfiWlYhGISl1s0T880JDIGMdXHmFMuoGjWiaz8+F0WvPcGm5Z+SX1N9W7b HDlpGiOnz+KI0y8ga9hYgripjcr41PGYYdaVaO8e0gwzLmAHWe3IvwFmAppVL0KzxGXH9i0QqmfO j67hHLdKTIsQ0zQEApfbjeLx4XG7WPl166KEEKyvo3jDWgaOm8r5N/+ZsUedwrtPPsDGxfNpaieI ayOEYNDI0RQdNJOU/AG899h9hIKN5A8exm+eeo384UVEPv243X2bdMN6QBLyZDAFXNNlhzkItZqk MmoQa7eyPIRjPftekYZOTX2QJsVHRtFB/PKpt1j69kt8+fZLrF26kNguzP6U9AyGH3QYBx87h6Lj TsObkUtt1CDYQZ57SJe4DGlVK+uZ89j08Rto4eQKALdGCIGiqni8PtIzsxg2LPkgKIBYVNq5UNUd 11/O8oXzKS3ZRrgp2G62ZTLMefILskZP7FYbHeG1siLNoVNr5qtViMZv1YVw6Rqx+moqykoIl2yi vqqSzWtXEQ2H6D9sJJk5eWQPGExg4Egys7LAnx6vQxppVSPDrs8QqdyBFx2XFQiMSol0BxAZuaYZ L1umrJuFXMyFgVJdCqmxJh7/+YVsXPIlKVk5jJk4lf6ji/AXDqOfVTpdM6B851a+fOtlNq1uGUn3 eH3c9OgrDJt5LE3W3Sq1KMHqcmq3rKVm53bqqyvYsXE9/YePIiUtg6zCAWQPHEp2fn8CaRkYQmH7 2hUsnvc+U4/7DtlDR6NLiDTWE66vjQ/pa4YpCL68gUSlEl+O0pAynk/iUUCJNqHXV1ml/awaGVKS mleI4vYQrNyJ1KJWYR6r3oXbR2p2Ho1VpRDTUBVQMet3dPZdExcuwwxER6VCILc/UjFjES5hLlmh Rpuor66idv1yKrZvYeO33yAQ9B8+krzCgWQW9CdjyBjc6TnEXB4iloUkBOhNDWgN1bisgkcxKYkY Ek/uQDShWLkZ5j3TkcB0hqbqSv7v56dRv/HbLrcB5rC7P5BCfuFADp11HNffkVyQ3abPWRpgvrGJ SXOhHcOsgCUNuySgpCkmcCtuPOn5ZGXm4xo7FVXAFGF2TFqjHDrmQ1onQYvIeAWo+BCjtCtpgTQk 7twB8TJ7AC5p7qMl1ATd1a2zZN67rPziQ/RYjGBDPeVbN8M7nT/vzIL+ZI6aSLUm41XbFTy4cwaS mzeQgoSKW9CyanuDhLoIgEQdMoGDL56AAVRFTAtJeNIQeelx0VClxGuYwqjZ52ZZU2ZRY7PyldsT wJ2XgqI0lxoEaDTMIQYloyC+BgrW9zGgJgYiszBew1PSXC+0s0jrNxQGKIakUYIRM+L1QV0x8KgB 3HkB+hcMYhBwsF2By7o+ZsUuCFn1XOxYhQAUbyouX2q8VKAKeAyJZpeetK5JuJsBjYoVC2jY3DWX 2qZFfkYghaLx47vcVp8KhCYSsUq1+V0CjyLjC/DoAjTMN4Jir79h7aNYpcDsoVtJc2Vvw2jOQbBv BhsFYQYDdYkmwB5wtN92tsDYYqRZqdaJNFZXMu/xv+1yxGZXeHx+TrniemRGHo2atZyD1UfVeijt QwrRNijbeohUIltsI6z/Sig0Hn8oDdnSf7fbRJqxi5iQCKPVvnZfsK5XoiBY39s1R+0+dwW7oLFd WjHxIBpm3owqBEqsucqWXYELmn9vvZ02BLYIy/g1bXFNsHJVuqEZWriJda8+huzE/KbdEY9npKYx cERRl9vps6IB5o/XGDPL8Jnrg9oFaoU59d2qMZr4BkzEvkHst44tFJJWFoM9hIpZs9O+wZuzAGW8 9J9dMT0FgT1h1t5u3HHfJZCeQcWWDZ1eOCmQlsGoqYcw63tXMOTwk2i0p/vL5n7acYP2zrPNubT+ LuEBV4RZMiDxmtDq/CT2miaWhWLFepSEgjOJ7doParudkHTwRXK07quNWbHdFDVoOyEx8drYmZx2 G4llG+1za32cnqg2XvbNl1SuaJuslyx2PMPr85OZk8uwUWO73FafFg0bXVriASDMmo4C06+NF8ht 9SqTND8tEcMOeMp2hxAVpdW6Hy3asdtouW9USnwJxYXd6Tkc9qNfMvviqxBN9TRUVxIuLaa+vISK Hdso29ZceCWnoD/9Bg8lY8BQcoaPJSU7F80VoDFmCoYdX7Af5myitTUAABOwSURBVMQ+tVjbI+Ec oWURZI9iisCusHe1r4v9LhQ01xUVQrYryPb+e2nspAPpkbgTXbYEywZaCox9D7RusaPf2y5I3B3B 0MJNrH7xn+iRzqUC7BJhBtL9gRQGDBlGWlZy0+ET6VNDrrtDt45rB6USq3LvqkO7Mwx1KzCaDLZY 2DERe39d9ePJCJCRVUDuqAnNJfYR8WrFtqmsWa5OnSHRNBkPtsZdIazU9RY+dcf9jLsVmK5MVw1i 261r2heWdtsNLe8B6Oj69MbKbjsXfkzFN591ux0hBKqi4vF4CaSmMWHi1G611ycDoZ2le+M/3UOX ENXBp5prnUhhBlPtXJPWsRZ7uQawXaWW/rY9z8O2MKLSzBfQuniSB8ryh715D+yKaFMDq56/D6O7 GaC0dE2ysnMZvd+Kxr7/EtrjNOlmLMSrWmP6Vs5Ge7GWuFeR4FHYN3xi7MS2LkL6vr5+vMOuWPPG 01R9m9xKgO1hF9xxezwEUtMYMHgohYO7ltRlc0BbGr2NxBSOiG7GRexV7BXRPHUee4GgVgqQ6G/b Q54RwxzlOVCshL5K+YaVrH/pn8geqv+hKqaVkZGZzYwjj0You5nSuxsOiEDovo65EllzXEOQuNTf 7u2Fnso67CrSkIjOVB522C1aOMTqJ/9MqHxHj7QnFAWXNczar3AA4w86rNtt9t4SBg4dYscmOvvX 225I7ZKPadrSveQjB5M1bz7N9i/e65G27ACo1+sjLSOLKdMPIyOng8JBSeCIhkO3CdVWsvKfv6ah rHO5JQ7tU7J8AWufuRfZAwtEQXPtDH9KKnn5hcw86vgeabdPLJbk0LtUlG5n7fwPWfDXG7s9qepA paFiJ4vv+xXhqo7XtUmGxBGTtIxMJh80nf5DuzZBrTW9JxqOC9xnqCkpBqB8/nusevLPbZaudNg1 WijI8kf/QP3apT3WplAU3G4zlpFfOIBZJ3yn2wFQG8fScOgxpGGw8sUHWf3Wv3u08ndfJqZFWfLE n9nyvxfbLZjcFexYhs8fIDM7l4NnHMHgUV2foNYax9Jw6FEMLcK3D93Kho/fxuhufbs+TiwWY/mL D7LxlYeQu1nKsbPYbonb6yUtI5OBw0ZwzJyzeszKACcQ6rAHiAUbWPbX69j0+XtIRzjaJabrrHz1 cdY9dVePZH3amGu0ukhJTSM3v5CjTphDQRcqju8KRzQc9giR2kqW3n01Gz9717E4WhGLxVj12pOs fvR2YqHG3e/QSWwrw+cPkJGVw+hxEznqhFN7rH0bJ7nLYY8Rqalg6d1Xo0fCjDr29HYXzz7QiEWj LH/5QdY9eVePC4ZQFDwe0y3pP2go3zn3B/hSM3vsGDbO3BOHPUqktpKlf7mWSE0548/4EarH09td 6jW0UJDFj/+ZTXMf6lGXBEzRcLvNgsF5Bf2ZddzJjJkwrUePYePMPXHY48SC9Xz74K3o9dUUnX8V vrSM3u7SXidYWcaSR25n6/9e7LGgp40dx/AHUsjK7ceEyQdx4hnnI9Q983g7Q64OewVDi7Dq3/fw yW2XUbNlXW93Z6+yc8VXfHTTeWx999k9IhiKquLx+UjPymboyDF898If4U/L6tHjJOIMuTrsNaRh ULHgf3x68/ms/+iNPp8EpoVDrHjlEb645SLq1izpsTwMm8Q4RmpaBgX9B3HyaecwbMyeqfJv4wRC HfY6DVs3sOiPP6H6lO8x9oJryOg/pLe71OOUb1jF6ifvZPvn7/a4dWEjhDBXS0tJJadfAYcecTQz jp2zR46ViCMaDr2CHg6y/tVHKVv6KUXfv5FBR5yCLyW1t7vVbaJNDax98z+se+EfhCpK9thxFEVB VV34/AGycvIomjiFU8/9Pm6vb48d08YRDYdepX7zWhbeeSUbp81i6sU38P/t3VtQW/edB/Cv7neJ qyXuRtgoAdtxHBK7Thtir+ok65L1xpa8nSTbyWyh7T51dnjwPhledvzA0+5LB7ZPndnMQtLpDLvT zlbThmyS1okzXTuALRKEwQbjC+YiQHdpH3SxBMLmDxIX5/uZ8YwHcf7nf4TO9/z+5/x1TnHjC5DL d98VlpB/GXe+/Bg33v833L/6WU4eObCW1JfRNBoUFBWjunYf3nqnFUVl1XlbZzpecqVtFw0F8ODy 7/HHa39C+XffgM3xUxTbntsV4RHyL+Petc8x/P6/4v5fPkY0R19rX0vqxKdSBYOxAJaKarz25lnY Dubn8mo2vORKO0bYt4iJ3/dh6pPfovw7p7D/rR+jYN9BaHbgJdql2Qd4MPg5Rj7swYOrnyCS43kX 2aTu96lQQm80YU95JU68/jdo/utzQA6/W/IkrDRoxwn7FjHxh1/j9v/+F0z1h1H7/XOo+s4paCyV 21p9hAI+LN+ZgMf1IcYH+rE4dh2Ibc39zNMDQ2cwomRPGQ6/cBSnHe9syXmMdGKhsdFn42VtK3dN 0dMpGgpiduhzzA59jsFf/gtKDx1DadNJWI58DwZLNVR6Q977sDT/EN7Jcdy/8gdMffER5oYuIxTw 53296VYFhrkMB4+8CMd7P4PWmL/5GGtZd2gkn8wlkUhyGx5E6xD0zmHy099h8tPfQa7RQWdtgGX/ IRgPHofl2cOQ6wyQ64xQabQbXodv0YuIbxHhpQXc/stnWBq+jDsjX8E3fmPb5pRkC4xDR17C2z/5 OSzVuf326nqtOzTkCiVkMtmqxxdu1OKdm5AolDlrj7ZecrJS2LuwpesN+5YwP/QF5oe+AH7zS0gV Sqj2VEJdWoEicznUpZVQmKsgNxVDaSpCUUnmzXQlsRju351GaGEG4fkZhO6Ow3f/Dmbu3EJw5g4C 924jFt3+xyil7o2xIjDe/dk/oXxv/bb1a92hUV1Tg8Ev/wypRBpPP4lkUzPcBv757Q0vS5QuGgrC N+mBb9KD2e3uTI6kLquq1NAbTSjZEx+SvP2Tn29rYAACoVGz7xko1WrIFQpIJVJE+UgeorxITtxS aTQwGAuwp7wSh184Cud7/wjzJp+OlgvrDo2qvXXQG4yQK5SQSKWbrjSIKFPy/IVcrkjc37MYlopq nHj9TfzA8S4023DSM5t1h0Z5TR0MBUVQqdWQyWTI03R6om+l9ElbGp0ehcWlqNpbhzfOOPDKG2e3 /LLq46w7NGQKFWpqrRi9/hVkcnm82ojFWG0QbULy/GByOKI3mFBUasazBw/j7LutqD9wZEsnbq2H 0DyN+obn8KePXFAolPBL+FAcos1Iv5yq0epgKiyGubwSR7/7KlrO/whFlqrt7mJWQqFhqayBVm+A QqmCVCpDVBJhpUEkKFldSGUyKFVq6PQGFJbsQU2dDafPOHHsr05DrlRtdzfXJBQae611KCwqgUar w6J3HmGe2CASkgwLuVyRemRiqaUcB557AX/7Titq6nP3UKN8EQoNlb4QVdZ6TE6Mwbswh3AwiHAs hugOmAhDtJOln7tQqFTQ6Q0wFRajvGovmk+dxmtnzuflzuH5IPyFtdNnf4iJUTcW5mYRCgYQXY4i xhOiRFmlD0UUCiXUGm28ujCXo77xIN48/yPsa3w+p09Ayzfh0Kiorcfrb/0QszP3EfD7EA6F4pVG NMrgIEpIDwu5XAGlSg29wYiCohJUWPfh5KkfoPm1Fii1xu3uqrANfTX++Kun4Ll+DUuLXoRCQUSj UYRCQQYHPVFyZ8r40mNapbqbPz/p2yaTyiBXxMNCq9PDUFAIS3klXjr+Ck6cPgtzlXW7u7thGwoN qUKFM+/+FLcnxuOhEYmkAoTBQWuRSqWpGY8yuRwymQyxWAzRSAThcBjRaCRetSZCZDd8jtKDIjn9 W6FUpq6KGIwFKDFb8PyLx3DijTOosD6zq4Yi2Wz4JjzGwmI4/v7H8P1iCQAgvTeNJe8CgsEAohFe iqVHUtOjExOYNFo9dHoDtDodgsEgAgE//MvLCAb8CIWC8SFvJIJoLJr6tulOqERW3h5CkqgopLJE VaFUQaXWQKPTw1RYhBJzGV48ehxHm0+hvLZ+14dFkuTK9Ob+CiNXL6PvV/+Or4e/wsy9aXgX5hD0 +xGOhFf9wenbI30HS05g0ur0MBUWo8RSju+dPIWXT76Ob4b+D3/+9GPcv3sHcw9nsLy0CP/yEgIB P0LBIMLhECLh+GcpEk0cjLZoOLMyJKRSKaQSKaQyWaJSkkOpSgSFVget3oDCohJUVO/Fy6/a0XDk GAyFpXnr33bZdGgAwMLsDH7zq1/g8icf4e7UbSzMz8LvW06cJM0sOQGGyNMo21FYKpFCJpdDqVRB qzegqNSMfbYGvPl37+HQSy9DmnhsYCQcxG3PCNzXvsTgV1dxd3IiHiCLXvh9ywj4fQgGAxkhkqxE Vn62gI19vtLv67JWSCgUytTQQ6VSQ63RQmcwwlRUjKraOjQefB7PHDoCc5UVEsn2PYcs33ISGgAQ Cwfx2Uf/g99++B+YunUT87MP4VteRDAQSP2hI+FwvORM/pEZHrtfYmdbuYPJ5QrIFfEJTHqDEUWl ZjzXdAxvvf0PKH7CrfZn701h7OvruPXNddwYHsLMg3tYXJjH0qIXvuUl+H2JoUwiRKKRCCKRCGLR KGKIiX2+EgGXDDmJVBo/N5HYBqVKFQ8JtQZanR5avQFGUyFKzWV4trERFdZnUGdrhM5UlIt3c1fI WWgkTY6N4L8/fB8To27Mzc5gybsAv285ccTwIxQMxAMkyvMeTwPJihOACqUKao0Wao02ftXAVIBS SwWOv3ICR0+ehmID06O9D+9hzPMNpm9+jRtD1zB5axze+bn4UCYRINkOTuuZdJgMO5lcDrlCAblc AYVKBbVaA7VGC43eAJOpEHutddjfcAjmKius++qh1u+8O6RvlZyHRlJgcRZjnlFM3xrH18NXMT42 ioW5h1ha9CLg88WPEInSknapxBE6eRJQq9NDbzShrKoGzzYegqWqDrV1VhiLLUAOy3W/dxYTN8cw dXMEN79xw+MZxbJ3IR4ifh+Cfj8ikTAikcjjP18SCWSJSVfJoNDq9NCbCrC/3oZqaz3Ka+tRVVML hVqXs/7vdnkLjZUioQCmxkdxa2wU46M3MH5zDKFg5oNlYrHYqnuGbtfPVtpJfdsp2w/Ej9SWsgpY 99tQWbsf1dZ9UOm29igci0aw+PAupianMHP/LpZm72Jm5gG8CwtYWFpGMBC/oheNhCFJzZ9QwaTX wWgyoai4BNoiC8x7zDCXlUFXaN7S/u82WxYaRPR0eHpP8RJRXjA0iEgIQ4OIhDA0iEgIQ4OIhDA0 iEgIQ4OIhDA0iEgIQ4OIhDA0iEgIQ4OIhDA0iEgIQ4OIhDA0iEgIQ4OIhDA0iEgIQ4OIhDA0iEgI Q4OIhDA0iEgIQ4OIhDA0iEgIQ4OIhDA0iEgIQ4OIhDA0iEgIQ4OIhDA0iEgIQ4OIhDA0iEgIQ4OI hDA0iEgIQ4OIhDA0iEgIQ4OIhDA0iEgIQ4OIhDA0iEgIQ4OIhDA0iEgIQ4OIhDA0iEgIQ4OIhDA0 iEgIQ4OIhDA0iEgIQ4OIhDA0iEgIQ4OIhDA0iEgIQ4OIhDA0iEgIQ4OIhDA0iEgIQ4OIhDA0iEgI Q4OIhDA0iEgIQ4OIhDA0iEgIQ4OIhDA0iEgIQ4OIhDA0iEgIQyNv+nDBIkFTa1/WVz1dB9BkOYBu 90baXbFcvxNNFknqn7NraKOdFufuhHND20G7FUMjrxphHenMskP1oTtXO3a/E02tw2gbiOHKdAxX pgdh7z+wdcFhu4je6UG02bZmdbT9GBp5Zq0HXP0rduD+PrhaHLBvuvUhdHf1wd6TvtM2oq27A+jq hGvT7ROtxtDIM2v7RVgzduAhdHcNo63dkfmL7k4404YYF/qzv+bsGk77+QdwuR2wt6xYqe0c7LZh eNxAcjhzofUAmizOeD8y2uvMGO64Wh/14dHQKjEk6nJmGQI9Gi7Fh1xZls/YtkQfsvVrzffDCReG 0N2ctt5+J5qaO+FZs33KF4ZG3jlgb+mDKxkC7g/gggP2jHK+DxeaO2DtSQwxBjrgaU3uyJmvXUJf 5k5ha4Q163qH4BlJ+7/tP3Fluhf2J7RnT/Zhuhf2/vSh1RC63Y74az0OeLJUMtb2wUfLwoFLPY5E //tgTw6fepA2NEvv18r3Y+UyQNtAbyKA+3ChFbg0cBHWx7ZP+cDQ2AL29g54uuJHRVdXR7z6SP8F 9zA8SKsYbBfR1pLY6d3D8Ng60JZ4zdp+MXMHcw/Fj7arNMJa/+j/9pbGR+t6XHupk6orj9iNj6qj FgfsSFYyq7lanUBPIgjcw/AkqoRk9eFxD6faTPVr1fuRbRkHLvUAFyzrbZ/yQb7dHfhWsJ2DHefh 6gdcIx24tHI4sZl2bR1w9SNziOL+AC53g/jJSXcnnK3ApekY7BhCd/N58T71O3EBvbiSsY0OXMpS TTxetmVy8bu0Waw0tkQj2tob0N3aAbScWz2csDXAivQhTCe6+xOVh60BVncHuhOvZQ4L4kd/V2t6 VRAffmBlBZG+rrXaGxmCJznccX8A10YuB7ciMSzJ3LYnDxnSLiWvuUyi/eleILnN626fcoWVxlZp uYg2G2Btz1KOw4FLAx1wNkvQBABoRNvAYGKnj58baGqNv2Zt74A9/Sjd0osrPfEhRZK9J4beNauZ x7TXchFtXQfgtHQAtpXnXZ4sGV6uZF9sHegduJjYtgNo6krv8+NacmRZpgNtIx3wtA/CjkZY2zvh bO58TPuOtRqnTfp/ll5DOOfC3YEAAAAASUVORK5CYII= " + id="image4166-8-4" + x="0" + y="793.00507" + style="fill:#006868;fill-opacity:1" /> + </g> + <g + style="display:inline;fill:#006868;fill-opacity:1" + inkscape:label="Trace" + id="layer2-9-1-52"> + <g + id="g4216-4-8" + style="fill:#006868;fill-opacity:1"> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#006868;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:45.99133301;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="M 32.360048,65.606228 A 18.742595,18.742595 0 0 0 13.619017,84.347257 v 52.986143 52.98616 a 18.742595,18.742595 0 0 0 18.741031,18.74102 h 66.931502 52.98614 a 18.742595,18.742595 0 0 0 14.56367,-6.9571 c 9.39466,4.42246 19.71589,6.94877 30.41586,6.9571 a 18.742595,18.742595 0 0 0 0.0133,0 c 39.39268,0.001 71.72926,-32.3342 71.72947,-71.72718 -2.1e-4,-39.392981 -32.33679,-71.728471 -71.72977,-71.727172 a 18.742595,18.742595 0 0 0 -0.0106,0 c -18.56058,0.0092 -35.9395,7.273903 -48.98023,19.491814 C 135.2392,72.880337 117.85926,65.616053 99.29911,65.606228 a 18.742595,18.742595 0 0 0 -0.008,0 z M 32.20937,84.347257 H 99.14088 A 52.987154,52.987154 0 0 1 148.1289,117.2103 52.987154,52.987154 0 0 1 197.12213,84.347257 52.987154,52.987154 0 0 1 250.11087,137.3334 52.987154,52.987154 0 0 1 197.12213,190.31956 52.987154,52.987154 0 0 1 152.12702,165.2527 v 25.06686 H 99.14088 32.20937 V 137.3334 Z" + id="path4176-3-9" + inkscape:connector-curvature="0" /> + </g> + </g> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/backup.svg b/src/stylesheets/Paper/Dark/backup.svg new file mode 100644 index 00000000..f0010ea9 --- /dev/null +++ b/src/stylesheets/Paper/Dark/backup.svg @@ -0,0 +1,128 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.3 (2405546, 2018-03-11)" + sodipodi:docname="backup.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="172.55859" + inkscape:cx="9.017725" + inkscape:cy="10" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <g + id="g3865" + transform="matrix(1,0,0,-1,0,20)" + style="fill:#ffffff;fill-opacity:1"> + <path + id="rect3928" + d="m 0,14 v 3 3 h 20 v -3 -3 h -3 v 3 H 3 v -3 z" + style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + inkscape:connector-curvature="0" /> + <g + id="g3859" + style="fill:#ffffff;fill-opacity:1"> + <rect + y="-12.83" + x="7.85585e-016" + height="5.6599998" + width="13.981334" + id="rect3930" + style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + transform="rotate(90)" /> + <path + sodipodi:type="star" + style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.83595276;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + id="path3932" + sodipodi:sides="3" + sodipodi:cx="8.9146461" + sodipodi:cy="9.684866" + sodipodi:r1="4.0292788" + sodipodi:r2="2.0146394" + sodipodi:arg1="-1.5707963" + sodipodi:arg2="-0.52359878" + inkscape:flatsided="true" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 8.9146463,5.6555872 3.4894577,6.0439178 -6.9789157,0 z" + inkscape:transform-center-y="-1.3333344" + transform="matrix(-2.1493311,0,0,-1.3236446,29.160526,24.485987)" /> + </g> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/check-alt.svg b/src/stylesheets/Paper/Dark/check-alt.svg new file mode 100644 index 00000000..90b924f0 --- /dev/null +++ b/src/stylesheets/Paper/Dark/check-alt.svg @@ -0,0 +1,94 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="check-alt.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="18.564955" + inkscape:cx="1.4921607" + inkscape:cy="9.294465" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:169.70561218;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="m 16,2.0000002 -4,4 -4.0000001,3.9999996 -4,-3.9999996 L -9.4999999e-8,9.9999998 3.9999999,14 l 4,4 L 12,14 16,9.9999998 20,6.0000002 Z" + id="rect3900-47" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/check.svg b/src/stylesheets/Paper/Dark/check.svg new file mode 100644 index 00000000..101ee45e --- /dev/null +++ b/src/stylesheets/Paper/Dark/check.svg @@ -0,0 +1,94 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="check.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="24.357491" + inkscape:cx="1.6266143" + inkscape:cy="5.0770231" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + style="display:inline;opacity:1;fill:#007e7e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:169.70561218;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="m 16,2.0000002 -4,4 -4.0000001,3.9999996 -4,-3.9999996 L -9.4999999e-8,9.9999998 3.9999999,14 l 4,4 L 12,14 16,9.9999998 20,6.0000002 Z" + id="rect3900-47" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/cross.svg b/src/stylesheets/Paper/Dark/cross.svg new file mode 100644 index 00000000..ac286c08 --- /dev/null +++ b/src/stylesheets/Paper/Dark/cross.svg @@ -0,0 +1,94 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="cross.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="17.223347" + inkscape:cx="-5.6646738" + inkscape:cy="4.7813622" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:169.70561218;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="m 4,1.5e-7 -4,3.99999995 2,2 L 6,10 l -4,4 -2,2 4,4 2,-2 4,-4 4,4 2,2 4,-4 -2,-2 -4,-4 4,-3.9999999 2,-2 L 16,1.5e-7 14,2.0000002 10,6.0000001 6,2.0000002 Z" + id="path3944" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/dots.svg b/src/stylesheets/Paper/Dark/dots.svg new file mode 100644 index 00000000..a746ec83 --- /dev/null +++ b/src/stylesheets/Paper/Dark/dots.svg @@ -0,0 +1,111 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.3 (2405546, 2018-03-11)" + sodipodi:docname="dots.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="90.389123" + inkscape:cx="0.38783507" + inkscape:cy="6.4385372" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <g + id="g3853" + style="fill:#ffffff;fill-opacity:1"> + <circle + r="2.5" + cy="10" + cx="10" + id="path4063" + style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + <circle + style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + id="circle3937" + cx="17.5" + cy="10" + r="2.5" /> + <circle + r="2.5" + cy="10" + cx="2.5" + id="circle3939" + style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/folder.svg b/src/stylesheets/Paper/Dark/folder.svg new file mode 100644 index 00000000..84cebc66 --- /dev/null +++ b/src/stylesheets/Paper/Dark/folder.svg @@ -0,0 +1,94 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="folder.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="12.178745" + inkscape:cx="16.395211" + inkscape:cy="11.770603" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + inkscape:connector-curvature="0" + id="path3850" + d="M 12,2.0000002 9.9999996,4.0000001 H 8.4444481e-8 V 18 H 20 V 4.0000001 L 17.999999,2.0000002 H 15 Z" + style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke markers fill" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/heart.svg b/src/stylesheets/Paper/Dark/heart.svg new file mode 100644 index 00000000..5a4cc1f1 --- /dev/null +++ b/src/stylesheets/Paper/Dark/heart.svg @@ -0,0 +1,111 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="heart.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="17.223347" + inkscape:cx="-3.039376" + inkscape:cy="10.121962" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <g + style="display:inline" + id="g4198" + transform="translate(0,1)"> + <circle + r="5.5" + cy="5.5" + cx="5.5" + id="path4174" + style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + <circle + r="5.5" + style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + id="circle4176" + cx="14.5" + cy="5.5" /> + <path + id="path4178" + d="M 0,5.5 C 0,10.950465 5.8158604,15.070234 10,18 14.18414,15.070234 20,10.950465 20,5.5 H 10 Z" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/refresh.svg b/src/stylesheets/Paper/Dark/refresh.svg new file mode 100644 index 00000000..a81507d5 --- /dev/null +++ b/src/stylesheets/Paper/Dark/refresh.svg @@ -0,0 +1,103 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="refresh.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="18.564955" + inkscape:cx="1.4921607" + inkscape:cy="9.294465" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <g + style="display:inline" + id="g3986"> + <path + inkscape:connector-curvature="0" + id="path4137" + d="M 0,11.998047 V 20 L 2.9335938,17.066406 A 10,10 0 0 0 10,20 10,10 0 0 0 19.787109,11.998047 H 16.705078 A 7,7 0 0 1 10,17 7,7 0 0 1 5.0527344,14.947266 L 8,11.998047 Z" + style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + <path + inkscape:connector-curvature="0" + id="rect4142" + d="M 10,0 A 10,10 0 0 0 0.21289062,8.0019531 H 3.2949219 A 7,7 0 0 1 10,3 7,7 0 0 1 14.947266,5.0527344 L 12,8.0019531 h 8 V 0 L 17.066406,2.9335938 A 10,10 0 0 0 10,0 Z" + style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/restore-alt.svg b/src/stylesheets/Paper/Dark/restore-alt.svg new file mode 100644 index 00000000..8f8c2a43 --- /dev/null +++ b/src/stylesheets/Paper/Dark/restore-alt.svg @@ -0,0 +1,125 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="restore-alt.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="20.964273" + inkscape:cx="9.5550394" + inkscape:cy="5.9520353" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <g + id="g3865"> + <path + id="rect3928" + d="m 0,14 v 3 3 h 20 v -3 -3 h -3 v 3 H 3 v -3 z" + style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + inkscape:connector-curvature="0" /> + <g + id="g3859"> + <rect + y="-12.83" + x="7.85585e-016" + height="5.6599998" + width="13.981334" + id="rect3930" + style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + transform="rotate(90)" /> + <path + sodipodi:type="star" + style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.83595276;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + id="path3932" + sodipodi:sides="3" + sodipodi:cx="8.9146461" + sodipodi:cy="9.684866" + sodipodi:r1="4.0292788" + sodipodi:r2="2.0146394" + sodipodi:arg1="-1.5707963" + sodipodi:arg2="-0.52359878" + inkscape:flatsided="true" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 8.9146463,5.6555872 3.4894577,6.0439178 -6.9789157,0 z" + inkscape:transform-center-y="-1.3333344" + transform="matrix(-2.1493311,0,0,-1.3236446,29.160526,24.485987)" /> + </g> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/restore.svg b/src/stylesheets/Paper/Dark/restore.svg new file mode 100644 index 00000000..0511e182 --- /dev/null +++ b/src/stylesheets/Paper/Dark/restore.svg @@ -0,0 +1,94 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="backup.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="22.59728" + inkscape:cx="-3.3022115" + inkscape:cy="8.6471788" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="m 10,-2.5e-7 a 10,10 0 0 1 0.998047,0.05078 A 10,10 0 0 1 19.787109,8.0019518 10,10 0 0 1 20,10 10,10 0 0 1 10,20 10,10 0 0 1 0.2128895,11.998047 h 3.082032 A 7,7 0 0 0 10,17 a 7,7 0 0 0 7,-7 7,7 0 0 0 -0.294922,-1.9980473 7,7 0 0 0 -0.53125,-1.291016 7,7 0 0 0 0,-0.0019 7,7 0 0 0 -0.359375,-0.599609 7,7 0 0 0 -0.417969,-0.5625 7,7 0 0 0 -0.40625,-0.447266 7,7 0 0 0 -0.07422,-0.07813 7,7 0 0 0 -0.435547,-0.390625 7,7 0 0 0 -0.08594,-0.07422 7,7 0 0 0 -0.490234,-0.359375 7,7 0 0 0 -0.07227,-0.05078 7,7 0 0 0 -0.49023,-0.289062 7,7 0 0 0 -0.119141,-0.06836 7,7 0 0 0 -0.439453,-0.203125 7,7 0 0 0 -0.207031,-0.0918 7,7 0 0 0 -0.402344,-0.138672 7,7 0 0 0 -0.259766,-0.08594 7,7 0 0 0 -0.466797,-0.109375 7,7 0 0 0 -0.208984,-0.04687 7,7 0 0 0 -0.458984,-0.06055 7,7 0 0 0 -0.246094,-0.03125 A 7,7 0 0 0 10,2.9999997 a 7,7 0 0 0 -2.06836,0.314453 7,7 0 0 0 -0.0019,0 7,7 0 0 0 -0.654297,0.240234 7,7 0 0 0 -0.0019,0 7,7 0 0 0 -0.628906,0.304688 7,7 0 0 0 -1.587891,1.197266 L 8,8.0019527 H 3.2968745 0.2031245 -5e-7 V -2.5e-7 l 2.933594,2.93359395 a 10,10 0 0 1 0.01172,-0.01172 10,10 0 0 1 0.591797,-0.535156 10,10 0 0 1 0.169922,-0.148438 10,10 0 0 1 0.6015635,-0.447265 10,10 0 0 1 0.199218,-0.142579 10,10 0 0 1 0.644532,-0.380859 10,10 0 0 1 0.222656,-0.126953 10,10 0 0 1 0.632812,-0.29492195 10,10 0 0 1 0.283204,-0.126953 10,10 0 0 1 0.623046,-0.216797 10,10 0 0 1 0.328125,-0.109375 10,10 0 0 1 0.601563,-0.144531 10,10 0 0 1 0.375,-0.08398 10,10 0 0 1 0.603516,-0.08203 10,10 0 0 1 0.394531,-0.04883 A 10,10 0 0 1 10,-2.5e-7 Z" + id="path3956" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/run.svg b/src/stylesheets/Paper/Dark/run.svg new file mode 100644 index 00000000..008b2ccc --- /dev/null +++ b/src/stylesheets/Paper/Dark/run.svg @@ -0,0 +1,109 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="run.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="3.0446864" + inkscape:cx="23.34915" + inkscape:cy="69.793752" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <path + sodipodi:type="star" + style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + id="path3868" + sodipodi:sides="3" + sodipodi:cx="63.999996" + sodipodi:cy="-43.999996" + sodipodi:r1="64.000008" + sodipodi:r2="32.000004" + sodipodi:arg1="0" + sodipodi:arg2="1.0471976" + inkscape:flatsided="true" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 128,-43.999996 -96.000008,55.425632 0,-110.851265 z" + inkscape:transform-center-x="-15.999997" + inkscape:transform-center-y="3.8146973e-006" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/shortcut.svg b/src/stylesheets/Paper/Dark/shortcut.svg new file mode 100644 index 00000000..27a3497a --- /dev/null +++ b/src/stylesheets/Paper/Dark/shortcut.svg @@ -0,0 +1,96 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="shortcut.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="12.178745" + inkscape:cx="16.395211" + inkscape:cy="11.770603" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + inkscape:connector-curvature="0" + style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="M 12,1.1035164 V 5.4492192 A 9.7951658,7.8360983 0 0 0 2.2050794,13.285155 9.7951658,7.8360983 0 0 0 6.986329,19.999998 H 8.2011726 A 5.8526121,4.682069 0 0 1 6.1484379,16.437499 5.8526121,4.682069 0 0 1 12,11.757811 v 4.345703 l 8,-7.4999984 z" + id="rect3929" + inkscape:transform-center-x="-1.1025401" + inkscape:transform-center-y="0.5517574" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/sort.svg b/src/stylesheets/Paper/Dark/sort.svg new file mode 100644 index 00000000..372bc1cd --- /dev/null +++ b/src/stylesheets/Paper/Dark/sort.svg @@ -0,0 +1,122 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="sort.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="26.25481" + inkscape:cx="2.1341235" + inkscape:cy="4.6849693" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <g + id="g3898"> + <g + id="g3886"> + <rect + y="4" + x="13" + height="16" + width="3" + id="rect4003" + style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + <path + style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + d="m 13,0 v 7.9999998 h 7 z" + id="path4009" + inkscape:connector-curvature="0" /> + </g> + <g + id="g3890"> + <rect + style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + id="rect3999" + width="3" + height="16" + x="4" + y="2.2775268e-008" /> + <path + inkscape:connector-curvature="0" + id="path4016" + d="M 7,20 V 12 H 0 Z" + style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + </g> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/unchecked-alt.svg b/src/stylesheets/Paper/Dark/unchecked-alt.svg new file mode 100644 index 00000000..4f5bbd04 --- /dev/null +++ b/src/stylesheets/Paper/Dark/unchecked-alt.svg @@ -0,0 +1,100 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="unchecked-alt.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="16" + inkscape:cx="-3.1093521" + inkscape:cy="-9.0242346" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + inkscape:connector-curvature="0" + style="display:inline;opacity:1;fill:#fafafa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="M 10,2.7e-7 C 4.4771523,2.7e-7 3e-7,4.4771526 3e-7,10 3e-7,15.522848 4.4771523,20 10,20 15.522848,20 20,15.522848 20,10 20,4.4771526 15.522848,2.7e-7 10,2.7e-7 Z m 0,2.49999983 c 4.142136,0 7.5,3.3578645 7.5,7.4999999 0,4.142136 -3.357864,7.5 -7.5,7.5 C 5.8578643,17.5 2.5000003,14.142136 2.5000003,10 2.5000003,5.8578646 5.8578643,2.5000001 10,2.5000001 Z" + id="path3872-6" /> + <path + style="display:inline;opacity:1;fill:#007e7e;fill-opacity:0;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="m 10,2 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" + id="path3872" + inkscape:connector-curvature="0" + sodipodi:nodetypes="sssss" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/unchecked-disabled.svg b/src/stylesheets/Paper/Dark/unchecked-disabled.svg new file mode 100644 index 00000000..befdeba1 --- /dev/null +++ b/src/stylesheets/Paper/Dark/unchecked-disabled.svg @@ -0,0 +1,94 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="unchecked-disabled.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="27.505434" + inkscape:cx="6.0413321" + inkscape:cy="6.6331774" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + style="display:inline;opacity:1;fill:#6c6c6c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:169.70561218;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="M 4.0000001,-1.65e-7 1.2e-7,3.9999998 l 1.99999998,2 4,3.9999994 -4,4.0000008 -1.99999998,2 3.99999998,4 2,-2 L 10,14 l 4,4 2,2 4,-4 -2,-2 -4,-4.0000008 4,-3.9999994 2,-2 L 16,-1.65e-7 14,1.9999999 10,5.9999998 6.0000001,1.9999999 Z" + id="path3944" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Dark/unchecked.svg b/src/stylesheets/Paper/Dark/unchecked.svg new file mode 100644 index 00000000..41c91aa6 --- /dev/null +++ b/src/stylesheets/Paper/Dark/unchecked.svg @@ -0,0 +1,100 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="unchecked.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="36.087529" + inkscape:cx="8.2851418" + inkscape:cy="9.2482234" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + inkscape:connector-curvature="0" + style="display:inline;opacity:1;fill:#d3d3d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="M 10,2.7e-7 C 4.4771523,2.7e-7 3e-7,4.4771526 3e-7,10 3e-7,15.522848 4.4771523,20 10,20 15.522848,20 20,15.522848 20,10 20,4.4771526 15.522848,2.7e-7 10,2.7e-7 Z m 0,2.49999983 c 4.142136,0 7.5,3.3578645 7.5,7.4999999 0,4.142136 -3.357864,7.5 -7.5,7.5 C 5.8578643,17.5 2.5000003,14.142136 2.5000003,10 2.5000003,5.8578646 5.8578643,2.5000001 10,2.5000001 Z" + id="path3872-6" /> + <path + style="display:inline;opacity:1;fill:#007e7e;fill-opacity:0;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="m 10,2 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" + id="path3872" + inkscape:connector-curvature="0" + sodipodi:nodetypes="sssss" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/Arrows/down.svg b/src/stylesheets/Paper/Light/Arrows/down.svg new file mode 100644 index 00000000..106b64a5 --- /dev/null +++ b/src/stylesheets/Paper/Light/Arrows/down.svg @@ -0,0 +1,97 @@ +<?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="8" + height="8" + viewBox="0 0 8 8" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="down.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="97.429959" + inkscape:cx="-1.2019503" + inkscape:cy="5.6881881" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="4,4" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="4,4" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,-12)"> + <path + style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:212.1320343;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="M 0,15 2,17 4,19 6,17 8,15 6,13 4,15 2,13 Z" + id="rect3900-0" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/Arrows/left.svg b/src/stylesheets/Paper/Light/Arrows/left.svg new file mode 100644 index 00000000..063012ef --- /dev/null +++ b/src/stylesheets/Paper/Light/Arrows/left.svg @@ -0,0 +1,97 @@ +<?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="8" + height="8" + viewBox="0 0 8 8" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="left.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="97.429959" + inkscape:cx="-1.2019503" + inkscape:cy="5.6881881" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="4,4" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="4,4" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,-12)"> + <path + style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:212.1320343;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="M 5,20 3,18 1,16 3,14 5,12 7,14 5,16 7,18 Z" + id="rect3900-0" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/Arrows/right.svg b/src/stylesheets/Paper/Light/Arrows/right.svg new file mode 100644 index 00000000..21d222e2 --- /dev/null +++ b/src/stylesheets/Paper/Light/Arrows/right.svg @@ -0,0 +1,97 @@ +<?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="8" + height="8" + viewBox="0 0 8 8" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="right.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="97.429959" + inkscape:cx="-1.2019503" + inkscape:cy="5.6881881" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="4,4" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="4,4" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,-12)"> + <path + style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:212.1320343;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="M 3,20 5,18 7,16 5,14 3,12 1,14 3,16 1,18 Z" + id="rect3900-0" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/Arrows/up.svg b/src/stylesheets/Paper/Light/Arrows/up.svg new file mode 100644 index 00000000..967f3185 --- /dev/null +++ b/src/stylesheets/Paper/Light/Arrows/up.svg @@ -0,0 +1,97 @@ +<?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="8" + height="8" + viewBox="0 0 8 8" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="up.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="97.429959" + inkscape:cx="-1.2019503" + inkscape:cy="5.6881881" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="4,4" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="4,4" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,-12)"> + <path + style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:212.1320343;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="m 0,17 2,-2 2,-2 2,2 2,2 -2,2 -2,-2 -2,2 z" + id="rect3900-0" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/Toolbar/archives.svg b/src/stylesheets/Paper/Light/Toolbar/archives.svg new file mode 100644 index 00000000..cdc3d5a8 --- /dev/null +++ b/src/stylesheets/Paper/Light/Toolbar/archives.svg @@ -0,0 +1,99 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.3 (2405546, 2018-03-11)" + sodipodi:docname="archives.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="2.4754625" + inkscape:cx="153.96887" + inkscape:cy="-47.187112" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true" + inkscape:lockguides="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="true" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="true" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <path + style="opacity:1;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + d="m 73.998642,-83.999999 -9.998644,10.001356 H 14.001355 V -4.000001 H 113.99864 V -73.998643 L 104,-83.999999 H 88.999315 Z" + id="path3849" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/Toolbar/executables.svg b/src/stylesheets/Paper/Light/Toolbar/executables.svg new file mode 100644 index 00000000..64985f45 --- /dev/null +++ b/src/stylesheets/Paper/Light/Toolbar/executables.svg @@ -0,0 +1,99 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.3 (2405546, 2018-03-11)" + sodipodi:docname="executables.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="2.0337335" + inkscape:cx="120.47256" + inkscape:cy="16.154656" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <path + inkscape:connector-curvature="0" + style="display:inline;opacity:1;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.00000048;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="m 69.224291,-99 v 25.297161 A 57.019516,45.615413 0 0 0 12.206203,-28.088371 57.019516,45.615413 0 0 0 40.038762,11 h 7.071835 A 34.069164,27.255211 0 0 1 35.161239,-9.7379829 34.069164,27.255211 0 0 1 69.224291,-36.979329 v 25.297161 L 115.7938,-55.341082 Z" + id="rect3929" + inkscape:transform-center-x="-6.418094" + inkscape:transform-center-y="3.2118799" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/Toolbar/help.svg b/src/stylesheets/Paper/Light/Toolbar/help.svg new file mode 100644 index 00000000..929cd6cd --- /dev/null +++ b/src/stylesheets/Paper/Light/Toolbar/help.svg @@ -0,0 +1,128 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.3 (2405546, 2018-03-11)" + sodipodi:docname="help.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="4.3843014" + inkscape:cx="50.675733" + inkscape:cy="33.790362" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <circle + style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#3d3d3d;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + id="path3848" + cx="64" + cy="-44" + r="60" /> + <g + id="g3871" + transform="translate(0,-1.242582)" + style="stroke-width:1;fill:#3d3d3d;fill-opacity:1"> + <path + id="path3851" + d="m 64,-80 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 -6.7e-4,4.11389 3.33402,7.449258 7.44791,7.449426 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 C 71.447743,-76.665387 68.113298,-79.999833 64,-80 Z" + style="opacity:1;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path3860" + d="m 56.55209,-50.206086 v 34.757418 h 14.89582 v -34.757418 z" + style="opacity:1;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + <path + style="opacity:1;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="m 64,-80 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 -6.7e-4,4.11389 3.33402,7.449258 7.44791,7.449426 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 C 71.447743,-76.665387 68.113298,-79.999833 64,-80 Z" + id="path3853" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path3862" + d="m 64,-57.654754 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 -6.7e-4,4.11389 3.33402,7.449258 7.44791,7.449426 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 -1.67e-4,-4.113297 -3.334612,-7.447743 -7.44791,-7.44791 z" + style="opacity:1;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + <path + style="opacity:1;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="m 64,-22.897336 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 C 56.55142,-11.335536 59.88611,-8.000168 64,-8 c 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 -1.67e-4,-4.113297 -3.334612,-7.447743 -7.44791,-7.44791 z" + id="path3864" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/Toolbar/instances.svg b/src/stylesheets/Paper/Light/Toolbar/instances.svg new file mode 100644 index 00000000..78361fe9 --- /dev/null +++ b/src/stylesheets/Paper/Light/Toolbar/instances.svg @@ -0,0 +1,98 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.3 (2405546, 2018-03-11)" + sodipodi:docname="instances.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="4.9509251" + inkscape:cx="95.667898" + inkscape:cy="15.212052" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <path + style="opacity:1;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + d="m 43.074486,-84 c -7.191305,0.179697 -13.681107,2.360737 -19.604836,6.184844 l -0.829325,3.561678 -4.167425,3.208112 -5.581697,14.982451 c -5.7982022,15.544107 -18.3828084,44.900541 4.037437,52.0629145 5.467067,-4.389774 11.744564,-10.4769935 18.039776,-16.6021055 3.729503,-3.62877 7.012953,-4.081632 14.160925,-4.081632 h 14.865463 14.865462 c 7.147976,0 10.431426,0.452872 14.160926,4.081632 6.2952,6.125112 12.583088,12.2123315 18.050168,16.6021055 22.42024,-7.1623735 9.83564,-36.5188075 4.03744,-52.0629145 l -5.5921,-14.982451 -4.15702,-3.208112 -0.82933,-3.561678 C 98.606622,-81.639263 92.106422,-83.820123 84.915122,-84 l -5.46211,2.979332 H 63.994804 48.546994 Z m 51.652146,11.766541 c 2.28943,-7.75e-4 4.14597,1.854604 4.14663,4.144028 7.8e-4,2.290441 -1.85618,4.147401 -4.14663,4.146627 -2.28942,-6.62e-4 -4.1448,-1.857203 -4.14402,-4.146627 6.6e-4,-2.288409 1.85562,-4.143366 4.14402,-4.144028 z m -61.453263,4.144028 c 4.578848,-1.12e-4 8.290765,3.711805 8.290653,8.290653 1.13e-4,4.578848 -3.711805,8.290766 -8.290653,8.290655 -4.578848,1.13e-4 -8.290768,-3.711807 -8.290654,-8.290655 -1.12e-4,-4.578848 3.711806,-8.290766 8.290654,-8.290653 z m 53.162613,4.146627 c 2.28943,-7.75e-4 4.14597,1.854603 4.14663,4.144026 7.7e-4,2.290441 -1.85619,4.147403 -4.14663,4.146627 -2.289423,-6.62e-4 -4.144799,-1.857203 -4.144025,-4.146627 6.62e-4,-2.288409 1.855618,-4.143365 4.144025,-4.144026 z m 16.581308,0 c 2.28942,-7.75e-4 4.14596,1.854603 4.14663,4.144026 7.7e-4,2.290441 -1.85619,4.147403 -4.14663,4.146627 -2.28943,-6.62e-4 -4.144798,-1.857203 -4.144028,-4.146627 6.6e-4,-2.288409 1.855618,-4.143365 4.144028,-4.144026 z m -8.290658,8.290654 c 2.28943,-7.75e-4 4.14597,1.854602 4.14663,4.144027 7.8e-4,2.29044 -1.85618,4.147401 -4.14663,4.146626 -2.28942,-6.62e-4 -4.1448,-1.857203 -4.14402,-4.146626 6.6e-4,-2.28841 1.85562,-4.143366 4.14402,-4.144027 z m -48.662414,6.184843 h 5.527101 v 5.527103 h 5.527103 v 5.527102 H 51.591319 V -32.886 h -5.527101 v -5.527102 h -5.527103 v -5.527102 h 5.527103 z m 33.10802,0 c 4.578848,-1.12e-4 8.290764,3.711806 8.290654,8.290654 1.1e-4,4.578848 -3.711806,8.290765 -8.290654,8.290653 -4.578848,1.13e-4 -8.290766,-3.711805 -8.290654,-8.290653 -1.13e-4,-4.578848 3.711806,-8.290767 8.290654,-8.290654 z" + id="path3849" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccscscccccccccccccccccccccccccccccccccccccccccccccccccccccc" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/Toolbar/nexus.svg b/src/stylesheets/Paper/Light/Toolbar/nexus.svg new file mode 100644 index 00000000..1715b626 --- /dev/null +++ b/src/stylesheets/Paper/Light/Toolbar/nexus.svg @@ -0,0 +1,122 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.3 (2405546, 2018-03-11)" + sodipodi:docname="nexus.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="4.2612171" + inkscape:cx="56.087807" + inkscape:cy="27.420714" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="108.073,108.073" + inkscape:measure-end="112.737,112.737" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="255" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <path + style="opacity:1;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.99999952;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + d="m 37.578906,-103.99986 -2.327345,1.09219 c -5.625077,2.65309 -12.341703,6.959572 -18.124217,14.742184 l -1.439062,1.942967 -0.3,2.397657 c -0.727944,5.785703 0.645537,10.927203 2.601562,15.550782 -3.97001,7.523426 -6.539675,15.713366 -6.546095,24.274216 h 0.01176 v 0.06094 c 0.01254,2.097981 0.399663,4.072256 0.646875,6.100783 -3.5620623,4.427533 -7.0313403,9.956846 -7.8375002,17.704685 l -0.2648844,2.554689 1.0921859,2.327343 c 2.6531016,5.6250757 6.9595777,12.341692 14.7421887,18.12422 l 1.94297,1.4390639 2.397656,0.3 c 5.785701,0.727944 10.927203,-0.6455399 15.55078,-2.6015644 7.523428,3.9700084 15.713368,6.539664 24.274217,6.546096 v -0.012 h 0.06094 c 2.097982,-0.0126 4.072257,-0.39966 6.100783,-0.646872 4.427536,3.5620555 9.956847,7.0313275 17.704687,7.8374995 l 2.554687,0.26484 2.327343,-1.092192 C 98.373512,12.254575 105.09014,7.9480995 110.87265,0.1654875 l 1.43672,-1.9429715 0.30236,-2.3976556 c 0.72794,-5.7854267 -0.64555,-10.9269284 -2.60157,-15.5505044 3.97001,-7.523428 6.53967,-15.713368 6.5461,-24.27422 h -0.012 v -0.06094 c -0.0133,-2.097984 -0.39967,-4.072258 -0.64688,-6.100783 3.56206,-4.427535 7.03131,-9.956848 7.8375,-17.704688 L 124,-70.420959 l -1.09219,-2.327345 c -2.6531,-5.625076 -6.95957,-12.341702 -14.74219,-18.124218 l -1.94297,-1.436719 -2.39765,-0.302345 c -5.785706,-0.727943 -10.927203,0.64554 -15.550778,2.601564 -7.523434,-3.970005 -15.713374,-6.539667 -24.274225,-6.546088 v 0.01172 h -0.06094 c -2.097982,0.01266 -4.072255,0.399662 -6.100782,0.646874 -4.427534,-3.562058 -9.956847,-7.031344 -17.704687,-7.837494 z m 1.485937,6.351563 c 0.03984,-7.78e-4 0.07969,-7.78e-4 0.119532,0 0.08844,8.72e-4 0.176806,0.0056 0.264842,0.01406 0.01563,-1.23e-4 0.03128,-1.23e-4 0.04686,0 0.06038,0.0056 0.120558,0.01378 0.180468,0.02344 0.03369,0.0037 0.06016,0.01978 0.09376,0.02344 8.119439,0.924618 13.438311,4.913385 17.695312,8.847652 0.518092,0.475264 0.857314,1.113992 0.960938,1.809374 1.846847,-0.259602 3.708531,-0.399736 5.573432,-0.419528 7.414774,0.0056 14.704137,1.913317 21.171093,5.540624 3.592503,-2.496611 7.615515,-4.335787 12.384376,-4.79531 1.744997,-0.168149 3.586634,-0.159114 5.503124,0.082 0.5255,0.06779 1.0245,0.270451 1.44845,0.588283 6.86031,5.097232 10.33844,10.548846 12.76641,15.658591 0.0245,0.05156 0.0622,0.100836 0.0867,0.152346 0.0157,0.04031 0.0306,0.08093 0.0445,0.121879 0.0412,0.09035 0.0779,0.182649 0.11015,0.276564 0,0.0029 0,0.0063 0,0.0094 4e-5,0.0086 4e-5,0.01718 0,0.02577 0.0284,0.09024 0.0527,0.18174 0.0727,0.274217 0.0197,0.09143 0.0355,0.18371 0.0469,0.276565 1e-5,0.0079 1e-5,0.01562 0,0.02344 0.005,0.06 0.0108,0.120187 0.0141,0.180468 7.7e-4,0.03984 7.7e-4,0.07969 0,0.119532 -8.7e-4,0.08844 -0.005,0.176808 -0.0141,0.264844 1.2e-4,0.01563 1.2e-4,0.03125 0,0.04685 -0.008,0.06038 -0.0139,0.12056 -0.0233,0.180468 -0.004,0.03369 -0.0199,0.06016 -0.0234,0.09376 -0.92463,8.119438 -4.91339,13.438312 -8.84766,17.695313 -0.47526,0.51809 -1.114,0.857312 -1.80939,0.960935 0.25962,1.846853 0.39976,3.708535 0.41955,5.573439 -0.005,7.414773 -1.91333,14.704135 -5.54064,21.171093 2.49662,3.592503 4.33578,7.615515 4.79533,12.384375 0.16814,1.7449932 0.1591,3.586632 -0.0819,5.5031256 -0.0677,0.5254956 -0.27045,1.0244952 -0.58828,1.4484372 -5.09716,6.8603052 -10.548768,10.3384447 -15.658515,12.7664047 -0.05156,0.02448 -0.100836,0.06228 -0.152342,0.08676 -0.04031,0.01572 -0.08092,0.0306 -0.12188,0.04452 -0.09035,0.04116 -0.182648,0.07788 -0.276562,0.11016 -0.0031,0 -0.0063,0 -0.0094,0 -0.0086,3.5e-5 -0.01718,3.5e-5 -0.02577,0 -0.09024,0.02844 -0.181741,0.05268 -0.274216,0.07272 -0.09143,0.0198 -0.183711,0.03552 -0.276563,0.04692 -0.0079,2.4e-5 -0.01563,2.4e-5 -0.02344,0 -0.06,0.006 -0.120186,0.0108 -0.180468,0.01404 -0.03984,7.8e-4 -0.0797,7.8e-4 -0.119532,0 -0.08844,-8.64e-4 -0.176806,-0.006 -0.264846,-0.01404 -0.01563,1.2e-4 -0.03128,1.2e-4 -0.04686,0 -0.06037,-0.006 -0.120559,-0.0138 -0.180469,-0.0234 -0.03369,-0.0036 -0.06014,-0.0198 -0.09376,-0.0234 C 80.110654,8.6632245 74.79178,4.6744608 70.534779,0.740188 c -0.51809,-0.47526 -0.857313,-1.113984 -0.960936,-1.8093745 -1.847084,0.259404 -3.708765,0.3995425 -5.573668,0.4193305 -7.414776,-0.006 -14.704135,-1.9133172 -21.171094,-5.5406236 -3.592503,2.4966096 -7.615515,4.3357863 -12.384377,4.7953119 -1.744993,0.1681465 -3.586632,0.1591105 -5.503122,-0.082008 -0.525498,-0.067788 -1.024497,-0.2704523 -1.448438,-0.5882844 -6.860299,-5.0972295 -10.338443,-10.5488439 -12.766408,-15.6585929 -0.0245,-0.05156 -0.06234,-0.10086 -0.08672,-0.152343 -0.0157,-0.0403 -0.03056,-0.08095 -0.04453,-0.12188 -0.04117,-0.09035 -0.07795,-0.182646 -0.11016,-0.276563 -6e-6,-0.0031 -6e-6,-0.0063 0,-0.0094 -3.6e-5,-0.0086 -3.6e-5,-0.01718 0,-0.02577 -0.02843,-0.09024 -0.05268,-0.181742 -0.07265,-0.274218 -0.01984,-0.09143 -0.03547,-0.183709 -0.04685,-0.276562 -3.1e-5,-0.0077 -3.1e-5,-0.01562 0,-0.02344 -0.0067,-0.06 -0.01116,-0.120186 -0.0141,-0.180469 -7.76e-4,-0.03984 -7.76e-4,-0.07969 0,-0.119532 8.7e-4,-0.08844 0.0053,-0.176808 0.0141,-0.264847 -1.19e-4,-0.01563 -1.19e-4,-0.03125 0,-0.04685 0.006,-0.06037 0.0138,-0.120559 0.02344,-0.180469 0.0037,-0.03369 0.01981,-0.06014 0.02344,-0.09376 0.924627,-8.119438 4.91339,-13.438313 8.847658,-17.695312 0.475263,-0.518093 1.113993,-0.857315 1.809373,-0.960938 -0.259589,-1.846868 -0.399724,-3.708551 -0.419516,-5.573451 0.0056,-7.414775 1.913317,-14.704137 5.540624,-21.171094 -2.49661,-3.592502 -4.335787,-7.615515 -4.79531,-12.384377 -0.168149,-1.744994 -0.159113,-3.58663 0.082,-5.503124 0.06779,-0.525498 0.270452,-1.024496 0.588283,-1.448437 5.097232,-6.860299 10.548845,-10.338443 15.658591,-12.766403 0.05156,-0.02447 0.100837,-0.06234 0.152347,-0.08672 0.04031,-0.01575 0.08093,-0.03056 0.121878,-0.04453 0.09035,-0.04116 0.182646,-0.07791 0.276563,-0.110157 0.0029,0 0.0063,0 0.0094,0 0.0086,-3.7e-5 0.01718,-3.7e-5 0.02578,0 0.09024,-0.02841 0.181741,-0.05269 0.274218,-0.07266 0.09143,-0.01987 0.183711,-0.03544 0.276563,-0.04687 0.0077,-2.8e-5 0.01563,-2.8e-5 0.02344,0 0.06,-0.0066 0.120186,-0.01116 0.180468,-0.01416 z m 0.119532,3.070311 c -4.918893,2.320027 -9.830756,5.400922 -14.6625,11.903905 -0.106116,0.843338 -0.161184,1.665537 -0.171096,2.467968 -0.0098,0.802433 0.02693,1.584662 0.100776,2.350782 1.033521,10.725648 10.216452,17.923996 18.292968,25.258593 l -3.764063,4.246876 21.255469,-0.131254 -2.578125,-20.934377 -4.446092,5.025 c -7.369823,-8.23868 -18.074776,-20.906037 -14.02734,-30.187495 z m 3.009373,0.623437 c -0.04253,0.205977 -0.106176,0.407033 -0.189841,0.599999 -0.355764,0.815838 -0.552587,1.702983 -0.602346,2.660157 -0.01586,0.305199 -0.01586,0.61855 0,0.9375 0.111036,2.232626 0.98277,4.789133 2.3625,7.502343 3.563011,-1.890229 7.372419,-3.27389 11.317968,-4.110937 l 0.3,-0.119533 c -3.54753,-3.278554 -7.503737,-6.172443 -13.188279,-7.46953 z m 12.2625,4.582031 -0.215624,0.07031 -0.01176,0.02344 c 0.08105,-0.01726 0.146146,-0.07651 0.227344,-0.09376 z m 45.750002,5.723437 c -0.802434,-0.0098 -1.584666,0.02696 -2.350781,0.100775 -10.725652,1.03352 -17.923998,10.216453 -25.258595,18.292968 l -4.246878,-3.764057 0.131254,21.255469 20.934376,-2.578123 -5.025,-4.446096 c 8.238683,-7.369823 20.906044,-18.072433 30.187494,-14.025 -2.32001,-4.918892 -5.40091,-9.833098 -11.9039,-14.664842 -0.84333,-0.106117 -1.66554,-0.161182 -2.46797,-0.171094 z m 9.55079,17.050783 c -2.23265,0.111035 -4.78915,0.982766 -7.50235,2.362499 1.89023,3.563012 3.27389,7.372418 4.11093,11.317966 l 0.11965,0.3 c 3.27856,-3.547531 6.17244,-7.503737 7.46954,-13.18828 -0.20598,-0.04252 -0.40703,-0.106175 -0.6,-0.189842 -0.81584,-0.355764 -1.70298,-0.552585 -2.66016,-0.602343 -0.30519,-0.01586 -0.61855,-0.01586 -0.9375,0 z m -0.47813,12.827343 c 0.0173,0.08105 0.0764,0.146144 0.0937,0.227342 l -0.0702,-0.215625 z m -49.762503,13.535156 -20.932032,2.578124 5.025,4.446095 c -8.238684,7.369824 -20.906042,18.074776 -30.1875,14.027343 2.320026,4.918894 5.400921,9.8307519 11.903905,14.662499 0.843337,0.106116 1.665539,0.1611829 2.467968,0.1710949 0.802431,0.00984 1.584663,-0.026952 2.350782,-0.100776 10.72565,-1.0335217 17.923997,-10.2164539 25.258593,-18.2929699 l 4.246874,3.764056 z m 29.503121,0.585935 -21.255467,0.133592 2.578124,20.932032 4.446095,-5.025 c 7.369824,8.238685 18.072432,20.9060398 14.024999,30.1875015 4.91889,-2.3200323 9.833102,-5.4009245 14.664841,-11.9039095 0.10608,-0.8433371 0.16119,-1.6655363 0.1711,-2.4679691 0.01,-0.8024304 -0.027,-1.5846612 -0.1008,-2.3507799 C 102.5149,-20.870044 93.331956,-28.06839 85.255441,-35.402988 Z m -67.504684,4.267971 c -3.278554,3.547531 -6.172444,7.503737 -7.469533,13.18828 0.205978,0.04256 0.407034,0.106176 0.6,0.189843 0.815838,0.355762 1.702981,0.552586 2.660158,0.602343 0.305198,0.01586 0.618549,0.01586 0.9375,0 2.232626,-0.111036 4.789133,-0.982768 7.502342,-2.3625 -1.890227,-3.56301 -3.273887,-7.372418 -4.110936,-11.317966 z m -2.8875,0.92578 0.0703,0.215625 0.02344,0.01176 c -0.01726,-0.08105 -0.0765,-0.146143 -0.09375,-0.227344 z m 65.608592,28.7109367 c -3.563012,1.8902291 -7.37242,3.2738893 -11.317967,4.1109373 l -0.3,0.119532 c 3.54753,3.2785476 7.503737,6.1724429 13.188278,7.4695349 0.04252,-0.20598 0.106177,-0.407028 0.189844,-0.6 0.355763,-0.815844 0.552585,-1.7029799 0.602345,-2.6601593 0.01586,-0.305196 0.01586,-0.618552 0,-0.9375 -0.111036,-2.2326384 -0.982768,-4.789134 -2.3625,-7.5023449 z M 73.771091,1.2790394 c -0.08105,0.01728 -0.146145,0.07644 -0.227344,0.09372 l 0.215627,-0.07032 z" + id="path3849" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccscccccccccccccccccccccscccccccccccccccccccccscccccccccccccccccccccscccccccccccccccccccccccccsccccccccccccccccccccccccccccccccccccccccccccccccccccccsccccccccccccccccccc" /> + <g + style="fill:#505050;fill-opacity:1;stroke-width:0.19550784" + id="g4412" + inkscape:transform-center-x="-5.0913502" + inkscape:transform-center-y="-4.4596393" + transform="matrix(5.1148849,0,0,5.1148849,12.851148,-95.148848)" /> + <g + transform="matrix(0,4.9102895,-4.9102895,0,113.1029,-93.102895)" + inkscape:transform-center-y="24" + inkscape:transform-center-x="-21.022466" + id="g4064" + style="fill:#505050;fill-opacity:1;stroke-width:0.20365398" /> + <g + style="fill:#505050;fill-opacity:1;stroke-width:0.20365398" + id="g4068" + inkscape:transform-center-x="24.000005" + inkscape:transform-center-y="21.022466" + transform="matrix(-4.9102895,0,0,-4.9102895,113.10289,5.1029002)" /> + <g + transform="matrix(-2.719147e-8,-4.9102894,4.9102894,-2.719147e-8,14.8971,5.1028901)" + inkscape:transform-center-y="-24.000003" + inkscape:transform-center-x="21.022466" + id="g4072" + style="fill:#505050;fill-opacity:1;stroke-width:0.20365398" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/Toolbar/problems.svg b/src/stylesheets/Paper/Light/Toolbar/problems.svg new file mode 100644 index 00000000..9d398ee2 --- /dev/null +++ b/src/stylesheets/Paper/Light/Toolbar/problems.svg @@ -0,0 +1,132 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.3 (2405546, 2018-03-11)" + sodipodi:docname="problems.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="6.6922248" + inkscape:cx="59.799827" + inkscape:cy="56.347509" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="false" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <g + id="g3861" + transform="matrix(0.55290621,0,0,0.55290621,28.614002,-29.750801)" + style="fill:#737373;fill-opacity:1;stroke-width:1.80862486" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#3d3d3d;stroke-width:7.99999952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 64.344931,-96.263216 c -2.808173,-0.131523 -5.455193,1.310482 -6.861125,3.737706 L 4.9422487,-1.7926865 C 2.0494853,3.2027814 5.6651359,9.4471972 11.450616,9.4476002 H 116.53373 c 5.78548,-4.1e-4 9.40112,-6.2448225 6.50836,-11.2402867 L 70.500541,-92.52551 c -1.279824,-2.209515 -3.599319,-3.61792 -6.15561,-3.737706 z" + id="path3875" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccc" /> + <g + transform="matrix(-0.83333333,0,0,-0.83333333,117.3255,-70.7681)" + id="g3871" + style="stroke-width:1.20000005;fill:#3d3d3d;fill-opacity:1"> + <path + inkscape:connector-curvature="0" + id="path3851" + d="m 64,-80 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 -6.7e-4,4.11389 3.33402,7.449258 7.44791,7.449426 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 C 71.447743,-76.665387 68.113298,-79.999833 64,-80 Z" + style="opacity:1;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:9.60000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + <path + inkscape:connector-curvature="0" + id="path3860-8" + d="m 56.55209,-50.206086 v 34.757418 h 14.89582 v -34.757418 z" + style="opacity:1;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:9.60000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + <path + inkscape:connector-curvature="0" + style="opacity:1;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:9.60000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="m 64,-80 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 -6.7e-4,4.11389 3.33402,7.449258 7.44791,7.449426 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 C 71.447743,-76.665387 68.113298,-79.999833 64,-80 Z" + id="path3853" /> + <path + inkscape:connector-curvature="0" + id="path3862" + d="m 64,-57.654754 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 -6.7e-4,4.11389 3.33402,7.449258 7.44791,7.449426 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 -1.67e-4,-4.113297 -3.334612,-7.447743 -7.44791,-7.44791 z" + style="opacity:1;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:9.60000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + <path + style="opacity:1;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:9.60000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="m 64,-22.897336 c -4.113298,1.67e-4 -7.447744,3.334612 -7.44791,7.44791 C 56.55142,-11.335536 59.88611,-8.000168 64,-8 c 4.11389,-1.68e-4 7.44858,-3.335536 7.44791,-7.449426 -1.67e-4,-4.113297 -3.334612,-7.447743 -7.44791,-7.44791 z" + id="path3864" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/Toolbar/profiles.svg b/src/stylesheets/Paper/Light/Toolbar/profiles.svg new file mode 100644 index 00000000..5c074237 --- /dev/null +++ b/src/stylesheets/Paper/Light/Toolbar/profiles.svg @@ -0,0 +1,112 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.3 (2405546, 2018-03-11)" + sodipodi:docname="profiles.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="4.5931435" + inkscape:cx="69.80099" + inkscape:cy="16.758863" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="64,11.9981" + inkscape:measure-end="64,7.93514" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true" + inkscape:lockguides="true" + inkscape:snap-nodes="false"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="true" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="true" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <g + id="g3856" + style="fill:#3d3d3d;fill-opacity:1;stroke-width:0.81111115" + transform="matrix(1.2328767,0,0,1.2328767,-14.376763,-8.863014)"> + <circle + r="21" + cy="-44" + cx="64" + id="path3874" + style="opacity:1;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.24444389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + <path + sodipodi:nodetypes="ccsscc" + inkscape:connector-curvature="0" + id="path3858" + transform="translate(0,-108)" + d="M 63.421875,89.005859 C 48.016021,89.029098 33.691706,97.71624 25.455078,112.03125 29.673503,114.55644 34.640748,116 40,116 h 48 c 5.001681,0 9.660535,-1.26009 13.68945,-3.48047 C 93.502774,97.918077 79.022242,89.020453 63.421875,89.005859 Z" + style="opacity:1;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.40555558;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/Toolbar/settings.svg b/src/stylesheets/Paper/Light/Toolbar/settings.svg new file mode 100644 index 00000000..c0d8ed7e --- /dev/null +++ b/src/stylesheets/Paper/Light/Toolbar/settings.svg @@ -0,0 +1,95 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.3 (2405546, 2018-03-11)" + sodipodi:docname="settings.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="1.972807" + inkscape:cx="-13.4715" + inkscape:cy="-57.341097" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="8,64" + inkscape:measure-end="17.9742,64" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3854" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 55.75,-99 v 4.125 7.809571 c -5.874077,1.121199 -11.426558,3.415826 -16.37915,6.767577 l -8.427247,-8.427246 -11.668701,11.668701 8.429933,8.429932 c -3.36362,4.949109 -5.670511,10.500514 -6.802492,16.376465 H 9 v 16.5 h 11.934571 c 1.121199,5.874077 3.415826,11.426558 6.767577,16.37915 l -8.427246,8.427247 11.668701,11.66870105 8.429933,-8.42993305 c 4.949109,3.36362 10.500513,5.6705116 16.376464,6.80249075 V 11 h 16.5 V -0.93457095 C 78.124077,-2.0557723 83.676558,-4.3503989 88.62915,-7.702148 l 8.42725,8.42724605 11.6687,-11.66870105 -8.42994,-8.429933 c 3.36362,-4.949109 5.67052,-10.500513 6.8025,-16.376464 H 119 v -16.5 h -11.93457 c -1.1212,-5.874077 -3.41582,-11.426558 -6.76757,-16.37915 l 8.42724,-8.427247 -11.6687,-11.668701 -8.429935,8.429932 C 83.677355,-83.658785 78.125951,-85.965676 72.25,-87.097656 V -99 Z M 64,-68.75 c 13.603902,0 24.75,11.146098 24.75,24.75 0,13.603902 -11.146098,24.75 -24.75,24.75 -13.603902,0 -24.75,-11.146098 -24.75,-24.75 0,-13.603902 11.146098,-24.75 24.75,-24.75 z m 0,11 c -0.478691,0 -0.949948,0.02335 -1.415283,0.06982 -6.488691,0.656052 -11.608841,5.776202 -12.264893,12.264893 -1.79e-4,0.0018 1.79e-4,0.0036 0,0.0054 -0.04613,0.463616 -0.06983,0.933021 -0.06983,1.4099 0,0.476656 0.02311,0.946126 0.06982,1.409913 1.76e-4,0.0018 -1.76e-4,0.0036 0,0.0054 0.656052,6.488691 5.776202,11.60884 12.264893,12.264892 0.0018,1.79e-4 0.0035,-1.78e-4 0.0054,0 0.463616,0.04611 0.933021,0.06981 1.4099,0.06981 0.476878,0 0.946282,-0.02369 1.409913,-0.06982 0.0018,-1.78e-4 0.0035,1.78e-4 0.0054,0 6.488691,-0.656052 11.60884,-5.776202 12.264892,-12.264893 0.04705,-0.465516 0.06981,-0.936808 0.06981,-1.41529 0,-0.478482 -0.02276,-0.949774 -0.06982,-1.415283 -0.656052,-6.488691 -5.776203,-11.608841 -12.264894,-12.264893 -0.0018,-1.76e-4 -0.0035,1.76e-4 -0.0054,0 -0.463773,-0.04671 -0.933243,-0.06983 -1.409899,-0.06983 z" + id="path3915" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/Toolbar/tools.svg b/src/stylesheets/Paper/Light/Toolbar/tools.svg new file mode 100644 index 00000000..aae91d30 --- /dev/null +++ b/src/stylesheets/Paper/Light/Toolbar/tools.svg @@ -0,0 +1,117 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.3 (2405546, 2018-03-11)" + sodipodi:docname="tools.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="1.6239214" + inkscape:cx="-34.906444" + inkscape:cy="-0.15941226" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="54,64" + inkscape:measure-end="64,64" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true" + inkscape:bbox-paths="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <g + id="g3997" + transform="matrix(0.55904332,-0.55901902,-0.55904332,-0.55901902,4.4028105,-32.039863)" + style="fill:#3d3d3d;fill-opacity:1;stroke-width:1.26487899"> + <path + id="path3965" + transform="translate(0,-108)" + d="M -8,52 A 12,12 0 0 0 -20,64 12,12 0 0 0 -8,76 H 44 V 52 Z" + style="opacity:1;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.05951595;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + inkscape:connector-curvature="0" /> + <path + id="rect3969" + transform="translate(0,-108)" + d="m 128,53 -18,5 H 84 v 12 h 26 l 18,5 18,-5 V 58 Z" + style="opacity:1;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.05951595;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + inkscape:connector-curvature="0" /> + <path + style="opacity:1;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.86491537;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="m 32.291016,50.410156 c -5.753358,0.0068 -10.878972,3.636181 -12.796875,9.060547 h 12.796875 c 2.50182,-5.4e-5 4.529351,2.027478 4.529296,4.529297 -5.4e-5,2.501819 -2.027476,4.531196 -4.529296,4.53125 H 19.496094 c 1.917396,5.423518 7.042374,9.051114 12.794922,9.058594 5.30786,-0.0064 10.126181,-3.102522 12.33789,-7.927735 H 64 105.23759 v -0.0039 c 0.0293,0.0015 0.0586,0.0028 0.0879,0.0039 3.12696,-3.3e-4 5.66178,-2.535151 5.6621,-5.662109 -3.2e-4,-3.126962 -2.53514,-5.661785 -5.66211,-5.662109 -0.0299,0.0011 -0.0599,0.0024 -0.0898,0.0039 v -0.0039 H 64 44.626953 c -2.211168,-4.82439 -7.028882,-7.920713 -12.335937,-7.927735 z" + transform="matrix(-3.8373246e-5,-1.7660262,-1.7660262,-3.8373246e-5,177.02814,69.028134)" + id="rect3945" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccsccccccccccccccc" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/Toolbar/update.svg b/src/stylesheets/Paper/Light/Toolbar/update.svg new file mode 100644 index 00000000..0d017fa3 --- /dev/null +++ b/src/stylesheets/Paper/Light/Toolbar/update.svg @@ -0,0 +1,141 @@ +<?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" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.3 (2405546, 2018-03-11)" + sodipodi:docname="update.svg"> + <defs + id="defs2"> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4152-4-4-9"> + <rect + style="fill:#fdf6e3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4154-6-3-0" + width="598.57141" + height="928.57141" + x="352.85715" + y="22.362183" /> + </clipPath> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="3.341656" + inkscape:cx="55.620952" + inkscape:cy="67.236268" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <g + id="g4217-3-45" + transform="matrix(0.50121193,0,0,0.50121193,-6.8260092,-112.83314)" + style="display:inline;fill:#008484;fill-opacity:1" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96"> + <g + style="display:none;fill:#008484;fill-opacity:1" + transform="translate(0,-783.36216)" + id="layer1-9-66" + inkscape:label="Reference"> + <image + width="269" + height="269" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image4166-8-4" + x="0" + y="793.00507" + style="fill:#008484;fill-opacity:1" /> + </g> + <g + style="display:inline;fill:#008484;fill-opacity:1" + inkscape:label="Trace" + id="layer2-9-1-52"> + <g + id="g4216-4-8" + style="fill:#008484;fill-opacity:1"> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#008484;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:45.99133301;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="M 32.360048,65.606228 A 18.742595,18.742595 0 0 0 13.619017,84.347257 v 52.986143 52.98616 a 18.742595,18.742595 0 0 0 18.741031,18.74102 h 66.931502 52.98614 a 18.742595,18.742595 0 0 0 14.56367,-6.9571 c 9.39466,4.42246 19.71589,6.94877 30.41586,6.9571 a 18.742595,18.742595 0 0 0 0.0133,0 c 39.39268,0.001 71.72926,-32.3342 71.72947,-71.72718 -2.1e-4,-39.392981 -32.33679,-71.728471 -71.72977,-71.727172 a 18.742595,18.742595 0 0 0 -0.0106,0 c -18.56058,0.0092 -35.9395,7.273903 -48.98023,19.491814 C 135.2392,72.880337 117.85926,65.616053 99.29911,65.606228 a 18.742595,18.742595 0 0 0 -0.008,0 z M 32.20937,84.347257 H 99.14088 A 52.987154,52.987154 0 0 1 148.1289,117.2103 52.987154,52.987154 0 0 1 197.12213,84.347257 52.987154,52.987154 0 0 1 250.11087,137.3334 52.987154,52.987154 0 0 1 197.12213,190.31956 52.987154,52.987154 0 0 1 152.12702,165.2527 v 25.06686 H 99.14088 32.20937 V 137.3334 Z" + id="path4176-3-9" + inkscape:connector-curvature="0" /> + </g> + </g> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/backup.svg b/src/stylesheets/Paper/Light/backup.svg new file mode 100644 index 00000000..37240d7e --- /dev/null +++ b/src/stylesheets/Paper/Light/backup.svg @@ -0,0 +1,126 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="backup.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="24.35749" + inkscape:cx="-2.4145749" + inkscape:cy="5.3322583" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <g + id="g3865" + style="fill:#000000;fill-opacity:1"> + <path + id="rect3928" + d="M 0 0 L 0 3 L 0 6 L 3 6 L 3 3 L 17 3 L 17 6 L 20 6 L 20 3 L 20 0 L 0 0 z " + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + <g + id="g3858" + style="fill:#000000;fill-opacity:1"> + <rect + y="-12.83" + x="-20" + height="5.6599998" + width="13.981334" + id="rect3930" + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + transform="matrix(0,-1,-1,0,0,0)" /> + <path + sodipodi:type="star" + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.83595276;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + id="path3932" + sodipodi:sides="3" + sodipodi:cx="8.9146461" + sodipodi:cy="9.684866" + sodipodi:r1="4.0292788" + sodipodi:r2="2.0146394" + sodipodi:arg1="-1.5707963" + sodipodi:arg2="-0.52359878" + inkscape:flatsided="true" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 8.9146463,5.6555872 3.4894577,6.0439178 -6.9789157,0 z" + inkscape:transform-center-y="-1.3333344" + transform="matrix(-2.1493311,0,0,1.3236446,29.160526,-4.4859875)" /> + </g> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/check-alt.svg b/src/stylesheets/Paper/Light/check-alt.svg new file mode 100644 index 00000000..c566a383 --- /dev/null +++ b/src/stylesheets/Paper/Light/check-alt.svg @@ -0,0 +1,94 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="check-alt.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="24.357491" + inkscape:cx="-1.9687918" + inkscape:cy="8.1433394" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:169.70561218;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="m 16,2.0000002 -4,4 -4.0000001,3.9999996 -4,-3.9999996 L -9.4999999e-8,9.9999998 3.9999999,14 l 4,4 L 12,14 16,9.9999998 20,6.0000002 Z" + id="rect3900-47" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/check-white.svg b/src/stylesheets/Paper/Light/check-white.svg new file mode 100644 index 00000000..d3f7893d --- /dev/null +++ b/src/stylesheets/Paper/Light/check-white.svg @@ -0,0 +1,94 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="check-white.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="24.357491" + inkscape:cx="3.7660651" + inkscape:cy="2.8283911" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:169.70561218;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="m 16,2.0000002 -4,4 -4.0000001,3.9999996 -4,-3.9999996 L -9.4999999e-8,9.9999998 3.9999999,14 l 4,4 L 12,14 16,9.9999998 20,6.0000002 Z" + id="rect3900-47" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/check.svg b/src/stylesheets/Paper/Light/check.svg new file mode 100644 index 00000000..70701759 --- /dev/null +++ b/src/stylesheets/Paper/Light/check.svg @@ -0,0 +1,94 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="check.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="18.564955" + inkscape:cx="1.4921607" + inkscape:cy="9.294465" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + style="display:inline;opacity:1;fill:#008f8f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:169.70561218;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="m 16,2.0000002 -4,4 -4.0000001,3.9999996 -4,-3.9999996 L -9.4999999e-8,9.9999998 3.9999999,14 l 4,4 L 12,14 16,9.9999998 20,6.0000002 Z" + id="rect3900-47" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/cross.svg b/src/stylesheets/Paper/Light/cross.svg new file mode 100644 index 00000000..399525b0 --- /dev/null +++ b/src/stylesheets/Paper/Light/cross.svg @@ -0,0 +1,94 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="cross.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="63.914764" + inkscape:cx="-8.3166432" + inkscape:cy="4.7813622" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:169.70561218;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="m 4,1.5e-7 -4,3.99999995 2,2 L 6,10 l -4,4 -2,2 4,4 2,-2 4,-4 4,4 2,2 4,-4 -2,-2 -4,-4 4,-3.9999999 2,-2 L 16,1.5e-7 14,2.0000002 10,6.0000001 6,2.0000002 Z" + id="path3944" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/dots.svg b/src/stylesheets/Paper/Light/dots.svg new file mode 100644 index 00000000..02e61276 --- /dev/null +++ b/src/stylesheets/Paper/Light/dots.svg @@ -0,0 +1,111 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="dots.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="17.223346" + inkscape:cx="-4.9792391" + inkscape:cy="3.3065594" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <g + id="g3853" + style="fill:#000000;fill-opacity:1"> + <circle + r="2.5" + cy="10" + cx="10" + id="path4063" + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + <circle + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + id="circle3937" + cx="17.5" + cy="10" + r="2.5" /> + <circle + r="2.5" + cy="10" + cx="2.5" + id="circle3939" + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/folder.svg b/src/stylesheets/Paper/Light/folder.svg new file mode 100644 index 00000000..888464f7 --- /dev/null +++ b/src/stylesheets/Paper/Light/folder.svg @@ -0,0 +1,94 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="folder.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="68.893388" + inkscape:cx="-3.0866282" + inkscape:cy="6.5939937" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + d="M 12,2.0000002 10,4.0000001 H 2.5e-7 V 18 H 20 V 4.0000001 L 18,2.0000002 h -3 z" + id="rect3909" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/heart.svg b/src/stylesheets/Paper/Light/heart.svg new file mode 100644 index 00000000..ffff0a5b --- /dev/null +++ b/src/stylesheets/Paper/Light/heart.svg @@ -0,0 +1,111 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="heart.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="63.914764" + inkscape:cx="-5.6913454" + inkscape:cy="10.121962" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <g + style="display:inline;fill:#000000;fill-opacity:1" + id="g4198" + transform="translate(0,1)"> + <circle + r="5.5" + cy="5.5" + cx="5.5" + id="path4174" + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + <circle + r="5.5" + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + id="circle4176" + cx="14.5" + cy="5.5" /> + <path + id="path4178" + d="M 0,5.5 C 0,10.950465 5.8158604,15.070234 10,18 14.18414,15.070234 20,10.950465 20,5.5 H 10 Z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/refresh.svg b/src/stylesheets/Paper/Light/refresh.svg new file mode 100644 index 00000000..5a1ee108 --- /dev/null +++ b/src/stylesheets/Paper/Light/refresh.svg @@ -0,0 +1,103 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="refresh.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="24.357491" + inkscape:cx="-2.3896587" + inkscape:cy="9.2135439" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <g + style="display:inline;fill:#000000;fill-opacity:1" + id="g3986"> + <path + inkscape:connector-curvature="0" + id="path4137" + d="M 0,11.998047 V 20 L 2.9335938,17.066406 A 10,10 0 0 0 10,20 10,10 0 0 0 19.787109,11.998047 H 16.705078 A 7,7 0 0 1 10,17 7,7 0 0 1 5.0527344,14.947266 L 8,11.998047 Z" + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + <path + inkscape:connector-curvature="0" + id="rect4142" + d="M 10,0 A 10,10 0 0 0 0.21289062,8.0019531 H 3.2949219 A 7,7 0 0 1 10,3 7,7 0 0 1 14.947266,5.0527344 L 12,8.0019531 h 8 V 0 L 17.066406,2.9335938 A 10,10 0 0 0 10,0 Z" + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/restore-alt.svg b/src/stylesheets/Paper/Light/restore-alt.svg new file mode 100644 index 00000000..9f53e511 --- /dev/null +++ b/src/stylesheets/Paper/Light/restore-alt.svg @@ -0,0 +1,126 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="restore.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="24.35749" + inkscape:cx="16.864936" + inkscape:cy="2.6868089" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <g + id="g3866" + style="fill:#000000;fill-opacity:1;stroke:none"> + <path + id="rect3928" + d="M 0 14 L 0 17 L 0 20 L 20 20 L 20 17 L 20 14 L 17 14 L 17 17 L 3 17 L 3 14 L 0 14 z " + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + <g + id="g3860" + style="fill:#000000;fill-opacity:1;stroke:none"> + <rect + y="-12.83" + x="7.85585e-016" + height="5.6599998" + width="13.981334" + id="rect3930" + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + transform="rotate(90)" /> + <path + sodipodi:type="star" + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.83595276;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + id="path3932" + sodipodi:sides="3" + sodipodi:cx="8.9146461" + sodipodi:cy="9.684866" + sodipodi:r1="4.0292788" + sodipodi:r2="2.0146394" + sodipodi:arg1="-1.5707963" + sodipodi:arg2="-0.52359878" + inkscape:flatsided="true" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 8.9146463,5.6555872 3.4894577,6.0439178 -6.9789157,0 z" + inkscape:transform-center-y="-1.3333344" + transform="matrix(-2.1493311,0,0,-1.3236446,29.160526,24.485987)" /> + </g> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/restore.svg b/src/stylesheets/Paper/Light/restore.svg new file mode 100644 index 00000000..33aea044 --- /dev/null +++ b/src/stylesheets/Paper/Light/restore.svg @@ -0,0 +1,94 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="restore.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="29.64796" + inkscape:cx="-4.0321502" + inkscape:cy="7.0312982" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="m 10,-2.5e-7 a 10,10 0 0 1 0.998047,0.05078 A 10,10 0 0 1 19.787109,8.0019518 10,10 0 0 1 20,10 10,10 0 0 1 10,20 10,10 0 0 1 0.2128895,11.998047 h 3.082032 A 7,7 0 0 0 10,17 a 7,7 0 0 0 7,-7 7,7 0 0 0 -0.294922,-1.9980473 7,7 0 0 0 -0.53125,-1.291016 7,7 0 0 0 0,-0.0019 7,7 0 0 0 -0.359375,-0.599609 7,7 0 0 0 -0.417969,-0.5625 7,7 0 0 0 -0.40625,-0.447266 7,7 0 0 0 -0.07422,-0.07813 7,7 0 0 0 -0.435547,-0.390625 7,7 0 0 0 -0.08594,-0.07422 7,7 0 0 0 -0.490234,-0.359375 7,7 0 0 0 -0.07227,-0.05078 7,7 0 0 0 -0.49023,-0.289062 7,7 0 0 0 -0.119141,-0.06836 7,7 0 0 0 -0.439453,-0.203125 7,7 0 0 0 -0.207031,-0.0918 7,7 0 0 0 -0.402344,-0.138672 7,7 0 0 0 -0.259766,-0.08594 7,7 0 0 0 -0.466797,-0.109375 7,7 0 0 0 -0.208984,-0.04687 7,7 0 0 0 -0.458984,-0.06055 7,7 0 0 0 -0.246094,-0.03125 A 7,7 0 0 0 10,2.9999997 a 7,7 0 0 0 -2.06836,0.314453 7,7 0 0 0 -0.0019,0 7,7 0 0 0 -0.654297,0.240234 7,7 0 0 0 -0.0019,0 7,7 0 0 0 -0.628906,0.304688 7,7 0 0 0 -1.587891,1.197266 L 8,8.0019527 H 3.2968745 0.2031245 -5e-7 V -2.5e-7 l 2.933594,2.93359395 a 10,10 0 0 1 0.01172,-0.01172 10,10 0 0 1 0.591797,-0.535156 10,10 0 0 1 0.169922,-0.148438 10,10 0 0 1 0.6015635,-0.447265 10,10 0 0 1 0.199218,-0.142579 10,10 0 0 1 0.644532,-0.380859 10,10 0 0 1 0.222656,-0.126953 10,10 0 0 1 0.632812,-0.29492195 10,10 0 0 1 0.283204,-0.126953 10,10 0 0 1 0.623046,-0.216797 10,10 0 0 1 0.328125,-0.109375 10,10 0 0 1 0.601563,-0.144531 10,10 0 0 1 0.375,-0.08398 10,10 0 0 1 0.603516,-0.08203 10,10 0 0 1 0.394531,-0.04883 A 10,10 0 0 1 10,-2.5e-7 Z" + id="path3956" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/run.svg b/src/stylesheets/Paper/Light/run.svg new file mode 100644 index 00000000..008b2ccc --- /dev/null +++ b/src/stylesheets/Paper/Light/run.svg @@ -0,0 +1,109 @@ +<?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="128" + height="128" + viewBox="0 0 128 128" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="run.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="3.0446864" + inkscape:cx="23.34915" + inkscape:cy="69.793752" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="64,64" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="64,64" + orientation="0,1" + id="guide3935" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <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 + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content" + transform="translate(0,108)"> + <path + sodipodi:type="star" + style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + id="path3868" + sodipodi:sides="3" + sodipodi:cx="63.999996" + sodipodi:cy="-43.999996" + sodipodi:r1="64.000008" + sodipodi:r2="32.000004" + sodipodi:arg1="0" + sodipodi:arg2="1.0471976" + inkscape:flatsided="true" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 128,-43.999996 -96.000008,55.425632 0,-110.851265 z" + inkscape:transform-center-x="-15.999997" + inkscape:transform-center-y="3.8146973e-006" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/shortcut.svg b/src/stylesheets/Paper/Light/shortcut.svg new file mode 100644 index 00000000..45c9a748 --- /dev/null +++ b/src/stylesheets/Paper/Light/shortcut.svg @@ -0,0 +1,94 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="shortcut.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="22.59728" + inkscape:cx="-2.8635478" + inkscape:cy="2.7808125" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + inkscape:connector-curvature="0" + style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:stroke fill markers" + d="M 12,1.1035163 V 5.4492195 A 9.7951674,7.8360994 0 0 0 2.2050782,13.285156 9.7951674,7.8360994 0 0 0 6.9863282,20 H 8.201172 A 5.8526129,4.68207 0 0 1 6.1484376,16.4375 5.8526129,4.68207 0 0 1 12,11.757812 v 4.345704 l 8,-7.5 z" + id="rect3929" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/sort.svg b/src/stylesheets/Paper/Light/sort.svg new file mode 100644 index 00000000..94b5a4f1 --- /dev/null +++ b/src/stylesheets/Paper/Light/sort.svg @@ -0,0 +1,125 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="sort.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="17.223346" + inkscape:cx="2.707289" + inkscape:cy="1.8950951" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <g + id="g3898" + style="fill:#000000;fill-opacity:1"> + <g + id="g3886" + style="fill:#000000;fill-opacity:1"> + <rect + y="4" + x="13" + height="16" + width="3" + id="rect4003" + style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + <path + style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + d="m 13,0 v 7.9999998 h 7 z" + id="path4009" + inkscape:connector-curvature="0" /> + </g> + <g + id="g3890" + style="fill:#000000;fill-opacity:1"> + <rect + style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" + id="rect3999" + width="3" + height="16" + x="4" + y="2.2775268e-008" /> + <path + inkscape:connector-curvature="0" + id="path4016" + d="M 7,20 V 12 H 0 Z" + style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:120;stroke-opacity:1;paint-order:normal" /> + </g> + </g> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/unchecked-alt.svg b/src/stylesheets/Paper/Light/unchecked-alt.svg new file mode 100644 index 00000000..ae3c96b4 --- /dev/null +++ b/src/stylesheets/Paper/Light/unchecked-alt.svg @@ -0,0 +1,94 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="unchecked-alt.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="17.223347" + inkscape:cx="11.892485" + inkscape:cy="9.029807" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + inkscape:connector-curvature="0" + style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="M 10,9.9999999e-8 C 4.477152,9.9999999e-8 0,4.4771526 0,10 c 0,5.522848 4.477152,10 10,10 5.522848,0 10,-4.477152 10,-10 0,-5.5228474 -4.477152,-9.9999999 -10,-9.9999999 z M 10,2.5000001 c 4.142136,0 7.5,3.3578645 7.5,7.4999999 0,4.142136 -3.357864,7.5 -7.5,7.5 C 5.857864,17.5 2.5,14.142136 2.5,10 2.5,5.8578646 5.857864,2.5000001 10,2.5000001 Z" + id="path3872" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/unchecked-disabled.svg b/src/stylesheets/Paper/Light/unchecked-disabled.svg new file mode 100644 index 00000000..1c9fd840 --- /dev/null +++ b/src/stylesheets/Paper/Light/unchecked-disabled.svg @@ -0,0 +1,94 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="unchecked-disabled.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="13.752717" + inkscape:cx="12.990894" + inkscape:cy="5.3273691" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + style="display:inline;opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:169.70561218;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="M 4,-5.0000001e-8 0,3.9999999 l 2,2 L 6,9.9999998 2,14 l -2,2 4,4 2,-2 4,-4 4,4 2,2 4,-4 -2,-2 -4,-4.0000002 4,-3.9999999 2,-2 L 16,-5.0000001e-8 14,2 10,5.9999999 6,2 Z" + id="path3944" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/unchecked-hover.svg b/src/stylesheets/Paper/Light/unchecked-hover.svg new file mode 100644 index 00000000..7e3683dc --- /dev/null +++ b/src/stylesheets/Paper/Light/unchecked-hover.svg @@ -0,0 +1,94 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="unchecked-hover.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="21.962888" + inkscape:cx="29.324366" + inkscape:cy="13.4838" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + inkscape:connector-curvature="0" + style="display:inline;opacity:1;fill:#008484;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="M 10,9.9999999e-8 C 4.477152,9.9999999e-8 0,4.4771526 0,10 c 0,5.522848 4.477152,10 10,10 5.522848,0 10,-4.477152 10,-10 0,-5.5228474 -4.477152,-9.9999999 -10,-9.9999999 z M 10,2.5000001 c 4.142136,0 7.5,3.3578645 7.5,7.4999999 0,4.142136 -3.357864,7.5 -7.5,7.5 C 5.857864,17.5 2.5,14.142136 2.5,10 2.5,5.8578646 5.857864,2.5000001 10,2.5000001 Z" + id="path3872" /> + </g> +</svg> diff --git a/src/stylesheets/Paper/Light/unchecked.svg b/src/stylesheets/Paper/Light/unchecked.svg new file mode 100644 index 00000000..9e1f8b08 --- /dev/null +++ b/src/stylesheets/Paper/Light/unchecked.svg @@ -0,0 +1,94 @@ +<?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="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg8" + inkscape:export-filename="D:\Bethesda Game Modding\Mod Organizer 2\stylesheets\Paper\Dark\dots.png" + inkscape:export-xdpi="307.20001" + inkscape:export-ydpi="307.20001" + inkscape:version="0.92.1 r15371" + sodipodi:docname="unchecked.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#505050" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="20.964275" + inkscape:cx="11.984896" + inkscape:cy="5.7816586" + inkscape:document-units="px" + inkscape:current-layer="layer25" + showgrid="false" + units="px" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:measure-start="18.8975,12.498" + inkscape:measure-end="20,12.498" + inkscape:snap-intersection-paths="true" + inkscape:object-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-global="true"> + <sodipodi:guide + position="10,10" + orientation="1,0" + id="guide4039" + inkscape:locked="false" /> + <sodipodi:guide + position="10,10" + orientation="0,1" + id="guide3935" + inkscape:locked="false" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer25" + inkscape:label="Content"> + <path + inkscape:connector-curvature="0" + style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.93939996;stroke-opacity:1;paint-order:markers stroke fill" + d="M 10,9.9999999e-8 C 4.477152,9.9999999e-8 0,4.4771526 0,10 c 0,5.522848 4.477152,10 10,10 5.522848,0 10,-4.477152 10,-10 0,-5.5228474 -4.477152,-9.9999999 -10,-9.9999999 z M 10,2.5000001 c 4.142136,0 7.5,3.3578645 7.5,7.4999999 0,4.142136 -3.357864,7.5 -7.5,7.5 C 5.857864,17.5 2.5,14.142136 2.5,10 2.5,5.8578646 5.857864,2.5000001 10,2.5000001 Z" + id="path3872" /> + </g> +</svg> diff --git a/src/stylesheets/Transparent-Style-101-Green.qss b/src/stylesheets/Transparent-Style-101-Green.qss new file mode 100644 index 00000000..f7bf16b6 --- /dev/null +++ b/src/stylesheets/Transparent-Style-101-Green.qss @@ -0,0 +1 @@ +#centralWidget { border-image: url(./Transparent-Style/Green/vault-101.png) 0 0 0 0 stretch stretch; } QDialog,Qmenu { border: none; } QWidget { color: #fff; background-color: rgb(0, 204, 0, 5); alternate-background-color: rgb(0, 204, 0, 10); } QAbstractItemView { color: #fff; background-color: rgb(0, 204, 0, 5); alternate-background-color: rgb(0, 204, 0, 10); border: 1px solid #001a00; border-style:outset; border-radius: 3px; selection-color: #001a00; outline: none; } #ProblemsDialog,#TransferSavesDialog,#SettingsDialog,#ProblemsDialog, #ModInfoDialog,#TextViewer,#PyCfgDialog,#InstallDialog { border-image:url(./Transparent-Style/Green/vault-tec-full.png) 0 0 0 0 stretch stretch; } #EditExecutablesDialog { border-image: url(./Transparent-Style/Green/vault-tec.png) 0 0 0 0 stretch stretch; } #SimpleInstallDialog,#LockedDialog,QMenu { border-image: url(./Transparent-Style/Green/vault-tec-small.png) 0 0 0 0 stretch stretch; } #nameLabel { background-color: rgb(0, 0, 0, 20); border-top:1px solid black; border-bottom:1px solid black; } #ProfilesDialog,#FomodInstallerDialog { border-image: url(./Transparent-Style/Green/vault-tec-profiles.png) 0 0 0 0 stretch stretch; } #filesView { border-image: url(./Transparent-Style/Green/vault-tec-overwrite.png) 0 0 0 0 stretch stretch; } /* ******************************************** */ /* Main Navigation Button Bar at top of window */ /* ******************************************** */ QToolBar { border: none; } QToolBar::separator { image: url(./Transparent-Style/Green/Vault-101-vault-boy.png); } QToolButton { border:2px ridge None; border-radius: 6px; margin: 3px; padding-left: 8px; padding-right: 8px; padding-top: 0px; padding-bottom: 2px; } QToolButton:hover { border: 2px ridge #fff; background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #697670, stop: 1 #484F53); } QToolButton:pressed { background: black; } QTabWidget::pane { background-color: transparent; border:transparent; } QTabWidget::tab-bar { alignment: center; } /* **************************************** */ /* Tabs on top of Treeview */ /* **************************************** */ QTabBar { text-transform: uppercase; max-height: 22px; padding-bottom: 5px; } QTabBar::tab { border: none; border-bottom-style: none; background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #697670, stop: 1 #484F53); padding-left: 15px; padding-right: 15px; padding-top: 3px; padding-bottom: 3px; margin-right: 2px; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; } QTabBar::tab:selected { color: #fff; background-color: #00cc00; } QTabBar::tab:!selected { color: #00cc00; margin-top: 0px; } QTabBar::tab:disabled { color: #bbbbbb; border-bottom-style: none; margin-top: 0px; background-color: #000; } #deactivateESP,#activateESP { border:px #00cc00; background:QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #697670, stop: 1 #484F53); } QToolButton::menu-indicator:pressed,QToolButton::menu-indicator:open { border:2px ridge #00cc00; image: url(./Transparent-Style/Green/arrow-right.png); } QTabBar QToolButton { border:2px ridge #00cc00; background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #697670, stop: 1 #484F53); padding: 1px; margin: 0; } QTabBar QToolButton::right-arrow { image: url(./Transparent-Style/Green/arrow-right.png); } QTabBar QToolButton::left-arrow { image: url(./Transparent-Style/Green/arrow-left.png); } /* **************************************** */ /* Column names of TreeView */ /* **************************************** */ QTableView { color:#fff; background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #697670, stop: 1 #484F53); } QHeaderView::section { color: #00cc00; background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #697670, stop: 1 #484F53); border-radius: 6px; padding: 4px; padding-left: 5px; padding-right: 0px; } QHeaderView::section:hover { background: #121212; border: 2px solid #ff0000; padding: 0px; } QHeaderView::up-arrow,QHeaderView::down-arrow { subcontrol-origin: content; subcontrol-position: center right; width: 7px; height: 7px; margin-right: 7px; } QHeaderView::up-arrow { image: url(./Transparent-Style/Green/arrow-up.png); } QHeaderView::down-arrow { image: url(./Transparent-Style/Green/arrow-down.png); } /* **************************************** */ /* Hover */ /* **************************************** */ QMenu:item:hover,QTreeView#espList::item:hover,QTreeWidget#categoriesList::item:hover,QListView::item:hover,QTreeWidget::item:hover { color:#fff; border-top:1px solid #b9d7fc; border-bottom:1px solid #b9d7fc; background-color:#000; } QAbstractItemView::item:hover { border-top:1px solid #b9d7fc; border-bottom:1px solid #b9d7fc; background-color:#000; padding: 3px; } #deactivateESP:hover,#activateESP:hover,QPushButton:hover,QTableView:hover,QHeaderView::selected:hover,QTabBar::tab:!selected:hover,QComboBox:hover { border: 1px solid #ff0000; padding: 1px; text-align: center; } /* **************************************** */ /* Context menus, toolbar dropdowns #QMenu */ /* **************************************** */ QMenu { border-width: 3px; border-style: solid; } QMenu::item { padding: 6px 20px; } QMenu::item:selected { color:#fff; background-color: #001a00; border-top:1px solid #b9d7fc; border-bottom:1px solid #b9d7fc; } QMenu::right-arrow { image: url(./Transparent-Style/Green/arrow-right.png); subcontrol-origin: padding; subcontrol-position: center right; padding-right: 0.5em; } /* ********************* */ /* LCD Counter */ /* ********************* */ QLCDNumber { Background:#000; border-color: #00cc00; border-style: solid; border-width: 1px; border-radius: 5px; } /* **************************************** */ /* Launch application Drop down Box */ /* **************************************** */ QComboBox { background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #697670, stop: 1 #484F53); border:1px outset #00cc00; height: 20px; width: 15px; padding: 3px; padding-left:3px; border-radius: 5px; } QComboBox::drop-down{ subcontrol-origin: padding; subcontrol-position: top right; width: 15px; padding:4px; border-radius: 5px; } QComboBox::down-arrow{ image:url(./Transparent-Style/Green/arrow-down.png); } QComboBox::item{ border:3px;padding: 3px; } /* **************************************************************** */ /* Action Buttons */ /* */ /* Open list, Rextore Backup, Create Backup, RUN, Shortcut Button */ /* Sort, Load order backup, Load Order Restore */ /* **************************************************************** */ QPushButton { color: #00cc00; background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #697670, stop: 1 #484F53); border-width: 1px; border-color: 1px outset #00cc00; border-style: solid; border-radius: 4px; padding:5px; padding-right: 10px; padding-left: 5px; } QDialog QPushButton { min-width: 3em; min-height: 1em; padding-left: 1em; padding-right: 1em; } QPushButton::menu-indicator { image: url(./Transparent-Style/Green/arrow-down.png); background: transparent; subcontrol-origin: padding; subcontrol-position: center right; padding-right: 5%; } QPushButton:open { background-color: rgb(0, 204, 0, 100); } QPushButton:!enabled { border: 1px grey; color: grey; background: black; } QPushButton#displayCategoriesBtn { min-width: 20px; } /* **************************************** */ /* Scroll bar */ /* **************************************** */ QScrollBar { height:20px; width:20px; background-color:transparent; } QScrollBar::handle { border: 1px solid #aaa; border-radius: 4px; } QScrollBar::handle:vertical { margin: 1px 4px; min-height:20px; min-width: 10px; background-color:qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, stop:0 #33ff33, stop:1 #000000); } QScrollBar::handle:vertical:hover { background-color:qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, stop:0 #000000, stop:1 #33ff33); } QScrollBar::handle:horizontal { min-height:10px;min-width:20px;margin:4px 1px; background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop:0 #33ff33, stop:1 #000000); } QScrollBar::handle:horizontal:hover { background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop:0 #000000, stop:1 #33ff33); } QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical,QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal { background-color: transparent; } QScrollBar::add-line:vertical,QScrollBar::sub-line:vertical,QScrollBar::add-line:horizontal,QScrollBar::sub-line:horizontal { height:0; width:0; } /* ******************************************************** */ /* Main Tree View Inherated from QAbstractItemView */ /* ******************************************************** */ QTreeView { } QTreeView:item { padding:4px; } QTreeView:item:selected { color: #001a00; border: none;outline: none; border-radius: 5px; border-top:1px solid #b9d7fc; border-bottom:1px solid #b9d7fc; background-color: rgb(0, 204, 0, 100); } QTreeView::branch:has-siblings:!adjoins-item { background:url(Vault-101/Vault-101-item-line-v.png) center center no-repeat; } QTreeView::branch:has-siblings { background:url(Vault-101/Vault-101-itemB-line.png) center center no-repeat; } QTreeView::branch:!has-children:!has-siblings:adjoins-item { background:url(Vault-101/Vault-101-itemB-end.png) center center no-repeat; } QTreeView::branch:closed:has-children:has-siblings { background:url(Vault-101/Vault-101-itemB-close.png) center center no-repeat; } QTreeView::branch:closed:has-children:!has-siblings { background:url(Vault-101/Vault-101-itemB-close-last.png) center center no-repeat; } QTreeView::branch:open:has-children:has-siblings { background:url(Vault-101/Vault-101-itemB-open.png) center center no-repeat; } QTreeView::branch:open:has-children:!has-siblings { background:url(Vault-101/Vault-101-itemB-open-last.png) center center no-repeat; } /* **************************************************************** */ /* Checkboxes and Radio buttons common #QCheckBox, #QRadioButton */ /* common */ /* **************************************************************** */ QGroupBox::indicator,QTreeView::indicator,QCheckBox::indicator { outline: none; border: none; width: 20px; height: 20px; } QGroupBox::indicator:checked,QGroupBox::indicator:indeterminate,QTreeView::indicator:checked,QTreeView::indicator:indeterminate,QCheckBox::indicator:checked,QCheckBox::indicator:indeterminate { image: url(./Transparent-Style/Green/checkbox-checked.png); } QGroupBox::indicator:checked:hover,QGroupBox::indicator:indeterminate:hover,QTreeView::indicator:checked:hover,QTreeView::indicator:indeterminate:hover,QCheckBox::indicator:checked:hover,QCheckBox::indicator:indeterminate:hover { image: url(./Transparent-Style/Green/checkbox-hover.png); } QGroupBox::indicator:checked:disabled,QGroupBox::indicator:indeterminate:disabled,QTreeView::indicator:checked:disabled,QTreeView::indicator:indeterminate:disabled,QCheckBox::indicator:checked:disabled,QCheckBox::indicator:indeterminate:disabled { image: url(./Transparent-Style/Green/checkbox-checked-disabled.png); } QGroupBox::indicator:unchecked,QTreeView::indicator:unchecked,QCheckBox::indicator:unchecked { image: url(./Transparent-Style/Green/checkbox.png); } QGroupBox::indicator:unchecked:hover,QTreeView::indicator:unchecked:hover,QCheckBox::indicator:unchecked:hover { image: url(./Transparent-Style/Green/checkbox-checked-hover.png); } QGroupBox::indicator:unchecked:disabled,QTreeView::indicator:unchecked:disabled,QCheckBox::indicator:unchecked:disabled { image: url(./Transparent-Style/Green/checkbox-checked-disabled.png); } QTreeWidget#categoriesList::item:has-children { background-image: url(./Transparent-Style/Green/arrow-right.png); } QTreeWidget#categoriesList::item:has-children:open { background-image: url(./Transparent-Style/Green/branch-opened.png); } /* ******************************** */ /* Special styles */ /* increase categories tab width */ /* ******************************** */ QTreeView#modList::item,QTreeWidget#categoriesTree::item,#tabConflicts QTreeWidget::item,QListView::item,QTreeView#espList::item,QTreeView#treeContent::item { padding: .3em 0; } QTreeWidget#categoriesGroup,QTreeWidget#categoriesList { min-width: 200px; } QTreeWidget#categoriesList::item { background-position: center left; background-repeat: no-repeat; padding: 0.35em 4px; } /* ********************* */ /* Display Radio Button */ /* ********************* */ QRadioButton::indicator { width: 16px; height: 16px; } QRadioButton::indicator::checked { image: url(./Transparent-Style/Green/radio-checked.png); } QRadioButton::indicator::unchecked { image: url(./Transparent-Style/Green/radio.png); } QRadioButton::indicator::unchecked:hover { image: url(./Transparent-Style/Green/radio-hover.png); } /* **************************************** */ /* Spinners #QSpinBox, #QDoubleSpinBox */ /* **************************************** */ QAbstractSpinBox { min-height: 24px; } QAbstractSpinBox::up-button,QAbstractSpinBox::down-button { border-style: solid; border-width: 1px; subcontrol-origin: padding; } QAbstractSpinBox::up-button:hover,QAbstractSpinBox::down-button:hover { background-color: #141414; } QAbstractSpinBox::up-button { subcontrol-position: top right; } QAbstractSpinBox::down-button { subcontrol-position: bottom right; } QAbstractSpinBox::up-arrow { image: url(./Transparent-Style/Green/arrow-up.png); } QAbstractSpinBox::down-arrow { image: url(./Transparent-Style/Green/arrow-down.png); } /* **************************************** */ /* Tooltips #QToolTip, #SaveGameInfoWidget */ /* **************************************** */ QToolTip { background-color:transparent; color:#C0C0C0; padding:0px; border-width:7px; border-style:solid; border-color:transparent; border-image:url(./Transparent-Style/Green/border-image.png) 27 repeat repeat; } SaveGameInfoWidget { background-color:#121212; color:#C0C0C0; } /* **************************** */ /* Handles Web, Nexus info tab */ /* **************************** */ QWebView { background-color: Black; } QLineEdit { font-family: Source Sans Pro; background:#000; border-width: 1px; border-radius:5px; margin: 0px; padding-left:2px; selection-background-color: rgb(0, 204, 0, 10); } /* Font size */ QLabel, QMenu, QPushButton, QTabBar, QTextEdit, QLineEdit, QWebView, QComboBox, QComboBox:editable, QAbstractSpinBox, QGroupBox, QCheckBox, QRadioButton { color: #cccccc; font-family: Source Sans Pro; font-size: 14px; } QAbstractItemView { color: #cccccc; font-family: Source Sans Pro; font-size: 14px; }
\ No newline at end of file diff --git a/src/stylesheets/Transparent-Style-BOS.qss b/src/stylesheets/Transparent-Style-BOS.qss new file mode 100644 index 00000000..cda40e9f --- /dev/null +++ b/src/stylesheets/Transparent-Style-BOS.qss @@ -0,0 +1 @@ +#centralWidget { border-image: url(./Transparent-Style/Fallout-BOS.png) 0 0 0 0 stretch stretch; } QWidget#TextViewer{ } QWidget{ color: #fff; background-color: rgba(45,45,48,30); alternate-background-color: rgba(38,38,38,30); } QWidget:disabled{ } QAbstractItemView{ color: #dcdcdc; background-color: rgb(45,45,48,30); alternate-background-color: rgb(38,38,38,50); border: 1px solid #3F3F46; /* Grey - Blue*/ border-style:outset; border-radius: 3px; selection-color: #3F3F46; /* Grey - Blue*/ outline: none; padding-left:0; } #problemsWidget,#TransferSavesDialog,#SettingsDialog,#ProblemsDialog,#ModInfoDialog,#TextViewer,#PyCfgDialog,#InstallDialog { border-image:url(./Transparent-Style/Vault-BOS-Main.png) 0 0 0 0 stretch stretch; } #toolBarArea{ border-image: url(./Transparent-Style/vault-BOS-Main.png) 0 0 0 0 stretch stretch; } #EditExecutablesDialog{ border-image: url(./Transparent-Style/vault-BOS-Main.png) 0 0 0 0 stretch stretch; } #SimpleInstallDialog,#LockedDialog,QMenu{ border-image: url(./Transparent-Style/vault-BOS-Main.png) 0 0 0 0 stretch stretch; } #nameLabel{ border-image: url(./Transparent-Style/vault-BOS-Main.png) 0 0 0 0 stretch stretch; border-top:1px solid #b9d7fc; border-bottom:1px solid #b9d7fc; background-color:rgba(154,154,0,0.3); color:#fff; } #ProfilesDialog,#FomodInstallerDialog{ border-image: url(./Transparent-Style/vault-BOS-Main.png) 0 0 0 0 stretch stretch; } #filesView{ border-image: url(./Transparent-Style/vault-BOS-Main.png) 0 0 0 0 stretch stretch; } /* ******************************************** */ /* Main Navigation Button Bar at top of window */ /* ******************************************** */ QToolBar{ /*border: none;*/ } QToolBar::separator{ /*image: url(./Transparent-Style/Vault-101-vault-logo.png);*/ } QToolButton{ border:2px solid None; border-radius: 6px; margin: 3px; padding-left: 8px; padding-right: 8px; padding-top: 0px; padding-bottom: 2px; } QToolButton:hover{ border-radius: 3px; border: 0px; padding: 0px; background: trANSPARENT; border: 0px ridge #9A9A00; background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #9A9A00, stop: 1 #484F53); } QToolButton:pressed{ background: black; } /* **************************************** */ /* Tabs on top of Treeview */ /* **************************************** */ QTabWidget::pane{ border-color:#3F3F46; /* Grey - Blue*/ /* border-top-color:#9A9A00; */ top: 0px; border-style:hidden; border-width:1px; } QTabWidget::tab-bar{ alignment: center; } QTabBar{ color: #cccccc; font-family: Segoe UI; font-size: 16px; text-transform: none; min-height:auto; padding-bottom: 5px; } QTabBar::tab{ border: none; border-bottom-style: none; background-color: rgba(154,154,0,0.3); padding-left: 9px; padding-right: 9px; padding-top: 3px; padding-bottom: 3px; margin-right: 2px; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; } QTabBar::tab:disabled{ color: #404040; background-color: #000; margin-top: 0px; } QTabBar::tab:selected{ color: #dcdcdc; background-color: #9A9A00; /*Yellow opaque*/ } QTabBar::tab:!selected:hover{ border-radius: 3px; border-top:3px double #9A9A00; border-bottom:3px double #9A9A00; padding: 1px; text-align: center; background-color: #9A9A00; color:#fff; Height: 20%; } /* QTabBar::tab:!selected{ color: #808080; background-color: #404040; margin-top: 0px; } */ #deactivateESP,#activateESP{ border:#b30000; background:#333337; } /* **************************************** */ /* <More View> on top of Treeview */ /* **************************************** */ QTabBar QToolButton{ border-radius: 0px; border: 0px; padding: 0px; background: transparent; } QToolButton::menu-indicator:pressed,QToolButton::menu-indicator:open{ image: url(./Transparent-Style/arrow-up.png); } QToolButton::menu-indicator:!pressed,QToolButton::menu-indicator:!open{ image: url(./Transparent-Style/arrow-down.png); } QTabBar QToolButton::right-arrow{ image: url(./Transparent-Style/narrow-arrow-right.png); } QTabBar QToolButton::left-arrow{ image: url(./Transparent-Style/narrow-arrow-left.png); } /* **************************************** */ /* Column names of TreeView */ /* **************************************** */ QTableView{ gridline-color:#3F3F46; selection-background-color:#9A9A00; selection-color:#F1F1F1; /* White */ text-align: center; min-height:24px; } QHeaderView{ min-height:24px; /*Top Bar on menus*/ padding: 3px; } QHeaderView::section{ /* color: #cc3333; */ background-color: #252526; border-radius: 0px; padding: 0px; padding-left: 5px; } QHeaderView::section:hover{ background: rgba(154,154,0,0.3); border: 1px solid #9a9a00; padding: 0px; padding-left: 5px; } QHeaderView::up-arrow,QHeaderView::down-arrow{ min-height:Auto; min-width:Auto; } QHeaderView::up-arrow{ image: url(./Transparent-Style/arrow-up.png); min-height:25px; min-width:15px; padding-right: 0px; }QHeaderView::down-arrow{ image: url(./Transparent-Style/arrow-down.png); } /* **************************************** */ /* Hover */ /* **************************************** */ QMenu:item:hover,QTreeView#espList::item:hover,QTreeWidget#categoriesList::item:hover,QListView::item:hover,QTreeWidget::item:hover{ color:#fff; border-top:1px solid #b9d7fc; border-bottom:1px solid #b9d7fc; background-color:rgba(154,154,0,0.3); } QAbstractItemView::item:hover{ border-top:1px solid #b9d7fc; border-bottom:1px solid #b9d7fc; background-color:rgba(154,154,0,0.3); padding: 3px; } /*#DownloadListWidget{ }*/ #DownloadListWidget{ outline: 1px solid #e8e8e8; border: 0px solid #9a9a00; } #deactivateESP:hover,#activateESP:hover,QTableView:hover,QHeaderView::selected:hover{ border: 1px solid #9a9a00; padding: 1px; text-align: center; color:#fff; } /* **************************************** */ /* Context menus, toolbar dropdowns #QMenu */ /* **************************************** */ QMenu{ border-width: 3px; border-style: solid; }QMenu::item{ padding: 6px 20px; }QMenu::item:selected{ color:#fff; background-color: #3F3F46; /* Grey - Blue*/ border-top:1px solid #9A9A00; border-bottom:1px solid #9A9A00; } QMenu::right-arrow{ image: url(./Transparent-Style/arrow-right.png); /* right click main menu top option*/ subcontrol-origin: padding; subcontrol-position: center right; width: 18px; height: 18px; border:0px outset #3F3F46; /* Grey - Blue*/ } /* ********************* */ /* LCD Counter */ /* ********************* */ QLCDNumber{ color: #9A9A00; Background: #000; border-color: #3F3F46; /* Grey - Blue*/ border-style: solid; border-width: 1px; border-radius: 5px; } /* **************************************** */ /* Launch application Drop down Box */ /* **************************************** */ QComboBox{ background-color: #333337; padding: 3px 5px 5px 5px; height: 26px; border-radius: 5px; border-top:1px solid #9A9A00; border-bottom:1px solid #9A9A00; } QComboBox:on{ padding: 3px 5px 5px 5px; color: white; background-color: #3F3F46; /* Grey - Blue*/ } QComboBox:hover{ border-radius: 3px; border-top:3px double #9A9A00; border-bottom:3px double #9A9A00; /* padding: 0px; */ } QComboBox::drop-down{ /* Down arrow in combo box */ outline: none; border: none; border-width: 1px; } QComboBox::menu-indicator{ image: url(./Transparent-Style/arrow-down.png); subcontrol-origin: padding; subcontrol-position: center right; width: 18px; height: 18px; border:1px outset #3F3F46; /* Grey - Blue*/ } /* ************************* */ /* QComboBox::down-arrow:on, */ /* ************************* */ QComboBox::down-arrow:hover,QComboBox::down-arrow:focus { image: url(./Transparent-Style/arrow-down-hover.png); } QComboBox::up-arrow:hover,QComboBox::up-arrow:focus { image: url(./Transparent-Style/arrow-up-hover.png); } QComboBox::down-arrow{ image:url(./Transparent-Style/arrow-down.png); subcontrol-origin: padding; subcontrol-position: center right; width: 18px; height: 18px; } QComboBox::down-arrow:on{ image:url(./Transparent-Style/arrow-up.png); } QComboBox:editable { background: black; /* color: pink; */ } QComboBox::item{ } QComboBox QAbstractItemView{ selection-color:#fff; outline: 1px solid #9a9a00; selection-background-color:#3F3F46; /* Grey - Blue*/ border-top:1px solid #9a9a00; border-bottom:1px solid #9a9a00; padding: 5px; } /* **************************************************************** */ /* Action Buttons */ /* */ /* Open list, Restore Backup, Create Backup, RUN, Shortcut Button */ /* Sort, Load order backup, Load Order Restore */ /* **************************************************************** */ QPushButton{ background-color: #333337; min-height:26px; padding:1px 5%; text-align: center; border-radius: 5px; border-top:1px solid #9A9A00; border-bottom:1px solid #9A9A00; } QPushButton::menu-indicator{ image: url(./Transparent-Style/arrow-down.png); subcontrol-origin: padding; subcontrol-position: center right; width: 18px; height: 18px; border:1px hidden #3F3F46; /* Grey - Blue*/ } QPushButton::menu-indicator:Hover{ image: url(./Transparent-Style/arrow-down-hover.png); } QPushButton:focus{ } QPushButton:on,QPushButton:checked,QPushButton:pressed,QPushButton:checked:hover{ background: #3F3F46; /* Grey - Blue*/ border-radius: 1px; border: 1px solid #9a9a00; } QPushButton:hover{ border-radius: 3px; border-top:3px double #9A9A00; border-bottom:3px double #9A9A00; } QDialog QPushButton,QSlider::handle:horizontal,QSlider::handle:vertical{ color:#fff; border-color:#707070; border-style:solid; border-width:1px; } QPushButton:disabled{ } QPushButton:open{ } QPushButton:!enabled{ } /* **************************************** */ /* Filter Button */ /* **************************************** */ QPushButton#displayCategoriesBtn{ min-width: 20px; background:transparent; color: transparent; border: 1px hidden #9a9a00; } QPushButton#displayCategoriesBtn:checked{ image: url(./Transparent-Style/arrow-left.png); } QPushButton#displayCategoriesBtn:!checked{ image: url(./Transparent-Style/arrow-right.png); } QPushButton#displayCategoriesBtn:checked:hover{ image: url(./Transparent-Style/arrow-left-hover.png); } QPushButton#displayCategoriesBtn:!checked:hover{ image: url(./Transparent-Style/arrow-right-hover.png); } /* **************************************** */ /* Scroll bar */ /* **************************************** */ QScrollBar{ height:20px; width:20px; background-color:transparent; } QScrollBar::handle{ border: 1px solid #aaa; border-radius: 4px; } QScrollBar::handle:vertical{ margin: 1px 4px; min-height:20px; min-width: 10px; background-color:qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, stop:0 #9A9A00, stop:1 #000000); } QScrollBar::handle:vertical:hover{ background-color:qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, stop:0 #000000, stop:1 #9A9A00); } QScrollBar::handle:horizontal{ min-height:10px;min-width:20px;margin:4px 1px; background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop:0 #9A9A00, stop:1 #000000); } QScrollBar::handle:horizontal:hover{ background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop:0 #000000, stop:1 #9A9A00); } QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical,QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal{ background-color: transparent; } QScrollBar::add-line:vertical,QScrollBar::sub-line:vertical,QScrollBar::add-line:horizontal,QScrollBar::sub-line:horizontal{ height:0; width:0; } /* ******************************************************** */ /* Main Tree View Inherited from QAbstractItemView */ /* ******************************************************** */ QTreeView { } QTreeView:item{ padding: 3px; font-size: 16px; height: 18px; /*Bottom text Box*/ } QTreeView:item:selected{ color:#fff; padding: 0px; background-color: #3F3F46; /* Grey - Blue*/ border-top:1px solid #9A9A00; border-bottom:1px solid #9A9A00; } QTreeView:item QLineEdit{ outline: none; border: none; padding: 0px; margin: 0px; } QTreeView::branch:has-siblings:!adjoins-item{ background:url(Transparent-Style/vault-101-item-line-v.png) center center no-repeat; } QTreeView::branch:has-siblings{ background:url(Transparent-Style/vault-101-itemB-line.png) center center no-repeat; } QTreeView::branch:!has-children:!has-siblings:adjoins-item{ background:url(Transparent-Style/vault-101-itemB-end.png) center center no-repeat; } QTreeView::branch:closed:has-children:has-siblings{ background:url(Transparent-Style/vault-101-itemB-close.png) center center no-repeat; } QTreeView::branch:closed:has-children:!has-siblings{ background:url(Transparent-Style/vault-101-itemB-close-last.png) center center no-repeat; } QTreeView::branch:open:has-children:has-siblings{ background:url(Transparent-Style/vault-101-itemB-open.png) center center no-repeat; } QTreeView::branch:open:has-children:!has-siblings{ background:url(Transparent-Style/vault-101-itemB-open-last.png) center center no-repeat; } /* **************************************************************** */ /* Checkboxes and Radio buttons common #QCheckBox, #QRadioButton */ /* common */ /* **************************************************************** */ QTreeView::indicator,QCheckBox::indicator{ outline: none; border: none; padding: 0px; width: 24px; height: 24px; } QGroupBox::indicator:checked,QGroupBox::indicator:indeterminate,QTreeView::indicator:checked,QTreeView::indicator:indeterminate,QCheckBox::indicator:checked,QCheckBox::indicator:indeterminate{ image: url(./Transparent-Style/checkbox-checked.png); } QGroupBox::indicator:checked:hover,QGroupBox::indicator:indeterminate:hover,QTreeView::indicator:checked:hover,QTreeView::indicator:indeterminate:hover,QCheckBox::indicator:checked:hover,QCheckBox::indicator:indeterminate:hover{ image: url(./Transparent-Style/checkbox-hover.png); } QGroupBox::indicator:checked:disabled,QGroupBox::indicator:indeterminate:disabled,QTreeView::indicator:checked:disabled,QTreeView::indicator:indeterminate:disabled,QCheckBox::indicator:checked:disabled,QCheckBox::indicator:indeterminate:disabled{ image: url(./Transparent-Style/checkbox-checked-disabled.png); } QGroupBox::indicator:unchecked,QTreeView::indicator:unchecked,QCheckBox::indicator:unchecked{ image: url(./Transparent-Style/checkbox.png); } QGroupBox::indicator:unchecked:hover,QTreeView::indicator:unchecked:hover,QCheckBox::indicator:unchecked:hover{ image: url(./Transparent-Style/checkbox-checked-hover.png); } QGroupBox::indicator:unchecked:disabled,QTreeView::indicator:unchecked:disabled,QCheckBox::indicator:unchecked:disabled{ image: url(./Transparent-Style/checkbox-checked-disabled.png); } QTreeWidget#categoriesList::item:has-children{ background-image: url(./Transparent-Style/arrow-right-small.png); } QTreeWidget#categoriesList::item:has-children:open{ background-image: url(./Transparent-Style/branch-opened.png); } /* ******************************** */ /* Special styles */ /* increase categories tab width */ /* ******************************** */ QTreeView#modList::item,QTreeWidget#categoriesTree::item,#tabConflicts QTreeWidget::item,QListView::item,QTreeView#espList::item,QTreeView#treeContent::item{ padding: .3em 0em; } QTreeView#modList::item,QTreeWidget#categoriesTree::item,#tabConflicts QTreeWidget::item,QListView::item,QTreeView#espList::item,QTreeView#treeContent::item{ padding: .3em 0em; } QTreeWidget#categoriesGroup,QTreeWidget#categoriesList{ min-width: 200px; } QTreeWidget#categoriesList::item { background-position: center left; background-repeat: no-repeat; padding: 0.35em 4px; } /* ********************* */ /* Display Radio Button */ /* ********************* */ QRadioButton::indicator{ width: 16px; height: 16px; } QRadioButton::indicator::checked{ image: url(./Transparent-Style/radio-BOS-checked.png); } QRadioButton::indicator::unchecked{ image: url(./Transparent-Style/radio-BOS.png); } QRadioButton::indicator::unchecked:hover{ image: url(./Transparent-Style/radio-BOS-hover.png); } /* **************************************** */ /* Spinners #QSpinBox, #QDoubleSpinBox */ /* **************************************** */ QAbstractSpinBox{ padding: 5px; background-color: transparent; color: #eff0f1; border-radius: 2px; min-width: Auto; } QAbstractSpinBox::up-button,QAbstractSpinBox::down-button{ border-style: solid; border-width: 1px; subcontrol-origin: border; } QAbstractSpinBox::up-button:hover,QAbstractSpinBox::down-button:hover{ background-color: transparent; } QAbstractSpinBox::up-button{ background-color: transparent; subcontrol-origin: border; subcontrol-position: center right; padding-right: 5px; /* subcontrol-position: top right; */ } QAbstractSpinBox::down-button{ background-color: transparent; subcontrol-origin: border; subcontrol-position: center left; padding-left: 5px; /* subcontrol-position: bottom right; */ } QAbstractSpinBox::up-arrow{ border-image: url(./Transparent-Style/narrow-arrow-right.png); }QAbstractSpinBox::down-arrow{ border-image: url(./Transparent-Style/narrow-arrow-left.png); }/* QTextEdit,QWebView,QLineEdit,QComboBox{ border-color:#3F3F46; /* Grey - Blue*/ /*}*/ /* **************************************** */ /* Tooltips #QToolTip, #SaveGameInfoWidget */ /* **************************************** */ QToolTip{ background-color:#121212; color:#C0C0C0; padding:0px; border-color:#9A9A00; border-radius: 3px; border-width:1px; border-style:solid; } SaveGameInfoWidget{ font-size: 16px; background-color:#121212; color:#C0C0C0; padding:0px; border-color:#9A9A00; border-radius: 3px; border-width:1px; border-style:solid; } /* **************************** */ /* Handles Web, Nexus info tab */ /* **************************** */ QWebView{ background-color: Black; } QLineEdit{ font-family: Segoe UI; min-height: 20px; font-size: 16px; background-color:#3F3F46; selection-background-color: rgba(154,154,0,0.6);border-color:#9A9A00; border-radius: 3px; border-width:1px; border-style:solid; } QTextEdit{ color: #cccccc; font-family: Segoe UI; font-size: 16px; /* background-color:#000; */ selection-background-color: rgba(154,154,0,0.6); border-color:#9A9A00; border-radius: 3px; border-width:1px; border-style:solid; } /* Font size */ QLabel,QMenu,QPushButton,QAbstractSpinBox,QGroupBox,QCheckBox,QRadioButton{ color: #cccccc; font-family: Segoe UI; font-size: 16px; /* was 14px Profile font size */ } QAbstractItemView{ color: #cccccc; font-family: Segoe UI; /* font-family: Source Sans Pro; */ font-size: 16px; /* Body font size*/ } QRadioButton{ color: #cccccc; font-family: Segoe UI; /* font-family: Source Sans Pro; */ font-size: 16px; } QWebView,QComboBox,QComboBox:editable{ font-family:Segoe UI; font-style: normal; font-weight: normal; font-size: 16px; background-color:#000; /* border-color:#3F3F46; /* Grey - Blue*/ color: #cccccc; font-family: Arial; font-size: 16px; /* Filter Name*/ } QHeaderView::section{ /* font-family: Source Sans Pro; */ font-family: Segoe UI; font-size: 16px; /*Top Bar on menus font*/ } QListView::item{ color:#F1F1F1; /* White */ } QGroupBox { } QGroupBox::title { subcontrol-origin: margin; subcontrol-position: top center; } QGroupBox::indicator { subcontrol-origin: margin; subcontrol-position: top center; } QLabel { color: #cccccc; /* color: #F1F1F1; /* White */ /* border: none;outline: none; border-radius: 5px; border-top:1px solid #9A9A00; border-bottom:1px solid #9A9A00;*/ }
\ No newline at end of file diff --git a/src/stylesheets/Transparent-Style-Skyrim.qss b/src/stylesheets/Transparent-Style-Skyrim.qss new file mode 100644 index 00000000..b5fd7473 --- /dev/null +++ b/src/stylesheets/Transparent-Style-Skyrim.qss @@ -0,0 +1 @@ +#centralWidget { border-image: url(./Transparent-Style/Background-skyrim.png) 0 0 0 0 stretch stretch; } QWidget#TextViewer{ } QWidget{ color: #fff; background-color: rgba(45,45,48,30); alternate-background-color: rgba(38,38,38,30); } QWidget:disabled{ } QAbstractItemView{ color: #dcdcdc; background-color: rgb(45,45,48,30); alternate-background-color: rgb(38,38,38,50); border: 1px solid #3F3F46; /* Grey - Blue*/ border-style:outset; border-radius: 3px; selection-color: #3F3F46; /* Grey - Blue*/ outline: none; padding-left:0; } #problemsWidget,#TransferSavesDialog,#SettingsDialog,#ProblemsDialog,#ModInfoDialog,#TextViewer,#PyCfgDialog,#InstallDialog { border-image:url(./Transparent-Style/Vault-BOS-Main.png) 0 0 0 0 stretch stretch; } #toolBarArea{ border-image: url(./Transparent-Style/vault-BOS-Main.png) 0 0 0 0 stretch stretch; } #EditExecutablesDialog{ border-image: url(./Transparent-Style/vault-BOS-Main.png) 0 0 0 0 stretch stretch; } #SimpleInstallDialog,#LockedDialog,QMenu{ border-image: url(./Transparent-Style/vault-BOS-Main.png) 0 0 0 0 stretch stretch; } #nameLabel{ border-image: url(./Transparent-Style/vault-BOS-Main.png) 0 0 0 0 stretch stretch; border-top:1px solid #b9d7fc; border-bottom:1px solid #b9d7fc; background-color:rgba(154,154,0,0.3); color:#fff; } #ProfilesDialog,#FomodInstallerDialog{ border-image: url(./Transparent-Style/vault-BOS-Main.png) 0 0 0 0 stretch stretch; } #filesView{ border-image: url(./Transparent-Style/vault-BOS-Main.png) 0 0 0 0 stretch stretch; } /* ******************************************** */ /* Main Navigation Button Bar at top of window */ /* ******************************************** */ QToolBar{ /*border: none;*/ } QToolBar::separator{ /*image: url(./Transparent-Style/Vault-101-vault-logo.png);*/ } QToolButton{ border:2px solid None; border-radius: 6px; margin: 3px; padding-left: 8px; padding-right: 8px; padding-top: 0px; padding-bottom: 2px; } QToolButton:hover{ border-radius: 3px; border: 0px; padding: 0px; background: trANSPARENT; border: 0px ridge #9A9A00; background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #9A9A00, stop: 1 #484F53); } QToolButton:pressed{ background: black; } /* **************************************** */ /* Tabs on top of Treeview */ /* **************************************** */ QTabWidget::pane{ border-color:#3F3F46; /* Grey - Blue*/ /* border-top-color:#9A9A00; */ top: 0px; border-style:hidden; border-width:1px; } QTabWidget::tab-bar{ alignment: center; } QTabBar{ color: #cccccc; font-family: Segoe UI; font-size: 16px; text-transform: none; min-height:auto; padding-bottom: 5px; } QTabBar::tab{ border: none; border-bottom-style: none; background-color: rgba(154,154,0,0.3); padding-left: 9px; padding-right: 9px; padding-top: 3px; padding-bottom: 3px; margin-right: 2px; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; } QTabBar::tab:disabled{ color: #404040; background-color: #000; margin-top: 0px; } QTabBar::tab:selected{ color: #dcdcdc; background-color: #9A9A00; /*Yellow opaque*/ } QTabBar::tab:!selected:hover{ border-radius: 3px; border-top:3px double #9A9A00; border-bottom:3px double #9A9A00; padding: 1px; text-align: center; background-color: #9A9A00; color:#fff; Height: 20%; } /* QTabBar::tab:!selected{ color: #808080; background-color: #404040; margin-top: 0px; } */ #deactivateESP,#activateESP{ border:#b30000; background:#333337; } /* **************************************** */ /* <More View> on top of Treeview */ /* **************************************** */ QTabBar QToolButton{ border-radius: 0px; border: 0px; padding: 0px; background: transparent; } QToolButton::menu-indicator:pressed,QToolButton::menu-indicator:open{ image: url(./Transparent-Style/arrow-up.png); } QToolButton::menu-indicator:!pressed,QToolButton::menu-indicator:!open{ image: url(./Transparent-Style/arrow-down.png); } QTabBar QToolButton::right-arrow{ image: url(./Transparent-Style/narrow-arrow-right.png); } QTabBar QToolButton::left-arrow{ image: url(./Transparent-Style/narrow-arrow-left.png); } /* **************************************** */ /* Column names of TreeView */ /* **************************************** */ QTableView{ gridline-color:#3F3F46; selection-background-color:#9A9A00; selection-color:#F1F1F1; /* White */ text-align: center; min-height:24px; } QHeaderView{ min-height:24px; /*Top Bar on menus*/ padding: 3px; } QHeaderView::section{ /* color: #cc3333; */ background-color: #252526; border-radius: 0px; padding: 0px; padding-left: 5px; } QHeaderView::section:hover{ background: rgba(154,154,0,0.3); border: 1px solid #9a9a00; padding: 0px; padding-left: 5px; } QHeaderView::up-arrow,QHeaderView::down-arrow{ min-height:Auto; min-width:Auto; } QHeaderView::up-arrow{ image: url(./Transparent-Style/arrow-up.png); min-height:25px; min-width:15px; padding-right: 0px; }QHeaderView::down-arrow{ image: url(./Transparent-Style/arrow-down.png); } /* **************************************** */ /* Hover */ /* **************************************** */ QMenu:item:hover,QTreeView#espList::item:hover,QTreeWidget#categoriesList::item:hover,QListView::item:hover,QTreeWidget::item:hover{ color:#fff; border-top:1px solid #b9d7fc; border-bottom:1px solid #b9d7fc; background-color:rgba(154,154,0,0.3); } QAbstractItemView::item:hover{ border-top:1px solid #b9d7fc; border-bottom:1px solid #b9d7fc; background-color:rgba(154,154,0,0.3); padding: 3px; } /*#DownloadListWidget{ }*/ #DownloadListWidget{ outline: 1px solid #e8e8e8; border: 0px solid #9a9a00; } #deactivateESP:hover,#activateESP:hover,QTableView:hover,QHeaderView::selected:hover{ border: 1px solid #9a9a00; padding: 1px; text-align: center; color:#fff; } /* **************************************** */ /* Context menus, toolbar dropdowns #QMenu */ /* **************************************** */ QMenu{ border-width: 3px; border-style: solid; }QMenu::item{ padding: 6px 20px; }QMenu::item:selected{ color:#fff; background-color: #3F3F46; /* Grey - Blue*/ border-top:1px solid #9A9A00; border-bottom:1px solid #9A9A00; } QMenu::right-arrow{ image: url(./Transparent-Style/arrow-right.png); /* right click main menu top option*/ subcontrol-origin: padding; subcontrol-position: center right; width: 18px; height: 18px; border:0px outset #3F3F46; /* Grey - Blue*/ } /* ********************* */ /* LCD Counter */ /* ********************* */ QLCDNumber{ color: #9A9A00; Background: #000; border-color: #3F3F46; /* Grey - Blue*/ border-style: solid; border-width: 1px; border-radius: 5px; } /* **************************************** */ /* Launch application Drop down Box */ /* **************************************** */ QComboBox{ background-color: #333337; padding: 3px 5px 5px 5px; height: 26px; border-radius: 5px; border-top:1px solid #9A9A00; border-bottom:1px solid #9A9A00; } QComboBox:on{ padding: 3px 5px 5px 5px; color: white; background-color: #3F3F46; /* Grey - Blue*/ } QComboBox:hover{ border-radius: 3px; border-top:3px double #9A9A00; border-bottom:3px double #9A9A00; /* padding: 0px; */ } QComboBox::drop-down{ /* Down arrow in combo box */ outline: none; border: none; border-width: 1px; } QComboBox::menu-indicator{ image: url(./Transparent-Style/arrow-down.png); subcontrol-origin: padding; subcontrol-position: center right; width: 18px; height: 18px; border:1px outset #3F3F46; /* Grey - Blue*/ } /* ************************* */ /* QComboBox::down-arrow:on, */ /* ************************* */ QComboBox::down-arrow:hover,QComboBox::down-arrow:focus { image: url(./Transparent-Style/arrow-down-hover.png); } QComboBox::up-arrow:hover,QComboBox::up-arrow:focus { image: url(./Transparent-Style/arrow-up-hover.png); } QComboBox::down-arrow{ image:url(./Transparent-Style/arrow-down.png); subcontrol-origin: padding; subcontrol-position: center right; width: 18px; height: 18px; } QComboBox::down-arrow:on{ image:url(./Transparent-Style/arrow-up.png); } QComboBox:editable { background: black; /* color: pink; */ } QComboBox::item{ } QComboBox QAbstractItemView{ selection-color:#fff; outline: 1px solid #9a9a00; selection-background-color:#3F3F46; /* Grey - Blue*/ border-top:1px solid #9a9a00; border-bottom:1px solid #9a9a00; padding: 5px; } /* **************************************************************** */ /* Action Buttons */ /* */ /* Open list, Restore Backup, Create Backup, RUN, Shortcut Button */ /* Sort, Load order backup, Load Order Restore */ /* **************************************************************** */ QPushButton{ background-color: #333337; min-height:26px; padding:1px 5%; text-align: center; border-radius: 5px; border-top:1px solid #9A9A00; border-bottom:1px solid #9A9A00; } QPushButton::menu-indicator{ image: url(./Transparent-Style/arrow-down.png); subcontrol-origin: padding; subcontrol-position: center right; width: 18px; height: 18px; border:1px hidden #3F3F46; /* Grey - Blue*/ } QPushButton::menu-indicator:Hover{ image: url(./Transparent-Style/arrow-down-hover.png); } QPushButton:focus{ } QPushButton:on,QPushButton:checked,QPushButton:pressed,QPushButton:checked:hover{ background: #3F3F46; /* Grey - Blue*/ border-radius: 1px; border: 1px solid #9a9a00; } QPushButton:hover{ border-radius: 3px; border-top:3px double #9A9A00; border-bottom:3px double #9A9A00; } QDialog QPushButton,QSlider::handle:horizontal,QSlider::handle:vertical{ color:#fff; border-color:#707070; border-style:solid; border-width:1px; } QPushButton:disabled{ } QPushButton:open{ } QPushButton:!enabled{ } /* **************************************** */ /* Filter Button */ /* **************************************** */ QPushButton#displayCategoriesBtn{ min-width: 20px; background:transparent; color: transparent; border: 1px hidden #9a9a00; } QPushButton#displayCategoriesBtn:checked{ image: url(./Transparent-Style/arrow-left.png); } QPushButton#displayCategoriesBtn:!checked{ image: url(./Transparent-Style/arrow-right.png); } QPushButton#displayCategoriesBtn:checked:hover{ image: url(./Transparent-Style/arrow-left-hover.png); } QPushButton#displayCategoriesBtn:!checked:hover{ image: url(./Transparent-Style/arrow-right-hover.png); } /* **************************************** */ /* Scroll bar */ /* **************************************** */ QScrollBar{ height:20px; width:20px; background-color:transparent; } QScrollBar::handle{ border: 1px solid #aaa; border-radius: 4px; } QScrollBar::handle:vertical{ margin: 1px 4px; min-height:20px; min-width: 10px; background-color:qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, stop:0 #9A9A00, stop:1 #000000); } QScrollBar::handle:vertical:hover{ background-color:qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, stop:0 #000000, stop:1 #9A9A00); } QScrollBar::handle:horizontal{ min-height:10px;min-width:20px;margin:4px 1px; background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop:0 #9A9A00, stop:1 #000000); } QScrollBar::handle:horizontal:hover{ background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop:0 #000000, stop:1 #9A9A00); } QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical,QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal{ background-color: transparent; } QScrollBar::add-line:vertical,QScrollBar::sub-line:vertical,QScrollBar::add-line:horizontal,QScrollBar::sub-line:horizontal{ height:0; width:0; } /* ******************************************************** */ /* Main Tree View Inherited from QAbstractItemView */ /* ******************************************************** */ QTreeView { } QTreeView:item{ padding: 3px; font-size: 16px; height: 18px; /*Bottom text Box*/ } QTreeView:item:selected{ color:#fff; padding: 0px; background-color: #3F3F46; /* Grey - Blue*/ border-top:1px solid #9A9A00; border-bottom:1px solid #9A9A00; } QTreeView:item QLineEdit{ outline: none; border: none; padding: 0px; margin: 0px; } QTreeView::branch:has-siblings:!adjoins-item{ background:url(Transparent-Style/vault-101-item-line-v.png) center center no-repeat; } QTreeView::branch:has-siblings{ background:url(Transparent-Style/vault-101-itemB-line.png) center center no-repeat; } QTreeView::branch:!has-children:!has-siblings:adjoins-item{ background:url(Transparent-Style/vault-101-itemB-end.png) center center no-repeat; } QTreeView::branch:closed:has-children:has-siblings{ background:url(Transparent-Style/vault-101-itemB-close.png) center center no-repeat; } QTreeView::branch:closed:has-children:!has-siblings{ background:url(Transparent-Style/vault-101-itemB-close-last.png) center center no-repeat; } QTreeView::branch:open:has-children:has-siblings{ background:url(Transparent-Style/vault-101-itemB-open.png) center center no-repeat; } QTreeView::branch:open:has-children:!has-siblings{ background:url(Transparent-Style/vault-101-itemB-open-last.png) center center no-repeat; } /* **************************************************************** */ /* Checkboxes and Radio buttons common #QCheckBox, #QRadioButton */ /* common */ /* **************************************************************** */ QTreeView::indicator,QCheckBox::indicator{ outline: none; border: none; padding: 0px; width: 24px; height: 24px; } QGroupBox::indicator:checked,QGroupBox::indicator:indeterminate,QTreeView::indicator:checked,QTreeView::indicator:indeterminate,QCheckBox::indicator:checked,QCheckBox::indicator:indeterminate{ image: url(./Transparent-Style/checkbox-checked.png); } QGroupBox::indicator:checked:hover,QGroupBox::indicator:indeterminate:hover,QTreeView::indicator:checked:hover,QTreeView::indicator:indeterminate:hover,QCheckBox::indicator:checked:hover,QCheckBox::indicator:indeterminate:hover{ image: url(./Transparent-Style/checkbox-hover.png); } QGroupBox::indicator:checked:disabled,QGroupBox::indicator:indeterminate:disabled,QTreeView::indicator:checked:disabled,QTreeView::indicator:indeterminate:disabled,QCheckBox::indicator:checked:disabled,QCheckBox::indicator:indeterminate:disabled{ image: url(./Transparent-Style/checkbox-checked-disabled.png); } QGroupBox::indicator:unchecked,QTreeView::indicator:unchecked,QCheckBox::indicator:unchecked{ image: url(./Transparent-Style/checkbox.png); } QGroupBox::indicator:unchecked:hover,QTreeView::indicator:unchecked:hover,QCheckBox::indicator:unchecked:hover{ image: url(./Transparent-Style/checkbox-checked-hover.png); } QGroupBox::indicator:unchecked:disabled,QTreeView::indicator:unchecked:disabled,QCheckBox::indicator:unchecked:disabled{ image: url(./Transparent-Style/checkbox-checked-disabled.png); } QTreeWidget#categoriesList::item:has-children{ background-image: url(./Transparent-Style/arrow-right-small.png); } QTreeWidget#categoriesList::item:has-children:open{ background-image: url(./Transparent-Style/branch-opened.png); } /* ******************************** */ /* Special styles */ /* increase categories tab width */ /* ******************************** */ QTreeView#modList::item,QTreeWidget#categoriesTree::item,#tabConflicts QTreeWidget::item,QListView::item,QTreeView#espList::item,QTreeView#treeContent::item{ padding: .3em 0em; } QTreeView#modList::item,QTreeWidget#categoriesTree::item,#tabConflicts QTreeWidget::item,QListView::item,QTreeView#espList::item,QTreeView#treeContent::item{ padding: .3em 0em; } QTreeWidget#categoriesGroup,QTreeWidget#categoriesList{ min-width: 200px; } QTreeWidget#categoriesList::item { background-position: center left; background-repeat: no-repeat; padding: 0.35em 4px; } /* ********************* */ /* Display Radio Button */ /* ********************* */ QRadioButton::indicator{ width: 16px; height: 16px; } QRadioButton::indicator::checked{ image: url(./Transparent-Style/radio-BOS-checked.png); } QRadioButton::indicator::unchecked{ image: url(./Transparent-Style/radio-BOS.png); } QRadioButton::indicator::unchecked:hover{ image: url(./Transparent-Style/radio-BOS-hover.png); } /* **************************************** */ /* Spinners #QSpinBox, #QDoubleSpinBox */ /* **************************************** */ QAbstractSpinBox{ padding: 5px; background-color: transparent; color: #eff0f1; border-radius: 2px; min-width: Auto; } QAbstractSpinBox::up-button,QAbstractSpinBox::down-button{ border-style: solid; border-width: 1px; subcontrol-origin: border; } QAbstractSpinBox::up-button:hover,QAbstractSpinBox::down-button:hover{ background-color: transparent; } QAbstractSpinBox::up-button{ background-color: transparent; subcontrol-origin: border; subcontrol-position: center right; padding-right: 5px; /* subcontrol-position: top right; */ } QAbstractSpinBox::down-button{ background-color: transparent; subcontrol-origin: border; subcontrol-position: center left; padding-left: 5px; /* subcontrol-position: bottom right; */ } QAbstractSpinBox::up-arrow{ border-image: url(./Transparent-Style/narrow-arrow-right.png); }QAbstractSpinBox::down-arrow{ border-image: url(./Transparent-Style/narrow-arrow-left.png); }/* QTextEdit,QWebView,QLineEdit,QComboBox{ border-color:#3F3F46; /* Grey - Blue*/ /*}*/ /* **************************************** */ /* Tooltips #QToolTip, #SaveGameInfoWidget */ /* **************************************** */ QToolTip{ background-color:#121212; color:#C0C0C0; padding:0px; border-color:#9A9A00; border-radius: 3px; border-width:1px; border-style:solid; } SaveGameInfoWidget{ font-size: 16px; background-color:#121212; color:#C0C0C0; padding:0px; border-color:#9A9A00; border-radius: 3px; border-width:1px; border-style:solid; } /* **************************** */ /* Handles Web, Nexus info tab */ /* **************************** */ QWebView{ background-color: Black; } QLineEdit{ font-family: Segoe UI; min-height: 20px; font-size: 16px; background-color:#3F3F46; selection-background-color: rgba(154,154,0,0.6);border-color:#9A9A00; border-radius: 3px; border-width:1px; border-style:solid; } QTextEdit{ color: #cccccc; font-family: Segoe UI; font-size: 16px; /* background-color:#000; */ selection-background-color: rgba(154,154,0,0.6); border-color:#9A9A00; border-radius: 3px; border-width:1px; border-style:solid; } /* Font size */ QLabel,QMenu,QPushButton,QAbstractSpinBox,QGroupBox,QCheckBox,QRadioButton{ color: #cccccc; font-family: Segoe UI; font-size: 16px; /* was 14px Profile font size */ } QAbstractItemView{ color: #cccccc; font-family: Segoe UI; /* font-family: Source Sans Pro; */ font-size: 16px; /* Body font size*/ } QRadioButton{ color: #cccccc; font-family: Segoe UI; /* font-family: Source Sans Pro; */ font-size: 16px; } QWebView,QComboBox,QComboBox:editable{ font-family:Segoe UI; font-style: normal; font-weight: normal; font-size: 16px; background-color:#000; /* border-color:#3F3F46; /* Grey - Blue*/ color: #cccccc; font-family: Arial; font-size: 16px; /* Filter Name*/ } QHeaderView::section{ /* font-family: Source Sans Pro; */ font-family: Segoe UI; font-size: 16px; /*Top Bar on menus font*/ } QListView::item{ color:#F1F1F1; /* White */ } QGroupBox { } QGroupBox::title { subcontrol-origin: margin; subcontrol-position: top center; } QGroupBox::indicator { subcontrol-origin: margin; subcontrol-position: top center; } QLabel { color: #cccccc; /* color: #F1F1F1; /* White */ /* border: none;outline: none; border-radius: 5px; border-top:1px solid #9A9A00; border-bottom:1px solid #9A9A00;*/ }
\ No newline at end of file diff --git a/src/stylesheets/Transparent-Style/Background-skyrim.png b/src/stylesheets/Transparent-Style/Background-skyrim.png Binary files differnew file mode 100644 index 00000000..78a82f08 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Background-skyrim.png diff --git a/src/stylesheets/Transparent-Style/Fallout-BOS.png b/src/stylesheets/Transparent-Style/Fallout-BOS.png Binary files differnew file mode 100644 index 00000000..c8585355 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Fallout-BOS.png diff --git a/src/stylesheets/Transparent-Style/Green/Vault-101-item-end.png b/src/stylesheets/Transparent-Style/Green/Vault-101-item-end.png Binary files differnew file mode 100644 index 00000000..5b86f728 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/Vault-101-item-end.png diff --git a/src/stylesheets/Transparent-Style/Green/Vault-101-item-line-v.png b/src/stylesheets/Transparent-Style/Green/Vault-101-item-line-v.png Binary files differnew file mode 100644 index 00000000..17c37a0b --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/Vault-101-item-line-v.png diff --git a/src/stylesheets/Transparent-Style/Green/Vault-101-itemB-close-last.png b/src/stylesheets/Transparent-Style/Green/Vault-101-itemB-close-last.png Binary files differnew file mode 100644 index 00000000..5582f311 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/Vault-101-itemB-close-last.png diff --git a/src/stylesheets/Transparent-Style/Green/Vault-101-itemB-end.png b/src/stylesheets/Transparent-Style/Green/Vault-101-itemB-end.png Binary files differnew file mode 100644 index 00000000..d2044a86 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/Vault-101-itemB-end.png diff --git a/src/stylesheets/Transparent-Style/Green/Vault-101-itemB-line.png b/src/stylesheets/Transparent-Style/Green/Vault-101-itemB-line.png Binary files differnew file mode 100644 index 00000000..f2b49eba --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/Vault-101-itemB-line.png diff --git a/src/stylesheets/Transparent-Style/Green/Vault-101-itemB-open-last.png b/src/stylesheets/Transparent-Style/Green/Vault-101-itemB-open-last.png Binary files differnew file mode 100644 index 00000000..01b37ebc --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/Vault-101-itemB-open-last.png diff --git a/src/stylesheets/Transparent-Style/Green/Vault-101-itemb-close.png b/src/stylesheets/Transparent-Style/Green/Vault-101-itemb-close.png Binary files differnew file mode 100644 index 00000000..f7011114 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/Vault-101-itemb-close.png diff --git a/src/stylesheets/Transparent-Style/Green/Vault-101-itemb-open.png b/src/stylesheets/Transparent-Style/Green/Vault-101-itemb-open.png Binary files differnew file mode 100644 index 00000000..c8b6c4d4 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/Vault-101-itemb-open.png diff --git a/src/stylesheets/Transparent-Style/Green/Vault-101-vault-boy.png b/src/stylesheets/Transparent-Style/Green/Vault-101-vault-boy.png Binary files differnew file mode 100644 index 00000000..dda4af38 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/Vault-101-vault-boy.png diff --git a/src/stylesheets/Transparent-Style/Green/arrow-down.png b/src/stylesheets/Transparent-Style/Green/arrow-down.png Binary files differnew file mode 100644 index 00000000..48be99c2 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/arrow-down.png diff --git a/src/stylesheets/Transparent-Style/Green/arrow-left.png b/src/stylesheets/Transparent-Style/Green/arrow-left.png Binary files differnew file mode 100644 index 00000000..74a96795 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/arrow-left.png diff --git a/src/stylesheets/Transparent-Style/Green/arrow-right.png b/src/stylesheets/Transparent-Style/Green/arrow-right.png Binary files differnew file mode 100644 index 00000000..144605c4 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/arrow-right.png diff --git a/src/stylesheets/Transparent-Style/Green/arrow-up.png b/src/stylesheets/Transparent-Style/Green/arrow-up.png Binary files differnew file mode 100644 index 00000000..191c83ce --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/arrow-up.png diff --git a/src/stylesheets/Transparent-Style/Green/border-image.png b/src/stylesheets/Transparent-Style/Green/border-image.png Binary files differnew file mode 100644 index 00000000..a1f98702 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/border-image.png diff --git a/src/stylesheets/Transparent-Style/Green/checkbox-checked-disabled.png b/src/stylesheets/Transparent-Style/Green/checkbox-checked-disabled.png Binary files differnew file mode 100644 index 00000000..098158d0 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/checkbox-checked-disabled.png diff --git a/src/stylesheets/Transparent-Style/Green/checkbox-checked-hover.png b/src/stylesheets/Transparent-Style/Green/checkbox-checked-hover.png Binary files differnew file mode 100644 index 00000000..0e1f8be1 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/checkbox-checked-hover.png diff --git a/src/stylesheets/Transparent-Style/Green/checkbox-checked-hover1.png b/src/stylesheets/Transparent-Style/Green/checkbox-checked-hover1.png Binary files differnew file mode 100644 index 00000000..413cb2af --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/checkbox-checked-hover1.png diff --git a/src/stylesheets/Transparent-Style/Green/checkbox-checked-hover2.png b/src/stylesheets/Transparent-Style/Green/checkbox-checked-hover2.png Binary files differnew file mode 100644 index 00000000..bea563f0 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/checkbox-checked-hover2.png diff --git a/src/stylesheets/Transparent-Style/Green/checkbox-checked.png b/src/stylesheets/Transparent-Style/Green/checkbox-checked.png Binary files differnew file mode 100644 index 00000000..7d0e94c9 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/checkbox-checked.png diff --git a/src/stylesheets/Transparent-Style/Green/checkbox-hover.png b/src/stylesheets/Transparent-Style/Green/checkbox-hover.png Binary files differnew file mode 100644 index 00000000..7e226e41 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/checkbox-hover.png diff --git a/src/stylesheets/Transparent-Style/Green/checkbox.png b/src/stylesheets/Transparent-Style/Green/checkbox.png Binary files differnew file mode 100644 index 00000000..74b446c1 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/checkbox.png diff --git a/src/stylesheets/Transparent-Style/Green/context-menu-separator.png b/src/stylesheets/Transparent-Style/Green/context-menu-separator.png Binary files differnew file mode 100644 index 00000000..60248313 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/context-menu-separator.png diff --git a/src/stylesheets/Transparent-Style/Green/radio-checked.png b/src/stylesheets/Transparent-Style/Green/radio-checked.png Binary files differnew file mode 100644 index 00000000..5fd9f6f7 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/radio-checked.png diff --git a/src/stylesheets/Transparent-Style/Green/radio-hover.png b/src/stylesheets/Transparent-Style/Green/radio-hover.png Binary files differnew file mode 100644 index 00000000..42b31aee --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/radio-hover.png diff --git a/src/stylesheets/Transparent-Style/Green/radio.png b/src/stylesheets/Transparent-Style/Green/radio.png Binary files differnew file mode 100644 index 00000000..55d09b4d --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/radio.png diff --git a/src/stylesheets/Transparent-Style/Green/vault-101.png b/src/stylesheets/Transparent-Style/Green/vault-101.png Binary files differnew file mode 100644 index 00000000..8c311042 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/vault-101.png diff --git a/src/stylesheets/Transparent-Style/Green/vault-tec-executables.png b/src/stylesheets/Transparent-Style/Green/vault-tec-executables.png Binary files differnew file mode 100644 index 00000000..30f6eba0 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/vault-tec-executables.png diff --git a/src/stylesheets/Transparent-Style/Green/vault-tec-full.png b/src/stylesheets/Transparent-Style/Green/vault-tec-full.png Binary files differnew file mode 100644 index 00000000..f79213c9 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/vault-tec-full.png diff --git a/src/stylesheets/Transparent-Style/Green/vault-tec-overwrite.png b/src/stylesheets/Transparent-Style/Green/vault-tec-overwrite.png Binary files differnew file mode 100644 index 00000000..a61482ff --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/vault-tec-overwrite.png diff --git a/src/stylesheets/Transparent-Style/Green/vault-tec-profiles.png b/src/stylesheets/Transparent-Style/Green/vault-tec-profiles.png Binary files differnew file mode 100644 index 00000000..5a121b06 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/vault-tec-profiles.png diff --git a/src/stylesheets/Transparent-Style/Green/vault-tec-settings.png b/src/stylesheets/Transparent-Style/Green/vault-tec-settings.png Binary files differnew file mode 100644 index 00000000..d6a43c85 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/vault-tec-settings.png diff --git a/src/stylesheets/Transparent-Style/Green/vault-tec-small.png b/src/stylesheets/Transparent-Style/Green/vault-tec-small.png Binary files differnew file mode 100644 index 00000000..999de531 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/vault-tec-small.png diff --git a/src/stylesheets/Transparent-Style/Green/vault-tec.png b/src/stylesheets/Transparent-Style/Green/vault-tec.png Binary files differnew file mode 100644 index 00000000..809486e6 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Green/vault-tec.png diff --git a/src/stylesheets/Transparent-Style/Vault-101-item-end.png b/src/stylesheets/Transparent-Style/Vault-101-item-end.png Binary files differnew file mode 100644 index 00000000..744e88d9 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Vault-101-item-end.png diff --git a/src/stylesheets/Transparent-Style/Vault-101-item-line-v.png b/src/stylesheets/Transparent-Style/Vault-101-item-line-v.png Binary files differnew file mode 100644 index 00000000..48453ee6 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Vault-101-item-line-v.png diff --git a/src/stylesheets/Transparent-Style/Vault-101-itemB-close-last.png b/src/stylesheets/Transparent-Style/Vault-101-itemB-close-last.png Binary files differnew file mode 100644 index 00000000..930a3a04 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Vault-101-itemB-close-last.png diff --git a/src/stylesheets/Transparent-Style/Vault-101-itemB-end.png b/src/stylesheets/Transparent-Style/Vault-101-itemB-end.png Binary files differnew file mode 100644 index 00000000..6eb0db48 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Vault-101-itemB-end.png diff --git a/src/stylesheets/Transparent-Style/Vault-101-itemB-line.png b/src/stylesheets/Transparent-Style/Vault-101-itemB-line.png Binary files differnew file mode 100644 index 00000000..86c503b3 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Vault-101-itemB-line.png diff --git a/src/stylesheets/Transparent-Style/Vault-101-itemB-open-last.png b/src/stylesheets/Transparent-Style/Vault-101-itemB-open-last.png Binary files differnew file mode 100644 index 00000000..3037addd --- /dev/null +++ b/src/stylesheets/Transparent-Style/Vault-101-itemB-open-last.png diff --git a/src/stylesheets/Transparent-Style/Vault-101-itemb-close - Copy (2).png b/src/stylesheets/Transparent-Style/Vault-101-itemb-close - Copy (2).png Binary files differnew file mode 100644 index 00000000..fcc44dd0 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Vault-101-itemb-close - Copy (2).png diff --git a/src/stylesheets/Transparent-Style/Vault-101-itemb-close - Copy (3).png b/src/stylesheets/Transparent-Style/Vault-101-itemb-close - Copy (3).png Binary files differnew file mode 100644 index 00000000..f9960221 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Vault-101-itemb-close - Copy (3).png diff --git a/src/stylesheets/Transparent-Style/Vault-101-itemb-close.png b/src/stylesheets/Transparent-Style/Vault-101-itemb-close.png Binary files differnew file mode 100644 index 00000000..29a68878 --- /dev/null +++ b/src/stylesheets/Transparent-Style/Vault-101-itemb-close.png diff --git a/src/stylesheets/Transparent-Style/Vault-101-itemb-open.png b/src/stylesheets/Transparent-Style/Vault-101-itemb-open.png Binary files differnew file mode 100644 index 00000000..3359205e --- /dev/null +++ b/src/stylesheets/Transparent-Style/Vault-101-itemb-open.png diff --git a/src/stylesheets/Transparent-Style/Vault-BOS-Main.png b/src/stylesheets/Transparent-Style/Vault-BOS-Main.png Binary files differnew file mode 100644 index 00000000..e30609df --- /dev/null +++ b/src/stylesheets/Transparent-Style/Vault-BOS-Main.png diff --git a/src/stylesheets/Transparent-Style/arrow-down-hover.png b/src/stylesheets/Transparent-Style/arrow-down-hover.png Binary files differnew file mode 100644 index 00000000..3d53c1a0 --- /dev/null +++ b/src/stylesheets/Transparent-Style/arrow-down-hover.png diff --git a/src/stylesheets/Transparent-Style/arrow-down-small.png b/src/stylesheets/Transparent-Style/arrow-down-small.png Binary files differnew file mode 100644 index 00000000..a61d70e5 --- /dev/null +++ b/src/stylesheets/Transparent-Style/arrow-down-small.png diff --git a/src/stylesheets/Transparent-Style/arrow-down.png b/src/stylesheets/Transparent-Style/arrow-down.png Binary files differnew file mode 100644 index 00000000..41232bb4 --- /dev/null +++ b/src/stylesheets/Transparent-Style/arrow-down.png diff --git a/src/stylesheets/Transparent-Style/arrow-left-hover.png b/src/stylesheets/Transparent-Style/arrow-left-hover.png Binary files differnew file mode 100644 index 00000000..9bd9aa1e --- /dev/null +++ b/src/stylesheets/Transparent-Style/arrow-left-hover.png diff --git a/src/stylesheets/Transparent-Style/arrow-left.png b/src/stylesheets/Transparent-Style/arrow-left.png Binary files differnew file mode 100644 index 00000000..ec965b2b --- /dev/null +++ b/src/stylesheets/Transparent-Style/arrow-left.png diff --git a/src/stylesheets/Transparent-Style/arrow-right-hover.png b/src/stylesheets/Transparent-Style/arrow-right-hover.png Binary files differnew file mode 100644 index 00000000..3df981c2 --- /dev/null +++ b/src/stylesheets/Transparent-Style/arrow-right-hover.png diff --git a/src/stylesheets/Transparent-Style/arrow-right-small.png b/src/stylesheets/Transparent-Style/arrow-right-small.png Binary files differnew file mode 100644 index 00000000..1c4cb237 --- /dev/null +++ b/src/stylesheets/Transparent-Style/arrow-right-small.png diff --git a/src/stylesheets/Transparent-Style/arrow-right.png b/src/stylesheets/Transparent-Style/arrow-right.png Binary files differnew file mode 100644 index 00000000..935f1b7a --- /dev/null +++ b/src/stylesheets/Transparent-Style/arrow-right.png diff --git a/src/stylesheets/Transparent-Style/arrow-up-hover.png b/src/stylesheets/Transparent-Style/arrow-up-hover.png Binary files differnew file mode 100644 index 00000000..9fc94dc4 --- /dev/null +++ b/src/stylesheets/Transparent-Style/arrow-up-hover.png diff --git a/src/stylesheets/Transparent-Style/arrow-up.png b/src/stylesheets/Transparent-Style/arrow-up.png Binary files differnew file mode 100644 index 00000000..797fb740 --- /dev/null +++ b/src/stylesheets/Transparent-Style/arrow-up.png diff --git a/src/stylesheets/Transparent-Style/carbonfiber.png b/src/stylesheets/Transparent-Style/carbonfiber.png Binary files differnew file mode 100644 index 00000000..8f92238e --- /dev/null +++ b/src/stylesheets/Transparent-Style/carbonfiber.png diff --git a/src/stylesheets/Transparent-Style/checkbox-checked-disabled.png b/src/stylesheets/Transparent-Style/checkbox-checked-disabled.png Binary files differnew file mode 100644 index 00000000..c781b2a3 --- /dev/null +++ b/src/stylesheets/Transparent-Style/checkbox-checked-disabled.png diff --git a/src/stylesheets/Transparent-Style/checkbox-checked-hover.png b/src/stylesheets/Transparent-Style/checkbox-checked-hover.png Binary files differnew file mode 100644 index 00000000..6f275c3e --- /dev/null +++ b/src/stylesheets/Transparent-Style/checkbox-checked-hover.png diff --git a/src/stylesheets/Transparent-Style/checkbox-checked.png b/src/stylesheets/Transparent-Style/checkbox-checked.png Binary files differnew file mode 100644 index 00000000..4c2d1d77 --- /dev/null +++ b/src/stylesheets/Transparent-Style/checkbox-checked.png diff --git a/src/stylesheets/Transparent-Style/checkbox-hover.png b/src/stylesheets/Transparent-Style/checkbox-hover.png Binary files differnew file mode 100644 index 00000000..7fce9dd8 --- /dev/null +++ b/src/stylesheets/Transparent-Style/checkbox-hover.png diff --git a/src/stylesheets/Transparent-Style/checkbox.png b/src/stylesheets/Transparent-Style/checkbox.png Binary files differnew file mode 100644 index 00000000..32d6d5b0 --- /dev/null +++ b/src/stylesheets/Transparent-Style/checkbox.png diff --git a/src/stylesheets/Transparent-Style/narrow-arrow-down.png b/src/stylesheets/Transparent-Style/narrow-arrow-down.png Binary files differnew file mode 100644 index 00000000..b1bbdf57 --- /dev/null +++ b/src/stylesheets/Transparent-Style/narrow-arrow-down.png diff --git a/src/stylesheets/Transparent-Style/narrow-arrow-left.png b/src/stylesheets/Transparent-Style/narrow-arrow-left.png Binary files differnew file mode 100644 index 00000000..5fad0dc4 --- /dev/null +++ b/src/stylesheets/Transparent-Style/narrow-arrow-left.png diff --git a/src/stylesheets/Transparent-Style/narrow-arrow-right.png b/src/stylesheets/Transparent-Style/narrow-arrow-right.png Binary files differnew file mode 100644 index 00000000..982a100f --- /dev/null +++ b/src/stylesheets/Transparent-Style/narrow-arrow-right.png diff --git a/src/stylesheets/Transparent-Style/narrow-arrow-up.png b/src/stylesheets/Transparent-Style/narrow-arrow-up.png Binary files differnew file mode 100644 index 00000000..62006d20 --- /dev/null +++ b/src/stylesheets/Transparent-Style/narrow-arrow-up.png diff --git a/src/stylesheets/Transparent-Style/radio-BOS-checked.png b/src/stylesheets/Transparent-Style/radio-BOS-checked.png Binary files differnew file mode 100644 index 00000000..4c2d1d77 --- /dev/null +++ b/src/stylesheets/Transparent-Style/radio-BOS-checked.png diff --git a/src/stylesheets/Transparent-Style/radio-BOS-hover.png b/src/stylesheets/Transparent-Style/radio-BOS-hover.png Binary files differnew file mode 100644 index 00000000..7d7ae49c --- /dev/null +++ b/src/stylesheets/Transparent-Style/radio-BOS-hover.png diff --git a/src/stylesheets/Transparent-Style/radio-BOS.png b/src/stylesheets/Transparent-Style/radio-BOS.png Binary files differnew file mode 100644 index 00000000..6f275c3e --- /dev/null +++ b/src/stylesheets/Transparent-Style/radio-BOS.png diff --git a/src/stylesheets/skyrim.qss b/src/stylesheets/skyrim.qss new file mode 100644 index 00000000..e4d87499 --- /dev/null +++ b/src/stylesheets/skyrim.qss @@ -0,0 +1,640 @@ +/*!************************************* + Skyrim +**************************************** + Author: chintsu_kun + Version: 2.1.0 + Licence: GNU General Public License v3.0 (https://www.gnu.org/licenses/gpl-3.0.en.html) + Url: https://github.com/nikolay-borzov/modorganizer-themes +**************************************** +*/ +/* For some reason applying background-color or border fixes paddings properties */ +QListWidget::item { + border-width: 0; } + +/* Don't override install label on download widget. + MO2 assigns color depending on download state */ +#installLabel { + color: none; } + +/* Make `background-color` work for :hover, :focus and :pressed states */ +QToolButton { + border: none; } + +QWidget { + background-color: #000; + color: #F1F1F1; } + +* { + /* Remove outline */ + outline: 0; + /* Text highlight */ + selection-background-color: #000; + selection-color: white; } + +/* Disabled text */ +*:disabled, +QListView::item:disabled, +*::item:selected:disabled { + color: #656565; } + +/* Line heights */ +QListView::item, +QTreeWidget::item, +QTreeView::item { + padding: 0.3em 0; } + +/* Increase row height to fit inputs */ +#modList::item, +#settingsTree::item, +#pluginSettingsList::item, +#espList::item { + min-height: 34px; + padding: 0; } + #modList::item QComboBox, + #modList::item QLineEdit, + #modList::item QComboBox:editable, + #modList::item QAbstractSpinBox, + #settingsTree::item QComboBox, + #settingsTree::item QLineEdit, + #settingsTree::item QComboBox:editable, + #settingsTree::item QAbstractSpinBox, + #pluginSettingsList::item QComboBox, + #pluginSettingsList::item QLineEdit, + #pluginSettingsList::item QComboBox:editable, + #pluginSettingsList::item QAbstractSpinBox, + #espList::item QComboBox, + #espList::item QLineEdit, + #espList::item QComboBox:editable, + #espList::item QAbstractSpinBox { + margin: 2px; } + +QAbstractItemView { + color: #C0C0C0; + background-color: #000; + alternate-background-color: #000; + border-color: #999; } + +QAbstractItemView, +QListView, +QTreeView { + show-decoration-selected: 1; } + +QAbstractItemView::item:hover, +QListView::item:hover, +QTreeView::branch:hover, +QTreeWidget::item:hover { + color: #fff; + background-color: #121212; } + +QAbstractItemView::item:selected:disabled, +QListView::item:selected:disabled, +QTreeView::branch:selected:disabled, +QTreeWidget::item:selected:disabled { + background-color: #121212; } + +QAbstractItemView::item:selected { + background-color: #5F5F5E; + color: #fff; } + +/* Trees and Lists #QTreeView, #QListView*/ +QTreeView::branch:selected { + background-color: #5F5F5E; } + +QTreeView::branch:closed:has-children { + image: url(./skyrim/arrow-right.png); } + +QTreeView::branch:open:has-children { + image: url(./skyrim/branch-opened.png); } + +QListView::item { + color: #C0C0C0; } + +/* Text areas and text fields #QTextEdit, #QLineEdit, #QWebView */ +QLabel { + background-color: transparent; } + +/* Font size */ +QLabel, +QTextEdit, +QLineEdit, +QWebView, +QComboBox, +QComboBox:editable, +QAbstractSpinBox, +QGroupBox, +QCheckBox, +QRadioButton { + font-size: 14px; } + +/* Inputs */ +QTextEdit, +QLineEdit, +QWebView, +QComboBox, +QComboBox:editable, +QAbstractSpinBox { + min-height: 24px; + border: none; + background-color: #141414; + padding: 3px 5px; } + QTextEdit:hover, QTextEdit:focus, + QLineEdit:hover, + QLineEdit:focus, + QWebView:hover, + QWebView:focus, + QComboBox:hover, + QComboBox:focus, + QComboBox:editable:hover, + QComboBox:editable:focus, + QAbstractSpinBox:hover, + QAbstractSpinBox:focus { + background-color: #212121; } + +QLineEdit { + margin-top: 0; + /* Clear button */ + /* Increase version text field width */ + /* Fix margins on tabs pane */ } + QLineEdit QToolButton, + QLineEdit QToolButton:hover { + background: none; + margin-top: 1px; } + QLineEdit#espFilterEdit QToolButton { + margin-top: -2px; + margin-bottom: 1px; } + QLineEdit#modFilterEdit { + margin-top: 2px; } + QLineEdit#versionEdit { + max-width: 90px; } + QLineEdit#espFilterEdit { + margin: 0 0 6px 0; } + QLineEdit#downloadView { + margin: 4px 4px 0 4px; } + QLineEdit#showHiddenBox { + margin: 0 0 4px 4px; } + QLineEdit#downloadFilterEdit { + margin: 0 4px 4px 0; } + +/* Drop-downs #QComboBox*/ +QComboBox { + padding-left: 5px; + margin: 3px 0 1px 0; } + QComboBox:on { + background-color: #212121; } + QComboBox:editable { + padding-left: 3px; } + QComboBox::drop-down { + width: 20px; + subcontrol-origin: padding; + subcontrol-position: top right; + border: none; } + QComboBox::down-arrow { + image: url(./skyrim/arrow-down.png); } + QComboBox QAbstractItemView { + background-color: #000; + selection-background-color: #212121; } + +/* Toolbar */ +QToolBar { + border: none; } + QToolBar::separator { + image: url(./skyrim/separator.png); } + +QToolButton { + margin: 0 4px 0 4px; + padding: 5px; + /* Scrollers */ } + QToolButton:hover, QToolButton:focus { + background-color: #121212; } + QToolButton:pressed { + background-color: #5F5F5E; } + QToolButton::menu-indicator { + image: url(./skyrim/arrow-down.png); + margin: 0 4px 4px 0; } + QToolButton::menu-indicator:pressed, QToolButton::menu-indicator:open { + image: url(./skyrim/arrow-right.png); } + QTabBar QToolButton { + background-color: #000; + padding: 1px; + margin: 0; } + QTabBar QToolButton::right-arrow { + image: url(./skyrim/arrow-right.png); } + QTabBar QToolButton::left-arrow { + image: url(./skyrim/arrow-left.png); } + +/* Group Boxes #QGroupBox */ +QGroupBox { + padding: 1em .3em .3em .3em; + margin-top: .65em; + border: 1px solid #999; } + QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top left; + padding: 5px; + left: 10px; } + +/* LCD Count */ +QLCDNumber { + border-color: #999; + border-style: solid; + border-width: 1px; } + +/* Buttons #QPushButton */ +QPushButton { + min-height: 18px; + padding: 2px 5px; + border-style: solid; + background-color: transparent; + border-width: 0 15px 0 15px; + border-color: transparent; + /* Dialog buttons */ + /* Show categories */ + /* Run */ + /* Mod info dialog images tab */ } + QPushButton:hover, QPushButton:checked:hover { + border-image: url(./skyrim/button-border.png) 0 15 no-repeat; } + QPushButton:checked { + border-image: url(./skyrim/button-checked-border.png) 0 15 repeat; } + QPushButton:disabled { + color: #656565; } + QPushButton::menu-indicator { + image: url(./skyrim/arrow-down.png); + subcontrol-origin: padding; + subcontrol-position: center right; + padding-right: 5%; } + QDialog QPushButton { + font-weight: bold; + font-size: 15px; + min-width: 1.5em; + padding-left: .5em; + padding-right: .5em; } + QPushButton#displayCategoriesBtn { + min-width: 20px; } + QPushButton#startButton:hover { + border-image: url(./skyrim/button-big-border.png) 0 15 repeat; } + QPushButton#startButton:checked { + border-image: url(./skyrim/button-big-border.png) 0 15 repeat; } + QPushButton#unlockButton { + margin: 10px 20px; } + QPushButton + QPushButton { + margin: 10px 0 0 0; } + #tabImages QPushButton { + background-color: transparent; + border: none; + margin: 0 .3em; + padding: 0; } + #tabImages QPushButton:hover { + background-color: #121212; } + #settingsTree::item QPushButton { + border-image: none; } + +/* Check boxes and Radio buttons common #QCheckBox, #QRadioButton */ +QGroupBox::indicator, +QTreeView::indicator, +QCheckBox::indicator { + background-color: transparent; + border: none; + width: 20px; + height: 20px; } + QGroupBox::indicator:checked, QGroupBox::indicator:indeterminate, + QTreeView::indicator:checked, + QTreeView::indicator:indeterminate, + QCheckBox::indicator:checked, + QCheckBox::indicator:indeterminate { + image: url(./skyrim/checkbox-checked.png); } + QGroupBox::indicator:checked:hover, QGroupBox::indicator:indeterminate:hover, + QTreeView::indicator:checked:hover, + QTreeView::indicator:indeterminate:hover, + QCheckBox::indicator:checked:hover, + QCheckBox::indicator:indeterminate:hover { + image: url(./skyrim/checkbox-checked-hover.png); } + QGroupBox::indicator:checked:disabled, QGroupBox::indicator:indeterminate:disabled, + QTreeView::indicator:checked:disabled, + QTreeView::indicator:indeterminate:disabled, + QCheckBox::indicator:checked:disabled, + QCheckBox::indicator:indeterminate:disabled { + image: url(./skyrim/checkbox-checked-disabled.png); } + QGroupBox::indicator:unchecked, + QTreeView::indicator:unchecked, + QCheckBox::indicator:unchecked { + image: url(./skyrim/checkbox.png); } + QGroupBox::indicator:unchecked:hover, + QTreeView::indicator:unchecked:hover, + QCheckBox::indicator:unchecked:hover { + image: url(./skyrim/checkbox-hover.png); } + QGroupBox::indicator:unchecked:disabled, + QTreeView::indicator:unchecked:disabled, + QCheckBox::indicator:unchecked:disabled { + image: url(./skyrim/checkbox-disabled.png); } + +/* Check boxes special */ +QTreeWidget#bsaList::indicator { + width: 10px; + height: 15px; } + QTreeWidget#bsaList::indicator:checked { + image: url(./skyrim/checkbox-alt-checked.png); } + QTreeWidget#bsaList::indicator:unchecked { + image: url(./skyrim/checkbox-alt-unchecked.png); } + QTreeWidget#bsaList::indicator:unchecked:hover { + image: url(./skyrim/checkbox-alt-unchecked-hover.png); } + +/* Radio buttons #QRadioButton */ +QRadioButton::indicator { + width: 16px; + height: 16px; } + QRadioButton::indicator::checked { + image: url(./skyrim/radio-checked.png); } + QRadioButton::indicator::unchecked { + image: url(./skyrim/radio.png); } + QRadioButton::indicator::unchecked:hover { + image: url(./skyrim/radio-hover.png); } + +/* Spinners #QSpinBox, #QDoubleSpinBox */ +QAbstractSpinBox { + margin: 1px; } + QAbstractSpinBox::up-button, QAbstractSpinBox::down-button { + border-style: solid; + border-width: 1px; + subcontrol-origin: padding; } + QAbstractSpinBox::up-button:hover, QAbstractSpinBox::down-button:hover { + background-color: #141414; } + QAbstractSpinBox::up-button { + subcontrol-position: top right; } + QAbstractSpinBox::down-button { + subcontrol-position: bottom right; } + QAbstractSpinBox::up-arrow { + image: url(./skyrim/arrow-up.png); } + QAbstractSpinBox::down-arrow { + image: url(./skyrim/arrow-down.png); } + +/* Scroll Bars #QAbstractScrollArea, #QScrollBar*/ +/* Assigning background still leaves not filled area */ +QAbstractScrollArea::corner { + background-color: transparent; } + +QScrollBar { + background-color: transparent; + border: none; + /* Since QTextEdit:hover doesn't work set focus input background */ } + QScrollBar:horizontal { + height: 12px; + border: none; + margin: 0 17px 0 17px; } + QScrollBar:vertical { + width: 12px; + border: none; + margin: 17px 0 17px 0; } + QScrollBar::handle { + border: 1px solid rgba(243, 243, 243, 0.88); + background-color: rgba(255, 255, 255, 0.6); } + QScrollBar::handle:horizontal { + min-width: 32px; + margin: 1px 0 1px 0; } + QScrollBar::handle:vertical { + min-height: 32px; + margin: 0 1px 0 1px; } + QScrollBar::add-line, QScrollBar::sub-line { + background-color: transparent; + border: none; + subcontrol-origin: margin; } + QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal { + width: 17px; } + QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical { + height: 17px; } + QScrollBar::add-line:horizontal { + subcontrol-position: right; } + QScrollBar::add-line:vertical { + subcontrol-position: bottom; } + QScrollBar::sub-line:horizontal { + subcontrol-position: left; } + QScrollBar::sub-line:vertical { + subcontrol-position: top; } + QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal { + background: url(./skyrim/scrollbar-horizontal.png) center center repeat-x; } + QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { + background: url(./skyrim/scrollbar-vertical.png) center center repeat-y; } + QScrollBar::up-arrow:vertical { + image: url(./skyrim/scrollbar-up.png); } + QScrollBar::down-arrow:vertical { + image: url(./skyrim/scrollbar-down.png); } + QScrollBar::right-arrow:horizontal { + image: url(./skyrim/scrollbar-right.png); } + QScrollBar::left-arrow:horizontal { + image: url(./skyrim/scrollbar-left.png); } + QTextEdit QScrollBar::up-arrow:vertical, + QTextEdit QScrollBar::down-arrow:vertical, + QTextEdit QScrollBar::right-arrow:horizontal, + QTextEdit QScrollBar::left-arrow:horizontal { + background-color: #212121; } + +/* Scroll Area #QScrollArea*/ +QScrollArea { + border-color: transparent; + border-style: solid; + border-width: 1px; } + +/* Sliders #QSlider */ +QSlider::groove:horizontal { + background: url(./skyrim/scrollbar-horizontal.png) repeat-x; + border-style: solid; + border-width: 0 17px; + border-color: transparent; + height: 12px; + margin: 0; + border-image: url(./skyrim/slider-border.png) 0 17 round; } + +QSlider::handle:horizontal { + background: url(./skyrim/slider-handle.png); + width: 18px; + height: 20px; + margin: -4px 0; + subcontrol-origin: margin; } + +/* Header Rows and Tables (Configure Mod Categories) #QTableView, #QHeaderView */ +QTableView { + gridline-color: transparent; + selection-background-color: #5F5F5E; + selection-color: #C0C0C0; } + QTableView QTableCornerButton::section { + background-color: transparent; + border-color: #999; + border-style: solid; + border-width: 0 1px 1px 0; } + +QHeaderView { + border: none; } + QHeaderView::section { + background-color: transparent; + border-color: #999; + /* 17px to have some place for sort indicator */ + padding: 3px 17px 3px 5px; + border-style: solid; } + QHeaderView::section:horizontal { + border-width: 0 0 1px 0; } + QHeaderView::section:vertical { + border-width: 0 1px 0 0; } + QHeaderView::section:hover { + background: #121212; + color: #fff; } + QHeaderView::up-arrow, QHeaderView::down-arrow { + subcontrol-origin: content; + subcontrol-position: center right; + width: 7px; + height: 7px; + margin-right: 7px; } + QHeaderView::up-arrow { + image: url(./skyrim/arrow-up.png); } + QHeaderView::down-arrow { + image: url(./skyrim/arrow-down.png); } + +/* Context menus, toolbar drop-downs #QMenu */ +QMenu { + background-color: transparent; } + QMenu::item, + QMenu QPushButton { + padding: 6px 20px; } + QMenu::item:selected { + background-color: #121212; } + QMenu::item:disabled { + background-color: transparent; } + QMenu::separator { + height: 3px; + margin: 1px 0; + background: url(./skyrim/context-menu-separator.png) repear-x; } + QMenu::icon { + margin: 1px; } + QMenu::right-arrow { + image: url(./skyrim/arrow-right.png); + subcontrol-origin: padding; + subcontrol-position: center right; + padding-right: .5em; } + QMenu QPushButton { + /* Cancel styles */ + border: none; + text-align: left; } + QMenu QPushButton:hover { + background-color: #121212; } + QMenu QCheckBox, + QMenu QRadioButton { + background-color: transparent; + padding: 5px 2px; } + +/* Tool tips #QToolTip, #SaveGameInfoWidget */ +QToolTip { + background-color: transparent; + color: #C0C0C0; + padding: 0; } + +SaveGameInfoWidget { + background-color: #121212; + color: #C0C0C0; } + +/* Progress Bars (Downloads) #QProgressBar */ +QProgressBar { + background-color: transparent; + color: transparent; + height: 14px; + margin: 0 10px; + border-width: 4px 21px; + border-style: solid; + border-color: transparent; + border-image: url(./skyrim/progress-bar-border.png) 4 21 repeat repeat; } + QProgressBar::chunk { + background: url(./skyrim/progress-bar-chunk.png) center center repeat-x qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 #95BED9, stop:0.78781 #6EB9CE); } + +/* Right Pane and Tab Bars #QTabWidget, #QTabBar */ +QTabWidget::pane { + border: none; + top: 0; } + +QTabBar { + text-transform: uppercase; + max-height: 22px; } + QTabBar::tab { + color: #C0C0C0; + background-color: transparent; + padding: 4px .5em; + margin: 0 0 .3em 0; + border-style: solid; + border-width: 0 15px 0 15px; + border-color: transparent; } + QTabBar::tab:hover { + color: #fff; } + QTabBar::tab:selected { + color: #fff; + border-image: url(./skyrim/button-checked-border.png) 0 15 repeat; } + QTabBar::tab:disabled { + color: #656565; } + QTabBar::scroller { + width: 23px; } + +/* Border images */ +ModListView, +QTreeView, +ModListView#modList, +QTreeWidget, +QListView, +QTableView, +QDialog#LockedDialog { + border-width: 20px; + border-color: transparent; + border-image: url(./skyrim/border-image.png) 27 repeat repeat; } + +QMenu, +QToolTip { + border-width: 17px; + border-color: transparent; + border-image: url(./skyrim/border-image.png) 27 repeat repeat; } + +/* Special styles */ +/* Increase categories tab width */ +QTreeWidget#categoriesList { + min-width: 200px; } + QTreeWidget#categoriesList::item { + background-position: center left; + background-repeat: no-repeat; + padding: .35em 10px; } + QTreeWidget#categoriesList::item:has-children { + background-image: url(./skyrim/arrow-right.png); } + QTreeWidget#categoriesList::item:has-children:open { + background-image: url(./skyrim/branch-opened.png); } + +/* Add some space around buttons */ +#QueryOverwriteDialog QPushButton { + margin-left: 0.5em; } + +#SimpleInstallDialog QPushButton { + margin-top: 0.5em; } + +#ProfilesDialog QPushButton { + margin-bottom: 0.5em; } + +#ProfilesDialog QPushButton#closeButton { + margin-bottom: 0; } + +#EditExecutablesDialog QPushButton#addButton, +#EditExecutablesDialog QPushButton#removeButton { + margin-bottom: 0.5em; + margin-top: 1em; } + +/* Increase dialogs width to prevent buttons cutting */ +QDialog#QueryOverwriteDialog { + min-width: 565px; } + +QDialog#ModInfoDialog { + min-width: 940px; } + +QDialog#BainComplexInstallerDialog { + min-width: 500px; } + +QDialog#EditExecutablesDialog { + min-width: 500px; } + +QDialog#SettingsDialog { + min-width: 670px; } + +QDialog#CredentialsDialog { + min-width: 400px; } + +#pluginsList { + min-width: 260px; } diff --git a/src/stylesheets/skyrim/arrow-down.png b/src/stylesheets/skyrim/arrow-down.png Binary files differnew file mode 100644 index 00000000..276fd467 --- /dev/null +++ b/src/stylesheets/skyrim/arrow-down.png diff --git a/src/stylesheets/skyrim/arrow-left.png b/src/stylesheets/skyrim/arrow-left.png Binary files differnew file mode 100644 index 00000000..be707221 --- /dev/null +++ b/src/stylesheets/skyrim/arrow-left.png diff --git a/src/stylesheets/skyrim/arrow-right.png b/src/stylesheets/skyrim/arrow-right.png Binary files differnew file mode 100644 index 00000000..a5840a4c --- /dev/null +++ b/src/stylesheets/skyrim/arrow-right.png diff --git a/src/stylesheets/skyrim/arrow-up.png b/src/stylesheets/skyrim/arrow-up.png Binary files differnew file mode 100644 index 00000000..1e5e3f90 --- /dev/null +++ b/src/stylesheets/skyrim/arrow-up.png diff --git a/src/stylesheets/skyrim/border-image.png b/src/stylesheets/skyrim/border-image.png Binary files differnew file mode 100644 index 00000000..cd9450ac --- /dev/null +++ b/src/stylesheets/skyrim/border-image.png diff --git a/src/stylesheets/skyrim/border-image1.png b/src/stylesheets/skyrim/border-image1.png Binary files differnew file mode 100644 index 00000000..df68a485 --- /dev/null +++ b/src/stylesheets/skyrim/border-image1.png diff --git a/src/stylesheets/skyrim/border-image2.png b/src/stylesheets/skyrim/border-image2.png Binary files differnew file mode 100644 index 00000000..cccf739f --- /dev/null +++ b/src/stylesheets/skyrim/border-image2.png diff --git a/src/stylesheets/skyrim/branch-opened.png b/src/stylesheets/skyrim/branch-opened.png Binary files differnew file mode 100644 index 00000000..8dc7d01d --- /dev/null +++ b/src/stylesheets/skyrim/branch-opened.png diff --git a/src/stylesheets/skyrim/button-big-border.png b/src/stylesheets/skyrim/button-big-border.png Binary files differnew file mode 100644 index 00000000..f5d0ec46 --- /dev/null +++ b/src/stylesheets/skyrim/button-big-border.png diff --git a/src/stylesheets/skyrim/button-border.png b/src/stylesheets/skyrim/button-border.png Binary files differnew file mode 100644 index 00000000..158890eb --- /dev/null +++ b/src/stylesheets/skyrim/button-border.png diff --git a/src/stylesheets/skyrim/button-checked-border.png b/src/stylesheets/skyrim/button-checked-border.png Binary files differnew file mode 100644 index 00000000..7ece413b --- /dev/null +++ b/src/stylesheets/skyrim/button-checked-border.png diff --git a/src/stylesheets/skyrim/checkbox-alt-checked.png b/src/stylesheets/skyrim/checkbox-alt-checked.png Binary files differnew file mode 100644 index 00000000..3f4662c7 --- /dev/null +++ b/src/stylesheets/skyrim/checkbox-alt-checked.png diff --git a/src/stylesheets/skyrim/checkbox-alt-unchecked-hover.png b/src/stylesheets/skyrim/checkbox-alt-unchecked-hover.png Binary files differnew file mode 100644 index 00000000..69e11fd1 --- /dev/null +++ b/src/stylesheets/skyrim/checkbox-alt-unchecked-hover.png diff --git a/src/stylesheets/skyrim/checkbox-alt-unchecked.png b/src/stylesheets/skyrim/checkbox-alt-unchecked.png Binary files differnew file mode 100644 index 00000000..a9b51027 --- /dev/null +++ b/src/stylesheets/skyrim/checkbox-alt-unchecked.png diff --git a/src/stylesheets/skyrim/checkbox-checked-disabled.png b/src/stylesheets/skyrim/checkbox-checked-disabled.png Binary files differnew file mode 100644 index 00000000..c5192630 --- /dev/null +++ b/src/stylesheets/skyrim/checkbox-checked-disabled.png diff --git a/src/stylesheets/skyrim/checkbox-checked-hover.png b/src/stylesheets/skyrim/checkbox-checked-hover.png Binary files differnew file mode 100644 index 00000000..0ca3d2b2 --- /dev/null +++ b/src/stylesheets/skyrim/checkbox-checked-hover.png diff --git a/src/stylesheets/skyrim/checkbox-checked.png b/src/stylesheets/skyrim/checkbox-checked.png Binary files differnew file mode 100644 index 00000000..68da200d --- /dev/null +++ b/src/stylesheets/skyrim/checkbox-checked.png diff --git a/src/stylesheets/skyrim/checkbox-disabled.png b/src/stylesheets/skyrim/checkbox-disabled.png Binary files differnew file mode 100644 index 00000000..ad264e5b --- /dev/null +++ b/src/stylesheets/skyrim/checkbox-disabled.png diff --git a/src/stylesheets/skyrim/checkbox-hover.png b/src/stylesheets/skyrim/checkbox-hover.png Binary files differnew file mode 100644 index 00000000..8e90ba6b --- /dev/null +++ b/src/stylesheets/skyrim/checkbox-hover.png diff --git a/src/stylesheets/skyrim/checkbox.png b/src/stylesheets/skyrim/checkbox.png Binary files differnew file mode 100644 index 00000000..34503819 --- /dev/null +++ b/src/stylesheets/skyrim/checkbox.png diff --git a/src/stylesheets/skyrim/context-menu-separator.png b/src/stylesheets/skyrim/context-menu-separator.png Binary files differnew file mode 100644 index 00000000..f566ca76 --- /dev/null +++ b/src/stylesheets/skyrim/context-menu-separator.png diff --git a/src/stylesheets/skyrim/progress-bar-border.png b/src/stylesheets/skyrim/progress-bar-border.png Binary files differnew file mode 100644 index 00000000..676f0de2 --- /dev/null +++ b/src/stylesheets/skyrim/progress-bar-border.png diff --git a/src/stylesheets/skyrim/progress-bar-chunk.png b/src/stylesheets/skyrim/progress-bar-chunk.png Binary files differnew file mode 100644 index 00000000..b9d31399 --- /dev/null +++ b/src/stylesheets/skyrim/progress-bar-chunk.png diff --git a/src/stylesheets/skyrim/radio-checked.png b/src/stylesheets/skyrim/radio-checked.png Binary files differnew file mode 100644 index 00000000..89022836 --- /dev/null +++ b/src/stylesheets/skyrim/radio-checked.png diff --git a/src/stylesheets/skyrim/radio-hover.png b/src/stylesheets/skyrim/radio-hover.png Binary files differnew file mode 100644 index 00000000..eda643ca --- /dev/null +++ b/src/stylesheets/skyrim/radio-hover.png diff --git a/src/stylesheets/skyrim/radio.png b/src/stylesheets/skyrim/radio.png Binary files differnew file mode 100644 index 00000000..57cd3985 --- /dev/null +++ b/src/stylesheets/skyrim/radio.png diff --git a/src/stylesheets/skyrim/scrollbar-down.png b/src/stylesheets/skyrim/scrollbar-down.png Binary files differnew file mode 100644 index 00000000..76feeeab --- /dev/null +++ b/src/stylesheets/skyrim/scrollbar-down.png diff --git a/src/stylesheets/skyrim/scrollbar-horizontal.png b/src/stylesheets/skyrim/scrollbar-horizontal.png Binary files differnew file mode 100644 index 00000000..7ebfe658 --- /dev/null +++ b/src/stylesheets/skyrim/scrollbar-horizontal.png diff --git a/src/stylesheets/skyrim/scrollbar-left.png b/src/stylesheets/skyrim/scrollbar-left.png Binary files differnew file mode 100644 index 00000000..77a60787 --- /dev/null +++ b/src/stylesheets/skyrim/scrollbar-left.png diff --git a/src/stylesheets/skyrim/scrollbar-right.png b/src/stylesheets/skyrim/scrollbar-right.png Binary files differnew file mode 100644 index 00000000..e8a67d4e --- /dev/null +++ b/src/stylesheets/skyrim/scrollbar-right.png diff --git a/src/stylesheets/skyrim/scrollbar-up.png b/src/stylesheets/skyrim/scrollbar-up.png Binary files differnew file mode 100644 index 00000000..64c9665d --- /dev/null +++ b/src/stylesheets/skyrim/scrollbar-up.png diff --git a/src/stylesheets/skyrim/scrollbar-vertical.png b/src/stylesheets/skyrim/scrollbar-vertical.png Binary files differnew file mode 100644 index 00000000..cdd5b048 --- /dev/null +++ b/src/stylesheets/skyrim/scrollbar-vertical.png diff --git a/src/stylesheets/skyrim/separator.png b/src/stylesheets/skyrim/separator.png Binary files differnew file mode 100644 index 00000000..9867bab3 --- /dev/null +++ b/src/stylesheets/skyrim/separator.png diff --git a/src/stylesheets/skyrim/slider-border.png b/src/stylesheets/skyrim/slider-border.png Binary files differnew file mode 100644 index 00000000..64ef3ebb --- /dev/null +++ b/src/stylesheets/skyrim/slider-border.png diff --git a/src/stylesheets/skyrim/slider-handle.png b/src/stylesheets/skyrim/slider-handle.png Binary files differnew file mode 100644 index 00000000..e400cd37 --- /dev/null +++ b/src/stylesheets/skyrim/slider-handle.png diff --git a/src/stylesheets/vs15 Dark-Green.qss b/src/stylesheets/vs15 Dark-Green.qss new file mode 100644 index 00000000..5427b38a --- /dev/null +++ b/src/stylesheets/vs15 Dark-Green.qss @@ -0,0 +1,749 @@ +/*!************************************* + VS15 Dark +**************************************** + Author: chintsu_kun + Version: 2.0.2 + Licence: GNU General Public License v3.0 (https://www.gnu.org/licenses/gpl-3.0.en.html) + Url: https://github.com/nikolay-borzov/modorganizer-themes +**************************************** +*/ +/* For some reason applying background-color or border fixes paddings properties */ +QListWidget::item { + border-width: 0; } + +/* Don't override install label on download widget. + MO2 assigns color depending on download state */ +#installLabel { + color: none; } + +/* Make `background-color` work for :hover, :focus and :pressed states */ +QToolButton { + border: none; } + +/* Main Window */ +QWidget { + background-color: #2D2D30; + color: #F1F1F1; } + QWidget::disabled { + color: #656565; } + +/* Common */ +/* remove outline */ +* { + outline: 0; } + +*:disabled, +QListView::item:disabled, +*::item:selected:disabled { + color: #656565; } + +/* line heights */ +/* QTreeView#fileTree::item - currently have problem with size column vertical + text align */ +#bsaList::item, +#dataTree::item, +QTreeView#modList::item, +QTreeWidget#categoriesTree::item, +#tabConflicts QTreeWidget::item { + padding: 0.3em 0; } + +QListView::item, +QTreeView#espList::item { + padding: 0.3em; } + +/* to enable border color */ +QTreeView, +QListView, +QTextEdit, +QWebView, +QTableView { + border-style: solid; + border-width: 1px; } + +QAbstractItemView { + color: #DCDCDC; + background-color: #1E1E1E; + alternate-background-color: #262626; + border-color: #3F3F46; } + QAbstractItemView::item:selected, QAbstractItemView::item:selected:hover { + background-color: #009933; + color: #F1F1F1; } + +QAbstractItemView, +QListView, +QTreeView { + show-decoration-selected: 1; } + +QAbstractItemView::item:hover, +QListView::item:hover, +QTreeView::branch:hover, +QTreeWidget::item:hover { + background-color: rgba(0, 153, 51, 0.3); } + +QAbstractItemView::item:selected:disabled, +QListView::item:selected:disabled, +QTreeView::branch:selected:disabled, +QTreeWidget::item:selected:disabled { + background-color: rgba(0, 153, 51, 0.3); } + +QTreeView::branch:selected { + background-color: #009933; } + +QLabel { + background-color: transparent; } + +/* Left Pane & File Trees #QTreeView, #QListView*/ +QTreeView::branch:closed:has-children { + image: url(./vs15/branch-closed.png); } + +QTreeView::branch:open:has-children { + image: url(./vs15/branch-open.png); } + +/*QListView::item:hover { } +QListView::item:selected { }*/ +QListView::item { + color: #F1F1F1; } + +/* Text areas and text fields #QTextEdit, #QLineEdit, #QWebView */ +QTextEdit, +QWebView, +QLineEdit, +QAbstractSpinBox, +QAbstractSpinBox::up-button, +QAbstractSpinBox::down-button, +QComboBox { + background-color: #333337; + border-color: #3F3F46; } + +QLineEdit:hover, +QAbstractSpinBox:hover, +QTextEdit:hover, +QComboBox:hover, +QComboBox:editable:hover { + border-color: #009933; } + +QLineEdit:focus, +QAbstractSpinBox::focus, +QTextEdit:focus, +QComboBox:focus, +QComboBox:editable:focus, +QComboBox:on { + background-color: #3F3F46; + border-color: #009933; } + +QComboBox:on { + border-bottom-color: #3F3F46; } + +QLineEdit, +QAbstractSpinBox { + min-height: 15px; + padding: 2px; + border-style: solid; + border-width: 1px; } + +QLineEdit { + margin-top: 0; } + +/* clear button */ +QLineEdit QToolButton, +QLineEdit QToolButton:hover { + background: none; + margin-top: 1px; } + +QLineEdit#espFilterEdit QToolButton { + margin-top: -2px; + margin-bottom: 1px; } + +/* Drop-downs #QComboBox*/ +QComboBox { + min-height: 20px; + padding-left: 5px; + margin: 3px 0 1px 0; + border-style: solid; + border-width: 1px; } + QComboBox:editable { + padding-left: 3px; + /* to enable hover styles */ + background-color: transparent; } + QComboBox::drop-down { + width: 20px; + subcontrol-origin: padding; + subcontrol-position: top right; + border: none; + /* If you need to set style for drop-down button + &:on, + &:editable:hover { + background-color: red; + } */ } + QComboBox::down-arrow { + image: url(./vs15/combobox-down.png); } + QComboBox QAbstractItemView { + background-color: #1B1B1C; + selection-background-color: #3F3F46; + border-color: #009933; + border-style: solid; + border-width: 0 1px 1px 1px; } + +/* doesn't work http://stackoverflow.com/questions/13308341/qcombobox-abstractitemviewitem*/ +/*QComboBox QAbstractItemView:item { + padding: 10px; + margin: 10px; +}*/ +/* Toolbar */ +QToolBar { + border: none; } + +QToolBar::separator { + border-left-color: #222222; + border-right-color: #46464A; + border-width: 0 1px 0 1px; + border-style: solid; + width: 0; } + +QToolButton { + margin: 0 4px 0 4px; + padding: 5px; } + QToolButton:hover, QToolButton:focus { + background-color: #3E3E40; } + QToolButton:pressed { + background-color: #009933; } + +/* Group Boxes #QGroupBox */ +QGroupBox { + border-color: #3F3F46; + border-style: solid; + border-width: 1px; + padding: 1em .3em .3em .3em; + margin-top: .65em; } + +QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top left; + padding: 2px; + left: 10px; } + +/* LCD Count */ +QLCDNumber { + border-color: #3F3F46; + border-style: solid; + border-width: 1px; } + +/* Buttons #QPushButton */ +QPushButton { + background-color: #333337; + border-color: #3F3F46; + min-height: 18px; + padding: 2px 5px; + border-style: solid; + border-width: 1px; } + +QPushButton:hover, +QPushButton:checked, +QPushButton:focus, +QAbstractSpinBox::up-button:hover, +QAbstractSpinBox::down-button:hover { + background-color: #009933; } + +QPushButton:pressed, +QPushButton:checked:hover, +QAbstractSpinBox::up-button:pressed, +QAbstractSpinBox::down-button:pressed { + background-color: #00b33c; } + +QPushButton:disabled, +QAbstractSpinBox::up-button:disabled, +QAbstractSpinBox::down-button:disabled { + background-color: #333337; + border-color: #3F3F46; } + +QPushButton::menu-indicator { + image: url(./vs15/combobox-down.png); + subcontrol-origin: padding; + subcontrol-position: center right; + padding-right: 5%; } + +/* Dialog buttons */ +QDialog QPushButton, +QSlider::handle:horizontal, +QSlider::handle:vertical { + color: #000000; + background-color: #DDDDDD; + border-color: #707070; + border-style: solid; + border-width: 1px; } + +QDialog QPushButton:hover, +QSlider::handle:horizontal:hover, +QSlider::handle:vertical:hover, +QSlider::handle:horizontal:pressed, +QSlider::handle:vertical:pressed { + background-color: #ccffdd; + border-color: #00a838; } + +QSlider::handle:horizontal:focus:!pressed, +QSlider::handle:vertical:focus:!pressed, +QDialog QPushButton:focus, +QDialog QPushButton:checked { + background-color: #DDDDDD; + border-color: #009933; } + +QDialog QPushButton:disabled, +QSlider::handle:horizontal:disabled, +QSlider::handle:vertical:disabled { + background-color: #333337; + border-color: #3F3F46; } + +QDialog QPushButton { + min-width: 1.5em; + padding-left: .5em; + padding-right: .5em; } + +/* Check boxes and Radio buttons common #QCheckBox, #QRadioButton */ +QGroupBox::indicator, +QTreeView::indicator, +QCheckBox::indicator, +QRadioButton::indicator { + background-color: #2D2D30; + border-color: #3F3F46; + width: 13px; + height: 13px; + border-style: solid; + border-width: 1px; } + QGroupBox::indicator:hover, + QTreeView::indicator:hover, + QCheckBox::indicator:hover, + QRadioButton::indicator:hover { + background-color: #3F3F46; + border-color: #009933; } + +QGroupBox::indicator:checked, +QTreeView::indicator:checked, +QCheckBox::indicator:checked { + image: url(./vs15/checkbox-check.png); } + +QGroupBox::indicator:disabled, +QTreeView::indicator:checked:disabled, +QCheckBox::indicator:checked:disabled { + image: url(./vs15/checkbox-check-disabled.png); } + +/* Check boxes special */ +QTreeView#modList::indicator { + width: 15px; + height: 15px; } + +/* Radio buttons #QRadioButton */ +QRadioButton::indicator { + border-radius: 7px; } + QRadioButton::indicator::checked { + background-color: #B9B9BA; + border-width: 2px; + width: 11px; + height: 11px; } + QRadioButton::indicator::checked:hover { + border-color: #3F3F46; } + +/* Spinners #QSpinBox, #QDoubleSpinBox */ +QAbstractSpinBox { + margin: 1px; } + +QAbstractSpinBox::up-button, +QAbstractSpinBox::down-button { + border-style: solid; + border-width: 1px; + subcontrol-origin: padding; } + +QAbstractSpinBox::up-button { + subcontrol-position: top right; } + +QAbstractSpinBox::up-arrow { + image: url(./vs15/spinner-up.png); } + +QAbstractSpinBox::down-button { + subcontrol-position: bottom right; } + +QAbstractSpinBox::down-arrow { + image: url(./vs15/spinner-down.png); } + +/* Sliders #QSlider */ +QSlider::groove:horizontal { + background-color: #3F3F46; + border: none; + height: 8px; + margin: 2px 0; } + +QSlider::handle:horizontal { + width: .5em; + height: 2em; + margin: -7px 0; + subcontrol-origin: margin; } + +/* Scroll Bars #QAbstractScrollArea, #QScrollBar*/ +/* assigning background still leaves not filled area*/ +QAbstractScrollArea::corner { + background-color: transparent; } + +/* Horizontal */ +QScrollBar:horizontal { + height: 18px; + border: none; + margin: 0 23px 0 23px; } + +QScrollBar::handle:horizontal { + min-width: 32px; + margin: 4px 2px; } + +QScrollBar::add-line:horizontal { + width: 23px; + subcontrol-position: right; + subcontrol-origin: margin; } + +QScrollBar::sub-line:horizontal { + width: 23px; + subcontrol-position: left; + subcontrol-origin: margin; } + +/* Vertical */ +QScrollBar:vertical { + width: 20px; + border: none; + margin: 23px 0 23px 0; } + +QScrollBar::handle:vertical { + min-height: 32px; + margin: 2px 4px; } + +QScrollBar::add-line:vertical { + height: 23px; + subcontrol-position: bottom; + subcontrol-origin: margin; } + +QScrollBar::sub-line:vertical { + height: 23px; + subcontrol-position: top; + subcontrol-origin: margin; } + +/* Combined */ +QScrollBar { + background-color: #3E3E42; + border: none; } + +QScrollBar::handle { + background-color: #686868; } + +QScrollBar::add-line, +QScrollBar::sub-line { + background-color: #3E3E42; + border: none; } + +/*QScrollBar::add-line:horizontal:hover, +QScrollBar::sub-line:horizontal:hover, +QScrollBar::add-line:vertical:hover, +QScrollBar::sub-line:vertical:hover, +QScrollBar::add-line:horizontal:pressed, +QScrollBar::sub-line:horizontal:pressed, +QScrollBar::add-line:vertical:pressed, +QScrollBar::sub-line:vertical:pressed { }*/ +QScrollBar::handle:hover { + background: #9E9E9E; } + +QScrollBar::handle:pressed { + background: #EFEBEF; } + +QScrollBar::handle:disabled { + background: #555558; } + +QScrollBar::add-page, +QScrollBar::sub-page { + background: transparent; } + +QScrollBar::up-arrow:vertical { + image: url(./vs15/scrollbar-up.png); } + +QScrollBar::up-arrow:vertical:hover { + image: url(./vs15/scrollbar-up-hover.png); } + +QScrollBar::up-arrow:vertical:disabled { + image: url(./vs15/scrollbar-up-disabled.png); } + +QScrollBar::right-arrow:horizontal { + image: url(./vs15/scrollbar-right.png); } + +QScrollBar::right-arrow:horizontal:hover { + image: url(./vs15/scrollbar-right-hover.png); } + +QScrollBar::right-arrow:horizontal:disabled { + image: url(./vs15/scrollbar-right-disabled.png); } + +QScrollBar::down-arrow:vertical { + image: url(./vs15/scrollbar-down.png); } + +QScrollBar::down-arrow:vertical:hover { + image: url(./vs15/scrollbar-down-hover.png); } + +QScrollBar::down-arrow:vertical:disabled { + image: url(./vs15/scrollbar-down-disabled.png); } + +QScrollBar::left-arrow:horizontal { + image: url(./vs15/scrollbar-left.png); } + +QScrollBar::left-arrow:horizontal:hover { + image: url(./vs15/scrollbar-left-hover.png); } + +QScrollBar::left-arrow:horizontal:disabled { + image: url(./vs15/scrollbar-left-disabled.png); } + +/* Scroll Area #QScrollArea*/ +QScrollArea { + border-color: #3F3F46; + border-style: solid; + border-width: 1px; } + +/* Header Rows and Tables (Configure Mod Categories) #QTableView, #QHeaderView */ +QTableView { + gridline-color: #3F3F46; + selection-background-color: #009933; + selection-color: #F1F1F1; } + +QTableView QTableCornerButton::section { + background: #252526; + border-color: #3F3F46; + border-style: solid; + border-width: 0 1px 1px 0; } + +QHeaderView { + border: none; } + +QHeaderView::section { + background: #252526; + border-color: #3F3F46; + padding: 3px 5px; + border-style: solid; + border-width: 0 1px 1px 0; } + +QHeaderView::section:hover { + background: #3E3E40; + color: #F6F6F6; } + +/*QHeaderView::section:first { }*/ +QHeaderView::section:last { + border-right: 0; } + +QHeaderView::up-arrow { + image: url(./vs15/sort-asc.png); + margin-bottom: -37px; } + +QTreeView#downloadView QHeaderView::up-arrow { + margin-bottom: -32px; } + +QHeaderView::down-arrow { + image: url(./vs15/sort-desc.png); + margin-bottom: 0; } + +/* Context menus, toolbar drop-downs #QMenu */ +QMenu { + background-color: #1A1A1C; + border-color: #333337; + border-style: solid; + border-width: 1px; + padding: 2px; } + +QMenu::item { + background: transparent; + padding: 4px 20px; } + +QMenu::item:selected { + background-color: #333334; } + +QMenu::item:disabled { + background-color: transparent; } + +QMenu::separator { + background-color: #333337; + height: 1px; + margin: 1px 0; } + +QMenu::icon { + margin: 1px; } + +QMenu::right-arrow { + image: url(./vs15/sub-menu-arrow.png); + subcontrol-origin: padding; + subcontrol-position: center right; + padding-right: .5em; } + +QMenu QPushButton { + background-color: transparent; + border-color: #3F3F46; + margin: 1px 0 1px 0; } + +QMenu QCheckBox, +QMenu QRadioButton { + background-color: transparent; + padding: 5px 2px; } + +/* Tool tips #QToolTip, #SaveGameInfoWidget */ +QToolTip, +SaveGameInfoWidget { + background-color: #424245; + border-color: #4D4D50; + color: #F1F1F1; + border-style: solid; + border-width: 1px; + padding: 2px; } + +/* Progress Bars (Downloads) #QProgressBar */ +QProgressBar { + background-color: #E6E6E6; + color: #000; + border-color: #BCBCBC; + text-align: center; + border-style: solid; + border-width: 1px; + margin: 0 10px; } + +QProgressBar::chunk { + background: #06B025; } + +/* Right Pane and Tab Bars #QTabWidget, #QTabBar */ +QTabWidget::pane { + border-color: #3F3F46; + border-top-color: #009933; + top: 0; + border-style: solid; + border-width: 1px; } + +QTabWidget::pane:disabled { + border-top-color: #3F3F46; } + +/*QTabWidget::tab-bar { }*/ +QTabBar::tab { + background-color: transparent; + padding: 4px 1em; + border: none; } + +QTabBar::tab:hover { + background-color: #00b33c; } + +QTabBar::tab:selected, +QTabBar::tab:selected:hover { + background-color: #009933; } + +QTabBar::tab:disabled { + background-color: transparent; + color: #656565; } + +QTabBar::tab:selected:disabled { + background-color: #3F3F46; } + +/* Scrollers */ +QTabBar QToolButton { + background-color: #333337; + border-color: #3F3F46; + padding: 1px; + margin: 0; + border-style: solid; + border-width: 1px; } + +QTabBar QToolButton:hover { + border-color: #009933; + border-width: 1px; + border-style: solid; } + +QTabBar QToolButton:disabled, +QTabBar QToolButton:pressed:hover { + background-color: #333337; } + +/*QTabBar::tear { }*/ +QTabBar::scroller { + width: 23px; + background-color: red; } + +QTabBar QToolButton::right-arrow { + image: url(./vs15/scrollbar-right.png); } + +QTabBar QToolButton::right-arrow:hover { + image: url(./vs15/scrollbar-right-hover.png); } + +QTabBar QToolButton::left-arrow { + image: url(./vs15/scrollbar-left.png); } + +QTabBar QToolButton::left-arrow:hover { + image: url(./vs15/scrollbar-left-hover.png); } + +/* Special styles */ +/* fix margins on tabs pane */ +QLineEdit#espFilterEdit { + margin: 0 0 6px 0; } + +QTreeView#downloadView { + margin: 4px 4px 0 4px; } + +QCheckBox#showHiddenBox { + margin: 0 0 4px 4px; } + +QLineEdit#downloadFilterEdit { + margin: 0 4px 4px 0; } + +QWidget#tabImages QPushButton { + background-color: transparent; + margin: 0 .3em; + padding: 0; } + +/* like dialog QPushButton*/ +QWidget#tabESPs QToolButton { + color: #000000; + background-color: #DDDDDD; + border-color: #707070; + border-style: solid; + border-width: 1px; } + +QWidget#tabESPs QToolButton:hover { + background-color: #ccffdd; + border-color: #00a838; } + +QWidget#tabESPs QToolButton:focus { + background-color: #DDDDDD; + border-color: #009933; } + +QWidget#tabESPs QToolButton:disabled { + background-color: #333337; + border-color: #3F3F46; } + +QTreeWidget#categoriesList { + /*min-width: 225px;*/ } + +QTreeWidget#categoriesList::item { + background-position: center left; + background-repeat: no-repeat; + padding: .35em 10px; } + +QTreeWidget#categoriesList::item:has-children { + background-image: url(./vs15/branch-closed.png); } + +QTreeWidget#categoriesList::item:has-children:open { + background-image: url(./vs15/branch-open.png); } + +QDialog#QueryOverwriteDialog QPushButton { + margin-left: .5em; } + +QDialog#PyCfgDialog QPushButton:hover { + background-color: #ccffdd; } + +QLineEdit#modFilterEdit { + margin-top: 2px; } + +/* highlight unchecked BSAs */ +QWidget#bsaTab QTreeWidget::indicator:unchecked { + background-color: #009933; } + +/* increase version text field */ +QLineEdit#versionEdit { + max-width: 100px; } + +/* Dialogs width changes */ +/* increase width to prevent buttons cutting */ +QDialog#QueryOverwriteDialog { + min-width: 565px; } + +QDialog#ModInfoDialog { + min-width: 850px; } diff --git a/src/stylesheets/vs15 Dark-Orange.qss b/src/stylesheets/vs15 Dark-Orange.qss new file mode 100644 index 00000000..fe65ece0 --- /dev/null +++ b/src/stylesheets/vs15 Dark-Orange.qss @@ -0,0 +1,750 @@ +/*base*/ +/*!************************************* + VS15 Dark +**************************************** + Author: chintsu_kun + Version: 2.0.2 + Licence: GNU General Public License v3.0 (https://www.gnu.org/licenses/gpl-3.0.en.html) + Url: https://github.com/nikolay-borzov/modorganizer-themes +**************************************** +*/ +/* For some reason applying background-color or border fixes paddings properties */ +QListWidget::item { + border-width: 0; } + +/* Don't override install label on download widget. + MO2 assigns color depending on download state */ +#installLabel { + color: none; } + +/* Make `background-color` work for :hover, :focus and :pressed states */ +QToolButton { + border: none; } + +/* Main Window */ +QWidget { + background-color: #2D2D30; + color: #F1F1F1; } + QWidget::disabled { + color: #656565; } + +/* Common */ +/* remove outline */ +* { + outline: 0; } + +*:disabled, +QListView::item:disabled, +*::item:selected:disabled { + color: #656565; } + +/* line heights */ +/* QTreeView#fileTree::item - currently have problem with size column vertical + text align */ +#bsaList::item, +#dataTree::item, +QTreeView#modList::item, +QTreeWidget#categoriesTree::item, +#tabConflicts QTreeWidget::item { + padding: 0.3em 0; } + +QListView::item, +QTreeView#espList::item { + padding: 0.3em; } + +/* to enable border color */ +QTreeView, +QListView, +QTextEdit, +QWebView, +QTableView { + border-style: solid; + border-width: 1px; } + +QAbstractItemView { + color: #DCDCDC; + background-color: #1E1E1E; + alternate-background-color: #262626; + border-color: #3F3F46; } + QAbstractItemView::item:selected, QAbstractItemView::item:selected:hover { + background-color: #CC6600; + color: #F1F1F1; } + +QAbstractItemView, +QListView, +QTreeView { + show-decoration-selected: 1; } + +QAbstractItemView::item:hover, +QListView::item:hover, +QTreeView::branch:hover, +QTreeWidget::item:hover { + background-color: rgba(204, 102, 0, 0.3); } + +QAbstractItemView::item:selected:disabled, +QListView::item:selected:disabled, +QTreeView::branch:selected:disabled, +QTreeWidget::item:selected:disabled { + background-color: rgba(204, 102, 0, 0.3); } + +QTreeView::branch:selected { + background-color: #CC6600; } + +QLabel { + background-color: transparent; } + +/* Left Pane & File Trees #QTreeView, #QListView*/ +QTreeView::branch:closed:has-children { + image: url(./vs15/branch-closed.png); } + +QTreeView::branch:open:has-children { + image: url(./vs15/branch-open.png); } + +/*QListView::item:hover { } +QListView::item:selected { }*/ +QListView::item { + color: #F1F1F1; } + +/* Text areas and text fields #QTextEdit, #QLineEdit, #QWebView */ +QTextEdit, +QWebView, +QLineEdit, +QAbstractSpinBox, +QAbstractSpinBox::up-button, +QAbstractSpinBox::down-button, +QComboBox { + background-color: #333337; + border-color: #3F3F46; } + +QLineEdit:hover, +QAbstractSpinBox:hover, +QTextEdit:hover, +QComboBox:hover, +QComboBox:editable:hover { + border-color: #CC6600; } + +QLineEdit:focus, +QAbstractSpinBox::focus, +QTextEdit:focus, +QComboBox:focus, +QComboBox:editable:focus, +QComboBox:on { + background-color: #3F3F46; + border-color: #CC6600; } + +QComboBox:on { + border-bottom-color: #3F3F46; } + +QLineEdit, +QAbstractSpinBox { + min-height: 15px; + padding: 2px; + border-style: solid; + border-width: 1px; } + +QLineEdit { + margin-top: 0; } + +/* clear button */ +QLineEdit QToolButton, +QLineEdit QToolButton:hover { + background: none; + margin-top: 1px; } + +QLineEdit#espFilterEdit QToolButton { + margin-top: -2px; + margin-bottom: 1px; } + +/* Drop-downs #QComboBox*/ +QComboBox { + min-height: 20px; + padding-left: 5px; + margin: 3px 0 1px 0; + border-style: solid; + border-width: 1px; } + QComboBox:editable { + padding-left: 3px; + /* to enable hover styles */ + background-color: transparent; } + QComboBox::drop-down { + width: 20px; + subcontrol-origin: padding; + subcontrol-position: top right; + border: none; + /* If you need to set style for drop-down button + &:on, + &:editable:hover { + background-color: red; + } */ } + QComboBox::down-arrow { + image: url(./vs15/combobox-down.png); } + QComboBox QAbstractItemView { + background-color: #1B1B1C; + selection-background-color: #3F3F46; + border-color: #CC6600; + border-style: solid; + border-width: 0 1px 1px 1px; } + +/* doesn't work http://stackoverflow.com/questions/13308341/qcombobox-abstractitemviewitem*/ +/*QComboBox QAbstractItemView:item { + padding: 10px; + margin: 10px; +}*/ +/* Toolbar */ +QToolBar { + border: none; } + +QToolBar::separator { + border-left-color: #222222; + border-right-color: #46464A; + border-width: 0 1px 0 1px; + border-style: solid; + width: 0; } + +QToolButton { + margin: 0 4px 0 4px; + padding: 5px; } + QToolButton:hover, QToolButton:focus { + background-color: #3E3E40; } + QToolButton:pressed { + background-color: #CC6600; } + +/* Group Boxes #QGroupBox */ +QGroupBox { + border-color: #3F3F46; + border-style: solid; + border-width: 1px; + padding: 1em .3em .3em .3em; + margin-top: .65em; } + +QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top left; + padding: 2px; + left: 10px; } + +/* LCD Count */ +QLCDNumber { + border-color: #3F3F46; + border-style: solid; + border-width: 1px; } + +/* Buttons #QPushButton */ +QPushButton { + background-color: #333337; + border-color: #3F3F46; + min-height: 18px; + padding: 2px 5px; + border-style: solid; + border-width: 1px; } + +QPushButton:hover, +QPushButton:checked, +QPushButton:focus, +QAbstractSpinBox::up-button:hover, +QAbstractSpinBox::down-button:hover { + background-color: #CC6600; } + +QPushButton:pressed, +QPushButton:checked:hover, +QAbstractSpinBox::up-button:pressed, +QAbstractSpinBox::down-button:pressed { + background-color: #e67300; } + +QPushButton:disabled, +QAbstractSpinBox::up-button:disabled, +QAbstractSpinBox::down-button:disabled { + background-color: #333337; + border-color: #3F3F46; } + +QPushButton::menu-indicator { + image: url(./vs15/combobox-down.png); + subcontrol-origin: padding; + subcontrol-position: center right; + padding-right: 5%; } + +/* Dialog buttons */ +QDialog QPushButton, +QSlider::handle:horizontal, +QSlider::handle:vertical { + color: #000000; + background-color: #DDDDDD; + border-color: #707070; + border-style: solid; + border-width: 1px; } + +QDialog QPushButton:hover, +QSlider::handle:horizontal:hover, +QSlider::handle:vertical:hover, +QSlider::handle:horizontal:pressed, +QSlider::handle:vertical:pressed { + background-color: #ffd9b3; + border-color: #db6e00; } + +QSlider::handle:horizontal:focus:!pressed, +QSlider::handle:vertical:focus:!pressed, +QDialog QPushButton:focus, +QDialog QPushButton:checked { + background-color: #DDDDDD; + border-color: #CC6600; } + +QDialog QPushButton:disabled, +QSlider::handle:horizontal:disabled, +QSlider::handle:vertical:disabled { + background-color: #333337; + border-color: #3F3F46; } + +QDialog QPushButton { + min-width: 1.5em; + padding-left: .5em; + padding-right: .5em; } + +/* Check boxes and Radio buttons common #QCheckBox, #QRadioButton */ +QGroupBox::indicator, +QTreeView::indicator, +QCheckBox::indicator, +QRadioButton::indicator { + background-color: #2D2D30; + border-color: #3F3F46; + width: 13px; + height: 13px; + border-style: solid; + border-width: 1px; } + QGroupBox::indicator:hover, + QTreeView::indicator:hover, + QCheckBox::indicator:hover, + QRadioButton::indicator:hover { + background-color: #3F3F46; + border-color: #CC6600; } + +QGroupBox::indicator:checked, +QTreeView::indicator:checked, +QCheckBox::indicator:checked { + image: url(./vs15/checkbox-check.png); } + +QGroupBox::indicator:disabled, +QTreeView::indicator:checked:disabled, +QCheckBox::indicator:checked:disabled { + image: url(./vs15/checkbox-check-disabled.png); } + +/* Check boxes special */ +QTreeView#modList::indicator { + width: 15px; + height: 15px; } + +/* Radio buttons #QRadioButton */ +QRadioButton::indicator { + border-radius: 7px; } + QRadioButton::indicator::checked { + background-color: #B9B9BA; + border-width: 2px; + width: 11px; + height: 11px; } + QRadioButton::indicator::checked:hover { + border-color: #3F3F46; } + +/* Spinners #QSpinBox, #QDoubleSpinBox */ +QAbstractSpinBox { + margin: 1px; } + +QAbstractSpinBox::up-button, +QAbstractSpinBox::down-button { + border-style: solid; + border-width: 1px; + subcontrol-origin: padding; } + +QAbstractSpinBox::up-button { + subcontrol-position: top right; } + +QAbstractSpinBox::up-arrow { + image: url(./vs15/spinner-up.png); } + +QAbstractSpinBox::down-button { + subcontrol-position: bottom right; } + +QAbstractSpinBox::down-arrow { + image: url(./vs15/spinner-down.png); } + +/* Sliders #QSlider */ +QSlider::groove:horizontal { + background-color: #3F3F46; + border: none; + height: 8px; + margin: 2px 0; } + +QSlider::handle:horizontal { + width: .5em; + height: 2em; + margin: -7px 0; + subcontrol-origin: margin; } + +/* Scroll Bars #QAbstractScrollArea, #QScrollBar*/ +/* assigning background still leaves not filled area*/ +QAbstractScrollArea::corner { + background-color: transparent; } + +/* Horizontal */ +QScrollBar:horizontal { + height: 18px; + border: none; + margin: 0 23px 0 23px; } + +QScrollBar::handle:horizontal { + min-width: 32px; + margin: 4px 2px; } + +QScrollBar::add-line:horizontal { + width: 23px; + subcontrol-position: right; + subcontrol-origin: margin; } + +QScrollBar::sub-line:horizontal { + width: 23px; + subcontrol-position: left; + subcontrol-origin: margin; } + +/* Vertical */ +QScrollBar:vertical { + width: 20px; + border: none; + margin: 23px 0 23px 0; } + +QScrollBar::handle:vertical { + min-height: 32px; + margin: 2px 4px; } + +QScrollBar::add-line:vertical { + height: 23px; + subcontrol-position: bottom; + subcontrol-origin: margin; } + +QScrollBar::sub-line:vertical { + height: 23px; + subcontrol-position: top; + subcontrol-origin: margin; } + +/* Combined */ +QScrollBar { + background-color: #3E3E42; + border: none; } + +QScrollBar::handle { + background-color: #686868; } + +QScrollBar::add-line, +QScrollBar::sub-line { + background-color: #3E3E42; + border: none; } + +/*QScrollBar::add-line:horizontal:hover, +QScrollBar::sub-line:horizontal:hover, +QScrollBar::add-line:vertical:hover, +QScrollBar::sub-line:vertical:hover, +QScrollBar::add-line:horizontal:pressed, +QScrollBar::sub-line:horizontal:pressed, +QScrollBar::add-line:vertical:pressed, +QScrollBar::sub-line:vertical:pressed { }*/ +QScrollBar::handle:hover { + background: #9E9E9E; } + +QScrollBar::handle:pressed { + background: #EFEBEF; } + +QScrollBar::handle:disabled { + background: #555558; } + +QScrollBar::add-page, +QScrollBar::sub-page { + background: transparent; } + +QScrollBar::up-arrow:vertical { + image: url(./vs15/scrollbar-up.png); } + +QScrollBar::up-arrow:vertical:hover { + image: url(./vs15/scrollbar-up-hover.png); } + +QScrollBar::up-arrow:vertical:disabled { + image: url(./vs15/scrollbar-up-disabled.png); } + +QScrollBar::right-arrow:horizontal { + image: url(./vs15/scrollbar-right.png); } + +QScrollBar::right-arrow:horizontal:hover { + image: url(./vs15/scrollbar-right-hover.png); } + +QScrollBar::right-arrow:horizontal:disabled { + image: url(./vs15/scrollbar-right-disabled.png); } + +QScrollBar::down-arrow:vertical { + image: url(./vs15/scrollbar-down.png); } + +QScrollBar::down-arrow:vertical:hover { + image: url(./vs15/scrollbar-down-hover.png); } + +QScrollBar::down-arrow:vertical:disabled { + image: url(./vs15/scrollbar-down-disabled.png); } + +QScrollBar::left-arrow:horizontal { + image: url(./vs15/scrollbar-left.png); } + +QScrollBar::left-arrow:horizontal:hover { + image: url(./vs15/scrollbar-left-hover.png); } + +QScrollBar::left-arrow:horizontal:disabled { + image: url(./vs15/scrollbar-left-disabled.png); } + +/* Scroll Area #QScrollArea*/ +QScrollArea { + border-color: #3F3F46; + border-style: solid; + border-width: 1px; } + +/* Header Rows and Tables (Configure Mod Categories) #QTableView, #QHeaderView */ +QTableView { + gridline-color: #3F3F46; + selection-background-color: #CC6600; + selection-color: #F1F1F1; } + +QTableView QTableCornerButton::section { + background: #252526; + border-color: #3F3F46; + border-style: solid; + border-width: 0 1px 1px 0; } + +QHeaderView { + border: none; } + +QHeaderView::section { + background: #252526; + border-color: #3F3F46; + padding: 3px 5px; + border-style: solid; + border-width: 0 1px 1px 0; } + +QHeaderView::section:hover { + background: #3E3E40; + color: #F6F6F6; } + +/*QHeaderView::section:first { }*/ +QHeaderView::section:last { + border-right: 0; } + +QHeaderView::up-arrow { + image: url(./vs15/sort-asc.png); + margin-bottom: -37px; } + +QTreeView#downloadView QHeaderView::up-arrow { + margin-bottom: -32px; } + +QHeaderView::down-arrow { + image: url(./vs15/sort-desc.png); + margin-bottom: 0; } + +/* Context menus, toolbar drop-downs #QMenu */ +QMenu { + background-color: #1A1A1C; + border-color: #333337; + border-style: solid; + border-width: 1px; + padding: 2px; } + +QMenu::item { + background: transparent; + padding: 4px 20px; } + +QMenu::item:selected { + background-color: #333334; } + +QMenu::item:disabled { + background-color: transparent; } + +QMenu::separator { + background-color: #333337; + height: 1px; + margin: 1px 0; } + +QMenu::icon { + margin: 1px; } + +QMenu::right-arrow { + image: url(./vs15/sub-menu-arrow.png); + subcontrol-origin: padding; + subcontrol-position: center right; + padding-right: .5em; } + +QMenu QPushButton { + background-color: transparent; + border-color: #3F3F46; + margin: 1px 0 1px 0; } + +QMenu QCheckBox, +QMenu QRadioButton { + background-color: transparent; + padding: 5px 2px; } + +/* Tool tips #QToolTip, #SaveGameInfoWidget */ +QToolTip, +SaveGameInfoWidget { + background-color: #424245; + border-color: #4D4D50; + color: #F1F1F1; + border-style: solid; + border-width: 1px; + padding: 2px; } + +/* Progress Bars (Downloads) #QProgressBar */ +QProgressBar { + background-color: #E6E6E6; + color: #000; + border-color: #BCBCBC; + text-align: center; + border-style: solid; + border-width: 1px; + margin: 0 10px; } + +QProgressBar::chunk { + background: #06B025; } + +/* Right Pane and Tab Bars #QTabWidget, #QTabBar */ +QTabWidget::pane { + border-color: #3F3F46; + border-top-color: #CC6600; + top: 0; + border-style: solid; + border-width: 1px; } + +QTabWidget::pane:disabled { + border-top-color: #3F3F46; } + +/*QTabWidget::tab-bar { }*/ +QTabBar::tab { + background-color: transparent; + padding: 4px 1em; + border: none; } + +QTabBar::tab:hover { + background-color: #e67300; } + +QTabBar::tab:selected, +QTabBar::tab:selected:hover { + background-color: #CC6600; } + +QTabBar::tab:disabled { + background-color: transparent; + color: #656565; } + +QTabBar::tab:selected:disabled { + background-color: #3F3F46; } + +/* Scrollers */ +QTabBar QToolButton { + background-color: #333337; + border-color: #3F3F46; + padding: 1px; + margin: 0; + border-style: solid; + border-width: 1px; } + +QTabBar QToolButton:hover { + border-color: #CC6600; + border-width: 1px; + border-style: solid; } + +QTabBar QToolButton:disabled, +QTabBar QToolButton:pressed:hover { + background-color: #333337; } + +/*QTabBar::tear { }*/ +QTabBar::scroller { + width: 23px; + background-color: red; } + +QTabBar QToolButton::right-arrow { + image: url(./vs15/scrollbar-right.png); } + +QTabBar QToolButton::right-arrow:hover { + image: url(./vs15/scrollbar-right-hover.png); } + +QTabBar QToolButton::left-arrow { + image: url(./vs15/scrollbar-left.png); } + +QTabBar QToolButton::left-arrow:hover { + image: url(./vs15/scrollbar-left-hover.png); } + +/* Special styles */ +/* fix margins on tabs pane */ +QLineEdit#espFilterEdit { + margin: 0 0 6px 0; } + +QTreeView#downloadView { + margin: 4px 4px 0 4px; } + +QCheckBox#showHiddenBox { + margin: 0 0 4px 4px; } + +QLineEdit#downloadFilterEdit { + margin: 0 4px 4px 0; } + +QWidget#tabImages QPushButton { + background-color: transparent; + margin: 0 .3em; + padding: 0; } + +/* like dialog QPushButton*/ +QWidget#tabESPs QToolButton { + color: #000000; + background-color: #DDDDDD; + border-color: #707070; + border-style: solid; + border-width: 1px; } + +QWidget#tabESPs QToolButton:hover { + background-color: #ffd9b3; + border-color: #db6e00; } + +QWidget#tabESPs QToolButton:focus { + background-color: #DDDDDD; + border-color: #CC6600; } + +QWidget#tabESPs QToolButton:disabled { + background-color: #333337; + border-color: #3F3F46; } + +QTreeWidget#categoriesList { + /*min-width: 225px;*/ } + +QTreeWidget#categoriesList::item { + background-position: center left; + background-repeat: no-repeat; + padding: .35em 10px; } + +QTreeWidget#categoriesList::item:has-children { + background-image: url(./vs15/branch-closed.png); } + +QTreeWidget#categoriesList::item:has-children:open { + background-image: url(./vs15/branch-open.png); } + +QDialog#QueryOverwriteDialog QPushButton { + margin-left: .5em; } + +QDialog#PyCfgDialog QPushButton:hover { + background-color: #ffd9b3; } + +QLineEdit#modFilterEdit { + margin-top: 2px; } + +/* highlight unchecked BSAs */ +QWidget#bsaTab QTreeWidget::indicator:unchecked { + background-color: #CC6600; } + +/* increase version text field */ +QLineEdit#versionEdit { + max-width: 100px; } + +/* Dialogs width changes */ +/* increase width to prevent buttons cutting */ +QDialog#QueryOverwriteDialog { + min-width: 565px; } + +QDialog#ModInfoDialog { + min-width: 850px; } diff --git a/src/stylesheets/vs15 Dark-Purple.qss b/src/stylesheets/vs15 Dark-Purple.qss new file mode 100644 index 00000000..eb2e8b82 --- /dev/null +++ b/src/stylesheets/vs15 Dark-Purple.qss @@ -0,0 +1,750 @@ +/*base*/ +/*!************************************* + VS15 Dark +**************************************** + Author: chintsu_kun + Version: 2.0.2 + Licence: GNU General Public License v3.0 (https://www.gnu.org/licenses/gpl-3.0.en.html) + Url: https://github.com/nikolay-borzov/modorganizer-themes +**************************************** +*/ +/* For some reason applying background-color or border fixes paddings properties */ +QListWidget::item { + border-width: 0; } + +/* Don't override install label on download widget. + MO2 assigns color depending on download state */ +#installLabel { + color: none; } + +/* Make `background-color` work for :hover, :focus and :pressed states */ +QToolButton { + border: none; } + +/* Main Window */ +QWidget { + background-color: #2D2D30; + color: #F1F1F1; } + QWidget::disabled { + color: #656565; } + +/* Common */ +/* remove outline */ +* { + outline: 0; } + +*:disabled, +QListView::item:disabled, +*::item:selected:disabled { + color: #656565; } + +/* line heights */ +/* QTreeView#fileTree::item - currently have problem with size column vertical + text align */ +#bsaList::item, +#dataTree::item, +QTreeView#modList::item, +QTreeWidget#categoriesTree::item, +#tabConflicts QTreeWidget::item { + padding: 0.3em 0; } + +QListView::item, +QTreeView#espList::item { + padding: 0.3em; } + +/* to enable border color */ +QTreeView, +QListView, +QTextEdit, +QWebView, +QTableView { + border-style: solid; + border-width: 1px; } + +QAbstractItemView { + color: #DCDCDC; + background-color: #1E1E1E; + alternate-background-color: #262626; + border-color: #3F3F46; } + QAbstractItemView::item:selected, QAbstractItemView::item:selected:hover { + background-color: #7E2AD2; + color: #F1F1F1; } + +QAbstractItemView, +QListView, +QTreeView { + show-decoration-selected: 1; } + +QAbstractItemView::item:hover, +QListView::item:hover, +QTreeView::branch:hover, +QTreeWidget::item:hover { + background-color: rgba(126, 42, 210, 0.3); } + +QAbstractItemView::item:selected:disabled, +QListView::item:selected:disabled, +QTreeView::branch:selected:disabled, +QTreeWidget::item:selected:disabled { + background-color: rgba(126, 42, 210, 0.3); } + +QTreeView::branch:selected { + background-color: #7E2AD2; } + +QLabel { + background-color: transparent; } + +/* Left Pane & File Trees #QTreeView, #QListView*/ +QTreeView::branch:closed:has-children { + image: url(./vs15/branch-closed.png); } + +QTreeView::branch:open:has-children { + image: url(./vs15/branch-open.png); } + +/*QListView::item:hover { } +QListView::item:selected { }*/ +QListView::item { + color: #F1F1F1; } + +/* Text areas and text fields #QTextEdit, #QLineEdit, #QWebView */ +QTextEdit, +QWebView, +QLineEdit, +QAbstractSpinBox, +QAbstractSpinBox::up-button, +QAbstractSpinBox::down-button, +QComboBox { + background-color: #333337; + border-color: #3F3F46; } + +QLineEdit:hover, +QAbstractSpinBox:hover, +QTextEdit:hover, +QComboBox:hover, +QComboBox:editable:hover { + border-color: #7E2AD2; } + +QLineEdit:focus, +QAbstractSpinBox::focus, +QTextEdit:focus, +QComboBox:focus, +QComboBox:editable:focus, +QComboBox:on { + background-color: #3F3F46; + border-color: #7E2AD2; } + +QComboBox:on { + border-bottom-color: #3F3F46; } + +QLineEdit, +QAbstractSpinBox { + min-height: 15px; + padding: 2px; + border-style: solid; + border-width: 1px; } + +QLineEdit { + margin-top: 0; } + +/* clear button */ +QLineEdit QToolButton, +QLineEdit QToolButton:hover { + background: none; + margin-top: 1px; } + +QLineEdit#espFilterEdit QToolButton { + margin-top: -2px; + margin-bottom: 1px; } + +/* Drop-downs #QComboBox*/ +QComboBox { + min-height: 20px; + padding-left: 5px; + margin: 3px 0 1px 0; + border-style: solid; + border-width: 1px; } + QComboBox:editable { + padding-left: 3px; + /* to enable hover styles */ + background-color: transparent; } + QComboBox::drop-down { + width: 20px; + subcontrol-origin: padding; + subcontrol-position: top right; + border: none; + /* If you need to set style for drop-down button + &:on, + &:editable:hover { + background-color: red; + } */ } + QComboBox::down-arrow { + image: url(./vs15/combobox-down.png); } + QComboBox QAbstractItemView { + background-color: #1B1B1C; + selection-background-color: #3F3F46; + border-color: #7E2AD2; + border-style: solid; + border-width: 0 1px 1px 1px; } + +/* doesn't work http://stackoverflow.com/questions/13308341/qcombobox-abstractitemviewitem*/ +/*QComboBox QAbstractItemView:item { + padding: 10px; + margin: 10px; +}*/ +/* Toolbar */ +QToolBar { + border: none; } + +QToolBar::separator { + border-left-color: #222222; + border-right-color: #46464A; + border-width: 0 1px 0 1px; + border-style: solid; + width: 0; } + +QToolButton { + margin: 0 4px 0 4px; + padding: 5px; } + QToolButton:hover, QToolButton:focus { + background-color: #3E3E40; } + QToolButton:pressed { + background-color: #7E2AD2; } + +/* Group Boxes #QGroupBox */ +QGroupBox { + border-color: #3F3F46; + border-style: solid; + border-width: 1px; + padding: 1em .3em .3em .3em; + margin-top: .65em; } + +QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top left; + padding: 2px; + left: 10px; } + +/* LCD Count */ +QLCDNumber { + border-color: #3F3F46; + border-style: solid; + border-width: 1px; } + +/* Buttons #QPushButton */ +QPushButton { + background-color: #333337; + border-color: #3F3F46; + min-height: 18px; + padding: 2px 5px; + border-style: solid; + border-width: 1px; } + +QPushButton:hover, +QPushButton:checked, +QPushButton:focus, +QAbstractSpinBox::up-button:hover, +QAbstractSpinBox::down-button:hover { + background-color: #7E2AD2; } + +QPushButton:pressed, +QPushButton:checked:hover, +QAbstractSpinBox::up-button:pressed, +QAbstractSpinBox::down-button:pressed { + background-color: #8b3dd8; } + +QPushButton:disabled, +QAbstractSpinBox::up-button:disabled, +QAbstractSpinBox::down-button:disabled { + background-color: #333337; + border-color: #3F3F46; } + +QPushButton::menu-indicator { + image: url(./vs15/combobox-down.png); + subcontrol-origin: padding; + subcontrol-position: center right; + padding-right: 5%; } + +/* Dialog buttons */ +QDialog QPushButton, +QSlider::handle:horizontal, +QSlider::handle:vertical { + color: #000000; + background-color: #DDDDDD; + border-color: #707070; + border-style: solid; + border-width: 1px; } + +QDialog QPushButton:hover, +QSlider::handle:horizontal:hover, +QSlider::handle:vertical:hover, +QSlider::handle:horizontal:pressed, +QSlider::handle:vertical:pressed { + background-color: #e4d2f6; + border-color: #8635d7; } + +QSlider::handle:horizontal:focus:!pressed, +QSlider::handle:vertical:focus:!pressed, +QDialog QPushButton:focus, +QDialog QPushButton:checked { + background-color: #DDDDDD; + border-color: #7E2AD2; } + +QDialog QPushButton:disabled, +QSlider::handle:horizontal:disabled, +QSlider::handle:vertical:disabled { + background-color: #333337; + border-color: #3F3F46; } + +QDialog QPushButton { + min-width: 1.5em; + padding-left: .5em; + padding-right: .5em; } + +/* Check boxes and Radio buttons common #QCheckBox, #QRadioButton */ +QGroupBox::indicator, +QTreeView::indicator, +QCheckBox::indicator, +QRadioButton::indicator { + background-color: #2D2D30; + border-color: #3F3F46; + width: 13px; + height: 13px; + border-style: solid; + border-width: 1px; } + QGroupBox::indicator:hover, + QTreeView::indicator:hover, + QCheckBox::indicator:hover, + QRadioButton::indicator:hover { + background-color: #3F3F46; + border-color: #7E2AD2; } + +QGroupBox::indicator:checked, +QTreeView::indicator:checked, +QCheckBox::indicator:checked { + image: url(./vs15/checkbox-check.png); } + +QGroupBox::indicator:disabled, +QTreeView::indicator:checked:disabled, +QCheckBox::indicator:checked:disabled { + image: url(./vs15/checkbox-check-disabled.png); } + +/* Check boxes special */ +QTreeView#modList::indicator { + width: 15px; + height: 15px; } + +/* Radio buttons #QRadioButton */ +QRadioButton::indicator { + border-radius: 7px; } + QRadioButton::indicator::checked { + background-color: #B9B9BA; + border-width: 2px; + width: 11px; + height: 11px; } + QRadioButton::indicator::checked:hover { + border-color: #3F3F46; } + +/* Spinners #QSpinBox, #QDoubleSpinBox */ +QAbstractSpinBox { + margin: 1px; } + +QAbstractSpinBox::up-button, +QAbstractSpinBox::down-button { + border-style: solid; + border-width: 1px; + subcontrol-origin: padding; } + +QAbstractSpinBox::up-button { + subcontrol-position: top right; } + +QAbstractSpinBox::up-arrow { + image: url(./vs15/spinner-up.png); } + +QAbstractSpinBox::down-button { + subcontrol-position: bottom right; } + +QAbstractSpinBox::down-arrow { + image: url(./vs15/spinner-down.png); } + +/* Sliders #QSlider */ +QSlider::groove:horizontal { + background-color: #3F3F46; + border: none; + height: 8px; + margin: 2px 0; } + +QSlider::handle:horizontal { + width: .5em; + height: 2em; + margin: -7px 0; + subcontrol-origin: margin; } + +/* Scroll Bars #QAbstractScrollArea, #QScrollBar*/ +/* assigning background still leaves not filled area*/ +QAbstractScrollArea::corner { + background-color: transparent; } + +/* Horizontal */ +QScrollBar:horizontal { + height: 18px; + border: none; + margin: 0 23px 0 23px; } + +QScrollBar::handle:horizontal { + min-width: 32px; + margin: 4px 2px; } + +QScrollBar::add-line:horizontal { + width: 23px; + subcontrol-position: right; + subcontrol-origin: margin; } + +QScrollBar::sub-line:horizontal { + width: 23px; + subcontrol-position: left; + subcontrol-origin: margin; } + +/* Vertical */ +QScrollBar:vertical { + width: 20px; + border: none; + margin: 23px 0 23px 0; } + +QScrollBar::handle:vertical { + min-height: 32px; + margin: 2px 4px; } + +QScrollBar::add-line:vertical { + height: 23px; + subcontrol-position: bottom; + subcontrol-origin: margin; } + +QScrollBar::sub-line:vertical { + height: 23px; + subcontrol-position: top; + subcontrol-origin: margin; } + +/* Combined */ +QScrollBar { + background-color: #3E3E42; + border: none; } + +QScrollBar::handle { + background-color: #686868; } + +QScrollBar::add-line, +QScrollBar::sub-line { + background-color: #3E3E42; + border: none; } + +/*QScrollBar::add-line:horizontal:hover, +QScrollBar::sub-line:horizontal:hover, +QScrollBar::add-line:vertical:hover, +QScrollBar::sub-line:vertical:hover, +QScrollBar::add-line:horizontal:pressed, +QScrollBar::sub-line:horizontal:pressed, +QScrollBar::add-line:vertical:pressed, +QScrollBar::sub-line:vertical:pressed { }*/ +QScrollBar::handle:hover { + background: #9E9E9E; } + +QScrollBar::handle:pressed { + background: #EFEBEF; } + +QScrollBar::handle:disabled { + background: #555558; } + +QScrollBar::add-page, +QScrollBar::sub-page { + background: transparent; } + +QScrollBar::up-arrow:vertical { + image: url(./vs15/scrollbar-up.png); } + +QScrollBar::up-arrow:vertical:hover { + image: url(./vs15/scrollbar-up-hover.png); } + +QScrollBar::up-arrow:vertical:disabled { + image: url(./vs15/scrollbar-up-disabled.png); } + +QScrollBar::right-arrow:horizontal { + image: url(./vs15/scrollbar-right.png); } + +QScrollBar::right-arrow:horizontal:hover { + image: url(./vs15/scrollbar-right-hover.png); } + +QScrollBar::right-arrow:horizontal:disabled { + image: url(./vs15/scrollbar-right-disabled.png); } + +QScrollBar::down-arrow:vertical { + image: url(./vs15/scrollbar-down.png); } + +QScrollBar::down-arrow:vertical:hover { + image: url(./vs15/scrollbar-down-hover.png); } + +QScrollBar::down-arrow:vertical:disabled { + image: url(./vs15/scrollbar-down-disabled.png); } + +QScrollBar::left-arrow:horizontal { + image: url(./vs15/scrollbar-left.png); } + +QScrollBar::left-arrow:horizontal:hover { + image: url(./vs15/scrollbar-left-hover.png); } + +QScrollBar::left-arrow:horizontal:disabled { + image: url(./vs15/scrollbar-left-disabled.png); } + +/* Scroll Area #QScrollArea*/ +QScrollArea { + border-color: #3F3F46; + border-style: solid; + border-width: 1px; } + +/* Header Rows and Tables (Configure Mod Categories) #QTableView, #QHeaderView */ +QTableView { + gridline-color: #3F3F46; + selection-background-color: #7E2AD2; + selection-color: #F1F1F1; } + +QTableView QTableCornerButton::section { + background: #252526; + border-color: #3F3F46; + border-style: solid; + border-width: 0 1px 1px 0; } + +QHeaderView { + border: none; } + +QHeaderView::section { + background: #252526; + border-color: #3F3F46; + padding: 3px 5px; + border-style: solid; + border-width: 0 1px 1px 0; } + +QHeaderView::section:hover { + background: #3E3E40; + color: #F6F6F6; } + +/*QHeaderView::section:first { }*/ +QHeaderView::section:last { + border-right: 0; } + +QHeaderView::up-arrow { + image: url(./vs15/sort-asc.png); + margin-bottom: -37px; } + +QTreeView#downloadView QHeaderView::up-arrow { + margin-bottom: -32px; } + +QHeaderView::down-arrow { + image: url(./vs15/sort-desc.png); + margin-bottom: 0; } + +/* Context menus, toolbar drop-downs #QMenu */ +QMenu { + background-color: #1A1A1C; + border-color: #333337; + border-style: solid; + border-width: 1px; + padding: 2px; } + +QMenu::item { + background: transparent; + padding: 4px 20px; } + +QMenu::item:selected { + background-color: #333334; } + +QMenu::item:disabled { + background-color: transparent; } + +QMenu::separator { + background-color: #333337; + height: 1px; + margin: 1px 0; } + +QMenu::icon { + margin: 1px; } + +QMenu::right-arrow { + image: url(./vs15/sub-menu-arrow.png); + subcontrol-origin: padding; + subcontrol-position: center right; + padding-right: .5em; } + +QMenu QPushButton { + background-color: transparent; + border-color: #3F3F46; + margin: 1px 0 1px 0; } + +QMenu QCheckBox, +QMenu QRadioButton { + background-color: transparent; + padding: 5px 2px; } + +/* Tool tips #QToolTip, #SaveGameInfoWidget */ +QToolTip, +SaveGameInfoWidget { + background-color: #424245; + border-color: #4D4D50; + color: #F1F1F1; + border-style: solid; + border-width: 1px; + padding: 2px; } + +/* Progress Bars (Downloads) #QProgressBar */ +QProgressBar { + background-color: #E6E6E6; + color: #000; + border-color: #BCBCBC; + text-align: center; + border-style: solid; + border-width: 1px; + margin: 0 10px; } + +QProgressBar::chunk { + background: #06B025; } + +/* Right Pane and Tab Bars #QTabWidget, #QTabBar */ +QTabWidget::pane { + border-color: #3F3F46; + border-top-color: #7E2AD2; + top: 0; + border-style: solid; + border-width: 1px; } + +QTabWidget::pane:disabled { + border-top-color: #3F3F46; } + +/*QTabWidget::tab-bar { }*/ +QTabBar::tab { + background-color: transparent; + padding: 4px 1em; + border: none; } + +QTabBar::tab:hover { + background-color: #8b3dd8; } + +QTabBar::tab:selected, +QTabBar::tab:selected:hover { + background-color: #7E2AD2; } + +QTabBar::tab:disabled { + background-color: transparent; + color: #656565; } + +QTabBar::tab:selected:disabled { + background-color: #3F3F46; } + +/* Scrollers */ +QTabBar QToolButton { + background-color: #333337; + border-color: #3F3F46; + padding: 1px; + margin: 0; + border-style: solid; + border-width: 1px; } + +QTabBar QToolButton:hover { + border-color: #7E2AD2; + border-width: 1px; + border-style: solid; } + +QTabBar QToolButton:disabled, +QTabBar QToolButton:pressed:hover { + background-color: #333337; } + +/*QTabBar::tear { }*/ +QTabBar::scroller { + width: 23px; + background-color: red; } + +QTabBar QToolButton::right-arrow { + image: url(./vs15/scrollbar-right.png); } + +QTabBar QToolButton::right-arrow:hover { + image: url(./vs15/scrollbar-right-hover.png); } + +QTabBar QToolButton::left-arrow { + image: url(./vs15/scrollbar-left.png); } + +QTabBar QToolButton::left-arrow:hover { + image: url(./vs15/scrollbar-left-hover.png); } + +/* Special styles */ +/* fix margins on tabs pane */ +QLineEdit#espFilterEdit { + margin: 0 0 6px 0; } + +QTreeView#downloadView { + margin: 4px 4px 0 4px; } + +QCheckBox#showHiddenBox { + margin: 0 0 4px 4px; } + +QLineEdit#downloadFilterEdit { + margin: 0 4px 4px 0; } + +QWidget#tabImages QPushButton { + background-color: transparent; + margin: 0 .3em; + padding: 0; } + +/* like dialog QPushButton*/ +QWidget#tabESPs QToolButton { + color: #000000; + background-color: #DDDDDD; + border-color: #707070; + border-style: solid; + border-width: 1px; } + +QWidget#tabESPs QToolButton:hover { + background-color: #e4d2f6; + border-color: #8635d7; } + +QWidget#tabESPs QToolButton:focus { + background-color: #DDDDDD; + border-color: #7E2AD2; } + +QWidget#tabESPs QToolButton:disabled { + background-color: #333337; + border-color: #3F3F46; } + +QTreeWidget#categoriesList { + /*min-width: 225px;*/ } + +QTreeWidget#categoriesList::item { + background-position: center left; + background-repeat: no-repeat; + padding: .35em 10px; } + +QTreeWidget#categoriesList::item:has-children { + background-image: url(./vs15/branch-closed.png); } + +QTreeWidget#categoriesList::item:has-children:open { + background-image: url(./vs15/branch-open.png); } + +QDialog#QueryOverwriteDialog QPushButton { + margin-left: .5em; } + +QDialog#PyCfgDialog QPushButton:hover { + background-color: #e4d2f6; } + +QLineEdit#modFilterEdit { + margin-top: 2px; } + +/* highlight unchecked BSAs */ +QWidget#bsaTab QTreeWidget::indicator:unchecked { + background-color: #7E2AD2; } + +/* increase version text field */ +QLineEdit#versionEdit { + max-width: 100px; } + +/* Dialogs width changes */ +/* increase width to prevent buttons cutting */ +QDialog#QueryOverwriteDialog { + min-width: 565px; } + +QDialog#ModInfoDialog { + min-width: 850px; } diff --git a/src/stylesheets/vs15 Dark-Red.qss b/src/stylesheets/vs15 Dark-Red.qss new file mode 100644 index 00000000..ee363e0b --- /dev/null +++ b/src/stylesheets/vs15 Dark-Red.qss @@ -0,0 +1,750 @@ +/*base*/ +/*!************************************* + VS15 Dark +**************************************** + Author: chintsu_kun + Version: 2.0.2 + Licence: GNU General Public License v3.0 (https://www.gnu.org/licenses/gpl-3.0.en.html) + Url: https://github.com/nikolay-borzov/modorganizer-themes +**************************************** +*/ +/* For some reason applying background-color or border fixes paddings properties */ +QListWidget::item { + border-width: 0; } + +/* Don't override install label on download widget. + MO2 assigns color depending on download state */ +#installLabel { + color: none; } + +/* Make `background-color` work for :hover, :focus and :pressed states */ +QToolButton { + border: none; } + +/* Main Window */ +QWidget { + background-color: #2D2D30; + color: #F1F1F1; } + QWidget::disabled { + color: #656565; } + +/* Common */ +/* remove outline */ +* { + outline: 0; } + +*:disabled, +QListView::item:disabled, +*::item:selected:disabled { + color: #656565; } + +/* line heights */ +/* QTreeView#fileTree::item - currently have problem with size column vertical + text align */ +#bsaList::item, +#dataTree::item, +QTreeView#modList::item, +QTreeWidget#categoriesTree::item, +#tabConflicts QTreeWidget::item { + padding: 0.3em 0; } + +QListView::item, +QTreeView#espList::item { + padding: 0.3em; } + +/* to enable border color */ +QTreeView, +QListView, +QTextEdit, +QWebView, +QTableView { + border-style: solid; + border-width: 1px; } + +QAbstractItemView { + color: #DCDCDC; + background-color: #1E1E1E; + alternate-background-color: #262626; + border-color: #3F3F46; } + QAbstractItemView::item:selected, QAbstractItemView::item:selected:hover { + background-color: #990000; + color: #F1F1F1; } + +QAbstractItemView, +QListView, +QTreeView { + show-decoration-selected: 1; } + +QAbstractItemView::item:hover, +QListView::item:hover, +QTreeView::branch:hover, +QTreeWidget::item:hover { + background-color: rgba(153, 0, 0, 0.3); } + +QAbstractItemView::item:selected:disabled, +QListView::item:selected:disabled, +QTreeView::branch:selected:disabled, +QTreeWidget::item:selected:disabled { + background-color: rgba(153, 0, 0, 0.3); } + +QTreeView::branch:selected { + background-color: #990000; } + +QLabel { + background-color: transparent; } + +/* Left Pane & File Trees #QTreeView, #QListView*/ +QTreeView::branch:closed:has-children { + image: url(./vs15/branch-closed.png); } + +QTreeView::branch:open:has-children { + image: url(./vs15/branch-open.png); } + +/*QListView::item:hover { } +QListView::item:selected { }*/ +QListView::item { + color: #F1F1F1; } + +/* Text areas and text fields #QTextEdit, #QLineEdit, #QWebView */ +QTextEdit, +QWebView, +QLineEdit, +QAbstractSpinBox, +QAbstractSpinBox::up-button, +QAbstractSpinBox::down-button, +QComboBox { + background-color: #333337; + border-color: #3F3F46; } + +QLineEdit:hover, +QAbstractSpinBox:hover, +QTextEdit:hover, +QComboBox:hover, +QComboBox:editable:hover { + border-color: #990000; } + +QLineEdit:focus, +QAbstractSpinBox::focus, +QTextEdit:focus, +QComboBox:focus, +QComboBox:editable:focus, +QComboBox:on { + background-color: #3F3F46; + border-color: #990000; } + +QComboBox:on { + border-bottom-color: #3F3F46; } + +QLineEdit, +QAbstractSpinBox { + min-height: 15px; + padding: 2px; + border-style: solid; + border-width: 1px; } + +QLineEdit { + margin-top: 0; } + +/* clear button */ +QLineEdit QToolButton, +QLineEdit QToolButton:hover { + background: none; + margin-top: 1px; } + +QLineEdit#espFilterEdit QToolButton { + margin-top: -2px; + margin-bottom: 1px; } + +/* Drop-downs #QComboBox*/ +QComboBox { + min-height: 20px; + padding-left: 5px; + margin: 3px 0 1px 0; + border-style: solid; + border-width: 1px; } + QComboBox:editable { + padding-left: 3px; + /* to enable hover styles */ + background-color: transparent; } + QComboBox::drop-down { + width: 20px; + subcontrol-origin: padding; + subcontrol-position: top right; + border: none; + /* If you need to set style for drop-down button + &:on, + &:editable:hover { + background-color: red; + } */ } + QComboBox::down-arrow { + image: url(./vs15/combobox-down.png); } + QComboBox QAbstractItemView { + background-color: #1B1B1C; + selection-background-color: #3F3F46; + border-color: #990000; + border-style: solid; + border-width: 0 1px 1px 1px; } + +/* doesn't work http://stackoverflow.com/questions/13308341/qcombobox-abstractitemviewitem*/ +/*QComboBox QAbstractItemView:item { + padding: 10px; + margin: 10px; +}*/ +/* Toolbar */ +QToolBar { + border: none; } + +QToolBar::separator { + border-left-color: #222222; + border-right-color: #46464A; + border-width: 0 1px 0 1px; + border-style: solid; + width: 0; } + +QToolButton { + margin: 0 4px 0 4px; + padding: 5px; } + QToolButton:hover, QToolButton:focus { + background-color: #3E3E40; } + QToolButton:pressed { + background-color: #990000; } + +/* Group Boxes #QGroupBox */ +QGroupBox { + border-color: #3F3F46; + border-style: solid; + border-width: 1px; + padding: 1em .3em .3em .3em; + margin-top: .65em; } + +QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top left; + padding: 2px; + left: 10px; } + +/* LCD Count */ +QLCDNumber { + border-color: #3F3F46; + border-style: solid; + border-width: 1px; } + +/* Buttons #QPushButton */ +QPushButton { + background-color: #333337; + border-color: #3F3F46; + min-height: 18px; + padding: 2px 5px; + border-style: solid; + border-width: 1px; } + +QPushButton:hover, +QPushButton:checked, +QPushButton:focus, +QAbstractSpinBox::up-button:hover, +QAbstractSpinBox::down-button:hover { + background-color: #990000; } + +QPushButton:pressed, +QPushButton:checked:hover, +QAbstractSpinBox::up-button:pressed, +QAbstractSpinBox::down-button:pressed { + background-color: #b30000; } + +QPushButton:disabled, +QAbstractSpinBox::up-button:disabled, +QAbstractSpinBox::down-button:disabled { + background-color: #333337; + border-color: #3F3F46; } + +QPushButton::menu-indicator { + image: url(./vs15/combobox-down.png); + subcontrol-origin: padding; + subcontrol-position: center right; + padding-right: 5%; } + +/* Dialog buttons */ +QDialog QPushButton, +QSlider::handle:horizontal, +QSlider::handle:vertical { + color: #000000; + background-color: #DDDDDD; + border-color: #707070; + border-style: solid; + border-width: 1px; } + +QDialog QPushButton:hover, +QSlider::handle:horizontal:hover, +QSlider::handle:vertical:hover, +QSlider::handle:horizontal:pressed, +QSlider::handle:vertical:pressed { + background-color: #ffcccc; + border-color: #a80000; } + +QSlider::handle:horizontal:focus:!pressed, +QSlider::handle:vertical:focus:!pressed, +QDialog QPushButton:focus, +QDialog QPushButton:checked { + background-color: #DDDDDD; + border-color: #990000; } + +QDialog QPushButton:disabled, +QSlider::handle:horizontal:disabled, +QSlider::handle:vertical:disabled { + background-color: #333337; + border-color: #3F3F46; } + +QDialog QPushButton { + min-width: 1.5em; + padding-left: .5em; + padding-right: .5em; } + +/* Check boxes and Radio buttons common #QCheckBox, #QRadioButton */ +QGroupBox::indicator, +QTreeView::indicator, +QCheckBox::indicator, +QRadioButton::indicator { + background-color: #2D2D30; + border-color: #3F3F46; + width: 13px; + height: 13px; + border-style: solid; + border-width: 1px; } + QGroupBox::indicator:hover, + QTreeView::indicator:hover, + QCheckBox::indicator:hover, + QRadioButton::indicator:hover { + background-color: #3F3F46; + border-color: #990000; } + +QGroupBox::indicator:checked, +QTreeView::indicator:checked, +QCheckBox::indicator:checked { + image: url(./vs15/checkbox-check.png); } + +QGroupBox::indicator:disabled, +QTreeView::indicator:checked:disabled, +QCheckBox::indicator:checked:disabled { + image: url(./vs15/checkbox-check-disabled.png); } + +/* Check boxes special */ +QTreeView#modList::indicator { + width: 15px; + height: 15px; } + +/* Radio buttons #QRadioButton */ +QRadioButton::indicator { + border-radius: 7px; } + QRadioButton::indicator::checked { + background-color: #B9B9BA; + border-width: 2px; + width: 11px; + height: 11px; } + QRadioButton::indicator::checked:hover { + border-color: #3F3F46; } + +/* Spinners #QSpinBox, #QDoubleSpinBox */ +QAbstractSpinBox { + margin: 1px; } + +QAbstractSpinBox::up-button, +QAbstractSpinBox::down-button { + border-style: solid; + border-width: 1px; + subcontrol-origin: padding; } + +QAbstractSpinBox::up-button { + subcontrol-position: top right; } + +QAbstractSpinBox::up-arrow { + image: url(./vs15/spinner-up.png); } + +QAbstractSpinBox::down-button { + subcontrol-position: bottom right; } + +QAbstractSpinBox::down-arrow { + image: url(./vs15/spinner-down.png); } + +/* Sliders #QSlider */ +QSlider::groove:horizontal { + background-color: #3F3F46; + border: none; + height: 8px; + margin: 2px 0; } + +QSlider::handle:horizontal { + width: .5em; + height: 2em; + margin: -7px 0; + subcontrol-origin: margin; } + +/* Scroll Bars #QAbstractScrollArea, #QScrollBar*/ +/* assigning background still leaves not filled area*/ +QAbstractScrollArea::corner { + background-color: transparent; } + +/* Horizontal */ +QScrollBar:horizontal { + height: 18px; + border: none; + margin: 0 23px 0 23px; } + +QScrollBar::handle:horizontal { + min-width: 32px; + margin: 4px 2px; } + +QScrollBar::add-line:horizontal { + width: 23px; + subcontrol-position: right; + subcontrol-origin: margin; } + +QScrollBar::sub-line:horizontal { + width: 23px; + subcontrol-position: left; + subcontrol-origin: margin; } + +/* Vertical */ +QScrollBar:vertical { + width: 20px; + border: none; + margin: 23px 0 23px 0; } + +QScrollBar::handle:vertical { + min-height: 32px; + margin: 2px 4px; } + +QScrollBar::add-line:vertical { + height: 23px; + subcontrol-position: bottom; + subcontrol-origin: margin; } + +QScrollBar::sub-line:vertical { + height: 23px; + subcontrol-position: top; + subcontrol-origin: margin; } + +/* Combined */ +QScrollBar { + background-color: #3E3E42; + border: none; } + +QScrollBar::handle { + background-color: #686868; } + +QScrollBar::add-line, +QScrollBar::sub-line { + background-color: #3E3E42; + border: none; } + +/*QScrollBar::add-line:horizontal:hover, +QScrollBar::sub-line:horizontal:hover, +QScrollBar::add-line:vertical:hover, +QScrollBar::sub-line:vertical:hover, +QScrollBar::add-line:horizontal:pressed, +QScrollBar::sub-line:horizontal:pressed, +QScrollBar::add-line:vertical:pressed, +QScrollBar::sub-line:vertical:pressed { }*/ +QScrollBar::handle:hover { + background: #9E9E9E; } + +QScrollBar::handle:pressed { + background: #EFEBEF; } + +QScrollBar::handle:disabled { + background: #555558; } + +QScrollBar::add-page, +QScrollBar::sub-page { + background: transparent; } + +QScrollBar::up-arrow:vertical { + image: url(./vs15/scrollbar-up.png); } + +QScrollBar::up-arrow:vertical:hover { + image: url(./vs15/scrollbar-up-hover.png); } + +QScrollBar::up-arrow:vertical:disabled { + image: url(./vs15/scrollbar-up-disabled.png); } + +QScrollBar::right-arrow:horizontal { + image: url(./vs15/scrollbar-right.png); } + +QScrollBar::right-arrow:horizontal:hover { + image: url(./vs15/scrollbar-right-hover.png); } + +QScrollBar::right-arrow:horizontal:disabled { + image: url(./vs15/scrollbar-right-disabled.png); } + +QScrollBar::down-arrow:vertical { + image: url(./vs15/scrollbar-down.png); } + +QScrollBar::down-arrow:vertical:hover { + image: url(./vs15/scrollbar-down-hover.png); } + +QScrollBar::down-arrow:vertical:disabled { + image: url(./vs15/scrollbar-down-disabled.png); } + +QScrollBar::left-arrow:horizontal { + image: url(./vs15/scrollbar-left.png); } + +QScrollBar::left-arrow:horizontal:hover { + image: url(./vs15/scrollbar-left-hover.png); } + +QScrollBar::left-arrow:horizontal:disabled { + image: url(./vs15/scrollbar-left-disabled.png); } + +/* Scroll Area #QScrollArea*/ +QScrollArea { + border-color: #3F3F46; + border-style: solid; + border-width: 1px; } + +/* Header Rows and Tables (Configure Mod Categories) #QTableView, #QHeaderView */ +QTableView { + gridline-color: #3F3F46; + selection-background-color: #990000; + selection-color: #F1F1F1; } + +QTableView QTableCornerButton::section { + background: #252526; + border-color: #3F3F46; + border-style: solid; + border-width: 0 1px 1px 0; } + +QHeaderView { + border: none; } + +QHeaderView::section { + background: #252526; + border-color: #3F3F46; + padding: 3px 5px; + border-style: solid; + border-width: 0 1px 1px 0; } + +QHeaderView::section:hover { + background: #3E3E40; + color: #F6F6F6; } + +/*QHeaderView::section:first { }*/ +QHeaderView::section:last { + border-right: 0; } + +QHeaderView::up-arrow { + image: url(./vs15/sort-asc.png); + margin-bottom: -37px; } + +QTreeView#downloadView QHeaderView::up-arrow { + margin-bottom: -32px; } + +QHeaderView::down-arrow { + image: url(./vs15/sort-desc.png); + margin-bottom: 0; } + +/* Context menus, toolbar drop-downs #QMenu */ +QMenu { + background-color: #1A1A1C; + border-color: #333337; + border-style: solid; + border-width: 1px; + padding: 2px; } + +QMenu::item { + background: transparent; + padding: 4px 20px; } + +QMenu::item:selected { + background-color: #333334; } + +QMenu::item:disabled { + background-color: transparent; } + +QMenu::separator { + background-color: #333337; + height: 1px; + margin: 1px 0; } + +QMenu::icon { + margin: 1px; } + +QMenu::right-arrow { + image: url(./vs15/sub-menu-arrow.png); + subcontrol-origin: padding; + subcontrol-position: center right; + padding-right: .5em; } + +QMenu QPushButton { + background-color: transparent; + border-color: #3F3F46; + margin: 1px 0 1px 0; } + +QMenu QCheckBox, +QMenu QRadioButton { + background-color: transparent; + padding: 5px 2px; } + +/* Tool tips #QToolTip, #SaveGameInfoWidget */ +QToolTip, +SaveGameInfoWidget { + background-color: #424245; + border-color: #4D4D50; + color: #F1F1F1; + border-style: solid; + border-width: 1px; + padding: 2px; } + +/* Progress Bars (Downloads) #QProgressBar */ +QProgressBar { + background-color: #E6E6E6; + color: #000; + border-color: #BCBCBC; + text-align: center; + border-style: solid; + border-width: 1px; + margin: 0 10px; } + +QProgressBar::chunk { + background: #06B025; } + +/* Right Pane and Tab Bars #QTabWidget, #QTabBar */ +QTabWidget::pane { + border-color: #3F3F46; + border-top-color: #990000; + top: 0; + border-style: solid; + border-width: 1px; } + +QTabWidget::pane:disabled { + border-top-color: #3F3F46; } + +/*QTabWidget::tab-bar { }*/ +QTabBar::tab { + background-color: transparent; + padding: 4px 1em; + border: none; } + +QTabBar::tab:hover { + background-color: #b30000; } + +QTabBar::tab:selected, +QTabBar::tab:selected:hover { + background-color: #990000; } + +QTabBar::tab:disabled { + background-color: transparent; + color: #656565; } + +QTabBar::tab:selected:disabled { + background-color: #3F3F46; } + +/* Scrollers */ +QTabBar QToolButton { + background-color: #333337; + border-color: #3F3F46; + padding: 1px; + margin: 0; + border-style: solid; + border-width: 1px; } + +QTabBar QToolButton:hover { + border-color: #990000; + border-width: 1px; + border-style: solid; } + +QTabBar QToolButton:disabled, +QTabBar QToolButton:pressed:hover { + background-color: #333337; } + +/*QTabBar::tear { }*/ +QTabBar::scroller { + width: 23px; + background-color: red; } + +QTabBar QToolButton::right-arrow { + image: url(./vs15/scrollbar-right.png); } + +QTabBar QToolButton::right-arrow:hover { + image: url(./vs15/scrollbar-right-hover.png); } + +QTabBar QToolButton::left-arrow { + image: url(./vs15/scrollbar-left.png); } + +QTabBar QToolButton::left-arrow:hover { + image: url(./vs15/scrollbar-left-hover.png); } + +/* Special styles */ +/* fix margins on tabs pane */ +QLineEdit#espFilterEdit { + margin: 0 0 6px 0; } + +QTreeView#downloadView { + margin: 4px 4px 0 4px; } + +QCheckBox#showHiddenBox { + margin: 0 0 4px 4px; } + +QLineEdit#downloadFilterEdit { + margin: 0 4px 4px 0; } + +QWidget#tabImages QPushButton { + background-color: transparent; + margin: 0 .3em; + padding: 0; } + +/* like dialog QPushButton*/ +QWidget#tabESPs QToolButton { + color: #000000; + background-color: #DDDDDD; + border-color: #707070; + border-style: solid; + border-width: 1px; } + +QWidget#tabESPs QToolButton:hover { + background-color: #ffcccc; + border-color: #a80000; } + +QWidget#tabESPs QToolButton:focus { + background-color: #DDDDDD; + border-color: #990000; } + +QWidget#tabESPs QToolButton:disabled { + background-color: #333337; + border-color: #3F3F46; } + +QTreeWidget#categoriesList { + /*min-width: 225px;*/ } + +QTreeWidget#categoriesList::item { + background-position: center left; + background-repeat: no-repeat; + padding: .35em 10px; } + +QTreeWidget#categoriesList::item:has-children { + background-image: url(./vs15/branch-closed.png); } + +QTreeWidget#categoriesList::item:has-children:open { + background-image: url(./vs15/branch-open.png); } + +QDialog#QueryOverwriteDialog QPushButton { + margin-left: .5em; } + +QDialog#PyCfgDialog QPushButton:hover { + background-color: #ffcccc; } + +QLineEdit#modFilterEdit { + margin-top: 2px; } + +/* highlight unchecked BSAs */ +QWidget#bsaTab QTreeWidget::indicator:unchecked { + background-color: #990000; } + +/* increase version text field */ +QLineEdit#versionEdit { + max-width: 100px; } + +/* Dialogs width changes */ +/* increase width to prevent buttons cutting */ +QDialog#QueryOverwriteDialog { + min-width: 565px; } + +QDialog#ModInfoDialog { + min-width: 850px; } diff --git a/src/stylesheets/vs15 Dark-Yellow.qss b/src/stylesheets/vs15 Dark-Yellow.qss new file mode 100644 index 00000000..08dbe758 --- /dev/null +++ b/src/stylesheets/vs15 Dark-Yellow.qss @@ -0,0 +1,750 @@ +/*base*/ +/*!************************************* + VS15 Dark +**************************************** + Author: chintsu_kun + Version: 2.0.2 + Licence: GNU General Public License v3.0 (https://www.gnu.org/licenses/gpl-3.0.en.html) + Url: https://github.com/nikolay-borzov/modorganizer-themes +**************************************** +*/ +/* For some reason applying background-color or border fixes paddings properties */ +QListWidget::item { + border-width: 0; } + +/* Don't override install label on download widget. + MO2 assigns color depending on download state */ +#installLabel { + color: none; } + +/* Make `background-color` work for :hover, :focus and :pressed states */ +QToolButton { + border: none; } + +/* Main Window */ +QWidget { + background-color: #2D2D30; + color: #F1F1F1; } + QWidget::disabled { + color: #656565; } + +/* Common */ +/* remove outline */ +* { + outline: 0; } + +*:disabled, +QListView::item:disabled, +*::item:selected:disabled { + color: #656565; } + +/* line heights */ +/* QTreeView#fileTree::item - currently have problem with size column vertical + text align */ +#bsaList::item, +#dataTree::item, +QTreeView#modList::item, +QTreeWidget#categoriesTree::item, +#tabConflicts QTreeWidget::item { + padding: 0.3em 0; } + +QListView::item, +QTreeView#espList::item { + padding: 0.3em; } + +/* to enable border color */ +QTreeView, +QListView, +QTextEdit, +QWebView, +QTableView { + border-style: solid; + border-width: 1px; } + +QAbstractItemView { + color: #DCDCDC; + background-color: #1E1E1E; + alternate-background-color: #262626; + border-color: #3F3F46; } + QAbstractItemView::item:selected, QAbstractItemView::item:selected:hover { + background-color: #9A9A00; + color: #F1F1F1; } + +QAbstractItemView, +QListView, +QTreeView { + show-decoration-selected: 1; } + +QAbstractItemView::item:hover, +QListView::item:hover, +QTreeView::branch:hover, +QTreeWidget::item:hover { + background-color: rgba(154, 154, 0, 0.3); } + +QAbstractItemView::item:selected:disabled, +QListView::item:selected:disabled, +QTreeView::branch:selected:disabled, +QTreeWidget::item:selected:disabled { + background-color: rgba(154, 154, 0, 0.3); } + +QTreeView::branch:selected { + background-color: #9A9A00; } + +QLabel { + background-color: transparent; } + +/* Left Pane & File Trees #QTreeView, #QListView*/ +QTreeView::branch:closed:has-children { + image: url(./vs15/branch-closed.png); } + +QTreeView::branch:open:has-children { + image: url(./vs15/branch-open.png); } + +/*QListView::item:hover { } +QListView::item:selected { }*/ +QListView::item { + color: #F1F1F1; } + +/* Text areas and text fields #QTextEdit, #QLineEdit, #QWebView */ +QTextEdit, +QWebView, +QLineEdit, +QAbstractSpinBox, +QAbstractSpinBox::up-button, +QAbstractSpinBox::down-button, +QComboBox { + background-color: #333337; + border-color: #3F3F46; } + +QLineEdit:hover, +QAbstractSpinBox:hover, +QTextEdit:hover, +QComboBox:hover, +QComboBox:editable:hover { + border-color: #9A9A00; } + +QLineEdit:focus, +QAbstractSpinBox::focus, +QTextEdit:focus, +QComboBox:focus, +QComboBox:editable:focus, +QComboBox:on { + background-color: #3F3F46; + border-color: #9A9A00; } + +QComboBox:on { + border-bottom-color: #3F3F46; } + +QLineEdit, +QAbstractSpinBox { + min-height: 15px; + padding: 2px; + border-style: solid; + border-width: 1px; } + +QLineEdit { + margin-top: 0; } + +/* clear button */ +QLineEdit QToolButton, +QLineEdit QToolButton:hover { + background: none; + margin-top: 1px; } + +QLineEdit#espFilterEdit QToolButton { + margin-top: -2px; + margin-bottom: 1px; } + +/* Drop-downs #QComboBox*/ +QComboBox { + min-height: 20px; + padding-left: 5px; + margin: 3px 0 1px 0; + border-style: solid; + border-width: 1px; } + QComboBox:editable { + padding-left: 3px; + /* to enable hover styles */ + background-color: transparent; } + QComboBox::drop-down { + width: 20px; + subcontrol-origin: padding; + subcontrol-position: top right; + border: none; + /* If you need to set style for drop-down button + &:on, + &:editable:hover { + background-color: red; + } */ } + QComboBox::down-arrow { + image: url(./vs15/combobox-down.png); } + QComboBox QAbstractItemView { + background-color: #1B1B1C; + selection-background-color: #3F3F46; + border-color: #9A9A00; + border-style: solid; + border-width: 0 1px 1px 1px; } + +/* doesn't work http://stackoverflow.com/questions/13308341/qcombobox-abstractitemviewitem*/ +/*QComboBox QAbstractItemView:item { + padding: 10px; + margin: 10px; +}*/ +/* Toolbar */ +QToolBar { + border: none; } + +QToolBar::separator { + border-left-color: #222222; + border-right-color: #46464A; + border-width: 0 1px 0 1px; + border-style: solid; + width: 0; } + +QToolButton { + margin: 0 4px 0 4px; + padding: 5px; } + QToolButton:hover, QToolButton:focus { + background-color: #3E3E40; } + QToolButton:pressed { + background-color: #9A9A00; } + +/* Group Boxes #QGroupBox */ +QGroupBox { + border-color: #3F3F46; + border-style: solid; + border-width: 1px; + padding: 1em .3em .3em .3em; + margin-top: .65em; } + +QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top left; + padding: 2px; + left: 10px; } + +/* LCD Count */ +QLCDNumber { + border-color: #3F3F46; + border-style: solid; + border-width: 1px; } + +/* Buttons #QPushButton */ +QPushButton { + background-color: #333337; + border-color: #3F3F46; + min-height: 18px; + padding: 2px 5px; + border-style: solid; + border-width: 1px; } + +QPushButton:hover, +QPushButton:checked, +QPushButton:focus, +QAbstractSpinBox::up-button:hover, +QAbstractSpinBox::down-button:hover { + background-color: #9A9A00; } + +QPushButton:pressed, +QPushButton:checked:hover, +QAbstractSpinBox::up-button:pressed, +QAbstractSpinBox::down-button:pressed { + background-color: #b4b400; } + +QPushButton:disabled, +QAbstractSpinBox::up-button:disabled, +QAbstractSpinBox::down-button:disabled { + background-color: #333337; + border-color: #3F3F46; } + +QPushButton::menu-indicator { + image: url(./vs15/combobox-down.png); + subcontrol-origin: padding; + subcontrol-position: center right; + padding-right: 5%; } + +/* Dialog buttons */ +QDialog QPushButton, +QSlider::handle:horizontal, +QSlider::handle:vertical { + color: #000000; + background-color: #DDDDDD; + border-color: #707070; + border-style: solid; + border-width: 1px; } + +QDialog QPushButton:hover, +QSlider::handle:horizontal:hover, +QSlider::handle:vertical:hover, +QSlider::handle:horizontal:pressed, +QSlider::handle:vertical:pressed { + background-color: #ffffe7; + border-color: #a9a900; } + +QSlider::handle:horizontal:focus:!pressed, +QSlider::handle:vertical:focus:!pressed, +QDialog QPushButton:focus, +QDialog QPushButton:checked { + background-color: #DDDDDD; + border-color: #9A9A00; } + +QDialog QPushButton:disabled, +QSlider::handle:horizontal:disabled, +QSlider::handle:vertical:disabled { + background-color: #333337; + border-color: #3F3F46; } + +QDialog QPushButton { + min-width: 1.5em; + padding-left: .5em; + padding-right: .5em; } + +/* Check boxes and Radio buttons common #QCheckBox, #QRadioButton */ +QGroupBox::indicator, +QTreeView::indicator, +QCheckBox::indicator, +QRadioButton::indicator { + background-color: #2D2D30; + border-color: #3F3F46; + width: 13px; + height: 13px; + border-style: solid; + border-width: 1px; } + QGroupBox::indicator:hover, + QTreeView::indicator:hover, + QCheckBox::indicator:hover, + QRadioButton::indicator:hover { + background-color: #3F3F46; + border-color: #9A9A00; } + +QGroupBox::indicator:checked, +QTreeView::indicator:checked, +QCheckBox::indicator:checked { + image: url(./vs15/checkbox-check.png); } + +QGroupBox::indicator:disabled, +QTreeView::indicator:checked:disabled, +QCheckBox::indicator:checked:disabled { + image: url(./vs15/checkbox-check-disabled.png); } + +/* Check boxes special */ +QTreeView#modList::indicator { + width: 15px; + height: 15px; } + +/* Radio buttons #QRadioButton */ +QRadioButton::indicator { + border-radius: 7px; } + QRadioButton::indicator::checked { + background-color: #B9B9BA; + border-width: 2px; + width: 11px; + height: 11px; } + QRadioButton::indicator::checked:hover { + border-color: #3F3F46; } + +/* Spinners #QSpinBox, #QDoubleSpinBox */ +QAbstractSpinBox { + margin: 1px; } + +QAbstractSpinBox::up-button, +QAbstractSpinBox::down-button { + border-style: solid; + border-width: 1px; + subcontrol-origin: padding; } + +QAbstractSpinBox::up-button { + subcontrol-position: top right; } + +QAbstractSpinBox::up-arrow { + image: url(./vs15/spinner-up.png); } + +QAbstractSpinBox::down-button { + subcontrol-position: bottom right; } + +QAbstractSpinBox::down-arrow { + image: url(./vs15/spinner-down.png); } + +/* Sliders #QSlider */ +QSlider::groove:horizontal { + background-color: #3F3F46; + border: none; + height: 8px; + margin: 2px 0; } + +QSlider::handle:horizontal { + width: .5em; + height: 2em; + margin: -7px 0; + subcontrol-origin: margin; } + +/* Scroll Bars #QAbstractScrollArea, #QScrollBar*/ +/* assigning background still leaves not filled area*/ +QAbstractScrollArea::corner { + background-color: transparent; } + +/* Horizontal */ +QScrollBar:horizontal { + height: 18px; + border: none; + margin: 0 23px 0 23px; } + +QScrollBar::handle:horizontal { + min-width: 32px; + margin: 4px 2px; } + +QScrollBar::add-line:horizontal { + width: 23px; + subcontrol-position: right; + subcontrol-origin: margin; } + +QScrollBar::sub-line:horizontal { + width: 23px; + subcontrol-position: left; + subcontrol-origin: margin; } + +/* Vertical */ +QScrollBar:vertical { + width: 20px; + border: none; + margin: 23px 0 23px 0; } + +QScrollBar::handle:vertical { + min-height: 32px; + margin: 2px 4px; } + +QScrollBar::add-line:vertical { + height: 23px; + subcontrol-position: bottom; + subcontrol-origin: margin; } + +QScrollBar::sub-line:vertical { + height: 23px; + subcontrol-position: top; + subcontrol-origin: margin; } + +/* Combined */ +QScrollBar { + background-color: #3E3E42; + border: none; } + +QScrollBar::handle { + background-color: #686868; } + +QScrollBar::add-line, +QScrollBar::sub-line { + background-color: #3E3E42; + border: none; } + +/*QScrollBar::add-line:horizontal:hover, +QScrollBar::sub-line:horizontal:hover, +QScrollBar::add-line:vertical:hover, +QScrollBar::sub-line:vertical:hover, +QScrollBar::add-line:horizontal:pressed, +QScrollBar::sub-line:horizontal:pressed, +QScrollBar::add-line:vertical:pressed, +QScrollBar::sub-line:vertical:pressed { }*/ +QScrollBar::handle:hover { + background: #9E9E9E; } + +QScrollBar::handle:pressed { + background: #EFEBEF; } + +QScrollBar::handle:disabled { + background: #555558; } + +QScrollBar::add-page, +QScrollBar::sub-page { + background: transparent; } + +QScrollBar::up-arrow:vertical { + image: url(./vs15/scrollbar-up.png); } + +QScrollBar::up-arrow:vertical:hover { + image: url(./vs15/scrollbar-up-hover.png); } + +QScrollBar::up-arrow:vertical:disabled { + image: url(./vs15/scrollbar-up-disabled.png); } + +QScrollBar::right-arrow:horizontal { + image: url(./vs15/scrollbar-right.png); } + +QScrollBar::right-arrow:horizontal:hover { + image: url(./vs15/scrollbar-right-hover.png); } + +QScrollBar::right-arrow:horizontal:disabled { + image: url(./vs15/scrollbar-right-disabled.png); } + +QScrollBar::down-arrow:vertical { + image: url(./vs15/scrollbar-down.png); } + +QScrollBar::down-arrow:vertical:hover { + image: url(./vs15/scrollbar-down-hover.png); } + +QScrollBar::down-arrow:vertical:disabled { + image: url(./vs15/scrollbar-down-disabled.png); } + +QScrollBar::left-arrow:horizontal { + image: url(./vs15/scrollbar-left.png); } + +QScrollBar::left-arrow:horizontal:hover { + image: url(./vs15/scrollbar-left-hover.png); } + +QScrollBar::left-arrow:horizontal:disabled { + image: url(./vs15/scrollbar-left-disabled.png); } + +/* Scroll Area #QScrollArea*/ +QScrollArea { + border-color: #3F3F46; + border-style: solid; + border-width: 1px; } + +/* Header Rows and Tables (Configure Mod Categories) #QTableView, #QHeaderView */ +QTableView { + gridline-color: #3F3F46; + selection-background-color: #9A9A00; + selection-color: #F1F1F1; } + +QTableView QTableCornerButton::section { + background: #252526; + border-color: #3F3F46; + border-style: solid; + border-width: 0 1px 1px 0; } + +QHeaderView { + border: none; } + +QHeaderView::section { + background: #252526; + border-color: #3F3F46; + padding: 3px 5px; + border-style: solid; + border-width: 0 1px 1px 0; } + +QHeaderView::section:hover { + background: #3E3E40; + color: #F6F6F6; } + +/*QHeaderView::section:first { }*/ +QHeaderView::section:last { + border-right: 0; } + +QHeaderView::up-arrow { + image: url(./vs15/sort-asc.png); + margin-bottom: -37px; } + +QTreeView#downloadView QHeaderView::up-arrow { + margin-bottom: -32px; } + +QHeaderView::down-arrow { + image: url(./vs15/sort-desc.png); + margin-bottom: 0; } + +/* Context menus, toolbar drop-downs #QMenu */ +QMenu { + background-color: #1A1A1C; + border-color: #333337; + border-style: solid; + border-width: 1px; + padding: 2px; } + +QMenu::item { + background: transparent; + padding: 4px 20px; } + +QMenu::item:selected { + background-color: #333334; } + +QMenu::item:disabled { + background-color: transparent; } + +QMenu::separator { + background-color: #333337; + height: 1px; + margin: 1px 0; } + +QMenu::icon { + margin: 1px; } + +QMenu::right-arrow { + image: url(./vs15/sub-menu-arrow.png); + subcontrol-origin: padding; + subcontrol-position: center right; + padding-right: .5em; } + +QMenu QPushButton { + background-color: transparent; + border-color: #3F3F46; + margin: 1px 0 1px 0; } + +QMenu QCheckBox, +QMenu QRadioButton { + background-color: transparent; + padding: 5px 2px; } + +/* Tool tips #QToolTip, #SaveGameInfoWidget */ +QToolTip, +SaveGameInfoWidget { + background-color: #424245; + border-color: #4D4D50; + color: #F1F1F1; + border-style: solid; + border-width: 1px; + padding: 2px; } + +/* Progress Bars (Downloads) #QProgressBar */ +QProgressBar { + background-color: #E6E6E6; + color: #000; + border-color: #BCBCBC; + text-align: center; + border-style: solid; + border-width: 1px; + margin: 0 10px; } + +QProgressBar::chunk { + background: #06B025; } + +/* Right Pane and Tab Bars #QTabWidget, #QTabBar */ +QTabWidget::pane { + border-color: #3F3F46; + border-top-color: #9A9A00; + top: 0; + border-style: solid; + border-width: 1px; } + +QTabWidget::pane:disabled { + border-top-color: #3F3F46; } + +/*QTabWidget::tab-bar { }*/ +QTabBar::tab { + background-color: transparent; + padding: 4px 1em; + border: none; } + +QTabBar::tab:hover { + background-color: #b4b400; } + +QTabBar::tab:selected, +QTabBar::tab:selected:hover { + background-color: #9A9A00; } + +QTabBar::tab:disabled { + background-color: transparent; + color: #656565; } + +QTabBar::tab:selected:disabled { + background-color: #3F3F46; } + +/* Scrollers */ +QTabBar QToolButton { + background-color: #333337; + border-color: #3F3F46; + padding: 1px; + margin: 0; + border-style: solid; + border-width: 1px; } + +QTabBar QToolButton:hover { + border-color: #9A9A00; + border-width: 1px; + border-style: solid; } + +QTabBar QToolButton:disabled, +QTabBar QToolButton:pressed:hover { + background-color: #333337; } + +/*QTabBar::tear { }*/ +QTabBar::scroller { + width: 23px; + background-color: red; } + +QTabBar QToolButton::right-arrow { + image: url(./vs15/scrollbar-right.png); } + +QTabBar QToolButton::right-arrow:hover { + image: url(./vs15/scrollbar-right-hover.png); } + +QTabBar QToolButton::left-arrow { + image: url(./vs15/scrollbar-left.png); } + +QTabBar QToolButton::left-arrow:hover { + image: url(./vs15/scrollbar-left-hover.png); } + +/* Special styles */ +/* fix margins on tabs pane */ +QLineEdit#espFilterEdit { + margin: 0 0 6px 0; } + +QTreeView#downloadView { + margin: 4px 4px 0 4px; } + +QCheckBox#showHiddenBox { + margin: 0 0 4px 4px; } + +QLineEdit#downloadFilterEdit { + margin: 0 4px 4px 0; } + +QWidget#tabImages QPushButton { + background-color: transparent; + margin: 0 .3em; + padding: 0; } + +/* like dialog QPushButton*/ +QWidget#tabESPs QToolButton { + color: #000000; + background-color: #DDDDDD; + border-color: #707070; + border-style: solid; + border-width: 1px; } + +QWidget#tabESPs QToolButton:hover { + background-color: #ffffe7; + border-color: #a9a900; } + +QWidget#tabESPs QToolButton:focus { + background-color: #DDDDDD; + border-color: #9A9A00; } + +QWidget#tabESPs QToolButton:disabled { + background-color: #333337; + border-color: #3F3F46; } + +QTreeWidget#categoriesList { + /*min-width: 225px;*/ } + +QTreeWidget#categoriesList::item { + background-position: center left; + background-repeat: no-repeat; + padding: .35em 10px; } + +QTreeWidget#categoriesList::item:has-children { + background-image: url(./vs15/branch-closed.png); } + +QTreeWidget#categoriesList::item:has-children:open { + background-image: url(./vs15/branch-open.png); } + +QDialog#QueryOverwriteDialog QPushButton { + margin-left: .5em; } + +QDialog#PyCfgDialog QPushButton:hover { + background-color: #ffffe7; } + +QLineEdit#modFilterEdit { + margin-top: 2px; } + +/* highlight unchecked BSAs */ +QWidget#bsaTab QTreeWidget::indicator:unchecked { + background-color: #9A9A00; } + +/* increase version text field */ +QLineEdit#versionEdit { + max-width: 100px; } + +/* Dialogs width changes */ +/* increase width to prevent buttons cutting */ +QDialog#QueryOverwriteDialog { + min-width: 565px; } + +QDialog#ModInfoDialog { + min-width: 850px; } diff --git a/src/stylesheets/vs15 Dark.qss b/src/stylesheets/vs15 Dark.qss new file mode 100644 index 00000000..8c4d354e --- /dev/null +++ b/src/stylesheets/vs15 Dark.qss @@ -0,0 +1,749 @@ +/*!************************************* + VS15 Dark +**************************************** + Author: chintsu_kun + Version: 2.0.2 + Licence: GNU General Public License v3.0 (https://www.gnu.org/licenses/gpl-3.0.en.html) + Url: https://github.com/nikolay-borzov/modorganizer-themes +**************************************** +*/ +/* For some reason applying background-color or border fixes paddings properties */ +QListWidget::item { + border-width: 0; } + +/* Don't override install label on download widget. + MO2 assigns color depending on download state */ +#installLabel { + color: none; } + +/* Make `background-color` work for :hover, :focus and :pressed states */ +QToolButton { + border: none; } + +/* Main Window */ +QWidget { + background-color: #2D2D30; + color: #F1F1F1; } + QWidget::disabled { + color: #656565; } + +/* Common */ +/* remove outline */ +* { + outline: 0; } + +*:disabled, +QListView::item:disabled, +*::item:selected:disabled { + color: #656565; } + +/* line heights */ +/* QTreeView#fileTree::item - currently have problem with size column vertical + text align */ +#bsaList::item, +#dataTree::item, +QTreeView#modList::item, +QTreeWidget#categoriesTree::item, +#tabConflicts QTreeWidget::item { + padding: 0.3em 0; } + +QListView::item, +QTreeView#espList::item { + padding: 0.3em; } + +/* to enable border color */ +QTreeView, +QListView, +QTextEdit, +QWebView, +QTableView { + border-style: solid; + border-width: 1px; } + +QAbstractItemView { + color: #DCDCDC; + background-color: #1E1E1E; + alternate-background-color: #262626; + border-color: #3F3F46; } + QAbstractItemView::item:selected, QAbstractItemView::item:selected:hover { + background-color: #3399FF; + color: #F1F1F1; } + +QAbstractItemView, +QListView, +QTreeView { + show-decoration-selected: 1; } + +QAbstractItemView::item:hover, +QListView::item:hover, +QTreeView::branch:hover, +QTreeWidget::item:hover { + background-color: rgba(51, 153, 255, 0.3); } + +QAbstractItemView::item:selected:disabled, +QListView::item:selected:disabled, +QTreeView::branch:selected:disabled, +QTreeWidget::item:selected:disabled { + background-color: rgba(51, 153, 255, 0.3); } + +QTreeView::branch:selected { + background-color: #3399FF; } + +QLabel { + background-color: transparent; } + +/* Left Pane & File Trees #QTreeView, #QListView*/ +QTreeView::branch:closed:has-children { + image: url(./vs15/branch-closed.png); } + +QTreeView::branch:open:has-children { + image: url(./vs15/branch-open.png); } + +/*QListView::item:hover { } +QListView::item:selected { }*/ +QListView::item { + color: #F1F1F1; } + +/* Text areas and text fields #QTextEdit, #QLineEdit, #QWebView */ +QTextEdit, +QWebView, +QLineEdit, +QAbstractSpinBox, +QAbstractSpinBox::up-button, +QAbstractSpinBox::down-button, +QComboBox { + background-color: #333337; + border-color: #3F3F46; } + +QLineEdit:hover, +QAbstractSpinBox:hover, +QTextEdit:hover, +QComboBox:hover, +QComboBox:editable:hover { + border-color: #007ACC; } + +QLineEdit:focus, +QAbstractSpinBox::focus, +QTextEdit:focus, +QComboBox:focus, +QComboBox:editable:focus, +QComboBox:on { + background-color: #3F3F46; + border-color: #3399FF; } + +QComboBox:on { + border-bottom-color: #3F3F46; } + +QLineEdit, +QAbstractSpinBox { + min-height: 15px; + padding: 2px; + border-style: solid; + border-width: 1px; } + +QLineEdit { + margin-top: 0; } + +/* clear button */ +QLineEdit QToolButton, +QLineEdit QToolButton:hover { + background: none; + margin-top: 1px; } + +QLineEdit#espFilterEdit QToolButton { + margin-top: -2px; + margin-bottom: 1px; } + +/* Drop-downs #QComboBox*/ +QComboBox { + min-height: 20px; + padding-left: 5px; + margin: 3px 0 1px 0; + border-style: solid; + border-width: 1px; } + QComboBox:editable { + padding-left: 3px; + /* to enable hover styles */ + background-color: transparent; } + QComboBox::drop-down { + width: 20px; + subcontrol-origin: padding; + subcontrol-position: top right; + border: none; + /* If you need to set style for drop-down button + &:on, + &:editable:hover { + background-color: red; + } */ } + QComboBox::down-arrow { + image: url(./vs15/combobox-down.png); } + QComboBox QAbstractItemView { + background-color: #1B1B1C; + selection-background-color: #3F3F46; + border-color: #3399FF; + border-style: solid; + border-width: 0 1px 1px 1px; } + +/* doesn't work http://stackoverflow.com/questions/13308341/qcombobox-abstractitemviewitem*/ +/*QComboBox QAbstractItemView:item { + padding: 10px; + margin: 10px; +}*/ +/* Toolbar */ +QToolBar { + border: none; } + +QToolBar::separator { + border-left-color: #222222; + border-right-color: #46464A; + border-width: 0 1px 0 1px; + border-style: solid; + width: 0; } + +QToolButton { + margin: 0 4px 0 4px; + padding: 5px; } + QToolButton:hover, QToolButton:focus { + background-color: #3E3E40; } + QToolButton:pressed { + background-color: #3399FF; } + +/* Group Boxes #QGroupBox */ +QGroupBox { + border-color: #3F3F46; + border-style: solid; + border-width: 1px; + padding: 1em .3em .3em .3em; + margin-top: .65em; } + +QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top left; + padding: 2px; + left: 10px; } + +/* LCD Count */ +QLCDNumber { + border-color: #3F3F46; + border-style: solid; + border-width: 1px; } + +/* Buttons #QPushButton */ +QPushButton { + background-color: #333337; + border-color: #3F3F46; + min-height: 18px; + padding: 2px 5px; + border-style: solid; + border-width: 1px; } + +QPushButton:hover, +QPushButton:checked, +QPushButton:focus, +QAbstractSpinBox::up-button:hover, +QAbstractSpinBox::down-button:hover { + background-color: #007ACC; } + +QPushButton:pressed, +QPushButton:checked:hover, +QAbstractSpinBox::up-button:pressed, +QAbstractSpinBox::down-button:pressed { + background-color: #1C97EA; } + +QPushButton:disabled, +QAbstractSpinBox::up-button:disabled, +QAbstractSpinBox::down-button:disabled { + background-color: #333337; + border-color: #3F3F46; } + +QPushButton::menu-indicator { + image: url(./vs15/combobox-down.png); + subcontrol-origin: padding; + subcontrol-position: center right; + padding-right: 5%; } + +/* Dialog buttons */ +QDialog QPushButton, +QSlider::handle:horizontal, +QSlider::handle:vertical { + color: #000000; + background-color: #DDDDDD; + border-color: #707070; + border-style: solid; + border-width: 1px; } + +QDialog QPushButton:hover, +QSlider::handle:horizontal:hover, +QSlider::handle:vertical:hover, +QSlider::handle:horizontal:pressed, +QSlider::handle:vertical:pressed { + background-color: #BEE6FD; + border-color: #3C7FB1; } + +QSlider::handle:horizontal:focus:!pressed, +QSlider::handle:vertical:focus:!pressed, +QDialog QPushButton:focus, +QDialog QPushButton:checked { + background-color: #DDDDDD; + border-color: #3399FF; } + +QDialog QPushButton:disabled, +QSlider::handle:horizontal:disabled, +QSlider::handle:vertical:disabled { + background-color: #333337; + border-color: #3F3F46; } + +QDialog QPushButton { + min-width: 1.5em; + padding-left: .5em; + padding-right: .5em; } + +/* Check boxes and Radio buttons common #QCheckBox, #QRadioButton */ +QGroupBox::indicator, +QTreeView::indicator, +QCheckBox::indicator, +QRadioButton::indicator { + background-color: #2D2D30; + border-color: #3F3F46; + width: 13px; + height: 13px; + border-style: solid; + border-width: 1px; } + QGroupBox::indicator:hover, + QTreeView::indicator:hover, + QCheckBox::indicator:hover, + QRadioButton::indicator:hover { + background-color: #3F3F46; + border-color: #007ACC; } + +QGroupBox::indicator:checked, +QTreeView::indicator:checked, +QCheckBox::indicator:checked { + image: url(./vs15/checkbox-check.png); } + +QGroupBox::indicator:disabled, +QTreeView::indicator:checked:disabled, +QCheckBox::indicator:checked:disabled { + image: url(./vs15/checkbox-check-disabled.png); } + +/* Check boxes special */ +QTreeView#modList::indicator { + width: 15px; + height: 15px; } + +/* Radio buttons #QRadioButton */ +QRadioButton::indicator { + border-radius: 7px; } + QRadioButton::indicator::checked { + background-color: #B9B9BA; + border-width: 2px; + width: 11px; + height: 11px; } + QRadioButton::indicator::checked:hover { + border-color: #3F3F46; } + +/* Spinners #QSpinBox, #QDoubleSpinBox */ +QAbstractSpinBox { + margin: 1px; } + +QAbstractSpinBox::up-button, +QAbstractSpinBox::down-button { + border-style: solid; + border-width: 1px; + subcontrol-origin: padding; } + +QAbstractSpinBox::up-button { + subcontrol-position: top right; } + +QAbstractSpinBox::up-arrow { + image: url(./vs15/spinner-up.png); } + +QAbstractSpinBox::down-button { + subcontrol-position: bottom right; } + +QAbstractSpinBox::down-arrow { + image: url(./vs15/spinner-down.png); } + +/* Sliders #QSlider */ +QSlider::groove:horizontal { + background-color: #3F3F46; + border: none; + height: 8px; + margin: 2px 0; } + +QSlider::handle:horizontal { + width: .5em; + height: 2em; + margin: -7px 0; + subcontrol-origin: margin; } + +/* Scroll Bars #QAbstractScrollArea, #QScrollBar*/ +/* assigning background still leaves not filled area*/ +QAbstractScrollArea::corner { + background-color: transparent; } + +/* Horizontal */ +QScrollBar:horizontal { + height: 18px; + border: none; + margin: 0 23px 0 23px; } + +QScrollBar::handle:horizontal { + min-width: 32px; + margin: 4px 2px; } + +QScrollBar::add-line:horizontal { + width: 23px; + subcontrol-position: right; + subcontrol-origin: margin; } + +QScrollBar::sub-line:horizontal { + width: 23px; + subcontrol-position: left; + subcontrol-origin: margin; } + +/* Vertical */ +QScrollBar:vertical { + width: 20px; + border: none; + margin: 23px 0 23px 0; } + +QScrollBar::handle:vertical { + min-height: 32px; + margin: 2px 4px; } + +QScrollBar::add-line:vertical { + height: 23px; + subcontrol-position: bottom; + subcontrol-origin: margin; } + +QScrollBar::sub-line:vertical { + height: 23px; + subcontrol-position: top; + subcontrol-origin: margin; } + +/* Combined */ +QScrollBar { + background-color: #3E3E42; + border: none; } + +QScrollBar::handle { + background-color: #686868; } + +QScrollBar::add-line, +QScrollBar::sub-line { + background-color: #3E3E42; + border: none; } + +/*QScrollBar::add-line:horizontal:hover, +QScrollBar::sub-line:horizontal:hover, +QScrollBar::add-line:vertical:hover, +QScrollBar::sub-line:vertical:hover, +QScrollBar::add-line:horizontal:pressed, +QScrollBar::sub-line:horizontal:pressed, +QScrollBar::add-line:vertical:pressed, +QScrollBar::sub-line:vertical:pressed { }*/ +QScrollBar::handle:hover { + background: #9E9E9E; } + +QScrollBar::handle:pressed { + background: #EFEBEF; } + +QScrollBar::handle:disabled { + background: #555558; } + +QScrollBar::add-page, +QScrollBar::sub-page { + background: transparent; } + +QScrollBar::up-arrow:vertical { + image: url(./vs15/scrollbar-up.png); } + +QScrollBar::up-arrow:vertical:hover { + image: url(./vs15/scrollbar-up-hover.png); } + +QScrollBar::up-arrow:vertical:disabled { + image: url(./vs15/scrollbar-up-disabled.png); } + +QScrollBar::right-arrow:horizontal { + image: url(./vs15/scrollbar-right.png); } + +QScrollBar::right-arrow:horizontal:hover { + image: url(./vs15/scrollbar-right-hover.png); } + +QScrollBar::right-arrow:horizontal:disabled { + image: url(./vs15/scrollbar-right-disabled.png); } + +QScrollBar::down-arrow:vertical { + image: url(./vs15/scrollbar-down.png); } + +QScrollBar::down-arrow:vertical:hover { + image: url(./vs15/scrollbar-down-hover.png); } + +QScrollBar::down-arrow:vertical:disabled { + image: url(./vs15/scrollbar-down-disabled.png); } + +QScrollBar::left-arrow:horizontal { + image: url(./vs15/scrollbar-left.png); } + +QScrollBar::left-arrow:horizontal:hover { + image: url(./vs15/scrollbar-left-hover.png); } + +QScrollBar::left-arrow:horizontal:disabled { + image: url(./vs15/scrollbar-left-disabled.png); } + +/* Scroll Area #QScrollArea*/ +QScrollArea { + border-color: #3F3F46; + border-style: solid; + border-width: 1px; } + +/* Header Rows and Tables (Configure Mod Categories) #QTableView, #QHeaderView */ +QTableView { + gridline-color: #3F3F46; + selection-background-color: #3399FF; + selection-color: #F1F1F1; } + +QTableView QTableCornerButton::section { + background: #252526; + border-color: #3F3F46; + border-style: solid; + border-width: 0 1px 1px 0; } + +QHeaderView { + border: none; } + +QHeaderView::section { + background: #252526; + border-color: #3F3F46; + padding: 3px 5px; + border-style: solid; + border-width: 0 1px 1px 0; } + +QHeaderView::section:hover { + background: #3E3E40; + color: #F6F6F6; } + +/*QHeaderView::section:first { }*/ +QHeaderView::section:last { + border-right: 0; } + +QHeaderView::up-arrow { + image: url(./vs15/sort-asc.png); + margin-bottom: -37px; } + +QTreeView#downloadView QHeaderView::up-arrow { + margin-bottom: -32px; } + +QHeaderView::down-arrow { + image: url(./vs15/sort-desc.png); + margin-bottom: 0; } + +/* Context menus, toolbar drop-downs #QMenu */ +QMenu { + background-color: #1A1A1C; + border-color: #333337; + border-style: solid; + border-width: 1px; + padding: 2px; } + +QMenu::item { + background: transparent; + padding: 4px 20px; } + +QMenu::item:selected { + background-color: #333334; } + +QMenu::item:disabled { + background-color: transparent; } + +QMenu::separator { + background-color: #333337; + height: 1px; + margin: 1px 0; } + +QMenu::icon { + margin: 1px; } + +QMenu::right-arrow { + image: url(./vs15/sub-menu-arrow.png); + subcontrol-origin: padding; + subcontrol-position: center right; + padding-right: .5em; } + +QMenu QPushButton { + background-color: transparent; + border-color: #3F3F46; + margin: 1px 0 1px 0; } + +QMenu QCheckBox, +QMenu QRadioButton { + background-color: transparent; + padding: 5px 2px; } + +/* Tool tips #QToolTip, #SaveGameInfoWidget */ +QToolTip, +SaveGameInfoWidget { + background-color: #424245; + border-color: #4D4D50; + color: #F1F1F1; + border-style: solid; + border-width: 1px; + padding: 2px; } + +/* Progress Bars (Downloads) #QProgressBar */ +QProgressBar { + background-color: #E6E6E6; + color: #000; + border-color: #BCBCBC; + text-align: center; + border-style: solid; + border-width: 1px; + margin: 0 10px; } + +QProgressBar::chunk { + background: #06B025; } + +/* Right Pane and Tab Bars #QTabWidget, #QTabBar */ +QTabWidget::pane { + border-color: #3F3F46; + border-top-color: #007ACC; + top: 0; + border-style: solid; + border-width: 1px; } + +QTabWidget::pane:disabled { + border-top-color: #3F3F46; } + +/*QTabWidget::tab-bar { }*/ +QTabBar::tab { + background-color: transparent; + padding: 4px 1em; + border: none; } + +QTabBar::tab:hover { + background-color: #1C97EA; } + +QTabBar::tab:selected, +QTabBar::tab:selected:hover { + background-color: #007ACC; } + +QTabBar::tab:disabled { + background-color: transparent; + color: #656565; } + +QTabBar::tab:selected:disabled { + background-color: #3F3F46; } + +/* Scrollers */ +QTabBar QToolButton { + background-color: #333337; + border-color: #3F3F46; + padding: 1px; + margin: 0; + border-style: solid; + border-width: 1px; } + +QTabBar QToolButton:hover { + border-color: #007ACC; + border-width: 1px; + border-style: solid; } + +QTabBar QToolButton:disabled, +QTabBar QToolButton:pressed:hover { + background-color: #333337; } + +/*QTabBar::tear { }*/ +QTabBar::scroller { + width: 23px; + background-color: red; } + +QTabBar QToolButton::right-arrow { + image: url(./vs15/scrollbar-right.png); } + +QTabBar QToolButton::right-arrow:hover { + image: url(./vs15/scrollbar-right-hover.png); } + +QTabBar QToolButton::left-arrow { + image: url(./vs15/scrollbar-left.png); } + +QTabBar QToolButton::left-arrow:hover { + image: url(./vs15/scrollbar-left-hover.png); } + +/* Special styles */ +/* fix margins on tabs pane */ +QLineEdit#espFilterEdit { + margin: 0 0 6px 0; } + +QTreeView#downloadView { + margin: 4px 4px 0 4px; } + +QCheckBox#showHiddenBox { + margin: 0 0 4px 4px; } + +QLineEdit#downloadFilterEdit { + margin: 0 4px 4px 0; } + +QWidget#tabImages QPushButton { + background-color: transparent; + margin: 0 .3em; + padding: 0; } + +/* like dialog QPushButton*/ +QWidget#tabESPs QToolButton { + color: #000000; + background-color: #DDDDDD; + border-color: #707070; + border-style: solid; + border-width: 1px; } + +QWidget#tabESPs QToolButton:hover { + background-color: #BEE6FD; + border-color: #3C7FB1; } + +QWidget#tabESPs QToolButton:focus { + background-color: #DDDDDD; + border-color: #3399FF; } + +QWidget#tabESPs QToolButton:disabled { + background-color: #333337; + border-color: #3F3F46; } + +QTreeWidget#categoriesList { + /*min-width: 225px;*/ } + +QTreeWidget#categoriesList::item { + background-position: center left; + background-repeat: no-repeat; + padding: .35em 10px; } + +QTreeWidget#categoriesList::item:has-children { + background-image: url(./vs15/branch-closed.png); } + +QTreeWidget#categoriesList::item:has-children:open { + background-image: url(./vs15/branch-open.png); } + +QDialog#QueryOverwriteDialog QPushButton { + margin-left: .5em; } + +QDialog#PyCfgDialog QPushButton:hover { + background-color: #BEE6FD; } + +QLineEdit#modFilterEdit { + margin-top: 2px; } + +/* highlight unchecked BSAs */ +QWidget#bsaTab QTreeWidget::indicator:unchecked { + background-color: #3399FF; } + +/* increase version text field */ +QLineEdit#versionEdit { + max-width: 100px; } + +/* Dialogs width changes */ +/* increase width to prevent buttons cutting */ +QDialog#QueryOverwriteDialog { + min-width: 565px; } + +QDialog#ModInfoDialog { + min-width: 850px; } diff --git a/src/stylesheets/vs15/branch-closed.png b/src/stylesheets/vs15/branch-closed.png Binary files differnew file mode 100644 index 00000000..98d50524 --- /dev/null +++ b/src/stylesheets/vs15/branch-closed.png diff --git a/src/stylesheets/vs15/branch-open.png b/src/stylesheets/vs15/branch-open.png Binary files differnew file mode 100644 index 00000000..7b5d0fb3 --- /dev/null +++ b/src/stylesheets/vs15/branch-open.png diff --git a/src/stylesheets/vs15/checkbox-check-disabled.png b/src/stylesheets/vs15/checkbox-check-disabled.png Binary files differnew file mode 100644 index 00000000..f0385f13 --- /dev/null +++ b/src/stylesheets/vs15/checkbox-check-disabled.png diff --git a/src/stylesheets/vs15/checkbox-check.png b/src/stylesheets/vs15/checkbox-check.png Binary files differnew file mode 100644 index 00000000..ab72eeb5 --- /dev/null +++ b/src/stylesheets/vs15/checkbox-check.png diff --git a/src/stylesheets/vs15/combobox-down.png b/src/stylesheets/vs15/combobox-down.png Binary files differnew file mode 100644 index 00000000..ab4cae95 --- /dev/null +++ b/src/stylesheets/vs15/combobox-down.png diff --git a/src/stylesheets/vs15/scrollbar-down-disabled.png b/src/stylesheets/vs15/scrollbar-down-disabled.png Binary files differnew file mode 100644 index 00000000..fe6a465b --- /dev/null +++ b/src/stylesheets/vs15/scrollbar-down-disabled.png diff --git a/src/stylesheets/vs15/scrollbar-down-hover.png b/src/stylesheets/vs15/scrollbar-down-hover.png Binary files differnew file mode 100644 index 00000000..ad2e28c5 --- /dev/null +++ b/src/stylesheets/vs15/scrollbar-down-hover.png diff --git a/src/stylesheets/vs15/scrollbar-down.png b/src/stylesheets/vs15/scrollbar-down.png Binary files differnew file mode 100644 index 00000000..fcc3e6a2 --- /dev/null +++ b/src/stylesheets/vs15/scrollbar-down.png diff --git a/src/stylesheets/vs15/scrollbar-left-disabled.png b/src/stylesheets/vs15/scrollbar-left-disabled.png Binary files differnew file mode 100644 index 00000000..46dc794c --- /dev/null +++ b/src/stylesheets/vs15/scrollbar-left-disabled.png diff --git a/src/stylesheets/vs15/scrollbar-left-hover.png b/src/stylesheets/vs15/scrollbar-left-hover.png Binary files differnew file mode 100644 index 00000000..af1e4327 --- /dev/null +++ b/src/stylesheets/vs15/scrollbar-left-hover.png diff --git a/src/stylesheets/vs15/scrollbar-left.png b/src/stylesheets/vs15/scrollbar-left.png Binary files differnew file mode 100644 index 00000000..b742b229 --- /dev/null +++ b/src/stylesheets/vs15/scrollbar-left.png diff --git a/src/stylesheets/vs15/scrollbar-right-disabled.png b/src/stylesheets/vs15/scrollbar-right-disabled.png Binary files differnew file mode 100644 index 00000000..f61615a2 --- /dev/null +++ b/src/stylesheets/vs15/scrollbar-right-disabled.png diff --git a/src/stylesheets/vs15/scrollbar-right-hover.png b/src/stylesheets/vs15/scrollbar-right-hover.png Binary files differnew file mode 100644 index 00000000..62d9993d --- /dev/null +++ b/src/stylesheets/vs15/scrollbar-right-hover.png diff --git a/src/stylesheets/vs15/scrollbar-right.png b/src/stylesheets/vs15/scrollbar-right.png Binary files differnew file mode 100644 index 00000000..05eb173d --- /dev/null +++ b/src/stylesheets/vs15/scrollbar-right.png diff --git a/src/stylesheets/vs15/scrollbar-up-disabled.png b/src/stylesheets/vs15/scrollbar-up-disabled.png Binary files differnew file mode 100644 index 00000000..2797ef8e --- /dev/null +++ b/src/stylesheets/vs15/scrollbar-up-disabled.png diff --git a/src/stylesheets/vs15/scrollbar-up-hover.png b/src/stylesheets/vs15/scrollbar-up-hover.png Binary files differnew file mode 100644 index 00000000..2c34ab89 --- /dev/null +++ b/src/stylesheets/vs15/scrollbar-up-hover.png diff --git a/src/stylesheets/vs15/scrollbar-up.png b/src/stylesheets/vs15/scrollbar-up.png Binary files differnew file mode 100644 index 00000000..23b3d6de --- /dev/null +++ b/src/stylesheets/vs15/scrollbar-up.png diff --git a/src/stylesheets/vs15/sort-asc.png b/src/stylesheets/vs15/sort-asc.png Binary files differnew file mode 100644 index 00000000..b1e01fd8 --- /dev/null +++ b/src/stylesheets/vs15/sort-asc.png diff --git a/src/stylesheets/vs15/sort-desc.png b/src/stylesheets/vs15/sort-desc.png Binary files differnew file mode 100644 index 00000000..6cb891b1 --- /dev/null +++ b/src/stylesheets/vs15/sort-desc.png diff --git a/src/stylesheets/vs15/spinner-down.png b/src/stylesheets/vs15/spinner-down.png Binary files differnew file mode 100644 index 00000000..78307209 --- /dev/null +++ b/src/stylesheets/vs15/spinner-down.png diff --git a/src/stylesheets/vs15/spinner-up.png b/src/stylesheets/vs15/spinner-up.png Binary files differnew file mode 100644 index 00000000..a635a518 --- /dev/null +++ b/src/stylesheets/vs15/spinner-up.png diff --git a/src/stylesheets/vs15/sub-menu-arrow-hover.png b/src/stylesheets/vs15/sub-menu-arrow-hover.png Binary files differnew file mode 100644 index 00000000..81ef4aeb --- /dev/null +++ b/src/stylesheets/vs15/sub-menu-arrow-hover.png diff --git a/src/stylesheets/vs15/sub-menu-arrow.png b/src/stylesheets/vs15/sub-menu-arrow.png Binary files differnew file mode 100644 index 00000000..0357366b --- /dev/null +++ b/src/stylesheets/vs15/sub-menu-arrow.png diff --git a/src/transfersavesdialog.ui b/src/transfersavesdialog.ui index 1fcad54d..8bc23088 100644 --- a/src/transfersavesdialog.ui +++ b/src/transfersavesdialog.ui @@ -11,7 +11,7 @@ </rect>
</property>
<property name="windowTitle">
- <string>Transfer Savegames</string>
+ <string>Transfer Save Games</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
diff --git a/src/usvfsconnector.cpp b/src/usvfsconnector.cpp index 4ffc81c0..9c81d0d9 100644 --- a/src/usvfsconnector.cpp +++ b/src/usvfsconnector.cpp @@ -132,7 +132,11 @@ UsvfsConnector::UsvfsConnector() CreateVFS(¶ms); - BlacklistExecutable(L"TSVNCache.exe"); + ClearExecutableBlacklist(); + for (auto exec : Settings::instance().executablesBlacklist().split(";")) { + std::wstring buf = exec.toStdWString(); + BlacklistExecutable(buf.data()); + } m_LogWorker.moveToThread(&m_WorkerThread); @@ -199,6 +203,11 @@ void UsvfsConnector::updateMapping(const MappingType &mapping) */ } -void UsvfsConnector::updateParams(int logLevel, int crashDumpsType) { +void UsvfsConnector::updateParams(int logLevel, int crashDumpsType, QString executableBlacklist) { USVFSUpdateParams(::logLevel(logLevel), ::crashDumpsType(crashDumpsType)); + ClearExecutableBlacklist(); + for (auto exec : executableBlacklist.split(";")) { + std::wstring buf = exec.toStdWString(); + BlacklistExecutable(buf.data()); + } } diff --git a/src/usvfsconnector.h b/src/usvfsconnector.h index 40f8857b..3aefb703 100644 --- a/src/usvfsconnector.h +++ b/src/usvfsconnector.h @@ -82,7 +82,7 @@ public: ~UsvfsConnector(); void updateMapping(const MappingType &mapping); - void updateParams(int logLevel, int crashDumpsType); + void updateParams(int logLevel, int crashDumpsType, QString executableBlacklist); private: diff --git a/src/version.rc b/src/version.rc index 23635a79..88874c2e 100644 --- a/src/version.rc +++ b/src/version.rc @@ -3,8 +3,8 @@ // If VS_FF_PRERELEASE is not set, MO labels the build as a release and uses VER_FILEVERSION to determine version number.
// Otherwise, if letters are used in VER_FILEVERSION_STR, uses the full MOBase::VersionInfo parser
// Otherwise, uses the numbers from VER_FILEVERSION and sets the release type as pre-alpha
-#define VER_FILEVERSION 2,1,5
-#define VER_FILEVERSION_STR "2.1.5\0"
+#define VER_FILEVERSION 2,1,6
+#define VER_FILEVERSION_STR "2.1.6\0"
VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILEVERSION
|
