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