Revision: 12253
          http://bibdesk.svn.sourceforge.net/bibdesk/?rev=12253&view=rev
Author:   hofman
Date:     2008-01-04 03:13:24 -0800 (Fri, 04 Jan 2008)

Log Message:
-----------
Allow removing just local file or remote URL fields in file migration.

Modified Paths:
--------------
    trunk/bibdesk/BDSKFileMigrationController.h
    trunk/bibdesk/BDSKFileMigrationController.m
    trunk/bibdesk/BibItem.h
    trunk/bibdesk/BibItem.m
    trunk/bibdesk/English.lproj/BDSKFileMigration.nib/classes.nib
    trunk/bibdesk/English.lproj/BDSKFileMigration.nib/info.nib
    trunk/bibdesk/English.lproj/BDSKFileMigration.nib/keyedobjects.nib

Modified: trunk/bibdesk/BDSKFileMigrationController.h
===================================================================
--- trunk/bibdesk/BDSKFileMigrationController.h 2008-01-04 06:45:54 UTC (rev 
12252)
+++ trunk/bibdesk/BDSKFileMigrationController.h 2008-01-04 11:13:24 UTC (rev 
12253)
@@ -43,7 +43,8 @@
     IBOutlet NSButton *migrateButton;
     IBOutlet NSProgressIndicator *progressBar;
     IBOutlet NSTextField *statusField;
-    BOOL keepOriginalValues;
+    BOOL keepLocalFileFields;
+    BOOL keepRemoteURLFields;
     BOOL useSelection;
     NSMutableArray *results;
 }

Modified: trunk/bibdesk/BDSKFileMigrationController.m
===================================================================
--- trunk/bibdesk/BDSKFileMigrationController.m 2008-01-04 06:45:54 UTC (rev 
12252)
+++ trunk/bibdesk/BDSKFileMigrationController.m 2008-01-04 11:13:24 UTC (rev 
12253)
@@ -70,7 +70,8 @@
     self = [self initWithWindowNibName:[self windowNibName]];
     if (self) {
         results = [NSMutableArray new];
-        keepOriginalValues = YES;
+        keepLocalFileFields = YES;
+        keepRemoteURLFields = YES;
         useSelection = NO;
     }
     return self;
@@ -148,6 +149,11 @@
     int numberOfAddedFiles = 0, numberOfRemovedFields = 0, addedFiles, 
removedFields;
     NSEnumerator *pubEnum = [pubs objectEnumerator];
     BibItem *aPub;
+    int mask = BDSKRemoveNoFields;
+    if (keepLocalFileFields == NO)
+        mask |= BDSKRemoveLocalFileFieldsMask;
+    if (keepRemoteURLFields == NO)
+        mask |= BDSKRemoveRemoteURLFieldsMask;
         
     while ((aPub = [pubEnum nextObject])) {
         
@@ -156,7 +162,7 @@
             [[self window] displayIfNeeded];
         
         NSError *error;
-        if (NO == [aPub migrateFilesAndRemove:(NO == keepOriginalValues) 
numberOfAddedFiles:&addedFiles numberOfRemovedFields:&removedFields 
error:&error]) {
+        if (NO == [aPub migrateFilesWithRemoveOptions:mask 
numberOfAddedFiles:&addedFiles numberOfRemovedFields:&removedFields 
error:&error]) {
             NSArray *messages = [error valueForKey:@"messages"];
             NSEnumerator *msgEnum = [messages objectEnumerator];
             NSDictionary *dict;
@@ -177,7 +183,7 @@
     [migrateButton setEnabled:YES];
     
     NSString *messageFormat = nil;
-    if (keepOriginalValues)
+    if (mask == BDSKRemoveNoFields)
         messageFormat = NSLocalizedString(@"Converted %i files or URLs.", 
@"Status message");
     else
         messageFormat = NSLocalizedString(@"Converted %i files or URLs, 
removed %i fields.", @"Status message");

Modified: trunk/bibdesk/BibItem.h
===================================================================
--- trunk/bibdesk/BibItem.h     2008-01-04 06:45:54 UTC (rev 12252)
+++ trunk/bibdesk/BibItem.h     2008-01-04 11:13:24 UTC (rev 12253)
@@ -49,6 +49,12 @@
     BDSKIsCrossreffedCrossrefError
 };
 
+enum {
+    BDSKRemoveNoFields = 0,
+    BDSKRemoveLocalFileFieldsMask = 1,
+    BDSKRemoveRemoteURLFieldsMask = 1 << 1,
+};
+
 @class BibDocument, BDSKGroup, BibAuthor, BDSKFieldCollection, BDSKTemplate, 
BDSKPublicationsArray, BDSKMacroResolver, BDSKLinkedFile;
 @protocol BDSKParseableItem, BDSKOwner;
 
@@ -93,7 +99,7 @@
 - (void)noteFilesChanged:(BOOL)isFile;
 
 - (NSArray *)sortedURLs;
-- (BOOL)migrateFilesAndRemove:(BOOL)shouldRemove numberOfAddedFiles:(int 
*)numberOfAddedFiles numberOfRemovedFields:(int *)numberOfRemovedFields 
error:(NSError **)outError;
+- (BOOL)migrateFilesWithRemoveOptions:(int)removeMask numberOfAddedFiles:(int 
*)numberOfAddedFiles numberOfRemovedFields:(int *)numberOfRemovedFields 
error:(NSError **)outError;
 
 - (NSString *)basePath;
 

Modified: trunk/bibdesk/BibItem.m
===================================================================
--- trunk/bibdesk/BibItem.m     2008-01-04 06:45:54 UTC (rev 12252)
+++ trunk/bibdesk/BibItem.m     2008-01-04 11:13:24 UTC (rev 12253)
@@ -2805,21 +2805,22 @@
     }
 }
 
-- (BOOL)migrateFilesAndRemove:(BOOL)shouldRemove numberOfAddedFiles:(int 
*)numberOfAddedFiles numberOfRemovedFields:(int *)numberOfRemovedFields 
error:(NSError **)outError
+- (BOOL)migrateFilesWithRemoveOptions:(int)removeMask numberOfAddedFiles:(int 
*)numberOfAddedFiles numberOfRemovedFields:(int *)numberOfRemovedFields 
error:(NSError **)outError
 {
     int addedLocalFiles = 0;
     NSMutableArray *messages = [NSMutableArray new];
     conversionContext context;
     context.publication = self;
-    context.removeField = shouldRemove;
     context.messages = messages;
     context.numberOfAddedFiles = 0;
     context.numberOfRemovedFields = 0;
     
+    context.removeField = (removeMask & BDSKRemoveLocalFileFieldsMask) != 0;
     CFArrayRef fieldsArray = (CFArrayRef)[[OFPreferenceWrapper 
sharedPreferenceWrapper] stringArrayForKey:BDSKLocalFileFieldsKey];
     CFArrayApplyFunction(fieldsArray, CFRangeMake(0, 
CFArrayGetCount(fieldsArray)), addURLForFieldToArrayIfNotNil, &context);
     addedLocalFiles = context.numberOfAddedFiles;
     
+    context.removeField = (removeMask & BDSKRemoveRemoteURLFieldsMask) != 0;
     fieldsArray = (CFArrayRef)[[OFPreferenceWrapper sharedPreferenceWrapper] 
stringArrayForKey:BDSKRemoteURLFieldsKey];
     CFArrayApplyFunction(fieldsArray, CFRangeMake(0, 
CFArrayGetCount(fieldsArray)), addURLForFieldToArrayIfNotNil, &context);
     
@@ -2832,8 +2833,8 @@
     
     [messages release];
     
-    // Cause the file content search index (if any) to update, since we 
bypassed the normal insert mechanism where this is typically handled.  The 
date-modified will only be set if shouldRemove == YES and the conversion 
succeeded, since the applier function calls setField:toValue:.  
-    // @@ Calling 
migrateFilesAndRemove:numberOfAddedFiles:numberOfRemovedFields:error: from 
-createFiles will also cause date-modified to be set.
+    // Cause the file content search index (if any) to update, since we 
bypassed the normal insert mechanism where this is typically handled.  The 
date-modified will only be set if fields are removed, since the applier 
function calls setField:toValue:.  
+    // @@ Calling 
migrateFilesWithRemoveOptions:numberOfAddedFiles:numberOfRemovedFields:error: 
from -createFiles will also cause date-modified to be set.
     if (addedLocalFiles > 0)
         [self noteFilesChanged:YES];
     if (context.numberOfAddedFiles > addedLocalFiles)
@@ -3571,7 +3572,7 @@
     
     if (0 == [files count]) {
         int added;
-        [self migrateFilesAndRemove:NO numberOfAddedFiles:&added 
numberOfRemovedFields:NULL error:NULL];
+        [self migrateFilesWithRemoveOptions:BDSKRemoveNoFields 
numberOfAddedFiles:&added numberOfRemovedFields:NULL error:NULL];
         // Don't post this unless the owner is a document.  At present, if we 
open a URL group using a local file on disk that has valid URLs, this method 
will be called and it will end up with BDSKLinkedFile instances.  If we then 
click the "Import" button in the document, no warning is displayed because we 
don't call migrateFilesAndRemove:... again.
         if (added > 0 && [[self owner] isDocument]) {
             NSNotification *note = [NSNotification 
notificationWithName:BDSKTemporaryFileMigrationNotification object:[self 
owner]];

Modified: trunk/bibdesk/English.lproj/BDSKFileMigration.nib/classes.nib
===================================================================
--- trunk/bibdesk/English.lproj/BDSKFileMigration.nib/classes.nib       
2008-01-04 06:45:54 UTC (rev 12252)
+++ trunk/bibdesk/English.lproj/BDSKFileMigration.nib/classes.nib       
2008-01-04 11:13:24 UTC (rev 12253)
@@ -1,125 +1,36 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
-<plist version="1.0">
-<dict>
-       <key>IBClasses</key>
-       <array>
-               <dict>
-                       <key>CLASS</key>
-                       <string>BDSKTextWithIconCell</string>
-                       <key>LANGUAGE</key>
-                       <string>ObjC</string>
-                       <key>SUPERCLASS</key>
-                       <string>NSTextFieldCell</string>
-               </dict>
-               <dict>
-                       <key>ACTIONS</key>
-                       <dict>
-                               <key>editPublication</key>
-                               <string>id</string>
-                               <key>migrate</key>
-                               <string>id</string>
-                               <key>openParentDirectory</key>
-                               <string>id</string>
-                               <key>showHelp</key>
-                               <string>id</string>
-                       </dict>
-                       <key>CLASS</key>
-                       <string>BDSKFileMigrationController</string>
-                       <key>LANGUAGE</key>
-                       <string>ObjC</string>
-                       <key>OUTLETS</key>
-                       <dict>
-                               <key>migrateButton</key>
-                               <string>NSButton</string>
-                               <key>progressBar</key>
-                               <string>NSProgressIndicator</string>
-                               <key>statusField</key>
-                               <string>NSTextField</string>
-                               <key>tableView</key>
-                               <string>NSTableView</string>
-                       </dict>
-                       <key>SUPERCLASS</key>
-                       <string>NSWindowController</string>
-               </dict>
-               <dict>
-                       <key>CLASS</key>
-                       <string>NSControl</string>
-                       <key>LANGUAGE</key>
-                       <string>ObjC</string>
-                       <key>SUPERCLASS</key>
-                       <string>NSView</string>
-               </dict>
-               <dict>
-                       <key>CLASS</key>
-                       <string>NSMenu</string>
-                       <key>LANGUAGE</key>
-                       <string>ObjC</string>
-                       <key>SUPERCLASS</key>
-                       <string>NSObject</string>
-               </dict>
-               <dict>
-                       <key>ACTIONS</key>
-                       <dict>
-                               <key>hideWindow</key>
-                               <string>id</string>
-                               <key>toggleShowingWindow</key>
-                               <string>id</string>
-                       </dict>
-                       <key>CLASS</key>
-                       <string>NSWindowController</string>
-                       <key>LANGUAGE</key>
-                       <string>ObjC</string>
-                       <key>SUPERCLASS</key>
-                       <string>NSResponder</string>
-               </dict>
-               <dict>
-                       <key>CLASS</key>
-                       <string>NSObject</string>
-                       <key>LANGUAGE</key>
-                       <string>ObjC</string>
-               </dict>
-               <dict>
-                       <key>CLASS</key>
-                       <string>NSWindow</string>
-                       <key>LANGUAGE</key>
-                       <string>ObjC</string>
-                       <key>SUPERCLASS</key>
-                       <string>NSResponder</string>
-               </dict>
-               <dict>
-                       <key>CLASS</key>
-                       <string>NSScrollView</string>
-                       <key>LANGUAGE</key>
-                       <string>ObjC</string>
-                       <key>SUPERCLASS</key>
-                       <string>NSView</string>
-               </dict>
-               <dict>
-                       <key>CLASS</key>
-                       <string>NSTableHeaderView</string>
-                       <key>LANGUAGE</key>
-                       <string>ObjC</string>
-                       <key>SUPERCLASS</key>
-                       <string>NSView</string>
-               </dict>
-               <dict>
-                       <key>ACTIONS</key>
-                       <dict>
-                               <key>changeFont</key>
-                               <string>id</string>
-                               <key>invertSelection</key>
-                               <string>id</string>
-                       </dict>
-                       <key>CLASS</key>
-                       <string>NSTableView</string>
-                       <key>LANGUAGE</key>
-                       <string>ObjC</string>
-                       <key>SUPERCLASS</key>
-                       <string>NSControl</string>
-               </dict>
-       </array>
-       <key>IBVersion</key>
-       <string>1</string>
-</dict>
-</plist>
+{
+    IBClasses = (
+        {
+            ACTIONS = {editPublication = id; migrate = id; openParentDirectory 
= id; showHelp = id; }; 
+            CLASS = BDSKFileMigrationController; 
+            LANGUAGE = ObjC; 
+            OUTLETS = {
+                migrateButton = NSButton; 
+                progressBar = NSProgressIndicator; 
+                statusField = NSTextField; 
+                tableView = NSTableView; 
+            }; 
+            SUPERCLASS = NSWindowController; 
+        }, 
+        {CLASS = BDSKTextWithIconCell; LANGUAGE = ObjC; SUPERCLASS = 
NSTextFieldCell; }, 
+        {CLASS = NSControl; LANGUAGE = ObjC; SUPERCLASS = NSView; }, 
+        {CLASS = NSMenu; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 
+        {CLASS = NSObject; LANGUAGE = ObjC; }, 
+        {CLASS = NSScrollView; LANGUAGE = ObjC; SUPERCLASS = NSView; }, 
+        {CLASS = NSTableHeaderView; LANGUAGE = ObjC; SUPERCLASS = NSView; }, 
+        {
+            ACTIONS = {changeFont = id; invertSelection = id; }; 
+            CLASS = NSTableView; 
+            LANGUAGE = ObjC; 
+            SUPERCLASS = NSControl; 
+        }, 
+        {CLASS = NSWindow; LANGUAGE = ObjC; SUPERCLASS = NSResponder; }, 
+        {
+            ACTIONS = {hideWindow = id; toggleShowingWindow = id; }; 
+            CLASS = NSWindowController; 
+            LANGUAGE = ObjC; 
+            SUPERCLASS = NSResponder; 
+        }
+    ); 
+    IBVersion = 1; 
+}
\ No newline at end of file

Modified: trunk/bibdesk/English.lproj/BDSKFileMigration.nib/info.nib
===================================================================
--- trunk/bibdesk/English.lproj/BDSKFileMigration.nib/info.nib  2008-01-04 
06:45:54 UTC (rev 12252)
+++ trunk/bibdesk/English.lproj/BDSKFileMigration.nib/info.nib  2008-01-04 
11:13:24 UTC (rev 12253)
@@ -1,17 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
 <plist version="1.0">
 <dict>
+       <key>IBDocumentLocation</key>
+       <string>69 58 356 240 0 0 1440 938 </string>
        <key>IBFramework Version</key>
-       <string>629</string>
+       <string>489.0</string>
        <key>IBOldestOS</key>
        <integer>5</integer>
        <key>IBOpenObjects</key>
        <array>
-               <integer>2</integer>
+               <integer>1</integer>
        </array>
        <key>IBSystem Version</key>
-       <string>9C7</string>
+       <string>8S165</string>
        <key>targetFramework</key>
        <string>IBCocoaFramework</string>
 </dict>

Modified: trunk/bibdesk/English.lproj/BDSKFileMigration.nib/keyedobjects.nib
===================================================================
(Binary files differ)


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to