Revision: 3052
http://skim-app.svn.sourceforge.net/skim-app/?rev=3052&view=rev
Author: hofman
Date: 2007-10-21 04:22:17 -0700 (Sun, 21 Oct 2007)
Log Message:
-----------
Don't save path for bookmarks and recent documents. That is kept by the alias.
Modified Paths:
--------------
trunk/SKBookmark.h
trunk/SKBookmark.m
trunk/SKBookmarkController.m
Modified: trunk/SKBookmark.h
===================================================================
--- trunk/SKBookmark.h 2007-10-20 18:06:46 UTC (rev 3051)
+++ trunk/SKBookmark.h 2007-10-21 11:22:17 UTC (rev 3052)
@@ -47,9 +47,10 @@
SKBookmarkTypeSeparator
};
[EMAIL PROTECTED] BDAlias;
+
@interface SKBookmark : NSObject <NSCopying> {
- NSString *path;
- NSData *aliasData;
+ BDAlias *alias;
NSString *label;
unsigned int pageIndex;
NSMutableArray *children;
@@ -57,7 +58,8 @@
int bookmarkType;
}
-- (id)initWithPath:(NSString *)aPath aliasData:(NSData *)aData
pageIndex:(unsigned)aPageIndex label:(NSString *)aLabel;
+- (id)initWithAlias:(BDAlias *)anAlias pageIndex:(unsigned)aPageIndex
label:(NSString *)aLabel;
+- (id)initWithAliasData:(NSData *)aData pageIndex:(unsigned)aPageIndex
label:(NSString *)aLabel;
- (id)initWithPath:(NSString *)aPath pageIndex:(unsigned)aPageIndex
label:(NSString *)aLabel;
- (id)initFolderWithChildren:(NSArray *)aChildren label:(NSString *)aLabel;
- (id)initFolderWithLabel:(NSString *)aLabel;
@@ -69,8 +71,8 @@
- (int)bookmarkType;
- (NSString *)path;
+- (BDAlias *)alias;
- (NSData *)aliasData;
-- (NSString *)resolvedPath;
- (NSImage *)icon;
- (unsigned int)pageIndex;
- (NSNumber *)pageNumber;
Modified: trunk/SKBookmark.m
===================================================================
--- trunk/SKBookmark.m 2007-10-20 18:06:46 UTC (rev 3051)
+++ trunk/SKBookmark.m 2007-10-21 11:22:17 UTC (rev 3052)
@@ -50,8 +50,7 @@
#define CHILDREN_KEY @"children"
#define LABEL_KEY @"label"
#define PAGE_INDEX_KEY @"pageIndex"
-#define PATH_KEY @"path"
-#define ALIAS_KEY @"_BDAlias"
+#define ALIAS_DATA_KEY @"_BDAlias"
#define TYPE_KEY @"type"
@implementation SKBookmark
@@ -79,11 +78,10 @@
return icon;
}
-- (id)initWithPath:(NSString *)aPath aliasData:(NSData *)aData
pageIndex:(unsigned)aPageIndex label:(NSString *)aLabel {
+- (id)initWithAlias:(BDAlias *)anAlias pageIndex:(unsigned)aPageIndex
label:(NSString *)aLabel {
if (self = [super init]) {
bookmarkType = SKBookmarkTypeBookmark;
- path = [aPath copy];
- aliasData = [aData copy];
+ alias = [anAlias retain];
pageIndex = aPageIndex;
label = [aLabel copy];
children = nil;
@@ -91,15 +89,18 @@
return self;
}
+- (id)initWithAliasData:(NSData *)aData pageIndex:(unsigned)aPageIndex
label:(NSString *)aLabel {
+ return [self initWithAlias:[BDAlias aliasWithData:aData]
pageIndex:aPageIndex label:aLabel];
+}
+
- (id)initWithPath:(NSString *)aPath pageIndex:(unsigned)aPageIndex
label:(NSString *)aLabel {
- return [self initWithPath:aPath aliasData:[[BDAlias aliasWithPath:aPath]
aliasData] pageIndex:aPageIndex label:aLabel];
+ return [self initWithAlias:[BDAlias aliasWithPath:aPath]
pageIndex:aPageIndex label:aLabel];
}
- (id)initFolderWithChildren:(NSArray *)aChildren label:(NSString *)aLabel {
if (self = [super init]) {
bookmarkType = SKBookmarkTypeFolder;
- path = nil;
- aliasData = nil;
+ alias = nil;
pageIndex = NSNotFound;
label = [aLabel copy];
children = [aChildren mutableCopy];
@@ -115,8 +116,7 @@
- (id)initSeparator {
if (self = [super init]) {
bookmarkType = SKBookmarkTypeSeparator;
- path = nil;
- aliasData = nil;
+ alias = nil;
pageIndex = NSNotFound;
label = nil;
children = nil;
@@ -135,7 +135,7 @@
} else if ([[dictionary objectForKey:TYPE_KEY]
isEqualToString:SKBookmarkTypeSeparatorString]) {
return [self initSeparator];
} else {
- return [self initWithPath:[dictionary objectForKey:PATH_KEY]
aliasData:[dictionary objectForKey:ALIAS_KEY] pageIndex:[[dictionary
objectForKey:PAGE_INDEX_KEY] unsignedIntValue] label:[dictionary
objectForKey:LABEL_KEY]];
+ return [self initWithAliasData:[dictionary
objectForKey:ALIAS_DATA_KEY] pageIndex:[[dictionary
objectForKey:PAGE_INDEX_KEY] unsignedIntValue] label:[dictionary
objectForKey:LABEL_KEY]];
}
}
@@ -145,13 +145,12 @@
else if (bookmarkType == SKBookmarkTypeSeparator)
return [[[self class] allocWithZone:aZone] initSeparator];
else
- return [[[self class] allocWithZone:aZone] initWithPath:path
aliasData:aliasData pageIndex:pageIndex label:label];
+ return [[[self class] allocWithZone:aZone] initWithAlias:alias
pageIndex:pageIndex label:label];
}
- (void)dealloc {
[[[SKBookmarkController sharedBookmarkController] undoManager]
removeAllActionsWithTarget:self];
- [path release];
- [aliasData release];
+ [alias release];
[label release];
[children release];
[super dealloc];
@@ -163,7 +162,7 @@
else if (bookmarkType == SKBookmarkTypeSeparator)
return [NSString stringWithFormat:@"<%@: separator>", [self class]];
else
- return [NSString stringWithFormat:@"<%@: label=%@, path=%@, page=%i>",
[self class], label, path, pageIndex];
+ return [NSString stringWithFormat:@"<%@: label=%@, path=%@, page=%i>",
[self class], label, [self path], pageIndex];
}
- (NSDictionary *)dictionaryValue {
@@ -172,7 +171,7 @@
else if (bookmarkType == SKBookmarkTypeSeparator)
return [NSDictionary
dictionaryWithObjectsAndKeys:SKBookmarkTypeSeparatorString, TYPE_KEY, nil];
else
- return [NSDictionary
dictionaryWithObjectsAndKeys:SKBookmarkTypeBookmarkString, TYPE_KEY, path,
PATH_KEY, aliasData, ALIAS_KEY, [NSNumber numberWithUnsignedInt:pageIndex],
PAGE_INDEX_KEY, label, LABEL_KEY, nil];
+ return [NSDictionary
dictionaryWithObjectsAndKeys:SKBookmarkTypeBookmarkString, TYPE_KEY, [self
aliasData], ALIAS_DATA_KEY, [NSNumber numberWithUnsignedInt:pageIndex],
PAGE_INDEX_KEY, label, LABEL_KEY, nil];
}
- (int)bookmarkType {
@@ -180,18 +179,15 @@
}
- (NSString *)path {
- return [[path retain] autorelease];
+ return [alias fullPathNoUI];
}
-- (NSData *)aliasData {
- return aliasData;
+- (BDAlias *)alias {
+ return alias;
}
-- (NSString *)resolvedPath {
- NSString *resolvedPath = [[BDAlias aliasWithData:aliasData] fullPathNoUI];
- if (resolvedPath == nil)
- resolvedPath = path;
- return resolvedPath;
+- (NSData *)aliasData {
+ return [alias aliasData];
}
- (NSImage *)icon {
@@ -200,7 +196,7 @@
else if (bookmarkType == SKBookmarkTypeSeparator)
return nil;
else
- return [[self class] smallImageForFile:[self resolvedPath]];
+ return [[self class] smallImageForFile:[self path]];
}
- (unsigned int)pageIndex {
Modified: trunk/SKBookmarkController.m
===================================================================
--- trunk/SKBookmarkController.m 2007-10-20 18:06:46 UTC (rev 3051)
+++ trunk/SKBookmarkController.m 2007-10-21 11:22:17 UTC (rev 3052)
@@ -66,7 +66,8 @@
#define PAGE_INDEX_KEY @"pageIndex"
#define PATH_KEY @"path"
-#define ALIAS_KEY @"_BDAlias"
+#define ALIAS_KEY @"alias"
+#define ALIAS_DATA_KEY @"_BDAlias"
#define SNAPSHOTS_KEY @"snapshots"
@implementation SKBookmarkController
@@ -96,7 +97,7 @@
NSString *error = nil;
NSPropertyListFormat format = NSPropertyListBinaryFormat_v1_0;
id plist = [NSPropertyListSerialization propertyListFromData:data
-
mutabilityOption:NSPropertyListImmutable
+
mutabilityOption:NSPropertyListMutableContainers
format:&format
errorDescription:&error];
@@ -168,13 +169,13 @@
if (row != -1) {
SKBookmark *bookmark = [outlineView itemAtRow:row];
if ([bookmark bookmarkType] == SKBookmarkTypeBookmark) {
- message = [bookmark resolvedPath];
+ message = [bookmark path];
} else if ([bookmark bookmarkType] == SKBookmarkTypeFolder) {
int count = [[bookmark children] count];
message = count == 1 ? NSLocalizedString(@"1 item", @"Bookmark
folder description") : [NSString stringWithFormat:NSLocalizedString(@"%i
items", @"Bookmark folder description"), count];
}
}
- [statusBar setLeftStringValue:message];
+ [statusBar setLeftStringValue:message ? message : @""];
}
#pragma mark Bookmarks
@@ -273,16 +274,18 @@
}
- (unsigned int)indexOfRecentDocumentAtPath:(NSString *)path {
- unsigned int index = [[recentDocuments valueForKey:PATH_KEY]
indexOfObject:path];
- if (index == NSNotFound) {
- unsigned int i, iMax = [recentDocuments count];
- for (i = 0; i < iMax; i++) {
- NSData *aliasData = [[recentDocuments objectAtIndex:i]
valueForKey:ALIAS_KEY];
- if ([[[BDAlias aliasWithData:aliasData] fullPathNoUI]
isEqualToString:path]) {
- index = i;
- break;
- }
+ unsigned int index = NSNotFound, i, iMax = [recentDocuments count];
+ for (i = 0; i < iMax; i++) {
+ NSMutableDictionary *info = [recentDocuments objectAtIndex:i];
+ BDAlias *alias = [info valueForKey:ALIAS_KEY];
+ if (alias == nil) {
+ alias = [BDAlias aliasWithData:[info valueForKey:ALIAS_DATA_KEY]];
+ [info setValue:alias forKey:ALIAS_KEY];
}
+ if ([[alias fullPathNoUI] isEqualToString:path]) {
+ index = i;
+ break;
+ }
}
return index;
}
@@ -296,7 +299,7 @@
[recentDocuments removeObjectAtIndex:index];
NSData *data = [[BDAlias aliasWithPath:path] aliasData];
- NSMutableDictionary *bm = [NSMutableDictionary
dictionaryWithObjectsAndKeys:path, PATH_KEY, [NSNumber
numberWithUnsignedInt:pageIndex], PAGE_INDEX_KEY, data, ALIAS_KEY, [setups
count] ? setups : nil, SNAPSHOTS_KEY, nil];
+ NSMutableDictionary *bm = [NSMutableDictionary
dictionaryWithObjectsAndKeys:[NSNumber numberWithUnsignedInt:pageIndex],
PAGE_INDEX_KEY, data, ALIAS_DATA_KEY, [setups count] ? setups : nil,
SNAPSHOTS_KEY, nil];
[recentDocuments insertObject:bm atIndex:0];
if ([recentDocuments count] > maxRecentDocumentsCount)
[recentDocuments removeLastObject];
@@ -353,7 +356,7 @@
while (bm = [bmEnum nextObject]) {
id document = nil;
- NSString *path = [bm resolvedPath];
+ NSString *path = [bm path];
NSURL *fileURL = path ? [NSURL fileURLWithPath:path] : nil;
NSError *error;
@@ -488,7 +491,7 @@
int count = [[item children] count];
return count == 1 ? NSLocalizedString(@"1 item", @"Bookmark folder
description") : [NSString stringWithFormat:NSLocalizedString(@"%i items",
@"Bookmark folder description"), count];
} else {
- return [item resolvedPath];
+ return [item path];
}
} else if ([tcID isEqualToString:@"page"]) {
return [[item pageNumber] stringValue];
@@ -583,7 +586,7 @@
if ([tcID isEqualToString:@"label"]) {
return [item label];
} else if ([tcID isEqualToString:@"file"]) {
- return [item resolvedPath];
+ return [item path];
} else if ([tcID isEqualToString:@"page"]) {
return [[item pageNumber] stringValue];
}
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: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit