public Result Result(string query, IPublicAPI api) { var result = new Result { SubTitle = Package.Location, Icon = Logo, Score = Score(query), ContextData = this, Action = e => { Launch(api); return(true); } }; if (Description.Length >= DisplayName.Length && Description.Substring(0, DisplayName.Length) == DisplayName) { result.Title = Description; } else if (!string.IsNullOrEmpty(Description)) { result.Title = $"{DisplayName}: {Description}"; } else { result.Title = DisplayName; } return(result); }
public void InitializePlugin(IPublicAPI api) { if (Metadata.Disabled) { Log.Info($"Do not initialize {Metadata.Name} as it is disabled.", GetType()); return; } if (IsPluginInitialized) { Log.Info($"{Metadata.Name} plugin is already initialized", GetType()); return; } var stopWatch = new Stopwatch(); stopWatch.Start(); if (!InitPlugin(api)) { return; } stopWatch.Stop(); IsPluginInitialized = true; Metadata.InitTime += stopWatch.ElapsedMilliseconds; Log.Info($"Total initialize cost for <{Metadata.Name}> is <{Metadata.InitTime}ms>", GetType()); return; }
public FileSystemSettings(IPublicAPI woxAPI, Settings settings) { this.woxAPI = woxAPI; InitializeComponent(); _settings = settings; lbxFolders.ItemsSource = _settings.FolderLinks; }
public FileSystemSettings(IPublicAPI woxAPI, FolderStorage settings) { this.woxAPI = woxAPI; InitializeComponent(); _settings = settings; lbxFolders.ItemsSource = _settings.FolderLinks; }
public FileSystemSettings(IPublicAPI flowlauncherAPI, Settings settings) { this.flowlauncherAPI = flowlauncherAPI; InitializeComponent(); _settings = settings; lbxFolders.ItemsSource = _settings.FolderLinks; }
public Result Result(string query, IPublicAPI api) { var score = Score(query); if (score <= 0) { // no need to create result if score is 0 return(null); } var result = new Result { SubTitle = "UWP application", Icon = Logo, Score = score, ContextData = this, Action = e => { Launch(api); return(true); } }; if (Description.Length >= DisplayName.Length && Description.Substring(0, DisplayName.Length) == DisplayName) { result.Title = Description; result.TitleHighlightData = StringMatcher.FuzzySearch(query, Description).MatchData; } else { result.Title = DisplayName; result.TitleHighlightData = StringMatcher.FuzzySearch(query, DisplayName).MatchData; } return(result); }
public static void InitializePlugins(IPublicAPI api) { API = api; Parallel.ForEach(AllPlugins, pair => { var milliseconds = Stopwatch.Debug($"|PluginManager.InitializePlugins|Init method time cost for <{pair.Metadata.Name}>", () => { pair.Plugin.Init(new PluginInitContext { CurrentPluginMetadata = pair.Metadata, API = API }); }); pair.Metadata.InitTime += milliseconds; Log.Info($"|PluginManager.InitializePlugins|Total init cost for <{pair.Metadata.Name}> is <{pair.Metadata.InitTime}ms>"); }); _contextMenuPlugins = GetPluginsForInterface <IContextMenu>(); foreach (var plugin in AllPlugins) { if (IsGlobalPlugin(plugin.Metadata)) { GlobalPlugins.Add(plugin); } else { foreach (string actionKeyword in plugin.Metadata.ActionKeywords) { NonGlobalPlugins[actionKeyword] = plugin; } } } }
public Result Result(string query, IPublicAPI api) { var score = Score(query); if (score <= 0) { // no need to create result if score is 0 return(null); } var result = new Result { SubTitle = SetSubtitle(api), Icon = Logo, Score = score, ContextData = this, Action = e => { Launch(api); return(true); } }; // To set the title to always be the displayname of the packaged application result.Title = DisplayName; result.TitleHighlightData = StringMatcher.FuzzySearch(query, Name).MatchData; var toolTipTitle = string.Format("{0} : {1}", api.GetTranslation("powertoys_run_plugin_program_file_name"), result.Title); var toolTipText = string.Format("{0} : {1}", api.GetTranslation("powertoys_run_plugin_program_file_path"), Package.Location); result.ToolTipData = new ToolTipData(toolTipTitle, toolTipText); return(result); }
public void LoadPlugin(IPublicAPI api) { if (Metadata.Disabled) { Log.Info($"Do not load {Metadata.Name} as it is disabled.", GetType()); return; } if (IsPluginLoaded) { Log.Info($"Plugin {Metadata.Name} is already loaded", GetType()); return; } var stopWatch = new Stopwatch(); stopWatch.Start(); if (!CreatePluginInstance()) { return; } if (!InitPlugin(api)) { return; } stopWatch.Stop(); IsPluginLoaded = true; Metadata.InitTime += stopWatch.ElapsedMilliseconds; Log.Info($"Total load cost for <{Metadata.Name}> is <{Metadata.InitTime}ms>", GetType()); return; }
public static void InitializePlugins(IPublicAPI api) { API = api; Parallel.ForEach(AllPlugins, pair => { var milliseconds = Stopwatch.Debug($"|PluginManager.InitializePlugins|Init method time cost for <{pair.Metadata.Name}>", () => { pair.Plugin.Init(new PluginInitContext { CurrentPluginMetadata = pair.Metadata, API = API }); }); pair.Metadata.InitTime += milliseconds; Log.Info($"|PluginManager.InitializePlugins|Total init cost for <{pair.Metadata.Name}> is <{pair.Metadata.InitTime}ms>"); }); _contextMenuPlugins = GetPluginsForInterface <IContextMenu>(); foreach (var plugin in AllPlugins) { if (IsGlobalPlugin(plugin.Metadata)) { GlobalPlugins.Add(plugin); } // Plugins may have multiple ActionKeywords, eg. WebSearch plugin.Metadata.ActionKeywords.Where(x => x != Query.GlobalPluginWildcardSign) .ToList() .ForEach(x => NonGlobalPlugins[x] = plugin); } }
public SettingsControl(IPublicAPI woxAPI, Settings settings) { InitializeComponent(); _settings = settings; _woxAPI = woxAPI; browserPathBox.Text = _settings.BrowserPath; }
public Result Result(string query, IPublicAPI api) { Result result = new Result { SubTitle = FullPath, IcoPath = IcoPath, Score = Score(query), ContextData = this, Action = e => { ProcessStartInfo info = new ProcessStartInfo { FileName = FullPath, WorkingDirectory = ParentDirectory }; bool hide = Main.StartProcess(info); return(hide); } }; if (Description.Length >= Name.Length && Description.Substring(0, Name.Length) == Name) { result.Title = Description; } else if (!string.IsNullOrEmpty(Description)) { result.Title = $"{Name}: {Description}"; } else { result.Title = Name; } return(result); }
public PluginSettings(IPublicAPI woxAPI, Settings settings) { this.woxAPI = woxAPI; InitializeComponent(); _settings = settings; this.DataContext = _settings; }
public List <Result> ContextMenus(IPublicAPI api) { var contextMenus = new List <Result> { new Result { Title = api.GetTranslation("wox_plugin_program_run_as_administrator"), Action = _ => { var info = new ProcessStartInfo { FileName = FullPath, WorkingDirectory = ParentDirectory, Verb = "runas" }; var hide = Main.StartProcess(info); return(hide); }, IcoPath = "Images/cmd.png" }, new Result { Title = api.GetTranslation("wox_plugin_program_open_containing_folder"), Action = _ => { var hide = Main.StartProcess(new ProcessStartInfo(ParentDirectory)); return(hide); }, IcoPath = "Images/folder.png" } }; return(contextMenus); }
public FileSystemSettings(IPublicAPI woxAPI, FolderSettings settings) { this.woxAPI = woxAPI; InitializeComponent(); _settings = settings ?? throw new ArgumentNullException(paramName: nameof(settings)); lbxFolders.ItemsSource = _settings.FolderLinks; }
public void Update(PowerLauncherPluginSettings setting, IPublicAPI api) { if (setting == null || api == null) { return; } if (Metadata.Disabled && !setting.Disabled) { Metadata.Disabled = false; InitializePlugin(api); if (!IsPluginInitialized) { var title = string.Format(CultureInfo.CurrentCulture, Resources.FailedToLoadPluginTitle, Metadata.Name); api.ShowMsg(title, Resources.FailedToLoadPluginDescription, string.Empty, false); } } else { Metadata.Disabled = setting.Disabled; } Metadata.ActionKeyword = setting.ActionKeyword; Metadata.IsGlobal = setting.IsGlobal; if (Plugin is ISettingProvider) { (Plugin as ISettingProvider).UpdateSettings(setting); } }
public SettingWindow(IPublicAPI api) { _api = api; InitializeComponent(); ResultListBoxPreview.DataContext = new ResultsViewModel(); Loaded += Setting_Loaded; }
public static void InitializePlugins(IPublicAPI api) { API = api ?? throw new ArgumentNullException(nameof(api)); var failedPlugins = new ConcurrentQueue <PluginPair>(); Parallel.ForEach(AllPlugins, pair => { if (pair.Metadata.Disabled) { return; } pair.InitializePlugin(API); if (!pair.IsPluginInitialized) { failedPlugins.Enqueue(pair); } }); _contextMenuPlugins = GetPluginsForInterface <IContextMenu>(); if (failedPlugins.Any()) { var failed = string.Join(",", failedPlugins.Select(x => x.Metadata.Name)); var description = string.Format(CultureInfo.CurrentCulture, Resources.FailedToInitializePluginsDescription, failed); API.ShowMsg(Resources.FailedToInitializePluginsTitle, description, string.Empty, false); } }
public AlarmCompletionHandler(IPublicAPI api, Settings settings) { _api = api; _settings = settings; _player = new SoundPlayer(); }
public List <Result> ContextMenus(IPublicAPI api) { var contextMenus = new List <Result> { new Result { Title = api.GetTranslation("flowlauncher_plugin_program_open_containing_folder"), Action = _ => { Main.Context.API.OpenDirectory(Package.Location); return(true); }, IcoPath = "Images/folder.png" } }; if (CanRunElevated) { contextMenus.Add(new Result { Title = api.GetTranslation("flowlauncher_plugin_program_run_as_administrator"), Action = _ => { LaunchElevated(); return(true); }, IcoPath = "Images/cmd.png" }); } return(contextMenus); }
public List <Result> ContextMenus(IPublicAPI api) { var contextMenus = new List <Result> { new Result { Title = api.GetTranslation("flowlauncher_plugin_program_open_containing_folder"), Action = _ => { Main.StartProcess(Process.Start, new ProcessStartInfo( !string.IsNullOrEmpty(Main._settings.CustomizedExplorer) ? Main._settings.CustomizedExplorer : Settings.Explorer, Main._settings.CustomizedArgs .Replace("%s", $"\"{Package.Location}\"") .Trim())); return(true); }, IcoPath = "Images/folder.png" } }; return(contextMenus); }
private bool InitPlugin(IPublicAPI api) { if (Plugin == null) { Log.Warn($"Can not initialize {Metadata.Name} plugin as it was not loaded", GetType()); return(false); } try { Plugin.Init(new PluginInitContext { CurrentPluginMetadata = Metadata, API = api, }); } #pragma warning disable CA1031 // Do not catch general exception types catch (Exception e) #pragma warning restore CA1031 // Do not catch general exception types { Log.Exception($"Fail to Init plugin: {Metadata.Name}", e, GetType()); return(false); } return(true); }
public List <Result> ContextMenus(IPublicAPI api) { var contextMenus = new List <Result> { new Result { Title = api.GetTranslation("flowlauncher_plugin_program_run_as_different_user"), Action = _ => { var info = new ProcessStartInfo { FileName = FullPath, WorkingDirectory = ParentDirectory, UseShellExecute = true }; Task.Run(() => Main.StartProcess(ShellCommand.RunAsDifferentUser, info)); return(true); }, IcoPath = "Images/user.png", Glyph = new GlyphInfo(FontFamily: "/Resources/#Segoe Fluent Icons", Glyph: "\xe7ee"), }, new Result { Title = api.GetTranslation("flowlauncher_plugin_program_run_as_administrator"), Action = _ => { var info = new ProcessStartInfo { FileName = FullPath, WorkingDirectory = ParentDirectory, Verb = "runas", UseShellExecute = true }; Task.Run(() => Main.StartProcess(Process.Start, info)); return(true); }, IcoPath = "Images/cmd.png", Glyph = new GlyphInfo(FontFamily: "/Resources/#Segoe Fluent Icons", Glyph: "\xe7ef"), }, new Result { Title = api.GetTranslation("flowlauncher_plugin_program_open_containing_folder"), Action = _ => { Main.Context.API.OpenDirectory(ParentDirectory, FullPath); return(true); }, IcoPath = "Images/folder.png", Glyph = new GlyphInfo(FontFamily: "/Resources/#Segoe Fluent Icons", Glyph: "\xe838"), } }; return(contextMenus); }
public SettingsControl(IPublicAPI woxAPI, Settings settings) { InitializeComponent(); _settings = settings; _woxAPI = woxAPI; profileBox.Text = _settings.Profile; regionBox.Text = _settings.Region; }
public SettingWindow(IPublicAPI api, SettingWindowViewModel viewModel) { InitializeComponent(); _settings = viewModel.Settings; DataContext = viewModel; _viewModel = viewModel; _api = api; }
public SettingWindow(IPublicAPI api, Settings settings) { InitializeComponent(); _settings = settings; _api = api; ResultListBoxPreview.DataContext = new ResultsViewModel(_settings); Loaded += Setting_Loaded; }
public SpecifilerPluginSettings(IPublicAPI woxAPI, Settings settings) { this.woxAPI = woxAPI; InitializeComponent(); _settings = settings; lbxFolders.ItemsSource = _settings.FolderLinks; txtExtensions.Text = string.Join("; ", _settings.Extensions); }
public Result Result(string query, IPublicAPI api) { var score = Score(query); if (score <= 0) { // no need to create result if this is zero return(null); } if (!hasArguments) { var noArgumentScoreModifier = 5; score += noArgumentScoreModifier; } else { // Filter Web Applications when searching for the main application if (FilterWebApplication(query)) { return(null); } } var result = new Result { SubTitle = SetSubtitle(AppType, api), IcoPath = IcoPath, Score = score, ContextData = this, Action = e => { var info = new ProcessStartInfo { FileName = LnkResolvedPath ?? FullPath, WorkingDirectory = ParentDirectory, UseShellExecute = true }; Main.StartProcess(Process.Start, info); return(true); } }; if (Description.Length >= Name.Length && Description.Substring(0, Name.Length) == Name) { result.Title = Description; result.TitleHighlightData = StringMatcher.FuzzySearch(query, Description).MatchData; } else { result.Title = Name; result.TitleHighlightData = StringMatcher.FuzzySearch(query, Name).MatchData; } return(result); }
public Result Result(string query, IPublicAPI api) { string title; MatchResult matchResult; // We suppose Name won't be null if (Description == null || Name.StartsWith(Description)) { title = Name; matchResult = StringMatcher.FuzzySearch(query, title); } else if (Description.StartsWith(Name)) { title = Description; matchResult = StringMatcher.FuzzySearch(query, Description); } else { title = $"{Name}: {Description}"; var nameMatch = StringMatcher.FuzzySearch(query, Name); var desciptionMatch = StringMatcher.FuzzySearch(query, Description); if (desciptionMatch.Score > nameMatch.Score) { for (int i = 0; i < desciptionMatch.MatchData.Count; i++) { desciptionMatch.MatchData[i] += Name.Length + 2; // 2 is ": " } matchResult = desciptionMatch; } else { matchResult = nameMatch; } } if (!matchResult.Success) { return(null); } var result = new Result { Title = title, SubTitle = Package.Location, Icon = Logo, Score = matchResult.Score, TitleHighlightData = matchResult.MatchData, ContextData = this, Action = e => { Launch(api); return(true); } }; return(result); }
/// <summary> /// Load and init all Wox plugins /// </summary> public static void Init(IPublicAPI api) { if (api == null) { throw new WoxFatalException("api is null"); } SetupPluginDirectories(); API = api; var metadatas = PluginConfig.Parse(pluginDirectories); AllPlugins = (new CSharpPluginLoader().LoadPlugin(metadatas)). Concat(new JsonRPCPluginLoader <PythonPlugin>().LoadPlugin(metadatas)); //load plugin i18n languages ResourceMerger.UpdatePluginLanguages(); foreach (PluginPair pluginPair in AllPlugins) { PluginPair pair = pluginPair; ThreadPool.QueueUserWorkItem(o => { var milliseconds = Stopwatch.Normal($"Plugin init: {pair.Metadata.Name}", () => { pair.Plugin.Init(new PluginInitContext { CurrentPluginMetadata = pair.Metadata, Proxy = HttpProxy.Instance, API = API }); }); pair.InitTime = milliseconds; InternationalizationManager.Instance.UpdatePluginMetadataTranslations(pair); }); } ThreadPool.QueueUserWorkItem(o => { InstantQueryPlugins = GetPluginsForInterface <IInstantQuery>(); contextMenuPlugins = GetPluginsForInterface <IContextMenu>(); foreach (var plugin in AllPlugins) { if (IsGlobalPlugin(plugin.Metadata)) { GlobalPlugins.Add(plugin); } else { foreach (string actionKeyword in plugin.Metadata.ActionKeywords) { NonGlobalPlugins[actionKeyword] = plugin; } } } }); }
public FolderPluginSettings(IPublicAPI flowlauncherAPI, Settings settings) { this.flowlauncherAPI = flowlauncherAPI; InitializeComponent(); _settings = settings; lbxFolders.ItemsSource = _settings.FolderLinks; RefreshView(); }
private void Initilize(IList<SearchSource> sources, PluginInitContext context, Action action) { InitializeComponent(); DataContext = _viewModel; _searchSource = _viewModel.SearchSource; _searchSources = sources; _action = action; _context = context; _api = _context.API; }
/// <summary> /// Load and init all Wox plugins /// </summary> public static void Init(IPublicAPI api) { if (api == null) throw new WoxCritialException("api is null"); SetupPluginDirectories(); API = api; plugins.Clear(); pluginMetadatas = PluginConfig.Parse(pluginDirectories); plugins.AddRange(new CSharpPluginLoader().LoadPlugin(pluginMetadatas)); plugins.AddRange(new JsonRPCPluginLoader<PythonPlugin>().LoadPlugin(pluginMetadatas)); //load plugin i18n languages ResourceMerger.ApplyPluginLanguages(); foreach (PluginPair pluginPair in plugins) { PluginPair pair = pluginPair; ThreadPool.QueueUserWorkItem(o => { Stopwatch sw = new Stopwatch(); sw.Start(); pair.Plugin.Init(new PluginInitContext() { CurrentPluginMetadata = pair.Metadata, Proxy = HttpProxy.Instance, API = API }); sw.Stop(); DebugHelper.WriteLine(string.Format("Plugin init:{0} - {1}", pair.Metadata.Name, sw.ElapsedMilliseconds)); pair.InitTime = sw.ElapsedMilliseconds; InternationalizationManager.Instance.UpdatePluginMetadataTranslations(pair); }); } ThreadPool.QueueUserWorkItem(o => { LoadInstantSearches(); }); }
public List<Result> ContextMenus(IPublicAPI api) { var contextMenus = new List<Result> { new Result { Title = api.GetTranslation("wox_plugin_program_run_as_administrator"), Action = _ => { var info = new ProcessStartInfo { FileName = FullPath, WorkingDirectory = ParentDirectory, Verb = "runas" }; var hide = Main.StartProcess(info); return hide; }, IcoPath = "Images/cmd.png" }, new Result { Title = api.GetTranslation("wox_plugin_program_open_containing_folder"), Action = _ => { var hide = Main.StartProcess(new ProcessStartInfo(ParentDirectory)); return hide; }, IcoPath = "Images/folder.png" } }; return contextMenus; }
public Result Result(string query, IPublicAPI api) { var result = new Result { SubTitle = FullPath, IcoPath = IcoPath, Score = Score(query), ContextData = this, Action = e => { var info = new ProcessStartInfo { FileName = FullPath, WorkingDirectory = ParentDirectory }; var hide = Main.StartProcess(info); return hide; } }; if (Description.Length >= Name.Length && Description.Substring(0, Name.Length) == Name) { result.Title = Description; } else if (!string.IsNullOrEmpty(Description)) { result.Title = $"{Name}: {Description}"; } else { result.Title = Name; } return result; }
public NotifyIconManager(IPublicAPI api) { InitialTray(); _api = api; }
public FileSystemSettings(IPublicAPI woxAPI) { this.woxAPI = woxAPI; InitializeComponent(); lbxFolders.ItemsSource = FolderStorage.Instance.FolderLinks; }
public Result Result(string query, IPublicAPI api) { var result = new Result { SubTitle = Package.Location, Icon = Logo, Score = Score(query), ContextData = this, Action = e => { Launch(api); return true; } }; if (Description.Length >= DisplayName.Length && Description.Substring(0, DisplayName.Length) == DisplayName) { result.Title = Description; } else if (!string.IsNullOrEmpty(Description)) { result.Title = $"{DisplayName}: {Description}"; } else { result.Title = DisplayName; } return result; }
public Settings(IPublicAPI woxAPI) { this.woxAPI = woxAPI; InitializeComponent(); }
public List<Result> ContextMenus(IPublicAPI api) { var contextMenus = new List<Result> { new Result { Title = api.GetTranslation("wox_plugin_program_open_containing_folder"), Action = _ => { var hide = Main.StartProcess(new ProcessStartInfo(Package.Location)); return hide; }, IcoPath = "Images/folder.png" } }; return contextMenus; }
private async void Launch(IPublicAPI api) { var appManager = new ApplicationActivationManager(); uint unusedPid; const string noArgs = ""; const ACTIVATEOPTIONS noFlags = ACTIVATEOPTIONS.AO_NONE; await Task.Run(() => { try { appManager.ActivateApplication(UserModelId, noArgs, noFlags, out unusedPid); } catch (Exception) { var name = "Plugin: Program"; var message = $"Can't start UWP: {DisplayName}"; api.ShowMsg(name, message, string.Empty); } }); }