Revision: 2950
http://skim-app.svn.sourceforge.net/skim-app/?rev=2950&view=rev
Author: hofman
Date: 2007-09-20 10:25:09 -0700 (Thu, 20 Sep 2007)
Log Message:
-----------
Add a hidden default to use drawers for the real drawer die-hards.
Modified Paths:
--------------
trunk/SKApplicationController.m
trunk/SKMainWindowController.h
trunk/SKMainWindowController.m
Modified: trunk/SKApplicationController.m
===================================================================
--- trunk/SKApplicationController.m 2007-09-20 14:18:12 UTC (rev 2949)
+++ trunk/SKApplicationController.m 2007-09-20 17:25:09 UTC (rev 2950)
@@ -377,7 +377,7 @@
}
- (void)saveCurrentOpenDocuments:(id)sender {
- [[NSUserDefaults standardUserDefaults] setObject:[[[NSDocumentController
sharedDocumentController] documents] valueForKey:@"currentDocumentSetup"]
forKey:SKLastOpenFileNamesKey];
+ //[[NSUserDefaults standardUserDefaults] setObject:[[[NSDocumentController
sharedDocumentController] documents] valueForKey:@"currentDocumentSetup"]
forKey:SKLastOpenFileNamesKey];
}
- (NSString *)applicationSupportPathForDomain:(int)domain create:(BOOL)create {
Modified: trunk/SKMainWindowController.h
===================================================================
--- trunk/SKMainWindowController.h 2007-09-20 14:18:12 UTC (rev 2949)
+++ trunk/SKMainWindowController.h 2007-09-20 17:25:09 UTC (rev 2950)
@@ -201,6 +201,10 @@
float thumbnailCacheSize;
float snapshotCacheSize;
+
+ NSDrawer *leftSideDrawer;
+ NSDrawer *rightSideDrawer;
+ BOOL usesDrawers;
}
- (IBAction)changeColor:(id)sender;
@@ -312,6 +316,9 @@
- (SKRightSidePaneState)rightSidePaneState;
- (void)setRightSidePaneState:(SKRightSidePaneState)newRightSidePaneState;
+- (BOOL)leftSidePaneIsOpen;
+- (BOOL)rightSidePaneIsOpen;
+
- (void)displayOutlineView;
- (void)fadeInOutlineView;
- (void)displayThumbnailView;
Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m 2007-09-20 14:18:12 UTC (rev 2949)
+++ trunk/SKMainWindowController.m 2007-09-20 17:25:09 UTC (rev 2950)
@@ -215,6 +215,7 @@
updatingColor = NO;
updatingFont = NO;
updatingLine = NO;
+ usesDrawers = [[NSUserDefaults standardUserDefaults]
boolForKey:@"SKUsesDrawers"];
}
return self;
@@ -243,6 +244,8 @@
[savedNormalSetup release];
[progressController release];
[colorAccessoryView release];
+ [leftSideDrawer release];
+ [rightSideDrawer release];
[super dealloc];
}
@@ -292,6 +295,29 @@
[secondaryPdfView setFrame:[[secondaryPdfContentBox contentView] bounds]];
[pdfSplitView setBlendEnds:YES];
+ if (usesDrawers) {
+ NSSize size = [leftSideContentBox frame].size;
+ leftSideDrawer = [[NSDrawer alloc] initWithContentSize:size
preferredEdge:NSMinXEdge];
+ rightSideDrawer = [[NSDrawer alloc] initWithContentSize:size
preferredEdge:NSMaxXEdge];
+ [leftSideDrawer setContentView:leftSideContentBox];
+ [rightSideDrawer setContentView:rightSideContentBox];
+ [leftSideDrawer setParentWindow:[self window]];
+ [rightSideDrawer setParentWindow:[self window]];
+ [leftSideEdgeView setEdges:BDSKNoEdgeMask];
+ [leftSideGradientView setDrawsGradient:NO];
+ [rightSideEdgeView setEdges:BDSKNoEdgeMask];
+ [rightSideGradientView setDrawsGradient:NO];
+ [pdfSplitView setFrame:[splitView frame]];
+ [pdfSplitView setAutoresizingMask:NSViewWidthSizable |
NSViewHeightSizable];
+ [pdfSplitView adjustSubviews];
+ [[splitView superview] replaceSubview:splitView with:pdfSplitView];
+ splitView = nil;
+ [leftSideDrawer openOnEdge:NSMinXEdge];
+ [rightSideDrawer openOnEdge:NSMaxXEdge];
+ [leftSideDrawer setDelegate:self];
+ [rightSideDrawer setDelegate:self];
+ }
+
[outlineView setAutoresizesOutlineColumn: NO];
[self displayOutlineView];
[self displayNoteView];
@@ -329,19 +355,35 @@
if (width >= 0.0) {
frame = [leftSideContentBox frame];
frame.size.width = width;
- [leftSideContentBox setFrame:frame];
+ if (usesDrawers == NO) {
+ [leftSideContentBox setFrame:frame];
+ } else if (width > 0.0) {
+ [leftSideDrawer setContentSize:frame.size];
+ [leftSideDrawer openOnEdge:NSMinXEdge];
+ } else {
+ [leftSideDrawer close];
+ }
}
width = [sud floatForKey:SKRightSidePaneWidthKey];
if (width >= 0.0) {
frame = [rightSideContentBox frame];
frame.size.width = width;
frame.origin.x = NSMaxX([splitView frame]) - width;
- [rightSideContentBox setFrame:frame];
+ if (usesDrawers == NO) {
+ [rightSideContentBox setFrame:frame];
+ } else if (width > 0.0) {
+ [rightSideDrawer setContentSize:frame.size];
+ [rightSideDrawer openOnEdge:NSMaxXEdge];
+ } else {
+ [rightSideDrawer close];
+ }
}
- frame = [pdfContentBox frame];
- frame.size.width = NSWidth([splitView frame]) -
NSWidth([leftSideContentBox frame]) - NSWidth([rightSideContentBox frame]) - 2
* [splitView dividerThickness];
- frame.origin.x = NSMaxX([leftSideContentBox frame]) + [splitView
dividerThickness];
- [pdfContentBox setFrame:frame];
+ if (usesDrawers == NO) {
+ frame = [pdfContentBox frame];
+ frame.size.width = NSWidth([splitView frame]) -
NSWidth([leftSideContentBox frame]) - NSWidth([rightSideContentBox frame]) - 2
* [splitView dividerThickness];
+ frame.origin.x = NSMaxX([leftSideContentBox frame]) + [splitView
dividerThickness];
+ [pdfContentBox setFrame:frame];
+ }
}
// this needs to be done before loading the PDFDocument
@@ -363,7 +405,7 @@
[pdfView layoutDocumentView];
// Show/hide left side pane if necessary
- if ([sud boolForKey:SKOpenContentsPaneOnlyForTOCKey] &&
(NSWidth([leftSideContentBox frame]) > 0.0) == (pdfOutline == nil))
+ if ([sud boolForKey:SKOpenContentsPaneOnlyForTOCKey] && [self
leftSidePaneIsOpen] == (pdfOutline == nil))
[self toggleLeftSidePane:self];
if (pdfOutline == nil) {
[self setLeftSidePaneState:SKThumbnailSidePaneState];
@@ -511,18 +553,34 @@
if (number = [setup objectForKey:@"leftSidePaneWidth"]) {
frame = [leftSideContentBox frame];
frame.size.width = [number floatValue];
- [leftSideContentBox setFrame:frame];
+ if (usesDrawers == NO) {
+ [leftSideContentBox setFrame:frame];
+ } else if (NSWidth(frame) > 0.0) {
+ [leftSideDrawer setContentSize:frame.size];
+ [leftSideDrawer openOnEdge:NSMinXEdge];
+ } else {
+ [leftSideDrawer close];
+ }
}
if (number = [setup objectForKey:@"rightSidePaneWidth"]) {
frame = [rightSideContentBox frame];
frame.size.width = [number floatValue];
frame.origin.x = NSMaxX([splitView frame]) - NSWidth(frame);
- [rightSideContentBox setFrame:frame];
+ if (usesDrawers == NO) {
+ [rightSideContentBox setFrame:frame];
+ } else if (NSWidth(frame) > 0.0) {
+ [rightSideDrawer setContentSize:frame.size];
+ [rightSideDrawer openOnEdge:NSMaxXEdge];
+ } else {
+ [rightSideDrawer close];
+ }
}
- frame = [pdfContentBox frame];
- frame.size.width = NSWidth([splitView frame]) -
NSWidth([leftSideContentBox frame]) - NSWidth([rightSideContentBox frame]) - 2
* [splitView dividerThickness];
- frame.origin.x = NSMaxX([leftSideContentBox frame]) + [splitView
dividerThickness];
- [pdfContentBox setFrame:frame];
+ if (usesDrawers == NO) {
+ frame = [pdfContentBox frame];
+ frame.size.width = NSWidth([splitView frame]) -
NSWidth([leftSideContentBox frame]) - NSWidth([rightSideContentBox frame]) - 2
* [splitView dividerThickness];
+ frame.origin.x = NSMaxX([leftSideContentBox frame]) + [splitView
dividerThickness];
+ [pdfContentBox setFrame:frame];
+ }
[self applyPDFSettings:setup];
if (number = [setup objectForKey:@"pageIndex"])
@@ -533,8 +591,8 @@
NSMutableDictionary *setup = [NSMutableDictionary dictionary];
[setup setObject:NSStringFromRect([mainWindow frame])
forKey:@"windowFrame"];
- [setup setObject:[NSNumber numberWithFloat:NSWidth([leftSideContentBox
frame])] forKey:@"leftSidePaneWidth"];
- [setup setObject:[NSNumber numberWithFloat:NSWidth([rightSideContentBox
frame])] forKey:@"rightSidePaneWidth"];
+ [setup setObject:[NSNumber numberWithFloat:[self leftSidePaneIsOpen] ?
NSWidth([leftSideContentBox frame]) : 0.0] forKey:@"leftSidePaneWidth"];
+ [setup setObject:[NSNumber numberWithFloat:[self rightSidePaneIsOpen] ?
NSWidth([rightSideContentBox frame]) : 0.0] forKey:@"rightSidePaneWidth"];
[setup setObject:[NSNumber numberWithUnsignedInt:[[pdfView currentPage]
pageIndex]] forKey:@"pageIndex"];
if ([self isFullScreen] || [self isPresentation]) {
[setup addEntriesFromDictionary:savedNormalSetup];
@@ -1018,6 +1076,28 @@
}
}
+- (BOOL)leftSidePaneIsOpen {
+ int state;
+ if ([self isFullScreen])
+ state = [leftSideWindow state];
+ else if (usesDrawers)
+ state = [leftSideDrawer state];
+ else
+ state = NSWidth([leftSideContentBox frame]) > 0.0 ? NSDrawerOpenState
: NSDrawerClosedState;
+ return state == NSDrawerOpenState || state == NSDrawerOpeningState;
+}
+
+- (BOOL)rightSidePaneIsOpen {
+ int state;
+ if ([self isFullScreen])
+ state = [rightSideWindow state];
+ else if (usesDrawers)
+ state = [rightSideDrawer state];
+ else
+ state = NSWidth([rightSideContentBox frame]) > 0.0 ? NSDrawerOpenState
: NSDrawerClosedState;
+ return state == NSDrawerOpenState || state == NSDrawerOpeningState;
+}
+
- (NSArray *)notes {
return notes;
}
@@ -1700,7 +1780,7 @@
if ([self isFullScreen]) {
if ([leftSideWindow state] == NSDrawerClosedState || [leftSideWindow
state] == NSDrawerClosingState)
[leftSideWindow expand];
- } else if (NSWidth([leftSideContentBox frame]) <= 0.0) {
+ } else if ([self leftSidePaneIsOpen] == NO) {
[self toggleLeftSidePane:sender];
}
[searchField selectText:self];
@@ -1722,7 +1802,9 @@
documentRect.size.height /= [[self pdfView] scaleFactor];
}
- frame.size.width = NSWidth([leftSideContentBox frame]) +
NSWidth([rightSideContentBox frame]) + NSWidth(documentRect) + 2 * [splitView
dividerThickness] + 2.0;
+ frame.size.width = NSWidth(documentRect);
+ if (usesDrawers == NO)
+ frame.size.width += NSWidth([leftSideContentBox frame]) +
NSWidth([rightSideContentBox frame]) + 2 * [splitView dividerThickness] + 2.0;
if (displayMode == kPDFDisplaySinglePage || displayMode ==
kPDFDisplayTwoUp) {
frame.size.height = NSHeight(documentRect) + 1.0;
} else {
@@ -1823,6 +1905,12 @@
[self hideLeftSideWindow];
else
[self showLeftSideWindowOnScreen:[[self window] screen]];
+ } else if (usesDrawers) {
+ int state = [leftSideDrawer state];
+ if (state == NSDrawerOpenState || state == NSDrawerOpeningState)
+ [leftSideDrawer close];
+ else
+ [leftSideDrawer openOnEdge:NSMinXEdge];
} else {
NSRect sideFrame = [leftSideContentBox frame];
NSRect pdfFrame = [pdfContentBox frame];
@@ -1857,6 +1945,12 @@
[rightSideWindow collapse];
else
[rightSideWindow expand];
+ } else if (usesDrawers) {
+ int state = [rightSideDrawer state];
+ if (state == NSDrawerOpenState || state == NSDrawerOpeningState)
+ [rightSideDrawer close];
+ else
+ [rightSideDrawer openOnEdge:NSMaxXEdge];
} else {
NSRect sideFrame = [rightSideContentBox frame];
NSRect pdfFrame = [pdfContentBox frame];
@@ -1951,12 +2045,14 @@
[leftSideWindow moveToScreen:screen];
- if ([[mainWindow firstResponder] isDescendantOf:leftSideContentView])
- [mainWindow makeFirstResponder:nil];
+ if ([[[leftSideContentView window] firstResponder]
isDescendantOf:leftSideContentView])
+ [[leftSideContentView window] makeFirstResponder:nil];
[leftSideWindow setMainView:leftSideContentView];
- [leftSideEdgeView setEdges:BDSKNoEdgeMask];
- [leftSideGradientView setDrawsGradient:NO];
+ if (usesDrawers == NO) {
+ [leftSideEdgeView setEdges:BDSKNoEdgeMask];
+ [leftSideGradientView setDrawsGradient:NO];
+ }
if ([self isPresentation]) {
savedLeftSidePaneState = [self leftSidePaneState];
@@ -1979,12 +2075,14 @@
[rightSideWindow moveToScreen:screen];
- if ([[mainWindow firstResponder] isDescendantOf:rightSideContentView])
- [mainWindow makeFirstResponder:nil];
+ if ([[[rightSideContentView window] firstResponder]
isDescendantOf:rightSideContentView])
+ [[rightSideContentView window] makeFirstResponder:nil];
[rightSideWindow setMainView:rightSideContentView];
- [rightSideEdgeView setEdges:BDSKNoEdgeMask];
- [rightSideGradientView setDrawsGradient:NO];
+ if (usesDrawers == NO) {
+ [rightSideEdgeView setEdges:BDSKNoEdgeMask];
+ [rightSideGradientView setDrawsGradient:NO];
+ }
if ([self isPresentation]) {
[rightSideWindow expand];
@@ -2007,8 +2105,10 @@
[leftSideContentView setFrame:[leftSideContentBox bounds]];
[leftSideContentBox addSubview:leftSideContentView];
- [leftSideEdgeView setEdges:BDSKMinXEdgeMask | BDSKMaxXEdgeMask];
- [leftSideGradientView setDrawsGradient:YES];
+ if (usesDrawers == NO) {
+ [leftSideEdgeView setEdges:BDSKMinXEdgeMask | BDSKMaxXEdgeMask];
+ [leftSideGradientView setDrawsGradient:YES];
+ }
if ([self isPresentation]) {
[self setLeftSidePaneState:savedLeftSidePaneState];
@@ -2028,8 +2128,10 @@
[rightSideContentView setFrame:[rightSideContentBox bounds]];
[rightSideContentBox addSubview:rightSideContentView];
- [rightSideEdgeView setEdges:BDSKMinXEdgeMask | BDSKMaxXEdgeMask];
- [rightSideGradientView setDrawsGradient:YES];
+ if (usesDrawers == NO) {
+ [rightSideEdgeView setEdges:BDSKMinXEdgeMask | BDSKMaxXEdgeMask];
+ [rightSideGradientView setDrawsGradient:YES];
+ }
if ([self isPresentation]) {
[rightSideWindow setLevel:NSFloatingWindowLevel];
@@ -2489,7 +2591,7 @@
}
- (void)displaySearchResultsForString:(NSString *)string {
- if (NSWidth([leftSideContentBox frame]) <= 0.0)
+ if ([self leftSidePaneIsOpen] == NO)
[self toggleLeftSidePane:self];
[searchField setStringValue:string];
[self search:searchField];
@@ -2644,7 +2746,7 @@
-
(NSRect)snapshotControllerTargetRectForMiniaturize:(SKSnapshotWindowController
*)controller {
if ([self isPresentation] == NO) {
- if ([self isFullScreen] == NO && NSWidth([rightSideContentBox frame])
<= 0.0) {
+ if ([self isFullScreen] == NO && [self rightSidePaneIsOpen] == NO) {
[self toggleRightSidePane:self];
} else if ([self isFullScreen] && ([rightSideWindow state] ==
NSDrawerClosedState || [rightSideWindow state] == NSDrawerClosingState)) {
[rightSideWindow expand];
@@ -4730,30 +4832,16 @@
} else if (action == @selector(autoSelectContent:)) {
return [self isPresentation] == NO && [pdfView toolMode] ==
SKSelectToolMode;
} else if (action == @selector(toggleLeftSidePane:)) {
- if ([self isFullScreen]) {
- if ([leftSideWindow state] == NSDrawerOpenState || [leftSideWindow
state] == NSDrawerOpeningState)
- [menuItem setTitle:NSLocalizedString(@"Hide Contents Pane",
@"Menu item title")];
- else
- [menuItem setTitle:NSLocalizedString(@"Show Contents Pane",
@"Menu item title")];
- } else {
- if (NSWidth([leftSideContentBox frame]) > 0.0)
- [menuItem setTitle:NSLocalizedString(@"Hide Contents Pane",
@"Menu item title")];
- else
- [menuItem setTitle:NSLocalizedString(@"Show Contents Pane",
@"Menu item title")];
- }
+ if ([self leftSidePaneIsOpen])
+ [menuItem setTitle:NSLocalizedString(@"Hide Contents Pane", @"Menu
item title")];
+ else
+ [menuItem setTitle:NSLocalizedString(@"Show Contents Pane", @"Menu
item title")];
return YES;
} else if (action == @selector(toggleRightSidePane:)) {
- if ([self isFullScreen]) {
- if ([rightSideWindow state] == NSDrawerOpenState ||
[rightSideWindow state] == NSDrawerOpeningState)
- [menuItem setTitle:NSLocalizedString(@"Hide Notes Pane",
@"Menu item title")];
- else
- [menuItem setTitle:NSLocalizedString(@"Show Notes Pane",
@"Menu item title")];
- } else {
- if (NSWidth([rightSideContentBox frame]) > 0.0)
- [menuItem setTitle:NSLocalizedString(@"Hide Notes Pane",
@"Menu item title")];
- else
- [menuItem setTitle:NSLocalizedString(@"Show Notes Pane",
@"Menu item title")];
- }
+ if ([self rightSidePaneIsOpen])
+ [menuItem setTitle:NSLocalizedString(@"Hide Notes Pane", @"Menu
item title")];
+ else
+ [menuItem setTitle:NSLocalizedString(@"Show Notes Pane", @"Menu
item title")];
return [self isPresentation] == NO;
} else if (action == @selector(changeLeftSidePaneState:)) {
[menuItem setState:(int)leftSidePaneState == [menuItem tag] ?
([findTableView window] ? NSMixedState : NSOnState) : NSOffState];
@@ -4912,4 +5000,34 @@
}
}
+- (NSSize)drawerWillResizeContents:(NSDrawer *)sender
toSize:(NSSize)contentSize {
+ if ([[self window] frameAutosaveName] && settingUpWindow == NO) {
+ if ([sender isEqual:leftSideDrawer])
+ [[NSUserDefaults standardUserDefaults] setFloat:contentSize.width
forKey:SKLeftSidePaneWidthKey];
+ else if ([sender isEqual:rightSideDrawer])
+ [[NSUserDefaults standardUserDefaults] setFloat:contentSize.width
forKey:SKRightSidePaneWidthKey];
+ }
+ return contentSize;
+}
+
+- (void)drawerDidOpen:(NSNotification *)notification {
+ id sender = [notification object];
+ if ([[self window] frameAutosaveName] && settingUpWindow == NO) {
+ if ([sender isEqual:leftSideDrawer])
+ [[NSUserDefaults standardUserDefaults] setFloat:[sender
contentSize].width forKey:SKLeftSidePaneWidthKey];
+ else if ([sender isEqual:rightSideDrawer])
+ [[NSUserDefaults standardUserDefaults] setFloat:[sender
contentSize].width forKey:SKRightSidePaneWidthKey];
+ }
+}
+
+- (void)drawerDidClose:(NSNotification *)notification {
+ id sender = [notification object];
+ if ([[self window] frameAutosaveName] && settingUpWindow == NO) {
+ if ([sender isEqual:leftSideDrawer])
+ [[NSUserDefaults standardUserDefaults] setFloat:0.0
forKey:SKLeftSidePaneWidthKey];
+ else if ([sender isEqual:rightSideDrawer])
+ [[NSUserDefaults standardUserDefaults] setFloat:0.0
forKey:SKRightSidePaneWidthKey];
+ }
+}
+
@end
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit