├── src
├── pch.cpp
├── qt.conf
├── tutorials
│ ├── tutorial_basics.js
│ ├── tutorials_installdialog.qml
│ ├── tutorials_mainwindow.qml
│ ├── tutorials_modinfodialog.qml
│ ├── tutorials_settingsdialog.qml
│ ├── tutorials_nexusdialog.qml
│ ├── tutorial_firststeps.js
│ ├── Highlight.qml
│ ├── tutorial_firststeps_browser.js
│ ├── Tooltip.qml
│ ├── tutorial_conflictresolution_modinfo.js
│ ├── tutorial_firststeps_modinfo.js
│ ├── tutorial_firststeps_settings.js
│ ├── TooltipArea.qml
│ ├── TutorialCanceller.qml
│ ├── TutorialDescription.qml
│ ├── tutorial_window_installer.js
│ └── TutorialOverlay.qml
├── app_icon.rc
├── mo_icon.ico
├── splash.png
├── resources
│ ├── check.png
│ ├── error.png
│ ├── go-up.png
│ ├── show.png
│ ├── badge_1.png
│ ├── badge_2.png
│ ├── badge_3.png
│ ├── badge_4.png
│ ├── badge_5.png
│ ├── badge_6.png
│ ├── badge_7.png
│ ├── badge_8.png
│ ├── badge_9.png
│ ├── go-down.png
│ ├── go-jump.png
│ ├── mo_icon.png
│ ├── package.png
│ ├── plugins.png
│ ├── tracked.png
│ ├── badge_more.png
│ ├── edit-clear.png
│ ├── edit-undo.png
│ ├── function.png
│ ├── go-next_16.png
│ ├── list-add.png
│ ├── log-debug.png
│ ├── start-here.png
│ ├── branch-open.png
│ ├── contact-new.png
│ ├── game-warning.png
│ ├── help-browser.png
│ ├── list-remove.png
│ ├── multiply-red.png
│ ├── process-stop.png
│ ├── view-refresh.png
│ ├── arrange-boxes.png
│ ├── branch-closed.png
│ ├── combobox-down.png
│ ├── conflict-hidden.png
│ ├── conflict-mixed.png
│ ├── contents
│ │ ├── config.png
│ │ ├── lyre.png
│ │ ├── media.png
│ │ ├── tinker.png
│ │ ├── usable.png
│ │ ├── xedit.png
│ │ ├── facegen.png
│ │ ├── mesh-box.png
│ │ ├── breastplate.png
│ │ ├── f4-nuclear.png
│ │ ├── hand-of-god.png
│ │ ├── checkbox-tree.png
│ │ ├── conversation.png
│ │ ├── double-quaver.png
│ │ ├── jigsaw-piece.png
│ │ ├── locked-chest.png
│ │ ├── empty-chessboard.png
│ │ └── feather-and-scroll.png
│ ├── dialog-warning.png
│ ├── document-save.png
│ ├── emblem-favorite.png
│ ├── emblem-readonly.png
│ ├── game-warning-16.png
│ ├── go-previous_16.png
│ ├── help-browser_32.png
│ ├── icon-favorite.png
│ ├── mail-attachment.png
│ ├── status_active.png
│ ├── status_awaiting.png
│ ├── status_inactive.png
│ ├── symbol-backup.png
│ ├── system-search.png
│ ├── view-refresh_16.png
│ ├── dialog-warning_16.png
│ ├── document-save_32.png
│ ├── edit-find-replace.png
│ ├── emblem-important.png
│ ├── emblem-redundant.png
│ ├── emblem-unreadable.png
│ ├── open-Folder-Icon.png
│ ├── system-installer.png
│ ├── x-office-calendar.png
│ ├── conflict-mixed-blue.png
│ ├── conflict-overwrite.png
│ ├── conflict-overwritten.png
│ ├── conflict-redundant.png
│ ├── dialog-information.png
│ ├── document-properties.png
│ ├── dynamic-blue-right.png
│ ├── emblem-favorite - 64.png
│ ├── internet-web-browser.png
│ ├── media-playback-start.png
│ ├── preferences-system.png
│ ├── switch-instance-icon.png
│ ├── archive-conflict-loser.png
│ ├── archive-conflict-mixed.png
│ ├── system-software-update.png
│ ├── accessories-text-editor.png
│ ├── application-x-executable.png
│ ├── applications-accessories.png
│ ├── archive-conflict-neutral.png
│ ├── archive-conflict-winner.png
│ ├── conflict-overwrite-blue.png
│ ├── conflict-overwritten-blue.png
│ ├── icons8-checked-checkbox.png
│ ├── icons8-unchecked-checkbox.png
│ ├── software-update-available.png
│ ├── red-archive-conflict-loser.png
│ ├── dialog-warning_16.png (warning_16)
│ ├── icons8-indeterminate-checkbox.png
│ ├── word-wrap.svg
│ └── save.svg
├── stylesheets
│ ├── skyrim
│ │ ├── radio.png
│ │ ├── arrow-up.png
│ │ ├── checkbox.png
│ │ ├── arrow-down.png
│ │ ├── arrow-left.png
│ │ ├── arrow-right.png
│ │ ├── radio-hover.png
│ │ ├── separator.png
│ │ ├── border-image.png
│ │ ├── border-image1.png
│ │ ├── border-image2.png
│ │ ├── branch-opened.png
│ │ ├── button-border.png
│ │ ├── radio-checked.png
│ │ ├── scrollbar-up.png
│ │ ├── slider-border.png
│ │ ├── slider-handle.png
│ │ ├── checkbox-checked.png
│ │ ├── checkbox-hover.png
│ │ ├── scrollbar-down.png
│ │ ├── scrollbar-left.png
│ │ ├── scrollbar-right.png
│ │ ├── button-big-border.png
│ │ ├── checkbox-disabled.png
│ │ ├── progress-bar-chunk.png
│ │ ├── scrollbar-vertical.png
│ │ ├── button-checked-border.png
│ │ ├── checkbox-alt-checked.png
│ │ ├── progress-bar-border.png
│ │ ├── scrollbar-horizontal.png
│ │ ├── checkbox-alt-unchecked.png
│ │ ├── checkbox-checked-hover.png
│ │ ├── context-menu-separator.png
│ │ ├── checkbox-checked-disabled.png
│ │ └── checkbox-alt-unchecked-hover.png
│ ├── vs15
│ │ ├── sort-asc.png
│ │ ├── sort-desc.png
│ │ ├── spinner-up.png
│ │ ├── branch-closed.png
│ │ ├── branch-open.png
│ │ ├── combobox-down.png
│ │ ├── scrollbar-up.png
│ │ ├── spinner-down.png
│ │ ├── checkbox-check.png
│ │ ├── scrollbar-down.png
│ │ ├── scrollbar-left.png
│ │ ├── scrollbar-right.png
│ │ ├── sub-menu-arrow.png
│ │ ├── scrollbar-up-hover.png
│ │ ├── scrollbar-down-hover.png
│ │ ├── scrollbar-left-hover.png
│ │ ├── sub-menu-arrow-hover.png
│ │ ├── checkbox-check-disabled.png
│ │ ├── scrollbar-down-disabled.png
│ │ ├── scrollbar-left-disabled.png
│ │ ├── scrollbar-right-hover.png
│ │ ├── scrollbar-up-disabled.png
│ │ └── scrollbar-right-disabled.png
│ └── Parchment
│ │ ├── checkbox.png
│ │ ├── checkbox-hover.png
│ │ ├── checkbox-checked.png
│ │ ├── checkbox-disabled.png
│ │ ├── checkbox-alt-checked.png
│ │ ├── checkbox-alt-unchecked.png
│ │ ├── checkbox-checked-hover.png
│ │ ├── checkbox-checked-disabled.png
│ │ └── checkbox-alt-unchecked-hover.png
├── stylesheet_resource.qrc
├── noeditdelegate.cpp
├── noeditdelegate.h
├── modidlineedit.h
├── modinfobackup.cpp
├── settingsdialogdiagnostics.h
├── settingsdialogtheme.h
├── persistentcookiejar.h
├── modlistversiondelegate.h
├── settingsdialoggeneral.h
├── sanitychecks.h
├── viewmarkingscrollbar.h
├── modidlineedit.cpp
├── savetextasdialog.h
├── settingsdialogmodlist.h
├── listdialog.h
├── envdump.h
├── updatedialog.h
├── modinfodialogcategories.h
├── modinfodialogesps.h
├── modinfoseparator.cpp
├── previewdialog.h
├── forcedloaddialog.h
├── genericicondelegate.cpp
├── colortable.h
├── modcontenticondelegate.h
├── problemsdialog.h
├── categoryimportdialog.h
├── downloadstab.h
├── iuserinterface.h
├── settingsdialogpaths.h
├── modelutils.h
├── lcdnumber.h
├── forcedloaddialogwidget.h
├── modflagicondelegate.h
├── lcdnumber.cpp
├── shared
│ ├── appconfig.h
│ ├── appconfig.cpp
│ ├── fileregister.h
│ ├── windows_error.h
│ ├── appconfig.inc
│ ├── windows_error.cpp
│ └── filesorigin.h
├── gamefeaturesproxy.h
├── categoriestable.h
├── copyeventfilter.h
├── credentialsdialog.h
├── bbcode.h
├── motddialog.h
├── credentialsdialog.cpp
├── profileinputdialog.h
├── loghighlighter.h
├── moshortcut.h
├── dlls.manifest.qt6
├── savetextasdialog.cpp
├── dlls.manifest.debug.qt6
├── disableproxyplugindialog.h
├── pluginlistcontextmenu.h
├── version.rc
├── motddialog.ui
├── proxyutils.h
├── profileinputdialog.cpp
├── envsecurity.h
├── modinfodialogfiletree.h
├── previewgenerator.h
├── disableproxyplugindialog.cpp
├── settingsdialogplugins.h
├── genericicondelegate.h
├── motddialog.cpp
├── serverinfo.h
├── envmetrics.h
├── statusbar.h
├── modinfodialogfwd.h
├── downloadmanagerproxy.h
├── savestab.h
├── loghighlighter.cpp
├── copyeventfilter.cpp
├── queryoverwritedialog.h
├── modconflicticondelegate.h
├── modinfodialogtextfiles.h
├── modinfodialognexus.h
├── iconfetcher.h
├── previewdialog.cpp
├── settingsdialogworkarounds.h
├── moshortcut.cpp
├── multiprocess.h
├── viewmarkingscrollbar.cpp
├── filterlist.h
├── gamefeaturesproxy.cpp
├── icondelegate.h
├── syncoverwritedialog.h
├── lootdialog.h
├── virtualfiletree.h
├── settingsdialognexus.h
├── queryoverwritedialog.cpp
├── savetextasdialog.ui
├── filedialogmemory.h
├── pluginlistsortproxy.h
└── modlistproxy.h
├── dump_running_process.bat
├── .git-blame-ignore-revs
├── .github
├── ISSUE_TEMPLATE
│ ├── dev-ticket.md
│ ├── feature_request.md
│ ├── issue-report.md
│ └── game-support-request.md
└── workflows
│ ├── linting.yml
│ └── build.yml
├── .gitignore
├── .gitattributes
├── .editorconfig
├── .pre-commit-config.yaml
├── CMakeLists.txt
├── vcpkg-configuration.json
├── vcpkg.json
├── .clang-format
└── CMakePresets.json
/src/pch.cpp:
--------------------------------------------------------------------------------
1 | #include "pch.h"
2 |
--------------------------------------------------------------------------------
/src/qt.conf:
--------------------------------------------------------------------------------
1 | [Paths]
2 | Prefix=.
3 | Plugins=dlls
4 |
--------------------------------------------------------------------------------
/src/tutorials/tutorial_basics.js:
--------------------------------------------------------------------------------
1 | function tutorial() {
2 | }
3 |
--------------------------------------------------------------------------------
/dump_running_process.bat:
--------------------------------------------------------------------------------
1 | pushd "%~dp0"
2 | start ModOrganizer.exe crashdump
3 |
--------------------------------------------------------------------------------
/src/app_icon.rc:
--------------------------------------------------------------------------------
1 | IDI_ICON1 ICON DISCARDABLE "mo_icon.ico"
2 |
--------------------------------------------------------------------------------
/src/mo_icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/mo_icon.ico
--------------------------------------------------------------------------------
/src/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/splash.png
--------------------------------------------------------------------------------
/src/resources/check.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/check.png
--------------------------------------------------------------------------------
/src/resources/error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/error.png
--------------------------------------------------------------------------------
/src/resources/go-up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/go-up.png
--------------------------------------------------------------------------------
/src/resources/show.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/show.png
--------------------------------------------------------------------------------
/.git-blame-ignore-revs:
--------------------------------------------------------------------------------
1 | d13f6bb870cdda71257f665367be8ef9fca86255
2 | 86bb01ba9eac879d3685c439ac9da0028bc4bc80
3 |
--------------------------------------------------------------------------------
/src/resources/badge_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/badge_1.png
--------------------------------------------------------------------------------
/src/resources/badge_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/badge_2.png
--------------------------------------------------------------------------------
/src/resources/badge_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/badge_3.png
--------------------------------------------------------------------------------
/src/resources/badge_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/badge_4.png
--------------------------------------------------------------------------------
/src/resources/badge_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/badge_5.png
--------------------------------------------------------------------------------
/src/resources/badge_6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/badge_6.png
--------------------------------------------------------------------------------
/src/resources/badge_7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/badge_7.png
--------------------------------------------------------------------------------
/src/resources/badge_8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/badge_8.png
--------------------------------------------------------------------------------
/src/resources/badge_9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/badge_9.png
--------------------------------------------------------------------------------
/src/resources/go-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/go-down.png
--------------------------------------------------------------------------------
/src/resources/go-jump.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/go-jump.png
--------------------------------------------------------------------------------
/src/resources/mo_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/mo_icon.png
--------------------------------------------------------------------------------
/src/resources/package.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/package.png
--------------------------------------------------------------------------------
/src/resources/plugins.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/plugins.png
--------------------------------------------------------------------------------
/src/resources/tracked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/tracked.png
--------------------------------------------------------------------------------
/src/resources/badge_more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/badge_more.png
--------------------------------------------------------------------------------
/src/resources/edit-clear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/edit-clear.png
--------------------------------------------------------------------------------
/src/resources/edit-undo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/edit-undo.png
--------------------------------------------------------------------------------
/src/resources/function.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/function.png
--------------------------------------------------------------------------------
/src/resources/go-next_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/go-next_16.png
--------------------------------------------------------------------------------
/src/resources/list-add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/list-add.png
--------------------------------------------------------------------------------
/src/resources/log-debug.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/log-debug.png
--------------------------------------------------------------------------------
/src/resources/start-here.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/start-here.png
--------------------------------------------------------------------------------
/src/resources/branch-open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/branch-open.png
--------------------------------------------------------------------------------
/src/resources/contact-new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/contact-new.png
--------------------------------------------------------------------------------
/src/resources/game-warning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/game-warning.png
--------------------------------------------------------------------------------
/src/resources/help-browser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/help-browser.png
--------------------------------------------------------------------------------
/src/resources/list-remove.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/list-remove.png
--------------------------------------------------------------------------------
/src/resources/multiply-red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/multiply-red.png
--------------------------------------------------------------------------------
/src/resources/process-stop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/process-stop.png
--------------------------------------------------------------------------------
/src/resources/view-refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/view-refresh.png
--------------------------------------------------------------------------------
/src/resources/arrange-boxes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/arrange-boxes.png
--------------------------------------------------------------------------------
/src/resources/branch-closed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/branch-closed.png
--------------------------------------------------------------------------------
/src/resources/combobox-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/combobox-down.png
--------------------------------------------------------------------------------
/src/resources/conflict-hidden.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/conflict-hidden.png
--------------------------------------------------------------------------------
/src/resources/conflict-mixed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/conflict-mixed.png
--------------------------------------------------------------------------------
/src/resources/contents/config.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/contents/config.png
--------------------------------------------------------------------------------
/src/resources/contents/lyre.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/contents/lyre.png
--------------------------------------------------------------------------------
/src/resources/contents/media.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/contents/media.png
--------------------------------------------------------------------------------
/src/resources/contents/tinker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/contents/tinker.png
--------------------------------------------------------------------------------
/src/resources/contents/usable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/contents/usable.png
--------------------------------------------------------------------------------
/src/resources/contents/xedit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/contents/xedit.png
--------------------------------------------------------------------------------
/src/resources/dialog-warning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/dialog-warning.png
--------------------------------------------------------------------------------
/src/resources/document-save.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/document-save.png
--------------------------------------------------------------------------------
/src/resources/emblem-favorite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/emblem-favorite.png
--------------------------------------------------------------------------------
/src/resources/emblem-readonly.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/emblem-readonly.png
--------------------------------------------------------------------------------
/src/resources/game-warning-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/game-warning-16.png
--------------------------------------------------------------------------------
/src/resources/go-previous_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/go-previous_16.png
--------------------------------------------------------------------------------
/src/resources/help-browser_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/help-browser_32.png
--------------------------------------------------------------------------------
/src/resources/icon-favorite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/icon-favorite.png
--------------------------------------------------------------------------------
/src/resources/mail-attachment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/mail-attachment.png
--------------------------------------------------------------------------------
/src/resources/status_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/status_active.png
--------------------------------------------------------------------------------
/src/resources/status_awaiting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/status_awaiting.png
--------------------------------------------------------------------------------
/src/resources/status_inactive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/status_inactive.png
--------------------------------------------------------------------------------
/src/resources/symbol-backup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/symbol-backup.png
--------------------------------------------------------------------------------
/src/resources/system-search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/system-search.png
--------------------------------------------------------------------------------
/src/resources/view-refresh_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/view-refresh_16.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/radio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/radio.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/sort-asc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/sort-asc.png
--------------------------------------------------------------------------------
/src/resources/contents/facegen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/contents/facegen.png
--------------------------------------------------------------------------------
/src/resources/contents/mesh-box.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/contents/mesh-box.png
--------------------------------------------------------------------------------
/src/resources/dialog-warning_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/dialog-warning_16.png
--------------------------------------------------------------------------------
/src/resources/document-save_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/document-save_32.png
--------------------------------------------------------------------------------
/src/resources/edit-find-replace.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/edit-find-replace.png
--------------------------------------------------------------------------------
/src/resources/emblem-important.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/emblem-important.png
--------------------------------------------------------------------------------
/src/resources/emblem-redundant.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/emblem-redundant.png
--------------------------------------------------------------------------------
/src/resources/emblem-unreadable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/emblem-unreadable.png
--------------------------------------------------------------------------------
/src/resources/open-Folder-Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/open-Folder-Icon.png
--------------------------------------------------------------------------------
/src/resources/system-installer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/system-installer.png
--------------------------------------------------------------------------------
/src/resources/x-office-calendar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/x-office-calendar.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/arrow-up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/arrow-up.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/checkbox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/checkbox.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/sort-desc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/sort-desc.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/spinner-up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/spinner-up.png
--------------------------------------------------------------------------------
/src/resources/conflict-mixed-blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/conflict-mixed-blue.png
--------------------------------------------------------------------------------
/src/resources/conflict-overwrite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/conflict-overwrite.png
--------------------------------------------------------------------------------
/src/resources/conflict-overwritten.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/conflict-overwritten.png
--------------------------------------------------------------------------------
/src/resources/conflict-redundant.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/conflict-redundant.png
--------------------------------------------------------------------------------
/src/resources/contents/breastplate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/contents/breastplate.png
--------------------------------------------------------------------------------
/src/resources/contents/f4-nuclear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/contents/f4-nuclear.png
--------------------------------------------------------------------------------
/src/resources/contents/hand-of-god.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/contents/hand-of-god.png
--------------------------------------------------------------------------------
/src/resources/dialog-information.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/dialog-information.png
--------------------------------------------------------------------------------
/src/resources/document-properties.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/document-properties.png
--------------------------------------------------------------------------------
/src/resources/dynamic-blue-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/dynamic-blue-right.png
--------------------------------------------------------------------------------
/src/resources/emblem-favorite - 64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/emblem-favorite - 64.png
--------------------------------------------------------------------------------
/src/resources/internet-web-browser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/internet-web-browser.png
--------------------------------------------------------------------------------
/src/resources/media-playback-start.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/media-playback-start.png
--------------------------------------------------------------------------------
/src/resources/preferences-system.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/preferences-system.png
--------------------------------------------------------------------------------
/src/resources/switch-instance-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/switch-instance-icon.png
--------------------------------------------------------------------------------
/src/stylesheets/Parchment/checkbox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/Parchment/checkbox.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/arrow-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/arrow-down.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/arrow-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/arrow-left.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/arrow-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/arrow-right.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/radio-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/radio-hover.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/separator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/separator.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/branch-closed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/branch-closed.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/branch-open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/branch-open.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/combobox-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/combobox-down.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/scrollbar-up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/scrollbar-up.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/spinner-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/spinner-down.png
--------------------------------------------------------------------------------
/src/resources/archive-conflict-loser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/archive-conflict-loser.png
--------------------------------------------------------------------------------
/src/resources/archive-conflict-mixed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/archive-conflict-mixed.png
--------------------------------------------------------------------------------
/src/resources/contents/checkbox-tree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/contents/checkbox-tree.png
--------------------------------------------------------------------------------
/src/resources/contents/conversation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/contents/conversation.png
--------------------------------------------------------------------------------
/src/resources/contents/double-quaver.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/contents/double-quaver.png
--------------------------------------------------------------------------------
/src/resources/contents/jigsaw-piece.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/contents/jigsaw-piece.png
--------------------------------------------------------------------------------
/src/resources/contents/locked-chest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/contents/locked-chest.png
--------------------------------------------------------------------------------
/src/resources/system-software-update.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/system-software-update.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/border-image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/border-image.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/border-image1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/border-image1.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/border-image2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/border-image2.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/branch-opened.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/branch-opened.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/button-border.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/button-border.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/radio-checked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/radio-checked.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/scrollbar-up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/scrollbar-up.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/slider-border.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/slider-border.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/slider-handle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/slider-handle.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/checkbox-check.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/checkbox-check.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/scrollbar-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/scrollbar-down.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/scrollbar-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/scrollbar-left.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/scrollbar-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/scrollbar-right.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/sub-menu-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/sub-menu-arrow.png
--------------------------------------------------------------------------------
/src/resources/accessories-text-editor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/accessories-text-editor.png
--------------------------------------------------------------------------------
/src/resources/application-x-executable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/application-x-executable.png
--------------------------------------------------------------------------------
/src/resources/applications-accessories.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/applications-accessories.png
--------------------------------------------------------------------------------
/src/resources/archive-conflict-neutral.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/archive-conflict-neutral.png
--------------------------------------------------------------------------------
/src/resources/archive-conflict-winner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/archive-conflict-winner.png
--------------------------------------------------------------------------------
/src/resources/conflict-overwrite-blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/conflict-overwrite-blue.png
--------------------------------------------------------------------------------
/src/resources/conflict-overwritten-blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/conflict-overwritten-blue.png
--------------------------------------------------------------------------------
/src/resources/contents/empty-chessboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/contents/empty-chessboard.png
--------------------------------------------------------------------------------
/src/resources/icons8-checked-checkbox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/icons8-checked-checkbox.png
--------------------------------------------------------------------------------
/src/resources/icons8-unchecked-checkbox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/icons8-unchecked-checkbox.png
--------------------------------------------------------------------------------
/src/resources/software-update-available.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/software-update-available.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/checkbox-checked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/checkbox-checked.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/checkbox-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/checkbox-hover.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/scrollbar-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/scrollbar-down.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/scrollbar-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/scrollbar-left.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/scrollbar-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/scrollbar-right.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/scrollbar-up-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/scrollbar-up-hover.png
--------------------------------------------------------------------------------
/src/resources/contents/feather-and-scroll.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/contents/feather-and-scroll.png
--------------------------------------------------------------------------------
/src/resources/red-archive-conflict-loser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/red-archive-conflict-loser.png
--------------------------------------------------------------------------------
/src/stylesheets/Parchment/checkbox-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/Parchment/checkbox-hover.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/button-big-border.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/button-big-border.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/checkbox-disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/checkbox-disabled.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/progress-bar-chunk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/progress-bar-chunk.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/scrollbar-vertical.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/scrollbar-vertical.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/scrollbar-down-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/scrollbar-down-hover.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/scrollbar-left-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/scrollbar-left-hover.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/sub-menu-arrow-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/sub-menu-arrow-hover.png
--------------------------------------------------------------------------------
/src/resources/dialog-warning_16.png (warning_16):
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/dialog-warning_16.png (warning_16)
--------------------------------------------------------------------------------
/src/resources/icons8-indeterminate-checkbox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/resources/icons8-indeterminate-checkbox.png
--------------------------------------------------------------------------------
/src/stylesheets/Parchment/checkbox-checked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/Parchment/checkbox-checked.png
--------------------------------------------------------------------------------
/src/stylesheets/Parchment/checkbox-disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/Parchment/checkbox-disabled.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/button-checked-border.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/button-checked-border.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/checkbox-alt-checked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/checkbox-alt-checked.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/progress-bar-border.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/progress-bar-border.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/scrollbar-horizontal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/scrollbar-horizontal.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/checkbox-check-disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/checkbox-check-disabled.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/scrollbar-down-disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/scrollbar-down-disabled.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/scrollbar-left-disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/scrollbar-left-disabled.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/scrollbar-right-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/scrollbar-right-hover.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/scrollbar-up-disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/scrollbar-up-disabled.png
--------------------------------------------------------------------------------
/src/stylesheets/Parchment/checkbox-alt-checked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/Parchment/checkbox-alt-checked.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/checkbox-alt-unchecked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/checkbox-alt-unchecked.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/checkbox-checked-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/checkbox-checked-hover.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/context-menu-separator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/context-menu-separator.png
--------------------------------------------------------------------------------
/src/stylesheets/vs15/scrollbar-right-disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/vs15/scrollbar-right-disabled.png
--------------------------------------------------------------------------------
/src/stylesheets/Parchment/checkbox-alt-unchecked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/Parchment/checkbox-alt-unchecked.png
--------------------------------------------------------------------------------
/src/stylesheets/Parchment/checkbox-checked-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/Parchment/checkbox-checked-hover.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/checkbox-checked-disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/checkbox-checked-disabled.png
--------------------------------------------------------------------------------
/src/stylesheets/Parchment/checkbox-checked-disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/Parchment/checkbox-checked-disabled.png
--------------------------------------------------------------------------------
/src/stylesheets/skyrim/checkbox-alt-unchecked-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/skyrim/checkbox-alt-unchecked-hover.png
--------------------------------------------------------------------------------
/src/tutorials/tutorials_installdialog.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.7
2 |
3 | TutorialOverlay {
4 | id: tutorial
5 | offsetBottom: 65
6 | maxWidth: 420
7 | }
8 |
--------------------------------------------------------------------------------
/src/tutorials/tutorials_mainwindow.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.7
2 |
3 | TutorialOverlay {
4 | id: tutorial
5 | offsetBottom: 50
6 | maxWidth: 400
7 | }
8 |
--------------------------------------------------------------------------------
/src/tutorials/tutorials_modinfodialog.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.7
2 |
3 | TutorialOverlay {
4 | id: tutorial
5 | offsetBottom: 60
6 | maxWidth: 420
7 | }
8 |
--------------------------------------------------------------------------------
/src/tutorials/tutorials_settingsdialog.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.7
2 |
3 | TutorialOverlay {
4 | id: tutorial
5 | offsetBottom: 60
6 | maxWidth: 420
7 | }
8 |
--------------------------------------------------------------------------------
/src/stylesheets/Parchment/checkbox-alt-unchecked-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ModOrganizer2/modorganizer/HEAD/src/stylesheets/Parchment/checkbox-alt-unchecked-hover.png
--------------------------------------------------------------------------------
/src/tutorials/tutorials_nexusdialog.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.7
2 |
3 | TutorialOverlay {
4 | id: tutorial
5 | offsetBottom: 40
6 | maxWidth: 600
7 | boxOpacity: 0.95
8 | }
9 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/dev-ticket.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Dev Ticket
3 | about: Reserved for development tasks and management.
4 | title: ''
5 | labels: Dev Ticket
6 | assignees: ''
7 |
8 | ---
9 |
10 | Task:
11 |
--------------------------------------------------------------------------------
/src/tutorials/tutorial_firststeps.js:
--------------------------------------------------------------------------------
1 | // First Steps
2 | subTutorials = [
3 | ["MainWindow", "tutorial_firststeps_main.js"],
4 | ["SettingsDialog", "tutorial_firststeps_settings.js"]
5 | ];
6 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.user
2 | Thumbs.db
3 | src/moc_*.cpp
4 | src/ui_*.h
5 | src/*.qrc.depends
6 | src/Modorganizer.*
7 | src/*.bak
8 | CMakeLists.txt.user
9 | edit
10 | /CMakeFiles
11 | .idea
12 | /msbuild.log
13 | /*std*.log
14 | /*build
15 |
16 | /src/version.aps
17 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Set the default behavior, in case people don't have core.autocrlf set.
2 | * text=auto
3 |
4 | # Explicitly declare text files you want to always be normalized and converted
5 | # to native line endings on checkout.
6 | *.cpp text eol=crlf
7 | *.h text eol=crlf
8 |
--------------------------------------------------------------------------------
/src/resources/word-wrap.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/resources/save.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*.cpp]
4 | indent_style = space
5 | indent_size = 2
6 | insert_final_newline = true
7 |
8 | [*.h]
9 | indent_style = space
10 | indent_size = 2
11 | insert_final_newline = true
12 |
13 | [*.ui]
14 | indent_style = space
15 | indent_size = 2
16 | insert_final_newline = true
17 |
--------------------------------------------------------------------------------
/src/stylesheet_resource.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | resources/combobox-down.png
4 | resources/branch-closed.png
5 | resources/branch-open.png
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/noeditdelegate.cpp:
--------------------------------------------------------------------------------
1 | #include "noeditdelegate.h"
2 |
3 | NoEditDelegate::NoEditDelegate(QObject* parent) : QStyledItemDelegate(parent) {}
4 |
5 | QWidget* NoEditDelegate::createEditor(QWidget*, const QStyleOptionViewItem&,
6 | const QModelIndex&) const
7 | {
8 | return nullptr;
9 | }
10 |
--------------------------------------------------------------------------------
/.github/workflows/linting.yml:
--------------------------------------------------------------------------------
1 | name: Lint ModOrganizer 2
2 |
3 | on:
4 | push:
5 | pull_request:
6 | types: [opened, synchronize, reopened]
7 |
8 | jobs:
9 | lint:
10 | runs-on: ubuntu-latest
11 | steps:
12 | - uses: actions/checkout@v3
13 | - name: Check format
14 | uses: ModOrganizer2/check-formatting-action@master
15 | with:
16 | check-path: "."
17 | exclude-regex: "third-party"
18 |
--------------------------------------------------------------------------------
/src/noeditdelegate.h:
--------------------------------------------------------------------------------
1 | #ifndef NOEDITDELEGATE_H
2 | #define NOEDITDELEGATE_H
3 |
4 | #include
5 |
6 | class NoEditDelegate : public QStyledItemDelegate
7 | {
8 | public:
9 | NoEditDelegate(QObject* parent = nullptr);
10 | virtual QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option,
11 | const QModelIndex& index) const;
12 | };
13 |
14 | #endif // NOEDITDELEGATE_H
15 |
--------------------------------------------------------------------------------
/src/modidlineedit.h:
--------------------------------------------------------------------------------
1 | #ifndef MODIDLINEEDIT_H
2 | #define MODIDLINEEDIT_H
3 |
4 | #include
5 |
6 | class ModIDLineEdit : public QLineEdit
7 | {
8 | Q_OBJECT
9 |
10 | public:
11 | explicit ModIDLineEdit(QWidget* parent = 0);
12 | explicit ModIDLineEdit(const QString& text, QWidget* parent = 0);
13 |
14 | public:
15 | virtual bool event(QEvent* event) override;
16 |
17 | signals:
18 | void linkClicked(QString);
19 | };
20 |
21 | #endif // MODIDLINEEDIT_H
22 |
--------------------------------------------------------------------------------
/src/tutorials/Highlight.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.7
2 |
3 | Rectangle {
4 | radius: 10
5 | color: "transparent"
6 | height: 100
7 | border.color: "black"
8 | border.width: 3
9 | opacity: 0.9
10 | smooth: true
11 |
12 | SequentialAnimation on opacity {
13 | loops: Animation.Infinite
14 |
15 | PropertyAnimation { easing.type: Easing.InOutSine; duration: 300; to: 0.1 }
16 | PropertyAnimation { easing.type: Easing.OutInSine; duration: 300; to: 0.7 }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/modinfobackup.cpp:
--------------------------------------------------------------------------------
1 | #include "modinfobackup.h"
2 |
3 | std::vector ModInfoBackup::getFlags() const
4 | {
5 | std::vector result = ModInfoRegular::getFlags();
6 | result.insert(result.begin(), ModInfo::FLAG_BACKUP);
7 | return result;
8 | }
9 |
10 | QString ModInfoBackup::getDescription() const
11 | {
12 | return tr("This is the backup of a mod");
13 | }
14 |
15 | ModInfoBackup::ModInfoBackup(const QDir& path, OrganizerCore& core)
16 | : ModInfoRegular(path, core)
17 | {}
18 |
--------------------------------------------------------------------------------
/src/settingsdialogdiagnostics.h:
--------------------------------------------------------------------------------
1 | #ifndef SETTINGSDIALOGDIAGNOSTICS_H
2 | #define SETTINGSDIALOGDIAGNOSTICS_H
3 |
4 | #include "settings.h"
5 | #include "settingsdialog.h"
6 |
7 | class DiagnosticsSettingsTab : public SettingsTab
8 | {
9 | public:
10 | DiagnosticsSettingsTab(Settings& settings, SettingsDialog& dialog);
11 |
12 | void update();
13 |
14 | private:
15 | void setLogLevel();
16 | void setLootLogLevel();
17 | void setCrashDumpTypesBox();
18 | };
19 |
20 | #endif // SETTINGSDIALOGDIAGNOSTICS_H
21 |
--------------------------------------------------------------------------------
/src/settingsdialogtheme.h:
--------------------------------------------------------------------------------
1 | #ifndef SETTINGSDIALOGTHEME_H
2 | #define SETTINGSDIALOGTHEME_H
3 |
4 | #include
5 |
6 | #include "settings.h"
7 | #include "settingsdialog.h"
8 |
9 | class ThemeSettingsTab : public SettingsTab
10 | {
11 | public:
12 | ThemeSettingsTab(Settings& settings, SettingsDialog& dialog);
13 |
14 | void update() override;
15 |
16 | private:
17 | void addStyles();
18 | void selectStyle();
19 | void onExploreStyles();
20 | };
21 |
22 | #endif // SETTINGSDIALOGGENERAL_H
23 |
--------------------------------------------------------------------------------
/src/persistentcookiejar.h:
--------------------------------------------------------------------------------
1 | #ifndef PERSISTENTCOOKIEJAR_H
2 | #define PERSISTENTCOOKIEJAR_H
3 |
4 | #include
5 |
6 | class PersistentCookieJar : public QNetworkCookieJar
7 | {
8 |
9 | Q_OBJECT
10 |
11 | public:
12 | PersistentCookieJar(const QString& fileName, QObject* parent = 0);
13 | virtual ~PersistentCookieJar();
14 |
15 | void clear();
16 |
17 | private:
18 | void save();
19 |
20 | void restore();
21 |
22 | private:
23 | QString m_FileName;
24 | };
25 |
26 | #endif // PERSISTENTCOOKIEJAR_H
27 |
--------------------------------------------------------------------------------
/src/tutorials/tutorial_firststeps_browser.js:
--------------------------------------------------------------------------------
1 | function getTutorialSteps()
2 | {
3 | return [
4 | function() {
5 | tutorial.text = qsTr("This is a fully featured browser that is set up to "
6 | +"open the correct nexus page for your game. You can "
7 | +"download any mod using the \"DOWNLOAD WITH MANAGER\"-button "
8 | +"or the \"manual\"-link and it will be downloaded by MO.")
9 | waitForClick()
10 | }
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/src/modlistversiondelegate.h:
--------------------------------------------------------------------------------
1 | #ifndef MODLISTVERSIONDELEGATE_H
2 | #define MODLISTVERSIONDELEGATE_H
3 |
4 | #include
5 |
6 | class ModListView;
7 | class Settings;
8 |
9 | class ModListVersionDelegate : public QItemDelegate
10 | {
11 | public:
12 | ModListVersionDelegate(ModListView* view, Settings& settings);
13 |
14 | void paint(QPainter* painter, const QStyleOptionViewItem& option,
15 | const QModelIndex& index) const override;
16 |
17 | private:
18 | ModListView* m_view;
19 | Settings& m_settings;
20 | };
21 |
22 | #endif
23 |
--------------------------------------------------------------------------------
/src/settingsdialoggeneral.h:
--------------------------------------------------------------------------------
1 | #ifndef SETTINGSDIALOGGENERAL_H
2 | #define SETTINGSDIALOGGENERAL_H
3 |
4 | #include "plugincontainer.h"
5 | #include "settings.h"
6 | #include "settingsdialog.h"
7 |
8 | class GeneralSettingsTab : public SettingsTab
9 | {
10 | public:
11 | GeneralSettingsTab(Settings& settings, SettingsDialog& dialog);
12 |
13 | void update();
14 |
15 | private:
16 | void addLanguages();
17 | void selectLanguage();
18 |
19 | void resetDialogs();
20 |
21 | void onEditCategories();
22 | void onResetDialogs();
23 | };
24 |
25 | #endif // SETTINGSDIALOGGENERAL_H
26 |
--------------------------------------------------------------------------------
/src/sanitychecks.h:
--------------------------------------------------------------------------------
1 | #ifndef MODORGANIZER_SANITYCHECKS_INCLUDED
2 | #define MODORGANIZER_SANITYCHECKS_INCLUDED
3 |
4 | namespace env
5 | {
6 | class Environment;
7 | class Module;
8 | } // namespace env
9 |
10 | namespace MOBase
11 | {
12 | class IPluginGame;
13 | }
14 |
15 | class Settings;
16 |
17 | namespace sanity
18 | {
19 |
20 | void checkEnvironment(const env::Environment& env);
21 | int checkIncompatibleModule(const env::Module& m);
22 | int checkPaths(MOBase::IPluginGame& game, const Settings& s);
23 |
24 | } // namespace sanity
25 |
26 | #endif // MODORGANIZER_SANITYCHECKS_INCLUDED
27 |
--------------------------------------------------------------------------------
/src/viewmarkingscrollbar.h:
--------------------------------------------------------------------------------
1 | #ifndef VIEWMARKINGSCROLLBAR_H
2 | #define VIEWMARKINGSCROLLBAR_H
3 |
4 | #include
5 | #include
6 |
7 | class ViewMarkingScrollBar : public QScrollBar
8 | {
9 | public:
10 | ViewMarkingScrollBar(QTreeView* view, int role);
11 |
12 | protected:
13 | void paintEvent(QPaintEvent* event) override;
14 |
15 | // retrieve the color of the marker for the given index
16 | //
17 | virtual QColor color(const QModelIndex& index) const;
18 |
19 | private:
20 | QTreeView* m_view;
21 | int m_role;
22 | };
23 |
24 | #endif // VIEWMARKINGSCROLLBAR_H
25 |
--------------------------------------------------------------------------------
/src/modidlineedit.cpp:
--------------------------------------------------------------------------------
1 | #include "modidlineedit.h"
2 | #include
3 |
4 | #include
5 | #include
6 |
7 | ModIDLineEdit::ModIDLineEdit(QWidget* parent) : QLineEdit(parent) {}
8 | ModIDLineEdit::ModIDLineEdit(const QString& text, QWidget* parent)
9 | : QLineEdit(text, parent)
10 | {}
11 |
12 | bool ModIDLineEdit::event(QEvent* event)
13 | {
14 | if (event->type() == QEvent::WhatsThisClicked) {
15 | QWhatsThisClickedEvent* wtcEvent = static_cast(event);
16 | emit linkClicked(wtcEvent->href().trimmed());
17 | }
18 |
19 | return QLineEdit::event(event);
20 | }
21 |
--------------------------------------------------------------------------------
/src/savetextasdialog.h:
--------------------------------------------------------------------------------
1 | #ifndef SAVETEXTASDIALOG_H
2 | #define SAVETEXTASDIALOG_H
3 |
4 | #include
5 |
6 | namespace Ui
7 | {
8 | class SaveTextAsDialog;
9 | }
10 |
11 | class SaveTextAsDialog : public QDialog
12 | {
13 | Q_OBJECT
14 |
15 | public:
16 | explicit SaveTextAsDialog(QWidget* parent = 0);
17 | ~SaveTextAsDialog();
18 |
19 | void setText(const QString& text);
20 |
21 | private slots:
22 | void on_closeBtn_clicked();
23 |
24 | void on_clipboardBtn_clicked();
25 |
26 | void on_saveAsBtn_clicked();
27 |
28 | private:
29 | Ui::SaveTextAsDialog* ui;
30 | };
31 |
32 | #endif // SAVETEXTASDIALOG_H
33 |
--------------------------------------------------------------------------------
/.pre-commit-config.yaml:
--------------------------------------------------------------------------------
1 | repos:
2 | - repo: https://github.com/pre-commit/pre-commit-hooks
3 | rev: v6.0.0
4 | hooks:
5 | - id: trailing-whitespace
6 | - id: end-of-file-fixer
7 | - id: check-merge-conflict
8 | - id: check-case-conflict
9 | - repo: https://github.com/pre-commit/mirrors-clang-format
10 | rev: v21.1.2
11 | hooks:
12 | - id: clang-format
13 | 'types_or': [c++, c]
14 |
15 | ci:
16 | autofix_commit_msg: "[pre-commit.ci] Auto fixes from pre-commit.com hooks."
17 | autofix_prs: true
18 | autoupdate_commit_msg: "[pre-commit.ci] Pre-commit autoupdate."
19 | autoupdate_schedule: quarterly
20 | submodules: false
21 |
--------------------------------------------------------------------------------
/src/settingsdialogmodlist.h:
--------------------------------------------------------------------------------
1 | #ifndef SETTINGSDIALOGMODLIST_H
2 | #define SETTINGSDIALOGMODLIST_H
3 |
4 | #include
5 |
6 | #include "settings.h"
7 | #include "settingsdialog.h"
8 |
9 | class ModListSettingsTab : public SettingsTab
10 | {
11 | public:
12 | ModListSettingsTab(Settings& settings, SettingsDialog& dialog);
13 |
14 | void update() override;
15 |
16 | protected slots:
17 |
18 | // enable/disable the collapsible separators group depending on
19 | // the checkbox states
20 | void updateCollapsibleSeparatorsGroup();
21 |
22 | private:
23 | const std::map m_columnToBox;
24 | };
25 |
26 | #endif // SETTINGSDIALOGGENERAL_H
27 |
--------------------------------------------------------------------------------
/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.16)
2 |
3 | # TODO: clean include directives
4 | set(MO2_CMAKE_DEPRECATED_UIBASE_INCLUDE ON)
5 |
6 | project(organizer)
7 |
8 | # if MO2_INSTALL_IS_BIN is set, this means that we should install directly into the
9 | # installation prefix, without the bin/ subfolder, typically for a standalone build
10 | # to update an existing install
11 | if (MO2_INSTALL_IS_BIN)
12 | set(_bin ".")
13 | else()
14 | set(_bin bin)
15 | endif()
16 |
17 | add_subdirectory(src)
18 |
19 | set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT organizer)
20 |
21 | install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/dump_running_process.bat DESTINATION ${_bin})
22 |
--------------------------------------------------------------------------------
/vcpkg-configuration.json:
--------------------------------------------------------------------------------
1 | {
2 | "default-registry": {
3 | "kind": "git",
4 | "repository": "https://github.com/Microsoft/vcpkg",
5 | "baseline": "294f76666c3000630d828703e675814c05a4fd43"
6 | },
7 | "registries": [
8 | {
9 | "kind": "git",
10 | "repository": "https://github.com/Microsoft/vcpkg",
11 | "baseline": "294f76666c3000630d828703e675814c05a4fd43",
12 | "packages": ["boost*", "boost-*"]
13 | },
14 | {
15 | "kind": "git",
16 | "repository": "https://github.com/ModOrganizer2/vcpkg-registry",
17 | "baseline": "0d5db1c58672510583ae2a26813c5c62b5d24816",
18 | "packages": ["mo2-*", "7zip", "usvfs"]
19 | }
20 | ]
21 | }
22 |
--------------------------------------------------------------------------------
/src/listdialog.h:
--------------------------------------------------------------------------------
1 | #ifndef LISTDIALOG_H
2 | #define LISTDIALOG_H
3 |
4 | #include
5 |
6 | namespace Ui
7 | {
8 | class ListDialog;
9 | }
10 |
11 | class ListDialog : public QDialog
12 | {
13 | Q_OBJECT
14 |
15 | public:
16 | explicit ListDialog(QWidget* parent = nullptr);
17 | ~ListDialog();
18 |
19 | // also saves and restores geometry
20 | //
21 | int exec() override;
22 |
23 | void setChoices(QStringList choices);
24 | QString getChoice() const;
25 |
26 | public slots:
27 | void on_filterEdit_textChanged(QString filter);
28 |
29 | private:
30 | Ui::ListDialog* ui;
31 | QStringList m_Choices;
32 | };
33 |
34 | #endif // LISTDIALOG_H
35 |
--------------------------------------------------------------------------------
/src/tutorials/Tooltip.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.7
2 |
3 |
4 | Rectangle {
5 | color: "#EE888888"
6 | width: childrenRect.width + 15
7 | height: childrenRect.height + 15
8 | z: 20000
9 | clip: false
10 | border.color: "black"
11 | border.width: 1
12 | property alias text: tooltipText.text
13 | Text {
14 | id: tooltipText
15 | font.pointSize: 11
16 | wrapMode: Text.WordWrap
17 | anchors.left: parent.left
18 | anchors.top: parent.top
19 | anchors.leftMargin: 7
20 | anchors.rightMargin: 7
21 | z: parent.z
22 | color: "black"
23 | onTextChanged: {
24 | if (width > 200)
25 | width = 200
26 | }
27 | }
28 | visible: false
29 | }
30 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: Feature Request
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/src/envdump.h:
--------------------------------------------------------------------------------
1 | #ifndef MODORGANIZER_ENVDUMP_INCLUDED
2 | #define MODORGANIZER_ENVDUMP_INCLUDED
3 |
4 | namespace env
5 | {
6 |
7 | enum class CoreDumpTypes
8 | {
9 | None,
10 | Mini,
11 | Data,
12 | Full
13 | };
14 |
15 | CoreDumpTypes coreDumpTypeFromString(const std::string& s);
16 | std::string toString(CoreDumpTypes type);
17 |
18 | // creates a minidump file for this process
19 | //
20 | bool coredump(const wchar_t* dir, CoreDumpTypes type);
21 |
22 | // finds another process with the same name as this one and creates a minidump
23 | // file for it
24 | //
25 | bool coredumpOther(CoreDumpTypes type);
26 |
27 | } // namespace env
28 |
29 | #endif // MODORGANIZER_ENVDUMP_INCLUDED
30 |
--------------------------------------------------------------------------------
/vcpkg.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": [
3 | "7zip",
4 | "boost-accumulators",
5 | "boost-assign",
6 | "boost-date-time",
7 | "boost-graph",
8 | "boost-headers",
9 | "boost-interprocess",
10 | "boost-program-options",
11 | "boost-signals2",
12 | "boost-thread",
13 | "boost-uuid",
14 | "lz4",
15 | "mo2-libbsarch",
16 | "zlib"
17 | ],
18 | "features": {
19 | "standalone": {
20 | "description": "Build Standalone.",
21 | "dependencies": [
22 | "mo2-cmake",
23 | "mo2-archive",
24 | "mo2-bsatk",
25 | "mo2-esptk",
26 | "mo2-lootcli-header",
27 | "mo2-uibase",
28 | "usvfs"
29 | ]
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/updatedialog.h:
--------------------------------------------------------------------------------
1 | #ifndef MODORGANIZER_UPDATEDIALOG_H
2 | #define MODORGANIZER_UPDATEDIALOG_H
3 |
4 | #include
5 |
6 | #include "lootdialog.h" // for MarkdownDocument
7 | #include
8 |
9 | namespace Ui
10 | {
11 | class UpdateDialog;
12 | }
13 |
14 | class UpdateDialog : public QDialog
15 | {
16 | Q_OBJECT;
17 |
18 | public:
19 | UpdateDialog(QWidget* parent);
20 | ~UpdateDialog();
21 |
22 | void setChangeLogs(const QString& text);
23 | void setVersions(const QString& oldVersion, const QString& newVersion);
24 |
25 | private:
26 | std::unique_ptr ui;
27 | MOBase::ExpanderWidget m_expander;
28 | MarkdownDocument m_changeLogs;
29 | };
30 |
31 | #endif // MODORGANIZER_UPDATEDIALOG_H
32 |
--------------------------------------------------------------------------------
/src/modinfodialogcategories.h:
--------------------------------------------------------------------------------
1 | #include "modinfodialogtab.h"
2 |
3 | class CategoryFactory;
4 |
5 | class CategoriesTab : public ModInfoDialogTab
6 | {
7 | public:
8 | CategoriesTab(ModInfoDialogTabContext cx);
9 |
10 | void clear() override;
11 | void update() override;
12 | bool canHandleSeparators() const override;
13 | bool usesOriginFiles() const override;
14 |
15 | private:
16 | void add(const CategoryFactory& factory, const std::set& enabledCategories,
17 | QTreeWidgetItem* root, int rootLevel);
18 |
19 | void updatePrimary();
20 | void addChecked(QTreeWidgetItem* tree);
21 |
22 | void save(QTreeWidgetItem* currentNode);
23 |
24 | void onCategoryChanged(QTreeWidgetItem* item, int col);
25 | void onPrimaryChanged(int index);
26 | };
27 |
--------------------------------------------------------------------------------
/src/modinfodialogesps.h:
--------------------------------------------------------------------------------
1 | #ifndef MODINFODIALOGESPS_H
2 | #define MODINFODIALOGESPS_H
3 |
4 | #include "modinfodialogtab.h"
5 |
6 | class ESPItem;
7 | class ESPListModel;
8 |
9 | class ESPsTab : public ModInfoDialogTab
10 | {
11 | Q_OBJECT;
12 |
13 | public:
14 | ESPsTab(ModInfoDialogTabContext cx);
15 |
16 | void clear() override;
17 | bool feedFile(const QString& rootPath, const QString& fullPath) override;
18 | void update();
19 | void saveState(Settings& s) override;
20 | void restoreState(const Settings& s) override;
21 |
22 | private:
23 | ESPListModel* m_inactiveModel;
24 | ESPListModel* m_activeModel;
25 |
26 | void onActivate();
27 | void onDeactivate();
28 | void selectRow(QListView* list, int row);
29 | };
30 |
31 | #endif // MODINFODIALOGESPS_H
32 |
--------------------------------------------------------------------------------
/src/modinfoseparator.cpp:
--------------------------------------------------------------------------------
1 | #include "modinfoseparator.h"
2 |
3 | bool ModInfoSeparator::setName(const QString& name)
4 | {
5 | return ModInfoRegular::setName(name);
6 | }
7 |
8 | std::vector ModInfoSeparator::getFlags() const
9 | {
10 | {
11 | auto result = ModInfoRegular::getFlags();
12 | result.push_back(FLAG_SEPARATOR);
13 | return result;
14 | }
15 | }
16 |
17 | int ModInfoSeparator::getHighlight() const
18 | {
19 | return HIGHLIGHT_CENTER;
20 | }
21 |
22 | QString ModInfoSeparator::getDescription() const
23 | {
24 | return tr("This is a Separator");
25 | }
26 |
27 | QString ModInfoSeparator::name() const
28 | {
29 | return ModInfoRegular::name();
30 | }
31 |
32 | ModInfoSeparator::ModInfoSeparator(const QDir& path, OrganizerCore& core)
33 | : ModInfoRegular(path, core)
34 | {}
35 |
--------------------------------------------------------------------------------
/src/previewdialog.h:
--------------------------------------------------------------------------------
1 | #ifndef PREVIEWDIALOG_H
2 | #define PREVIEWDIALOG_H
3 |
4 | #include
5 |
6 | namespace Ui
7 | {
8 | class PreviewDialog;
9 | }
10 |
11 | class PreviewDialog : public QDialog
12 | {
13 | Q_OBJECT
14 |
15 | public:
16 | explicit PreviewDialog(const QString& fileName, QWidget* parent = 0);
17 | ~PreviewDialog();
18 |
19 | // also saves and restores geometry
20 | //
21 | int exec() override;
22 |
23 | void addVariant(const QString& modName, QWidget* widget);
24 | int numVariants() const;
25 |
26 | private slots:
27 |
28 | void on_variantsStack_currentChanged(int arg1);
29 |
30 | void on_closeButton_clicked();
31 |
32 | void on_previousButton_clicked();
33 |
34 | void on_nextButton_clicked();
35 |
36 | private:
37 | Ui::PreviewDialog* ui;
38 | };
39 |
40 | #endif // PREVIEWDIALOG_H
41 |
--------------------------------------------------------------------------------
/src/forcedloaddialog.h:
--------------------------------------------------------------------------------
1 | #ifndef FORCEDLOADDIALOG_H
2 | #define FORCEDLOADDIALOG_H
3 |
4 | #include
5 | #include
6 |
7 | #include "executableinfo.h"
8 | #include "iplugingame.h"
9 |
10 | namespace Ui
11 | {
12 | class ForcedLoadDialog;
13 | }
14 |
15 | class ForcedLoadDialog : public QDialog
16 | {
17 | Q_OBJECT
18 |
19 | public:
20 | explicit ForcedLoadDialog(const MOBase::IPluginGame* game, QWidget* parent = nullptr);
21 | ~ForcedLoadDialog();
22 |
23 | void setValues(QList& values);
24 | QList values();
25 |
26 | private slots:
27 | void on_addRowButton_clicked();
28 | void on_deleteRowButton_clicked();
29 |
30 | private:
31 | Ui::ForcedLoadDialog* ui;
32 | const MOBase::IPluginGame* m_GamePlugin;
33 | };
34 |
35 | #endif // FORCEDLOADDIALOG_H
36 |
--------------------------------------------------------------------------------
/src/genericicondelegate.cpp:
--------------------------------------------------------------------------------
1 | #include "genericicondelegate.h"
2 | #include "pluginlist.h"
3 | #include
4 | #include
5 |
6 | GenericIconDelegate::GenericIconDelegate(QTreeView* parent, int role, int logicalIndex,
7 | int compactSize)
8 | : IconDelegate(parent, logicalIndex, compactSize), m_Role(role)
9 | {}
10 |
11 | QList GenericIconDelegate::getIcons(const QModelIndex& index) const
12 | {
13 | QList result;
14 | if (index.isValid()) {
15 | for (const QVariant& var : index.data(m_Role).toList()) {
16 | if (!compact() || !var.toString().isEmpty()) {
17 | result.append(var.toString());
18 | }
19 | }
20 | }
21 | return result;
22 | }
23 |
24 | size_t GenericIconDelegate::getNumIcons(const QModelIndex& index) const
25 | {
26 | return index.data(m_Role).toList().count();
27 | }
28 |
--------------------------------------------------------------------------------
/src/colortable.h:
--------------------------------------------------------------------------------
1 | #ifndef COLORTABLE_H
2 | #define COLORTABLE_H
3 |
4 | #include
5 |
6 | class Settings;
7 |
8 | // a QTableWidget to view and modify color settings
9 | //
10 | class ColorTable : public QTableWidget
11 | {
12 | public:
13 | ColorTable(QWidget* parent = nullptr);
14 |
15 | // adds colors to the table from the settings
16 | //
17 | void load(Settings& s);
18 |
19 | // resets the colors to their default values; commitColors() must be called
20 | // to save them
21 | //
22 | void resetColors();
23 |
24 | // commits any changes
25 | //
26 | void commitColors();
27 |
28 | private:
29 | Settings* m_settings;
30 |
31 | void addColor(const QString& text, const QColor& defaultColor,
32 | std::function get, std::function commit);
33 |
34 | void onColorActivated();
35 | };
36 |
37 | #endif // COLORTABLE_H
38 |
--------------------------------------------------------------------------------
/src/modcontenticondelegate.h:
--------------------------------------------------------------------------------
1 | #ifndef MODCONTENTICONDELEGATE_H
2 | #define MODCONTENTICONDELEGATE_H
3 |
4 | #include "icondelegate.h"
5 |
6 | class ModListView;
7 |
8 | class ModContentIconDelegate : public IconDelegate
9 | {
10 | Q_OBJECT
11 | public:
12 | explicit ModContentIconDelegate(ModListView* view, int column = -1,
13 | int compactSize = 150);
14 |
15 | bool helpEvent(QHelpEvent* event, QAbstractItemView* view,
16 | const QStyleOptionViewItem& option, const QModelIndex& index) override;
17 |
18 | protected:
19 | QList getIcons(const QModelIndex& index) const override;
20 | size_t getNumIcons(const QModelIndex& index) const override;
21 |
22 | // constructor for color table
23 | //
24 | ModContentIconDelegate() : ModContentIconDelegate(nullptr) {}
25 |
26 | private:
27 | ModListView* m_view;
28 | };
29 |
30 | #endif // GENERICICONDELEGATE_H
31 |
--------------------------------------------------------------------------------
/src/problemsdialog.h:
--------------------------------------------------------------------------------
1 | #ifndef PROBLEMSDIALOG_H
2 | #define PROBLEMSDIALOG_H
3 |
4 | #include
5 | #include
6 | #include
7 |
8 | namespace Ui
9 | {
10 | class ProblemsDialog;
11 | }
12 |
13 | class PluginContainer;
14 |
15 | class ProblemsDialog : public QDialog
16 | {
17 | Q_OBJECT
18 |
19 | public:
20 | explicit ProblemsDialog(PluginContainer const& pluginContainer, QWidget* parent = 0);
21 | ~ProblemsDialog();
22 |
23 | // also saves and restores geometry
24 | //
25 | int exec() override;
26 |
27 | bool hasProblems() const;
28 |
29 | private:
30 | void runDiagnosis();
31 |
32 | private slots:
33 | void selectionChanged();
34 | void urlClicked(const QUrl& url);
35 |
36 | void startFix();
37 |
38 | private:
39 | Ui::ProblemsDialog* ui;
40 | const PluginContainer& m_PluginContainer;
41 | bool m_hasProblems;
42 | };
43 |
44 | #endif // PROBLEMSDIALOG_H
45 |
--------------------------------------------------------------------------------
/src/categoryimportdialog.h:
--------------------------------------------------------------------------------
1 | #ifndef CATEGORYIMPORTDIALOG_H
2 | #define CATEGORYIMPORTDIALOG_H
3 |
4 | #include
5 |
6 | namespace Ui
7 | {
8 | class CategoryImportDialog;
9 | }
10 |
11 | /**
12 | * @brief Dialog that allows users to configure mod categories
13 | **/
14 | class CategoryImportDialog : public QDialog
15 | {
16 | Q_OBJECT
17 |
18 | public:
19 | enum ImportStrategy
20 | {
21 | None,
22 | Overwrite,
23 | Merge
24 | };
25 |
26 | public:
27 | explicit CategoryImportDialog(QWidget* parent = 0);
28 | ~CategoryImportDialog();
29 |
30 | ImportStrategy strategy();
31 | bool assign();
32 | bool remap();
33 |
34 | public slots:
35 | void accepted();
36 | void rejected();
37 | void on_strategyClicked(QAbstractButton* button);
38 | void on_assignOptionClicked(bool clicked);
39 |
40 | private:
41 | Ui::CategoryImportDialog* ui;
42 | };
43 |
44 | #endif // CATEGORYIMPORTDIALOG_H
45 |
--------------------------------------------------------------------------------
/src/tutorials/tutorial_conflictresolution_modinfo.js:
--------------------------------------------------------------------------------
1 | function getTutorialSteps() {
2 | tutorialCanceller.visible = false
3 | return [
4 | function() {
5 | tutorial.text = qsTr("Please switch to the \"Conflicts\"-Tab.")
6 | highlightItem("tabWidget", true)
7 | if (!tutorialControl.waitForTabOpen("tabWidget", "tabConflicts")) {
8 | nextStep()
9 | }
10 | },
11 | function() {
12 | tutorial.text = qsTr("Here you can see two lists: a list of files that this mod overwrites that are also "
13 | + "provided by other mods, and a list of files in this mod which are overwritten by "
14 | + "one or more other mods.")
15 | waitForClick()
16 | },
17 | function() {
18 | tutorial.text = qsTr("Please close the information dialog.")
19 | waitForClick()
20 | }
21 |
22 | ]
23 | }
24 |
--------------------------------------------------------------------------------
/src/downloadstab.h:
--------------------------------------------------------------------------------
1 | #ifndef MODORGANIZER_DOWNLOADTAB_INCLUDED
2 | #define MODORGANIZER_DOWNLOADTAB_INCLUDED
3 |
4 | #include
5 |
6 | namespace Ui
7 | {
8 | class MainWindow;
9 | }
10 | class OrganizerCore;
11 | class DownloadListView;
12 |
13 | class DownloadsTab : public QObject
14 | {
15 | Q_OBJECT;
16 |
17 | public:
18 | DownloadsTab(OrganizerCore& core, Ui::MainWindow* ui);
19 |
20 | void update();
21 |
22 | private:
23 | struct DownloadsTabUi
24 | {
25 | QPushButton* refresh;
26 | QPushButton* queryInfos;
27 | DownloadListView* list;
28 | QCheckBox* showHidden;
29 | QLineEdit* filter;
30 | };
31 |
32 | OrganizerCore& m_core;
33 | DownloadsTabUi ui;
34 | MOBase::FilterWidget m_filter;
35 |
36 | void refresh();
37 |
38 | /**
39 | * @brief Handle click on the "Query infos" button
40 | **/
41 | void queryInfos();
42 |
43 | void resumeDownload(int downloadIndex);
44 | };
45 |
46 | #endif // MODORGANIZER_DOWNLOADTAB_INCLUDED
47 |
--------------------------------------------------------------------------------
/src/iuserinterface.h:
--------------------------------------------------------------------------------
1 | #ifndef IUSERINTERFACE_H
2 | #define IUSERINTERFACE_H
3 |
4 | #include "modinfodialogfwd.h"
5 | #include
6 | #include
7 | #include
8 | #include
9 | #include
10 |
11 | class IUserInterface
12 | {
13 | public:
14 | virtual void registerModPage(MOBase::IPluginModPage* modPage) = 0;
15 |
16 | virtual void installTranslator(const QString& name) = 0;
17 |
18 | virtual bool closeWindow() = 0;
19 | virtual void setWindowEnabled(bool enabled) = 0;
20 |
21 | virtual void displayModInformation(ModInfoPtr modInfo, unsigned int modIndex,
22 | ModInfoTabIDs tabID) = 0;
23 |
24 | virtual void updateBSAList(const QStringList& defaultArchives,
25 | const QStringList& activeArchives) = 0;
26 |
27 | virtual MOBase::DelayedFileWriterBase& archivesWriter() = 0;
28 |
29 | virtual QMainWindow* mainWindow() = 0;
30 | };
31 |
32 | #endif // IUSERINTERFACE_H
33 |
--------------------------------------------------------------------------------
/src/settingsdialogpaths.h:
--------------------------------------------------------------------------------
1 | #ifndef SETTINGSDIALOGPATHS_H
2 | #define SETTINGSDIALOGPATHS_H
3 |
4 | #include "settings.h"
5 | #include "settingsdialog.h"
6 |
7 | class PathsSettingsTab : public SettingsTab
8 | {
9 | public:
10 | PathsSettingsTab(Settings& settings, SettingsDialog& dialog);
11 | void update();
12 |
13 | private:
14 | void on_browseBaseDirBtn_clicked();
15 | void on_browseCacheDirBtn_clicked();
16 | void on_browseDownloadDirBtn_clicked();
17 | void on_browseGameDirBtn_clicked();
18 | void on_browseModDirBtn_clicked();
19 | void on_browseOverwriteDirBtn_clicked();
20 | void on_browseProfilesDirBtn_clicked();
21 |
22 | void on_baseDirEdit_editingFinished();
23 | void on_cacheDirEdit_editingFinished();
24 | void on_downloadDirEdit_editingFinished();
25 | void on_modDirEdit_editingFinished();
26 | void on_overwriteDirEdit_editingFinished();
27 | void on_profilesDirEdit_editingFinished();
28 |
29 | void normalizePath(QLineEdit* lineEdit);
30 |
31 | QDir m_gameDir;
32 | };
33 |
34 | #endif // SETTINGSDIALOGPATHS_H
35 |
--------------------------------------------------------------------------------
/.github/workflows/build.yml:
--------------------------------------------------------------------------------
1 | name: Build ModOrganizer 2
2 |
3 | on:
4 | push:
5 | branches: [master]
6 | pull_request:
7 | types: [opened, synchronize, reopened]
8 |
9 | env:
10 | VCPKG_BINARY_SOURCES: ${{ vars.AZ_BLOB_VCPKG_URL != '' && format('clear;x-azblob,{0},{1},readwrite', vars.AZ_BLOB_VCPKG_URL, secrets.AZ_BLOB_SAS) || '' }}
11 |
12 | jobs:
13 | build:
14 | runs-on: windows-2022
15 | steps:
16 | - name: Build ModOrganizer
17 | id: build-modorganizer
18 | uses: ModOrganizer2/build-with-mob-action@master
19 | with:
20 | qt-modules: qtpositioning qtwebchannel qtwebengine qtwebsockets
21 | mo2-dependencies: usvfs uibase bsatk esptk archive lootcli
22 |
23 | - name: Install ModOrganizer
24 | shell: pwsh
25 | run: |
26 | cmake --install vsbuild --config RelWithDebInfo
27 | working-directory: ./build/${{ github.event.repository.name }}
28 |
29 | - name: Package ModOrganizer
30 | uses: actions/upload-artifact@master
31 | with:
32 | name: modorganizer
33 | path: ./install/bin
34 |
--------------------------------------------------------------------------------
/src/modelutils.h:
--------------------------------------------------------------------------------
1 | #ifndef MODELUTILS_H
2 | #define MODELUTILS_H
3 |
4 | #include
5 | #include
6 | #include
7 |
8 | namespace MOShared
9 | {
10 |
11 | // retrieve all the row index under the given parent
12 | QModelIndexList flatIndex(const QAbstractItemModel* model, int column = 0,
13 | const QModelIndex& parent = QModelIndex());
14 |
15 | // retrieve all the visible index in the given view
16 | QModelIndexList visibleIndex(QTreeView* view, int column = 0);
17 |
18 | // convert back-and-forth through model proxies
19 | QModelIndex indexModelToView(const QModelIndex& index, const QAbstractItemView* view);
20 | QModelIndexList indexModelToView(const QModelIndexList& index,
21 | const QAbstractItemView* view);
22 | QModelIndex indexViewToModel(const QModelIndex& index, const QAbstractItemModel* model);
23 | QModelIndexList indexViewToModel(const QModelIndexList& index,
24 | const QAbstractItemModel* model);
25 |
26 | } // namespace MOShared
27 |
28 | #endif
29 |
--------------------------------------------------------------------------------
/src/lcdnumber.h:
--------------------------------------------------------------------------------
1 | /*
2 | This file is part of Mod Organizer.
3 |
4 | Mod Organizer is free software: you can redistribute it and/or modify
5 | it under the terms of the GNU General Public License as published by
6 | the Free Software Foundation, either version 3 of the License, or
7 | (at your option) any later version.
8 |
9 | Mod Organizer is distributed in the hope that it will be useful,
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | GNU General Public License for more details.
13 |
14 | You should have received a copy of the GNU General Public License
15 | along with Mod Organizer. If not, see .
16 | */
17 |
18 | #include
19 | #include
20 | #include
21 |
22 | class LCDNumber : public QLCDNumber
23 | {
24 | Q_OBJECT
25 |
26 | public:
27 | LCDNumber(QWidget* parent = nullptr);
28 | void mousePressEvent(QMouseEvent* event);
29 |
30 | public slots:
31 | void showToolTip();
32 |
33 | private:
34 | QPoint m_toolTipPosition;
35 | };
36 |
--------------------------------------------------------------------------------
/src/forcedloaddialogwidget.h:
--------------------------------------------------------------------------------
1 | #ifndef FORCEDLOADDIALOGWIDGET_H
2 | #define FORCEDLOADDIALOGWIDGET_H
3 |
4 | #include "iplugingame.h"
5 | #include
6 |
7 | namespace Ui
8 | {
9 | class ForcedLoadDialogWidget;
10 | }
11 |
12 | class ForcedLoadDialogWidget : public QWidget
13 | {
14 | Q_OBJECT
15 |
16 | public:
17 | explicit ForcedLoadDialogWidget(const MOBase::IPluginGame* game,
18 | QWidget* parent = nullptr);
19 | ~ForcedLoadDialogWidget();
20 |
21 | bool getEnabled();
22 | bool getForced();
23 | QString getLibraryPath();
24 | QString getProcess();
25 |
26 | void setEnabled(bool enabled);
27 | void setForced(bool forced);
28 | void setLibraryPath(const QString& path);
29 | void setProcess(const QString& name);
30 |
31 | private slots:
32 | void on_enabledBox_toggled();
33 | void on_libraryPathBrowseButton_clicked();
34 | void on_processBrowseButton_clicked();
35 |
36 | private:
37 | Ui::ForcedLoadDialogWidget* ui;
38 | bool m_Forced;
39 | const MOBase::IPluginGame* m_GamePlugin;
40 | };
41 |
42 | #endif // FORCEDLOADDIALOGWIDGET_H
43 |
--------------------------------------------------------------------------------
/src/modflagicondelegate.h:
--------------------------------------------------------------------------------
1 | #ifndef MODFLAGICONDELEGATE_H
2 | #define MODFLAGICONDELEGATE_H
3 |
4 | #include
5 |
6 | #include "icondelegate.h"
7 | #include "modinfo.h"
8 |
9 | class ModListView;
10 |
11 | class ModFlagIconDelegate : public IconDelegate
12 | {
13 | Q_OBJECT;
14 |
15 | public:
16 | explicit ModFlagIconDelegate(ModListView* view, int column = -1,
17 | int compactSize = 120);
18 | QSize sizeHint(const QStyleOptionViewItem& option,
19 | const QModelIndex& index) const override;
20 |
21 | protected:
22 | static QList getIconsForFlags(std::vector flags,
23 | bool compact);
24 | static QString getFlagIcon(ModInfo::EFlag flag);
25 |
26 | QList getIcons(const QModelIndex& index) const override;
27 | size_t getNumIcons(const QModelIndex& index) const override;
28 |
29 | // constructor for color table
30 | //
31 | ModFlagIconDelegate() : ModFlagIconDelegate(nullptr) {}
32 |
33 | private:
34 | ModListView* m_view;
35 | };
36 |
37 | #endif // MODFLAGICONDELEGATE_H
38 |
--------------------------------------------------------------------------------
/src/tutorials/tutorial_firststeps_modinfo.js:
--------------------------------------------------------------------------------
1 | function getTutorialSteps()
2 | {
3 | tutorialCanceller.visible = false
4 | return [
5 | function() {
6 | tutorial.text = qsTr("This dialog tries to expose as much information about a mod as possible. "
7 | +"Depending on the mod, this may include readmes, screenshots, optional plugins and so on. "
8 | +"If a certain type of information was not found in a mod, the corresponding tab "
9 | +"is grayed out.")
10 | highlightItem("tabWidget", false)
11 | waitForClick()
12 | },
13 | function() {
14 | tutorial.text = qsTr("If you installed the mod from Nexus, the corresponding tab should give you direct "
15 | +"access to the mod page description, which can be refreshed directly from Nexus.")
16 | waitForClick()
17 | },
18 | function() {
19 | unhighlight()
20 | tutorial.text = qsTr("We may revisit this screen in later tutorials.")
21 | waitForClick()
22 | }
23 | ]
24 | }
25 |
--------------------------------------------------------------------------------
/src/lcdnumber.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | This file is part of Mod Organizer.
3 |
4 | Mod Organizer is free software: you can redistribute it and/or modify
5 | it under the terms of the GNU General Public License as published by
6 | the Free Software Foundation, either version 3 of the License, or
7 | (at your option) any later version.
8 |
9 | Mod Organizer is distributed in the hope that it will be useful,
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | GNU General Public License for more details.
13 |
14 | You should have received a copy of the GNU General Public License
15 | along with Mod Organizer. If not, see .
16 | */
17 |
18 | #include "lcdnumber.h"
19 |
20 | #include
21 | #include
22 |
23 | LCDNumber::LCDNumber(QWidget* parent) : QLCDNumber(parent) {}
24 |
25 | void LCDNumber::mousePressEvent(QMouseEvent* event)
26 | {
27 | m_toolTipPosition = mapToGlobal(event->pos());
28 | QTimer::singleShot(100, this, SLOT(showToolTip()));
29 | }
30 |
31 | void LCDNumber::showToolTip()
32 | {
33 | QToolTip::showText(m_toolTipPosition, toolTip());
34 | }
35 |
--------------------------------------------------------------------------------
/.clang-format:
--------------------------------------------------------------------------------
1 | ---
2 | # We'll use defaults from the LLVM style, but with 4 columns indentation.
3 | BasedOnStyle: LLVM
4 | IndentWidth: 2
5 | ---
6 | Language: Cpp
7 | DeriveLineEnding: false
8 | UseCRLF: true
9 | DerivePointerAlignment: false
10 | PointerAlignment: Left
11 | AlignConsecutiveAssignments: true
12 | AllowShortFunctionsOnASingleLine: Inline
13 | AllowShortIfStatementsOnASingleLine: Never
14 | AllowShortLambdasOnASingleLine: Empty
15 | AlwaysBreakTemplateDeclarations: Yes
16 | AccessModifierOffset: -2
17 | AlignTrailingComments: true
18 | SpacesBeforeTrailingComments: 2
19 | NamespaceIndentation: Inner
20 | MaxEmptyLinesToKeep: 1
21 | BreakBeforeBraces: Custom
22 | BraceWrapping:
23 | AfterCaseLabel: false
24 | AfterClass: true
25 | AfterControlStatement: false
26 | AfterEnum: true
27 | AfterFunction: true
28 | AfterNamespace: true
29 | AfterStruct: true
30 | AfterUnion: true
31 | AfterExternBlock: true
32 | BeforeCatch: false
33 | BeforeElse: false
34 | BeforeLambdaBody: false
35 | BeforeWhile: false
36 | IndentBraces: false
37 | SplitEmptyFunction: false
38 | SplitEmptyRecord: false
39 | SplitEmptyNamespace: true
40 | ColumnLimit: 88
41 | ForEachMacros: ['Q_FOREACH', 'foreach']
42 |
--------------------------------------------------------------------------------
/src/shared/appconfig.h:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (C) 2012 Sebastian Herbord. All rights reserved.
3 |
4 | This file is part of Mod Organizer.
5 |
6 | Mod Organizer is free software: you can redistribute it and/or modify
7 | it under the terms of the GNU General Public License as published by
8 | the Free Software Foundation, either version 3 of the License, or
9 | (at your option) any later version.
10 |
11 | Mod Organizer is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU General Public License for more details.
15 |
16 | You should have received a copy of the GNU General Public License
17 | along with Mod Organizer. If not, see .
18 | */
19 |
20 | #ifndef APPCONFIG_H
21 | #define APPCONFIG_H
22 |
23 | #include
24 |
25 | namespace AppConfig
26 | {
27 |
28 | #define PARWSTRING wstring
29 | #define APPPARAM(partype, parid, value) partype parid();
30 | #include "appconfig.inc"
31 |
32 | namespace MOShared
33 | {
34 | #undef PARWSTRING
35 | #undef APPPARAM
36 |
37 | } // namespace MOShared
38 |
39 | } // namespace AppConfig
40 |
41 | #endif // APPCONFIG_H
42 |
--------------------------------------------------------------------------------
/src/gamefeaturesproxy.h:
--------------------------------------------------------------------------------
1 | #ifndef GAMEFEATURESPROXY_H
2 | #define GAMEFEATURESPROXY_H
3 |
4 | #include "igamefeatures.h"
5 |
6 | class GameFeatures;
7 | class OrganizerProxy;
8 |
9 | class GameFeaturesProxy : public MOBase::IGameFeatures
10 | {
11 | public:
12 | GameFeaturesProxy(OrganizerProxy* coreProxy, GameFeatures& gameFeatures);
13 |
14 | bool registerFeature(QStringList const& games,
15 | std::shared_ptr feature, int priority,
16 | bool replace) override;
17 | bool registerFeature(MOBase::IPluginGame* game,
18 | std::shared_ptr feature, int priority,
19 | bool replace) override;
20 | bool registerFeature(std::shared_ptr feature, int priority,
21 | bool replace) override;
22 | bool unregisterFeature(std::shared_ptr feature) override;
23 |
24 | protected:
25 | std::shared_ptr
26 | gameFeatureImpl(std::type_info const& info) const override;
27 | int unregisterFeaturesImpl(std::type_info const& info) override;
28 |
29 | private:
30 | GameFeatures& m_Features;
31 | OrganizerProxy& m_CoreProxy;
32 | };
33 |
34 | #endif
35 |
--------------------------------------------------------------------------------
/src/categoriestable.h:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (C) 2012 Sebastian Herbord. All rights reserved.
3 |
4 | This file is part of Mod Organizer.
5 |
6 | Mod Organizer is free software: you can redistribute it and/or modify
7 | it under the terms of the GNU General Public License as published by
8 | the Free Software Foundation, either version 3 of the License, or
9 | (at your option) any later version.
10 |
11 | Mod Organizer is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU General Public License for more details.
15 |
16 | You should have received a copy of the GNU General Public License
17 | along with Mod Organizer. If not, see .
18 | */
19 |
20 | #ifndef CATEGORIESTABLE_H
21 | #define CATEGORIESTABLE_H
22 |
23 | #include
24 | #include
25 |
26 | class CategoriesTable : public QTableWidget
27 | {
28 | Q_OBJECT
29 | public:
30 | CategoriesTable(QWidget* parent = 0);
31 |
32 | protected:
33 | virtual bool dropMimeData(int row, int column, const QMimeData* data,
34 | Qt::DropAction action);
35 | };
36 |
37 | #endif // CATEGORIESTABLE_H
38 |
--------------------------------------------------------------------------------
/src/copyeventfilter.h:
--------------------------------------------------------------------------------
1 | #ifndef COPY_EVENT_FILTER_H
2 | #define COPY_EVENT_FILTER_H
3 |
4 | #include
5 |
6 | #include
7 | #include
8 | #include
9 |
10 | // this small class provides copy on Ctrl+C and also
11 | // exposes a method to actual copy the selection
12 | //
13 | // the way the selection is copied can be customized by
14 | // passing a functor to format each index, by default
15 | // it only extracts the display role
16 | //
17 | // only works for view that selects whole row since it only
18 | // considers the first cell in each row
19 | //
20 | class CopyEventFilter : public QObject
21 | {
22 | Q_OBJECT
23 |
24 | public:
25 | CopyEventFilter(QAbstractItemView* view, int column = 0, int role = Qt::DisplayRole);
26 | CopyEventFilter(QAbstractItemView* view,
27 | std::function format);
28 |
29 | // copy the selection of the view associated with this
30 | // event filter into the clipboard
31 | //
32 | void copySelection() const;
33 |
34 | bool eventFilter(QObject* sender, QEvent* event) override;
35 |
36 | private:
37 | QAbstractItemView* m_view;
38 | std::function m_format;
39 | };
40 |
41 | #endif
42 |
--------------------------------------------------------------------------------
/src/credentialsdialog.h:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (C) 2012 Sebastian Herbord. All rights reserved.
3 |
4 | This file is part of Mod Organizer.
5 |
6 | Mod Organizer is free software: you can redistribute it and/or modify
7 | it under the terms of the GNU General Public License as published by
8 | the Free Software Foundation, either version 3 of the License, or
9 | (at your option) any later version.
10 |
11 | Mod Organizer is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU General Public License for more details.
15 |
16 | You should have received a copy of the GNU General Public License
17 | along with Mod Organizer. If not, see .
18 | */
19 |
20 | #ifndef CREDENTIALSDIALOG_H
21 | #define CREDENTIALSDIALOG_H
22 |
23 | #include
24 |
25 | namespace Ui
26 | {
27 | class CredentialsDialog;
28 | }
29 |
30 | class CredentialsDialog : public QDialog
31 | {
32 | Q_OBJECT
33 |
34 | public:
35 | explicit CredentialsDialog(QWidget* parent = 0);
36 | ~CredentialsDialog();
37 |
38 | bool store() const;
39 | bool neverAsk() const;
40 |
41 | private:
42 | Ui::CredentialsDialog* ui;
43 | };
44 |
45 | #endif // CREDENTIALSDIALOG_H
46 |
--------------------------------------------------------------------------------
/src/bbcode.h:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (C) 2012 Sebastian Herbord. All rights reserved.
3 |
4 | This file is part of Mod Organizer.
5 |
6 | Mod Organizer is free software: you can redistribute it and/or modify
7 | it under the terms of the GNU General Public License as published by
8 | the Free Software Foundation, either version 3 of the License, or
9 | (at your option) any later version.
10 |
11 | Mod Organizer is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU General Public License for more details.
15 |
16 | You should have received a copy of the GNU General Public License
17 | along with Mod Organizer. If not, see .
18 | */
19 |
20 | #ifndef BBCODE_H
21 | #define BBCODE_H
22 |
23 | #include
24 |
25 | namespace BBCode
26 | {
27 |
28 | /**
29 | * @brief convert a string with BB Code-Tags to HTML
30 | * @param input the input string with BB tags
31 | * @param replaceOccured if not nullptr, this parameter will be set to true if any bb
32 | *tags were replaced
33 | * @return the same string in html representation
34 | **/
35 | QString convertToHTML(const QString& input);
36 |
37 | } // namespace BBCode
38 |
39 | #endif // BBCODE_H
40 |
--------------------------------------------------------------------------------
/src/motddialog.h:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (C) 2012 Sebastian Herbord. All rights reserved.
3 |
4 | This file is part of Mod Organizer.
5 |
6 | Mod Organizer is free software: you can redistribute it and/or modify
7 | it under the terms of the GNU General Public License as published by
8 | the Free Software Foundation, either version 3 of the License, or
9 | (at your option) any later version.
10 |
11 | Mod Organizer is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU General Public License for more details.
15 |
16 | You should have received a copy of the GNU General Public License
17 | along with Mod Organizer. If not, see .
18 | */
19 |
20 | #ifndef MOTDDIALOG_H
21 | #define MOTDDIALOG_H
22 |
23 | #include
24 | #include
25 |
26 | namespace Ui
27 | {
28 | class MotDDialog;
29 | }
30 |
31 | class MotDDialog : public QDialog
32 | {
33 | Q_OBJECT
34 |
35 | public:
36 | explicit MotDDialog(const QString& message, QWidget* parent = 0);
37 | ~MotDDialog();
38 |
39 | private slots:
40 | void on_okButton_clicked();
41 | void linkClicked(const QUrl& url);
42 |
43 | private:
44 | Ui::MotDDialog* ui;
45 | };
46 |
47 | #endif // MOTDDIALOG_H
48 |
--------------------------------------------------------------------------------
/src/credentialsdialog.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (C) 2012 Sebastian Herbord. All rights reserved.
3 |
4 | This file is part of Mod Organizer.
5 |
6 | Mod Organizer is free software: you can redistribute it and/or modify
7 | it under the terms of the GNU General Public License as published by
8 | the Free Software Foundation, either version 3 of the License, or
9 | (at your option) any later version.
10 |
11 | Mod Organizer is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU General Public License for more details.
15 |
16 | You should have received a copy of the GNU General Public License
17 | along with Mod Organizer. If not, see .
18 | */
19 |
20 | #include "credentialsdialog.h"
21 | #include "ui_credentialsdialog.h"
22 |
23 | CredentialsDialog::CredentialsDialog(QWidget* parent)
24 | : QDialog(parent), ui(new Ui::CredentialsDialog)
25 | {
26 | ui->setupUi(this);
27 | }
28 |
29 | CredentialsDialog::~CredentialsDialog()
30 | {
31 | delete ui;
32 | }
33 |
34 | bool CredentialsDialog::store() const
35 | {
36 | return ui->rememberCheck->isChecked();
37 | }
38 |
39 | bool CredentialsDialog::neverAsk() const
40 | {
41 | return ui->dontaskBox->isChecked();
42 | }
43 |
--------------------------------------------------------------------------------
/src/profileinputdialog.h:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (C) 2012 Sebastian Herbord. All rights reserved.
3 |
4 | This file is part of Mod Organizer.
5 |
6 | Mod Organizer is free software: you can redistribute it and/or modify
7 | it under the terms of the GNU General Public License as published by
8 | the Free Software Foundation, either version 3 of the License, or
9 | (at your option) any later version.
10 |
11 | Mod Organizer is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU General Public License for more details.
15 |
16 | You should have received a copy of the GNU General Public License
17 | along with Mod Organizer. If not, see .
18 | */
19 |
20 | #ifndef PROFILEINPUTDIALOG_H
21 | #define PROFILEINPUTDIALOG_H
22 |
23 | #include
24 |
25 | namespace Ui
26 | {
27 | class ProfileInputDialog;
28 | }
29 |
30 | class ProfileInputDialog : public QDialog
31 | {
32 | Q_OBJECT
33 |
34 | public:
35 | explicit ProfileInputDialog(QWidget* parent = 0);
36 | ~ProfileInputDialog();
37 |
38 | QString getName() const;
39 | bool getPreferDefaultSettings() const;
40 |
41 | private:
42 | Ui::ProfileInputDialog* ui;
43 | };
44 |
45 | #endif // PROFILEINPUTDIALOG_H
46 |
--------------------------------------------------------------------------------
/src/loghighlighter.h:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (C) 2012 Sebastian Herbord. All rights reserved.
3 |
4 | This file is part of Mod Organizer.
5 |
6 | Mod Organizer is free software: you can redistribute it and/or modify
7 | it under the terms of the GNU General Public License as published by
8 | the Free Software Foundation, either version 3 of the License, or
9 | (at your option) any later version.
10 |
11 | Mod Organizer is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU General Public License for more details.
15 |
16 | You should have received a copy of the GNU General Public License
17 | along with Mod Organizer. If not, see .
18 | */
19 |
20 | #ifndef LOGHIGHLIGHTER_H
21 | #define LOGHIGHLIGHTER_H
22 |
23 | #include
24 |
25 | /**
26 | * @brief Syntax highlighter to make log files from mo.dll more readable.
27 | * @note this is currently not used!
28 | **/
29 | class LogHighlighter : public QSyntaxHighlighter
30 | {
31 | Q_OBJECT
32 | public:
33 | explicit LogHighlighter(QObject* parent = 0);
34 |
35 | signals:
36 |
37 | public slots:
38 |
39 | protected:
40 | virtual void highlightBlock(const QString& text);
41 | };
42 |
43 | #endif // LOGHIGHLIGHTER_H
44 |
--------------------------------------------------------------------------------
/src/moshortcut.h:
--------------------------------------------------------------------------------
1 | #ifndef MODORGANIZER_MOSHORTCUT_INCLUDED
2 | #define MODORGANIZER_MOSHORTCUT_INCLUDED
3 |
4 | #include "instancemanager.h"
5 | #include
6 |
7 | class MOShortcut
8 | {
9 | public:
10 | MOShortcut(const QString& link = {});
11 |
12 | // true if initialized using a valid moshortcut link
13 | //
14 | bool isValid() const;
15 |
16 | // whether an instance name was given
17 | //
18 | bool hasInstance() const;
19 |
20 | // whether an executable name was given
21 | //
22 | bool hasExecutable() const;
23 |
24 | // name of the instance given, "Portable" for portable; undefined if
25 | // hasInstance() returns false
26 | //
27 | QString instanceDisplayName() const;
28 |
29 | // name of the instance given, empty for portable; undefined if hasInstance()
30 | // returns false
31 | //
32 | const QString& instanceName() const;
33 |
34 | // name of the executable given
35 | //
36 | const QString& executableName() const;
37 |
38 | // whether this shortcut is for the given instance
39 | //
40 | bool isForInstance(const Instance& i) const;
41 |
42 | QString toString() const;
43 |
44 | private:
45 | QString m_instance;
46 | QString m_executable;
47 | bool m_valid;
48 | bool m_hasInstance;
49 | bool m_hasExecutable;
50 | };
51 |
52 | #endif // MODORGANIZER_MOSHORTCUT_INCLUDED
53 |
--------------------------------------------------------------------------------
/src/dlls.manifest.qt6:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/src/savetextasdialog.cpp:
--------------------------------------------------------------------------------
1 | #include "savetextasdialog.h"
2 | #include "ui_savetextasdialog.h"
3 | #include
4 | #include
5 | #include
6 |
7 | using MOBase::reportError;
8 |
9 | SaveTextAsDialog::SaveTextAsDialog(QWidget* parent)
10 | : QDialog(parent), ui(new Ui::SaveTextAsDialog)
11 | {
12 | ui->setupUi(this);
13 | }
14 |
15 | SaveTextAsDialog::~SaveTextAsDialog()
16 | {
17 | delete ui;
18 | }
19 |
20 | void SaveTextAsDialog::setText(const QString& text)
21 | {
22 | ui->textEdit->setPlainText(text);
23 | }
24 |
25 | void SaveTextAsDialog::on_closeBtn_clicked()
26 | {
27 | this->close();
28 | }
29 |
30 | void SaveTextAsDialog::on_clipboardBtn_clicked()
31 | {
32 | QClipboard* clipboard = QApplication::clipboard();
33 | clipboard->setText(ui->textEdit->toPlainText());
34 | }
35 |
36 | void SaveTextAsDialog::on_saveAsBtn_clicked()
37 | {
38 | QString fileName = QFileDialog::getSaveFileName(this, tr("Save CSV"), QString(),
39 | tr("Text Files") + " (*.txt *.csv)");
40 | if (!fileName.isEmpty()) {
41 | QFile file(fileName);
42 | if (!file.open(QIODevice::WriteOnly)) {
43 | reportError(tr("failed to open \"%1\" for writing").arg(fileName));
44 | return;
45 | }
46 |
47 | file.write(ui->textEdit->toPlainText().toUtf8());
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/src/dlls.manifest.debug.qt6:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/src/tutorials/tutorial_firststeps_settings.js:
--------------------------------------------------------------------------------
1 | function getTutorialSteps()
2 | {
3 | tutorialCanceller.visible = false
4 | return [
5 | function() {
6 | highlightItem("tabWidget", true)
7 | tutorial.text = qsTr("It is possible to download files directly from Nexus.\n\n"
8 | + "Please open the \"Nexus\" tab.")
9 | tutorialControl.waitForTabOpen("tabWidget", "nexusTab")
10 | },
11 |
12 | function() {
13 | highlightItem("associateButton", false)
14 | tutorial.text = qsTr("Clicking on this button should register Nexus \"Download with Manager\" buttons "
15 | +"to download with Mod Organizer.")
16 | waitForClick()
17 | },
18 |
19 | function() {
20 | highlightItem("nexusBox", false)
21 | tutorial.text = qsTr("Use this interface to obtain an API key from NexusMods. "
22 | +"This is used for all API connections - downloads, updates "
23 | +"etc. MO2 uses the Windows Credential Manager to store "
24 | +"this data securely. If the SSO page on Nexus is failing, "
25 | +"use the manual entry and copy the API key from your profile.")
26 | waitForClick()
27 | }
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/src/disableproxyplugindialog.h:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (C) 2020 Mikaël Capelle. All rights reserved.
3 |
4 | This file is part of Mod Organizer.
5 |
6 | Mod Organizer is free software: you can redistribute it and/or modify
7 | it under the terms of the GNU General Public License as published by
8 | the Free Software Foundation, either version 3 of the License, or
9 | (at your option) any later version.
10 |
11 | Mod Organizer is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU General Public License for more details.
15 |
16 | You should have received a copy of the GNU General Public License
17 | along with Mod Organizer. If not, see .
18 | */
19 |
20 | #ifndef DISABLEPROXYPLUGINDIALOG_H
21 | #define DISABLEPROXYPLUGINDIALOG_H
22 |
23 | #include
24 |
25 | #include "ipluginproxy.h"
26 |
27 | namespace Ui
28 | {
29 | class DisableProxyPluginDialog;
30 | }
31 |
32 | class DisableProxyPluginDialog : public QDialog
33 | {
34 | public:
35 | DisableProxyPluginDialog(MOBase::IPlugin* proxyPlugin,
36 | std::vector const& required,
37 | QWidget* parent = nullptr);
38 |
39 | private slots:
40 |
41 | Ui::DisableProxyPluginDialog* ui;
42 | };
43 |
44 | #endif
45 |
--------------------------------------------------------------------------------
/src/pluginlistcontextmenu.h:
--------------------------------------------------------------------------------
1 | #ifndef PLUGINLISTCONTEXTMENU_H
2 | #define PLUGINLISTCONTEXTMENU_H
3 |
4 | #include
5 | #include
6 | #include
7 |
8 | #include "modinfo.h"
9 |
10 | class PluginListView;
11 | class OrganizerCore;
12 |
13 | class PluginListContextMenu : public QMenu
14 | {
15 | Q_OBJECT
16 |
17 | public:
18 | // creates a new context menu, the given index is the one for the click and should be
19 | // valid
20 | //
21 | PluginListContextMenu(const QModelIndex& index, OrganizerCore& core,
22 | PluginListView* modListView);
23 |
24 | signals:
25 |
26 | // emitted to open a mod information
27 | //
28 | void openModInformation(unsigned int modIndex);
29 |
30 | public:
31 | // create the "Send to... " context menu
32 | //
33 | QMenu* createSendToContextMenu();
34 | void sendPluginsToPriority(const QModelIndexList& indices);
35 |
36 | // set ESP lock on the given plugins
37 | //
38 | void setESPLock(const QModelIndexList& indices, bool locked);
39 |
40 | // open explorer or mod information for the origin of the plugins
41 | //
42 | void openOriginExplorer(const QModelIndexList& indices);
43 | void openOriginInformation(const QModelIndex& index);
44 |
45 | OrganizerCore& m_core;
46 | QModelIndex m_index;
47 | QModelIndexList m_selected;
48 | PluginListView* m_view;
49 | };
50 |
51 | #endif
52 |
--------------------------------------------------------------------------------
/src/version.rc:
--------------------------------------------------------------------------------
1 | #include "Winver.h"
2 |
3 | // If VS_FF_PRERELEASE is not set, MO labels the build as a release and uses VER_FILEVERSION to determine version number.
4 | // Otherwise, if letters are used in VER_FILEVERSION_STR, uses the full MOBase::VersionInfo parser
5 | // Otherwise, uses the numbers from VER_FILEVERSION and sets the release type as pre-alpha
6 | #define VER_FILEVERSION 2,5,2
7 | #define VER_FILEVERSION_STR "2.5.2\0"
8 |
9 | VS_VERSION_INFO VERSIONINFO
10 | FILEVERSION VER_FILEVERSION
11 | PRODUCTVERSION VER_FILEVERSION
12 | FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
13 | FILEFLAGS (0)
14 | FILEOS VOS__WINDOWS32
15 | FILETYPE VFT_APP
16 | FILESUBTYPE (0)
17 | BEGIN
18 | BLOCK "StringFileInfo"
19 | BEGIN
20 | BLOCK "040904B0"
21 | BEGIN
22 | VALUE "FileVersion", VER_FILEVERSION_STR
23 | VALUE "CompanyName", "Mod Organizer 2 Team\0"
24 | VALUE "FileDescription", "Mod Organizer 2 GUI\0"
25 | VALUE "OriginalFilename", "ModOrganizer.exe\0"
26 | VALUE "InternalName", "ModOrganizer2\0"
27 | VALUE "LegalCopyright", "Copyright 2011-2016 Sebastian Herbord\r\nCopyright 2016-2025 Mod Organizer 2 contributors\0"
28 | VALUE "ProductName", "Mod Organizer 2\0"
29 | VALUE "ProductVersion", VER_FILEVERSION_STR
30 | END
31 | END
32 |
33 | BLOCK "VarFileInfo"
34 | BEGIN
35 | VALUE "Translation", 0x0409, 1200
36 | END
37 | END
38 |
--------------------------------------------------------------------------------
/src/motddialog.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | MotDDialog
4 |
5 |
6 |
7 | 0
8 | 0
9 | 483
10 | 372
11 |
12 |
13 |
14 | Message of the Day
15 |
16 |
17 | -
18 |
19 |
20 | false
21 |
22 |
23 |
24 | -
25 |
26 |
-
27 |
28 |
29 | Qt::Horizontal
30 |
31 |
32 |
33 | 40
34 | 20
35 |
36 |
37 |
38 |
39 | -
40 |
41 |
42 | OK
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/src/shared/appconfig.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (C) 2012 Sebastian Herbord. All rights reserved.
3 |
4 | This file is part of Mod Organizer.
5 |
6 | Mod Organizer is free software: you can redistribute it and/or modify
7 | it under the terms of the GNU General Public License as published by
8 | the Free Software Foundation, either version 3 of the License, or
9 | (at your option) any later version.
10 |
11 | Mod Organizer is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU General Public License for more details.
15 |
16 | You should have received a copy of the GNU General Public License
17 | along with Mod Organizer. If not, see .
18 | */
19 |
20 | #include "appconfig.h"
21 |
22 | namespace AppConfig
23 | {
24 |
25 | #define PARWSTRING wstring
26 | #define APPPARAM(partype, parid, value) \
27 | partype parid() \
28 | { \
29 | return value; \
30 | }
31 | #include "appconfig.inc"
32 |
33 | namespace MOShared
34 | {
35 | #undef PARWSTRING
36 | #undef APPPARAM
37 |
38 | } // namespace MOShared
39 | } // namespace AppConfig
40 |
--------------------------------------------------------------------------------
/src/proxyutils.h:
--------------------------------------------------------------------------------
1 | #ifndef PROXYUTILS_H
2 | #define PROXYUTILS_H
3 |
4 | #include
5 |
6 | #include "organizerproxy.h"
7 |
8 | namespace MOShared
9 | {
10 |
11 | template
12 | auto callIfPluginActive(OrganizerProxy* proxy, Fn&& callback, T defaultReturn = T{})
13 | {
14 | return [fn = std::forward(callback), proxy, defaultReturn](auto&&... args) {
15 | if (proxy->isPluginEnabled(proxy->plugin())) {
16 | return fn(std::forward(args)...);
17 | } else {
18 | if constexpr (!std::is_same_v<
19 | std::invoke_result_t, decltype(args)...>,
20 | void>) {
21 | return defaultReturn;
22 | }
23 | }
24 | };
25 | }
26 |
27 | // We need to connect to the organizer.
28 | template
29 | auto callSignalIfPluginActive(OrganizerProxy* proxy, const Signal& signal,
30 | T defaultReturn = T{})
31 | {
32 | return callIfPluginActive(
33 | proxy,
34 | [&signal](auto&&... args) {
35 | return signal(std::forward(args)...);
36 | },
37 | defaultReturn);
38 | }
39 |
40 | template
41 | auto callSignalAlways(const Signal& signal)
42 | {
43 | return [&signal](auto&&... args) {
44 | return signal(std::forward(args)...);
45 | };
46 | }
47 |
48 | } // namespace MOShared
49 |
50 | #endif
51 |
--------------------------------------------------------------------------------
/src/tutorials/TooltipArea.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.7
2 |
3 | Rectangle {
4 | radius: 2
5 | color: clickable ? "#AA6666AA" : "#AA882222"
6 | height: 100
7 | border.color: "black"
8 | border.width: 2
9 | z: 1
10 | smooth: true
11 | property bool wasLocked: false
12 | property bool clickable: false
13 | property string tooltipText: ""
14 |
15 | MouseArea {
16 | id: clickArea
17 | anchors.fill: parent
18 | hoverEnabled: true
19 |
20 | onPositionChanged: {
21 | if (parent.parent.width - (parent.x + mouseX) < tooltip.width + 50) {
22 | tooltip.x = parent.x + mouseX - 15 - tooltip.width
23 | } else {
24 | tooltip.x = parent.x + mouseX + 15
25 | }
26 |
27 | if (parent.parent.height - (parent.y + mouseY) < tooltip.height + 50) {
28 | tooltip.y = parent.y + mouseY - 15 - tooltip.height
29 | } else {
30 | tooltip.y = parent.y + mouseY + 15
31 | }
32 | }
33 |
34 | onEntered: {
35 | tooltip.visible = true
36 | tooltip.text = tooltipText
37 | }
38 |
39 | onPressed: {
40 | wasLocked = tutToplevel.backgroundEnabled()
41 | if (wasLocked && clickable) {
42 | tutorialControl.simulateClick(mouseX + parent.x, mouseY + parent.y)
43 | }
44 | mouse.accepted = false
45 | }
46 |
47 | onCanceled: {
48 | tooltip.visible = false
49 | }
50 |
51 | onExited: {
52 | tooltip.visible = false
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/profileinputdialog.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (C) 2012 Sebastian Herbord. All rights reserved.
3 |
4 | This file is part of Mod Organizer.
5 |
6 | Mod Organizer is free software: you can redistribute it and/or modify
7 | it under the terms of the GNU General Public License as published by
8 | the Free Software Foundation, either version 3 of the License, or
9 | (at your option) any later version.
10 |
11 | Mod Organizer is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU General Public License for more details.
15 |
16 | You should have received a copy of the GNU General Public License
17 | along with Mod Organizer. If not, see .
18 | */
19 |
20 | #include "profileinputdialog.h"
21 | #include "filesystemutilities.h"
22 | #include "ui_profileinputdialog.h"
23 |
24 | ProfileInputDialog::ProfileInputDialog(QWidget* parent)
25 | : QDialog(parent), ui(new Ui::ProfileInputDialog)
26 | {
27 | ui->setupUi(this);
28 | }
29 |
30 | ProfileInputDialog::~ProfileInputDialog()
31 | {
32 | delete ui;
33 | }
34 |
35 | QString ProfileInputDialog::getName() const
36 | {
37 | QString result = ui->nameEdit->text();
38 | MOBase::fixDirectoryName(result);
39 | return result;
40 | }
41 |
42 | bool ProfileInputDialog::getPreferDefaultSettings() const
43 | {
44 | return ui->defaultSettingsBox->checkState() == Qt::Checked;
45 | }
46 |
--------------------------------------------------------------------------------
/src/envsecurity.h:
--------------------------------------------------------------------------------
1 | #ifndef ENV_SECURITY_H
2 | #define ENV_SECURITY_H
3 |
4 | #include
5 | #include
6 |
7 | namespace env
8 | {
9 |
10 | // represents a security product, such as an antivirus or a firewall
11 | //
12 | class SecurityProduct
13 | {
14 | public:
15 | SecurityProduct(QUuid guid, QString name, int provider, bool active, bool upToDate);
16 |
17 | // guid
18 | //
19 | const QUuid& guid() const;
20 |
21 | // display name of the product
22 | //
23 | const QString& name() const;
24 |
25 | // a bunch of _WSC_SECURITY_PROVIDER flags
26 | //
27 | int provider() const;
28 |
29 | // whether the product is active
30 | //
31 | bool active() const;
32 |
33 | // whether its definitions are up-to-date
34 | //
35 | bool upToDate() const;
36 |
37 | // string representation of the above
38 | //
39 | QString toString() const;
40 |
41 | private:
42 | QUuid m_guid;
43 | QString m_name;
44 | int m_provider;
45 | bool m_active;
46 | bool m_upToDate;
47 |
48 | QString providerToString() const;
49 | };
50 |
51 | std::vector getSecurityProducts();
52 |
53 | struct FileRights
54 | {
55 | QStringList list;
56 | bool hasExecute = false;
57 | bool normalRights = false;
58 | };
59 |
60 | struct FileSecurity
61 | {
62 | QString owner;
63 | FileRights rights;
64 | QString error;
65 | };
66 |
67 | FileSecurity getFileSecurity(const QString& file);
68 |
69 | } // namespace env
70 |
71 | #endif // ENV_SECURITY_H
72 |
--------------------------------------------------------------------------------
/src/shared/fileregister.h:
--------------------------------------------------------------------------------
1 | #ifndef MO_REGISTER_FILESREGISTER_INCLUDED
2 | #define MO_REGISTER_FILESREGISTER_INCLUDED
3 |
4 | #include "fileregisterfwd.h"
5 | #include
6 | #include
7 |
8 | namespace MOShared
9 | {
10 |
11 | class FileRegister
12 | {
13 | public:
14 | FileRegister(boost::shared_ptr originConnection);
15 |
16 | // noncopyable
17 | FileRegister(const FileRegister&) = delete;
18 | FileRegister& operator=(const FileRegister&) = delete;
19 |
20 | bool indexValid(FileIndex index) const;
21 |
22 | FileEntryPtr createFile(std::wstring name, DirectoryEntry* parent,
23 | DirectoryStats& stats);
24 |
25 | FileEntryPtr getFile(FileIndex index) const;
26 |
27 | size_t highestCount() const
28 | {
29 | std::scoped_lock lock(m_Mutex);
30 | return m_Files.size();
31 | }
32 |
33 | bool removeFile(FileIndex index);
34 | void removeOrigin(FileIndex index, OriginID originID);
35 | void removeOriginMulti(std::set indices, OriginID originID);
36 |
37 | void sortOrigins();
38 |
39 | private:
40 | using FileMap = std::deque;
41 |
42 | mutable std::mutex m_Mutex;
43 | FileMap m_Files;
44 | boost::shared_ptr m_OriginConnection;
45 | std::atomic m_NextIndex;
46 |
47 | void unregisterFile(FileEntryPtr file);
48 | FileIndex generateIndex();
49 | };
50 |
51 | } // namespace MOShared
52 |
53 | #endif // MO_REGISTER_FILESREGISTER_INCLUDED
54 |
--------------------------------------------------------------------------------
/src/shared/windows_error.h:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (C) 2012 Sebastian Herbord. All rights reserved.
3 |
4 | This file is part of Mod Organizer.
5 |
6 | Mod Organizer is free software: you can redistribute it and/or modify
7 | it under the terms of the GNU General Public License as published by
8 | the Free Software Foundation, either version 3 of the License, or
9 | (at your option) any later version.
10 |
11 | Mod Organizer is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU General Public License for more details.
15 |
16 | You should have received a copy of the GNU General Public License
17 | along with Mod Organizer. If not, see .
18 | */
19 |
20 | #ifndef WINDOWS_ERROR_H
21 | #define WINDOWS_ERROR_H
22 |
23 | #include
24 | #define WIN32_LEAN_AND_MEAN
25 | #include
26 |
27 | namespace MOShared
28 | {
29 |
30 | class windows_error : public std::runtime_error
31 | {
32 | public:
33 | windows_error(const std::string& message, int errorcode = ::GetLastError())
34 | : runtime_error(constructMessage(message, errorcode)), m_ErrorCode(errorcode)
35 | {}
36 | int getErrorCode() const { return m_ErrorCode; }
37 |
38 | private:
39 | std::string constructMessage(const std::string& input, int errorcode);
40 |
41 | private:
42 | int m_ErrorCode;
43 | };
44 |
45 | } // namespace MOShared
46 |
47 | #endif // WINDOWS_ERROR_H
48 |
--------------------------------------------------------------------------------
/src/modinfodialogfiletree.h:
--------------------------------------------------------------------------------
1 | #ifndef MODINFODIALOGFILETREE_H
2 | #define MODINFODIALOGFILETREE_H
3 |
4 | #include "modinfodialogtab.h"
5 | #include
6 |
7 | class FileTreeTab : public ModInfoDialogTab
8 | {
9 | Q_OBJECT;
10 |
11 | public:
12 | FileTreeTab(ModInfoDialogTabContext cx);
13 |
14 | void clear() override;
15 | void saveState(Settings& s);
16 | void restoreState(const Settings& s);
17 | void update() override;
18 | bool deleteRequested() override;
19 |
20 | private:
21 | struct Actions
22 | {
23 | QAction* newFolder = nullptr;
24 | QAction* open = nullptr;
25 | QAction* runHooked = nullptr;
26 | QAction* preview = nullptr;
27 | QAction* explore = nullptr;
28 | QAction* rename = nullptr;
29 | QAction* del = nullptr;
30 | QAction* hide = nullptr;
31 | QAction* unhide = nullptr;
32 | };
33 |
34 | QFileSystemModel* m_fs;
35 | Actions m_actions;
36 |
37 | void onCreateDirectory();
38 | void onActivated();
39 | void onOpen();
40 | void onRunHooked();
41 | void onPreview();
42 | void onExplore();
43 | void onRename();
44 | void onDelete();
45 | void onHide();
46 | void onUnhide();
47 | void onOpenInExplorer();
48 | void onContextMenu(const QPoint& pos);
49 |
50 | QModelIndex singleSelection() const;
51 | bool deleteFile(const QModelIndex& index);
52 | bool deleteFileRecursive(const QModelIndex& index);
53 | void changeVisibility(bool visible);
54 | };
55 |
56 | #endif // MODINFODIALOGFILETREE_H
57 |
--------------------------------------------------------------------------------
/src/previewgenerator.h:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (C) 2014 Sebastian Herbord. All rights reserved.
3 |
4 | This file is part of Mod Organizer.
5 |
6 | Mod Organizer is free software: you can redistribute it and/or modify
7 | it under the terms of the GNU General Public License as published by
8 | the Free Software Foundation, either version 3 of the License, or
9 | (at your option) any later version.
10 |
11 | Mod Organizer is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU General Public License for more details.
15 |
16 | You should have received a copy of the GNU General Public License
17 | along with Mod Organizer. If not, see .
18 | */
19 |
20 | #ifndef PREVIEWGENERATOR_H
21 | #define PREVIEWGENERATOR_H
22 |
23 | #include
24 | #include
25 | #include
26 | #include
27 | #include