Revision: 4436
          http://skim-app.svn.sourceforge.net/skim-app/?rev=4436&view=rev
Author:   hofman
Date:     2008-08-20 22:13:33 +0000 (Wed, 20 Aug 2008)

Log Message:
-----------
Add method to open document with setup info to document controller so we don't 
need to repeat it.

Modified Paths:
--------------
    trunk/SKApplicationController.h
    trunk/SKApplicationController.m
    trunk/SKBookmarkController.m
    trunk/SKDocumentController.h
    trunk/SKDocumentController.m

Modified: trunk/SKApplicationController.h
===================================================================
--- trunk/SKApplicationController.h     2008-08-20 16:43:03 UTC (rev 4435)
+++ trunk/SKApplicationController.h     2008-08-20 22:13:33 UTC (rev 4436)
@@ -40,9 +40,6 @@
 
 @class SUUpdater, SKLine, SKDownloadController;
 
-extern NSString *SKDocumentSetupAliasKey;
-extern NSString *SKDocumentSetupFileNameKey;
-
 @class RemoteControl;
 
 @interface SKApplicationController : NSObject {

Modified: trunk/SKApplicationController.m
===================================================================
--- trunk/SKApplicationController.m     2008-08-20 16:43:03 UTC (rev 4435)
+++ trunk/SKApplicationController.m     2008-08-20 22:13:33 UTC (rev 4436)
@@ -84,9 +84,6 @@
 #define VIEW_MENU_INDEX 4
 #define BOOKMARKS_MENU_INDEX 8
 
-NSString *SKDocumentSetupAliasKey = @"_BDAlias";
-NSString *SKDocumentSetupFileNameKey = @"fileName";
-
 static NSString *SKCurrentDocumentSetupKey = @"currentDocumentSetup";
 
 static NSString *SKSpotlightVersionInfoKey = @"SKSpotlightVersionInfo";
@@ -153,24 +150,12 @@
         NSArray *files = [[NSUserDefaults standardUserDefaults] 
objectForKey:SKLastOpenFileNamesKey];
         NSEnumerator *fileEnum = [files objectEnumerator];
         NSDictionary *dict;
-        NSURL *fileURL = nil;
-        SKPDFDocument *document;
         NSError *error;
         
-        while (dict = [fileEnum nextObject]){ 
-            fileURL = [[BDAlias aliasWithData:[dict 
objectForKey:SKDocumentSetupAliasKey]] fileURL];
-            if(fileURL == nil && [dict 
objectForKey:SKDocumentSetupFileNameKey])
-                fileURL = [NSURL fileURLWithPath:[dict 
objectForKey:SKDocumentSetupFileNameKey]];
-            if(fileURL && NO == SKFileIsInTrash(fileURL)) {
-                if (document = [[NSDocumentController 
sharedDocumentController] openDocumentWithContentsOfURL:fileURL display:NO 
error:&error]) {
-                    [document makeWindowControllers];
-                    if ([document 
respondsToSelector:@selector(mainWindowController)])
-                        [[document mainWindowController] setInitialSetup:dict];
-                    [document showWindows];
-                } else {
-                    [NSApp presentError:error];
-                }
-            }
+        while (dict = [fileEnum nextObject]) {
+            error = nil;
+            if (nil == [[NSDocumentController sharedDocumentController] 
openDocumentWithSetup:dict error:&error] && error)
+                [NSApp presentError:error];
         }
     }
     

Modified: trunk/SKBookmarkController.m
===================================================================
--- trunk/SKBookmarkController.m        2008-08-20 16:43:03 UTC (rev 4435)
+++ trunk/SKBookmarkController.m        2008-08-20 22:13:33 UTC (rev 4436)
@@ -51,6 +51,7 @@
 #import "NSImage_SKExtensions.h"
 #import "SKStringConstants.h"
 #import "SKRuntime.h"
+#import "SKDocumentController.h"
 
 static NSString *SKBookmarkRowsPboardType = @"SKBookmarkRowsPboardType";
 
@@ -367,26 +368,18 @@
 
 - (void)openBookmark:(SKBookmark *)bookmark {
     id document = nil;
-    NSString *path = [bookmark path];
-    NSURL *fileURL = path ? [NSURL fileURLWithPath:path] : nil;
-    NSError *error;
-    
-    if (fileURL && NO == SKFileIsInTrash(fileURL)) {
-        NSDictionary *dict = [bookmark properties];
-        BOOL display = [dict objectForKey:@"windowFrame"] == nil;
-        if (document = [[NSDocumentController sharedDocumentController] 
openDocumentWithContentsOfURL:fileURL display:display error:&error]) {
-            if (display) {
-                [[document mainWindowController] setPageNumber:[bookmark 
pageIndex] + 1];
-            } else {
-                [document makeWindowControllers];
-                if ([document 
respondsToSelector:@selector(mainWindowController)])
-                    [[document mainWindowController] setInitialSetup:dict];
-                [document showWindows];
-            }
-        } else {
-            [NSApp presentError:error];
-        }
+    NSError *error = nil;
+    NSDictionary *dict = [bookmark properties];
+    if ([dict objectForKey:@"windowFrame"]) {
+        document = [[NSDocumentController sharedDocumentController] 
openDocumentWithSetup:dict error:&error];
+    } else {
+        NSString *path = [bookmark path];
+        NSURL *fileURL = path ? [NSURL fileURLWithPath:path] : nil;
+        if (fileURL && NO == SKFileIsInTrash(fileURL))
+            document = [[NSDocumentController sharedDocumentController] 
openDocumentWithContentsOfURL:fileURL display:YES error:&error];
     }
+    if (document == nil && error)
+        [NSApp presentError:error];
 }
 
 - (void)openBookmarks:(NSArray *)items {

Modified: trunk/SKDocumentController.h
===================================================================
--- trunk/SKDocumentController.h        2008-08-20 16:43:03 UTC (rev 4435)
+++ trunk/SKDocumentController.h        2008-08-20 22:13:33 UTC (rev 4436)
@@ -66,6 +66,9 @@
 extern NSString *SKPostScriptDocumentType;
 extern NSString *SKDVIDocumentType;
 
+extern NSString *SKDocumentSetupAliasKey;
+extern NSString *SKDocumentSetupFileNameKey;
+
 @interface SKDocumentController : NSDocumentController {
     NSArray *customExportTemplateFiles;
 }
@@ -74,6 +77,7 @@
 - (id)openDocumentWithContentsOfPasteboard:(NSPasteboard *)pboard 
error:(NSError **)outError;
 - (id)openDocumentWithImageFromPasteboard:(NSPasteboard *)pboard 
error:(NSError **)outError;
 - (id)openDocumentWithURLFromPasteboard:(NSPasteboard *)pboard error:(NSError 
**)outError;
+- (id)openDocumentWithSetup:(NSDictionary *)setup error:(NSError **)outError;
 
 - (void)resetCustomExportTemplateFiles;
 - (NSArray *)customExportTemplateFiles;

Modified: trunk/SKDocumentController.m
===================================================================
--- trunk/SKDocumentController.m        2008-08-20 16:43:03 UTC (rev 4435)
+++ trunk/SKDocumentController.m        2008-08-20 22:13:33 UTC (rev 4436)
@@ -45,6 +45,9 @@
 #import "SKStringConstants.h"
 #import "SKRuntime.h"
 #import "SKApplicationController.h"
+#import "Files_SKExtensions.h"
+#import "BDAlias.h"
+#import "SKMainWindowController.h"
 
 static NSString *SKAutosaveIntervalKey = @"SKAutosaveInterval";
 
@@ -154,6 +157,10 @@
         return SKPDFDocumentType;
 }
 
+
+NSString *SKDocumentSetupAliasKey = @"_BDAlias";
+NSString *SKDocumentSetupFileNameKey = @"fileName";
+
 @implementation SKDocumentController
 
 + (void)initialize {
@@ -349,6 +356,25 @@
         [NSApp presentError:error];
 }
 
+- (id)openDocumentWithSetup:(NSDictionary *)setup error:(NSError **)outError {
+    id document = nil;
+    NSError *error = nil;
+    NSURL *fileURL = [[BDAlias aliasWithData:[setup 
objectForKey:SKDocumentSetupAliasKey]] fileURL];
+    if(fileURL == nil && [setup objectForKey:SKDocumentSetupFileNameKey])
+        fileURL = [NSURL fileURLWithPath:[setup 
objectForKey:SKDocumentSetupFileNameKey]];
+    if(fileURL && NO == SKFileIsInTrash(fileURL)) {
+        if (document = [[NSDocumentController sharedDocumentController] 
openDocumentWithContentsOfURL:fileURL display:NO error:&error]) {
+            [document makeWindowControllers];
+            if ([document respondsToSelector:@selector(mainWindowController)])
+                [[document mainWindowController] setInitialSetup:setup];
+            [document showWindows];
+        } else if (outError) {
+            *outError = error;
+        }
+    }
+    return document;
+}
+
 - (id)openDocumentWithContentsOfURL:(NSURL *)absoluteURL 
display:(BOOL)displayDocument error:(NSError **)outError {
     NSString *type = [self typeForContentsOfURL:absoluteURL error:NULL];
     if (SKIsNotesDocumentType(type)) {


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 the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to