diff --git a/src/Languages/lang_en.json b/src/Languages/lang_en.json index 295507dc9e..8cb4693f04 100644 --- a/src/Languages/lang_en.json +++ b/src/Languages/lang_en.json @@ -112,6 +112,8 @@ "Custom install arguments:": "Custom install arguments:", "Custom update arguments:": "Custom update arguments:", "Custom uninstall arguments:": "Custom uninstall arguments:", + "These fields are independent: an argument set for Install won't apply to Update or Uninstall, and vice versa.": "These fields are independent: an argument set for Install won't apply to Update or Uninstall, and vice versa.", + "Copy install arguments to update and uninstall": "Copy install arguments to update and uninstall", "Pre-install command:": "Pre-install command:", "Post-install command:": "Post-install command:", "Abort install if pre-install command fails": "Abort install if pre-install command fails", diff --git a/src/UniGetUI.Avalonia/ViewModels/DialogPages/InstallOptionsViewModel.cs b/src/UniGetUI.Avalonia/ViewModels/DialogPages/InstallOptionsViewModel.cs index 58f1d6bfbf..71c945376e 100644 --- a/src/UniGetUI.Avalonia/ViewModels/DialogPages/InstallOptionsViewModel.cs +++ b/src/UniGetUI.Avalonia/ViewModels/DialogPages/InstallOptionsViewModel.cs @@ -45,6 +45,8 @@ public partial class InstallOptionsViewModel : ObservableObject public string ParamsInstallLabel { get; } = CoreTools.Translate("Custom install arguments:"); public string ParamsUpdateLabel { get; } = CoreTools.Translate("Custom update arguments:"); public string ParamsUninstallLabel { get; } = CoreTools.Translate("Custom uninstall arguments:"); + public string CliArgsHintLabel { get; } = CoreTools.Translate("These fields are independent: an argument set for Install won't apply to Update or Uninstall, and vice versa."); + public string CopyInstallArgsLabel { get; } = CoreTools.Translate("Copy install arguments to update and uninstall"); public string PreInstallLabel { get; } = CoreTools.Translate("Pre-install command:"); public string PostInstallLabel { get; } = CoreTools.Translate("Post-install command:"); public string AbortInstallLabel { get; } = CoreTools.Translate("Abort install if pre-install command fails"); @@ -363,6 +365,13 @@ private void Proceed() [RelayCommand] private void ResetLocation() => LocationText = ""; + [RelayCommand] + private void CopyInstallArgsToOthers() + { + ParamsUpdate = ParamsInstall; + ParamsUninstall = ParamsInstall; + } + /// Unlocks the options by turning off "follow default options" (matches WinUI). [RelayCommand] private void Unlock() => FollowGlobal = false; diff --git a/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/InstallOptionsPanelViewModel.cs b/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/InstallOptionsPanelViewModel.cs index 33a5bae1cd..9f145aa667 100644 --- a/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/InstallOptionsPanelViewModel.cs +++ b/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/InstallOptionsPanelViewModel.cs @@ -77,6 +77,8 @@ public partial class InstallOptionsPanelViewModel : ViewModelBase public string InstallArgsLabel { get; } = CoreTools.Translate("Custom install arguments:"); public string UpdateArgsLabel { get; } = CoreTools.Translate("Custom update arguments:"); public string UninstallArgsLabel { get; } = CoreTools.Translate("Custom uninstall arguments:"); + public string CliArgsHintLabel { get; } = CoreTools.Translate("These fields are independent: an argument set for Install won't apply to Update or Uninstall, and vice versa."); + public string CopyInstallArgsLabel { get; } = CoreTools.Translate("Copy install arguments to update and uninstall"); public string ResetLabel { get; } = CoreTools.Translate("Reset"); public string ApplyLabel { get; } = CoreTools.Translate("Apply"); public string CliDisabledLabel { get; } = CoreTools.Translate("For security reasons, custom command-line arguments are disabled by default. Go to UniGetUI security settings to change this."); @@ -284,6 +286,16 @@ private void ResetLocation() private void NavigateToAdministrator() => NavigateToAdministratorRequested?.Invoke(this, EventArgs.Empty); + // ── CLI args convenience ───────────────────────────────────────────────── + + [RelayCommand] + private void CopyInstallArgsToOthers() + { + CustomUpdate = CustomInstall; + CustomUninstall = CustomInstall; + HasChanges = true; + } + // ── Mark changed ───────────────────────────────────────────────────────── public void MarkChanged() => HasChanges = true; diff --git a/src/UniGetUI.Avalonia/Views/DialogPages/InstallOptionsControl.axaml b/src/UniGetUI.Avalonia/Views/DialogPages/InstallOptionsControl.axaml index 84d7301625..1a921642eb 100644 --- a/src/UniGetUI.Avalonia/Views/DialogPages/InstallOptionsControl.axaml +++ b/src/UniGetUI.Avalonia/Views/DialogPages/InstallOptionsControl.axaml @@ -259,6 +259,12 @@ Command="{Binding GoToSecuritySettingsCommand}" HorizontalAlignment="Left" Padding="0" FontWeight="SemiBold"/> + + + + diff --git a/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/InstallOptionsPanel.axaml b/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/InstallOptionsPanel.axaml index afbca87738..81c0297304 100644 --- a/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/InstallOptionsPanel.axaml +++ b/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/InstallOptionsPanel.axaml @@ -159,11 +159,17 @@ + + Margin="0,4,0,0"> + + diff --git a/src/UniGetUI.PackageEngine.Operations/PackageOperations.cs b/src/UniGetUI.PackageEngine.Operations/PackageOperations.cs index bc9ea2524b..ae369b13f7 100644 --- a/src/UniGetUI.PackageEngine.Operations/PackageOperations.cs +++ b/src/UniGetUI.PackageEngine.Operations/PackageOperations.cs @@ -436,7 +436,7 @@ protected override void Initialize() + Package.Id + " with Manager=" + Package.Manager.Name - + "\nInstallation options: " + + "\nUpdate options: " + Options.ToString() + "\nOverriden options: " + Package.OverridenOptions.ToString() @@ -508,7 +508,7 @@ protected override void Initialize() + Package.Id + " with Manager=" + Package.Manager.Name - + "\nInstallation options: " + + "\nUninstall options: " + Options.ToString() + "\nOverriden options: " + Package.OverridenOptions.ToString();