mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-09 04:37:30 +02:00
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:
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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}" />
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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(() =>
|
||||
|
||||
@@ -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\*
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user