From fe44deb765775107da3e4fbd52d5e04574753566 Mon Sep 17 00:00:00 2001 From: Jeremy Rimpo Date: Mon, 23 Oct 2017 02:31:22 -0500 Subject: Update QtQuick import to 2.7 (for Qt 5.7) - works with 5.9 Requires update to uibase --- src/tutorials/Highlight.qml | 2 +- src/tutorials/Tooltip.qml | 2 +- src/tutorials/TooltipArea.qml | 2 +- src/tutorials/TutorialDescription.qml | 2 +- src/tutorials/TutorialOverlay.qml | 2 +- src/tutorials/tutorials_installdialog.qml | 2 +- src/tutorials/tutorials_mainwindow.qml | 2 +- src/tutorials/tutorials_modinfodialog.qml | 2 +- src/tutorials/tutorials_nexusdialog.qml | 2 +- src/tutorials/tutorials_settingsdialog.qml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/tutorials/Highlight.qml b/src/tutorials/Highlight.qml index 55474c91..b6fb7676 100644 --- a/src/tutorials/Highlight.qml +++ b/src/tutorials/Highlight.qml @@ -1,4 +1,4 @@ -import QtQuick 1.1 +import QtQuick 2.7 Rectangle { radius: 10 diff --git a/src/tutorials/Tooltip.qml b/src/tutorials/Tooltip.qml index 6424d9ab..cca71efa 100644 --- a/src/tutorials/Tooltip.qml +++ b/src/tutorials/Tooltip.qml @@ -1,4 +1,4 @@ -import QtQuick 1.1 +import QtQuick 2.7 Rectangle { diff --git a/src/tutorials/TooltipArea.qml b/src/tutorials/TooltipArea.qml index 48a50f76..b6b3d073 100644 --- a/src/tutorials/TooltipArea.qml +++ b/src/tutorials/TooltipArea.qml @@ -1,4 +1,4 @@ -import QtQuick 1.1 +import QtQuick 2.7 Rectangle { radius: 2 diff --git a/src/tutorials/TutorialDescription.qml b/src/tutorials/TutorialDescription.qml index 498573d2..4079b70d 100644 --- a/src/tutorials/TutorialDescription.qml +++ b/src/tutorials/TutorialDescription.qml @@ -1,4 +1,4 @@ -import QtQuick 1.1 +import QtQuick 2.7 // rectangle for description texts Rectangle { diff --git a/src/tutorials/TutorialOverlay.qml b/src/tutorials/TutorialOverlay.qml index 15fe9603..47e5065d 100644 --- a/src/tutorials/TutorialOverlay.qml +++ b/src/tutorials/TutorialOverlay.qml @@ -1,4 +1,4 @@ -import QtQuick 1.1 +import QtQuick 2.7 import "tutorials.js" as Logic Rectangle { diff --git a/src/tutorials/tutorials_installdialog.qml b/src/tutorials/tutorials_installdialog.qml index 33f0a660..9cc21097 100644 --- a/src/tutorials/tutorials_installdialog.qml +++ b/src/tutorials/tutorials_installdialog.qml @@ -1,4 +1,4 @@ -import QtQuick 1.1 +import QtQuick 2.7 TutorialOverlay { id: tutorial diff --git a/src/tutorials/tutorials_mainwindow.qml b/src/tutorials/tutorials_mainwindow.qml index 0012b686..0d660a29 100644 --- a/src/tutorials/tutorials_mainwindow.qml +++ b/src/tutorials/tutorials_mainwindow.qml @@ -1,4 +1,4 @@ -import QtQuick 1.1 +import QtQuick 2.7 TutorialOverlay { id: tutorial diff --git a/src/tutorials/tutorials_modinfodialog.qml b/src/tutorials/tutorials_modinfodialog.qml index e9a56cb3..74f6adfa 100644 --- a/src/tutorials/tutorials_modinfodialog.qml +++ b/src/tutorials/tutorials_modinfodialog.qml @@ -1,4 +1,4 @@ -import QtQuick 1.1 +import QtQuick 2.7 TutorialOverlay { id: tutorial diff --git a/src/tutorials/tutorials_nexusdialog.qml b/src/tutorials/tutorials_nexusdialog.qml index 6a7af6d6..9fb9aafd 100644 --- a/src/tutorials/tutorials_nexusdialog.qml +++ b/src/tutorials/tutorials_nexusdialog.qml @@ -1,4 +1,4 @@ -import QtQuick 1.1 +import QtQuick 2.7 TutorialOverlay { id: tutorial diff --git a/src/tutorials/tutorials_settingsdialog.qml b/src/tutorials/tutorials_settingsdialog.qml index e9a56cb3..74f6adfa 100644 --- a/src/tutorials/tutorials_settingsdialog.qml +++ b/src/tutorials/tutorials_settingsdialog.qml @@ -1,4 +1,4 @@ -import QtQuick 1.1 +import QtQuick 2.7 TutorialOverlay { id: tutorial -- cgit v1.3.1 From ac3953030df11f8c9356fa8998c795608f3180e0 Mon Sep 17 00:00:00 2001 From: Jeremy Rimpo Date: Mon, 23 Oct 2017 16:09:27 -0500 Subject: Fix the nexus description link handler --- src/CMakeLists.txt | 1 + src/descriptionpage.h | 28 ++++++++++ src/modinfodialog.cpp | 14 +++-- src/organizer_en.ts | 147 ++++++++++++++++++++++++++------------------------ 4 files changed, 117 insertions(+), 73 deletions(-) create mode 100644 src/descriptionpage.h (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 833f7504..d5ebf6ae 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -171,6 +171,7 @@ SET(organizer_HDRS instancemanager.h usvfsconnector.h eventfilter.h + descriptionpage.h shared/windows_error.h shared/error_report.h diff --git a/src/descriptionpage.h b/src/descriptionpage.h new file mode 100644 index 00000000..f6158ee0 --- /dev/null +++ b/src/descriptionpage.h @@ -0,0 +1,28 @@ +#include + +#ifndef DESCRIPTIONPAGE_H +#define DESCRIPTIONPAGE_H + +class DescriptionPage : public QWebEnginePage +{ + Q_OBJECT + +public: + DescriptionPage(QObject* parent = 0) : QWebEnginePage(parent){} + + bool acceptNavigationRequest(const QUrl & url, QWebEnginePage::NavigationType type, bool isMainFrame) + { + if (type == QWebEnginePage::NavigationTypeLinkClicked) + { + emit linkClicked(url); + return false; + } + return true; + } + +signals: + void linkClicked(const QUrl&); + +}; + +#endif //DESCRIPTIONPAGE_H diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp index c96c2b4a..c586c6b6 100644 --- a/src/modinfodialog.cpp +++ b/src/modinfodialog.cpp @@ -19,6 +19,7 @@ along with Mod Organizer. If not, see . #include "modinfodialog.h" #include "ui_modinfodialog.h" +#include "descriptionpage.h" #include "iplugingame.h" #include "nexusinterface.h" @@ -38,6 +39,7 @@ along with Mod Organizer. If not, see . #include #include #include +#include #include @@ -85,10 +87,12 @@ ModInfoDialog::ModInfoDialog(ModInfo::Ptr modInfo, const DirectoryEntry *directo ui->notesEdit->setText(modInfo->notes()); + ui->descriptionView->setPage(new DescriptionPage); + connect(&m_ThumbnailMapper, SIGNAL(mapped(const QString&)), this, SIGNAL(thumbnailClickedSignal(const QString&))); connect(this, SIGNAL(thumbnailClickedSignal(const QString&)), this, SLOT(thumbnailClicked(const QString&))); connect(m_ModInfo.data(), SIGNAL(modDetailsUpdated(bool)), this, SLOT(modDetailsUpdated(bool))); - connect(ui->descriptionView, SIGNAL(linkClicked(QUrl)), this, SLOT(linkClicked(QUrl))); + connect(ui->descriptionView->page(), SIGNAL(linkClicked(QUrl)), this, SLOT(linkClicked(QUrl))); //TODO: No easy way to delegate links //ui->descriptionView->page()->acceptNavigationRequest(QWebEnginePage::DelegateAllLinks); @@ -826,11 +830,13 @@ void ModInfoDialog::modDetailsUpdated(bool success) "%1" "").arg(BBCode::convertToHTML(nexusDescription)); + ui->descriptionView->page()->setHtml(descriptionAsHTML); + // QString descriptionAsHTML = BBCode::convertToHTML(result["description"].toString()); - ui->descriptionView->setHtml(descriptionAsHTML); + // ui->descriptionView->setHtml(descriptionAsHTML); } else { // ui->descriptionView->setHtml(result["summary"].toString().append(QString("\r\n") + tr("(description incomplete, please visit nexus)"))); - ui->descriptionView->setHtml(tr("(description incomplete, please visit nexus)")); + ui->descriptionView->page()->setHtml(tr("(description incomplete, please visit nexus)")); } updateVersionColor(); @@ -876,7 +882,7 @@ void ModInfoDialog::on_modIDEdit_editingFinished() if (oldID != modID){ m_ModInfo->setNexusID(modID); - ui->descriptionView->setHtml(""); + ui->descriptionView->page()->setHtml(""); if (modID != 0) { m_RequestStarted = false; refreshNexusData(modID); diff --git a/src/organizer_en.ts b/src/organizer_en.ts index 535c16a5..15785d1f 100644 --- a/src/organizer_en.ts +++ b/src/organizer_en.ts @@ -2989,227 +2989,227 @@ p, li { white-space: pre-wrap; } - + &Delete - + &Rename - + &Hide - + &Unhide - + &Open - + &New Folder - - + + Save changes? - - + + Save changes to "%1"? - + File Exists - + A file with that name exists, please enter a new one - + failed to move file - + failed to create directory "optional" - - + + Info requested, please wait - + Main - + Update - + Optional - + Old - + Misc - + Unknown - + Current Version: %1 - + No update available - + (description incomplete, please visit nexus) - + <a href="%1">Visit on Nexus</a> - + Failed to delete %1 - - + + Confirm - + Are sure you want to delete "%1"? - + Are sure you want to delete the selected files? - - + + New Folder - + Failed to create "%1" - - + + 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? - - + + failed to rename %1 to %2 - + There already is a visible version of this file. Replace it? - + Un-Hide - + Hide - + Name - + Please enter a name - - + + Error - + Invalid name. Must be a valid file name - + A tweak by that name exists - + Create Tweak @@ -3870,7 +3870,8 @@ Continue? - The modindex determins the formids of objects originating from this mods. + The modindex determines the formids of objects originating from this mods. + The modindex determins the formids of objects originating from this mods. @@ -3905,37 +3906,37 @@ Continue? - + This plugin can't be disabled (enforced by the game) - + <b>Origin</b>: %1 - + Author - + Description - + Missing Masters - + Enabled Masters - + failed to restore load order for %1 @@ -5628,22 +5629,26 @@ On Windows XP: - <img src=":/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_overwrite" /> indicates that the mod overwrites files that are also available in another mod. + <img src=":/MO/gui/emblem_conflict_overwrite" /> indicates that the mod overwrites files that are also available in another mod. - <img src=":/MO/gui/emblem_conflict_overwritten" /> indicates that the mod is <b>partially</b> overwritten by another. + <img src="qrc:///MO/gui/emblem_conflict_overwritten" /> indicates that the mod is <b>partially</b> overwritten by another. + <img src=":/MO/gui/emblem_conflict_overwritten" /> indicates that the mod is <b>partially</b> overwritten by another. - <img src=":/MO/gui/emblem_conflict_mixed" /> indicates that both of the above is true. + <img src="qrc:///MO/gui/emblem_conflict_mixed" /> indicates that both of the above is true. + <img src=":/MO/gui/emblem_conflict_mixed" /> indicates that both of the above is true. - <img src=":/MO/gui/emblem_conflict_redundant" /> indicates that the mod is completely overwrtten by another. You could as well disable it. + <img src="qrc:///MO/gui/emblem_conflict_redundant" /> indicates that the mod is completely overwrtten by another. You could as well disable it. + <img src=":/MO/gui/emblem_conflict_redundant" /> indicates that the mod is completely overwrtten by another. You could as well disable it. @@ -5684,7 +5689,8 @@ On Windows XP: - Please open the "ESPs"-tab... + Please open the "Plugins"-tab... + Please open the "ESPs"-tab... @@ -5694,17 +5700,20 @@ On Windows XP: - 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 BOSS. BOSS is available on the Nexus and integrates neatly with MO. Basically, if you don't have BOSS yet, install it once this tutorial is over. + 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. + 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 BOSS. BOSS is available on the Nexus and integrates neatly with MO. Basically, if you don't have BOSS yet, install it once this tutorial is over. - After you installed BOSS in the default location (follow its instructions), start MO again and BOSS should automatically appear as an Executable... + After you installed LOOT in the default location (follow its instructions), start MO again and LOOT should automatically appear as an Executable... + After you installed BOSS in the default location (follow its instructions), start MO again and BOSS should automatically appear as an Executable... - When you run BOSS, 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. + 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. + When you run BOSS, 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. -- cgit v1.3.1 From 0c6f9831489840bdb3e74f1cdaa1e6f970d8d428 Mon Sep 17 00:00:00 2001 From: Jeremy Rimpo Date: Mon, 23 Oct 2017 16:11:38 -0500 Subject: Fix up tutorial scripts * Patches for QtQuick 2.x * Fix up tab refs, names, and other out-of-date info --- src/tutorials/TooltipArea.qml | 2 +- src/tutorials/tutorial_conflictresolution_main.js | 20 +++---- src/tutorials/tutorial_firststeps_settings.js | 2 +- src/tutorials/tutorial_primer_main.js | 65 +++++++++++++---------- 4 files changed, 50 insertions(+), 39 deletions(-) (limited to 'src') diff --git a/src/tutorials/TooltipArea.qml b/src/tutorials/TooltipArea.qml index b6b3d073..8d404beb 100644 --- a/src/tutorials/TooltipArea.qml +++ b/src/tutorials/TooltipArea.qml @@ -17,7 +17,7 @@ Rectangle { anchors.fill: parent hoverEnabled: true - onMousePositionChanged: { + onPositionChanged: { if (parent.parent.width - (parent.x + mouseX) < tooltip.width + 50) { tooltip.x = parent.x + mouseX - 15 - tooltip.width } else { diff --git a/src/tutorials/tutorial_conflictresolution_main.js b/src/tutorials/tutorial_conflictresolution_main.js index 00ca8d67..a60a5c8d 100644 --- a/src/tutorials/tutorial_conflictresolution_main.js +++ b/src/tutorials/tutorial_conflictresolution_main.js @@ -44,19 +44,19 @@ function getTutorialSteps() { }, function() { unhighlight() - tutorial.text = qsTr(" indicates that the mod overwrites files that are also available in another mod.") + tutorial.text = qsTr(" indicates that the mod overwrites files that are also available in another mod.") waitForClick() }, function() { - tutorial.text = qsTr(" indicates that the mod is partially overwritten by another.") + tutorial.text = qsTr(" indicates that the mod is partially overwritten by another.") waitForClick() }, function() { - tutorial.text = qsTr(" indicates that both of the above is true.") + tutorial.text = qsTr(" indicates that both of the above is true.") waitForClick() }, function() { - tutorial.text = qsTr(" indicates that the mod is completely overwrtten by another. You could as well disable it."); + tutorial.text = qsTr(" indicates that the mod is completely overwrtten by another. You could as well disable it."); waitForClick() }, function() { @@ -65,7 +65,7 @@ function getTutorialSteps() { }, function() { tutorial.text = qsTr("Option A: Switch to the \"Data\"-tab if necessary") - if (!tutorialControl.waitForTabOpen("tabWidget", 2)) { + if (!tutorialControl.waitForTabOpen("tabWidget", 1)) { highlightItem("tabWidget", false) waitForClick() } else { @@ -105,7 +105,7 @@ function getTutorialSteps() { waitForClick() }, function() { - tutorial.text = qsTr("Please open the \"ESPs\"-tab...") + tutorial.text = qsTr("Please open the \"Plugins\"-tab...") highlightItem("tabWidget", true) if (!tutorialControl.waitForTabOpen("tabWidget", 0)) { nextStep() @@ -120,17 +120,17 @@ function getTutorialSteps() { function() { unhighlight() tutorial.text = qsTr("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 BOSS. BOSS is available on the Nexus and integrates " - +"neatly with MO. Basically, if you don't have BOSS yet, install it once this tutorial is over.") + +"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.") waitForClick() }, function() { - tutorial.text = qsTr("After you installed BOSS in the default location (follow its instructions), start MO again and BOSS should automatically appear as an Executable...") + tutorial.text = qsTr("After you installed LOOT in the default location (follow its instructions), start MO again and LOOT should automatically appear as an Executable...") highlightItem("startGroup", false) waitForClick() }, function() { - tutorial.text = qsTr("When you run BOSS, it will automatically re-organize plugins for best compatibility (overwriting your manual changes). " + tutorial.text = qsTr("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.") waitForClick() diff --git a/src/tutorials/tutorial_firststeps_settings.js b/src/tutorials/tutorial_firststeps_settings.js index dd5c6e9c..1dd77d2e 100644 --- a/src/tutorials/tutorial_firststeps_settings.js +++ b/src/tutorials/tutorial_firststeps_settings.js @@ -4,7 +4,7 @@ function getTutorialSteps() function() { highlightItem("tabWidget", true) tutorial.text = qsTr("You can use your regular browser to download from Nexus.\nPlease open the \"Nexus\"-tab") - tutorialControl.waitForTabOpen("tabWidget", 1) + tutorialControl.waitForTabOpen("tabWidget", 2) }, function() { diff --git a/src/tutorials/tutorial_primer_main.js b/src/tutorials/tutorial_primer_main.js index 7ef65df9..5d5597c1 100644 --- a/src/tutorials/tutorial_primer_main.js +++ b/src/tutorials/tutorial_primer_main.js @@ -4,29 +4,40 @@ var tooltips = [] function tooltipWidget(widgetName, explanation, maxheight, clickable) { - var rect = tutorialControl.getRect(widgetName) - var component = Qt.createComponent("TooltipArea.qml") - if (component.status === Component.Error) { - console.log("b" + component.errorString()) - } - if (typeof clickable === 'undefined') { - clickable = false - } - if ((typeof maxheight === 'undefined') || maxheight === 0) { - maxheight = rect.height - } - - var obj = component.createObject(tutToplevel, - { "x" : rect.x, - "y" : rect.y, - "width" : rect.width, - "height" : maxheight - }) - obj.tooltipText = explanation - obj.clickable = clickable - obj.visible = true + var component = Qt.createComponent("TooltipArea.qml") + if (component.status === Component.Ready) + finishCreation(component, widgetName, explanation, maxheight, clickable); + else + component.statusChanged.connect(function() { + finishCreation(component, widgetName, explanation, maxheight, clickable); + }); +} - tooltips.push(obj) +function finishCreation(component, widgetName, explanation, maxheight, clickable) { + if (component.status === Component.Ready) { + var rect = tutorialControl.getRect(widgetName) + if (typeof clickable === 'undefined') { + clickable = false + } + if ((typeof maxheight === 'undefined') || maxheight === 0) { + maxheight = rect.height + } + + var obj = component.createObject(tutToplevel, + { + "x": rect.x, + "y": rect.y, + "width": rect.width, + "height": maxheight + }) + obj.tooltipText = explanation + obj.clickable = clickable + obj.visible = true + + tooltips.push(obj) + } else if (component.status === Component.Error) { + console.log("Error loading component: " + component.errorString()) + } } function tooltipAction(actionName, explanation, maxheight, clickable) { @@ -79,16 +90,16 @@ function setupTooptips() { tooltipWidget("bossButton", qsTr("Automatically sort plugins using the bundled LOOT application.")) tooltipWidget("espFilterEdit", qsTr("Quickly filter plugin list as you type.")) break + // case 1: + // tooltipWidget("bsaList", qsTr("All the asset archives (.bsa files) for all active mods.")) + // break case 1: - tooltipWidget("bsaList", qsTr("All the asset archives (.bsa files) for all active mods.")) - break - case 2: tooltipWidget("dataTree", qsTr("The directory tree and all files that the program will see.")) break - case 3: + case 2: tooltipWidget("savegameList", qsTr("Save game browser. Shows all the saves for the current profile and whether or not the current mod-load status is correct.")) break - case 4: + case 3: tooltipWidget("downloadView", qsTr("Shows the mods that have been downloaded and if they’ve been installed.")) break } -- cgit v1.3.1