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

Reply via email to