Revision: 2925
http://skim-app.svn.sourceforge.net/skim-app/?rev=2925&view=rev
Author: hofman
Date: 2007-09-15 05:52:53 -0700 (Sat, 15 Sep 2007)
Log Message:
-----------
Use toolbar for bookmarks window. Toggle status bar. Update localizations. Move
bookmarks to a separate file.
Modified Paths:
--------------
trunk/Dutch.lproj/BookmarksWindow.nib/classes.nib
trunk/Dutch.lproj/BookmarksWindow.nib/info.nib
trunk/Dutch.lproj/BookmarksWindow.nib/keyedobjects.nib
trunk/Dutch.lproj/Localizable.strings
trunk/Dutch.lproj/NotesDocument.nib/info.nib
trunk/Dutch.lproj/NotesDocument.nib/keyedobjects.nib
trunk/Dutch.lproj/PreferenceWindow.nib/keyedobjects.nib
trunk/English.lproj/BookmarksWindow.nib/keyedobjects.nib
trunk/French.lproj/BookmarksWindow.nib/keyedobjects.nib
trunk/French.lproj/Localizable.strings
trunk/Italian.lproj/BookmarksWindow.nib/keyedobjects.nib
trunk/Italian.lproj/Localizable.strings
trunk/NSImage_SKExtensions.h
trunk/NSImage_SKExtensions.m
trunk/SKApplicationController.m
trunk/SKBookmarkController.h
trunk/SKBookmarkController.m
trunk/Skim.xcodeproj/project.pbxproj
Added Paths:
-----------
trunk/Images/ToolbarNewFolder.tiff
trunk/Images/ToolbarNewSeparator.tiff
trunk/SKBookmark.h
trunk/SKBookmark.m
Modified: trunk/Dutch.lproj/BookmarksWindow.nib/classes.nib
===================================================================
--- trunk/Dutch.lproj/BookmarksWindow.nib/classes.nib 2007-09-15 10:28:27 UTC
(rev 2924)
+++ trunk/Dutch.lproj/BookmarksWindow.nib/classes.nib 2007-09-15 12:52:53 UTC
(rev 2925)
@@ -38,7 +38,8 @@
OUTLETS = {leftCell = id; rightCell = id; };
SUPERCLASS = NSControl;
},
- {CLASS = SKTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; }
+ {CLASS = SKTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; },
+ {CLASS = SKTextWithIconCell; LANGUAGE = ObjC; SUPERCLASS =
NSTextFieldCell; }
);
IBVersion = 1;
}
\ No newline at end of file
Modified: trunk/Dutch.lproj/BookmarksWindow.nib/info.nib
===================================================================
--- trunk/Dutch.lproj/BookmarksWindow.nib/info.nib 2007-09-15 10:28:27 UTC
(rev 2924)
+++ trunk/Dutch.lproj/BookmarksWindow.nib/info.nib 2007-09-15 12:52:53 UTC
(rev 2925)
@@ -6,10 +6,6 @@
<string>69 58 356 240 0 0 1440 938 </string>
<key>IBFramework Version</key>
<string>446.1</string>
- <key>IBOpenObjects</key>
- <array>
- <integer>5</integer>
- </array>
<key>IBSystem Version</key>
<string>8R218</string>
</dict>
Modified: trunk/Dutch.lproj/BookmarksWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)
Modified: trunk/Dutch.lproj/Localizable.strings
===================================================================
(Binary files differ)
Modified: trunk/Dutch.lproj/NotesDocument.nib/info.nib
===================================================================
--- trunk/Dutch.lproj/NotesDocument.nib/info.nib 2007-09-15 10:28:27 UTC
(rev 2924)
+++ trunk/Dutch.lproj/NotesDocument.nib/info.nib 2007-09-15 12:52:53 UTC
(rev 2925)
@@ -6,10 +6,6 @@
<string>69 58 356 240 0 0 1440 938 </string>
<key>IBFramework Version</key>
<string>446.1</string>
- <key>IBOpenObjects</key>
- <array>
- <integer>5</integer>
- </array>
<key>IBSystem Version</key>
<string>8R218</string>
</dict>
Modified: trunk/Dutch.lproj/NotesDocument.nib/keyedobjects.nib
===================================================================
(Binary files differ)
Modified: trunk/Dutch.lproj/PreferenceWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)
Modified: trunk/English.lproj/BookmarksWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)
Modified: trunk/French.lproj/BookmarksWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)
Modified: trunk/French.lproj/Localizable.strings
===================================================================
(Binary files differ)
Added: trunk/Images/ToolbarNewFolder.tiff
===================================================================
(Binary files differ)
Property changes on: trunk/Images/ToolbarNewFolder.tiff
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/Images/ToolbarNewSeparator.tiff
===================================================================
(Binary files differ)
Property changes on: trunk/Images/ToolbarNewSeparator.tiff
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/Italian.lproj/BookmarksWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)
Modified: trunk/Italian.lproj/Localizable.strings
===================================================================
(Binary files differ)
Modified: trunk/NSImage_SKExtensions.h
===================================================================
--- trunk/NSImage_SKExtensions.h 2007-09-15 10:28:27 UTC (rev 2924)
+++ trunk/NSImage_SKExtensions.h 2007-09-15 12:52:53 UTC (rev 2925)
@@ -41,4 +41,6 @@
@interface NSImage (SKExtensions)
+ (void)makeAdornImages;
++ (NSImage *)iconWithSize:(NSSize)iconSize forToolboxCode:(OSType)code;
++ (NSImage *)imageWithIconForToolboxCode:(OSType)code;
@end
Modified: trunk/NSImage_SKExtensions.m
===================================================================
--- trunk/NSImage_SKExtensions.m 2007-09-15 10:28:27 UTC (rev 2924)
+++ trunk/NSImage_SKExtensions.m 2007-09-15 12:52:53 UTC (rev 2925)
@@ -545,4 +545,30 @@
[shadow release];
}
++ (NSImage *)iconWithSize:(NSSize)iconSize forToolboxCode:(OSType) code {
+ IconRef iconref;
+ OSErr myErr = GetIconRef (kOnSystemDisk, kSystemIconsCreator, code,
&iconref);
+
+ NSImage *image = [[NSImage alloc]
initWithSize:NSMakeSize(iconSize.width, iconSize.height)];
+ CGRect rect = CGRectMake(0.0, 0.0, iconSize.width, iconSize.height);
+
+ [image lockFocus];
+ PlotIconRefInContext((CGContextRef)[[NSGraphicsContext currentContext]
graphicsPort],
+ &rect,
+ kAlignAbsoluteCenter,
//kAlignNone,
+ kTransformNone,
+ NULL /*inLabelColor*/,
+ kPlotIconRefNormalFlags,
+ iconref);
+ [image unlockFocus];
+
+ myErr = ReleaseIconRef(iconref);
+
+ return [image autorelease];
+}
+
++ (NSImage *)imageWithIconForToolboxCode:(OSType) code {
+ return [self iconWithSize:NSMakeSize(32,32) forToolboxCode:code];
+}
+
@end
Modified: trunk/SKApplicationController.m
===================================================================
--- trunk/SKApplicationController.m 2007-09-15 10:28:27 UTC (rev 2924)
+++ trunk/SKApplicationController.m 2007-09-15 12:52:53 UTC (rev 2925)
@@ -43,6 +43,7 @@
#import "SKDocument.h"
#import "SKMainWindowController.h"
#import "SKBookmarkController.h"
+#import "SKBookmark.h"
#import "BDAlias.h"
#import "SKVersionNumber.h"
#import "NSUserDefaultsController_SKExtensions.h"
Added: trunk/SKBookmark.h
===================================================================
--- trunk/SKBookmark.h (rev 0)
+++ trunk/SKBookmark.h 2007-09-15 12:52:53 UTC (rev 2925)
@@ -0,0 +1,90 @@
+//
+// SKBookmark.h
+// Skim
+//
+// Created by Christiaan Hofman on 9/15/07.
+/*
+ This software is Copyright (c) 2007
+ Christiaan Hofman. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ - Neither the name of Christiaan Hofman nor the names of any
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <Cocoa/Cocoa.h>
+
+extern NSString *SKBookmarkChangedNotification;
+extern NSString *SKBookmarkWillBeRemovedNotification;
+
+enum {
+ SKBookmarkTypeBookmark,
+ SKBookmarkTypeFolder,
+ SKBookmarkTypeSeparator
+};
+
[EMAIL PROTECTED] SKBookmark : NSObject <NSCopying> {
+ NSString *path;
+ NSData *aliasData;
+ NSString *label;
+ unsigned int pageIndex;
+ NSMutableArray *children;
+ SKBookmark *parent;
+ int bookmarkType;
+}
+
+- (id)initWithPath:(NSString *)aPath aliasData:(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;
+- (id)initSeparator;
+- (id)initWithDictionary:(NSDictionary *)dictionary;
+
+- (NSDictionary *)dictionaryValue;
+
+- (int)bookmarkType;
+
+- (NSString *)path;
+- (NSData *)aliasData;
+- (NSString *)resolvedPath;
+- (NSImage *)icon;
+- (unsigned int)pageIndex;
+- (NSNumber *)pageNumber;
+- (NSString *)label;
+- (void)setLabel:(NSString *)newLabel;
+
+- (SKBookmark *)parent;
+- (void)setParent:(SKBookmark *)newParent;
+- (NSArray *)children;
+- (void)insertChild:(SKBookmark *)child atIndex:(unsigned int)index;
+- (void)addChild:(SKBookmark *)child;
+- (void)removeChild:(SKBookmark *)child;
+
+- (BOOL)isDescendantOf:(SKBookmark *)bookmark;
+- (BOOL)isDescendantOfArray:(NSArray *)bookmarks;
+
[EMAIL PROTECTED]
Added: trunk/SKBookmark.m
===================================================================
--- trunk/SKBookmark.m (rev 0)
+++ trunk/SKBookmark.m 2007-09-15 12:52:53 UTC (rev 2925)
@@ -0,0 +1,271 @@
+//
+// SKBookmark.m
+// Skim
+//
+// Created by Christiaan Hofman on 9/15/07.
+/*
+ This software is Copyright (c) 2007
+ Christiaan Hofman. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ - Neither the name of Christiaan Hofman nor the names of any
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SKBookmark.h"
+#import "SKBookmarkController.h"
+#import "BDAlias.h"
+
+NSString *SKBookmarkChangedNotification = @"SKBookmarkChangedNotification";
+NSString *SKBookmarkWillBeRemovedNotification =
@"SKBookmarkWillBeRemovedNotification";
+
[EMAIL PROTECTED] SKBookmark
+
++ (NSImage *)smallImageForFile:(NSString *)filePath {
+ static NSMutableDictionary *smallIcons = nil;
+ if (smallIcons == nil)
+ smallIcons = [[NSMutableDictionary alloc] init];
+
+ NSString *extension = [filePath pathExtension];
+ NSImage *icon = [smallIcons objectForKey:extension];
+
+ if (icon == nil) {
+ NSImage *image = [[NSWorkspace sharedWorkspace]
iconForFileType:extension];
+ NSRect sourceRect = {NSZeroPoint, [image size]};
+ NSRect targetRect = NSMakeRect(0.0, 0.0, 16.0, 16.0);
+ icon = [[NSImage alloc] initWithSize:targetRect.size];
+ [icon lockFocus];
+ [[NSGraphicsContext currentContext]
setImageInterpolation:NSImageInterpolationHigh];
+ [image drawInRect:targetRect fromRect:sourceRect
operation:NSCompositeCopy fraction:1.0];
+ [icon unlockFocus];
+ [smallIcons setObject:icon forKey:extension];
+ [icon release];
+ }
+ return icon;
+}
+
+- (id)initWithPath:(NSString *)aPath aliasData:(NSData *)aData
pageIndex:(unsigned)aPageIndex label:(NSString *)aLabel {
+ if (self = [super init]) {
+ bookmarkType = SKBookmarkTypeBookmark;
+ path = [aPath copy];
+ aliasData = [aData copy];
+ pageIndex = aPageIndex;
+ label = [aLabel copy];
+ children = nil;
+ }
+ return self;
+}
+
+- (id)initWithPath:(NSString *)aPath pageIndex:(unsigned)aPageIndex
label:(NSString *)aLabel {
+ return [self initWithPath:aPath aliasData:[[BDAlias aliasWithPath:aPath]
aliasData] pageIndex:aPageIndex label:aLabel];
+}
+
+- (id)initFolderWithChildren:(NSArray *)aChildren label:(NSString *)aLabel {
+ if (self = [super init]) {
+ bookmarkType = SKBookmarkTypeFolder;
+ path = nil;
+ aliasData = nil;
+ pageIndex = NSNotFound;
+ label = [aLabel copy];
+ children = [aChildren mutableCopy];
+ [children makeObjectsPerformSelector:@selector(setParent:)
withObject:self];
+ }
+ return self;
+}
+
+- (id)initFolderWithLabel:(NSString *)aLabel {
+ return [self initFolderWithChildren:[NSArray array] label:aLabel];
+}
+
+- (id)initSeparator {
+ if (self = [super init]) {
+ bookmarkType = SKBookmarkTypeSeparator;
+ path = nil;
+ aliasData = nil;
+ pageIndex = NSNotFound;
+ label = nil;
+ children = nil;
+ }
+ return self;
+}
+
+- (id)initWithDictionary:(NSDictionary *)dictionary {
+ if ([[dictionary objectForKey:@"type"] isEqualToString:@"folder"]) {
+ NSEnumerator *dictEnum = [[dictionary objectForKey:@"children"]
objectEnumerator];
+ NSDictionary *dict;
+ NSMutableArray *newChildren = [NSMutableArray array];
+ while (dict = [dictEnum nextObject])
+ [newChildren addObject:[[[[self class] alloc]
initWithDictionary:dict] autorelease]];
+ return [self initFolderWithChildren:newChildren label:[dictionary
objectForKey:@"label"]];
+ } else if ([[dictionary objectForKey:@"type"]
isEqualToString:@"separator"]) {
+ return [self initSeparator];
+ } else {
+ return [self initWithPath:[dictionary objectForKey:@"path"]
aliasData:[dictionary objectForKey:@"_BDAlias"] pageIndex:[[dictionary
objectForKey:@"pageIndex"] unsignedIntValue] label:[dictionary
objectForKey:@"label"]];
+ }
+}
+
+- (id)copyWithZone:(NSZone *)aZone {
+ if (bookmarkType == SKBookmarkTypeFolder)
+ return [[[self class] allocWithZone:aZone]
initFolderWithChildren:[[[NSArray alloc] initWithArray:children copyItems:YES]
autorelease] label:label];
+ else if (bookmarkType == SKBookmarkTypeSeparator)
+ return [[[self class] allocWithZone:aZone] initSeparator];
+ else
+ return [[[self class] allocWithZone:aZone] initWithPath:path
aliasData:aliasData pageIndex:pageIndex label:label];
+}
+
+- (void)dealloc {
+ [[[SKBookmarkController sharedBookmarkController] undoManager]
removeAllActionsWithTarget:self];
+ [path release];
+ [aliasData release];
+ [label release];
+ [children release];
+ [super dealloc];
+}
+
+- (NSString *)description {
+ if (bookmarkType == SKBookmarkTypeFolder)
+ return [NSString stringWithFormat:@"<%@: label=%@, children=%@>",
[self class], label, children];
+ else if (bookmarkType == SKBookmarkTypeSeparator)
+ return [NSString stringWithFormat:@"<%@: separator>", [self class]];
+ else
+ return [NSString stringWithFormat:@"<%@: label=%@, path=%@, page=%i>",
[self class], label, path, pageIndex];
+}
+
+- (NSDictionary *)dictionaryValue {
+ if (bookmarkType == SKBookmarkTypeFolder)
+ return [NSDictionary dictionaryWithObjectsAndKeys:@"folder", @"type",
[children valueForKey:@"dictionaryValue"], @"children", label, @"label", nil];
+ else if (bookmarkType == SKBookmarkTypeSeparator)
+ return [NSDictionary dictionaryWithObjectsAndKeys:@"separator",
@"type", nil];
+ else
+ return [NSDictionary dictionaryWithObjectsAndKeys:@"bookmark",
@"type", path, @"path", aliasData, @"_BDAlias", [NSNumber
numberWithUnsignedInt:pageIndex], @"pageIndex", label, @"label", nil];
+}
+
+- (int)bookmarkType {
+ return bookmarkType;
+}
+
+- (NSString *)path {
+ return [[path retain] autorelease];
+}
+
+- (NSData *)aliasData {
+ return aliasData;
+}
+
+- (NSString *)resolvedPath {
+ NSString *resolvedPath = [[BDAlias aliasWithData:aliasData] fullPathNoUI];
+ if (resolvedPath == nil)
+ resolvedPath = path;
+ return resolvedPath;
+}
+
+- (NSImage *)icon {
+ if ([self bookmarkType] == SKBookmarkTypeFolder)
+ return [NSImage imageNamed:@"SmallFolder"];
+ else if (bookmarkType == SKBookmarkTypeSeparator)
+ return nil;
+ else
+ return [[self class] smallImageForFile:[self resolvedPath]];
+}
+
+- (unsigned int)pageIndex {
+ return pageIndex;
+}
+
+- (NSNumber *)pageNumber {
+ return pageIndex == NSNotFound ? nil : [NSNumber
numberWithUnsignedInt:pageIndex + 1];
+}
+
+- (NSString *)label {
+ return label;
+}
+
+- (void)setLabel:(NSString *)newLabel {
+ if (label != newLabel) {
+ NSUndoManager *undoManager = [[SKBookmarkController
sharedBookmarkController] undoManager];
+ [(SKBookmark *)[undoManager prepareWithInvocationTarget:self]
setLabel:label];
+ [label release];
+ label = [newLabel retain];
+ [[NSNotificationCenter defaultCenter]
postNotificationName:SKBookmarkChangedNotification object:self];
+ }
+}
+
+- (SKBookmark *)parent {
+ return parent;
+}
+
+- (void)setParent:(SKBookmark *)newParent {
+ parent = newParent;
+}
+
+- (NSArray *)children {
+ return children;
+}
+
+- (void)insertChild:(SKBookmark *)child atIndex:(unsigned int)index {
+ NSUndoManager *undoManager = [[SKBookmarkController
sharedBookmarkController] undoManager];
+ [(SKBookmark *)[undoManager prepareWithInvocationTarget:self]
removeChild:child];
+ [children insertObject:child atIndex:index];
+ [child setParent:self];
+ [[NSNotificationCenter defaultCenter]
postNotificationName:SKBookmarkChangedNotification object:self];
+}
+
+- (void)addChild:(SKBookmark *)child {
+ [self insertChild:child atIndex:[children count]];
+}
+
+- (void)removeChild:(SKBookmark *)child {
+ NSUndoManager *undoManager = [[SKBookmarkController
sharedBookmarkController] undoManager];
+ [(SKBookmark *)[undoManager prepareWithInvocationTarget:self]
insertChild:child atIndex:[[self children] indexOfObject:child]];
+ [[NSNotificationCenter defaultCenter]
postNotificationName:SKBookmarkWillBeRemovedNotification object:self];
+ [child setParent:nil];
+ [children removeObject:child];
+ [[NSNotificationCenter defaultCenter]
postNotificationName:SKBookmarkChangedNotification object:self];
+}
+
+- (BOOL)isDescendantOf:(SKBookmark *)bookmark {
+ if (self == bookmark)
+ return YES;
+ NSEnumerator *childEnum = [[bookmark children] objectEnumerator];
+ SKBookmark *child;
+ while (child = [childEnum nextObject]) {
+ if ([self isDescendantOf:child])
+ return YES;
+ }
+ return NO;
+}
+
+- (BOOL)isDescendantOfArray:(NSArray *)bookmarks {
+ NSEnumerator *bmEnum = [bookmarks objectEnumerator];
+ SKBookmark *bm = nil;
+ while (bm = [bmEnum nextObject]) {
+ if ([self isDescendantOf:bm]) return YES;
+ }
+ return NO;
+}
+
[EMAIL PROTECTED]
Modified: trunk/SKBookmarkController.h
===================================================================
--- trunk/SKBookmarkController.h 2007-09-15 10:28:27 UTC (rev 2924)
+++ trunk/SKBookmarkController.h 2007-09-15 12:52:53 UTC (rev 2925)
@@ -41,12 +41,6 @@
@class SKBookmarkOutlineView, SKStatusBar;
-enum {
- SKBookmarkTypeBookmark,
- SKBookmarkTypeFolder,
- SKBookmarkTypeSeparator
-};
-
@interface SKBookmarkController : NSWindowController {
IBOutlet SKBookmarkOutlineView *outlineView;
IBOutlet SKStatusBar *statusBar;
@@ -54,6 +48,7 @@
NSMutableArray *recentDocuments;
NSUndoManager *undoManager;
NSArray *draggedBookmarks;
+ NSMutableDictionary *toolbarItems;
}
+ (id)sharedBookmarkController;
@@ -75,6 +70,8 @@
- (IBAction)doubleClickBookmark:(id)sender;
- (IBAction)insertBookmarkFolder:(id)sender;
- (IBAction)insertBookmarkSeparator:(id)sender;
+- (IBAction)deleteBookmark:(id)sender;
+- (IBAction)toggleStatusBar:(id)sender;
- (NSArray *)recentDocuments;
- (void)addRecentDocumentForPath:(NSString *)path
pageIndex:(unsigned)pageIndex snapshots:(NSArray *)setups;
@@ -83,49 +80,8 @@
- (NSUndoManager *)undoManager;
[EMAIL PROTECTED]
+- (void)setupToolbar;
-
[EMAIL PROTECTED] SKBookmark : NSObject <NSCopying> {
- NSString *path;
- NSData *aliasData;
- NSString *label;
- unsigned int pageIndex;
- NSMutableArray *children;
- SKBookmark *parent;
- int bookmarkType;
-}
-
-- (id)initWithPath:(NSString *)aPath aliasData:(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;
-- (id)initSeparator;
-- (id)initWithDictionary:(NSDictionary *)dictionary;
-
-- (NSDictionary *)dictionaryValue;
-
-- (int)bookmarkType;
-
-- (NSString *)path;
-- (NSData *)aliasData;
-- (NSString *)resolvedPath;
-- (NSImage *)icon;
-- (unsigned int)pageIndex;
-- (NSNumber *)pageNumber;
-- (NSString *)label;
-- (void)setLabel:(NSString *)newLabel;
-
-- (SKBookmark *)parent;
-- (void)setParent:(SKBookmark *)newParent;
-- (NSArray *)children;
-- (void)insertChild:(SKBookmark *)child atIndex:(unsigned int)index;
-- (void)addChild:(SKBookmark *)child;
-- (void)removeChild:(SKBookmark *)child;
-
-- (BOOL)isDescendantOf:(SKBookmark *)bookmark;
-- (BOOL)isDescendantOfArray:(NSArray *)bookmarks;
-
@end
Modified: trunk/SKBookmarkController.m
===================================================================
--- trunk/SKBookmarkController.m 2007-09-15 10:28:27 UTC (rev 2924)
+++ trunk/SKBookmarkController.m 2007-09-15 12:52:53 UTC (rev 2925)
@@ -37,6 +37,7 @@
*/
#import "SKBookmarkController.h"
+#import "SKBookmark.h"
#import "BDAlias.h"
#import "SKDocument.h"
#import "SKMainWindowController.h"
@@ -45,11 +46,16 @@
#import "SKTypeSelectHelper.h"
#import "SKStatusBar.h"
#import "SKTextWithIconCell.h"
+#import "SKToolbarItem.h"
+#import "NSImage_SKExtensions.h"
static NSString *SKBookmarkRowsPboardType = @"SKBookmarkRowsPboardType";
-static NSString *SKBookmarkChangedNotification =
@"SKBookmarkChangedNotification";
-static NSString *SKBookmarkWillBeRemovedNotification =
@"SKBookmarkWillBeRemovedNotification";
+static NSString *SKBookmarksToolbarIdentifier =
@"SKBookmarksToolbarIdentifier";
+static NSString *SKBookmarksNewFolderToolbarItemIdentifier =
@"SKBookmarksNewFolderToolbarItemIdentifier";
+static NSString *SKBookmarksNewSeparatorToolbarItemIdentifier =
@"SKBookmarksNewSeparatorToolbarItemIdentifier";
+static NSString *SKBookmarksDeleteToolbarItemIdentifier =
@"SKBookmarksDeleteToolbarItemIdentifier";
+
@implementation SKBookmarkController
static unsigned int maxRecentDocumentsCount = 0;
@@ -113,14 +119,22 @@
[bookmarks release];
[recentDocuments release];
[draggedBookmarks release];
+ [toolbarItems release];
+ [statusBar release];
[super dealloc];
}
- (NSString *)windowNibName { return @"BookmarksWindow"; }
- (void)windowDidLoad {
+ [self setupToolbar];
+
[self setWindowFrameAutosaveName:@"SKBookmarksWindow"];
+ [statusBar retain];
+ if ([[NSUserDefaults standardUserDefaults]
boolForKey:@"SKShowBookmarkStatusBar"] == NO)
+ [self toggleStatusBar:nil];
+
SKTypeSelectHelper *typeSelectHelper = [[[SKTypeSelectHelper alloc] init]
autorelease];
[typeSelectHelper setDataSource:self];
[outlineView setTypeSelectHelper:typeSelectHelper];
@@ -130,6 +144,21 @@
[outlineView setDoubleAction:@selector(doubleClickBookmark:)];
}
+- (void)updateStatus {
+ int row = [outlineView selectedRow];
+ NSString *message = @"";
+ if (row != -1) {
+ SKBookmark *bookmark = [outlineView itemAtRow:row];
+ if ([bookmark bookmarkType] == SKBookmarkTypeBookmark) {
+ message = [bookmark resolvedPath];
+ } else if ([bookmark bookmarkType] == SKBookmarkTypeFolder) {
+ int count = [[bookmark children] count];
+ message = count == 1 ? NSLocalizedString(@"1 item", @"Status
message") : [NSString stringWithFormat:NSLocalizedString(@"%i items", @"Status
message"), count];
+ }
+ }
+ [statusBar setLeftStringValue:message];
+}
+
#pragma mark Bookmarks
- (NSArray *)bookmarks {
@@ -398,6 +427,15 @@
[outlineView selectRowIndexes:[NSIndexSet indexSetWithIndex:row]
byExtendingSelection:NO];
}
+- (IBAction)deleteBookmark:(id)sender {
+ [outlineView delete:sender];
+}
+
+- (IBAction)toggleStatusBar:(id)sender {
+ [statusBar toggleBelowView:[outlineView enclosingScrollView] offset:1.0];
+ [[NSUserDefaults standardUserDefaults] setBool:[statusBar isVisible]
forKey:@"SKShowBookmarkStatusBar"];
+}
+
#pragma mark Undo support
- (NSUndoManager *)undoManager {
@@ -516,6 +554,10 @@
return nil;
}
+- (void)outlineViewSelectionDidChange:(NSNotification *)notification {
+ [self updateStatus];
+}
+
- (void)outlineView:(NSOutlineView *)ov deleteItems:(NSArray *)items {
NSEnumerator *itemEnum = [[self minimumCoverForBookmarks:items]
reverseObjectEnumerator];
SKBookmark *item;
@@ -557,241 +599,108 @@
}
- (void)typeSelectHelper:(SKTypeSelectHelper *)typeSelectHelper
updateSearchString:(NSString *)searchString {
- NSString *message = @"";
if (searchString)
- message = [NSString stringWithFormat:NSLocalizedString(@"Finding:
\"[EMAIL PROTECTED]"", @"Status message"), searchString];
- [statusBar setLeftStringValue:message];
+ [statusBar setLeftStringValue:[NSString
stringWithFormat:NSLocalizedString(@"Finding: \"[EMAIL PROTECTED]"", @"Status
message"), searchString]];
+ else
+ [self updateStatus];
}
[EMAIL PROTECTED]
+#pragma mark Toolbar
-#pragma mark -
-
[EMAIL PROTECTED] SKBookmark
-
-+ (NSImage *)smallImageForFile:(NSString *)filePath {
- static NSMutableDictionary *smallIcons = nil;
- if (smallIcons == nil)
- smallIcons = [[NSMutableDictionary alloc] init];
+- (void)setupToolbar {
+ // Create a new toolbar instance, and attach it to our document window
+ NSToolbar *toolbar = [[[NSToolbar alloc]
initWithIdentifier:SKBookmarksToolbarIdentifier] autorelease];
+ SKToolbarItem *item;
- NSString *extension = [filePath pathExtension];
- NSImage *icon = [smallIcons objectForKey:extension];
+ toolbarItems = [[NSMutableDictionary alloc] initWithCapacity:3];
- if (icon == nil) {
- NSImage *image = [[NSWorkspace sharedWorkspace]
iconForFileType:extension];
- NSRect sourceRect = {NSZeroPoint, [image size]};
- NSRect targetRect = NSMakeRect(0.0, 0.0, 16.0, 16.0);
- icon = [[NSImage alloc] initWithSize:targetRect.size];
- [icon lockFocus];
- [[NSGraphicsContext currentContext]
setImageInterpolation:NSImageInterpolationHigh];
- [image drawInRect:targetRect fromRect:sourceRect
operation:NSCompositeCopy fraction:1.0];
- [icon unlockFocus];
- [smallIcons setObject:icon forKey:extension];
- [icon release];
- }
- return icon;
+ // Set up toolbar properties: Allow customization, give a default display
mode, and remember state in user defaults
+ [toolbar setAllowsUserCustomization: YES];
+ [toolbar setAutosavesConfiguration: YES];
+ [toolbar setDisplayMode: NSToolbarDisplayModeDefault];
+
+ // We are the delegate
+ [toolbar setDelegate: self];
+
+ // Add template toolbar items
+
+ item = [[SKToolbarItem alloc]
initWithItemIdentifier:SKBookmarksNewFolderToolbarItemIdentifier];
+ [item setLabels:NSLocalizedString(@"New Folder", @"Toolbar item label")];
+ [item setToolTip:NSLocalizedString(@"Add a New Folder", @"Tool tip
message")];
+ [item setImageNamed:@"ToolbarNewFolder"];
+ [item setTarget:self];
+ [item setAction:@selector(insertBookmarkFolder:)];
+ [toolbarItems setObject:item
forKey:SKBookmarksNewFolderToolbarItemIdentifier];
+ [item release];
+
+ item = [[SKToolbarItem alloc]
initWithItemIdentifier:SKBookmarksNewSeparatorToolbarItemIdentifier];
+ [item setLabels:NSLocalizedString(@"New Separator", @"Toolbar item
label")];
+ [item setToolTip:NSLocalizedString(@"Add a New Separator", @"Tool tip
message")];
+ [item setImageNamed:@"ToolbarNewSeparator"];
+ [item setTarget:self];
+ [item setAction:@selector(insertBookmarkSeparator:)];
+ [toolbarItems setObject:item
forKey:SKBookmarksNewSeparatorToolbarItemIdentifier];
+ [item release];
+
+ item = [[SKToolbarItem alloc]
initWithItemIdentifier:SKBookmarksDeleteToolbarItemIdentifier];
+ [item setLabels:NSLocalizedString(@"Delete", @"Toolbar item label")];
+ [item setToolTip:NSLocalizedString(@"Delete Selected Items", @"Tool tip
message")];
+ [item setImage:[NSImage imageWithIconForToolboxCode:kToolbarDeleteIcon]];
+ [item setTarget:self];
+ [item setAction:@selector(deleteBookmark:)];
+ [toolbarItems setObject:item
forKey:SKBookmarksDeleteToolbarItemIdentifier];
+ [item release];
+
+ // Attach the toolbar to the window
+ [[self window] setToolbar:toolbar];
}
-- (id)initWithPath:(NSString *)aPath aliasData:(NSData *)aData
pageIndex:(unsigned)aPageIndex label:(NSString *)aLabel {
- if (self = [super init]) {
- bookmarkType = SKBookmarkTypeBookmark;
- path = [aPath copy];
- aliasData = [aData copy];
- pageIndex = aPageIndex;
- label = [aLabel copy];
- children = nil;
- }
- return self;
-}
+- (NSToolbarItem *) toolbar:(NSToolbar *)toolbar
itemForItemIdentifier:(NSString *)itemIdent willBeInsertedIntoToolbar:(BOOL)
willBeInserted {
-- (id)initWithPath:(NSString *)aPath pageIndex:(unsigned)aPageIndex
label:(NSString *)aLabel {
- return [self initWithPath:aPath aliasData:[[BDAlias aliasWithPath:aPath]
aliasData] pageIndex:aPageIndex label:aLabel];
+ NSToolbarItem *item = [toolbarItems objectForKey:itemIdent];
+ NSToolbarItem *newItem = [[item copy] autorelease];
+ return newItem;
}
-- (id)initFolderWithChildren:(NSArray *)aChildren label:(NSString *)aLabel {
- if (self = [super init]) {
- bookmarkType = SKBookmarkTypeFolder;
- path = nil;
- aliasData = nil;
- pageIndex = NSNotFound;
- label = [aLabel copy];
- children = [aChildren mutableCopy];
- [children makeObjectsPerformSelector:@selector(setParent:)
withObject:self];
- }
- return self;
+- (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar {
+ return [NSArray arrayWithObjects:
+ SKBookmarksNewFolderToolbarItemIdentifier,
+ SKBookmarksNewSeparatorToolbarItemIdentifier,
+ SKBookmarksDeleteToolbarItemIdentifier, nil];
}
-- (id)initFolderWithLabel:(NSString *)aLabel {
- return [self initFolderWithChildren:[NSArray array] label:aLabel];
+- (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar {
+ return [NSArray arrayWithObjects:
+ SKBookmarksNewFolderToolbarItemIdentifier,
+ SKBookmarksNewSeparatorToolbarItemIdentifier,
+ SKBookmarksDeleteToolbarItemIdentifier,
+ NSToolbarFlexibleSpaceItemIdentifier,
+ NSToolbarSpaceItemIdentifier,
+ NSToolbarSeparatorItemIdentifier,
+ NSToolbarCustomizeToolbarItemIdentifier, nil];
}
-- (id)initSeparator {
- if (self = [super init]) {
- bookmarkType = SKBookmarkTypeSeparator;
- path = nil;
- aliasData = nil;
- pageIndex = NSNotFound;
- label = nil;
- children = nil;
- }
- return self;
-}
-
-- (id)initWithDictionary:(NSDictionary *)dictionary {
- if ([[dictionary objectForKey:@"type"] isEqualToString:@"folder"]) {
- NSEnumerator *dictEnum = [[dictionary objectForKey:@"children"]
objectEnumerator];
- NSDictionary *dict;
- NSMutableArray *newChildren = [NSMutableArray array];
- while (dict = [dictEnum nextObject])
- [newChildren addObject:[[[[self class] alloc]
initWithDictionary:dict] autorelease]];
- return [self initFolderWithChildren:newChildren label:[dictionary
objectForKey:@"label"]];
- } else if ([[dictionary objectForKey:@"type"]
isEqualToString:@"separator"]) {
- return [self initSeparator];
+- (BOOL)validateToolbarItem:(NSToolbarItem *)toolbarItem {
+ NSString *identifier = [toolbarItem itemIdentifier];
+ if ([identifier isEqualToString:SKBookmarksDeleteToolbarItemIdentifier]) {
+ return [outlineView canDelete];
} else {
- return [self initWithPath:[dictionary objectForKey:@"path"]
aliasData:[dictionary objectForKey:@"_BDAlias"] pageIndex:[[dictionary
objectForKey:@"pageIndex"] unsignedIntValue] label:[dictionary
objectForKey:@"label"]];
+ return YES;
}
}
-- (id)copyWithZone:(NSZone *)aZone {
- if (bookmarkType == SKBookmarkTypeFolder)
- return [[[self class] allocWithZone:aZone]
initFolderWithChildren:[[[NSArray alloc] initWithArray:children copyItems:YES]
autorelease] label:label];
- else if (bookmarkType == SKBookmarkTypeSeparator)
- return [[[self class] allocWithZone:aZone] initSeparator];
- else
- return [[[self class] allocWithZone:aZone] initWithPath:path
aliasData:aliasData pageIndex:pageIndex label:label];
-}
-
-- (void)dealloc {
- [[[SKBookmarkController sharedBookmarkController] undoManager]
removeAllActionsWithTarget:self];
- [path release];
- [aliasData release];
- [label release];
- [children release];
- [super dealloc];
-}
-
-- (NSString *)description {
- if (bookmarkType == SKBookmarkTypeFolder)
- return [NSString stringWithFormat:@"<%@: label=%@, children=%@>",
[self class], label, children];
- else if (bookmarkType == SKBookmarkTypeSeparator)
- return [NSString stringWithFormat:@"<%@: separator>", [self class]];
- else
- return [NSString stringWithFormat:@"<%@: label=%@, path=%@, page=%i>",
[self class], label, path, pageIndex];
-}
-
-- (NSDictionary *)dictionaryValue {
- if (bookmarkType == SKBookmarkTypeFolder)
- return [NSDictionary dictionaryWithObjectsAndKeys:@"folder", @"type",
[children valueForKey:@"dictionaryValue"], @"children", label, @"label", nil];
- else if (bookmarkType == SKBookmarkTypeSeparator)
- return [NSDictionary dictionaryWithObjectsAndKeys:@"separator",
@"type", nil];
- else
- return [NSDictionary dictionaryWithObjectsAndKeys:@"bookmark",
@"type", path, @"path", aliasData, @"_BDAlias", [NSNumber
numberWithUnsignedInt:pageIndex], @"pageIndex", label, @"label", nil];
-}
-
-- (int)bookmarkType {
- return bookmarkType;
-}
-
-- (NSString *)path {
- return [[path retain] autorelease];
-}
-
-- (NSData *)aliasData {
- return aliasData;
-}
-
-- (NSString *)resolvedPath {
- NSString *resolvedPath = [[BDAlias aliasWithData:aliasData] fullPathNoUI];
- if (resolvedPath == nil)
- resolvedPath = path;
- return resolvedPath;
-}
-
-- (NSImage *)icon {
- if ([self bookmarkType] == SKBookmarkTypeFolder)
- return [NSImage imageNamed:@"SmallFolder"];
- else if (bookmarkType == SKBookmarkTypeSeparator)
- return nil;
- else
- return [[self class] smallImageForFile:[self resolvedPath]];
-}
-
-- (unsigned int)pageIndex {
- return pageIndex;
-}
-
-- (NSNumber *)pageNumber {
- return pageIndex == NSNotFound ? nil : [NSNumber
numberWithUnsignedInt:pageIndex + 1];
-}
-
-- (NSString *)label {
- return label;
-}
-
-- (void)setLabel:(NSString *)newLabel {
- if (label != newLabel) {
- NSUndoManager *undoManager = [[SKBookmarkController
sharedBookmarkController] undoManager];
- [(SKBookmark *)[undoManager prepareWithInvocationTarget:self]
setLabel:label];
- [label release];
- label = [newLabel retain];
- [[NSNotificationCenter defaultCenter]
postNotificationName:SKBookmarkChangedNotification object:self];
- }
-}
-
-- (SKBookmark *)parent {
- return parent;
-}
-
-- (void)setParent:(SKBookmark *)newParent {
- parent = newParent;
-}
-
-- (NSArray *)children {
- return children;
-}
-
-- (void)insertChild:(SKBookmark *)child atIndex:(unsigned int)index {
- NSUndoManager *undoManager = [[SKBookmarkController
sharedBookmarkController] undoManager];
- [(SKBookmark *)[undoManager prepareWithInvocationTarget:self]
removeChild:child];
- [children insertObject:child atIndex:index];
- [child setParent:self];
- [[NSNotificationCenter defaultCenter]
postNotificationName:SKBookmarkChangedNotification object:self];
-}
-
-- (void)addChild:(SKBookmark *)child {
- [self insertChild:child atIndex:[children count]];
-}
-
-- (void)removeChild:(SKBookmark *)child {
- NSUndoManager *undoManager = [[SKBookmarkController
sharedBookmarkController] undoManager];
- [(SKBookmark *)[undoManager prepareWithInvocationTarget:self]
insertChild:child atIndex:[[self children] indexOfObject:child]];
- [[NSNotificationCenter defaultCenter]
postNotificationName:SKBookmarkWillBeRemovedNotification object:self];
- [child setParent:nil];
- [children removeObject:child];
- [[NSNotificationCenter defaultCenter]
postNotificationName:SKBookmarkChangedNotification object:self];
-}
-
-- (BOOL)isDescendantOf:(SKBookmark *)bookmark {
- if (self == bookmark)
+- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
+ SEL action = [menuItem action];
+ if (action == @selector(toggleStatusBar:)) {
+ if ([statusBar isVisible])
+ [menuItem setTitle:NSLocalizedString(@"Hide Status Bar", @"Menu
item title")];
+ else
+ [menuItem setTitle:NSLocalizedString(@"Show Status Bar", @"Menu
item title")];
return YES;
- NSEnumerator *childEnum = [[bookmark children] objectEnumerator];
- SKBookmark *child;
- while (child = [childEnum nextObject]) {
- if ([self isDescendantOf:child])
- return YES;
}
- return NO;
+ return YES;
}
-- (BOOL)isDescendantOfArray:(NSArray *)bookmarks {
- NSEnumerator *bmEnum = [bookmarks objectEnumerator];
- SKBookmark *bm = nil;
- while (bm = [bmEnum nextObject]) {
- if ([self isDescendantOf:bm]) return YES;
- }
- return NO;
-}
-
@end
#pragma mark -
Modified: trunk/Skim.xcodeproj/project.pbxproj
===================================================================
--- trunk/Skim.xcodeproj/project.pbxproj 2007-09-15 10:28:27 UTC (rev
2924)
+++ trunk/Skim.xcodeproj/project.pbxproj 2007-09-15 12:52:53 UTC (rev
2925)
@@ -172,6 +172,10 @@
CEAFFD9D0C40F2A800C3ECBB /* ToolbarLines.tiff in Resources */ =
{isa = PBXBuildFile; fileRef = CEAFFD9C0C40F2A800C3ECBB /* ToolbarLines.tiff
*/; };
CEB7359C0C4A8C1C000350F9 /* TransitionMask.jpg in Resources */
= {isa = PBXBuildFile; fileRef = CEB7359A0C4A8C1B000350F9 /* TransitionMask.jpg
*/; };
CEB735A20C4A8CD6000350F9 /* TransitionShading.tiff in Resources
*/ = {isa = PBXBuildFile; fileRef = CEB735A10C4A8CD6000350F9 /*
TransitionShading.tiff */; };
+ CEBD51D70C9BF68100FBF6A4 /* ToolbarNewFolder.tiff in Resources
*/ = {isa = PBXBuildFile; fileRef = CEBD51D50C9BF68100FBF6A4 /*
ToolbarNewFolder.tiff */; };
+ CEBD51D80C9BF68100FBF6A4 /* ToolbarNewSeparator.tiff in
Resources */ = {isa = PBXBuildFile; fileRef = CEBD51D60C9BF68100FBF6A4 /*
ToolbarNewSeparator.tiff */; };
+ CEBD52EC0C9C0AE500FBF6A4 /* SKBookmark.h in CopyFiles */ = {isa
= PBXBuildFile; fileRef = CEBD52EA0C9C0AE500FBF6A4 /* SKBookmark.h */; };
+ CEBD52ED0C9C0AE500FBF6A4 /* SKBookmark.m in Sources */ = {isa =
PBXBuildFile; fileRef = CEBD52EB0C9C0AE500FBF6A4 /* SKBookmark.m */; };
CECDC4FF0C5966A80026AAEC /* NSImage_SKExtensions.m in Sources
*/ = {isa = PBXBuildFile; fileRef = CECDC4FD0C5966A80026AAEC /*
NSImage_SKExtensions.m */; };
CECDD2990C5B68580026AAEC /* SKCenteredTextFieldCell.m in
Sources */ = {isa = PBXBuildFile; fileRef = CECDD2970C5B68580026AAEC /*
SKCenteredTextFieldCell.m */; };
CECDDBAE0C5BB9600026AAEC /* SKFindTableView.m in Sources */ =
{isa = PBXBuildFile; fileRef = CECDDBAC0C5BB95F0026AAEC /* SKFindTableView.m
*/; };
@@ -269,6 +273,7 @@
files = (
CE2BD8450BD4135600A5F4DB /* Sparkle.framework
in CopyFiles */,
CEA1D6E90C9984400061A6D4 /*
SKTextWithIconCell.h in CopyFiles */,
+ CEBD52EC0C9C0AE500FBF6A4 /* SKBookmark.h in
CopyFiles */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -571,6 +576,10 @@
CEB72B890C4A189D000350F9 /* SKTransitionController.h */ = {isa
= PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path
= SKTransitionController.h; sourceTree = "<group>"; };
CEB7359A0C4A8C1B000350F9 /* TransitionMask.jpg */ = {isa =
PBXFileReference; lastKnownFileType = image.jpeg; name = TransitionMask.jpg;
path = Images/TransitionMask.jpg; sourceTree = "<group>"; };
CEB735A10C4A8CD6000350F9 /* TransitionShading.tiff */ = {isa =
PBXFileReference; lastKnownFileType = image.tiff; name =
TransitionShading.tiff; path = Images/TransitionShading.tiff; sourceTree =
"<group>"; };
+ CEBD51D50C9BF68100FBF6A4 /* ToolbarNewFolder.tiff */ = {isa =
PBXFileReference; lastKnownFileType = image.tiff; name = ToolbarNewFolder.tiff;
path = Images/ToolbarNewFolder.tiff; sourceTree = "<group>"; };
+ CEBD51D60C9BF68100FBF6A4 /* ToolbarNewSeparator.tiff */ = {isa
= PBXFileReference; lastKnownFileType = image.tiff; name =
ToolbarNewSeparator.tiff; path = Images/ToolbarNewSeparator.tiff; sourceTree =
"<group>"; };
+ CEBD52EA0C9C0AE500FBF6A4 /* SKBookmark.h */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path =
SKBookmark.h; sourceTree = "<group>"; };
+ CEBD52EB0C9C0AE500FBF6A4 /* SKBookmark.m */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path
= SKBookmark.m; sourceTree = "<group>"; };
CECD97200C57A3230026AAEC /* French */ = {isa =
PBXFileReference; lastKnownFileType = wrapper.nib; name = French; path =
French.lproj/InfoWindow.nib; sourceTree = "<group>"; };
CECD97230C57A32F0026AAEC /* French */ = {isa =
PBXFileReference; lastKnownFileType = wrapper.nib; name = French; path =
French.lproj/MainMenu.nib; sourceTree = "<group>"; };
CECD97260C57A3390026AAEC /* French */ = {isa =
PBXFileReference; lastKnownFileType = wrapper.nib; name = French; path =
French.lproj/MainWindow.nib; sourceTree = "<group>"; };
@@ -1000,6 +1009,8 @@
children = (
CE3A3D2A0B78C0A0006B64D3 /*
SKPDFAnnotationNote.h */,
CE3A3D2B0B78C0A0006B64D3 /*
SKPDFAnnotationNote.m */,
+ CEBD52EA0C9C0AE500FBF6A4 /* SKBookmark.h */,
+ CEBD52EB0C9C0AE500FBF6A4 /* SKBookmark.m */,
CEAF2E570C45414100C3ECBB /* SKLine.h */,
CEAF2E580C45414100C3ECBB /* SKLine.m */,
CE4294A10BBD29120016FDC2 /* SKReadingBar.h */,
@@ -1086,6 +1097,8 @@
CE5478C70B33456300F8AFB6 /*
ToolbarZoomToFit.tiff */,
CEB7359A0C4A8C1B000350F9 /* TransitionMask.jpg
*/,
CEB735A10C4A8CD6000350F9 /*
TransitionShading.tiff */,
+ CEBD51D60C9BF68100FBF6A4 /*
ToolbarNewSeparator.tiff */,
+ CEBD51D50C9BF68100FBF6A4 /*
ToolbarNewFolder.tiff */,
CE380A7A0B834E6100A1B779 /* CameraCursor.tiff
*/,
CE2082DF0C5E09DC009D3EFB /*
ResizeLeftDownCursor.tiff */,
CE2082E00C5E09DC009D3EFB /*
ResizeLeftUpCursor.tiff */,
@@ -1311,6 +1324,8 @@
CEF84C630C78A89A00A3AD51 /*
SmallPreferences.tiff in Resources */,
CE898F060C843A8B008A0856 /* PDFDDocument.icns
in Resources */,
CEA1D7810C99953C0061A6D4 /* SmallFolder.tiff in
Resources */,
+ CEBD51D70C9BF68100FBF6A4 /*
ToolbarNewFolder.tiff in Resources */,
+ CEBD51D80C9BF68100FBF6A4 /*
ToolbarNewSeparator.tiff in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1528,6 +1543,7 @@
CE5FA1680C909886008BE480 /* SKFDFParser.m in
Sources */,
CEA182280C92E3300061A6D4 /*
NSData_SKExtensions.m in Sources */,
CEA1D6EA0C9984400061A6D4 /*
SKTextWithIconCell.m in Sources */,
+ CEBD52ED0C9C0AE500FBF6A4 /* SKBookmark.m in
Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
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/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit