mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-08-25 04:57:03 +00:00
96 lines
2.1 KiB
Objective-C
96 lines
2.1 KiB
Objective-C
//
|
|
// WebPasteboardProxy.m
|
|
// NativeHost
|
|
//
|
|
// Created by Ross Boucher on 12/12/09.
|
|
// Copyright 2009 280 North. All rights reserved.
|
|
//
|
|
|
|
#import "WebPasteboardProxy.h"
|
|
#import "WebScripObject+Objective-J.h"
|
|
#import "BridgedMethods.h"
|
|
|
|
NSMutableDictionary *WebPasteboardDictionary = nil;
|
|
|
|
@implementation WebPasteboardProxy
|
|
|
|
+ (void)initialize
|
|
{
|
|
WebPasteboardDictionary = [[NSMutableDictionary dictionary] retain];
|
|
}
|
|
|
|
+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector
|
|
{
|
|
return NO;
|
|
}
|
|
|
|
+ (id)pasteboardWithName:(NSString *)aName
|
|
{
|
|
if ([aName isEqual:@"CPGeneralPboard"])
|
|
return [self pasteboardWithName:NSGeneralPboard];
|
|
|
|
id proxy = [WebPasteboardDictionary objectForKey:aName];
|
|
if (!proxy)
|
|
{
|
|
proxy = [[self alloc] initWithPasteboard:[NSPasteboard pasteboardWithName:aName]];
|
|
[WebPasteboardDictionary setObject:proxy forKey:aName];
|
|
[proxy release];
|
|
}
|
|
|
|
return proxy;
|
|
}
|
|
|
|
- (id)initWithPasteboard:(NSPasteboard *)aPasteboard
|
|
{
|
|
if (self = [super init])
|
|
{
|
|
pasteboard = [aPasteboard retain];
|
|
}
|
|
|
|
return self;
|
|
}
|
|
|
|
- (void)dealloc
|
|
{
|
|
[pasteboard release];
|
|
[super dealloc];
|
|
}
|
|
|
|
- (int)changeCount
|
|
{
|
|
return [pasteboard changeCount];
|
|
}
|
|
|
|
- (void)declareTypes:(WebScriptObject *)args
|
|
{
|
|
[pasteboard declareTypes:[BridgedMethods arrayFromWebScriptObject:args] owner:self];
|
|
}
|
|
|
|
- (void)addTypes:(WebScriptObject *)args
|
|
{
|
|
[pasteboard addTypes:[BridgedMethods arrayFromWebScriptObject:args ] owner:self];
|
|
}
|
|
|
|
- (NSArray *)types
|
|
{
|
|
return [pasteboard types];
|
|
}
|
|
|
|
- (NSString *)stringForType:(NSString *)aType
|
|
{
|
|
return [pasteboard stringForType:aType];
|
|
}
|
|
|
|
- (void)pasteboard:(NSPasteboard *)aPasteboard provideDataForType:(NSString *)aType
|
|
{
|
|
NSString *name = aPasteboard == [NSPasteboard generalPasteboard] ? @"CPGeneralPboard" : [aPasteboard name];
|
|
|
|
NSString *data = [[[NSApp delegate] windowScriptObject] evaluateObjectiveJReturningString:
|
|
[NSString stringWithFormat:@"[[CPPasteboard pasteboardWithName:'%@'] stringForType:'%@']", name, aType]
|
|
];
|
|
|
|
[aPasteboard setString:data forType:aType];
|
|
}
|
|
|
|
@end
|