mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-01-19 15:03:36 +08:00
Refactoring
This commit is contained in:
parent
b49209a0d9
commit
c380049b21
@ -4,10 +4,13 @@ using System.Windows.Documents;
|
||||
|
||||
namespace Wox.Plugin
|
||||
{
|
||||
/// <summary>
|
||||
/// Public APIs that plugin can use
|
||||
/// </summary>
|
||||
public interface IPublicAPI
|
||||
{
|
||||
/// <summary>
|
||||
/// Push result to query window
|
||||
/// Push result to query box
|
||||
/// </summary>
|
||||
/// <param name="query"></param>
|
||||
/// <param name="plugin"></param>
|
||||
@ -15,43 +18,106 @@ namespace Wox.Plugin
|
||||
/// <param name="clearBeforeInsert"></param>
|
||||
void PushResults(Query query,PluginMetadata plugin, List<Result> results,bool clearBeforeInsert = false);
|
||||
|
||||
/// <summary>
|
||||
/// Execute command
|
||||
/// a replacement to RUN(win+r) function
|
||||
/// </summary>
|
||||
/// <param name="cmd">command that want to execute</param>
|
||||
/// <param name="runAsAdministrator">run as administrator</param>
|
||||
/// <returns></returns>
|
||||
bool ShellRun(string cmd, bool runAsAdministrator = false);
|
||||
|
||||
/// <summary>
|
||||
/// Change Wox query
|
||||
/// </summary>
|
||||
/// <param name="query">query text</param>
|
||||
/// <param name="requery">
|
||||
/// force requery By default, Wox will not fire query if your query is same with existing one.
|
||||
/// Set this to true to force Wox requerying
|
||||
/// </param>
|
||||
void ChangeQuery(string query, bool requery = false);
|
||||
|
||||
/// <summary>
|
||||
/// Close Wox
|
||||
/// </summary>
|
||||
void CloseApp();
|
||||
|
||||
/// <summary>
|
||||
/// Hide Wox
|
||||
/// </summary>
|
||||
void HideApp();
|
||||
|
||||
/// <summary>
|
||||
/// Show Wox
|
||||
/// </summary>
|
||||
void ShowApp();
|
||||
|
||||
/// <summary>
|
||||
/// Show message box
|
||||
/// </summary>
|
||||
/// <param name="title">Message title</param>
|
||||
/// <param name="subTitle">Message subtitle</param>
|
||||
/// <param name="iconPath">Message icon path (relative path to your plugin folder)</param>
|
||||
void ShowMsg(string title, string subTitle, string iconPath);
|
||||
|
||||
/// <summary>
|
||||
/// Open setting dialog
|
||||
/// </summary>
|
||||
void OpenSettingDialog();
|
||||
|
||||
/// <summary>
|
||||
/// Show loading animation
|
||||
/// </summary>
|
||||
void StartLoadingBar();
|
||||
|
||||
/// <summary>
|
||||
/// Stop loading animation
|
||||
/// </summary>
|
||||
void StopLoadingBar();
|
||||
|
||||
/// <summary>
|
||||
/// Install Wox plugin
|
||||
/// </summary>
|
||||
/// <param name="path">Plugin path (ends with .wox)</param>
|
||||
void InstallPlugin(string path);
|
||||
|
||||
/// <summary>
|
||||
/// Reload all plugins
|
||||
/// </summary>
|
||||
void ReloadPlugins();
|
||||
|
||||
/// <summary>
|
||||
/// Get translation of current language
|
||||
/// You need to implement IPluginI18n if you want to support multiple languages for your plugin
|
||||
/// </summary>
|
||||
/// <param name="key"></param>
|
||||
/// <returns></returns>
|
||||
string GetTranslation(string key);
|
||||
|
||||
/// <summary>
|
||||
/// Get all loaded plugins
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
List<PluginPair> GetAllPlugins();
|
||||
|
||||
/// <summary>
|
||||
/// Fired after Back key down in the Wox query box
|
||||
/// </summary>
|
||||
event WoxKeyDownEventHandler BackKeyDownEvent;
|
||||
|
||||
/// <summary>
|
||||
/// Fired after global keyboard events
|
||||
/// if you want to hook something like Ctrl+R, you should use this event
|
||||
/// </summary>
|
||||
event WoxGlobalKeyboardEventHandler GlobalKeyboardEvent;
|
||||
|
||||
/// <summary>
|
||||
/// fired after wox execute a query
|
||||
/// Fired after wox execute a query
|
||||
/// </summary>
|
||||
event AfterWoxQueryEventHandler AfterWoxQueryEvent;
|
||||
|
||||
/// <summary>
|
||||
/// fired before wox start to execute a query
|
||||
/// Fired before wox start to execute a query
|
||||
/// </summary>
|
||||
event AfterWoxQueryEventHandler BeforeWoxQueryEvent;
|
||||
}
|
||||
|
@ -364,7 +364,6 @@ namespace Wox
|
||||
var q = new Query(lastQuery);
|
||||
FireBeforeWoxQueryEvent(q);
|
||||
Query(q);
|
||||
BackToResultMode();
|
||||
Dispatcher.DelayInvoke("ShowProgressbar", originQuery =>
|
||||
{
|
||||
if (!queryHasReturn && originQuery == lastQuery)
|
||||
@ -373,7 +372,7 @@ namespace Wox
|
||||
}
|
||||
}, TimeSpan.FromMilliseconds(150), lastQuery);
|
||||
FireAfterWoxQueryEvent(q);
|
||||
}, TimeSpan.FromMilliseconds(ShouldNotDelayQuery ? 0 : 200));
|
||||
}, TimeSpan.FromMilliseconds(200));
|
||||
}
|
||||
|
||||
private void FireAfterWoxQueryEvent(Query q)
|
||||
@ -410,15 +409,9 @@ namespace Wox
|
||||
|
||||
private void Query(Query q)
|
||||
{
|
||||
try
|
||||
{
|
||||
PluginManager.Query(q);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
StopProgress();
|
||||
ErrorReporting.Report(e);
|
||||
}
|
||||
PluginManager.Query(q);
|
||||
StopProgress();
|
||||
BackToResultMode();
|
||||
}
|
||||
|
||||
private void BackToResultMode()
|
||||
@ -427,22 +420,6 @@ namespace Wox
|
||||
pnlContextMenu.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
private bool ShouldNotDelayQuery
|
||||
{
|
||||
get
|
||||
{
|
||||
return IsCMDMode || IsWebSearchMode;
|
||||
}
|
||||
}
|
||||
|
||||
private bool IsCMDMode
|
||||
{
|
||||
get
|
||||
{
|
||||
return tbQuery.Text.StartsWith(">");
|
||||
}
|
||||
}
|
||||
|
||||
private bool IsWebSearchMode
|
||||
{
|
||||
get
|
||||
@ -500,17 +477,6 @@ namespace Wox
|
||||
}
|
||||
}
|
||||
|
||||
private void updateCmdMode()
|
||||
{
|
||||
var currentSelectedItem = pnlResult.GetActiveResult();
|
||||
if (currentSelectedItem != null)
|
||||
{
|
||||
ignoreTextChange = true;
|
||||
tbQuery.Text = ">" + currentSelectedItem.Title;
|
||||
tbQuery.CaretIndex = tbQuery.Text.Length;
|
||||
}
|
||||
}
|
||||
|
||||
private void TbQuery_OnPreviewKeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
//when alt is pressed, the real key should be e.SystemKey
|
||||
@ -553,14 +519,12 @@ namespace Wox
|
||||
|
||||
case Key.PageDown:
|
||||
pnlResult.SelectNextPage();
|
||||
if (IsCMDMode) updateCmdMode();
|
||||
toolTip.IsOpen = false;
|
||||
e.Handled = true;
|
||||
break;
|
||||
|
||||
case Key.PageUp:
|
||||
pnlResult.SelectPrevPage();
|
||||
if (IsCMDMode) updateCmdMode();
|
||||
toolTip.IsOpen = false;
|
||||
e.Handled = true;
|
||||
break;
|
||||
@ -621,7 +585,6 @@ namespace Wox
|
||||
else
|
||||
{
|
||||
pnlResult.SelectPrev();
|
||||
if (IsCMDMode) updateCmdMode();
|
||||
}
|
||||
toolTip.IsOpen = false;
|
||||
}
|
||||
@ -635,7 +598,6 @@ namespace Wox
|
||||
else
|
||||
{
|
||||
pnlResult.SelectNext();
|
||||
if (IsCMDMode) updateCmdMode();
|
||||
}
|
||||
toolTip.IsOpen = false;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user