Enable multiple action keywords

See issue #352
This commit is contained in:
bao-qian
2015-11-04 22:49:40 +00:00
parent 59a4abff7c
commit a07d6aa1e7
25 changed files with 95 additions and 112 deletions

View File

@@ -1,7 +1,7 @@
<Window x:Class="Wox.ActionKeyword"
<Window x:Class="Wox.ActionKeywords"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ActionKeyword"
Title="ActionKeywords"
Icon="Images\app.png"
ResizeMode="NoResize"
Loaded="ActionKeyword_OnLoaded"
@@ -19,7 +19,7 @@
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Margin="10" FontSize="14" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Right" Text="{DynamicResource oldActionKeyword}"></TextBlock>
<TextBlock x:Name="tbOldActionKeyword" Margin="10" FontSize="14" Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Left">Old ActionKeyword:</TextBlock>
<TextBlock x:Name="tbOldActionKeyword" Margin="10" FontSize="14" Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Left">Old ActionKeywords:</TextBlock>
<TextBlock Margin="10" FontSize="14" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Right" Text="{DynamicResource newActionKeyword}"></TextBlock>
<StackPanel Grid.Row="1" Orientation="Horizontal" Grid.Column="1" >

View File

@@ -1,4 +1,5 @@
using System.Linq;
using System;
using System.Linq;
using System.Windows;
using Wox.Core.i18n;
using Wox.Core.Plugin;
@@ -7,11 +8,11 @@ using Wox.Plugin;
namespace Wox
{
public partial class ActionKeyword : Window
public partial class ActionKeywords : Window
{
private PluginMetadata pluginMetadata;
public ActionKeyword(string pluginId)
public ActionKeywords(string pluginId)
{
InitializeComponent();
PluginPair plugin = PluginManager.GetPlugin(pluginId);
@@ -27,7 +28,7 @@ namespace Wox
private void ActionKeyword_OnLoaded(object sender, RoutedEventArgs e)
{
tbOldActionKeyword.Text = pluginMetadata.ActionKeyword;
tbOldActionKeyword.Text = string.Join(Query.ActionKeywordSeperater, pluginMetadata.ActionKeywords);
tbAction.Focus();
}
@@ -44,15 +45,18 @@ namespace Wox
return;
}
var actionKeywords = tbAction.Text.Trim().Split(new[] { Query.ActionKeywordSeperater }, StringSplitOptions.RemoveEmptyEntries).ToArray();
//check new action keyword didn't used by other plugin
if (tbAction.Text.Trim() != Query.WildcardSign && PluginManager.AllPlugins.Any(o => o.Metadata.ActionKeyword == tbAction.Text.Trim()))
if (actionKeywords[0] != Query.WildcardSign && PluginManager.AllPlugins.
SelectMany(p => p.Metadata.ActionKeywords).
Any(k => actionKeywords.Contains(k)))
{
MessageBox.Show(InternationalizationManager.Instance.GetTranslation("newActionKeywordHasBeenAssigned"));
return;
}
pluginMetadata.ActionKeyword = tbAction.Text.Trim();
pluginMetadata.ActionKeywords = actionKeywords;
var customizedPluginConfig = UserSettingStorage.Instance.CustomizedPluginConfigs.FirstOrDefault(o => o.ID == pluginMetadata.ID);
if (customizedPluginConfig == null)
{
@@ -61,12 +65,12 @@ namespace Wox
Disabled = false,
ID = pluginMetadata.ID,
Name = pluginMetadata.Name,
Actionword = tbAction.Text.Trim()
ActionKeywords = actionKeywords
});
}
else
{
customizedPluginConfig.Actionword = tbAction.Text.Trim();
customizedPluginConfig.ActionKeywords = actionKeywords;
}
UserSettingStorage.Instance.Save();
MessageBox.Show(InternationalizationManager.Instance.GetTranslation("succeed"));

View File

@@ -6,7 +6,7 @@ using System.Windows;
using Wox.CommandArgs;
using Wox.Core.Plugin;
using Wox.Helper;
using Wox.Infrastructure;
using Stopwatch = Wox.Infrastructure.Stopwatch;
namespace Wox
{

View File

@@ -77,13 +77,13 @@
<system:String x:Key="about_activate_times">You have activated Wox {0} times</system:String>
<!--Action Keyword Setting Dialog-->
<system:String x:Key="oldActionKeyword">Old Action Keyword</system:String>
<system:String x:Key="newActionKeyword">New Action Keyword</system:String>
<system:String x:Key="oldActionKeywords">Old Action Keyword</system:String>
<system:String x:Key="newActionKeywords">New Action Keyword</system:String>
<system:String x:Key="cancel">Cancel</system:String>
<system:String x:Key="done">Done</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">Can't find specified plugin</system:String>
<system:String x:Key="newActionKeywordCannotBeEmpty">New Action Keyword can't be empty</system:String>
<system:String x:Key="newActionKeywordHasBeenAssigned">New ActionKeyword has been assigned to other plugin, please assign another new action keyword</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">New Action Keyword can't be empty</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">New ActionKeywords has been assigned to other plugin, please assign another new action keyword</system:String>
<system:String x:Key="succeed">Succeed</system:String>
<system:String x:Key="actionkeyword_tips">Use * if you don't want to specify a action keyword</system:String>

View File

@@ -77,13 +77,13 @@
<system:String x:Key="about_activate_times">Вы воспользовались Wox уже {0} раз</system:String>
<!--Action Keyword Setting Dialog-->
<system:String x:Key="oldActionKeyword">Текущая горячая клавиша</system:String>
<system:String x:Key="newActionKeyword">Новая горячая клавиша</system:String>
<system:String x:Key="oldActionKeywords">Текущая горячая клавиша</system:String>
<system:String x:Key="newActionKeywords">Новая горячая клавиша</system:String>
<system:String x:Key="cancel">Отменить</system:String>
<system:String x:Key="done">Подтвердить</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">Не удалось найти заданный плагин</system:String>
<system:String x:Key="newActionKeywordCannotBeEmpty">Новая горячая клавиша не может быть пустой</system:String>
<system:String x:Key="newActionKeywordHasBeenAssigned">Новая горячая клавиша уже используется другим плагином. Пожалуйста, зайдайте новую</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">Новая горячая клавиша не может быть пустой</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">Новая горячая клавиша уже используется другим плагином. Пожалуйста, зайдайте новую</system:String>
<system:String x:Key="succeed">Сохранено</system:String>
<system:String x:Key="actionkeyword_tips">Используйте * в случае, если вы не хотите задавать конкретную горячую клавишу</system:String>

View File

@@ -77,13 +77,13 @@
<system:String x:Key="about_activate_times">你已经激活了Wox {0} 次</system:String>
<!--Action Keyword 设置对话框-->
<system:String x:Key="oldActionKeyword">旧触发关键字</system:String>
<system:String x:Key="newActionKeyword">新触发关键字</system:String>
<system:String x:Key="oldActionKeywords">旧触发关键字</system:String>
<system:String x:Key="newActionKeywords">新触发关键字</system:String>
<system:String x:Key="cancel">取消</system:String>
<system:String x:Key="done">确定</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">找不到指定的插件</system:String>
<system:String x:Key="newActionKeywordCannotBeEmpty">新触发关键字不能为空</system:String>
<system:String x:Key="newActionKeywordHasBeenAssigned">新触发关键字已经被指派给其他插件了,请重新选择一个关键字</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">新触发关键字不能为空</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">新触发关键字已经被指派给其他插件了,请重新选择一个关键字</system:String>
<system:String x:Key="succeed">成功</system:String>
<system:String x:Key="actionkeyword_tips">如果你不想设置触发关键字,可以使用*代替</system:String>

View File

@@ -77,13 +77,13 @@
<system:String x:Key="about_activate_times">你已經激活了Wox {0} 次</system:String>
<!--Action Keyword 設置對話框-->
<system:String x:Key="oldActionKeyword">舊觸發關鍵字</system:String>
<system:String x:Key="newActionKeyword">新觸發關鍵字</system:String>
<system:String x:Key="oldActionKeywords">舊觸發關鍵字</system:String>
<system:String x:Key="newActionKeywords">新觸發關鍵字</system:String>
<system:String x:Key="cancel">取消</system:String>
<system:String x:Key="done">確定</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">找不到指定的插件</system:String>
<system:String x:Key="newActionKeywordCannotBeEmpty">新觸發關鍵字不能為空</system:String>
<system:String x:Key="newActionKeywordHasBeenAssigned">新觸發關鍵字已經被指派給其他插件了,請重新選擇一個關鍵字</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">新觸發關鍵字不能為空</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">新觸發關鍵字已經被指派給其他插件了,請重新選擇一個關鍵字</system:String>
<system:String x:Key="succeed">成功</system:String>
<system:String x:Key="actionkeyword_tips">如果你不想設置觸發關鍵字,可以使用*代替</system:String>

View File

@@ -109,7 +109,7 @@
<TextBlock x:Name="pluginActionKeywordTitle" Margin="20 0 0 0">
<TextBlock Text="{DynamicResource actionKeyword}"></TextBlock>
</TextBlock>
<TextBlock Margin="5 0 0 0" ToolTip="Change Action Keyword" Cursor="Hand" MouseUp="PluginActionKeyword_OnMouseUp" Foreground="Blue" Text="key" x:Name="pluginActionKeyword"></TextBlock>
<TextBlock Margin="5 0 0 0" ToolTip="Change Action Keyword" Cursor="Hand" MouseUp="PluginActionKeywords_OnMouseUp" Foreground="Blue" Text="key" x:Name="pluginActionKeywords"></TextBlock>
<TextBlock Margin="10 0 0 0" Text="Init time: 0ms" x:Name="pluginInitTime"></TextBlock>
<TextBlock Margin="10 0 0 0" Text="Query time: 0ms" x:Name="pluginQueryTime"></TextBlock>
<TextBlock HorizontalAlignment="Right" Cursor="Hand" MouseUp="tbOpenPluginDirecoty_MouseUp" Foreground="Blue" Text="{DynamicResource pluginDirectory}" x:Name="tbOpenPluginDirecoty"></TextBlock>
@@ -234,7 +234,7 @@
<GridViewColumn Header="{DynamicResource actionKeyword}" Width="500">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding ActionKeyword}"/>
<TextBlock Text="{Binding ActionKeywords}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>

View File

@@ -527,7 +527,7 @@ namespace Wox
{
provider = pair.Plugin as ISettingProvider;
pluginAuthor.Visibility = Visibility.Visible;
pluginActionKeyword.Visibility = Visibility.Visible;
pluginActionKeywords.Visibility = Visibility.Visible;
pluginInitTime.Text =
string.Format(InternationalizationManager.Instance.GetTranslation("plugin_init_time"), pair.InitTime);
pluginQueryTime.Text =
@@ -536,7 +536,7 @@ namespace Wox
tbOpenPluginDirecoty.Visibility = Visibility.Visible;
pluginTitle.Text = pair.Metadata.Name;
pluginTitle.Cursor = Cursors.Hand;
pluginActionKeyword.Text = pair.Metadata.ActionKeyword;
pluginActionKeywords.Text = string.Join(Query.ActionKeywordSeperater, pair.Metadata.ActionKeywords);
pluginAuthor.Text = InternationalizationManager.Instance.GetTranslation("author") + ": " + pair.Metadata.Author;
pluginSubTitle.Text = pair.Metadata.Description;
pluginId = pair.Metadata.ID;
@@ -578,12 +578,13 @@ namespace Wox
var customizedPluginConfig = UserSettingStorage.Instance.CustomizedPluginConfigs.FirstOrDefault(o => o.ID == id);
if (customizedPluginConfig == null)
{
// todo when this part will be invoked
UserSettingStorage.Instance.CustomizedPluginConfigs.Add(new CustomizedPluginConfig()
{
Disabled = cbDisabled.IsChecked ?? true,
ID = id,
Name = name,
Actionword = string.Empty
ActionKeywords = null
});
}
else
@@ -593,7 +594,7 @@ namespace Wox
UserSettingStorage.Instance.Save();
}
private void PluginActionKeyword_OnMouseUp(object sender, MouseButtonEventArgs e)
private void PluginActionKeywords_OnMouseUp(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Left)
{
@@ -602,10 +603,10 @@ namespace Wox
{
//third-party plugin
string id = pair.Metadata.ID;
ActionKeyword changeKeywordWindow = new ActionKeyword(id);
changeKeywordWindow.ShowDialog();
ActionKeywords changeKeywordsWindow = new ActionKeywords(id);
changeKeywordsWindow.ShowDialog();
PluginPair plugin = PluginManager.GetPlugin(id);
if (plugin != null) pluginActionKeyword.Text = plugin.Metadata.ActionKeyword;
if (plugin != null) pluginActionKeywords.Text = string.Join(Query.ActionKeywordSeperater, pair.Metadata.ActionKeywords);
}
}
}

View File

@@ -126,8 +126,8 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Compile Include="ActionKeyword.xaml.cs">
<DependentUpon>ActionKeyword.xaml</DependentUpon>
<Compile Include="ActionKeywords.xaml.cs">
<DependentUpon>ActionKeywords.xaml</DependentUpon>
</Compile>
<Compile Include="CommandArgs\CommandArgsFactory.cs" />
<Compile Include="CommandArgs\HideStartCommandArg.cs" />
@@ -160,7 +160,7 @@
<Compile Include="SettingWindow.xaml.cs">
<DependentUpon>SettingWindow.xaml</DependentUpon>
</Compile>
<Page Include="ActionKeyword.xaml">
<Page Include="ActionKeywords.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
@@ -374,5 +374,4 @@ cd "$(TargetDir)Plugins" &amp; del /s /q WindowsInput.dll
<Target Name="AfterBuild">
</Target>
-->
</Project>
</Project>