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

Reply via email to