Revision: 13538
http://sourceforge.net/p/skim-app/code/13538
Author: hofman
Date: 2023-07-26 16:13:53 +0000 (Wed, 26 Jul 2023)
Log Message:
-----------
remove dvi/xdv/ps/eps doument type from readableTypes when not supported by
conversion controller
Modified Paths:
--------------
trunk/SKConversionProgressController.h
trunk/SKConversionProgressController.m
trunk/SKMainDocument.m
Modified: trunk/SKConversionProgressController.h
===================================================================
--- trunk/SKConversionProgressController.h 2023-07-26 09:16:05 UTC (rev
13537)
+++ trunk/SKConversionProgressController.h 2023-07-26 16:13:53 UTC (rev
13538)
@@ -59,6 +59,8 @@
+ (NSData *)newPDFDataFromURL:(NSURL *)aURL ofType:(NSString *)aFileType
error:(NSError **)outError;
+ (NSData *)newPDFDataWithPostScriptData:(NSData *)psData error:(NSError
**)outError;
++ (NSString *)toolPathForType:(NSString *)aFileType;
+
- (IBAction)cancel:(id)sender;
- (IBAction)close:(id)sender;
Modified: trunk/SKConversionProgressController.m
===================================================================
--- trunk/SKConversionProgressController.m 2023-07-26 09:16:05 UTC (rev
13537)
+++ trunk/SKConversionProgressController.m 2023-07-26 16:13:53 UTC (rev
13538)
@@ -201,7 +201,7 @@
}
-static NSString *createToolPathForCommand(NSString *defaultKey, NSArray
*supportedTools) {
+static NSString *toolPathForCommand(NSString *defaultKey, NSArray
*supportedTools) {
NSString *commandPath = [[NSUserDefaults standardUserDefaults]
stringForKey:defaultKey];
NSString *commandName = [commandPath lastPathComponent];
NSArray *paths = @[@"/Library/TeX/texbin", @"/usr/texbin", @"/sw/bin",
@"/opt/local/bin", @"/usr/local/bin"];
@@ -222,9 +222,29 @@
}
} while (commandPath == nil && (commandName = [toolEnum nextObject]));
- return [commandPath retain];
+ return commandPath;
}
++ (NSString *)toolPathForType:(NSString *)fileType {
+ static NSMutableDictionary *toolPaths = nil;
+ NSString *toolPath = [toolPaths objectForKey:fileType];
+ if (toolPath == nil) {
+ NSWorkspace *ws = [NSWorkspace sharedWorkspace];
+ if ([ws type:fileType conformsToType:SKDVIDocumentType])
+ toolPath = toolPathForCommand(SKDviConversionCommandKey,
RUNNING_AFTER(13_0) ? @[@"dvipdfmx", @"dvipdfm", @"dvipdf"] : @[@"dvipdfmx",
@"dvipdfm", @"dvipdf", @"dvips"]);
+ else if ([ws type:fileType conformsToType:SKXDVDocumentType])
+ toolPath = toolPathForCommand(SKXdvConversionCommandKey,
@[@"xdvipdfmx", @"dvipdfmx", @"xdv2pdf"]);
+ else if ([ws type:fileType conformsToType:SKPostScriptDocumentType])
+ toolPath = toolPathForCommand(SKPSConversionCommandKey,
@[@"ps2pdf", @"ps2pdf12", @"ps2pdf13", @"ps2pdf14", @"pstopdf"]);
+ if (toolPath) {
+ if (toolPaths == nil)
+ toolPaths = [[NSMutableDictionary alloc] init];
+ [toolPaths setObject:toolPath forKey:fileType];
+ }
+ }
+ return toolPath;
+}
+
- (void)taskFinished:(NSNotification *)notification {
BOOL success = [[notification object] terminationStatus] == 0 &&
[outputFileURL checkResourceIsReachableAndReturnError:NULL]
&&
@@ -255,23 +275,7 @@
if (RUNNING_AFTER(13_0) || [ws type:fileType
conformsToType:SKPostScriptDocumentType] == NO) {
- NSString *toolPath = nil;
- if ([ws type:fileType conformsToType:SKDVIDocumentType]) {
- static NSString *dviToolPath = nil;
- if (dviToolPath == nil)
- dviToolPath =
createToolPathForCommand(SKDviConversionCommandKey, RUNNING_AFTER(13_0) ?
@[@"dvipdfmx", @"dvipdfm", @"dvipdf"] : @[@"dvipdfmx", @"dvipdfm", @"dvipdf",
@"dvips"]);
- toolPath = dviToolPath;
- } else if ([ws type:fileType conformsToType:SKXDVDocumentType]) {
- static NSString *xdvToolPath = nil;
- if (xdvToolPath == nil)
- xdvToolPath =
createToolPathForCommand(SKXdvConversionCommandKey, @[@"xdvipdfmx",
@"dvipdfmx", @"xdv2pdf"]);
- toolPath = xdvToolPath;
- } else if ([ws type:fileType conformsToType:SKPostScriptDocumentType])
{
- static NSString *psToolPath = nil;
- if (psToolPath == nil)
- psToolPath =
createToolPathForCommand(SKPSConversionCommandKey, @[@"ps2pdf", @"ps2pdf12",
@"ps2pdf13", @"ps2pdf14", @"pstopdf"]);
- toolPath = psToolPath;
- }
+ NSString *toolPath = [[self class] toolPathForType:fileType];
if (toolPath) {
NSString *commandName = [toolPath lastPathComponent];
NSURL *tmpDirURL = [[NSFileManager defaultManager]
URLForDirectory:NSItemReplacementDirectory inDomain:NSUserDomainMask
appropriateForURL:aURL create:YES error:NULL];
Modified: trunk/SKMainDocument.m
===================================================================
--- trunk/SKMainDocument.m 2023-07-26 09:16:05 UTC (rev 13537)
+++ trunk/SKMainDocument.m 2023-07-26 16:13:53 UTC (rev 13538)
@@ -783,6 +783,23 @@
#pragma mark Reading
++ (NSArray *)readableTypes {
+ static NSArray *readableTypes = nil;
+ if (readableTypes == nil) {
+ NSMutableArray *tmpTypes = [[super readableTypes] mutableCopy];
+ if ([SKConversionProgressController toolPathForType:SKDVIDocumentType]
== nil)
+ [tmpTypes removeObject:SKDVIDocumentType];
+ if ([SKConversionProgressController toolPathForType:SKXDVDocumentType]
== nil)
+ [tmpTypes removeObject:SKXDVDocumentType];
+ if (RUNNING_AFTER(13_0) && [SKConversionProgressController
toolPathForType:SKPostScriptDocumentType] == nil) {
+ [tmpTypes removeObject:SKPostScriptDocumentType];
+ [tmpTypes removeObject:SKEncapsulatedPostScriptDocumentType];
+ }
+ readableTypes = tmpTypes;
+ }
+ return readableTypes;
+}
+
- (void)setPDFData:(NSData *)data {
if (pdfData != data) {
[pdfData release];
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit