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
Bibdesk-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to