mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-06 19:26:39 +02:00
[CmdPal][Calc] Add option to choose Copy as the primary command (close on enter) (#40398)
## Summary of the Pull Request Adds a new setting that lets users swap Save/Copy as primary/secondary commands. This is done in order to enable closing on enter (similar to PTRun) and therefore saving three extra steps (see issue). Defaults to true - Copy is primary. ## PR Checklist - [x] **Closes:** #40262 - [x] **Communication:** I've discussed this with core contributors already. - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** No, but that's a more general issue (#40397) - [x] **Dev docs:** No need - [x] **New binaries:** None - [x] **Documentation updated:** No need ## Detailed Description of the Pull Request / Additional comments  | On (default) | Off | |--------|--------| |  |  | ## Validation Steps Performed Shown in screenshots --------- Co-authored-by: Mike Griese <migrie@microsoft.com>
This commit is contained in:
@@ -63,7 +63,7 @@ public static partial class QueryHelper
|
|||||||
return ResultHelper.CreateResult(result.RoundedResult, inputCulture, outputCulture, query);
|
return ResultHelper.CreateResult(result.RoundedResult, inputCulture, outputCulture, query);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ResultHelper.CreateResult(result.RoundedResult, inputCulture, outputCulture, query, handleSave);
|
return ResultHelper.CreateResult(result.RoundedResult, inputCulture, outputCulture, query, settings, handleSave);
|
||||||
}
|
}
|
||||||
catch (OverflowException)
|
catch (OverflowException)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ namespace Microsoft.CmdPal.Ext.Calc.Helper;
|
|||||||
|
|
||||||
public static class ResultHelper
|
public static class ResultHelper
|
||||||
{
|
{
|
||||||
public static ListItem CreateResult(decimal? roundedResult, CultureInfo inputCulture, CultureInfo outputCulture, string query, TypedEventHandler<object, object> handleSave)
|
public static ListItem CreateResult(decimal? roundedResult, CultureInfo inputCulture, CultureInfo outputCulture, string query, SettingsManager settings, TypedEventHandler<object, object> handleSave)
|
||||||
{
|
{
|
||||||
// Return null when the expression is not a valid calculator query.
|
// Return null when the expression is not a valid calculator query.
|
||||||
if (roundedResult == null)
|
if (roundedResult == null)
|
||||||
@@ -32,19 +32,14 @@ public static class ResultHelper
|
|||||||
|
|
||||||
// No TextToSuggest on the main save command item. We don't want to keep suggesting what the result is,
|
// No TextToSuggest on the main save command item. We don't want to keep suggesting what the result is,
|
||||||
// as the user is typing it.
|
// as the user is typing it.
|
||||||
return new ListItem(saveCommand)
|
return new ListItem(settings.CloseOnEnter ? copyCommandItem.Command : saveCommand)
|
||||||
{
|
{
|
||||||
// Using CurrentCulture since this is user facing
|
// Using CurrentCulture since this is user facing
|
||||||
Icon = Icons.ResultIcon,
|
Icon = Icons.ResultIcon,
|
||||||
Title = result,
|
Title = result,
|
||||||
Subtitle = query,
|
Subtitle = query,
|
||||||
MoreCommands = [
|
MoreCommands = [
|
||||||
new CommandContextItem(copyCommandItem.Command)
|
new CommandContextItem(settings.CloseOnEnter ? saveCommand : copyCommandItem.Command),
|
||||||
{
|
|
||||||
Icon = copyCommandItem.Icon,
|
|
||||||
Title = copyCommandItem.Title,
|
|
||||||
Subtitle = copyCommandItem.Subtitle,
|
|
||||||
},
|
|
||||||
..copyCommandItem.MoreCommands,
|
..copyCommandItem.MoreCommands,
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -39,6 +39,12 @@ public class SettingsManager : JsonSettingsManager
|
|||||||
Properties.Resources.calculator_settings_out_en_format_description,
|
Properties.Resources.calculator_settings_out_en_format_description,
|
||||||
false);
|
false);
|
||||||
|
|
||||||
|
private readonly ToggleSetting _closeOnEnter = new(
|
||||||
|
Namespaced(nameof(CloseOnEnter)),
|
||||||
|
Properties.Resources.calculator_settings_close_on_enter,
|
||||||
|
Properties.Resources.calculator_settings_close_on_enter_description,
|
||||||
|
true);
|
||||||
|
|
||||||
public CalculateEngine.TrigMode TrigUnit
|
public CalculateEngine.TrigMode TrigUnit
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@@ -73,6 +79,8 @@ public class SettingsManager : JsonSettingsManager
|
|||||||
|
|
||||||
public bool OutputUseEnglishFormat => _outputUseEnNumberFormat.Value;
|
public bool OutputUseEnglishFormat => _outputUseEnNumberFormat.Value;
|
||||||
|
|
||||||
|
public bool CloseOnEnter => _closeOnEnter.Value;
|
||||||
|
|
||||||
internal static string SettingsJsonPath()
|
internal static string SettingsJsonPath()
|
||||||
{
|
{
|
||||||
var directory = Utilities.BaseSettingsPath("Microsoft.CmdPal");
|
var directory = Utilities.BaseSettingsPath("Microsoft.CmdPal");
|
||||||
@@ -89,6 +97,7 @@ public class SettingsManager : JsonSettingsManager
|
|||||||
Settings.Add(_trigUnit);
|
Settings.Add(_trigUnit);
|
||||||
Settings.Add(_inputUseEnNumberFormat);
|
Settings.Add(_inputUseEnNumberFormat);
|
||||||
Settings.Add(_outputUseEnNumberFormat);
|
Settings.Add(_outputUseEnNumberFormat);
|
||||||
|
Settings.Add(_closeOnEnter);
|
||||||
|
|
||||||
// Load settings from file upon initialization
|
// Load settings from file upon initialization
|
||||||
LoadSettings();
|
LoadSettings();
|
||||||
|
|||||||
@@ -186,6 +186,24 @@ namespace Microsoft.CmdPal.Ext.Calc.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Close on Enter.
|
||||||
|
/// </summary>
|
||||||
|
public static string calculator_settings_close_on_enter {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("calculator_settings_close_on_enter", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Makes Copy and close the primary command.
|
||||||
|
/// </summary>
|
||||||
|
public static string calculator_settings_close_on_enter_description {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("calculator_settings_close_on_enter_description", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Use English (United States) number format for input.
|
/// Looks up a localized string similar to Use English (United States) number format for input.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -184,6 +184,12 @@
|
|||||||
<value>Ignores your system setting and expects numbers in the format '{0}'.</value>
|
<value>Ignores your system setting and expects numbers in the format '{0}'.</value>
|
||||||
<comment>{0} is a placeholder and will be replaced in code.</comment>
|
<comment>{0} is a placeholder and will be replaced in code.</comment>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="calculator_settings_close_on_enter" xml:space="preserve">
|
||||||
|
<value>Close on Enter</value>
|
||||||
|
</data>
|
||||||
|
<data name="calculator_settings_close_on_enter_description" xml:space="preserve">
|
||||||
|
<value>Makes Copy and close the primary command</value>
|
||||||
|
</data>
|
||||||
<data name="calculator_settings_replace_input" xml:space="preserve">
|
<data name="calculator_settings_replace_input" xml:space="preserve">
|
||||||
<value>Replace input if query ends with '='</value>
|
<value>Replace input if query ends with '='</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
Reference in New Issue
Block a user