• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ParadoxGameConverters / Fronter.NET / 21217561952

21 Jan 2026 04:33PM UTC coverage: 23.05% (+0.07%) from 22.977%
21217561952

push

github

web-flow
Target playset selection (#426)

* TargetPlaysetPickerView

* TargetPlaylist class

* TargetDbManager

* Button for reloading the mods

* selectedPlaysetID

* TargetPlayset was an unneed wrap

* styling

* cleanup

* Post-merge fixes

* Log selected playset change

* Write the selected playset's mods to configuration.txt

* Add margin to SELECT_PLAYSET_INFO TextBlock

* Add blank option to target playset picker

* Load selectedPlayset from configuration.txt

144 of 774 branches covered (18.6%)

Branch coverage included in aggregate %.

28 of 147 new or added lines in 9 files covered. (19.05%)

7 existing lines in 1 file now uncovered.

728 of 3009 relevant lines covered (24.19%)

8.83 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

51.22
/Fronter.NET/Models/Configuration/RequiredFolder.cs
1
using Avalonia.Data;
2
using commonItems;
3
using Fronter.Extensions;
4
using log4net;
5
using System;
6
using System.IO;
7

8
namespace Fronter.Models.Configuration;
9

10
internal sealed class RequiredFolder : RequiredPath {
11
        private static readonly ILog logger = LogManager.GetLogger("Required folder");
×
12
        public RequiredFolder(BufferedReader reader, Config config) {
48✔
13
                this.config = config;
24✔
14

15
                var parser = new Parser();
24✔
16
                RegisterKeys(parser);
24✔
17
                parser.ParseStream(reader);
24✔
18
        }
24✔
19
        private void RegisterKeys(Parser parser) {
24✔
20
                parser.RegisterKeyword("name", reader => Name = reader.GetString());
48✔
21
                parser.RegisterKeyword("tooltip", reader => Tooltip = reader.GetString());
48✔
22
                parser.RegisterKeyword("displayName", reader => DisplayName = reader.GetString());
48✔
23
                parser.RegisterKeyword("mandatory", reader => Mandatory = reader.GetString().Equals("true", StringComparison.OrdinalIgnoreCase));
48✔
24
                parser.RegisterKeyword("outputtable", reader => Outputtable = reader.GetString().Equals("true", StringComparison.OrdinalIgnoreCase));
24✔
25

26
                parser.RegisterKeyword("searchPathType", reader => SearchPathType = reader.GetString());
48✔
27
                parser.RegisterKeyword("steamGameID", reader => SteamGameId = reader.GetString());
36✔
28
                parser.RegisterKeyword("gogGameID", reader => GOGGameId = reader.GetString());
30✔
29
                parser.RegisterKeyword("searchPath", reader => SearchPath = reader.GetString());
36✔
30
                parser.IgnoreAndLogUnregisteredItems();
24✔
31
        }
24✔
32

33
        // If we have folders listed, they are generally required. Override with false in conf file.
34
        public override bool Outputtable { get; protected set; } = true;
24✔
35

36
        public string? SteamGameId { get; private set; }
13✔
37
        public string? GOGGameId { get; private set; }
7✔
38

39
        public override string Value {
40
                get => base.Value;
×
41
                set {
×
42
                        if (!string.IsNullOrEmpty(value) && !Directory.Exists(value)) {
×
43
                                throw new DataValidationException("Directory does not exist!");
×
44
                        }
45

46
                        base.Value = value;
×
47
                        logger.Info($"{TranslationSource.Instance[DisplayName]} set to: {value}");
×
48

NEW
49
                        if (config.TargetPlaysetSelectionEnabled
×
NEW
50
                                && Name.Equals("targetGameModPath", StringComparison.OrdinalIgnoreCase)) {
×
NEW
51
                                config.AutoLocatePlaysets();
×
52
                        }
×
53
                }
×
54
        }
55

56
        private readonly Config config;
57
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc