Revision: 7762
          http://skim-app.svn.sourceforge.net/skim-app/?rev=7762&view=rev
Author:   hofman
Date:     2012-11-01 13:09:50 +0000 (Thu, 01 Nov 2012)
Log Message:
-----------
use URL instead of path for file bookmarks

Modified Paths:
--------------
    trunk/NSDocument_SKExtensions.m
    trunk/SKBookmark.h
    trunk/SKBookmark.m
    trunk/SKBookmarkController.m

Modified: trunk/NSDocument_SKExtensions.m
===================================================================
--- trunk/NSDocument_SKExtensions.m     2012-10-31 00:34:24 UTC (rev 7761)
+++ trunk/NSDocument_SKExtensions.m     2012-11-01 13:09:50 UTC (rev 7762)
@@ -101,10 +101,9 @@
                 switch (addBookmarkType) {
                     case SKAddBookmarkTypeBookmark:
                     {
-                        NSString *path = [[self fileURL] path];
                         PDFPage *page = [self currentPage];
                         NSUInteger pageIndex = page ? [page pageIndex] : 
NSNotFound;
-                        bookmark = [SKBookmark bookmarkWithPath:path 
pageIndex:pageIndex label:label];
+                        bookmark = [SKBookmark bookmarkWithURL:[self fileURL] 
pageIndex:pageIndex label:label];
                         break;
                     }
                     case SKAddBookmarkTypeSetup:

Modified: trunk/SKBookmark.h
===================================================================
--- trunk/SKBookmark.h  2012-10-31 00:34:24 UTC (rev 7761)
+++ trunk/SKBookmark.h  2012-11-01 13:09:50 UTC (rev 7762)
@@ -50,15 +50,15 @@
     SKBookmark *parent;
 }
 
-+ (id)bookmarkWithPath:(NSString *)aPath pageIndex:(NSUInteger)aPageIndex 
label:(NSString *)aLabel;
++ (id)bookmarkWithURL:(NSURL *)aURL pageIndex:(NSUInteger)aPageIndex 
label:(NSString *)aLabel;
 + (id)bookmarkWithSetup:(NSDictionary *)aSetupDict label:(NSString *)aLabel;
 + (id)bookmarkFolderWithLabel:(NSString *)aLabel;
 + (id)bookmarkSessionWithSetups:(NSArray *)aSetupDicts label:(NSString 
*)aLabel;
 + (id)bookmarkSeparator;
 
-+ (NSArray *)bookmarksForPaths:(NSArray *)paths relativeToPath:(NSString 
*)basePath;
++ (NSArray *)bookmarksForURLs:(NSArray *)urls;
 
-- (id)initWithPath:(NSString *)aPath pageIndex:(NSUInteger)aPageIndex 
label:(NSString *)aLabel;
+- (id)initWithURL:(NSURL *)aURL pageIndex:(NSUInteger)aPageIndex 
label:(NSString *)aLabel;
 - (id)initWithSetup:(NSDictionary *)aSetupDict label:(NSString *)aLabel;
 - (id)initFolderWithChildren:(NSArray *)aChildren label:(NSString *)aLabel;
 - (id)initFolderWithLabel:(NSString *)aLabel;

Modified: trunk/SKBookmark.m
===================================================================
--- trunk/SKBookmark.m  2012-10-31 00:34:24 UTC (rev 7761)
+++ trunk/SKBookmark.m  2012-11-01 13:09:50 UTC (rev 7762)
@@ -108,8 +108,8 @@
     return SKBookmarkClass == self ? defaultPlaceholderBookmark : [super 
allocWithZone:aZone];
 }
 
-+ (id)bookmarkWithPath:(NSString *)aPath pageIndex:(NSUInteger)aPageIndex 
label:(NSString *)aLabel {
-    return [[[self alloc] initWithPath:aPath pageIndex:aPageIndex 
label:aLabel] autorelease];
++ (id)bookmarkWithURL:(NSURL *)aURL pageIndex:(NSUInteger)aPageIndex 
label:(NSString *)aLabel {
+    return [[[self alloc] initWithURL:aURL pageIndex:aPageIndex label:aLabel] 
autorelease];
 }
 
 + (id)bookmarkWithSetup:(NSDictionary *)aSetupDict label:(NSString *)aLabel {
@@ -128,36 +128,34 @@
     return [[[self alloc] initSeparator] autorelease];
 }
 
-+ (NSArray *)bookmarksForPaths:(NSArray *)paths relativeToPath:(NSString 
*)basePath {
++ (NSArray *)bookmarksForURLs:(NSArray *)urls {
     NSFileManager *fm = [NSFileManager defaultManager];
     NSDocumentController *dc = [NSDocumentController sharedDocumentController];
     NSMutableArray *array = [NSMutableArray array];
     
-    for (NSString *file in paths) {
-        if ([[file lastPathComponent] hasPrefix:@"."] == NO) {
-            NSString *path = [basePath stringByAppendingPathComponent:file] ?: 
file;
-            NSString *fileType = [dc typeForContentsOfURL:[NSURL 
fileURLWithPath:path] error:NULL];
-            Class docClass;
-            SKBookmark *bookmark;
-            if ([[NSWorkspace sharedWorkspace] type:fileType 
conformsToType:SKFolderDocumentType]) {
-                NSArray *children = [self bookmarksForPaths:[fm 
contentsOfDirectoryAtPath:path error:NULL] relativeToPath:path];
-                if ([children count] && (bookmark = [[self alloc] 
initFolderWithChildren:children label:[fm displayNameAtPath:path]])) {
-                    [array addObject:bookmark];
-                    [bookmark release];
-                }
-            } else if ((docClass = [dc documentClassForType:fileType])) {
-                if ((bookmark = [[self alloc] initWithPath:path 
pageIndex:([docClass isPDFDocument] ? 0 : NSNotFound) label:[fm 
displayNameAtPath:path]])) {
-                    [array addObject:bookmark];
-                    [bookmark release];
-                }
+    for (NSURL *url in urls) {
+        NSString *fileType = [dc typeForContentsOfURL:url error:NULL];
+        Class docClass;
+        SKBookmark *bookmark;
+        NSString *label = [fm displayNameAtPath:[url path]];
+        if ([[NSWorkspace sharedWorkspace] type:fileType 
conformsToType:SKFolderDocumentType]) {
+            NSArray *children = [self bookmarksForURLs:[fm 
contentsOfDirectoryAtURL:url includingPropertiesForKeys:nil 
options:NSDirectoryEnumerationSkipsHiddenFiles error:NULL]];
+            if ([children count] && (bookmark = [[self alloc] 
initFolderWithChildren:children label:label])) {
+                [array addObject:bookmark];
+                [bookmark release];
             }
+        } else if ((docClass = [dc documentClassForType:fileType])) {
+            if ((bookmark = [[self alloc] initWithURL:url pageIndex:([docClass 
isPDFDocument] ? 0 : NSNotFound) label:label])) {
+                [array addObject:bookmark];
+                [bookmark release];
+            }
         }
     }
     
     return array;
 }
 
-- (id)initWithPath:(NSString *)aPath pageIndex:(NSUInteger)aPageIndex 
label:(NSString *)aLabel {
+- (id)initWithURL:(NSURL *)aURL pageIndex:(NSUInteger)aPageIndex 
label:(NSString *)aLabel {
     [self doesNotRecognizeSelector:_cmd];
     return nil;
 }
@@ -306,8 +304,8 @@
     return nil;
 }
 
-- (id)initWithPath:(NSString *)aPath pageIndex:(NSUInteger)aPageIndex 
label:(NSString *)aLabel {
-    return (id)[[SKFileBookmark alloc] initWithPath:aPath pageIndex:aPageIndex 
label:aLabel];
+- (id)initWithURL:(NSURL *)aURL pageIndex:(NSUInteger)aPageIndex 
label:(NSString *)aLabel {
+    return (id)[[SKFileBookmark alloc] initWithURL:aURL pageIndex:aPageIndex 
label:aLabel];
 }
 
 - (id)initWithSetup:(NSDictionary *)aSetupDict label:(NSString *)aLabel {
@@ -401,10 +399,10 @@
     return image;
 }
 
-- (id)initWithPath:(NSString *)aPath pageIndex:(NSUInteger)aPageIndex 
label:(NSString *)aLabel {
+- (id)initWithURL:(NSURL *)aURL pageIndex:(NSUInteger)aPageIndex 
label:(NSString *)aLabel {
     self = [super init];
     if (self) {
-        alias = [[BDAlias alloc] initWithPath:aPath];
+        alias = [[BDAlias alloc] initWithURL:aURL];
         if (alias) {
             aliasData = [[alias aliasData] retain];
             pageIndex = aPageIndex;
@@ -618,7 +616,6 @@
     if ([key isEqualToString:@"bookmarks"]) {
         SKBookmark *bookmark = nil;
         NSURL *aURL = [properties objectForKey:@"scriptingFile"] ?: 
contentsValue;
-        NSString *aPath = [aURL respondsToSelector:@selector(path)] ? [aURL 
path] : nil;
         NSString *aLabel = [properties objectForKey:@"label"];
         NSNumber *aType = [properties objectForKey:@"bookmarkType"];
         NSInteger type;
@@ -626,7 +623,7 @@
             type = [aType integerValue];
         else if (aURL == nil)
             type = SKBookmarkTypeSession;
-        else if ([[NSWorkspace sharedWorkspace] type:[[NSWorkspace 
sharedWorkspace] typeOfFile:aPath error:NULL] conformsToType:(NSString 
*)kUTTypeFolder])
+        else if ([[NSWorkspace sharedWorkspace] type:[[NSWorkspace 
sharedWorkspace] typeOfFile:[aURL path] error:NULL] conformsToType:(NSString 
*)kUTTypeFolder])
             type = SKBookmarkTypeFolder;
         else
             type = SKBookmarkTypeBookmark;
@@ -634,10 +631,10 @@
             case SKBookmarkTypeBookmark:
             {
                 Class docClass;
-                if (aPath == nil) {
+                if (aURL == nil) {
                     [[NSScriptCommand currentCommand] 
setScriptErrorNumber:NSRequiredArgumentsMissingScriptError];
                     [[NSScriptCommand currentCommand] 
setScriptErrorString:@"New file bookmark requires a file."];
-                } else if ([[NSFileManager defaultManager] 
fileExistsAtPath:aPath] == NO) {
+                } else if ([[NSFileManager defaultManager] 
fileExistsAtPath:[aURL path]] == NO) {
                     [[NSScriptCommand currentCommand] 
setScriptErrorNumber:NSArgumentsWrongScriptError];
                     [[NSScriptCommand currentCommand] 
setScriptErrorString:@"New file bookmark requires an existing file."];
                 } else if ((docClass = [[NSDocumentController 
sharedDocumentController] documentClassForContentsOfURL:aURL])) {
@@ -647,8 +644,8 @@
                     else
                         aPageNumber = [docClass isPDFDocument] ? 0 : 
NSNotFound;
                     if (aLabel == nil)
-                        aLabel = [[NSFileManager defaultManager] 
displayNameAtPath:aPath];
-                    bookmark = [[SKBookmark alloc] initWithPath:aPath 
pageIndex:aPageNumber label:aLabel ?: @""];
+                        aLabel = [[NSFileManager defaultManager] 
displayNameAtPath:[aURL path]];
+                    bookmark = [[SKBookmark alloc] initWithURL:aURL 
pageIndex:aPageNumber label:aLabel ?: @""];
                 } else {
                     [[NSScriptCommand currentCommand] 
setScriptErrorNumber:NSArgumentsWrongScriptError];
                     [[NSScriptCommand currentCommand] 
setScriptErrorString:@"Unsupported file type for new bookmark."];
@@ -658,10 +655,10 @@
             case SKBookmarkTypeFolder:
             {
                 NSArray *aChildren = nil;
-                if (aPath) {
-                    aChildren = [SKBookmark bookmarksForPaths:[[NSFileManager 
defaultManager] contentsOfDirectoryAtPath:aPath error:NULL] 
relativeToPath:aPath];
+                if (aURL) {
+                    aChildren = [SKBookmark bookmarksForURLs:[[NSFileManager 
defaultManager] contentsOfDirectoryAtURL:aURL includingPropertiesForKeys:nil 
options:NSDirectoryEnumerationSkipsHiddenFiles error:NULL]];
                     if (aLabel == nil)
-                        aLabel = [[NSFileManager defaultManager] 
displayNameAtPath:aPath];
+                        aLabel = [[NSFileManager defaultManager] 
displayNameAtPath:[aURL path]];
                 }
                 bookmark = [[SKBookmark alloc] 
initFolderWithChildren:aChildren label:aLabel ?: @""];
                 break;

Modified: trunk/SKBookmarkController.m
===================================================================
--- trunk/SKBookmarkController.m        2012-10-31 00:34:24 UTC (rev 7761)
+++ trunk/SKBookmarkController.m        2012-11-01 13:09:50 UTC (rev 7762)
@@ -668,7 +668,7 @@
         return YES;
     } else {
         NSArray *urls = [NSURL readFileURLsFromPasteboard:pboard];
-        NSArray *newBookmarks = [SKBookmark bookmarksForPaths:[urls 
valueForKey:@"path"] relativeToPath:nil];
+        NSArray *newBookmarks = [SKBookmark bookmarksForURLs:urls];
         if ([newBookmarks count] > 0) {
             [self endEditing];
             if (item == nil) item = bookmarkRoot;
@@ -757,7 +757,7 @@
 - (void)outlineView:(NSOutlineView *)ov pasteFromPasteboard:(NSPasteboard 
*)pboard {
     NSArray *urls = [NSURL readFileURLsFromPasteboard:pboard];
     if ([urls count] > 0) {
-        NSArray *newBookmarks = [SKBookmark bookmarksForPaths:[urls 
valueForKey:@"path"] relativeToPath:nil];
+        NSArray *newBookmarks = [SKBookmark bookmarksForURLs:urls];
         if ([newBookmarks count] > 0) {
             SKBookmark *item = nil;
             NSUInteger anIndex = 0;

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


------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to