diff --git a/Directory.Packages.props b/Directory.Packages.props index 9136d9c3..6958aab9 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -45,25 +45,25 @@ 17.9.0 - [0.43.3] + [0.44] - [0.43.3] + [0.44] - [0.43.3] + [0.44] - [0.43.3] + [0.44] - [0.43.3] + [0.44] - [0.43.3] + [0.44] - [0.43.3] + [0.44] 13.0.3 diff --git a/Mutagen.Bethesda.Synthesis/CLI/RunSynthesisMutagenPatcher.cs b/Mutagen.Bethesda.Synthesis/CLI/RunSynthesisMutagenPatcher.cs index 807fc68a..96c9202a 100644 --- a/Mutagen.Bethesda.Synthesis/CLI/RunSynthesisMutagenPatcher.cs +++ b/Mutagen.Bethesda.Synthesis/CLI/RunSynthesisMutagenPatcher.cs @@ -1,5 +1,6 @@ using CommandLine; using Mutagen.Bethesda.Strings; +using Synthesis.Bethesda; namespace Mutagen.Bethesda.Synthesis.CLI; @@ -51,6 +52,12 @@ public class RunSynthesisMutagenPatcher [Option("UseUtf8ForEmbeddedStrings", Required = false, HelpText = "Use UTF8 encoding when reading/writing localizable mod strings that are embedded")] public bool UseUtf8ForEmbeddedStrings { get; set; } + [Option("HeaderVersionOverride", Required = false, HelpText = "Whether to override the header version when making a new mod object")] + public float? HeaderVersionOverride { get; set; } + + [Option("FormIDRangeMode", Required = false, HelpText = "Whether to override the header version when making a new mod object")] + public FormIDRangeMode FormIDRangeMode { get; set; } + public override string ToString() { return $"{nameof(RunSynthesisMutagenPatcher)} => \n" @@ -68,6 +75,8 @@ public override string ToString() + $" {nameof(TargetLanguage)} => {TargetLanguage}\n" + $" {nameof(Localize)} => {Localize}\n" + $" {nameof(ModKey)} => {ModKey}\n" + + $" {nameof(HeaderVersionOverride)} => {HeaderVersionOverride}\n" + + $" {nameof(FormIDRangeMode)} => {FormIDRangeMode}\n" + $" {nameof(UseUtf8ForEmbeddedStrings)} => {UseUtf8ForEmbeddedStrings}"; } } \ No newline at end of file diff --git a/Mutagen.Bethesda.Synthesis/Pipeline/SynthesisPipeline.cs b/Mutagen.Bethesda.Synthesis/Pipeline/SynthesisPipeline.cs index a29e8686..bd780416 100644 --- a/Mutagen.Bethesda.Synthesis/Pipeline/SynthesisPipeline.cs +++ b/Mutagen.Bethesda.Synthesis/Pipeline/SynthesisPipeline.cs @@ -786,7 +786,7 @@ public void Patch( #endregion private BinaryWriteParameters GetWriteParams(RunSynthesisMutagenPatcher args, IEnumerable loadOrder) - { + { return new BinaryWriteParameters() { ModKey = ModKeyOption.NoCheck, @@ -794,7 +794,9 @@ private BinaryWriteParameters GetWriteParams(RunSynthesisMutagenPatcher args, IE TargetLanguageOverride = args.TargetLanguage, Encodings = args.UseUtf8ForEmbeddedStrings ? new EncodingBundle(NonTranslated: MutagenEncoding._1252, NonLocalized: MutagenEncoding._utf8) - : null + : null, + LowerRangeDisallowedHandler = ALowerRangeDisallowedHandlerOption.AddPlaceholder(loadOrder), + MinimumFormID = AMinimumFormIdOption.Force(args.FormIDRangeMode.ToForceBool()) }; } @@ -856,7 +858,9 @@ private static RunSynthesisMutagenPatcher GetDefaultRun( InternalDataFolder = LocateInternalData(fileSystem), TargetLanguage = extraParameters.TargetLanguage, Localize = extraParameters.Localize, - UseUtf8ForEmbeddedStrings = extraParameters.UseUtf8ForEmbeddedStrings + UseUtf8ForEmbeddedStrings = extraParameters.UseUtf8ForEmbeddedStrings, + FormIDRangeMode = extraParameters.FormIDRangeMode, + HeaderVersionOverride = extraParameters.HeaderVersionOverride, }; } diff --git a/Mutagen.Bethesda.Synthesis/Pipeline/TypicalOpenExtraParameters.cs b/Mutagen.Bethesda.Synthesis/Pipeline/TypicalOpenExtraParameters.cs index 6d20d8ed..37434f48 100644 --- a/Mutagen.Bethesda.Synthesis/Pipeline/TypicalOpenExtraParameters.cs +++ b/Mutagen.Bethesda.Synthesis/Pipeline/TypicalOpenExtraParameters.cs @@ -1,5 +1,5 @@ -using System.IO.Abstractions; using Mutagen.Bethesda.Strings; +using Synthesis.Bethesda; namespace Mutagen.Bethesda.Synthesis.Pipeline; @@ -8,4 +8,6 @@ public record TypicalOpenExtraParameters public Language TargetLanguage { get; init; } = Language.English; public bool Localize { get; init; } public bool UseUtf8ForEmbeddedStrings { get; init; } + public float? HeaderVersionOverride { get; init; } + public FormIDRangeMode FormIDRangeMode { get; init; } } \ No newline at end of file diff --git a/Mutagen.Bethesda.Synthesis/States/DI/PatcherStateFactory.cs b/Mutagen.Bethesda.Synthesis/States/DI/PatcherStateFactory.cs index 6dbcd576..f6a71980 100644 --- a/Mutagen.Bethesda.Synthesis/States/DI/PatcherStateFactory.cs +++ b/Mutagen.Bethesda.Synthesis/States/DI/PatcherStateFactory.cs @@ -1,4 +1,4 @@ -using System.IO.Abstractions; +using System.IO.Abstractions; using Mutagen.Bethesda.Plugins; using Mutagen.Bethesda.Plugins.Allocators; using Mutagen.Bethesda.Plugins.Cache; @@ -8,6 +8,7 @@ using Mutagen.Bethesda.Strings; using Mutagen.Bethesda.Strings.DI; using Mutagen.Bethesda.Synthesis.CLI; +using Synthesis.Bethesda; namespace Mutagen.Bethesda.Synthesis.States.DI; @@ -118,7 +119,26 @@ public SynthesisState ToState(Ru { if (settings.SourcePath == null) { - patchMod = ModInstantiator.Activator(exportKey, settings.GameRelease); + Console.WriteLine("Creating new mod:"); + Console.WriteLine($" ModKey: {exportKey}"); + Console.WriteLine($" GameRelease: {settings.GameRelease}"); + if (settings.HeaderVersionOverride != null) + { + Console.WriteLine($" HeaderVersion: {settings.HeaderVersionOverride}"); + } + + var forceFormIdLowerRange = settings.FormIDRangeMode.ToForceBool(); + + if (forceFormIdLowerRange != null) + { + Console.WriteLine($" Force FormID Lower Range: {forceFormIdLowerRange}"); + } + patchMod = ModInstantiator.Activator( + exportKey, + settings.GameRelease, + headerVersion: settings.HeaderVersionOverride, + forceUseLowerFormIDRanges: forceFormIdLowerRange); + Console.WriteLine($" Next FormID: {patchMod.NextFormID}"); } else { diff --git a/Synthesis.Bethesda.CLI/RunPipeline/RunPatcherPipeline.cs b/Synthesis.Bethesda.CLI/RunPipeline/RunPatcherPipeline.cs index d8caf262..dc7133e6 100644 --- a/Synthesis.Bethesda.CLI/RunPipeline/RunPatcherPipeline.cs +++ b/Synthesis.Bethesda.CLI/RunPipeline/RunPatcherPipeline.cs @@ -1,4 +1,4 @@ -using Synthesis.Bethesda.Execution.Commands; +using Synthesis.Bethesda.Execution.Commands; using Synthesis.Bethesda.Execution.Running.Runner; using Synthesis.Bethesda.Execution.Settings; @@ -40,6 +40,8 @@ await ExecuteRun TargetLanguage: ProfileSettings.TargetLanguage, Localize: ProfileSettings.Localize, UseUtf8ForEmbeddedStrings: ProfileSettings.UseUtf8ForEmbeddedStrings, + HeaderVersionOverride: ProfileSettings.HeaderVersionOverride, + FormIDRangeMode: ProfileSettings.FormIDRangeMode, PersistenceMode: Instructions.PersistenceMode ?? PersistenceMode.None, PersistencePath: Instructions.PersistencePath)).ConfigureAwait(false); } diff --git a/Synthesis.Bethesda.Execution/Patchers/Running/Cli/GenericSettingsToMutagenSettings.cs b/Synthesis.Bethesda.Execution/Patchers/Running/Cli/GenericSettingsToMutagenSettings.cs index 134968d5..9e4dd8c9 100644 --- a/Synthesis.Bethesda.Execution/Patchers/Running/Cli/GenericSettingsToMutagenSettings.cs +++ b/Synthesis.Bethesda.Execution/Patchers/Running/Cli/GenericSettingsToMutagenSettings.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using Mutagen.Bethesda.Strings; using Mutagen.Bethesda.Synthesis.CLI; using Synthesis.Bethesda.Commands; @@ -37,7 +37,9 @@ public RunSynthesisMutagenPatcher Convert(RunSynthesisPatcher settings) Localize = settings.Localize, TargetLanguage = Enum.Parse(settings.TargetLanguage), ModKey = settings.ModKey, - UseUtf8ForEmbeddedStrings = settings.UseUtf8ForEmbeddedStrings + UseUtf8ForEmbeddedStrings = settings.UseUtf8ForEmbeddedStrings, + FormIDRangeMode = settings.FormIDRangeMode, + HeaderVersionOverride = settings.HeaderVersionOverride, }; } } \ No newline at end of file diff --git a/Synthesis.Bethesda.Execution/Patchers/Running/Solution/ConstructSolutionPatcherRunArgs.cs b/Synthesis.Bethesda.Execution/Patchers/Running/Solution/ConstructSolutionPatcherRunArgs.cs index d70af4b6..6493db7d 100644 --- a/Synthesis.Bethesda.Execution/Patchers/Running/Solution/ConstructSolutionPatcherRunArgs.cs +++ b/Synthesis.Bethesda.Execution/Patchers/Running/Solution/ConstructSolutionPatcherRunArgs.cs @@ -1,4 +1,4 @@ -using System.IO.Abstractions; +using System.IO.Abstractions; using Mutagen.Bethesda.Strings; using Mutagen.Bethesda.Synthesis.CLI; using Synthesis.Bethesda.Commands; @@ -50,7 +50,9 @@ public RunSynthesisMutagenPatcher Construct(RunSynthesisPatcher settings) TargetLanguage = Enum.Parse(settings.TargetLanguage), Localize = settings.Localize, ModKey = settings.ModKey, - UseUtf8ForEmbeddedStrings = settings.UseUtf8ForEmbeddedStrings + UseUtf8ForEmbeddedStrings = settings.UseUtf8ForEmbeddedStrings, + HeaderVersionOverride = settings.HeaderVersionOverride, + FormIDRangeMode = settings.FormIDRangeMode, }; } } \ No newline at end of file diff --git a/Synthesis.Bethesda.Execution/Patchers/Running/Solution/SolutionPatcherPrep.cs b/Synthesis.Bethesda.Execution/Patchers/Running/Solution/SolutionPatcherPrep.cs index e23fc485..56e2d315 100644 --- a/Synthesis.Bethesda.Execution/Patchers/Running/Solution/SolutionPatcherPrep.cs +++ b/Synthesis.Bethesda.Execution/Patchers/Running/Solution/SolutionPatcherPrep.cs @@ -1,4 +1,4 @@ -using Serilog; +using Serilog; using Synthesis.Bethesda.Execution.DotNet.Builder; using Synthesis.Bethesda.Execution.Patchers.Solution; @@ -33,7 +33,7 @@ public async Task Prep(CancellationToken cancel) await Task.WhenAll( Task.Run(async () => { - _logger.Information("Compiling"); + _logger.Information("Compiling solution {Path}", PathToProjProvider.Path); try { var resp = await Build.Compile(PathToProjProvider.Path, cancel).ConfigureAwait(false); @@ -41,11 +41,11 @@ await Task.WhenAll( { throw new SynthesisBuildFailure(resp.Reason); } - _logger.Information("Compiled"); + _logger.Information("Compiled solution {Path}", PathToProjProvider.Path); } catch (Exception e) { - _logger.Error(e, "Failed to compile"); + _logger.Error(e, $"Failed to compile solution {PathToProjProvider.Path}"); throw; } }), diff --git a/Synthesis.Bethesda.Execution/Running/Runner/RunArgsConstructor.cs b/Synthesis.Bethesda.Execution/Running/Runner/RunArgsConstructor.cs index f4447586..d7326770 100644 --- a/Synthesis.Bethesda.Execution/Running/Runner/RunArgsConstructor.cs +++ b/Synthesis.Bethesda.Execution/Running/Runner/RunArgsConstructor.cs @@ -1,4 +1,4 @@ -using Mutagen.Bethesda.Environments.DI; +using Mutagen.Bethesda.Environments.DI; using Noggog; using Synthesis.Bethesda.Commands; using Synthesis.Bethesda.Execution.Groups; @@ -68,7 +68,9 @@ public RunSynthesisPatcher GetArgs( PersistencePath = runParameters.PersistenceMode == PersistenceMode.None ? null : runParameters.PersistencePath, PatcherName = fileName, ModKey = groupRun.ModKey.FileName, - UseUtf8ForEmbeddedStrings = runParameters.UseUtf8ForEmbeddedStrings + UseUtf8ForEmbeddedStrings = runParameters.UseUtf8ForEmbeddedStrings, + HeaderVersionOverride = runParameters.HeaderVersionOverride, + FormIDRangeMode = runParameters.FormIDRangeMode, }; } } \ No newline at end of file diff --git a/Synthesis.Bethesda.Execution/Running/Runner/RunParameters.cs b/Synthesis.Bethesda.Execution/Running/Runner/RunParameters.cs index 65790541..5afdd956 100644 --- a/Synthesis.Bethesda.Execution/Running/Runner/RunParameters.cs +++ b/Synthesis.Bethesda.Execution/Running/Runner/RunParameters.cs @@ -1,4 +1,4 @@ -using Mutagen.Bethesda.Strings; +using Mutagen.Bethesda.Strings; using Synthesis.Bethesda.Execution.Settings; namespace Synthesis.Bethesda.Execution.Running.Runner; @@ -7,5 +7,7 @@ public record RunParameters( Language TargetLanguage, bool Localize, bool UseUtf8ForEmbeddedStrings, + float? HeaderVersionOverride, + FormIDRangeMode FormIDRangeMode, PersistenceMode PersistenceMode, string? PersistencePath); \ No newline at end of file diff --git a/Synthesis.Bethesda.Execution/Settings/FormIDRangeMode.cs b/Synthesis.Bethesda.Execution/Settings/FormIDRangeMode.cs new file mode 100644 index 00000000..4a9e684b --- /dev/null +++ b/Synthesis.Bethesda.Execution/Settings/FormIDRangeMode.cs @@ -0,0 +1,6 @@ +public enum FormIDRangeMode +{ + Auto = 1, + Off = 2, + On = 3, +} diff --git a/Synthesis.Bethesda.Execution/Settings/ISynthesisProfileSettings.cs b/Synthesis.Bethesda.Execution/Settings/ISynthesisProfileSettings.cs index d5c3d7f7..88484f38 100644 --- a/Synthesis.Bethesda.Execution/Settings/ISynthesisProfileSettings.cs +++ b/Synthesis.Bethesda.Execution/Settings/ISynthesisProfileSettings.cs @@ -1,4 +1,4 @@ -using Mutagen.Bethesda; +using Mutagen.Bethesda; using Mutagen.Bethesda.Strings; using Synthesis.Bethesda.Execution.Profile; using Synthesis.Bethesda.Execution.Settings.V2; @@ -23,4 +23,6 @@ public interface ISynthesisProfileSettings : IProfileIdentifier bool Localize { get; set; } Language TargetLanguage { get; set; } public bool UseUtf8ForEmbeddedStrings { get; set; } + public FormIDRangeMode FormIDRangeMode { get; set; } + public float? HeaderVersionOverride { get; set; } } \ No newline at end of file diff --git a/Synthesis.Bethesda.Execution/Settings/V2/SynthesisProfile.cs b/Synthesis.Bethesda.Execution/Settings/V2/SynthesisProfile.cs index 06a4118e..71220c71 100644 --- a/Synthesis.Bethesda.Execution/Settings/V2/SynthesisProfile.cs +++ b/Synthesis.Bethesda.Execution/Settings/V2/SynthesisProfile.cs @@ -26,4 +26,6 @@ public class SynthesisProfile : ISynthesisProfileSettings GameRelease IGameReleaseContext.Release => TargetRelease; public bool UseUtf8ForEmbeddedStrings { get; set; } + public FormIDRangeMode FormIDRangeMode { get; set; } = FormIDRangeMode.Auto; + public float? HeaderVersionOverride { get; set; } } \ No newline at end of file diff --git a/Synthesis.Bethesda.GUI/Services/Main/ProfileFactory.cs b/Synthesis.Bethesda.GUI/Services/Main/ProfileFactory.cs index 887a6ce9..35c67339 100644 --- a/Synthesis.Bethesda.GUI/Services/Main/ProfileFactory.cs +++ b/Synthesis.Bethesda.GUI/Services/Main/ProfileFactory.cs @@ -69,6 +69,8 @@ public ProfileVm Get(ISynthesisProfileSettings settings) profile.TargetLanguage = settings.TargetLanguage; profile.Localize = settings.Localize; profile.UseUtf8InEmbedded = settings.UseUtf8ForEmbeddedStrings; + profile.FormIDRangeMode = settings.FormIDRangeMode; + profile.HeaderVersionOverride = settings.HeaderVersionOverride; profile.Groups.AddRange(settings.Groups.Select(x => factory.Get(x))); diff --git a/Synthesis.Bethesda.GUI/Services/Patchers/Git/CompilationProvider.cs b/Synthesis.Bethesda.GUI/Services/Patchers/Git/CompilationProvider.cs index 049629d4..24776e3a 100644 --- a/Synthesis.Bethesda.GUI/Services/Patchers/Git/CompilationProvider.cs +++ b/Synthesis.Bethesda.GUI/Services/Patchers/Git/CompilationProvider.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; using System.Reactive.Linq; using Noggog; using ReactiveUI; @@ -41,7 +41,7 @@ public CompilationProvider( try { - logger.Information("Compiling"); + logger.Information("Compiling {Target}", state.Item); // Return early with the values, but mark not complete observer.OnNext(new ConfigurationState(state.Item) { @@ -53,7 +53,7 @@ public CompilationProvider( var compileResp = await build.Compile(state.Item, cancel).ConfigureAwait(false); if (compileResp.Failed) { - logger.Information("Compiling failed: {Reason}", compileResp.Reason); + logger.Information("Compiling {Target} failed: {Reason}", state.Item, compileResp.Reason); var errs = new List(); printErrorMessage.Print(compileResp.Reason, $"{Path.GetDirectoryName(state.Item.Project.ProjPath)}\\", (s, _) => @@ -66,7 +66,7 @@ public CompilationProvider( } // Return things again, without error - logger.Information("Finished compiling"); + logger.Information("Finished compiling {Target}", state.Item); observer.OnNext(state); } catch (Exception ex) diff --git a/Synthesis.Bethesda.GUI/Services/Profile/Running/ExecuteGuiRun.cs b/Synthesis.Bethesda.GUI/Services/Profile/Running/ExecuteGuiRun.cs index 4b4fcd06..641249fb 100644 --- a/Synthesis.Bethesda.GUI/Services/Profile/Running/ExecuteGuiRun.cs +++ b/Synthesis.Bethesda.GUI/Services/Profile/Running/ExecuteGuiRun.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; using Mutagen.Bethesda.Environments.DI; using Mutagen.Bethesda.Strings; using Synthesis.Bethesda.Execution.Groups; @@ -15,6 +15,8 @@ Task Run( PersistenceMode persistenceMode, bool localize, bool utf8InEmbeddedStrings, + float? headerVersionOverride, + FormIDRangeMode formIDRangeMode, Language targetLanguage, CancellationToken cancel); } @@ -40,6 +42,8 @@ public async Task Run( PersistenceMode persistenceMode, bool localize, bool utf8InEmbeddedStrings, + float? headerVersionOverride, + FormIDRangeMode formIDRangeMode, Language targetLanguage, CancellationToken cancel) { @@ -52,6 +56,8 @@ await _executeRun.Run( TargetLanguage: targetLanguage, Localize: localize, UseUtf8ForEmbeddedStrings: utf8InEmbeddedStrings, + FormIDRangeMode: formIDRangeMode, + HeaderVersionOverride: headerVersionOverride, PersistenceMode: persistenceMode, PersistencePath: Path.Combine(_profileDirectories.ProfileDirectory, "Persistence"))).ConfigureAwait(false); } diff --git a/Synthesis.Bethesda.GUI/ViewModels/Profiles/ProfileDisplayVm.cs b/Synthesis.Bethesda.GUI/ViewModels/Profiles/ProfileDisplayVm.cs index 99d1d6a4..7000b7e1 100644 --- a/Synthesis.Bethesda.GUI/ViewModels/Profiles/ProfileDisplayVm.cs +++ b/Synthesis.Bethesda.GUI/ViewModels/Profiles/ProfileDisplayVm.cs @@ -35,6 +35,8 @@ public class ProfileDisplayVm : ViewModel public ObservableCollectionExtended Languages { get; } = new(Enums.Values); + public ObservableCollectionExtended FormIDRangeModes { get; } = new(Enums.Values); + private readonly ObservableAsPropertyHelper _dataFolderWatermark; public string DataFolderWatermark => _dataFolderWatermark.Value; diff --git a/Synthesis.Bethesda.GUI/ViewModels/Profiles/ProfileVm.cs b/Synthesis.Bethesda.GUI/ViewModels/Profiles/ProfileVm.cs index 7c5120da..997ee115 100644 --- a/Synthesis.Bethesda.GUI/ViewModels/Profiles/ProfileVm.cs +++ b/Synthesis.Bethesda.GUI/ViewModels/Profiles/ProfileVm.cs @@ -106,10 +106,16 @@ public class ProfileVm : ViewModel [Reactive] public Language TargetLanguage { get; set; } - + [Reactive] public bool UseUtf8InEmbedded { get; set; } + [Reactive] + public FormIDRangeMode FormIDRangeMode { get; set; } = FormIDRangeMode.Auto; + + [Reactive] + public float? HeaderVersionOverride { get; set; } + public IEnvironmentErrorsVm EnvironmentErrors { get; } public ProfileVm( @@ -412,7 +418,9 @@ public SynthesisProfile Save() IgnoreMissingMods = IgnoreMissingMods, Localize = Localize, TargetLanguage = TargetLanguage, - UseUtf8ForEmbeddedStrings = UseUtf8InEmbedded + UseUtf8ForEmbeddedStrings = UseUtf8InEmbedded, + FormIDRangeMode = FormIDRangeMode, + HeaderVersionOverride = HeaderVersionOverride }; } diff --git a/Synthesis.Bethesda.GUI/ViewModels/Profiles/Running/RunVm.cs b/Synthesis.Bethesda.GUI/ViewModels/Profiles/Running/RunVm.cs index a0eec0a8..b2182543 100644 --- a/Synthesis.Bethesda.GUI/ViewModels/Profiles/Running/RunVm.cs +++ b/Synthesis.Bethesda.GUI/ViewModels/Profiles/Running/RunVm.cs @@ -211,6 +211,8 @@ await _executeRun.Run( persistenceMode: RunningProfile.SelectedPersistenceMode, localize: RunningProfile.Localize, utf8InEmbeddedStrings: RunningProfile.UseUtf8InEmbedded, + headerVersionOverride: RunningProfile.HeaderVersionOverride, + formIDRangeMode: RunningProfile.FormIDRangeMode, targetLanguage: RunningProfile.TargetLanguage, cancel: _cancel.Token).ConfigureAwait(false); } diff --git a/Synthesis.Bethesda.GUI/Views/Profiles/ProfileDetailView.xaml b/Synthesis.Bethesda.GUI/Views/Profiles/ProfileDetailView.xaml index 6a76dfdf..e59979f0 100644 --- a/Synthesis.Bethesda.GUI/Views/Profiles/ProfileDetailView.xaml +++ b/Synthesis.Bethesda.GUI/Views/Profiles/ProfileDetailView.xaml @@ -10,6 +10,7 @@ xmlns:muta="clr-namespace:Mutagen.Bethesda;assembly=Mutagen.Bethesda.Kernel" xmlns:wpf="clr-namespace:Noggog.WPF;assembly=Noggog.WPF" xmlns:profiles="clr-namespace:Synthesis.Bethesda.GUI.ViewModels.Profiles" + xmlns:xwpf="http://schemas.xceed.com/wpf/xaml/toolkit" d:DesignHeight="450" d:DesignWidth="800" mc:Ignorable="d"> @@ -50,6 +51,7 @@ + @@ -203,6 +205,44 @@ ToolTip="Location of your data folder. Default setting is to locate it automatically." /> + + + + + + + + + + + + + + + + + + @@ -217,7 +257,7 @@ ItemsSource="{Binding PersistenceModes}" ToolTip="What type of persistence system to use for keeping FormIDs in sync" /> - + @@ -243,7 +283,7 @@ Margin="10,8,0,0" ToolTip="Use UTF8 encoding when reading/writing localizable mod strings that are embedded" /> - + @@ -258,7 +298,7 @@ Content="Ignore Missing Mods" ToolTip="Whether to allow pipeline execution even if there are missing mods" /> - -