mirror of
https://github.com/MacPass/MacPass.git
synced 2025-12-23 07:59:27 +00:00
Stubbed API for Autotype plugins that resolve window titles
This commit is contained in:
@@ -118,6 +118,13 @@ FOUNDATION_EXPORT NSString *const MPPluginUnkownVersion;
|
||||
- (KPKTree *)treeForRunningOpenPanel:(NSOpenPanel *)panel withResponse:(NSModalResponse)response;
|
||||
@end
|
||||
|
||||
@protocol MPAutotypeWindowTitleResolverPlugin <NSObject>
|
||||
@required
|
||||
|
||||
- (BOOL)acceptsRunningApplication:(NSRunningApplication *)runningApplication;
|
||||
- (NSString *)windowTitleForRunningApplication:(NSRunningApplication *)runningApplication;
|
||||
@end
|
||||
|
||||
@interface MPPlugin (Deprecated)
|
||||
|
||||
- (instancetype)initWithPluginManager:(id)manager;
|
||||
|
||||
@@ -32,6 +32,7 @@ FOUNDATION_EXPORT NSString *const MPPluginHostPluginBundleIdentifiyerKey;
|
||||
@class MPPlugin;
|
||||
@class KPKEntry;
|
||||
@protocol MPImportPlugin;
|
||||
@protocol MPAutotypeWindowTitleResolverPlugin;
|
||||
|
||||
@interface MPPluginHost : NSObject
|
||||
|
||||
@@ -57,3 +58,9 @@ FOUNDATION_EXPORT NSString *const MPPluginHostPluginBundleIdentifiyerKey;
|
||||
@property (readonly, copy) NSArray <MPPlugin<MPImportPlugin> __kindof*> *importPlugins;
|
||||
|
||||
@end
|
||||
|
||||
@interface MPPluginHost (MPWindowTitleResolverSupport)
|
||||
|
||||
- (NSArray<MPPlugin<MPAutotypeWindowTitleResolverPlugin> __kindof*> *)windowTitleResolverForRunningApplication:(NSRunningApplication *)runningApplication;
|
||||
|
||||
@end
|
||||
|
||||
@@ -447,6 +447,13 @@ NSString *const MPPluginHostPluginBundleIdentifiyerKey = @"MPPluginHostPluginBun
|
||||
[context.plugin performActionForMenuItem:item withEntries:context.entries];
|
||||
}
|
||||
|
||||
- (NSArray *)_pluginsConformingToProtocoll:(Protocol *)protocol {
|
||||
NSPredicate *filterPredicate = [NSPredicate predicateWithBlock:^BOOL(id _Nullable evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
|
||||
return ([evaluatedObject conformsToProtocol:protocol]);
|
||||
}];
|
||||
return [self.mutablePlugins filteredArrayUsingPredicate:filterPredicate];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NSString *const MPPluginBundleIdentifierKey = @"MPPluginBundleIdentifierKey";
|
||||
@@ -455,10 +462,22 @@ NSString *const MPImportPluginUTIKey = @"MPImportPluginUTIKey";
|
||||
@implementation MPPluginHost (MPImportPluginSupport)
|
||||
|
||||
- (NSArray<MPPlugin *> *)importPlugins {
|
||||
NSPredicate *filterPredicate = [NSPredicate predicateWithBlock:^BOOL(id _Nullable evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
|
||||
return ([evaluatedObject conformsToProtocol:@protocol(MPImportPlugin)]);
|
||||
}];
|
||||
return [self.mutablePlugins filteredArrayUsingPredicate:filterPredicate];
|
||||
return [self _pluginsConformingToProtocoll:@protocol(MPImportPlugin)];
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation MPPluginHost (MPWindowTitleResolverSupport)
|
||||
|
||||
- (NSArray<MPPlugin *> *)windowTitleResolverForRunningApplication:(NSRunningApplication *)runningApplication {
|
||||
NSArray<MPPlugin<MPAutotypeWindowTitleResolverPlugin> *> *plugins = [self _pluginsConformingToProtocoll:@protocol(MPAutotypeWindowTitleResolverPlugin)];
|
||||
NSMutableArray *resolver = [[NSMutableArray alloc] init];
|
||||
for(MPPlugin<MPAutotypeWindowTitleResolverPlugin> *plugin in plugins) {
|
||||
if([plugin acceptsRunningApplication:runningApplication]) {
|
||||
[resolver addObject:plugin];
|
||||
}
|
||||
}
|
||||
return [resolver copy];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user