Revision: 27505
http://sourceforge.net/p/bibdesk/svn/27505
Author: hofman
Date: 2022-05-30 22:56:54 +0000 (Mon, 30 May 2022)
Log Message:
-----------
Set properties of script hook from document. Implement script hook manager
methods in BDSKScriptHook class, mostly as class methods.
Modified Paths:
--------------
trunk/bibdesk/BDSKAppController+Scripting.m
trunk/bibdesk/BDSKEditor.m
trunk/bibdesk/BDSKFiler.m
trunk/bibdesk/BDSKScriptHook.h
trunk/bibdesk/BDSKScriptHook.m
trunk/bibdesk/BibDocument.m
trunk/bibdesk/BibDocument_Actions.m
trunk/bibdesk/BibPref_ScriptHooks.m
trunk/bibdesk/Bibdesk.xcodeproj/project.pbxproj
Removed Paths:
-------------
trunk/bibdesk/BDSKScriptHookManager.h
trunk/bibdesk/BDSKScriptHookManager.m
Modified: trunk/bibdesk/BDSKAppController+Scripting.m
===================================================================
--- trunk/bibdesk/BDSKAppController+Scripting.m 2022-05-30 14:30:13 UTC (rev
27504)
+++ trunk/bibdesk/BDSKAppController+Scripting.m 2022-05-30 22:56:54 UTC (rev
27505)
@@ -37,7 +37,7 @@
*/
#import "BDSKAppController+Scripting.h"
-#import "BDSKScriptHookManager.h"
+#import "BDSKScriptHook.h"
#import "BDSKTypeManager.h"
#import "BDSKMacroResolver.h"
#import "BDSKMacroResolver+Scripting.h"
@@ -92,7 +92,7 @@
}
- (BDSKScriptHook *)valueInScriptHooksWithUniqueID:(NSString *)uniqueID {
- return [[BDSKScriptHookManager sharedManager]
scriptHookWithUniqueID:uniqueID];
+ return [BDSKScriptHook scriptHookWithUniqueID:uniqueID];
}
- (BDSKMacro *)valueInMacrosWithName:(NSString *)aName {
Modified: trunk/bibdesk/BDSKEditor.m
===================================================================
--- trunk/bibdesk/BDSKEditor.m 2022-05-30 14:30:13 UTC (rev 27504)
+++ trunk/bibdesk/BDSKEditor.m 2022-05-30 22:56:54 UTC (rev 27505)
@@ -43,7 +43,7 @@
#import "NSImage_BDSKExtensions.h"
#import "BDSKComplexString.h"
#import "BDSKComplexStringFormatter.h"
-#import "BDSKScriptHookManager.h"
+#import "BDSKScriptHook.h"
#import "BDSKEdgeView.h"
#import "NSString_BDSKExtensions.h"
#import "BDSKFieldSheetController.h"
Modified: trunk/bibdesk/BDSKFiler.m
===================================================================
--- trunk/bibdesk/BDSKFiler.m 2022-05-30 14:30:13 UTC (rev 27504)
+++ trunk/bibdesk/BDSKFiler.m 2022-05-30 22:56:54 UTC (rev 27505)
@@ -39,7 +39,7 @@
#import "BDSKFiler.h"
#import "BDSKStringConstants.h"
#import "BibItem.h"
-#import "BDSKScriptHookManager.h"
+#import "BDSKScriptHook.h"
#import "BibDocument.h"
#import "NSFileManager_BDSKExtensions.h"
#import "BDSKLinkedFile.h"
Modified: trunk/bibdesk/BDSKScriptHook.h
===================================================================
--- trunk/bibdesk/BDSKScriptHook.h 2022-05-30 14:30:13 UTC (rev 27504)
+++ trunk/bibdesk/BDSKScriptHook.h 2022-05-30 22:56:54 UTC (rev 27505)
@@ -38,6 +38,20 @@
#import <Cocoa/Cocoa.h>
+extern NSString *BDSKScriptHookNameCloseEditorWindow;
+extern NSString *BDSKScriptHookNameChangeField;
+extern NSString *BDSKScriptHookNameAddFile;
+extern NSString *BDSKScriptHookNameRemoveFile;
+extern NSString *BDSKScriptHookNameWillAutoFile;
+extern NSString *BDSKScriptHookNameDidAutoFile;
+extern NSString *BDSKScriptHookNameWillGenerateCiteKey;
+extern NSString *BDSKScriptHookNameDidGenerateCiteKey;
+extern NSString *BDSKScriptHookNameImportPublications;
+extern NSString *BDSKScriptHookNameWillDeletePublications;
+extern NSString *BDSKScriptHookNameSaveDocument;
+extern NSString *BDSKScriptHookNameOpenDocument;
+extern NSString *BDSKScriptHookNameRevertDocument;
+
@class BibDocument;
@interface BDSKScriptHook : NSObject {
@@ -51,13 +65,12 @@
BibDocument *document;
}
-/*!
- @method initWithName:scriptPath:
- @abstract Initializes and returns a new script hook instance with a
name and script.
- @discussion This is the designated initializer. Returns nil if there is
no script.
- @param aName The name for the script hook.
- @param aScript The script for the script hook.
-*/
++ (NSArray *)scriptHookNames;
+
++ (BDSKScriptHook *)scriptHookWithUniqueID:(NSString *)uniqueID;
+
++ (BDSKScriptHook *)newScriptHookWithName:(NSString *)name;
+
- (id)initWithName:(NSString *)aName script:(NSUserAppleScriptTask *)aScript;
@property (nonatomic, readonly) NSString *name;
@@ -70,4 +83,6 @@
@property (nonatomic, retain) BibDocument *document;
@property (nonatomic, readonly) NSUserAppleScriptTask *script;
+- (void)runWithPublications:(NSArray *)items completionHandler:(void (^)(BOOL
cancelled))handler;
+
@end
Modified: trunk/bibdesk/BDSKScriptHook.m
===================================================================
--- trunk/bibdesk/BDSKScriptHook.m 2022-05-30 14:30:13 UTC (rev 27504)
+++ trunk/bibdesk/BDSKScriptHook.m 2022-05-30 22:56:54 UTC (rev 27505)
@@ -39,12 +39,91 @@
#import "BDSKScriptHook.h"
#import "BibDocument.h"
#import "CFString_BDSKExtensions.h"
+#import "BDSKStringConstants.h"
+#import "NSAppleEventDescriptor_BDSKExtensions.h"
+// these correspond to the script codes in the .sdef file
+#define kBDSKBibdeskSuite 'BDSK'
+#define kBDSKPerformBibdeskAction 'pAct'
+#define kBDSKPrepositionForScriptHook 'fshk'
+#define MAX_RUNNING_SCRIPT_HOOKS 100
+
+NSString *BDSKScriptHookNameChangeField = @"Change Field";
+NSString *BDSKScriptHookNameCloseEditorWindow = @"Close Editor Window";
+NSString *BDSKScriptHookNameAddFile = @"Add File or URL";
+NSString *BDSKScriptHookNameRemoveFile = @"Remove File or URL";
+NSString *BDSKScriptHookNameWillAutoFile = @"Will Auto File";
+NSString *BDSKScriptHookNameDidAutoFile = @"Did Auto File";
+NSString *BDSKScriptHookNameWillGenerateCiteKey = @"Will Generate Cite Key";
+NSString *BDSKScriptHookNameDidGenerateCiteKey = @"Did Generate Cite Key";
+NSString *BDSKScriptHookNameImportPublications = @"Import Publications";
+NSString *BDSKScriptHookNameWillDeletePublications = @"Will Delete
Publications";
+NSString *BDSKScriptHookNameSaveDocument = @"Save Document";
+NSString *BDSKScriptHookNameOpenDocument = @"Open Document";
+NSString *BDSKScriptHookNameRevertDocument = @"Revert Document";
+
@implementation BDSKScriptHook
@synthesize name, uniqueID, field, oldValues, newValues, cancelled, document,
script;
+static NSMutableDictionary *scriptHooks = nil;
+
++ (NSArray *)scriptHookNames {
+ static NSArray *scriptHookNames = nil;
+ if (scriptHookNames == nil)
+ scriptHookNames = [[NSArray alloc]
initWithObjects:BDSKScriptHookNameChangeField,
+ BDSKScriptHookNameCloseEditorWindow,
+ BDSKScriptHookNameAddFile,
+ BDSKScriptHookNameRemoveFile,
+ BDSKScriptHookNameWillAutoFile,
+ BDSKScriptHookNameDidAutoFile,
+ BDSKScriptHookNameWillGenerateCiteKey,
+ BDSKScriptHookNameDidGenerateCiteKey,
+ BDSKScriptHookNameImportPublications,
+ BDSKScriptHookNameWillDeletePublications,
+ BDSKScriptHookNameSaveDocument,
+ BDSKScriptHookNameOpenDocument,
+ BDSKScriptHookNameRevertDocument, nil];
+ return scriptHookNames;
+}
+
++ (BDSKScriptHook *)scriptHookWithUniqueID:(NSString *)uniqueID {
+ return [scriptHooks objectForKey:uniqueID];
+}
+
++ (BDSKScriptHook *)newScriptHookWithName:(NSString *)name {
+ if (name == nil)
+ return nil;
+ // Safety call in case a script generates a loop
+ if ([scriptHooks count] >= MAX_RUNNING_SCRIPT_HOOKS) {
+ [NSException raise:NSRangeException format:@"Too many script hooks are
running. There may be a loop."];
+ return nil;
+ }
+ // We could also build a cache of scripts for each name.
+ NSString *path = [[[NSUserDefaults standardUserDefaults]
dictionaryForKey:BDSKScriptHooksKey] objectForKey:name];
+ NSUserAppleScriptTask *script = nil;
+
+ if ([NSString isEmptyString:path]) {
+ return nil; // no script hook with this name set in the prefs
+ } else if (![[NSFileManager defaultManager] fileExistsAtPath:path]) {
+ NSLog(@"No script file found for script hook %@.", name);
+ return nil;
+ } else {
+ NSError *error = nil;
+ script = [[NSUserAppleScriptTask alloc] initWithURL:[NSURL
fileURLWithPath:path isDirectory:NO] error:&error];
+ if (script == nil) {
+ NSLog(@"Error creating AppleScript: %@", error);
+ return nil;
+ }
+ }
+
+ BDSKScriptHook *scriptHook = [[BDSKScriptHook alloc] initWithName:name
script:script];
+ [script release];
+
+ return scriptHook;
+}
+
// old designated initializer, shouldn't be used
- (id)init {
return [self initWithName:nil script:nil];
@@ -86,4 +165,24 @@
return [NSString stringWithFormat:@"<%@: name=%@, uniqueID=%@>", [self
class], name, uniqueID];
}
+- (void)runWithPublications:(NSArray *)items completionHandler:(void (^)(BOOL
cancelled))handler {
+ BDSKPRECONDITION(script != nil);
+
+ NSAppleEventDescriptor *appleEvent = [NSAppleEventDescriptor
appleEventWithEventClass:kBDSKBibdeskSuite eventID:kBDSKPerformBibdeskAction
labelsAndParameters:keyDirectObject, items ?: [NSNull null],
kBDSKPrepositionForScriptHook, self, 0];
+
+ if (scriptHooks == nil)
+ scriptHooks = [[NSMutableDictionary alloc] init];
+ [scriptHooks setObject:self forKey:uniqueID];
+
+ [script executeWithAppleEvent:appleEvent
completionHandler:^(NSAppleEventDescriptor *result, NSError *error){
+ if (error)
+ NSLog(@"Error executing %@: %@", self, error);
+ dispatch_async(dispatch_get_main_queue(), ^{
+ // cleanup
+ [scriptHooks removeObjectForKey:uniqueID];
+ if (handler) handler(cancelled);
+ });
+ }];
+}
+
@end
Deleted: trunk/bibdesk/BDSKScriptHookManager.h
===================================================================
--- trunk/bibdesk/BDSKScriptHookManager.h 2022-05-30 14:30:13 UTC (rev
27504)
+++ trunk/bibdesk/BDSKScriptHookManager.h 2022-05-30 22:56:54 UTC (rev
27505)
@@ -1,71 +0,0 @@
-//
-// BDSKScriptHookManager.h
-// Bibdesk
-//
-// Created by Christiaan Hofman on 19/10/05.
-/*
- This software is Copyright (c) 2005-2022
- Christiaan Hofman. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- - Neither the name of Christiaan Hofman nor the names of any
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Cocoa/Cocoa.h>
-
-extern NSString *BDSKScriptHookNameCloseEditorWindow;
-extern NSString *BDSKScriptHookNameChangeField;
-extern NSString *BDSKScriptHookNameAddFile;
-extern NSString *BDSKScriptHookNameRemoveFile;
-extern NSString *BDSKScriptHookNameWillAutoFile;
-extern NSString *BDSKScriptHookNameDidAutoFile;
-extern NSString *BDSKScriptHookNameWillGenerateCiteKey;
-extern NSString *BDSKScriptHookNameDidGenerateCiteKey;
-extern NSString *BDSKScriptHookNameImportPublications;
-extern NSString *BDSKScriptHookNameWillDeletePublications;
-extern NSString *BDSKScriptHookNameSaveDocument;
-extern NSString *BDSKScriptHookNameOpenDocument;
-extern NSString *BDSKScriptHookNameRevertDocument;
-
-
-@class BibDocument, BDSKScriptHook;
-
-@interface BDSKScriptHookManager : NSObject {
- NSMutableDictionary *scriptHooks;
- NSArray *scriptHookNames;
-}
-
-+ (BDSKScriptHookManager *)sharedManager;
-
-@property (nonatomic, readonly) NSArray *scriptHookNames;
-
-- (BDSKScriptHook *)scriptHookWithUniqueID:(NSString *)uniqueID;
-
-- (void)runScriptHookWithName:(NSString *)name forPublications:(NSArray
*)items document:(BibDocument *)document field:(NSString *)field
oldValues:(NSArray *)oldValues newValues:(NSArray *)newValues
completionHandler:(void (^)(BOOL cancelled))handler;
-
-@end
Deleted: trunk/bibdesk/BDSKScriptHookManager.m
===================================================================
--- trunk/bibdesk/BDSKScriptHookManager.m 2022-05-30 14:30:13 UTC (rev
27504)
+++ trunk/bibdesk/BDSKScriptHookManager.m 2022-05-30 22:56:54 UTC (rev
27505)
@@ -1,168 +0,0 @@
-//
-// BDSKScriptHookManager.m
-// Bibdesk
-//
-// Created by Christiaan Hofman on 19/10/05.
-/*
- This software is Copyright (c) 2005-2022
- Christiaan Hofman. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- - Neither the name of Christiaan Hofman nor the names of any
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "BDSKScriptHookManager.h"
-#import "BDSKScriptHook.h"
-#import "BibDocument.h"
-#import "BDSKStringConstants.h"
-#import "NSAppleEventDescriptor_BDSKExtensions.h"
-
-// these correspond to the script codes in the .sdef file
-#define kBDSKBibdeskSuite 'BDSK'
-#define kBDSKPerformBibdeskAction 'pAct'
-#define kBDSKPrepositionForScriptHook 'fshk'
-
-#define MAX_RUNNING_SCRIPT_HOOKS 100
-
-NSString *BDSKScriptHookNameChangeField = @"Change Field";
-NSString *BDSKScriptHookNameCloseEditorWindow = @"Close Editor Window";
-NSString *BDSKScriptHookNameAddFile = @"Add File or URL";
-NSString *BDSKScriptHookNameRemoveFile = @"Remove File or URL";
-NSString *BDSKScriptHookNameWillAutoFile = @"Will Auto File";
-NSString *BDSKScriptHookNameDidAutoFile = @"Did Auto File";
-NSString *BDSKScriptHookNameWillGenerateCiteKey = @"Will Generate Cite Key";
-NSString *BDSKScriptHookNameDidGenerateCiteKey = @"Did Generate Cite Key";
-NSString *BDSKScriptHookNameImportPublications = @"Import Publications";
-NSString *BDSKScriptHookNameWillDeletePublications = @"Will Delete
Publications";
-NSString *BDSKScriptHookNameSaveDocument = @"Save Document";
-NSString *BDSKScriptHookNameOpenDocument = @"Open Document";
-NSString *BDSKScriptHookNameRevertDocument = @"Revert Document";
-
-static BDSKScriptHookManager *sharedManager = nil;
-
-@implementation BDSKScriptHookManager
-
-@synthesize scriptHookNames;
-
-+ (BDSKScriptHookManager *)sharedManager {
- if (sharedManager == nil)
- sharedManager = [[self alloc] init];
- return sharedManager;
-}
-
-- (id)init {
- BDSKPRECONDITION(sharedManager == nil);
- self = [super init];
- if (self) {
- scriptHooks = [[NSMutableDictionary alloc] initWithCapacity:3];
- scriptHookNames = [[NSArray alloc]
initWithObjects:BDSKScriptHookNameChangeField,
- BDSKScriptHookNameCloseEditorWindow,
- BDSKScriptHookNameAddFile,
- BDSKScriptHookNameRemoveFile,
- BDSKScriptHookNameWillAutoFile,
- BDSKScriptHookNameDidAutoFile,
- BDSKScriptHookNameWillGenerateCiteKey,
- BDSKScriptHookNameDidGenerateCiteKey,
- BDSKScriptHookNameImportPublications,
- BDSKScriptHookNameWillDeletePublications,
- BDSKScriptHookNameSaveDocument,
- BDSKScriptHookNameOpenDocument,
- BDSKScriptHookNameRevertDocument, nil];
- }
- return self;
-}
-
-- (BDSKScriptHook *)scriptHookWithUniqueID:(NSString *)uniqueID {
- return [scriptHooks objectForKey:uniqueID];
-}
-
-- (BDSKScriptHook *)newScriptHookWithName:(NSString *)name {
- if (name == nil)
- return nil;
- // Safety call in case a script generates a loop
- if ([scriptHooks count] >= MAX_RUNNING_SCRIPT_HOOKS) {
- [NSException raise:NSRangeException format:@"Too many script hooks are
running. There may be a loop."];
- return nil;
- }
- // We could also build a cache of scripts for each name.
- NSString *path = [[[NSUserDefaults standardUserDefaults]
dictionaryForKey:BDSKScriptHooksKey] objectForKey:name];
- NSUserAppleScriptTask *script = nil;
-
- if ([NSString isEmptyString:path]) {
- return nil; // no script hook with this name set in the prefs
- } else if (![[NSFileManager defaultManager] fileExistsAtPath:path]) {
- NSLog(@"No script file found for script hook %@.", name);
- return nil;
- } else {
- NSError *error = nil;
- script = [[NSUserAppleScriptTask alloc] initWithURL:[NSURL
fileURLWithPath:path isDirectory:NO] error:&error];
- if (script == nil) {
- NSLog(@"Error creating AppleScript: %@", error);
- return nil;
- }
- }
-
- BDSKScriptHook *scriptHook = [[BDSKScriptHook alloc] initWithName:name
script:script];
- [scriptHooks setObject:scriptHook forKey:[scriptHook uniqueID]];
- [script release];
-
- return scriptHook;
-}
-
-- (void)runScriptHookWithName:(NSString *)name forPublications:(NSArray
*)items document:(BibDocument *)document field:(NSString *)field
oldValues:(NSArray *)oldValues newValues:(NSArray *)newValues
completionHandler:(void (^)(BOOL cancelled))handler {
- BDSKScriptHook *scriptHook = [self newScriptHookWithName:name];
-
- if (scriptHook) {
- BDSKPRECONDITION([scriptHook script] != nil);
-
- // set the values
- [scriptHook setField:field];
- [scriptHook setOldValues:oldValues];
- [scriptHook setNewValues:newValues];
- [scriptHook setDocument:document];
-
- NSAppleEventDescriptor *appleEvent = [NSAppleEventDescriptor
appleEventWithEventClass:kBDSKBibdeskSuite eventID:kBDSKPerformBibdeskAction
labelsAndParameters:keyDirectObject, items ?: [NSNull null],
kBDSKPrepositionForScriptHook, scriptHook, 0];
- NSUserAppleScriptTask *script = [scriptHook script];
-
- [scriptHook autorelease];
- [script executeWithAppleEvent:appleEvent
completionHandler:^(NSAppleEventDescriptor *result, NSError *error){
- if (error)
- NSLog(@"Error executing %@: %@", scriptHook, error);
- dispatch_async(dispatch_get_main_queue(), ^{
- BOOL cancelled = [scriptHook cancelled];
- // cleanup
- [scriptHooks removeObjectForKey:[scriptHook uniqueID]];
- if (handler) handler(cancelled);
- });
- }];
- } else if (handler) {
- handler(NO);
- }
-}
-
-@end
Modified: trunk/bibdesk/BibDocument.m
===================================================================
--- trunk/bibdesk/BibDocument.m 2022-05-30 14:30:13 UTC (rev 27504)
+++ trunk/bibdesk/BibDocument.m 2022-05-30 22:56:54 UTC (rev 27505)
@@ -57,7 +57,7 @@
#import "NSWorkspace_BDSKExtensions.h"
#import "NSFileManager_BDSKExtensions.h"
#import "BDSKStringEncodingManager.h"
-#import "BDSKScriptHookManager.h"
+#import "BDSKScriptHook.h"
#import "BDSKFilterController.h"
#import "BibDocument_Groups.h"
#import "BibDocument_Search.h"
@@ -2668,7 +2668,18 @@
}
- (void)runScriptHookWithName:(NSString *)name forPublications:(NSArray
*)items field:(NSString *)field oldValues:(NSArray *)oldValues
newValues:(NSArray *)newValues completionHandler:(void (^)(BOOL
cancelled))handler {
- [[BDSKScriptHookManager sharedManager] runScriptHookWithName:name
forPublications:items document:self field:field oldValues:oldValues
newValues:newValues completionHandler:handler];
+ BDSKScriptHook *scriptHook = [BDSKScriptHook newScriptHookWithName:name];
+ if (scriptHook) {
+ // set the values
+ [scriptHook setDocument:self];
+ [scriptHook setField:field];
+ [scriptHook setOldValues:oldValues];
+ [scriptHook setNewValues:newValues];
+ [scriptHook runWithPublications:items completionHandler:handler];
+ [scriptHook release];
+ } else if (handler) {
+ handler(NO);
+ }
}
- (void)setFileURL:(NSURL *)absoluteURL{
Modified: trunk/bibdesk/BibDocument_Actions.m
===================================================================
--- trunk/bibdesk/BibDocument_Actions.m 2022-05-30 14:30:13 UTC (rev 27504)
+++ trunk/bibdesk/BibDocument_Actions.m 2022-05-30 22:56:54 UTC (rev 27505)
@@ -70,7 +70,7 @@
#import "NSError_BDSKExtensions.h"
#import "BDSKTypeManager.h"
-#import "BDSKScriptHookManager.h"
+#import "BDSKScriptHook.h"
#import "BDSKFiler.h"
#import "BDSKTextImportController.h"
#import "BDSKStatusBar.h"
Modified: trunk/bibdesk/BibPref_ScriptHooks.m
===================================================================
--- trunk/bibdesk/BibPref_ScriptHooks.m 2022-05-30 14:30:13 UTC (rev 27504)
+++ trunk/bibdesk/BibPref_ScriptHooks.m 2022-05-30 22:56:54 UTC (rev 27505)
@@ -37,7 +37,7 @@
*/
#import "BibPref_ScriptHooks.h"
-#import "BDSKScriptHookManager.h"
+#import "BDSKScriptHook.h"
#import "NSFileManager_BDSKExtensions.h"
#import "BDSKStringConstants.h"
#import "NSArray_BDSKExtensions.h"
@@ -62,7 +62,7 @@
self = [super initWithRecord:aRecord forPreferenceController:aController];
if (self) {
NSMutableArray *array = [[NSMutableArray alloc] init];
- for (NSString *name in [[BDSKScriptHookManager sharedManager]
scriptHookNames]) {
+ for (NSString *name in [BDSKScriptHook scriptHookNames]) {
BDSKScriptHookFile *file = [[BDSKScriptHookFile alloc]
initWithName:name];
[array addObject:file];
[file release];
Modified: trunk/bibdesk/Bibdesk.xcodeproj/project.pbxproj
===================================================================
--- trunk/bibdesk/Bibdesk.xcodeproj/project.pbxproj 2022-05-30 14:30:13 UTC
(rev 27504)
+++ trunk/bibdesk/Bibdesk.xcodeproj/project.pbxproj 2022-05-30 22:56:54 UTC
(rev 27505)
@@ -295,7 +295,6 @@
CE2A0A5C22459A0A00A8F31C /* BDSKScriptGroupSheetController.h in
Headers */ = {isa = PBXBuildFile; fileRef = CEEFDDFE0B03ED0200668BB0 /*
BDSKScriptGroupSheetController.h */; };
CE2A0A5D22459A0A00A8F31C /* BDSKScriptHook.h in Headers */ =
{isa = PBXBuildFile; fileRef = CED65AB20906BCC6003EED90 /* BDSKScriptHook.h */;
};
CE2A0A5E22459A0A00A8F31C /* BDSKScriptHook+Scripting.h in
Headers */ = {isa = PBXBuildFile; fileRef = CED65DCA0907A338003EED90 /*
BDSKScriptHook+Scripting.h */; };
- CE2A0A5F22459A0A00A8F31C /* BDSKScriptHookManager.h in Headers
*/ = {isa = PBXBuildFile; fileRef = CED65AB40906BCC6003EED90 /*
BDSKScriptHookManager.h */; };
CE2A0A6022459A0A00A8F31C /* BDSKScriptMenu.h in Headers */ =
{isa = PBXBuildFile; fileRef = CEF7A6660915115B00BE9E02 /* BDSKScriptMenu.h */;
};
CE2A0A6122459A0A00A8F31C /* BDSKScrollableTextField.h in
Headers */ = {isa = PBXBuildFile; fileRef = F9EF21B208B1572500AAC9A9 /*
BDSKScrollableTextField.h */; };
CE2A0A6222459A0A00A8F31C /* BDSKScrollableTextFieldCell.h in
Headers */ = {isa = PBXBuildFile; fileRef = F9EF21B408B1572500AAC9A9 /*
BDSKScrollableTextFieldCell.h */; };
@@ -714,7 +713,6 @@
CED5203122846D6100F87B8A /* BDSKTouchBarButtonGroup.m in
Sources */ = {isa = PBXBuildFile; fileRef = CED5203022846D6100F87B8A /*
BDSKTouchBarButtonGroup.m */; };
CED5203322846D7200F87B8A /* BDSKTouchBarButtonGroup.h in
Headers */ = {isa = PBXBuildFile; fileRef = CED5203222846D7100F87B8A /*
BDSKTouchBarButtonGroup.h */; };
CED65AB70906BCC6003EED90 /* BDSKScriptHook.m in Sources */ =
{isa = PBXBuildFile; fileRef = CED65AB30906BCC6003EED90 /* BDSKScriptHook.m */;
};
- CED65AB90906BCC6003EED90 /* BDSKScriptHookManager.m in Sources
*/ = {isa = PBXBuildFile; fileRef = CED65AB50906BCC6003EED90 /*
BDSKScriptHookManager.m */; };
CED65AC00906BE1F003EED90 /* BibPref_ScriptHooks.m in Sources */
= {isa = PBXBuildFile; fileRef = CED65ABE0906BE1F003EED90 /*
BibPref_ScriptHooks.m */; };
CED65DC90907A2FD003EED90 /* BDSKParseFormatCommand.m in Sources
*/ = {isa = PBXBuildFile; fileRef = CED65DC70907A2FD003EED90 /*
BDSKParseFormatCommand.m */; };
CED65DCD0907A338003EED90 /* BDSKScriptHook+Scripting.m in
Sources */ = {isa = PBXBuildFile; fileRef = CED65DCB0907A338003EED90 /*
BDSKScriptHook+Scripting.m */; };
@@ -1899,8 +1897,6 @@
CED5203222846D7100F87B8A /* BDSKTouchBarButtonGroup.h */ = {isa
= PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path
= BDSKTouchBarButtonGroup.h; sourceTree = "<group>"; };
CED65AB20906BCC6003EED90 /* BDSKScriptHook.h */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path =
BDSKScriptHook.h; sourceTree = "<group>"; };
CED65AB30906BCC6003EED90 /* BDSKScriptHook.m */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path
= BDSKScriptHook.m; sourceTree = "<group>"; };
- CED65AB40906BCC6003EED90 /* BDSKScriptHookManager.h */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path =
BDSKScriptHookManager.h; sourceTree = "<group>"; };
- CED65AB50906BCC6003EED90 /* BDSKScriptHookManager.m */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path
= BDSKScriptHookManager.m; sourceTree = "<group>"; };
CED65ABD0906BE1F003EED90 /* BibPref_ScriptHooks.h */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path =
BibPref_ScriptHooks.h; sourceTree = "<group>"; };
CED65ABE0906BE1F003EED90 /* BibPref_ScriptHooks.m */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path
= BibPref_ScriptHooks.m; sourceTree = "<group>"; };
CED65DC60907A2FD003EED90 /* BDSKParseFormatCommand.h */ = {isa
= PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path
= BDSKParseFormatCommand.h; sourceTree = "<group>"; };
@@ -2847,7 +2843,6 @@
CE8DAD8E1098976400896F69 /*
BDSKMetadataCacheOperation.m */,
CEE50486104D662500636237 /*
BDSKNotesSearchIndex.m */,
CEC1CEA60F51D2CE00D18921 /* BDSKReadWriteLock.m
*/,
- CED65AB50906BCC6003EED90 /*
BDSKScriptHookManager.m */,
CEFE21301259E6CB00DAD553 /*
BDSKSearchGroupServerManager.m */,
CE4A0E121115ABEF000A95C5 /*
BDSKServiceProvider.m */,
CE6FB32109DFFCB5005E3E14 /*
BDSKSharingBrowser.m */,
@@ -3376,7 +3371,6 @@
CEEFDDFE0B03ED0200668BB0 /*
BDSKScriptGroupSheetController.h */,
CED65AB20906BCC6003EED90 /* BDSKScriptHook.h */,
CED65DCA0907A338003EED90 /*
BDSKScriptHook+Scripting.h */,
- CED65AB40906BCC6003EED90 /*
BDSKScriptHookManager.h */,
CEF7A6660915115B00BE9E02 /* BDSKScriptMenu.h */,
F9EF21B208B1572500AAC9A9 /*
BDSKScrollableTextField.h */,
F9EF21B408B1572500AAC9A9 /*
BDSKScrollableTextFieldCell.h */,
@@ -3706,7 +3700,6 @@
CE2A0AA022459A3B00A8F31C /* BDSKWebParser.h in
Headers */,
CE2A0A3C224599F600A8F31C /*
BDSKParseFormatCommand.h in Headers */,
CE2A0AAB22459A4100A8F31C /*
BibDocument_Groups.h in Headers */,
- CE2A0A5F22459A0A00A8F31C /*
BDSKScriptHookManager.h in Headers */,
CE2A0A7522459A2D00A8F31C /* BDSKSIAMParser.h in
Headers */,
CE2A0A8622459A3100A8F31C /*
BDSKTemplateDocument.h in Headers */,
CE2A0A6422459A0A00A8F31C /*
BDSKSearchBookmarkController.h in Headers */,
@@ -4653,7 +4646,6 @@
F925332408FC9FB80045D563 /*
BDSKFileSearchIndex.m in Sources */,
F925352A08FDFAE40045D563 /*
BDSKFileSearchResult.m in Sources */,
CED65AB70906BCC6003EED90 /* BDSKScriptHook.m in
Sources */,
- CED65AB90906BCC6003EED90 /*
BDSKScriptHookManager.m in Sources */,
CED65AC00906BE1F003EED90 /*
BibPref_ScriptHooks.m in Sources */,
F97BE8F20907321F0063504B /*
BDSKGroupOutlineView.m in Sources */,
CED65DC90907A2FD003EED90 /*
BDSKParseFormatCommand.m in Sources */,
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit