Add support for ForkLift 3 (#6490)

This adds support for ForkLift 3, which uses a different
application id and also uses a popover instead of a sheet for
entering the directory to go to.

This also improves the handling of different versions of ForkLift,
by first choosing any currently running instance, and if none is
running starting the newest available version.

Fixes #6565.
This commit is contained in:
Johan Kaving 2018-08-07 21:39:38 +02:00 committed by Marc Cornellà
parent 2991f237ae
commit 850975eb78

View file

@ -1,6 +1,6 @@
# Open folder in ForkLift.app or ForkLift2.app from console # Open folder in ForkLift.app or ForkLift2.app from console
# Author: Adam Strzelecki nanoant.com, modified by Bodo Tasche bitboxer.de # Author: Adam Strzelecki nanoant.com, modified by Bodo Tasche bitboxer.de
# Updated to support ForkLift2 by Johan Kaving # Updated to support ForkLift 2 and ForkLift 3 by Johan Kaving
# #
# Usage: # Usage:
# fl [<folder>] # fl [<folder>]
@ -24,46 +24,84 @@ function fl {
fi fi
osascript 2>&1 1>/dev/null <<END osascript 2>&1 1>/dev/null <<END
try try
tell application "Finder" tell application "Finder"
set appName to name of application file id "com.binarynights.ForkLift2" set forkLift3 to name of application file id "com.binarynights.ForkLift-3"
end tell end tell
on error err_msg number err_num on error err_msg number err_num
tell application "Finder" set forkLift3 to null
set appName to name of application file id "com.binarynights.ForkLift" end try
end tell try
end try tell application "Finder"
set forkLift2 to name of application file id "com.binarynights.ForkLift2"
end tell
on error err_msg number err_num
set forkLift2 to null
end try
try
tell application "Finder"
set forkLift to name of application file id "com.binarynights.ForkLift"
end tell
on error err_msg number err_num
set forkLift to null
end try
if application appName is running if forkLift3 is not null and application forkLift3 is running then
tell application appName tell application forkLift3
activate activate
end tell set forkLiftVersion to version
else end tell
tell application appName else if forkLift2 is not null and application forkLift2 is running then
tell application forkLift2
activate activate
end tell set forkLiftVersion to version
repeat until application appName is running end tell
delay 1 else if forkLift is not null and application forkLift is running then
end repeat tell application forkLift
tell application appName
activate activate
end tell set forkLiftVersion to version
end tell
else
if forkLift3 is not null then
set appName to forkLift3
else if forkLift2 is not null then
set appName to forkLift2
else if forkLift is not null then
set appName to forkLift
end if end if
tell application "System Events" tell application appName
tell application process "ForkLift" activate
set forkLiftVersion to version
end tell
repeat until application appName is running
delay 1
end repeat
tell application appName
activate
end tell
end if
tell application "System Events"
tell application process "ForkLift"
try try
set topWindow to window 1 set topWindow to window 1
on error on error
keystroke "n" using command down keystroke "n" using command down
set topWindow to window 1 set topWindow to window 1
end try end try
keystroke "g" using {command down, shift down} keystroke "g" using {command down, shift down}
tell sheet 1 of topWindow if forkLiftVersion starts with "3" then
set value of text field 1 to "$PWD" tell pop over of list of group of splitter group of splitter group of topWindow
keystroke return set value of text field 1 to "$PWD"
end tell end tell
end tell else
tell sheet 1 of topWindow
set value of text field 1 to "$PWD"
end tell
end if
keystroke return
end tell end tell
end tell
END END
} }