Merge with v1.2.0
1
.gitignore
vendored
@ -120,3 +120,4 @@ Wox/Images/Thumbs.db
|
|||||||
Wox/Wox.csproj
|
Wox/Wox.csproj
|
||||||
|
|
||||||
*.sublime-*
|
*.sublime-*
|
||||||
|
*.dgml
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#define MyAppVer = GetFileVersion(MyAppPath + "\Wox.exe")
|
#define MyAppVer = GetFileVersion(MyAppPath + "\Wox.exe")
|
||||||
|
|
||||||
[Setup]
|
[Setup]
|
||||||
AppId={{A5AF4C34-70A7-4D3B-BA18-E49C0AEEA5E6}
|
AppId=05700E94-3DAD-4827-8AAA-9908178DE132-Wox
|
||||||
AppMutex=DBDE24E4-91F6-11DF-B495-C536DFD72085-Wox
|
AppMutex=DBDE24E4-91F6-11DF-B495-C536DFD72085-Wox
|
||||||
AppName={#MyAppName}
|
AppName={#MyAppName}
|
||||||
AppVerName={#MyAppName} v{#MyAppVer}
|
AppVerName={#MyAppName} v{#MyAppVer}
|
||||||
@ -21,6 +21,8 @@ OutputBaseFilename=Wox-setup
|
|||||||
OutputDir={#OutputPath}
|
OutputDir={#OutputPath}
|
||||||
Compression=lzma
|
Compression=lzma
|
||||||
SolidCompression=yes
|
SolidCompression=yes
|
||||||
|
DisableDirPage=auto
|
||||||
|
DisableProgramGroupPage=auto
|
||||||
|
|
||||||
[Languages]
|
[Languages]
|
||||||
Name: english; MessagesFile: compiler:Default.isl
|
Name: english; MessagesFile: compiler:Default.isl
|
||||||
@ -29,11 +31,13 @@ Name: english; MessagesFile: compiler:Default.isl
|
|||||||
Type: files; Name: "{commonstartup}\{#MyAppName}.lnk"
|
Type: files; Name: "{commonstartup}\{#MyAppName}.lnk"
|
||||||
|
|
||||||
[Tasks]
|
[Tasks]
|
||||||
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
|
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons};
|
||||||
Name: startupfolder; Description: Startup with Windows;
|
Name: startupfolder; Description: Startup with Windows;
|
||||||
|
|
||||||
[Files]
|
[Files]
|
||||||
Source: {#MyAppPath}\*; DestDir: {app}; Flags: ignoreversion recursesubdirs
|
Source: {#MyAppPath}\*; Excludes: Plugins\*; DestDir: {app}; Flags: ignoreversion recursesubdirs
|
||||||
|
Source: {#MyAppPath}\Plugins\*; DestDir: {%USERPROFILE}\.Wox\Plugins; Flags: ignoreversion recursesubdirs
|
||||||
|
Source: {#MyAppPath}\Themes\Base.xaml; DestDir: {%USERPROFILE}\.Wox\Themes; Flags: ignoreversion recursesubdirs
|
||||||
|
|
||||||
[Icons]
|
[Icons]
|
||||||
Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}
|
Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}
|
||||||
@ -42,4 +46,10 @@ Name: {userdesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: deskto
|
|||||||
Name: {userstartup}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: startupfolder
|
Name: {userstartup}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: startupfolder
|
||||||
|
|
||||||
[Run]
|
[Run]
|
||||||
Filename: {app}\{#MyAppExeName}; Description: {cm:LaunchProgram,{#MyAppName}}; Flags: nowait postinstall skipifsilent
|
Filename: {app}\{#MyAppExeName}; Description: {cm:LaunchProgram,{#MyAppName}}; Flags: nowait postinstall skipifsilent unchecked
|
||||||
|
|
||||||
|
[UninstallDelete]
|
||||||
|
Type: filesandordirs; Name: "{%USERPROFILE}\.Wox"
|
||||||
|
|
||||||
|
[UninstallRun]
|
||||||
|
Filename: {sys}\taskkill.exe; Parameters: "/f /im Wox.exe"; Flags: skipifdoesntexist runhidden
|
||||||
|
18
Deploy/NAppUpdate/FeedBuilder.config
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Settings>
|
||||||
|
<SCOTT-PC>
|
||||||
|
<IgnoreVsHosting>True</IgnoreVsHosting>
|
||||||
|
<CompareSize>False</CompareSize>
|
||||||
|
<CleanUp>True</CleanUp>
|
||||||
|
<IgnoreDebugSymbols>True</IgnoreDebugSymbols>
|
||||||
|
<IgnoreFiles><?xml version="1.0" encoding="utf-16"?>
|
||||||
|
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" /></IgnoreFiles>
|
||||||
|
<CopyFiles>True</CopyFiles>
|
||||||
|
<CompareVersion>True</CompareVersion>
|
||||||
|
<OutputFolder>E:\github\Wox\Output\Debug</OutputFolder>
|
||||||
|
<CompareHash>True</CompareHash>
|
||||||
|
<CompareDate>False</CompareDate>
|
||||||
|
<FeedXML>E:\github\Wox\Output\Update\Update.xml</FeedXML>
|
||||||
|
</SCOTT-PC>
|
||||||
|
<BaseURL>http://127.0.0.1:8888</BaseURL>
|
||||||
|
</Settings>
|
BIN
Deploy/NAppUpdate/FeedBuilder.exe
Normal file
54
Deploy/NAppUpdate/FeedBuilder.exe.config
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<configuration>
|
||||||
|
<configSections>
|
||||||
|
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
|
||||||
|
<section name="FeedBuilder.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
|
||||||
|
</sectionGroup>
|
||||||
|
</configSections>
|
||||||
|
<userSettings>
|
||||||
|
<FeedBuilder.Properties.Settings>
|
||||||
|
<setting name="BaseURL" serializeAs="String">
|
||||||
|
<value />
|
||||||
|
</setting>
|
||||||
|
<setting name="CleanUp" serializeAs="String">
|
||||||
|
<value>True</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="CompareDate" serializeAs="String">
|
||||||
|
<value>False</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="CompareHash" serializeAs="String">
|
||||||
|
<value>True</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="CompareSize" serializeAs="String">
|
||||||
|
<value>False</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="CompareVersion" serializeAs="String">
|
||||||
|
<value>True</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="CopyFiles" serializeAs="String">
|
||||||
|
<value>True</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="FeedXML" serializeAs="String">
|
||||||
|
<value />
|
||||||
|
</setting>
|
||||||
|
<setting name="IgnoreDebugSymbols" serializeAs="String">
|
||||||
|
<value>True</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="IgnoreFiles" serializeAs="Xml">
|
||||||
|
<value>
|
||||||
|
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||||
|
<string>*.pdb</string>
|
||||||
|
<string>*.config</string>
|
||||||
|
</ArrayOfString>
|
||||||
|
</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="IgnoreVsHosting" serializeAs="String">
|
||||||
|
<value>True</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="OutputFolder" serializeAs="String">
|
||||||
|
<value />
|
||||||
|
</setting>
|
||||||
|
</FeedBuilder.Properties.Settings>
|
||||||
|
</userSettings>
|
||||||
|
</configuration>
|
BIN
Deploy/NAppUpdate/NAppUpdate.Framework.dll
Normal file
1
Deploy/NAppUpdate/build.bat
Normal file
@ -0,0 +1 @@
|
|||||||
|
FeedBuilder.exe "FeedBuilder.config" -Build
|
1
Deploy/NAppUpdate/gui.bat
Normal file
@ -0,0 +1 @@
|
|||||||
|
FeedBuilder.exe "FeedBuilder.config" -ShowGUI
|
BIN
Doc/app.psd
BIN
Doc/app_error.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
Doc/app_error.psd
Normal file
@ -2,103 +2,39 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Runtime.Serialization.Formatters.Binary;
|
using System.Reflection;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using WindowsInput;
|
||||||
|
using WindowsInput.Native;
|
||||||
|
using Wox.Infrastructure.Hotkey;
|
||||||
using Control = System.Windows.Controls.Control;
|
using Control = System.Windows.Controls.Control;
|
||||||
|
|
||||||
namespace Wox.Plugin.SystemPlugins.CMD
|
namespace Wox.Plugin.CMD
|
||||||
{
|
{
|
||||||
public class CMD : BaseSystemPlugin, ISettingProvider
|
public class CMD : IPlugin, ISettingProvider, IPluginI18n
|
||||||
{
|
{
|
||||||
private PluginInitContext context;
|
private PluginInitContext context;
|
||||||
|
private bool WinRStroked;
|
||||||
|
private readonly KeyboardSimulator keyboardSimulator = new KeyboardSimulator(new InputSimulator());
|
||||||
|
|
||||||
protected override List<Result> QueryInternal(Query query)
|
public List<Result> Query(Query query)
|
||||||
{
|
{
|
||||||
List<Result> results = new List<Result>();
|
List<Result> results = new List<Result>();
|
||||||
List<Result> pushedResults = new List<Result>();
|
List<Result> pushedResults = new List<Result>();
|
||||||
if (query.RawQuery == ">")
|
if (query.RawQuery == ">")
|
||||||
{
|
{
|
||||||
IEnumerable<Result> history = CMDStorage.Instance.CMDHistory.OrderByDescending(o => o.Value)
|
return GetAllHistoryCmds();
|
||||||
.Select(m => new Result
|
|
||||||
{
|
|
||||||
Title = m.Key,
|
|
||||||
SubTitle = "this command has been executed " + m.Value + " times",
|
|
||||||
IcoPath = "Images/cmd.png",
|
|
||||||
Action = (c) =>
|
|
||||||
{
|
|
||||||
ExecuteCmd(m.Key);
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
ContextMenu = GetContextMenus(m.Key)
|
|
||||||
}).Take(5);
|
|
||||||
|
|
||||||
results.AddRange(history);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (query.RawQuery.StartsWith(">") && query.RawQuery.Length > 1)
|
if (query.RawQuery.StartsWith(">") && query.RawQuery.Length > 1)
|
||||||
{
|
{
|
||||||
string cmd = query.RawQuery.Substring(1);
|
string cmd = query.RawQuery.Substring(1);
|
||||||
Result result = new Result
|
var queryCmd = GetCurrentCmd(cmd);
|
||||||
{
|
context.API.PushResults(query, context.CurrentPluginMetadata, new List<Result>() { queryCmd });
|
||||||
Title = cmd,
|
pushedResults.Add(queryCmd);
|
||||||
Score = 5000,
|
|
||||||
SubTitle = "execute command through command shell",
|
|
||||||
IcoPath = "Images/cmd.png",
|
|
||||||
Action = (c) =>
|
|
||||||
{
|
|
||||||
ExecuteCmd(cmd);
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
ContextMenu = GetContextMenus(cmd)
|
|
||||||
};
|
|
||||||
|
|
||||||
try
|
var history = GetHistoryCmds(cmd, queryCmd);
|
||||||
{
|
context.API.PushResults(query, context.CurrentPluginMetadata, history);
|
||||||
if (File.Exists(cmd) || Directory.Exists(cmd))
|
|
||||||
{
|
|
||||||
result.IcoPath = cmd;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception) { }
|
|
||||||
|
|
||||||
context.API.PushResults(query, context.CurrentPluginMetadata, new List<Result>() { result });
|
|
||||||
pushedResults.Add(result);
|
|
||||||
|
|
||||||
IEnumerable<Result> history = CMDStorage.Instance.CMDHistory.Where(o => o.Key.Contains(cmd))
|
|
||||||
.OrderByDescending(o => o.Value)
|
|
||||||
.Select(m =>
|
|
||||||
{
|
|
||||||
if (m.Key == cmd)
|
|
||||||
{
|
|
||||||
result.SubTitle = "this command has been executed " + m.Value + " times";
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
var ret = new Result
|
|
||||||
{
|
|
||||||
Title = m.Key,
|
|
||||||
SubTitle = "this command has been executed " + m.Value + " times",
|
|
||||||
IcoPath = "Images/cmd.png",
|
|
||||||
Action = (c) =>
|
|
||||||
{
|
|
||||||
ExecuteCmd(m.Key);
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
ContextMenu = GetContextMenus(m.Key)
|
|
||||||
};
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (File.Exists(m.Key) || Directory.Exists(m.Key))
|
|
||||||
{
|
|
||||||
ret.IcoPath = m.Key;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception) { }
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}).Where(o => o != null).Take(4);
|
|
||||||
|
|
||||||
context.API.PushResults(query, context.CurrentPluginMetadata, history.ToList());
|
|
||||||
pushedResults.AddRange(history);
|
pushedResults.AddRange(history);
|
||||||
|
|
||||||
try
|
try
|
||||||
@ -125,8 +61,7 @@ namespace Wox.Plugin.SystemPlugins.CMD
|
|||||||
results.AddRange(autocomplete.ConvertAll(m => new Result()
|
results.AddRange(autocomplete.ConvertAll(m => new Result()
|
||||||
{
|
{
|
||||||
Title = m,
|
Title = m,
|
||||||
SubTitle = "",
|
IcoPath = "Images/cmd.png",
|
||||||
IcoPath = m,
|
|
||||||
Action = (c) =>
|
Action = (c) =>
|
||||||
{
|
{
|
||||||
ExecuteCmd(m);
|
ExecuteCmd(m);
|
||||||
@ -141,6 +76,72 @@ namespace Wox.Plugin.SystemPlugins.CMD
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<Result> GetHistoryCmds(string cmd, Result result)
|
||||||
|
{
|
||||||
|
IEnumerable<Result> history = CMDStorage.Instance.CMDHistory.Where(o => o.Key.Contains(cmd))
|
||||||
|
.OrderByDescending(o => o.Value)
|
||||||
|
.Select(m =>
|
||||||
|
{
|
||||||
|
if (m.Key == cmd)
|
||||||
|
{
|
||||||
|
result.SubTitle = "this command has been executed " + m.Value + " times";
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var ret = new Result
|
||||||
|
{
|
||||||
|
Title = m.Key,
|
||||||
|
SubTitle = "this command has been executed " + m.Value + " times",
|
||||||
|
IcoPath = "Images/cmd.png",
|
||||||
|
Action = (c) =>
|
||||||
|
{
|
||||||
|
ExecuteCmd(m.Key);
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
ContextMenu = GetContextMenus(m.Key)
|
||||||
|
};
|
||||||
|
return ret;
|
||||||
|
}).Where(o => o != null).Take(4);
|
||||||
|
return history.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Result GetCurrentCmd(string cmd)
|
||||||
|
{
|
||||||
|
Result result = new Result
|
||||||
|
{
|
||||||
|
Title = cmd,
|
||||||
|
Score = 5000,
|
||||||
|
SubTitle = "execute command through command shell",
|
||||||
|
IcoPath = "Images/cmd.png",
|
||||||
|
Action = (c) =>
|
||||||
|
{
|
||||||
|
ExecuteCmd(cmd);
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
ContextMenu = GetContextMenus(cmd)
|
||||||
|
};
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<Result> GetAllHistoryCmds()
|
||||||
|
{
|
||||||
|
IEnumerable<Result> history = CMDStorage.Instance.CMDHistory.OrderByDescending(o => o.Value)
|
||||||
|
.Select(m => new Result
|
||||||
|
{
|
||||||
|
Title = m.Key,
|
||||||
|
SubTitle = "this command has been executed " + m.Value + " times",
|
||||||
|
IcoPath = "Images/cmd.png",
|
||||||
|
Action = (c) =>
|
||||||
|
{
|
||||||
|
ExecuteCmd(m.Key);
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
ContextMenu = GetContextMenus(m.Key)
|
||||||
|
}).Take(5);
|
||||||
|
return history.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
private List<Result> GetContextMenus(string cmd)
|
private List<Result> GetContextMenus(string cmd)
|
||||||
{
|
{
|
||||||
return new List<Result>()
|
return new List<Result>()
|
||||||
@ -165,34 +166,46 @@ namespace Wox.Plugin.SystemPlugins.CMD
|
|||||||
CMDStorage.Instance.AddCmdHistory(cmd);
|
CMDStorage.Instance.AddCmdHistory(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void InitInternal(PluginInitContext context)
|
public void Init(PluginInitContext context)
|
||||||
{
|
{
|
||||||
this.context = context;
|
this.context = context;
|
||||||
|
context.API.GlobalKeyboardEvent += API_GlobalKeyboardEvent;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string ID
|
bool API_GlobalKeyboardEvent(int keyevent, int vkcode, SpecialKeyState state)
|
||||||
{
|
{
|
||||||
get { return "D409510CD0D2481F853690A07E6DC426"; }
|
if (CMDStorage.Instance.ReplaceWinR)
|
||||||
|
{
|
||||||
|
if (keyevent == (int)KeyEvent.WM_KEYDOWN && vkcode == (int)Keys.R && state.WinPressed)
|
||||||
|
{
|
||||||
|
WinRStroked = true;
|
||||||
|
OnWinRPressed();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (keyevent == (int)KeyEvent.WM_KEYUP && WinRStroked && vkcode == (int)Keys.LWin)
|
||||||
|
{
|
||||||
|
WinRStroked = false;
|
||||||
|
keyboardSimulator.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.CONTROL);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string Name
|
private void OnWinRPressed()
|
||||||
{
|
{
|
||||||
get { return "Shell"; }
|
context.API.ShowApp();
|
||||||
}
|
context.API.ChangeQuery(">");
|
||||||
|
|
||||||
public override string IcoPath
|
|
||||||
{
|
|
||||||
get { return @"Images\cmd.png"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string Description
|
|
||||||
{
|
|
||||||
get { return "Provide executing commands from Wox. Commands should start with >"; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Control CreateSettingPanel()
|
public Control CreateSettingPanel()
|
||||||
{
|
{
|
||||||
return new CMDSetting();
|
return new CMDSetting();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string GetLanguagesFolder()
|
||||||
|
{
|
||||||
|
return Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Languages");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
<UserControl x:Class="Wox.Plugin.SystemPlugins.CMD.CMDSetting"
|
<UserControl x:Class="Wox.Plugin.CMD.CMDSetting"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
@ -13,11 +13,11 @@
|
|||||||
<RowDefinition></RowDefinition>
|
<RowDefinition></RowDefinition>
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<StackPanel Grid.Row="0" Orientation="Horizontal">
|
<StackPanel Grid.Row="0" Orientation="Horizontal">
|
||||||
<CheckBox x:Name="cbReplaceWinR" >Replace Win+R</CheckBox>
|
<CheckBox x:Name="cbReplaceWinR" Content="{DynamicResource wox_plugin_cmd_relace_winr}" ></CheckBox>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Grid.Row="1" Orientation="Horizontal" Margin="0 10 0 0">
|
<StackPanel Grid.Row="1" Orientation="Horizontal" Margin="0 10 0 0">
|
||||||
<CheckBox x:Name="cbLeaveCmdOpen" >
|
<CheckBox x:Name="cbLeaveCmdOpen" Content="{DynamicResource wox_plugin_cmd_leave_cmd_open}">
|
||||||
Do not close Command Prompt after command execution
|
|
||||||
</CheckBox>
|
</CheckBox>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
42
Plugins/Wox.Plugin.CMD/CMDSetting.xaml.cs
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
|
||||||
|
namespace Wox.Plugin.CMD
|
||||||
|
{
|
||||||
|
public partial class CMDSetting : UserControl
|
||||||
|
{
|
||||||
|
public CMDSetting()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CMDSetting_OnLoaded(object sender, RoutedEventArgs re)
|
||||||
|
{
|
||||||
|
cbReplaceWinR.IsChecked = CMDStorage.Instance.ReplaceWinR;
|
||||||
|
cbLeaveCmdOpen.IsChecked = CMDStorage.Instance.LeaveCmdOpen;
|
||||||
|
|
||||||
|
cbLeaveCmdOpen.Checked += (o, e) =>
|
||||||
|
{
|
||||||
|
CMDStorage.Instance.LeaveCmdOpen = true;
|
||||||
|
CMDStorage.Instance.Save();
|
||||||
|
};
|
||||||
|
|
||||||
|
cbLeaveCmdOpen.Unchecked += (o, e) =>
|
||||||
|
{
|
||||||
|
CMDStorage.Instance.LeaveCmdOpen = false;
|
||||||
|
CMDStorage.Instance.Save();
|
||||||
|
};
|
||||||
|
|
||||||
|
cbReplaceWinR.Checked += (o, e) =>
|
||||||
|
{
|
||||||
|
CMDStorage.Instance.ReplaceWinR = true;
|
||||||
|
CMDStorage.Instance.Save();
|
||||||
|
};
|
||||||
|
cbReplaceWinR.Unchecked += (o, e) =>
|
||||||
|
{
|
||||||
|
CMDStorage.Instance.ReplaceWinR = false;
|
||||||
|
CMDStorage.Instance.Save();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,22 +1,38 @@
|
|||||||
using System;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Generic;
|
using System.Reflection;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Wox.Infrastructure.Storage;
|
using Wox.Infrastructure.Storage;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
namespace Wox.Plugin.SystemPlugins.CMD
|
namespace Wox.Plugin.CMD
|
||||||
{
|
{
|
||||||
public class CMDStorage : JsonStrorage<CMDStorage>
|
public class CMDStorage : JsonStrorage<CMDStorage>
|
||||||
{
|
{
|
||||||
|
[JsonProperty]
|
||||||
|
public bool ReplaceWinR { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty]
|
||||||
|
public bool LeaveCmdOpen { get; set; }
|
||||||
|
|
||||||
[JsonProperty]
|
[JsonProperty]
|
||||||
public Dictionary<string, int> CMDHistory = new Dictionary<string, int>();
|
public Dictionary<string, int> CMDHistory = new Dictionary<string, int>();
|
||||||
|
|
||||||
|
protected override string ConfigFolder
|
||||||
|
{
|
||||||
|
get { return Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); }
|
||||||
|
}
|
||||||
|
|
||||||
protected override string ConfigName
|
protected override string ConfigName
|
||||||
{
|
{
|
||||||
get { return "CMDHistory"; }
|
get { return "CMDHistory"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override CMDStorage LoadDefault()
|
||||||
|
{
|
||||||
|
ReplaceWinR = true;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public void AddCmdHistory(string cmdName)
|
public void AddCmdHistory(string cmdName)
|
||||||
{
|
{
|
||||||
if (CMDHistory.ContainsKey(cmdName))
|
if (CMDHistory.ContainsKey(cmdName))
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
8
Plugins/Wox.Plugin.CMD/Languages/en.xaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
||||||
|
|
||||||
|
<system:String x:Key="wox_plugin_cmd_relace_winr">Replace Win+R</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_cmd_leave_cmd_open">Do not close Command Prompt after command execution</system:String>
|
||||||
|
|
||||||
|
</ResourceDictionary>
|
8
Plugins/Wox.Plugin.CMD/Languages/zh-cn.xaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
||||||
|
|
||||||
|
<system:String x:Key="wox_plugin_cmd_relace_winr">替换 Win+R</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_cmd_leave_cmd_open">执行后不关闭命令窗口</system:String>
|
||||||
|
|
||||||
|
</ResourceDictionary>
|
8
Plugins/Wox.Plugin.CMD/Languages/zh-tw.xaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
||||||
|
|
||||||
|
<system:String x:Key="wox_plugin_cmd_relace_winr">替換 Win+R</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_cmd_leave_cmd_open">執行後不關閉命令窗口</system:String>
|
||||||
|
|
||||||
|
</ResourceDictionary>
|
36
Plugins/Wox.Plugin.CMD/Properties/AssemblyInfo.cs
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// 有关程序集的常规信息通过以下
|
||||||
|
// 特性集控制。更改这些特性值可修改
|
||||||
|
// 与程序集关联的信息。
|
||||||
|
[assembly: AssemblyTitle("Wox.Plugin.CMD")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("Wox.Plugin.CMD")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2015")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// 将 ComVisible 设置为 false 使此程序集中的类型
|
||||||
|
// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
|
||||||
|
// 则将该类型上的 ComVisible 特性设置为 true。
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
||||||
|
[assembly: Guid("9283a32d-5d3c-4231-96e0-2150ed4716b9")]
|
||||||
|
|
||||||
|
// 程序集的版本信息由下面四个值组成:
|
||||||
|
//
|
||||||
|
// 主版本
|
||||||
|
// 次版本
|
||||||
|
// 生成号
|
||||||
|
// 修订号
|
||||||
|
//
|
||||||
|
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
|
||||||
|
// 方法是按如下所示使用“*”:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
@ -4,128 +4,108 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
<ProjectGuid>{C9BC17A0-C2BC-4185-AC1F-32E3352C1233}</ProjectGuid>
|
<ProjectGuid>{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}</ProjectGuid>
|
||||||
<OutputType>WinExe</OutputType>
|
<OutputType>Library</OutputType>
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>Wox.UAC</RootNamespace>
|
<RootNamespace>Wox.Plugin.CMD</RootNamespace>
|
||||||
<AssemblyName>Wox.UAC</AssemblyName>
|
<AssemblyName>Wox.Plugin.CMD</AssemblyName>
|
||||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
|
|
||||||
<RestorePackages>true</RestorePackages>
|
<RestorePackages>true</RestorePackages>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
<DebugType>full</DebugType>
|
<DebugType>full</DebugType>
|
||||||
<Optimize>false</Optimize>
|
<Optimize>false</Optimize>
|
||||||
<OutputPath>..\Output\Debug\</OutputPath>
|
<OutputPath>..\..\Output\Debug\Plugins\Wox.Plugin.CMD\</OutputPath>
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
|
||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>pdbonly</DebugType>
|
||||||
<Optimize>true</Optimize>
|
<Optimize>true</Optimize>
|
||||||
<OutputPath>..\Output\Release\</OutputPath>
|
<OutputPath>..\..\Output\Release\Plugins\Wox.Plugin.CMD\</OutputPath>
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
<PropertyGroup>
|
|
||||||
<ApplicationIcon>app.ico</ApplicationIcon>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup>
|
|
||||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="log4net">
|
|
||||||
<HintPath>..\packages\log4net.2.0.3\lib\net35-full\log4net.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Newtonsoft.Json">
|
<Reference Include="Newtonsoft.Json">
|
||||||
<HintPath>..\packages\Newtonsoft.Json.5.0.8\lib\net35\Newtonsoft.Json.dll</HintPath>
|
<HintPath>..\..\packages\Newtonsoft.Json.6.0.8\lib\net35\Newtonsoft.Json.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
|
||||||
<Reference Include="System.Data" />
|
|
||||||
<Reference Include="System.Windows.Forms" />
|
|
||||||
<Reference Include="System.Xml" />
|
|
||||||
<Reference Include="System.Core" />
|
|
||||||
<Reference Include="System.Xml.Linq" />
|
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
|
||||||
<Reference Include="WindowsBase" />
|
|
||||||
<Reference Include="PresentationCore" />
|
<Reference Include="PresentationCore" />
|
||||||
<Reference Include="PresentationFramework" />
|
<Reference Include="PresentationFramework" />
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Windows.Forms" />
|
||||||
|
<Reference Include="System.Xaml" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
<Reference Include="WindowsBase" />
|
||||||
|
<Reference Include="WindowsInput, Version=0.2.0.0, Culture=neutral, PublicKeyToken=9b287f7dc5073cad, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\packages\WindowsInput.0.2.0.0\lib\net20\WindowsInput.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ApplicationDefinition Include="App.xaml">
|
<Compile Include="CMD.cs" />
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Compile Include="CMDSetting.xaml.cs">
|
||||||
<SubType>Designer</SubType>
|
<DependentUpon>CMDSetting.xaml</DependentUpon>
|
||||||
</ApplicationDefinition>
|
</Compile>
|
||||||
<Page Include="MainWindow.xaml">
|
<Compile Include="CMDStorage.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Page Include="CMDSetting.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</Page>
|
</Page>
|
||||||
<Compile Include="App.xaml.cs">
|
<Content Include="Languages\en.xaml">
|
||||||
<DependentUpon>App.xaml</DependentUpon>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
<SubType>Code</SubType>
|
<SubType>Designer</SubType>
|
||||||
</Compile>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
<Compile Include="MainWindow.xaml.cs">
|
</Content>
|
||||||
<DependentUpon>MainWindow.xaml</DependentUpon>
|
<None Include="Languages\zh-cn.xaml">
|
||||||
<SubType>Code</SubType>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Compile>
|
<SubType>Designer</SubType>
|
||||||
</ItemGroup>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
<ItemGroup>
|
</None>
|
||||||
<Compile Include="FileTypeAssociateInstaller.cs" />
|
<None Include="Languages\zh-tw.xaml">
|
||||||
<Compile Include="Properties\AssemblyInfo.cs">
|
<Generator>MSBuild:Compile</Generator>
|
||||||
<SubType>Code</SubType>
|
<SubType>Designer</SubType>
|
||||||
</Compile>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
<Compile Include="Properties\Resources.Designer.cs">
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<DependentUpon>Resources.resx</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Properties\Settings.Designer.cs">
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DependentUpon>Settings.settings</DependentUpon>
|
|
||||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
|
||||||
</Compile>
|
|
||||||
<EmbeddedResource Include="Properties\Resources.resx">
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<None Include="app.manifest" />
|
|
||||||
<None Include="packages.config" />
|
|
||||||
<None Include="Properties\Settings.settings">
|
|
||||||
<Generator>SettingsSingleFileGenerator</Generator>
|
|
||||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
|
||||||
</None>
|
</None>
|
||||||
<AppDesigner Include="Properties\" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\Wox.Infrastructure\Wox.Infrastructure.csproj">
|
<ProjectReference Include="..\..\Wox.Infrastructure\Wox.Infrastructure.csproj">
|
||||||
<Project>{4fd29318-a8ab-4d8f-aa47-60bc241b8da3}</Project>
|
<Project>{4fd29318-a8ab-4d8f-aa47-60bc241b8da3}</Project>
|
||||||
<Name>Wox.Infrastructure</Name>
|
<Name>Wox.Infrastructure</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\Wox.Plugin\Wox.Plugin.csproj">
|
<ProjectReference Include="..\..\Wox.Plugin\Wox.Plugin.csproj">
|
||||||
<Project>{8451ecdd-2ea4-4966-bb0a-7bbc40138e80}</Project>
|
<Project>{8451ecdd-2ea4-4966-bb0a-7bbc40138e80}</Project>
|
||||||
<Name>Wox.Plugin</Name>
|
<Name>Wox.Plugin</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Resource Include="app.ico" />
|
<None Include="packages.config" />
|
||||||
|
<None Include="plugin.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Images\cmd.png">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<PropertyGroup>
|
|
||||||
<PostBuildEvent>
|
|
||||||
</PostBuildEvent>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
|
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
|
||||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
5
Plugins/Wox.Plugin.CMD/packages.config
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net35" />
|
||||||
|
<package id="WindowsInput" version="0.2.0.0" targetFramework="net35" />
|
||||||
|
</packages>
|
12
Plugins/Wox.Plugin.CMD/plugin.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"ID":"D409510CD0D2481F853690A07E6DC426",
|
||||||
|
"ActionKeyword":"*",
|
||||||
|
"Name":"Shell",
|
||||||
|
"Description":"Provide executing commands from Wox. Commands should start with >",
|
||||||
|
"Author":"qianlifeng",
|
||||||
|
"Version":"1.0.0",
|
||||||
|
"Language":"csharp",
|
||||||
|
"Website":"http://www.getwox.com/plugin",
|
||||||
|
"ExecuteFileName":"Wox.Plugin.CMD.dll",
|
||||||
|
"IcoPath":"Images\\cmd.png"
|
||||||
|
}
|
@ -1,16 +1,11 @@
|
|||||||
using System;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Reflection;
|
|
||||||
using System.Text;
|
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Windows.Forms;
|
using System.Windows;
|
||||||
using YAMP;
|
using YAMP;
|
||||||
|
|
||||||
namespace Wox.Plugin.SystemPlugins
|
namespace Wox.Plugin.Caculator
|
||||||
{
|
{
|
||||||
public class Calculator : BaseSystemPlugin
|
public class Calculator : IPlugin
|
||||||
{
|
{
|
||||||
private static Regex regValidExpressChar = new Regex(
|
private static Regex regValidExpressChar = new Regex(
|
||||||
@"^(" +
|
@"^(" +
|
||||||
@ -31,7 +26,7 @@ namespace Wox.Plugin.SystemPlugins
|
|||||||
Parser.UseScripting = false;
|
Parser.UseScripting = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override List<Result> QueryInternal(Query query)
|
public List<Result> Query(Query query)
|
||||||
{
|
{
|
||||||
if (query.RawQuery.Length <= 2 // don't affect when user only input "e" or "i" keyword
|
if (query.RawQuery.Length <= 2 // don't affect when user only input "e" or "i" keyword
|
||||||
|| !regValidExpressChar.IsMatch(query.RawQuery)
|
|| !regValidExpressChar.IsMatch(query.RawQuery)
|
||||||
@ -88,32 +83,9 @@ namespace Wox.Plugin.SystemPlugins
|
|||||||
return leftBracketCount == 0;
|
return leftBracketCount == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void InitInternal(PluginInitContext context)
|
public void Init(PluginInitContext context)
|
||||||
{
|
{
|
||||||
this.context = context;
|
this.context = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string ID
|
|
||||||
{
|
|
||||||
get { return "CEA0FDFC6D3B4085823D60DC76F28855"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string Name
|
|
||||||
{
|
|
||||||
get { return "Calculator"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string IcoPath
|
|
||||||
{
|
|
||||||
get { return @"Images\calculator.png"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string Description
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return "Provide mathematical calculations.(Try 5*3-2 in Wox)";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
36
Plugins/Wox.Plugin.Caculator/Properties/AssemblyInfo.cs
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// 有关程序集的常规信息通过以下
|
||||||
|
// 特性集控制。更改这些特性值可修改
|
||||||
|
// 与程序集关联的信息。
|
||||||
|
[assembly: AssemblyTitle("Wox.Plugin.Caculator")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("Wox.Plugin.Caculator")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2015")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// 将 ComVisible 设置为 false 使此程序集中的类型
|
||||||
|
// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
|
||||||
|
// 则将该类型上的 ComVisible 特性设置为 true。
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
||||||
|
[assembly: Guid("ba698b90-59ed-4c2e-bce1-497eb2f9e76f")]
|
||||||
|
|
||||||
|
// 程序集的版本信息由下面四个值组成:
|
||||||
|
//
|
||||||
|
// 主版本
|
||||||
|
// 次版本
|
||||||
|
// 生成号
|
||||||
|
// 修订号
|
||||||
|
//
|
||||||
|
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
|
||||||
|
// 方法是按如下所示使用“*”:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
91
Plugins/Wox.Plugin.Caculator/Wox.Plugin.Caculator.csproj
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{59BD9891-3837-438A-958D-ADC7F91F6F7E}</ProjectGuid>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>Wox.Plugin.Caculator</RootNamespace>
|
||||||
|
<AssemblyName>Wox.Plugin.Caculator</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
|
||||||
|
<RestorePackages>true</RestorePackages>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>..\..\Output\Debug\Plugins\Wox.Plugin.Caculator\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>..\..\Output\Release\Plugins\Wox.Plugin.Caculator\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="PresentationCore" />
|
||||||
|
<Reference Include="PresentationFramework" />
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
<Reference Include="YAMP, Version=1.4.0.22422, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\packages\YAMP.1.4.0\lib\net35\YAMP.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Calculator.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="packages.config" />
|
||||||
|
<None Include="plugin.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\Wox.Infrastructure\Wox.Infrastructure.csproj">
|
||||||
|
<Project>{4fd29318-a8ab-4d8f-aa47-60bc241b8da3}</Project>
|
||||||
|
<Name>Wox.Infrastructure</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\..\Wox.Plugin\Wox.Plugin.csproj">
|
||||||
|
<Project>{8451ecdd-2ea4-4966-bb0a-7bbc40138e80}</Project>
|
||||||
|
<Name>Wox.Plugin</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Images\calculator.png">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
|
||||||
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。启用“NuGet 程序包还原”可下载这些程序包。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
|
||||||
|
</Target>
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
|
</Project>
|
4
Plugins/Wox.Plugin.Caculator/packages.config
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="YAMP" version="1.4.0" targetFramework="net35" />
|
||||||
|
</packages>
|
12
Plugins/Wox.Plugin.Caculator/plugin.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"ID":"CEA0FDFC6D3B4085823D60DC76F28855",
|
||||||
|
"ActionKeyword":"*",
|
||||||
|
"Name":"Calculator",
|
||||||
|
"Description":"Provide mathematical calculations.(Try 5*3-2 in Wox)",
|
||||||
|
"Author":"cxfksword",
|
||||||
|
"Version":"1.0.0",
|
||||||
|
"Language":"csharp",
|
||||||
|
"Website":"http://www.getwox.com/plugin",
|
||||||
|
"ExecuteFileName":"Wox.Plugin.Caculator.dll",
|
||||||
|
"IcoPath":"Images\\calculator.png"
|
||||||
|
}
|
@ -6,9 +6,9 @@ using System.IO;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
|
|
||||||
namespace Wox.Plugin.SystemPlugins
|
namespace Wox.Plugin.Color
|
||||||
{
|
{
|
||||||
public sealed class ColorsPlugin : BaseSystemPlugin
|
public sealed class ColorsPlugin : IPlugin
|
||||||
{
|
{
|
||||||
private string DIR_PATH = Path.Combine(Path.GetTempPath(), @"Plugins\Colors\");
|
private string DIR_PATH = Path.Combine(Path.GetTempPath(), @"Plugins\Colors\");
|
||||||
private const int IMG_SIZE = 32;
|
private const int IMG_SIZE = 32;
|
||||||
@ -27,7 +27,7 @@ namespace Wox.Plugin.SystemPlugins
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override List<Result> QueryInternal(Query query)
|
public List<Result> Query(Query query)
|
||||||
{
|
{
|
||||||
var raw = query.RawQuery;
|
var raw = query.RawQuery;
|
||||||
if (!IsAvailable(raw)) return new List<Result>(0);
|
if (!IsAvailable(raw)) return new List<Result>(0);
|
||||||
@ -101,30 +101,7 @@ namespace Wox.Plugin.SystemPlugins
|
|||||||
return string.Format("{0}{1}.png", ColorsDirectory.FullName, name.Substring(1));
|
return string.Format("{0}{1}.png", ColorsDirectory.FullName, name.Substring(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string ID
|
public void Init(PluginInitContext context)
|
||||||
{
|
|
||||||
get { return "9B36CE6181FC47FBB597AA2C29CD9B0A"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string Name
|
|
||||||
{
|
|
||||||
get { return "Colors"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string Description
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return "Provide hex color preview.(Try #000 in Wox)";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string IcoPath
|
|
||||||
{
|
|
||||||
get { return "Images/color2.png"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void InitInternal(PluginInitContext context)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
36
Plugins/Wox.Plugin.Color/Properties/AssemblyInfo.cs
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// 有关程序集的常规信息通过以下
|
||||||
|
// 特性集控制。更改这些特性值可修改
|
||||||
|
// 与程序集关联的信息。
|
||||||
|
[assembly: AssemblyTitle("Wox.Plugin.Color")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("Wox.Plugin.Color")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2015")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// 将 ComVisible 设置为 false 使此程序集中的类型
|
||||||
|
// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
|
||||||
|
// 则将该类型上的 ComVisible 特性设置为 true。
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
||||||
|
[assembly: Guid("46b03f84-5bf7-4ed4-a69b-f0274c8b3776")]
|
||||||
|
|
||||||
|
// 程序集的版本信息由下面四个值组成:
|
||||||
|
//
|
||||||
|
// 主版本
|
||||||
|
// 次版本
|
||||||
|
// 生成号
|
||||||
|
// 修订号
|
||||||
|
//
|
||||||
|
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
|
||||||
|
// 方法是按如下所示使用“*”:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
73
Plugins/Wox.Plugin.Color/Wox.Plugin.Color.csproj
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{F35190AA-4758-4D9E-A193-E3BDF6AD3567}</ProjectGuid>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>Wox.Plugin.Color</RootNamespace>
|
||||||
|
<AssemblyName>Wox.Plugin.Color</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>..\..\Output\Debug\Plugins\Wox.Plugin.Color\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>..\..\Output\Release\Plugins\Wox.Plugin.Color\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="PresentationCore" />
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Drawing" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Color.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Images\color.png">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="plugin.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\Wox.Plugin\Wox.Plugin.csproj">
|
||||||
|
<Project>{8451ecdd-2ea4-4966-bb0a-7bbc40138e80}</Project>
|
||||||
|
<Name>Wox.Plugin</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
|
</Project>
|
12
Plugins/Wox.Plugin.Color/plugin.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"ID":"9B36CE6181FC47FBB597AA2C29CD9B0A",
|
||||||
|
"ActionKeyword":"*",
|
||||||
|
"Name":"Colors",
|
||||||
|
"Description":"Provide hex color preview.(Try #000 in Wox)",
|
||||||
|
"Author":"qianlifeng",
|
||||||
|
"Version":"1.0.0",
|
||||||
|
"Language":"csharp",
|
||||||
|
"Website":"http://www.getwox.com/plugin",
|
||||||
|
"ExecuteFileName":"Wox.Plugin.Color.dll",
|
||||||
|
"IcoPath":"Images\\color.png"
|
||||||
|
}
|
@ -5,42 +5,20 @@ using System.IO;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Wox.Infrastructure;
|
using Wox.Infrastructure;
|
||||||
|
|
||||||
namespace Wox.Plugin.SystemPlugins.ControlPanel
|
namespace Wox.Plugin.ControlPanel
|
||||||
{
|
{
|
||||||
public class ControlPanel : BaseSystemPlugin
|
public class ControlPanel : IPlugin
|
||||||
{
|
{
|
||||||
#region Properties
|
|
||||||
|
|
||||||
private PluginInitContext context;
|
private PluginInitContext context;
|
||||||
|
|
||||||
public override string Description
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return "Search within the Control Panel.";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string ID
|
|
||||||
{
|
|
||||||
get { return "209621585B9B4D81813913C507C058C6"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string Name { get { return "Control Panel"; } }
|
|
||||||
|
|
||||||
public override string IcoPath { get { return @"Images\ControlPanel.png"; } }
|
|
||||||
|
|
||||||
private List<ControlPanelItem> controlPanelItems = new List<ControlPanelItem>();
|
private List<ControlPanelItem> controlPanelItems = new List<ControlPanelItem>();
|
||||||
private string iconFolder;
|
private string iconFolder;
|
||||||
private string fileType;
|
private string fileType;
|
||||||
|
|
||||||
#endregion Properties
|
public void Init(PluginInitContext context)
|
||||||
|
|
||||||
protected override void InitInternal(PluginInitContext context)
|
|
||||||
{
|
{
|
||||||
this.context = context;
|
this.context = context;
|
||||||
controlPanelItems = ControlPanelList.Create(48);
|
controlPanelItems = ControlPanelList.Create(48);
|
||||||
iconFolder = @"Images\ControlPanelIcons\";
|
iconFolder = Path.Combine(context.CurrentPluginMetadata.PluginDirectory, @"Images\ControlPanelIcons\");
|
||||||
fileType = ".bmp";
|
fileType = ".bmp";
|
||||||
|
|
||||||
if (!Directory.Exists(iconFolder))
|
if (!Directory.Exists(iconFolder))
|
||||||
@ -58,7 +36,7 @@ namespace Wox.Plugin.SystemPlugins.ControlPanel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override List<Result> QueryInternal(Query query)
|
public List<Result> Query(Query query)
|
||||||
{
|
{
|
||||||
if (query.RawQuery.EndsWith(" ") || query.RawQuery.Length <= 1) return new List<Result>();
|
if (query.RawQuery.EndsWith(" ") || query.RawQuery.Length <= 1) return new List<Result>();
|
||||||
string myQuery = query.RawQuery.Trim();
|
string myQuery = query.RawQuery.Trim();
|
||||||
@ -75,7 +53,7 @@ namespace Wox.Plugin.SystemPlugins.ControlPanel
|
|||||||
Title = item.LocalizedString,
|
Title = item.LocalizedString,
|
||||||
SubTitle = item.InfoTip,
|
SubTitle = item.InfoTip,
|
||||||
Score = item.Score,
|
Score = item.Score,
|
||||||
IcoPath = "Images\\ControlPanelIcons\\" + item.GUID + fileType,
|
IcoPath = Path.Combine(context.CurrentPluginMetadata.PluginDirectory, @"Images\\ControlPanelIcons\\" + item.GUID + fileType),
|
||||||
Action = e =>
|
Action = e =>
|
||||||
{
|
{
|
||||||
try
|
try
|
@ -1,7 +1,7 @@
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
|
||||||
namespace Wox.Plugin.SystemPlugins.ControlPanel
|
namespace Wox.Plugin.ControlPanel
|
||||||
{
|
{
|
||||||
//from:https://raw.githubusercontent.com/CoenraadS/Windows-Control-Panel-Items
|
//from:https://raw.githubusercontent.com/CoenraadS/Windows-Control-Panel-Items
|
||||||
public class ControlPanelItem
|
public class ControlPanelItem
|
@ -1,12 +1,12 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
|
||||||
using Microsoft.Win32;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Text;
|
||||||
|
using Microsoft.Win32;
|
||||||
|
|
||||||
namespace Wox.Plugin.SystemPlugins.ControlPanel
|
namespace Wox.Plugin.ControlPanel
|
||||||
{
|
{
|
||||||
//from:https://raw.githubusercontent.com/CoenraadS/Windows-Control-Panel-Items
|
//from:https://raw.githubusercontent.com/CoenraadS/Windows-Control-Panel-Items
|
||||||
public static class ControlPanelList
|
public static class ControlPanelList
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
36
Plugins/Wox.Plugin.ControlPanel/Properties/AssemblyInfo.cs
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// 有关程序集的常规信息通过以下
|
||||||
|
// 特性集控制。更改这些特性值可修改
|
||||||
|
// 与程序集关联的信息。
|
||||||
|
[assembly: AssemblyTitle("Wox.Plugin.ControlPanel")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("Wox.Plugin.ControlPanel")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2015")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// 将 ComVisible 设置为 false 使此程序集中的类型
|
||||||
|
// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
|
||||||
|
// 则将该类型上的 ComVisible 特性设置为 true。
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
||||||
|
[assembly: Guid("59141b10-8941-4e90-a0a6-bc9385a04cc6")]
|
||||||
|
|
||||||
|
// 程序集的版本信息由下面四个值组成:
|
||||||
|
//
|
||||||
|
// 主版本
|
||||||
|
// 次版本
|
||||||
|
// 生成号
|
||||||
|
// 修订号
|
||||||
|
//
|
||||||
|
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
|
||||||
|
// 方法是按如下所示使用“*”:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
@ -0,0 +1,78 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{1EE20B48-82FB-48A2-8086-675D6DDAB4F0}</ProjectGuid>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>Wox.Plugin.ControlPanel</RootNamespace>
|
||||||
|
<AssemblyName>Wox.Plugin.ControlPanel</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>..\..\Output\Debug\Plugins\Wox.Plugin.ControlPanel\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>..\..\Output\Release\Plugins\Wox.Plugin.ControlPanel\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Drawing" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="ControlPanel.cs" />
|
||||||
|
<Compile Include="ControlPanelItem.cs" />
|
||||||
|
<Compile Include="ControlPanelList.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="plugin.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\Wox.Infrastructure\Wox.Infrastructure.csproj">
|
||||||
|
<Project>{4fd29318-a8ab-4d8f-aa47-60bc241b8da3}</Project>
|
||||||
|
<Name>Wox.Infrastructure</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\..\Wox.Plugin\Wox.Plugin.csproj">
|
||||||
|
<Project>{8451ecdd-2ea4-4966-bb0a-7bbc40138e80}</Project>
|
||||||
|
<Name>Wox.Plugin</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Images\ControlPanel.png">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
|
</Project>
|
12
Plugins/Wox.Plugin.ControlPanel/plugin.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"ID":"209621585B9B4D81813913C507C058C6",
|
||||||
|
"ActionKeyword":"*",
|
||||||
|
"Name":"Control Panel",
|
||||||
|
"Description":"Search within the Control Panel.",
|
||||||
|
"Author":"CoenraadS",
|
||||||
|
"Version":"1.0.0",
|
||||||
|
"Language":"csharp",
|
||||||
|
"Website":"http://www.getwox.com/plugin",
|
||||||
|
"ExecuteFileName":"Wox.Plugin.ControlPanel.dll",
|
||||||
|
"IcoPath":"Images\\ControlPanel.png"
|
||||||
|
}
|
@ -1,11 +1,10 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace Wox.Infrastructure.Storage.UserSettings
|
namespace Wox.Plugin.Folder
|
||||||
{
|
{
|
||||||
|
[Serializable]
|
||||||
public class FolderLink
|
public class FolderLink
|
||||||
{
|
{
|
||||||
[JsonProperty]
|
[JsonProperty]
|
@ -3,59 +3,35 @@ using System.Collections.Generic;
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Windows.Forms;
|
using System.Reflection;
|
||||||
using Wox.Infrastructure.Storage.UserSettings;
|
using System.Windows;
|
||||||
using Control = System.Windows.Controls.Control;
|
using Control = System.Windows.Controls.Control;
|
||||||
|
|
||||||
namespace Wox.Plugin.SystemPlugins.Folder
|
namespace Wox.Plugin.Folder
|
||||||
{
|
{
|
||||||
public class FolderPlugin : BaseSystemPlugin, ISettingProvider
|
public class FolderPlugin : IPlugin, ISettingProvider,IPluginI18n
|
||||||
{
|
{
|
||||||
#region Properties
|
|
||||||
|
|
||||||
private static List<string> driverNames;
|
private static List<string> driverNames;
|
||||||
private PluginInitContext context;
|
private PluginInitContext context;
|
||||||
|
|
||||||
public override string Description
|
|
||||||
{
|
|
||||||
get { return "Provide opening folder from wox directorily. You can add your favorite folders."; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string ID
|
|
||||||
{
|
|
||||||
get { return "B4D3B69656E14D44865C8D818EAE47C4"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string Name
|
|
||||||
{
|
|
||||||
get { return "Folder"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string IcoPath
|
|
||||||
{
|
|
||||||
get { return @"Images\folder.png"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion Properties
|
|
||||||
|
|
||||||
public Control CreateSettingPanel()
|
public Control CreateSettingPanel()
|
||||||
{
|
{
|
||||||
return new FileSystemSettings();
|
return new FileSystemSettings(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void InitInternal(PluginInitContext context)
|
public void Init(PluginInitContext context)
|
||||||
{
|
{
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.context.API.BackKeyDownEvent += ApiBackKeyDownEvent;
|
this.context.API.BackKeyDownEvent += ApiBackKeyDownEvent;
|
||||||
InitialDriverList();
|
InitialDriverList();
|
||||||
if (UserSettingStorage.Instance.FolderLinks == null)
|
if (FolderStorage.Instance.FolderLinks == null)
|
||||||
{
|
{
|
||||||
UserSettingStorage.Instance.FolderLinks = new List<FolderLink>();
|
FolderStorage.Instance.FolderLinks = new List<FolderLink>();
|
||||||
UserSettingStorage.Instance.Save();
|
FolderStorage.Instance.Save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ApiBackKeyDownEvent(object sender, WoxKeyDownEventArgs e)
|
private void ApiBackKeyDownEvent(WoxKeyDownEventArgs e)
|
||||||
{
|
{
|
||||||
string query = e.Query;
|
string query = e.Query;
|
||||||
if (Directory.Exists(query))
|
if (Directory.Exists(query))
|
||||||
@ -75,11 +51,12 @@ namespace Wox.Plugin.SystemPlugins.Folder
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override List<Result> QueryInternal(Query query)
|
public List<Result> Query(Query query)
|
||||||
{
|
{
|
||||||
|
if(string.IsNullOrEmpty(query.RawQuery)) return new List<Result>();
|
||||||
string input = query.RawQuery.ToLower();
|
string input = query.RawQuery.ToLower();
|
||||||
|
|
||||||
List<FolderLink> userFolderLinks = UserSettingStorage.Instance.FolderLinks.Where(
|
List<FolderLink> userFolderLinks = FolderStorage.Instance.FolderLinks.Where(
|
||||||
x => x.Nickname.StartsWith(input, StringComparison.OrdinalIgnoreCase)).ToList();
|
x => x.Nickname.StartsWith(input, StringComparison.OrdinalIgnoreCase)).ToList();
|
||||||
List<Result> results =
|
List<Result> results =
|
||||||
userFolderLinks.Select(
|
userFolderLinks.Select(
|
||||||
@ -105,7 +82,7 @@ namespace Wox.Plugin.SystemPlugins.Folder
|
|||||||
}
|
}
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
if (!driverNames.Any(input.StartsWith))
|
if (driverNames != null && !driverNames.Any(input.StartsWith))
|
||||||
return results;
|
return results;
|
||||||
|
|
||||||
if (!input.EndsWith("\\"))
|
if (!input.EndsWith("\\"))
|
||||||
@ -207,5 +184,10 @@ namespace Wox.Plugin.SystemPlugins.Folder
|
|||||||
|
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string GetLanguagesFolder()
|
||||||
|
{
|
||||||
|
return Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Languages");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,19 +1,21 @@
|
|||||||
<UserControl x:Class="Wox.Plugin.SystemPlugins.Folder.FileSystemSettings"
|
<UserControl x:Class="Wox.Plugin.Folder.FileSystemSettings"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
d:DesignHeight="300" d:DesignWidth="300">
|
d:DesignHeight="300" d:DesignWidth="500">
|
||||||
<Grid Margin="10">
|
<Grid Margin="10">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="*"/>
|
<RowDefinition Height="*"/>
|
||||||
<RowDefinition Height="50"/>
|
<RowDefinition Height="50"/>
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<ListView x:Name="lbxFolders" Grid.Row="0">
|
<ListView x:Name="lbxFolders" Grid.Row="0" AllowDrop="True"
|
||||||
|
Drop="lbxFolders_Drop"
|
||||||
|
DragEnter="lbxFolders_DragEnter">
|
||||||
<ListView.View>
|
<ListView.View>
|
||||||
<GridView>
|
<GridView>
|
||||||
<GridViewColumn Header="Folder Path" Width="180">
|
<GridViewColumn Header="{DynamicResource wox_plugin_folder_folder_path}" Width="180">
|
||||||
<GridViewColumn.CellTemplate>
|
<GridViewColumn.CellTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<TextBlock Text="{Binding Path}"/>
|
<TextBlock Text="{Binding Path}"/>
|
||||||
@ -24,9 +26,9 @@
|
|||||||
</ListView.View>
|
</ListView.View>
|
||||||
</ListView>
|
</ListView>
|
||||||
<StackPanel Grid.Row="1" HorizontalAlignment="Right" Orientation="Horizontal">
|
<StackPanel Grid.Row="1" HorizontalAlignment="Right" Orientation="Horizontal">
|
||||||
<Button x:Name="btnDelete" Click="btnDelete_Click" Width="100" Margin="10" Content="Delete"/>
|
<Button x:Name="btnDelete" Click="btnDelete_Click" Width="100" Margin="10" Content="{DynamicResource wox_plugin_folder_delete}"/>
|
||||||
<Button x:Name="btnEdit" Click="btnEdit_Click" Width="100" Margin="10" Content="Edit"/>
|
<Button x:Name="btnEdit" Click="btnEdit_Click" Width="100" Margin="10" Content="{DynamicResource wox_plugin_folder_edit}"/>
|
||||||
<Button x:Name="btnAdd" Click="btnAdd_Click" Width="100" Margin="10" Content="Add"/>
|
<Button x:Name="btnAdd" Click="btnAdd_Click" Width="100" Margin="10" Content="{DynamicResource wox_plugin_folder_add}"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
</UserControl>
|
</UserControl>
|
132
Plugins/Wox.Plugin.Folder/FolderPluginSettings.xaml.cs
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using MessageBox = System.Windows.MessageBox;
|
||||||
|
using UserControl = System.Windows.Controls.UserControl;
|
||||||
|
|
||||||
|
namespace Wox.Plugin.Folder
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Interaction logic for FileSystemSettings.xaml
|
||||||
|
/// </summary>
|
||||||
|
public partial class FileSystemSettings : UserControl
|
||||||
|
{
|
||||||
|
PluginInitContext context;
|
||||||
|
|
||||||
|
public FileSystemSettings(PluginInitContext context)
|
||||||
|
{
|
||||||
|
this.context = context;
|
||||||
|
InitializeComponent();
|
||||||
|
lbxFolders.ItemsSource = FolderStorage.Instance.FolderLinks;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void btnDelete_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
var selectedFolder = lbxFolders.SelectedItem as FolderLink;
|
||||||
|
if (selectedFolder != null)
|
||||||
|
{
|
||||||
|
string msg = string.Format(context.API.GetTranslation("wox_plugin_folder_delete_folder_link"), selectedFolder.Path);
|
||||||
|
|
||||||
|
if (MessageBox.Show(msg, string.Empty, MessageBoxButton.YesNo) == MessageBoxResult.Yes)
|
||||||
|
{
|
||||||
|
FolderStorage.Instance.FolderLinks.Remove(selectedFolder);
|
||||||
|
lbxFolders.Items.Refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string warning = context.API.GetTranslation("wox_plugin_folder_select_folder_link_warning");
|
||||||
|
MessageBox.Show(warning);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void btnEdit_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
var selectedFolder = lbxFolders.SelectedItem as FolderLink;
|
||||||
|
if (selectedFolder != null)
|
||||||
|
{
|
||||||
|
var folderBrowserDialog = new FolderBrowserDialog();
|
||||||
|
folderBrowserDialog.SelectedPath = selectedFolder.Path;
|
||||||
|
if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
var link = FolderStorage.Instance.FolderLinks.First(x => x.Path == selectedFolder.Path);
|
||||||
|
link.Path = folderBrowserDialog.SelectedPath;
|
||||||
|
|
||||||
|
FolderStorage.Instance.Save();
|
||||||
|
}
|
||||||
|
|
||||||
|
lbxFolders.Items.Refresh();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string warning = context.API.GetTranslation("wox_plugin_folder_select_folder_link_warning");
|
||||||
|
MessageBox.Show(warning);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void btnAdd_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
var folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog();
|
||||||
|
if (folderBrowserDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
||||||
|
{
|
||||||
|
var newFolder = new FolderLink()
|
||||||
|
{
|
||||||
|
Path = folderBrowserDialog.SelectedPath
|
||||||
|
};
|
||||||
|
|
||||||
|
if (FolderStorage.Instance.FolderLinks == null)
|
||||||
|
{
|
||||||
|
FolderStorage.Instance.FolderLinks = new List<FolderLink>();
|
||||||
|
}
|
||||||
|
|
||||||
|
FolderStorage.Instance.FolderLinks.Add(newFolder);
|
||||||
|
FolderStorage.Instance.Save();
|
||||||
|
}
|
||||||
|
|
||||||
|
lbxFolders.Items.Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void lbxFolders_Drop(object sender, System.Windows.DragEventArgs e)
|
||||||
|
{
|
||||||
|
string[] files = (string[])e.Data.GetData(System.Windows.DataFormats.FileDrop);
|
||||||
|
|
||||||
|
if (files != null && files.Count() > 0)
|
||||||
|
{
|
||||||
|
if (FolderStorage.Instance.FolderLinks == null)
|
||||||
|
{
|
||||||
|
FolderStorage.Instance.FolderLinks = new List<FolderLink>();
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (string s in files)
|
||||||
|
{
|
||||||
|
if (System.IO.Directory.Exists(s) == true)
|
||||||
|
{
|
||||||
|
var newFolder = new FolderLink()
|
||||||
|
{
|
||||||
|
Path = s
|
||||||
|
};
|
||||||
|
|
||||||
|
FolderStorage.Instance.FolderLinks.Add(newFolder);
|
||||||
|
FolderStorage.Instance.Save();
|
||||||
|
}
|
||||||
|
|
||||||
|
lbxFolders.Items.Refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void lbxFolders_DragEnter(object sender, System.Windows.DragEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Data.GetDataPresent(System.Windows.DataFormats.FileDrop))
|
||||||
|
{
|
||||||
|
e.Effects = System.Windows.DragDropEffects.Link;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
e.Effects = System.Windows.DragDropEffects.None;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
26
Plugins/Wox.Plugin.Folder/FolderStorage.cs
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Text;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Wox.Infrastructure.Storage;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace Wox.Plugin.Folder
|
||||||
|
{
|
||||||
|
public class FolderStorage : JsonStrorage<FolderStorage>
|
||||||
|
{
|
||||||
|
[JsonProperty]
|
||||||
|
public List<FolderLink> FolderLinks { get; set; }
|
||||||
|
protected override string ConfigFolder
|
||||||
|
{
|
||||||
|
get { return Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); }
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string ConfigName
|
||||||
|
{
|
||||||
|
get { return "setting"; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
12
Plugins/Wox.Plugin.Folder/Languages/en.xaml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
||||||
|
|
||||||
|
<system:String x:Key="wox_plugin_folder_delete">Delete</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_folder_edit">Edit</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_folder_add">Add</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_folder_folder_path">Folder Path</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_folder_select_folder_link_warning">Please select a folder link</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_folder_delete_folder_link">Are your sure to delete {0}?</system:String>
|
||||||
|
|
||||||
|
</ResourceDictionary>
|
12
Plugins/Wox.Plugin.Folder/Languages/zh-cn.xaml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
||||||
|
|
||||||
|
<system:String x:Key="wox_plugin_folder_delete">删除</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_folder_edit">编辑</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_folder_add">添加</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_folder_folder_path">文件夹路径</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_folder_select_folder_link_warning">请选择一个文件夹</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_folder_delete_folder_link">你确定要删除{0}吗?</system:String>
|
||||||
|
|
||||||
|
</ResourceDictionary>
|
12
Plugins/Wox.Plugin.Folder/Languages/zh-tw.xaml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
||||||
|
|
||||||
|
<system:String x:Key="wox_plugin_folder_delete">刪除</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_folder_edit">編輯</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_folder_add">添加</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_folder_folder_path">文件夾路徑</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_folder_select_folder_link_warning">請選擇一個文件夾</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_folder_delete_folder_link">你確認要刪除{0}嗎?</system:String>
|
||||||
|
|
||||||
|
</ResourceDictionary>
|
36
Plugins/Wox.Plugin.Folder/Properties/AssemblyInfo.cs
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// 有关程序集的常规信息通过以下
|
||||||
|
// 特性集控制。更改这些特性值可修改
|
||||||
|
// 与程序集关联的信息。
|
||||||
|
[assembly: AssemblyTitle("Wox.Plugin.Folder")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("Wox.Plugin.Folder")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2015")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// 将 ComVisible 设置为 false 使此程序集中的类型
|
||||||
|
// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
|
||||||
|
// 则将该类型上的 ComVisible 特性设置为 true。
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
||||||
|
[assembly: Guid("e047418e-f7b0-4a3a-b855-0bef7178179f")]
|
||||||
|
|
||||||
|
// 程序集的版本信息由下面四个值组成:
|
||||||
|
//
|
||||||
|
// 主版本
|
||||||
|
// 次版本
|
||||||
|
// 生成号
|
||||||
|
// 修订号
|
||||||
|
//
|
||||||
|
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
|
||||||
|
// 方法是按如下所示使用“*”:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
120
Plugins/Wox.Plugin.Folder/Wox.Plugin.Folder.csproj
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{787B8AA6-CA93-4C84-96FE-DF31110AD1C4}</ProjectGuid>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>Wox.Plugin.Folder</RootNamespace>
|
||||||
|
<AssemblyName>Wox.Plugin.Folder</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
|
||||||
|
<RestorePackages>true</RestorePackages>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>..\..\Output\Debug\Plugins\Wox.Plugin.Folder\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>..\..\Output\Release\Plugins\Wox.Plugin.Folder\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="Newtonsoft.Json">
|
||||||
|
<HintPath>..\..\packages\Newtonsoft.Json.6.0.8\lib\net35\Newtonsoft.Json.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="PresentationCore" />
|
||||||
|
<Reference Include="PresentationFramework" />
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Windows.Forms" />
|
||||||
|
<Reference Include="System.Xaml" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
<Reference Include="WindowsBase" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="FolderLink.cs" />
|
||||||
|
<Compile Include="FolderPlugin.cs" />
|
||||||
|
<Compile Include="FolderPluginSettings.xaml.cs">
|
||||||
|
<DependentUpon>FolderPluginSettings.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="FolderStorage.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="packages.config" />
|
||||||
|
<None Include="plugin.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Page Include="FolderPluginSettings.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Page>
|
||||||
|
<Content Include="Languages\en.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<None Include="Languages\zh-cn.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Include="Languages\zh-tw.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\Wox.Infrastructure\Wox.Infrastructure.csproj">
|
||||||
|
<Project>{4fd29318-a8ab-4d8f-aa47-60bc241b8da3}</Project>
|
||||||
|
<Name>Wox.Infrastructure</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\..\Wox.Plugin\Wox.Plugin.csproj">
|
||||||
|
<Project>{8451ecdd-2ea4-4966-bb0a-7bbc40138e80}</Project>
|
||||||
|
<Name>Wox.Plugin</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Images\folder.png">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
|
||||||
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。启用“NuGet 程序包还原”可下载这些程序包。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
|
||||||
|
</Target>
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
|
</Project>
|
4
Plugins/Wox.Plugin.Folder/packages.config
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net35" />
|
||||||
|
</packages>
|
12
Plugins/Wox.Plugin.Folder/plugin.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"ID":"B4D3B69656E14D44865C8D818EAE47C4",
|
||||||
|
"ActionKeyword":"*",
|
||||||
|
"Name":"Folder",
|
||||||
|
"Description":"Provide opening folder from wox directorily. You can add your favorite folders.",
|
||||||
|
"Author":"qianlifeng",
|
||||||
|
"Version":"1.0.0",
|
||||||
|
"Language":"csharp",
|
||||||
|
"Website":"http://www.getwox.com/plugin",
|
||||||
|
"ExecuteFileName":"Wox.Plugin.Folder.dll",
|
||||||
|
"IcoPath":"Images\\folder.png"
|
||||||
|
}
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
@ -1,23 +1,24 @@
|
|||||||
using System;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using Wox.Core.Plugin;
|
||||||
using Wox.Infrastructure;
|
using Wox.Core.UserSettings;
|
||||||
using Wox.Infrastructure.Storage;
|
|
||||||
using Wox.Infrastructure.Storage.UserSettings;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.SystemPlugins
|
namespace Wox.Plugin.PluginIndicator
|
||||||
{
|
{
|
||||||
public class ThirdpartyPluginIndicator : BaseSystemPlugin
|
public class PluginIndicator : IPlugin
|
||||||
{
|
{
|
||||||
private List<PluginPair> allPlugins = new List<PluginPair>();
|
private List<PluginPair> allPlugins = new List<PluginPair>();
|
||||||
private PluginInitContext context;
|
private PluginInitContext context;
|
||||||
|
|
||||||
protected override List<Result> QueryInternal(Query query)
|
public List<Result> Query(Query query)
|
||||||
{
|
{
|
||||||
List<Result> results = new List<Result>();
|
List<Result> results = new List<Result>();
|
||||||
if(allPlugins.Count == 0) allPlugins = context.API.GetAllPlugins();
|
if (string.IsNullOrEmpty(query.RawQuery)) return results;
|
||||||
|
|
||||||
|
if (allPlugins.Count == 0)
|
||||||
|
{
|
||||||
|
allPlugins = context.API.GetAllPlugins().Where(o => !PluginManager.IsSystemPlugin(o.Metadata)).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
foreach (PluginMetadata metadata in allPlugins.Select(o => o.Metadata))
|
foreach (PluginMetadata metadata in allPlugins.Select(o => o.Metadata))
|
||||||
{
|
{
|
||||||
@ -62,30 +63,9 @@ namespace Wox.Plugin.SystemPlugins
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void InitInternal(PluginInitContext context)
|
public void Init(PluginInitContext context)
|
||||||
{
|
{
|
||||||
this.context = context;
|
this.context = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public override string ID
|
|
||||||
{
|
|
||||||
get { return "6A122269676E40EB86EB543B945932B9"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string Name
|
|
||||||
{
|
|
||||||
get { return "Third-party Plugin Indicator"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string IcoPath
|
|
||||||
{
|
|
||||||
get { return @"Images\work.png"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string Description
|
|
||||||
{
|
|
||||||
get { return "Provide Third-party plugin actionword suggestion."; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// 有关程序集的常规信息通过以下
|
||||||
|
// 特性集控制。更改这些特性值可修改
|
||||||
|
// 与程序集关联的信息。
|
||||||
|
[assembly: AssemblyTitle("Wox.Plugin.PluginIndicator")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("Wox.Plugin.PluginIndicator")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2015")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// 将 ComVisible 设置为 false 使此程序集中的类型
|
||||||
|
// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
|
||||||
|
// 则将该类型上的 ComVisible 特性设置为 true。
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
||||||
|
[assembly: Guid("27f6d9fc-340b-47be-90ea-2a86bfca7bad")]
|
||||||
|
|
||||||
|
// 程序集的版本信息由下面四个值组成:
|
||||||
|
//
|
||||||
|
// 主版本
|
||||||
|
// 次版本
|
||||||
|
// 生成号
|
||||||
|
// 修订号
|
||||||
|
//
|
||||||
|
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
|
||||||
|
// 方法是按如下所示使用“*”:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
@ -0,0 +1,79 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{FDED22C8-B637-42E8-824A-63B5B6E05A3A}</ProjectGuid>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>Wox.Plugin.PluginIndicator</RootNamespace>
|
||||||
|
<AssemblyName>Wox.Plugin.PluginIndicator</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>..\..\Output\Debug\Plugins\Wox.Plugin.PluginIndicator\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>..\..\Output\Release\Plugins\Wox.Plugin.PluginIndicator\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="PluginIndicator.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="plugin.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\Wox.Core\Wox.Core.csproj">
|
||||||
|
<Project>{b749f0db-8e75-47db-9e5e-265d16d0c0d2}</Project>
|
||||||
|
<Name>Wox.Core</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\..\Wox.Infrastructure\Wox.Infrastructure.csproj">
|
||||||
|
<Project>{4fd29318-a8ab-4d8f-aa47-60bc241b8da3}</Project>
|
||||||
|
<Name>Wox.Infrastructure</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\..\Wox.Plugin\Wox.Plugin.csproj">
|
||||||
|
<Project>{8451ecdd-2ea4-4966-bb0a-7bbc40138e80}</Project>
|
||||||
|
<Name>Wox.Plugin</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Images\work.png">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
|
</Project>
|
12
Plugins/Wox.Plugin.PluginIndicator/plugin.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"ID":"6A122269676E40EB86EB543B945932B9",
|
||||||
|
"ActionKeyword":"*",
|
||||||
|
"Name":"Plugin Indicator",
|
||||||
|
"Description":"Provide plugin actionword suggestion.",
|
||||||
|
"Author":"qianlifeng",
|
||||||
|
"Version":"1.0.0",
|
||||||
|
"Language":"csharp",
|
||||||
|
"Website":"http://www.getwox.com/plugin",
|
||||||
|
"ExecuteFileName":"Wox.Plugin.PluginIndicator.dll",
|
||||||
|
"IcoPath":"Images\\work.png"
|
||||||
|
}
|
@ -197,7 +197,7 @@ namespace Wox.Plugin.PluginManagement
|
|||||||
private List<Result> ListUnInstalledPlugins(Query query)
|
private List<Result> ListUnInstalledPlugins(Query query)
|
||||||
{
|
{
|
||||||
List<Result> results = new List<Result>();
|
List<Result> results = new List<Result>();
|
||||||
List<PluginMetadata> allInstalledPlugins = ParseThirdPartyPlugins();
|
List<PluginMetadata> allInstalledPlugins = ParseUserPlugins();
|
||||||
if (query.ActionParameters.Count > 1)
|
if (query.ActionParameters.Count > 1)
|
||||||
{
|
{
|
||||||
string pluginName = query.ActionParameters[1];
|
string pluginName = query.ActionParameters[1];
|
||||||
@ -235,7 +235,7 @@ namespace Wox.Plugin.PluginManagement
|
|||||||
private List<Result> ListInstalledPlugins()
|
private List<Result> ListInstalledPlugins()
|
||||||
{
|
{
|
||||||
List<Result> results = new List<Result>();
|
List<Result> results = new List<Result>();
|
||||||
foreach (PluginMetadata plugin in ParseThirdPartyPlugins())
|
foreach (PluginMetadata plugin in ParseUserPlugins())
|
||||||
{
|
{
|
||||||
results.Add(new Result()
|
results.Add(new Result()
|
||||||
{
|
{
|
||||||
@ -247,7 +247,7 @@ namespace Wox.Plugin.PluginManagement
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<PluginMetadata> ParseThirdPartyPlugins()
|
private static List<PluginMetadata> ParseUserPlugins()
|
||||||
{
|
{
|
||||||
List<PluginMetadata> pluginMetadatas = new List<PluginMetadata>();
|
List<PluginMetadata> pluginMetadatas = new List<PluginMetadata>();
|
||||||
if (!Directory.Exists(PluginPath))
|
if (!Directory.Exists(PluginPath))
|
||||||
@ -276,7 +276,7 @@ namespace Wox.Plugin.PluginManagement
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
metadata = JsonConvert.DeserializeObject<PluginMetadata>(File.ReadAllText(configPath));
|
metadata = JsonConvert.DeserializeObject<PluginMetadata>(File.ReadAllText(configPath));
|
||||||
metadata.PluginType = PluginType.ThirdParty;
|
metadata.PluginType = PluginType.User;
|
||||||
metadata.PluginDirectory = pluginDirectory;
|
metadata.PluginDirectory = pluginDirectory;
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
|
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
|
||||||
<RestorePackages>true</RestorePackages>
|
<RestorePackages>true</RestorePackages>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
@ -22,6 +23,7 @@
|
|||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>pdbonly</DebugType>
|
||||||
@ -30,11 +32,12 @@
|
|||||||
<DefineConstants>TRACE</DefineConstants>
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
<Reference Include="Newtonsoft.Json">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<HintPath>..\..\packages\Newtonsoft.Json.6.0.8\lib\net35\Newtonsoft.Json.dll</HintPath>
|
||||||
<HintPath>..\..\packages\Newtonsoft.Json.6.0.5\lib\net35\Newtonsoft.Json.dll</HintPath>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
@ -62,9 +65,9 @@
|
|||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Images\plugin.png">
|
<None Include="Images\plugin.png">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Newtonsoft.Json" version="6.0.5" targetFramework="net35" />
|
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net35" />
|
||||||
</packages>
|
</packages>
|
@ -1,13 +1,9 @@
|
|||||||
using System;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using Wox.Infrastructure.Storage.UserSettings;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.SystemPlugins.Program
|
namespace Wox.Plugin.Program
|
||||||
{
|
{
|
||||||
internal class FileChangeWatcher
|
internal class FileChangeWatcher
|
||||||
{
|
{
|
||||||
@ -24,7 +20,7 @@ namespace Wox.Plugin.SystemPlugins.Program
|
|||||||
}
|
}
|
||||||
|
|
||||||
watchedPath.Add(path);
|
watchedPath.Add(path);
|
||||||
foreach (string fileType in UserSettingStorage.Instance.ProgramSuffixes.Split(';'))
|
foreach (string fileType in ProgramStorage.Instance.ProgramSuffixes.Split(';'))
|
||||||
{
|
{
|
||||||
FileSystemWatcher watcher = new FileSystemWatcher
|
FileSystemWatcher watcher = new FileSystemWatcher
|
||||||
{
|
{
|
@ -3,7 +3,7 @@ using System.Collections.Generic;
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
namespace Wox.Plugin.SystemPlugins.Program
|
namespace Wox.Plugin.Program
|
||||||
{
|
{
|
||||||
public interface IProgramSource
|
public interface IProgramSource
|
||||||
{
|
{
|
BIN
Plugins/Wox.Plugin.Program/Images/cmd.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
23
Plugins/Wox.Plugin.Program/Languages/en.xaml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
||||||
|
|
||||||
|
<!--Program setting-->
|
||||||
|
<system:String x:Key="wox_plugin_program_delete">Delete</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_edit">Edit</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_add">Add</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_location">Location</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_suffixes">Index file suffixes</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_reindex">Reindex</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_indexing">Indexing</system:String>
|
||||||
|
|
||||||
|
<system:String x:Key="wox_plugin_program_pls_select_program_source">Please select a program source</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_delete_program_source">Are your sure to delete {0}?</system:String>
|
||||||
|
|
||||||
|
<system:String x:Key="wox_plugin_program_update">Update</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_only_index_tip">Wox will only index files that end with following suffixes:</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_split_by_tip">(Each suffix should split by ;)</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_update_file_suffixes">Sucessfully update file suffixes</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_suffixes_cannot_empty">File suffixes can't be empty</system:String>
|
||||||
|
|
||||||
|
</ResourceDictionary>
|
24
Plugins/Wox.Plugin.Program/Languages/zh-cn.xaml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
||||||
|
|
||||||
|
<!--Program setting-->
|
||||||
|
<system:String x:Key="wox_plugin_program_delete">删除</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_edit">编辑</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_add">增加</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_location">位置</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_suffixes">索引文件后缀</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_reindex">重新索引</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_indexing">索引中</system:String>
|
||||||
|
|
||||||
|
|
||||||
|
<system:String x:Key="wox_plugin_program_pls_select_program_source">请先选择一项</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_delete_program_source">你确定要删除{0}吗?</system:String>
|
||||||
|
|
||||||
|
<system:String x:Key="wox_plugin_program_update">更新</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_only_index_tip">Wox仅索引下列后缀的文件:</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_split_by_tip">(每个后缀以英文状态下的分号分隔)</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_update_file_suffixes">成功更新索引文件后缀</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_suffixes_cannot_empty">文件后缀不能为空</system:String>
|
||||||
|
|
||||||
|
</ResourceDictionary>
|
24
Plugins/Wox.Plugin.Program/Languages/zh-tw.xaml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
||||||
|
|
||||||
|
<!--Program setting-->
|
||||||
|
<system:String x:Key="wox_plugin_program_delete">刪除</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_edit">編輯</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_add">增加</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_location">位置</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_suffixes">索引文件後綴</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_reindex">重新索引</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_indexing">索引中</system:String>
|
||||||
|
|
||||||
|
|
||||||
|
<system:String x:Key="wox_plugin_program_pls_select_program_source">請先選擇一項</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_delete_program_source">你確定要刪除{0}嗎?</system:String>
|
||||||
|
|
||||||
|
<system:String x:Key="wox_plugin_program_update">更新</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_only_index_tip">Wox僅索引下列後綴的文件:</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_split_by_tip">(每個後綴以英文狀態下的分號分隔)</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_update_file_suffixes">成功更新索引文件後綴</system:String>
|
||||||
|
<system:String x:Key="wox_plugin_program_suffixes_cannot_empty">文件後綴不能為空</system:String>
|
||||||
|
|
||||||
|
</ResourceDictionary>
|
@ -1,7 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using Wox.Infrastructure;
|
using Wox.Infrastructure;
|
||||||
|
|
||||||
namespace Wox.Plugin.SystemPlugins.Program
|
namespace Wox.Plugin.Program
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class Program
|
public class Program
|
@ -1,15 +1,21 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Newtonsoft.Json;
|
using System.IO;
|
||||||
|
using System.Reflection;
|
||||||
using Wox.Infrastructure.Storage;
|
using Wox.Infrastructure.Storage;
|
||||||
|
|
||||||
namespace Wox.Plugin.SystemPlugins.Program
|
namespace Wox.Plugin.Program
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class ProgramCacheStorage : BinaryStorage<ProgramCacheStorage>
|
public class ProgramCacheStorage : BinaryStorage<ProgramCacheStorage>
|
||||||
{
|
{
|
||||||
public List<Program> Programs = new List<Program>();
|
public List<Program> Programs = new List<Program>();
|
||||||
|
|
||||||
|
protected override string ConfigFolder
|
||||||
|
{
|
||||||
|
get { return Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); }
|
||||||
|
}
|
||||||
|
|
||||||
protected override string ConfigName
|
protected override string ConfigName
|
||||||
{
|
{
|
||||||
get { return "ProgramIndexCache"; }
|
get { return "ProgramIndexCache"; }
|
@ -1,15 +1,11 @@
|
|||||||
<UserControl x:Class="Wox.Plugin.SystemPlugins.Program.ProgramSetting"
|
<UserControl x:Class="Wox.Plugin.Program.ProgramSetting"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:infrastructure="clr-namespace:Wox.Infrastructure;assembly=Wox.Infrastructure"
|
xmlns:program="clr-namespace:Wox.Plugin.Program"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
d:DesignHeight="300" d:DesignWidth="600">
|
d:DesignHeight="300" d:DesignWidth="600">
|
||||||
|
|
||||||
<UserControl.Resources>
|
|
||||||
<BooleanToVisibilityConverter x:Key="BoolToVis" />
|
|
||||||
</UserControl.Resources>
|
|
||||||
<Grid Margin="10">
|
<Grid Margin="10">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="50"/>
|
<RowDefinition Height="50"/>
|
||||||
@ -17,16 +13,18 @@
|
|||||||
<RowDefinition Height="50"/>
|
<RowDefinition Height="50"/>
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<StackPanel Grid.Row="0" Orientation="Horizontal" HorizontalAlignment="Right">
|
<StackPanel Grid.Row="0" Orientation="Horizontal" HorizontalAlignment="Right">
|
||||||
<Button Height="30" HorizontalAlignment="Right" x:Name="btnProgramSuffixes" Width="130" Click="BtnProgramSuffixes_OnClick">Index file suffixes</Button>
|
<Button Height="30" HorizontalAlignment="Right" x:Name="btnProgramSuffixes" Width="130" Click="BtnProgramSuffixes_OnClick" Content="{DynamicResource wox_plugin_program_suffixes}"></Button>
|
||||||
<Button Height="30" HorizontalAlignment="Right" Margin="10 0 0 0" x:Name="btnReindex" Width="100" Click="btnReindex_Click">Re-Index</Button>
|
<Button Height="30" HorizontalAlignment="Right" Margin="10 0 0 0" x:Name="btnReindex" Width="100" Click="btnReindex_Click" Content="{DynamicResource wox_plugin_program_reindex}"></Button>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<ListView x:Name="programSourceView" Grid.Row="1">
|
<ListView x:Name="programSourceView" Grid.Row="1" AllowDrop="True"
|
||||||
|
DragEnter="programSourceView_DragEnter"
|
||||||
|
Drop="programSourceView_Drop" >
|
||||||
<ListView.View>
|
<ListView.View>
|
||||||
<GridView>
|
<GridView>
|
||||||
<GridViewColumn Header="Location" Width="400">
|
<GridViewColumn Header="{DynamicResource wox_plugin_program_location}" Width="400">
|
||||||
<GridViewColumn.CellTemplate>
|
<GridViewColumn.CellTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<TextBlock Text="{Binding Location, ConverterParameter=(null), Converter={infrastructure:StringEmptyConverter}}"/>
|
<TextBlock Text="{Binding Location, ConverterParameter=(null), Converter={program:StringEmptyConverter}}"/>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</GridViewColumn.CellTemplate>
|
</GridViewColumn.CellTemplate>
|
||||||
</GridViewColumn>
|
</GridViewColumn>
|
||||||
@ -36,12 +34,12 @@
|
|||||||
<DockPanel Grid.Row="2">
|
<DockPanel Grid.Row="2">
|
||||||
<StackPanel x:Name="indexingPanel" Visibility="Hidden" HorizontalAlignment="Left" Orientation="Horizontal">
|
<StackPanel x:Name="indexingPanel" Visibility="Hidden" HorizontalAlignment="Left" Orientation="Horizontal">
|
||||||
<ProgressBar x:Name="progressBarIndexing" Height="20" Width="80" Minimum="0" Maximum="100" IsIndeterminate="True"></ProgressBar>
|
<ProgressBar x:Name="progressBarIndexing" Height="20" Width="80" Minimum="0" Maximum="100" IsIndeterminate="True"></ProgressBar>
|
||||||
<TextBlock Margin="10 0 0 0" Height="20" HorizontalAlignment="Center">Indexing</TextBlock>
|
<TextBlock Margin="10 0 0 0" Height="20" HorizontalAlignment="Center" Text="{DynamicResource wox_plugin_program_indexing}"></TextBlock>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
|
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
|
||||||
<Button x:Name="btnDeleteProgramSource" Click="btnDeleteProgramSource_OnClick" Width="100" Margin="10" Content="Delete"/>
|
<Button x:Name="btnDeleteProgramSource" Click="btnDeleteProgramSource_OnClick" Width="100" Margin="10" Content="{DynamicResource wox_plugin_program_delete}"/>
|
||||||
<Button x:Name="btnEditProgramSource" Click="btnEditProgramSource_OnClick" Width="100" Margin="10" Content="Edit"/>
|
<Button x:Name="btnEditProgramSource" Click="btnEditProgramSource_OnClick" Width="100" Margin="10" Content="{DynamicResource wox_plugin_program_edit}"/>
|
||||||
<Button x:Name="btnAddProgramSource" Click="btnAddProgramSource_OnClick" Width="100" Margin="10" Content="Add"/>
|
<Button x:Name="btnAddProgramSource" Click="btnAddProgramSource_OnClick" Width="100" Margin="10" Content="{DynamicResource wox_plugin_program_add}"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</Grid>
|
</Grid>
|
@ -2,24 +2,26 @@
|
|||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using Wox.Infrastructure.Storage.UserSettings;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.SystemPlugins.Program
|
namespace Wox.Plugin.Program
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interaction logic for ProgramSetting.xaml
|
/// Interaction logic for ProgramSetting.xaml
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class ProgramSetting : UserControl
|
public partial class ProgramSetting : UserControl
|
||||||
{
|
{
|
||||||
public ProgramSetting()
|
private PluginInitContext context;
|
||||||
|
|
||||||
|
public ProgramSetting(PluginInitContext context)
|
||||||
{
|
{
|
||||||
|
this.context = context;
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
Loaded += Setting_Loaded;
|
Loaded += Setting_Loaded;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Setting_Loaded(object sender, RoutedEventArgs e)
|
private void Setting_Loaded(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
programSourceView.ItemsSource = UserSettingStorage.Instance.ProgramSources;
|
programSourceView.ItemsSource = ProgramStorage.Instance.ProgramSources;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ReIndexing()
|
private void ReIndexing()
|
||||||
@ -40,13 +42,13 @@ namespace Wox.Plugin.SystemPlugins.Program
|
|||||||
{
|
{
|
||||||
string path = folderBrowserDialog.SelectedPath;
|
string path = folderBrowserDialog.SelectedPath;
|
||||||
|
|
||||||
UserSettingStorage.Instance.ProgramSources.Add(new ProgramSource()
|
ProgramStorage.Instance.ProgramSources.Add(new ProgramSource()
|
||||||
{
|
{
|
||||||
Location = path,
|
Location = path,
|
||||||
Type = "FileSystemProgramSource",
|
Type = "FileSystemProgramSource",
|
||||||
Enabled = true
|
Enabled = true
|
||||||
});
|
});
|
||||||
UserSettingStorage.Instance.Save();
|
ProgramStorage.Instance.Save();
|
||||||
ReIndexing();
|
ReIndexing();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -56,17 +58,19 @@ namespace Wox.Plugin.SystemPlugins.Program
|
|||||||
ProgramSource selectedProgramSource = programSourceView.SelectedItem as ProgramSource;
|
ProgramSource selectedProgramSource = programSourceView.SelectedItem as ProgramSource;
|
||||||
if (selectedProgramSource != null)
|
if (selectedProgramSource != null)
|
||||||
{
|
{
|
||||||
if (MessageBox.Show("Are your sure to delete " + selectedProgramSource.Location, "Delete ProgramSource",
|
string msg = string.Format(context.API.GetTranslation("wox_plugin_program_delete_program_source"), selectedProgramSource.Location);
|
||||||
MessageBoxButton.YesNo) == MessageBoxResult.Yes)
|
|
||||||
|
if (MessageBox.Show(msg, string.Empty, MessageBoxButton.YesNo) == MessageBoxResult.Yes)
|
||||||
{
|
{
|
||||||
UserSettingStorage.Instance.ProgramSources.Remove(selectedProgramSource);
|
ProgramStorage.Instance.ProgramSources.Remove(selectedProgramSource);
|
||||||
UserSettingStorage.Instance.Save();
|
ProgramStorage.Instance.Save();
|
||||||
ReIndexing();
|
ReIndexing();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MessageBox.Show("Please select a program source");
|
string msg = context.API.GetTranslation("wox_plugin_program_pls_select_program_source");
|
||||||
|
MessageBox.Show(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,13 +85,14 @@ namespace Wox.Plugin.SystemPlugins.Program
|
|||||||
{
|
{
|
||||||
string path = folderBrowserDialog.SelectedPath;
|
string path = folderBrowserDialog.SelectedPath;
|
||||||
selectedProgramSource.Location = path;
|
selectedProgramSource.Location = path;
|
||||||
UserSettingStorage.Instance.Save();
|
ProgramStorage.Instance.Save();
|
||||||
ReIndexing();
|
ReIndexing();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MessageBox.Show("Please select a program source");
|
string msg = context.API.GetTranslation("wox_plugin_program_pls_select_program_source");
|
||||||
|
MessageBox.Show(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,9 +103,44 @@ namespace Wox.Plugin.SystemPlugins.Program
|
|||||||
|
|
||||||
private void BtnProgramSuffixes_OnClick(object sender, RoutedEventArgs e)
|
private void BtnProgramSuffixes_OnClick(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
|
ProgramSuffixes p = new ProgramSuffixes(context);
|
||||||
ProgramSuffixes p = new ProgramSuffixes();
|
|
||||||
p.ShowDialog();
|
p.ShowDialog();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void programSourceView_DragEnter(object sender, DragEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Data.GetDataPresent(DataFormats.FileDrop))
|
||||||
|
{
|
||||||
|
e.Effects = DragDropEffects.Link;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
e.Effects = DragDropEffects.None;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void programSourceView_Drop(object sender, DragEventArgs e)
|
||||||
|
{
|
||||||
|
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
|
||||||
|
|
||||||
|
if (files != null && files.Length > 0)
|
||||||
|
{
|
||||||
|
foreach (string s in files)
|
||||||
|
{
|
||||||
|
if (System.IO.Directory.Exists(s) == true)
|
||||||
|
{
|
||||||
|
ProgramStorage.Instance.ProgramSources.Add(new ProgramSource()
|
||||||
|
{
|
||||||
|
Location = s,
|
||||||
|
Type = "FileSystemProgramSource",
|
||||||
|
Enabled = true
|
||||||
|
});
|
||||||
|
|
||||||
|
ProgramStorage.Instance.Save();
|
||||||
|
ReIndexing();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,7 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Wox.Infrastructure.Storage.UserSettings
|
namespace Wox.Plugin.Program
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class ProgramSource
|
public class ProgramSource
|
@ -1,8 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Wox.Infrastructure.Storage.UserSettings;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.SystemPlugins.Program.ProgramSources
|
namespace Wox.Plugin.Program.ProgramSources
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
[global::System.ComponentModel.Browsable(false)]
|
[global::System.ComponentModel.Browsable(false)]
|
@ -1,9 +1,8 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using Wox.Infrastructure.Storage.UserSettings;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.SystemPlugins.Program.ProgramSources
|
namespace Wox.Plugin.Program.ProgramSources
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
[global::System.ComponentModel.Browsable(false)]
|
[global::System.ComponentModel.Browsable(false)]
|
@ -1,13 +1,10 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using log4net.Repository.Hierarchy;
|
|
||||||
using Wox.Infrastructure.Storage.UserSettings;
|
|
||||||
using Log = Wox.Infrastructure.Logger.Log;
|
using Log = Wox.Infrastructure.Logger.Log;
|
||||||
|
|
||||||
namespace Wox.Plugin.SystemPlugins.Program.ProgramSources
|
namespace Wox.Plugin.Program.ProgramSources
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class FileSystemProgramSource : AbstractProgramSource
|
public class FileSystemProgramSource : AbstractProgramSource
|
||||||
@ -41,7 +38,7 @@ namespace Wox.Plugin.SystemPlugins.Program.ProgramSources
|
|||||||
{
|
{
|
||||||
foreach (string file in Directory.GetFiles(path))
|
foreach (string file in Directory.GetFiles(path))
|
||||||
{
|
{
|
||||||
if (UserSettingStorage.Instance.ProgramSuffixes.Split(';').Any(o => file.EndsWith("." + o)))
|
if (ProgramStorage.Instance.ProgramSuffixes.Split(';').Any(o => file.EndsWith("." + o)))
|
||||||
{
|
{
|
||||||
Program p = CreateEntry(file);
|
Program p = CreateEntry(file);
|
||||||
list.Add(p);
|
list.Add(p);
|
@ -1,7 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using Wox.Infrastructure.Storage.UserSettings;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.SystemPlugins.Program.ProgramSources
|
namespace Wox.Plugin.Program.ProgramSources
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
[global::System.ComponentModel.Browsable(false)]
|
[global::System.ComponentModel.Browsable(false)]
|
44
Plugins/Wox.Plugin.Program/ProgramStorage.cs
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Text;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Wox.Infrastructure.Storage;
|
||||||
|
|
||||||
|
namespace Wox.Plugin.Program
|
||||||
|
{
|
||||||
|
public class ProgramStorage : JsonStrorage<ProgramStorage>
|
||||||
|
{
|
||||||
|
[JsonProperty]
|
||||||
|
public List<ProgramSource> ProgramSources { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty]
|
||||||
|
public string ProgramSuffixes { get; set; }
|
||||||
|
|
||||||
|
protected override string ConfigFolder
|
||||||
|
{
|
||||||
|
get { return Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); }
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override ProgramStorage LoadDefault()
|
||||||
|
{
|
||||||
|
ProgramSources = new List<ProgramSource>();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnAfterLoad(ProgramStorage storage)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(storage.ProgramSuffixes))
|
||||||
|
{
|
||||||
|
storage.ProgramSuffixes = "lnk;exe;appref-ms;bat";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string ConfigName
|
||||||
|
{
|
||||||
|
get { return "setting"; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,17 +1,17 @@
|
|||||||
<Window x:Class="Wox.Plugin.SystemPlugins.Program.ProgramSuffixes"
|
<Window x:Class="Wox.Plugin.Program.ProgramSuffixes"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Width="400"
|
Width="400"
|
||||||
Height="170"
|
Height="180"
|
||||||
WindowStartupLocation="CenterScreen"
|
WindowStartupLocation="CenterScreen"
|
||||||
d:DesignHeight="400" d:DesignWidth="300">
|
d:DesignHeight="400" d:DesignWidth="300">
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<TextBlock Margin="10 10 0 0" Foreground="Gray">Wox will only index files that end with following suffixes.</TextBlock>
|
<TextBlock Margin="10 10 0 0" Foreground="Gray" Text="{DynamicResource wox_plugin_program_only_index_tip}"></TextBlock>
|
||||||
<TextBlock Margin="10 0 0 0" Foreground="Gray">Each suffix should split by ;</TextBlock>
|
<TextBlock Margin="10 10 0 0" Foreground="Gray" Text="{DynamicResource wox_plugin_program_split_by_tip}"></TextBlock>
|
||||||
<TextBox x:Name="tbSuffixes" Margin="10"/>
|
<TextBox x:Name="tbSuffixes" Margin="10"/>
|
||||||
<Button HorizontalAlignment="Right" Height="30" Width="80" Click="ButtonBase_OnClick" Margin="10">Update</Button>
|
<Button HorizontalAlignment="Right" Height="30" Width="80" Click="ButtonBase_OnClick" Margin="10" Content="{DynamicResource wox_plugin_program_update}"></Button>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Window>
|
</Window>
|
34
Plugins/Wox.Plugin.Program/ProgramSuffixes.xaml.cs
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
using System.Windows;
|
||||||
|
|
||||||
|
namespace Wox.Plugin.Program
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// ProgramSuffixes.xaml 的交互逻辑
|
||||||
|
/// </summary>
|
||||||
|
public partial class ProgramSuffixes
|
||||||
|
{
|
||||||
|
private PluginInitContext context;
|
||||||
|
|
||||||
|
public ProgramSuffixes(PluginInitContext context)
|
||||||
|
{
|
||||||
|
this.context = context;
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
tbSuffixes.Text = ProgramStorage.Instance.ProgramSuffixes;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(tbSuffixes.Text))
|
||||||
|
{
|
||||||
|
string warning = context.API.GetTranslation("wox_plugin_program_suffixes_cannot_empty");
|
||||||
|
MessageBox.Show(warning);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ProgramStorage.Instance.ProgramSuffixes = tbSuffixes.Text;
|
||||||
|
string msg = context.API.GetTranslation("wox_plugin_program_update_file_suffixes");
|
||||||
|
MessageBox.Show(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,18 +1,17 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.Serialization.Formatters.Binary;
|
using System.Threading;
|
||||||
using System.Windows.Forms;
|
using System.Windows;
|
||||||
using Wox.Infrastructure;
|
using Wox.Infrastructure;
|
||||||
using Wox.Infrastructure.Storage.UserSettings;
|
using Wox.Plugin.Program.ProgramSources;
|
||||||
using Wox.Plugin.SystemPlugins.Program.ProgramSources;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.SystemPlugins.Program
|
namespace Wox.Plugin.Program
|
||||||
{
|
{
|
||||||
public class Programs : BaseSystemPlugin, ISettingProvider
|
public class Programs : ISettingProvider, IPlugin, IPluginI18n
|
||||||
{
|
{
|
||||||
private static object lockObject = new object();
|
private static object lockObject = new object();
|
||||||
private static List<Program> programs = new List<Program>();
|
private static List<Program> programs = new List<Program>();
|
||||||
@ -25,7 +24,7 @@ namespace Wox.Plugin.SystemPlugins.Program
|
|||||||
};
|
};
|
||||||
private PluginInitContext context;
|
private PluginInitContext context;
|
||||||
|
|
||||||
protected override List<Result> QueryInternal(Query query)
|
public List<Result> Query(Query query)
|
||||||
{
|
{
|
||||||
if (query.RawQuery.Trim().Length <= 1) return new List<Result>();
|
if (query.RawQuery.Trim().Length <= 1) return new List<Result>();
|
||||||
|
|
||||||
@ -73,10 +72,14 @@ namespace Wox.Plugin.SystemPlugins.Program
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void InitInternal(PluginInitContext context)
|
public void Init(PluginInitContext context)
|
||||||
{
|
{
|
||||||
this.context = context;
|
this.context = context;
|
||||||
|
using (new Timeit("Preload programs"))
|
||||||
|
{
|
||||||
programs = ProgramCacheStorage.Instance.Programs;
|
programs = ProgramCacheStorage.Instance.Programs;
|
||||||
|
}
|
||||||
|
Debug.WriteLine(string.Format("Preload {0} programs from cache", programs.Count), "Wox");
|
||||||
using (new Timeit("Program Index"))
|
using (new Timeit("Program Index"))
|
||||||
{
|
{
|
||||||
IndexPrograms();
|
IndexPrograms();
|
||||||
@ -89,10 +92,10 @@ namespace Wox.Plugin.SystemPlugins.Program
|
|||||||
{
|
{
|
||||||
List<ProgramSource> programSources = new List<ProgramSource>();
|
List<ProgramSource> programSources = new List<ProgramSource>();
|
||||||
programSources.AddRange(LoadDeaultProgramSources());
|
programSources.AddRange(LoadDeaultProgramSources());
|
||||||
if (UserSettingStorage.Instance.ProgramSources != null &&
|
if (ProgramStorage.Instance.ProgramSources != null &&
|
||||||
UserSettingStorage.Instance.ProgramSources.Count(o => o.Enabled) > 0)
|
ProgramStorage.Instance.ProgramSources.Count(o => o.Enabled) > 0)
|
||||||
{
|
{
|
||||||
programSources.AddRange(UserSettingStorage.Instance.ProgramSources.Where(o => o.Enabled));
|
programSources.AddRange(ProgramStorage.Instance.ProgramSources.Where(o => o.Enabled));
|
||||||
}
|
}
|
||||||
|
|
||||||
sources.Clear();
|
sources.Clear();
|
||||||
@ -172,33 +175,18 @@ namespace Wox.Plugin.SystemPlugins.Program
|
|||||||
p.Score -= 20;
|
p.Score -= 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string ID
|
|
||||||
{
|
|
||||||
get { return "791FC278BA414111B8D1886DFE447410"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string Name
|
|
||||||
{
|
|
||||||
get { return "Programs"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string IcoPath
|
|
||||||
{
|
|
||||||
get { return @"Images\program.png"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string Description
|
|
||||||
{
|
|
||||||
get { return "Provide searching programs in your computer."; }
|
|
||||||
}
|
|
||||||
|
|
||||||
#region ISettingProvider Members
|
#region ISettingProvider Members
|
||||||
|
|
||||||
public System.Windows.Controls.Control CreateSettingPanel()
|
public System.Windows.Controls.Control CreateSettingPanel()
|
||||||
{
|
{
|
||||||
return new ProgramSetting();
|
return new ProgramSetting(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
public string GetLanguagesFolder()
|
||||||
|
{
|
||||||
|
return Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Languages");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
36
Plugins/Wox.Plugin.Program/Properties/AssemblyInfo.cs
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// 有关程序集的常规信息通过以下
|
||||||
|
// 特性集控制。更改这些特性值可修改
|
||||||
|
// 与程序集关联的信息。
|
||||||
|
[assembly: AssemblyTitle("Wox.Plugin.Program")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("Wox.Plugin.Program")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2015")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// 将 ComVisible 设置为 false 使此程序集中的类型
|
||||||
|
// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
|
||||||
|
// 则将该类型上的 ComVisible 特性设置为 true。
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
||||||
|
[assembly: Guid("82f60d9a-9280-4b6a-8b21-f3c694cb7e1d")]
|
||||||
|
|
||||||
|
// 程序集的版本信息由下面四个值组成:
|
||||||
|
//
|
||||||
|
// 主版本
|
||||||
|
// 次版本
|
||||||
|
// 生成号
|
||||||
|
// 修订号
|
||||||
|
//
|
||||||
|
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
|
||||||
|
// 方法是按如下所示使用“*”:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
@ -1,11 +1,8 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Windows.Data;
|
using System.Windows.Data;
|
||||||
using System.Windows.Markup;
|
using System.Windows.Markup;
|
||||||
|
|
||||||
namespace Wox.Infrastructure
|
namespace Wox.Plugin.Program
|
||||||
{
|
{
|
||||||
public class StringEmptyConverter : MarkupExtension, IValueConverter
|
public class StringEmptyConverter : MarkupExtension, IValueConverter
|
||||||
{
|
{
|
140
Plugins/Wox.Plugin.Program/Wox.Plugin.Program.csproj
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{FDB3555B-58EF-4AE6-B5F1-904719637AB4}</ProjectGuid>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>Wox.Plugin.Program</RootNamespace>
|
||||||
|
<AssemblyName>Wox.Plugin.Program</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
|
||||||
|
<RestorePackages>true</RestorePackages>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>..\..\Output\Debug\Plugins\Wox.Plugin.Program\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>..\..\Output\Release\Plugins\Wox.Plugin.Program\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\packages\Newtonsoft.Json.6.0.8\lib\net35\Newtonsoft.Json.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="PresentationCore" />
|
||||||
|
<Reference Include="PresentationFramework" />
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Windows.Forms" />
|
||||||
|
<Reference Include="System.Xaml" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
<Reference Include="WindowsBase" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="FileChangeWatcher.cs" />
|
||||||
|
<Compile Include="IProgramSource.cs" />
|
||||||
|
<Compile Include="Program.cs" />
|
||||||
|
<Compile Include="ProgramCacheStorage.cs" />
|
||||||
|
<Compile Include="Programs.cs" />
|
||||||
|
<Compile Include="ProgramSetting.xaml.cs">
|
||||||
|
<DependentUpon>ProgramSetting.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="ProgramSource.cs" />
|
||||||
|
<Compile Include="ProgramSources\AppPathsProgramSource.cs" />
|
||||||
|
<Compile Include="ProgramSources\CommonStartMenuProgramSource.cs" />
|
||||||
|
<Compile Include="ProgramSources\FileSystemProgramSource.cs" />
|
||||||
|
<Compile Include="ProgramSources\UserStartMenuProgramSource.cs" />
|
||||||
|
<Compile Include="ProgramStorage.cs" />
|
||||||
|
<Compile Include="ProgramSuffixes.xaml.cs">
|
||||||
|
<DependentUpon>ProgramSuffixes.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="StringEmptyConverter.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="packages.config" />
|
||||||
|
<None Include="plugin.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Images\program.png">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Include="Images\cmd.png">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<Content Include="Languages\en.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Languages\zh-cn.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Include="Languages\zh-tw.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<Page Include="ProgramSetting.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Page>
|
||||||
|
<Page Include="ProgramSuffixes.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Page>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\Wox.Infrastructure\Wox.Infrastructure.csproj">
|
||||||
|
<Project>{4fd29318-a8ab-4d8f-aa47-60bc241b8da3}</Project>
|
||||||
|
<Name>Wox.Infrastructure</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\..\Wox.Plugin\Wox.Plugin.csproj">
|
||||||
|
<Project>{8451ecdd-2ea4-4966-bb0a-7bbc40138e80}</Project>
|
||||||
|
<Name>Wox.Plugin</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup />
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
|
||||||
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。启用“NuGet 程序包还原”可下载这些程序包。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
|
||||||
|
</Target>
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
|
</Project>
|
4
Plugins/Wox.Plugin.Program/packages.config
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net35" />
|
||||||
|
</packages>
|
12
Plugins/Wox.Plugin.Program/plugin.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"ID":"791FC278BA414111B8D1886DFE447410",
|
||||||
|
"ActionKeyword":"*",
|
||||||
|
"Name":"Program",
|
||||||
|
"Description":"Provide programs search for Wox.",
|
||||||
|
"Author":"qianlifeng",
|
||||||
|
"Version":"1.0.0",
|
||||||
|
"Language":"csharp",
|
||||||
|
"Website":"http://www.getwox.com/plugin",
|
||||||
|
"ExecuteFileName":"Wox.Plugin.Program.dll",
|
||||||
|
"IcoPath":"Images\\program.png"
|
||||||
|
}
|
53
Plugins/Wox.Plugin.QueryHistory/HistoryItem.cs
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Wox.Plugin.QueryHistory
|
||||||
|
{
|
||||||
|
public class HistoryItem
|
||||||
|
{
|
||||||
|
public string Query { get; set; }
|
||||||
|
public DateTime ExecutedDateTime { get; set; }
|
||||||
|
|
||||||
|
public string GetTimeAgo()
|
||||||
|
{
|
||||||
|
return DateTimeAgo(ExecutedDateTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
private string DateTimeAgo(DateTime dt)
|
||||||
|
{
|
||||||
|
TimeSpan span = DateTime.Now - dt;
|
||||||
|
if (span.Days > 365)
|
||||||
|
{
|
||||||
|
int years = (span.Days / 365);
|
||||||
|
if (span.Days % 365 != 0)
|
||||||
|
years += 1;
|
||||||
|
return String.Format("about {0} {1} ago",
|
||||||
|
years, years == 1 ? "year" : "years");
|
||||||
|
}
|
||||||
|
if (span.Days > 30)
|
||||||
|
{
|
||||||
|
int months = (span.Days / 30);
|
||||||
|
if (span.Days % 31 != 0)
|
||||||
|
months += 1;
|
||||||
|
return String.Format("about {0} {1} ago",
|
||||||
|
months, months == 1 ? "month" : "months");
|
||||||
|
}
|
||||||
|
if (span.Days > 0)
|
||||||
|
return String.Format("about {0} {1} ago",
|
||||||
|
span.Days, span.Days == 1 ? "day" : "days");
|
||||||
|
if (span.Hours > 0)
|
||||||
|
return String.Format("about {0} {1} ago",
|
||||||
|
span.Hours, span.Hours == 1 ? "hour" : "hours");
|
||||||
|
if (span.Minutes > 0)
|
||||||
|
return String.Format("about {0} {1} ago",
|
||||||
|
span.Minutes, span.Minutes == 1 ? "minute" : "minutes");
|
||||||
|
if (span.Seconds > 5)
|
||||||
|
return String.Format("about {0} seconds ago", span.Seconds);
|
||||||
|
if (span.Seconds <= 5)
|
||||||
|
return "just now";
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
Plugins/Wox.Plugin.QueryHistory/Images/history.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
36
Plugins/Wox.Plugin.QueryHistory/Properties/AssemblyInfo.cs
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// 有关程序集的常规信息通过以下
|
||||||
|
// 特性集控制。更改这些特性值可修改
|
||||||
|
// 与程序集关联的信息。
|
||||||
|
[assembly: AssemblyTitle("Wox.Plugin.QueryHistory")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("Wox.Plugin.QueryHistory")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2015")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// 将 ComVisible 设置为 false 使此程序集中的类型
|
||||||
|
// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
|
||||||
|
// 则将该类型上的 ComVisible 特性设置为 true。
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
||||||
|
[assembly: Guid("25ab1bbc-f625-4bf5-a2d0-73313abdaae5")]
|
||||||
|
|
||||||
|
// 程序集的版本信息由下面四个值组成:
|
||||||
|
//
|
||||||
|
// 主版本
|
||||||
|
// 次版本
|
||||||
|
// 生成号
|
||||||
|
// 修订号
|
||||||
|
//
|
||||||
|
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
|
||||||
|
// 方法是按如下所示使用“*”:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
51
Plugins/Wox.Plugin.QueryHistory/QueryHistory.cs
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
|
namespace Wox.Plugin.QueryHistory
|
||||||
|
{
|
||||||
|
public class QueryHistory : IPlugin
|
||||||
|
{
|
||||||
|
private PluginInitContext context;
|
||||||
|
|
||||||
|
public List<Result> Query(Query query)
|
||||||
|
{
|
||||||
|
var histories = QueryHistoryStorage.Instance.GetHistory();
|
||||||
|
string filter = query.GetAllRemainingParameter();
|
||||||
|
if (!string.IsNullOrEmpty(filter))
|
||||||
|
{
|
||||||
|
histories = histories.Where(o => o.Query.Contains(filter)).ToList();
|
||||||
|
}
|
||||||
|
return histories.Select(history => new Result()
|
||||||
|
{
|
||||||
|
Title = history.Query,
|
||||||
|
SubTitle = history.GetTimeAgo(),
|
||||||
|
IcoPath = "Images\\history.png",
|
||||||
|
Action = _ =>
|
||||||
|
{
|
||||||
|
context.API.ChangeQuery(history.Query);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Init(PluginInitContext context)
|
||||||
|
{
|
||||||
|
this.context = context;
|
||||||
|
context.API.AfterWoxQueryEvent += API_AfterWoxQueryEvent;
|
||||||
|
context.API.BeforeWoxQueryEvent += API_BeforeWoxQueryEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
void API_BeforeWoxQueryEvent(WoxQueryEventArgs e)
|
||||||
|
{
|
||||||
|
Thread.Sleep(5000);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void API_AfterWoxQueryEvent(WoxQueryEventArgs e)
|
||||||
|
{
|
||||||
|
QueryHistoryStorage.Instance.Add(e.Query.RawQuery);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
83
Plugins/Wox.Plugin.QueryHistory/QueryHistoryStorage.cs
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Wox.Core.Exception;
|
||||||
|
using Wox.Infrastructure.Storage;
|
||||||
|
|
||||||
|
namespace Wox.Plugin.QueryHistory
|
||||||
|
{
|
||||||
|
public class QueryHistoryStorage : JsonStrorage<QueryHistoryStorage>
|
||||||
|
{
|
||||||
|
[JsonProperty]
|
||||||
|
private List<HistoryItem> History = new List<HistoryItem>();
|
||||||
|
|
||||||
|
private int MaxHistory = 300;
|
||||||
|
private int cursor = 0;
|
||||||
|
|
||||||
|
protected override string ConfigFolder
|
||||||
|
{
|
||||||
|
get { return Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); }
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string ConfigName
|
||||||
|
{
|
||||||
|
get { return "QueryHistory"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public HistoryItem Pop()
|
||||||
|
{
|
||||||
|
if (History.Count == 0) return null;
|
||||||
|
|
||||||
|
if (cursor > History.Count - 1)
|
||||||
|
{
|
||||||
|
cursor = History.Count - 1;
|
||||||
|
}
|
||||||
|
if (cursor < 0)
|
||||||
|
{
|
||||||
|
cursor = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return History[cursor--];
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Reset()
|
||||||
|
{
|
||||||
|
cursor = History.Count - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Add(string query)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(query)) return;
|
||||||
|
if (History.Count > MaxHistory)
|
||||||
|
{
|
||||||
|
History.RemoveAt(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (History.Count > 0 && History.Last().Query == query)
|
||||||
|
{
|
||||||
|
History.Last().ExecutedDateTime = DateTime.Now;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
History.Add(new HistoryItem()
|
||||||
|
{
|
||||||
|
Query = query,
|
||||||
|
ExecutedDateTime = DateTime.Now
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (History.Count % 5 == 0)
|
||||||
|
{
|
||||||
|
Save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<HistoryItem> GetHistory()
|
||||||
|
{
|
||||||
|
return History.OrderByDescending(o => o.ExecutedDateTime).ToList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,92 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{B552DCB6-692E-4B1D-9E0B-9096A2A7E6B0}</ProjectGuid>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>Wox.Plugin.QueryHistory</RootNamespace>
|
||||||
|
<AssemblyName>Wox.Plugin.QueryHistory</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
|
||||||
|
<RestorePackages>true</RestorePackages>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>..\..\Output\Debug\Plugins\Wox.Plugin.QueryHistory\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>..\..\Output\Release\Plugins\Wox.Plugin.Program\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\packages\Newtonsoft.Json.6.0.8\lib\net35\Newtonsoft.Json.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="HistoryItem.cs" />
|
||||||
|
<Compile Include="QueryHistory.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="QueryHistoryStorage.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\Wox.Core\Wox.Core.csproj">
|
||||||
|
<Project>{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}</Project>
|
||||||
|
<Name>Wox.Core</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\..\Wox.Infrastructure\Wox.Infrastructure.csproj">
|
||||||
|
<Project>{4fd29318-a8ab-4d8f-aa47-60bc241b8da3}</Project>
|
||||||
|
<Name>Wox.Infrastructure</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\..\Wox.Plugin\Wox.Plugin.csproj">
|
||||||
|
<Project>{8451ecdd-2ea4-4966-bb0a-7bbc40138e80}</Project>
|
||||||
|
<Name>Wox.Plugin</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="packages.config" />
|
||||||
|
<None Include="plugin.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Images\history.png">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
|
||||||
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。启用“NuGet 程序包还原”可下载这些程序包。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
|
||||||
|
</Target>
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
|
</Project>
|
4
Plugins/Wox.Plugin.QueryHistory/packages.config
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net35" />
|
||||||
|
</packages>
|
12
Plugins/Wox.Plugin.QueryHistory/plugin.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"ID":"54F327C503414B9489CDD331EE9472EF",
|
||||||
|
"ActionKeyword":"history",
|
||||||
|
"Name":"Query History",
|
||||||
|
"Description":"Remember Wox query history",
|
||||||
|
"Author":"qianlifeng",
|
||||||
|
"Version":"1.0.0",
|
||||||
|
"Language":"csharp",
|
||||||
|
"Website":"http://www.getwox.com/plugin",
|
||||||
|
"ExecuteFileName":"Wox.Plugin.QueryHistory.dll",
|
||||||
|
"IcoPath":"Images\\history.png"
|
||||||
|
}
|
BIN
Plugins/Wox.Plugin.Sys/Images/app.png
Normal file
After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 139 B After Width: | Height: | Size: 139 B |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |