Revision: 7328
          http://skim-app.svn.sourceforge.net/skim-app/?rev=7328&view=rev
Author:   hofman
Date:     2011-07-06 00:36:39 +0000 (Wed, 06 Jul 2011)

Log Message:
-----------
remember last selected pref pane, as prescribed by the HIG

Modified Paths:
--------------
    trunk/SKPreferenceController.m

Modified: trunk/SKPreferenceController.m
===================================================================
--- trunk/SKPreferenceController.m      2011-07-05 20:43:30 UTC (rev 7327)
+++ trunk/SKPreferenceController.m      2011-07-06 00:36:39 UTC (rev 7328)
@@ -54,6 +54,8 @@
 
 #define SKPreferenceWindowFrameAutosaveName @"SKPreferenceWindow"
 
+#define SKLastSelectedPreferencePaneKey @"SKLastSelectedPreferencePane"
+
 #define NIBNAME_KEY @"nibName"
 
 @implementation SKPreferenceController
@@ -99,6 +101,42 @@
     [super dealloc];
 }
 
+- (SKPreferencePane *)preferencePaneForItemIdentifier:(NSString *)itemIdent {
+    for (SKPreferencePane *pane in preferencePanes)
+        if ([[pane nibName] isEqualToString:itemIdent])
+            return pane;
+    return nil;
+}
+
+- (void)selectPane:(SKPreferencePane *)pane {
+    if ([pane isEqual:currentPane] == NO) {
+        
+        [[self window] setTitle:[pane title]];
+        
+        // make sure edits are committed
+        [currentPane commitEditing];
+        [[NSUserDefaultsController sharedUserDefaultsController] 
commitEditing];
+        
+        NSView *view = [pane view];
+        NSRect frame = [view frame];
+        CGFloat dh = NSHeight([contentView frame]) - NSHeight(frame);
+        CGFloat dw = NSWidth([contentView frame]) - NSWidth(frame);
+        
+        [view setFrameOrigin:NSMakePoint(0.0, dh)];
+        [contentView replaceSubview:[currentPane view] with:view];
+        
+        currentPane = pane;
+        
+        frame = [[self window] frame];
+        frame.origin.y += dh;
+        frame.size.height -= dh;
+        frame.size.width -= dw;
+        [[self window] setFrame:frame display:YES animate:YES];
+        
+        [[NSUserDefaults standardUserDefaults] setObject:[currentPane nibName] 
forKey:SKLastSelectedPreferencePaneKey];
+    }
+}
+
 - (void)windowDidLoad {
     NSWindow *window = [self window];
     NSToolbar *toolbar = [[[NSToolbar alloc] 
initWithIdentifier:SKPreferencesToolbarIdentifier] autorelease];
@@ -114,7 +152,7 @@
     
     SKAutoSizeButtons(resetButtons, NO);
     
-    currentPane = [preferencePanes objectAtIndex:0];
+    currentPane = [self preferencePaneForItemIdentifier:[[NSUserDefaults 
standardUserDefaults] stringForKey:SKLastSelectedPreferencePaneKey]] ?: 
[preferencePanes objectAtIndex:0];
     [toolbar setSelectedItemIdentifier:[currentPane nibName]];
     [window setTitle:[currentPane title]];
         
@@ -138,42 +176,6 @@
     [[NSUserDefaultsController sharedUserDefaultsController] commitEditing];
 }
 
-#pragma mark Preference panes
-
-- (SKPreferencePane *)preferencePaneForItemIdentifier:(NSString *)itemIdent {
-    for (SKPreferencePane *pane in preferencePanes)
-        if ([[pane nibName] isEqualToString:itemIdent])
-            return pane;
-    return nil;
-}
-
-- (void)selectPane:(SKPreferencePane *)pane {
-    if ([pane isEqual:currentPane] == NO) {
-        
-        [[self window] setTitle:[pane title]];
-        
-        // make sure edits are committed
-        [currentPane commitEditing];
-        [[NSUserDefaultsController sharedUserDefaultsController] 
commitEditing];
-        
-        NSView *view = [pane view];
-        NSRect frame = [view frame];
-        CGFloat dh = NSHeight([contentView frame]) - NSHeight(frame);
-        CGFloat dw = NSWidth([contentView frame]) - NSWidth(frame);
-        
-        [view setFrameOrigin:NSMakePoint(0.0, dh)];
-        [contentView replaceSubview:[currentPane view] with:view];
-        
-        currentPane = pane;
-        
-        frame = [[self window] frame];
-        frame.origin.y += dh;
-        frame.size.height -= dh;
-        frame.size.width -= dw;
-        [[self window] setFrame:frame display:YES animate:YES];
-    }
-}
-
 #pragma mark Actions
 
 - (void)selectPaneAction:(id)sender {


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

------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to