Files
cappuccino/Tools/NativeHost/WebPasteboardProxy.m
T
2010-04-25 22:33:31 -07:00

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