diff --git a/Plugins/Wox.Plugin.HotMovies/Images/movies.png b/Plugins/Wox.Plugin.HotMovies/Images/movies.png new file mode 100644 index 0000000000..da2cd61288 Binary files /dev/null and b/Plugins/Wox.Plugin.HotMovies/Images/movies.png differ diff --git a/Plugins/Wox.Plugin.HotMovies/main.py b/Plugins/Wox.Plugin.HotMovies/main.py new file mode 100644 index 0000000000..e22a2dbfcd --- /dev/null +++ b/Plugins/Wox.Plugin.HotMovies/main.py @@ -0,0 +1,29 @@ +#encoding=utf8 +import requests +from bs4 import BeautifulSoup +import json +import webbrowser + +def safeSelectText(s,path): + return s.select(path)[0].text if len(s.select(path)) > 0 else "" + +def query(key): + r = requests.get('http://www.gewara.com/movie/searchMovie.xhtml') + bs = BeautifulSoup(r.text) + results = [] + for i in bs.select(".ui_left .ui_media"): + res = {} + score = safeSelectText(i,".grade sub") + safeSelectText(i,".grade sup") + res["Title"] = safeSelectText(i,".title a") + " / " + score + res["SubTitle"] = i.select(".ui_text p")[1].text + res["ActionName"] = "openUrl" + res["IcoPath"] = "Images\\movies.png" + res["ActionPara"] = "http://www.gewara.com" + i.select(".title a")[0]["href"] + results.append(res) + return json.dumps(results) + +def openUrl(context,url): + webbrowser.open(url) + +if __name__ == "__main__": + print query("movie geo") diff --git a/Plugins/Wox.Plugin.HotMovies/main.pyc b/Plugins/Wox.Plugin.HotMovies/main.pyc new file mode 100644 index 0000000000..1f0c777196 Binary files /dev/null and b/Plugins/Wox.Plugin.HotMovies/main.pyc differ diff --git a/Plugins/Wox.Plugin.HotMovies/plugin.json b/Plugins/Wox.Plugin.HotMovies/plugin.json new file mode 100644 index 0000000000..b8089158ad --- /dev/null +++ b/Plugins/Wox.Plugin.HotMovies/plugin.json @@ -0,0 +1,11 @@ +{ + "ID":"D2D2C23B084D411DB66FE0C79D6C2A7D", + "ActionKeyword":"hotmovie", + "Name":"近期热映电影", + "Description":"近期热映电影,powered by 格瓦拉", + "Author":"qianlifeng", + "Version":"1.0", + "Language":"python", + "Website":"http://www.getwox.com", + "ExecuteFileName":"main.py" +} diff --git a/Wox.Plugin/Wox.Plugin.PluginManagement/Main.cs b/Wox.Plugin/Wox.Plugin.PluginManagement/Main.cs new file mode 100644 index 0000000000..086820fb0e --- /dev/null +++ b/Wox.Plugin/Wox.Plugin.PluginManagement/Main.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Wox.Plugin.PluginManagement +{ + public class Main:IPlugin + { + private PluginInitContext context; + + public List Query(Query query) + { + return null; + } + + public void Init(PluginInitContext context) + { + this.context = context; + } + } +} diff --git a/Wox.Plugin/Wox.Plugin.PluginManagement/Properties/AssemblyInfo.cs b/Wox.Plugin/Wox.Plugin.PluginManagement/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..8d7b20b980 --- /dev/null +++ b/Wox.Plugin/Wox.Plugin.PluginManagement/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("Wox.Plugin.PluginManagement")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Wox.Plugin.PluginManagement")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("92b59bab-5c8c-414b-a8d7-326c7be3a11d")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Wox.Plugin/Wox.Plugin.PluginManagement/Wox.Plugin.PluginManagement.csproj b/Wox.Plugin/Wox.Plugin.PluginManagement/Wox.Plugin.PluginManagement.csproj new file mode 100644 index 0000000000..f66ee5248d --- /dev/null +++ b/Wox.Plugin/Wox.Plugin.PluginManagement/Wox.Plugin.PluginManagement.csproj @@ -0,0 +1,58 @@ + + + + + Debug + AnyCPU + {049490F0-ECD2-4148-9B39-2135EC346EBE} + Library + Properties + Wox.Plugin.PluginManagement + Wox.Plugin.PluginManagement + v3.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + {8451ecdd-2ea4-4966-bb0a-7bbc40138e80} + Wox.Plugin + + + + + \ No newline at end of file diff --git a/Wox.sln b/Wox.sln index 50bcaea9f5..45cb55dae0 100644 --- a/Wox.sln +++ b/Wox.sln @@ -27,6 +27,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.UAC", "Wox.UAC\Wox.UAC. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.Plugin.Clipboard", "Plugins\Wox.Plugin.Clipboard\Wox.Plugin.Clipboard.csproj", "{8C14DC11-2737-4DCB-A121-5D7BDD57FEA2}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.Plugin.PluginManagement", "Wox.Plugin\Wox.Plugin.PluginManagement\Wox.Plugin.PluginManagement.csproj", "{049490F0-ECD2-4148-9B39-2135EC346EBE}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -376,6 +378,34 @@ Global {8C14DC11-2737-4DCB-A121-5D7BDD57FEA2}.UnitTests|Win32.ActiveCfg = Release|Any CPU {8C14DC11-2737-4DCB-A121-5D7BDD57FEA2}.UnitTests|x64.ActiveCfg = Release|Any CPU {8C14DC11-2737-4DCB-A121-5D7BDD57FEA2}.UnitTests|x86.ActiveCfg = Release|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.Debug|Win32.ActiveCfg = Debug|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.Debug|x64.ActiveCfg = Debug|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.Debug|x86.ActiveCfg = Debug|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.EmbeddingTest|Any CPU.ActiveCfg = Release|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.EmbeddingTest|Any CPU.Build.0 = Release|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.EmbeddingTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.EmbeddingTest|Mixed Platforms.Build.0 = Release|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.EmbeddingTest|Win32.ActiveCfg = Release|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.EmbeddingTest|x64.ActiveCfg = Release|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.EmbeddingTest|x86.ActiveCfg = Release|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.Release|Any CPU.Build.0 = Release|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.Release|Win32.ActiveCfg = Release|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.Release|x64.ActiveCfg = Release|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.Release|x86.ActiveCfg = Release|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.UnitTests|Any CPU.ActiveCfg = Release|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.UnitTests|Any CPU.Build.0 = Release|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.UnitTests|Mixed Platforms.ActiveCfg = Release|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.UnitTests|Mixed Platforms.Build.0 = Release|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.UnitTests|Win32.ActiveCfg = Release|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.UnitTests|x64.ActiveCfg = Release|Any CPU + {049490F0-ECD2-4148-9B39-2135EC346EBE}.UnitTests|x86.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -385,5 +415,6 @@ Global {6B6696B1-A547-4FD4-85EF-E1FD0F54AD2C} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87} {230AE83F-E92E-4E69-8355-426B305DA9C0} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87} {8C14DC11-2737-4DCB-A121-5D7BDD57FEA2} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87} + {049490F0-ECD2-4148-9B39-2135EC346EBE} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87} EndGlobalSection EndGlobal diff --git a/Wox/MainWindow.xaml.cs b/Wox/MainWindow.xaml.cs index 215525fd56..bd061dbef2 100644 --- a/Wox/MainWindow.xaml.cs +++ b/Wox/MainWindow.xaml.cs @@ -47,6 +47,7 @@ namespace Wox InitializeComponent(); progressBar.ToolTip = toolTip; InitialTray(); + resultCtrl.OnMouseClickItem += AcceptSelect; ThreadPool.SetMaxThreads(30, 10); InitProgressbarAnimation(); @@ -60,8 +61,6 @@ namespace Wox } } - - public void SetHotkey(string hotkeyStr, EventHandler action) { var hotkey = new HotkeyModel(hotkeyStr); @@ -285,15 +284,14 @@ namespace Wox break; case Key.Enter: - AcceptSelect(); + AcceptSelect(resultCtrl.AcceptSelect()); e.Handled = true; break; } } - private void AcceptSelect() + private void AcceptSelect(Result result) { - Result result = resultCtrl.AcceptSelect(); if (result != null) { if (result.Action != null) diff --git a/Wox/PluginLoader/PythonPluginLoader.cs b/Wox/PluginLoader/PythonPluginLoader.cs index d8b2c5db8f..e9f88c0a7e 100644 --- a/Wox/PluginLoader/PythonPluginLoader.cs +++ b/Wox/PluginLoader/PythonPluginLoader.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Threading; using Python.Runtime; @@ -33,6 +34,7 @@ namespace Wox.PluginLoader private bool CheckPythonEnvironmentInstalled() { try { + SetPythonHome(); PythonEngine.Initialize(); PythonEngine.Shutdown(); } @@ -42,5 +44,12 @@ namespace Wox.PluginLoader } return true; } + + private void SetPythonHome() + { + //Environment.SetEnvironmentVariable("PYTHONHOME",Path.Combine(Directory.GetCurrentDirectory(),"PythonHome")); + //PythonEngine.PythonHome = + //PythonEngine.ProgramName + } } } diff --git a/Wox/ResultPanel.xaml b/Wox/ResultPanel.xaml index 2c85062e23..dc02b93ef5 100644 --- a/Wox/ResultPanel.xaml +++ b/Wox/ResultPanel.xaml @@ -11,7 +11,7 @@ - + @@ -35,7 +35,7 @@ - + diff --git a/Wox/ResultPanel.xaml.cs b/Wox/ResultPanel.xaml.cs index c272990027..8ae0cf370b 100644 --- a/Wox/ResultPanel.xaml.cs +++ b/Wox/ResultPanel.xaml.cs @@ -3,15 +3,27 @@ using System.Collections.Generic; using System.Diagnostics; using System.Windows; using System.Windows.Controls; +using System.Windows.Forms; +using System.Windows.Input; using System.Windows.Media; using Wox.Helper; using Wox.Infrastructure; using Wox.Plugin; +using MessageBox = System.Windows.MessageBox; +using UserControl = System.Windows.Controls.UserControl; namespace Wox { public partial class ResultPanel : UserControl { + public event Action OnMouseClickItem; + + protected virtual void OnOnMouseClickItem(Result result) + { + Action handler = OnMouseClickItem; + if (handler != null) handler(result); + } + public bool Dirty { get; set; } public void AddResults(List results) @@ -141,5 +153,14 @@ namespace Wox lbResults.ScrollIntoView(e.AddedItems[0]); } } + + private void LbResults_OnPreviewMouseDown(object sender, MouseButtonEventArgs e) + { + var item = ItemsControl.ContainerFromElement(lbResults, e.OriginalSource as DependencyObject) as ListBoxItem; + if (item != null) + { + OnOnMouseClickItem(item.DataContext as Result); + } + } } } \ No newline at end of file