2
2
using System . Collections . Generic ;
3
3
using System . Collections . Specialized ;
4
4
using System . Threading ;
5
- using System . Threading . Tasks ;
6
5
7
6
namespace Flow . Launcher . Plugin
8
7
{
9
- public interface IFeatures
10
- {
11
- }
12
-
13
- public interface IContextMenu : IFeatures
14
- {
15
- List < Result > LoadContextMenus ( Result selectedResult ) ;
16
- }
17
-
18
8
/// <summary>
19
- /// Represent plugins that support internationalization
9
+ /// Base Interface for Flow's special plugin feature interface
20
10
/// </summary>
21
- public interface IPluginI18n : IFeatures
22
- {
23
- string GetTranslatedPluginTitle ( ) ;
24
-
25
- string GetTranslatedPluginDescription ( ) ;
26
- }
27
-
28
- public interface IResultUpdated : IFeatures
29
- {
30
- event ResultUpdatedEventHandler ResultsUpdated ;
31
- }
32
-
33
- public delegate void ResultUpdatedEventHandler ( IResultUpdated sender , ResultUpdatedEventArgs e ) ;
34
-
35
- public class ResultUpdatedEventArgs : EventArgs
36
- {
37
- public List < Result > Results ;
38
- public Query Query ;
39
- public CancellationToken Token { get ; init ; } = default ;
40
- }
41
-
42
- /// <summary>
43
- /// This interface is to indicate and allow plugins to asyncronously reload their
44
- /// in memory data cache or other mediums when user makes a new change
45
- /// that is not immediately captured. For example, for BrowserBookmark and Program
46
- /// plugin does not automatically detect when a user added a new bookmark or program,
47
- /// so this interface's function is exposed to allow user manually do the reloading after
48
- /// those new additions.
49
- ///
50
- /// The command that allows user to manual reload is exposed via Plugin.Sys, and
51
- /// it will call the plugins that have implemented this interface.
52
- /// </summary>
53
- public interface IAsyncReloadable : IFeatures
54
- {
55
- Task ReloadDataAsync ( ) ;
56
- }
57
-
58
- /// <summary>
59
- /// This interface is to indicate and allow plugins to synchronously reload their
60
- /// in memory data cache or other mediums when user makes a new change
61
- /// that is not immediately captured. For example, for BrowserBookmark and Program
62
- /// plugin does not automatically detect when a user added a new bookmark or program,
63
- /// so this interface's function is exposed to allow user manually do the reloading after
64
- /// those new additions.
65
- ///
66
- /// The command that allows user to manual reload is exposed via Plugin.Sys, and
67
- /// it will call the plugins that have implemented this interface.
68
- ///
69
- /// <para>
70
- /// If requiring reloading data asynchronously, please use the IAsyncReloadable interface
71
- /// </para>
72
- /// </summary>
73
- public interface IReloadable : IFeatures
74
- {
75
- void ReloadData ( ) ;
76
- }
77
-
78
- /// <summary>
79
- /// Save addtional plugin data. Inherit this interface if additional data e.g. cache needs to be saved,
80
- /// Otherwise if LoadSettingJsonStorage or SaveSettingJsonStorage has been callded,
81
- /// plugin settings will be automatically saved (see Flow.Launcher/PublicAPIInstance.SavePluginSettings) by Flow
82
- /// </summary>
83
- public interface ISavable : IFeatures
11
+ public interface IFeatures
84
12
{
85
- void Save ( ) ;
86
13
}
87
14
}
0 commit comments