]> gitweb.factorcode.org Git - factor.git/blob - basis/core-foundation/launch-services/launch-services.factor
classes.struct: moving to new/boa instead of <struct>/<struct-boa>
[factor.git] / basis / core-foundation / launch-services / launch-services.factor
1 ! Copyright (C) 2011 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.c-types alien.data alien.syntax classes.struct
4 continuations core-foundation core-foundation.strings
5 core-foundation.urls destructors kernel sequences
6 specialized-arrays strings unix.ffi ;
7 SPECIALIZED-ARRAY: char
8 IN: core-foundation.launch-services
9
10 FUNCTION: OSStatus LSFindApplicationForInfo (
11    OSType inCreator,
12    CFStringRef inBundleID,
13    CFStringRef inName,
14    FSRef *outAppRef,
15    CFURLRef *outAppURL
16 )
17
18 FUNCTION: OSStatus FSRefMakePath (
19    FSRef *ref,
20    UInt8 *path,
21    UInt32 maxPathSize
22 )
23
24 ! Abstract base types
25 CFSTRING: kUTTypeItem "public.item"
26 CFSTRING: kUTTypeContent "public.content"
27 CFSTRING: kUTTypeCompositeContent "public.composite-content"
28 CFSTRING: kUTTypeApplication "com.apple.application"
29 CFSTRING: kUTTypeMessage "public.message"
30 CFSTRING: kUTTypeContact "public.contact"
31 CFSTRING: kUTTypeArchive "public.archive"
32 CFSTRING: kUTTypeDiskImage "public.disk-image"
33
34 ! Concrete base types
35 CFSTRING: kUTTypeData "public.data"
36 CFSTRING: kUTTypeDirectory "public.directory"
37 CFSTRING: kUTTypeResolvable "com.apple.resolvable"
38 CFSTRING: kUTTypeSymLink "public.symlink"
39 CFSTRING: kUTTypeMountPoint "com.apple.mount-point"
40 CFSTRING: kUTTypeAliasFile "com.apple.alias-file"
41 CFSTRING: kUTTypeAliasRecord "com.apple.alias-record"
42 CFSTRING: kUTTypeURL "public.url"
43 CFSTRING: kUTTypeFileURL "public.file-url"
44
45 ! Text types
46 CFSTRING: kUTTypeText "public.text"
47 CFSTRING: kUTTypePlainText "public.plain-text"
48 CFSTRING: kUTTypeUTF8PlainText "public.utf8-plain-text"
49 CFSTRING: kUTTypeUTF16ExternalPlainText "public.utf16-external-plain-text"
50 CFSTRING: kUTTypeUTF16PlainText "public.utf16-plain-text"
51 CFSTRING: kUTTypeRTF "public.rtf"
52 CFSTRING: kUTTypeHTML "public.html"
53 CFSTRING: kUTTypeXML "public.xml"
54 CFSTRING: kUTTypeSourceCode "public.source-code"
55 CFSTRING: kUTTypeCSource "public.c-source"
56 CFSTRING: kUTTypeObjectiveCSource "public.objective-c-source"
57 CFSTRING: kUTTypeCPlusPlusSource "public.c-plus-plus-source"
58 CFSTRING: kUTTypeObjectiveCPlusPlusSource "public.objective-c-plus-plus-source"
59 CFSTRING: kUTTypeCHeader "public.c-header"
60 CFSTRING: kUTTypeCPlusPlusHeader "public.c-plus-plus-header"
61 CFSTRING: kUTTypeJavaSource "com.sun.java-source"
62
63 ! Composite content types
64 CFSTRING: kUTTypePDF "com.adobe.pdf"
65 CFSTRING: kUTTypeRTFD "com.apple.rtfd"
66 CFSTRING: kUTTypeFlatRTFD "com.apple.flat-rtfd"
67 CFSTRING: kUTTypeTXNTextAndMultimediaData "com.apple.txn.text-multimedia-data"
68 CFSTRING: kUTTypeWebArchive "com.apple.webarchive"
69
70 ! Image content types
71 CFSTRING: kUTTypeImage "public.image"
72 CFSTRING: kUTTypeJPEG "public.jpeg"
73 CFSTRING: kUTTypeJPEG2000 "public.jpeg-2000"
74 CFSTRING: kUTTypeTIFF "public.tiff"
75 CFSTRING: kUTTypePICT "com.apple.pict"
76 CFSTRING: kUTTypeGIF "com.compuserve.gif"
77 CFSTRING: kUTTypePNG "public.png"
78 CFSTRING: kUTTypeQuickTimeImage "com.apple.quicktime-image"
79 CFSTRING: kUTTypeAppleICNS "com.apple.icns"
80 CFSTRING: kUTTypeBMP "com.microsoft.bmp"
81 CFSTRING: kUTTypeICO "com.microsoft.ico"
82
83 ! Audiovisual content types
84 CFSTRING: kUTTypeAudiovisualContent "public.audiovisual-content"
85 CFSTRING: kUTTypeMovie "public.movie"
86 CFSTRING: kUTTypeVideo "public.video"
87 CFSTRING: kUTTypeAudio "public.audio"
88 CFSTRING: kUTTypeQuickTimeMovie "com.apple.quicktime-movie"
89 CFSTRING: kUTTypeMPEG "public.mpeg"
90 CFSTRING: kUTTypeMPEG4 "public.mpeg-4"
91 CFSTRING: kUTTypeMP3 "public.mp3"
92 CFSTRING: kUTTypeMPEG4Audio "public.mpeg-4-audio"
93 CFSTRING: kUTTypeAppleProtectedMPEG4Audio "com.apple.protected-mpeg-4-audio"
94
95 ! Directory types
96 CFSTRING: kUTTypeFolder "public.folder"
97 CFSTRING: kUTTypeVolume "public.volume"
98 CFSTRING: kUTTypePackage "com.apple.package"
99 CFSTRING: kUTTypeBundle "com.apple.bundle"
100 CFSTRING: kUTTypeFramework "com.apple.framework"
101
102 ! Application types
103 CFSTRING: kUTTypeApplicationBundle "com.apple.application-bundle"
104 CFSTRING: kUTTypeApplicationFile "com.apple.application-file"
105
106 ! Contact types
107 CFSTRING: kUTTypeVCard "public.vcard"
108
109 ! Misc. types
110 CFSTRING: kUTTypeInkText "com.apple.ink.inktext"
111
112 CONSTANT: kLSUnknownCreator f
113
114 ERROR: core-foundation-error n ;
115
116 : cf-error ( n -- )
117     dup 0 = [ drop ] [ core-foundation-error ] if ;
118
119 : fsref>string ( fsref -- string )
120     MAXPATHLEN [ char <c-array> ] [ ] bi
121     [ FSRefMakePath cf-error ] [ drop ] 2bi
122     [ 0 = ] trim-tail >string ;
123
124 : (launch-services-path) ( string -- string' )
125     [
126         kLSUnknownCreator
127         swap <CFString> &CFRelease
128         f
129         FSRef new
130         [ f LSFindApplicationForInfo cf-error ] keep
131         fsref>string
132     ] with-destructors ;
133
134 : launch-services-path ( string -- path/f )
135     [ (launch-services-path) ] [ 2drop f ] recover ;