Revision: 28906 http://sourceforge.net/p/bibdesk/svn/28906 Author: hofman Date: 2024-05-15 09:16:14 +0000 (Wed, 15 May 2024) Log Message: ----------- Don't always update the user defaults when updating template UI, do this separately when the data changes. Reset template trees when defaults are reverted. Make default template trees private.
Modified Paths: -------------- trunk/bibdesk/BDSKTemplate.h trunk/bibdesk/BDSKTemplate.m trunk/bibdesk/BibPref_Export.m Modified: trunk/bibdesk/BDSKTemplate.h =================================================================== --- trunk/bibdesk/BDSKTemplate.h 2024-05-15 08:57:21 UTC (rev 28905) +++ trunk/bibdesk/BDSKTemplate.h 2024-05-15 09:16:14 UTC (rev 28906) @@ -75,10 +75,6 @@ + (NSString *)localizedRoleString:(NSString *)string; + (NSString *)unlocalizedRoleString:(NSString *)string; -// default templates -@property (class, nonatomic, readonly) NSArray *defaultExportTemplates; -@property (class, nonatomic, readonly) NSArray *defaultServiceTemplates; - // all templates @property (class, nonatomic, copy) NSArray *exportTemplates; @property (class, nonatomic, copy) NSArray *serviceTemplates; Modified: trunk/bibdesk/BDSKTemplate.m =================================================================== --- trunk/bibdesk/BDSKTemplate.m 2024-05-15 08:57:21 UTC (rev 28905) +++ trunk/bibdesk/BDSKTemplate.m 2024-05-15 09:16:14 UTC (rev 28906) @@ -261,13 +261,17 @@ } + (void)setExportTemplates:(NSArray *)tree { - NSData *data = [NSKeyedArchiver archivedDataWithRootObject:tree]; - if (nil == data) { - NSLog(@"Unable to archive %@", tree); + if (tree == nil) { + exportTemplateTree = nil; } else { - exportTemplateTree = nil; - [[NSUserDefaults standardUserDefaults] setObject:data forKey:BDSKExportTemplateTree]; - [[NSNotificationCenter defaultCenter] postNotificationName:BDSKExportTemplatesChangedNotification object:self]; + NSData *data = [NSKeyedArchiver archivedDataWithRootObject:tree]; + if (nil == data) { + NSLog(@"Unable to archive %@", tree); + } else { + exportTemplateTree = nil; + [[NSUserDefaults standardUserDefaults] setObject:data forKey:BDSKExportTemplateTree]; + [[NSNotificationCenter defaultCenter] postNotificationName:BDSKExportTemplatesChangedNotification object:self]; + } } } @@ -285,12 +289,16 @@ } + (void)setServiceTemplates:(NSArray *)tree { - NSData *data = [NSKeyedArchiver archivedDataWithRootObject:tree]; - if (nil == data) { - NSLog(@"Unable to archive %@", tree); + if (tree == nil) { + serviceTemplateTree = nil; } else { - serviceTemplateTree = nil; - [[NSUserDefaults standardUserDefaults] setObject:data forKey:BDSKServiceTemplateTree]; + NSData *data = [NSKeyedArchiver archivedDataWithRootObject:tree]; + if (nil == data) { + NSLog(@"Unable to archive %@", tree); + } else { + serviceTemplateTree = nil; + [[NSUserDefaults standardUserDefaults] setObject:data forKey:BDSKServiceTemplateTree]; + } } } Modified: trunk/bibdesk/BibPref_Export.m =================================================================== --- trunk/bibdesk/BibPref_Export.m 2024-05-15 08:57:21 UTC (rev 28905) +++ trunk/bibdesk/BibPref_Export.m 2024-05-15 09:16:14 UTC (rev 28906) @@ -53,6 +53,7 @@ @interface BibPref_Export (Private) - (void)updateUI; +- (void)synchronizePrefs; - (void)setItemNodes:(NSArray *)array; - (BOOL)canAddItem; - (BOOL)canDeleteSelectedItem; @@ -79,7 +80,9 @@ } - (void)defaultsDidRevert { - [self setItemNodes:templatePrefList == BDSKTemplateListExport ? [BDSKTemplate defaultExportTemplates] : [BDSKTemplate defaultServiceTemplates]]; + [BDSKTemplate setExportTemplates:nil]; + [BDSKTemplate setServiceTemplates:nil]; + [self setItemNodes:templatePrefList == BDSKTemplateListExport ? [BDSKTemplate exportTemplates] : [BDSKTemplate serviceTemplates]]; if ([self isViewLoaded]) [self updateUI]; } @@ -107,7 +110,6 @@ - (void)updateUI { [outlineView reloadData]; - [self synchronizePrefs]; [addRemoveButton setEnabled:[self canAddItem] forSegment:0]; [addRemoveButton setEnabled:[self canDeleteSelectedItem] forSegment:1]; } @@ -182,10 +184,12 @@ [itemNodes removeObjectIdenticalTo:selectedNode]; } else { NSBeep(); + return; } } + [self synchronizePrefs]; [self updateUI]; } @@ -344,6 +348,7 @@ [[[item parent] mutableArrayValueForKey:@"children"] removeObject:item]; else [itemNodes removeObjectIdenticalTo:item]; + [self synchronizePrefs]; [self updateUI]; } else NSBeep(); @@ -460,6 +465,7 @@ [childNode setValue:[fileURLs objectAtIndex:i] forKey:BDSKTemplateFileURLString]; } + [self synchronizePrefs]; [self updateUI]; count = [addedItems count]; for (i = 0; i < count; i++) @@ -477,6 +483,7 @@ [newNode setValue:fileURL forKey:BDSKTemplateFileURLString]; } } else return NO; + [self synchronizePrefs]; [self updateUI]; [outlineView selectRowIndexes:[NSIndexSet indexSetWithIndex:[outlineView rowForItem:newNode]] byExtendingSelection:NO]; if ([newNode isLeaf] == NO) @@ -505,6 +512,7 @@ [itemNodes insertObject:draggedTemplate atIndex:idx]; } } + [self synchronizePrefs]; [self updateUI]; [outlineView selectRowIndexes:[NSIndexSet indexSetWithIndex:[outlineView rowForItem:draggedTemplate]] byExtendingSelection:NO]; return YES; @@ -589,6 +597,7 @@ [item setValue:fileURL forKey:BDSKTemplateFileURLString]; } [openPanel orderOut:nil]; + [self synchronizePrefs]; [self updateUI]; }]; } 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