Add option to open in tab for WebSearch plugin

This commit is contained in:
Jeremy Wu 2019-11-10 19:12:43 +11:00
parent 93c952b344
commit 2debabe664
3 changed files with 42 additions and 5 deletions

View File

@ -74,7 +74,14 @@ namespace Wox.Plugin.WebSearch
IcoPath = searchSource.IconPath,
Action = c =>
{
searchSource.Url.Replace("{q}", Uri.EscapeDataString(keyword)).NewBrowserWindow("");
if (_settings.OpenInNewBrowser)
{
searchSource.Url.Replace("{q}", Uri.EscapeDataString(keyword)).NewBrowserWindow("");
}
else
{
searchSource.Url.Replace("{q}", Uri.EscapeDataString(keyword)).NewTabInBrowser("");
}
return true;
}
@ -132,7 +139,15 @@ namespace Wox.Plugin.WebSearch
IcoPath = searchSource.IconPath,
Action = c =>
{
searchSource.Url.Replace("{q}", Uri.EscapeDataString(o)).NewBrowserWindow("");
if (_settings.OpenInNewBrowser)
{
searchSource.Url.Replace("{q}", Uri.EscapeDataString(o)).NewBrowserWindow("");
}
else
{
searchSource.Url.Replace("{q}", Uri.EscapeDataString(o)).NewTabInBrowser("");
}
return true;
}
});

View File

@ -219,5 +219,7 @@ namespace Wox.Plugin.WebSearch
}
}
}
public bool OpenInNewBrowser { get; set; } = true;
}
}

View File

@ -7,7 +7,8 @@ namespace Wox.Plugin.SharedCommands
{
public static class SearchWeb
{
/// <summary> Opens search in a new browser. If no browser path is passed in then Chrome is used.
/// <summary>
/// Opens search in a new browser. If no browser path is passed in then Chrome is used.
/// Leave browser path blank to use Chrome.
/// </summary>
public static void NewBrowserWindow(this string url, string browserPath)
@ -19,11 +20,30 @@ namespace Wox.Plugin.SharedCommands
var browser = string.IsNullOrEmpty(browserExecutableName) ? "chrome" : browserPath;
// Internet Explorer will open url in new browser window, and does not take the --new-window parameter
var browserArguements = browserExecutableName == "iexplore.exe" ? url : "--new-window " + url;
var browserArguements = browserExecutableName == "iexplore.exe" ? "" : "--new-window ";
OpenWebSearch(browser, browserArguements, url);
}
/// <summary>
/// Opens search as a tab in the default browser chosen in Windows settings.
/// </summary>
public static void NewTabInBrowser(this string url, string browserPath)
{
var browserExecutableName = browserPath?
.Split(new[] { Path.DirectorySeparatorChar }, StringSplitOptions.None)
.Last();
var browser = string.IsNullOrEmpty(browserExecutableName) ? "" : browserPath;
OpenWebSearch(browser, "", url);
}
private static void OpenWebSearch(string chosenBrowser, string browserArguements, string url)
{
try
{
Process.Start(browser, browserArguements);
Process.Start(chosenBrowser, browserArguements + url);
}
catch (System.ComponentModel.Win32Exception)
{