Compare commits

...
232 Commits
Author SHA1 Message Date
Jeremy Rimpo 886fb10288 Merge pull request #343 from Modorganizer2/Develop
Better error message when archives can't be extracted
2018-05-08 19:33:47 -05:00
Silarn 693f3c40ee Better error message when archives can't be extracted 2018-05-08 19:33:25 -05:00
Jeremy Rimpo 26b946a905 Merge pull request #342 from Modorganizer2/Develop
Fix an issue with resuming a completed download
2018-05-08 19:24:02 -05:00
Silarn 11aa955d73 Fix issue with resuming a download that was already complete. 2018-05-08 19:22:07 -05:00
Silarn 2486c554a0 Small compat fix for Qt 5.11 2018-05-08 18:47:45 -05:00
Jeremy Rimpo 5e6bb0a16e Merge pull request #341 from Modorganizer2/Develop
Reset the progress bar data after completing the extraction
2018-05-08 11:35:45 -05:00
Silarn 632474ef97 Reset the progress bar data after completing the extraction 2018-05-08 11:31:05 -05:00
Brian Munro 0da6af17b2 Merge pull request #336 from Modorganizer2/Develop
Release 2.1.3
2018-05-08 12:47:54 +02:00
Silarn 44111d12c1 Remove a pointless error when the game doesn't have a script extender 2018-05-07 17:20:33 -05:00
Silarn 02d3f81829 Changes to allow installer_NCC to use the game source set in the DL meta 2018-05-07 01:29:00 -05:00
Silarn fc74aa90d1 Updating about dialog with additional supporters 2018-05-06 17:31:06 -05:00
Silarn 7d9514d497 Translation updates 2018-05-06 17:22:06 -05:00
Silarn 6359d7d23f Fixes for downloads and installs 2018-05-06 17:21:35 -05:00
Silarn 5f8bbaae2a Make sure project_path is set before trying to use it 2018-05-06 10:18:23 -05:00
Silarn fe33d7af43 Rework the existing file download dialog to pause the download while waiting
- Also fixes direct calls to downloadFinished
2018-05-05 01:28:09 -05:00
Silarn 9ae442810b Make sure to update the index when data is changed 2018-05-04 19:00:55 -05:00
Silarn 9998727dba Vastly improved plugin index generation and sorting 2018-05-04 18:26:57 -05:00
Silarn a76d987647 Update the about dialog 2018-05-04 17:28:58 -05:00
Silarn a29192f9b2 Incorporate uibase translations into organizer 2018-05-04 16:16:32 -05:00
Silarn a77433f881 Use queued connections and do while loops to finish event processing 2018-05-04 14:28:19 -05:00
Silarn 54e2197592 Allow update processor to include the managed game if nexus info matches 2018-05-04 11:35:44 -05:00
Silarn 0d7460996a Further offload setValue to avoid threading issues 2018-05-04 11:34:49 -05:00
Silarn d9b1cfdb4b invokeMethod was getting called too late and is unneeded now 2018-05-04 02:30:10 -05:00
Silarn 98b659f0da Updating gitignore 2018-05-04 00:28:43 -05:00
Silarn 979c09b334 Update translation file 2018-05-04 00:15:48 -05:00
Silarn cf5833437d Bump to version 2.1.3 2018-05-03 19:36:39 -05:00
Silarn 0eaa1c6791 Add version check and update processor 2018-05-03 19:36:14 -05:00
Silarn fa193ddabb Initial icons for alternate games 2018-05-03 18:25:27 -05:00
Silarn cc32c8c06b Use a five second delta to calculate speed for more responsive display 2018-05-03 17:14:05 -05:00
Silarn 9872c1e462 Allow for primary game sources and marking mods as converted/working 2018-05-03 16:17:40 -05:00
Silarn e3989fe8f9 Merge branch 'Develop' of https://github.com/Modorganizer2/modorganizer into Develop 2018-05-02 17:04:50 -05:00
Silarn f7c9b8c333 Thread extraction process and properly offload function calls from threads 2018-05-02 17:04:28 -05:00
Jeremy Rimpo 5555a58f84 Merge pull request #335 from AnyOldName3/proxy-multiple-inheritance-support
Proxy multiple inheritance support
2018-05-02 14:01:50 -05:00
Silarn 6588a81b7f Only check for the mod organizer endorsement if the ID is set 2018-05-02 13:48:31 -05:00
Silarn 2091330af2 Clean up handling of managed game instance in NexusInterface 2018-05-02 13:47:59 -05:00
Silarn 168da18aa5 Fix MO endorsement check and add game to ModInfo s_ModsByModID 2018-05-02 12:38:23 -05:00
AnyOldName3 4245036f52 Remove unused function which made things confusing 2018-05-02 17:12:34 +01:00
AnyOldName3 238c252b4c Coalesce plugins with the same name in the settings dialogue (as they already share setting values) 2018-05-02 17:11:54 +01:00
AnyOldName3 938d3ce91b Take a list of proxied plugins for each name to work around multiple inheritance issues 2018-05-02 17:10:38 +01:00
Silarn d62ec9c867 Allow downloads to display speed and complete % 2018-05-01 21:50:20 -05:00
Silarn 3bb7a44610 Update translation files 2018-05-01 17:02:05 -05:00
Silarn 4bf7b4e103 Update the NMM version 2018-05-01 13:18:39 -05:00
Silarn d3c207193f Add all supported games to the nxmhandler config 2018-05-01 13:01:44 -05:00
Silarn 584c6049f9 Remove redundant code causing multiple installs 2018-05-01 12:37:07 -05:00
Silarn 2b7274380e Release memory 2018-05-01 12:36:47 -05:00
Silarn 275afb730f A couple download header-based fixes
* If an unknown content error, only fail if the filesize is off
* If a text content type, output a warning but do not retry the download
2018-04-30 13:56:27 -05:00
Silarn 0306b0fc42 Change Nexus API URL 2018-04-28 23:32:39 -05:00
Silarn 86c97c7c06 4096 was the correct number 2018-04-27 20:24:20 -05:00
Silarn 3114bcbd8d Fix ESL index display and sorting by index 2018-04-27 20:21:42 -05:00
Silarn 41a479bddf Cache the current game as populating the dropdown triggers the save 2018-04-27 20:00:51 -05:00
Silarn e02614ee14 Add alternative game flag and check 2018-04-27 01:57:59 -05:00
Al12rs cfbe399bba Fixed mod rename to allow just changing letters to uppercase or lowercase.
(Previously it would not allow it as it detected an existing mod having the same name (check is caseInsensitive)).
2018-04-25 23:48:18 +02:00
Silarn 10b8d12152 Update to https for other nexus links For Security 2018-04-24 09:28:08 -07:00
Silarn b3ef185866 Update Nexus protocol to https 2018-04-24 09:22:51 -07:00
Silarn 18328587b5 Merge branch 'Develop' of https://github.com/Modorganizer2/modorganizer into Develop 2018-04-23 22:13:03 -07:00
Silarn 31bf15f3b4 Need to check if the file is in the download directory for creating meta 2018-04-23 22:12:46 -07:00
Al12rs 001fddb069 Changed the shortcut to open in explorer a mod to CTRL+Enter to avoid consuming the Enter key press so that people can still use it to finish renaming a mod. 2018-04-22 16:39:26 +02:00
Silarn 141ac311d2 Don't create meta files if they don't exist 2018-04-21 22:32:17 -05:00
Silarn fbb93eaf86 Remove remnants of QtScript and fix some CMake issues 2018-04-19 01:43:57 -05:00
Silarn 7e04542762 Some tweaks to make MO the top window when loading or changing games 2018-04-18 11:46:42 -05:00
Silarn 08b56ee783 Improve and fix handling of external links 2018-04-18 03:41:53 -05:00
Silarn 85faed5de1 Fix issues with download query 2018-04-17 19:14:17 -05:00
Al12rs 189445191d Added Delete shourcut to both modinfodialog and Overwriteinfodilaog. Added confirm messages since delete can't be undone. 2018-04-18 00:08:05 +02:00
Al 618fd543a6 Merge pull request #315 from Al12rs/Develop
Ui and shortcut changes.
2018-04-17 22:43:24 +02:00
Al12rs f276203517 Changed mod Information dialog "Next" and "Previous" buttons to remember the currently viewed tab. 2018-04-17 21:51:22 +02:00
Al12rs b64fd1ed4d Enter shourcut will now open the mod containing the selected plugin if the ESPList has the focus.
Added F5 shourcut to refresh the profile.
Removed a redundant variable I saw by chance.
2018-04-17 21:51:01 +02:00
Al12rs b1329c18cd Added Enter shortcut support for ovewrite as well to open the Explorer window. 2018-04-17 21:50:41 +02:00
Al12rs 62dc387de6 Added key shourtcuts to open in explorer a selected mo by pressing Enter or Return. Needs support for overwrte 2018-04-17 21:50:12 +02:00
Al12rs fc46a6a782 Disabled Hide inactive plugins checkbox in settings as it didn't work. 2018-04-17 21:49:34 +02:00
Al12rs a2d7ce67aa Merged the new open in explorer button with Silarn's code. 2018-04-17 21:49:15 +02:00
Al12rs a14ed8fcd1 Changed the modifodialog to open the first enabled left most tab, if no particular tab was specified by the function caller.
This will allow the users to choose what tab should be opened when opening the mod informations since the order of the tabs can be changed and is saved.
2018-04-17 21:23:40 +02:00
Al12rs c669fed48a Fixed inconsistency in line endings. 2018-04-17 21:22:46 +02:00
Silarn 634825e1b8 Adjust mod info dialog, add tooltips, update old 2018-04-17 03:04:59 -05:00
Silarn 7688175c68 Add source game setter in mod info dialog 2018-04-17 02:47:07 -05:00
Silarn b4eae6e5d1 Fix signal/slot connector for available server parser 2018-04-17 00:33:15 -05:00
Silarn b1c477f8ec Fix for virtualized executable path 2018-04-16 15:31:45 -05:00
Jeremy Rimpo 8b3a83ed8d Merge pull request #311 from AnyOldName3/load-qtbase-qm
Load qtbase qm
2018-04-16 14:18:04 -05:00
Silarn 332cdc155a Merge branch 'Develop' of https://github.com/Modorganizer2/modorganizer into Develop 2018-04-16 12:48:52 -05:00
Silarn 30c177cb37 Support for multi-game downloads 2018-04-16 12:47:17 -05:00
AnyOldName3 ae4e4f9df8 Load qtbase_<language>.qm when possible 2018-04-15 12:59:04 +01:00
AnyOldName3 dd24b60895 Update .gitignore with missing msbuild stuff. 2018-04-15 12:58:27 +01:00
Al12rs fa104b342f Moved the Changelog to the detailed text to avoid the msgbox going below the scree. The readability is not graeat as QMessageBox does not allow resizing for some petty reason. 2018-04-15 02:54:58 +02:00
Al12rs cc2c4cc918 Fix for programs set to start from inside the top level of a mod folder not launching. 2018-04-15 02:54:47 +02:00
Jeremy Rimpo 978d71bb43 Merge pull request #304 from AnyOldName3/proxy-translation-support
Proxy translation support
2018-04-13 12:42:54 -05:00
AnyOldName3 25b6fe1471 Reload plugin translation databases when changing language. 2018-04-13 14:49:59 +01:00
AnyOldName3 6b5680f6e4 Make pluginFileNames() include those of proxied plugins, too. 2018-04-13 14:46:04 +01:00
Brian Munro bc75009169 Merge pull request #294 from Modorganizer2/Develop
Release 2.1.2
2018-04-13 11:56:36 +02:00
Jeremy Rimpo 8be73d2e3b Remove extraneous search code 2018-04-13 00:38:23 -05:00
Silarn 358e2c4e74 Merge branch 'Develop' of https://github.com/Modorganizer2/modorganizer into Develop 2018-04-11 15:13:33 -05:00
Silarn be2d39b035 Add flag and description text to ESL-flagged ESPs 2018-04-11 15:12:31 -05:00
Jeremy Rimpo 8f0b42d466 Merge branch 'master' into Develop 2018-04-11 13:14:41 -05:00
Silarn 37b1bdd9e6 Bump version to 2.1.2 and update meta info 2018-04-11 12:58:46 -05:00
Silarn e037caf58e Fix both remove and reinstall updating hidden downloads 2018-04-11 10:58:22 -05:00
Silarn e33da8402c Allow multi-extract via archive origin entry in the BSA tab 2018-04-11 00:55:52 -05:00
Silarn c4bfee0089 Prep for Qt 5.11 (backward-compatible) 2018-04-10 23:28:33 -05:00
Silarn 5a24d2b60c Minor improvements to download hiding 2018-04-10 01:53:59 -05:00
Silarn 9465966b2c Created threaded process for writing mod meta files to prevent hangs 2018-04-09 12:18:22 -05:00
Silarn 47dc5cded7 Add DXTex header licenses for new BSATK handling of FO4 texture BA2s 2018-04-09 12:17:15 -05:00
Silarn bf9d187036 Merge branch 'Develop' of https://github.com/Modorganizer2/modorganizer into Develop 2018-04-08 14:58:23 -05:00
Silarn 208eaccbf7 Updates to allow a full plugin data refresh in certain circumstances 2018-04-08 14:56:46 -05:00
Al12rs fb1c376533 Added "Open/Execute" context menu entry to the conflicts tab in the modinfodialog. 2018-04-08 14:41:03 +02:00
Silarn 0f8852f487 Also mark hidden downloads as uninstalled; refresh plugins after files 2018-04-08 03:58:08 -05:00
Silarn 7eba6837dd Prevent redownloading a mod if the download is still in progress 2018-04-07 23:54:22 -05:00
Silarn cc2bd15256 Fix for re-downloading a mod already downloading 2018-04-07 22:18:45 -05:00
Silarn b409a0bef9 Install the translation file (we need at least one) 2018-04-07 20:09:41 -05:00
Silarn d62669e1b4 Fix overwritten file preview 2018-04-07 18:58:12 -05:00
Silarn a1d92fb673 Fix up CMAKE to use /MP and allow building through umbrella 2018-04-07 17:12:22 -05:00
Al12rs fd9eb032b6 Added file preview in conflicts tab in the mod information dialog. The preview is not working for the lower file list for some reason but I left the setup of the context menu and all in case somebody else can figure out what I'm missing. 2018-04-07 19:53:41 +02:00
Al12rs 5c39a762e6 Allow MO2 shortcuts that open the indicated MO2 instance in the argument if the executable name is omitted.
This should be added after the MO2 exe path: '  "moshortcut://myInstanceName:" '. If there are caracters after the ":" then MO2 will assume that is an execuatble and will try to run it.
2018-04-07 14:10:16 +02:00
Silarn a905ce130d Update About dialog with new contributors (and don't translate names) 2018-04-06 18:25:11 -05:00
Silarn fed89352d1 Changes to allow plugin loading in the mod info dialog (and rename SE) 2018-04-06 00:56:58 -05:00
Silarn 74dd2bb914 Return extraction context menu to archive list 2018-04-05 23:57:24 -05:00
Silarn dcbcb29ec7 Update to allow linking to updated bsatk 2018-04-03 14:59:04 -05:00
Jeremy Rimpo 92e3fa2fdd Merge branch 'Develop' of https://github.com/Modorganizer2/modorganizer into Develop 2018-03-23 11:56:23 -05:00
Jeremy Rimpo 5a98d69dcd Fix tab index now that the archive tab is back 2018-03-23 11:35:27 -05:00
Al 5dd0e3b77e Merge pull request #287 from SuperSandro2000/imgbot
[ImgBot] optimizes images
2018-03-23 15:30:39 +01:00
Al 4baba035dd Merge pull request #286 from SuperSandro2000/fix-ocd
Proper variable naming
2018-03-23 15:12:49 +01:00
ImgBotApp 5eb03a687c [ImgBot] optimizes images
*Total -- 173.23kb -> 19.45kb (88.77%)

/src/resources/multiply-red.png -- 15.64kb -> 0.65kb (95.84%)
/src/resources/archive-conflict-neutral.png -- 17.63kb -> 0.83kb (95.31%)
/src/resources/archive-conflict-loser.png -- 17.63kb -> 0.87kb (95.09%)
/src/resources/archive-conflict-winner.png -- 17.63kb -> 0.92kb (94.8%)
/src/resources/archive-conflict-mixed.png -- 17.63kb -> 0.95kb (94.63%)
/src/resources/switch-instance-icon.png -- 56.17kb -> 4.23kb (92.47%)
/src/resources/open-Folder-Icon.png -- 16.53kb -> 1.40kb (91.53%)
/src/resources/contents/conversation.png -- 1.47kb -> 0.81kb (44.75%)
/src/resources/contents/breastplate.png -- 1.39kb -> 0.77kb (44.47%)
/src/resources/contents/locked-chest.png -- 1.41kb -> 0.78kb (44.38%)
/src/resources/contents/lyre.png -- 1.36kb -> 0.76kb (43.59%)
/src/resources/contents/usable.png -- 1.31kb -> 0.81kb (37.99%)
/src/resources/contents/hand-of-god.png -- 1.08kb -> 0.67kb (37.6%)
/src/resources/contents/double-quaver.png -- 0.99kb -> 0.63kb (36.57%)
/src/resources/contents/jigsaw-piece.png -- 0.93kb -> 0.66kb (28.78%)
/src/resources/contents/tinker.png -- 1.01kb -> 0.72kb (28.52%)
/src/resources/contents/empty-chessboard.png -- 0.69kb -> 0.52kb (23.94%)
/src/resources/contents/checkbox-tree.png -- 0.64kb -> 0.52kb (19.15%)
/src/resources/check.png -- 0.44kb -> 0.39kb (13.19%)
/src/resources/contents/config.png -- 0.54kb -> 0.47kb (13.04%)
/src/resources/document-save.png -- 1.12kb -> 1.09kb (2.87%)
2018-03-23 14:09:58 +00:00
Brian Munro dd288fe152 Merge pull request #284 from LePresidente/Develop
Updater and Issue reports now point to Modorganizer2/modorganizer
2018-03-22 09:46:09 +02:00
LePresidente ba0a1bd501 Updater and Issue reports now point to Modorganizer2/modorganizer 2018-03-22 09:41:35 +02:00
Jeremy Rimpo 2d2a2b8b74 Merge pull request #281 from SuperSandro2000/patch-1
Added new repos
2018-03-21 10:17:54 -05:00
Sandro Jäckel 0e0c72422c Added new repos 2018-03-21 10:05:37 +01:00
Sandro Jäckel 82d4742e28 Proper variable naming
and fixed Sandros OCD
2018-03-21 08:23:03 +01:00
Jeremy Rimpo 3cceb6502c Merge pull request #280 from Al12rs/Develop
Fixed preview "file not found" error if the mod folder containing the…
2018-03-20 21:41:37 -05:00
Al12rs 92a8a3dce8 Fixed preview "file not found" error if the mod folder containing the file was on a different drive. 2018-03-21 00:12:39 +01:00
Jeremy Rimpo bcc4c8d6aa Update BY SA v3 license file to match others 2018-03-20 17:18:57 -05:00
Jeremy Rimpo 149ce846b5 Installer license not needed for application 2018-03-20 17:12:25 -05:00
Jeremy Rimpo 192b0bafa5 Update about dialogue and licenses 2018-03-20 17:11:00 -05:00
Jeremy Rimpo 0c792d548f Fix lootcli destroying loadorder on newer games 2018-03-20 17:10:35 -05:00
Jeremy Rimpo 336216ba9a Various save game improvements related to script extender files
* Improve handling of SE save transfers and deletes with main save
* Add indicator in save popup dialog if SE save file is present
2018-03-20 01:29:31 -05:00
Al b71d472e08 Merge pull request #276 from Al12rs/Develop
Disabled iniTweaks, added resources, a few ui fixes and text changes.
2018-03-18 10:06:04 +01:00
Al12rs bbce6506cd Fixed another typo in the same resource 2018-03-17 14:41:43 +01:00
Al12rs 2def87a143 Fixed a typo of the added resource. 2018-03-17 12:42:15 +01:00
Al12rs 90165b02ab Disabled iniTweaks part of modinfodialog until it is not fixed. 2018-03-17 01:08:02 +01:00
Al12rs 8095be550f Added archive-conflict icons to resources. 2018-03-17 00:58:55 +01:00
Al12rs 2fa1b04cd4 Various text and ui changes:
Added description to CSV export.
Added line to delete instance error message.
Changed delete instance icon for the list of instances.
Added red X in the resources, thanks to twizz0r.
2018-03-16 18:02:57 +01:00
Al a4b0524c70 Merge pull request #274 from Al12rs/Develop
Fixed default size and positioning of some ui elements to accomodate …
2018-03-15 19:28:27 +01:00
Al12rs 8dee1d108b Fixed default size and positioning of some ui elements to accomodate the new ones.
Fixed incorrect settings for the layout stretching.
2018-03-15 15:21:37 +01:00
Jeremy Rimpo e0f003a9a6 Merge pull request #273 from Al12rs/Develop
Fixed file preview bug, wrong nexus urls in csv export and reverted some ui changes from Creator
2018-03-12 17:36:01 -05:00
Al12rs ccb5ad53e2 Fixed wrong Nexus page url in CSV export. 2018-03-12 23:18:03 +01:00
Jeremy Rimpo 9c596ceb79 Merge pull request #271 from AnyOldName3/qtdds-dll-deployment
Deploy the qtdds.dll as part of the MO install
2018-03-12 14:58:04 -05:00
Al12rs 8305d92157 Reverted some changes added by Qt configurator that caused some wird stretching of the mainwindow. I suspect this is caused by the fact that the archive tab was not disabled in a way that Configurator liked and it is messing with it. 2018-03-12 20:54:30 +01:00
Al12rs 9f61ef5c9e Added a check to the preview function to handle tha case of the file beeing from the actual data folder instead of a mod. 2018-03-12 20:53:33 +01:00
Brian Munro 887d464f2c Merge pull request #272 from SuperSandro2000/patch-1
Updated Repository links
2018-03-12 18:28:45 +02:00
Sandro Jäckel 0d4a59fd91 Missed one 2018-03-12 17:10:49 +01:00
Sandro Jäckel 8f8beea427 Updated Repository links 2018-03-12 16:30:45 +01:00
AnyOldName3 0983c88c17 Deploy the qtdds.dll as part of the MO install 2018-03-11 23:15:07 +00:00
LePresidente 9ee2831c59 Fix library include for zlibstatic 2018-03-11 16:24:12 +02:00
LePresidente d6aab781ee Fix library include for zlibstatic 2018-03-11 16:21:06 +02:00
Sandro Jäckel a7f17c6429 Don't set zlib_root 2018-03-11 14:23:52 +02:00
Jeremy Rimpo 12161d68fb Merge pull request #270 from Modorganizer2/master
Pull master changes into develop
2018-03-10 18:35:05 -06:00
Jeremy Rimpo 090d660831 Merge pull request #268 from AnyOldName3/qt-deploy-fix
Improve Qt deployment so all DLLs are staged properly
2018-03-10 17:50:24 -06:00
AnyOldName3 b7b12bb789 Separate windeployqt calls into their own EXECUTE_PROCESS calls so that they run sequentially 2018-03-10 15:35:22 +00:00
Jeremy Rimpo 30a9f61d6d Merge pull request #266 from SuperSandro2000/Develop
Don't set zlib_root
2018-03-09 18:12:58 -06:00
Sandro Jäckel f7ab05767c Update readme.md 2018-03-09 18:32:07 +01:00
Sandro Jäckel d7e6adb3de Don't set zlib_root 2018-03-09 18:25:48 +01:00
Jeremy Rimpo 00d8c517ec Merge pull request #263 from SuperSandro2000/master
Added qdds.dll as Qt no longer contains it
2018-03-08 16:46:38 -06:00
Jeremy Rimpo c7f660e061 Remove outdated namespacing and correct the PATH setting to appends dlls 2018-03-08 15:55:24 -06:00
Sandro Jäckel d59b28847c Added qdds.dll as Qt no longer contains it 2018-03-08 22:33:23 +01:00
Al 5b565b5634 Merge pull request #259 from Al12rs/Dev
Added check for mod rename and a number of small ui changes.
2018-03-08 22:27:20 +01:00
Al12rs 673a5034f0 Added check for mod rename to ensure the new name is not already used by another mod. 2018-03-07 14:41:48 +01:00
Al12rs 7c87e9a645 Edited "Add/Remove category" menu entry text to "Change Category". 2018-03-07 14:41:26 +01:00
Al12rs 52501e73c9 Updated Open Folder icon as it was not very distinguishable. 2018-03-07 14:40:53 +01:00
Al12rs 513c062932 Inverted position of reinstall and remove mod, as per user request. 2018-03-07 14:39:25 +01:00
Al12rs 7cf0c1a29b Changed tooltip of Open Folder menu. 2018-03-07 14:38:59 +01:00
Al12rs a873f7cfe2 Removed "Repace category" menu option from the modlist as it was redundant and cluttering the menu. 2018-03-07 14:38:30 +01:00
Al12rs 1b85cda626 Added open logs folder to open folder toolbar dropdown. 2018-03-07 14:37:12 +01:00
Brian Munro c7e1d9738f Merge pull request #252 from LePresidente/new_vfs_library
Update master to latest stable code.
2018-03-05 11:35:58 +02:00
Brian Munro a540a542a4 Merge branch 'master' into new_vfs_library 2018-03-05 11:35:47 +02:00
Jeremy Rimpo 3eee61c67b Merge branch 'new_vfs_library' of github.com:LePresidente/modorganizer into new_vfs_library 2018-03-05 00:14:16 -06:00
Jeremy Rimpo 3556d4f58f Light flagged master support and other minor changes 2018-03-05 00:13:09 -06:00
Al 8e97f3f84c Merge pull request #251 from SuperSandro2000/readme
Added GPLv3 license to repo
2018-03-03 21:30:16 +01:00
Sandro Jäckel e6f999ffbb Added license 2018-03-03 14:23:12 +01:00
Al 5fcd51aad8 Merge pull request #247 from Al12rs/new_vfs_library
- Added "Open Folders" drop-down menu over modlist.
2018-02-28 21:00:11 +01:00
Al12rs c1421d0734 - Added Open Folders drop-down menu over the modlist (using new custom icon) and moved there all previuolsy added "open <> folder" menu options.
- Added "Open MO install folder" option.
2018-02-28 20:57:08 +01:00
Al 4a45e1a2a7 Merge pull request #239 from SuperSandro2000/readme
Update readme.md
2018-02-26 21:45:38 +01:00
Al 50c244d7e1 Merge pull request #244 from Al12rs/new_vfs_library
Added new stylesheets and changed border of clear filter button.
2018-02-26 21:44:09 +01:00
Al12rs b82f9f1006 Added two custom stylesheets created by AlcoholSwabs on nexus that he very kindly gave permissions to include in MO2 releases. 2018-02-26 21:35:37 +01:00
Al12rs 8ebd79ee71 Reduced Clear filter red border to one pixel instead of two. 2018-02-26 21:34:14 +01:00
Sandro Jäckel e70ee1e895 Update readme.md 2018-02-23 12:40:49 +01:00
Brian Munro 0a4fa10ca4 Merge pull request #237 from SuperSandro2000/new_vfs_library
Revert "Applied clang-format on source"
2018-02-23 06:38:12 +02:00
Sandro Jäckel ea6292168a Revert "Applied clang-format on source"
This reverts commit 5e5c9c0729.
2018-02-23 01:45:58 +01:00
Brian Munro 28714f0eb8 Merge pull request #236 from SuperSandro2000/new_vfs_library
Update reame.md
2018-02-22 18:02:02 +02:00
Sandro Jäckel 5e5c9c0729 Applied clang-format on source 2018-02-22 16:54:34 +01:00
Sandro 5ad912e193 Update CMakeLists.txt
project name was different than I thought
2018-02-22 16:46:43 +01:00
Sandro Jäckel 0fa6f7feff Merge remote-tracking branch 'upstream/new_vfs_library' into new_vfs_library 2018-02-22 16:38:30 +01:00
Sandro Jäckel (SuperSandro2000) ee7d801b86 Added truly all Repos to readme.md and changed a few bits 2018-02-22 16:31:11 +01:00
Sandro 1cdfb7105d Update CMakeLists.txt
project name was different than I thought
2018-02-22 16:27:53 +01:00
Brian Munro 0bcd752b27 Merge pull request #235 from SuperSandro2000/patch-2
Make sure that we get all files for sure
2018-02-22 15:05:49 +02:00
Sandro 1f34f7d8c1 Make sure that we get all files for sure 2018-02-22 13:28:02 +01:00
Brian Munro c2cc2a82c8 Merge pull request #234 from SuperSandro2000/patch-2
Update CMakeLists.txt
2018-02-22 12:32:56 +02:00
Sandro 7e2b83c922 Update CMakeLists.txt
project name was different than I thought
2018-02-22 11:32:15 +01:00
Brian Munro 9624d86b46 Merge pull request #233 from SuperSandro2000/patch-1
set MO as StartUp Project
2018-02-21 10:58:06 +02:00
Sandro 9fd3f6c4e4 set MO as StartUp Project
Sets MordOrganizer as StartUp Project in VisualStudio.
Reference: https://stackoverflow.com/a/37994396/4446318
2018-02-20 12:14:24 +01:00
Al 4804903f3a Merge pull request #231 from Al12rs/new_vfs_library
Changed switch instance icon and tooltip
2018-02-18 18:47:51 +01:00
Al12rs 61898074fe Changed switch instance icon and tooltip 2018-02-18 16:43:16 +01:00
Al ea7c391c33 Updated description and links 2018-02-16 10:29:20 +01:00
Al 7dfe0c9a8f Merge pull request #229 from SuperSandro2000/patch-1
Updated repo links in Readme to LePresidente ones
2018-02-16 10:10:53 +01:00
Sandro 0241d71da3 Updated repo links in Readme to LePresidente ones
Info: https://github.com/TanninOne/modorganizer-tool_nmmimport has not been forked by LePresidente
2018-02-16 09:11:00 +01:00
Al 5be7c9a0b5 Merge pull request #228 from Al12rs/new_vfs_library
Export to csv feature changes and added clear filter button.
2018-02-15 12:23:33 +01:00
Al12rs f7374a8525 - Added "Clear all Filters" button with red outline that only shows up if one or more filters are selected.
- Fixed a bug that would not allow the already present "Clear" button under the filters tab to clear "contains" type of filters.
- Fixed a bug that enabled the "Clear" button at the start even if there were no filters selected.
2018-02-15 01:56:40 +01:00
Al12rs dd8f73178c Small changes to make the modlist context menu more organized. 2018-02-14 20:08:31 +01:00
Al12rs 3f5f56397b - Complete overhaul of export to csv feature with custom column selection and added entries.
Basically I added a new dialog to ask the user if he wants all/enabled/visible mods and what columns to include via checkboxes.
Also added Mod_Status column.
2018-02-14 20:07:53 +01:00
Al12rs e85285934e - Added mod priority, primary category, install date and nexus url columns to Export to csv feature.
- Changed priority and install date format to be sortable in csv columns.
2018-02-13 23:49:18 +01:00
Al12rs e1fc0d22b6 - Fixed a bug that would keep re-activating the "Create files in mod instead of Overwrite" setting in the executable dialog after the user activated it for the first time.
Basically it looked in the stored settings to see if there was an entry for that executable to decide if the checkbox was to be enebled but never deleted that entry if the checkbox was then deselected.
2018-02-13 21:02:56 +01:00
Al12rs 9ddbf25809 Added support for High DPI Scaling for higher resolution monitors. 2018-02-12 17:19:07 +01:00
Al12rs ed08faa4a8 - Changed "Remove Installed" and "Delete Installed" Downloads menu options to not consider the Downloads of Mods that were uninstalled.
- Changed Downloads menu options to say "Hide all..." instead of "Remove all...".
2018-02-12 17:18:18 +01:00
Al12rs 0c4cdb89ad Changed the data tab to remember the current expanded folders when hiding or un-hiding a file. Using the refresh button will close alll the expanded nodes an return to the initial state as it did before. 2018-02-08 22:59:35 +01:00
Jeremy Rimpo 28b0411cca Merge pull request #219 from Al12rs/new_vfs_library
Fixed customOverwrite, reverted nxm handler commit, added a few menu options.
2018-02-07 14:08:17 -06:00
Al12rs d6b645413c Revert "Fixed nexus link handling to use gameNexusName() instead of gameShortName()."
This reverts commit ca54760c13.
2018-01-27 12:28:56 +01:00
Al12rs 3a17614bed Added "open downloads folder", "open profile folder", "open game fodler" and "open MyGames fodler" to the menu entries options of the mainwindow.
Changed the menu entry "open in explorer" of overwrite to show even if overwrite is empty.
2018-01-26 18:24:36 +01:00
Al12rs ba0cd0e10d Fixed customOverwrite setting for executables.
The setting was not being passed to spawnBinary() and was left empty. Just added a couple lines to pass that too. If the setting is disabled cutomOverwrite should be empty and the normal overwrite folder will be used instead.
2018-01-24 13:43:53 +01:00
Jeremy Rimpo 8c34131bb8 Merge pull request #209 from Al12rs/new_vfs_library
Added a delete Instances dialog and various other things.
2018-01-22 14:06:36 -06:00
Al12rs 3fdb00e0c9 Added "Open instance folder" entry to the small options list menĂą. 2018-01-19 12:46:07 +01:00
Al12rs 95b258c0df Updated InstanceSelection dialog to be slighly more clear. 2018-01-19 11:53:47 +01:00
Al12rs 45b3614fbc fixed a typo in the label text 2018-01-19 01:13:45 +01:00
Al12rs 7dbb4cedda Added message when creating a new instance with an already existing name,
Aldded manageInstances dialog to allow users to delete local instances,
Added a number of confirmation messageboxes.
2018-01-18 19:57:52 +01:00
Brian Munro 5d5a7b8511 Merge pull request #203 from erasmux/dev
Add warning when MO1 hook.dll is left in game folder
2018-01-13 11:27:09 +02:00
Brian Munro 0413bf27a5 Merge pull request #199 from matzman666/new_vfs_library
Fixed handling of nexus links for FO4VR.
2018-01-13 11:27:01 +02:00
Eran Mizrahi d267b8aaf3 Add warning when MO1 hook.dll is left in game folder 2018-01-13 00:34:07 +02:00
matzman666 ca54760c13 Fixed nexus link handling to use gameNexusName() instead of gameShortName(). 2018-01-06 21:36:21 +01:00
Jeremy Rimpo d2c5ed352d Merge pull request #195 from erasmux/dev
Cleaner openssl deployment and add diagnostics for openssl loading
2018-01-05 23:15:07 -06:00
Eran Mizrahi 71995f0343 preload openssl dlls (probably unnecessary but can help troubleshooting openssl issues) 2018-01-06 06:43:00 +02:00
Eran Mizrahi 5579db7f90 remove opensll dll from manifest 2018-01-06 06:43:00 +02:00
Jeremy Rimpo d2f90e6a76 Merge pull request #193 from erasmux/dev
Log MO version + remove downloads auto scrolling
2018-01-05 10:16:34 -06:00
Eran Mizrahi 785852cf21 Don't auto scroll down the downloads list (even when a file was downloaded) 2018-01-04 23:41:44 +02:00
Eran Mizrahi 14b06dd2e8 Don't auto scroll down the downloads list 2018-01-04 21:01:30 +02:00
Eran Mizrahi 58ec83f8c8 Log the MO version for diagnostic purposes 2018-01-04 21:01:30 +02:00
Jeremy Rimpo d06972729d Merge pull request #180 from erasmux/dev
Prefer hiding the MO proxy when waiting for spawned processes
2018-01-01 21:16:06 -06:00
Eran Mizrahi 39efb9a7c2 Prefer hiding the MO proxy when waiting for spawned processes 2017-12-29 15:32:25 +02:00
Brian Munro a4e43b68cd Create ISSUE_TEMPLATE.md
Added issue template for future issues to stick to a standard
2017-12-10 15:52:59 +02:00
Brian Munro cdf588e7c4 Added download location for furture releases,
Added download location for furture releases,
2016-12-13 07:26:25 +02:00
103 changed files with 11249 additions and 968 deletions
+4 -7
View File
@@ -2,17 +2,14 @@
Thumbs.db
src/moc_*.cpp
src/ui_*.h
src/organizer_en.ts
src/*.qrc.depends
src/Modorganizer.*
src/*.bak
CMakeLists.txt.user
edit
stderr.log
stdout.log
vs_stderr.log
vs_stdout.log
build
/vsbuild
/CMakeFiles
.idea
/msbuild.log
/*std*.log
/*build
+6 -5
View File
@@ -1,14 +1,15 @@
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12)
ADD_COMPILE_OPTIONS($<$<CXX_COMPILER_ID:MSVC>:/MP>)
PROJECT(organizer)
# sets ModOrganizer as StartUp Project in Visual Studio
set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" PROPERTY VS_STARTUP_PROJECT "ModOrganizer")
SET(DEPENDENCIES_DIR CACHE PATH "")
# hint to find qt in dependencies path
LIST(APPEND CMAKE_PREFIX_PATH ${QT_ROOT}/lib/cmake)
FILE(GLOB_RECURSE BOOST_ROOT ${DEPENDENCIES_DIR}/boost*/project-config.jam)
GET_FILENAME_COMPONENT(BOOST_ROOT ${BOOST_ROOT} DIRECTORY)
SET(ZLIB_ROOT ${DEPENDENCIES_DIR}/zlib)
LIST(APPEND CMAKE_PREFIX_PATH ${LZ4_ROOT}/dll)
ADD_SUBDIRECTORY(src)
+674
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+72 -31
View File
@@ -1,42 +1,83 @@
# Mod Organizer
Mod Organizer (MO) is a tool for managing mod collections of arbitrary size. It is specifically designed for people who like to experiment with mods and thus need an easy and reliable way to install and uninstall them.
Mod Organizer 2 is a mod manager created by Tannin to support 64-bit games like Skyrim Special Edition and Fallout 4 in addition to all the 32-bit games MO1 already supported.
Tannin discontinued the project when he was hired by the Nexus team to develop their new Vortex mod manager.
MO2 was not completed and was left with many issues. LePresidente managed to fix it to a usable state by himself after SkyrimSE came out, adding support for it, and releasing v2.0.8.
The project took up speed again after a few more coders showed up in late 2017, and a lot of progress has been made.
## Help Wanted!
Mod Organizer 2 is an open project in the hands of the community, there are problems that need to be solved and things that could be added. MO2 really needs developers and if you have the programming skills and some free time you can really improve the experience of the modding community.
To have more information, please join the open MO2 Development discord server :* [ModOrganizerDevs](https://discord.gg/vD2ZbfX)
If you want to help translate MO2 to your language you should join the discord server too and head to the #translation channel.
To setup a development environment on your machine, there is the [umbrella project](https://github.com/Modorganizer2/modorganizer-umbrella) that handles that.
If you want to submit your code changes, please use a good formating style like the default one in Visual Studio.
Through the work of a few people of the community MO2 has come quite far, now it needs some more of those people to go further.
## Reporting Issues:
Issues should be reported to the GitHub page or on the open discord server: [ModOrganizerDevs](https://discord.gg/vD2ZbfX). Here is also where dev builds are tested, bugs are reported and investigated, suggestions are discussed and a lot more.
Credits to Tannin, LePresidente, Silarn, erasmux, AL12 and many others for the development.
## Download Location
* on [GitHub.com](https://github.com/Modorganizer2/modorganizer/releases)
* on [NexusMods.com](https://www.nexusmods.com/skyrimspecialedition/mods/6194)
## Old Download Location
* [TanninOne/modorganizer/releases](https://github.com/TanninOne/modorganizer/releases)
## Building
Please refer to [TanninOne/modorganizer-umbrella](https://github.com/TanninOne/modorganizer-umbrella) for build instructions.
Please refer to [Modorganizer2/modorganizer-umbrella](https://github.com/Modorganizer2/modorganizer-umbrella) for build instructions.
## Other Repositories
MO consists of multiple repositories on github. The Umbrella project will download them automatically as required. They should however also be buildable individually.
MO2 consists of multiple repositories on github. The Umbrella project will download them automatically as required. They should however also be buildable individually.
Here is a complete list:
* https://github.com/TanninOne/modorganizer
* https://github.com/TanninOne/modorganizer-uibase
* https://github.com/TanninOne/modorganizer-hookdll
* https://github.com/TanninOne/modorganizer-bsatk
* https://github.com/TanninOne/modorganizer-esptk
* https://github.com/TanninOne/modorganizer-archive
* https://github.com/TanninOne/modorganizer-nxmhandler
* https://github.com/TanninOne/modorganizer-lootcli
* https://github.com/TanninOne/modorganizer-helper
* https://github.com/LePresidente/cpython-1
* https://github.com/Modorganizer2/githubpp
* https://github.com/Modorganizer2/modorganizer
* https://github.com/Modorganizer2/modorganizer-archive
* https://github.com/Modorganizer2/modorganizer-bsatk
* https://github.com/Modorganizer2/modorganizer-bsa_extractor
* https://github.com/Modorganizer2/modorganizer-check_fnis
* https://github.com/Modorganizer2/modorganizer-diagnose_basic
* https://github.com/Modorganizer2/modorganizer-esptk
* https://github.com/Modorganizer2/modorganizer-helper
* https://github.com/Modorganizer2/modorganizer-game_fallout3
* https://github.com/Modorganizer2/modorganizer-game_fallout4
* https://github.com/Modorganizer2/modorganizer-game_fallout4vr
* https://github.com/Modorganizer2/modorganizer-game_falloutnv
* https://github.com/Modorganizer2/modorganizer-game_features
* https://github.com/Modorganizer2/modorganizer-game_gamebryo
* https://github.com/Modorganizer2/modorganizer-game_morrowind
* https://github.com/Modorganizer2/modorganizer-game_oblivion
* https://github.com/Modorganizer2/modorganizer-game_skyrim
* https://github.com/Modorganizer2/modorganizer-game_skyrimSE
* https://github.com/Modorganizer2/modorganizer-game_ttw
* https://github.com/Modorganizer2/modorganizer-installer_bain
* https://github.com/Modorganizer2/modorganizer-installer_bundle
* https://github.com/Modorganizer2/modorganizer-installer_fomod
* https://github.com/Modorganizer2/modorganizer-installer_manual
* https://github.com/Modorganizer2/modorganizer-installer_ncc
* https://github.com/Modorganizer2/modorganizer-installer_quick
* https://github.com/Modorganizer2/modorganizer-lootcli
* https://github.com/Modorganizer2/modorganizer-NCC
* https://github.com/Modorganizer2/modorganizer-nxmhandler
* https://github.com/Modorganizer2/modorganizer-plugin_python
* https://github.com/Modorganizer2/modorganizer-preview_base
* https://github.com/Modorganizer2/modorganizer-tool_configurator
* https://github.com/Modorganizer2/modorganizer-tool_inibakery
* https://github.com/Modorganizer2/modorganizer-uibase
* https://github.com/Modorganizer2/usvfs
### Unused Repositories
* https://github.com/Modorganizer2/modorganizer-hookdll
* https://github.com/TanninOne/modorganizer-tool_nmmimport
* https://github.com/TanninOne/modorganizer-tool_configurator
* https://github.com/TanninOne/modorganizer-tool_inieditor
* https://github.com/TanninOne/modorganizer-preview_base
* https://github.com/TanninOne/modorganizer-diagnose_basic
* https://github.com/TanninOne/modorganizer-installer_quick
* https://github.com/TanninOne/modorganizer-installer_manual
* https://github.com/TanninOne/modorganizer-installer_fomod
* https://github.com/TanninOne/modorganizer-installer_bundle
* https://github.com/TanninOne/modorganizer-installer_bain
* https://github.com/TanninOne/modorganizer-game_skyrim
* https://github.com/TanninOne/modorganizer-game_oblivion
* https://github.com/TanninOne/modorganizer-game_fallout3
* https://github.com/TanninOne/modorganizer-game_fallout4
* https://github.com/TanninOne/modorganizer-game_falloutnv
* https://github.com/TanninOne/modorganizer-game_gamebryo
* https://github.com/TanninOne/modorganizer-game_features
* https://github.com/TanninOne/modorganizer-check_fnis
* https://github.com/TanninOne/modorganizer-plugin_python
* https://github.com/TanninOne/modorganizer-bsa_extractor
* https://github.com/TanninOne/usvfs
+47 -26
View File
@@ -1,4 +1,4 @@
CMAKE_MINIMUM_REQUIRED (VERSION 2.8)
CMAKE_MINIMUM_REQUIRED (VERSION 2.8.11)
CMAKE_POLICY(SET CMP0020 NEW)
#CMAKE_POLICY(SET CMP0043 NEW)
@@ -30,6 +30,7 @@ SET(organizer_SRCS
motddialog.cpp
modlistsortproxy.cpp
modlist.cpp
modidlineedit.cpp
modinfodialog.cpp
modinfo.cpp
modinfobackup.cpp
@@ -120,6 +121,7 @@ SET(organizer_HDRS
motddialog.h
modlistsortproxy.h
modlist.h
modidlineedit.h
modinfodialog.h
modinfo.h
modinfobackup.h
@@ -238,6 +240,13 @@ SOURCE_GROUP(Source FILES ${organizer_SRCS})
SOURCE_GROUP(Headers FILES ${organizer_HDRS})
SOURCE_GROUP(UI FILES ${organizer_UIS})
# MO projects
SET(default_project_path "${CMAKE_SOURCE_DIR}/..")
GET_FILENAME_COMPONENT(${default_project_path} ${default_project_path} REALPATH)
SET(project_path "${default_project_path}" CACHE PATH "path to the other mo projects")
#TODO this should not be a hardcoded path
SET(lib_path "${project_path}/../../install/libs")
# Qt5
SET(CMAKE_INCLUDE_CURRENT_DIR ON)
@@ -249,10 +258,13 @@ FIND_PACKAGE(Qt5Quick REQUIRED)
FIND_PACKAGE(Qt5Network REQUIRED)
FIND_PACKAGE(Qt5WinExtras REQUIRED)
FIND_PACKAGE(Qt5WebEngineWidgets REQUIRED)
FIND_PACKAGE(Qt5Qml REQUIRED)
FIND_PACKAGE(Qt5LinguistTools)
QT5_WRAP_UI(organizer_UIHDRS ${organizer_UIS})
QT5_ADD_RESOURCES(organizer_RCCPPS ${organizer_QRCS})
QT5_CREATE_TRANSLATION(organizer_translations_qm ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/src/organizer_en.ts)
SET(mo_translation_sources ${CMAKE_SOURCE_DIR}/src ${project_path}/uibase/src)
QT5_CREATE_TRANSLATION(organizer_translations_qm ${mo_translation_sources} ${CMAKE_SOURCE_DIR}/src/organizer_en.ts)
ADD_CUSTOM_TARGET(translations DEPENDS ${organizer_translations_qm})
INCLUDE_DIRECTORIES(${Qt5Declarative_INCLUDES})
@@ -271,15 +283,6 @@ LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
FIND_PACKAGE(zlib REQUIRED)
# TODO FindZlib doesn't find the static zlib library
# MO projects
SET(default_project_path "${CMAKE_SOURCE_DIR}/..")
GET_FILENAME_COMPONENT(${default_project_path} ${default_project_path} REALPATH)
SET(project_path "${default_project_path}" CACHE PATH "path to the other mo projects")
SET(lib_path "${project_path}/../../install/libs")
INCLUDE_DIRECTORIES(${project_path}/uibase/src
${project_path}/bsatk/src
${project_path}/esptk/src
@@ -287,13 +290,13 @@ INCLUDE_DIRECTORIES(${project_path}/uibase/src
${project_path}/../usvfs/include
${project_path}/game_gamebryo/src
${project_path}/game_features/src
${project_path}/githubpp/src)
${project_path}/githubpp/src
${LZ4_ROOT}/include)
INCLUDE_DIRECTORIES(shared ${ZLIB_INCLUDE_DIRS})
LINK_DIRECTORIES(${lib_path}
${project_path}/../zlib/lib)
${ZLIB_ROOT}/lib
${LZ4_ROOT}/dll)
EXECUTE_PROCESS(
COMMAND git log -1 --format=%h
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
@@ -312,20 +315,27 @@ ENDIF()
ADD_EXECUTABLE(ModOrganizer WIN32 ${organizer_HDRS} ${organizer_SRCS} ${organizer_UIHDRS} ${organizer_RCS} ${organizer_RCCPPS} ${organizer_translations_qm})
TARGET_LINK_LIBRARIES(ModOrganizer
Qt5::Widgets Qt5::WinExtras Qt5::WebEngineWidgets Qt5::Quick
Qt5::Qml Qt5::QuickWidgets Qt5::Network
${Boost_LIBRARIES}
zlibstatic
uibase esptk bsatk githubpp
${usvfs_name}
Dbghelp advapi32 Version Shlwapi)
IF (NOT "${OPTIMIZE_COMPILE_FLAGS}" STREQUAL "")
SET_TARGET_PROPERTIES(ModOrganizer PROPERTIES COMPILE_FLAGS_RELWITHDEBINFO
${OPTIMIZE_COMPILE_FLAGS})
Dbghelp advapi32 Version Shlwapi liblz4)
IF (MSVC)
SET_TARGET_PROPERTIES(ModOrganizer PROPERTIES COMPILE_FLAGS "/std:c++latest")
ENDIF()
IF (MSVC AND "${CMAKE_SIZEOF_VOID_P}" EQUAL 4)
# 32 bits
SET_TARGET_PROPERTIES(ModOrganizer PROPERTIES LINK_FLAGS "/LARGEADDRESSAWARE")
ENDIF()
SET_TARGET_PROPERTIES(ModOrganizer PROPERTIES LINK_FLAGS_RELWITHDEBINFO
"/LARGEADDRESSAWARE ${OPTIMIZE_LINK_FLAGS}")
QT5_USE_MODULES(ModOrganizer Widgets Script Qml QuickWidgets Quick Network WebEngineWidgets)
IF (NOT "${OPTIMIZE_COMPILE_FLAGS}" STREQUAL "")
SET_TARGET_PROPERTIES(ModOrganizer PROPERTIES COMPILE_FLAGS_RELWITHDEBINFO ${OPTIMIZE_COMPILE_FLAGS})
ENDIF()
IF (NOT "${OPTIMIZE_LINK_FLAGS}" STREQUAL "")
SET_TARGET_PROPERTIES(ModOrganizer PROPERTIES LINK_FLAGS_RELWITHDEBINFO ${OPTIMIZE_LINK_FLAGS})
ENDIF()
###############
@@ -347,10 +357,16 @@ INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/dlls.manifest.qt5
SET(windeploy_parameters "--no-translations --plugindir qtplugins --libdir dlls --release-with-debug-info --no-compiler-runtime")
INSTALL(
CODE
"EXECUTE_PROCESS(
COMMAND
"EXECUTE_PROCESS(COMMAND
${qt5bin}/windeployqt.exe ModOrganizer.exe --webenginewidgets ${windeploy_parameters}
COMMAND
WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/bin
)
# run it a second time because on the first run it misses some files
EXECUTE_PROCESS(COMMAND
${qt5bin}/windeployqt.exe ModOrganizer.exe --webenginewidgets ${windeploy_parameters}
WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/bin
)
EXECUTE_PROCESS(COMMAND
${qt5bin}/windeployqt.exe uibase.dll ${windeploy_parameters}
WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/bin
)
@@ -363,6 +379,11 @@ INSTALL(
file(REMOVE_RECURSE ${CMAKE_INSTALL_PREFIX}/bin/qtplugins)"
)
# qdds.dll needs installing manually as Qt no longer ships with it by default.
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../qdds.dll DESTINATION bin/dlls/imageformats)
install(FILES ${organizer_translations_qm} DESTINATION bin/translations)
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/stylesheets
${CMAKE_CURRENT_SOURCE_DIR}/tutorials
DESTINATION bin)
+37 -10
View File
@@ -29,7 +29,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include <QTextBrowser>
#include <QVariant>
#include <Qt>
#include <QFontDatabase>
AboutDialog::AboutDialog(const QString &version, QWidget *parent)
: QDialog(parent)
@@ -37,24 +37,44 @@ AboutDialog::AboutDialog(const QString &version, QWidget *parent)
{
ui->setupUi(this);
m_LicenseFiles[LICENSE_LGPL3] = "lgpl-3.0.txt";
m_LicenseFiles[LICENSE_GPL3] = "gpl-3.0.txt";
m_LicenseFiles[LICENSE_BSD3] = "bsd3.txt";
m_LicenseFiles[LICENSE_LGPL3] = "LGPL-v3.0.txt";
m_LicenseFiles[LICENSE_LGPL21] = "GNU-LGPL-v2.1.txt";
m_LicenseFiles[LICENSE_GPL3] = "GPL-v3.0.txt";
m_LicenseFiles[LICENSE_GPL2] = "GPL-v2.0.txt";
m_LicenseFiles[LICENSE_BOOST] = "boost.txt";
m_LicenseFiles[LICENSE_CCBY3] = "by-sa3.txt";
m_LicenseFiles[LICENSE_7ZIP] = "7zip.txt";
m_LicenseFiles[LICENSE_CCBY3] = "BY-SA-v3.0.txt";
m_LicenseFiles[LICENSE_ZLIB] = "zlib.txt";
m_LicenseFiles[LICENSE_APACHE2] = "apache-license-2.0.txt";
m_LicenseFiles[LICENSE_PYTHON] = "python.txt";
m_LicenseFiles[LICENSE_SSL] = "openssl.txt";
m_LicenseFiles[LICENSE_CPPTOML] = "cpptoml.txt";
m_LicenseFiles[LICENSE_UDIS] = "udis86.txt";
m_LicenseFiles[LICENSE_SPDLOG] = "spdlog.txt";
m_LicenseFiles[LICENSE_FMT] = "fmt.txt";
m_LicenseFiles[LICENSE_SIP] = "sip.txt";
m_LicenseFiles[LICENSE_CASTLE] = "Castle.txt";
m_LicenseFiles[LICENSE_ANTLR] = "AntlrBuildTask.txt";
m_LicenseFiles[LICENSE_DXTEX] = "DXTex.txt";
addLicense("Qt", LICENSE_LGPL3);
addLicense("Qt Json", LICENSE_GPL3);
addLicense("Boost Library", LICENSE_BOOST);
addLicense("7-zip", LICENSE_LGPL3);
addLicense("ZLib", LICENSE_ZLIB);
addLicense("7-zip", LICENSE_7ZIP);
addLicense("ZLib", LICENSE_NONE);
addLicense("Tango Icon Theme", LICENSE_NONE);
addLicense("RRZE Icon Set", LICENSE_CCBY3);
addLicense("Icons by Lorc, Delapouite and sbed available on http://game-icons.net", LICENSE_CCBY3);
addLicense("Castle Core", LICENSE_APACHE2);
addLicense("Castle Core", LICENSE_CASTLE);
addLicense("ANTLR", LICENSE_ANTLR);
addLicense("LOOT", LICENSE_GPL3);
addLicense("Python", LICENSE_PYTHON);
addLicense("OpenSSL", LICENSE_SSL);
addLicense("cpptoml", LICENSE_CPPTOML);
addLicense("Udis86", LICENSE_UDIS);
addLicense("spdlog", LICENSE_SPDLOG);
addLicense("{fmt}", LICENSE_FMT);
addLicense("SIP", LICENSE_SIP);
addLicense("DXTex Headers", LICENSE_DXTEX);
ui->nameLabel->setText(QString("<span style=\"font-size:12pt; font-weight:600;\">%1 %2</span>").arg(ui->nameLabel->text()).arg(version));
#if defined(HGID)
@@ -64,6 +84,8 @@ AboutDialog::AboutDialog(const QString &version, QWidget *parent)
#else
ui->revisionLabel->setText(ui->revisionLabel->text() + " unknown");
#endif
ui->licenseText->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont));
}
@@ -85,10 +107,15 @@ void AboutDialog::on_creditsList_currentItemChanged(QListWidgetItem *current, QL
{
auto iter = m_LicenseFiles.find(current->data(Qt::UserRole).toInt());
if (iter != m_LicenseFiles.end()) {
QString filePath = qApp->applicationDirPath() + "/license/" + iter->second;
QString filePath = qApp->applicationDirPath() + "/licenses/" + iter->second;
QString text = MOBase::readFileText(filePath);
ui->licenseText->setText(text);
} else {
ui->licenseText->setText(tr("No license"));
}
}
void AboutDialog::on_copyrightText_linkActivated(const QString &link)
{
emit linkClicked(link);
}
+18 -2
View File
@@ -40,17 +40,32 @@ public:
explicit AboutDialog(const QString &version, QWidget *parent = 0);
~AboutDialog();
signals:
void linkClicked(QString link);
private:
enum Licenses {
LICENSE_NONE,
LICENSE_LGPL3,
LICENSE_LGPL21,
LICENSE_GPL3,
LICENSE_BSD3,
LICENSE_GPL2,
LICENSE_BOOST,
LICENSE_CCBY3,
LICENSE_PYTHON,
LICENSE_SSL,
LICENSE_CPPTOML,
LICENSE_7ZIP,
LICENSE_ZLIB,
LICENSE_APACHE2
LICENSE_UDIS,
LICENSE_SPDLOG,
LICENSE_FMT,
LICENSE_SIP,
LICENSE_CASTLE,
LICENSE_ANTLR,
LICENSE_DXTEX
};
private:
@@ -59,6 +74,7 @@ private:
private slots:
void on_creditsList_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
void on_copyrightText_linkActivated(const QString &link);
private:
+142 -56
View File
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>604</width>
<height>369</height>
<width>1010</width>
<height>477</height>
</rect>
</property>
<property name="windowTitle">
@@ -120,14 +120,14 @@
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string notr="true">Copyright 2011-2016 Sebastian Herbord</string>
<string notr="true">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Copyright 2011-2016 Sebastian Herbord&lt;/p&gt;&lt;p&gt;Copyright 2016-2018 Mod Organizer 2 contributors&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<widget class="QLabel" name="copyrightText">
<property name="text">
<string notr="true">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;/p&gt;&lt;p&gt;See the GNU General Public License for more details.&lt;/p&gt;&lt;p&gt;Source code can be found at &lt;a href=&quot;https://github.com/TanninOne/modorganizer&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#007af4;&quot;&gt;GitHub&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string notr="true">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;/p&gt;&lt;p&gt;See the GNU General Public License for more details.&lt;/p&gt;&lt;p&gt;Source code can be found at &lt;a href=&quot;https://github.com/Modorganizer2/modorganizer&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#007af4;&quot;&gt;GitHub&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
@@ -153,8 +153,8 @@
<attribute name="title">
<string>Thanks</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<layout class="QGridLayout" name="gridLayout_0">
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Current Maintainers</string>
@@ -167,12 +167,17 @@
</property>
<item>
<property name="text">
<string notr="true">LePresidente</string>
<string>LePresidente (Project Lead)</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Silarn</string>
<string notr="true">AL12</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Diana</string>
</property>
</item>
<item>
@@ -182,7 +187,7 @@
</item>
<item>
<property name="text">
<string notr="true">Diana</string>
<string notr="true">Silarn</string>
</property>
</item>
</widget>
@@ -190,8 +195,29 @@
</layout>
</widget>
</item>
<item>
<item row="1" column="0">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Major Contributors</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7" stretch="0">
<item>
<widget class="QListWidget" name="listWidget_2">
<property name="selectionMode">
<enum>QAbstractItemView::NoSelection</enum>
</property>
<item>
<property name="text">
<string notr="true">AnyOldName3 (Python Plugins)</string>
</property>
</item>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="1" rowspan="2">
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>Translators</string>
</property>
@@ -201,36 +227,6 @@
<property name="selectionMode">
<enum>QAbstractItemView::NoSelection</enum>
</property>
<item>
<property name="text">
<string notr="true">pndrev (German)</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">DaWul (Spanish)</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Fiama (Spanish)</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Alyndiar (French)</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Jlkawaii (French)</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Rigoletto (French)</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Scythe1912 (Chinese)</string>
@@ -248,7 +244,47 @@
</item>
<item>
<property name="text">
<string notr="true">tokcdk (Russian)</string>
<string>Cyb3r (Dutch)</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Alyndiar (French)</string>
</property>
</item>
<item>
<property name="text">
<string>fruttyx (French)</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Jlkawaii (French)</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Rigoletto (French)</string>
</property>
</item>
<item>
<property name="text">
<string>Yoplala (French)</string>
</property>
</item>
<item>
<property name="text">
<string>Faron (German)</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">pndrev (German)</string>
</property>
</item>
<item>
<property name="text">
<string>Mordan (Greek)</string>
</property>
</item>
<item>
@@ -261,7 +297,37 @@
</item>
<item>
<property name="text">
<string>... more (Can't track)</string>
<string>Yoosk (Polish)</string>
</property>
</item>
<item>
<property name="text">
<string>Brgodfx (Portuguese)</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">tokcdk (Russian)</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">DaWul (Spanish)</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Fiama (Spanish)</string>
</property>
</item>
<item>
<property name="text">
<string>Jax (Swedish)</string>
</property>
</item>
<item>
<property name="text">
<string>...and all other Transifex contributors!</string>
</property>
<property name="toolTip">
<string/>
@@ -272,10 +338,10 @@
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_3">
<item row="0" column="2" rowspan="2">
<widget class="QGroupBox" name="groupBox_4">
<property name="title">
<string>Other Supporter</string>
<string>Other Supporters &amp;&amp; Contributors</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
@@ -283,11 +349,6 @@
<property name="selectionMode">
<enum>QAbstractItemView::NoSelection</enum>
</property>
<item>
<property name="text">
<string notr="true">Al12 (Discord) </string>
</property>
</item>
<item>
<property name="text">
<string notr="true">blacksol</string>
@@ -308,6 +369,11 @@
<string notr="true">Bridger</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Brixified</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">GamerPoet</string>
@@ -318,11 +384,36 @@
<string notr="true">Gopher</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">GrantSP</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">GSDFan</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">ogrotten</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">outdatedtv</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Schilduin</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">SuperSandro2000</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Uhuru</string>
@@ -343,11 +434,6 @@
<string notr="true">thosrtanner</string>
</property>
</item>
<item>
<property name="text">
<string>ogrotten</string>
</property>
</item>
</widget>
</item>
</layout>
+2 -2
View File
@@ -173,13 +173,13 @@ void BrowserDialog::titleChanged(const QString &title)
QString BrowserDialog::guessFileName(const QString &url)
{
QRegExp uploadsExp(QString("http://.+/uploads/([^/]+)$"));
QRegExp uploadsExp(QString("https://.+/uploads/([^/]+)$"));
if (uploadsExp.indexIn(url) != -1) {
// these seem to be premium downloads
return uploadsExp.cap(1);
}
QRegExp filesExp(QString("http://.+\\?file=([^&]+)"));
QRegExp filesExp(QString("https://.+\\?file=([^&]+)"));
if (filesExp.indexIn(url) != -1) {
// a regular manual download?
return filesExp.cap(1);
+1 -1
View File
@@ -167,7 +167,7 @@ void CategoryFactory::saveCategories()
}
unsigned int CategoryFactory::countCategories(std::tr1::function<bool (const Category &category)> filter)
unsigned int CategoryFactory::countCategories(std::function<bool (const Category &category)> filter)
{
unsigned int result = 0;
for (const Category &cat : m_Categories) {
+1 -1
View File
@@ -99,7 +99,7 @@ public:
* @param filter the filter to test
* @return number of matching categories
*/
unsigned int countCategories(std::tr1::function<bool (const Category &category)> filter);
unsigned int countCategories(std::function<bool (const Category &category)> filter);
/**
* @brief get the id of the parent category
+23 -25
View File
@@ -1,28 +1,26 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32" name="dlls" version="1.0.0.0" processorArchitecture="x86"/>
<file name="7z.dll"/>
<file name="archive.dll"/>
<file name="d3dcompiler_47.dll"/>
<file name="libeay32.dll"/>
<file name="libEGL.dll"/>
<file name="libGLESV2.dll"/>
<file name="liblz4.dll"/>
<file name="opengl32sw.dll"/>
<file name="Qt5Core.dll"/>
<file name="Qt5Gui.dll"/>
<file name="Qt5Network.dll"/>
<file name="Qt5Positioning.dll"/>
<file name="Qt5PrintSupport.dll"/>
<file name="Qt5Qml.dll"/>
<file name="Qt5Quick.dll"/>
<file name="Qt5QuickWidgets.dll"/>
<file name="Qt5WebChannel.dll"/>
<file name="Qt5SerialPort.dll"/>
<file name="Qt5Svg.dll"/>
<file name="Qt5WebEngineCore.dll"/>
<file name="Qt5WebEngineWidgets.dll"/>
<file name="Qt5Widgets.dll"/>
<file name="Qt5WinExtras.dll"/>
<file name="ssleay32.dll"/>
<assemblyIdentity type="win32" name="dlls" version="1.0.0.0" processorArchitecture="x86"/>
<file name="7z.dll"/>
<file name="archive.dll"/>
<file name="d3dcompiler_47.dll"/>
<file name="libEGL.dll"/>
<file name="libGLESV2.dll"/>
<file name="liblz4.dll"/>
<file name="opengl32sw.dll"/>
<file name="Qt5Core.dll"/>
<file name="Qt5Gui.dll"/>
<file name="Qt5Network.dll"/>
<file name="Qt5Positioning.dll"/>
<file name="Qt5PrintSupport.dll"/>
<file name="Qt5Qml.dll"/>
<file name="Qt5Quick.dll"/>
<file name="Qt5QuickWidgets.dll"/>
<file name="Qt5WebChannel.dll"/>
<file name="Qt5SerialPort.dll"/>
<file name="Qt5Svg.dll"/>
<file name="Qt5WebEngineCore.dll"/>
<file name="Qt5WebEngineWidgets.dll"/>
<file name="Qt5Widgets.dll"/>
<file name="Qt5WinExtras.dll"/>
</assembly>
+8 -6
View File
@@ -53,6 +53,7 @@ DownloadListWidgetDelegate::DownloadListWidgetDelegate(DownloadManager *manager,
m_InstallLabel = m_ItemWidget->findChild<QLabel*>("installLabel");
m_InstallLabel->setVisible(false);
m_Progress->setTextVisible(true);
connect(manager, SIGNAL(stateChanged(int,DownloadManager::DownloadState)), this, SLOT(stateChanged(int,DownloadManager::DownloadState)));
connect(manager, SIGNAL(downloadRemoved(int)), this, SLOT(resetCache(int)));
@@ -88,8 +89,8 @@ void DownloadListWidgetDelegate::drawCache(QPainter *painter, const QStyleOption
void DownloadListWidgetDelegate::paintPendingDownload(int downloadIndex) const
{
std::pair<int, int> nexusids = m_Manager->getPendingDownload(downloadIndex);
m_NameLabel->setText(tr("< mod %1 file %2 >").arg(nexusids.first).arg(nexusids.second));
std::tuple<QString, int, int> nexusids = m_Manager->getPendingDownload(downloadIndex);
m_NameLabel->setText(tr("< game %1 mod %2 file %3 >").arg(std::get<0>(nexusids)).arg(std::get<1>(nexusids)).arg(std::get<2>(nexusids)));
m_SizeLabel->setText("???");
m_InstallLabel->setVisible(true);
m_InstallLabel->setText(tr("Pending"));
@@ -159,7 +160,8 @@ void DownloadListWidgetDelegate::paintRegularDownload(int downloadIndex) const
} else {
m_InstallLabel->setVisible(false);
m_Progress->setVisible(true);
m_Progress->setValue(m_Manager->getProgress(downloadIndex));
m_Progress->setValue(m_Manager->getProgress(downloadIndex).first);
m_Progress->setFormat(m_Manager->getProgress(downloadIndex).second);
}
}
@@ -318,7 +320,7 @@ bool DownloadListWidgetDelegate::editorEvent(QEvent *event, QAbstractItemModel *
if (hidden) {
menu.addAction(tr("Un-Hide"), this, SLOT(issueRestoreToView()));
} else {
menu.addAction(tr("Remove from View"), this, SLOT(issueRemoveFromView()));
menu.addAction(tr("Hide"), this, SLOT(issueRemoveFromView()));
}
} else if (state == DownloadManager::STATE_DOWNLOADING){
menu.addAction(tr("Cancel"), this, SLOT(issueCancel()));
@@ -334,8 +336,8 @@ bool DownloadListWidgetDelegate::editorEvent(QEvent *event, QAbstractItemModel *
menu.addAction(tr("Delete All..."), this, SLOT(issueDeleteAll()));
if (!hidden) {
menu.addSeparator();
menu.addAction(tr("Remove Installed..."), this, SLOT(issueRemoveFromViewCompleted()));
menu.addAction(tr("Remove All..."), this, SLOT(issueRemoveFromViewAll()));
menu.addAction(tr("Hide Installed..."), this, SLOT(issueRemoveFromViewCompleted()));
menu.addAction(tr("Hide All..."), this, SLOT(issueRemoveFromViewAll()));
}
menu.exec(mouseEvent->globalPos());
+7 -6
View File
@@ -88,8 +88,8 @@ void DownloadListWidgetCompactDelegate::drawCache(QPainter *painter, const QStyl
void DownloadListWidgetCompactDelegate::paintPendingDownload(int downloadIndex) const
{
std::pair<int, int> nexusids = m_Manager->getPendingDownload(downloadIndex);
m_NameLabel->setText(tr("< mod %1 file %2 >").arg(nexusids.first).arg(nexusids.second));
std::tuple<QString, int, int> nexusids = m_Manager->getPendingDownload(downloadIndex);
m_NameLabel->setText(tr("< game %1 mod %2 file %3 >").arg(std::get<0>(nexusids)).arg(std::get<1>(nexusids)).arg(std::get<2>(nexusids)));
if (m_SizeLabel != nullptr) {
m_SizeLabel->setText("???");
}
@@ -138,7 +138,8 @@ void DownloadListWidgetCompactDelegate::paintRegularDownload(int downloadIndex)
} else {
m_DoneLabel->setVisible(false);
m_Progress->setVisible(true);
m_Progress->setValue(m_Manager->getProgress(downloadIndex));
m_Progress->setValue(m_Manager->getProgress(downloadIndex).first);
m_Progress->setFormat(m_Manager->getProgress(downloadIndex).second);
}
}
@@ -303,7 +304,7 @@ bool DownloadListWidgetCompactDelegate::editorEvent(QEvent *event, QAbstractItem
if (hidden) {
menu.addAction(tr("Un-Hide"), this, SLOT(issueRestoreToView()));
} else {
menu.addAction(tr("Remove from View"), this, SLOT(issueRemoveFromView()));
menu.addAction(tr("Hide"), this, SLOT(issueRemoveFromView()));
}
} else if (state == DownloadManager::STATE_DOWNLOADING){
menu.addAction(tr("Cancel"), this, SLOT(issueCancel()));
@@ -319,8 +320,8 @@ bool DownloadListWidgetCompactDelegate::editorEvent(QEvent *event, QAbstractItem
menu.addAction(tr("Delete All..."), this, SLOT(issueDeleteAll()));
if (!hidden) {
menu.addSeparator();
menu.addAction(tr("Remove Installed..."), this, SLOT(issueRemoveFromViewCompleted()));
menu.addAction(tr("Remove All..."), this, SLOT(issueRemoveFromViewAll()));
menu.addAction(tr("Hide Installed..."), this, SLOT(issueRemoveFromViewCompleted()));
menu.addAction(tr("Hide All..."), this, SLOT(issueRemoveFromViewAll()));
}
menu.exec(mouseEvent->globalPos());
+245 -86
View File
File diff suppressed because it is too large Load Diff
+33 -16
View File
@@ -38,6 +38,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
namespace MOBase { class IPluginGame; }
class NexusInterface;
class PluginContainer;
/*!
* \brief manages downloading of files and provides progress information for gui elements
@@ -74,7 +75,8 @@ private:
QNetworkReply *m_Reply;
QTime m_StartTime;
qint64 m_PreResumeSize;
int m_Progress;
std::pair<int, QString> m_Progress;
std::tuple<int, int, int, int, int> m_SpeedDiff;
DownloadState m_State;
int m_CurrentUrl;
QStringList m_Urls;
@@ -92,7 +94,7 @@ private:
bool m_Hidden;
static DownloadInfo *createNew(const MOBase::ModRepositoryFileInfo *fileInfo, const QStringList &URLs);
static DownloadInfo *createFromMeta(const QString &filePath, bool showHidden);
static DownloadInfo *createFromMeta(const QString &filePath, bool showHidden, const QString outputDirectory);
/**
* @brief rename the file
@@ -112,7 +114,7 @@ private:
private:
static unsigned int s_NextDownloadID;
private:
DownloadInfo() : m_TotalSize(0), m_ReQueried(false), m_Hidden(false) {}
DownloadInfo() : m_TotalSize(0), m_ReQueried(false), m_Hidden(false), m_SpeedDiff(std::tuple<int,int,int,int,int>(0,0,0,0,0)) {}
};
public:
@@ -162,6 +164,8 @@ public:
*/
void setShowHidden(bool showHidden);
void setPluginContainer(PluginContainer *pluginContainer);
/**
* @brief download from an already open network connection
*
@@ -179,7 +183,7 @@ public:
* @param fileInfo information previously retrieved from the nexus network
* @return true if the download was started, false if it wasn't. The latter currently only happens if there is a duplicate and the user decides not to download again
**/
bool addDownload(QNetworkReply *reply, const QStringList &URLs, const QString &fileName, int modID, int fileID = 0, const MOBase::ModRepositoryFileInfo *fileInfo = new MOBase::ModRepositoryFileInfo());
bool addDownload(QNetworkReply *reply, const QStringList &URLs, const QString &fileName, QString gameName, int modID, int fileID = 0, const MOBase::ModRepositoryFileInfo *fileInfo = new MOBase::ModRepositoryFileInfo());
/**
* @brief start a download using a nxm-link
@@ -209,7 +213,7 @@ public:
* @param index index of the pending download (index in the range [0, numPendingDownloads()[)
* @return pair of modid, fileid
*/
std::pair<int, int> getPendingDownload(int index);
std::tuple<QString, int, int> getPendingDownload(int index);
/**
* @brief retrieve the full path to the download specified by index
@@ -256,7 +260,7 @@ public:
* @param index index of the file to look up
* @return progress of the download in percent (integer)
**/
int getProgress(int index) const;
std::pair<int, QString> getProgress(int index) const;
/**
* @brief retrieve the current state of the download
@@ -285,6 +289,14 @@ public:
**/
int getModID(int index) const;
/**
* @brief retrieve the game name of the downlaod specified by the index
*
* @param index index of the file to look up
* @return the game name
**/
QString getGameName(int index) const;
/**
* @brief determine if the specified file is supposed to be hidden
* @param index index of the file to look up
@@ -307,6 +319,8 @@ public:
*/
void markInstalled(int index);
void markInstalled(QString download);
/**
* @brief mark a download as uninstalled
*
@@ -314,6 +328,8 @@ public:
*/
void markUninstalled(int index);
void markUninstalled(QString download);
/**
* @brief refreshes the list of downloads
*/
@@ -407,15 +423,15 @@ public slots:
void queryInfo(int index);
void nxmDescriptionAvailable(int modID, QVariant userData, QVariant resultData, int requestID);
void nxmDescriptionAvailable(QString gameName, int modID, QVariant userData, QVariant resultData, int requestID);
void nxmFilesAvailable(int modID, QVariant userData, QVariant resultData, int requestID);
void nxmFilesAvailable(QString gameName, int modID, QVariant userData, QVariant resultData, int requestID);
void nxmFileInfoAvailable(int modID, int fileID, QVariant userData, QVariant resultData, int requestID);
void nxmFileInfoAvailable(QString gameName, int modID, int fileID, QVariant userData, QVariant resultData, int requestID);
void nxmDownloadURLsAvailable(int modID, int fileID, QVariant userData, QVariant resultData, int requestID);
void nxmDownloadURLsAvailable(QString gameName, int modID, int fileID, QVariant userData, QVariant resultData, int requestID);
void nxmRequestFailed(int modID, int fileID, QVariant userData, int requestID, const QString &errorString);
void nxmRequestFailed(QString gameName, int modID, int fileID, QVariant userData, int requestID, const QString &errorString);
void managedGameChanged(MOBase::IPluginGame const *gamePlugin);
@@ -423,7 +439,7 @@ private slots:
void downloadProgress(qint64 bytesReceived, qint64 bytesTotal);
void downloadReadyRead();
void downloadFinished();
void downloadFinished(int index = 0);
void downloadError(QNetworkReply::NetworkError error);
void metaDataChanged();
void directoryChanged(const QString &dirctory);
@@ -431,6 +447,7 @@ private slots:
private:
void createMetaFile(DownloadInfo *info);
DownloadManager::DownloadInfo* getDownloadInfo(QString fileName);
public:
@@ -443,7 +460,7 @@ public:
*
* @return Unique(ish) name
*/
QString getDownloadFileName(const QString &baseName) const;
QString getDownloadFileName(const QString &baseName, bool rename = false) const;
private:
@@ -457,7 +474,7 @@ private:
* @param fileInfo information previously retrieved from the mod page
* @return true if the download was started, false if it wasn't. The latter currently only happens if there is a duplicate and the user decides not to download again
**/
bool addDownload(const QStringList &URLs, int modID, int fileID, const MOBase::ModRepositoryFileInfo *fileInfo);
bool addDownload(const QStringList &URLs, QString gameName, int modID, int fileID, const MOBase::ModRepositoryFileInfo *fileInfo);
// important: the caller has to lock the list-mutex, otherwise the DownloadInfo-pointer might get invalidated at any time
DownloadInfo *findDownload(QObject *reply, int *index = nullptr) const;
@@ -476,7 +493,7 @@ private:
QDateTime matchDate(const QString &timeString);
void removePending(int modID, int fileID);
void removePending(QString gameName, int modID, int fileID);
static QString getFileTypeString(int fileType);
@@ -488,7 +505,7 @@ private:
NexusInterface *m_NexusInterface;
QVector<std::pair<int, int> > m_PendingDownloads;
QVector<std::tuple<QString, int, int>> m_PendingDownloads;
QVector<DownloadInfo*> m_ActiveDownloads;
+3
View File
@@ -115,6 +115,9 @@ void EditExecutablesDialog::saveExecutable()
m_Profile->storeSetting("custom_overwrites", ui->titleEdit->text(),
ui->newFilesModBox->currentText());
}
else {
m_Profile->removeSetting("custom_overwrites", ui->titleEdit->text());
}
}
+62 -21
View File
@@ -49,6 +49,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include <QDirIterator>
#include <QDebug>
#include <QTextDocument>
#include <QtConcurrent/QtConcurrentRun>
#include <Shellapi.h>
@@ -181,6 +182,7 @@ bool InstallationManager::unpackSingleFile(const QString &fileName)
m_InstallationProgress->hide();
m_InstallationProgress->deleteLater();
m_InstallationProgress = nullptr;
m_Progress = 0;
});
m_InstallationProgress->setWindowFlags(
m_InstallationProgress->windowFlags() & ~Qt::WindowContextHelpButtonHint);
@@ -190,10 +192,20 @@ bool InstallationManager::unpackSingleFile(const QString &fileName)
m_InstallationProgress->setFixedSize(600, 100);
m_InstallationProgress->show();
bool res = m_ArchiveHandler->extract(QDir::tempPath(),
new MethodCallback<InstallationManager, void, float>(this, &InstallationManager::updateProgress),
nullptr,
new MethodCallback<InstallationManager, void, QString const &>(this, &InstallationManager::report7ZipError));
QFuture<bool> future = QtConcurrent::run([&]() -> bool {
return m_ArchiveHandler->extract(
QDir::tempPath(),
new MethodCallback<InstallationManager, void, float>(this, &InstallationManager::updateProgress),
nullptr,
new MethodCallback<InstallationManager, void, QString const &>(this, &InstallationManager::report7ZipError)
);
});
do {
if (m_Progress != m_InstallationProgress->value())
m_InstallationProgress->setValue(m_Progress);
QCoreApplication::processEvents();
} while (!future.isFinished() || m_InstallationProgress->isVisible());
bool res = future.result();
return res;
}
@@ -270,6 +282,7 @@ QStringList InstallationManager::extractFiles(const QStringList &filesOrig, bool
m_InstallationProgress->hide();
m_InstallationProgress->deleteLater();
m_InstallationProgress = nullptr;
m_Progress = 0;
});
m_InstallationProgress->setWindowFlags(
m_InstallationProgress->windowFlags() & (~Qt::WindowContextHelpButtonHint));
@@ -279,10 +292,20 @@ QStringList InstallationManager::extractFiles(const QStringList &filesOrig, bool
m_InstallationProgress->show();
// unpack only the files we need for the installer
if (!m_ArchiveHandler->extract(QDir::tempPath(),
new MethodCallback<InstallationManager, void, float>(this, &InstallationManager::updateProgress),
nullptr,
new MethodCallback<InstallationManager, void, QString const &>(this, &InstallationManager::report7ZipError))) {
QFuture<bool> future = QtConcurrent::run([&]() -> bool {
return m_ArchiveHandler->extract(
QDir::tempPath(),
new MethodCallback<InstallationManager, void, float>(this, &InstallationManager::updateProgress),
nullptr,
new MethodCallback<InstallationManager, void, QString const &>(this, &InstallationManager::report7ZipError)
);
});
do {
if (m_Progress != m_InstallationProgress->value())
m_InstallationProgress->setValue(m_Progress);
QCoreApplication::processEvents();
} while (!future.isFinished() || m_InstallationProgress->isVisible());
if (!future.result()) {
throw MyException(QString("extracting failed (%1)").arg(m_ArchiveHandler->getLastError()));
}
@@ -410,7 +433,8 @@ DirectoryTree::Node *InstallationManager::getSimpleArchiveBase(DirectoryTree *da
void InstallationManager::updateProgress(float percentage)
{
if (m_InstallationProgress != nullptr) {
m_InstallationProgress->setValue(static_cast<int>(percentage * 100.0));
m_Progress = static_cast<int>(percentage * 100.0);
if (m_InstallationProgress->wasCanceled()) {
m_ArchiveHandler->cancel();
m_InstallationProgress->reset();
@@ -421,10 +445,7 @@ void InstallationManager::updateProgress(float percentage)
void InstallationManager::updateProgressFile(QString const &fileName)
{
if (m_InstallationProgress != nullptr) {
m_InstallationProgress->setLabelText(fileName);
QCoreApplication::processEvents();
}
m_ProgressFile = fileName;
}
@@ -537,7 +558,7 @@ bool InstallationManager::ensureValidModName(GuessedValue<QString> &name) const
return true;
}
bool InstallationManager::doInstall(GuessedValue<QString> &modName, int modID,
bool InstallationManager::doInstall(GuessedValue<QString> &modName, QString gameName, int modID,
const QString &version, const QString &newestVersion,
int categoryID, const QString &repository)
{
@@ -561,6 +582,8 @@ bool InstallationManager::doInstall(GuessedValue<QString> &modName, int modID,
m_InstallationProgress->hide();
m_InstallationProgress->deleteLater();
m_InstallationProgress = nullptr;
m_Progress = 0;
m_ProgressFile = QString();
});
m_InstallationProgress->setWindowFlags(
@@ -568,10 +591,22 @@ bool InstallationManager::doInstall(GuessedValue<QString> &modName, int modID,
m_InstallationProgress->setWindowModality(Qt::WindowModal);
m_InstallationProgress->setFixedSize(600, 100);
m_InstallationProgress->show();
if (!m_ArchiveHandler->extract(targetDirectory,
new MethodCallback<InstallationManager, void, float>(this, &InstallationManager::updateProgress),
new MethodCallback<InstallationManager, void, QString const &>(this, &InstallationManager::updateProgressFile),
new MethodCallback<InstallationManager, void, QString const &>(this, &InstallationManager::report7ZipError))) {
QFuture<bool> future = QtConcurrent::run([&]() -> bool {
return m_ArchiveHandler->extract(
targetDirectory,
new MethodCallback<InstallationManager, void, float>(this, &InstallationManager::updateProgress),
new MethodCallback<InstallationManager, void, QString const &>(this, &InstallationManager::updateProgressFile),
new MethodCallback<InstallationManager, void, QString const &>(this, &InstallationManager::report7ZipError)
);
});
do {
if (m_Progress != m_InstallationProgress->value())
m_InstallationProgress->setValue(m_Progress);
if (m_ProgressFile != m_InstallationProgress->labelText())
m_InstallationProgress->setLabelText(m_ProgressFile);
QCoreApplication::processEvents();
} while (!future.isFinished());
if (!future.result()) {
if (m_ArchiveHandler->getLastError() == Archive::ERROR_EXTRACT_CANCELLED) {
return false;
} else {
@@ -582,6 +617,9 @@ bool InstallationManager::doInstall(GuessedValue<QString> &modName, int modID,
QSettings settingsFile(targetDirectory + "/meta.ini", QSettings::IniFormat);
// overwrite settings only if they are actually are available or haven't been set before
if ((gameName != "") || !settingsFile.contains("gameName")) {
settingsFile.setValue("gameName", gameName);
}
if ((modID != 0) || !settingsFile.contains("modid")) {
settingsFile.setValue("modid", modID);
}
@@ -662,6 +700,7 @@ bool InstallationManager::install(const QString &fileName,
modName.update(QFileInfo(fileName).completeBaseName(), GUESS_FALLBACK);
// read out meta information from the download if available
QString gameName = "";
int modID = 0;
QString version = "";
QString newestVersion = "";
@@ -671,6 +710,7 @@ bool InstallationManager::install(const QString &fileName,
QString metaName = fileName + ".meta";
if (QFile(metaName).exists()) {
QSettings metaFile(metaName, QSettings::IniFormat);
gameName = metaFile.value("gameName", "").toString();
modID = metaFile.value("modID", 0).toInt();
QTextDocument doc;
doc.setHtml(metaFile.value("name", "").toString());
@@ -759,7 +799,7 @@ bool InstallationManager::install(const QString &fileName,
mapToArchive(filesTree.data());
// the simple installer only prepares the installation, the rest
// works the same for all installers
if (!doInstall(modName, modID, version, newestVersion, categoryID,
if (!doInstall(modName, gameName, modID, version, newestVersion, categoryID,
repository)) {
installResult = IPluginInstaller::RESULT_FAILED;
}
@@ -779,7 +819,7 @@ bool InstallationManager::install(const QString &fileName,
= installerCustom->supportedExtensions();
if (installerExt.find(fileInfo.suffix()) != installerExt.end()) {
installResult
= installerCustom->install(modName, fileName, version, modID);
= installerCustom->install(modName, gameName, fileName, version, modID);
unsigned int idx = ModInfo::getIndex(modName);
if (idx != UINT_MAX) {
ModInfo::Ptr info = ModInfo::getByIndex(idx);
@@ -814,7 +854,8 @@ bool InstallationManager::install(const QString &fileName,
}
}
reportError(tr("None of the available installer plugins were able to handle that archive"));
reportError(tr("None of the available installer plugins were able to handle that archive.\n"
"This is likely due to a corrupted or incompatible download or unrecognized archive format."));
return false;
}
+8 -1
View File
@@ -168,7 +168,7 @@ private:
bool isSimpleArchiveTopLayer(const MOBase::DirectoryTree::Node *node, bool bainStyle);
MOBase::DirectoryTree::Node *getSimpleArchiveBase(MOBase::DirectoryTree *dataTree);
bool doInstall(MOBase::GuessedValue<QString> &modName,
bool doInstall(MOBase::GuessedValue<QString> &modName, QString gameName,
int modID, const QString &version, const QString &newestVersion, int categoryID, const QString &repository);
QString generateBackupName(const QString &directoryName) const;
@@ -177,6 +177,11 @@ private:
void postInstallCleanup();
signals:
void progressUpdate(float percentage);
void progressUpdate(QString const fileName);
private:
struct ByPriority {
@@ -207,6 +212,8 @@ private:
QString m_CurrentFile;
QProgressDialog *m_InstallationProgress { nullptr };
int m_Progress;
QString m_ProgressFile;
std::set<QString> m_TempFilesToDelete;

Some files were not shown because too many files have changed in this diff Show More