70 lines
2.4 KiB
AppleScript
70 lines
2.4 KiB
AppleScript
property bochs_path : "Contents/MacOS/bochs"
|
|
property bochs_app : ""
|
|
|
|
on run
|
|
tell application "Finder" to get container of (path to me) as string
|
|
set script_path to POSIX path of result
|
|
|
|
-- Locate bochs
|
|
set bochs_alias to findBochs()
|
|
|
|
-- Tell Terminal to run bochs from the command line
|
|
--Use the script's directory as the current directory
|
|
tell application "Terminal"
|
|
activate
|
|
do script "cd '" & script_path & "';exec '" & (POSIX path of bochs_app) & bochs_path&"'"
|
|
-- Wait for Terminal to change the name first, then change it to ours
|
|
delay 1
|
|
set AppleScript's text item delimiters to "/"
|
|
set the text_item_list to every text item of the script_path
|
|
set AppleScript's text item delimiters to ""
|
|
|
|
|
|
set next_to_last to ((count of text_item_list) - 1)
|
|
set the folder_name to item next_to_last of text_item_list
|
|
set name of front window to "Running bochs in ../" & folder_name & "/"
|
|
end tell
|
|
end run
|
|
|
|
-- Taken from examples at http://www.applescriptsourcebook.com/tips/findlibrary.html
|
|
to Hunt for itemName at folderList
|
|
--Returns path to itemName as string, or empty string if not found
|
|
repeat with aFolder in folderList
|
|
try
|
|
if class of aFolder is constant then
|
|
return alias ((path to aFolder as string) & itemName) as string
|
|
else if folder of (info for alias aFolder) then
|
|
return alias (aFolder & itemName) as string
|
|
end if
|
|
on error number -43 --item not there, go to next folder
|
|
end try
|
|
end repeat
|
|
return "" --return empty string if item not found
|
|
end Hunt
|
|
|
|
on findBochs()
|
|
try
|
|
if bochs_app is "" then error number -43
|
|
return alias bochs_app
|
|
on error number -43
|
|
-- bochs_app no good, go hunting
|
|
try
|
|
tell application "Finder" to get container of (path to me) as string
|
|
set this_dir_alias to alias result
|
|
tell application "Finder" to get container of (this_dir_alias) as string
|
|
set one_up_dir_alias to alias result
|
|
set TheUsualPlaces to {this_dir_alias as string, one_up_dir_alias as string}
|
|
Hunt for "bochs.app" at TheUsualPlaces
|
|
set result_alias to result
|
|
if result_alias is "" then error number -43
|
|
set bochs_app to result_alias as string
|
|
return result_alias
|
|
on error number -43
|
|
--Give up seeking, Ask the user
|
|
choose application with prompt "Please locate Bochs:" as alias
|
|
set result_alias to result
|
|
set bochs_app to result_alias as string
|
|
return result_alias
|
|
end try
|
|
end try
|
|
end findBochs |