From e39de4dd2ab6c19c6b9557f99117f7ffc9ed1cc1 Mon Sep 17 00:00:00 2001 From: Mikaël Capelle Date: Wed, 18 Nov 2020 19:22:05 +0100 Subject: Update following addition of IPluginGame::listSaves(). --- src/mainwindow.cpp | 53 +++++++--------------- src/mainwindow.h | 1 + src/transfersavesdialog.cpp | 105 ++++---------------------------------------- src/transfersavesdialog.h | 7 +-- 4 files changed, 30 insertions(+), 136 deletions(-) (limited to 'src') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index c2aefdd2..ecb4319b 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1206,7 +1206,7 @@ void MainWindow::createHelpMenu() ActionList tutorials; - QString tutorialPath = QApplication::applicationDirPath() + QString tutorialPath = QApplication::applicationDirPath() + "/" + QString::fromStdWString(AppConfig::tutorialsPath()) + "/"; QDirIterator dirIter(tutorialPath, QStringList("*.js"), QDir::Files); while (dirIter.hasNext()) { @@ -1532,7 +1532,6 @@ void MainWindow::displaySaveGameInfo(QListWidgetItem *newItem) return; } - QString const &save = newItem->data(Qt::UserRole).toString(); if (m_CurrentSaveView == nullptr) { IPluginGame const *game = m_OrganizerCore.managedGame(); SaveGameInfo const *info = game->feature(); @@ -1543,7 +1542,7 @@ void MainWindow::displaySaveGameInfo(QListWidgetItem *newItem) return; } } - m_CurrentSaveView->setSave(save); + m_CurrentSaveView->setSave(*m_SaveGames[ui->savegameList->row(newItem)]); QWindow *window = m_CurrentSaveView->window()->windowHandle(); QRect screenRect; @@ -1964,36 +1963,23 @@ void MainWindow::stopMonitorSaves() void MainWindow::refreshSaveList() { - ui->savegameList->clear(); + TimeThis tt("MainWindow::refreshSaveList()"); startMonitorSaves(); // re-starts monitoring - QStringList filters; - filters << QString("*.") + m_OrganizerCore.managedGame()->savegameExtension(); - QDir savesDir = currentSavesDir(); - savesDir.setNameFilters(filters); - savesDir.setFilter(QDir::Files); - QDirIterator it(savesDir, QDirIterator::Subdirectories); - log::debug("reading save games from {}", savesDir.absolutePath()); - - QFileInfoList files; - while (it.hasNext()) { - it.next(); - files.append(it.fileInfo()); - } - std::sort(files.begin(), files.end(), [](auto const& lhs, auto const& rhs) { - return lhs.fileTime(QFileDevice::FileModificationTime) > rhs.fileTime(QFileDevice::FileModificationTime); + MOBase::log::debug("reading save games from {}", savesDir.absolutePath()); + m_SaveGames = m_OrganizerCore.managedGame()->listSaves(savesDir); + std::sort(m_SaveGames.begin(), m_SaveGames.end(), [](auto const& lhs, auto const& rhs) { + return lhs->getCreationTime() > rhs->getCreationTime(); }); - for (const QFileInfo &file : files) { - QListWidgetItem *item = new QListWidgetItem(savesDir.relativeFilePath(file.absoluteFilePath())); - item->setData(Qt::UserRole, file.absoluteFilePath()); - ui->savegameList->addItem(item); + ui->savegameList->clear(); + for (auto& save: m_SaveGames) { + ui->savegameList->addItem(savesDir.relativeFilePath(save->getFilepath())); } } - static bool BySortValue(const std::pair &LHS, const std::pair &RHS) { return LHS.first < RHS.first; @@ -4960,20 +4946,15 @@ void MainWindow::deleteSavegame_clicked() int count = 0; for (const QModelIndex &idx : ui->savegameList->selectionModel()->selectedIndexes()) { - QString name = idx.data(Qt::UserRole).toString(); + + auto& saveGame = m_SaveGames[idx.row()]; if (count < 10) { - savesMsgLabel += "
  • " + QFileInfo(name).completeBaseName() + "
  • "; + savesMsgLabel += "
  • " + QFileInfo(saveGame->getFilepath()).completeBaseName() + "
  • "; } ++count; - if (info == nullptr) { - deleteFiles.push_back(name); - } else { - ISaveGame const *save = info->getSaveGameInfo(name); - deleteFiles += save->allFiles(); - delete save; - } + deleteFiles += saveGame->allFiles(); } if (count > 10) { @@ -5032,8 +5013,8 @@ void MainWindow::on_savegameList_customContextMenuRequested(const QPoint& pos) QAction* action = menu.addAction(tr("Enable Mods...")); action->setEnabled(false); if (selection->selectedIndexes().count() == 1) { - QString save = ui->savegameList->currentItem()->data(Qt::UserRole).toString(); - SaveGameInfo::MissingAssets missing = info->getMissingAssets(save); + auto& save = m_SaveGames[selection->selectedIndexes()[0].row()]; + SaveGameInfo::MissingAssets missing = info->getMissingAssets(*save); if (missing.size() != 0) { connect(action, &QAction::triggered, this, [this, missing] { fixMods_clicked(missing); }); action->setEnabled(true); @@ -5229,7 +5210,7 @@ void MainWindow::installTranslator(const QString &name) { QTranslator *translator = new QTranslator(this); QString fileName = name + "_" + m_CurrentLanguage; - QString translationsPath = qApp->applicationDirPath() + QString translationsPath = qApp->applicationDirPath() + "/" + QString::fromStdWString(AppConfig::translationsPath()); if (!translator->load(fileName, translationsPath)) { if (m_CurrentLanguage.contains(QRegularExpression("^.*_(EN|en)(-.*)?$"))) { diff --git a/src/mainwindow.h b/src/mainwindow.h index e2805b25..da916d2a 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -334,6 +334,7 @@ private: QTime m_StartTime; //SaveGameInfoWidget *m_CurrentSaveView; + std::vector> m_SaveGames; MOBase::ISaveGameInfoWidget *m_CurrentSaveView; OrganizerCore &m_OrganizerCore; diff --git a/src/transfersavesdialog.cpp b/src/transfersavesdialog.cpp index f8ebbb9d..5288d408 100644 --- a/src/transfersavesdialog.cpp +++ b/src/transfersavesdialog.cpp @@ -42,74 +42,6 @@ along with Mod Organizer. If not, see . using namespace MOBase; using namespace MOShared; -//These two classes give the save-transfer box a smidgin of useful info even -//if save game isn't supported yet. -namespace { - -class DummySave : public ISaveGame -{ -public: - DummySave(QString const &filename) : - m_File(filename) - {} - - ~DummySave() {} - - virtual QString getFilename() const override - { - return m_File; - } - - virtual QDateTime getCreationTime() const override - { - return QFileInfo(m_File).birthTime(); - } - - virtual QString getSaveGroupIdentifier() const override - { - return m_File; - } - - virtual QStringList allFiles() const override - { - return { m_File }; - } - - virtual bool hasScriptExtenderFile() const override - { - return false; - } - -private: - QString m_File; -}; - -class DummyInfo : public SaveGameInfo -{ -public: - virtual MOBase::ISaveGame const *getSaveGameInfo(QString const &file) const override - { - return new DummySave(file); - } - - virtual MissingAssets getMissingAssets(QString const &) const override - { - return {}; - } - - MOBase::ISaveGameInfoWidget *getSaveGameWidget(QWidget *) const override - { - return nullptr; - } - - virtual bool hasScriptExtenderSave(QString const &file) const override - { - return false; - } -}; - -} //end anonymous namespace - TransferSavesDialog::TransferSavesDialog(const Profile &profile, IPluginGame const *gamePlugin, QWidget *parent) : TutorableDialog("TransferSaves", parent) , ui(new Ui::TransferSavesDialog) @@ -263,7 +195,7 @@ void TransferSavesDialog::on_globalCharacterList_currentTextChanged(const QStrin SaveCollection::const_iterator saveList = m_GlobalSaves.find(currentText); if (saveList != m_GlobalSaves.end()) { for (SaveListItem const &save : saveList->second) { - ui->globalSavesList->addItem(QFileInfo(save->getFilename()).fileName()); + ui->globalSavesList->addItem(QFileInfo(save->getFilepath()).fileName()); } } } @@ -276,7 +208,7 @@ void TransferSavesDialog::on_localCharacterList_currentTextChanged(const QString SaveCollection::const_iterator saveList = m_LocalSaves.find(currentText); if (saveList != m_LocalSaves.end()) { for (SaveListItem const &save : saveList->second) { - ui->localSavesList->addItem(QFileInfo(save->getFilename()).fileName()); + ui->localSavesList->addItem(QFileInfo(save->getFilepath()).fileName()); } } } @@ -285,34 +217,13 @@ void TransferSavesDialog::refreshSaves(SaveCollection &saveCollection, QString c { saveCollection.clear(); - SaveGameInfo const *info = m_GamePlugin->feature(); - if (info == nullptr) { - static DummyInfo dummyInfo; - info = &dummyInfo; - } - - QStringList filters; - filters << QString("*.") + m_GamePlugin->savegameExtension(); - - QDir savesDir(savedir); - savesDir.setNameFilters(QStringList() << QString("*.") + m_GamePlugin->savegameExtension()); - savesDir.setFilter(QDir::Files); - QDirIterator it(savesDir, QDirIterator::Subdirectories); - log::debug("reading save games from {}", savesDir.absolutePath()); - - QFileInfoList files; - while (it.hasNext()) { - it.next(); - files.append(it.fileInfo()); - } - std::sort(files.begin(), files.end(), [](auto const& lhs, auto const& rhs) { - return lhs.fileTime(QFileDevice::FileModificationTime) < rhs.fileTime(QFileDevice::FileModificationTime); + auto saves = m_GamePlugin->listSaves(savedir); + std::sort(saves.begin(), saves.end(), [](auto const& lhs, auto const& rhs) { + return lhs->getCreationTime() > rhs->getCreationTime(); }); - for (const QFileInfo &file: files) { - MOBase::ISaveGame const *save = info->getSaveGameInfo(file.absoluteFilePath()); - saveCollection[save->getSaveGroupIdentifier()].push_back( - std::unique_ptr(save)); + for (auto& save: saves) { + saveCollection[save->getSaveGroupIdentifier()].push_back(save); } } @@ -334,7 +245,7 @@ void TransferSavesDialog::refreshCharacters(const SaveCollection &saveCollection } bool TransferSavesDialog::transferCharacters( - QString const &character, char const *message, + QString const &character, char const *message, QDir const& sourceDirectory, SaveList &saves, QDir const& destination, diff --git a/src/transfersavesdialog.h b/src/transfersavesdialog.h index b983ad9e..fe78aa83 100644 --- a/src/transfersavesdialog.h +++ b/src/transfersavesdialog.h @@ -80,9 +80,10 @@ private: MOBase::IPluginGame const *m_GamePlugin; - typedef std::unique_ptr SaveListItem; - typedef std::vector SaveList; - typedef std::map SaveCollection; + using SaveListItem = std::shared_ptr; + using SaveList = std::vector; + using SaveCollection = std::map; + SaveCollection m_GlobalSaves; SaveCollection m_LocalSaves; -- cgit v1.3.1 From e76e7e034d2b42d5819b7b184cd7034ff51ebb26 Mon Sep 17 00:00:00 2001 From: Mikaël Capelle Date: Wed, 18 Nov 2020 19:22:13 +0100 Subject: Move MemoizedLock to uibase. --- src/modinfowithconflictinfo.h | 8 ++++---- src/thread_utils.h | 45 ------------------------------------------- 2 files changed, 4 insertions(+), 49 deletions(-) (limited to 'src') diff --git a/src/modinfowithconflictinfo.h b/src/modinfowithconflictinfo.h index feded99b..e312a89a 100644 --- a/src/modinfowithconflictinfo.h +++ b/src/modinfowithconflictinfo.h @@ -3,7 +3,7 @@ #include -#include "thread_utils.h" +#include "memoizedlock.h" #include "modinfo.h" #include @@ -145,9 +145,9 @@ protected: private: - MOShared::MemoizedLocked> m_FileTree; - MOShared::MemoizedLocked m_Valid; - MOShared::MemoizedLocked> m_Contents; + MOBase::MemoizedLocked> m_FileTree; + MOBase::MemoizedLocked m_Valid; + MOBase::MemoizedLocked> m_Contents; MOShared::DirectoryEntry **m_DirectoryStructure; diff --git a/src/thread_utils.h b/src/thread_utils.h index f64dd601..e816a4e2 100644 --- a/src/thread_utils.h +++ b/src/thread_utils.h @@ -24,51 +24,6 @@ std::thread startSafeThread(F&& f) }); } - -/** - * Class that can be used to perform thread-safe memoization. - * - * Each instance hold a flag indicating if the current value is up-to-date - * or not. This flag can be reset using `invalidate()`. When the value is queried, - * the flag is checked, and if it is not up-to-date, the given callback is used - * to compute the value. - * - * The computation and update of the value is locked to avoid concurrent modifications. - * - * @tparam T Type of value ot memoized. - * @tparam Fn Type of the callback. - */ -template > -struct MemoizedLocked { - - template - MemoizedLocked(Callable &&callable, T value = {}) : - m_Fn{ std::forward(callable) }, m_Value{ std::move(value) } { } - - template - T& value(Args&&... args) const { - if (m_NeedUpdating) { - std::scoped_lock lock(m_Mutex); - if (m_NeedUpdating) { - m_Value = std::invoke(m_Fn, std::forward(args)... ); - m_NeedUpdating = false; - } - } - return m_Value; - } - - void invalidate() { - m_NeedUpdating = true; - } - -private: - mutable std::mutex m_Mutex; - mutable std::atomic m_NeedUpdating{ true }; - - Fn m_Fn; - mutable T m_Value; -}; - /** * @brief Apply the given callable to each element between the two given iterators * in a parallel way. -- cgit v1.3.1 From 951ccdc8234cc0b71d0eb3c939590159779c6abe Mon Sep 17 00:00:00 2001 From: Mikaël Capelle Date: Wed, 18 Nov 2020 19:26:59 +0100 Subject: Update following removal of IPlugin::isActive(). --- src/organizer_en.ts | 3591 ++++++++++++++++++++++++++------------------------- 1 file changed, 1845 insertions(+), 1746 deletions(-) (limited to 'src') diff --git a/src/organizer_en.ts b/src/organizer_en.ts index c65c946c..646b3310 100644 --- a/src/organizer_en.ts +++ b/src/organizer_en.ts @@ -110,22 +110,22 @@ - + ...and all other contributors! - + Other Supporters && Contributors - + Tannin (Original Creator) - + Close @@ -178,17 +178,17 @@ p, li { white-space: pre-wrap; } AdvancedConflictListModel - + Overwrites - + File - + Overwritten By @@ -339,6 +339,295 @@ p, li { white-space: pre-wrap; } + + CreateInstanceDialog + + + Creating an instance + + + + + Creating a new instance + + + + + <h3>What is an instance?</h3> +<p>An instance is a full set of mods, downloads, profiles and configuration for a game. Each game must be managed in its own instance. Mod Organizer can freely switch between instances.</p> + + + + + <html><head/><body><p><a href="https://github.com/ModOrganizer2/modorganizer/wiki/Instances">More information</a></p></body></html> + + + + + Never show this page again + + + + + <h3>Select the type of instance to create.</h3> + + + + + Create a global instance + + + + + Global instances are stored in %1, but some paths can be changed to be on a different drive if necessary. A single installation of Mod Organizer can manage multiple global instances. + + + + + Create a portable instance + + + + + A portable instance stores everything in Mod Organizer's installation folder, currently %1. There can only be one portable instance per installation of Mod Organizer. + + + + + A portable instance already exists. + + + + + <h3>Select the game to manage.</h3> + + + + + Show all supported games + + + + + Filter + + + + + <h3>Select the game edition.</h3> + + + + + This game has multiple variants. The correct one must be selected or Mod Organizer will not be able to launch the game properly. + + + + + <h3>Customize the name for this <span style="white-space: nowrap;">%1</span> instance.</h3> + + + + + Instance name + + + + + There is already an instance with this name. + + + + + The name contains invalid characters. It must be a valid folder name. + + + + + <h3>Select a folder where the data should be stored.</h3> + + + + + This includes downloads, mods, profiles and overwrite for your <b>%1</b> instance. If there is enough space on this drive, you should use the default folder. + + + + + + + + + + ... + + + + + Location + + + + + Warning: This folder already exists. + + + + + + + + + + Folder + + + + + Warning: The folder contains invalid characters. + + + + + Mods + + + + + Overwrite + + + + + Base directory + + + + + Warning: The folder %1 already exists. + + + + + Downloads + + + + + Profiles + + + + + Use %BASE_DIR% to refer to the Base Directory. + + + + + Warning: The folder %1 contains invalid characters. + + + + + Show advanced options + + + + + <h3>Link Mod Organizer with your Nexus account</h3> + + + + + Linking with Nexus allows you to download mods directly from Mod Organizer and automatically check for updates. This is optional. + + + + + Connect to Nexus + + + + + Enter API Key Manually + + + + + <h3>Confirmation</h3> + + + + + The instance is about to be created. Review the information below and press 'Finish'. + + + + + Instance creation log + + + + + Launch the new instance + + + + + < Back + + + + + Next > + + + + + Cancel + + + + + Setting up instance %1 + + + + + Setting up an instance %1 + + + + + Creating instance... + + + + + Writing %1... + + + + + Format error. + + + + + Error %1. + + + + + Done. + + + + + Finish + + + CredentialsDialog @@ -380,6 +669,44 @@ p, li { white-space: pre-wrap; } + + DisableProxyPluginDialog + + + Really disable plugin? + + + + + Disabling the '%1' plugin will prevent the following plugins from working: + + + + + Plugin + + + + + Description + + + + + Do you want to continue? You will need to restart Mod Organizer for the change to take effect. + + + + + Yes + + + + + No + + + DownloadList @@ -524,132 +851,137 @@ p, li { white-space: pre-wrap; } - - + Open Meta File + + + + + + Reveal in Explorer - - + + Delete - + Un-Hide - + Hide - + Cancel - + Pause - + Resume - + Delete Installed Downloads... - + Delete Uninstalled Downloads... - + Delete All Downloads... - + Hide Installed... - + Hide Uninstalled... - + Hide All... - + Un-Hide All... - - - - + + + + Delete Files? - + This will permanently delete the selected download. Are you absolutely sure you want to proceed? - + This will remove all finished downloads from this list and from disk. Are you absolutely sure you want to proceed? - + This will remove all installed downloads from this list and from disk. Are you absolutely sure you want to proceed? - + This will remove all uninstalled downloads from this list and from disk. Are you absolutely sure you want to proceed? - - - + + + Hide Files? - + This will remove all finished downloads from this list (but NOT from disk). - + This will remove all installed downloads from this list (but NOT from disk). - + This will remove all uninstalled downloads from this list (but NOT from disk). @@ -719,7 +1051,7 @@ File %3: %4 - + remove: invalid download index %1 @@ -734,256 +1066,256 @@ File %3: %4 - + restore: invalid download index: %1 - + cancel: invalid download index %1 - + pause: invalid download index %1 - + resume: invalid download index %1 - + resume (int): invalid download index %1 - + No known download urls. Sorry, this download can't be resumed. - - + + query: invalid download index %1 - + Please enter the nexus mod id - + Mod ID: - + Please select the source game code for %1 - + Hashing download file '%1' - + Cancel - + VisitNexus: invalid download index %1 - + Nexus ID for this Mod is unknown - + OpenFile: invalid download index %1 - + OpenFileInDownloadsFolder: invalid download index %1 - + get pending: invalid download index %1 - + get path: invalid download index %1 - + Main - + Update - + Optional - + Old - + Miscellaneous - + Deleted - + Unknown - + display name: invalid download index %1 - + file name: invalid download index %1 - + file time: invalid download index %1 - + file size: invalid download index %1 - + progress: invalid download index %1 - + state: invalid download index %1 - + infocomplete: invalid download index %1 - - - + + + mod id: invalid download index %1 - + ishidden: invalid download index %1 - + file info: invalid download index %1 - + mark installed: invalid download index %1 - + mark uninstalled: invalid download index %1 - + Memory allocation error (in processing progress event). - + Memory allocation error (in processing downloaded data). - + Information updated - - + + No matching file found on Nexus! Maybe this file is no longer available or it was renamed? - + No file on Nexus matches the selected file by name. Please manually choose the correct one. - + No download server available. Please try again later. - + Failed to request file info from nexus: %1 - + Warning: Content type is: %1 - + Download header content length: %1 downloaded file size: %2 - + Download failed: %1 (%2) - + We were unable to download the file due to errors after four retries. There may be an issue with the Nexus servers. - + failed to re-open %1 - + Unable to write download to drive (return %1). Check the drive's available storage. @@ -1462,54 +1794,54 @@ Right now the only case I know of where this needs to be overwritten is for the FileTreeModel - + Name - + Mod - + Type - + Size - + Date modified - + Directory - - + + Virtual path - + Real path - + From - - + + Also in @@ -1748,122 +2080,145 @@ Right now the only case I know of where this needs to be overwritten is for the + + GeneralConflictsTab + + + <table cellspacing="5"><tr><th>Type</th><th>%1</th><th>Total</th><th>Percent</th></tr><tr><td>Loose files:&emsp;</td><td align=right>%2</td><td align=right>%3</td><td align=right>%4%</td></tr><tr><td>Archive files:&emsp;</td><td align=right>%5</td><td align=right>%6</td><td align=right>%7%</td></tr><tr><td>Combined:&emsp;</td><td align=right>%8</td><td align=right>%9</td><td align=right>%10%</td></tr></table> + + + + + Winning + + + + + Losing + + + + + Non conflicting + + + InstallationManager - + Password required - + Password - + Extracting files - - + + Extraction failed: %1 - + Failed to create backup - + Mod Name - + Name - + Invalid name - + The name you entered is invalid, please enter a different one. - + File format "%1" not supported - + Invalid file tree returned by plugin. - + Installation failed - + Something went wrong while installing this mod. - + 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. - + no error - + 7z.dll not found - + 7z.dll isn't valid - + archive not found - + failed to open archive - + unsupported archive type - + internal library error - + archive invalid - + unknown archive error @@ -1881,71 +2236,176 @@ This is likely due to a corrupted or incompatible download or unrecognized archi - - Create portable instance + + Rename - - <html><head/><body><p><a href="https://github.com/ModOrganizer2/modorganizer/wiki/Instance"><span style=" text-decoration: underline; color:#0000ff;">What is an instance?</span></a></p></body></html> + + <html><head/><body><p><a href="https://github.com/ModOrganizer2/modorganizer/wiki/Instances">What is an instance?</a></p></body></html> - - Game: + + Filter - - Name: + + Name - - Location: + + + + Explore - - Rename + + Game - - Base folder: + + Location - - - Explore + + Game location + + + + + Base folder - + Convert to portable - + Convert to global - - Delete instance + + Open INI - + + Delete instance... + + + + + Close + + + + Switch to this instance - + + Switching instances + + + + + Mod Organizer must restart to manage the instance '%1'. + + + + + This confirmation can be disabled in the settings. + + + + + Restart Mod Organizer + + + + + Cancel + + + + Rename instance + + + + + The active instance cannot be renamed. + + + + + Instance name + + + + + Error + + + + + Failed to rename "%1" to "%2": %3 + + + + + + + Deleting instance + + + + + The active instance cannot be deleted. + + + + + These files and folders will be deleted + + + + + All checked items will be deleted. + + + + + Move to the recycle bin + + + + + Delete permanently + + + + + Nothing to delete. + + + + + A portable instance already exists. + + ListDialog @@ -2078,12 +2538,12 @@ This is likely due to a corrupted or incompatible download or unrecognized archi MOApplication - + an error occurred: %1 - + an error occurred @@ -2091,49 +2551,49 @@ This is likely due to a corrupted or incompatible download or unrecognized archi MOBase::FilterWidget - + Filter options - + Use regular expressions - + Use regular expressions in filters - + Case sensitive - + Make regular expressions case sensitive (/i) leave "(/i)" verbatim - + Extended - + Ignores unescaped whitespace in regular expressions (/x) leave "(/x)" verbatim - + Keep selection in view - + Scroll to keep the current selection in view after filtering @@ -2151,17 +2611,17 @@ This is likely due to a corrupted or incompatible download or unrecognized archi - + failed to write to %1 - + file not found: %1 - + Save @@ -2182,6 +2642,29 @@ This is likely due to a corrupted or incompatible download or unrecognized archi + + MOMultiProcess + + + SHM error: %1 + + + + + failed to connect to running process: %1 + + + + + failed to communicate with running process: %1 + + + + + failed to receive data from secondary process: %1 + + + MainWindow @@ -2278,7 +2761,7 @@ p, li { white-space: pre-wrap; } - + Create Backup @@ -2432,7 +2915,7 @@ p, li { white-space: pre-wrap; } - + Refresh @@ -2554,1113 +3037,1100 @@ p, li { white-space: pre-wrap; } - + &File - - + + &Tools - - - + + + &Help - + &View - + &Toolbars - + &Run - - + + Log - + Install &Mod... - + Install &Mod - - + + Install a new mod from an archive - + Ctrl+M - + &Profiles... - + &Profiles - - + + Configure profiles - + Ctrl+P - + &Executables... - + &Executables - - + + Configure the executables that can be started through Mod Organizer - + Ctrl+E - + &Tool Plugins - + Tools - + Ctrl+I - + &Settings... - + &Settings - - + + Configure settings and workarounds - + Ctrl+S - - + + Visit &Nexus - - + + Visit the Nexus website in your browser for more mods - + Ctrl+N - - + + &Update Mod Organizer - - + + Mod Organizer is up-to-date - + &Notifications... - - + + Open the notifications dialog - + This button will be highlighted on the toolbar if MO discovered potential problems in your setup and provide tips on how to fix them. - - + + Show help options - + Ctrl+H - - + + &Endorse ModOrganizer - - - + + + Endorse Mod Organizer - - &Change Game... + + + Manage Instan&ces... - - &Change Game - - - - - - Open the Instance selection dialog to manage a different Game + + + Open the instance manager window to manage a different instance - - + + E&xit - - + + Exits Mod Organizer - + M&ain Toolbar - + &Small Icons - + Lar&ge Icons - + &Icons Only - + &Text Only - + I&cons and Text - + M&edium Icons - + &Menu - + Status &bar - + Toolbar and Menu - + Desktop - + Start Menu - + There is no supported sort mechanism for this game. You will probably have to use a third-party tool. - + Crash on exit - + MO crashed while exiting. Some settings may not be saved. Error: %1 - + There are notifications to read - + There are no notifications - - - + + + Endorse - + Won't Endorse - + Help on UI - + Documentation - + Chat on Discord - + Report Issue - + Tutorials - + About - + About Qt - + Name - + Please enter a name for the new profile - + failed to create profile: %1 - + Show tutorial? - + 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. - + + Never ask to show tutorials + + + + Downloads in progress - + There are still downloads in progress, do you really want to quit? - + Plugin "%1" failed: %2 - + Plugin "%1" failed - - Browse Mod Page - - - - - <Edit...> - - - - - (no executables) - - - - + This bsa is enabled in the ini file so it may be required! - + Activating Network Proxy - + Notice: Your current MO version (%1) is lower than the previously used one (%2). The GUI may not downgrade gracefully, so you may experience oddities. However, there should be no serious issues. - + Choose Mod - + Mod Archive - + Start Tutorial? - + You're about to start a tutorial. For technical reasons it's not possible to end the tutorial early. Continue? - + failed to change origin name: %1 - + failed to move "%1" from mod "%2" to "%3": %4 - + failed to rename mod: %1 - + Overwrite? - + This will replace the existing mod "%1". Continue? - + failed to remove mod "%1" - + failed to rename "%1" to "%2" - - - - - + + + + + Confirm - + Remove the following mods?<br><ul>%1</ul> - + failed to remove mod: %1 - - - + + + Failed - + Installation file no longer exists - + Mods installed with old versions of MO can't be reinstalled in this way. - + Failed to create backup. - + Endorsing multiple mods will take a while. Please wait... - + Unendorsing multiple mods will take a while. Please wait... - + Failed to display overwrite dialog: %1 - + Restore all hidden files in the following mods?<br><ul>%1</ul> - - + + Are you sure? - + About to restore all hidden files in: - + Opening Nexus Links - + You are trying to open %1 links to Nexus Mods. Are you sure you want to do this? - + Nexus ID for this mod is unknown - - + + Opening Web Pages - - + + You are trying to open %1 Web Pages. Are you sure you want to do this? - - No valid Web Page for this mod - - - - + <table cellspacing="5"><tr><th>Type</th><th>All</th><th>Visible</th><tr><td>Enabled mods:&emsp;</td><td align=right>%1 / %2</td><td align=right>%3 / %4</td></tr><tr><td>Unmanaged/DLCs:&emsp;</td><td align=right>%5</td><td align=right>%6</td></tr><tr><td>Mod backups:&emsp;</td><td align=right>%7</td><td align=right>%8</td></tr><tr><td>Separators:&emsp;</td><td align=right>%9</td><td align=right>%10</td></tr></table> - + <table cellspacing="6"><tr><th>Type</th><th>Active </th><th>Total</th></tr><tr><td>All plugins:</td><td align=right>%1 </td><td align=right>%2</td></tr><tr><td>ESMs:</td><td align=right>%3 </td><td align=right>%4</td></tr><tr><td>ESPs:</td><td align=right>%7 </td><td align=right>%8</td></tr><tr><td>ESMs+ESPs:</td><td align=right>%9 </td><td align=right>%10</td></tr><tr><td>ESLs:</td><td align=right>%5 </td><td align=right>%6</td></tr></table> - - - + + + Create Mod... - + This will create an empty mod. Please enter a name: - - + + A mod with this name already exists - + Create Separator... - + This will create a new separator. Please enter a name: - + A separator with this name already exists - + This will move all files from overwrite into a new, regular mod. Please enter a name: - + Move successful. - + About to recursively delete: - + + + You are not currently authenticated with Nexus. Please do so under Settings -> Nexus. + + + + Continue? - + 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. - + Sorry - + I don't know a versioning scheme where %1 is newer than %2. - + Really enable all visible mods? - + Really disable all visible mods? - + Export to csv - + 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. - + Select what mods you want export: - + All installed mods - + Only active (checked) mods from your current profile - + All currently visible mods in the mod list - + Choose what Columns to export: - + Mod_Priority - + Mod_Name - + Notes_column - + Mod_Status - + Primary_Category - + Nexus_ID - + Mod_Nexus_URL - + Mod_Version - + Install_Date - + Download_File_Name - + export failed: %1 - + Open Game folder - + Open MyGames folder - + Open INIs folder - + Open Instance folder - + Open Mods folder - + Open Profile folder - + Open Downloads folder - + Open MO2 Install folder - + Open MO2 Plugins folder - + Open MO2 Stylesheets folder - + Open MO2 Logs folder - + Install Mod... - + Create empty mod - + Create Separator - + Enable all visible - + Disable all visible - + Check for updates - + Export to csv... - - + + Send to - - + + Top - - + + Bottom - - + + Priority... - + Separator... - + All Mods - + Sync to Mods... - + Move content to Mod... - + Clear Overwrite... - - - + + + Open in Explorer - + Restore Backup - + Remove Backup... - - + + Ignore missing data - - + + Mark as converted/working - - + + Visit on Nexus - - + + Visit on %1 - - + + Change Categories - - + + Primary Category - + Rename Separator... - + Remove Separator... - - + + Select Color... - - + + Reset Color - + Change versioning scheme - + Force-check updates - + Un-ignore update - + Ignore update - - + + Enable selected - - + + Disable selected - + Rename Mod... - + Reinstall Mod - + Remove Mod... - + Restore hidden files - + Un-Endorse - + Won't endorse - + Endorsement state unknown - + Start tracking - + Stop tracking - + Tracked state unknown - + Information... - - + + Exception: - - + + Unknown exception - + %1 more - + 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. @@ -3668,12 +4138,12 @@ You can also use online editors and converters instead. - + Enable Mods... - + Delete %n save(s) @@ -3681,230 +4151,268 @@ You can also use online editors and converters instead. - + Restart Mod Organizer - + Mod Organizer must restart to finish configuration changes - + Restart - + Continue - + Some things might be weird. - + Can't change download directory while downloads are in progress! - - + + Set Priority - + Set the priority of the selected plugins - + Update available - + Do you want to endorse Mod Organizer on %1 now? - + Abstain from Endorsing Mod Organizer - + Are you sure you want to abstain from endorsing Mod Organizer 2? You will have to visit the mod page on the %1 Nexus site to change your mind. - + Thank you for endorsing MO2! :) - + Please reconsider endorsing MO2 on Nexus! - + + None of your %1 mods appear to have had recent file updates. + + + + + All of your mods have been checked recently. We restrict update checks to help preserve your available API requests. + + + + Thank you! - + Thank you for your endorsement! - + Mod ID %1 no longer seems to be available on Nexus. - + Request to Nexus failed: %1 - - + + failed to read %1: %2 - + Error - + failed to extract %1 (errorcode %2) - + Extract BSA - + This archive contains invalid hashes. Some files may be broken. - + Extract... - + <Multiple> - + Remove '%1' from the toolbar - + Enable all - + Disable all - + Unlock load order - + Lock load order - + Open Origin in Explorer - + Open Origin Info... - + + Sorting plugins + + + + + Are you sure you want to sort your plugins list? + + + + Backup of load order created - + Choose backup to restore - + No Backups - + There are no backups to restore - - + + Restore failed - - + + Failed to restore the backup. Errorcode: %1 - + Backup of mod list created - + A file with the same name has already been downloaded. What would you like to do? - + Overwrite - + Rename new file - + Ignore file - + Set the priority of the selected mods + + + + + + Browse Mod Page + + + + + <Edit...> + + + + + (no executables) + + MessageDialog @@ -3928,12 +4436,17 @@ You will have to visit the mod page on the %1 Nexus site to change your mind. - + + The update check has found a mod with a Nexus ID and source game of %1, but this game is not a valid Nexus source. + + + + All of your mods have been checked recently. We restrict update checks to help preserve your available API requests. - + You have mods that haven't been checked within the last month using the new API. These mods must be checked before we can use the bulk update API. This will consume significantly more API requests than usual. You will need to rerun the update check once complete in order to parse the remaining mods. @@ -4079,87 +4592,105 @@ Most mods do not have optional esps, so chances are good you are looking at an e - - The following conflicted files are provided by this mod + + + Files that exist in other mods but are overwritten by this mod + + + + + Winning file conflicts: - - The following conflicted files are provided by other mods + + + Files that are unused because they are overwritten by other mods - + + Losing file conflicts: + + + + + + Files that have no conflicts + + + + The following files have no conflicts - + Advanced - + Whether files that have no conflicts should be visible in the list - + Show files that have no conflicts - + Shows all mods overwriting or being overwritten by this mod - + Show all conflicting mods - + Shows only the nearest conflicting mods, in order of priority - + Show nearest conflicting mod - + Filter - + Categories - + Primary Category - + Nexus Info - + Mod ID - + Mod ID for this mod on Nexus. - + <!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; } @@ -4168,22 +4699,22 @@ p, li { white-space: pre-wrap; } - + Source Game - + Source game for this mod. - + <html><head/><body><p>Source game for this mod. This determines where the mod was downloaded from and decides where to fetch info, version updates, and send endorsements. Changing this will likely require you to enter a new Mod ID.</p></body></html> - + <!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; } @@ -4192,93 +4723,93 @@ p, li { white-space: pre-wrap; } - + Version - - + + Refresh - + Refresh all information from Nexus. - - + + Open in Browser - + Endorse - + Track - + about:blank - + Use Custom URL - + Notes - - - + + + Enter comments about the mod here. These are displayed in the notes column of the mod list. - + Set Color - + Reset Color - - - + + + Enter notes about the mod here. These can be viewed in the mod list by hovering over the notes column or the flags column. - + Filetree - + Open Mod in Explorer - + A directory view of this mod - + <!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; } @@ -4288,17 +4819,17 @@ p, li { white-space: pre-wrap; } - + Previous - + Next - + Close @@ -4337,12 +4868,12 @@ p, li { white-space: pre-wrap; } ModInfoRegular - + %1 contains no esp/esm/esl and no asset (textures, meshes, interface, ...) directory - + Categories: <br> @@ -4358,273 +4889,273 @@ p, li { white-space: pre-wrap; } ModList - + This entry contains files that have been created inside the virtual data tree (i.e. by the construction kit) - + Backup - + Separator - + No valid game data - + Not endorsed yet - + This mod is for a different<br> game, make sure it's compatible or it could cause crashes. - + Mod is being tracked on the website - + Contains hidden files - + Overwrites loose files - + Overwritten loose files - + Loose files Overwrites & Overwritten - + Redundant - + Overwrites an archive with loose files - + Archive is overwritten by loose files - + Overwrites another archive file - + Overwritten by another archive file - + Archive files overwrites & overwritten - + Non-MO - + invalid - + installed version: "%1", newest version: "%2" - + 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". - + This file has been marked as "Old". There is most likely an updated version of this file available. - + This file has been marked as "Deleted"! You may want to check for an update or remove the nexus ID from this mod! - + %1 minute(s) and %2 second(s) - + This mod will be available to check in %2. - + Categories: <br> - + Invalid name - + Name is already in use by another mod - + drag&drop failed: %1 - + Confirm - + Are you sure you want to remove "%1"? - + Conflicts - + Flags - + Content - + Mod Name - + Version - + Priority - + Category - + Source Game - + Nexus ID - + Installation - + Notes - - + + unknown - + Name of your mods - + Version of the mod (if available) - + Installation priority of your mod. The higher, the more "important" it is and thus overwrites files from mods with lower priority. - + Primary category of the mod. - + The source game which was the origin of this mod. - + Id of the mod as used on Nexus. - + Indicators of file conflicts between mods. - + Emblems to highlight things that might require attention. - + Depicts the content of the mod: - + Time this mod was installed - + User notes about the mod @@ -4659,39 +5190,82 @@ p, li { white-space: pre-wrap; } - NexusInterface + NexusConnectionUI - - Please pick the mod ID for "%1" + + Connected. - - You must authorize MO2 in Settings -> Nexus to use the Nexus API. + + Not connected. - - You've exceeded the Nexus API rate limit and requests are now being throttled. Your next batch of requests will be available in approximately %1 minutes and %2 seconds. + + Disconnected. - - Aborting download: Either you clicked on a premium-only link and your account is not premium, or the download link was generated by a different account than the one stored in Mod Organizer. + + Checking API key... - - empty response + + Received API key. - - invalid response + + Received user account information - - + + + Linked with Nexus successfully. + + + + + Failed to set API key + + + + + NexusInterface + + + Please pick the mod ID for "%1" + + + + + You must authorize MO2 in Settings -> Nexus to use the Nexus API. + + + + + You've exceeded the Nexus API rate limit and requests are now being throttled. Your next batch of requests will be available in approximately %1 minutes and %2 seconds. + + + + + Aborting download: Either you clicked on a premium-only link and your account is not premium, or the download link was generated by a different account than the one stored in Mod Organizer. + + + + + empty response + + + + + invalid response + + + + NexusManualKeyDialog @@ -4737,27 +5311,27 @@ p, li { white-space: pre-wrap; } NexusTab - + Current Version: %1 - + No update available - + Tracked - + Untracked - + <div style="text-align: center;"> <p>This mod does not have a valid Nexus ID. You can add a custom web @@ -4769,7 +5343,7 @@ p, li { white-space: pre-wrap; } NoConflictListModel - + File @@ -4777,211 +5351,211 @@ p, li { white-space: pre-wrap; } OrganizerCore - + File is write protected - + Invalid file format (probably a bug) - + Unknown error %1 - + Failed to write settings - + An error occurred trying to write back MO settings to %1: %2 - - + + Download started - + Download failed - - + + Installation cancelled - - + + Another installation is currently in progress. - - + + Installation successful - - + + Configure Mod - - + + This mod contains ini tweaks. Do you want to configure them now? - - + + mod not found: %1 - - + + Extraction cancelled - - + + The installation was cancelled while extracting files. If this was prior to a FOMOD setup, this warning may be ignored. However, if this was during installation, the mod will likely be missing files. - + file not found: %1 - + failed to generate preview for %1 - + Sorry - + Sorry, can't preview anything. This function currently does not support extracting from bsas. - + File '%1' not found. - + Failed to generate preview for %1 - + Failed to refresh list of esps: %1 - + Multiple esps/esls activated, please check that they don't conflict. - + You need to be logged in with Nexus - + Download? - + 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? - - + + failed to update mod list: %1 - - + + login successful - + Login failed - + Login failed, try again? - + login failed: %1. Download will not be associated with an account - + login failed: %1 - + login failed: %1. You need to log-in with Nexus to update MO. - + MO1 "Script Extender" load mechanism has left hook.dll in your game folder - - + + Description missing - + <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. - + failed to save load order: %1 - + Error - + The designated write target "%1" is not enabled. @@ -4989,12 +5563,12 @@ Continue? OverwriteConflictListModel - + File - + Overwritten Mods @@ -5094,12 +5668,12 @@ Continue? OverwrittenConflictListModel - + File - + Providing Mod @@ -5107,18 +5681,48 @@ Continue? PluginContainer - + + Plugin error + + + + + Mod Organizer failed to load the plugin '%1' last time it was started. + + + + + The plugin can be skipped for this session, blacklisted, or loaded normally, in which case it might fail again. Blacklisted plugins can be re-enabled later in the settings. + + + + + Skip this plugin + + + + + Blacklist this plugin + + + + + Load this plugin + + + + Some plugins could not be loaded - - + + Description missing - + The following plugins could not be loaded. The reason may be missing dependencies (i.e. python) or an outdated version: @@ -5177,108 +5781,108 @@ Continue? - + Plugin not found: %1 - - + + Confirm - + Really enable all plugins? - + Really disable all plugins? - + The file containing locked plugin indices is broken - + Origin - + This plugin can't be disabled (enforced by the game). - + Author - + Description - + Missing Masters - + Enabled Masters - + Loads Archives - + 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) - + Loads INI settings - + There is an ini file connected to this plugin. Its settings will be added to your game settings, overwriting in case of conflicts. - + This ESP is flagged as an ESL. It will adhere to the ESP load order but the records will be loaded in ESL space. - + Incompatible with %1 - + Depends on missing %1 - + Warning - + Error - + failed to restore load order for %1 @@ -5291,6 +5895,49 @@ Continue? + + PluginTypeName + + + Diagnose + + + + + Game + + + + + Installer + + + + + Mod Page + + + + + Preview + + + + + Tool + + + + + Proxy + + + + + File Mapper + + + PreviewDialog @@ -5326,18 +5973,18 @@ p, li { white-space: pre-wrap; } - - + + Fix - + No guided fix - + (There are no notifications) @@ -5404,12 +6051,12 @@ p, li { white-space: pre-wrap; } - + Missing profile-specific game INI files! - + Some of your profile-specific game INI files were missing. They will now be copied from the vanilla game folder. You might want to double-check your settings. Missing files: @@ -5417,12 +6064,12 @@ Missing files: - + Delete profile-specific game INI files? - + 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.) @@ -5587,88 +6234,93 @@ p, li { white-space: pre-wrap; } - + Archive invalidation isn't required for this game. - - + + This game does not support profile-specific game saves. + + + + + failed to create profile: %1 - + Name - + Please enter a name for the new profile - + failed to copy profile: %1 - + Invalid name - + Invalid profile name - + Deleting active profile - + Unable to delete active profile. Please change to a different profile first. - + Confirm - + Are you sure you want to remove this profile (including profile-specific save games, if any)? - + Profile broken - + 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? - + Rename Profile - + New Name - + failed to change archive invalidation state: %1 - + failed to determine if invalidation is active: %1 @@ -5676,79 +6328,78 @@ p, li { white-space: pre-wrap; } QObject - + Filter - - + + INI file is read-only - + Mod Organizer is attempting to write to "%1" which is currently set to read-only. - + Clear the read-only flag - + Allow the write once - + The file will be set to read-only again. - + Skip this file - - - - + - + + + Error - + You can reset these choices by clicking "Reset Dialog Choices" in the General tab of the Settings - + Always ask - - + + Remember my choice - + Remember my choice for %1 @@ -5758,84 +6409,84 @@ p, li { white-space: pre-wrap; } - + removal of "%1" failed: %2 - + removal of "%1" failed - + "%1" doesn't exist (remove) - + Error %1 - - + + failed to create directory "%1" - - + + failed to copy "%1" to "%2" - + %1 B - + %1 MB - + %1 GB - + %1 TB - + %1 GB/s - + %1 TB/s - + %1 KB - + %1 B/s - + %1 KB/s - + %1 MB/s @@ -5850,8 +6501,8 @@ p, li { white-space: pre-wrap; } - + None @@ -6041,137 +6692,36 @@ Destination: - - Deleting instance folder - - - - - This will delete the instance folder. - The folder will be deleted: "%1" - - - - - Move the folder to the recycle bin - - - - - Delete the folder permanently - - - - - Could not delete instance folder "%1". - -%2 - - - - - Select an instance to delete - - - - - Deleting an instance will delete all the mods, downloads, profiles (including profile-specific saves) and anything in the overwrite folder.<br><br>Custom paths outside of the instance folder will not be deleted. - - - - - Enter a Name for the new Instance - - - - - Enter a new name or select one from the suggested list: -(This is just a name for the Instance and can be whatever you wish, - the actual game selection will happen on the next screen regardless of chosen name) - - - - - - Canceled - - - - - Invalid instance name - - - - - The instance name "%1" is invalid. Use the name "%2" instead? - - - - - The instance "%1" already exists. - - - - - Please choose a different instance name, like: "%1 1" . - - - - - Choose Instance - - - - - 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). - - - - - New - - - - - Create a new instance. + + + Portable - - Portable + + Cannot open instance '%1', failed to read INI file %2. - - Use MO folder for data. + + Cannot open instance '%1', the managed game was not found in the INI file %2. Select the game managed by this instance. - - Manage Instances + + Cannot open instance '%1', the game plugin '%2' doesn't exist. It may have been deleted by an antivirus. Select another instance. - - Delete an Instance. + + Cannot open instance '%1', the game directory '%2' doesn't exist or the game plugin '%3' doesn't recognize it. Select the game managed by this instance. - failed to create %1 - - - Data directory created - - - - - New data directory created at %1. If you don't want to store a lot of data there, reconfigure the storage directories via settings. - - General messages @@ -6208,9 +6758,9 @@ Destination: - + Warning @@ -6260,112 +6810,51 @@ Destination: + - Failed to create "%1". Your user account probably lacks permission. - - Plugin to handle %1 no longer installed. An antivirus might have deleted files. - Plugin to handle %1 no longer installed - - - - - - - The configured path to the game directory (%1) appears to be a symbolic (or other) link. This setup is incompatible with MO2's VFS and will not run correctly. - - - - - Could not use configuration settings for game "%1", path "%2". - - - - - - - Please select the installation of %1 to manage - - - - - - - Please select the game to manage - - - - - Canceled finding %1 in "%2". - - - - - Canceled finding game in "%1". - - - - - %1 not identified in "%2". The directory is required to contain the game binary. - - - - - No game identified in "%1". The directory is required to contain the game binary.<br><br><b>These are the games supported by Mod Organizer:</b><ul>%2</ul> - - - - - Please select the game edition you have (MO can't start the game correctly if this is set incorrectly!) - - - - + failed to start shortcut: %1 - + failed to start application: %1 - + + Mod Organizer - + An instance of Mod Organizer is already running - - - Failed to set up instance - - <Unmanaged> - + Please use "Help" from the toolbar to get usage instructions to all elements - - + + <Manage...> - + failed to parse profile %1: %2 @@ -6391,185 +6880,174 @@ Destination: - + Save changes? - + Save changes to "%1"? - + Connecting to Nexus... - + Waiting for Nexus... - + Opened Nexus in browser. - + Switch to your browser and accept the request. - + Finished. - + No answer from Nexus. - - + + A firewall might be blocking Mod Organizer. - + Nexus closed the connection. - + Cancelled. - + Failed to request %1 - - + + Cancelled - + Internal error - + HTTP code %1 - + Invalid JSON - + Bad response - + API key is empty - + SSL error - + Timed out - + One of the configured MO2 directories (profiles, mods, or overwrite) is on a path containing a symbolic (or other) link. This is likely to be incompatible with MO2's virtual filesystem. - + failed to initialize plugin %1: %2 - - Plugin error - - - - - It appears the plugin "%1" failed to load last startup and caused MO to crash. Do you want to disable it? -(Please note: If this is the first time you see this message for this plugin you may want to give it another try. The plugin may be able to recover from the problem) - - - - + failed to access %1 - + failed to set file time %1 - - - + + + No profile set - + Before you can use ModOrganizer, you need to create at least one profile. ATTENTION: Run the game at least once before creating a profile! - + '%1': file is blocked (%2) - + '%1' seems to be missing, an antivirus may have deleted it - + %1 is loaded. This program is known to cause issues with Mod Organizer, such as freezing or blank windows. Consider uninstalling it. - + %1 is loaded. This program is known to cause issues with Mod Organizer and its virtual filesystem, such script extenders refusing to run. Consider uninstalling it. - - - + + + attempt to store setting for unknown plugin "%1" - + Failed - + Failed to start the helper application: %1 @@ -6606,112 +7084,73 @@ This program is known to cause issues with Mod Organizer, such as freezing or bl - + Confirm? - + This will reset all the choices you made to dialogs and make them all visible again. Continue? - - Connected. + + + + + + + + + + + + + + Cancel - - Not connected. + + + + Enter API Key Manually - - Disconnected. + + + + Connect to Nexus - - Checking API key... + + + + + + N/A - - Received API key. + + Failed to create "%1", you may not have the necessary permissions. Path remains unchanged. - - Received user acount information + + Select base directory - - Linked with Nexus successfully. + + Select download directory - - Failed to set API key - - - - - - - - - - - - - - - - Cancel - - - - - - - Enter API Key Manually - - - - - - - Connect to Nexus - - - - - - - - - N/A - - - - - Failed to create "%1", you may not have the necessary permissions. Path remains unchanged. - - - - - Select base directory - - - - - Select download directory - - - - - Select mod directory + + Select mod directory @@ -7047,6 +7486,219 @@ You can restart Mod Organizer as administrator and try launching the program aga Disabled because + + + One of the following plugins must be enabled: %1. + + + + + This plugin can only be enabled if the '%1' plugin is installed and enabled. + + + + + This plugin can only be enabled for the following game(s): %1. + + + + + + + + Cannot disable plugin + + + + + The '%1' plugin is used by the current game plugin and cannot disabled. + + + + + <p>Disabling the '%1' plugin will also disable the following plugins:</p><ul>%1</ul><p>Do you want to continue?</p> + + + + + Really disable plugin? + + + + + This plugin is required for Mod Organizer to work properly and cannot be disabled. + + + + + Instance at '%1' not found. Select another instance. + + + + + Instance at '%1' not found. You must create a new instance + + + + + The instance name must be a valid folder name. + + + + + An instance with this name already exists. + + + + + Disabling the '%1' plugin will prevent the following %2 plugin(s) from working: + + + + + + + + Global + + + + + + Instance type: %1 + + + + + ? + + + + + Find game installation for %1 + + + + + Find game installation + + + + + + + Unrecognized game + + + + + The folder %1 does not seem to contain a game Mod Organizer can manage. + + + + + See details for the list of supported games. + + + + + No installation found + + + + + Browse... + + + + + The folder must contain a valid game installation + + + + + The folder %1 does not seem to contain an installation for <span style="white-space: nowrap; font-weight: bold;">%2</span> or for any other game Mod Organizer can manage. + + + + + + Use this folder for %1 + + + + + + I know what I'm doing + + + + + + Incorrect game + + + + + The folder %1 seems to contain an installation for <span style="white-space: nowrap; font-weight: bold;">%2</span>, not <span style="white-space: nowrap; font-weight: bold;">%3</span>. + + + + + Manage %1 instead + + + + + Instance location: %1 + + + + + Instance name: %1 + + + + + + Base directory: %1 + + + + + Downloads + + + + + Mods + + + + + Profiles + + + + + Overwrite + + + + + Game: %1 + + + + + Game location: %1 + + + + + Creating %1 + + QueryOverwriteDialog @@ -7165,58 +7817,58 @@ p, li { white-space: pre-wrap; } SelfUpdater - + New update available (%1) - + Do you want to install update? All your mods and setup will be left untouched. Select Show Details option to see the full change-log. - + Install - + Download failed - + Failed to find correct download, please try again later. - + Update - + Download in progress - + Download failed: %1 - + Failed to install update: %1 - + Failed to start %1: %2 - + Error @@ -7574,32 +8226,32 @@ Select Show Details option to see the full change-log. - + Disable automatic internet features - + 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) - + Offline Mode - + Use a proxy for network connections. - + 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. - + Use HTTP Proxy (Uses System Settings) @@ -7620,102 +8272,117 @@ Select Show Details option to see the full change-log. - + + Tracked Integration + + + + Associate with "Download with manager" links - + Remove cache and cookies. - + Clear Cache - + Known Servers (updated on download) - + Preferred Servers (Drag & Drop) - + Steam - + Username - + <html><head/><body><p>If you save your steam user ID and password here, they will be used when logging into steam.</p></body></html> - + Password - + Plugins - + Author: - + Version: - + Description: - + + Enabled + + + + Key - + Value - + + No plugin found. + + + + Blacklisted Plugins (use <del> to remove): - + Workarounds - + Steam App ID - + The Steam AppID for your game - + <!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; } @@ -7731,17 +8398,17 @@ p, li { white-space: pre-wrap; } - + Load Mechanism - + Select loading mechanism. See help for details. - + 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. @@ -7752,28 +8419,28 @@ If you use the Steam version of Oblivion the default will NOT work. In this case - + Enforces that inactive ESPs and ESMs are never loaded. - + 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. - + Hide inactive ESPs/ESMs - + 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. - + 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. @@ -7781,66 +8448,66 @@ If you disable this feature, MO will only display official DLCs this way. Please - + Display mods installed outside MO - + If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on) - + 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. - + Force-enable game files - - + + Disable this to prevent the GUI from being locked when running an executable. This may result in abnormal behavior. - + Lock GUI when running executable - + Enable parsing of Archives. This is an Experimental Feature. Has negative effects on performance and known incorrectness. - + <html><head/><body><p>By default, MO will parse archive files (BSA, BA2) to calculate conflicts between the contents of the archive files and other loose files. This process has a noticeable cost in performance.</p><p>This feature should not be confused with the archive management feature offered by MO1. MO2 will only show conflicts with archives and will NOT load them into the game or program.</p><p>If you disable this feature, MO will only display conflicts between loose files.</p></body></html> - + Enable parsing of Archives (Experimental Feature) - - + + 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! - + Back-date BSAs - + 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 @@ -7849,43 +8516,43 @@ programs you are intentionally running. - + 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. - + Configure Executables Blacklist - - + + 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. - + Reset Window Geometries - + These are workarounds for problems with Mod Organizer. Please make sure you read the help text before changing anything here. - + Diagnostics - + Hint: right click link and copy link location - + 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. @@ -7895,17 +8562,17 @@ programs you are intentionally running. - + Log Level - + Decides the amount of data printed to "ModOrganizer.log" - + 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 regular use. On the "Error" level the log file usually remains empty. @@ -7913,17 +8580,17 @@ programs you are intentionally running. - + Crash Dumps - + Decides which type of crash dumps are collected when injected processes crash. - + Decides which type of crash dumps are collected when injected processes crash. "None" Disables the generation of crash dumps by MO. @@ -7934,17 +8601,17 @@ programs you are intentionally running. - + Max Dumps To Keep - + Maximum number of crash dumps to keep on disk. Use 0 for unlimited. - + Maximum number of crash dumps to keep on disk. Use 0 for unlimited. Set "Crash Dumps" above to None to disable crash dump collection. @@ -7952,7 +8619,7 @@ programs you are intentionally running. - + LOOT Log Level @@ -7967,29 +8634,6 @@ programs you are intentionally running. - - SingleInstance - - - SHM error: %1 - - - - - failed to connect to running instance: %1 - - - - - failed to communicate with running instance: %1 - - - - - failed to receive data from secondary instance: %1 - - - StatusBar @@ -7997,11 +8641,6 @@ programs you are intentionally running. Unknown game - - - Portable - - SyncOverwriteDialog @@ -8036,6 +8675,14 @@ programs you are intentionally running. + + T + + + Plugin + + + TaskDialog @@ -8160,22 +8807,22 @@ On Windows XP: - + Characters for profile %1 - + Overwrite - + Overwrite the file "%1" - + Confirm @@ -8183,7 +8830,7 @@ On Windows XP: UsvfsConnector - + Preparing vfs @@ -8197,7 +8844,7 @@ On Windows XP: - + Connecting to Nexus... @@ -8212,557 +8859,9 @@ On Windows XP: - + Trying again... - - tutorial_conflictresolution_main - - - There are multiple types of conflicts you may encounter when dealing with Mods. This tutorial will try to cover and explain how to deal with all of them. - - - - - First up are file conflicts. These occur when two mods contain the same file. Most commonly this happens when several mods replace the same standard asset from the game, like the texture of an armor. - - - - - As an example, say you install "ModA" which contains stylish new iron and leather armor. Then you install "ModB" which contains sexy ebony and leather armor. Obviously there is a conflict now: which leather armor to use? - - - - - If you were to install the mods manually, when installing "ModB" you would be asked if you want to overwrite conflicting files. If you choose yes, you get the leather armor from "ModB" otherwise you keep the one from "ModA". If you later decide you made the wrong choice, you have to reinstall one of the mods. - - - - - With MO, both ModA and ModB get installed completely (no overwrite dialog) and by default "ModB" gets to provide the leather armor because it's automatically assigned the higher priority. - - - - - However, you can change the mod priority at any time using drag&drop on this list. If you assign "ModA" a higher priority, it provides the leather armor, no re-installation required. Since the priorities of mods in this list are treated as if the mods were installed in that order, I tend to talk about "installation order". - - - - - If the "Flags"-column is enabled in the mod list, it will show you which mods are involved in a conflict and how... - - - - - <img src="qrc:///MO/gui/emblem_conflict_overwrite" /> indicates that the mod overwrites files that are also available in another mod. - - - - - <img src="qrc:///MO/gui/emblem_conflict_overwritten" /> indicates that the mod is <b>partially</b> overwritten by another. - - - - - <img src="qrc:///MO/gui/emblem_conflict_mixed" /> indicates that both of the above is true. - - - - - <img src="qrc:///MO/gui/emblem_conflict_redundant" /> indicates that the mod is completely overwritten by another. You could as well disable it. - - - - - There are two ways to see the individual files involved in a conflict: - - - - - Option A: Switch to the "Data"-tab if necessary - - - - - ... here, if you mark the highlighted control, the tree will only display files in conflict. In the right column, it says which mod currently provides the mod (because it has highest priority) and if you hover your mouse over that info, it will list which other mods contains it. - - - - - Option B: Open the <i>Information</i>-Dialog of an <b>enabled</b> mod you're interested in by either double-clicking it or selecting <i>Information...</i> from the right-click menu - - - - - This was everything to know about file conflicts. The second type of conflict we have to deal with are "record conflicts". - - - - - I told you in the "First Steps" tutorial how the esp/esm/esl plugins contain changes to the game world like modifications to the terrain or existing NPCs. Each change like this is stored in a record, hence the name "record conflict". For example when two mods try to change the same location, only one change can become active. - - - - - As with file conflicts you can't really fix these conflicts, you have to choose which change you want. This time around however, if you choose wrong, your game may become unstable because there may be dependencies between the records of a mod. - - - - - Please open the "Plugins"-tab... - - - - - Again you can use drag&drop to change priorities of plugins, thus deciding which plugin takes precedence in regards to conflicts. This is commonly called the "load order". But how do you know how to order the plugins? - - - - - Unlike with file conflicts, MO does not provide help on finding conflicts. The good news is, there already is a perfect tool for that called LOOT. LOOT is available on the Nexus and integrates neatly with MO. Basically, if you don't have LOOT yet, install it once this tutorial is over. - - - - - After you installed LOOT in the default location (follow its instructions), start MO again and LOOT should automatically appear as an Executable... - - - - - When you run LOOT, it will automatically re-organize plugins for best compatibility (overwriting your manual changes). It will also open a report in your browser that warns about incompatibilities. You should read the report, at least for new mods. - - - - - The final type of conflicts are also "record conflicts". Like the previous type. It's confusing, so I'll just call them "lists conflicts" instead. The difference is the types of records in conflict. The ones in question here can be merged so you may be able to get all modifications in your game. - - - - - One common example of such records are leveled lists that contain all the items that may spawn at a specific character level. Traditionally, if multiple mods add items to such a list, only one is in effect... - - - - - ... but there are tools to merge those mods so you can have the effects of all of them. Again, this functionality is not integrated with MO because there are already great tools. For Oblivion and Skyrim look for wrye bash, for fallout 3/nv it's wrye flash. For Skyrim there is also "SkyBash". All of these can create a so-called "bashed patch" which is a plugin that contains the combined mergeable records from all your mods. - - - - - This completes the tutorial. - - - - - tutorial_conflictresolution_modinfo - - - Please switch to the "Conflicts"-Tab. - - - - - Here you can see a list of files in this mod that out-prioritize others in a file conflict and one with files where this mod is overridden. - - - - - Please close the information dialog again. - - - - - tutorial_firststeps_browser - - - This is a fully featured browser that is set up to open the correct nexus page for your game. You can download any mod using the "DOWNLOAD WITH MANAGER"-button or the "manual"-link and it will be downloaded by MO. - - - - - tutorial_firststeps_main - - - Welcome to the ModOrganizer Tutorial! This will guide you through the most common features of MO. -Please go along with the tutorial because some things can't be demonstrated if you skip something. - - - - - Before we continue with the step-by-step tutorial, I'd like to tell you about the other ways you can receive help on ModOrganizer. - - - - - The highlighted button provides hints on solving potential problems MO recognized automatically. - - - - - -There IS a notification now but you may want to hold off on clearing it until after completing the tutorial. - - - - - This button provides multiple sources of information and further tutorials. - - - - - Finally there are tooltips on almost every part of Mod Organizer. If there is a control in MO you don't understand, please try hovering over it to get a short description or use "Help on UI" from the help menu to get a longer explanation - - - - - This list displays all mods installed through MO. It also displays installed DLCs and some mods installed outside MO but you have limited control over those in MO. - - - - - Before we start installing mods, let's have a quick look at the settings. - - - - - Now it's time to install a few mods!Please go along with this because we need a few mods installed to demonstrate other features - - - - - There are a few ways to get mods into ModOrganizer. If you associated MO with NXM links in the settings you can now use your regular browser to send downloads from Nexus to MO. Click on "Nexus" to open nexus, find a mod and click the green download buttons on Nexus saying "Download with Manager". - - - - - You can also install mods from disk using the "Install Mod" button. - - - - - Downloads will appear on the "Downloads"-tab here. You have to download and install at least one mod to proceed. - - - - - Great, you just installed your first mod. Please note that the installation procedure may differ based on how a mod was packaged. - - - - - Now you know all about downloading and installing mods but they are not enabled yet... - - - - - Install a few more mods if you want, then enable mods by checking them in the left pane. Mods that aren't enabled have no effect on the game whatsoever. - - - - - For some mods, enabling it on the left pane is all you have to do... - - - - - ...but most contain plugins. These are plugins for the game and are required to add stuff to the game (new weapons, armors, quests, areas, ...). Please open the "Plugins"-tab to get a list of plugins. - - - - - You will notice some plugins are grayed out. These are part of the main game and can't be disabled. - - - - - A single mod may contain zero, one or multiple esps. Some or all may be optional. If in doubt, please consult the documentation of the individual mod. To do so, right-click the mod and select "Information". - - - - - Now you know how to download, install and enable mods. -It's important you always start the game from inside MO, otherwise the mods you installed here won't work. - - - - - This combobox lets you choose <i>what</i> to start. This way you can start the game, Launcher, Script Extender, the Creation Kit or other tools. If you miss a tool you can also configure this list but that is an advanced topic. - - - - - This completes the basic tutorial. As homework go play a bit! After you have installed more mods you may want to read the tutorial on conflict resolution. - - - - - tutorial_firststeps_modinfo - - - This dialog tries to expose as much information about a mod as possible. Depending on the mod this may include readmes, screenshots, optional plugins and so on. If a certain type of information was not found in a mod, the corresponding tab is grayed out. - - - - - If you installed the mod from Nexus, the corresponding tab should give you direct access to the mod page. - - - - - We may revisit this screen in later tutorials. - - - - - tutorial_firststeps_settings - - - You can use your regular browser to download from Nexus. -Please open the "Nexus"-tab - - - - - Click this button so that "DOWNLOAD WITH MANAGER"-buttons are download with Mod Organizer. - - - - - Use this interface to obtain an API key from NexusMods. This is used for all API connections - downloads, updates etc. MO2 uses the Windows Credential Manager to store this data securely. If the SSO page on Nexus is failing, use the manual entry and copy the API key from your profile. - - - - - tutorial_primer_main - - - This window shows all the mods that are installed. The column headers can be used for sorting. Only checked mods are active in the current profile. - - - - - Each profile is a separate set of enabled mods and ini settings. - - - - - Perform various actions on your mod list, such as refreshing data and checking for mod updates. - - - - - Quick access to various directories, such as your MO2 mods, profiles, saves, and your active game location. - - - - - Restore a mod list backup. - - - - - Create a backup of your current mod list. - - - - - Running counter of your active mods. Hover to see a more detailed breakdown. - - - - - The dropdown allows various ways of grouping the mods shown in the mod list. - - - - - Show/hide the category pane. - - - - - Quickly filter the mod list as you type. - - - - - Switch between information views. - - - - - This shows mod categories and some meta categories (in angle-brackets). Select some to filter the mod list. For example select "<Checked>" to show only active mods. - - - - - Customizable list for choosing the program to run. - - - - - When this button is clicked, Mod Organizer creates a virtual directory structure then runs the program selected to the left. - - - - - Will create a shortcut for quick access. The shortcut can be placed in the toolbar at the top, in the Start Menu or on the Windows Desktop. - - - - - Log messages produced by MO. Please note that messages with a light bulb usually don't require your attention. - - - - - Indicator of your current NexusMods API request limits. - - - - - Change/manage MO2 instances or switch to portable mode. - - - - - Browse to and manually install a mod from an archive on your computer. - - - - - Automatically open NexusMods to browse and install mods via the API. - - - - - Manage your MO2 profiles. - - - - - Open the executable editor to add and modify applications you wish to run with MO2. - - - - - Select from a collection of additional tools, such as an INI editor, integrated FNIS updater, and more. - - - - - Configure Mod Organizer. - - - - - See the status of and/or endorse MO2 on NexusMods. - - - - - Notifications about the current setup. - - - - - Activates if there is an update for MO. Please note that if, for any reason, MO can't communicate with NMM, this will not work either. - - - - - Access more information about MO2, including these tutorials, a link to the development discord, information about the devs and dependencies. - - - - - Plugins (esp/esm/esl files) of the mods in the current profile. They need to be checked to be loaded. - - - - - Automatically sort plugins using the bundled LOOT application. - - - - - Restore a backup of your plugin list order. - - - - - Save a backup of your plugin list order. - - - - - Counter of your total active plugins. Hover to see a breakdown of plugin types. - - - - - Quickly filter plugin list as you type. - - - - - All the asset archives (.bsa files) for all active mods. - - - - - The directory tree and all files that the program will see. - - - - - Save game browser. Shows all the saves for the current profile and whether or not the current mod-load status is correct. - - - - - Shows the mods that have been downloaded and if they’ve been installed. - - - - - Click to quit - - - - - tutorial_window_installer - - - This mod has been packaged in a way that Mod Organizer did not automatically recognize... - - - - - You can use drag&drop on this list to fix the structure of the mod. - - - - - The correct structure replicates the data-directory of the game. That means esps, the "meshes"- or "textures"-directory and so on should be directly below "<data>". - - - - - You can also disable files and directories that you don't want to unpack. - - - - - From the context menu (right-click) you can open textfiles, in case you want to access a readme. - - - - - This text will turn green if MO thinks the structure looks good. - - - -- cgit v1.3.1 From 32072ca19ec1ab520030a1fb411d8f2fca322374 Mon Sep 17 00:00:00 2001 From: Mikaël Capelle Date: Thu, 19 Nov 2020 21:21:38 +0100 Subject: Return shared_ptr in IPlugin::requirements(). --- src/plugincontainer.cpp | 4 +--- src/plugincontainer.h | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/plugincontainer.cpp b/src/plugincontainer.cpp index f7a556e0..fc7f5cd0 100644 --- a/src/plugincontainer.cpp +++ b/src/plugincontainer.cpp @@ -119,9 +119,7 @@ PluginRequirements::PluginRequirements( } void PluginRequirements::fetchRequirements() { - for (auto* requirement : m_Plugin->requirements()) { - m_Requirements.emplace_back(requirement); - } + m_Requirements = m_Plugin->requirements(); } IPluginProxy* PluginRequirements::proxy() const diff --git a/src/plugincontainer.h b/src/plugincontainer.h index 36edfad9..0c1290b4 100644 --- a/src/plugincontainer.h +++ b/src/plugincontainer.h @@ -109,7 +109,7 @@ private: MOBase::IPlugin* m_Plugin; MOBase::IPluginProxy* m_PluginProxy; MOBase::IPlugin* m_Master; - std::vector> m_Requirements; + std::vector> m_Requirements; MOBase::IOrganizer* m_Organizer; std::vector m_RequiredFor; -- cgit v1.3.1 From 0a912afe72a8fb765f240d59db17f7b50094b014 Mon Sep 17 00:00:00 2001 From: Mikaël Capelle Date: Sat, 21 Nov 2020 12:13:20 +0100 Subject: Add timer to the save list watcher to avoid error during refresh. --- src/mainwindow.cpp | 5 ++++- src/mainwindow.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index ecb4319b..04833e6a 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -430,7 +430,10 @@ MainWindow::MainWindow(Settings &settings this, &MainWindow::refresherProgress); connect(m_OrganizerCore.directoryRefresher(), SIGNAL(error(QString)), this, SLOT(showError(QString))); - connect(&m_SavesWatcher, SIGNAL(directoryChanged(QString)), this, SLOT(refreshSavesIfOpen())); + m_SavesWatcherTimer.setSingleShot(true); + m_SavesWatcherTimer.setInterval(500); + connect(&m_SavesWatcher, &QFileSystemWatcher::directoryChanged, [this]() { m_SavesWatcherTimer.start(); }); + connect(&m_SavesWatcherTimer, &QTimer::timeout, this, &MainWindow::refreshSavesIfOpen); connect(&m_OrganizerCore.settings(), SIGNAL(languageChanged(QString)), this, SLOT(languageChange(QString))); connect(&m_OrganizerCore.settings(), SIGNAL(styleChanged(QString)), this, SIGNAL(styleChanged(QString))); diff --git a/src/mainwindow.h b/src/mainwindow.h index da916d2a..da7bb6ee 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -345,6 +345,7 @@ private: std::unique_ptr m_IntegratedBrowser; + QTimer m_SavesWatcherTimer; QFileSystemWatcher m_SavesWatcher; QByteArray m_ArchiveListHash; -- cgit v1.3.1 From f3f0036a056b17ed481cf3ec4dea78a59c04b16e Mon Sep 17 00:00:00 2001 From: Mikaël Capelle Date: Mon, 23 Nov 2020 15:30:21 +0100 Subject: Fix PluginContainer::setUserInterface(). --- src/mainwindow.cpp | 4 ++-- src/modinfowithconflictinfo.cpp | 4 ++-- src/modinfowithconflictinfo.h | 4 +++- src/plugincontainer.cpp | 18 ++++++++++-------- src/plugincontainer.h | 2 +- 5 files changed, 18 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 04833e6a..7558076d 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -511,6 +511,7 @@ MainWindow::MainWindow(Settings &settings m_Tutorial.expose("espList", m_OrganizerCore.pluginList()); m_OrganizerCore.setUserInterface(this); + m_PluginContainer.setUserInterface(this); connect(this, &MainWindow::userInterfaceInitialized, &m_OrganizerCore, &OrganizerCore::userInterfaceInitialized); for (const QString &fileName : m_PluginContainer.pluginFileNames()) { installTranslator(QFileInfo(fileName).baseName()); @@ -703,7 +704,7 @@ MainWindow::~MainWindow() try { cleanup(); - m_PluginContainer.setUserInterface(nullptr, nullptr); + m_PluginContainer.setUserInterface(nullptr); m_OrganizerCore.setUserInterface(nullptr); if (m_IntegratedBrowser) { @@ -1679,7 +1680,6 @@ void MainWindow::updateToolMenu() void MainWindow::registerModPage(IPluginModPage *modPage) { QAction *action = new QAction(modPage->icon(), modPage->displayName(), this); - modPage->setParentWidget(this); connect(action, &QAction::triggered, this, [this, modPage]() { if (modPage->useIntegratedBrowser()) { diff --git a/src/modinfowithconflictinfo.cpp b/src/modinfowithconflictinfo.cpp index 6e3f751e..ad7eda3f 100644 --- a/src/modinfowithconflictinfo.cpp +++ b/src/modinfowithconflictinfo.cpp @@ -15,7 +15,7 @@ namespace fs = std::filesystem; ModInfoWithConflictInfo::ModInfoWithConflictInfo( PluginContainer *pluginContainer, const MOBase::IPluginGame* gamePlugin, DirectoryEntry **directoryStructure) - : ModInfo(pluginContainer), m_GamePlugin(gamePlugin), + : ModInfo(pluginContainer), m_GamePlugin(gamePlugin), m_FileTree([this]() { return QDirFileTree::makeTree(absolutePath()); }), m_Valid([this]() { return doIsValid(); }), m_Contents([this]() { return doGetContents(); }), @@ -27,7 +27,7 @@ void ModInfoWithConflictInfo::clearCaches() } std::vector ModInfoWithConflictInfo::getFlags() const -{ +{ std::vector result = std::vector(); if (hasHiddenFiles()) { result.push_back(ModInfo::FLAG_HIDDEN_FILES); diff --git a/src/modinfowithconflictinfo.h b/src/modinfowithconflictinfo.h index e312a89a..0d11fcb1 100644 --- a/src/modinfowithconflictinfo.h +++ b/src/modinfowithconflictinfo.h @@ -34,7 +34,9 @@ public: * * @return true if the content is there, false otherwise. */ - virtual bool hasContent(int content) const override; /** + virtual bool hasContent(int content) const override; + + /** * @brief Retrieve a file tree corresponding to the underlying disk content * of this mod. * diff --git a/src/plugincontainer.cpp b/src/plugincontainer.cpp index fc7f5cd0..44c9a651 100644 --- a/src/plugincontainer.cpp +++ b/src/plugincontainer.cpp @@ -289,15 +289,17 @@ PluginContainer::~PluginContainer() { unloadPlugins(); } -void PluginContainer::setUserInterface(IUserInterface *userInterface, QWidget *widget) +void PluginContainer::setUserInterface(IUserInterface *userInterface) { - for (IPluginProxy *proxy : bf::at_key(m_Plugins)) { - proxy->setParentWidget(widget); - } - - if (userInterface != nullptr) { - for (IPluginModPage *modPage : bf::at_key(m_Plugins)) { - userInterface->registerModPage(modPage); + if (userInterface) { + for (IPluginProxy* proxy : bf::at_key(m_Plugins)) { + proxy->setParentWidget(userInterface->mainWindow()); + } + for (IPluginModPage* modPage : bf::at_key(m_Plugins)) { + modPage->setParentWidget(userInterface->mainWindow()); + } + for (IPluginTool* tool : bf::at_key(m_Plugins)) { + tool->setParentWidget(userInterface->mainWindow()); } } diff --git a/src/plugincontainer.h b/src/plugincontainer.h index 0c1290b4..26e12659 100644 --- a/src/plugincontainer.h +++ b/src/plugincontainer.h @@ -188,7 +188,7 @@ public: PluginContainer(OrganizerCore *organizer); virtual ~PluginContainer(); - void setUserInterface(IUserInterface *userInterface, QWidget *widget); + void setUserInterface(IUserInterface *userInterface); void loadPlugins(); void unloadPlugins(); -- cgit v1.3.1 From d855daf1031497f0ca72e3b64d257e7ce424ee80 Mon Sep 17 00:00:00 2001 From: Mikaël Capelle Date: Wed, 25 Nov 2020 21:18:37 +0100 Subject: Revert translation file. --- src/organizer_en.ts | 3549 +++++++++++++++++++++++++-------------------------- 1 file changed, 1725 insertions(+), 1824 deletions(-) (limited to 'src') diff --git a/src/organizer_en.ts b/src/organizer_en.ts index 646b3310..c65c946c 100644 --- a/src/organizer_en.ts +++ b/src/organizer_en.ts @@ -110,22 +110,22 @@ - + ...and all other contributors! - + Other Supporters && Contributors - + Tannin (Original Creator) - + Close @@ -178,17 +178,17 @@ p, li { white-space: pre-wrap; } AdvancedConflictListModel - + Overwrites - + File - + Overwritten By @@ -339,295 +339,6 @@ p, li { white-space: pre-wrap; } - - CreateInstanceDialog - - - Creating an instance - - - - - Creating a new instance - - - - - <h3>What is an instance?</h3> -<p>An instance is a full set of mods, downloads, profiles and configuration for a game. Each game must be managed in its own instance. Mod Organizer can freely switch between instances.</p> - - - - - <html><head/><body><p><a href="https://github.com/ModOrganizer2/modorganizer/wiki/Instances">More information</a></p></body></html> - - - - - Never show this page again - - - - - <h3>Select the type of instance to create.</h3> - - - - - Create a global instance - - - - - Global instances are stored in %1, but some paths can be changed to be on a different drive if necessary. A single installation of Mod Organizer can manage multiple global instances. - - - - - Create a portable instance - - - - - A portable instance stores everything in Mod Organizer's installation folder, currently %1. There can only be one portable instance per installation of Mod Organizer. - - - - - A portable instance already exists. - - - - - <h3>Select the game to manage.</h3> - - - - - Show all supported games - - - - - Filter - - - - - <h3>Select the game edition.</h3> - - - - - This game has multiple variants. The correct one must be selected or Mod Organizer will not be able to launch the game properly. - - - - - <h3>Customize the name for this <span style="white-space: nowrap;">%1</span> instance.</h3> - - - - - Instance name - - - - - There is already an instance with this name. - - - - - The name contains invalid characters. It must be a valid folder name. - - - - - <h3>Select a folder where the data should be stored.</h3> - - - - - This includes downloads, mods, profiles and overwrite for your <b>%1</b> instance. If there is enough space on this drive, you should use the default folder. - - - - - - - - - - ... - - - - - Location - - - - - Warning: This folder already exists. - - - - - - - - - - Folder - - - - - Warning: The folder contains invalid characters. - - - - - Mods - - - - - Overwrite - - - - - Base directory - - - - - Warning: The folder %1 already exists. - - - - - Downloads - - - - - Profiles - - - - - Use %BASE_DIR% to refer to the Base Directory. - - - - - Warning: The folder %1 contains invalid characters. - - - - - Show advanced options - - - - - <h3>Link Mod Organizer with your Nexus account</h3> - - - - - Linking with Nexus allows you to download mods directly from Mod Organizer and automatically check for updates. This is optional. - - - - - Connect to Nexus - - - - - Enter API Key Manually - - - - - <h3>Confirmation</h3> - - - - - The instance is about to be created. Review the information below and press 'Finish'. - - - - - Instance creation log - - - - - Launch the new instance - - - - - < Back - - - - - Next > - - - - - Cancel - - - - - Setting up instance %1 - - - - - Setting up an instance %1 - - - - - Creating instance... - - - - - Writing %1... - - - - - Format error. - - - - - Error %1. - - - - - Done. - - - - - Finish - - - CredentialsDialog @@ -669,44 +380,6 @@ p, li { white-space: pre-wrap; } - - DisableProxyPluginDialog - - - Really disable plugin? - - - - - Disabling the '%1' plugin will prevent the following plugins from working: - - - - - Plugin - - - - - Description - - - - - Do you want to continue? You will need to restart Mod Organizer for the change to take effect. - - - - - Yes - - - - - No - - - DownloadList @@ -851,137 +524,132 @@ p, li { white-space: pre-wrap; } - Open Meta File - - - - - - + + Reveal in Explorer - - + + Delete - + Un-Hide - + Hide - + Cancel - + Pause - + Resume - + Delete Installed Downloads... - + Delete Uninstalled Downloads... - + Delete All Downloads... - + Hide Installed... - + Hide Uninstalled... - + Hide All... - + Un-Hide All... - - - - + + + + Delete Files? - + This will permanently delete the selected download. Are you absolutely sure you want to proceed? - + This will remove all finished downloads from this list and from disk. Are you absolutely sure you want to proceed? - + This will remove all installed downloads from this list and from disk. Are you absolutely sure you want to proceed? - + This will remove all uninstalled downloads from this list and from disk. Are you absolutely sure you want to proceed? - - - + + + Hide Files? - + This will remove all finished downloads from this list (but NOT from disk). - + This will remove all installed downloads from this list (but NOT from disk). - + This will remove all uninstalled downloads from this list (but NOT from disk). @@ -1051,7 +719,7 @@ File %3: %4 - + remove: invalid download index %1 @@ -1066,256 +734,256 @@ File %3: %4 - + restore: invalid download index: %1 - + cancel: invalid download index %1 - + pause: invalid download index %1 - + resume: invalid download index %1 - + resume (int): invalid download index %1 - + No known download urls. Sorry, this download can't be resumed. - - + + query: invalid download index %1 - + Please enter the nexus mod id - + Mod ID: - + Please select the source game code for %1 - + Hashing download file '%1' - + Cancel - + VisitNexus: invalid download index %1 - + Nexus ID for this Mod is unknown - + OpenFile: invalid download index %1 - + OpenFileInDownloadsFolder: invalid download index %1 - + get pending: invalid download index %1 - + get path: invalid download index %1 - + Main - + Update - + Optional - + Old - + Miscellaneous - + Deleted - + Unknown - + display name: invalid download index %1 - + file name: invalid download index %1 - + file time: invalid download index %1 - + file size: invalid download index %1 - + progress: invalid download index %1 - + state: invalid download index %1 - + infocomplete: invalid download index %1 - - - + + + mod id: invalid download index %1 - + ishidden: invalid download index %1 - + file info: invalid download index %1 - + mark installed: invalid download index %1 - + mark uninstalled: invalid download index %1 - + Memory allocation error (in processing progress event). - + Memory allocation error (in processing downloaded data). - + Information updated - - + + No matching file found on Nexus! Maybe this file is no longer available or it was renamed? - + No file on Nexus matches the selected file by name. Please manually choose the correct one. - + No download server available. Please try again later. - + Failed to request file info from nexus: %1 - + Warning: Content type is: %1 - + Download header content length: %1 downloaded file size: %2 - + Download failed: %1 (%2) - + We were unable to download the file due to errors after four retries. There may be an issue with the Nexus servers. - + failed to re-open %1 - + Unable to write download to drive (return %1). Check the drive's available storage. @@ -1794,54 +1462,54 @@ Right now the only case I know of where this needs to be overwritten is for the FileTreeModel - + Name - + Mod - + Type - + Size - + Date modified - + Directory - - + + Virtual path - + Real path - + From - - + + Also in @@ -2080,145 +1748,122 @@ Right now the only case I know of where this needs to be overwritten is for the - - GeneralConflictsTab - - - <table cellspacing="5"><tr><th>Type</th><th>%1</th><th>Total</th><th>Percent</th></tr><tr><td>Loose files:&emsp;</td><td align=right>%2</td><td align=right>%3</td><td align=right>%4%</td></tr><tr><td>Archive files:&emsp;</td><td align=right>%5</td><td align=right>%6</td><td align=right>%7%</td></tr><tr><td>Combined:&emsp;</td><td align=right>%8</td><td align=right>%9</td><td align=right>%10%</td></tr></table> - - - - - Winning - - - - - Losing - - - - - Non conflicting - - - InstallationManager - + Password required - + Password - + Extracting files - - + + Extraction failed: %1 - + Failed to create backup - + Mod Name - + Name - + Invalid name - + The name you entered is invalid, please enter a different one. - + File format "%1" not supported - + Invalid file tree returned by plugin. - + Installation failed - + Something went wrong while installing this mod. - + 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. - + no error - + 7z.dll not found - + 7z.dll isn't valid - + archive not found - + failed to open archive - + unsupported archive type - + internal library error - + archive invalid - + unknown archive error @@ -2236,176 +1881,71 @@ This is likely due to a corrupted or incompatible download or unrecognized archi - - Rename - - - - - <html><head/><body><p><a href="https://github.com/ModOrganizer2/modorganizer/wiki/Instances">What is an instance?</a></p></body></html> + + Create portable instance - - Filter + + <html><head/><body><p><a href="https://github.com/ModOrganizer2/modorganizer/wiki/Instance"><span style=" text-decoration: underline; color:#0000ff;">What is an instance?</span></a></p></body></html> - - Name + + Game: - - - - Explore + + Name: - - Game + + Location: - - Location + + Rename - - Game location + + Base folder: - - Base folder + + + Explore - + Convert to portable - + Convert to global - - Open INI + + Delete instance - - Delete instance... - - - - - Close - - - - + Switch to this instance - - Switching instances - - - - - Mod Organizer must restart to manage the instance '%1'. - - - - - This confirmation can be disabled in the settings. - - - - - Restart Mod Organizer - - - - - + Cancel - - - - Rename instance - - - - - The active instance cannot be renamed. - - - - - Instance name - - - - - Error - - - - - Failed to rename "%1" to "%2": %3 - - - - - - - Deleting instance - - - - - The active instance cannot be deleted. - - - - - These files and folders will be deleted - - - - - All checked items will be deleted. - - - - - Move to the recycle bin - - - - - Delete permanently - - - - - Nothing to delete. - - - - - A portable instance already exists. - - ListDialog @@ -2538,12 +2078,12 @@ This is likely due to a corrupted or incompatible download or unrecognized archi MOApplication - + an error occurred: %1 - + an error occurred @@ -2551,49 +2091,49 @@ This is likely due to a corrupted or incompatible download or unrecognized archi MOBase::FilterWidget - + Filter options - + Use regular expressions - + Use regular expressions in filters - + Case sensitive - + Make regular expressions case sensitive (/i) leave "(/i)" verbatim - + Extended - + Ignores unescaped whitespace in regular expressions (/x) leave "(/x)" verbatim - + Keep selection in view - + Scroll to keep the current selection in view after filtering @@ -2611,17 +2151,17 @@ This is likely due to a corrupted or incompatible download or unrecognized archi - + failed to write to %1 - + file not found: %1 - + Save @@ -2642,29 +2182,6 @@ This is likely due to a corrupted or incompatible download or unrecognized archi - - MOMultiProcess - - - SHM error: %1 - - - - - failed to connect to running process: %1 - - - - - failed to communicate with running process: %1 - - - - - failed to receive data from secondary process: %1 - - - MainWindow @@ -2761,7 +2278,7 @@ p, li { white-space: pre-wrap; } - + Create Backup @@ -2915,7 +2432,7 @@ p, li { white-space: pre-wrap; } - + Refresh @@ -3037,1100 +2554,1113 @@ p, li { white-space: pre-wrap; } - + &File - - + + &Tools - - - + + + &Help - + &View - + &Toolbars - + &Run - - + + Log - + Install &Mod... - + Install &Mod - - + + Install a new mod from an archive - + Ctrl+M - + &Profiles... - + &Profiles - - + + Configure profiles - + Ctrl+P - + &Executables... - + &Executables - - + + Configure the executables that can be started through Mod Organizer - + Ctrl+E - + &Tool Plugins - + Tools - + Ctrl+I - + &Settings... - + &Settings - - + + Configure settings and workarounds - + Ctrl+S - - + + Visit &Nexus - - + + Visit the Nexus website in your browser for more mods - + Ctrl+N - - + + &Update Mod Organizer - - + + Mod Organizer is up-to-date - + &Notifications... - - + + Open the notifications dialog - + This button will be highlighted on the toolbar if MO discovered potential problems in your setup and provide tips on how to fix them. - - + + Show help options - + Ctrl+H - - + + &Endorse ModOrganizer - - - + + + Endorse Mod Organizer - - - Manage Instan&ces... + + &Change Game... - - - Open the instance manager window to manage a different instance + + &Change Game - - + + + Open the Instance selection dialog to manage a different Game + + + + + E&xit - - + + Exits Mod Organizer - + M&ain Toolbar - + &Small Icons - + Lar&ge Icons - + &Icons Only - + &Text Only - + I&cons and Text - + M&edium Icons - + &Menu - + Status &bar - + Toolbar and Menu - + Desktop - + Start Menu - + There is no supported sort mechanism for this game. You will probably have to use a third-party tool. - + Crash on exit - + MO crashed while exiting. Some settings may not be saved. Error: %1 - + There are notifications to read - + There are no notifications - - - + + + Endorse - + Won't Endorse - + Help on UI - + Documentation - + Chat on Discord - + Report Issue - + Tutorials - + About - + About Qt - + Name - + Please enter a name for the new profile - + failed to create profile: %1 - + Show tutorial? - + 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. - - Never ask to show tutorials - - - - + Downloads in progress - + There are still downloads in progress, do you really want to quit? - + Plugin "%1" failed: %2 - + Plugin "%1" failed - + + Browse Mod Page + + + + + <Edit...> + + + + + (no executables) + + + + This bsa is enabled in the ini file so it may be required! - + Activating Network Proxy - + Notice: Your current MO version (%1) is lower than the previously used one (%2). The GUI may not downgrade gracefully, so you may experience oddities. However, there should be no serious issues. - + Choose Mod - + Mod Archive - + Start Tutorial? - + You're about to start a tutorial. For technical reasons it's not possible to end the tutorial early. Continue? - + failed to change origin name: %1 - + failed to move "%1" from mod "%2" to "%3": %4 - + failed to rename mod: %1 - + Overwrite? - + This will replace the existing mod "%1". Continue? - + failed to remove mod "%1" - + failed to rename "%1" to "%2" - - - - - + + + + + Confirm - + Remove the following mods?<br><ul>%1</ul> - + failed to remove mod: %1 - - - + + + Failed - + Installation file no longer exists - + Mods installed with old versions of MO can't be reinstalled in this way. - + Failed to create backup. - + Endorsing multiple mods will take a while. Please wait... - + Unendorsing multiple mods will take a while. Please wait... - + Failed to display overwrite dialog: %1 - + Restore all hidden files in the following mods?<br><ul>%1</ul> - - + + Are you sure? - + About to restore all hidden files in: - + Opening Nexus Links - + You are trying to open %1 links to Nexus Mods. Are you sure you want to do this? - + Nexus ID for this mod is unknown - - + + Opening Web Pages - - + + You are trying to open %1 Web Pages. Are you sure you want to do this? - + + No valid Web Page for this mod + + + + <table cellspacing="5"><tr><th>Type</th><th>All</th><th>Visible</th><tr><td>Enabled mods:&emsp;</td><td align=right>%1 / %2</td><td align=right>%3 / %4</td></tr><tr><td>Unmanaged/DLCs:&emsp;</td><td align=right>%5</td><td align=right>%6</td></tr><tr><td>Mod backups:&emsp;</td><td align=right>%7</td><td align=right>%8</td></tr><tr><td>Separators:&emsp;</td><td align=right>%9</td><td align=right>%10</td></tr></table> - + <table cellspacing="6"><tr><th>Type</th><th>Active </th><th>Total</th></tr><tr><td>All plugins:</td><td align=right>%1 </td><td align=right>%2</td></tr><tr><td>ESMs:</td><td align=right>%3 </td><td align=right>%4</td></tr><tr><td>ESPs:</td><td align=right>%7 </td><td align=right>%8</td></tr><tr><td>ESMs+ESPs:</td><td align=right>%9 </td><td align=right>%10</td></tr><tr><td>ESLs:</td><td align=right>%5 </td><td align=right>%6</td></tr></table> - - - + + + Create Mod... - + This will create an empty mod. Please enter a name: - - + + A mod with this name already exists - + Create Separator... - + This will create a new separator. Please enter a name: - + A separator with this name already exists - + This will move all files from overwrite into a new, regular mod. Please enter a name: - + Move successful. - + About to recursively delete: - - - You are not currently authenticated with Nexus. Please do so under Settings -> Nexus. - - - - + Continue? - + 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. - + Sorry - + I don't know a versioning scheme where %1 is newer than %2. - + Really enable all visible mods? - + Really disable all visible mods? - + Export to csv - + 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. - + Select what mods you want export: - + All installed mods - + Only active (checked) mods from your current profile - + All currently visible mods in the mod list - + Choose what Columns to export: - + Mod_Priority - + Mod_Name - + Notes_column - + Mod_Status - + Primary_Category - + Nexus_ID - + Mod_Nexus_URL - + Mod_Version - + Install_Date - + Download_File_Name - + export failed: %1 - + Open Game folder - + Open MyGames folder - + Open INIs folder - + Open Instance folder - + Open Mods folder - + Open Profile folder - + Open Downloads folder - + Open MO2 Install folder - + Open MO2 Plugins folder - + Open MO2 Stylesheets folder - + Open MO2 Logs folder - + Install Mod... - + Create empty mod - + Create Separator - + Enable all visible - + Disable all visible - + Check for updates - + Export to csv... - - + + Send to - - + + Top - - + + Bottom - - + + Priority... - + Separator... - + All Mods - + Sync to Mods... - + Move content to Mod... - + Clear Overwrite... - - - + + + Open in Explorer - + Restore Backup - + Remove Backup... - - + + Ignore missing data - - + + Mark as converted/working - - + + Visit on Nexus - - + + Visit on %1 - - + + Change Categories - - + + Primary Category - + Rename Separator... - + Remove Separator... - - + + Select Color... - - + + Reset Color - + Change versioning scheme - + Force-check updates - + Un-ignore update - + Ignore update - - + + Enable selected - - + + Disable selected - + Rename Mod... - + Reinstall Mod - + Remove Mod... - + Restore hidden files - + Un-Endorse - + Won't endorse - + Endorsement state unknown - + Start tracking - + Stop tracking - + Tracked state unknown - + Information... - - + + Exception: - - + + Unknown exception - + %1 more - + 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. @@ -4138,12 +3668,12 @@ You can also use online editors and converters instead. - + Enable Mods... - + Delete %n save(s) @@ -4151,268 +3681,230 @@ You can also use online editors and converters instead. - + Restart Mod Organizer - + Mod Organizer must restart to finish configuration changes - + Restart - + Continue - + Some things might be weird. - + Can't change download directory while downloads are in progress! - - + + Set Priority - + Set the priority of the selected plugins - + Update available - + Do you want to endorse Mod Organizer on %1 now? - + Abstain from Endorsing Mod Organizer - + Are you sure you want to abstain from endorsing Mod Organizer 2? You will have to visit the mod page on the %1 Nexus site to change your mind. - + Thank you for endorsing MO2! :) - + Please reconsider endorsing MO2 on Nexus! - - None of your %1 mods appear to have had recent file updates. - - - - - All of your mods have been checked recently. We restrict update checks to help preserve your available API requests. - - - - + Thank you! - + Thank you for your endorsement! - + Mod ID %1 no longer seems to be available on Nexus. - + Request to Nexus failed: %1 - - + + failed to read %1: %2 - + Error - + failed to extract %1 (errorcode %2) - + Extract BSA - + This archive contains invalid hashes. Some files may be broken. - + Extract... - + <Multiple> - + Remove '%1' from the toolbar - + Enable all - + Disable all - + Unlock load order - + Lock load order - + Open Origin in Explorer - + Open Origin Info... - - Sorting plugins - - - - - Are you sure you want to sort your plugins list? - - - - + Backup of load order created - + Choose backup to restore - + No Backups - + There are no backups to restore - - + + Restore failed - - + + Failed to restore the backup. Errorcode: %1 - + Backup of mod list created - + A file with the same name has already been downloaded. What would you like to do? - + Overwrite - + Rename new file - + Ignore file - + Set the priority of the selected mods - - - - - - Browse Mod Page - - - - - <Edit...> - - - - - (no executables) - - MessageDialog @@ -4436,17 +3928,12 @@ You will have to visit the mod page on the %1 Nexus site to change your mind. - - The update check has found a mod with a Nexus ID and source game of %1, but this game is not a valid Nexus source. - - - - + All of your mods have been checked recently. We restrict update checks to help preserve your available API requests. - + You have mods that haven't been checked within the last month using the new API. These mods must be checked before we can use the bulk update API. This will consume significantly more API requests than usual. You will need to rerun the update check once complete in order to parse the remaining mods. @@ -4592,105 +4079,87 @@ Most mods do not have optional esps, so chances are good you are looking at an e - - - Files that exist in other mods but are overwritten by this mod - - - - - Winning file conflicts: + + The following conflicted files are provided by this mod - - - Files that are unused because they are overwritten by other mods + + The following conflicted files are provided by other mods - - Losing file conflicts: - - - - - - Files that have no conflicts - - - - + The following files have no conflicts - + Advanced - + Whether files that have no conflicts should be visible in the list - + Show files that have no conflicts - + Shows all mods overwriting or being overwritten by this mod - + Show all conflicting mods - + Shows only the nearest conflicting mods, in order of priority - + Show nearest conflicting mod - + Filter - + Categories - + Primary Category - + Nexus Info - + Mod ID - + Mod ID for this mod on Nexus. - + <!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; } @@ -4699,22 +4168,22 @@ p, li { white-space: pre-wrap; } - + Source Game - + Source game for this mod. - + <html><head/><body><p>Source game for this mod. This determines where the mod was downloaded from and decides where to fetch info, version updates, and send endorsements. Changing this will likely require you to enter a new Mod ID.</p></body></html> - + <!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; } @@ -4723,93 +4192,93 @@ p, li { white-space: pre-wrap; } - + Version - - + + Refresh - + Refresh all information from Nexus. - - + + Open in Browser - + Endorse - + Track - + about:blank - + Use Custom URL - + Notes - - - + + + Enter comments about the mod here. These are displayed in the notes column of the mod list. - + Set Color - + Reset Color - - - + + + Enter notes about the mod here. These can be viewed in the mod list by hovering over the notes column or the flags column. - + Filetree - + Open Mod in Explorer - + A directory view of this mod - + <!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; } @@ -4819,17 +4288,17 @@ p, li { white-space: pre-wrap; } - + Previous - + Next - + Close @@ -4868,12 +4337,12 @@ p, li { white-space: pre-wrap; } ModInfoRegular - + %1 contains no esp/esm/esl and no asset (textures, meshes, interface, ...) directory - + Categories: <br> @@ -4889,273 +4358,273 @@ p, li { white-space: pre-wrap; } ModList - + This entry contains files that have been created inside the virtual data tree (i.e. by the construction kit) - + Backup - + Separator - + No valid game data - + Not endorsed yet - + This mod is for a different<br> game, make sure it's compatible or it could cause crashes. - + Mod is being tracked on the website - + Contains hidden files - + Overwrites loose files - + Overwritten loose files - + Loose files Overwrites & Overwritten - + Redundant - + Overwrites an archive with loose files - + Archive is overwritten by loose files - + Overwrites another archive file - + Overwritten by another archive file - + Archive files overwrites & overwritten - + Non-MO - + invalid - + installed version: "%1", newest version: "%2" - + 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". - + This file has been marked as "Old". There is most likely an updated version of this file available. - + This file has been marked as "Deleted"! You may want to check for an update or remove the nexus ID from this mod! - + %1 minute(s) and %2 second(s) - + This mod will be available to check in %2. - + Categories: <br> - + Invalid name - + Name is already in use by another mod - + drag&drop failed: %1 - + Confirm - + Are you sure you want to remove "%1"? - + Conflicts - + Flags - + Content - + Mod Name - + Version - + Priority - + Category - + Source Game - + Nexus ID - + Installation - + Notes - - + + unknown - + Name of your mods - + Version of the mod (if available) - + Installation priority of your mod. The higher, the more "important" it is and thus overwrites files from mods with lower priority. - + Primary category of the mod. - + The source game which was the origin of this mod. - + Id of the mod as used on Nexus. - + Indicators of file conflicts between mods. - + Emblems to highlight things that might require attention. - + Depicts the content of the mod: - + Time this mod was installed - + User notes about the mod @@ -5190,78 +4659,35 @@ p, li { white-space: pre-wrap; } - NexusConnectionUI + NexusInterface - - Connected. + + Please pick the mod ID for "%1" - - Not connected. + + You must authorize MO2 in Settings -> Nexus to use the Nexus API. - - Disconnected. + + You've exceeded the Nexus API rate limit and requests are now being throttled. Your next batch of requests will be available in approximately %1 minutes and %2 seconds. - - Checking API key... + + Aborting download: Either you clicked on a premium-only link and your account is not premium, or the download link was generated by a different account than the one stored in Mod Organizer. - - Received API key. + + empty response - - Received user account information - - - - - Linked with Nexus successfully. - - - - - Failed to set API key - - - - - NexusInterface - - - Please pick the mod ID for "%1" - - - - - You must authorize MO2 in Settings -> Nexus to use the Nexus API. - - - - - You've exceeded the Nexus API rate limit and requests are now being throttled. Your next batch of requests will be available in approximately %1 minutes and %2 seconds. - - - - - Aborting download: Either you clicked on a premium-only link and your account is not premium, or the download link was generated by a different account than the one stored in Mod Organizer. - - - - - empty response - - - - - invalid response + + invalid response @@ -5311,27 +4737,27 @@ p, li { white-space: pre-wrap; } NexusTab - + Current Version: %1 - + No update available - + Tracked - + Untracked - + <div style="text-align: center;"> <p>This mod does not have a valid Nexus ID. You can add a custom web @@ -5343,7 +4769,7 @@ p, li { white-space: pre-wrap; } NoConflictListModel - + File @@ -5351,211 +4777,211 @@ p, li { white-space: pre-wrap; } OrganizerCore - + File is write protected - + Invalid file format (probably a bug) - + Unknown error %1 - + Failed to write settings - + An error occurred trying to write back MO settings to %1: %2 - - + + Download started - + Download failed - - + + Installation cancelled - - + + Another installation is currently in progress. - - + + Installation successful - - + + Configure Mod - - + + This mod contains ini tweaks. Do you want to configure them now? - - + + mod not found: %1 - - + + Extraction cancelled - - + + The installation was cancelled while extracting files. If this was prior to a FOMOD setup, this warning may be ignored. However, if this was during installation, the mod will likely be missing files. - + file not found: %1 - + failed to generate preview for %1 - + Sorry - + Sorry, can't preview anything. This function currently does not support extracting from bsas. - + File '%1' not found. - + Failed to generate preview for %1 - + Failed to refresh list of esps: %1 - + Multiple esps/esls activated, please check that they don't conflict. - + You need to be logged in with Nexus - + Download? - + 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? - - + + failed to update mod list: %1 - - + + login successful - + Login failed - + Login failed, try again? - + login failed: %1. Download will not be associated with an account - + login failed: %1 - + login failed: %1. You need to log-in with Nexus to update MO. - + MO1 "Script Extender" load mechanism has left hook.dll in your game folder - - + + Description missing - + <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. - + failed to save load order: %1 - + Error - + The designated write target "%1" is not enabled. @@ -5563,12 +4989,12 @@ Continue? OverwriteConflictListModel - + File - + Overwritten Mods @@ -5668,12 +5094,12 @@ Continue? OverwrittenConflictListModel - + File - + Providing Mod @@ -5681,48 +5107,18 @@ Continue? PluginContainer - - Plugin error - - - - - Mod Organizer failed to load the plugin '%1' last time it was started. - - - - - The plugin can be skipped for this session, blacklisted, or loaded normally, in which case it might fail again. Blacklisted plugins can be re-enabled later in the settings. - - - - - Skip this plugin - - - - - Blacklist this plugin - - - - - Load this plugin - - - - + Some plugins could not be loaded - - + + Description missing - + The following plugins could not be loaded. The reason may be missing dependencies (i.e. python) or an outdated version: @@ -5781,108 +5177,108 @@ Continue? - + Plugin not found: %1 - - + + Confirm - + Really enable all plugins? - + Really disable all plugins? - + The file containing locked plugin indices is broken - + Origin - + This plugin can't be disabled (enforced by the game). - + Author - + Description - + Missing Masters - + Enabled Masters - + Loads Archives - + 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) - + Loads INI settings - + There is an ini file connected to this plugin. Its settings will be added to your game settings, overwriting in case of conflicts. - + This ESP is flagged as an ESL. It will adhere to the ESP load order but the records will be loaded in ESL space. - + Incompatible with %1 - + Depends on missing %1 - + Warning - + Error - + failed to restore load order for %1 @@ -5895,49 +5291,6 @@ Continue? - - PluginTypeName - - - Diagnose - - - - - Game - - - - - Installer - - - - - Mod Page - - - - - Preview - - - - - Tool - - - - - Proxy - - - - - File Mapper - - - PreviewDialog @@ -5973,18 +5326,18 @@ p, li { white-space: pre-wrap; } - - + + Fix - + No guided fix - + (There are no notifications) @@ -6051,12 +5404,12 @@ p, li { white-space: pre-wrap; } - + Missing profile-specific game INI files! - + Some of your profile-specific game INI files were missing. They will now be copied from the vanilla game folder. You might want to double-check your settings. Missing files: @@ -6064,12 +5417,12 @@ Missing files: - + Delete profile-specific game INI files? - + 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.) @@ -6234,93 +5587,88 @@ p, li { white-space: pre-wrap; } - + Archive invalidation isn't required for this game. - - This game does not support profile-specific game saves. - - - - - + + failed to create profile: %1 - + Name - + Please enter a name for the new profile - + failed to copy profile: %1 - + Invalid name - + Invalid profile name - + Deleting active profile - + Unable to delete active profile. Please change to a different profile first. - + Confirm - + Are you sure you want to remove this profile (including profile-specific save games, if any)? - + Profile broken - + 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? - + Rename Profile - + New Name - + failed to change archive invalidation state: %1 - + failed to determine if invalidation is active: %1 @@ -6328,78 +5676,79 @@ p, li { white-space: pre-wrap; } QObject - + Filter - - + + INI file is read-only - + Mod Organizer is attempting to write to "%1" which is currently set to read-only. - + Clear the read-only flag - + Allow the write once - + The file will be set to read-only again. - + Skip this file - + + + + - - - + Error - + You can reset these choices by clicking "Reset Dialog Choices" in the General tab of the Settings - + Always ask - - + + Remember my choice - + Remember my choice for %1 @@ -6409,84 +5758,84 @@ p, li { white-space: pre-wrap; } - + removal of "%1" failed: %2 - + removal of "%1" failed - + "%1" doesn't exist (remove) - + Error %1 - - + + failed to create directory "%1" - - + + failed to copy "%1" to "%2" - + %1 B - + %1 MB - + %1 GB - + %1 TB - + %1 GB/s - + %1 TB/s - + %1 KB - + %1 B/s - + %1 KB/s - + %1 MB/s @@ -6501,8 +5850,8 @@ p, li { white-space: pre-wrap; } - + None @@ -6692,36 +6041,137 @@ Destination: - - - Portable + + Deleting instance folder + + + + + This will delete the instance folder. + The folder will be deleted: "%1" + + + + + Move the folder to the recycle bin + + + + + Delete the folder permanently + + + + + Could not delete instance folder "%1". + +%2 + + + + + Select an instance to delete + + + + + Deleting an instance will delete all the mods, downloads, profiles (including profile-specific saves) and anything in the overwrite folder.<br><br>Custom paths outside of the instance folder will not be deleted. + + + + + Enter a Name for the new Instance + + + + + Enter a new name or select one from the suggested list: +(This is just a name for the Instance and can be whatever you wish, + the actual game selection will happen on the next screen regardless of chosen name) + + + + + + Canceled + + + + + Invalid instance name + + + + + The instance name "%1" is invalid. Use the name "%2" instead? + + + + + The instance "%1" already exists. + + + + + Please choose a different instance name, like: "%1 1" . + + + + + Choose Instance + + + + + 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). + + + + + New - - Cannot open instance '%1', failed to read INI file %2. + + Create a new instance. - - Cannot open instance '%1', the managed game was not found in the INI file %2. Select the game managed by this instance. + + Portable + + + + + Use MO folder for data. - - Cannot open instance '%1', the game plugin '%2' doesn't exist. It may have been deleted by an antivirus. Select another instance. + + Manage Instances - - Cannot open instance '%1', the game directory '%2' doesn't exist or the game plugin '%3' doesn't recognize it. Select the game managed by this instance. + + Delete an Instance. + failed to create %1 + + + Data directory created + + + + + New data directory created at %1. If you don't want to store a lot of data there, reconfigure the storage directories via settings. + + General messages @@ -6758,9 +6208,9 @@ Destination: + - Warning @@ -6810,51 +6260,112 @@ Destination: - + Failed to create "%1". Your user account probably lacks permission. - + + Plugin to handle %1 no longer installed. An antivirus might have deleted files. + Plugin to handle %1 no longer installed + + + + + + + The configured path to the game directory (%1) appears to be a symbolic (or other) link. This setup is incompatible with MO2's VFS and will not run correctly. + + + + + Could not use configuration settings for game "%1", path "%2". + + + + + + + Please select the installation of %1 to manage + + + + + + + Please select the game to manage + + + + + Canceled finding %1 in "%2". + + + + + Canceled finding game in "%1". + + + + + %1 not identified in "%2". The directory is required to contain the game binary. + + + + + No game identified in "%1". The directory is required to contain the game binary.<br><br><b>These are the games supported by Mod Organizer:</b><ul>%2</ul> + + + + + Please select the game edition you have (MO can't start the game correctly if this is set incorrectly!) + + + + failed to start shortcut: %1 - + failed to start application: %1 - + - Mod Organizer - + An instance of Mod Organizer is already running + + + Failed to set up instance + + <Unmanaged> - + Please use "Help" from the toolbar to get usage instructions to all elements - - + + <Manage...> - + failed to parse profile %1: %2 @@ -6880,174 +6391,185 @@ Destination: - + Save changes? - + Save changes to "%1"? - + Connecting to Nexus... - + Waiting for Nexus... - + Opened Nexus in browser. - + Switch to your browser and accept the request. - + Finished. - + No answer from Nexus. - - + + A firewall might be blocking Mod Organizer. - + Nexus closed the connection. - + Cancelled. - + Failed to request %1 - - + + Cancelled - + Internal error - + HTTP code %1 - + Invalid JSON - + Bad response - + API key is empty - + SSL error - + Timed out - + One of the configured MO2 directories (profiles, mods, or overwrite) is on a path containing a symbolic (or other) link. This is likely to be incompatible with MO2's virtual filesystem. - + failed to initialize plugin %1: %2 - + + Plugin error + + + + + It appears the plugin "%1" failed to load last startup and caused MO to crash. Do you want to disable it? +(Please note: If this is the first time you see this message for this plugin you may want to give it another try. The plugin may be able to recover from the problem) + + + + failed to access %1 - + failed to set file time %1 - - - + + + No profile set - + Before you can use ModOrganizer, you need to create at least one profile. ATTENTION: Run the game at least once before creating a profile! - + '%1': file is blocked (%2) - + '%1' seems to be missing, an antivirus may have deleted it - + %1 is loaded. This program is known to cause issues with Mod Organizer, such as freezing or blank windows. Consider uninstalling it. - + %1 is loaded. This program is known to cause issues with Mod Organizer and its virtual filesystem, such script extenders refusing to run. Consider uninstalling it. - - - + + + attempt to store setting for unknown plugin "%1" - + Failed - + Failed to start the helper application: %1 @@ -7084,17 +6606,60 @@ This program is known to cause issues with Mod Organizer, such as freezing or bl - + Confirm? - + This will reset all the choices you made to dialogs and make them all visible again. Continue? - + + Connected. + + + + + Not connected. + + + + + Disconnected. + + + + + Checking API key... + + + + + Received API key. + + + + + Received user acount information + + + + + Linked with Nexus successfully. + + + + + Failed to set API key + + + + + + + @@ -7102,34 +6667,30 @@ This program is known to cause issues with Mod Organizer, such as freezing or bl - - - - - + Cancel - - - + + + Enter API Key Manually - - - + + + Connect to Nexus - - - - - + + + + + N/A @@ -7486,219 +7047,6 @@ You can restart Mod Organizer as administrator and try launching the program aga Disabled because - - - One of the following plugins must be enabled: %1. - - - - - This plugin can only be enabled if the '%1' plugin is installed and enabled. - - - - - This plugin can only be enabled for the following game(s): %1. - - - - - - - - Cannot disable plugin - - - - - The '%1' plugin is used by the current game plugin and cannot disabled. - - - - - <p>Disabling the '%1' plugin will also disable the following plugins:</p><ul>%1</ul><p>Do you want to continue?</p> - - - - - Really disable plugin? - - - - - This plugin is required for Mod Organizer to work properly and cannot be disabled. - - - - - Instance at '%1' not found. Select another instance. - - - - - Instance at '%1' not found. You must create a new instance - - - - - The instance name must be a valid folder name. - - - - - An instance with this name already exists. - - - - - Disabling the '%1' plugin will prevent the following %2 plugin(s) from working: - - - - - - - - Global - - - - - - Instance type: %1 - - - - - ? - - - - - Find game installation for %1 - - - - - Find game installation - - - - - - - Unrecognized game - - - - - The folder %1 does not seem to contain a game Mod Organizer can manage. - - - - - See details for the list of supported games. - - - - - No installation found - - - - - Browse... - - - - - The folder must contain a valid game installation - - - - - The folder %1 does not seem to contain an installation for <span style="white-space: nowrap; font-weight: bold;">%2</span> or for any other game Mod Organizer can manage. - - - - - - Use this folder for %1 - - - - - - I know what I'm doing - - - - - - Incorrect game - - - - - The folder %1 seems to contain an installation for <span style="white-space: nowrap; font-weight: bold;">%2</span>, not <span style="white-space: nowrap; font-weight: bold;">%3</span>. - - - - - Manage %1 instead - - - - - Instance location: %1 - - - - - Instance name: %1 - - - - - - Base directory: %1 - - - - - Downloads - - - - - Mods - - - - - Profiles - - - - - Overwrite - - - - - Game: %1 - - - - - Game location: %1 - - - - - Creating %1 - - QueryOverwriteDialog @@ -7817,58 +7165,58 @@ p, li { white-space: pre-wrap; } SelfUpdater - + New update available (%1) - + Do you want to install update? All your mods and setup will be left untouched. Select Show Details option to see the full change-log. - + Install - + Download failed - + Failed to find correct download, please try again later. - + Update - + Download in progress - + Download failed: %1 - + Failed to install update: %1 - + Failed to start %1: %2 - + Error @@ -8226,32 +7574,32 @@ Select Show Details option to see the full change-log. - + Disable automatic internet features - + 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) - + Offline Mode - + Use a proxy for network connections. - + 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. - + Use HTTP Proxy (Uses System Settings) @@ -8272,117 +7620,102 @@ Select Show Details option to see the full change-log. - - Tracked Integration - - - - + Associate with "Download with manager" links - + Remove cache and cookies. - + Clear Cache - + Known Servers (updated on download) - + Preferred Servers (Drag & Drop) - + Steam - + Username - + <html><head/><body><p>If you save your steam user ID and password here, they will be used when logging into steam.</p></body></html> - + Password - + Plugins - + Author: - + Version: - + Description: - - Enabled - - - - + Key - + Value - - No plugin found. - - - - + Blacklisted Plugins (use <del> to remove): - + Workarounds - + Steam App ID - + The Steam AppID for your game - + <!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; } @@ -8398,17 +7731,17 @@ p, li { white-space: pre-wrap; } - + Load Mechanism - + Select loading mechanism. See help for details. - + 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. @@ -8419,28 +7752,28 @@ If you use the Steam version of Oblivion the default will NOT work. In this case - + Enforces that inactive ESPs and ESMs are never loaded. - + 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. - + Hide inactive ESPs/ESMs - + 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. - + 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. @@ -8448,66 +7781,66 @@ If you disable this feature, MO will only display official DLCs this way. Please - + Display mods installed outside MO - + If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on) - + 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. - + Force-enable game files - - + + Disable this to prevent the GUI from being locked when running an executable. This may result in abnormal behavior. - + Lock GUI when running executable - + Enable parsing of Archives. This is an Experimental Feature. Has negative effects on performance and known incorrectness. - + <html><head/><body><p>By default, MO will parse archive files (BSA, BA2) to calculate conflicts between the contents of the archive files and other loose files. This process has a noticeable cost in performance.</p><p>This feature should not be confused with the archive management feature offered by MO1. MO2 will only show conflicts with archives and will NOT load them into the game or program.</p><p>If you disable this feature, MO will only display conflicts between loose files.</p></body></html> - + Enable parsing of Archives (Experimental Feature) - - + + 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! - + Back-date BSAs - + 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 @@ -8516,43 +7849,43 @@ programs you are intentionally running. - + 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. - + Configure Executables Blacklist - - + + 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. - + Reset Window Geometries - + These are workarounds for problems with Mod Organizer. Please make sure you read the help text before changing anything here. - + Diagnostics - + Hint: right click link and copy link location - + 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. @@ -8562,17 +7895,17 @@ programs you are intentionally running. - + Log Level - + Decides the amount of data printed to "ModOrganizer.log" - + 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 regular use. On the "Error" level the log file usually remains empty. @@ -8580,17 +7913,17 @@ programs you are intentionally running. - + Crash Dumps - + Decides which type of crash dumps are collected when injected processes crash. - + Decides which type of crash dumps are collected when injected processes crash. "None" Disables the generation of crash dumps by MO. @@ -8601,17 +7934,17 @@ programs you are intentionally running. - + Max Dumps To Keep - + Maximum number of crash dumps to keep on disk. Use 0 for unlimited. - + Maximum number of crash dumps to keep on disk. Use 0 for unlimited. Set "Crash Dumps" above to None to disable crash dump collection. @@ -8619,7 +7952,7 @@ programs you are intentionally running. - + LOOT Log Level @@ -8634,6 +7967,29 @@ programs you are intentionally running. + + SingleInstance + + + SHM error: %1 + + + + + failed to connect to running instance: %1 + + + + + failed to communicate with running instance: %1 + + + + + failed to receive data from secondary instance: %1 + + + StatusBar @@ -8641,6 +7997,11 @@ programs you are intentionally running. Unknown game + + + Portable + + SyncOverwriteDialog @@ -8675,14 +8036,6 @@ programs you are intentionally running. - - T - - - Plugin - - - TaskDialog @@ -8807,22 +8160,22 @@ On Windows XP: - + Characters for profile %1 - + Overwrite - + Overwrite the file "%1" - + Confirm @@ -8830,7 +8183,7 @@ On Windows XP: UsvfsConnector - + Preparing vfs @@ -8844,7 +8197,7 @@ On Windows XP: - + Connecting to Nexus... @@ -8859,9 +8212,557 @@ On Windows XP: - + Trying again... + + tutorial_conflictresolution_main + + + There are multiple types of conflicts you may encounter when dealing with Mods. This tutorial will try to cover and explain how to deal with all of them. + + + + + First up are file conflicts. These occur when two mods contain the same file. Most commonly this happens when several mods replace the same standard asset from the game, like the texture of an armor. + + + + + As an example, say you install "ModA" which contains stylish new iron and leather armor. Then you install "ModB" which contains sexy ebony and leather armor. Obviously there is a conflict now: which leather armor to use? + + + + + If you were to install the mods manually, when installing "ModB" you would be asked if you want to overwrite conflicting files. If you choose yes, you get the leather armor from "ModB" otherwise you keep the one from "ModA". If you later decide you made the wrong choice, you have to reinstall one of the mods. + + + + + With MO, both ModA and ModB get installed completely (no overwrite dialog) and by default "ModB" gets to provide the leather armor because it's automatically assigned the higher priority. + + + + + However, you can change the mod priority at any time using drag&drop on this list. If you assign "ModA" a higher priority, it provides the leather armor, no re-installation required. Since the priorities of mods in this list are treated as if the mods were installed in that order, I tend to talk about "installation order". + + + + + If the "Flags"-column is enabled in the mod list, it will show you which mods are involved in a conflict and how... + + + + + <img src="qrc:///MO/gui/emblem_conflict_overwrite" /> indicates that the mod overwrites files that are also available in another mod. + + + + + <img src="qrc:///MO/gui/emblem_conflict_overwritten" /> indicates that the mod is <b>partially</b> overwritten by another. + + + + + <img src="qrc:///MO/gui/emblem_conflict_mixed" /> indicates that both of the above is true. + + + + + <img src="qrc:///MO/gui/emblem_conflict_redundant" /> indicates that the mod is completely overwritten by another. You could as well disable it. + + + + + There are two ways to see the individual files involved in a conflict: + + + + + Option A: Switch to the "Data"-tab if necessary + + + + + ... here, if you mark the highlighted control, the tree will only display files in conflict. In the right column, it says which mod currently provides the mod (because it has highest priority) and if you hover your mouse over that info, it will list which other mods contains it. + + + + + Option B: Open the <i>Information</i>-Dialog of an <b>enabled</b> mod you're interested in by either double-clicking it or selecting <i>Information...</i> from the right-click menu + + + + + This was everything to know about file conflicts. The second type of conflict we have to deal with are "record conflicts". + + + + + I told you in the "First Steps" tutorial how the esp/esm/esl plugins contain changes to the game world like modifications to the terrain or existing NPCs. Each change like this is stored in a record, hence the name "record conflict". For example when two mods try to change the same location, only one change can become active. + + + + + As with file conflicts you can't really fix these conflicts, you have to choose which change you want. This time around however, if you choose wrong, your game may become unstable because there may be dependencies between the records of a mod. + + + + + Please open the "Plugins"-tab... + + + + + Again you can use drag&drop to change priorities of plugins, thus deciding which plugin takes precedence in regards to conflicts. This is commonly called the "load order". But how do you know how to order the plugins? + + + + + Unlike with file conflicts, MO does not provide help on finding conflicts. The good news is, there already is a perfect tool for that called LOOT. LOOT is available on the Nexus and integrates neatly with MO. Basically, if you don't have LOOT yet, install it once this tutorial is over. + + + + + After you installed LOOT in the default location (follow its instructions), start MO again and LOOT should automatically appear as an Executable... + + + + + When you run LOOT, it will automatically re-organize plugins for best compatibility (overwriting your manual changes). It will also open a report in your browser that warns about incompatibilities. You should read the report, at least for new mods. + + + + + The final type of conflicts are also "record conflicts". Like the previous type. It's confusing, so I'll just call them "lists conflicts" instead. The difference is the types of records in conflict. The ones in question here can be merged so you may be able to get all modifications in your game. + + + + + One common example of such records are leveled lists that contain all the items that may spawn at a specific character level. Traditionally, if multiple mods add items to such a list, only one is in effect... + + + + + ... but there are tools to merge those mods so you can have the effects of all of them. Again, this functionality is not integrated with MO because there are already great tools. For Oblivion and Skyrim look for wrye bash, for fallout 3/nv it's wrye flash. For Skyrim there is also "SkyBash". All of these can create a so-called "bashed patch" which is a plugin that contains the combined mergeable records from all your mods. + + + + + This completes the tutorial. + + + + + tutorial_conflictresolution_modinfo + + + Please switch to the "Conflicts"-Tab. + + + + + Here you can see a list of files in this mod that out-prioritize others in a file conflict and one with files where this mod is overridden. + + + + + Please close the information dialog again. + + + + + tutorial_firststeps_browser + + + This is a fully featured browser that is set up to open the correct nexus page for your game. You can download any mod using the "DOWNLOAD WITH MANAGER"-button or the "manual"-link and it will be downloaded by MO. + + + + + tutorial_firststeps_main + + + Welcome to the ModOrganizer Tutorial! This will guide you through the most common features of MO. +Please go along with the tutorial because some things can't be demonstrated if you skip something. + + + + + Before we continue with the step-by-step tutorial, I'd like to tell you about the other ways you can receive help on ModOrganizer. + + + + + The highlighted button provides hints on solving potential problems MO recognized automatically. + + + + + +There IS a notification now but you may want to hold off on clearing it until after completing the tutorial. + + + + + This button provides multiple sources of information and further tutorials. + + + + + Finally there are tooltips on almost every part of Mod Organizer. If there is a control in MO you don't understand, please try hovering over it to get a short description or use "Help on UI" from the help menu to get a longer explanation + + + + + This list displays all mods installed through MO. It also displays installed DLCs and some mods installed outside MO but you have limited control over those in MO. + + + + + Before we start installing mods, let's have a quick look at the settings. + + + + + Now it's time to install a few mods!Please go along with this because we need a few mods installed to demonstrate other features + + + + + There are a few ways to get mods into ModOrganizer. If you associated MO with NXM links in the settings you can now use your regular browser to send downloads from Nexus to MO. Click on "Nexus" to open nexus, find a mod and click the green download buttons on Nexus saying "Download with Manager". + + + + + You can also install mods from disk using the "Install Mod" button. + + + + + Downloads will appear on the "Downloads"-tab here. You have to download and install at least one mod to proceed. + + + + + Great, you just installed your first mod. Please note that the installation procedure may differ based on how a mod was packaged. + + + + + Now you know all about downloading and installing mods but they are not enabled yet... + + + + + Install a few more mods if you want, then enable mods by checking them in the left pane. Mods that aren't enabled have no effect on the game whatsoever. + + + + + For some mods, enabling it on the left pane is all you have to do... + + + + + ...but most contain plugins. These are plugins for the game and are required to add stuff to the game (new weapons, armors, quests, areas, ...). Please open the "Plugins"-tab to get a list of plugins. + + + + + You will notice some plugins are grayed out. These are part of the main game and can't be disabled. + + + + + A single mod may contain zero, one or multiple esps. Some or all may be optional. If in doubt, please consult the documentation of the individual mod. To do so, right-click the mod and select "Information". + + + + + Now you know how to download, install and enable mods. +It's important you always start the game from inside MO, otherwise the mods you installed here won't work. + + + + + This combobox lets you choose <i>what</i> to start. This way you can start the game, Launcher, Script Extender, the Creation Kit or other tools. If you miss a tool you can also configure this list but that is an advanced topic. + + + + + This completes the basic tutorial. As homework go play a bit! After you have installed more mods you may want to read the tutorial on conflict resolution. + + + + + tutorial_firststeps_modinfo + + + This dialog tries to expose as much information about a mod as possible. Depending on the mod this may include readmes, screenshots, optional plugins and so on. If a certain type of information was not found in a mod, the corresponding tab is grayed out. + + + + + If you installed the mod from Nexus, the corresponding tab should give you direct access to the mod page. + + + + + We may revisit this screen in later tutorials. + + + + + tutorial_firststeps_settings + + + You can use your regular browser to download from Nexus. +Please open the "Nexus"-tab + + + + + Click this button so that "DOWNLOAD WITH MANAGER"-buttons are download with Mod Organizer. + + + + + Use this interface to obtain an API key from NexusMods. This is used for all API connections - downloads, updates etc. MO2 uses the Windows Credential Manager to store this data securely. If the SSO page on Nexus is failing, use the manual entry and copy the API key from your profile. + + + + + tutorial_primer_main + + + This window shows all the mods that are installed. The column headers can be used for sorting. Only checked mods are active in the current profile. + + + + + Each profile is a separate set of enabled mods and ini settings. + + + + + Perform various actions on your mod list, such as refreshing data and checking for mod updates. + + + + + Quick access to various directories, such as your MO2 mods, profiles, saves, and your active game location. + + + + + Restore a mod list backup. + + + + + Create a backup of your current mod list. + + + + + Running counter of your active mods. Hover to see a more detailed breakdown. + + + + + The dropdown allows various ways of grouping the mods shown in the mod list. + + + + + Show/hide the category pane. + + + + + Quickly filter the mod list as you type. + + + + + Switch between information views. + + + + + This shows mod categories and some meta categories (in angle-brackets). Select some to filter the mod list. For example select "<Checked>" to show only active mods. + + + + + Customizable list for choosing the program to run. + + + + + When this button is clicked, Mod Organizer creates a virtual directory structure then runs the program selected to the left. + + + + + Will create a shortcut for quick access. The shortcut can be placed in the toolbar at the top, in the Start Menu or on the Windows Desktop. + + + + + Log messages produced by MO. Please note that messages with a light bulb usually don't require your attention. + + + + + Indicator of your current NexusMods API request limits. + + + + + Change/manage MO2 instances or switch to portable mode. + + + + + Browse to and manually install a mod from an archive on your computer. + + + + + Automatically open NexusMods to browse and install mods via the API. + + + + + Manage your MO2 profiles. + + + + + Open the executable editor to add and modify applications you wish to run with MO2. + + + + + Select from a collection of additional tools, such as an INI editor, integrated FNIS updater, and more. + + + + + Configure Mod Organizer. + + + + + See the status of and/or endorse MO2 on NexusMods. + + + + + Notifications about the current setup. + + + + + Activates if there is an update for MO. Please note that if, for any reason, MO can't communicate with NMM, this will not work either. + + + + + Access more information about MO2, including these tutorials, a link to the development discord, information about the devs and dependencies. + + + + + Plugins (esp/esm/esl files) of the mods in the current profile. They need to be checked to be loaded. + + + + + Automatically sort plugins using the bundled LOOT application. + + + + + Restore a backup of your plugin list order. + + + + + Save a backup of your plugin list order. + + + + + Counter of your total active plugins. Hover to see a breakdown of plugin types. + + + + + Quickly filter plugin list as you type. + + + + + All the asset archives (.bsa files) for all active mods. + + + + + The directory tree and all files that the program will see. + + + + + Save game browser. Shows all the saves for the current profile and whether or not the current mod-load status is correct. + + + + + Shows the mods that have been downloaded and if they’ve been installed. + + + + + Click to quit + + + + + tutorial_window_installer + + + This mod has been packaged in a way that Mod Organizer did not automatically recognize... + + + + + You can use drag&drop on this list to fix the structure of the mod. + + + + + The correct structure replicates the data-directory of the game. That means esps, the "meshes"- or "textures"-directory and so on should be directly below "<data>". + + + + + You can also disable files and directories that you don't want to unpack. + + + + + From the context menu (right-click) you can open textfiles, in case you want to access a readme. + + + + + This text will turn green if MO thinks the structure looks good. + + + -- cgit v1.3.1 From 5dd9bbe33aa962cf796f039dcf77680cb11e2c27 Mon Sep 17 00:00:00 2001 From: isanae <14251494+isanae@users.noreply.github.com> Date: Fri, 27 Nov 2020 07:34:00 -0500 Subject: Revert "Changing the location of several directories" --- src/CMakeLists.txt | 10 ++++------ src/dlls.manifest | 29 ----------------------------- src/dlls.manifest.qt5 | 29 +++++++++++++++++++++++++++++ src/mainwindow.cpp | 11 +++-------- src/qt.conf | 6 +----- src/settingsdialoggeneral.cpp | 6 +++--- src/shared/appconfig.inc | 3 +-- src/tutorials/TutorialOverlay.qml | 4 +--- 8 files changed, 42 insertions(+), 56 deletions(-) delete mode 100644 src/dlls.manifest create mode 100644 src/dlls.manifest.qt5 (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ffaf3c0c..a53d845d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -232,17 +232,15 @@ target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ) -install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/dlls.manifest +install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/dlls.manifest.qt5 DESTINATION bin/dlls RENAME dlls.manifest) -install(FILES ${qm_files} DESTINATION bin/resources/translations) +install(FILES ${qm_files} DESTINATION bin/translations) install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/stylesheets - DESTINATION bin) - -install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/tutorials - DESTINATION bin/resources) + ${CMAKE_CURRENT_SOURCE_DIR}/tutorials + DESTINATION bin) deploy_qt(BINARIES ModOrganizer.exe uibase.dll plugins/bsa_packer.dll) diff --git a/src/dlls.manifest b/src/dlls.manifest deleted file mode 100644 index 846a02ae..00000000 --- a/src/dlls.manifest +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/dlls.manifest.qt5 b/src/dlls.manifest.qt5 new file mode 100644 index 00000000..cae74df1 --- /dev/null +++ b/src/dlls.manifest.qt5 @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index c2aefdd2..cdc048fd 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1206,9 +1206,7 @@ void MainWindow::createHelpMenu() ActionList tutorials; - QString tutorialPath = QApplication::applicationDirPath() - + "/" + QString::fromStdWString(AppConfig::tutorialsPath()) + "/"; - QDirIterator dirIter(tutorialPath, QStringList("*.js"), QDir::Files); + QDirIterator dirIter(QApplication::applicationDirPath() + "/tutorials", QStringList("*.js"), QDir::Files); while (dirIter.hasNext()) { dirIter.next(); QString fileName = dirIter.fileName(); @@ -1320,8 +1318,7 @@ bool MainWindow::addProfile() void MainWindow::hookUpWindowTutorials() { - QString tutorialPath = QApplication::applicationDirPath() + "/" + QString::fromStdWString(AppConfig::tutorialsPath()) + "/"; - QDirIterator dirIter(tutorialPath, QStringList("*.js"), QDir::Files); + QDirIterator dirIter(QApplication::applicationDirPath() + "/tutorials", QStringList("*.js"), QDir::Files); while (dirIter.hasNext()) { dirIter.next(); QString fileName = dirIter.fileName(); @@ -5229,9 +5226,7 @@ void MainWindow::installTranslator(const QString &name) { QTranslator *translator = new QTranslator(this); QString fileName = name + "_" + m_CurrentLanguage; - QString translationsPath = qApp->applicationDirPath() - + "/" + QString::fromStdWString(AppConfig::translationsPath()); - if (!translator->load(fileName, translationsPath)) { + if (!translator->load(fileName, qApp->applicationDirPath() + "/translations")) { if (m_CurrentLanguage.contains(QRegularExpression("^.*_(EN|en)(-.*)?$"))) { log::debug("localization file %s not found", fileName); } // we don't actually expect localization files for English (en, en-us, en-uk, and any variation thereof) diff --git a/src/qt.conf b/src/qt.conf index 5e070fa3..f834a22a 100644 --- a/src/qt.conf +++ b/src/qt.conf @@ -1,7 +1,3 @@ [Paths] -Libraries=dlls -LibraryExecutables=resources +Prefix=. Plugins=dlls -Imports=dlls -Qml2Imports=dlls -Translations=resources/translations \ No newline at end of file diff --git a/src/settingsdialoggeneral.cpp b/src/settingsdialoggeneral.cpp index 9eae2ba1..f29e1d24 100644 --- a/src/settingsdialoggeneral.cpp +++ b/src/settingsdialoggeneral.cpp @@ -81,9 +81,9 @@ void GeneralSettingsTab::addLanguages() const QRegExp exp(pattern); - QString translationsPath = qApp->applicationDirPath() - + "/" + QString::fromStdWString(AppConfig::translationsPath()); - QDirIterator iter(translationsPath, QDir::Files); + QDirIterator iter( + QCoreApplication::applicationDirPath() + "/translations", + QDir::Files); std::vector> languages; diff --git a/src/shared/appconfig.inc b/src/shared/appconfig.inc index 8d4125cf..5839c2f4 100644 --- a/src/shared/appconfig.inc +++ b/src/shared/appconfig.inc @@ -6,8 +6,7 @@ APPPARAM(std::wstring, downloadPath, L"downloads") APPPARAM(std::wstring, overwritePath, L"overwrite") APPPARAM(std::wstring, stylesheetsPath, L"stylesheets") APPPARAM(std::wstring, cachePath, L"webcache") -APPPARAM(std::wstring, tutorialsPath, L"resources/tutorials") -APPPARAM(std::wstring, translationsPath, L"resources/translations") +APPPARAM(std::wstring, tutorialsPath, L"tutorials") APPPARAM(std::wstring, logPath, L"logs") APPPARAM(std::wstring, dumpsDir, L"crashDumps") APPPARAM(std::wstring, defaultProfileName, L"Default") diff --git a/src/tutorials/TutorialOverlay.qml b/src/tutorials/TutorialOverlay.qml index 0a31ef0e..47e5065d 100644 --- a/src/tutorials/TutorialOverlay.qml +++ b/src/tutorials/TutorialOverlay.qml @@ -55,9 +55,7 @@ Rectangle { Connections { target: manager - function onTabChanged() { - tabChanged(index) - } + onTabChanged: tabChanged(index) } Tooltip { -- cgit v1.3.1 From ef1188811633e8c1403f960c9196de92d0a81020 Mon Sep 17 00:00:00 2001 From: Mikaël Capelle Date: Fri, 27 Nov 2020 19:20:41 +0100 Subject: Fix conflicts with master. --- src/mainwindow.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 7558076d..69f90ce4 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1210,9 +1210,7 @@ void MainWindow::createHelpMenu() ActionList tutorials; - QString tutorialPath = QApplication::applicationDirPath() - + "/" + QString::fromStdWString(AppConfig::tutorialsPath()) + "/"; - QDirIterator dirIter(tutorialPath, QStringList("*.js"), QDir::Files); + QDirIterator dirIter(QApplication::applicationDirPath() + "/tutorials", QStringList("*.js"), QDir::Files); while (dirIter.hasNext()) { dirIter.next(); QString fileName = dirIter.fileName(); @@ -1324,8 +1322,7 @@ bool MainWindow::addProfile() void MainWindow::hookUpWindowTutorials() { - QString tutorialPath = QApplication::applicationDirPath() + "/" + QString::fromStdWString(AppConfig::tutorialsPath()) + "/"; - QDirIterator dirIter(tutorialPath, QStringList("*.js"), QDir::Files); + QDirIterator dirIter(QApplication::applicationDirPath() + "/tutorials", QStringList("*.js"), QDir::Files); while (dirIter.hasNext()) { dirIter.next(); QString fileName = dirIter.fileName(); @@ -5213,9 +5210,7 @@ void MainWindow::installTranslator(const QString &name) { QTranslator *translator = new QTranslator(this); QString fileName = name + "_" + m_CurrentLanguage; - QString translationsPath = qApp->applicationDirPath() - + "/" + QString::fromStdWString(AppConfig::translationsPath()); - if (!translator->load(fileName, translationsPath)) { + if (!translator->load(fileName, qApp->applicationDirPath() + "/translations")) { if (m_CurrentLanguage.contains(QRegularExpression("^.*_(EN|en)(-.*)?$"))) { log::debug("localization file %s not found", fileName); } // we don't actually expect localization files for English (en, en-us, en-uk, and any variation thereof) -- cgit v1.3.1