Commit Graph

67 Commits

Author SHA1 Message Date
AnyOldName3 a130ca57a4 Track source of settings
This one's a biggie.

The basic idea's that GameSettings should know:
* what the interpreted value of a setting is, so it can actually be used.
* what the original value the user put in their config was, so it can be put back when the config's saved.
* which path it's processing the openmw.cfg from so relative paths can be resolved correctly.
* whether a setting's a user setting that can be modified, or from one of the other openmw.cfg files that can't necessarily be modified.

This had fairly wide-reaching implications.

The first is that paths are resolved properly in cases where they previously wouldn't have been.
Without this commit, if the launcher saw a relative path in an openmw.cfg, it'd be resolved relative to the process' working directory (which we always set to the binary directory for reasons I won't get into).
That's not what the engine does, so is bad.
It's also not something a user's likely to suspect.
This mess is no longer a problem as paths are resolved correctly when they're loaded instead of on demand when they're used by whatever uses them.

Another problem was that if paths used slugs like ?userconfig? would be written back to openmw.cfg with the slugs replaced, which defeats the object of using the slugs.
This is also fixed.

Tracking which settings are user settings and which are in a non-editable openmw.cfg allows the launcher to grey out rows so they can't be edited (which is sensible as they can't be edited on-disk) while still being aware of content files that are provided by non-user data directories etc.
This is done in a pretty straightforward way for the data directories and fallback-archives, as those bits of UI are basic, but it's more complicated for content files as that uses a nmodel/view approach and has a lot more moving parts.
Thankfully, I'd already implemented that when dealing with builtin.omwscripts, so it just needed wiring up.

One more thing of note is that I made the SettingValue struct storable as a QVariant so it could be attached to the UI widgets as userdata, and then I could just grab the original representation and use it instead of needing any complicated mapping from display value to on-disk value.
2024-03-06 00:36:13 +00:00
AnyOldName3 322a378907 Load correct config files in the wizard 2024-02-28 00:49:15 +00:00
Andrei Kortunov 8d06a99507 Register language selector properly 2023-12-19 10:20:31 +04:00
Andrei Kortunov ca19f7006c Make hardcoded strings in Launcher and Wizard localizable 2023-12-11 12:02:43 +04:00
Andrei Kortunov c5b16d1ba2 Do not include formatting spaces to localizable strings 2023-11-30 13:06:50 +04:00
elsid cf75363290 Typed launcher settings
QMultiMap is not clear about what settings exist and it's not efficient way to
access them after they are loaded.
2023-01-27 12:42:05 +01:00
elsid 0961720835 Join path components using path::operator/ instead of string::operator+ 2023-01-27 01:07:15 +01:00
elsid dd89403df0 Move ensureUtf8Encoding to named namespace
To follow https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#sf21-dont-use-an-unnamed-anonymous-namespace-in-a-header

Add QtGlobal include to define QT_VERSION and QT_VERSION_CHECK macroses before
they're used.
2023-01-18 22:58:35 +01:00
Andrei Kortunov bfcbc2350d Handle UTF-8 in Qt streams in the Qt6-compatible way 2023-01-12 15:39:50 +04:00
jvoisin cd29c181cf Another pass with IWYU 2022-10-10 15:16:18 +02:00
jvoisin 3cbf1dc042 First pass with include-what-you-use 2022-10-09 10:39:43 +00:00
clang-format-bot ddb0522bbf Apply clang-format to code base 2022-09-22 21:35:26 +03:00
Project579 ca14fc00dc Added dedicated functions for conversions between QString and std::filesystem::path. 2022-09-11 14:41:21 +02:00
Project579 c226b35f1f Fix some remaining encoding errors due to std::filesystem transition. 2022-09-11 14:41:20 +02:00
Project579 a13709c510 Replace implicit convertions from std::filesystem::path to std::string with correctly converting functions. 2022-09-11 14:41:20 +02:00
Project579 e5c417c968 Make sure all paths are passed as std::filesystem::path instead of std::string where possible. 2022-09-11 14:41:15 +02:00
Project579 4bb07282c9 Replace all remaining occurrences of boost::filesystem with std::filesystem. 2022-09-11 02:19:00 +02:00
Mat 405a5c5d25 functor-based Qt signal-slot syntax wizard 2022-08-23 17:14:11 -03:00
Andrei Kortunov 43f552f48f Allow users to decide if they need to import bitmap fonts 2022-08-17 22:12:15 +04:00
jvoisin 8b9ed57348 Clean up Qt includes 2022-06-17 11:56:54 +02:00
psi29a 8f02cd7d17 Merge branch 'fix_6627' into 'master'
Fix #6627

Closes #6627

See merge request OpenMW/openmw!1762
2022-04-17 17:13:13 +00:00
Eris Caffee db84d9e649 Issue 2766 Warn user of old MW version detected 2022-04-17 16:28:14 +00:00
Petr Mikheev fa29b9d6f7 Fix #6627 2022-04-10 22:31:09 +02:00
Bret Curtis 74e7cfc023 remove unused includes: part1
remove unused imports: part2

revert one tidy we will keep for c++20
2022-01-23 17:30:25 +01:00
Josquin Frei 63a8bc5f9b Fix wizard dialogs 2022-01-07 14:35:11 +00:00
Alexei Dobrohotov ab789e37e1 Wizard: fix "file is already opened" warning 2020-12-14 03:45:03 +03:00
Andrei Kortunov 98bb73ffb7 Do not use deprecated QTextStream::endl 2020-06-22 18:46:45 +04:00
elsid 045ceeac11 Replace foreach macro by for-loop 2019-10-20 20:08:16 +02:00
tri4ng1e f2613a74b1 Write settings before invoking openmw-iniimporter 2018-05-17 21:20:04 +03:00
Capostrophic 5a3086b0c6 Auto-detect the actual Morrowind assets path (Fixes #4336) 2018-03-23 23:52:08 +03:00
Thunderforge f41a4bb937 Changing "New Installation" to "Retail CD/DVD" for clarity 2017-08-09 00:20:49 -05:00
Allofich 3420121c3f Fix shadowing warnings 2016-11-13 23:20:51 +09:00
Allofich 125e94ef0e Fix shadowing warnings 2016-10-31 00:39:31 +09:00
scrawl 2ffcc2a2b4 Fix incorrect path encoding handling in debug message 2015-11-26 17:34:22 +01:00
Rohit Nirmal 997347b01e Silence -Wreorder warnings. 2015-04-28 18:48:02 -05:00
dteviot 2ef7fc4e2c Installer work for Windows (Fixes #1621)
1. Correctly reads Windows registry for vanilla MW install location.
2. Populates existing installation page with location of vanilla, when found.
3. On Windows, installer wizard now gets to Import page.
2015-03-15 08:08:55 +13:00
scrawl e0d0997409 Rename omwlauncher -> openmw-launcher, mwiniimport -> openmw-iniimporter 2015-01-31 22:40:38 +01:00
dteviot 05b89be8bf Launcher sets content list to match values in openmw.cfg (Fixes #811)
I took the liberty to add accessor & mutator functions for classes ContentListsGameSettings and LauncherSettings , as existing code can reverse order of entries.
Also replaced some "magic strings" with named constants.
2015-01-10 18:46:47 +13:00
scrawl abf49267ea Unshield include fix 2014-11-23 13:44:03 +01:00
scrawl a8a2b44b0f Don't require libunshield on windows 2014-11-23 00:51:57 +01:00
scrawl 1e06f69d9e Remove the "browse to existing installation" button, now replaced by the wizard
Clean up some debug spam
2014-11-20 22:39:34 +01:00
pvdk 6348af586e Fixed some problems with the launcher and the wizard 2014-05-30 02:12:48 +02:00
pvdk a390dde818 Fixed importing configurations of existing installations 2014-05-29 21:17:49 +02:00
pvdk 2a6a26c0d0 Minor fixes 2014-05-29 21:02:06 +02:00
pvdk aa07a33906 Fixed most of the memory leaks and started working on correctly exiting the thread 2014-04-18 13:17:37 +02:00
pvdk 5d94cb112f Fixed segfault bug due to accessing members of unitialized struct 2014-04-17 02:16:41 +02:00
pvdk 6ed76858d9 Fixed some minor problems with the wizard 2014-04-16 23:59:25 +02:00
pvdk 21c406316f Working on the Settings tab: start the importer/wizard 2014-04-16 16:54:55 +02:00
pvdk 10d2ca82f7 Implemented a simple logger 2014-03-30 22:58:50 +02:00
pvdk ae5f783a16 Added some eye-candy to the wizard: a watermark and a placeholder icon 2014-03-17 17:50:51 +01:00