Revision: 22671
http://sourceforge.net/p/bibdesk/svn/22671
Author: hofman
Date: 2018-09-25 22:10:29 +0000 (Tue, 25 Sep 2018)
Log Message:
-----------
Non writable container key is invalid
Modified Paths:
--------------
trunk/bibdesk/BDSKAddCommand.m
trunk/bibdesk/BDSKRemoveCommand.m
Modified: trunk/bibdesk/BDSKAddCommand.m
===================================================================
--- trunk/bibdesk/BDSKAddCommand.m 2018-09-25 21:58:33 UTC (rev 22670)
+++ trunk/bibdesk/BDSKAddCommand.m 2018-09-25 22:10:29 UTC (rev 22671)
@@ -130,28 +130,23 @@
if (containerClassDescription == nil && insertionContainer)
containerClassDescription = [insertionContainer
scriptClassDescription];
if (insertionContainer == nil || insertionKey == nil ||
- [[containerClassDescription toManyRelationshipKeys]
containsObject:insertionKey] == NO ||
- [containerClassDescription
hasWritablePropertyForKey:insertionKey] == NO) {
+ [[containerClassDescription toManyRelationshipKeys]
containsObject:insertionKey] == NO) {
[self setScriptErrorNumber:NSArgumentsWrongScriptError];
[self setScriptErrorString:NSLocalizedString(@"Could not find
container to add to", @"Error description")];
insertionObjects = nil;
+ } else if ((insertionIndex == -1 && [containerClassDescription
isLocationRequiredToCreateForKey:insertionKey]) ||
+ [containerClassDescription
hasWritablePropertyForKey:insertionKey] == NO ||
+ [insertionClassDescription
isKindOfClassDescription:[containerClassDescription
classDescriptionForKey:insertionKey]] == NO) {
+ [self setScriptErrorNumber:NSArgumentsWrongScriptError];
+ [self setScriptErrorString:NSLocalizedString(@"Invalid
container to add to", @"Error description")];
} else {
- // check if the inserted objects are valid for the insertion
container key
- NSScriptClassDescription *requiredClassDescription =
[containerClassDescription classDescriptionForKey:insertionKey];
-
- if ([insertionClassDescription
isKindOfClassDescription:requiredClassDescription] == NO ||
- (insertionIndex == -1 && [containerClassDescription
isLocationRequiredToCreateForKey:insertionKey])) {
- [self setScriptErrorNumber:NSArgumentsWrongScriptError];
- [self setScriptErrorString:NSLocalizedString(@"Invalid
container to add to", @"Error description")];
+ // insert using scripting KVC
+ if (insertionIndex >= 0) {
+ for (id obj in [insertionObjects reverseObjectEnumerator])
+ [insertionContainer insertValue:obj
atIndex:insertionIndex inPropertyWithKey:insertionKey];
} else {
- // insert using scripting KVC
- if (insertionIndex >= 0) {
- for (id obj in [insertionObjects
reverseObjectEnumerator])
- [insertionContainer insertValue:obj
atIndex:insertionIndex inPropertyWithKey:insertionKey];
- } else {
- for (id obj in insertionObjects)
- [insertionContainer insertValue:obj
inPropertyWithKey:insertionKey];
- }
+ for (id obj in insertionObjects)
+ [insertionContainer insertValue:obj
inPropertyWithKey:insertionKey];
}
}
}
Modified: trunk/bibdesk/BDSKRemoveCommand.m
===================================================================
--- trunk/bibdesk/BDSKRemoveCommand.m 2018-09-25 21:58:33 UTC (rev 22670)
+++ trunk/bibdesk/BDSKRemoveCommand.m 2018-09-25 22:10:29 UTC (rev 22671)
@@ -131,20 +131,16 @@
if (containerClassDescription == nil && removeContainer)
containerClassDescription = [removeContainer
scriptClassDescription];
if (removeContainer == nil || removeKey == nil ||
- [[containerClassDescription toManyRelationshipKeys]
containsObject:removeKey] == NO ||
- [containerClassDescription
hasWritablePropertyForKey:removeKey] == NO) {
+ [[containerClassDescription toManyRelationshipKeys]
containsObject:removeKey] == NO) {
[self setScriptErrorNumber:NSArgumentsWrongScriptError];
[self setScriptErrorString:NSLocalizedString(@"Could not find
container to remove from", @"Error description")];
+ } else if ([containerClassDescription
hasWritablePropertyForKey:removeKey] == NO ||
+ [removeClassDescription
isKindOfClassDescription:[containerClassDescription
classDescriptionForKey:removeKey]] == NO) {
+ [self setScriptErrorNumber:NSArgumentsWrongScriptError];
+ [self setScriptErrorString:NSLocalizedString(@"Invalid
container to remove from", @"Error description")];
} else {
- NSScriptClassDescription *requiredClassDescription =
[containerClassDescription classDescriptionForKey:removeKey];
-
- if ([removeClassDescription
isKindOfClassDescription:requiredClassDescription] == NO) {
- [self setScriptErrorNumber:NSArgumentsWrongScriptError];
- [self setScriptErrorString:NSLocalizedString(@"Invalid
container to remove from", @"Error description")];
- } else {
- // remove using KVC, I don't know how to use scripting KVC
as I don't know how to get the indexes in general
- [[removeContainer mutableArrayValueForKey:removeKey]
removeObjectsInArray:removeObjects];
- }
+ // remove using KVC, I don't know how to use scripting KVC as
I don't know how to get the indexes in general
+ [[removeContainer mutableArrayValueForKey:removeKey]
removeObjectsInArray:removeObjects];
}
}
}
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