From 02c5b083dca693dcb3880bab7ce4ca022cdfc02f Mon Sep 17 00:00:00 2001 From: Krzysztof Starecki Date: Fri, 15 Feb 2019 17:07:43 +0100 Subject: Fix instance errors when downloading the same file multiple times --- src/singleinstance.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/singleinstance.cpp b/src/singleinstance.cpp index 89332f9b..7abf3879 100644 --- a/src/singleinstance.cpp +++ b/src/singleinstance.cpp @@ -54,7 +54,7 @@ SingleInstance::SingleInstance(bool forcePrimary, QObject *parent) : m_PrimaryInstance = true; } if (m_PrimaryInstance) { - connect(&m_Server, SIGNAL(newConnection()), this, SLOT(receiveMessage())); + connect(&m_Server, SIGNAL(newConnection()), this, SLOT(receiveMessage()), Qt::QueuedConnection); // has to be called before listen m_Server.setSocketOptions(QLocalServer::WorldAccessOption); m_Server.listen(s_Key); -- cgit v1.3.1 From 600b0786eb4c66cb14ae61bb86695d049e9fc169 Mon Sep 17 00:00:00 2001 From: Krzysztof Starecki Date: Fri, 15 Feb 2019 17:27:12 +0100 Subject: Change mod list context menu to stack allocation --- src/mainwindow.cpp | 146 ++++++------ src/mainwindow.h | 2 +- src/organizer_en.ts | 634 ++++++++++++++++++++++++++-------------------------- 3 files changed, 393 insertions(+), 389 deletions(-) (limited to 'src') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 12b95ce8..bb5cd337 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -338,7 +338,9 @@ MainWindow::MainWindow(QSettings &initSettings linkMenu->addAction(QIcon(":/MO/gui/link"), tr("Start Menu"), this, SLOT(linkMenu())); ui->linkButton->setMenu(linkMenu); - ui->listOptionsBtn->setMenu(modListContextMenu(ui->listOptionsBtn)); + QMenu *listOptionsMenu = new QMenu(ui->listOptionsBtn); + initModListContextMenu(listOptionsMenu); + ui->listOptionsBtn->setMenu(listOptionsMenu); connect(ui->listOptionsBtn, SIGNAL(pressed()), this, SLOT(on_listOptionsBtn_pressed())); ui->openFolderMenu->setMenu(openFolderMenu()); @@ -4379,28 +4381,19 @@ QMenu *MainWindow::openFolderMenu() return FolderMenu; } -QMenu *MainWindow::modListContextMenu(QWidget *parent) +void MainWindow::initModListContextMenu(QMenu *menu) { - QMenu *menu = new QMenu(parent); menu->addAction(tr("Install Mod..."), this, SLOT(installMod_clicked())); - menu->addAction(tr("Create empty mod"), this, SLOT(createEmptyMod_clicked())); - menu->addAction(tr("Create Separator"), this, SLOT(createSeparator_clicked())); menu->addSeparator(); menu->addAction(tr("Enable all visible"), this, SLOT(enableVisibleMods())); menu->addAction(tr("Disable all visible"), this, SLOT(disableVisibleMods())); - menu->addAction(tr("Check all for update"), this, SLOT(checkModsForUpdates())); - menu->addAction(tr("Refresh"), &m_OrganizerCore, SLOT(profileRefresh())); - menu->addAction(tr("Export to csv..."), this, SLOT(exportModListCSV())); - - - return menu; } void MainWindow::addModSendToContextMenu(QMenu *menu) @@ -4442,137 +4435,140 @@ void MainWindow::on_modList_customContextMenuRequested(const QPoint &pos) m_ContextIdx = mapToModel(m_OrganizerCore.modList(), modList->indexAt(pos)); m_ContextRow = m_ContextIdx.row(); - QMenu *menu = nullptr; if (m_ContextRow == -1) { // no selection - menu = modListContextMenu(this); + QMenu menu(this); + initModListContextMenu(&menu); + menu.exec(modList->mapToGlobal(pos)); } else { - menu = new QMenu(this); - QMenu *allMods = modListContextMenu(menu); + QMenu menu(this); + + QMenu *allMods = new QMenu(&menu); + initModListContextMenu(allMods); allMods->setTitle(tr("All Mods")); - menu->addMenu(allMods); - menu->addSeparator(); + menu.addMenu(allMods); + menu.addSeparator(); + ModInfo::Ptr info = ModInfo::getByIndex(m_ContextRow); std::vector flags = info->getFlags(); if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_OVERWRITE) != flags.end()) { if (QDir(info->absolutePath()).count() > 2) { - menu->addAction(tr("Sync to Mods..."), &m_OrganizerCore, SLOT(syncOverwrite())); - menu->addAction(tr("Create Mod..."), this, SLOT(createModFromOverwrite())); - menu->addAction(tr("Move content to Mod..."), this, SLOT(moveOverwriteContentToExistingMod())); - menu->addAction(tr("Clear Overwrite..."), this, SLOT(clearOverwrite())); + menu.addAction(tr("Sync to Mods..."), &m_OrganizerCore, SLOT(syncOverwrite())); + menu.addAction(tr("Create Mod..."), this, SLOT(createModFromOverwrite())); + menu.addAction(tr("Move content to Mod..."), this, SLOT(moveOverwriteContentToExistingMod())); + menu.addAction(tr("Clear Overwrite..."), this, SLOT(clearOverwrite())); } - menu->addAction(tr("Open in Explorer"), this, SLOT(openExplorer_clicked())); + menu.addAction(tr("Open in Explorer"), this, SLOT(openExplorer_clicked())); } else if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_BACKUP) != flags.end()) { - menu->addAction(tr("Restore Backup"), this, SLOT(restoreBackup_clicked())); - menu->addAction(tr("Remove Backup..."), this, SLOT(removeMod_clicked())); + menu.addAction(tr("Restore Backup"), this, SLOT(restoreBackup_clicked())); + menu.addAction(tr("Remove Backup..."), this, SLOT(removeMod_clicked())); } else if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_SEPARATOR) != flags.end()){ - menu->addSeparator(); - QMenu *addRemoveCategoriesMenu = new QMenu(tr("Change Categories"), menu); + menu.addSeparator(); + QMenu *addRemoveCategoriesMenu = new QMenu(tr("Change Categories"), &menu); populateMenuCategories(addRemoveCategoriesMenu, 0); connect(addRemoveCategoriesMenu, SIGNAL(aboutToHide()), this, SLOT(addRemoveCategories_MenuHandler())); - addMenuAsPushButton(menu, addRemoveCategoriesMenu); - QMenu *primaryCategoryMenu = new QMenu(tr("Primary Category"), menu); + addMenuAsPushButton(&menu, addRemoveCategoriesMenu); + QMenu *primaryCategoryMenu = new QMenu(tr("Primary Category"), &menu); connect(primaryCategoryMenu, SIGNAL(aboutToShow()), this, SLOT(addPrimaryCategoryCandidates())); - addMenuAsPushButton(menu, primaryCategoryMenu); - menu->addSeparator(); - menu->addAction(tr("Rename Separator..."), this, SLOT(renameMod_clicked())); - menu->addAction(tr("Remove Separator..."), this, SLOT(removeMod_clicked())); - menu->addSeparator(); - addModSendToContextMenu(menu); - menu->addAction(tr("Select Color..."), this, SLOT(setColor_clicked())); + addMenuAsPushButton(&menu, primaryCategoryMenu); + menu.addSeparator(); + menu.addAction(tr("Rename Separator..."), this, SLOT(renameMod_clicked())); + menu.addAction(tr("Remove Separator..."), this, SLOT(removeMod_clicked())); + menu.addSeparator(); + addModSendToContextMenu(&menu); + menu.addAction(tr("Select Color..."), this, SLOT(setColor_clicked())); if(info->getColor().isValid()) - menu->addAction(tr("Reset Color"), this, SLOT(resetColor_clicked())); - menu->addSeparator(); + menu.addAction(tr("Reset Color"), this, SLOT(resetColor_clicked())); + menu.addSeparator(); } else if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_FOREIGN) != flags.end()) { - addModSendToContextMenu(menu); + addModSendToContextMenu(&menu); } else { - QMenu *addRemoveCategoriesMenu = new QMenu(tr("Change Categories"), menu); + QMenu *addRemoveCategoriesMenu = new QMenu(tr("Change Categories"), &menu); populateMenuCategories(addRemoveCategoriesMenu, 0); connect(addRemoveCategoriesMenu, SIGNAL(aboutToHide()), this, SLOT(addRemoveCategories_MenuHandler())); - addMenuAsPushButton(menu, addRemoveCategoriesMenu); + addMenuAsPushButton(&menu, addRemoveCategoriesMenu); - QMenu *primaryCategoryMenu = new QMenu(tr("Primary Category"), menu); + QMenu *primaryCategoryMenu = new QMenu(tr("Primary Category"), &menu); connect(primaryCategoryMenu, SIGNAL(aboutToShow()), this, SLOT(addPrimaryCategoryCandidates())); - addMenuAsPushButton(menu, primaryCategoryMenu); + addMenuAsPushButton(&menu, primaryCategoryMenu); - menu->addSeparator(); + menu.addSeparator(); if (info->downgradeAvailable()) { - menu->addAction(tr("Change versioning scheme"), this, SLOT(changeVersioningScheme())); + menu.addAction(tr("Change versioning scheme"), this, SLOT(changeVersioningScheme())); } if (info->updateIgnored()) { - menu->addAction(tr("Un-ignore update"), this, SLOT(unignoreUpdate())); + menu.addAction(tr("Un-ignore update"), this, SLOT(unignoreUpdate())); } else { if (info->updateAvailable() || info->downgradeAvailable()) { - menu->addAction(tr("Ignore update"), this, SLOT(ignoreUpdate())); + menu.addAction(tr("Ignore update"), this, SLOT(ignoreUpdate())); } } - menu->addSeparator(); + menu.addSeparator(); - menu->addAction(tr("Enable selected"), this, SLOT(enableSelectedMods_clicked())); - menu->addAction(tr("Disable selected"), this, SLOT(disableSelectedMods_clicked())); + menu.addAction(tr("Enable selected"), this, SLOT(enableSelectedMods_clicked())); + menu.addAction(tr("Disable selected"), this, SLOT(disableSelectedMods_clicked())); - menu->addSeparator(); + menu.addSeparator(); - addModSendToContextMenu(menu); + addModSendToContextMenu(&menu); - menu->addAction(tr("Rename Mod..."), this, SLOT(renameMod_clicked())); - menu->addAction(tr("Reinstall Mod"), this, SLOT(reinstallMod_clicked())); - menu->addAction(tr("Remove Mod..."), this, SLOT(removeMod_clicked())); - menu->addAction(tr("Create Backup"), this, SLOT(backupMod_clicked())); + menu.addAction(tr("Rename Mod..."), this, SLOT(renameMod_clicked())); + menu.addAction(tr("Reinstall Mod"), this, SLOT(reinstallMod_clicked())); + menu.addAction(tr("Remove Mod..."), this, SLOT(removeMod_clicked())); + menu.addAction(tr("Create Backup"), this, SLOT(backupMod_clicked())); - menu->addSeparator(); + menu.addSeparator(); if (info->getNexusID() > 0 && Settings::instance().endorsementIntegration()) { switch (info->endorsedState()) { case ModInfo::ENDORSED_TRUE: { - menu->addAction(tr("Un-Endorse"), this, SLOT(unendorse_clicked())); + menu.addAction(tr("Un-Endorse"), this, SLOT(unendorse_clicked())); } break; case ModInfo::ENDORSED_FALSE: { - menu->addAction(tr("Endorse"), this, SLOT(endorse_clicked())); - menu->addAction(tr("Won't endorse"), this, SLOT(dontendorse_clicked())); + menu.addAction(tr("Endorse"), this, SLOT(endorse_clicked())); + menu.addAction(tr("Won't endorse"), this, SLOT(dontendorse_clicked())); } break; case ModInfo::ENDORSED_NEVER: { - menu->addAction(tr("Endorse"), this, SLOT(endorse_clicked())); + menu.addAction(tr("Endorse"), this, SLOT(endorse_clicked())); } break; default: { - QAction *action = new QAction(tr("Endorsement state unknown"), menu); + QAction *action = new QAction(tr("Endorsement state unknown"), &menu); action->setEnabled(false); - menu->addAction(action); + menu.addAction(action); } break; } } - menu->addSeparator(); + menu.addSeparator(); std::vector flags = info->getFlags(); if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_INVALID) != flags.end()) { - menu->addAction(tr("Ignore missing data"), this, SLOT(ignoreMissingData_clicked())); + menu.addAction(tr("Ignore missing data"), this, SLOT(ignoreMissingData_clicked())); } if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_ALTERNATE_GAME) != flags.end()) { - menu->addAction(tr("Mark as converted/working"), this, SLOT(markConverted_clicked())); + menu.addAction(tr("Mark as converted/working"), this, SLOT(markConverted_clicked())); } if (info->getNexusID() > 0) { - menu->addAction(tr("Visit on Nexus"), this, SLOT(visitOnNexus_clicked())); + menu.addAction(tr("Visit on Nexus"), this, SLOT(visitOnNexus_clicked())); } else if ((info->getURL() != "")) { - menu->addAction(tr("Visit web page"), this, SLOT(visitWebPage_clicked())); + menu.addAction(tr("Visit web page"), this, SLOT(visitWebPage_clicked())); } - menu->addAction(tr("Open in Explorer"), this, SLOT(openExplorer_clicked())); + menu.addAction(tr("Open in Explorer"), this, SLOT(openExplorer_clicked())); } if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_FOREIGN) == flags.end()) { - QAction *infoAction = menu->addAction(tr("Information..."), this, SLOT(information_clicked())); - menu->setDefaultAction(infoAction); + QAction *infoAction = menu.addAction(tr("Information..."), this, SLOT(information_clicked())); + menu.setDefaultAction(infoAction); } - } - menu->exec(modList->mapToGlobal(pos)); - delete menu; + menu.exec(modList->mapToGlobal(pos)); + } } catch (const std::exception &e) { reportError(tr("Exception: ").arg(e.what())); } catch (...) { @@ -4925,7 +4921,9 @@ void MainWindow::languageChange(const QString &newLanguage) updateDownloadView(); updateProblemsButton(); - ui->listOptionsBtn->setMenu(modListContextMenu(ui->listOptionsBtn)); + QMenu *listOptionsMenu = new QMenu(ui->listOptionsBtn); + initModListContextMenu(listOptionsMenu); + ui->listOptionsBtn->setMenu(listOptionsMenu); ui->openFolderMenu->setMenu(openFolderMenu()); } diff --git a/src/mainwindow.h b/src/mainwindow.h index 6e2f247d..0e39c613 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -281,7 +281,7 @@ private: bool createBackup(const QString &filePath, const QDateTime &time); QString queryRestore(const QString &filePath); - QMenu *modListContextMenu(QWidget *parent); + void initModListContextMenu(QMenu *menu); void addModSendToContextMenu(QMenu *menu); void addPluginSendToContextMenu(QMenu *menu); diff --git a/src/organizer_en.ts b/src/organizer_en.ts index ed614df7..b9bcece4 100644 --- a/src/organizer_en.ts +++ b/src/organizer_en.ts @@ -1555,7 +1555,7 @@ p, li { white-space: pre-wrap; } - + Create Backup @@ -1731,8 +1731,8 @@ p, li { white-space: pre-wrap; } - - + + Refresh @@ -1927,7 +1927,7 @@ p, li { white-space: pre-wrap; } - + Update @@ -1938,7 +1938,7 @@ p, li { white-space: pre-wrap; } - + No Notifications @@ -1965,7 +1965,7 @@ p, li { white-space: pre-wrap; } - + Endorse Mod Organizer @@ -2000,649 +2000,649 @@ p, li { white-space: pre-wrap; } - + 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 - + Notifications - + 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. - + 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 - + Also in: <br> - + No conflict - + <Edit...> - + 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 spawn notepad.exe: %1 - + failed to change origin name: %1 - + failed to move "%1" from mod "%2" to "%3": %4 - + <Contains %1> - + <Checked> - + <Unchecked> - + <Update> - + <Mod Backup> - + <Managed by MO> - + <Managed outside MO> - + <No category> - + <Conflicted> - + <Not Endorsed> - + 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. - + You need to be logged in with Nexus to resume a download - - - - + + + + You need to be logged in with Nexus to endorse - - + + Endorsing multiple mods will take a while. Please wait... - - + + Unendorsing multiple mods will take a while. Please wait... - + Failed to display overwrite dialog: %1 - + 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? - + Web page for this mod is unknown - + <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. - - + + Are you sure? - + About to recursively delete: - + Not logged in, endorsement information will be wrong - + 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 Logs folder - + Install Mod... - + Create empty mod - + Create Separator - + Enable all visible - + Disable all visible - + Check all for update @@ -2652,31 +2652,31 @@ You can also use online editors and converters instead. - - + + Send to - - + + Top - - + + Bottom - - + + Priority... - + Separator... @@ -2686,159 +2686,159 @@ You can also use online editors and converters instead. - + Sync to Mods... - + Move content to Mod... - + Clear Overwrite... - - + + Open in Explorer - + Restore Backup - + Remove Backup... - - + + Change Categories - - + + Primary Category - + Rename Separator... - + Remove Separator... - + Select Color... - + Reset Color - + Change versioning scheme - + Un-ignore update - + Ignore update - - + + Enable selected - - + + Disable selected - + Rename Mod... - + Reinstall Mod - + Remove Mod... - + Un-Endorse - + Won't endorse - + Endorsement state unknown - + Ignore missing data - + Mark as converted/working - + Visit on Nexus - + Visit web page - + Information... - + Exception: - + Unknown exception @@ -2907,330 +2907,330 @@ Click OK to restart MO now. - + failed to write to file %1 - + %1 written - + Select binary - + Binary - + Enter Name - + Please enter a name for the executable - + Not an executable - + This is not a recognized executable. - - + + Replace file? - + There already is a hidden version of this file. Replace it? - - + + File operation failed - - + + Failed to remove "%1". Maybe you lack the required file permissions? - + There already is a visible version of this file. Replace it? - - + + Set Priority - + Set the priority of the selected plugins - + file not found: %1 - + failed to generate preview for %1 - + Sorry, can't preview anything. This function currently does not support extracting from bsas. - + Update available - + Open/Execute - + Add as Executable - + Preview - + Un-Hide - + Hide - + Write To File... - + Do you want to endorse Mod Organizer on %1 now? - + Thank you! - + Thank you for your endorsement! - + 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... - + This will restart MO, continue? - + Edit Categories... - + Deselect filter - + Remove - + Enable all - + Disable all - + Unlock load order - + Lock load order - + Open Origin in Explorer - + Open Origin Info... - + depends on missing "%1" - + incompatible with "%1" - + Please wait while LOOT is running - + loot failed. Exit code was: %1 - + failed to start loot - + failed to run loot: %1 - + Errors occured - + 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 modlist 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 @@ -4422,172 +4422,172 @@ p, li { white-space: pre-wrap; } - - + + Installation successful - - + + Configure Mod - - + + This mod contains ini tweaks. Do you want to configure them now? - - + + mod not found: %1 - - + + Installation cancelled - - + + The mod was not installed completely. - + Executable not found: %1 - + Start Steam? - + Steam is required to be running already to correctly start the game. Should MO try to start steam now? - + Error - + Windows Event Log Error - + The Windows Event Log service is disabled and/or not running. This prevents USVFS from running properly. Your mods may not be working in the executable that you are launching. Note that you may have to restart MO and/or your PC after the service is fixed. Continue launching %1? - + Blacklisted Executable - + The executable you are attempted to launch is blacklisted in the virtual file system. This will likely prevent the executable, and any executables that are launched by this one, from seeing any mods. This could extend to INI files, save games and any other virtualized files. Continue launching %1? - + No profile set - + Failed to refresh list of esps: %1 - + Multiple esps/esls activated, please check that they don't conflict. - + 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 - + The designated write target "%1" is not enabled. @@ -5584,58 +5584,64 @@ If the folder was still in use, restart MO and try again. + Please select the game to manage - + + Canceled finding game in "%1". + + + + No game identified in "%1". The directory is required to contain the game binary. - + 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 - + Please use "Help" from the toolbar to get usage instructions to all elements - + <Manage...> - + failed to parse profile %1: %2 -- cgit v1.3.1