mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-16 03:37:59 +01:00
[PTRun][Shell]Select which shell is used (#28121)
* [PTRun] LeaveShellOpen condition added to run command * [PTRun] Keep shell open added to shell plugin settings. * [PTRun] Unnecessary variable deleted. Formatting. * [PTRun] Variable name changed. * [PTRun] Shell selection * [PTRun] Bugfix * [PTRun] Review comments. * [PTRun] Revert commit * [PTRun] An enumaration is added to PluginAdditionalOption for selection types.
This commit is contained in:
@@ -47,6 +47,21 @@ namespace Microsoft.Plugin.Shell
|
|||||||
DisplayLabel = Resources.wox_leave_shell_open,
|
DisplayLabel = Resources.wox_leave_shell_open,
|
||||||
Value = _settings.LeaveShellOpen,
|
Value = _settings.LeaveShellOpen,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
new PluginAdditionalOption()
|
||||||
|
{
|
||||||
|
Key = "ShellCommandExecution",
|
||||||
|
DisplayLabel = Resources.wox_shell_command_execution,
|
||||||
|
SelectionTypeValue = (int)PluginAdditionalOption.SelectionType.Combobox,
|
||||||
|
ComboBoxOptions = new List<string>
|
||||||
|
{
|
||||||
|
Resources.run_command_in_command_prompt,
|
||||||
|
Resources.run_command_in_powershell,
|
||||||
|
Resources.find_executable_file_and_run_it,
|
||||||
|
Resources.run_command_in_windows_terminal,
|
||||||
|
},
|
||||||
|
Option = (int)_settings.Shell,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
private PluginInitContext _context;
|
private PluginInitContext _context;
|
||||||
@@ -418,12 +433,17 @@ namespace Microsoft.Plugin.Shell
|
|||||||
public void UpdateSettings(PowerLauncherPluginSettings settings)
|
public void UpdateSettings(PowerLauncherPluginSettings settings)
|
||||||
{
|
{
|
||||||
var leaveShellOpen = false;
|
var leaveShellOpen = false;
|
||||||
|
var shellOption = 2;
|
||||||
|
|
||||||
if (settings != null && settings.AdditionalOptions != null)
|
if (settings != null && settings.AdditionalOptions != null)
|
||||||
{
|
{
|
||||||
var optionLeaveShellOpen = settings.AdditionalOptions.FirstOrDefault(x => x.Key == "LeaveShellOpen");
|
var optionLeaveShellOpen = settings.AdditionalOptions.FirstOrDefault(x => x.Key == "LeaveShellOpen");
|
||||||
leaveShellOpen = optionLeaveShellOpen?.Value ?? leaveShellOpen;
|
leaveShellOpen = optionLeaveShellOpen?.Value ?? leaveShellOpen;
|
||||||
_settings.LeaveShellOpen = leaveShellOpen;
|
_settings.LeaveShellOpen = leaveShellOpen;
|
||||||
|
|
||||||
|
var optionShell = settings.AdditionalOptions.FirstOrDefault(x => x.Key == "ShellCommandExecution");
|
||||||
|
shellOption = optionShell?.Option ?? shellOption;
|
||||||
|
_settings.Shell = (ExecutionShell)shellOption;
|
||||||
}
|
}
|
||||||
|
|
||||||
Save();
|
Save();
|
||||||
|
|||||||
@@ -60,6 +60,42 @@ namespace Microsoft.Plugin.Shell.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Find executable file and run it.
|
||||||
|
/// </summary>
|
||||||
|
public static string find_executable_file_and_run_it {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("find_executable_file_and_run_it", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Run command in Command Prompt (cmd.exe).
|
||||||
|
/// </summary>
|
||||||
|
public static string run_command_in_command_prompt {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("run_command_in_command_prompt", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Run command in PowerShell (PowerShell.exe).
|
||||||
|
/// </summary>
|
||||||
|
public static string run_command_in_powershell {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("run_command_in_powershell", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Run command in Windows Terminal (wt.exe).
|
||||||
|
/// </summary>
|
||||||
|
public static string run_command_in_windows_terminal {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("run_command_in_windows_terminal", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Keep shell open.
|
/// Looks up a localized string similar to Keep shell open.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -140,5 +176,14 @@ namespace Microsoft.Plugin.Shell.Properties {
|
|||||||
return ResourceManager.GetString("wox_plugin_cmd_run_as_user", resourceCulture);
|
return ResourceManager.GetString("wox_plugin_cmd_run_as_user", resourceCulture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Shell command execution.
|
||||||
|
/// </summary>
|
||||||
|
public static string wox_shell_command_execution {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("wox_shell_command_execution", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -144,4 +144,19 @@
|
|||||||
<data name="wox_leave_shell_open" xml:space="preserve">
|
<data name="wox_leave_shell_open" xml:space="preserve">
|
||||||
<value>Keep shell open</value>
|
<value>Keep shell open</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="wox_shell_command_execution" xml:space="preserve">
|
||||||
|
<value>Shell command execution</value>
|
||||||
|
</data>
|
||||||
|
<data name="run_command_in_command_prompt" xml:space="preserve">
|
||||||
|
<value>Run command in Command Prompt (cmd.exe)</value>
|
||||||
|
</data>
|
||||||
|
<data name="run_command_in_powershell" xml:space="preserve">
|
||||||
|
<value>Run command in PowerShell (PowerShell.exe)</value>
|
||||||
|
</data>
|
||||||
|
<data name="find_executable_file_and_run_it" xml:space="preserve">
|
||||||
|
<value>Find executable file and run it</value>
|
||||||
|
</data>
|
||||||
|
<data name="run_command_in_windows_terminal" xml:space="preserve">
|
||||||
|
<value>Run command in Windows Terminal (wt.exe)</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -2,7 +2,10 @@
|
|||||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||||
// See the LICENSE file in the project root for more information.
|
// See the LICENSE file in the project root for more information.
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
namespace Microsoft.Plugin.Shell
|
namespace Microsoft.Plugin.Shell
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,10 +2,18 @@
|
|||||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||||
// See the LICENSE file in the project root for more information.
|
// See the LICENSE file in the project root for more information.
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Microsoft.PowerToys.Settings.UI.Library
|
namespace Microsoft.PowerToys.Settings.UI.Library
|
||||||
{
|
{
|
||||||
public class PluginAdditionalOption
|
public class PluginAdditionalOption
|
||||||
{
|
{
|
||||||
|
public enum SelectionType
|
||||||
|
{
|
||||||
|
Checkbox = 0,
|
||||||
|
Combobox = 1,
|
||||||
|
}
|
||||||
|
|
||||||
public string Key { get; set; }
|
public string Key { get; set; }
|
||||||
|
|
||||||
public string DisplayLabel { get; set; }
|
public string DisplayLabel { get; set; }
|
||||||
@@ -16,5 +24,11 @@ namespace Microsoft.PowerToys.Settings.UI.Library
|
|||||||
public string DisplayDescription { get; set; }
|
public string DisplayDescription { get; set; }
|
||||||
|
|
||||||
public bool Value { get; set; }
|
public bool Value { get; set; }
|
||||||
|
|
||||||
|
public List<string> ComboBoxOptions { get; set; }
|
||||||
|
|
||||||
|
public int Option { get; set; }
|
||||||
|
|
||||||
|
public int SelectionTypeValue { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -444,11 +444,21 @@
|
|||||||
BorderThickness="0,0,0,0"
|
BorderThickness="0,0,0,0"
|
||||||
ContentAlignment="Left"
|
ContentAlignment="Left"
|
||||||
CornerRadius="0">
|
CornerRadius="0">
|
||||||
<controls:CheckBoxWithDescriptionControl
|
<StackPanel Orientation="Vertical">
|
||||||
Margin="56,0,0,0"
|
<controls:CheckBoxWithDescriptionControl
|
||||||
Description="{x:Bind Path=DisplayDescription}"
|
Margin="56,0,0,0"
|
||||||
Header="{x:Bind Path=DisplayLabel}"
|
Description="{x:Bind Path=DisplayDescription}"
|
||||||
IsChecked="{x:Bind Path=Value, Mode=TwoWay}" />
|
Header="{x:Bind Path=DisplayLabel}"
|
||||||
|
IsChecked="{x:Bind Path=Value, Mode=TwoWay}"
|
||||||
|
Visibility="{x:Bind Path=ShowCheckBox, Converter={StaticResource BoolToVisibilityConverter}}"/>
|
||||||
|
<ComboBox
|
||||||
|
Margin="56,0,0,0"
|
||||||
|
Description="{x:Bind Path=DisplayDescription}"
|
||||||
|
Header="{x:Bind Path=DisplayLabel}"
|
||||||
|
ItemsSource="{x:Bind Path=ComboBoxOptions}"
|
||||||
|
SelectedIndex="{x:Bind Path=Option, Mode=TwoWay}"
|
||||||
|
Visibility="{x:Bind Path=ShowComboBox, Converter={StaticResource BoolToVisibilityConverter}}" />
|
||||||
|
</StackPanel>
|
||||||
</labs:SettingsCard>
|
</labs:SettingsCard>
|
||||||
<Rectangle
|
<Rectangle
|
||||||
Height="1"
|
Height="1"
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||||
// See the LICENSE file in the project root for more information.
|
// See the LICENSE file in the project root for more information.
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using Microsoft.PowerToys.Settings.UI.Library;
|
using Microsoft.PowerToys.Settings.UI.Library;
|
||||||
@@ -17,9 +18,9 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
|||||||
_additionalOption = additionalOption;
|
_additionalOption = additionalOption;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string DisplayLabel { get => _additionalOption.DisplayLabel; }
|
public string DisplayLabel => _additionalOption.DisplayLabel;
|
||||||
|
|
||||||
public string DisplayDescription { get => _additionalOption.DisplayDescription; }
|
public string DisplayDescription => _additionalOption.DisplayDescription;
|
||||||
|
|
||||||
public bool Value
|
public bool Value
|
||||||
{
|
{
|
||||||
@@ -34,6 +35,25 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<string> ComboBoxOptions => _additionalOption.ComboBoxOptions;
|
||||||
|
|
||||||
|
public int Option
|
||||||
|
{
|
||||||
|
get => _additionalOption.Option;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value != _additionalOption.Option)
|
||||||
|
{
|
||||||
|
_additionalOption.Option = value;
|
||||||
|
NotifyPropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool ShowComboBox => _additionalOption.SelectionTypeValue == (int)PluginAdditionalOption.SelectionType.Combobox && _additionalOption.ComboBoxOptions != null && _additionalOption.ComboBoxOptions.Count > 0;
|
||||||
|
|
||||||
|
public bool ShowCheckBox => _additionalOption.SelectionTypeValue == (int)PluginAdditionalOption.SelectionType.Checkbox;
|
||||||
|
|
||||||
public event PropertyChangedEventHandler PropertyChanged;
|
public event PropertyChangedEventHandler PropertyChanged;
|
||||||
|
|
||||||
private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
|
private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
|
||||||
|
|||||||
Reference in New Issue
Block a user