Revision: 22587
http://sourceforge.net/p/bibdesk/svn/22587
Author: hofman
Date: 2018-09-12 22:16:40 +0000 (Wed, 12 Sep 2018)
Log Message:
-----------
Pass group to replace rather than its name
Modified Paths:
--------------
trunk/bibdesk/BibDocument_DataSource.m
trunk/bibdesk/BibDocument_Groups.h
trunk/bibdesk/BibDocument_Groups.m
trunk/bibdesk/BibItem.h
trunk/bibdesk/BibItem.m
Modified: trunk/bibdesk/BibDocument_DataSource.m
===================================================================
--- trunk/bibdesk/BibDocument_DataSource.m 2018-09-12 21:15:30 UTC (rev
22586)
+++ trunk/bibdesk/BibDocument_DataSource.m 2018-09-12 22:16:40 UTC (rev
22587)
@@ -981,7 +981,7 @@
return;
BDSKGroup *group = item;
- // object is always a group, see BDSKGroupCellFormatter
+ // object is always a dictionary, see BDSKGroupCellFormatter
BDSKASSERT([object isKindOfClass:[NSDictionary class]]);
NSString *newName = [object valueForKey:BDSKGroupCellStringKey];
if([[group editingStringValue] isEqualToString:newName])
@@ -992,7 +992,7 @@
id name = [[(BDSKCategoryGroup *)group key] isPersonField] ?
(id)[BibAuthor authorWithName:newName] : (id)newName;
BDSKCategoryGroup *oldGroup = [group copy];
[(BDSKCategoryGroup *)group setName:name];
- [self movePublications:pubs fromGroup:oldGroup toGroupNamed:newName];
+ [self movePublications:pubs fromGroup:oldGroup toGroup:group];
[oldGroup release];
[pubs release];
} else if([group isNameEditable]) {
Modified: trunk/bibdesk/BibDocument_Groups.h
===================================================================
--- trunk/bibdesk/BibDocument_Groups.h 2018-09-12 21:15:30 UTC (rev 22586)
+++ trunk/bibdesk/BibDocument_Groups.h 2018-09-12 22:16:40 UTC (rev 22587)
@@ -59,7 +59,7 @@
- (BOOL)addPublications:(NSArray *)pubs toGroup:(BDSKGroup *)group;
- (BOOL)removePublications:(NSArray *)pubs fromGroups:(NSArray *)groupArray;
-- (BOOL)movePublications:(NSArray *)pubs fromGroup:(BDSKGroup *)group
toGroupNamed:(NSString *)newGroupName;
+- (BOOL)movePublications:(NSArray *)pubs fromGroup:(BDSKGroup *)group
toGroup:(BDSKGroup *)newGroup;
- (IBAction)toggleGroupFieldAction:(id)sender;
- (IBAction)changeGroupFieldAction:(id)sender;
Modified: trunk/bibdesk/BibDocument_Groups.m
===================================================================
--- trunk/bibdesk/BibDocument_Groups.m 2018-09-12 21:15:30 UTC (rev 22586)
+++ trunk/bibdesk/BibDocument_Groups.m 2018-09-12 22:16:40 UTC (rev 22587)
@@ -1403,7 +1403,7 @@
return YES;
}
-- (BOOL)movePublications:(NSArray *)pubs fromGroup:(BDSKGroup *)group
toGroupNamed:(NSString *)newGroupName{
+- (BOOL)movePublications:(NSArray *)pubs fromGroup:(BDSKGroup *)group
toGroup:(BDSKGroup *)newGroup{
NSInteger count = 0;
BDSKFieldAction handleInherited = BDSKFieldActionAsk;
BDSKFieldAction rv;
@@ -1421,7 +1421,7 @@
BDSKASSERT([pub isKindOfClass:[BibItem class]]);
oldValue = [[[pub valueOfField:field] retain] autorelease];
- rv = [pub replaceGroup:group withGroupNamed:newGroupName
handleInherited:handleInherited];
+ rv = [pub replaceGroup:group withGroup:newGroup
handleInherited:handleInherited];
if(rv == BDSKFieldActionSet || rv == BDSKFieldActionAppend){
count++;
@@ -1437,7 +1437,7 @@
rv = [alert runModal];
handleInherited = rv;
if(handleInherited != BDSKFieldActionIgnore){
- [pub replaceGroup:group
withGroupNamed:newGroupName handleInherited:handleInherited];
+ [pub replaceGroup:group withGroup:newGroup
handleInherited:handleInherited];
count++;
[changedPubs addObject:pub];
[oldValues addObject:oldValue ?: @""];
Modified: trunk/bibdesk/BibItem.h
===================================================================
--- trunk/bibdesk/BibItem.h 2018-09-12 21:15:30 UTC (rev 22586)
+++ trunk/bibdesk/BibItem.h 2018-09-12 22:16:40 UTC (rev 22587)
@@ -832,7 +832,7 @@
- (BOOL)isContainedInGroupNamed:(id)group forField:(NSString *)field;
- (BDSKFieldAction)addToGroup:(BDSKGroup *)group
handleInherited:(BDSKFieldAction)operation;
- (BDSKFieldAction)removeFromGroup:(BDSKGroup *)group
handleInherited:(BDSKFieldAction)operation;
-- (NSInteger)replaceGroup:(BDSKGroup *)group withGroupNamed:(NSString
*)newGroupName handleInherited:(NSInteger)operation;
+- (NSInteger)replaceGroup:(BDSKGroup *)group withGroup:(BDSKGroup *)aNewGroup
handleInherited:(NSInteger)operation;
- (void)invalidateGroupNames;
- (BOOL)isImported;
Modified: trunk/bibdesk/BibItem.m
===================================================================
--- trunk/bibdesk/BibItem.m 2018-09-12 21:15:30 UTC (rev 22586)
+++ trunk/bibdesk/BibItem.m 2018-09-12 22:16:40 UTC (rev 22587)
@@ -3273,12 +3273,14 @@
return operation;
}
-- (NSInteger)replaceGroup:(BDSKGroup *)aGroup withGroupNamed:(NSString
*)newGroupName handleInherited:(NSInteger)operation{
- BDSKASSERT([aGroup groupType] == BDSKCategoryGroupType && [owner
isDocument]);
+- (NSInteger)replaceGroup:(BDSKGroup *)aGroup withGroup:(BDSKGroup *)aNewGroup
handleInherited:(NSInteger)operation{
+ BDSKASSERT([aGroup groupType] == BDSKCategoryGroupType && [aNewGroup
groupType] == BDSKCategoryGroupType && [owner isDocument]);
BDSKCategoryGroup *group = (BDSKCategoryGroup *)aGroup;
- id groupName = [group name];
+ BDSKCategoryGroup *newGroup = (BDSKCategoryGroup *)aNewGroup;
+ id groupName = [group name];
+ id newGroupName = [newGroup name];
NSString *field = [group key];
- BDSKASSERT(field != nil);
+ BDSKASSERT(field != nil && [field isEqualToString:[newGroup key]]);
NSSet *groupNames = [groups objectForKey:field];
if([groupNames containsObject:groupName] == NO)
return BDSKFieldActionIgnore;
@@ -3324,20 +3326,12 @@
// handle authors separately
if([field isPersonField]){
- BDSKASSERT([groupName isKindOfClass:[BibAuthor class]]);
- NSMutableString *string = [[NSMutableString alloc]
initWithCapacity:[oldString length] - [[groupName lastName] length] - 5];
- BOOL first = YES;
- for (BibAuthor *auth in [self peopleArrayForField:field]) {
- if(first) first = NO;
- else [string appendString:@" and "];
- if([auth fuzzyEqual:groupName]){
- [string appendString:newGroupName];
- }else{
- [string appendString:[auth originalName]];
- }
- }
- [self setField:field toValue:string];
- [string release];
+ BDSKASSERT([groupName isKindOfClass:[BibAuthor class]] &&
[newGroupName isKindOfClass:[BibAuthor class]]);
+ NSMutableArray *authors = [[NSMutableArray alloc] init];
+ for (BibAuthor *auth in [self peopleArrayForField:field])
+ [authors addObject:[auth fuzzyEqual:groupName] ? newGroupName :
auth];
+ [self setField:field toValue:[[authors valueForKey:@"originalName"]
componentsJoinedByString:@" and "]];
+ [authors release];
return operation;
}
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