pasteboard 1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,251 @@
1
+ require 'enumerator'
2
+
3
+ ##
4
+ # Pasteboard wraps the OS X pasteboard (clipboard) allowing you to paste
5
+ # multiple flavors of a pasteboard item. Currently it only supports the
6
+ # general clipboard.
7
+ #
8
+ # To add data to the clipboard:
9
+ #
10
+ # item = [
11
+ # Pasteboard::Type::UTF_8, 'π'],
12
+ # Pasteboard::Type::PLAIN_TEXT, 'pi'],
13
+ # ]
14
+ #
15
+ # pasteboard.put item
16
+ #
17
+ # See also #put, #put_url and #put_jpeg_url
18
+ #
19
+ # To retrieve data from the clipboard:
20
+ #
21
+ # data = pasteboard.first Pasteboard::Type::UTF_8
22
+ #
23
+ # If the item cannot be found nil will be returned.
24
+ #
25
+ # See also #first, #[] and #each.
26
+ #
27
+ # Pasteboard also provides direct access to the C API through #clear,
28
+ # #copy_item_flavors, #copy_item_flavor_data, #get_item_count,
29
+ # #get_item_identifier, #name, #put_item_flavor and #sync.
30
+
31
+ class Pasteboard
32
+
33
+ ##
34
+ # Pasteboard error class
35
+
36
+ class Error < RuntimeError
37
+ end
38
+
39
+ ##
40
+ # Missing is raised when attempting to access an item that does not exist
41
+
42
+ class Missing < Error
43
+ end
44
+
45
+ ##
46
+ # Version of pasteboard
47
+
48
+ VERSION = '1.0'
49
+
50
+ if defined? Encoding then
51
+ BE_BOM = "\xFE\xFF" # :nodoc:
52
+ LE_BOM = "\xFF\xFE" # :nodoc:
53
+
54
+ BE_BOM.force_encoding Encoding::BINARY
55
+ LE_BOM.force_encoding Encoding::BINARY
56
+
57
+ little = [1].pack('S') == "\001\000" ? true : false
58
+
59
+ NATIVE_BOM = little ? LE_BOM : BE_BOM
60
+ NATIVE_ENCODING = little ? Encoding::UTF_16LE : Encoding::UTF_16BE
61
+ end
62
+
63
+ ##
64
+ # General clipboard pasteboard type. Cut, copy and paste use this
65
+ # pasteboard.
66
+
67
+ CLIPBOARD = 'com.apple.pasteboard.clipboard'
68
+
69
+ ##
70
+ # Find pasteboard type. Find and find and replace use this pasteboard.
71
+
72
+ FIND = 'com.apple.pasteboard.find'
73
+
74
+ ##
75
+ # A uniquely named pasteboard type.
76
+
77
+ UNIQUE = nil
78
+
79
+ ##
80
+ # Synchronizes the pasteboard and returns the item at +index+ in the
81
+ # pasteboard.
82
+ #
83
+ # If +flavor+ is given only the given flavor's data is returned. If no
84
+ # flavor matches nil is returned.
85
+ #
86
+ # An item is an Array of pairs in the order of preference which looks like
87
+ # this:
88
+ #
89
+ # [
90
+ # ["public.utf8-plain-text", "Pasteboard"],
91
+ # ["public.utf16-external-plain-text",
92
+ # "\377\376P\000a\000s\000t\000e\000b\000o\000a\000r\000d\000"],
93
+ # ["com.apple.traditional-mac-plain-text", "Pasteboard"],
94
+ # ["public.utf16-plain-text",
95
+ # "P\000a\000s\000t\000e\000b\000o\000a\000r\000d\000"],
96
+ # ]
97
+
98
+ def [] index, flavor = nil
99
+ flags = sync
100
+
101
+ raise Error, 'pasteboard sync error' if (flags & MODIFIED) != 0
102
+
103
+ id = get_item_identifier index + 1
104
+
105
+ get id, flavor
106
+ rescue Missing
107
+ return nil
108
+ end
109
+
110
+ ##
111
+ # Synchronizes the pasteboard and yields each item in the pasteboard.
112
+ #
113
+ # If +flavor+ is given only the given flavor's data is yielded. If no
114
+ # flavor matches nil is yielded.
115
+ #
116
+ # See #[] for a description of an item.
117
+
118
+ def each flavor = nil # :yields: item
119
+ unless block_given? then
120
+ enum = defined?(Enumerator) ? Enumerator : Enumerable::Enumerator # 1.8.7
121
+ return enum.new(self, :each, flavor)
122
+ end
123
+
124
+ flags = sync
125
+
126
+ raise Error, 'pasteboard sync error' if (flags & MODIFIED) != 0
127
+
128
+ ids.each do |id|
129
+ yield get(id, flavor)
130
+ end
131
+
132
+ self
133
+ end
134
+
135
+ ##
136
+ # Retrieves the first item in the pasteboard.
137
+ #
138
+ # If +flavor+ is given only the given flavor's data is returned. If no
139
+ # flavor matches nil is returned.
140
+ #
141
+ # See #[] for a description of an item.
142
+
143
+ def first flavor = nil
144
+ self[0, flavor]
145
+ end
146
+
147
+ ##
148
+ # Returns the item with +id+ in the pasteboard.
149
+ #
150
+ # If +flavor+ is given only the given flavor's data is returned. If no
151
+ # flavor matches nil is returned.
152
+ #
153
+ # See #[] for a description of an item.
154
+
155
+ def get id, flavor = nil
156
+ item = copy_item_flavors(id).map do |item_flavor|
157
+ if flavor then
158
+ return copy_item_flavor_data(id, item_flavor) if item_flavor == flavor
159
+ next
160
+ end
161
+
162
+ [item_flavor, copy_item_flavor_data(id, item_flavor)]
163
+ end
164
+
165
+ return nil if item.compact.empty?
166
+
167
+ item
168
+ end
169
+
170
+ ##
171
+ # An array of item ids in the pasteboard. You must sync the clipboard to
172
+ # get the latest ids.
173
+
174
+ def ids
175
+ (1..get_item_count).map do |index|
176
+ get_item_identifier index
177
+ end
178
+ end
179
+
180
+ def inspect # :nodoc:
181
+ '#<%s:0x%x %s>' % [self.class, object_id, name]
182
+ end
183
+
184
+ ##
185
+ # Clears the pasteboard and adds +items+ to the pasteboard. Each item is
186
+ # added with a consecutive id starting at 0.
187
+ #
188
+ # An item must be an Enumerable with pairs of item flavors and items. For
189
+ # example:
190
+ #
191
+ # item = [
192
+ # [Pasteboard::Type::TIFF, tiff],
193
+ # [Pasteboard::Type::URL, url],
194
+ # [Pasteboard::Type::URL_NAME, url],
195
+ # [Pasteboard::Type::UTF_8, url],
196
+ # ]
197
+ #
198
+ # pasteboard.put item
199
+ #
200
+ # The pasteboard considers flavors added earlier in an item to have a higher
201
+ # preference.
202
+
203
+ def put *items
204
+ clear
205
+ flags = sync
206
+
207
+ raise Error, 'pasteboard sync error' if (flags & MODIFIED) != 0
208
+ raise Error, 'pasteboard not owned' if (flags & CLIENT_IS_OWNER) == 0
209
+
210
+ items.each_with_index do |item, id|
211
+ item.each do |flavor, data|
212
+ put_item_flavor id, flavor, data
213
+ end
214
+ end
215
+
216
+ self
217
+ end
218
+
219
+ ##
220
+ # Adds +url+ to the pasteboard with an optional +url_name+.
221
+
222
+ def put_url url, url_name = url
223
+ item = [
224
+ [Pasteboard::Type::URL, url],
225
+ [Pasteboard::Type::URL_NAME, url_name],
226
+ [Pasteboard::Type::UTF_8, url],
227
+ ]
228
+
229
+ put item
230
+ end
231
+
232
+ ##
233
+ # Adds JPEG data +image+ to the pasteboard with a +url+ and optional
234
+ # +url_name+.
235
+
236
+ def put_jpeg_url image, url, url_name = url
237
+ item = [
238
+ [Pasteboard::Type::JPEG, image],
239
+ [Pasteboard::Type::URL, url],
240
+ [Pasteboard::Type::URL_NAME, url_name],
241
+ [Pasteboard::Type::UTF_8, url],
242
+ ]
243
+
244
+ put item
245
+ end
246
+
247
+ end
248
+
249
+ require 'pasteboard/type'
250
+ require 'pasteboard/pasteboard'
251
+
@@ -0,0 +1,713 @@
1
+ # coding: utf-8
2
+
3
+ ##
4
+ # Documentation here comes from the OS X 10.6 Core Library's Uniform Type
5
+ # Identifiers Reference.
6
+
7
+ module Pasteboard::Type
8
+
9
+ encoding = defined?(Encoding)
10
+
11
+ if encoding then
12
+ ##
13
+ # Maps a type to its encoding. The default encoding is Encoding::BINARY.
14
+
15
+ Encodings = {}
16
+
17
+ Encodings.default = Encoding::BINARY
18
+ end
19
+
20
+ # :section: System-defined uniform type identifiers
21
+
22
+ # Base type for the physical hierarchy.
23
+
24
+ ITEM = 'public.item'
25
+
26
+ # Base type for all document content.
27
+
28
+ CONTENT = 'public.content'
29
+
30
+ # Base type for mixed content. For example, a PDF file contains both text
31
+ # and special formatting data.
32
+
33
+ COMPOSITE_CONTENT = 'public.composite-content'
34
+
35
+ # Base physical type for byte streams (flat files, pasteboard data, and so
36
+ # on).
37
+
38
+ DATA = 'public.data'
39
+
40
+ # Base functional type for databases.
41
+
42
+ DATABASE = 'public.database'
43
+
44
+ # Base functional type for scheduled events.
45
+
46
+ CALENDAR_EVENT = 'public.calendar-event'
47
+
48
+ # Base type for messages (email, IM, and so on).
49
+
50
+ MESSAGE = 'public.message'
51
+
52
+ # ,public.composite-content,Base type for presentations.
53
+
54
+ PRESENTATION = 'public.presentation'
55
+
56
+ # Base type for contact information.
57
+
58
+ CONTACT = 'public.contact'
59
+
60
+ # Base type for an archive of files and directories.
61
+
62
+ ARCHIVE = 'public.archive'
63
+
64
+ # Base type for items mountable as a volume.
65
+
66
+ DISK_IMAGE = 'public.disk-image'
67
+
68
+ # Base type for all text, including text with markup information (HTML, RTF,
69
+ # and so on).
70
+
71
+ TEXT = 'public.text'
72
+
73
+ # Text of unspecified encoding, with no markup. Equivalent to the MIME type
74
+ # text/plain
75
+
76
+ PLAIN_TEXT = 'public.plain-text'
77
+ Encodings[TEXT] = Encoding::US_ASCII if encoding
78
+
79
+ # Unicode-8
80
+
81
+ PLAIN_TEXT_UTF8 = 'public.utf8-plain-text'
82
+ UTF_8 = PLAIN_TEXT_UTF8
83
+ Encodings[PLAIN_TEXT_UTF8] = Encoding::UTF_8 if encoding
84
+
85
+ # Unicode-16 with byte-order mark (BOM), or if BOM is not present, an
86
+ # external representation byte order (big-endian).
87
+
88
+ PLAIN_TEXT_UTF16_EXTERNAL = 'public.utf16-external-plain-text'
89
+ Encodings[PLAIN_TEXT_UTF16_EXTERNAL] = Encoding::UTF_16BE if encoding
90
+
91
+ # Unicode-16, native byte order, with an optional byte-order mark (BOM).
92
+
93
+ PLAIN_TEXT_UTF16 = 'public.utf16-plain-text'
94
+ Encodings[PLAIN_TEXT_UTF16] = Pasteboard::NATIVE_ENCODING if encoding
95
+
96
+ # Classic Mac OS text.
97
+
98
+ PLAIN_TEXT_TRADITIONAL = 'com.apple.traditional-mac-plain-text'
99
+ Encodings[PLAIN_TEXT_TRADITIONAL] = Encoding::MacRoman if encoding
100
+
101
+ # Rich Text.
102
+
103
+ RTF = 'public.rtf'
104
+
105
+ # Opaque InkText data.
106
+
107
+ INKTEXT = 'com.apple.ink.inktext'
108
+
109
+ # HTML text.
110
+
111
+ HTML = 'public.html'
112
+
113
+ # XML text.
114
+
115
+ XML = 'public.xml'
116
+
117
+ # Generic source code.
118
+
119
+ SOURCE_CODE = 'public.source-code'
120
+
121
+ # C source code.
122
+
123
+ C_SOURCE = 'public.c-source'
124
+
125
+ # Objective-C source code.
126
+
127
+ OBJC_SOURCE = 'public.objective-c-source'
128
+
129
+ # C++ source code.
130
+
131
+ C_PLUS_PLUS_SOURCE = 'public.c-plus-plus-source'
132
+ CXX_SOURCE = C_PLUS_PLUS_SOURCE
133
+
134
+ # Objective-C++ source code.
135
+
136
+ OBJC_PLUS_PLUS_SOURCE = 'public.objective-c-plus-plus-source'
137
+ OBJCXX_SOURCE = OBJC_PLUS_PLUS_SOURCE
138
+
139
+ # C header file.
140
+
141
+ C_HEADER = 'public.c-header'
142
+
143
+ # C++ header file.
144
+
145
+ C_PLUS_PLUS_HEADER = 'public.c-plus-plus-header'
146
+ CXX_HEADER = C_PLUS_PLUS_HEADER
147
+
148
+ # Java source code
149
+
150
+ JAVA_SOURCE = 'com.sun.java-source'
151
+
152
+ # Base type for scripting language source code.
153
+
154
+ SCRIPT = 'public.script'
155
+
156
+ # Assembly language source code.
157
+
158
+ ASSEMBLY_SOURCE = 'public.assembly-source'
159
+
160
+ # Rez source code.
161
+
162
+ REZ_SOURCE = 'com.apple.rez-source'
163
+
164
+ # Mig definition source code.
165
+
166
+ MIG_SOURCE = 'public.mig-source'
167
+
168
+ # Symbol export list.
169
+
170
+ SYMBOL_EXPORT_LIST = 'com.apple.symbol-export'
171
+
172
+ # JavaScript.
173
+
174
+ JAVASCRIPT_SOURCE = 'com.netscape.javascript-source'
175
+
176
+ # Shell script.
177
+
178
+ SHELL_SCRIPT = 'public.shell-script'
179
+
180
+ # C-shell script.
181
+
182
+ CSH_SCRIPT = 'public.csh-script'
183
+
184
+ # Perl script.
185
+
186
+ PERL_SCRIPT = 'public.perl-script'
187
+
188
+ # Python script.
189
+
190
+ PYTHON_SCRIPT = 'public.python-script'
191
+
192
+ # Ruby script.
193
+
194
+ RUBY_SCRIPT = 'public.ruby-script'
195
+
196
+ # PHP script.
197
+
198
+ PHP_SCRIPT = 'public.php-script'
199
+
200
+ # Java web start.
201
+
202
+ JAVA_WEB_START = 'com.sun.java-web-start'
203
+
204
+ # AppleScript text.
205
+
206
+ APPLESCRIPT_TEXT = 'com.apple.applescript.text'
207
+
208
+ # AppleScript.
209
+
210
+ APPLESCRIPT_SCRIPT = 'com.apple.applescript.script'
211
+
212
+ # Object code.
213
+
214
+ OBJECT_CODE = 'public.object-code'
215
+
216
+ # Mach-O binary.
217
+
218
+ MACH_O_BINARY = 'com.apple.mach-o-binary'
219
+
220
+ # PEF (CFM-based) binary
221
+
222
+ PEF_BINARY = 'com.apple.pef-binary'
223
+
224
+ # Microsoft Windows application.
225
+
226
+ WINDOWS_EXECUTABLE = 'com.microsoft.windows-executable'
227
+
228
+ # Microsoft dynamic link library.
229
+
230
+ WINDOWS_DLL = 'com.microsoft.windows-dynamic-link-library'
231
+
232
+ # Java class.
233
+
234
+ JAVA_CLASS = 'com.sun.java-class'
235
+
236
+ # Java archive.
237
+
238
+ JAVA_ARCHIVE = 'com.sun.java-archive'
239
+
240
+ # Quartz Composer composition.
241
+
242
+ QUARTZ_COMPOSER_COMPOSITION = 'com.apple.quartz-composer-composition'
243
+
244
+ # GNU archive.
245
+
246
+ GNU_TAR_ARCHIVE = 'org.gnu.gnu-tar-archive'
247
+
248
+ # Tar archive.
249
+
250
+ TAR_ARCHIVE = 'public.tar-archive'
251
+
252
+ # Gzip archive.
253
+
254
+ GUN_ZIP_ARCHIVE = 'org.gnu.gnu-zip-archive'
255
+
256
+ # Gzip tar archive.
257
+
258
+ GNU_ZIP_TAR_ARCHIVE = 'org.gnu.gnu-zip-tar-archive'
259
+
260
+ # BinHex archive.
261
+
262
+ BINHEX_ARCHIVE = 'com.apple.binhex-archive'
263
+
264
+ # MacBinary archive.
265
+
266
+ MACBINARY_ARCHIVE = 'com.apple.macbinary-archive'
267
+
268
+ # Uniform Resource Locator.
269
+
270
+ URL = 'public.url'
271
+ Encodings[URL] = Encoding::US_ASCII if encoding
272
+
273
+ # File URL.
274
+
275
+ FILE_URL = 'public.file-url'
276
+ Encodings[FILE_URL] = Encoding::US_ASCII if encoding
277
+
278
+ # URL name.
279
+
280
+ URL_NAME = 'public.url-name'
281
+ Encodings[URL_NAME] = Encoding::UTF_8 if encoding
282
+
283
+ # vCard (electronic business card).
284
+
285
+ VCARD = 'public.vcard'
286
+
287
+ # Base type for images.
288
+
289
+ IMAGE = 'public.image'
290
+
291
+ # Base type for fax images.
292
+
293
+ FAX = 'public.fax'
294
+
295
+ # JPEG image.
296
+
297
+ JPEG = 'public.jpeg'
298
+
299
+ # JPEG 2000 image.
300
+
301
+ JPEG_2000 = 'public.jpeg-2000'
302
+
303
+ # TIFF image.
304
+
305
+ TIFF = 'public.tiff'
306
+
307
+ # Base type for digital camera raw image formats.
308
+
309
+ CAMERA_RAW_IMAGE = 'public.camera-raw-image'
310
+
311
+ # PICT image
312
+
313
+ PICT = 'com.apple.pict'
314
+
315
+ # MacPaint image.
316
+
317
+ MACPAINT = 'com.apple.macpaint-image'
318
+
319
+ # PNG image
320
+
321
+ PNG = 'public.png'
322
+
323
+ # X bitmap image.
324
+
325
+ XBITMAP = 'public.xbitmap-image'
326
+
327
+ # QuickTime image.
328
+
329
+ QUICKTIME_IMAGE = 'com.apple.quicktime-image'
330
+
331
+ # Mac OS icon image.
332
+
333
+ ICNS = 'com.apple.icns'
334
+
335
+ # MLTE (Textension) format for mixed text and multimedia data.
336
+
337
+ TEXT_MULTIMEDIA_DATA = 'com.apple.txn.text-multimedia-data'
338
+
339
+ # Base type for any audiovisual content.
340
+
341
+ AUDIOVISUAL_CONTENT = 'public.audiovisual-content'
342
+ AV_CONTENT = AUDIOVISUAL_CONTENT
343
+
344
+ # Base type for movies (video with optional audio or other tracks).
345
+
346
+ MOVIE = 'public.movie'
347
+
348
+ # Base type for video (no audio).
349
+
350
+ VIDEO = 'public.video'
351
+
352
+ # QuickTime movie.
353
+
354
+ QUICKTIME_MOVIE = 'com.apple.quicktime-movie'
355
+
356
+ # AVI movie.
357
+
358
+ AVI = 'public.avi'
359
+
360
+ # MPEG-1 or MPEG-2 content.
361
+
362
+ MPEG = 'public.mpeg'
363
+
364
+ # MPEG-4 content.
365
+
366
+ MPEG4 = 'public.mpeg-4'
367
+
368
+ # 3GPP movie.
369
+
370
+ MOVIE_3GPP = 'public.3gpp'
371
+
372
+ # 3GPP2 movie.
373
+
374
+ MOVIE_3GPP2 = 'public.3gpp2'
375
+
376
+ # Base type for audio (no video).
377
+
378
+ AUDIO = 'public.audio'
379
+
380
+ # MPEG-3 audio.
381
+
382
+ MP3 = 'public.mp3'
383
+
384
+ # MPEG-4 audio.
385
+
386
+ MPEG4_AUDIO = 'public.mpeg-4-audio'
387
+
388
+ # Protected MPEG-4 audio. (iTunes music store format)
389
+
390
+ MPEG4_AUDIO_PROTECTED = 'com.apple.protected-mpeg-4-audio'
391
+
392
+ # μLaw audio.
393
+
394
+ ULAW = 'public.ulaw-audio'
395
+
396
+ # AIFF-C audio.
397
+
398
+ AIFC = 'public.aifc-audio'
399
+
400
+ # AIFF audio.
401
+
402
+ AIFF = 'public.aiff-audio'
403
+
404
+ # Core Audio format.
405
+
406
+ COREAUDIO = 'com.apple.coreaudio-format'
407
+
408
+ # Base type for directories.
409
+
410
+ DIRECTORY = 'public.directory'
411
+
412
+ # A plain folder (that is, not a package).
413
+
414
+ FOLDER = 'public.folder'
415
+
416
+ # A volume.
417
+
418
+ VOLUME = 'public.volume'
419
+
420
+ # A package (that is, a directory presented to the user as a file).
421
+
422
+ PACKAGE = 'com.apple.package'
423
+
424
+ # A directory with an internal structure specified by Core Foundation Bundle
425
+ # Services. .
426
+
427
+ BUNDLE = 'com.apple.bundle'
428
+
429
+ # Base type for executable data.
430
+
431
+ EXECUTABLE = 'public.executable'
432
+
433
+ # Base type for applications and other launchable files.
434
+
435
+ APPLICATION = 'com.apple.application'
436
+
437
+ # Application bundle.
438
+
439
+ APPLICATION_BUNDLE = 'com.apple.application-bundle'
440
+
441
+ # Application file.
442
+
443
+ APPLICATION_FILE = 'com.apple.application-file'
444
+
445
+ # Deprecated application file.
446
+
447
+ APPLICATION_FILE_DEPRECATED = 'com.apple.deprecated-application-file'
448
+
449
+ # Plugin.
450
+
451
+ PLUGIN = 'com.apple.plugin'
452
+
453
+ # Spotlight importer plugin.
454
+
455
+ METADATA_IMPORTER = 'com.apple.metadata-importer'
456
+
457
+ # Dashboard widget.
458
+
459
+ DASHBOARD_WIDGET = 'com.apple.dashboard-widget'
460
+
461
+ # CPIO archive.
462
+
463
+ CPIO_ARCHIVE = 'public.cpio-archive'
464
+
465
+ # Zip archive.
466
+
467
+ ZIP_ARCHIVE = 'com.pkware.zip-archive'
468
+
469
+ # Web Kit webarchive format.
470
+
471
+ WEBARCHIVE = 'com.apple.webarchive'
472
+
473
+ # Framework.
474
+
475
+ FRAMEWORK = 'com.apple.framework'
476
+
477
+ # Rich Text Format Directory. That is, Rich Text with content embedding,
478
+ # on-disk format.
479
+
480
+ RTFD = 'com.apple.rtfd'
481
+
482
+ # Rich Text with content embedding, pasteboard format.
483
+
484
+ RTFD_FLAT = 'com.apple.flat-rtfd'
485
+
486
+ # Items that the Alias Manager can resolve.
487
+
488
+ RESOLVEABLE = 'com.apple.resolvable'
489
+
490
+ # UNIX-style symlink.
491
+
492
+ SYMLINK = 'public.symlink'
493
+
494
+ # A volume mount point
495
+
496
+ MOUNT_POINT = 'com.apple.mount-point'
497
+
498
+ # Alias record.
499
+
500
+ ALIAS_RECORD = 'com.apple.alias-record'
501
+
502
+ # Alias file.
503
+
504
+ ALIAS_FILE = 'com.apple.alias-file'
505
+
506
+ # Base type for fonts.
507
+
508
+ FONT = 'public.font'
509
+
510
+ # TrueType font.
511
+
512
+ TRUETYPE_FONT = 'public.truetype-font'
513
+
514
+ # PostScript font.
515
+
516
+ POSTSCRIPT_FONT = 'com.adobe.postscript-font'
517
+
518
+ # TrueType data fork font.
519
+
520
+ TRUETYPE_DATA_FORK_FONT = 'com.apple.truetype-datafork-suitcase-font'
521
+
522
+ # PostScript OpenType font.
523
+
524
+ OPENTYPE_FONT = 'public.opentype-font'
525
+
526
+ # TrueType OpenType font.
527
+
528
+ TRUETYPE_TTF_FONT = 'public.truetype-ttf-font'
529
+
530
+ # TrueType collection font.
531
+
532
+ TRUETYPE_COLLECTION_FONT = 'public.truetype-collection-font'
533
+
534
+ # Font suitcase.
535
+
536
+ FONT_SUITCASE = 'com.apple.font-suitcase'
537
+
538
+ # PostScript Type 1 outline font.
539
+
540
+ POSTSCRIPT_LWFN_FONT = 'com.adobe.postscript-lwfn-font'
541
+
542
+ # PostScriptType1 outline font.
543
+
544
+ POSTSCRIPT_PFB_FONT = 'com.adobe.postscript-pfb-font'
545
+
546
+ # PostScriptType 1 outline font.
547
+
548
+ POSTSCRIPT_PFA_FONT = 'com.adobe.postscript.pfa-font'
549
+
550
+ # ColorSync profile.
551
+
552
+ COLORSYNC_PROFILE = 'com.apple.colorsync-profile'
553
+
554
+ # :section: Uniform type identifiers for alternate tags
555
+
556
+ # Filename extension.
557
+
558
+ FILENAME_EXTENSION = 'public.filename-extension'
559
+
560
+ # MIME type.
561
+
562
+ MIME_TYPE = 'public.mime-type'
563
+
564
+ # Four-character code (type OSType).
565
+
566
+ OS_TYPE = 'com.apple.ostype'
567
+
568
+ # NSPasteboard type.
569
+
570
+ PASTEBOARD_TYPE = 'com.apple.nspboard-type'
571
+
572
+ # :section: Imported uniform type identifiers
573
+
574
+ # PDF data.
575
+
576
+ PDF = "com.adobe.pdf (kUTTypePDF)"
577
+
578
+ # PostScript data.
579
+
580
+ POSTSCRIPT = "com.adobe.postscript"
581
+
582
+ # Encapsulated PostScript.
583
+
584
+ ENCAPSULATED_POSTSCRIPT = "com.adobe.encapsulated-postscript"
585
+
586
+ # Adobe Photoshop document.
587
+
588
+ PHOTOSHOP_IMAGE = "com.adobe.photoshop-image"
589
+
590
+ # Adobe Illustrator document.
591
+
592
+ ILLUSTRATOR_IMAGE = "com.adobe.illustrator.ai-image"
593
+
594
+ # GIF image.
595
+
596
+ GIF = "com.compuserve.gif (kUTTypeGIF)"
597
+
598
+ # Windows bitmap image.
599
+
600
+ WINDOWS_BITMAP = "com.microsoft.bmp (kUTTypeBMP)"
601
+
602
+ # Windows icon image.
603
+
604
+ WINDOWS_ICON = "com.microsoft.ico (kUTTypeICO)"
605
+
606
+ # Microsoft Word data.
607
+
608
+ WORD_DOCUMENT = "com.microsoft.word.doc"
609
+
610
+ # Microsoft Excel data.
611
+
612
+ EXCEL_SPREADSHEET = "com.microsoft.excel.xls"
613
+
614
+ # Microsoft PowerPoint presentation.
615
+
616
+ POWERPOINT_PRESENTATION = "com.microsoft.powerpoint.ppt"
617
+
618
+ # Waveform audio.
619
+
620
+ MICROSOFT_WAV = "com.microsoft.waveform-audio"
621
+
622
+ # Microsoft Advanced Systems format.
623
+
624
+ MICROSOFT_ADVANCED_SYSTEMS_FORMAT = "com.microsoft.advanced-systems-format"
625
+
626
+ # Windows media.
627
+
628
+ WINDOWS_MEDIA_WM = "com.microsoft.windows-media-wm"
629
+
630
+ # Windows media.
631
+
632
+ WINDOWS_MEDIA_WMV = "com.microsoft.windows-media-wmv"
633
+
634
+ # Windows media.
635
+
636
+ WINDOWS_MEDIA_WMP = "com.microsoft.windows-media-wmp"
637
+
638
+ # Windows media audio.
639
+
640
+ WINDOWS_MEDIA_WMA = "com.microsoft.windows-media-wma"
641
+
642
+ # Advanced Stream Redirector.
643
+
644
+ MICROSOFT_ADVANCED_STREAM_REDIRECTOR =
645
+ "com.microsoft.advanced-stream-redirector"
646
+
647
+ # Windows media.
648
+
649
+ WINDOWS_MEDIA_WMX = "com.microsoft.windows-media-wmx"
650
+
651
+ # Windows media.
652
+
653
+ WINDOWS_MEDIA_WVX = "com.microsoft.windows-media-wvx"
654
+
655
+ # Windows media audio.
656
+
657
+ WINDOWS_MEDIA_WAX = "com.microsoft.windows-media-wax"
658
+
659
+ # Apple Keynote document.
660
+
661
+ KEYNOTE_DOCUMENT = "com.apple.keynote.key"
662
+
663
+ # Apple Keynote theme.
664
+
665
+ KEYNOTE_THEME = "com.apple.keynote.kth"
666
+
667
+ # TGA image.
668
+
669
+ TGA_IMAGE = "com.truevision.tga-image"
670
+
671
+ # Silicon Graphics image.
672
+
673
+ SGI_IMAGE = "com.sgi.sgi-image"
674
+
675
+ # OpenEXR image.
676
+
677
+ OPENEXR_IMAGE = "com.ilm.openexr-image"
678
+
679
+ # FlashPix image.
680
+
681
+ FLASHPIX_IMAGE = "com.kodak.flashpix.image"
682
+
683
+ # J2 fax.
684
+
685
+ J2_FAX = "com.j2.jfx-fax"
686
+
687
+ # eFax fax.
688
+
689
+ EFAX_FAX = "com.js.efx-fax"
690
+
691
+ # Digidesign Sound Designer II audio.
692
+
693
+ SOUND_DESIGNER_II_AUDIO = "com.digidesign.sd2-audio"
694
+ SOUND_DESIGNER_2_AUDIO = SOUND_DESIGNER_II_AUDIO
695
+
696
+ # RealMedia.
697
+
698
+ REAL_MEDIA = "com.real.realmedia"
699
+
700
+ # RealMedia audio.
701
+
702
+ REAL_AUDIO = "com.real.realaudio"
703
+
704
+ # Real synchronized multimedia integration language.
705
+
706
+ REAL_SMIL = "com.real.smil"
707
+
708
+ # Stuffit archive.
709
+
710
+ STUFFIT_ARCHIVE = "com.allume.stuffit-archive"
711
+
712
+ end
713
+