62 unsigned _changeCount;
80 if (typeof window.cpPasteboardWithName !==
"undefined")
99 var pasteboard = [CPPasteboards objectForKey:aName];
105 [CPPasteboards setObject:pasteboard forKey:aName];
127 _nativePasteboard = window.cpPasteboardWithName(aName);
128 [
self _synchronizePasteboard];
141 - (unsigned)addTypes:(CPArray)types owner:(
id)anOwner
144 count =
types.length;
146 for (; i < count; ++i)
150 if (![_owners objectForKey:type])
152 [_types addObject:type];
153 [_provided removeObjectForKey:type];
156 [_owners setObject:anOwner forKey:type];
159 if (_nativePasteboard)
161 var nativeTypes = [
types copy];
165 _nativePasteboard.addTypes_(nativeTypes);
168 return ++_changeCount;
177 - (unsigned)declareTypes:(CPArray)types owner:(
id)anOwner
179 [
self _declareTypes:types owner:anOwner updateNativePasteboard:YES];
183 - (unsigned)_declareTypes:(CPArray)
types owner:(id)anOwner updateNativePasteboard:(BOOL)shouldUpdate
185 [_types setArray:types];
192 var count = _types.length;
194 [_owners setObject:anOwner forKey:_types[count]];
197 if (_nativePasteboard && shouldUpdate)
199 var nativeTypes = [
types copy];
203 _nativePasteboard.declareTypes_(nativeTypes);
204 _changeCount = _nativePasteboard.changeCount();
207 return ++_changeCount;
218 [_provided setObject:aData forKey:aType];
232 - (BOOL)setPropertyList:(
id)aPropertyList forType:(
CPString)aType
246 if (aString && aString.isa && ![aString isKindOfClass:
CPString])
247 [
CPException raise:CPInvalidArgumentException
reason:"CPPasteboard setString:forType: must be called with a string."];
259 - (
CPString)availableTypeFromArray:(CPArray)anArray
261 return [anArray firstObjectCommonWithArray:[
self types]];
269 [
self _synchronizePasteboard];
289 var data = [_provided objectForKey:aType];
294 var owner = [_owners objectForKey:aType];
298 [owner pasteboard:self provideDataForType:aType];
299 return [_provided objectForKey:aType];
308 - (void)_synchronizePasteboard
310 if (_nativePasteboard && _nativePasteboard.changeCount() > _changeCount)
312 var nativeTypes = [_nativePasteboard.types() copy];
316 [
self _declareTypes:nativeTypes owner:self updateNativePasteboard:NO];
318 _changeCount = _nativePasteboard.changeCount();
371 _stateUID += FLOOR(RAND() * 16.0).toString(16).toUpperCase();
386 var DOMDataTransferPasteboard = nil;
388 @implementation _CPDOMDataTransferPasteboard :
CPPasteboard 390 DataTransfer _dataTransfer;
393 + (_CPDOMDataTransferPasteboard)DOMDataTransferPasteboard
395 if (!DOMDataTransferPasteboard)
396 DOMDataTransferPasteboard = [[_CPDOMDataTransferPasteboard alloc] init];
398 return DOMDataTransferPasteboard;
401 - (void)_setDataTransfer:(DataTransfer)aDataTransfer
403 _dataTransfer = aDataTransfer;
408 _dataTransfer.clearData();
411 count = types.length;
415 var type = types[count];
418 _dataTransfer.setData(type, [aPasteboard stringForType:type]);
420 _dataTransfer.setData(type, [[aPasteboard dataForType:type] rawString]);
426 return Array.prototype.slice.apply(_dataTransfer.types);
431 var dataString = _dataTransfer.getData(aType);
434 return [
CPData dataFromPropertyList:dataString format:kCFPropertyList280NorthFormat_v1_0];
439 - (id)propertyListForType:(
CPString)aType
442 return _dataTransfer.getData(aType);
Used to implement exception handling (creating & raising).
CPData dataFromPropertyList:format:(id aPlist, [format] CPPropertyListFormat aFormat)
void setString:forType:(CPString aString, [forType] CPString aType)
BOOL setData:forType:(CPData aData, [forType] CPString aType)
A Cappuccino wrapper for any data type.
void raise:reason:(CPString aName, [reason] CPString aReason)
BOOL setPropertyList:forType:(id aPropertyList, [forType] CPString aType)
A mutable key-value pair collection.
id propertyListFromData:format:(CPData data, [format] CPPropertyListFormat aFormat)
An immutable string (collection of characters).
CPData dataWithRawString:(CPString aString)
id propertyListForType:(CPString aType)
void setVersion:(int aVersion)
DataTransfer CPGeneralPboard
CPData dataForType:(CPString aType)
var supportsNativePasteboard
id pasteboardWithName:(CPString aName)