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