62 unsigned _changeCount;
94 var pasteboard = [CPPasteboards objectForKey:aName];
100 [CPPasteboards setObject:pasteboard forKey:aName];
130 - (unsigned)addTypes:(CPArray)types owner:(
id)anOwner
133 count =
types.length;
135 for (; i < count; ++i)
139 if (![_owners objectForKey:type])
141 [_types addObject:type];
142 [_provided removeObjectForKey:type];
145 [_owners setObject:anOwner forKey:type];
148 return ++_changeCount;
157 - (unsigned)declareTypes:(CPArray)types owner:(
id)anOwner
159 [_types setArray:types];
166 var count = _types.length;
168 [_owners setObject:anOwner forKey:_types[count]];
171 return ++_changeCount;
182 [_provided setObject:aData forKey:aType];
196 - (BOOL)setPropertyList:(
id)aPropertyList forType:(
CPString)aType
210 if (aString && aString.isa && ![aString isKindOfClass:
CPString])
211 [
CPException raise:CPInvalidArgumentException
reason:"CPPasteboard setString:forType: must be called with a string."];
223 - (
CPString)availableTypeFromArray:(CPArray)anArray
225 return [anArray firstObjectCommonWithArray:[
self types]];
252 var data = [_provided objectForKey:aType];
257 var owner = [_owners objectForKey:aType];
261 [owner pasteboard:self provideDataForType:aType];
262 return [_provided objectForKey:aType];
304 _stateUID += FLOOR(RAND() * 16.0).toString(16).toUpperCase();
319 var DOMDataTransferPasteboard = nil;
321 @implementation _CPDOMDataTransferPasteboard :
CPPasteboard 323 DataTransfer _dataTransfer;
326 + (_CPDOMDataTransferPasteboard)DOMDataTransferPasteboard
328 if (!DOMDataTransferPasteboard)
329 DOMDataTransferPasteboard = [[_CPDOMDataTransferPasteboard alloc] init];
331 return DOMDataTransferPasteboard;
334 - (void)_setDataTransfer:(DataTransfer)aDataTransfer
336 _dataTransfer = aDataTransfer;
341 _dataTransfer.clearData();
343 var
types = [aPasteboard types],
344 count = types.length;
348 var type = types[count];
351 _dataTransfer.setData(type, [aPasteboard stringForType:type]);
353 _dataTransfer.setData(type, [[aPasteboard dataForType:type] rawString]);
359 return Array.prototype.slice.apply(_dataTransfer.types);
364 var dataString = _dataTransfer.getData(aType);
367 return [
CPData dataFromPropertyList:dataString format:kCFPropertyList280NorthFormat_v1_0];
372 - (id)propertyListForType:(
CPString)aType
375 return _dataTransfer.getData(aType);
Used to implement exception handling (creating & raising).
CPData dataFromPropertyList:format:(id aPlist, [format] CPPropertyListFormat aFormat)
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)
id pasteboardWithName:(CPString aName)