42 _CPSmartPboardType =
@"_CPSmartPboardType";
63 unsigned _changeCount;
83 + (id)generalPasteboard
95 var pasteboard = [CPPasteboards objectForKey:aName];
101 [CPPasteboards setObject:pasteboard forKey:aName];
131 - (unsigned)addTypes:(CPArray)types owner:(
id)anOwner
134 count = types.length;
136 for (; i < count; ++i)
140 if (![_owners objectForKey:type])
142 [_types addObject:type];
143 [_provided removeObjectForKey:type];
146 [_owners setObject:anOwner forKey:type];
149 return ++_changeCount;
158 - (unsigned)declareTypes:(CPArray)types owner:(
id)anOwner
160 [_types setArray:types];
167 var count = _types.length;
169 [_owners setObject:anOwner forKey:_types[count]];
172 return ++_changeCount;
183 [_provided setObject:aData forKey:aType];
197 - (BOOL)setPropertyList:(
id)aPropertyList forType:(
CPString)aType
211 if (aString && aString.isa && ![aString isKindOfClass:
CPString])
212 [
CPException raise:CPInvalidArgumentException
reason:"CPPasteboard setString:forType: must be called with a string."];
224 - (
CPString)availableTypeFromArray:(CPArray)anArray
226 return [anArray firstObjectCommonWithArray:[
self types]];
241 - (unsigned)changeCount
253 var data = [_provided objectForKey:aType];
258 var owner = [_owners objectForKey:aType];
262 [owner pasteboard:self provideDataForType:aType];
263 return [_provided objectForKey:aType];
305 _stateUID += FLOOR(RAND() * 16.0).
toString(16).toUpperCase();
320 var DOMDataTransferPasteboard = nil;
322 @implementation _CPDOMDataTransferPasteboard :
CPPasteboard
324 DataTransfer _dataTransfer;
327 + (_CPDOMDataTransferPasteboard)DOMDataTransferPasteboard
329 if (!DOMDataTransferPasteboard)
330 DOMDataTransferPasteboard = [[_CPDOMDataTransferPasteboard alloc] init];
332 return DOMDataTransferPasteboard;
335 - (void)_setDataTransfer:(DataTransfer)aDataTransfer
337 _dataTransfer = aDataTransfer;
342 _dataTransfer.clearData();
344 var types = [aPasteboard
types],
345 count = types.length;
349 var type = types[count];
352 _dataTransfer.setData(type, [aPasteboard stringForType:type]);
354 _dataTransfer.setData(type, [[aPasteboard dataForType:type] rawString]);
360 return Array.prototype.slice.apply(_dataTransfer.types);
365 var dataString = _dataTransfer.getData(aType);
368 return [
CPData dataFromPropertyList:dataString format:kCFPropertyList280NorthFormat_v1_0];
373 - (id)propertyListForType:(
CPString)aType
376 return _dataTransfer.getData(aType);