You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
(23) |
Apr
(254) |
May
(252) |
Jun
(209) |
Jul
(198) |
Aug
(192) |
Sep
(207) |
Oct
(120) |
Nov
(179) |
Dec
(52) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(48) |
Feb
(69) |
Mar
(129) |
Apr
(250) |
May
(113) |
Jun
(177) |
Jul
(228) |
Aug
(155) |
Sep
(218) |
Oct
(185) |
Nov
(109) |
Dec
(88) |
2009 |
Jan
(83) |
Feb
(39) |
Mar
(70) |
Apr
(47) |
May
(48) |
Jun
(67) |
Jul
(61) |
Aug
(97) |
Sep
(221) |
Oct
(141) |
Nov
(70) |
Dec
(61) |
2010 |
Jan
(45) |
Feb
(76) |
Mar
(178) |
Apr
(106) |
May
(57) |
Jun
(32) |
Jul
(64) |
Aug
(98) |
Sep
(96) |
Oct
(19) |
Nov
(34) |
Dec
(117) |
2011 |
Jan
(55) |
Feb
(48) |
Mar
(64) |
Apr
(21) |
May
(39) |
Jun
(53) |
Jul
(99) |
Aug
(56) |
Sep
(39) |
Oct
(26) |
Nov
(19) |
Dec
(69) |
2012 |
Jan
(17) |
Feb
(40) |
Mar
(17) |
Apr
|
May
(2) |
Jun
(8) |
Jul
(2) |
Aug
(10) |
Sep
(10) |
Oct
(38) |
Nov
(48) |
Dec
(70) |
2013 |
Jan
(43) |
Feb
(47) |
Mar
(39) |
Apr
(37) |
May
(25) |
Jun
(6) |
Jul
(20) |
Aug
(49) |
Sep
(33) |
Oct
(34) |
Nov
(75) |
Dec
(6) |
2014 |
Jan
(32) |
Feb
(10) |
Mar
(17) |
Apr
|
May
|
Jun
(26) |
Jul
(5) |
Aug
|
Sep
(4) |
Oct
(23) |
Nov
(80) |
Dec
(48) |
2015 |
Jan
(80) |
Feb
(50) |
Mar
(58) |
Apr
(20) |
May
(11) |
Jun
(16) |
Jul
(24) |
Aug
(27) |
Sep
(56) |
Oct
(30) |
Nov
(16) |
Dec
(6) |
2016 |
Jan
(31) |
Feb
(14) |
Mar
(23) |
Apr
(17) |
May
(40) |
Jun
(12) |
Jul
(17) |
Aug
(9) |
Sep
(32) |
Oct
(36) |
Nov
(23) |
Dec
(9) |
2017 |
Jan
(37) |
Feb
(23) |
Mar
(65) |
Apr
(22) |
May
(6) |
Jun
(3) |
Jul
|
Aug
|
Sep
(3) |
Oct
(22) |
Nov
(63) |
Dec
(71) |
2018 |
Jan
(83) |
Feb
(21) |
Mar
(35) |
Apr
(44) |
May
(14) |
Jun
(12) |
Jul
(8) |
Aug
(18) |
Sep
(10) |
Oct
(145) |
Nov
(144) |
Dec
(76) |
2019 |
Jan
(18) |
Feb
(28) |
Mar
(5) |
Apr
(208) |
May
(291) |
Jun
(158) |
Jul
(27) |
Aug
(8) |
Sep
(10) |
Oct
(83) |
Nov
(41) |
Dec
(31) |
2020 |
Jan
(16) |
Feb
(46) |
Mar
(100) |
Apr
(78) |
May
(69) |
Jun
(71) |
Jul
(28) |
Aug
(131) |
Sep
(176) |
Oct
(89) |
Nov
(147) |
Dec
(19) |
2021 |
Jan
(19) |
Feb
(25) |
Mar
(91) |
Apr
(98) |
May
(14) |
Jun
(44) |
Jul
(8) |
Aug
(3) |
Sep
(38) |
Oct
(57) |
Nov
(97) |
Dec
(74) |
2022 |
Jan
(89) |
Feb
(47) |
Mar
(15) |
Apr
(50) |
May
(54) |
Jun
(56) |
Jul
(80) |
Aug
(12) |
Sep
(11) |
Oct
(60) |
Nov
(48) |
Dec
(4) |
2023 |
Jan
(75) |
Feb
(49) |
Mar
(84) |
Apr
(24) |
May
(13) |
Jun
(74) |
Jul
(32) |
Aug
(66) |
Sep
(50) |
Oct
(38) |
Nov
(105) |
Dec
(181) |
2024 |
Jan
(21) |
Feb
(49) |
Mar
(77) |
Apr
(84) |
May
(20) |
Jun
(71) |
Jul
(53) |
Aug
(33) |
Sep
(54) |
Oct
(124) |
Nov
(151) |
Dec
(73) |
2025 |
Jan
(61) |
Feb
(17) |
Mar
(136) |
Apr
(72) |
May
(200) |
Jun
(238) |
Jul
(91) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <ho...@us...> - 2007-04-18 15:07:28
|
Revision: 1850 http://skim-app.svn.sourceforge.net/skim-app/?rev=1850&view=rev Author: hofman Date: 2007-04-18 08:07:26 -0700 (Wed, 18 Apr 2007) Log Message: ----------- Show hover window after a delay using a timer. (second attempt) Modified Paths: -------------- trunk/SKPDFHoverWindow.m Modified: trunk/SKPDFHoverWindow.m =================================================================== --- trunk/SKPDFHoverWindow.m 2007-04-18 14:52:53 UTC (rev 1849) +++ trunk/SKPDFHoverWindow.m 2007-04-18 15:07:26 UTC (rev 1850) @@ -110,17 +110,25 @@ [self orderOut:self]; } +- (void)stopTimer { + [timer invalidate]; + [timer release]; + timer = nil; +} + - (BOOL)canBecomeKeyWindow { return NO; } - (BOOL)canBecomeMainWindow { return NO; } - (void)orderFront:(id)sender { + [self stopTimer]; [animation stopAnimation]; [self setAlphaValue:1.0]; [super orderFront:sender]; } - (void)orderOut:(id)sender { + [self stopTimer]; [animation stopAnimation]; [self setAlphaValue:1.0]; [annotation release]; @@ -143,11 +151,37 @@ return [self frameRectForContentRect:rect]; } +- (void)fadeIn:(NSTimer *)aTimer { + [self stopTimer]; + + NSDictionary *fadeInDict = [[NSDictionary alloc] initWithObjectsAndKeys:self, NSViewAnimationTargetKey, NSViewAnimationFadeInEffect, NSViewAnimationEffectKey, nil]; + + animation = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObjects:fadeInDict, nil]]; + [fadeInDict release]; + + [self setAlphaValue:0.0]; + [super orderFront:self]; + + [animation setAnimationBlockingMode:NSAnimationNonblocking]; + [animation setDuration:0.3]; + [animation setDelegate:self]; + [animation startAnimation]; +} + - (void)showForAnnotation:(PDFAnnotation *)note atPoint:(NSPoint)point { - - if ([note isEqual:annotation]) + if ([note isEqual:annotation]) { + if (timer) { + NSRect contentRect = [self contentRectForFrameRect:[self frame]]; + contentRect.origin.x = point.x; + contentRect.origin.y = point.y - NSHeight(contentRect) - WINDOW_OFFSET; + [self setFrame:[self hoverWindowRectFittingScreenFromRect:contentRect] display:NO]; + // Should we reset the timer? + } return; + } + [self stopTimer]; + [annotation release]; annotation = [note retain]; @@ -239,21 +273,15 @@ [[imageView enclosingScrollView] setBackgroundColor:color]; - if ([self isVisible] == NO || [self alphaValue] < 0.9) { + if (animation) { [animation stopAnimation]; - - NSDictionary *fadeInDict = [[NSDictionary alloc] initWithObjectsAndKeys:self, NSViewAnimationTargetKey, NSViewAnimationFadeInEffect, NSViewAnimationEffectKey, nil]; - - animation = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObjects:fadeInDict, nil]]; - [fadeInDict release]; - - [self setAlphaValue:0.0]; - [super orderFront:self]; - - [animation setAnimationBlockingMode:NSAnimationNonblocking]; - [animation setDuration:0.5]; - [animation setDelegate:self]; - [animation startAnimation]; + if ([self alphaValue] > 0.9) + [self orderFront:self]; + else + [self fadeIn:nil]; + } else if ([self isVisible] == NO) { + [super orderOut:self]; + timer = [[NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(fadeIn:) userInfo:NULL repeats:NO] retain]; } else { [self orderFront:self]; } @@ -269,6 +297,7 @@ if (annotation == nil) return; + [self stopTimer]; [animation stopAnimation]; [annotation release]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-04-18 14:52:59
|
Revision: 1849 http://skim-app.svn.sourceforge.net/skim-app/?rev=1849&view=rev Author: hofman Date: 2007-04-18 07:52:53 -0700 (Wed, 18 Apr 2007) Log Message: ----------- Show hover window after a delay using a timer. Modified Paths: -------------- trunk/SKPDFHoverWindow.h Modified: trunk/SKPDFHoverWindow.h =================================================================== --- trunk/SKPDFHoverWindow.h 2007-04-18 13:27:50 UTC (rev 1848) +++ trunk/SKPDFHoverWindow.h 2007-04-18 14:52:53 UTC (rev 1849) @@ -46,6 +46,7 @@ NSColor *backgroundColor; PDFAnnotation *annotation; NSViewAnimation *animation; + NSTimer *timer; } + (id)sharedHoverWindow; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-04-18 13:27:52
|
Revision: 1848 http://skim-app.svn.sourceforge.net/skim-app/?rev=1848&view=rev Author: hofman Date: 2007-04-18 06:27:50 -0700 (Wed, 18 Apr 2007) Log Message: ----------- Improvements for hover window. Show below cursor. Show contents if there is no attributed string. Better determination of size of text. Keep font and background color in ivars. Better fading, especially when moving from one link to another. Modified Paths: -------------- trunk/SKPDFHoverWindow.h trunk/SKPDFHoverWindow.m trunk/SKPDFView.m Modified: trunk/SKPDFHoverWindow.h =================================================================== --- trunk/SKPDFHoverWindow.h 2007-04-17 21:12:50 UTC (rev 1847) +++ trunk/SKPDFHoverWindow.h 2007-04-18 13:27:50 UTC (rev 1848) @@ -42,15 +42,23 @@ @interface SKPDFHoverWindow : NSPanel { NSImageView *imageView; + NSFont *font; + NSColor *backgroundColor; PDFAnnotation *annotation; NSViewAnimation *animation; } + (id)sharedHoverWindow; -- (void)showForAnnotation:(PDFAnnotation *)annotation atPoint:(NSPoint)point fromView:(PDFView *)srcView; +- (void)showForAnnotation:(PDFAnnotation *)annotation atPoint:(NSPoint)point; - (void)hide; - (void)handleApplicationWillResignActiveNotification:(NSNotification *)notification; +- (NSFont *)font; +- (void)setFont:(NSFont *)newFont; + +- (NSColor *)backgroundColor; +- (void)setBackgroundColor:(NSColor *)newColor; + @end Modified: trunk/SKPDFHoverWindow.m =================================================================== --- trunk/SKPDFHoverWindow.m 2007-04-17 21:12:50 UTC (rev 1847) +++ trunk/SKPDFHoverWindow.m 2007-04-18 13:27:50 UTC (rev 1848) @@ -40,6 +40,9 @@ #import "PDFPage_SKExtensions.h" #import "SKPDFAnnotationNote.h" +#define WINDOW_WIDTH 400.0 +#define WINDOW_HEIGHT 80.0 +#define WINDOW_OFFSET 25.0 @implementation SKPDFHoverWindow @@ -66,12 +69,43 @@ [scrollView release]; [imageView release]; + font = [[NSFont systemFontOfSize:11.0] retain]; + backgroundColor = [[NSColor colorWithDeviceRed:1.0 green:1.0 blue:0.6 alpha:1.0] retain]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleApplicationWillResignActiveNotification:) name:NSApplicationWillResignActiveNotification object:NSApp]; } return self; } +- (void)dealloc { + [font release]; + [backgroundColor release]; + [super dealloc]; +} + +- (NSFont *)font { + return font; +} + +- (void)setFont:(NSFont *)newFont { + if (font != newFont) { + [font release]; + font = [newFont retain]; + } +} + +- (NSColor *)backgroundColor { + return backgroundColor; +} + +- (void)setBackgroundColor:(NSColor *)newColor { + if (backgroundColor != newColor) { + [backgroundColor release]; + backgroundColor = [newColor retain]; + } +} + - (void)handleApplicationWillResignActiveNotification:(NSNotification *)notification { [self orderOut:self]; } @@ -106,23 +140,22 @@ if (NSMinY(rect) < NSMinY(screenRect) + 2.0) rect.origin.y = NSMinY(screenRect) + 2.0; - return rect; + return [self frameRectForContentRect:rect]; } -- (void)showForAnnotation:(PDFAnnotation *)note atPoint:(NSPoint)point fromView:(PDFView *)srcView{ +- (void)showForAnnotation:(PDFAnnotation *)note atPoint:(NSPoint)point { if ([note isEqual:annotation]) return; - BOOL wasHidden = annotation == nil; - [annotation release]; annotation = [note retain]; - NSRect rect, contentRect = [self hoverWindowRectFittingScreenFromRect:NSMakeRect(point.x, point.y + fmin(NSHeight([annotation bounds]) + 3.0, 16.0), 400.0, 80.0)]; + NSRect rect, contentRect = NSMakeRect(point.x, point.y - WINDOW_OFFSET, WINDOW_WIDTH, WINDOW_HEIGHT); NSImage *image = nil; NSAttributedString *text = nil; - NSColor *color = [NSColor controlBackgroundColor]; + NSString *string = nil; + NSColor *color = nil; if ([[annotation type] isEqualToString:@"Link"]) { @@ -150,39 +183,48 @@ } image = [[page image] retain]; + color = [NSColor controlBackgroundColor]; } else { - NSString *urlString = [[(PDFAnnotationLink *)annotation URL] absoluteString]; - NSDictionary *attrs = [NSDictionary dictionaryWithObjectsAndKeys:[NSFont systemFontOfSize:11.0], NSFontAttributeName, nil]; + string = [[(PDFAnnotationLink *)annotation URL] absoluteString]; - text = [[[NSAttributedString alloc] initWithString:urlString attributes:attrs] autorelease]; - } } else { - text = [annotation text]; + text = [[annotation text] retain]; + if ([text length] == 0) { + [text release]; + text = nil; + if ([[annotation contents] length]) + string = [annotation contents]; + } + } + if (string) { + NSDictionary *attrs = [[NSDictionary alloc] initWithObjectsAndKeys:font, NSFontAttributeName, nil]; + text = [[NSAttributedString alloc] initWithString:string attributes:attrs]; + [attrs release]; + } + if (text) { - rect = NSInsetRect([text boundingRectWithSize:contentRect.size options:NSStringDrawingUsesLineFragmentOrigin], -2.0, 0.0); - if (NSWidth(rect) < NSWidth(contentRect)) - contentRect.size.width = NSWidth(rect); - if (NSHeight(rect) < NSHeight(contentRect)) - contentRect.size.height = NSHeight(rect); - rect.size = contentRect.size; + rect = [text boundingRectWithSize:NSInsetRect(contentRect, 2.0, 0.0).size options:NSStringDrawingUsesLineFragmentOrigin]; + rect.size.width = contentRect.size.width = NSWidth(rect) + 4.0; + rect.size.height = contentRect.size.height = fmin(NSHeight(rect), NSHeight(contentRect)); rect.origin = NSZeroPoint; image = [[NSImage alloc] initWithSize:rect.size]; - color = [NSColor colorWithDeviceRed:1.0 green:1.0 blue:0.6 alpha:1.0]; + color = backgroundColor; [image lockFocus]; [text drawWithRect:NSInsetRect(rect, 2.0, 0.0) options:NSStringDrawingUsesLineFragmentOrigin]; [image unlockFocus]; + [text release]; } if (image) { @@ -191,29 +233,35 @@ [imageView setImage:image]; [image release]; - // Convert to window and expand for the border - [self setFrame:[self frameRectForContentRect:contentRect] display:NO]; + contentRect.origin.y -= NSHeight(contentRect); + [self setFrame:[self hoverWindowRectFittingScreenFromRect:contentRect] display:NO]; [imageView scrollRectToVisible:rect]; [[imageView enclosingScrollView] setBackgroundColor:color]; - if ([self isVisible] == NO) - [self setAlphaValue:0.0]; - [animation stopAnimation]; - [super orderFront:self]; - - if (wasHidden) { + if ([self isVisible] == NO || [self alphaValue] < 0.9) { + [animation stopAnimation]; + NSDictionary *fadeInDict = [[NSDictionary alloc] initWithObjectsAndKeys:self, NSViewAnimationTargetKey, NSViewAnimationFadeInEffect, NSViewAnimationEffectKey, nil]; animation = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObjects:fadeInDict, nil]]; [fadeInDict release]; + [self setAlphaValue:0.0]; + [super orderFront:self]; + [animation setAnimationBlockingMode:NSAnimationNonblocking]; [animation setDuration:0.5]; [animation setDelegate:self]; [animation startAnimation]; + } else { + [self orderFront:self]; } + } else { + + [self hide]; + } } Modified: trunk/SKPDFView.m =================================================================== --- trunk/SKPDFView.m 2007-04-17 21:12:50 UTC (rev 1847) +++ trunk/SKPDFView.m 2007-04-18 13:27:50 UTC (rev 1848) @@ -716,7 +716,7 @@ annotation = [page annotationAtPoint:[self convertPoint:p toPage:page]]; if ([[annotation type] isEqualToString:@"Link"] || [annotation text]) - [[SKPDFHoverWindow sharedHoverWindow] showForAnnotation:annotation atPoint:[[self window] convertBaseToScreen:[theEvent locationInWindow]] fromView:self]; + [[SKPDFHoverWindow sharedHoverWindow] showForAnnotation:annotation atPoint:[[self window] convertBaseToScreen:[theEvent locationInWindow]]]; else [[SKPDFHoverWindow sharedHoverWindow] hide]; @@ -1153,7 +1153,7 @@ if ([[annotation type] isEqualToString:@"Link"] || [annotation text]) { NSRect bounds = [annotation bounds]; NSPoint point = [self convertPoint:[self convertPoint:NSMakePoint(NSMidX(bounds), NSMidY(bounds)) fromPage:[annotation page]] toView:nil]; - [[SKPDFHoverWindow sharedHoverWindow] showForAnnotation:annotation atPoint:[[self window] convertBaseToScreen:point] fromView:self]; + [[SKPDFHoverWindow sharedHoverWindow] showForAnnotation:annotation atPoint:[[self window] convertBaseToScreen:point]]; } else { [[SKPDFHoverWindow sharedHoverWindow] orderOut:self]; } @@ -1196,7 +1196,7 @@ if ([[annotation type] isEqualToString:@"Link"] || [annotation text]) { NSRect bounds = [annotation bounds]; NSPoint point = [self convertPoint:[self convertPoint:NSMakePoint(NSMidX(bounds), NSMidY(bounds)) fromPage:[annotation page]] toView:nil]; - [[SKPDFHoverWindow sharedHoverWindow] showForAnnotation:annotation atPoint:[[self window] convertBaseToScreen:point] fromView:self]; + [[SKPDFHoverWindow sharedHoverWindow] showForAnnotation:annotation atPoint:[[self window] convertBaseToScreen:point]]; } else { [[SKPDFHoverWindow sharedHoverWindow] orderOut:self]; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-04-17 21:12:51
|
Revision: 1847 http://skim-app.svn.sourceforge.net/skim-app/?rev=1847&view=rev Author: hofman Date: 2007-04-17 14:12:50 -0700 (Tue, 17 Apr 2007) Log Message: ----------- Add horizontal margins to text drawn in hover window. Modified Paths: -------------- trunk/SKPDFHoverWindow.m Modified: trunk/SKPDFHoverWindow.m =================================================================== --- trunk/SKPDFHoverWindow.m 2007-04-17 20:45:37 UTC (rev 1846) +++ trunk/SKPDFHoverWindow.m 2007-04-17 21:12:50 UTC (rev 1847) @@ -168,7 +168,7 @@ if (text) { - rect = [text boundingRectWithSize:contentRect.size options:NSStringDrawingUsesLineFragmentOrigin]; + rect = NSInsetRect([text boundingRectWithSize:contentRect.size options:NSStringDrawingUsesLineFragmentOrigin], -2.0, 0.0); if (NSWidth(rect) < NSWidth(contentRect)) contentRect.size.width = NSWidth(rect); if (NSHeight(rect) < NSHeight(contentRect)) @@ -180,7 +180,7 @@ color = [NSColor colorWithDeviceRed:1.0 green:1.0 blue:0.6 alpha:1.0]; [image lockFocus]; - [text drawWithRect:rect options:NSStringDrawingUsesLineFragmentOrigin]; + [text drawWithRect:NSInsetRect(rect, 2.0, 0.0) options:NSStringDrawingUsesLineFragmentOrigin]; [image unlockFocus]; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-04-17 20:45:43
|
Revision: 1846 http://skim-app.svn.sourceforge.net/skim-app/?rev=1846&view=rev Author: hofman Date: 2007-04-17 13:45:37 -0700 (Tue, 17 Apr 2007) Log Message: ----------- Improvements of text display in hover window. Yellow background color. Attributed string drawing options to properly handle multi-line strings. Modified Paths: -------------- trunk/SKPDFHoverWindow.m Modified: trunk/SKPDFHoverWindow.m =================================================================== --- trunk/SKPDFHoverWindow.m 2007-04-17 19:51:12 UTC (rev 1845) +++ trunk/SKPDFHoverWindow.m 2007-04-17 20:45:37 UTC (rev 1846) @@ -122,6 +122,7 @@ NSRect rect, contentRect = [self hoverWindowRectFittingScreenFromRect:NSMakeRect(point.x, point.y + fmin(NSHeight([annotation bounds]) + 3.0, 16.0), 400.0, 80.0)]; NSImage *image = nil; NSAttributedString *text = nil; + NSColor *color = [NSColor controlBackgroundColor]; if ([[annotation type] isEqualToString:@"Link"]) { @@ -167,7 +168,7 @@ if (text) { - rect = [text boundingRectWithSize:contentRect.size options:0]; + rect = [text boundingRectWithSize:contentRect.size options:NSStringDrawingUsesLineFragmentOrigin]; if (NSWidth(rect) < NSWidth(contentRect)) contentRect.size.width = NSWidth(rect); if (NSHeight(rect) < NSHeight(contentRect)) @@ -176,13 +177,10 @@ rect.origin = NSZeroPoint; image = [[NSImage alloc] initWithSize:rect.size]; + color = [NSColor colorWithDeviceRed:1.0 green:1.0 blue:0.6 alpha:1.0]; [image lockFocus]; - [NSGraphicsContext saveGraphicsState]; - [[NSColor controlBackgroundColor] setFill]; - NSRectFill(rect); - [text drawInRect:rect]; - [NSGraphicsContext restoreGraphicsState]; + [text drawWithRect:rect options:NSStringDrawingUsesLineFragmentOrigin]; [image unlockFocus]; } @@ -194,9 +192,11 @@ [image release]; // Convert to window and expand for the border - [self setFrame:[self frameRectForContentRect:NSInsetRect(contentRect, -1.0, -1.0)] display:NO]; + [self setFrame:[self frameRectForContentRect:contentRect] display:NO]; [imageView scrollRectToVisible:rect]; + [[imageView enclosingScrollView] setBackgroundColor:color]; + if ([self isVisible] == NO) [self setAlphaValue:0.0]; [animation stopAnimation]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-04-17 19:51:16
|
Revision: 1845 http://skim-app.svn.sourceforge.net/skim-app/?rev=1845&view=rev Author: hofman Date: 2007-04-17 12:51:12 -0700 (Tue, 17 Apr 2007) Log Message: ----------- Show URL in hover window for external links. Modified Paths: -------------- trunk/SKPDFHoverWindow.m Modified: trunk/SKPDFHoverWindow.m =================================================================== --- trunk/SKPDFHoverWindow.m 2007-04-17 19:33:17 UTC (rev 1844) +++ trunk/SKPDFHoverWindow.m 2007-04-17 19:51:12 UTC (rev 1845) @@ -121,35 +121,52 @@ NSRect rect, contentRect = [self hoverWindowRectFittingScreenFromRect:NSMakeRect(point.x, point.y + fmin(NSHeight([annotation bounds]) + 3.0, 16.0), 400.0, 80.0)]; NSImage *image = nil; + NSAttributedString *text = nil; if ([[annotation type] isEqualToString:@"Link"]) { PDFDestination *dest = [annotation destination]; PDFPage *page = [dest page]; - NSRect bounds = [page boundsForBox:kPDFDisplayBoxCropBox]; - rect = contentRect; - rect.origin = [dest point]; - rect.origin.x -= NSMinX(bounds); - rect.origin.y -= NSMinY(bounds) + NSHeight(rect); - - PDFSelection *selection = [page selectionForRect:bounds]; - if ([selection string]) { - NSRect selBounds = [selection boundsForPage:page]; - float top = fmax(NSMaxY(selBounds), NSMinX(selBounds) + NSHeight(rect)); - float left = fmin(NSMinX(selBounds), NSMaxX(bounds) - NSWidth(rect)); - if (top < NSMaxY(rect)) - rect.origin.y = top - NSHeight(rect); - if (left > NSMinX(rect)) - rect.origin.x = left; + if (page) { + + NSRect bounds = [page boundsForBox:kPDFDisplayBoxCropBox]; + + rect = contentRect; + rect.origin = [dest point]; + rect.origin.x -= NSMinX(bounds); + rect.origin.y -= NSMinY(bounds) + NSHeight(rect); + + PDFSelection *selection = [page selectionForRect:bounds]; + if ([selection string]) { + NSRect selBounds = [selection boundsForPage:page]; + float top = fmax(NSMaxY(selBounds), NSMinX(selBounds) + NSHeight(rect)); + float left = fmin(NSMinX(selBounds), NSMaxX(bounds) - NSWidth(rect)); + if (top < NSMaxY(rect)) + rect.origin.y = top - NSHeight(rect); + if (left > NSMinX(rect)) + rect.origin.x = left; + } + + image = [[page image] retain]; + + } else { + + NSString *urlString = [[(PDFAnnotationLink *)annotation URL] absoluteString]; + NSDictionary *attrs = [NSDictionary dictionaryWithObjectsAndKeys:[NSFont systemFontOfSize:11.0], NSFontAttributeName, nil]; + + text = [[[NSAttributedString alloc] initWithString:urlString attributes:attrs] autorelease]; + } - image = [[page image] retain]; - } else { - NSAttributedString *text = [annotation text]; + text = [annotation text]; + } + + if (text) { + rect = [text boundingRectWithSize:contentRect.size options:0]; if (NSWidth(rect) < NSWidth(contentRect)) contentRect.size.width = NSWidth(rect); @@ -164,35 +181,39 @@ [NSGraphicsContext saveGraphicsState]; [[NSColor controlBackgroundColor] setFill]; NSRectFill(rect); - [[annotation text] drawInRect:rect]; + [text drawInRect:rect]; [NSGraphicsContext restoreGraphicsState]; [image unlockFocus]; } - [imageView setFrameSize:[image size]]; - [imageView setImage:image]; - [image release]; - - // Convert to window and expand for the border - [self setFrame:[self frameRectForContentRect:NSInsetRect(contentRect, -1.0, -1.0)] display:NO]; - [imageView scrollRectToVisible:rect]; - - if ([self isVisible] == NO) - [self setAlphaValue:0.0]; - [animation stopAnimation]; - [super orderFront:self]; - - if (wasHidden) { - NSDictionary *fadeInDict = [[NSDictionary alloc] initWithObjectsAndKeys:self, NSViewAnimationTargetKey, NSViewAnimationFadeInEffect, NSViewAnimationEffectKey, nil]; + if (image) { - animation = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObjects:fadeInDict, nil]]; - [fadeInDict release]; + [imageView setFrameSize:[image size]]; + [imageView setImage:image]; + [image release]; - [animation setAnimationBlockingMode:NSAnimationNonblocking]; - [animation setDuration:0.5]; - [animation setDelegate:self]; - [animation startAnimation]; + // Convert to window and expand for the border + [self setFrame:[self frameRectForContentRect:NSInsetRect(contentRect, -1.0, -1.0)] display:NO]; + [imageView scrollRectToVisible:rect]; + + if ([self isVisible] == NO) + [self setAlphaValue:0.0]; + [animation stopAnimation]; + [super orderFront:self]; + + if (wasHidden) { + NSDictionary *fadeInDict = [[NSDictionary alloc] initWithObjectsAndKeys:self, NSViewAnimationTargetKey, NSViewAnimationFadeInEffect, NSViewAnimationEffectKey, nil]; + + animation = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObjects:fadeInDict, nil]]; + [fadeInDict release]; + + [animation setAnimationBlockingMode:NSAnimationNonblocking]; + [animation setDuration:0.5]; + [animation setDelegate:self]; + [animation startAnimation]; + } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-04-17 19:33:19
|
Revision: 1844 http://skim-app.svn.sourceforge.net/skim-app/?rev=1844&view=rev Author: hofman Date: 2007-04-17 12:33:17 -0700 (Tue, 17 Apr 2007) Log Message: ----------- Expand hover window by border of scrollview. Modified Paths: -------------- trunk/SKPDFHoverWindow.m Modified: trunk/SKPDFHoverWindow.m =================================================================== --- trunk/SKPDFHoverWindow.m 2007-04-17 18:54:39 UTC (rev 1843) +++ trunk/SKPDFHoverWindow.m 2007-04-17 19:33:17 UTC (rev 1844) @@ -119,7 +119,7 @@ [annotation release]; annotation = [note retain]; - NSRect rect, contentRect = [self hoverWindowRectFittingScreenFromRect:NSMakeRect(point.x, point.y + fmin(NSHeight([annotation bounds]) + 2.0, 16.0), 400.0, 80.0)]; + NSRect rect, contentRect = [self hoverWindowRectFittingScreenFromRect:NSMakeRect(point.x, point.y + fmin(NSHeight([annotation bounds]) + 3.0, 16.0), 400.0, 80.0)]; NSImage *image = nil; if ([[annotation type] isEqualToString:@"Link"]) { @@ -128,7 +128,7 @@ PDFPage *page = [dest page]; NSRect bounds = [page boundsForBox:kPDFDisplayBoxCropBox]; - rect = [[imageView superview] bounds]; + rect = contentRect; rect.origin = [dest point]; rect.origin.x -= NSMinX(bounds); rect.origin.y -= NSMinY(bounds) + NSHeight(rect); @@ -174,7 +174,8 @@ [imageView setImage:image]; [image release]; - [self setFrame:[self frameRectForContentRect:contentRect] display:NO]; + // Convert to window and expand for the border + [self setFrame:[self frameRectForContentRect:NSInsetRect(contentRect, -1.0, -1.0)] display:NO]; [imageView scrollRectToVisible:rect]; if ([self isVisible] == NO) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-04-17 18:55:15
|
Revision: 1843 http://skim-app.svn.sourceforge.net/skim-app/?rev=1843&view=rev Author: hofman Date: 2007-04-17 11:54:39 -0700 (Tue, 17 Apr 2007) Log Message: ----------- Show hover window with note text for anchored notes. RFE # 1701223. Modified Paths: -------------- trunk/SKPDFHoverWindow.h trunk/SKPDFHoverWindow.m trunk/SKPDFView.m Modified: trunk/SKPDFHoverWindow.h =================================================================== --- trunk/SKPDFHoverWindow.h 2007-04-17 17:13:57 UTC (rev 1842) +++ trunk/SKPDFHoverWindow.h 2007-04-17 18:54:39 UTC (rev 1843) @@ -38,16 +38,17 @@ #import <Cocoa/Cocoa.h> +@class PDFAnnotation; @interface SKPDFHoverWindow : NSPanel { NSImageView *imageView; - PDFDestination *destination; + PDFAnnotation *annotation; NSViewAnimation *animation; } + (id)sharedHoverWindow; -- (void)showWithDestination:(PDFDestination *)dest atPoint:(NSPoint)point fromView:(PDFView *)srcView; +- (void)showForAnnotation:(PDFAnnotation *)annotation atPoint:(NSPoint)point fromView:(PDFView *)srcView; - (void)hide; - (void)handleApplicationWillResignActiveNotification:(NSNotification *)notification; Modified: trunk/SKPDFHoverWindow.m =================================================================== --- trunk/SKPDFHoverWindow.m 2007-04-17 17:13:57 UTC (rev 1842) +++ trunk/SKPDFHoverWindow.m 2007-04-17 18:54:39 UTC (rev 1843) @@ -38,6 +38,7 @@ #import "SKPDFHoverWindow.h" #import "PDFPage_SKExtensions.h" +#import "SKPDFAnnotationNote.h" @implementation SKPDFHoverWindow @@ -71,7 +72,6 @@ return self; } - - (void)handleApplicationWillResignActiveNotification:(NSNotification *)notification { [self orderOut:self]; } @@ -89,8 +89,8 @@ - (void)orderOut:(id)sender { [animation stopAnimation]; [self setAlphaValue:1.0]; - [destination release]; - destination = nil; + [annotation release]; + annotation = nil; [super orderOut:sender]; } @@ -109,40 +109,70 @@ return rect; } -- (void)showWithDestination:(PDFDestination *)dest atPoint:(NSPoint)point fromView:(PDFView *)srcView{ +- (void)showForAnnotation:(PDFAnnotation *)note atPoint:(NSPoint)point fromView:(PDFView *)srcView{ - if ([destination isEqual:dest]) + if ([note isEqual:annotation]) return; - BOOL wasHidden = destination == nil; + BOOL wasHidden = annotation == nil; - [destination release]; - destination = [dest retain]; + [annotation release]; + annotation = [note retain]; - // FIXME: magic number 15 ought to be calculated from the line height of the current line? - NSRect contentRect = [self hoverWindowRectFittingScreenFromRect:NSMakeRect(point.x, point.y + 15.0, 400.0, 50.0)]; - PDFPage *page = [destination page]; - NSImage *image = [page image]; - NSRect bounds = [page boundsForBox:kPDFDisplayBoxCropBox]; - NSRect rect = [[imageView superview] bounds]; + NSRect rect, contentRect = [self hoverWindowRectFittingScreenFromRect:NSMakeRect(point.x, point.y + fmin(NSHeight([annotation bounds]) + 2.0, 16.0), 400.0, 80.0)]; + NSImage *image = nil; - rect.origin = [destination point]; - rect.origin.x -= NSMinX(bounds); - rect.origin.y -= NSMinY(bounds) + NSHeight(rect); - - PDFSelection *selection = [page selectionForRect:bounds]; - if ([selection string]) { - NSRect selBounds = [selection boundsForPage:page]; - float top = fmax(NSMaxY(selBounds), NSMinX(selBounds) + NSHeight(rect)); - float left = fmin(NSMinX(selBounds), NSMaxX(bounds) - NSWidth(rect)); - if (top < NSMaxY(rect)) - rect.origin.y = top - NSHeight(rect); - if (left > NSMinX(rect)) - rect.origin.x = left; + if ([[annotation type] isEqualToString:@"Link"]) { + + PDFDestination *dest = [annotation destination]; + PDFPage *page = [dest page]; + NSRect bounds = [page boundsForBox:kPDFDisplayBoxCropBox]; + + rect = [[imageView superview] bounds]; + rect.origin = [dest point]; + rect.origin.x -= NSMinX(bounds); + rect.origin.y -= NSMinY(bounds) + NSHeight(rect); + + PDFSelection *selection = [page selectionForRect:bounds]; + if ([selection string]) { + NSRect selBounds = [selection boundsForPage:page]; + float top = fmax(NSMaxY(selBounds), NSMinX(selBounds) + NSHeight(rect)); + float left = fmin(NSMinX(selBounds), NSMaxX(bounds) - NSWidth(rect)); + if (top < NSMaxY(rect)) + rect.origin.y = top - NSHeight(rect); + if (left > NSMinX(rect)) + rect.origin.x = left; + } + + image = [[page image] retain]; + + } else { + + NSAttributedString *text = [annotation text]; + + rect = [text boundingRectWithSize:contentRect.size options:0]; + if (NSWidth(rect) < NSWidth(contentRect)) + contentRect.size.width = NSWidth(rect); + if (NSHeight(rect) < NSHeight(contentRect)) + contentRect.size.height = NSHeight(rect); + rect.size = contentRect.size; + rect.origin = NSZeroPoint; + + image = [[NSImage alloc] initWithSize:rect.size]; + + [image lockFocus]; + [NSGraphicsContext saveGraphicsState]; + [[NSColor controlBackgroundColor] setFill]; + NSRectFill(rect); + [[annotation text] drawInRect:rect]; + [NSGraphicsContext restoreGraphicsState]; + [image unlockFocus]; + } [imageView setFrameSize:[image size]]; [imageView setImage:image]; + [image release]; [self setFrame:[self frameRectForContentRect:contentRect] display:NO]; [imageView scrollRectToVisible:rect]; @@ -166,13 +196,13 @@ } - (void)hide { - if (destination == nil) + if (annotation == nil) return; [animation stopAnimation]; - [destination release]; - destination = nil; + [annotation release]; + annotation = nil; NSDictionary *fadeOutDict = [[NSDictionary alloc] initWithObjectsAndKeys:self, NSViewAnimationTargetKey, NSViewAnimationFadeOutEffect, NSViewAnimationEffectKey, nil]; Modified: trunk/SKPDFView.m =================================================================== --- trunk/SKPDFView.m 2007-04-17 17:13:57 UTC (rev 1842) +++ trunk/SKPDFView.m 2007-04-17 18:54:39 UTC (rev 1843) @@ -708,14 +708,18 @@ } [cursor set]; - BOOL isLink = NO; - PDFDestination *dest = [self destinationForEvent:theEvent isLink:&isLink]; + p = [self convertPoint:[theEvent locationInWindow] fromView:nil]; + PDFPage *page = [self pageForPoint:p nearest:NO]; + PDFAnnotation *annotation = nil; - if (isLink) - [[SKPDFHoverWindow sharedHoverWindow] showWithDestination:dest atPoint:[[self window] convertBaseToScreen:[theEvent locationInWindow]] fromView:self]; + if (page) + annotation = [page annotationAtPoint:[self convertPoint:p toPage:page]]; + + if ([[annotation type] isEqualToString:@"Link"] || [annotation text]) + [[SKPDFHoverWindow sharedHoverWindow] showForAnnotation:annotation atPoint:[[self window] convertBaseToScreen:[theEvent locationInWindow]] fromView:self]; else [[SKPDFHoverWindow sharedHoverWindow] hide]; - + if ([[activeAnnotation type] isEqualToString:@"Link"]) [self setActiveAnnotation:nil]; @@ -1066,6 +1070,8 @@ } else if ([type isEqualToString:@"Note"]) { + [[SKPDFHoverWindow sharedHoverWindow] orderOut:self]; + [[NSNotificationCenter defaultCenter] postNotificationName:SKPDFViewAnnotationDoubleClickedNotification object:self userInfo:[NSDictionary dictionaryWithObjectsAndKeys:activeAnnotation, @"annotation", nil]]; @@ -1144,10 +1150,10 @@ if (annotation) { [self scrollAnnotationToVisible:annotation]; [self setActiveAnnotation:annotation]; - if ([[annotation type] isEqualToString:@"Link"]) { + if ([[annotation type] isEqualToString:@"Link"] || [annotation text]) { NSRect bounds = [annotation bounds]; NSPoint point = [self convertPoint:[self convertPoint:NSMakePoint(NSMidX(bounds), NSMidY(bounds)) fromPage:[annotation page]] toView:nil]; - [[SKPDFHoverWindow sharedHoverWindow] showWithDestination:[annotation destination] atPoint:[[self window] convertBaseToScreen:point] fromView:self]; + [[SKPDFHoverWindow sharedHoverWindow] showForAnnotation:annotation atPoint:[[self window] convertBaseToScreen:point] fromView:self]; } else { [[SKPDFHoverWindow sharedHoverWindow] orderOut:self]; } @@ -1187,10 +1193,10 @@ if (annotation) { [self scrollAnnotationToVisible:annotation]; [self setActiveAnnotation:annotation]; - if ([[annotation type] isEqualToString:@"Link"]) { + if ([[annotation type] isEqualToString:@"Link"] || [annotation text]) { NSRect bounds = [annotation bounds]; NSPoint point = [self convertPoint:[self convertPoint:NSMakePoint(NSMidX(bounds), NSMidY(bounds)) fromPage:[annotation page]] toView:nil]; - [[SKPDFHoverWindow sharedHoverWindow] showWithDestination:[annotation destination] atPoint:[[self window] convertBaseToScreen:point] fromView:self]; + [[SKPDFHoverWindow sharedHoverWindow] showForAnnotation:annotation atPoint:[[self window] convertBaseToScreen:point] fromView:self]; } else { [[SKPDFHoverWindow sharedHoverWindow] orderOut:self]; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-04-17 17:14:00
|
Revision: 1842 http://skim-app.svn.sourceforge.net/skim-app/?rev=1842&view=rev Author: hofman Date: 2007-04-17 10:13:57 -0700 (Tue, 17 Apr 2007) Log Message: ----------- Make sure new notes are added inside page bounds. Modified Paths: -------------- trunk/SKPDFView.m Modified: trunk/SKPDFView.m =================================================================== --- trunk/SKPDFView.m 2007-04-17 16:45:01 UTC (rev 1841) +++ trunk/SKPDFView.m 2007-04-17 17:13:57 UTC (rev 1842) @@ -935,7 +935,7 @@ NSPoint center = [self convertPoint:[[self window] mouseLocationOutsideOfEventStream] fromView:nil]; // if the mouse was in the toolbar and there is a page below the toolbar, we get a point outside of the visible rect - page = NSPointInRect(center, [[self documentView] visibleRect]) ? [self pageForPoint:center nearest:NO] : nil; + page = NSPointInRect(center, [[self documentView] convertRect:[[self documentView] visibleRect] toView:self]) ? [self pageForPoint:center nearest:NO] : nil; if (page == nil) { // Get center of the PDFView. @@ -949,6 +949,17 @@ if ([page rotation] % 180 == 90) defaultSize = NSMakeSize(defaultSize.height, defaultSize.width); bounds = NSMakeRect(center.x - 0.5 * defaultSize.width, center.y - 0.5 * defaultSize.height, defaultSize.width, defaultSize.height); + + // Make sure it fits in the page + NSRect pageBounds = [page boundsForBox:[self displayBox]]; + if (NSMaxX(bounds) > NSMaxX(pageBounds)) + bounds.origin.x = NSMaxX(pageBounds) - NSWidth(bounds); + if (NSMinX(bounds) < NSMinX(pageBounds)) + bounds.origin.x = NSMinX(pageBounds); + if (NSMaxY(bounds) > NSMaxY(pageBounds)) + bounds.origin.y = NSMaxY(pageBounds) - NSHeight(bounds); + if (NSMinY(bounds) < NSMinY(pageBounds)) + bounds.origin.y = NSMinY(pageBounds); } [self addAnnotationWithType:annotationType contents:text page:page bounds:bounds]; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-04-17 16:45:06
|
Revision: 1841 http://skim-app.svn.sourceforge.net/skim-app/?rev=1841&view=rev Author: hofman Date: 2007-04-17 09:45:01 -0700 (Tue, 17 Apr 2007) Log Message: ----------- Remove outline items when reloading pdf document. Modified Paths: -------------- trunk/SKMainWindowController.m Modified: trunk/SKMainWindowController.m =================================================================== --- trunk/SKMainWindowController.m 2007-04-17 16:19:59 UTC (rev 1840) +++ trunk/SKMainWindowController.m 2007-04-17 16:45:01 UTC (rev 1841) @@ -472,6 +472,7 @@ [pdfOutline release]; pdfOutline = [[[pdfView document] outlineRoot] retain]; + [pdfOutlineItems removeAllObjects]; if (pdfOutline && [[pdfView document] isLocked] == NO) { [outlineView reloadData]; [outlineView setAutoresizesOutlineColumn: NO]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ama...@us...> - 2007-04-17 16:20:01
|
Revision: 1840 http://skim-app.svn.sourceforge.net/skim-app/?rev=1840&view=rev Author: amaxwell Date: 2007-04-17 09:19:59 -0700 (Tue, 17 Apr 2007) Log Message: ----------- Workaround for apparent PDFOutline bug. Using correct memory management causes a crash, and using Apple's sample code causes a leak. Modified Paths: -------------- trunk/SKMainWindowController.h trunk/SKMainWindowController.m Modified: trunk/SKMainWindowController.h =================================================================== --- trunk/SKMainWindowController.h 2007-04-17 16:18:31 UTC (rev 1839) +++ trunk/SKMainWindowController.h 2007-04-17 16:19:59 UTC (rev 1840) @@ -87,6 +87,7 @@ IBOutlet NSOutlineView *outlineView; IBOutlet NSView *tocView; PDFOutline *pdfOutline; + NSMutableArray *pdfOutlineItems; BOOL updatingOutlineSelection; IBOutlet NSArrayController *thumbnailArrayController; Modified: trunk/SKMainWindowController.m =================================================================== --- trunk/SKMainWindowController.m 2007-04-17 16:18:31 UTC (rev 1839) +++ trunk/SKMainWindowController.m 2007-04-17 16:19:59 UTC (rev 1840) @@ -122,6 +122,8 @@ snapshots = [[NSMutableArray alloc] init]; dirtySnapshots = [[NSMutableArray alloc] init]; lastViewedPages = [[NSMutableArray alloc] init]; + // @@ remove or set to nil for Leopard? + pdfOutlineItems = [[NSMutableArray alloc] init]; leftSidePaneState = SKOutlineSidePaneState; rightSidePaneState = SKNoteSidePaneState; temporaryAnnotations = CFSetCreateMutable(kCFAllocatorDefault, 0, &kCFTypeSetCallBacks); @@ -148,7 +150,7 @@ [fullScreenWindow release]; [mainWindow release]; [toolbarItems release]; - + [pdfOutlineItems release]; [super dealloc]; } @@ -1997,15 +1999,20 @@ if ([ov isEqual:outlineView]) { if (item == nil){ if ((pdfOutline) && ([[pdfView document] isLocked] == NO)){ -#warning leaks - // arm: This retain and the one just below are necessary to prevent a crash (and appear in Apple's sample code), but MallocDebug says we're leaking them when the doc is closed. Can someone explain this? - return [[pdfOutline childAtIndex: index] retain]; + // Apple's sample code retains this object before returning it, which prevents a crash, but also causes a leak. We could rewrite PDFOutline, but it's easier just to collect these objects and release them in -dealloc. + id obj = [pdfOutline childAtIndex:index]; + if (obj) + [pdfOutlineItems addObject:obj]; + return obj; }else{ return nil; } }else{ - return [[(PDFOutline *)item childAtIndex: index] retain]; + id obj = [(PDFOutline *)item childAtIndex:index]; + if (obj) + [pdfOutlineItems addObject:obj]; + return obj; } } else if ([ov isEqual:noteOutlineView]) { if (item == nil) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-04-17 16:18:33
|
Revision: 1839 http://skim-app.svn.sourceforge.net/skim-app/?rev=1839&view=rev Author: hofman Date: 2007-04-17 09:18:31 -0700 (Tue, 17 Apr 2007) Log Message: ----------- Check for Release build style instead of checking to run only for installation for a few script build phases. Modified Paths: -------------- trunk/Skim.xcodeproj/project.pbxproj Modified: trunk/Skim.xcodeproj/project.pbxproj =================================================================== --- trunk/Skim.xcodeproj/project.pbxproj 2007-04-17 13:44:34 UTC (rev 1838) +++ trunk/Skim.xcodeproj/project.pbxproj 2007-04-17 16:18:31 UTC (rev 1839) @@ -996,16 +996,16 @@ }; CE4DA9060B9E17890039E89C /* ShellScript */ = { isa = PBXShellScriptBuildPhase; - buildActionMask = 8; + buildActionMask = 12; files = ( ); inputPaths = ( ); outputPaths = ( ); - runOnlyForDeploymentPostprocessing = 1; + runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if [ -d /Developer/Applications/Utilities/Help\\ Indexer.app/ ]; then\necho \"*** Indexing Tiger Help ***\"\nfor LOC_DIR in ${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/*.lproj; do \\\n/Developer/Applications/Utilities/Help\\ Indexer.app/Contents/MacOS/Help\\ Indexer \\\n${LOC_DIR}/Skim\\ Help \\\n-Tokenizer 1 \\\n-ShowProgress NO \\\n-LogStyle 2 \\\n-IndexAnchors YES \\\n-TigerIndexing YES \\\n-GenerateSummaries YES \\\n-Stopwords en \\\n-MinTermLength 3;\\\ndone\nfi\nexit 0"; + shellScript = "if [ ${BUILD_STYLE} = \"Debug\" ]; then\nexit 0\nfi\nif [ -d /Developer/Applications/Utilities/Help\\ Indexer.app/ ]; then\necho \"*** Indexing Tiger Help ***\"\nfor LOC_DIR in ${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/*.lproj; do \\\n/Developer/Applications/Utilities/Help\\ Indexer.app/Contents/MacOS/Help\\ Indexer \\\n${LOC_DIR}/Skim\\ Help \\\n-Tokenizer 1 \\\n-ShowProgress NO \\\n-LogStyle 2 \\\n-IndexAnchors YES \\\n-TigerIndexing YES \\\n-GenerateSummaries YES \\\n-Stopwords en \\\n-MinTermLength 3;\\\ndone\nfi\nexit 0"; }; CE592C630B9239E300C113DF /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -1022,16 +1022,16 @@ }; CEE1383C0BCEA63F00BF2D3E /* ShellScript */ = { isa = PBXShellScriptBuildPhase; - buildActionMask = 8; + buildActionMask = 12; files = ( ); inputPaths = ( ); outputPaths = ( ); - runOnlyForDeploymentPostprocessing = 1; + runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "#\n# Run the genstrings build phase\n# This takes a while to generate, so it's not worth\n# the wait for development builds.\n#\ncd ${SOURCE_ROOT}\nif [ -f \"English.lproj/Localizable.strings\" ]; then\nmv English.lproj/Localizable.strings English.lproj/Localizable.strings.bak \nfi\nif [ -f \"English.lproj/ZoomValues.strings\" ]; then\nmv English.lproj/ZoomValues.strings English.lproj/ZoomValues.strings.bak \nfi\n/usr/bin/genstrings -o ${SOURCE_ROOT}/English.lproj `/usr/bin/find . -type file -name \"*.[mh]\"`"; + shellScript = "#\n# Run the genstrings build phase\n# This takes a while to generate, so it's not worth\n# the wait for development builds.\n#\nif [ ${BUILD_STYLE} = \"Debug\" ]; then\nexit 0\nfi\ncd ${SOURCE_ROOT}\n/usr/bin/genstrings -o ${SOURCE_ROOT}/English.lproj `/usr/bin/find . -type file -name \"*.[mh]\"`"; }; /* End PBXShellScriptBuildPhase section */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-04-17 13:44:36
|
Revision: 1838 http://skim-app.svn.sourceforge.net/skim-app/?rev=1838&view=rev Author: hofman Date: 2007-04-17 06:44:34 -0700 (Tue, 17 Apr 2007) Log Message: ----------- Apply improvements from Adam to sparkle source. Use NSXMLDocument to parse the appcast. Avoid exceptions. Don't use triple dot. Use NSAlert API. Check for network availability. Update english and dutch localized strings. Check for symlink or alias instead of an item named Applications. Modified Paths: -------------- trunk/vendorsrc/andymatuschak/Sparkle/NSFileManager+Authentication.m trunk/vendorsrc/andymatuschak/Sparkle/SUAppcast.m trunk/vendorsrc/andymatuschak/Sparkle/SUAppcastItem.m trunk/vendorsrc/andymatuschak/Sparkle/SUAutomaticUpdateAlert.m trunk/vendorsrc/andymatuschak/Sparkle/SUStatusController.m trunk/vendorsrc/andymatuschak/Sparkle/SUUnarchiver.m trunk/vendorsrc/andymatuschak/Sparkle/SUUpdateAlert.m trunk/vendorsrc/andymatuschak/Sparkle/SUUpdater.m trunk/vendorsrc/andymatuschak/Sparkle/SUUtilities.h trunk/vendorsrc/andymatuschak/Sparkle/SUUtilities.m trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/project.pbxproj trunk/vendorsrc/andymatuschak/Sparkle/ca.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/cs.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/cy.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/da.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/de.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/en.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/es.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/fi.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/fr.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/he.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/hu.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/id.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/is.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/it.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/ja.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/ko.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/no.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/pl.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/ru.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/sk.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/sv.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/th.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/tr.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/zh_CN.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/zh_TW.lproj/Sparkle.strings Removed Paths: ------------- trunk/vendorsrc/andymatuschak/Sparkle/NSString+extras.h trunk/vendorsrc/andymatuschak/Sparkle/NSString+extras.m trunk/vendorsrc/andymatuschak/Sparkle/RSS.h trunk/vendorsrc/andymatuschak/Sparkle/RSS.m Modified: trunk/vendorsrc/andymatuschak/Sparkle/NSFileManager+Authentication.m =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/NSFileManager+Authentication.m 2007-04-17 13:16:49 UTC (rev 1837) +++ trunk/vendorsrc/andymatuschak/Sparkle/NSFileManager+Authentication.m 2007-04-17 13:44:34 UTC (rev 1838) @@ -17,45 +17,12 @@ @implementation NSFileManager (SUAuthenticationAdditions) -- (BOOL)currentUserOwnsPath:(NSString *)oPath -{ - char *path = (char *)[oPath fileSystemRepresentation]; - unsigned int uid = getuid(); - bool res = false; - struct stat sb; - if(stat(path, &sb) == 0) - { - if(sb.st_uid == uid) - { - res = true; - if(sb.st_mode & S_IFDIR) - { - DIR* dir = opendir(path); - struct dirent* entry = NULL; - while(res && (entry = readdir(dir))) - { - if(strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) - continue; - - char descend[strlen(path) + 1 + entry->d_namlen + 1]; - strcpy(descend, path); - strcat(descend, "/"); - strcat(descend, entry->d_name); - res = [self currentUserOwnsPath:[NSString stringWithUTF8String:descend]]; - } - closedir(dir); - } - } - } - return res; -} - - (BOOL)_movePathWithForcedAuthentication:(NSString *)src toPath:(NSString *)dst { NSString *tmp = [[[dst stringByDeletingPathExtension] stringByAppendingString:@".old"] stringByAppendingPathExtension:[dst pathExtension]]; BOOL res = NO; struct stat sb; - if((stat([src UTF8String], &sb) != 0) || (stat([tmp UTF8String], &sb) == 0) || stat([dst UTF8String], &sb) != 0) + if((stat([src fileSystemRepresentation], &sb) != 0) || (stat([tmp fileSystemRepresentation], &sb) == 0) || stat([dst fileSystemRepresentation], &sb) != 0) return false; char* buf = NULL; @@ -72,9 +39,9 @@ AuthorizationRef auth; if(AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagDefaults, &auth) == errAuthorizationSuccess) { - setenv("SRC_PATH", [src UTF8String], 1); - setenv("DST_PATH", [dst UTF8String], 1); - setenv("TMP_PATH", [tmp UTF8String], 1); + setenv("SRC_PATH", [src fileSystemRepresentation], 1); + setenv("DST_PATH", [dst fileSystemRepresentation], 1); + setenv("TMP_PATH", [tmp fileSystemRepresentation], 1); sig_t oldSigChildHandler = signal(SIGCHLD, SIG_DFL); char const* arguments[] = { "-c", buf, NULL }; if(AuthorizationExecuteWithPrivileges(auth, "/bin/sh", kAuthorizationFlagDefaults, (char**)arguments, NULL) == errAuthorizationSuccess) Deleted: trunk/vendorsrc/andymatuschak/Sparkle/NSString+extras.h =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/NSString+extras.h 2007-04-17 13:16:49 UTC (rev 1837) +++ trunk/vendorsrc/andymatuschak/Sparkle/NSString+extras.h 2007-04-17 13:44:34 UTC (rev 1838) @@ -1,61 +0,0 @@ -/* - -BSD License - -Copyright (c) 2002, Brent Simmons -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 ranchero.com or Brent Simmons nor the names of its - 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. - - -*/ - - -/* - NSString+extras.h - NetNewsWire - - Created by Brent Simmons on Fri Jun 14 2002. - Copyright (c) 2002 Brent Simmons. All rights reserved. -*/ - - -#import <Foundation/Foundation.h> -#import <CoreFoundation/CoreFoundation.h> - - -@interface NSString (extras) - -- (NSString *)stringWithSubstitute:(NSString *)subs forCharactersFromSet:(NSCharacterSet *)set; - -- (NSString *) trimWhiteSpace; - -- (NSString *) stripHTML; - -- (NSString *) ellipsizeAfterNWords: (int) n; - -+ (BOOL) stringIsEmpty: (NSString *) s; - - -@end Deleted: trunk/vendorsrc/andymatuschak/Sparkle/NSString+extras.m =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/NSString+extras.m 2007-04-17 13:16:49 UTC (rev 1837) +++ trunk/vendorsrc/andymatuschak/Sparkle/NSString+extras.m 2007-04-17 13:44:34 UTC (rev 1838) @@ -1,135 +0,0 @@ -/* - -BSD License - -Copyright (c) 2002, Brent Simmons -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 ranchero.com or Brent Simmons nor the names of its - 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. - - -*/ - - -/* - NSString+extras.m - NetNewsWire - - Created by Brent Simmons on Fri Jun 14 2002. - Copyright (c) 2002 Brent Simmons. All rights reserved. -*/ - -#import "NSString+extras.h" - - -@implementation NSString (extras) - -- (NSString *)stringWithSubstitute:(NSString *)subs forCharactersFromSet:(NSCharacterSet *)set -{ - NSRange r = [self rangeOfCharacterFromSet:set]; - if (r.location == NSNotFound) return self; - NSMutableString *newString = [self mutableCopy]; - do - { - [newString replaceCharactersInRange:r withString:subs]; - r = [newString rangeOfCharacterFromSet:set]; - } - while (r.location != NSNotFound); - return [newString autorelease]; -} - -- (NSString *) trimWhiteSpace { - - NSMutableString *s = [[self mutableCopy] autorelease]; - - CFStringTrimWhitespace ((CFMutableStringRef) s); - - return (NSString *) [[s copy] autorelease]; - } /*trimWhiteSpace*/ - - -- (NSString *) ellipsizeAfterNWords: (int) n { - - NSArray *stringComponents = [self componentsSeparatedByString: @" "]; - NSMutableArray *componentsCopy = [stringComponents mutableCopy]; - int ix = n; - int len = [componentsCopy count]; - - if (len < n) - ix = len; - - [componentsCopy removeObjectsInRange: NSMakeRange (ix, len - ix)]; - - return [componentsCopy componentsJoinedByString: @" "]; - } /*ellipsizeAfterNWords*/ - - -- (NSString *) stripHTML { - - int len = [self length]; - NSMutableString *s = [NSMutableString stringWithCapacity: len]; - int i = 0, level = 0; - - for (i = 0; i < len; i++) { - - NSString *ch = [self substringWithRange: NSMakeRange (i, 1)]; - - if ([ch isEqualTo: @"<"]) - level++; - - else if ([ch isEqualTo: @">"]) { - - level--; - - if (level == 0) - [s appendString: @" "]; - } /*else if*/ - - else if (level == 0) - [s appendString: ch]; - } /*for*/ - - return (NSString *) [[s copy] autorelease]; - } /*stripHTML*/ - - -+ (BOOL) stringIsEmpty: (NSString *) s { - - NSString *copy; - - if (s == nil) - return (YES); - - if ([s isEqualTo: @""]) - return (YES); - - copy = [[s copy] autorelease]; - - if ([[copy trimWhiteSpace] isEqualTo: @""]) - return (YES); - - return (NO); - } /*stringIsEmpty*/ - -@end Deleted: trunk/vendorsrc/andymatuschak/Sparkle/RSS.h =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/RSS.h 2007-04-17 13:16:49 UTC (rev 1837) +++ trunk/vendorsrc/andymatuschak/Sparkle/RSS.h 2007-04-17 13:44:34 UTC (rev 1838) @@ -1,98 +0,0 @@ -/* - -BSD License - -Copyright (c) 2002, Brent Simmons -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 ranchero.com or Brent Simmons nor the names of its - 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. - - -*/ - -/* - RSS.h - A class for reading RSS feeds. - - Created by Brent Simmons on Wed Apr 17 2002. - Copyright (c) 2002 Brent Simmons. All rights reserved. -*/ - - -#import <Cocoa/Cocoa.h> -#import <CoreFoundation/CoreFoundation.h> -#import "NSString+extras.h" - - -@interface RSS : NSObject { - - NSDictionary *headerItems; - NSMutableArray *newsItems; - NSString *version; - - BOOL flRdf; - BOOL normalize; - } - - -/*Public*/ - -- (RSS *) initWithTitle: (NSString *) title andDescription: (NSString *) description; - -- (RSS *) initWithData: (NSData *) rssData normalize: (BOOL) fl; - -- (RSS *) initWithURL: (NSURL *) url normalize: (BOOL) fl; -- (RSS *) initWithURL: (NSURL *) url normalize: (BOOL) fl userAgent:(NSString *)userAgent; - -- (NSDictionary *) headerItems; - -- (NSMutableArray *) newsItems; - -- (NSString *) version; - -// AMM's extensions for Sparkle -- (NSDictionary *)newestItem; - - -/*Private*/ - -- (void) createheaderdictionary: (CFXMLTreeRef) tree; - -- (void) createitemsarray: (CFXMLTreeRef) tree; - -- (void) setversionstring: (CFXMLTreeRef) tree; - -- (void) flattenimagechildren: (CFXMLTreeRef) tree into: (NSMutableDictionary *) dictionary; - -- (void) flattensourceattributes: (CFXMLNodeRef) node into: (NSMutableDictionary *) dictionary; - -- (CFXMLTreeRef) getchanneltree: (CFXMLTreeRef) tree; - -- (CFXMLTreeRef) getnamedtree: (CFXMLTreeRef) currentTree name: (NSString *) name; - -- (void) normalizeRSSItem: (NSMutableDictionary *) rssItem; - -- (NSString *) getelementvalue: (CFXMLTreeRef) tree; - -@end Deleted: trunk/vendorsrc/andymatuschak/Sparkle/RSS.m =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/RSS.m 2007-04-17 13:16:49 UTC (rev 1837) +++ trunk/vendorsrc/andymatuschak/Sparkle/RSS.m 2007-04-17 13:44:34 UTC (rev 1838) @@ -1,692 +0,0 @@ -/* - -BSD License - -Copyright (c) 2002, Brent Simmons -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 ranchero.com or Brent Simmons nor the names of its - 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. - - -*/ - -/* - RSS.m - A class for reading RSS feeds. - - Created by Brent Simmons on Wed Apr 17 2002. - Copyright (c) 2002 Brent Simmons. All rights reserved. -*/ - - -#import "RSS.h" - -// This comparator function is used to sort the RSS items by their published date. -int compareNewsItems(id item1, id item2, void *context) -{ - // We compare item2 with item1 instead of the other way 'round because we want descending, not ascending. Bit of a hack. - return [(NSDate *)[NSDate dateWithNaturalLanguageString:[item2 objectForKey:@"pubDate"]] compare:(NSDate *)[NSDate dateWithNaturalLanguageString:[item1 objectForKey:@"pubDate"]]]; -} - -@implementation RSS - - -#define titleKey @"title" -#define linkKey @"link" -#define descriptionKey @"description" - - -/*Public interface*/ - -- (NSDictionary *)newestItem -{ - // The news items are already sorted by published date, descending. - return [[self newsItems] objectAtIndex:0]; -} - -- (RSS *) initWithTitle: (NSString *) title andDescription: (NSString *) description { - - /* - Create an empty feed. Useful for synthetic feeds. - */ - - NSMutableDictionary *header; - - flRdf = NO; - - header = [NSMutableDictionary dictionaryWithCapacity: 2]; - - [header setObject: title forKey: titleKey]; - - [header setObject: description forKey: descriptionKey]; - - headerItems = (NSDictionary *) [header copy]; - - newsItems = [[NSMutableArray alloc] initWithCapacity: 0]; - - version = [[NSString alloc] initWithString: @"synthetic"]; - - return (self); - } /*initWithTitle*/ - - -- (RSS *) initWithData: (NSData *) rssData normalize: (BOOL) fl { - - CFXMLTreeRef tree; - - flRdf = NO; - - normalize = fl; - - NS_DURING - - tree = CFXMLTreeCreateFromData (kCFAllocatorDefault, (CFDataRef) rssData, - NULL, kCFXMLParserSkipWhitespace, kCFXMLNodeCurrentVersion); - - NS_HANDLER - - tree = nil; - - NS_ENDHANDLER - - if (tree == nil) { - - /*If there was a problem parsing the RSS file, - raise an exception.*/ - - NSException *exception = [NSException exceptionWithName: @"RSSParseFailed" - reason: @"The XML parser could not parse the RSS data." userInfo: nil]; - - [exception raise]; - } /*if*/ - - [self createheaderdictionary: tree]; - - [self createitemsarray: tree]; - - [self setversionstring: tree]; - - CFRelease (tree); - - return (self); - } /*initWithData*/ - - -- (RSS *) initWithURL: (NSURL *) url normalize: (BOOL) fl -{ - return [self initWithURL: url normalize: fl userAgent: nil]; -} - - - -- (RSS *) initWithURL: (NSURL *) url normalize: (BOOL) fl userAgent: (NSString*)userAgent -{ - NSData *rssData; - - NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: url cachePolicy: NSURLRequestReloadIgnoringCacheData - timeoutInterval: 30.0]; - if (userAgent) - [request setValue: userAgent forHTTPHeaderField: @"User-Agent"]; - - NSURLResponse *response=0; - NSError *error=0; - - rssData = [NSURLConnection sendSynchronousRequest: request returningResponse: &response error: &error]; - - if (rssData == nil) - { - NSException *exception = [NSException exceptionWithName: @"RSSDownloadFailed" - reason: [error localizedFailureReason] userInfo: [error userInfo] ]; - [exception raise]; - } - - return [self initWithData: rssData normalize: fl]; -} /*initWithUrl*/ - - -- (NSDictionary *) headerItems { - - return (headerItems); - } /*headerItems*/ - - -- (NSMutableArray *) newsItems { - - return (newsItems); - } /*newsItems*/ - - -- (NSString *) version { - - return (version); - } /*version*/ - - -- (void) dealloc { - - [headerItems release]; - - [newsItems release]; - - [version release]; - [super dealloc]; - } /*dealloc*/ - - - -/*Private methods. Don't call these: they may change.*/ - - -- (void) createheaderdictionary: (CFXMLTreeRef) tree { - - CFXMLTreeRef channelTree, childTree; - CFXMLNodeRef childNode; - int childCount, i; - NSString *childName; - NSMutableDictionary *headerItemsMutable; - - channelTree = [self getchanneltree: tree]; - - if (channelTree == nil) { - - NSException *exception = [NSException exceptionWithName: @"RSSCreateHeaderDictionaryFailed" - reason: @"Couldn't find the channel tree." userInfo: nil]; - - [exception raise]; - } /*if*/ - - childCount = CFTreeGetChildCount (channelTree); - - headerItemsMutable = [NSMutableDictionary dictionaryWithCapacity: childCount]; - - for (i = 0; i < childCount; i++) { - - childTree = CFTreeGetChildAtIndex (channelTree, i); - - childNode = CFXMLTreeGetNode (childTree); - - childName = (NSString *) CFXMLNodeGetString (childNode); - - if ([childName hasPrefix: @"rss:"]) - childName = [childName substringFromIndex: 4]; - - if ([childName isEqualToString: @"item"]) - break; - - if ([childName isEqualTo: @"image"]) - [self flattenimagechildren: childTree into: headerItemsMutable]; - - [headerItemsMutable setObject: [self getelementvalue: childTree] forKey: childName]; - } /*for*/ - - headerItems = [headerItemsMutable copy]; - } /*initheaderdictionary*/ - - -- (void) createitemsarray: (CFXMLTreeRef) tree { - - CFXMLTreeRef channelTree, childTree, itemTree; - CFXMLNodeRef childNode, itemNode; - NSString *childName; - NSString *itemName, *itemValue; - int childCount, itemChildCount, i, j; - NSMutableDictionary *itemDictionaryMutable; - NSMutableArray *itemsArrayMutable; - - if (flRdf) - channelTree = [self getnamedtree: tree name: @"rdf:RDF"]; - else - channelTree = [self getchanneltree: tree]; - - if (channelTree == nil) { - - NSException *exception = [NSException exceptionWithName: @"RSSCreateItemsArrayFailed" - reason: @"Couldn't find the news items." userInfo: nil]; - - [exception raise]; - } /*if*/ - - childCount = CFTreeGetChildCount (channelTree); - - itemsArrayMutable = [NSMutableArray arrayWithCapacity: childCount]; - - for (i = 0; i < childCount; i++) { - - childTree = CFTreeGetChildAtIndex (channelTree, i); - - childNode = CFXMLTreeGetNode (childTree); - - childName = (NSString *) CFXMLNodeGetString (childNode); - - if ([childName hasPrefix: @"rss:"]) - childName = [childName substringFromIndex: 4]; - - if (![childName isEqualToString: @"item"]) - continue; - - itemChildCount = CFTreeGetChildCount (childTree); - - itemDictionaryMutable = [NSMutableDictionary dictionaryWithCapacity: itemChildCount]; - - for (j = 0; j < itemChildCount; j++) { - - itemTree = CFTreeGetChildAtIndex (childTree, j); - - itemNode = CFXMLTreeGetNode (itemTree); - - itemName = (NSString *) CFXMLNodeGetString (itemNode); - - if ([itemName hasPrefix: @"rss:"]) - itemName = [itemName substringFromIndex: 4]; - - if ([itemName isEqualTo:@"enclosure"]) - { - // Hack to add attributes to the dictionary in addition to children. (AMM) - const CFXMLElementInfo *websiteInfo = CFXMLNodeGetInfoPtr(itemNode); - NSMutableDictionary *enclosureDictionary = [NSMutableDictionary dictionary]; - id keyEnumerator = [(NSDictionary *)websiteInfo->attributes keyEnumerator], current; - while ((current = [keyEnumerator nextObject])) - { - [enclosureDictionary setObject:[(NSDictionary *)websiteInfo->attributes objectForKey:current] forKey:current]; - } - [itemDictionaryMutable setObject: enclosureDictionary forKey: itemName]; - continue; - } - - itemValue = [self getelementvalue: itemTree]; - - if ([itemName isEqualTo: @"source"]) - [self flattensourceattributes: itemNode into: itemDictionaryMutable]; - - [itemDictionaryMutable setObject: itemValue forKey: itemName]; - } /*for*/ - - if (normalize) - [self normalizeRSSItem: itemDictionaryMutable]; - - [itemsArrayMutable addObject: itemDictionaryMutable]; - } /*for*/ - - // Sort the news items by published date, descending. - newsItems = [[itemsArrayMutable sortedArrayUsingFunction:compareNewsItems context:NULL] retain]; - } /*createitemsarray*/ - - -- (void) setversionstring: (CFXMLTreeRef) tree { - - CFXMLTreeRef rssTree; - const CFXMLElementInfo *elementInfo; - CFXMLNodeRef node; - - if (flRdf) { - - version = [[NSString alloc] initWithString: @"rdf"]; - - return; - } /*if*/ - - rssTree = [self getnamedtree: tree name: @"rss"]; - - node = CFXMLTreeGetNode (rssTree); - - elementInfo = CFXMLNodeGetInfoPtr (node); - - version = [[NSString alloc] initWithString: [(NSDictionary *) (*elementInfo).attributes objectForKey: @"version"]]; - } /*setversionstring*/ - - -- (void) flattenimagechildren: (CFXMLTreeRef) tree into: (NSMutableDictionary *) dictionary { - - int childCount = CFTreeGetChildCount (tree); - int i = 0; - CFXMLTreeRef childTree; - CFXMLNodeRef childNode; - NSString *childName, *childValue, *keyName; - - if (childCount < 1) - return; - - for (i = 0; i < childCount; i++) { - - childTree = CFTreeGetChildAtIndex (tree, i); - - childNode = CFXMLTreeGetNode (childTree); - - childName = (NSString *) CFXMLNodeGetString (childNode); - - if ([childName hasPrefix: @"rss:"]) - childName = [childName substringFromIndex: 4]; - - childValue = [self getelementvalue: childTree]; - - keyName = [NSString stringWithFormat: @"image%@", childName]; - - [dictionary setObject: childValue forKey: keyName]; - } /*for*/ - } /*flattenimagechildren*/ - - -- (void) flattensourceattributes: (CFXMLNodeRef) node into: (NSMutableDictionary *) dictionary { - - const CFXMLElementInfo *elementInfo; - NSString *sourceHomeUrl, *sourceRssUrl; - - elementInfo = CFXMLNodeGetInfoPtr (node); - - sourceHomeUrl = [(NSDictionary *) (*elementInfo).attributes objectForKey: @"homeUrl"]; - - sourceRssUrl = [(NSDictionary *) (*elementInfo).attributes objectForKey: @"url"]; - - if (sourceHomeUrl != nil) - [dictionary setObject: sourceHomeUrl forKey: @"sourceHomeUrl"]; - - if (sourceRssUrl != nil) - [dictionary setObject: sourceRssUrl forKey: @"sourceRssUrl"]; - } /*flattensourceattributes*/ - - -- (CFXMLTreeRef) getchanneltree: (CFXMLTreeRef) tree { - - CFXMLTreeRef rssTree, channelTree; - - rssTree = [self getnamedtree: tree name: @"rss"]; - - if (rssTree == nil) { /*It might be "rdf:RDF" instead, a 1.0 or greater feed.*/ - - rssTree = [self getnamedtree: tree name: @"rdf:RDF"]; - - if (rssTree != nil) - flRdf = YES; /*This info will be needed later when creating the items array.*/ - } /*if*/ - - if (rssTree == nil) - return (nil); - - channelTree = [self getnamedtree: rssTree name: @"channel"]; - - if (channelTree == nil) - channelTree = [self getnamedtree: rssTree name: @"rss:channel"]; - - return (channelTree); - } /*getchanneltree*/ - - -- (CFXMLTreeRef) getnamedtree: (CFXMLTreeRef) currentTree name: (NSString *) name { - - int childCount, i; - CFXMLNodeRef xmlNode; - CFXMLTreeRef xmlTreeNode; - NSString *itemName; - - childCount = CFTreeGetChildCount (currentTree); - - for (i = childCount - 1; i >= 0; i--) { - - xmlTreeNode = CFTreeGetChildAtIndex (currentTree, i); - - xmlNode = CFXMLTreeGetNode (xmlTreeNode); - - itemName = (NSString *) CFXMLNodeGetString (xmlNode); - - if ([itemName isEqualToString: name]) - return (xmlTreeNode); - } /*for*/ - - return (nil); - } /*getnamedtree*/ - - -- (void) normalizeRSSItem: (NSMutableDictionary *) rssItem { - - /* - Make sure item, link, and description are present and have - reasonable values. Description and link may be "". - Also trim white space, remove HTML when appropriate. - */ - - NSString *description, *link, *title; - BOOL nilDescription = NO; - - /*Description*/ - - description = [rssItem objectForKey: descriptionKey]; - - if (description == nil) { - - description = @""; - - nilDescription = YES; - } /*if*/ - - description = [description trimWhiteSpace]; - - if ([description isEqualTo: @""]) - nilDescription = YES; - - [rssItem setObject: description forKey: descriptionKey]; - - /*Link*/ - - link = [rssItem objectForKey: linkKey]; - - if ([NSString stringIsEmpty: link]) { - - /*Try to get a URL from the description.*/ - - if (!nilDescription) { - - NSArray *stringComponents = [description componentsSeparatedByString: @"href=\""]; - - if ([stringComponents count] > 1) { - - link = [stringComponents objectAtIndex: 1]; - - stringComponents = [link componentsSeparatedByString: @"\""]; - - link = [stringComponents objectAtIndex: 0]; - } /*if*/ - } /*if*/ - } /*if*/ - - if (link == nil) - link = @""; - - link = [link trimWhiteSpace]; - - [rssItem setObject: link forKey: linkKey]; - - /*Title*/ - - title = [rssItem objectForKey: titleKey]; - - if (title != nil) { - - title = [title stripHTML]; - - title = [title trimWhiteSpace]; - } /*if*/ - - if ([NSString stringIsEmpty: title]) { - - /*Grab a title from the description.*/ - - if (!nilDescription) { - - NSArray *stringComponents = [description componentsSeparatedByString: @">"]; - - if ([stringComponents count] > 1) { - - title = [stringComponents objectAtIndex: 1]; - - stringComponents = [title componentsSeparatedByString: @"<"]; - - title = [stringComponents objectAtIndex: 0]; - - title = [title stripHTML]; - - title = [title trimWhiteSpace]; - } /*if*/ - - if ([NSString stringIsEmpty: title]) { /*use first part of description*/ - - NSString *shortTitle = [[[description stripHTML] trimWhiteSpace] ellipsizeAfterNWords: 5]; - - shortTitle = [shortTitle trimWhiteSpace]; - - title = [NSString stringWithFormat: @"%@...", shortTitle]; - } /*else*/ - } /*if*/ - - title = [title stripHTML]; - - title = [title trimWhiteSpace]; - - if ([NSString stringIsEmpty: title]) - title = @"Untitled"; - } /*if*/ - - [rssItem setObject: title forKey: titleKey]; - - /*dangerousmeta case: super-long title with no description*/ - - if ((nilDescription) && ([title length] > 50)) { - - NSString *shortTitle = [[[title stripHTML] trimWhiteSpace] ellipsizeAfterNWords: 7]; - - description = [[title copy] autorelease]; - - [rssItem setObject: description forKey: descriptionKey]; - - title = [NSString stringWithFormat: @"%@...", shortTitle]; - - [rssItem setObject: title forKey: titleKey]; - } /*if*/ - - { /*deal with entities*/ - - const char *tempcstring; - NSAttributedString *s = nil; - NSString *convertedTitle = nil; - NSArray *stringComponents; - - stringComponents = [title componentsSeparatedByString: @"&"]; - - if ([stringComponents count] > 1) { - - stringComponents = [title componentsSeparatedByString: @";"]; - - if ([stringComponents count] > 1) { - - int len; - - tempcstring = [title UTF8String]; - - len = strlen (tempcstring); - - if (len > 0) { - - s = [[NSAttributedString alloc] - initWithHTML: [NSData dataWithBytes: tempcstring length: strlen (tempcstring)] - documentAttributes: (NSDictionary **) NULL]; - - convertedTitle = [s string]; - - [s autorelease]; - - convertedTitle = [convertedTitle stripHTML]; - - convertedTitle = [convertedTitle trimWhiteSpace]; - } /*if*/ - - if ([NSString stringIsEmpty: convertedTitle]) - convertedTitle = @"Untitled"; - - [rssItem setObject: convertedTitle forKey: @"convertedTitle"]; - } /*if*/ - } /*if*/ - } /*deal with entities*/ - } /*normalizeRSSItem*/ - - -- (NSString *) getelementvalue: (CFXMLTreeRef) tree { - - CFXMLNodeRef node; - CFXMLTreeRef itemTree; - int childCount, ix; - NSMutableString *valueMutable; - NSString *value; - NSString *name; - - childCount = CFTreeGetChildCount (tree); - - valueMutable = [[NSMutableString alloc] init]; - - for (ix = 0; ix < childCount; ix++) { - - itemTree = CFTreeGetChildAtIndex (tree, ix); - - node = CFXMLTreeGetNode (itemTree); - - name = (NSString *) CFXMLNodeGetString (node); - - if (name != nil) { - - if (CFXMLNodeGetTypeCode (node) == kCFXMLNodeTypeEntityReference) { - - if ([name isEqualTo: @"lt"]) - name = @"<"; - - else if ([name isEqualTo: @"gt"]) - name = @">"; - - else if ([name isEqualTo: @"quot"]) - name = @"\""; - - else if ([name isEqualTo: @"amp"]) - name = @"&"; - - else if ([name isEqualTo: @"rsquo"]) - name = @"\""; - - else if ([name isEqualTo: @"lsquo"]) - name = @"\""; - - else if ([name isEqualTo: @"apos"]) - name = @"'"; - else - name = [NSString stringWithFormat: @"&%@;", name]; - } /*if*/ - - [valueMutable appendString: name]; - } /*if*/ - } /*for*/ - - value = [valueMutable copy]; - - [valueMutable autorelease]; - - return ([value autorelease]); - } /*getelementvalue*/ - -@end Modified: trunk/vendorsrc/andymatuschak/Sparkle/SUAppcast.m =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/SUAppcast.m 2007-04-17 13:16:49 UTC (rev 1837) +++ trunk/vendorsrc/andymatuschak/Sparkle/SUAppcast.m 2007-04-17 13:44:34 UTC (rev 1838) @@ -9,7 +9,6 @@ #import "SUAppcast.h" #import "SUAppcastItem.h" #import "SUUtilities.h" -#import "RSS.h" @implementation SUAppcast @@ -31,7 +30,7 @@ - (SUAppcastItem *)newestItem { - return [items objectAtIndex:0]; // the RSS class takes care of sorting by published date, descending. + return [items count] ? [items objectAtIndex:0] : nil; // the RSS class takes care of sorting by published date, descending. } - (NSArray *)items @@ -43,35 +42,77 @@ { NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - RSS *feed; - @try - { - NSString *userAgent = [NSString stringWithFormat: @"%@/%@ (Mac OS X) Sparkle/1.0", SUHostAppName(), SUHostAppVersion()]; + NSError *error; + NSXMLDocument *document = [[NSXMLDocument alloc] initWithContentsOfURL:url options:0 error:&error]; + BOOL failed = NO; + + if (nil == document) + failed = YES; - feed = [[RSS alloc] initWithURL:url normalize:YES userAgent:userAgent]; - // Set up all the appcast items - NSMutableArray *tempItems = [NSMutableArray array]; - id enumerator = [[feed newsItems] objectEnumerator], current; - while ((current = [enumerator nextObject])) - { - [tempItems addObject:[[[SUAppcastItem alloc] initWithDictionary:current] autorelease]]; - } - items = [[NSArray arrayWithArray:tempItems] retain]; - [feed release]; + NSArray *xmlItems = [document nodesForXPath:@"/rss/channel/item" error:&error]; + if (nil == xmlItems) + failed = YES; + + NSMutableArray *appcastItems = [NSMutableArray array]; + + if (xmlItems) { - if ([delegate respondsToSelector:@selector(appcastDidFinishLoading:)]) - [delegate performSelectorOnMainThread:@selector(appcastDidFinishLoading:) withObject:self waitUntilDone:NO]; + NSEnumerator *nodeEnum = [xmlItems objectEnumerator]; + NSXMLNode *node; + NSMutableDictionary *dict = [NSMutableDictionary dictionary]; + while ((node = [nodeEnum nextObject])) { + + // walk the children in reverse + node = [[node children] lastObject]; + while (nil != node) { + + NSString *name = [node name]; + + if ([name isEqualToString:@"enclosure"]) { + // enclosure is flattened as a separate dictionary for some reason + NSEnumerator *attributeEnum = [[(NSXMLElement *)node attributes] objectEnumerator]; + NSXMLNode *attribute; + NSMutableDictionary *encDict = [NSMutableDictionary dictionary]; + + while ((attribute = [attributeEnum nextObject])) + [encDict setObject:[attribute stringValue] forKey:[attribute name]]; + + [dict setObject:encDict forKey:@"enclosure"]; + + } else if ([name isEqualToString:@"pubDate"]) { + // pubDate is expected to be an NSDate by SUAppcastItem, but the RSS class was returning an NSString + NSDate *date = [NSDate dateWithNaturalLanguageString:[node stringValue]]; + if (date) + [dict setObject:date forKey:name]; + } else { + // add all other values as strings + [dict setObject:[node stringValue] forKey:name]; + } + + // previous sibling; returns nil when exhausted + node = [node previousSibling]; + } + SUAppcastItem *anItem = [[SUAppcastItem alloc] initWithDictionary:dict]; + [appcastItems addObject:anItem]; + [anItem release]; + [dict removeAllObjects]; + } } - @catch (NSException *e) - { - if ([delegate respondsToSelector:@selector(appcastDidFailToLoad:)]) - [delegate performSelectorOnMainThread:@selector(appcastDidFailToLoad:) withObject:self waitUntilDone:NO]; + + if ([appcastItems count]) { + NSSortDescriptor *sort = [[[NSSortDescriptor alloc] initWithKey:@"date" ascending:NO] autorelease]; + [appcastItems sortUsingDescriptors:[NSArray arrayWithObject:sort]]; + items = [appcastItems copy]; } - @finally - { - [pool release]; - } + + if (failed && [delegate respondsToSelector:@selector(appcastDidFailToLoad:)]) + [delegate performSelectorOnMainThread:@selector(appcastDidFailToLoad:) withObject:self waitUntilDone:NO]; + else if (NO == failed && [delegate respondsToSelector:@selector(appcastDidFinishLoading:)]) + [delegate performSelectorOnMainThread:@selector(appcastDidFinishLoading:) withObject:self waitUntilDone:NO]; + + [document release]; + [pool release]; } @end Modified: trunk/vendorsrc/andymatuschak/Sparkle/SUAppcastItem.m =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/SUAppcastItem.m 2007-04-17 13:16:49 UTC (rev 1837) +++ trunk/vendorsrc/andymatuschak/Sparkle/SUAppcastItem.m 2007-04-17 13:44:34 UTC (rev 1838) @@ -76,8 +76,11 @@ - (void)setTitle:(NSString *)aTitle { - [title release]; - title = [aTitle copy]; + if (title != aTitle) + { + [title release]; + title = [aTitle copy]; + } } @@ -85,8 +88,11 @@ - (void)setDate:(NSDate *)aDate { - [date release]; - date = [aDate copy]; + if (date != aDate) + { + [date release]; + date = [aDate copy]; + } } @@ -94,8 +100,11 @@ - (void)setDescription:(NSString *)aDescription { - [description release]; - description = [aDescription copy]; + if (description != aDescription) + { + [description release]; + description = [aDescription copy]; + } } @@ -103,8 +112,11 @@ - (void)setReleaseNotesURL:(NSURL *)aReleaseNotesURL { - [releaseNotesURL release]; - releaseNotesURL = [aReleaseNotesURL copy]; + if (releaseNotesURL != aReleaseNotesURL) + { + [releaseNotesURL release]; + releaseNotesURL = [aReleaseNotesURL copy]; + } } @@ -112,8 +124,11 @@ - (void)setDSASignature:(NSString *)aDSASignature { - [DSASignature release]; - DSASignature = [aDSASignature copy]; + if (DSASignature != aDSASignature) + { + [DSASignature release]; + DSASignature = [aDSASignature copy]; + } } @@ -121,8 +136,11 @@ - (void)setMD5Sum:(NSString *)aMD5Sum { - [MD5Sum release]; - MD5Sum = [aMD5Sum copy]; + if (MD5Sum != aMD5Sum) + { + [MD5Sum release]; + MD5Sum = [aMD5Sum copy]; + } } @@ -130,8 +148,11 @@ - (void)setFileURL:(NSURL *)aFileURL { - [fileURL release]; - fileURL = [aFileURL copy]; + if (fileURL != aFileURL) + { + [fileURL release]; + fileURL = [aFileURL copy]; + } } @@ -139,8 +160,11 @@ - (void)setFileVersion:(NSString *)aFileVersion { - [fileVersion release]; - fileVersion = [aFileVersion copy]; + if (fileVersion != aFileVersion) + { + [fileVersion release]; + fileVersion = [aFileVersion copy]; + } } @@ -148,8 +172,11 @@ - (void)setVersionString:(NSString *)aVersionString { - [versionString release]; - versionString = [aVersionString copy]; + if (versionString != aVersionString) + { + [versionString release]; + versionString = [aVersionString copy]; + } } Modified: trunk/vendorsrc/andymatuschak/Sparkle/SUAutomaticUpdateAlert.m =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/SUAutomaticUpdateAlert.m 2007-04-17 13:16:49 UTC (rev 1837) +++ trunk/vendorsrc/andymatuschak/Sparkle/SUAutomaticUpdateAlert.m 2007-04-17 13:44:34 UTC (rev 1838) @@ -18,7 +18,9 @@ if (!path) // slight hack to resolve issues with running with in configurations { NSBundle *current = [NSBundle bundleForClass:[self class]]; - NSString *frameworkPath = [[[NSBundle mainBundle] sharedFrameworksPath] stringByAppendingFormat:@"/Sparkle.framework", [current bundleIdentifier]]; + NSString *frameworkPath = [[NSBundle mainBundle] sharedFrameworksPath]; + frameworkPath = [frameworkPath stringByAppendingPathComponent:@"Sparkle.framework"]; + frameworkPath = [frameworkPath stringByAppendingPathComponent:[current bundleIdentifier]]; NSBundle *framework = [NSBundle bundleWithPath:frameworkPath]; path = [framework pathForResource:@"SUAutomaticUpdateAlert" ofType:@"nib"]; } Modified: trunk/vendorsrc/andymatuschak/Sparkle/SUStatusController.m =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/SUStatusController.m 2007-04-17 13:16:49 UTC (rev 1837) +++ trunk/vendorsrc/andymatuschak/Sparkle/SUStatusController.m 2007-04-17 13:44:34 UTC (rev 1838) @@ -17,7 +17,9 @@ if (!path) // slight hack to resolve issues with running in debug configurations { NSBundle *current = [NSBundle bundleForClass:[self class]]; - NSString *frameworkPath = [[[NSBundle mainBundle] sharedFrameworksPath] stringByAppendingFormat:@"/Sparkle.framework", [current bundleIdentifier]]; + NSString *frameworkPath = [[NSBundle mainBundle] sharedFrameworksPath]; + frameworkPath = [frameworkPath stringByAppendingPathComponent:@"Sparkle.framework"]; + frameworkPath = [frameworkPath stringByAppendingPathComponent:[current bundleIdentifier]]; NSBundle *framework = [NSBundle bundleWithPath:frameworkPath]; path = [framework pathForResource:@"SUStatus" ofType:@"nib"]; } Modified: trunk/vendorsrc/andymatuschak/Sparkle/SUUnarchiver.m =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/SUUnarchiver.m 2007-04-17 13:16:49 UTC (rev 1837) +++ trunk/vendorsrc/andymatuschak/Sparkle/SUUnarchiver.m 2007-04-17 13:44:34 UTC (rev 1838) @@ -24,10 +24,10 @@ long current = 0; FILE *fp, *cmdFP; sig_t oldSigPipeHandler = signal(SIGPIPE, SIG_IGN); - if ((fp = fopen([archivePath UTF8String], "r"))) + if ((fp = fopen([archivePath fileSystemRepresentation], "r"))) { - setenv("DESTINATION", [[archivePath stringByDeletingLastPathComponent] UTF8String], 1); - if ((cmdFP = popen([command cString], "w"))) + setenv("DESTINATION", [[archivePath stringByDeletingLastPathComponent] fileSystemRepresentation], 1); + if ((cmdFP = popen([command fileSystemRepresentation], "w"))) { char buf[32*1024]; long len; @@ -90,21 +90,49 @@ return YES; } +static CFStringRef CopyUTIForPath(NSString *path) +{ + FSRef fileRef; + OSStatus err = noErr; + + NSURL *fileURL = [NSURL fileURLWithPath:path]; + + if (FALSE == CFURLGetFSRef((CFURLRef)fileURL, &fileRef)) + err = coreFoundationUnknownErr; + + CFTypeRef theUTI = NULL; + if (noErr == err) + err = LSCopyItemAttribute(&fileRef, kLSRolesAll, kLSItemContentType, &theUTI); + + return theUTI; +} + - (void)_unarchivePath:(NSString *)path { NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - // This dictionary associates names of methods responsible for extraction with file extensions. - // The methods take the path of the archive to extract. They return a BOOL indicating whether - // we should continue with the update; returns NO if an error occurred. - NSDictionary *commandDictionary = [NSDictionary dictionaryWithObjectsAndKeys: - @"_extractTBZ:", @"tbz", - @"_extractTGZ:", @"tgz", - @"_extractTAR:", @"tar", - @"_extractZIP:", @"zip", - @"_extractDMG:", @"dmg", nil]; - SEL command = NSSelectorFromString([commandDictionary objectForKey:[path pathExtension]]); + CFStringRef theUTI = CopyUTIForPath(path); + SEL command = NULL; + // look up selector based on UTI; previous version used a case-sensitive dictionary lookup of file extension + if (theUTI) + { + if (UTTypeConformsTo(theUTI, CFSTR("org.gnu-zip-tar-archive"))) + command = @selector(_extractTGZ:); + else if (UTTypeConformsTo(theUTI, CFSTR("public.tar-archive"))) + command = @selector(_extractTAR:); + else if (UTTypeConformsTo(theUTI, CFSTR("com.pkware.zip-archive"))) + command = @selector(_extractZIP:); + else if (UTTypeConformsTo(theUTI, kUTTypeDiskImage)) + command = @selector(_extractDMG:); + else if ([[[path pathExtension] lowercaseString] isEqualToString:@"tbz"]) + command = @selector(_extractTBZ:); + else + NSLog(@"Unknown file type at path %@", path); + + CFRelease(theUTI); + } + BOOL result; if (command) { Modified: trunk/vendorsrc/andymatuschak/Sparkle/SUUpdateAlert.m =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/SUUpdateAlert.m 2007-04-17 13:16:49 UTC (rev 1837) +++ trunk/vendorsrc/andymatuschak/Sparkle/SUUpdateAlert.m 2007-04-17 13:44:34 UTC (rev 1838) @@ -19,7 +19,9 @@ if (!path) // slight hack to resolve issues with running with in configurations { NSBundle *current = [NSBundle bundleForClass:[self class]]; - NSString *frameworkPath = [[[NSBundle mainBundle] sharedFrameworksPath] stringByAppendingFormat:@"/Sparkle.framework", [current bundleIdentifier]]; + NSString *frameworkPath = [[NSBundle mainBundle] sharedFrameworksPath]; + frameworkPath = [frameworkPath stringByAppendingPathComponent:@"Sparkle.framework"]; + frameworkPath = [frameworkPath stringByAppendingPathComponent:[current bundleIdentifier]]; NSBundle *framework = [NSBundle bundleWithPath:frameworkPath]; path = [framework pathForResource:@"SUUpdateAlert" ofType:@"nib"]; } Modified: trunk/vendorsrc/andymatuschak/Sparkle/SUUpdater.m =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/SUUpdater.m 2007-04-17 13:16:49 UTC (rev 1837) +++ trunk/vendorsrc/andymatuschak/Sparkle/SUUpdater.m 2007-04-17 13:44:34 UTC (rev 1838) @@ -26,8 +26,13 @@ #import <signal.h> #import <dirent.h> +#define kNetworkConnectionFailed 10 + @interface SUUpdater (Private) +- (NSURL *)appcastURL; - (void)checkForUpdatesAndNotify:(BOOL)verbosity; +- (BOOL)checkForNetworkAvailability:(NSError **)error; +- (BOOL)attemptRecoveryFromError:(NSError *)error optionIndex:(unsigned int)recoveryOptionIndex; - (void)showUpdateErrorAlertWithInfo:(NSString *)info; - (NSTimeInterval)storedCheckInterval; - (void)abandonUpdate; @@ -97,7 +102,12 @@ } else { - shouldCheckAtStartup = [NSNumber numberWithBool:NSRunAlertPanel(SULocalizedString(@"Check for updates on startup?", nil), [NSString stringWithFormat:SULocalizedString(@"Would you like %@ to check for updates on startup? If not, you can initiate the check manually from the application menu.", nil), SUHostAppDisplayName()], SULocalizedString(@"Yes", nil), SULocalizedString(@"No", nil), nil) == NSAlertDefaultReturn]; + NSAlert *alert = [NSAlert alertWithMessageText:SULocalizedString(@"Check for updates on startup?", nil) + defaultButton:SULocalizedString(@"Yes", nil) + alternateButton:SULocalizedString(@"No", nil) + otherButton:nil + informativeTextWithFormat:[NSString stringWithFormat:SULocalizedString(@"Would you like %@ to check for updates on startup? If not, you can initiate the check manually from the application menu.", nil), SUHostAppDisplayName()]]; + shouldCheckAtStartup = [NSNumber numberWithBool:([alert runModal] == NSAlertDefaultReturn)]; } [[NSUserDefaults standardUserDefaults] setObject:shouldCheckAtStartup forKey:SUCheckAtStartupKey]; } @@ -123,6 +133,24 @@ [super dealloc]; } +- (BOOL)validateMenuItem:(NSMenuItem *)anItem +{ + if ([anItem action] == @selector(checkForUpdates:)) + return (updateInProgress == NO); + else + return YES; +} + +- (NSURL *)appcastURL +{ + // A value in the user defaults overrides one in the Info.plist (so preferences panels can be created wherein users choose between beta / release feeds). + NSString *appcastString = [[NSUserDefaults standardUserDefaults] objectForKey:SUFeedURLKey]; + if (!appcastString) + appcastString = SUInfoValueForKey(SUFeedURLKey); + NSAssert(nil != appcastString, @"No feed URL is specified in the Info.plist or the user defaults!"); + return [NSURL URLWithString:appcastString]; +} + - (void)checkForUpdatesInBackground { [self checkForUpdatesAndNotify:NO]; @@ -137,32 +165,24 @@ // This is generally useful for a menu item--when the check is explicitly invoked. - (void)checkForUpdatesAndNotify:(BOOL)verbosity { - if (updateInProgress) - { - if (verbosity) + if (NO == updateInProgress) { + + NSError *nsError; + if ([self checkForNetworkAvailability:&nsError] == NO) { - NSBeep(); - if ([[statusController window] isVisible]) - [statusController showWindow:self]; - else if ([[updateAlert window] isVisible]) - [updateAlert showWindow:self]; - else - [self showUpdateErrorAlertWithInfo:SULocalizedString(@"An update is already in progress!", nil)]; + if (verbosity) + [NSApp presentError:nsError]; } - return; + else + { + verbose = verbosity; + updateInProgress = YES; + + SUAppcast *appcast = [[SUAppcast alloc] init]; + [appcast setDelegate:self]; + [appcast fetchAppcastFromURL:[self appcastURL]]; + } } - verbose = verbosity; - updateInProgress = YES; - - // A value in the user defaults overrides one in the Info.plist (so preferences panels can be created wherein users choose between beta / release feeds). - NSString *appcastString = [[NSUserDefaults standardUserDefaults] objectForKey:SUFeedURLKey]; - if (!appcastString) - appcastString = SUInfoValueForKey(SUFeedURLKey); - if (!appcastString) { [NSException raise:@"SUNoFeedURL" format:@"No feed URL is specified in the Info.plist or the user defaults!"]; } - - SUAppcast *appcast = [[SUAppcast alloc] init]; - [appcast setDelegate:self]; - [appcast fetchAppcastFromURL:[NSURL URLWithString:appcastString]]; } - (BOOL)automaticallyUpdates @@ -177,10 +197,86 @@ return [self automaticallyUpdates] && !verbose; } +- (BOOL)checkForNetworkAvailability:(NSError **)error +{ + CFURLRef theURL = (CFURLRef)[self appcastURL]; + CFNetDiagnosticRef diagnostic = CFNetDiagnosticCreateWithURL(CFGetAllocator(theURL), theURL); + + NSString *details; + CFNetDiagnosticStatus status = CFNetDiagnosticCopyNetworkStatusPassively(diagnostic, (CFStringRef *)&details); + CFRelease(diagnostic); + [details autorelease]; + + BOOL success; + + if (kCFNetDiagnosticConnectionUp == status) + { + success = YES; + } + else + { + if (nil == details) details = SULocalizedString(@"Unknown network error", nil); + + // This error contains all the information needed for NSErrorRecoveryAttempting. + // Note that buttons in the alert will be ordered right-to-left {0, 1, 2} and correspond to objects in the NSLocalizedRecoveryOptionsErrorKey array. + if (error) + { + NSArray *recoveryOptions = [NSArray arrayWithObjects:SULocalizedString(@"Ignore", nil), SULocalizedString(@"Diagnose", nil), SULocalizedString(@"Open Console", nil), nil]; + + *error = [NSError errorWithDomain:SUInfoValueForKey((id)kCFBundleIdentifierKey) code:kNetworkConnectionFailed userInfo:[NSDictionary dictionaryWithObjectsAndKeys:self, NSRecoveryAttempterErrorKey, details, NSLocalizedDescriptionKey, SULocalizedString(@"Would you like to ignore this problem or attempt to diagnose it? You may also open the Console log to check for errors.", nil), NSLocalizedRecoverySuggestionErrorKey, recoveryOptions, NSLocalizedRecoveryOptionsErrorKey, nil]]; + } + success = NO; + } + + return success; +} + +// Recovery attempter is called if we're doing an interactive check and the network is not available +- (BOOL)attemptRecoveryFromError:(NSError *)error optionIndex:(unsigned int)recoveryOptionIndex +{ + BOOL didRecover = NO; + + // we only receive this for a single error at present + if ([error code] == kNetworkConnectionFailed) + { + if (0 == recoveryOptionIndex) + { + // ignore + didRecover = NO; + + } + else if (1 == recoveryOptionIndex) + { + // diagnose + CFURLRef theURL = (CFURLRef)[self appcastURL]; + CFNetDiagnosticRef diagnostic = CFNetDiagnosticCreateWithURL(CFGetAllocator(theURL), theURL); + CFNetDiagnosticStatus status = CFNetDiagnosticDiagnoseProblemInteractively(diagnostic); + CFRelease(diagnostic); + didRecover = (status == kCFNetDiagnosticNoErr); + + } + else if (2 == recoveryOptionIndex) + { + // open console + didRecover = [[NSWorkspace sharedWorkspace] launchAppWithBundleIdentifier:@"com.apple.console" options:0 additionalEventParamDescriptor:nil launchIdentifier:NULL]; + } + } + else + { + didRecover = NO; + } + + return didRecover; +} + - (void)showUpdateErrorAlertWithInfo:(NSString *)info { if ([self isAutomaticallyUpdating]) { return; } - NSRunAlertPanel(SULocalizedString(@"Update Error!", nil), info, NSLocalizedString(@"Cancel", nil), nil, nil); + NSAlert *alert = [[[NSAlert alloc] init] autorelease]; + [alert setMessageText:SULocalizedString(@"Update Error!", nil)]; + [alert setInformativeText:info]; + [alert addButtonWithTitle:SULocalizedString(@"Cancel", @"")]; + [alert runModal]; } - (NSTimeInterval)storedCheckInterval @@ -202,8 +298,8 @@ if (![self isAutomaticallyUpdating]) { statusController = [[SUStatusController alloc] init]; - [statusController beginActionWithTitle:SULocalizedString(@"Downloading update...", nil) maxProgressValue:0 statusText:nil]; - [statusController setButtonTitle:NSLocalizedString(@"Cancel", nil) target:self action:@selector(cancelDownload:) isDefault:NO]; + [statusController beginActionWithTitle:SUStringByAppendingEllipsis(SULocalizedString(@"Downloading update", nil)) maxProgressValue:0 statusText:nil]; + [statusController setButtonTitle:SULocalizedString(@"Cancel", nil) target:self action:@selector(cancelDownload:) isDefault:NO]; [statusController showWindow:self]; } @@ -272,26 +368,39 @@ - (void)appcastDidFinishLoading:(SUAppcast *)ac { - @try + BOOL failed = NO; + if (nil == ac) { - if (!ac) { [NSException raise:@"SUAppcastException" format:@"Couldn't get a valid appcast from the server."]; } + failed = YES; + NSLog(@"Couldn't get a valid appcast from the server."); + } - updateItem = [[ac newestItem] retain]; - [ac autorelease]; + updateItem = [[ac newestItem] retain]; + [ac release]; + if (!failed) + { // Record the time of the check for host app use and for interval checks on startup. [[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:SULastCheckTimeKey]; + } + else if (nil == [updateItem fileVersion]) + { + NSLog(@"Can't extract a version string from the appcast feed. The filenames should look like YourApp_1.5.tgz, where 1.5 is the version number."); + } - if (![updateItem fileVersion]) - { - [NSException raise:@"SUAppcastException" format:@"Can't extract a version string from the appcast feed. The filenames should look like YourApp_1.5.tgz, where 1.5 is the version number."]; - } + if (!verbose && [[[NSUserDefaults standardUserDefaults] objectForKey:SUSkippedVersionKey] isEqualToString:[updateItem fileVersion]]) { + updateInProgress = NO; + return; + } - if (!verbose && [[[NSUserDefaults standardUserDefaults] objectForKey:SUSkippedVersionKey] isEqualToString:[updateItem fileVersion]]) { updateInProgress = NO; return; } - + if (!failed) + { + if ([self newVersionAvailable]) { - if (checkTimer) // There's a new version! Let's disable the automated checking timer unless the user cancels. + + // There's a new version! Let's disable the automated checking timer unless the user cancels. + if (checkTimer) { [checkTimer invalidate]; checkTimer = nil; @@ -308,16 +417,21 @@ } else { - if (verbose) // We only notify on no new version when we're being verbose. + // We only notify on no new version when we're being verbose. + if (verbose) { - NSRunAlertPanel(SULocalizedString(@"You're up to date!", nil), [NSString stringWithFormat:SULocalizedString(@"%@ %@ is currently the newest version available.", nil), SUHostAppDisplayName(), SUHostAppVersionString()], NSLocalizedString(@"OK", nil), nil, nil); + NSAlert *alert = [[NSAlert new] autorelease]; + [alert setMessageText:SULocalizedString(@"You're up to date!", nil)]; + [alert setInformativeText:[NSString stringWithFormat:SULocalizedString(@"%@ %@ is currently the newest version available.", nil), SUHostAppDisplayName(), SUHostAppVersionString()]]; + [alert addButtonWithTitle:SULocalizedString(@"OK", nil)]; + [alert runModal]; } updateInProgress = NO; } } - @catch (NSException *e) + + if(failed) { - NSLog([e reason]); updateInProgress = NO; if (verbose) [self showUpdateErrorAlertWithInfo:SULocalizedString(@"An error occurred in retrieving update information. Please try again later.", nil)]; @@ -331,24 +445,20 @@ - (void)download:(NSURLDownload *)download decideDestinationWithSuggestedFilename:(NSString *)name { - // If name ends in .txt, the server probably has a stupid MIME configuration. We'll give - // the developer the benefit of the doubt and chop that off. - if ([[name pathExtension] isEqualToString:@"txt"]) - name = [name stringByDeletingPathExtension]; - // We create a temporary directory in /tmp and stick the file there. NSString *tempDir = [NSTemporaryDirectory() stringByAppendingPathComponent:[[NSProcessInfo processInfo] globallyUniqueString]]; - BOOL success = [[NSFileManager defaultManager] createDirectoryAtPath:tempDir attributes:nil]; - if (!success) + if ([[NSFileManager defaultManager] createDirectoryAtPath:tempDir attributes:nil]) { - [NSException raise:@"SUFailTmpWrite" format:@"Couldn't create temporary directory in /tmp"]; + [downloadPath autorelease]; + downloadPath = [[tempDir stringByAppendingPathComponent:name] retain]; + [download setDestination:downloadPath allowOverwrite:YES]; + } + else + { + NSLog(@"Failed to create temporary directory %@", tempDir); [download cancel]; [download release]; } - - [downloadPath autorelease]; - downloadPath = [[tempDir stringByAppendingPathComponent:name] retain]; - [download setDestination:downloadPath allowOverwrite:YES]; } - (void)download:(NSURLDownload *)download didReceiveDataOfLength:(unsigned)length @@ -393,32 +503,38 @@ { // Now we have to extract the downloaded archive. if (![self isAutomaticallyUpdating]) - [statusController beginActionWithTitle:SULocalizedString(@"Extracting update...", nil) maxProgressValue:0 statusText:nil]; + [statusController beginActionWithTitle:SUStringByAppendingEllipsis(SULocalizedString(@"Extracting update", nil)) maxProgressValue:0 statusText:nil]; - @try + BOOL failed = NO; + + // If the developer's provided a sparkle:md5Hash attribute on the enclosure, let's verify that. + if ([updateItem MD5Sum] && ![[NSFileManager default... [truncated message content] |
From: <ho...@us...> - 2007-04-17 13:16:50
|
Revision: 1837 http://skim-app.svn.sourceforge.net/skim-app/?rev=1837&view=rev Author: hofman Date: 2007-04-17 06:16:49 -0700 (Tue, 17 Apr 2007) Log Message: ----------- Apply improvements from Adam to sparkle source. Use NSXMLDocument to parse the appcast. Avoid exceptions. Don't use triple dot. Use NSAlert API. Check for network availability. Update english and dutch localized strings. Check for symlink or alias instead of an item named Applications. Modified Paths: -------------- trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/Sparkle.strings Modified: trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/Sparkle.strings =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-04-17 08:46:32
|
Revision: 1836 http://skim-app.svn.sourceforge.net/skim-app/?rev=1836&view=rev Author: hofman Date: 2007-04-17 01:46:31 -0700 (Tue, 17 Apr 2007) Log Message: ----------- Remove testing code. Modified Paths: -------------- trunk/SKMainWindowController.m Modified: trunk/SKMainWindowController.m =================================================================== --- trunk/SKMainWindowController.m 2007-04-16 22:26:18 UTC (rev 1835) +++ trunk/SKMainWindowController.m 2007-04-17 08:46:31 UTC (rev 1836) @@ -112,21 +112,6 @@ - (id)initWithWindowNibName:(NSString *)windowNibName owner:(id)owner{ self = [super initWithWindowNibName:windowNibName owner:owner]; - NSColor *color; - color = [[[[SKPDFAnnotationFreeText alloc] initWithBounds:NSZeroRect] autorelease] color]; - [[NSUserDefaults standardUserDefaults] setObject:[NSArchiver archivedDataWithRootObject:color] forKey:@"SKFreeTextNoteColorKey"]; - color = [[[[SKPDFAnnotationNote alloc] initWithBounds:NSZeroRect] autorelease] color]; - [[NSUserDefaults standardUserDefaults] setObject:[NSArchiver archivedDataWithRootObject:color] forKey:@"SKAnchoredNoteColorKey"]; - color = [[[[SKPDFAnnotationCircle alloc] initWithBounds:NSZeroRect] autorelease] color]; - [[NSUserDefaults standardUserDefaults] setObject:[NSArchiver archivedDataWithRootObject:color] forKey:@"SKCircleNoteColorKey"]; - color = [[[[SKPDFAnnotationSquare alloc] initWithBounds:NSZeroRect] autorelease] color]; - [[NSUserDefaults standardUserDefaults] setObject:[NSArchiver archivedDataWithRootObject:color] forKey:@"SKSquareNoteColorKey"]; - color = [[[[SKPDFAnnotationMarkup alloc] initWithBounds:NSZeroRect markupType:kPDFMarkupTypeHighlight quadrilateralPointsAsStrings:nil] autorelease] color]; - [[NSUserDefaults standardUserDefaults] setObject:[NSArchiver archivedDataWithRootObject:color] forKey:@"SKHighlightNoteColorKey"]; - color = [[[[SKPDFAnnotationMarkup alloc] initWithBounds:NSZeroRect markupType:kPDFMarkupTypeUnderline quadrilateralPointsAsStrings:nil] autorelease] color]; - [[NSUserDefaults standardUserDefaults] setObject:[NSArchiver archivedDataWithRootObject:color] forKey:@"SKUnderlineNoteColorKey"]; - color = [[[[SKPDFAnnotationMarkup alloc] initWithBounds:NSZeroRect markupType:kPDFMarkupTypeStrikeOut quadrilateralPointsAsStrings:nil] autorelease] color]; - [[NSUserDefaults standardUserDefaults] setObject:[NSArchiver archivedDataWithRootObject:color] forKey:@"SKStrikeOutNoteColorKey"]; if(self){ [self setShouldCloseDocument:YES]; isPresentation = NO; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ama...@us...> - 2007-04-16 22:26:22
|
Revision: 1835 http://skim-app.svn.sourceforge.net/skim-app/?rev=1835&view=rev Author: amaxwell Date: 2007-04-16 15:26:18 -0700 (Mon, 16 Apr 2007) Log Message: ----------- fix comment Modified Paths: -------------- trunk/SKMainWindowController.m Modified: trunk/SKMainWindowController.m =================================================================== --- trunk/SKMainWindowController.m 2007-04-16 22:22:58 UTC (rev 1834) +++ trunk/SKMainWindowController.m 2007-04-16 22:26:18 UTC (rev 1835) @@ -2013,7 +2013,7 @@ if (item == nil){ if ((pdfOutline) && ([[pdfView document] isLocked] == NO)){ #warning leaks - // arm: This return and the one just below that retain the item are necessary to prevent a crash (and appear in Apple's sample code), but MallocDebug says we're leaking them when the doc is closed. Can someone explain this? + // arm: This retain and the one just below are necessary to prevent a crash (and appear in Apple's sample code), but MallocDebug says we're leaking them when the doc is closed. Can someone explain this? return [[pdfOutline childAtIndex: index] retain]; }else{ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ama...@us...> - 2007-04-16 22:22:59
|
Revision: 1834 http://skim-app.svn.sourceforge.net/skim-app/?rev=1834&view=rev Author: amaxwell Date: 2007-04-16 15:22:58 -0700 (Mon, 16 Apr 2007) Log Message: ----------- - Fix leak of toolbarItems dictionary. - Invalidate timers when the window closes, since they'll prevent -dealloc from being called and cause a crash if thumbnails are rendering when the doc is closed. - Add a warning of another leak from MallocDebug, and a comment. If anyone can clarify the memory management here, please do so. Modified Paths: -------------- trunk/SKMainWindowController.m Modified: trunk/SKMainWindowController.m =================================================================== --- trunk/SKMainWindowController.m 2007-04-16 21:20:32 UTC (rev 1833) +++ trunk/SKMainWindowController.m 2007-04-16 22:22:58 UTC (rev 1834) @@ -149,22 +149,6 @@ [[NSNotificationCenter defaultCenter] removeObserver: self]; [self unregisterAsObserver]; - - if (thumbnailTimer) { - [thumbnailTimer invalidate]; - [thumbnailTimer release]; - thumbnailTimer = nil; - } - if (snapshotTimer) { - [snapshotTimer invalidate]; - [snapshotTimer release]; - snapshotTimer = nil; - } - if (findTimer) { - [findTimer invalidate]; - [findTimer release]; - findTimer = nil; - } [(id)temporaryAnnotations release]; [dirtyThumbnails release]; [dirtySnapshots release]; @@ -178,6 +162,7 @@ [rightSideWindow release]; [fullScreenWindow release]; [mainWindow release]; + [toolbarItems release]; [super dealloc]; } @@ -446,6 +431,23 @@ NSString *path = [[[self document] fileURL] path]; if (pageIndex != NSNotFound && path) [[SKBookmarkController sharedBookmarkController] addRecentDocumentForPath:path pageIndex:pageIndex]; + + // timers retain their target, so invalidate them now or they may keep firing after the PDF is gone + if (thumbnailTimer) { + [thumbnailTimer invalidate]; + [thumbnailTimer release]; + thumbnailTimer = nil; + } + if (snapshotTimer) { + [snapshotTimer invalidate]; + [snapshotTimer release]; + snapshotTimer = nil; + } + if (findTimer) { + [findTimer invalidate]; + [findTimer release]; + findTimer = nil; + } } } @@ -2010,7 +2012,8 @@ if ([ov isEqual:outlineView]) { if (item == nil){ if ((pdfOutline) && ([[pdfView document] isLocked] == NO)){ - +#warning leaks + // arm: This return and the one just below that retain the item are necessary to prevent a crash (and appear in Apple's sample code), but MallocDebug says we're leaking them when the doc is closed. Can someone explain this? return [[pdfOutline childAtIndex: index] retain]; }else{ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-04-16 21:20:35
|
Revision: 1833 http://skim-app.svn.sourceforge.net/skim-app/?rev=1833&view=rev Author: hofman Date: 2007-04-16 14:20:32 -0700 (Mon, 16 Apr 2007) Log Message: ----------- Remove personal files Removed Paths: ------------- trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.mode1 trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.pbxuser Deleted: trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.mode1 =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.mode1 2007-04-16 21:17:17 UTC (rev 1832) +++ trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.mode1 2007-04-16 21:20:32 UTC (rev 1833) @@ -1,1328 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!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>ActivePerspectiveName</key> - <string>Project</string> - <key>AllowedModules</key> - <array> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXSmartGroupTreeModule</string> - <key>Name</key> - <string>Groups and Files Outline View</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXNavigatorGroup</string> - <key>Name</key> - <string>Editor</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>XCTaskListModule</string> - <key>Name</key> - <string>Task List</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>XCDetailModule</string> - <key>Name</key> - <string>File and Smart Group Detail Viewer</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>1</string> - <key>Module</key> - <string>PBXBuildResultsModule</string> - <key>Name</key> - <string>Detailed Build Results Viewer</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>1</string> - <key>Module</key> - <string>PBXProjectFindModule</string> - <key>Name</key> - <string>Project Batch Find Tool</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXRunSessionModule</string> - <key>Name</key> - <string>Run Log</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXBookmarksModule</string> - <key>Name</key> - <string>Bookmarks Tool</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXClassBrowserModule</string> - <key>Name</key> - <string>Class Browser</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXCVSModule</string> - <key>Name</key> - <string>Source Code Control Tool</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXDebugBreakpointsModule</string> - <key>Name</key> - <string>Debug Breakpoints Tool</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>XCDockableInspector</string> - <key>Name</key> - <string>Inspector</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXOpenQuicklyModule</string> - <key>Name</key> - <string>Open Quickly Tool</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>1</string> - <key>Module</key> - <string>PBXDebugSessionModule</string> - <key>Name</key> - <string>Debugger</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>1</string> - <key>Module</key> - <string>PBXDebugCLIModule</string> - <key>Name</key> - <string>Debug Console</string> - </dict> - </array> - <key>Description</key> - <string>DefaultDescriptionKey</string> - <key>DockingSystemVisible</key> - <false/> - <key>Extension</key> - <string>mode1</string> - <key>FavBarConfig</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>CE2BD8130BD4117400A5F4DB</string> - <key>XCBarModuleItemNames</key> - <dict/> - <key>XCBarModuleItems</key> - <array/> - </dict> - <key>FirstTimeWindowDisplayed</key> - <false/> - <key>Identifier</key> - <string>com.apple.perspectives.project.mode1</string> - <key>MajorVersion</key> - <integer>31</integer> - <key>MinorVersion</key> - <integer>1</integer> - <key>Name</key> - <string>Default</string> - <key>Notifications</key> - <array/> - <key>OpenEditors</key> - <array/> - <key>PerspectiveWidths</key> - <array> - <integer>-1</integer> - <integer>-1</integer> - </array> - <key>Perspectives</key> - <array> - <dict> - <key>ChosenToolbarItems</key> - <array> - <string>active-target-popup</string> - <string>action</string> - <string>NSToolbarFlexibleSpaceItem</string> - <string>buildOrClean</string> - <string>build-and-runOrDebug</string> - <string>com.apple.ide.PBXToolbarStopButton</string> - <string>get-info</string> - <string>toggle-editor</string> - <string>NSToolbarFlexibleSpaceItem</string> - <string>com.apple.pbx.toolbar.searchfield</string> - </array> - <key>ControllerClassBaseName</key> - <string></string> - <key>IconName</key> - <string>WindowOfProjectWithEditor</string> - <key>Identifier</key> - <string>perspective.project</string> - <key>IsVertical</key> - <false/> - <key>Layout</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXBottomSmartGroupGIDs</key> - <array> - <string>1C37FBAC04509CD000000102</string> - <string>1C37FAAC04509CD000000102</string> - <string>1C08E77C0454961000C914BD</string> - <string>1C37FABC05509CD000000102</string> - <string>1C37FABC05539CD112110102</string> - <string>E2644B35053B69B200211256</string> - <string>1C37FABC04509CD000100104</string> - <string>1CC0EA4004350EF90044410B</string> - <string>1CC0EA4004350EF90041110B</string> - </array> - <key>PBXProjectModuleGUID</key> - <string>1CE0B1FE06471DED0097A5F4</string> - <key>PBXProjectModuleLabel</key> - <string>Files</string> - <key>PBXProjectStructureProvided</key> - <string>yes</string> - <key>PBXSmartGroupTreeModuleColumnData</key> - <dict> - <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> - <array> - <real>186</real> - </array> - <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> - <array> - <string>MainColumn</string> - </array> - </dict> - <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> - <dict> - <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> - <array> - <string>0867D691FE84028FC02AAC07</string> - <string>089C1665FE841158C02AAC07</string> - <string>1C37FABC05509CD000000102</string> - </array> - <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> - <array> - <array> - <integer>2</integer> - <integer>0</integer> - </array> - </array> - <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {186, 338}}</string> - </dict> - <key>PBXTopSmartGroupGIDs</key> - <array/> - <key>XCIncludePerspectivesSwitch</key> - <true/> - <key>XCSharingToken</key> - <string>com.apple.Xcode.GFSharingToken</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {203, 356}}</string> - <key>GroupTreeTableConfiguration</key> - <array> - <string>MainColumn</string> - <real>186</real> - </array> - <key>RubberWindowFrame</key> - <string>166 356 690 397 0 0 1440 938 </string> - </dict> - <key>Module</key> - <string>PBXSmartGroupTreeModule</string> - <key>Proportion</key> - <string>203pt</string> - </dict> - <dict> - <key>Dock</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CE0B20306471E060097A5F4</string> - <key>PBXProjectModuleLabel</key> - <string>MyNewFile14.java</string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CE0B20406471E060097A5F4</string> - <key>PBXProjectModuleLabel</key> - <string>MyNewFile14.java</string> - </dict> - <key>SplitCount</key> - <string>1</string> - </dict> - <key>StatusBarVisibility</key> - <true/> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {482, 0}}</string> - <key>RubberWindowFrame</key> - <string>166 356 690 397 0 0 1440 938 </string> - </dict> - <key>Module</key> - <string>PBXNavigatorGroup</string> - <key>Proportion</key> - <string>0pt</string> - </dict> - <dict> - <key>BecomeActive</key> - <true/> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CE0B20506471E060097A5F4</string> - <key>PBXProjectModuleLabel</key> - <string>Detail</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 5}, {482, 351}}</string> - <key>RubberWindowFrame</key> - <string>166 356 690 397 0 0 1440 938 </string> - </dict> - <key>Module</key> - <string>XCDetailModule</string> - <key>Proportion</key> - <string>351pt</string> - </dict> - </array> - <key>Proportion</key> - <string>482pt</string> - </dict> - </array> - <key>Name</key> - <string>Project</string> - <key>ServiceClasses</key> - <array> - <string>XCModuleDock</string> - <string>PBXSmartGroupTreeModule</string> - <string>XCModuleDock</string> - <string>PBXNavigatorGroup</string> - <string>XCDetailModule</string> - </array> - <key>TableOfContents</key> - <array> - <string>CE2BDB970BD4180900A5F4DB</string> - <string>1CE0B1FE06471DED0097A5F4</string> - <string>CE2BDB980BD4180900A5F4DB</string> - <string>1CE0B20306471E060097A5F4</string> - <string>1CE0B20506471E060097A5F4</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.default</string> - </dict> - <dict> - <key>ControllerClassBaseName</key> - <string></string> - <key>IconName</key> - <string>WindowOfProject</string> - <key>Identifier</key> - <string>perspective.morph</string> - <key>IsVertical</key> - <integer>0</integer> - <key>Layout</key> - <array> - <dict> - <key>BecomeActive</key> - <integer>1</integer> - <key>ContentConfiguration</key> - <dict> - <key>PBXBottomSmartGroupGIDs</key> - <array> - <string>1C37FBAC04509CD000000102</string> - <string>1C37FAAC04509CD000000102</string> - <string>1C08E77C0454961000C914BD</string> - <string>1C37FABC05509CD000000102</string> - <string>1C37FABC05539CD112110102</string> - <string>E2644B35053B69B200211256</string> - <string>1C37FABC04509CD000100104</string> - <string>1CC0EA4004350EF90044410B</string> - <string>1CC0EA4004350EF90041110B</string> - </array> - <key>PBXProjectModuleGUID</key> - <string>11E0B1FE06471DED0097A5F4</string> - <key>PBXProjectModuleLabel</key> - <string>Files</string> - <key>PBXProjectStructureProvided</key> - <string>yes</string> - <key>PBXSmartGroupTreeModuleColumnData</key> - <dict> - <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> - <array> - <real>186</real> - </array> - <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> - <array> - <string>MainColumn</string> - </array> - </dict> - <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> - <dict> - <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> - <array> - <string>29B97314FDCFA39411CA2CEA</string> - <string>1C37FABC05509CD000000102</string> - </array> - <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> - <array> - <array> - <integer>0</integer> - </array> - </array> - <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {186, 337}}</string> - </dict> - <key>PBXTopSmartGroupGIDs</key> - <array/> - <key>XCIncludePerspectivesSwitch</key> - <integer>1</integer> - <key>XCSharingToken</key> - <string>com.apple.Xcode.GFSharingToken</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {203, 355}}</string> - <key>GroupTreeTableConfiguration</key> - <array> - <string>MainColumn</string> - <real>186</real> - </array> - <key>RubberWindowFrame</key> - <string>373 269 690 397 0 0 1440 878 </string> - </dict> - <key>Module</key> - <string>PBXSmartGroupTreeModule</string> - <key>Proportion</key> - <string>100%</string> - </dict> - </array> - <key>Name</key> - <string>Morph</string> - <key>PreferredWidth</key> - <integer>300</integer> - <key>ServiceClasses</key> - <array> - <string>XCModuleDock</string> - <string>PBXSmartGroupTreeModule</string> - </array> - <key>TableOfContents</key> - <array> - <string>11E0B1FE06471DED0097A5F4</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.default.short</string> - </dict> - </array> - <key>PerspectivesBarVisible</key> - <false/> - <key>ShelfIsVisible</key> - <false/> - <key>SourceDescription</key> - <string>file at '/System/Library/PrivateFrameworks/DevToolsInterface.framework/Versions/A/Resources/XCPerspectivesSpecificationMode1.xcperspec'</string> - <key>StatusbarIsVisible</key> - <true/> - <key>TimeStamp</key> - <real>0.0</real> - <key>ToolbarDisplayMode</key> - <integer>2</integer> - <key>ToolbarIsVisible</key> - <true/> - <key>ToolbarSizeMode</key> - <integer>1</integer> - <key>Type</key> - <string>Perspectives</string> - <key>UpdateMessage</key> - <string>The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'?</string> - <key>WindowJustification</key> - <integer>5</integer> - <key>WindowOrderList</key> - <array> - <string>CE2BD8280BD412B800A5F4DB</string> - <string>/Users/hofman/Documents/Skim/trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj</string> - </array> - <key>WindowString</key> - <string>166 356 690 397 0 0 1440 938 </string> - <key>WindowTools</key> - <array> - <dict> - <key>FirstTimeWindowDisplayed</key> - <false/> - <key>Identifier</key> - <string>windowTool.build</string> - <key>IsVertical</key> - <true/> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CD0528F0623707200166675</string> - <key>PBXProjectModuleLabel</key> - <string></string> - <key>StatusBarVisibility</key> - <true/> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {500, 218}}</string> - <key>RubberWindowFrame</key> - <string>154 340 500 500 0 0 1440 938 </string> - </dict> - <key>Module</key> - <string>PBXNavigatorGroup</string> - <key>Proportion</key> - <string>218pt</string> - </dict> - <dict> - <key>BecomeActive</key> - <true/> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>XCMainBuildResultsModuleGUID</string> - <key>PBXProjectModuleLabel</key> - <string>Build</string> - <key>XCBuildResultsTrigger_Collapse</key> - <integer>1021</integer> - <key>XCBuildResultsTrigger_Open</key> - <integer>1011</integer> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 223}, {500, 236}}</string> - <key>RubberWindowFrame</key> - <string>154 340 500 500 0 0 1440 938 </string> - </dict> - <key>Module</key> - <string>PBXBuildResultsModule</string> - <key>Proportion</key> - <string>236pt</string> - </dict> - </array> - <key>Proportion</key> - <string>459pt</string> - </dict> - </array> - <key>Name</key> - <string>Build Results</string> - <key>ServiceClasses</key> - <array> - <string>PBXBuildResultsModule</string> - </array> - <key>StatusbarIsVisible</key> - <true/> - <key>TableOfContents</key> - <array> - <string>CE2BD8280BD412B800A5F4DB</string> - <string>CE2BDB960BD4180800A5F4DB</string> - <string>1CD0528F0623707200166675</string> - <string>XCMainBuildResultsModuleGUID</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.build</string> - <key>WindowString</key> - <string>154 340 500 500 0 0 1440 938 </string> - <key>WindowToolGUID</key> - <string>CE2BD8280BD412B800A5F4DB</string> - <key>WindowToolIsVisible</key> - <false/> - </dict> - <dict> - <key>Identifier</key> - <string>windowTool.debugger</string> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>Debugger</key> - <dict> - <key>HorizontalSplitView</key> - <dict> - <key>_collapsingFrameDimension</key> - <real>0.0</real> - <key>_indexOfCollapsedView</key> - <integer>0</integer> - <key>_percentageOfCollapsedView</key> - <real>0.0</real> - <key>isCollapsed</key> - <string>yes</string> - <key>sizes</key> - <array> - <string>{{0, 0}, {317, 164}}</string> - <string>{{317, 0}, {377, 164}}</string> - </array> - </dict> - <key>VerticalSplitView</key> - <dict> - <key>_collapsingFrameDimension</key> - <real>0.0</real> - <key>_indexOfCollapsedView</key> - <integer>0</integer> - <key>_percentageOfCollapsedView</key> - <real>0.0</real> - <key>isCollapsed</key> - <string>yes</string> - <key>sizes</key> - <array> - <string>{{0, 0}, {694, 164}}</string> - <string>{{0, 164}, {694, 216}}</string> - </array> - </dict> - </dict> - <key>LauncherConfigVersion</key> - <string>8</string> - <key>PBXProjectModuleGUID</key> - <string>1C162984064C10D400B95A72</string> - <key>PBXProjectModuleLabel</key> - <string>Debug - GLUTExamples (Underwater)</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>DebugConsoleDrawerSize</key> - <string>{100, 120}</string> - <key>DebugConsoleVisible</key> - <string>None</string> - <key>DebugConsoleWindowFrame</key> - <string>{{200, 200}, {500, 300}}</string> - <key>DebugSTDIOWindowFrame</key> - <string>{{200, 200}, {500, 300}}</string> - <key>Frame</key> - <string>{{0, 0}, {694, 380}}</string> - <key>RubberWindowFrame</key> - <string>321 238 694 422 0 0 1440 878 </string> - </dict> - <key>Module</key> - <string>PBXDebugSessionModule</string> - <key>Proportion</key> - <string>100%</string> - </dict> - </array> - <key>Proportion</key> - <string>100%</string> - </dict> - </array> - <key>Name</key> - <string>Debugger</string> - <key>ServiceClasses</key> - <array> - <string>PBXDebugSessionModule</string> - </array> - <key>StatusbarIsVisible</key> - <integer>1</integer> - <key>TableOfContents</key> - <array> - <string>1CD10A99069EF8BA00B06720</string> - <string>1C0AD2AB069F1E9B00FABCE6</string> - <string>1C162984064C10D400B95A72</string> - <string>1C0AD2AC069F1E9B00FABCE6</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.debug</string> - <key>WindowString</key> - <string>321 238 694 422 0 0 1440 878 </string> - <key>WindowToolGUID</key> - <string>1CD10A99069EF8BA00B06720</string> - <key>WindowToolIsVisible</key> - <integer>0</integer> - </dict> - <dict> - <key>Identifier</key> - <string>windowTool.find</string> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CDD528C0622207200134675</string> - <key>PBXProjectModuleLabel</key> - <string><No Editor></string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CD0528D0623707200166675</string> - </dict> - <key>SplitCount</key> - <string>1</string> - </dict> - <key>StatusBarVisibility</key> - <integer>1</integer> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {781, 167}}</string> - <key>RubberWindowFrame</key> - <string>62 385 781 470 0 0 1440 878 </string> - </dict> - <key>Module</key> - <string>PBXNavigatorGroup</string> - <key>Proportion</key> - <string>781pt</string> - </dict> - </array> - <key>Proportion</key> - <string>50%</string> - </dict> - <dict> - <key>BecomeActive</key> - <integer>1</integer> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CD0528E0623707200166675</string> - <key>PBXProjectModuleLabel</key> - <string>Project Find</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{8, 0}, {773, 254}}</string> - <key>RubberWindowFrame</key> - <string>62 385 781 470 0 0 1440 878 </string> - </dict> - <key>Module</key> - <string>PBXProjectFindModule</string> - <key>Proportion</key> - <string>50%</string> - </dict> - </array> - <key>Proportion</key> - <string>428pt</string> - </dict> - </array> - <key>Name</key> - <string>Project Find</string> - <key>ServiceClasses</key> - <array> - <string>PBXProjectFindModule</string> - </array> - <key>StatusbarIsVisible</key> - <integer>1</integer> - <key>TableOfContents</key> - <array> - <string>1C530D57069F1CE1000CFCEE</string> - <string>1C530D58069F1CE1000CFCEE</string> - <string>1C530D59069F1CE1000CFCEE</string> - <string>1CDD528C0622207200134675</string> - <string>1C530D5A069F1CE1000CFCEE</string> - <string>1CE0B1FE06471DED0097A5F4</string> - <string>1CD0528E0623707200166675</string> - </array> - <key>WindowString</key> - <string>62 385 781 470 0 0 1440 878 </string> - <key>WindowToolGUID</key> - <string>1C530D57069F1CE1000CFCEE</string> - <key>WindowToolIsVisible</key> - <integer>0</integer> - </dict> - <dict> - <key>Identifier</key> - <string>MENUSEPARATOR</string> - </dict> - <dict> - <key>Identifier</key> - <string>windowTool.debuggerConsole</string> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>BecomeActive</key> - <integer>1</integer> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1C78EAAC065D492600B07095</string> - <key>PBXProjectModuleLabel</key> - <string>Debugger Console</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {440, 358}}</string> - <key>RubberWindowFrame</key> - <string>650 41 440 400 0 0 1280 1002 </string> - </dict> - <key>Module</key> - <string>PBXDebugCLIModule</string> - <key>Proportion</key> - <string>358pt</string> - </dict> - </array> - <key>Proportion</key> - <string>358pt</string> - </dict> - </array> - <key>Name</key> - <string>Debugger Console</string> - <key>ServiceClasses</key> - <array> - <string>PBXDebugCLIModule</string> - </array> - <key>StatusbarIsVisible</key> - <integer>1</integer> - <key>TableOfContents</key> - <array> - <string>1C78EAAD065D492600B07095</string> - <string>1C78EAAE065D492600B07095</string> - <string>1C78EAAC065D492600B07095</string> - </array> - <key>WindowString</key> - <string>650 41 440 400 0 0 1280 1002 </string> - </dict> - <dict> - <key>Identifier</key> - <string>windowTool.run</string> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>LauncherConfigVersion</key> - <string>3</string> - <key>PBXProjectModuleGUID</key> - <string>1CD0528B0623707200166675</string> - <key>PBXProjectModuleLabel</key> - <string>Run</string> - <key>Runner</key> - <dict> - <key>HorizontalSplitView</key> - <dict> - <key>_collapsingFrameDimension</key> - <real>0.0</real> - <key>_indexOfCollapsedView</key> - <integer>0</integer> - <key>_percentageOfCollapsedView</key> - <real>0.0</real> - <key>isCollapsed</key> - <string>yes</string> - <key>sizes</key> - <array> - <string>{{0, 0}, {493, 167}}</string> - <string>{{0, 176}, {493, 267}}</string> - </array> - </dict> - <key>VerticalSplitView</key> - <dict> - <key>_collapsingFrameDimension</key> - <real>0.0</real> - <key>_indexOfCollapsedView</key> - <integer>0</integer> - <key>_percentageOfCollapsedView</key> - <real>0.0</real> - <key>isCollapsed</key> - <string>yes</string> - <key>sizes</key> - <array> - <string>{{0, 0}, {405, 443}}</string> - <string>{{414, 0}, {514, 443}}</string> - </array> - </dict> - </dict> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {460, 159}}</string> - <key>RubberWindowFrame</key> - <string>316 696 459 200 0 0 1280 1002 </string> - </dict> - <key>Module</key> - <string>PBXRunSessionModule</string> - <key>Proportion</key> - <string>159pt</string> - </dict> - </array> - <key>Proportion</key> - <string>159pt</string> - </dict> - </array> - <key>Name</key> - <string>Run Log</string> - <key>ServiceClasses</key> - <array> - <string>PBXRunSessionModule</string> - </array> - <key>StatusbarIsVisible</key> - <integer>1</integer> - <key>TableOfContents</key> - <array> - <string>1C0AD2B3069F1EA900FABCE6</string> - <string>1C0AD2B4069F1EA900FABCE6</string> - <string>1CD0528B0623707200166675</string> - <string>1C0AD2B5069F1EA900FABCE6</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.run</string> - <key>WindowString</key> - <string>316 696 459 200 0 0 1280 1002 </string> - <key>WindowToolGUID</key> - <string>1C0AD2B3069F1EA900FABCE6</string> - <key>WindowToolIsVisible</key> - <integer>0</integer> - </dict> - <dict> - <key>Identifier</key> - <string>windowTool.scm</string> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1C78EAB2065D492600B07095</string> - <key>PBXProjectModuleLabel</key> - <string><No Editor></string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1C78EAB3065D492600B07095</string> - </dict> - <key>SplitCount</key> - <string>1</string> - </dict> - <key>StatusBarVisibility</key> - <integer>1</integer> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {452, 0}}</string> - <key>RubberWindowFrame</key> - <string>743 379 452 308 0 0 1280 1002 </string> - </dict> - <key>Module</key> - <string>PBXNavigatorGroup</string> - <key>Proportion</key> - <string>0pt</string> - </dict> - <dict> - <key>BecomeActive</key> - <integer>1</integer> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CD052920623707200166675</string> - <key>PBXProjectModuleLabel</key> - <string>SCM</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>ConsoleFrame</key> - <string>{{0, 259}, {452, 0}}</string> - <key>Frame</key> - <string>{{0, 7}, {452, 259}}</string> - <key>RubberWindowFrame</key> - <string>743 379 452 308 0 0 1280 1002 </string> - <key>TableConfiguration</key> - <array> - <string>Status</string> - <real>30</real> - <string>FileName</string> - <real>199</real> - <string>Path</string> - <real>197.09500122070312</real> - </array> - <key>TableFrame</key> - <string>{{0, 0}, {452, 250}}</string> - </dict> - <key>Module</key> - <string>PBXCVSModule</string> - <key>Proportion</key> - <string>262pt</string> - </dict> - </array> - <key>Proportion</key> - <string>266pt</string> - </dict> - </array> - <key>Name</key> - <string>SCM</string> - <key>ServiceClasses</key> - <array> - <string>PBXCVSModule</string> - </array> - <key>StatusbarIsVisible</key> - <integer>1</integer> - <key>TableOfContents</key> - <array> - <string>1C78EAB4065D492600B07095</string> - <string>1C78EAB5065D492600B07095</string> - <string>1C78EAB2065D492600B07095</string> - <string>1CD052920623707200166675</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.scm</string> - <key>WindowString</key> - <string>743 379 452 308 0 0 1280 1002 </string> - </dict> - <dict> - <key>Identifier</key> - <string>windowTool.breakpoints</string> - <key>IsVertical</key> - <integer>0</integer> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>BecomeActive</key> - <integer>1</integer> - <key>ContentConfiguration</key> - <dict> - <key>PBXBottomSmartGroupGIDs</key> - <array> - <string>1C77FABC04509CD000000102</string> - </array> - <key>PBXProjectModuleGUID</key> - <string>1CE0B1FE06471DED0097A5F4</string> - <key>PBXProjectModuleLabel</key> - <string>Files</string> - <key>PBXProjectStructureProvided</key> - <string>no</string> - <key>PBXSmartGroupTreeModuleColumnData</key> - <dict> - <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> - <array> - <real>168</real> - </array> - <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> - <array> - <string>MainColumn</string> - </array> - </dict> - <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> - <dict> - <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> - <array> - <string>1C77FABC04509CD000000102</string> - </array> - <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> - <array> - <array> - <integer>0</integer> - </array> - </array> - <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {168, 350}}</string> - </dict> - <key>PBXTopSmartGroupGIDs</key> - <array/> - <key>XCIncludePerspectivesSwitch</key> - <integer>0</integer> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {185, 368}}</string> - <key>GroupTreeTableConfiguration</key> - <array> - <string>MainColumn</string> - <real>168</real> - </array> - <key>RubberWindowFrame</key> - <string>315 424 744 409 0 0 1440 878 </string> - </dict> - <key>Module</key> - <string>PBXSmartGroupTreeModule</string> - <key>Proportion</key> - <string>185pt</string> - </dict> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CA1AED706398EBD00589147</string> - <key>PBXProjectModuleLabel</key> - <string>Detail</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{190, 0}, {554, 368}}</string> - <key>RubberWindowFrame</key> - <string>315 424 744 409 0 0 1440 878 </string> - </dict> - <key>Module</key> - <string>XCDetailModule</string> - <key>Proportion</key> - <string>554pt</string> - </dict> - </array> - <key>Proportion</key> - <string>368pt</string> - </dict> - </array> - <key>MajorVersion</key> - <integer>2</integer> - <key>MinorVersion</key> - <integer>0</integer> - <key>Name</key> - <string>Breakpoints</string> - <key>ServiceClasses</key> - <array> - <string>PBXSmartGroupTreeModule</string> - <string>XCDetailModule</string> - </array> - <key>StatusbarIsVisible</key> - <integer>1</integer> - <key>TableOfContents</key> - <array> - <string>1CDDB66807F98D9800BB5817</string> - <string>1CDDB66907F98D9800BB5817</string> - <string>1CE0B1FE06471DED0097A5F4</string> - <string>1CA1AED706398EBD00589147</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.breakpoints</string> - <key>WindowString</key> - <string>315 424 744 409 0 0 1440 878 </string> - <key>WindowToolGUID</key> - <string>1CDDB66807F98D9800BB5817</string> - <key>WindowToolIsVisible</key> - <integer>1</integer> - </dict> - <dict> - <key>Identifier</key> - <string>windowTool.debugAnimator</string> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>Module</key> - <string>PBXNavigatorGroup</string> - <key>Proportion</key> - <string>100%</string> - </dict> - </array> - <key>Proportion</key> - <string>100%</string> - </dict> - </array> - <key>Name</key> - <string>Debug Visualizer</string> - <key>ServiceClasses</key> - <array> - <string>PBXNavigatorGroup</string> - </array> - <key>StatusbarIsVisible</key> - <integer>1</integer> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.debugAnimator</string> - <key>WindowString</key> - <string>100 100 700 500 0 0 1280 1002 </string> - </dict> - <dict> - <key>Identifier</key> - <string>windowTool.bookmarks</string> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>Module</key> - <string>PBXBookmarksModule</string> - <key>Proportion</key> - <string>100%</string> - </dict> - </array> - <key>Proportion</key> - <string>100%</string> - </dict> - </array> - <key>Name</key> - <string>Bookmarks</string> - <key>ServiceClasses</key> - <array> - <string>PBXBookmarksModule</string> - </array> - <key>StatusbarIsVisible</key> - <integer>0</integer> - <key>WindowString</key> - <string>538 42 401 187 0 0 1280 1002 </string> - </dict> - <dict> - <key>Identifier</key> - <string>windowTool.classBrowser</string> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>BecomeActive</key> - <integer>1</integer> - <key>ContentConfiguration</key> - <dict> - <key>OptionsSetName</key> - <string>Hierarchy, all classes</string> - <key>PBXProjectModuleGUID</key> - <string>1CA6456E063B45B4001379D8</string> - <key>PBXProjectModuleLabel</key> - <string>Class Browser - NSObject</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>ClassesFrame</key> - <string>{{0, 0}, {374, 96}}</string> - <key>ClassesTreeTableConfiguration</key> - <array> - <string>PBXClassNameColumnIdentifier</string> - <real>208</real> - <string>PBXClassBookColumnIdentifier</string> - <real>22</real> - </array> - <key>Frame</key> - <string>{{0, 0}, {630, 331}}</string> - <key>MembersFrame</key> - <string>{{0, 105}, {374, 395}}</string> - <key>MembersTreeTableConfiguration</key> - <array> - <string>PBXMemberTypeIconColumnIdentifier</string> - <real>22</real> - <string>PBXMemberNameColumnIdentifier</string> - <real>216</real> - <string>PBXMemberTypeColumnIdentifier</string> - <real>97</real> - <string>PBXMemberBookColumnIdentifier</string> - <real>22</real> - </array> - <key>PBXModuleWindowStatusBarHidden2</key> - <integer>1</integer> - <key>RubberWindowFrame</key> - <string>385 179 630 352 0 0 1440 878 </string> - </dict> - <key>Module</key> - <string>PBXClassBrowserModule</string> - <key>Proportion</key> - <string>332pt</string> - </dict> - </array> - <key>Proportion</key> - <string>332pt</string> - </dict> - </array> - <key>Name</key> - <string>Class Browser</string> - <key>ServiceClasses</key> - <array> - <string>PBXClassBrowserModule</string> - </array> - <key>StatusbarIsVisible</key> - <integer>0</integer> - <key>TableOfContents</key> - <array> - <string>1C0AD2AF069F1E9B00FABCE6</string> - <string>1C0AD2B0069F1E9B00FABCE6</string> - <string>1CA6456E063B45B4001379D8</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.classbrowser</string> - <key>WindowString</key> - <string>385 179 630 352 0 0 1440 878 </string> - <key>WindowToolGUID</key> - <string>1C0AD2AF069F1E9B00FABCE6</string> - <key>WindowToolIsVisible</key> - <integer>0</integer> - </dict> - </array> -</dict> -</plist> Deleted: trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.pbxuser =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.pbxuser 2007-04-16 21:17:17 UTC (rev 1832) +++ trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.pbxuser 2007-04-16 21:20:32 UTC (rev 1833) @@ -1,88 +0,0 @@ -// !$*UTF8*$! -{ - 0867D690FE84028FC02AAC07 /* Project object */ = { - activeBuildConfigurationName = Debug; - activeExecutable = CE2BD80D0BD4116900A5F4DB /* Sparkle Test App */; - activeTarget = 8DC2EF4F0486A6940098B216 /* Sparkle */; - addToTargets = ( - 8DC2EF4F0486A6940098B216 /* Sparkle */, - ); - codeSenseManager = CE2BD8150BD4117400A5F4DB /* Code sense */; - executables = ( - CE2BD80D0BD4116900A5F4DB /* Sparkle Test App */, - ); - perUserDictionary = { - PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 243, - 20, - 48, - 43, - 43, - 20, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXFileDataSource_FiletypeID, - PBXFileDataSource_Filename_ColumnID, - PBXFileDataSource_Built_ColumnID, - PBXFileDataSource_ObjectSize_ColumnID, - PBXFileDataSource_Errors_ColumnID, - PBXFileDataSource_Warnings_ColumnID, - PBXFileDataSource_Target_ColumnID, - ); - }; - PBXPerProjectTemplateStateSaveDate = 198448624; - PBXWorkspaceStateSaveDate = 198448624; - }; - sourceControlManager = CE2BD8140BD4117400A5F4DB /* Source Control */; - userBuildSettings = { - }; - }; - 61B5F90109C4CEE200B25A18 /* Sparkle Test App */ = { - activeExec = 0; - executables = ( - CE2BD80D0BD4116900A5F4DB /* Sparkle Test App */, - ); - }; - 8DC2EF4F0486A6940098B216 /* Sparkle */ = { - activeExec = 0; - }; - CE2BD80D0BD4116900A5F4DB /* Sparkle Test App */ = { - isa = PBXExecutable; - activeArgIndex = 2147483647; - activeArgIndices = ( - ); - argumentStrings = ( - ); - autoAttachOnCrash = 1; - configStateDict = { - }; - customDataFormattersEnabled = 1; - debuggerPlugin = GDBDebugging; - disassemblyDisplayState = 0; - enableDebugStr = 1; - environmentEntries = ( - ); - executableSystemSymbolLevel = 0; - executableUserSymbolLevel = 0; - libgmallocEnabled = 0; - name = "Sparkle Test App"; - sourceDirectories = ( - ); - }; - CE2BD8140BD4117400A5F4DB /* Source Control */ = { - isa = PBXSourceControlManager; - fallbackIsa = XCSourceControlManager; - isSCMEnabled = 0; - scmConfiguration = { - }; - scmType = ""; - }; - CE2BD8150BD4117400A5F4DB /* Code sense */ = { - isa = PBXCodeSenseManager; - indexTemplatePath = ""; - }; -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-04-16 21:17:18
|
Revision: 1832 http://skim-app.svn.sourceforge.net/skim-app/?rev=1832&view=rev Author: hofman Date: 2007-04-16 14:17:17 -0700 (Mon, 16 Apr 2007) Log Message: ----------- Remove CoreData framework from project. Modified Paths: -------------- trunk/Skim.xcodeproj/project.pbxproj Modified: trunk/Skim.xcodeproj/project.pbxproj =================================================================== --- trunk/Skim.xcodeproj/project.pbxproj 2007-04-16 20:55:42 UTC (rev 1831) +++ trunk/Skim.xcodeproj/project.pbxproj 2007-04-16 21:17:17 UTC (rev 1832) @@ -173,21 +173,21 @@ isa = PBXContainerItemProxy; containerPortal = CE2BD8170BD4127A00A5F4DB /* Sparkle.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 8DC2EF5B0486A6940098B216 /* Sparkle.framework */; + remoteGlobalIDString = 8DC2EF5B0486A6940098B216; remoteInfo = Sparkle; }; CE2BD8210BD4127A00A5F4DB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = CE2BD8170BD4127A00A5F4DB /* Sparkle.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 61B5F90209C4CEE200B25A18 /* Sparkle Test App.app */; + remoteGlobalIDString = 61B5F90209C4CEE200B25A18; remoteInfo = "Sparkle Test App"; }; CE2BD8600BD4144000A5F4DB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = CE2BD8170BD4127A00A5F4DB /* Sparkle.xcodeproj */; proxyType = 1; - remoteGlobalIDString = 8DC2EF4F0486A6940098B216 /* Sparkle */; + remoteGlobalIDString = 8DC2EF4F0486A6940098B216; remoteInfo = Sparkle; }; CE592C610B9239CD00C113DF /* PBXContainerItemProxy */ = { @@ -215,7 +215,6 @@ /* Begin PBXFileReference section */ 089C1660FE840EACC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; }; 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; }; - 13E42FBA07B3F13500E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; }; 2A37F4ACFDCFA73011CA2CEA /* SKDocument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SKDocument.m; sourceTree = "<group>"; }; 2A37F4AEFDCFA73011CA2CEA /* SKDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SKDocument.h; sourceTree = "<group>"; }; 2A37F4B0FDCFA73011CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; @@ -477,7 +476,6 @@ isa = PBXGroup; children = ( 2A37F4C4FDCFA73011CA2CEA /* AppKit.framework */, - 13E42FBA07B3F13500E4EEF1 /* CoreData.framework */, 2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */, ); name = "Other Frameworks"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-04-16 20:56:12
|
Revision: 1831 http://skim-app.svn.sourceforge.net/skim-app/?rev=1831&view=rev Author: hofman Date: 2007-04-16 13:55:42 -0700 (Mon, 16 Apr 2007) Log Message: ----------- Dutch localization (lazy bastard) Modified Paths: -------------- trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.mode1 trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.pbxuser trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUUpdateAlert.strings Modified: trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.mode1 =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.mode1 2007-04-16 20:45:51 UTC (rev 1830) +++ trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.mode1 2007-04-16 20:55:42 UTC (rev 1831) @@ -218,8 +218,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -256,11 +254,13 @@ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> <array> <string>0867D691FE84028FC02AAC07</string> + <string>089C1665FE841158C02AAC07</string> <string>1C37FABC05509CD000000102</string> </array> <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> + <integer>2</integer> <integer>0</integer> </array> </array> @@ -284,7 +284,7 @@ <real>186</real> </array> <key>RubberWindowFrame</key> - <string>308 332 690 397 0 0 1440 938 </string> + <string>166 356 690 397 0 0 1440 938 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -321,7 +321,7 @@ <key>Frame</key> <string>{{0, 0}, {482, 0}}</string> <key>RubberWindowFrame</key> - <string>308 332 690 397 0 0 1440 938 </string> + <string>166 356 690 397 0 0 1440 938 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -329,6 +329,8 @@ <string>0pt</string> </dict> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXProjectModuleGUID</key> @@ -341,7 +343,7 @@ <key>Frame</key> <string>{{0, 5}, {482, 351}}</string> <key>RubberWindowFrame</key> - <string>308 332 690 397 0 0 1440 938 </string> + <string>166 356 690 397 0 0 1440 938 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -365,9 +367,9 @@ </array> <key>TableOfContents</key> <array> - <string>CE2BDB6F0BD415ED00A5F4DB</string> + <string>CE2BDB970BD4180900A5F4DB</string> <string>1CE0B1FE06471DED0097A5F4</string> - <string>CE2BDB700BD415ED00A5F4DB</string> + <string>CE2BDB980BD4180900A5F4DB</string> <string>1CE0B20306471E060097A5F4</string> <string>1CE0B20506471E060097A5F4</string> </array> @@ -505,7 +507,7 @@ <string>/Users/hofman/Documents/Skim/trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj</string> </array> <key>WindowString</key> - <string>308 332 690 397 0 0 1440 938 </string> + <string>166 356 690 397 0 0 1440 938 </string> <key>WindowTools</key> <array> <dict> @@ -584,7 +586,7 @@ <key>TableOfContents</key> <array> <string>CE2BD8280BD412B800A5F4DB</string> - <string>CE2BD8290BD412B800A5F4DB</string> + <string>CE2BDB960BD4180800A5F4DB</string> <string>1CD0528F0623707200166675</string> <string>XCMainBuildResultsModuleGUID</string> </array> Modified: trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.pbxuser =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.pbxuser 2007-04-16 20:45:51 UTC (rev 1830) +++ trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.pbxuser 2007-04-16 20:55:42 UTC (rev 1831) @@ -1,7 +1,7 @@ // !$*UTF8*$! { 0867D690FE84028FC02AAC07 /* Project object */ = { - activeBuildConfigurationName = Release; + activeBuildConfigurationName = Debug; activeExecutable = CE2BD80D0BD4116900A5F4DB /* Sparkle Test App */; activeTarget = 8DC2EF4F0486A6940098B216 /* Sparkle */; addToTargets = ( Modified: trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib 2007-04-16 20:45:51 UTC (rev 1830) +++ trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib 2007-04-16 20:55:42 UTC (rev 1831) @@ -5,8 +5,8 @@ <key>IBDocumentLocation</key> <string>188 142 356 240 0 0 1280 1002 </string> <key>IBFramework Version</key> - <string>443.0</string> + <string>446.1</string> <key>IBSystem Version</key> - <string>8I127</string> + <string>8P135</string> </dict> </plist> Modified: trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUAutomaticUpdateAlert.strings =================================================================== (Binary files differ) Modified: trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUUpdateAlert.nib/info.nib =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUUpdateAlert.nib/info.nib 2007-04-16 20:45:51 UTC (rev 1830) +++ trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUUpdateAlert.nib/info.nib 2007-04-16 20:55:42 UTC (rev 1831) @@ -3,7 +3,7 @@ <plist version="1.0"> <dict> <key>IBDocumentLocation</key> - <string>425 40 356 240 0 0 1280 832 </string> + <string>499 92 356 240 0 0 1440 938 </string> <key>IBFramework Version</key> <string>446.1</string> <key>IBOpenObjects</key> @@ -11,6 +11,6 @@ <integer>5</integer> </array> <key>IBSystem Version</key> - <string>8I127</string> + <string>8P135</string> </dict> </plist> Modified: trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUUpdateAlert.strings =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-04-16 20:45:53
|
Revision: 1830 http://skim-app.svn.sourceforge.net/skim-app/?rev=1830&view=rev Author: hofman Date: 2007-04-16 13:45:51 -0700 (Mon, 16 Apr 2007) Log Message: ----------- Don't include localization we don't have in Skim to reduce size. Modified Paths: -------------- trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.mode1 trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.pbxuser trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/project.pbxproj Modified: trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.mode1 =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.mode1 2007-04-16 20:36:23 UTC (rev 1829) +++ trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.mode1 2007-04-16 20:45:51 UTC (rev 1830) @@ -284,7 +284,7 @@ <real>186</real> </array> <key>RubberWindowFrame</key> - <string>133 466 690 397 0 0 1440 938 </string> + <string>308 332 690 397 0 0 1440 938 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -321,7 +321,7 @@ <key>Frame</key> <string>{{0, 0}, {482, 0}}</string> <key>RubberWindowFrame</key> - <string>133 466 690 397 0 0 1440 938 </string> + <string>308 332 690 397 0 0 1440 938 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -341,7 +341,7 @@ <key>Frame</key> <string>{{0, 5}, {482, 351}}</string> <key>RubberWindowFrame</key> - <string>133 466 690 397 0 0 1440 938 </string> + <string>308 332 690 397 0 0 1440 938 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -365,9 +365,9 @@ </array> <key>TableOfContents</key> <array> - <string>CE2BD8110BD4117400A5F4DB</string> + <string>CE2BDB6F0BD415ED00A5F4DB</string> <string>1CE0B1FE06471DED0097A5F4</string> - <string>CE2BD8120BD4117400A5F4DB</string> + <string>CE2BDB700BD415ED00A5F4DB</string> <string>1CE0B20306471E060097A5F4</string> <string>1CE0B20506471E060097A5F4</string> </array> @@ -501,15 +501,20 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>/Users/hofman/Documents/Development/Frameworks/Sparkle-1.1.2/Extras/Source/Sparkle.xcodeproj</string> + <string>CE2BD8280BD412B800A5F4DB</string> + <string>/Users/hofman/Documents/Skim/trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj</string> </array> <key>WindowString</key> - <string>133 466 690 397 0 0 1440 938 </string> + <string>308 332 690 397 0 0 1440 938 </string> <key>WindowTools</key> <array> <dict> + <key>FirstTimeWindowDisplayed</key> + <false/> <key>Identifier</key> <string>windowTool.build</string> + <key>IsVertical</key> + <true/> <key>Layout</key> <array> <dict> @@ -521,26 +526,16 @@ <key>PBXProjectModuleGUID</key> <string>1CD0528F0623707200166675</string> <key>PBXProjectModuleLabel</key> - <string><No Editor></string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CD052900623707200166675</string> - </dict> - <key>SplitCount</key> - <string>1</string> - </dict> + <string></string> <key>StatusBarVisibility</key> - <integer>1</integer> + <true/> </dict> <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {500, 215}}</string> + <string>{{0, 0}, {500, 218}}</string> <key>RubberWindowFrame</key> - <string>192 257 500 500 0 0 1280 1002 </string> + <string>154 340 500 500 0 0 1440 938 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -549,20 +544,24 @@ </dict> <dict> <key>BecomeActive</key> - <integer>1</integer> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXProjectModuleGUID</key> <string>XCMainBuildResultsModuleGUID</string> <key>PBXProjectModuleLabel</key> <string>Build</string> + <key>XCBuildResultsTrigger_Collapse</key> + <integer>1021</integer> + <key>XCBuildResultsTrigger_Open</key> + <integer>1011</integer> </dict> <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 222}, {500, 236}}</string> + <string>{{0, 223}, {500, 236}}</string> <key>RubberWindowFrame</key> - <string>192 257 500 500 0 0 1280 1002 </string> + <string>154 340 500 500 0 0 1440 938 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -571,7 +570,7 @@ </dict> </array> <key>Proportion</key> - <string>458pt</string> + <string>459pt</string> </dict> </array> <key>Name</key> @@ -581,18 +580,22 @@ <string>PBXBuildResultsModule</string> </array> <key>StatusbarIsVisible</key> - <integer>1</integer> + <true/> <key>TableOfContents</key> <array> - <string>1C78EAA5065D492600B07095</string> - <string>1C78EAA6065D492600B07095</string> + <string>CE2BD8280BD412B800A5F4DB</string> + <string>CE2BD8290BD412B800A5F4DB</string> <string>1CD0528F0623707200166675</string> <string>XCMainBuildResultsModuleGUID</string> </array> <key>ToolbarConfiguration</key> <string>xcode.toolbar.config.build</string> <key>WindowString</key> - <string>192 257 500 500 0 0 1280 1002 </string> + <string>154 340 500 500 0 0 1440 938 </string> + <key>WindowToolGUID</key> + <string>CE2BD8280BD412B800A5F4DB</string> + <key>WindowToolIsVisible</key> + <false/> </dict> <dict> <key>Identifier</key> Modified: trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.pbxuser =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.pbxuser 2007-04-16 20:36:23 UTC (rev 1829) +++ trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.pbxuser 2007-04-16 20:45:51 UTC (rev 1830) @@ -1,9 +1,12 @@ // !$*UTF8*$! { 0867D690FE84028FC02AAC07 /* Project object */ = { - activeBuildConfigurationName = Debug; + activeBuildConfigurationName = Release; activeExecutable = CE2BD80D0BD4116900A5F4DB /* Sparkle Test App */; activeTarget = 8DC2EF4F0486A6940098B216 /* Sparkle */; + addToTargets = ( + 8DC2EF4F0486A6940098B216 /* Sparkle */, + ); codeSenseManager = CE2BD8150BD4117400A5F4DB /* Code sense */; executables = ( CE2BD80D0BD4116900A5F4DB /* Sparkle Test App */, @@ -16,7 +19,7 @@ 20, 243, 20, - 48.1626, + 48, 43, 43, 20, @@ -31,8 +34,8 @@ PBXFileDataSource_Target_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 198447784; - PBXWorkspaceStateSaveDate = 198447784; + PBXPerProjectTemplateStateSaveDate = 198448624; + PBXWorkspaceStateSaveDate = 198448624; }; sourceControlManager = CE2BD8140BD4117400A5F4DB /* Source Control */; userBuildSettings = { Modified: trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/project.pbxproj =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/project.pbxproj 2007-04-16 20:36:23 UTC (rev 1829) +++ trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/project.pbxproj 2007-04-16 20:45:51 UTC (rev 1830) @@ -26,9 +26,6 @@ 61407C390A4099050009F71F /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8DC2EF5B0486A6940098B216 /* Sparkle.framework */; }; 6196CFF909C72148000DC222 /* SUStatusController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6196CFE309C71ADE000DC222 /* SUStatusController.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6196CFFA09C72149000DC222 /* SUStatusController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6196CFE409C71ADE000DC222 /* SUStatusController.m */; }; - 61AAE8280A321A7F00D8810D /* Sparkle.strings in Resources */ = {isa = PBXBuildFile; fileRef = 61AAE8220A321A7F00D8810D /* Sparkle.strings */; }; - 61AAE8290A321A8000D8810D /* SUAutomaticUpdateAlert.nib in Resources */ = {isa = PBXBuildFile; fileRef = 61AAE8240A321A7F00D8810D /* SUAutomaticUpdateAlert.nib */; }; - 61AAE82A0A321A8000D8810D /* SUUpdateAlert.nib in Resources */ = {isa = PBXBuildFile; fileRef = 61AAE8260A321A7F00D8810D /* SUUpdateAlert.nib */; }; 61B5F8E709C4CE3C00B25A18 /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = 61B5F8DD09C4CE3C00B25A18 /* md5.c */; }; 61B5F8E809C4CE3C00B25A18 /* md5.h in Headers */ = {isa = PBXBuildFile; fileRef = 61B5F8DE09C4CE3C00B25A18 /* md5.h */; settings = {ATTRIBUTES = (); }; }; 61B5F8E909C4CE3C00B25A18 /* NSString+extras.h in Headers */ = {isa = PBXBuildFile; fileRef = 61B5F8DF09C4CE3C00B25A18 /* NSString+extras.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -54,6 +51,9 @@ 61B5FCDF09C52A9F00B25A18 /* SUUpdateAlert.h in Headers */ = {isa = PBXBuildFile; fileRef = 61B5FCA009C5228F00B25A18 /* SUUpdateAlert.h */; settings = {ATTRIBUTES = (Public, ); }; }; 61BBDF820A49220C00378739 /* Sparkle.icns in Resources */ = {isa = PBXBuildFile; fileRef = 61BBDF810A49220C00378739 /* Sparkle.icns */; }; 8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; }; + CE2BDB7B0BD4161900A5F4DB /* Sparkle.strings in Resources */ = {isa = PBXBuildFile; fileRef = CE2BDB790BD4161900A5F4DB /* Sparkle.strings */; }; + CE2BDB820BD4163200A5F4DB /* SUAutomaticUpdateAlert.nib in Resources */ = {isa = PBXBuildFile; fileRef = CE2BDB7E0BD4163200A5F4DB /* SUAutomaticUpdateAlert.nib */; }; + CE2BDB830BD4163200A5F4DB /* SUUpdateAlert.nib in Resources */ = {isa = PBXBuildFile; fileRef = CE2BDB800BD4163200A5F4DB /* SUUpdateAlert.nib */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -101,84 +101,6 @@ 61299B3509CB04E000B7442F /* Sparkle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Sparkle.h; sourceTree = "<group>"; }; 6196CFE309C71ADE000DC222 /* SUStatusController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SUStatusController.h; sourceTree = "<group>"; }; 6196CFE409C71ADE000DC222 /* SUStatusController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SUStatusController.m; sourceTree = "<group>"; }; - 61AAE8230A321A7F00D8810D /* en */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE8250A321A7F00D8810D /* en */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = en; path = en.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8270A321A7F00D8810D /* en */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = en; path = en.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE82D0A321AA200D8810D /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE82E0A321AA200D8810D /* ca */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = ca; path = ca.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE82F0A321AA200D8810D /* ca */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = ca; path = ca.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE83F0A321AD200D8810D /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE8400A321AD200D8810D /* cs */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = cs; path = cs.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8410A321AD200D8810D /* cs */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = cs; path = cs.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8420A321ADC00D8810D /* cy */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cy; path = cy.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE8430A321ADC00D8810D /* cy */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = cy; path = cy.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8440A321ADC00D8810D /* cy */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = cy; path = cy.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8450A321AE500D8810D /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE8460A321AE500D8810D /* da */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = da; path = da.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8470A321AE500D8810D /* da */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = da; path = da.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8480A321AED00D8810D /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE8490A321AED00D8810D /* de */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = de; path = de.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE84A0A321AED00D8810D /* de */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = de; path = de.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE84F0A321AF700D8810D /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE8500A321AF700D8810D /* es */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = es; path = es.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8510A321AF700D8810D /* es */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = es; path = es.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8560A321AFC00D8810D /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE8570A321AFC00D8810D /* fi */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = fi; path = fi.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8580A321AFC00D8810D /* fi */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = fi; path = fi.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8590A321B0400D8810D /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE85A0A321B0400D8810D /* fr */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = fr; path = fr.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE85B0A321B0400D8810D /* fr */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = fr; path = fr.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE85C0A321B0C00D8810D /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE85D0A321B0C00D8810D /* he */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = he; path = he.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE85E0A321B0C00D8810D /* he */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = he; path = he.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE85F0A321EF100D8810D /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE8600A321EF100D8810D /* hu */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = hu; path = hu.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8610A321EF100D8810D /* hu */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = hu; path = hu.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8620A321EFA00D8810D /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE8630A321EFA00D8810D /* id */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = id; path = id.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8640A321EFA00D8810D /* id */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = id; path = id.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8650A321F0100D8810D /* is */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = is; path = is.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE8660A321F0100D8810D /* is */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = is; path = is.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8670A321F0100D8810D /* is */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = is; path = is.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8680A321F0B00D8810D /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE8690A321F0B00D8810D /* it */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = it; path = it.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE86A0A321F0B00D8810D /* it */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = it; path = it.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE86B0A321F2D00D8810D /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE86C0A321F2D00D8810D /* ja */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = ja; path = ja.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE86D0A321F2D00D8810D /* ja */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = ja; path = ja.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE86E0A321F3500D8810D /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE86F0A321F3500D8810D /* ko */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = ko; path = ko.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8700A321F3500D8810D /* ko */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = ko; path = ko.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8710A321F7700D8810D /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE8720A321F7700D8810D /* nl */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = nl; path = nl.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8730A321F7700D8810D /* nl */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = nl; path = nl.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8740A321FA500D8810D /* no */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = no; path = no.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE8750A321FA500D8810D /* no */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = no; path = no.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8760A321FA500D8810D /* no */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = no; path = no.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8770A321FBE00D8810D /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE8780A321FBE00D8810D /* pl */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = pl; path = pl.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8790A321FBE00D8810D /* pl */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = pl; path = pl.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE87A0A321FC400D8810D /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE87B0A321FC400D8810D /* ru */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = ru; path = ru.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE87C0A321FC400D8810D /* ru */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = ru; path = ru.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE87D0A321FCD00D8810D /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE87E0A321FCD00D8810D /* sk */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = sk; path = sk.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE87F0A321FCD00D8810D /* sk */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = sk; path = sk.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8800A32201100D8810D /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE8810A32201100D8810D /* sv */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = sv; path = sv.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8820A32201100D8810D /* sv */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = sv; path = sv.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8830A32202400D8810D /* th */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = th; path = th.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE8840A32202400D8810D /* th */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = th; path = th.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8850A32202400D8810D /* th */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = th; path = th.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8860A32203000D8810D /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE8870A32203000D8810D /* tr */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = tr; path = tr.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8880A32203000D8810D /* tr */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = tr; path = tr.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE8890A32203800D8810D /* zh_CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh_CN; path = zh_CN.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE88A0A32203800D8810D /* zh_CN */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = zh_CN; path = zh_CN.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE88B0A32203800D8810D /* zh_CN */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = zh_CN; path = zh_CN.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE88C0A32203F00D8810D /* zh_TW */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh_TW; path = zh_TW.lproj/Sparkle.strings; sourceTree = "<group>"; }; - 61AAE88D0A32203F00D8810D /* zh_TW */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = zh_TW; path = zh_TW.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61AAE88E0A32203F00D8810D /* zh_TW */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = zh_TW; path = zh_TW.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; 61B5F8DD09C4CE3C00B25A18 /* md5.c */ = {isa = PBXFileReference; fileEncoding = 30; includeInIndex = 0; lastKnownFileType = sourcecode.c.c; path = md5.c; sourceTree = "<group>"; }; 61B5F8DE09C4CE3C00B25A18 /* md5.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = "<group>"; }; 61B5F8DF09C4CE3C00B25A18 /* NSString+extras.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = "NSString+extras.h"; sourceTree = "<group>"; }; @@ -206,6 +128,15 @@ 61BBDF810A49220C00378739 /* Sparkle.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Sparkle.icns; sourceTree = "<group>"; }; 8DC2EF5A0486A6940098B216 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; }; 8DC2EF5B0486A6940098B216 /* Sparkle.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Sparkle.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CE2BDB7A0BD4161900A5F4DB /* en */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Sparkle.strings; sourceTree = "<group>"; }; + CE2BDB7F0BD4163200A5F4DB /* en */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = en; path = en.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; + CE2BDB810BD4163200A5F4DB /* en */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = en; path = en.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; + CE2BDB8A0BD4167D00A5F4DB /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Sparkle.strings; sourceTree = "<group>"; }; + CE2BDB8B0BD4168C00A5F4DB /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Sparkle.strings; sourceTree = "<group>"; }; + CE2BDB8E0BD416AE00A5F4DB /* nl */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = nl; path = nl.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; + CE2BDB8F0BD416AE00A5F4DB /* nl */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = nl; path = nl.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; + CE2BDB900BD416BE00A5F4DB /* it */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = it; path = it.lproj/SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; + CE2BDB910BD416BE00A5F4DB /* it */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = it; path = it.lproj/SUUpdateAlert.nib; sourceTree = "<group>"; }; D2F7E79907B2D74100F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; }; /* End PBXFileReference section */ @@ -312,9 +243,9 @@ 32C88DFF0371C24200C91783 /* Other Sources */ = { isa = PBXGroup; children = ( - 61AAE8220A321A7F00D8810D /* Sparkle.strings */, - 61AAE8240A321A7F00D8810D /* SUAutomaticUpdateAlert.nib */, - 61AAE8260A321A7F00D8810D /* SUUpdateAlert.nib */, + CE2BDB790BD4161900A5F4DB /* Sparkle.strings */, + CE2BDB7E0BD4163200A5F4DB /* SUAutomaticUpdateAlert.nib */, + CE2BDB800BD4163200A5F4DB /* SUUpdateAlert.nib */, 61299B3509CB04E000B7442F /* Sparkle.h */, 32DBCF5E0370ADEE00C91783 /* Sparkle_Prefix.pch */, ); @@ -522,9 +453,9 @@ buildActionMask = 2147483647; files = ( 610D5A750A1670A4004AAD9C /* SUStatus.nib in Resources */, - 61AAE8280A321A7F00D8810D /* Sparkle.strings in Resources */, - 61AAE8290A321A8000D8810D /* SUAutomaticUpdateAlert.nib in Resources */, - 61AAE82A0A321A8000D8810D /* SUUpdateAlert.nib in Resources */, + CE2BDB7B0BD4161900A5F4DB /* Sparkle.strings in Resources */, + CE2BDB820BD4163200A5F4DB /* SUAutomaticUpdateAlert.nib in Resources */, + CE2BDB830BD4163200A5F4DB /* SUUpdateAlert.nib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -573,119 +504,50 @@ /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ - 61AAE8220A321A7F00D8810D /* Sparkle.strings */ = { + 61B5F92A09C4CFD800B25A18 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( - 61AAE8230A321A7F00D8810D /* en */, - 61AAE82D0A321AA200D8810D /* ca */, - 61AAE83F0A321AD200D8810D /* cs */, - 61AAE8420A321ADC00D8810D /* cy */, - 61AAE8450A321AE500D8810D /* da */, - 61AAE8480A321AED00D8810D /* de */, - 61AAE84F0A321AF700D8810D /* es */, - 61AAE8560A321AFC00D8810D /* fi */, - 61AAE8590A321B0400D8810D /* fr */, - 61AAE85C0A321B0C00D8810D /* he */, - 61AAE85F0A321EF100D8810D /* hu */, - 61AAE8620A321EFA00D8810D /* id */, - 61AAE8650A321F0100D8810D /* is */, - 61AAE8680A321F0B00D8810D /* it */, - 61AAE86B0A321F2D00D8810D /* ja */, - 61AAE86E0A321F3500D8810D /* ko */, - 61AAE8710A321F7700D8810D /* nl */, - 61AAE8740A321FA500D8810D /* no */, - 61AAE8770A321FBE00D8810D /* pl */, - 61AAE87A0A321FC400D8810D /* ru */, - 61AAE87D0A321FCD00D8810D /* sk */, - 61AAE8800A32201100D8810D /* sv */, - 61AAE8830A32202400D8810D /* th */, - 61AAE8860A32203000D8810D /* tr */, - 61AAE8890A32203800D8810D /* zh_CN */, - 61AAE88C0A32203F00D8810D /* zh_TW */, + 61B5F92B09C4CFD800B25A18 /* English */, ); - name = Sparkle.strings; + name = InfoPlist.strings; sourceTree = "<group>"; }; - 61AAE8240A321A7F00D8810D /* SUAutomaticUpdateAlert.nib */ = { + 61B5F92C09C4CFD800B25A18 /* MainMenu.nib */ = { isa = PBXVariantGroup; children = ( - 61AAE8250A321A7F00D8810D /* en */, - 61AAE82E0A321AA200D8810D /* ca */, - 61AAE8400A321AD200D8810D /* cs */, - 61AAE8430A321ADC00D8810D /* cy */, - 61AAE8460A321AE500D8810D /* da */, - 61AAE8490A321AED00D8810D /* de */, - 61AAE8500A321AF700D8810D /* es */, - 61AAE8570A321AFC00D8810D /* fi */, - 61AAE85A0A321B0400D8810D /* fr */, - 61AAE85D0A321B0C00D8810D /* he */, - 61AAE8600A321EF100D8810D /* hu */, - 61AAE8630A321EFA00D8810D /* id */, - 61AAE8660A321F0100D8810D /* is */, - 61AAE8690A321F0B00D8810D /* it */, - 61AAE86C0A321F2D00D8810D /* ja */, - 61AAE86F0A321F3500D8810D /* ko */, - 61AAE8720A321F7700D8810D /* nl */, - 61AAE8750A321FA500D8810D /* no */, - 61AAE8780A321FBE00D8810D /* pl */, - 61AAE87B0A321FC400D8810D /* ru */, - 61AAE87E0A321FCD00D8810D /* sk */, - 61AAE8810A32201100D8810D /* sv */, - 61AAE8840A32202400D8810D /* th */, - 61AAE8870A32203000D8810D /* tr */, - 61AAE88A0A32203800D8810D /* zh_CN */, - 61AAE88D0A32203F00D8810D /* zh_TW */, + 61B5F92D09C4CFD800B25A18 /* English */, ); - name = SUAutomaticUpdateAlert.nib; + name = MainMenu.nib; sourceTree = "<group>"; }; - 61AAE8260A321A7F00D8810D /* SUUpdateAlert.nib */ = { + CE2BDB790BD4161900A5F4DB /* Sparkle.strings */ = { isa = PBXVariantGroup; children = ( - 61AAE8270A321A7F00D8810D /* en */, - 61AAE82F0A321AA200D8810D /* ca */, - 61AAE8410A321AD200D8810D /* cs */, - 61AAE8440A321ADC00D8810D /* cy */, - 61AAE8470A321AE500D8810D /* da */, - 61AAE84A0A321AED00D8810D /* de */, - 61AAE8510A321AF700D8810D /* es */, - 61AAE8580A321AFC00D8810D /* fi */, - 61AAE85B0A321B0400D8810D /* fr */, - 61AAE85E0A321B0C00D8810D /* he */, - 61AAE8610A321EF100D8810D /* hu */, - 61AAE8640A321EFA00D8810D /* id */, - 61AAE8670A321F0100D8810D /* is */, - 61AAE86A0A321F0B00D8810D /* it */, - 61AAE86D0A321F2D00D8810D /* ja */, - 61AAE8700A321F3500D8810D /* ko */, - 61AAE8730A321F7700D8810D /* nl */, - 61AAE8760A321FA500D8810D /* no */, - 61AAE8790A321FBE00D8810D /* pl */, - 61AAE87C0A321FC400D8810D /* ru */, - 61AAE87F0A321FCD00D8810D /* sk */, - 61AAE8820A32201100D8810D /* sv */, - 61AAE8850A32202400D8810D /* th */, - 61AAE8880A32203000D8810D /* tr */, - 61AAE88B0A32203800D8810D /* zh_CN */, - 61AAE88E0A32203F00D8810D /* zh_TW */, + CE2BDB7A0BD4161900A5F4DB /* en */, + CE2BDB8A0BD4167D00A5F4DB /* nl */, + CE2BDB8B0BD4168C00A5F4DB /* it */, ); - name = SUUpdateAlert.nib; + name = Sparkle.strings; sourceTree = "<group>"; }; - 61B5F92A09C4CFD800B25A18 /* InfoPlist.strings */ = { + CE2BDB7E0BD4163200A5F4DB /* SUAutomaticUpdateAlert.nib */ = { isa = PBXVariantGroup; children = ( - 61B5F92B09C4CFD800B25A18 /* English */, + CE2BDB7F0BD4163200A5F4DB /* en */, + CE2BDB8E0BD416AE00A5F4DB /* nl */, + CE2BDB900BD416BE00A5F4DB /* it */, ); - name = InfoPlist.strings; + name = SUAutomaticUpdateAlert.nib; sourceTree = "<group>"; }; - 61B5F92C09C4CFD800B25A18 /* MainMenu.nib */ = { + CE2BDB800BD4163200A5F4DB /* SUUpdateAlert.nib */ = { isa = PBXVariantGroup; children = ( - 61B5F92D09C4CFD800B25A18 /* English */, + CE2BDB810BD4163200A5F4DB /* en */, + CE2BDB8F0BD416AE00A5F4DB /* nl */, + CE2BDB910BD416BE00A5F4DB /* it */, ); - name = MainMenu.nib; + name = SUUpdateAlert.nib; sourceTree = "<group>"; }; /* End PBXVariantGroup section */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-04-16 20:36:32
|
Revision: 1829 http://skim-app.svn.sourceforge.net/skim-app/?rev=1829&view=rev Author: hofman Date: 2007-04-16 13:36:23 -0700 (Mon, 16 Apr 2007) Log Message: ----------- Remove Sparkle framework and add source, so we can make some changes. Link to Sparkle project from Skim project, use Sparkle framework from project, and add Sparkle as a dependency. Modified Paths: -------------- trunk/Skim.xcodeproj/project.pbxproj Added Paths: ----------- trunk/vendorsrc/andymatuschak/ trunk/vendorsrc/andymatuschak/Sparkle/ trunk/vendorsrc/andymatuschak/Sparkle/Info.plist trunk/vendorsrc/andymatuschak/Sparkle/License.txt trunk/vendorsrc/andymatuschak/Sparkle/Makefile trunk/vendorsrc/andymatuschak/Sparkle/NSApplication+AppCopies.h trunk/vendorsrc/andymatuschak/Sparkle/NSApplication+AppCopies.m trunk/vendorsrc/andymatuschak/Sparkle/NSFileManager+Authentication.h trunk/vendorsrc/andymatuschak/Sparkle/NSFileManager+Authentication.m trunk/vendorsrc/andymatuschak/Sparkle/NSFileManager+Verification.h trunk/vendorsrc/andymatuschak/Sparkle/NSFileManager+Verification.m trunk/vendorsrc/andymatuschak/Sparkle/NSString+extras.h trunk/vendorsrc/andymatuschak/Sparkle/NSString+extras.m trunk/vendorsrc/andymatuschak/Sparkle/RSS.h trunk/vendorsrc/andymatuschak/Sparkle/RSS.m trunk/vendorsrc/andymatuschak/Sparkle/Release Notes.rtf trunk/vendorsrc/andymatuschak/Sparkle/SUAppcast.h trunk/vendorsrc/andymatuschak/Sparkle/SUAppcast.m trunk/vendorsrc/andymatuschak/Sparkle/SUAppcastItem.h trunk/vendorsrc/andymatuschak/Sparkle/SUAppcastItem.m trunk/vendorsrc/andymatuschak/Sparkle/SUAutomaticUpdateAlert.h trunk/vendorsrc/andymatuschak/Sparkle/SUAutomaticUpdateAlert.m trunk/vendorsrc/andymatuschak/Sparkle/SUConstants.h trunk/vendorsrc/andymatuschak/Sparkle/SUConstants.m trunk/vendorsrc/andymatuschak/Sparkle/SUStatus.nib/ trunk/vendorsrc/andymatuschak/Sparkle/SUStatus.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/SUStatus.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/SUStatus.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/SUStatusChecker.h trunk/vendorsrc/andymatuschak/Sparkle/SUStatusChecker.m trunk/vendorsrc/andymatuschak/Sparkle/SUStatusController.h trunk/vendorsrc/andymatuschak/Sparkle/SUStatusController.m trunk/vendorsrc/andymatuschak/Sparkle/SUUnarchiver.h trunk/vendorsrc/andymatuschak/Sparkle/SUUnarchiver.m trunk/vendorsrc/andymatuschak/Sparkle/SUUpdateAlert.h trunk/vendorsrc/andymatuschak/Sparkle/SUUpdateAlert.m trunk/vendorsrc/andymatuschak/Sparkle/SUUpdater+Authentication.m trunk/vendorsrc/andymatuschak/Sparkle/SUUpdater+DSA.m trunk/vendorsrc/andymatuschak/Sparkle/SUUpdater.h trunk/vendorsrc/andymatuschak/Sparkle/SUUpdater.m trunk/vendorsrc/andymatuschak/Sparkle/SUUtilities.h trunk/vendorsrc/andymatuschak/Sparkle/SUUtilities.m trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.h trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.icns trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/ trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.mode1 trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/hofman.pbxuser trunk/vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj/project.pbxproj trunk/vendorsrc/andymatuschak/Sparkle/Sparkle_Prefix.pch trunk/vendorsrc/andymatuschak/Sparkle/Test Application/ trunk/vendorsrc/andymatuschak/Sparkle/Test Application/English.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/Test Application/English.lproj/InfoPlist.strings trunk/vendorsrc/andymatuschak/Sparkle/Test Application/English.lproj/MainMenu.nib/ trunk/vendorsrc/andymatuschak/Sparkle/Test Application/English.lproj/MainMenu.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/Test Application/English.lproj/MainMenu.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/Test Application/English.lproj/MainMenu.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/Test Application/English.lproj/MainMenu~.nib/ trunk/vendorsrc/andymatuschak/Sparkle/Test Application/English.lproj/MainMenu~.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/Test Application/English.lproj/MainMenu~.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/Test Application/English.lproj/MainMenu~.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/Test Application/Test Application-Info.plist trunk/vendorsrc/andymatuschak/Sparkle/Test Application/main.m trunk/vendorsrc/andymatuschak/Sparkle/ca.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/ca.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/ca.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/ca.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/ca.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/ca.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/ca.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/ca.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/ca.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/ca.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/ca.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/ca.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/cs.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/cs.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/cs.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/cs.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/cs.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/cs.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/cs.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/cs.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/cs.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/cs.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/cs.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/cs.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/cy.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/cy.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/cy.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/cy.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/cy.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/cy.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/cy.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/cy.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/cy.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/cy.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/cy.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/cy.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/da.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/da.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/da.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/da.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/da.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/da.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/da.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/da.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/da.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/da.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/da.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/da.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/de.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/de.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/de.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/de.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/de.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/de.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/de.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/de.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/de.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/de.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/en.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/en.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/en.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/en.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/en.lproj/SUStatus.strings trunk/vendorsrc/andymatuschak/Sparkle/en.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/en.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/en.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/en.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/en.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/en.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/es.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/es.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/es.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/es.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/es.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/es.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/es.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/es.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/es.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/es.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/fi.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/fi.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/fi.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/fi.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/fi.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/fi.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/fi.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/fi.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/fi.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/fi.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/fi.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/fi.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/fr.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/fr.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/fr.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/fr.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/fr.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/fr.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/fr.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/fr.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/he.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/he.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/he.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/he.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/he.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/he.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/he.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/he.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/he.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/he.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/he.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/he.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/hu.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/hu.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/hu.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/hu.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/hu.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/hu.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/hu.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/hu.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/hu.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/hu.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/hu.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/hu.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/id.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/id.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/id.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/id.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/id.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/id.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/id.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/id.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/id.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/id.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/id.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/id.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/is.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/is.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/is.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/is.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/is.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/is.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/is.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/is.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/is.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/is.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/is.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/is.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/it.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/it.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/it.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/it.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/it.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/it.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/it.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/it.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/it.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/it.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/ja.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/ja.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/ja.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/ja.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/ja.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/ja.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/ja.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/ja.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/ja.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/ja.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/ja.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/ja.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/ko.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/ko.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/ko.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/ko.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/ko.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/ko.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/ko.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/ko.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/ko.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/ko.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/ko.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/ko.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/md5.c trunk/vendorsrc/andymatuschak/Sparkle/md5.h trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/nl.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/no.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/no.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/no.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/no.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/no.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/no.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/no.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/no.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/no.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/no.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/no.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/no.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/pl.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/pl.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/pl.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/pl.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/pl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/pl.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/pl.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/pl.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/pl.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/pl.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/pl.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/pl.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/ru.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/ru.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/ru.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/ru.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/ru.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/ru.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/ru.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/ru.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/sk.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/sk.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/sk.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/sk.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/sk.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/sk.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/sk.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/sk.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/sk.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/sk.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/sk.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/sk.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/sv.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/sv.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/sv.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/sv.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/sv.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/sv.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/sv.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/sv.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/sv.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/th.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/th.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/th.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/th.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/th.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/th.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/th.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/th.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/th.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/th.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/th.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/th.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/tr.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/tr.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/tr.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/tr.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/tr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/tr.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/tr.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/tr.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/tr.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/tr.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/tr.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/tr.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/zh_CN.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/zh_CN.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/zh_CN.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/zh_CN.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/zh_CN.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/zh_CN.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/zh_CN.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/zh_CN.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/zh_CN.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/zh_CN.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/zh_CN.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/zh_CN.lproj/Sparkle.strings trunk/vendorsrc/andymatuschak/Sparkle/zh_TW.lproj/ trunk/vendorsrc/andymatuschak/Sparkle/zh_TW.lproj/SUAutomaticUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/zh_TW.lproj/SUAutomaticUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/zh_TW.lproj/SUAutomaticUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/zh_TW.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/zh_TW.lproj/SUAutomaticUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/zh_TW.lproj/SUUpdateAlert.nib/ trunk/vendorsrc/andymatuschak/Sparkle/zh_TW.lproj/SUUpdateAlert.nib/classes.nib trunk/vendorsrc/andymatuschak/Sparkle/zh_TW.lproj/SUUpdateAlert.nib/info.nib trunk/vendorsrc/andymatuschak/Sparkle/zh_TW.lproj/SUUpdateAlert.nib/keyedobjects.nib trunk/vendorsrc/andymatuschak/Sparkle/zh_TW.lproj/SUUpdateAlert.strings trunk/vendorsrc/andymatuschak/Sparkle/zh_TW.lproj/Sparkle.strings Removed Paths: ------------- trunk/vendorsrc/Sparkle.framework/ Modified: trunk/Skim.xcodeproj/project.pbxproj =================================================================== --- trunk/Skim.xcodeproj/project.pbxproj 2007-04-16 09:28:13 UTC (rev 1828) +++ trunk/Skim.xcodeproj/project.pbxproj 2007-04-16 20:36:23 UTC (rev 1829) @@ -63,6 +63,8 @@ CE15832D0BA0740000D5B03F /* ToolbarStrikeOutNote.tiff in Resources */ = {isa = PBXBuildFile; fileRef = CE1583290BA073FF00D5B03F /* ToolbarStrikeOutNote.tiff */; }; CE15832E0BA0740000D5B03F /* ToolbarUnderlineNote.tiff in Resources */ = {isa = PBXBuildFile; fileRef = CE15832A0BA073FF00D5B03F /* ToolbarUnderlineNote.tiff */; }; CE15832F0BA0740000D5B03F /* UnderlineNoteAdorn.tiff in Resources */ = {isa = PBXBuildFile; fileRef = CE15832B0BA073FF00D5B03F /* UnderlineNoteAdorn.tiff */; }; + CE2BD83E0BD4132B00A5F4DB /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2BD82A0BD4132B00A5F4DB /* Sparkle.framework */; }; + CE2BD8450BD4135600A5F4DB /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE2BD82A0BD4132B00A5F4DB /* Sparkle.framework */; }; CE2DE4920B85D48F00D0DA12 /* SKThumbnail.m in Sources */ = {isa = PBXBuildFile; fileRef = CE2DE4910B85D48F00D0DA12 /* SKThumbnail.m */; }; CE2DE49D0B85D4F400D0DA12 /* SKFullScreenWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = CE2DE49C0B85D4F400D0DA12 /* SKFullScreenWindow.m */; }; CE2DE4C60B85D78200D0DA12 /* SKMiniaturizeWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = CE2DE4C50B85D78200D0DA12 /* SKMiniaturizeWindow.m */; }; @@ -137,8 +139,6 @@ CEA575FD0B9208B60003D2E7 /* SKOutlineView.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA575FC0B9208B60003D2E7 /* SKOutlineView.m */; }; CEE106150BCBB72C00BF2D3E /* SKNotesDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE106140BCBB72C00BF2D3E /* SKNotesDocument.m */; }; CEE1065E0BCBBE1300BF2D3E /* NotesDocument.nib in Resources */ = {isa = PBXBuildFile; fileRef = CEE106580BCBBE1200BF2D3E /* NotesDocument.nib */; }; - CEE112750BCBF51900BF2D3E /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE112610BCBF51900BF2D3E /* Sparkle.framework */; }; - CEE112780BCBF52C00BF2D3E /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = CEE112610BCBF51900BF2D3E /* Sparkle.framework */; }; CEF3BF7E0B99CA4A00E12E3D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */; }; CEF3BF860B99CAD300E12E3D /* skimnotes.m in Sources */ = {isa = PBXBuildFile; fileRef = CEF3BF850B99CAD300E12E3D /* skimnotes.m */; }; CEF3C0210B99FF8F00E12E3D /* libbz2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F977319E0B939B7D002A7823 /* libbz2.dylib */; }; @@ -169,6 +169,27 @@ remoteGlobalIDString = CE4DA8D60B9E16100039E89C; remoteInfo = "Skim Help"; }; + CE2BD81F0BD4127A00A5F4DB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CE2BD8170BD4127A00A5F4DB /* Sparkle.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8DC2EF5B0486A6940098B216 /* Sparkle.framework */; + remoteInfo = Sparkle; + }; + CE2BD8210BD4127A00A5F4DB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CE2BD8170BD4127A00A5F4DB /* Sparkle.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 61B5F90209C4CEE200B25A18 /* Sparkle Test App.app */; + remoteInfo = "Sparkle Test App"; + }; + CE2BD8600BD4144000A5F4DB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CE2BD8170BD4127A00A5F4DB /* Sparkle.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 8DC2EF4F0486A6940098B216 /* Sparkle */; + remoteInfo = Sparkle; + }; CE592C610B9239CD00C113DF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 2A37F4A9FDCFA73011CA2CEA /* Project object */; @@ -185,7 +206,7 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - CEE112780BCBF52C00BF2D3E /* Sparkle.framework in CopyFiles */, + CE2BD8450BD4135600A5F4DB /* Sparkle.framework in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -258,6 +279,8 @@ CE1583290BA073FF00D5B03F /* ToolbarStrikeOutNote.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = ToolbarStrikeOutNote.tiff; path = Images/ToolbarStrikeOutNote.tiff; sourceTree = "<group>"; }; CE15832A0BA073FF00D5B03F /* ToolbarUnderlineNote.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = ToolbarUnderlineNote.tiff; path = Images/ToolbarUnderlineNote.tiff; sourceTree = "<group>"; }; CE15832B0BA073FF00D5B03F /* UnderlineNoteAdorn.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = UnderlineNoteAdorn.tiff; path = Images/UnderlineNoteAdorn.tiff; sourceTree = "<group>"; }; + CE2BD8170BD4127A00A5F4DB /* Sparkle.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Sparkle.xcodeproj; path = vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj; sourceTree = "<group>"; }; + CE2BD82A0BD4132B00A5F4DB /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CE2DE4900B85D48F00D0DA12 /* SKThumbnail.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SKThumbnail.h; sourceTree = "<group>"; }; CE2DE4910B85D48F00D0DA12 /* SKThumbnail.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SKThumbnail.m; sourceTree = "<group>"; }; CE2DE49B0B85D4F400D0DA12 /* SKFullScreenWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SKFullScreenWindow.h; sourceTree = "<group>"; }; @@ -383,7 +406,6 @@ CEE106140BCBB72C00BF2D3E /* SKNotesDocument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SKNotesDocument.m; sourceTree = "<group>"; }; CEE106590BCBBE1200BF2D3E /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/NotesDocument.nib; sourceTree = "<group>"; }; CEE107380BCBCA3200BF2D3E /* Dutch */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = Dutch; path = Dutch.lproj/NotesDocument.nib; sourceTree = "<group>"; }; - CEE112610BCBF51900BF2D3E /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = vendorsrc/Sparkle.framework; sourceTree = "<group>"; }; CEE11EF50BCC262800BF2D3E /* Italian */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = Italian; path = Italian.lproj/NotesDocument.nib; sourceTree = "<group>"; }; CEF3BF750B99CA2900E12E3D /* skimnotes */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = skimnotes; sourceTree = BUILT_PRODUCTS_DIR; }; CEF3BF850B99CAD300E12E3D /* skimnotes.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = skimnotes.m; sourceTree = "<group>"; }; @@ -423,7 +445,7 @@ 455989F80B2662FF00E5419B /* Quartz.framework in Frameworks */, F98E24BF0B702D9400914AF0 /* Carbon.framework in Frameworks */, F977319F0B939B7D002A7823 /* libbz2.dylib in Frameworks */, - CEE112750BCBF51900BF2D3E /* Sparkle.framework in Frameworks */, + CE2BD83E0BD4132B00A5F4DB /* Sparkle.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -445,7 +467,7 @@ 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */, F98E24BE0B702D9400914AF0 /* Carbon.framework */, 455989F70B2662FF00E5419B /* Quartz.framework */, - CEE112610BCBF51900BF2D3E /* Sparkle.framework */, + CE2BD82A0BD4132B00A5F4DB /* Sparkle.framework */, F977319E0B939B7D002A7823 /* libbz2.dylib */, ); name = "Linked Frameworks"; @@ -480,6 +502,7 @@ 2A37F4AFFDCFA73011CA2CEA /* Other Sources */, CE4DA8CF0B9E157E0039E89C /* Help Sources */, 2A37F4B8FDCFA73011CA2CEA /* Resources */, + CE2BD8160BD4123D00A5F4DB /* Subprojects */, 2A37F4C3FDCFA73011CA2CEA /* Frameworks */, 19C28FB0FE9D524F11CA2CBB /* Products */, ); @@ -582,6 +605,23 @@ name = Categories; sourceTree = "<group>"; }; + CE2BD8160BD4123D00A5F4DB /* Subprojects */ = { + isa = PBXGroup; + children = ( + CE2BD8170BD4127A00A5F4DB /* Sparkle.xcodeproj */, + ); + name = Subprojects; + sourceTree = "<group>"; + }; + CE2BD8180BD4127A00A5F4DB /* Products */ = { + isa = PBXGroup; + children = ( + CE2BD8200BD4127A00A5F4DB /* Sparkle.framework */, + CE2BD8220BD4127A00A5F4DB /* Sparkle Test App.app */, + ); + name = Products; + sourceTree = "<group>"; + }; CE2DE4CF0B85D89B00D0DA12 /* Controllers */ = { isa = PBXGroup; children = ( @@ -784,6 +824,7 @@ ); dependencies = ( CE157D890B9F89CE00D5B03F /* PBXTargetDependency */, + CE2BD8610BD4144000A5F4DB /* PBXTargetDependency */, ); name = Skim; productInstallPath = "$(HOME)/Applications"; @@ -824,6 +865,12 @@ ); mainGroup = 2A37F4AAFDCFA73011CA2CEA /* Skim */; projectDirPath = ""; + projectReferences = ( + { + ProductGroup = CE2BD8180BD4127A00A5F4DB /* Products */; + ProjectRef = CE2BD8170BD4127A00A5F4DB /* Sparkle.xcodeproj */; + }, + ); projectRoot = ""; targets = ( 8D15AC270486D014006FF6A4 /* Skim */, @@ -834,6 +881,23 @@ }; /* End PBXProject section */ +/* Begin PBXReferenceProxy section */ + CE2BD8200BD4127A00A5F4DB /* Sparkle.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = Sparkle.framework; + remoteRef = CE2BD81F0BD4127A00A5F4DB /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CE2BD8220BD4127A00A5F4DB /* Sparkle Test App.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = "Sparkle Test App.app"; + remoteRef = CE2BD8210BD4127A00A5F4DB /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + /* Begin PBXResourcesBuildPhase section */ 8D15AC2B0486D014006FF6A4 /* Resources */ = { isa = PBXResourcesBuildPhase; @@ -1049,6 +1113,11 @@ target = CE4DA8D60B9E16100039E89C /* Skim Help */; targetProxy = CE157D880B9F89CE00D5B03F /* PBXContainerItemProxy */; }; + CE2BD8610BD4144000A5F4DB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Sparkle; + targetProxy = CE2BD8600BD4144000A5F4DB /* PBXContainerItemProxy */; + }; CE592C620B9239CD00C113DF /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 8D15AC270486D014006FF6A4 /* Skim */; @@ -1247,8 +1316,10 @@ FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_1)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_2)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)/vendorsrc\""; + FRAMEWORK_SEARCH_PATHS_QUOTED_2 = "\"$(SRCROOT)/../../BuildProducts/Debug\""; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_CPP_EXCEPTIONS = NO; GCC_ENABLE_CPP_RTTI = NO; @@ -1279,8 +1350,10 @@ FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_1)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_2)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)/vendorsrc\""; + FRAMEWORK_SEARCH_PATHS_QUOTED_2 = "\"$(SRCROOT)/../../BuildProducts/Debug\""; GCC_ENABLE_CPP_EXCEPTIONS = NO; GCC_ENABLE_CPP_RTTI = NO; GCC_ENABLE_OBJC_EXCEPTIONS = YES; Added: trunk/vendorsrc/andymatuschak/Sparkle/Info.plist =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/Info.plist (rev 0) +++ trunk/vendorsrc/andymatuschak/Sparkle/Info.plist 2007-04-16 20:36:23 UTC (rev 1829) @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!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>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleExecutable</key> + <string>${EXECUTABLE_NAME}</string> + <key>CFBundleName</key> + <string>${PRODUCT_NAME}</string> + <key>CFBundleIconFile</key> + <string></string> + <key>CFBundleIdentifier</key> + <string>org.andymatuschak.Sparkle</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundlePackageType</key> + <string>FMWK</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleVersion</key> + <string>1.1</string> + <key>NSPrincipalClass</key> + <string></string> +</dict> +</plist> Added: trunk/vendorsrc/andymatuschak/Sparkle/License.txt =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/License.txt (rev 0) +++ trunk/vendorsrc/andymatuschak/Sparkle/License.txt 2007-04-16 20:36:23 UTC (rev 1829) @@ -0,0 +1,7 @@ +Copyright (c) 2006 Andy Matuschak + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file Added: trunk/vendorsrc/andymatuschak/Sparkle/Makefile =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/Makefile (rev 0) +++ trunk/vendorsrc/andymatuschak/Sparkle/Makefile 2007-04-16 20:36:23 UTC (rev 1829) @@ -0,0 +1,7 @@ +.PHONY: all localizable-strings + +localizable-strings: + rm English.lproj/Sparkle.strings || TRUE + genstrings -o English.lproj -s SULocalizedString *.m *.h + mv English.lproj/Localizable.strings English.lproj/Sparkle.strings + Added: trunk/vendorsrc/andymatuschak/Sparkle/NSApplication+AppCopies.h =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/NSApplication+AppCopies.h (rev 0) +++ trunk/vendorsrc/andymatuschak/Sparkle/NSApplication+AppCopies.h 2007-04-16 20:36:23 UTC (rev 1829) @@ -0,0 +1,13 @@ +// +// NSApplication+AppCopies.h +// Sparkle +// +// Created by Andy Matuschak on 3/16/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#import <Cocoa/Cocoa.h> + +@interface NSApplication (SUAppCopies) +- (int)copiesRunning; +@end Added: trunk/vendorsrc/andymatuschak/Sparkle/NSApplication+AppCopies.m =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/NSApplication+AppCopies.m (rev 0) +++ trunk/vendorsrc/andymatuschak/Sparkle/NSApplication+AppCopies.m 2007-04-16 20:36:23 UTC (rev 1829) @@ -0,0 +1,27 @@ +// +// NSApplication+AppCopies.m +// Sparkle +// +// Created by Andy Matuschak on 3/16/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#import "NSApplication+AppCopies.h" +#import "SUUtilities.h" + +@implementation NSApplication (SUAppCopies) + +- (int)copiesRunning +{ + id appEnumerator = [[[NSWorkspace sharedWorkspace] launchedApplications] objectEnumerator], currentApp; + int count = 0; + while ((currentApp = [appEnumerator nextObject])) + { + // Potential gotcha: the new version of your app better have the same NSApplicationName. + if([[currentApp objectForKey:@"NSApplicationName"] isEqualToString:SUHostAppName()]) + count++; + } + return count; +} + +@end Added: trunk/vendorsrc/andymatuschak/Sparkle/NSFileManager+Authentication.h =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/NSFileManager+Authentication.h (rev 0) +++ trunk/vendorsrc/andymatuschak/Sparkle/NSFileManager+Authentication.h 2007-04-16 20:36:23 UTC (rev 1829) @@ -0,0 +1,11 @@ +// +// NSFileManager+Authentication.m +// Sparkle +// +// Created by Andy Matuschak on 3/9/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +@interface NSFileManager (SUAuthenticationAdditions) +- (BOOL)movePathWithAuthentication:(NSString *)src toPath:(NSString *)dst; +@end Added: trunk/vendorsrc/andymatuschak/Sparkle/NSFileManager+Authentication.m =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/NSFileManager+Authentication.m (rev 0) +++ trunk/vendorsrc/andymatuschak/Sparkle/NSFileManager+Authentication.m 2007-04-16 20:36:23 UTC (rev 1829) @@ -0,0 +1,109 @@ +// +// NSFileManager+Authentication.m +// Sparkle +// +// Created by Andy Matuschak on 3/9/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +// This code based on generous contribution from Allan Odgaard. Thanks, Allan! + +#import "sys/stat.h" +#import <Security/Security.h> + +#import <unistd.h> +#import <sys/stat.h> +#import <dirent.h> + +@implementation NSFileManager (SUAuthenticationAdditions) + +- (BOOL)currentUserOwnsPath:(NSString *)oPath +{ + char *path = (char *)[oPath fileSystemRepresentation]; + unsigned int uid = getuid(); + bool res = false; + struct stat sb; + if(stat(path, &sb) == 0) + { + if(sb.st_uid == uid) + { + res = true; + if(sb.st_mode & S_IFDIR) + { + DIR* dir = opendir(path); + struct dirent* entry = NULL; + while(res && (entry = readdir(dir))) + { + if(strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) + continue; + + char descend[strlen(path) + 1 + entry->d_namlen + 1]; + strcpy(descend, path); + strcat(descend, "/"); + strcat(descend, entry->d_name); + res = [self currentUserOwnsPath:[NSString stringWithUTF8String:descend]]; + } + closedir(dir); + } + } + } + return res; +} + +- (BOOL)_movePathWithForcedAuthentication:(NSString *)src toPath:(NSString *)dst +{ + NSString *tmp = [[[dst stringByDeletingPathExtension] stringByAppendingString:@".old"] stringByAppendingPathExtension:[dst pathExtension]]; + BOOL res = NO; + struct stat sb; + if((stat([src UTF8String], &sb) != 0) || (stat([tmp UTF8String], &sb) == 0) || stat([dst UTF8String], &sb) != 0) + return false; + + char* buf = NULL; + asprintf(&buf, + "mv -f \"$DST_PATH\" \"$TMP_PATH\" && " + "mv -f \"$SRC_PATH\" \"$DST_PATH\" && " + "rm -rf \"$TMP_PATH\" && " + "chown -R %d:%d \"$DST_PATH\"", + sb.st_uid, sb.st_gid); + + if(!buf) + return false; + + AuthorizationRef auth; + if(AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagDefaults, &auth) == errAuthorizationSuccess) + { + setenv("SRC_PATH", [src UTF8String], 1); + setenv("DST_PATH", [dst UTF8String], 1); + setenv("TMP_PATH", [tmp UTF8String], 1); + sig_t oldSigChildHandler = signal(SIGCHLD, SIG_DFL); + char const* arguments[] = { "-c", buf, NULL }; + if(AuthorizationExecuteWithPrivileges(auth, "/bin/sh", kAuthorizationFlagDefaults, (char**)arguments, NULL) == errAuthorizationSuccess) + { + int status; + int pid = wait(&status); + if(pid != -1 && WIFEXITED(status) && WEXITSTATUS(status) == 0) + res = YES; + } + signal(SIGCHLD, oldSigChildHandler); + } + AuthorizationFree(auth, 0); + free(buf); + return res; +} + +- (BOOL)movePathWithAuthentication:(NSString *)src toPath:(NSString *)dst +{ + if ([[NSFileManager defaultManager] isWritableFileAtPath:dst] && [[NSFileManager defaultManager] isWritableFileAtPath:[dst stringByDeletingLastPathComponent]]) + { + int tag = 0; + BOOL result = [[NSWorkspace sharedWorkspace] performFileOperation:NSWorkspaceRecycleOperation source:[dst stringByDeletingLastPathComponent] destination:@"" files:[NSArray arrayWithObject:[dst lastPathComponent]] tag:&tag]; + result &= [[NSFileManager defaultManager] movePath:src toPath:dst handler:NULL]; + return result; + } + else + { + return [self _movePathWithForcedAuthentication:src toPath:dst]; + } +} + +@end Added: trunk/vendorsrc/andymatuschak/Sparkle/NSFileManager+Verification.h =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/NSFileManager+Verification.h (rev 0) +++ trunk/vendorsrc/andymatuschak/Sparkle/NSFileManager+Verification.h 2007-04-16 20:36:23 UTC (rev 1829) @@ -0,0 +1,15 @@ +// +// NSFileManager+Verification.h +// Sparkle +// +// Created by Andy Matuschak on 3/16/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#import <Cocoa/Cocoa.h> + +// For the paranoid folks! +@interface NSFileManager (SUVerification) +- (BOOL)validatePath:(NSString *)path withMD5Hash:(NSString *)hash; +- (BOOL)validatePath:(NSString *)path withEncodedDSASignature:(NSString *)encodedSignature; +@end Added: trunk/vendorsrc/andymatuschak/Sparkle/NSFileManager+Verification.m =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/NSFileManager+Verification.m (rev 0) +++ trunk/vendorsrc/andymatuschak/Sparkle/NSFileManager+Verification.m 2007-04-16 20:36:23 UTC (rev 1829) @@ -0,0 +1,153 @@ +// +// NSFileManager+Verification.m +// Sparkle +// +// Created by Andy Matuschak on 3/16/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +// DSA stuff adapted from code provided by Allan Odgaard. Thanks, Allan! + +#import "NSFileManager+Verification.h" +#import "SUUtilities.h" +#import "md5.h" + +#import <stdio.h> +#import <openssl/evp.h> +#import <openssl/bio.h> +#import <openssl/pem.h> +#import <openssl/rsa.h> +#import <openssl/sha.h> + +int b64decode(unsigned char* str) +{ + unsigned char *cur, *start; + int d, dlast, phase; + unsigned char c; + static int table[256] = { + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* 00-0F */ + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* 10-1F */ + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63, /* 20-2F */ + 52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1, /* 30-3F */ + -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14, /* 40-4F */ + 15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1, /* 50-5F */ + -1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40, /* 60-6F */ + 41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1, /* 70-7F */ + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* 80-8F */ + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* 90-9F */ + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* A0-AF */ + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* B0-BF */ + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* C0-CF */ + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* D0-DF */ + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* E0-EF */ + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 /* F0-FF */ + }; + + d = dlast = phase = 0; + start = str; + for (cur = str; *cur != '\0'; ++cur ) + { + if(*cur == '\n' || *cur == '\r'){phase = dlast = 0; continue;} + d = table[(int)*cur]; + if(d != -1) + { + switch(phase) + { + case 0: + ++phase; + break; + case 1: + c = ((dlast << 2) | ((d & 0x30) >> 4)); + *str++ = c; + ++phase; + break; + case 2: + c = (((dlast & 0xf) << 4) | ((d & 0x3c) >> 2)); + *str++ = c; + ++phase; + break; + case 3: + c = (((dlast & 0x03 ) << 6) | d); + *str++ = c; + phase = 0; + break; + } + dlast = d; + } + } + *str = '\0'; + return str - start; +} + +EVP_PKEY* load_dsa_key(char *key) +{ + EVP_PKEY* pkey = NULL; + BIO *bio; + if((bio = BIO_new_mem_buf(key, strlen(key)))) + { + DSA* dsa_key = 0; + if(PEM_read_bio_DSA_PUBKEY(bio, &dsa_key, NULL, NULL)) + { + if((pkey = EVP_PKEY_new())) + { + if(EVP_PKEY_assign_DSA(pkey, dsa_key) != 1) + { + DSA_free(dsa_key); + EVP_PKEY_free(pkey); + pkey = NULL; + } + } + } + BIO_free(bio); + } + return pkey; +} + +@implementation NSFileManager (SUVerification) + +- (BOOL)validatePath:(NSString *)path withMD5Hash:(NSString *)hash +{ + NSData *data = [NSData dataWithContentsOfFile:path]; + if (!data) { return NO; } + + md5_state_t md5_state; + md5_init(&md5_state); + md5_append(&md5_state, [data bytes], [data length]); + unsigned char digest[16]; + md5_finish(&md5_state, digest); + + int di; + char hexDigest[32]; + for (di = 0; di < 16; di++) + sprintf(hexDigest + di*2, "%02x", digest[di]); + + return [hash isEqualToString:[NSString stringWithCString:hexDigest]]; +} + +- (BOOL)validatePath:(NSString *)path withEncodedDSASignature:(NSString *)encodedSignature +{ + EVP_PKEY* pkey; + if(!encodedSignature || !SUInfoValueForKey(SUPublicDSAKeyKey) || !(pkey = load_dsa_key((char *)[SUInfoValueForKey(SUPublicDSAKeyKey) UTF8String]))) + return NO; + + // Now, the signature is in base64; we have to decode it into a binary stream. + unsigned char *signature = (unsigned char *)[encodedSignature UTF8String]; + long length = b64decode(signature); + + NSData *pathData = [NSData dataWithContentsOfFile:path]; + if (!pathData) { return NO; } + unsigned char md[SHA_DIGEST_LENGTH]; + SHA1([pathData bytes], [pathData length], md); + + BOOL res = false; + EVP_MD_CTX ctx; + if(EVP_VerifyInit(&ctx, EVP_dss1()) == 1) + { + EVP_VerifyUpdate(&ctx, md, SHA_DIGEST_LENGTH); + res = EVP_VerifyFinal(&ctx, signature, length, pkey) == 1; + } + EVP_PKEY_free(pkey); + return res; +} + +@end Added: trunk/vendorsrc/andymatuschak/Sparkle/NSString+extras.h =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/NSString+extras.h (rev 0) +++ trunk/vendorsrc/andymatuschak/Sparkle/NSString+extras.h 2007-04-16 20:36:23 UTC (rev 1829) @@ -0,0 +1,61 @@ +/* + +BSD License + +Copyright (c) 2002, Brent Simmons +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 ranchero.com or Brent Simmons nor the names of its + 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. + + +*/ + + +/* + NSString+extras.h + NetNewsWire + + Created by Brent Simmons on Fri Jun 14 2002. + Copyright (c) 2002 Brent Simmons. All rights reserved. +*/ + + +#import <Foundation/Foundation.h> +#import <CoreFoundation/CoreFoundation.h> + + +@interface NSString (extras) + +- (NSString *)stringWithSubstitute:(NSString *)subs forCharactersFromSet:(NSCharacterSet *)set; + +- (NSString *) trimWhiteSpace; + +- (NSString *) stripHTML; + +- (NSString *) ellipsizeAfterNWords: (int) n; + ++ (BOOL) stringIsEmpty: (NSString *) s; + + +@end Property changes on: trunk/vendorsrc/andymatuschak/Sparkle/NSString+extras.h ___________________________________________________________________ Name: svn:executable + * Added: trunk/vendorsrc/andymatuschak/Sparkle/NSString+extras.m =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/NSString+extras.m (rev 0) +++ trunk/vendorsrc/andymatuschak/Sparkle/NSString+extras.m 2007-04-16 20:36:23 UTC (rev 1829) @@ -0,0 +1,135 @@ +/* + +BSD License + +Copyright (c) 2002, Brent Simmons +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 ranchero.com or Brent Simmons nor the names of its + 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. + + +*/ + + +/* + NSString+extras.m + NetNewsWire + + Created by Brent Simmons on Fri Jun 14 2002. + Copyright (c) 2002 Brent Simmons. All rights reserved. +*/ + +#import "NSString+extras.h" + + +@implementation NSString (extras) + +- (NSString *)stringWithSubstitute:(NSString *)subs forCharactersFromSet:(NSCharacterSet *)set +{ + NSRange r = [self rangeOfCharacterFromSet:set]; + if (r.location == NSNotFound) return self; + NSMutableString *newString = [self mutableCopy]; + do + { + [newString replaceCharactersInRange:r withString:subs]; + r = [newString rangeOfCharacterFromSet:set]; + } + while (r.location != ... [truncated message content] |
From: <ho...@us...> - 2007-04-16 09:28:16
|
Revision: 1828 http://skim-app.svn.sourceforge.net/skim-app/?rev=1828&view=rev Author: hofman Date: 2007-04-16 02:28:13 -0700 (Mon, 16 Apr 2007) Log Message: ----------- Take page rotation into account when moving/resizing notes using arrow keys. Modified Paths: -------------- trunk/SKPDFView.m Modified: trunk/SKPDFView.m =================================================================== --- trunk/SKPDFView.m 2007-04-15 22:38:09 UTC (rev 1827) +++ trunk/SKPDFView.m 2007-04-16 09:28:13 UTC (rev 1828) @@ -1393,19 +1393,77 @@ PDFPage *page = [activeAnnotation page]; NSRect pageBounds = [page boundsForBox:[self displayBox]]; - if (eventChar == NSRightArrowFunctionKey) { - if (NSMaxX(bounds) + delta <= NSMaxX(pageBounds)) - newBounds.origin.x += delta; - } else if (eventChar == NSLeftArrowFunctionKey) { - if (NSMinX(bounds) - delta >= NSMinX(pageBounds)) - newBounds.origin.x -= delta; - } else if (eventChar == NSUpArrowFunctionKey) { - if (NSMaxY(bounds) + delta <= NSMaxY(pageBounds)) - newBounds.origin.y += delta; - } else if (eventChar == NSDownArrowFunctionKey) { - if (NSMinY(bounds) - delta >= NSMinY(pageBounds)) - newBounds.origin.y -= delta; + switch ([page rotation]) { + case 0: + if (eventChar == NSRightArrowFunctionKey) { + if (NSMaxX(bounds) + delta <= NSMaxX(pageBounds)) + newBounds.origin.x += delta; + else if (NSMaxX(bounds) < NSMaxX(pageBounds)) + newBounds.origin.x += NSMaxX(pageBounds) - NSMaxX(bounds); + } else if (eventChar == NSLeftArrowFunctionKey) { + if (NSMinX(bounds) - delta >= NSMinX(pageBounds)) + newBounds.origin.x -= delta; + else if (NSMinX(bounds) > NSMinX(pageBounds)) + newBounds.origin.x -= NSMinX(bounds) - NSMinX(pageBounds); + } else if (eventChar == NSUpArrowFunctionKey) { + if (NSMaxY(bounds) + delta <= NSMaxY(pageBounds)) + newBounds.origin.y += delta; + else if (NSMaxY(bounds) < NSMaxY(pageBounds)) + newBounds.origin.y += NSMaxY(pageBounds) - NSMaxY(bounds); + } else if (eventChar == NSDownArrowFunctionKey) { + if (NSMinY(bounds) - delta >= NSMinY(pageBounds)) + newBounds.origin.y -= delta; + else if (NSMinY(bounds) > NSMinY(pageBounds)) + newBounds.origin.y -= NSMinY(bounds) - NSMinY(pageBounds); + } + break; + case 90: + if (eventChar == NSRightArrowFunctionKey) { + if (NSMaxY(bounds) + delta <= NSMaxY(pageBounds)) + newBounds.origin.y += delta; + } else if (eventChar == NSLeftArrowFunctionKey) { + if (NSMinY(bounds) - delta >= NSMinY(pageBounds)) + newBounds.origin.y -= delta; + } else if (eventChar == NSUpArrowFunctionKey) { + if (NSMinX(bounds) - delta >= NSMinX(pageBounds)) + newBounds.origin.x -= delta; + } else if (eventChar == NSDownArrowFunctionKey) { + if (NSMaxX(bounds) + delta <= NSMaxX(pageBounds)) + newBounds.origin.x += delta; + } + break; + case 180: + if (eventChar == NSRightArrowFunctionKey) { + if (NSMinX(bounds) - delta >= NSMinX(pageBounds)) + newBounds.origin.x -= delta; + } else if (eventChar == NSLeftArrowFunctionKey) { + if (NSMaxX(bounds) + delta <= NSMaxX(pageBounds)) + newBounds.origin.x += delta; + } else if (eventChar == NSUpArrowFunctionKey) { + if (NSMinY(bounds) - delta >= NSMinY(pageBounds)) + newBounds.origin.y -= delta; + } else if (eventChar == NSDownArrowFunctionKey) { + if (NSMaxY(bounds) + delta <= NSMaxY(pageBounds)) + newBounds.origin.y += delta; + } + break; + case 270: + if (eventChar == NSRightArrowFunctionKey) { + if (NSMinY(bounds) - delta >= NSMinY(pageBounds)) + newBounds.origin.y -= delta; + } else if (eventChar == NSLeftArrowFunctionKey) { + if (NSMaxY(bounds) + delta <= NSMaxY(pageBounds)) + newBounds.origin.y += delta; + } else if (eventChar == NSUpArrowFunctionKey) { + if (NSMaxX(bounds) + delta <= NSMaxX(pageBounds)) + newBounds.origin.x += delta; + } else if (eventChar == NSDownArrowFunctionKey) { + if (NSMinX(bounds) - delta >= NSMinX(pageBounds)) + newBounds.origin.x -= delta; + } + break; } + if (NSEqualRects(bounds, newBounds) == NO) { [activeAnnotation setBounds:newBounds]; if ([activeAnnotation isEditable] == NO) { @@ -1421,28 +1479,125 @@ PDFPage *page = [activeAnnotation page]; NSRect pageBounds = [page boundsForBox:[self displayBox]]; - if (eventChar == NSRightArrowFunctionKey) { - if (NSMaxX(bounds) + delta <= NSMaxX(pageBounds)) { - newBounds.size.width += delta; - } - } else if (eventChar == NSLeftArrowFunctionKey) { - newBounds.size.width -= delta; - if (NSWidth(newBounds) < 8.0) { - newBounds.size.width = 8.0; - } - } else if (eventChar == NSUpArrowFunctionKey) { - newBounds.origin.y += delta; - newBounds.size.height -= delta; - if (NSHeight(newBounds) < 8.0) { - newBounds.origin.y += NSHeight(newBounds) - 8.0; - newBounds.size.height = 8.0; - } - } else if (eventChar == NSDownArrowFunctionKey) { - if (NSMinY(bounds) - delta >= NSMinY(pageBounds)) { - newBounds.origin.y -= delta; - newBounds.size.height += delta; - } + switch ([page rotation]) { + case 0: + if (eventChar == NSRightArrowFunctionKey) { + if (NSMaxX(bounds) + delta <= NSMaxX(pageBounds)) { + newBounds.size.width += delta; + } else if (NSMaxX(bounds) < NSMaxX(pageBounds)) { + newBounds.size.width += NSMaxX(pageBounds) - NSMaxX(bounds); + } + } else if (eventChar == NSLeftArrowFunctionKey) { + newBounds.size.width -= delta; + if (NSWidth(newBounds) < 8.0) { + newBounds.size.width = 8.0; + } + } else if (eventChar == NSUpArrowFunctionKey) { + newBounds.origin.y += delta; + newBounds.size.height -= delta; + if (NSHeight(newBounds) < 8.0) { + newBounds.origin.y += NSHeight(newBounds) - 8.0; + newBounds.size.height = 8.0; + } + } else if (eventChar == NSDownArrowFunctionKey) { + if (NSMinY(bounds) - delta >= NSMinY(pageBounds)) { + newBounds.origin.y -= delta; + newBounds.size.height += delta; + } else if (NSMinY(bounds) > NSMinY(pageBounds)) { + newBounds.origin.y -= NSMinY(bounds) - NSMinY(pageBounds); + newBounds.size.height += NSMinY(bounds) - NSMinY(pageBounds); + } + } + break; + case 90: + if (eventChar == NSRightArrowFunctionKey) { + if (NSMinY(bounds) + delta <= NSMaxY(pageBounds)) { + newBounds.size.height += delta; + } else if (NSMinY(bounds) < NSMaxY(pageBounds)) { + newBounds.size.height += NSMaxY(pageBounds) - NSMinY(bounds); + } + } else if (eventChar == NSLeftArrowFunctionKey) { + newBounds.size.height -= delta; + if (NSHeight(newBounds) < 8.0) { + newBounds.size.height = 8.0; + } + } else if (eventChar == NSUpArrowFunctionKey) { + newBounds.size.width -= delta; + if (NSWidth(newBounds) < 8.0) { + newBounds.size.width = 8.0; + } + } else if (eventChar == NSDownArrowFunctionKey) { + if (NSMaxX(bounds) + delta <= NSMaxX(pageBounds)) { + newBounds.size.width += delta; + } else if (NSMaxX(bounds) < NSMaxX(pageBounds)) { + newBounds.size.width += NSMaxX(pageBounds) - NSMaxX(bounds); + } + } + break; + case 180: + if (eventChar == NSRightArrowFunctionKey) { + if (NSMinX(bounds) - delta >= NSMinX(pageBounds)) { + newBounds.origin.x -= delta; + newBounds.size.width += delta; + } else if (NSMinX(bounds) > NSMinX(pageBounds)) { + newBounds.origin.x -= NSMinX(bounds) - NSMinX(pageBounds); + newBounds.size.width += NSMinX(bounds) - NSMinX(pageBounds); + } + } else if (eventChar == NSLeftArrowFunctionKey) { + newBounds.origin.x += delta; + newBounds.size.width -= delta; + if (NSWidth(newBounds) < 8.0) { + newBounds.origin.x += NSWidth(newBounds) - 8.0; + newBounds.size.width = 8.0; + } + } else if (eventChar == NSUpArrowFunctionKey) { + newBounds.size.height -= delta; + if (NSHeight(newBounds) < 8.0) { + newBounds.size.height = 8.0; + } + } else if (eventChar == NSDownArrowFunctionKey) { + if (NSMaxY(bounds) + delta <= NSMaxY(pageBounds)) { + newBounds.size.height += delta; + } else if (NSMaxY(bounds) < NSMaxY(pageBounds)) { + newBounds.size.height += NSMaxY(pageBounds) - NSMaxY(bounds); + } + } + break; + case 270: + if (eventChar == NSRightArrowFunctionKey) { + if (NSMinY(bounds) - delta >= NSMinY(pageBounds)) { + newBounds.origin.y -= delta; + newBounds.size.height += delta; + } else if (NSMinY(bounds) > NSMinY(pageBounds)) { + newBounds.origin.y -= NSMinY(bounds) - NSMinY(pageBounds); + newBounds.size.height += NSMinY(bounds) - NSMinY(pageBounds); + } + } else if (eventChar == NSLeftArrowFunctionKey) { + newBounds.origin.y += delta; + newBounds.size.height -= delta; + if (NSHeight(newBounds) < 8.0) { + newBounds.origin.y += NSHeight(newBounds) - 8.0; + newBounds.size.height = 8.0; + } + } else if (eventChar == NSUpArrowFunctionKey) { + newBounds.origin.x += delta; + newBounds.size.width -= delta; + if (NSWidth(newBounds) < 8.0) { + newBounds.origin.x += NSWidth(newBounds) - 8.0; + newBounds.size.width = 8.0; + } + } else if (eventChar == NSDownArrowFunctionKey) { + if (NSMinX(bounds) - delta >= NSMinX(pageBounds)) { + newBounds.origin.x -= delta; + newBounds.size.width += delta; + } else if (NSMinX(bounds) > NSMinX(pageBounds)) { + newBounds.origin.x -= NSMinX(bounds) - NSMinX(pageBounds); + newBounds.size.width += NSMinX(bounds) - NSMinX(pageBounds); + } + } + break; } + if (NSEqualRects(bounds, newBounds) == NO) { [activeAnnotation setBounds:newBounds]; if ([activeAnnotation isEditable] == NO) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-04-15 22:38:11
|
Revision: 1827 http://skim-app.svn.sourceforge.net/skim-app/?rev=1827&view=rev Author: hofman Date: 2007-04-15 15:38:09 -0700 (Sun, 15 Apr 2007) Log Message: ----------- Don't close notes pane; we should use the width from the prefs. Modified Paths: -------------- trunk/SKMainWindowController.m Modified: trunk/SKMainWindowController.m =================================================================== --- trunk/SKMainWindowController.m 2007-04-15 18:39:11 UTC (rev 1826) +++ trunk/SKMainWindowController.m 2007-04-15 22:38:09 UTC (rev 1827) @@ -272,8 +272,6 @@ NSWidth([leftSideContentBox frame]) <= 0.0) { [self toggleLeftSidePane:self]; } - if (NSWidth([rightSideContentBox frame]) > 0.0) - [self toggleRightSidePane:self]; [pdfView setBackgroundColor:[NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKBackgroundColorKey]]]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-04-15 18:39:17
|
Revision: 1826 http://skim-app.svn.sourceforge.net/skim-app/?rev=1826&view=rev Author: hofman Date: 2007-04-15 11:39:11 -0700 (Sun, 15 Apr 2007) Log Message: ----------- remove unused methods Modified Paths: -------------- trunk/SKPreferenceController.m Modified: trunk/SKPreferenceController.m =================================================================== --- trunk/SKPreferenceController.m 2007-04-15 18:18:54 UTC (rev 1825) +++ trunk/SKPreferenceController.m 2007-04-15 18:39:11 UTC (rev 1826) @@ -120,17 +120,6 @@ [[[NSApp delegate] updater] scheduleCheckWithInterval:checkInterval]; } -- (IBAction)resetNoteColors:(id)sender { - [[NSUserDefaultsController sharedUserDefaultsController] revertToInitialValuesForKeys: - [NSArray arrayWithObjects:SKFreeTextNoteColorKey, SKAnchoredNoteColorKey, SKCircleNoteColorKey, SKSquareNoteColorKey, - SKHighlightNoteColorKey, SKUnderlineNoteColorKey, SKStrikeOutNoteColorKey, nil]]; -} - -- (IBAction)resetTextNoteFont:(id)sender { - [[NSUserDefaultsController sharedUserDefaultsController] revertToInitialValuesForKeys: - [NSArray arrayWithObjects:SKTextNoteFontNameKey, SKTextNoteFontSizeKey, nil]]; -} - - (void)resetSheetDidEnd:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo { if (returnCode == NSAlertDefaultReturn) { NSString *tabID = (NSString *)contextInfo; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |