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

Reply via email to