Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion NAPS2.Lib/Config/Naps2Config.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,20 +25,22 @@ public static Naps2Config Stub() =>
ConfigScope.Memory<CommonConfig>(),
ConfigScope.Defaults(InternalDefaults.GetCommonConfig()));

public Naps2Config(string appConfigPath, string userConfigPath)
public Naps2Config(string appConfigPath, string userConfigPath, string? userConfigName = null)
{
AppLocked = ConfigScope.File(appConfigPath,
new ConfigSerializer(ConfigReadMode.LockedOnly, ConfigRootName.AppConfig),
ConfigScopeMode.ReadOnly);
Run = ConfigScope.Memory<CommonConfig>();
User = ConfigScope.File(userConfigPath, new ConfigSerializer(ConfigReadMode.All, ConfigRootName.UserConfig),
ConfigScopeMode.ReadWrite);
UserConfigName = userConfigName;
AppDefault = ConfigScope.File(appConfigPath,
new ConfigSerializer(ConfigReadMode.DefaultOnly, ConfigRootName.AppConfig),
ConfigScopeMode.ReadOnly);
InternalDefault = ConfigScope.Defaults(InternalDefaults.GetCommonConfig());

Scopes = new[] { AppLocked, Run, User, AppDefault, InternalDefault };
UserConfigName = userConfigName;
}

public Naps2Config(ConfigScope<CommonConfig> appLocked, ConfigScope<CommonConfig> run,
Expand Down Expand Up @@ -87,4 +89,6 @@ public Naps2Config WithTransaction(params TransactionConfigScope<CommonConfig>[]
public ConfigScope<CommonConfig> User { get; }
public ConfigScope<CommonConfig> AppDefault { get; }
public ConfigScope<CommonConfig> InternalDefault { get; }

public string? UserConfigName { get; }
}
2 changes: 2 additions & 0 deletions NAPS2.Lib/EtoForms/Ui/DesktopForm.cs
Original file line number Diff line number Diff line change
Expand Up @@ -575,6 +575,8 @@ public void EditWithAppChanged()
protected virtual void UpdateTitle(ScanProfile? defaultProfile)
{
Title = string.Format(UiStrings.Naps2TitleFormat, defaultProfile?.DisplayName ?? UiStrings.Naps2FullName);
if (Config.UserConfigName != null)
Title += " (" + Config.UserConfigName + ")";
}

private void ListViewMouseWheel(object? sender, MouseEventArgs e)
Expand Down
23 changes: 22 additions & 1 deletion NAPS2.Lib/Modules/CommonModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,30 @@ protected override void Load(ContainerBuilder builder)
builder.RegisterType<WorkerScanBridge>().AsSelf();

// Config
string configFileName = "config";
string? configName = null; // Default: standard config file
// Config file suffix specified via command line argument?
string? configFileOption = Environment.GetCommandLineArgs()
.FirstOrDefault(s => s.ToLower().StartsWith("/config="));
if (configFileOption != null)
{
configName = configFileOption.Substring("/config=".Length).Trim();
if (configName == "")
configName = null;
else
{
if (Path.GetInvalidFileNameChars().Any(configName.Contains))
configName = null;
else
configFileName += "_" + configName;
}
}
configFileName += ".xml";

// TODO: Make this a usable path on Mac/Linux
var config = new Naps2Config(Path.Combine(Paths.Executable, "appsettings.xml"),
Path.Combine(Paths.AppData, "config.xml"));
Path.Combine(Paths.AppData, configFileName),
configName); // Remember optional config name
builder.RegisterInstance(config);
builder.RegisterBuildCallback(ctx =>
{
Expand Down