@@ -19,10 +19,6 @@ public static class PluginManager
19
19
{
20
20
private static IEnumerable < PluginPair > _contextMenuPlugins ;
21
21
22
- /// <summary>
23
- /// Directories that will hold Flow Launcher plugin directory
24
- /// </summary>
25
-
26
22
public static List < PluginPair > AllPlugins { get ; private set ; }
27
23
public static readonly List < PluginPair > GlobalPlugins = new List < PluginPair > ( ) ;
28
24
public static readonly Dictionary < string , PluginPair > NonGlobalPlugins = new Dictionary < string , PluginPair > ( ) ;
@@ -32,27 +28,18 @@ public static class PluginManager
32
28
// todo happlebao, this should not be public, the indicator function should be embeded
33
29
public static PluginsSettings Settings ;
34
30
private static List < PluginMetadata > _metadatas ;
35
- private static readonly string [ ] Directories = { Constant . PreinstalledDirectory , DataLocation . PluginsDirectory } ;
36
31
37
- private static void ValidateUserDirectory ( )
38
- {
39
- if ( ! Directory . Exists ( DataLocation . PluginsDirectory ) )
40
- {
41
- Directory . CreateDirectory ( DataLocation . PluginsDirectory ) ;
42
- }
43
- }
32
+ /// <summary>
33
+ /// Directories that will hold Flow Launcher plugin directory
34
+ /// </summary>
35
+ private static readonly string [ ] Directories = { Constant . PreinstalledDirectory , DataLocation . PluginsDirectory } ;
44
36
45
37
private static void DeletePythonBinding ( )
46
38
{
47
39
const string binding = "flowlauncher.py" ;
48
- var directory = DataLocation . PluginsDirectory ;
49
- foreach ( var subDirectory in Directory . GetDirectories ( directory ) )
40
+ foreach ( var subDirectory in Directory . GetDirectories ( DataLocation . PluginsDirectory ) )
50
41
{
51
- var path = Path . Combine ( subDirectory , binding ) ;
52
- if ( File . Exists ( path ) )
53
- {
54
- File . Delete ( path ) ;
55
- }
42
+ File . Delete ( Path . Combine ( subDirectory , binding ) ) ;
56
43
}
57
44
}
58
45
@@ -76,7 +63,8 @@ public static void ReloadData()
76
63
77
64
static PluginManager ( )
78
65
{
79
- ValidateUserDirectory ( ) ;
66
+ // validate user directory
67
+ Directory . CreateDirectory ( DataLocation . PluginsDirectory ) ;
80
68
// force old plugins use new python binding
81
69
DeletePythonBinding ( ) ;
82
70
}
@@ -132,9 +120,10 @@ public static void InitializePlugins(IPublicAPI api)
132
120
GlobalPlugins . Add ( plugin ) ;
133
121
134
122
// Plugins may have multiple ActionKeywords, eg. WebSearch
135
- plugin . Metadata . ActionKeywords . Where ( x => x != Query . GlobalPluginWildcardSign )
136
- . ToList ( )
137
- . ForEach ( x => NonGlobalPlugins [ x ] = plugin ) ;
123
+ plugin . Metadata . ActionKeywords
124
+ . Where ( x => x != Query . GlobalPluginWildcardSign )
125
+ . ToList ( )
126
+ . ForEach ( x => NonGlobalPlugins [ x ] = plugin ) ;
138
127
}
139
128
140
129
if ( failedPlugins . Any ( ) )
@@ -164,9 +153,9 @@ public static List<PluginPair> ValidPluginsForQuery(Query query)
164
153
165
154
public static List < Result > QueryForPlugin ( PluginPair pair , Query query )
166
155
{
156
+ var results = new List < Result > ( ) ;
167
157
try
168
158
{
169
- List < Result > results = null ;
170
159
var metadata = pair . Metadata ;
171
160
var milliseconds = Stopwatch . Debug ( $ "|PluginManager.QueryForPlugin|Cost for { metadata . Name } ", ( ) =>
172
161
{
@@ -175,13 +164,12 @@ public static List<Result> QueryForPlugin(PluginPair pair, Query query)
175
164
} ) ;
176
165
metadata . QueryCount += 1 ;
177
166
metadata . AvgQueryTime = metadata . QueryCount == 1 ? milliseconds : ( metadata . AvgQueryTime + milliseconds ) / 2 ;
178
- return results ;
179
167
}
180
168
catch ( Exception e )
181
169
{
182
170
Log . Exception ( $ "|PluginManager.QueryForPlugin|Exception for plugin <{ pair . Metadata . Name } > when query <{ query } >", e ) ;
183
- return new List < Result > ( ) ;
184
171
}
172
+ return results ;
185
173
}
186
174
187
175
public static void UpdatePluginMetadata ( List < Result > results , PluginMetadata metadata , Query query )
@@ -221,47 +209,34 @@ public static IEnumerable<PluginPair> GetPluginsForInterface<T>() where T : IFea
221
209
222
210
public static List < Result > GetContextMenusForPlugin ( Result result )
223
211
{
212
+ var results = new List < Result > ( ) ;
224
213
var pluginPair = _contextMenuPlugins . FirstOrDefault ( o => o . Metadata . ID == result . PluginID ) ;
225
214
if ( pluginPair != null )
226
215
{
227
- var metadata = pluginPair . Metadata ;
228
216
var plugin = ( IContextMenu ) pluginPair . Plugin ;
229
217
230
218
try
231
219
{
232
- var results = plugin . LoadContextMenus ( result ) ;
220
+ results = plugin . LoadContextMenus ( result ) ;
233
221
foreach ( var r in results )
234
222
{
235
- r . PluginDirectory = metadata . PluginDirectory ;
236
- r . PluginID = metadata . ID ;
223
+ r . PluginDirectory = pluginPair . Metadata . PluginDirectory ;
224
+ r . PluginID = pluginPair . Metadata . ID ;
237
225
r . OriginQuery = result . OriginQuery ;
238
226
}
239
- return results ;
240
227
}
241
228
catch ( Exception e )
242
229
{
243
- Log . Exception ( $ "|PluginManager.GetContextMenusForPlugin|Can't load context menus for plugin <{ metadata . Name } >", e ) ;
244
- return new List < Result > ( ) ;
230
+ Log . Exception ( $ "|PluginManager.GetContextMenusForPlugin|Can't load context menus for plugin <{ pluginPair . Metadata . Name } >", e ) ;
245
231
}
246
232
}
247
- else
248
- {
249
- return new List < Result > ( ) ;
250
- }
251
-
233
+ return results ;
252
234
}
253
235
254
236
public static bool ActionKeywordRegistered ( string actionKeyword )
255
237
{
256
- if ( actionKeyword != Query . GlobalPluginWildcardSign &&
257
- NonGlobalPlugins . ContainsKey ( actionKeyword ) )
258
- {
259
- return true ;
260
- }
261
- else
262
- {
263
- return false ;
264
- }
238
+ return actionKeyword != Query . GlobalPluginWildcardSign
239
+ && NonGlobalPlugins . ContainsKey ( actionKeyword ) ;
265
240
}
266
241
267
242
/// <summary>
@@ -299,7 +274,7 @@ public static void RemoveActionKeyword(string id, string oldActionkeyword)
299
274
GlobalPlugins . Remove ( plugin ) ;
300
275
}
301
276
302
- if ( oldActionkeyword != Query . GlobalPluginWildcardSign )
277
+ if ( oldActionkeyword != Query . GlobalPluginWildcardSign )
303
278
NonGlobalPlugins . Remove ( oldActionkeyword ) ;
304
279
305
280
0 commit comments