[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
opening a document in the finder (launching)
- To: info-mcl@ministry.cambridge.apple.com
- Subject: opening a document in the finder (launching)
- From: alanr@bruckner.media-lab.media.mit.edu (Alan Ruttenberg)
- Date: Wed, 11 May 1994 22:20:11 GMT
- Newsgroups: comp.lang.lisp.mcl
- Organization: MIT Media Laboratory Learning an Common Sense Group
- Sender: news@dizzy.media.mit.edu (USENET News System)
At 3:00 PM 5/11/94 +0000, Noel Rappin wrote:
>Also, how can you launch a finder document from MCL
call the function finder-open-documents (defined below) with &rest
args being the documents you want to open.
-alan
(in-package :ccl)
(require 'appleevent-toolkit)
(defconstant $kAEOpenSelection :|sope|)
(defconstant $kAEFinderEvents :|FNDR|)
(defconstant $keySelection :|fsel|)
(defun create-alias-record (the-desc path)
(rlet ((alias :aliashandle))
(let ((namestring (mac-namestring path)))
(rlet ((fsspec :fsspec))
(with-pstrs ((name namestring))
(#_fsmakefsspec -1 -1 name fsspec))
(rlet ((fsp :pointer))
(%put-ptr fsp fsspec)
(#_NewAlias fsp fsspec alias)))
(with-dereferenced-handles ((aliasptr (%get-ptr alias)))
;(print-db (#_gethandlesize (%get-ptr alias)) (pref aliasptr :aliasrecord.aliassize))
(#_AECreatedesc #$typeAlias aliasptr (#_gethandlesize (%get-ptr alias)) the-desc)
(#_DisposHandle :check-error (%get-ptr alias))
))
the-desc))
(defun create-finder-open-selection (the-desc the-target paths &rest create-keywords)
(apply 'create-appleevent the-desc $kAEFinderEvents $kAEOpenSelection the-target
create-keywords)
(let ((directory (mac-namestring (make-pathname :directory (pathname-directory (car paths))))))
;(print directory)
(with-aedescs (directory-alias rest-aliases)
(create-alias-record directory-alias directory)
(create-alias-list rest-aliases paths)
(ae-error (#_AEPutParamDesc the-desc #$keyDirectObject directory-alias))
(ae-error (#_AEPutParamDesc the-desc $keySelection rest-aliases)))))
(defun finder-open-documents (&rest pathnames)
(with-aedescs (appleevent reply target)
(create-named-process-target target "Finder")
(create-finder-open-selection appleevent target pathnames)
(send-appleevent appleevent reply :reply-mode :no-reply)))