Revision: 13720
http://sourceforge.net/p/skim-app/code/13720
Author: hofman
Date: 2023-11-02 15:14:20 +0000 (Thu, 02 Nov 2023)
Log Message:
-----------
we can always use NSFilePromise now
Modified Paths:
--------------
trunk/PDFPage_SKExtensions.h
trunk/PDFPage_SKExtensions.m
trunk/SKMainWindowController_UI.m
trunk/SKNoteWindowController.h
trunk/SKNoteWindowController.m
trunk/SKSnapshotWindowController.h
trunk/SKSnapshotWindowController.m
Modified: trunk/PDFPage_SKExtensions.h
===================================================================
--- trunk/PDFPage_SKExtensions.h 2023-11-02 10:11:04 UTC (rev 13719)
+++ trunk/PDFPage_SKExtensions.h 2023-11-02 15:14:20 UTC (rev 13720)
@@ -50,7 +50,7 @@
@class SKMainDocument, SKReadingBar, SKLine;
-@interface PDFPage (SKExtensions) <NSPasteboardItemDataProvider,
NSFilePromiseProviderDelegate>
+@interface PDFPage (SKExtensions) <NSFilePromiseProviderDelegate>
+ (BOOL)usesSequentialPageNumbering;
+ (void)setUsesSequentialPageNumbering:(BOOL)flag;
Modified: trunk/PDFPage_SKExtensions.m
===================================================================
--- trunk/PDFPage_SKExtensions.m 2023-11-02 10:11:04 UTC (rev 13719)
+++ trunk/PDFPage_SKExtensions.m 2023-11-02 15:14:20 UTC (rev 13720)
@@ -330,49 +330,6 @@
return data;
}
-// the page is set as owner in -filePromise
-- (void)pasteboard:(NSPasteboard *)pboard item:(NSPasteboardItem *)item
provideDataForType:(NSString *)type {
- if ([type isEqualToString:(NSString *)kPasteboardTypeFileURLPromise]) {
- NSString *label = [self displayLabel];
- NSString *pathExt = nil;
- NSData *data = nil;
-
- if ([[self document] allowsPrinting]) {
- pathExt = @"pdf";
- NSIndexSet *pageIndexes = nil;
- NSData *indexData = [item dataForType:SKPasteboardTypePageIndexes];
- if (indexData) {
- pageIndexes = [NSKeyedUnarchiver
unarchiveObjectWithData:indexData];
- NSMutableArray *labels = [NSMutableArray array];
- [pageIndexes enumerateIndexesUsingBlock:^(NSUInteger i, BOOL
*stop){
- [labels addObject:[[[self document] pageAtIndex:i]
displayLabel]];
- }];
- if ([labels count])
- label = [labels componentsJoinedByString:@", "];
- }
- data = [self dataRepresentationForPageIndexes:pageIndexes];
- } else {
- pathExt = @"tiff";
- data = [self TIFFDataForRect:[self
boundsForBox:kPDFDisplayBoxCropBox]];
- }
-
- NSURL *dropDestination = [pboard pasteLocationURL];
- NSString *filename = [([[[self containingDocument] displayName]
stringByDeletingPathExtension] ?: @"PDF")
stringByAppendingDashAndString:[NSString
stringWithFormat:NSLocalizedString(@"Page %@", @""), label]];
- NSURL *fileURL = [dropDestination URLByAppendingPathComponent:filename
isDirectory:NO];
- fileURL = [[fileURL URLByAppendingPathExtension:pathExt]
uniqueFileURL];
- if ([data writeToURL:fileURL atomically:YES])
- [item setString:[fileURL absoluteString] forType:type];
- } else if ([type isEqualToString:NSPasteboardTypePDF]) {
- NSIndexSet *pageIndexes = nil;
- NSData *indexData = [item dataForType:SKPasteboardTypePageIndexes];
- if (indexData)
- pageIndexes = [NSKeyedUnarchiver
unarchiveObjectWithData:indexData];
- [item setData:[self dataRepresentationForPageIndexes:pageIndexes]
forType:type];
- } else if ([type isEqualToString:NSPasteboardTypeTIFF]) {
- [item setData:[self TIFFDataForRect:[self
boundsForBox:kPDFDisplayBoxCropBox]] forType:type];
- }
-}
-
#pragma mark NSFilePromiseProviderDelegate protocol
// the page is set as delegate in -filePromise
@@ -406,21 +363,10 @@
- (id<NSPasteboardWriting>)filePromiseForPageIndexes:(NSIndexSet *)pageIndexes
{
if ([[self document] isLocked] == NO) {
NSString *fileUTI = [[self document] allowsPrinting] ? (NSString
*)kUTTypePDF : (NSString *)kUTTypeTIFF;
- Class promiseClass = NSClassFromString(@"NSFilePromiseProvider");
- if (promiseClass) {
- NSFilePromiseProvider *item = [[[promiseClass alloc]
initWithFileType:fileUTI delegate:self] autorelease];
- if (pageIndexes)
- [item setUserInfo:pageIndexes];
- return item;
- } else {
- NSString *pdfType = [[self document] allowsPrinting] ?
NSPasteboardTypePDF : nil;
- NSPasteboardItem *item = [[[NSPasteboardItem alloc] init]
autorelease];
- [item setString:fileUTI forType:(NSString
*)kPasteboardTypeFilePromiseContent];
- [item setDataProvider:self forTypes:@[(NSString
*)kPasteboardTypeFileURLPromise, NSPasteboardTypeTIFF, pdfType]];
- if (pageIndexes)
- [item setData:[NSKeyedArchiver
archivedDataWithRootObject:pageIndexes] forType:SKPasteboardTypePageIndexes];
- return item;
- }
+ NSFilePromiseProvider *item = [[[NSFilePromiseProvider alloc]
initWithFileType:fileUTI delegate:self] autorelease];
+ if (pageIndexes)
+ [item setUserInfo:pageIndexes];
+ return item;
}
return nil;
}
Modified: trunk/SKMainWindowController_UI.m
===================================================================
--- trunk/SKMainWindowController_UI.m 2023-11-02 10:11:04 UTC (rev 13719)
+++ trunk/SKMainWindowController_UI.m 2023-11-02 15:14:20 UTC (rev 13720)
@@ -406,15 +406,7 @@
}
} else if ([tv isEqual:rightSideController.snapshotTableView]) {
SKSnapshotWindowController *snapshot =
[[rightSideController.snapshotArrayController arrangedObjects]
objectAtIndex:row];
- Class promiseClass = NSClassFromString(@"NSFilePromiseProvider");
- if (promiseClass) {
- return [[[promiseClass alloc]
initWithFileType:NSPasteboardTypeTIFF delegate:snapshot] autorelease];
- } else {
- NSPasteboardItem *item = [[[NSPasteboardItem alloc] init]
autorelease];
- [item setString:(NSString *)kUTTypeTIFF forType:(NSString
*)kPasteboardTypeFilePromiseContent];
- [item setDataProvider:snapshot forTypes:@[(NSString
*)kPasteboardTypeFileURLPromise, NSPasteboardTypeTIFF]];
- return item;
- }
+ return [[[NSFilePromiseProvider alloc]
initWithFileType:NSPasteboardTypeTIFF delegate:snapshot] autorelease];
}
return nil;
}
Modified: trunk/SKNoteWindowController.h
===================================================================
--- trunk/SKNoteWindowController.h 2023-11-02 10:11:04 UTC (rev 13719)
+++ trunk/SKNoteWindowController.h 2023-11-02 15:14:20 UTC (rev 13720)
@@ -43,7 +43,7 @@
@class PDFAnnotation, SKStatusBar, SKNoteTextView;
-@interface SKNoteWindowController : NSWindowController <NSWindowDelegate,
SKDragImageViewDelegate, NSTextViewDelegate, NSPasteboardItemDataProvider,
NSFilePromiseProviderDelegate, QLPreviewPanelDataSource,
QLPreviewPanelDelegate, QLPreviewItem> {
+@interface SKNoteWindowController : NSWindowController <NSWindowDelegate,
SKDragImageViewDelegate, NSTextViewDelegate, NSFilePromiseProviderDelegate,
QLPreviewPanelDataSource, QLPreviewPanelDelegate, QLPreviewItem> {
SKNoteTextView *textView;
NSView *topView;
NSBox *edgeView;
Modified: trunk/SKNoteWindowController.m
===================================================================
--- trunk/SKNoteWindowController.m 2023-11-02 10:11:04 UTC (rev 13719)
+++ trunk/SKNoteWindowController.m 2023-11-02 15:14:20 UTC (rev 13720)
@@ -393,17 +393,10 @@
- (id<NSPasteboardWriting>)draggedObjectForDragImageView:(SKDragImageView
*)view {
NSImage *image = [note image];
- if (image) {
- Class promiseClass = NSClassFromString(@"NSFilePromiseProvider");
- if (promiseClass) {
- return [[[promiseClass alloc] initWithFileType:(NSString
*)kUTTypeTIFF delegate:self] autorelease];
- } else {
- NSPasteboardItem *item = [[[NSPasteboardItem alloc] init]
autorelease];
- [item setString:(NSString *)kUTTypeTIFF forType:(NSString
*)kPasteboardTypeFilePromiseContent];
- [item setDataProvider:self forTypes:@[(NSString
*)kPasteboardTypeFileURLPromise, NSPasteboardTypeTIFF]];
- return item;
- }
- } else return nil;
+ if (image)
+ return [[[NSFilePromiseProvider alloc] initWithFileType:(NSString
*)kUTTypeTIFF delegate:self] autorelease];
+ else
+ return nil;
}
- (void)showImageForDragImageView:(SKDragImageView *)view {
@@ -412,20 +405,6 @@
[[NSWorkspace sharedWorkspace] openURL:fileURL];
}
-#pragma mark NSPasteboardItemDataProvider protocol
-
-- (void)pasteboard:(NSPasteboard *)pboard item:(NSPasteboardItem *)item
provideDataForType:(NSString *)type {
- if ([type isEqualToString:(NSString *)kPasteboardTypeFileURLPromise]) {
- NSURL *dropDestination = [pboard pasteLocationURL];
- NSURL *fileURL = [self writeImageToDestination:dropDestination];
- if (fileURL)
- [item setString:[fileURL absoluteString] forType:type];
- } else if ([type isEqualToString:NSPasteboardTypeTIFF]) {
- NSImage *image = [note image];
- [item setData:[image TIFFRepresentation] forType:type];
- }
-}
-
#pragma mark NSFilePromiseProviderDelegate protocol
- (NSString *)filePromiseProvider:(NSFilePromiseProvider *)filePromiseProvider
fileNameForType:(NSString *)fileType {
Modified: trunk/SKSnapshotWindowController.h
===================================================================
--- trunk/SKSnapshotWindowController.h 2023-11-02 10:11:04 UTC (rev 13719)
+++ trunk/SKSnapshotWindowController.h 2023-11-02 15:14:20 UTC (rev 13720)
@@ -51,7 +51,7 @@
SKSnapshotOpenPreview
};
-@interface SKSnapshotWindowController : NSWindowController <NSWindowDelegate,
NSPasteboardItemDataProvider, NSFilePromiseProviderDelegate,
SKSnapshotPDFViewDelegate> {
+@interface SKSnapshotWindowController : NSWindowController <NSWindowDelegate,
NSFilePromiseProviderDelegate, SKSnapshotPDFViewDelegate> {
SKSnapshotPDFView* pdfView;
NSImage *thumbnail;
id <SKSnapshotWindowControllerDelegate> delegate;
Modified: trunk/SKSnapshotWindowController.m
===================================================================
--- trunk/SKSnapshotWindowController.m 2023-11-02 10:11:04 UTC (rev 13719)
+++ trunk/SKSnapshotWindowController.m 2023-11-02 15:14:20 UTC (rev 13720)
@@ -687,23 +687,6 @@
}
}
-#pragma mark NSPasteboardItemDataProvider protocol
-
-// the controller is set as owner in -[SKMainWindowController
tableView:pasteboardWriterForRow:]
-- (void)pasteboard:(NSPasteboard *)pboard item:(NSPasteboardItem *)item
provideDataForType:(NSString *)type {
- if ([type isEqualToString:(NSString *)kPasteboardTypeFileURLPromise]) {
- NSURL *dropDestination = [pboard pasteLocationURL];
- PDFPage *page = [[[self pdfView] document] pageAtIndex:[self
pageIndex]];
- NSString *filename = [([[[self document] displayName]
stringByDeletingPathExtension] ?: @"PDF")
stringByAppendingDashAndString:[NSString
stringWithFormat:NSLocalizedString(@"Page %@", @""), [page displayLabel]]];
- NSURL *fileURL = [[dropDestination
URLByAppendingPathComponent:filename isDirectory:NO]
URLByAppendingPathExtension:@"tiff"];
- fileURL = [fileURL uniqueFileURL];
- if ([[[self thumbnailWithSize:0.0] TIFFRepresentation]
writeToURL:fileURL atomically:YES])
- [item setString:[fileURL absoluteString] forType:type];
- } else if ([type isEqualToString:NSPasteboardTypeTIFF]) {
- [item setData:[[self thumbnailWithSize:0.0] TIFFRepresentation]
forType:type];
- }
-}
-
#pragma mark NSFilePromiseProviderDelegate protocol
- (NSString *)filePromiseProvider:(NSFilePromiseProvider *)filePromiseProvider
fileNameForType:(NSString *)fileType {
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