Launcher Code

From NeoWiki

(Difference between revisions)
Jump to: navigation, search

( | contribs)
(created)
Next diff →

Revision as of 00:47, 19 September 2006

-- xcode files in .zip found here http://neo-downloads.sixthcrusade.com/launcher-xcode.zip

-- launcher.applescript -- launcher

-- Created by Jacob Haddon on 9/18/06. -- Copyright (c) 2003 __MyCompanyName__. All rights reserved.


(*************************************************************************

*
*  OpenOffice.org - a multi-platform office productivity suite
*
*  $RCSfile: main.applescript,v $
*
*  $Revision: 1.2 $
*
*  last change: $Author: obo $ $Date: 2005/10/13 09:46:35 $
*
*  The Contents of this file are made available subject to
*  the terms of GNU Lesser General Public License Version 2.1.
*
*
*    GNU Lesser General Public License Version 2.1
*    =============================================
*    Copyright 2005 by Sun Microsystems, Inc.
*    901 San Antonio Road, Palo Alto, CA 94303, USA
*
*    This library is free software; you can redistribute it and/or
*    modify it under the terms of the GNU Lesser General Public
*    License version 2.1, as published by the Free Software Foundation.
*
*    This library is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
*    Lesser General Public License for more details.
*
*    You should have received a copy of the GNU Lesser General Public
*    License along with this library; if not, write to the Free Software
*    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
*    MA  02111-1307  USA
*
*************************************************************************)


on clicked theObject set j to (name of theObject as string) --display dialog j if j is equal to "open" then display open panel set the pathNames to (path names of open panel) openFiles(pathNames) else if j is equal to "quit" then --display dialog "Are You Sure You Want to Quit OpenOffice.org?" quit {} else openSoffice(j, "-") end if end clicked


-- -- the default handlers: run, open, idle, quit --


on open (theFiles) openFiles(theFiles) end open

on idle -- close icon only if ooo has terminated if isOOoRunning() = 0 then tell me to quit end if -- check all x seconds if ok to quit return 3 end idle

on quit if isOOoRunning() = 0 then continue quit end if end quit


on isOOoRunning() set soffice to getProgramPath() & "/soffice" set isRunning to do shell script "_FOUND_=`ps -wx -o command | grep \"" & soffice & "\" | grep -v grep`; echo $_FOUND_" if isRunning ≠ "" then return 1 else return 0 end if end isOOoRunning

on openSoffice(progToOpen, aFile) set oooProgramPath to getProgramPath() --display dialog "getProgramPath" set theDisplay to startXServer() --display dialog "start x" set theEnv to "DISPLAY=" & theDisplay & " ; export DISPLAY; " set theCmd to "sh \"" & oooProgramPath & "/" & progToOpen & "\" " --display dialog "soffice" do shell script theEnv & theCmd & aFile & " &>/dev/null & echo $!" end openSoffice

on startXServer() -- First try standard X11 location, then try standard XDarwin location set Xserverloc to "/Applications/Utilities/X11.app" set whichserver to do shell script "if [ -d " & Xserverloc & " ]; then echo \"X11\"; else echo \"NOXSERVER\"; fi" if whichserver = "NOXSERVER" then set Xserverloc to "/Applications/XDarwin.app" set whichserver to do shell script "if [ -d " & Xserverloc & " ]; then echo \"XDarwin\"; else echo \"NOXSERVER\"; fi" end if

-- if nothing found yet try using locate, first with X11.app and then with XDarwin.app if whichserver = "NOXSERVER" then set Xserverloc to do shell script "locate X11.app/Contents/MacOS/X11 | sed -e 's-/Contents/MacOS/X11--g'" if Xserverloc ≠ "" then set whichserver to "X11" end if end if if whichserver = "NOXSERVER" then set Xserverloc to do shell script "locate XDarwin.app/Contents/MacOS/XDarwin | sed -e 's-/Contents/MacOS/XDarwin--g'" if Xserverloc ≠ "" then set whichserver to "XDarwin" end if end if

set now_running to "" set now_running to do shell script "INX=`ps -wcx | grep \"" & whichserver & "\"`; echo $INX" if whichserver = "NOXSERVER" then -- display dialog "No XServer Found" set now_running to "Skip" end if

-- display dialog "now running is " & now_running if now_running = "" then if whichserver = "X11" then -- enable keyboard extension for X11 for proper Alt key handling set x11cmd to Xserverloc & "/Contents/MacOS/X11 +kb &>/dev/null & echo $!" do shell script x11cmd -- save process id set x11pid to the result -- wait until the window manager is started which is the second child process of x11 set numchildrencmd to "ps -x -o ppid | grep " & x11pid & " | wc -l" set numchildren to 0 set d to current date set t1 to time of d repeat while numchildren ≠ 2 set d to current date set t2 to time of d -- give up after 30 seconds if t2 - t1 > 30 then display dialog "Command timed out" exit repeat end if set result to do shell script numchildrencmd set numchildren to result as integer end repeat else -- startup XDarwin do shell script "open " & "\"" & Xserverloc & "\"" & " >> /dev/null 2>&1" do shell script "sleep 4" end if end if


if whichserver = "X11" then -- the DISPLAY variable is different for every user currently logged in -- X11 passes the DISPLAY as the last command line parameter to its child process -- we can use ps to read the command line and parse the trailing :0, :1, or whatever set xdisplay to do shell script "ps -wx -o command | grep X11.app | grep \":.$\" | sed \"s/^.*:/:/g\"" -- display dialog xdisplay return xdisplay else -- TODO: find out how XDarwin does it return ":0" end if end startXServer

on checkPath(aPath) set pathFound to do shell script "if [ -d \"" & aPath & "\" ]; then echo \"true\"; else echo \"false\"; fi" --display dialog quoted form of aPath if (pathFound = "true") then return 1 else return 0 end if end checkPath

-- getInstallPath -- finds the path to the oo.o installation -- checks the path to make sure there is something there -- returns true if so, or error message if not

on getInstallPath() set myPath to (path to me) --set oooInstallPath to "/Applications/OpenOffice.org 2.0.app/Contents/openoffice.org" tell application "Finder" to set j to POSIX path of (application file id "org.openoffice.script" as string) set oooInstallPath to j & "/Contents/openoffice.org" if checkPath(oooInstallPath) = 0 then display dialog "No valid installation found at: " & oooInstallPath return "" else return oooInstallPath end if end getInstallPath

on getProgramPath() return getInstallPath() & "/program" end getProgramPath


on openFiles(fileList) -- open dialog sends posix if (count of fileList) > 0 then repeat with i from 1 to the count of fileList set theDocument to (quoted form of item i of fileList) display dialog theDocument openSoffice("swriter", theDocument) end repeat end if end openFiles

Personal tools