Use existing installed python

1. use installed python
2. add settings to choose python directory
3. add py3 compability
4. create hello world python example
This commit is contained in:
bao-qian
2016-05-05 01:57:03 +01:00
parent bc0f5a9136
commit 785843198a
27 changed files with 362 additions and 177 deletions

View File

@@ -50,7 +50,7 @@ namespace Wox
return;
}
// update persistant data
_settings.UpdateActionKeyword(_plugin.Metadata);
_settings.PluginSettings.UpdateActionKeyword(_plugin.Metadata);
MessageBox.Show(InternationalizationManager.Instance.GetTranslation("succeed"));
Close();

View File

@@ -42,10 +42,10 @@ namespace Wox
ImageLoader.PreloadImages();
MainViewModel mainVM = new MainViewModel();
var pluginsSettings = mainVM._settings.PluginSettings;
API = new PublicAPIInstance(mainVM, mainVM._settings);
PluginManager.InitializePlugins(API);
PluginManager.InitializePlugins(API, pluginsSettings);
mainVM._settings.UpdatePluginSettings();
Window = new MainWindow(mainVM._settings, mainVM);
NotifyIconManager notifyIconManager = new NotifyIconManager(API);

View File

@@ -24,7 +24,8 @@
<system:String x:Key="language">Sprache</system:String>
<system:String x:Key="maxShowResults">Maximale Anzahl Ergebnisse</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">Ignoriere Tastenkombination wenn Fenster im Vollbildmodus ist</system:String>
<system:String x:Key="pythonDirectory">Python Directory</system:String>
<!--Setting Plugin-->
<system:String x:Key="plugin">Plugin</system:String>
<system:String x:Key="browserMorePlugins">Suche weitere Plugins</system:String>

View File

@@ -24,6 +24,9 @@
<system:String x:Key="language">Language</system:String>
<system:String x:Key="maxShowResults">Maximum show results</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">Ignore hotkeys if window is fullscreen</system:String>
<system:String x:Key="pythonDirectory">Python Directory</system:String>
<system:String x:Key="selectPythonDirectory">Select</system:String>
<!--Setting Plugin-->
<system:String x:Key="plugin">Plugin</system:String>

View File

@@ -24,7 +24,8 @@
<system:String x:Key="language">Langue</system:String>
<system:String x:Key="maxShowResults">Résultats à afficher</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">Ignore les raccourcis lorsqu'une application est en plein écran</system:String>
<system:String x:Key="pythonDirectory">Python Directory</system:String>
<!--Setting Plugin-->
<system:String x:Key="plugin">Modules</system:String>
<system:String x:Key="browserMorePlugins">Trouver plus de modules</system:String>

View File

@@ -24,6 +24,8 @@
<system:String x:Key="language">言語</system:String>
<system:String x:Key="maxShowResults">結果の最大表示件数</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">ウィンドウがフルスクリーン時にホットキーを無効にする</system:String>
<system:String x:Key="pythonDirectory">Python Directory</system:String>
<!--Setting Plugin-->
<system:String x:Key="plugin">プラグイン</system:String>

View File

@@ -24,7 +24,8 @@
<system:String x:Key="language">Язык</system:String>
<system:String x:Key="maxShowResults">Максимальное количество результатов</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">Игнорировать горячие клавиши, если окно в полноэкранном режиме</system:String>
<system:String x:Key="pythonDirectory">Python Directory</system:String>
<!--Setting Plugin-->
<system:String x:Key="plugin">Плагины</system:String>
<system:String x:Key="browserMorePlugins">Найти больше плагинов</system:String>

View File

@@ -24,6 +24,7 @@
<system:String x:Key="language">语言</system:String>
<system:String x:Key="maxShowResults">最大结果显示个数</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">全屏模式下忽略热键</system:String>
<system:String x:Key="pythonDirectory">Python 路径</system:String>
<!--设置,插件-->
<system:String x:Key="plugin">插件</system:String>

View File

@@ -24,6 +24,7 @@
<system:String x:Key="language">語言</system:String>
<system:String x:Key="maxShowResults">最大結果顯示個數</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">全屏模式下忽略熱鍵</system:String>
<system:String x:Key="pythonDirectory">Python Directory</system:String>
<!--設置,插件-->
<system:String x:Key="plugin">插件</system:String>

View File

@@ -45,6 +45,11 @@
<TextBlock Text="{DynamicResource maxShowResults}" />
<ComboBox Margin="10 0 0 0" Width="45" Name="comboMaxResultsToShow" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{DynamicResource pythonDirectory}" Margin="10"/>
<TextBox Width="300" Margin="10" x:Name="PythonDirectory" />
<Button Click="SelectPythonDirectoryOnClick" Content="{DynamicResource selectPythonDirectory}" VerticalAlignment="Center"/>
</StackPanel>
</StackPanel>
</TabItem>
<TabItem Header="{DynamicResource plugin}" x:Name="tabPlugin">
@@ -280,7 +285,7 @@
</StackPanel>
</Grid>
</TabItem>
<TabItem Header="{DynamicResource proxy}">
<TabItem Header="{DynamicResource proxy}" Height="22" VerticalAlignment="Top">
<StackPanel>
<CheckBox x:Name="cbEnableProxy" Margin="10">
<TextBlock Text="{DynamicResource enableProxy}" />

View File

@@ -7,6 +7,7 @@ using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Forms;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
@@ -23,6 +24,12 @@ using Wox.Infrastructure.Image;
using Wox.Plugin;
using Wox.ViewModel;
using Application = System.Windows.Forms.Application;
using CheckBox = System.Windows.Controls.CheckBox;
using Control = System.Windows.Controls.Control;
using Cursors = System.Windows.Input.Cursors;
using HorizontalAlignment = System.Windows.HorizontalAlignment;
using KeyEventArgs = System.Windows.Input.KeyEventArgs;
using MessageBox = System.Windows.MessageBox;
using Stopwatch = Wox.Infrastructure.Stopwatch;
namespace Wox
@@ -239,6 +246,30 @@ namespace Wox
}
}
private void SelectPythonDirectoryOnClick(object sender, RoutedEventArgs e)
{
var dlg = new FolderBrowserDialog {RootFolder = Environment.SpecialFolder.ProgramFiles};
var result = dlg.ShowDialog();
if (result == System.Windows.Forms.DialogResult.OK)
{
string pythonDirectory = dlg.SelectedPath;
if (!string.IsNullOrEmpty(pythonDirectory))
{
var pythonPath = Path.Combine(pythonDirectory, PluginsLoader.PythonExecutable);
if (File.Exists(pythonPath))
{
PythonDirectory.Text = pythonDirectory;
_settings.PluginSettings.PythonDirectory = pythonDirectory;
MessageBox.Show("Remember to restart Wox use new Python path");
}
else
{
MessageBox.Show("Can't find python in given directory");
}
}
}
}
#endregion
#region Hotkey
@@ -553,7 +584,7 @@ namespace Wox
pluginId = pair.Metadata.ID;
pluginIcon.Source = ImageLoader.Load(pair.Metadata.IcoPath);
var customizedPluginConfig = _settings.PluginSettings[pluginId];
var customizedPluginConfig = _settings.PluginSettings.Plugins[pluginId];
cbDisablePlugin.IsChecked = customizedPluginConfig != null && customizedPluginConfig.Disabled;
PluginContentPanel.Content = null;
@@ -571,7 +602,7 @@ namespace Wox
// update in-memory data
PluginManager.UpdateActionKeywordForPlugin(pair, e.OldActionKeyword, e.NewActionKeyword);
// update persistant data
_settings.UpdateActionKeyword(pair.Metadata);
_settings.PluginSettings.UpdateActionKeyword(pair.Metadata);
MessageBox.Show(InternationalizationManager.Instance.GetTranslation("succeed"));
};
@@ -596,7 +627,7 @@ namespace Wox
if (pair != null)
{
var id = pair.Metadata.ID;
var customizedPluginConfig = _settings.PluginSettings[id];
var customizedPluginConfig = _settings.PluginSettings.Plugins[id];
if (customizedPluginConfig.Disabled)
{
PluginManager.DisablePlugin(pair);
@@ -804,5 +835,6 @@ namespace Wox
Close();
}
}
}
}

View File

@@ -451,7 +451,7 @@ namespace Wox.ViewModel
var plugins = PluginManager.ValidPluginsForQuery(query);
foreach (var plugin in plugins)
{
var config = _settings.PluginSettings[plugin.Metadata.ID];
var config = _settings.PluginSettings.Plugins[plugin.Metadata.ID];
if (!config.Disabled)
{
Task.Factory.StartNew(() =>

View File

@@ -384,7 +384,7 @@
<PropertyGroup>
<PostBuildEvent>xcopy /Y $(ProjectDir)Themes\* $(TargetDir)Themes\
xcopy /Y /E $(ProjectDir)Images\* $(TargetDir)Images\
xcopy /Y /D /E $(SolutionDir)PythonHome\* $(TargetDir)PythonHome\
xcopy /Y /D /E $(SolutionDir)Plugins\HelloWorldPython\* $(TargetDir)Plugins\HelloWorldPython\*