Merge pull request #404 from Flow-Launcher/save_shell_cmd_history

save Shell plugin cmd history
This commit is contained in:
Jeremy Wu 2021-04-12 20:37:58 +10:00 committed by GitHub
commit 256bfb7237
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 71 additions and 11 deletions

View file

@ -36,6 +36,7 @@
<system:String x:Key="hideNotifyIcon">Hide tray icon</system:String> <system:String x:Key="hideNotifyIcon">Hide tray icon</system:String>
<system:String x:Key="querySearchPrecision">Query Search Precision</system:String> <system:String x:Key="querySearchPrecision">Query Search Precision</system:String>
<system:String x:Key="ShouldUsePinyin">Should Use Pinyin</system:String> <system:String x:Key="ShouldUsePinyin">Should Use Pinyin</system:String>
<system:String x:Key="ShouldUsePinyinToolTip">Allows using Pinyin to search. Pinyin is the standard system of romanized spelling for transliterating Chinese</system:String>
<!--Setting Plugin--> <!--Setting Plugin-->
<system:String x:Key="plugin">Plugin</system:String> <system:String x:Key="plugin">Plugin</system:String>

View file

@ -63,7 +63,7 @@
<ui:ToggleSwitch Margin="10" IsOn="{Binding AutoUpdates}"> <ui:ToggleSwitch Margin="10" IsOn="{Binding AutoUpdates}">
<TextBlock Text="{DynamicResource autoUpdates}" /> <TextBlock Text="{DynamicResource autoUpdates}" />
</ui:ToggleSwitch> </ui:ToggleSwitch>
<CheckBox Margin="10" IsChecked="{Binding ShouldUsePinyin}"> <CheckBox Margin="10" IsChecked="{Binding ShouldUsePinyin}" ToolTip="{DynamicResource ShouldUsePinyinToolTip}">
<TextBlock Text="{DynamicResource ShouldUsePinyin}" /> <TextBlock Text="{DynamicResource ShouldUsePinyin}" />
</CheckBox> </CheckBox>
<StackPanel Margin="10" Orientation="Horizontal"> <StackPanel Margin="10" Orientation="Horizontal">

View file

@ -12,4 +12,5 @@
<system:String x:Key="flowlauncher_plugin_cmd_execute_through_shell">execute command through command shell</system:String> <system:String x:Key="flowlauncher_plugin_cmd_execute_through_shell">execute command through command shell</system:String>
<system:String x:Key="flowlauncher_plugin_cmd_run_as_administrator">Run As Administrator</system:String> <system:String x:Key="flowlauncher_plugin_cmd_run_as_administrator">Run As Administrator</system:String>
<system:String x:Key="flowlauncher_plugin_cmd_copy">Copy the command</system:String> <system:String x:Key="flowlauncher_plugin_cmd_copy">Copy the command</system:String>
<system:String x:Key="flowlauncher_plugin_cmd_history">Only show number of most used commands:</system:String>
</ResourceDictionary> </ResourceDictionary>

View file

@ -102,7 +102,7 @@ namespace Flow.Launcher.Plugin.Shell
private List<Result> GetHistoryCmds(string cmd, Result result) private List<Result> GetHistoryCmds(string cmd, Result result)
{ {
IEnumerable<Result> history = _settings.Count.Where(o => o.Key.Contains(cmd)) IEnumerable<Result> history = _settings.CommandHistory.Where(o => o.Key.Contains(cmd))
.OrderByDescending(o => o.Value) .OrderByDescending(o => o.Value)
.Select(m => .Select(m =>
{ {
@ -124,7 +124,11 @@ namespace Flow.Launcher.Plugin.Shell
} }
}; };
return ret; return ret;
}).Where(o => o != null).Take(4); }).Where(o => o != null);
if (_settings.ShowOnlyMostUsedCMDs)
return history.Take(_settings.ShowOnlyMostUsedCMDsNumber).ToList();
return history.ToList(); return history.ToList();
} }
@ -148,7 +152,7 @@ namespace Flow.Launcher.Plugin.Shell
private List<Result> ResultsFromlHistory() private List<Result> ResultsFromlHistory()
{ {
IEnumerable<Result> history = _settings.Count.OrderByDescending(o => o.Value) IEnumerable<Result> history = _settings.CommandHistory.OrderByDescending(o => o.Value)
.Select(m => new Result .Select(m => new Result
{ {
Title = m.Key, Title = m.Key,
@ -159,7 +163,11 @@ namespace Flow.Launcher.Plugin.Shell
Execute(Process.Start, PrepareProcessStartInfo(m.Key)); Execute(Process.Start, PrepareProcessStartInfo(m.Key));
return true; return true;
} }
}).Take(5); });
if (_settings.ShowOnlyMostUsedCMDs)
return history.Take(_settings.ShowOnlyMostUsedCMDsNumber).ToList();
return history.ToList(); return history.ToList();
} }

View file

@ -5,21 +5,28 @@ namespace Flow.Launcher.Plugin.Shell
public class Settings public class Settings
{ {
public Shell Shell { get; set; } = Shell.Cmd; public Shell Shell { get; set; } = Shell.Cmd;
public bool ReplaceWinR { get; set; } = true; public bool ReplaceWinR { get; set; } = true;
public bool LeaveShellOpen { get; set; } public bool LeaveShellOpen { get; set; }
public bool RunAsAdministrator { get; set; } = true; public bool RunAsAdministrator { get; set; } = true;
public Dictionary<string, int> Count = new Dictionary<string, int>(); public bool ShowOnlyMostUsedCMDs { get; set; }
public int ShowOnlyMostUsedCMDsNumber { get; set; }
public Dictionary<string, int> CommandHistory { get; set; } = new Dictionary<string, int>();
public void AddCmdHistory(string cmdName) public void AddCmdHistory(string cmdName)
{ {
if (Count.ContainsKey(cmdName)) if (CommandHistory.ContainsKey(cmdName))
{ {
Count[cmdName] += 1; CommandHistory[cmdName] += 1;
} }
else else
{ {
Count.Add(cmdName, 1); CommandHistory.Add(cmdName, 1);
} }
} }
} }

View file

@ -12,6 +12,7 @@
<RowDefinition/> <RowDefinition/>
<RowDefinition/> <RowDefinition/>
<RowDefinition/> <RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<CheckBox Grid.Row="0" x:Name="ReplaceWinR" Content="{DynamicResource flowlauncher_plugin_cmd_relace_winr}" Margin="10" HorizontalAlignment="Left"/> <CheckBox Grid.Row="0" x:Name="ReplaceWinR" Content="{DynamicResource flowlauncher_plugin_cmd_relace_winr}" Margin="10" HorizontalAlignment="Left"/>
<CheckBox Grid.Row="1" x:Name="LeaveShellOpen" Content="{DynamicResource flowlauncher_plugin_cmd_leave_cmd_open}" Margin="10" HorizontalAlignment="Left"/> <CheckBox Grid.Row="1" x:Name="LeaveShellOpen" Content="{DynamicResource flowlauncher_plugin_cmd_leave_cmd_open}" Margin="10" HorizontalAlignment="Left"/>
@ -21,5 +22,7 @@
<ComboBoxItem>PowerShell</ComboBoxItem> <ComboBoxItem>PowerShell</ComboBoxItem>
<ComboBoxItem>RunCommand</ComboBoxItem> <ComboBoxItem>RunCommand</ComboBoxItem>
</ComboBox> </ComboBox>
<CheckBox Grid.Row ="4" x:Name="ShowOnlyMostUsedCMDs" Content="{DynamicResource flowlauncher_plugin_cmd_history}" Margin="10 10 0 0"/>
<ComboBox Grid.Row="4" x:Name="ShowOnlyMostUsedCMDsNumber" Margin="330 20 10 10" HorizontalAlignment="Left" />
</Grid> </Grid>
</UserControl> </UserControl>

View file

@ -1,4 +1,5 @@
using System.Windows; using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
namespace Flow.Launcher.Plugin.Shell namespace Flow.Launcher.Plugin.Shell
@ -16,9 +17,26 @@ namespace Flow.Launcher.Plugin.Shell
private void CMDSetting_OnLoaded(object sender, RoutedEventArgs re) private void CMDSetting_OnLoaded(object sender, RoutedEventArgs re)
{ {
ReplaceWinR.IsChecked = _settings.ReplaceWinR; ReplaceWinR.IsChecked = _settings.ReplaceWinR;
LeaveShellOpen.IsChecked = _settings.LeaveShellOpen; LeaveShellOpen.IsChecked = _settings.LeaveShellOpen;
AlwaysRunAsAdministrator.IsChecked = _settings.RunAsAdministrator; AlwaysRunAsAdministrator.IsChecked = _settings.RunAsAdministrator;
LeaveShellOpen.IsEnabled = _settings.Shell != Shell.RunCommand; LeaveShellOpen.IsEnabled = _settings.Shell != Shell.RunCommand;
ShowOnlyMostUsedCMDs.IsChecked = _settings.ShowOnlyMostUsedCMDs;
if ((bool)!ShowOnlyMostUsedCMDs.IsChecked)
ShowOnlyMostUsedCMDsNumber.IsEnabled = false;
ShowOnlyMostUsedCMDsNumber.ItemsSource = new List<int>() { 5, 10, 20 };
if (_settings.ShowOnlyMostUsedCMDsNumber == 0)
{
ShowOnlyMostUsedCMDsNumber.SelectedIndex = 0;
_settings.ShowOnlyMostUsedCMDsNumber = (int)ShowOnlyMostUsedCMDsNumber.SelectedItem;
}
LeaveShellOpen.Checked += (o, e) => LeaveShellOpen.Checked += (o, e) =>
{ {
@ -44,6 +62,7 @@ namespace Flow.Launcher.Plugin.Shell
{ {
_settings.ReplaceWinR = true; _settings.ReplaceWinR = true;
}; };
ReplaceWinR.Unchecked += (o, e) => ReplaceWinR.Unchecked += (o, e) =>
{ {
_settings.ReplaceWinR = false; _settings.ReplaceWinR = false;
@ -55,6 +74,27 @@ namespace Flow.Launcher.Plugin.Shell
_settings.Shell = (Shell) ShellComboBox.SelectedIndex; _settings.Shell = (Shell) ShellComboBox.SelectedIndex;
LeaveShellOpen.IsEnabled = _settings.Shell != Shell.RunCommand; LeaveShellOpen.IsEnabled = _settings.Shell != Shell.RunCommand;
}; };
ShowOnlyMostUsedCMDs.Checked += (o, e) =>
{
_settings.ShowOnlyMostUsedCMDs = true;
ShowOnlyMostUsedCMDsNumber.IsEnabled = true;
};
ShowOnlyMostUsedCMDs.Unchecked += (o, e) =>
{
_settings.ShowOnlyMostUsedCMDs = false;
ShowOnlyMostUsedCMDsNumber.IsEnabled = false;
};
ShowOnlyMostUsedCMDsNumber.SelectedItem = _settings.ShowOnlyMostUsedCMDsNumber;
ShowOnlyMostUsedCMDsNumber.SelectionChanged += (o, e) =>
{
_settings.ShowOnlyMostUsedCMDsNumber = (int)ShowOnlyMostUsedCMDsNumber.SelectedItem;
};
} }
} }
} }

View file

@ -4,7 +4,7 @@
"Name": "Shell", "Name": "Shell",
"Description": "Provide executing commands from Flow Launcher", "Description": "Provide executing commands from Flow Launcher",
"Author": "qianlifeng", "Author": "qianlifeng",
"Version": "1.2.0", "Version": "1.3.0",
"Language": "csharp", "Language": "csharp",
"Website": "https://github.com/Flow-Launcher/Flow.Launcher", "Website": "https://github.com/Flow-Launcher/Flow.Launcher",
"ExecuteFileName": "Flow.Launcher.Plugin.Shell.dll", "ExecuteFileName": "Flow.Launcher.Plugin.Shell.dll",