Revision: 7812
          http://skim-app.svn.sourceforge.net/skim-app/?rev=7812&view=rev
Author:   hofman
Date:     2012-12-06 14:02:58 +0000 (Thu, 06 Dec 2012)
Log Message:
-----------
combine implementations to save or email archive or disk image

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

Modified: trunk/SKMainDocument.m
===================================================================
--- trunk/SKMainDocument.m      2012-12-06 13:32:15 UTC (rev 7811)
+++ trunk/SKMainDocument.m      2012-12-06 14:02:58 UTC (rev 7812)
@@ -1133,8 +1133,13 @@
 
 - (void)saveArchiveToURL:(NSURL *)fileURL email:(BOOL)email {
     NSTask *task = [[[NSTask alloc] init] autorelease];
-    [task setLaunchPath:@"/usr/bin/tar"];
-    [task setArguments:[NSArray arrayWithObjects:@"-czf", [fileURL path], 
[[self fileURL] lastPathComponent], nil]];
+    if ([[fileURL pathExtension] isEqualToString:@"dmg"]) {
+        [task setLaunchPath:@"/usr/bin/hdiutil"];
+        [task setArguments:[NSArray arrayWithObjects:@"create", @"-srcfolder", 
[[self fileURL] path], @"-format", @"UDZO", @"-volname", [[fileURL 
lastPathComponent] stringByDeletingPathExtension], [fileURL path], nil]];
+    } else {
+        [task setLaunchPath:@"/usr/bin/tar"];
+        [task setArguments:[NSArray arrayWithObjects:@"-czf", [fileURL path], 
[[self fileURL] lastPathComponent], nil]];
+    }
     [task setCurrentDirectoryPath:[[[self fileURL] 
URLByDeletingLastPathComponent] path]];
     [task setStandardOutput:[NSFileHandle fileHandleWithNullDevice]];
     [task setStandardError:[NSFileHandle fileHandleWithNullDevice]];
@@ -1151,82 +1156,43 @@
     }
 }
 
-- (IBAction)saveArchive:(id)sender {
+- (void)saveArchiveWithExtension:(NSString *)ext email:(BOOL)email {
     NSURL *fileURL = [self fileURL];
     if (fileURL && [fileURL checkResourceIsReachableAndReturnError:NULL] && 
[self isDocumentEdited] == NO) {
-        NSSavePanel *sp = [NSSavePanel savePanel];
-        [sp setAllowedFileTypes:[NSArray arrayWithObjects:@"tgz", nil]];
-        [sp setCanCreateDirectories:YES];
-        [sp setNameFieldStringValue:[fileURL 
lastPathComponentReplacingPathExtension:@"tgz"]];
-        [sp beginSheetModalForWindow:[self windowForSheet] 
completionHandler:^(NSInteger result){
-                if (NSFileHandlingPanelOKButton == result && [self fileURL])
-                    [self saveArchiveToURL:[sp URL] email:NO];
-            }];
+        if (email) {
+            NSURL *tmpDirURL = [[NSFileManager defaultManager] 
uniqueChewableItemsDirectoryURL];
+            NSURL *tmpFileURL = [tmpDirURL URLByAppendingPathComponent:[[self 
fileURL] lastPathComponentReplacingPathExtension:ext]];
+            [self saveArchiveToURL:tmpFileURL email:YES];
+        } else {
+            NSSavePanel *sp = [NSSavePanel savePanel];
+            [sp setAllowedFileTypes:[NSArray arrayWithObjects:ext, nil]];
+            [sp setCanCreateDirectories:YES];
+            [sp setNameFieldStringValue:[fileURL 
lastPathComponentReplacingPathExtension:ext]];
+            [sp beginSheetModalForWindow:[self windowForSheet] 
completionHandler:^(NSInteger result){
+                    if (NSFileHandlingPanelOKButton == result)
+                        [self saveArchiveToURL:[sp URL] email:NO];
+                }];
+        }
     } else {
         NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedString(@"You 
must save this file first", @"Alert text when trying to create archive for 
unsaved document") defaultButton:nil alternateButton:nil otherButton:nil 
informativeTextWithFormat:NSLocalizedString(@"The document has unsaved changes, 
or has not previously been saved to disk.", @"Informative text in alert 
dialog")];
         [alert beginSheetModalForWindow:[self windowForSheet] 
modalDelegate:nil didEndSelector:NULL contextInfo:NULL];
     }
 }
 
-- (IBAction)emailArchive:(id)sender {
-    NSURL *fileURL = [self fileURL];
-    if ([fileURL checkResourceIsReachableAndReturnError:NULL] && [self 
isDocumentEdited] == NO) {
-        NSURL *tmpDirURL = [[NSFileManager defaultManager] 
uniqueChewableItemsDirectoryURL];
-        NSURL *tmpFileURL = [tmpDirURL URLByAppendingPathComponent:[[self 
fileURL] lastPathComponentReplacingPathExtension:@"tgz"]];
-        [self saveArchiveToURL:tmpFileURL email:YES];
-    } else {
-        NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedString(@"You 
must save this file first", @"Alert text when trying to create archive for 
unsaved document") defaultButton:nil alternateButton:nil otherButton:nil 
informativeTextWithFormat:NSLocalizedString(@"The document has unsaved changes, 
or has not previously been saved to disk.", @"Informative text in alert 
dialog")];
-        [alert beginSheetModalForWindow:[self windowForSheet] 
modalDelegate:nil didEndSelector:NULL contextInfo:NULL];
-    }
+- (IBAction)saveArchive:(id)sender {
+    [self saveArchiveWithExtension:@"tgz" email:NO];
 }
 
-- (void)saveDiskImageToURL:(NSURL *)fileURL email:(BOOL)email {
-    NSTask *task = [[[NSTask alloc] init] autorelease];
-    [task setLaunchPath:@"/usr/bin/hdiutil"];
-    [task setArguments:[NSArray arrayWithObjects:@"create", @"-srcfolder", 
[[self fileURL] path], @"-format", @"UDZO", @"-volname", [[fileURL 
lastPathComponent] stringByDeletingPathExtension], [fileURL path], nil]];
-    [task setCurrentDirectoryPath:[[[self fileURL] 
URLByDeletingLastPathComponent] path]];
-    [task setStandardOutput:[NSFileHandle fileHandleWithNullDevice]];
-    [task setStandardError:[NSFileHandle fileHandleWithNullDevice]];
-    
-    SKAttachmentEmailer *emailer = nil;
-    if (email)
-        emailer = [SKAttachmentEmailer attachmentEmailerWithFileURL:fileURL 
subject:[self displayName] waitingForTask:task];
-    
-    @try {
-        [task launch];
-    }
-    @catch (id exception) {
-        [emailer taskFailed];
-    }
+- (IBAction)emailArchive:(id)sender {
+    [self saveArchiveWithExtension:@"tgz" email:YES];
 }
 
 - (IBAction)saveDiskImage:(id)sender {
-    NSURL *fileURL = [self fileURL];
-    if (fileURL && [fileURL checkResourceIsReachableAndReturnError:NULL] && 
[self isDocumentEdited] == NO) {
-        NSSavePanel *sp = [NSSavePanel savePanel];
-        [sp setAllowedFileTypes:[NSArray arrayWithObjects:@"dmg", nil]];
-        [sp setCanCreateDirectories:YES];
-        [sp setNameFieldStringValue:[fileURL 
lastPathComponentReplacingPathExtension:@"dmg"]];
-        [sp beginSheetModalForWindow:[self windowForSheet] 
completionHandler:^(NSInteger result){
-                if (NSFileHandlingPanelOKButton == result && [self fileURL])
-                    [self saveDiskImageToURL:[sp URL] email:NO];
-            }];
-    } else {
-        NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedString(@"You 
must save this file first", @"Alert text when trying to create archive for 
unsaved document") defaultButton:nil alternateButton:nil otherButton:nil 
informativeTextWithFormat:NSLocalizedString(@"The document has unsaved changes, 
or has not previously been saved to disk.", @"Informative text in alert 
dialog")];
-        [alert beginSheetModalForWindow:[self windowForSheet] 
modalDelegate:nil didEndSelector:NULL contextInfo:NULL];
-    }
+    [self saveArchiveWithExtension:@"dmg" email:NO];
 }
 
 - (IBAction)emailDiskImage:(id)sender {
-    NSURL *fileURL = [self fileURL];
-    if ([fileURL checkResourceIsReachableAndReturnError:NULL] && [self 
isDocumentEdited] == NO) {
-        NSURL *tmpDirURL = [[NSFileManager defaultManager] 
uniqueChewableItemsDirectoryURL];
-        NSURL *tmpFileURL = [tmpDirURL URLByAppendingPathComponent:[[self 
fileURL] lastPathComponentReplacingPathExtension:@"dmg"]];
-        [self saveDiskImageToURL:tmpFileURL email:YES];
-    } else {
-        NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedString(@"You 
must save this file first", @"Alert text when trying to create archive for 
unsaved document") defaultButton:nil alternateButton:nil otherButton:nil 
informativeTextWithFormat:NSLocalizedString(@"The document has unsaved changes, 
or has not previously been saved to disk.", @"Informative text in alert 
dialog")];
-        [alert beginSheetModalForWindow:[self windowForSheet] 
modalDelegate:nil didEndSelector:NULL contextInfo:NULL];
-    }
+    [self saveArchiveWithExtension:@"dmg" email:YES];
 }
 
 - (IBAction)moveToTrash:(id)sender {

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


------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to