Revision: 22577
          http://sourceforge.net/p/bibdesk/svn/22577
Author:   hofman
Date:     2018-09-10 16:59:32 +0000 (Mon, 10 Sep 2018)
Log Message:
-----------
Allow evaluated object (linked files or linked URLs) as arguments to remove 
scripting command, rather than just specifiers

Modified Paths:
--------------
    trunk/bibdesk/BDSKRemoveCommand.m
    trunk/bibdesk/Scripting/BibDesk.sdef

Modified: trunk/bibdesk/BDSKRemoveCommand.m
===================================================================
--- trunk/bibdesk/BDSKRemoveCommand.m   2018-09-10 16:34:47 UTC (rev 22576)
+++ trunk/bibdesk/BDSKRemoveCommand.m   2018-09-10 16:59:32 UTC (rev 22577)
@@ -50,10 +50,25 @@
     id receiver = [self evaluatedReceivers];
     NSArray *removeObjects = nil;
     
+    if ([directParameter isKindOfClass:[NSAppleEventDescriptor class]] && 
[directParameter descriptorType] == typeAEList) {
+        NSMutableArray *array = [NSMutableArray array];
+        NSUInteger i, iMax = [directParameter numberOfItems];
+        for (i = 1; i <= iMax; i++)
+         [array addObject:[directParameter descriptorAtIndex:i]];
+        directParameter = array;
+    }
+    
     if (directParameter && [directParameter isKindOfClass:[NSArray class]] == 
NO)
         directParameter = [NSArray arrayWithObjects:directParameter, nil];
     
-    removeObjects = [receiver isKindOfClass:[NSArray class]] ? receiver : 
[NSArray arrayWithObjects:receiver, nil];
+    if (NSNotFound == [directParameter indexOfObjectPassingTest:^BOOL(id obj, 
NSUInteger idx, BOOL *stop){ return NO == [obj 
respondsToSelector:@selector(keyClassDescription)]; }]) {
+        removeObjects = [receiver isKindOfClass:[NSArray class]] ? receiver : 
[NSArray arrayWithObjects:receiver, nil];
+    } else if (NSNotFound == [directParameter 
indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop){ return NO 
== [obj isKindOfClass:[NSAppleEventDescriptor class]]; }]) {
+        if (NSNotFound == [directParameter indexOfObjectPassingTest:^BOOL(id 
obj, NSUInteger idx, BOOL *stop){ return nil == [obj fileURLValue]; }])
+             removeObjects = [directParameter valueForKey:@"fileURLValue"];
+        else if (NSNotFound == [directParameter 
indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop){ obj = [obj 
stringValue]; return nil == obj || nil == [NSURL URLWithString:obj]; }])
+            removeObjects = [directParameter valueForKey:@"stringValue"];
+    }
     
     if (removeObjects == nil) {
         [self setScriptErrorNumber:NSArgumentsWrongScriptError];

Modified: trunk/bibdesk/Scripting/BibDesk.sdef
===================================================================
--- trunk/bibdesk/Scripting/BibDesk.sdef        2018-09-10 16:34:47 UTC (rev 
22576)
+++ trunk/bibdesk/Scripting/BibDesk.sdef        2018-09-10 16:59:32 UTC (rev 
22577)
@@ -471,6 +471,8 @@
                                description="the object(s) to remove.">
                 <type type="specifier"/>
                 <type type="specifier" list="yes"/>
+                <type type="any"/>
+                <type type="any" list="yes"/>
             </direct-parameter>
             <parameter name="from" code="from" optional="yes"
                 description="The container to remove the object(s) from.">

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

Reply via email to