I’m working on a script that includes in it the process of mounting a network drive.
tell application "Finder"
mount volume "smb://" & username & ":" & userpassword & "@serveraddress/" & username
end tell
If the computer’s network connection is good, this typically works great and is finished within a couple of seconds. If there’s a problem, however, it takes a very long time for the beach ball to go away and my “on error” message to finally appear.
How can I at least create a “Please wait…” window?
Even better would be a way (by using “ignoring” or something like that) to make this time-consuming unsuccessful process take place in the background so that the user can at least continue to open other applications or that sort of thing.
Thanks for any help and ideas.
AppleScript: 2.1.1
Operating System: Mac OS X (10.6)
Well, after the lengthy process of not succeeding, my “on error” task runs, which is a dialog. So i could place the “Please wait…” dialog before the task begins, but by default an “ok” and a “cancel” button are placed on the dialog, so the script wouldn’t move on to attempting the connection until the user responds to the “please wait” dialog.
Unless you know of a way to have the “Please wait…” stay up during the mounting, and go away when the mounting fails or completes. That’s really what i’m looking for, sorry i wasn’t more specific.
AppleScript: 2.1.1
Browser: Firefox 3.5.5
Operating System: Mac OS X (10.6)
Interesting idea. I, unfortunately, have no experience at all with that. Can the Obj. C be included within a “normal” applescript, or does it require a different editor or something?
Another thought: Does anyone know of a way to stop the mounting part of the script after a certain amount of time? Say, 10 seconds?
You embed the shell script in an AppleScript like this:
-- my test with an USB drive
set myDevice to "CYAN CC"
set myOption to "mount" --unmount
--
set username to ""
set userpassword to ""
try
do shell script "
rm -f /tmp/hpipe
mkfifo /tmp/hpipe
/Applications/CocoaDialog.app/Contents/MacOS/CocoaDialog progressbar \\
--indeterminate --title \"Mounting disk.\" \\
--width 250 --height 80 \\
--text \"Please wait...\" < /tmp/hpipe &
exec 3<> /tmp/hpipe
echo -n . >&3
# do all of your work here
# like this
# diskutil " & myOption & " $(diskutil list | awk '/" & myDevice & "/{print $NF}')
# or like this
osascript <<-EOF
tell application \"Finder\"
say \"CPU speed is \" & (system info)'s CPU speed
delay 2
beep 2
end tell
EOF
exec 3>&-
wait
rm -f /tmp/hpipe
exit 0"
on error err number errNum
display dialog err & return & "error #" & errNum with title "ERROR" buttons "OK" default button 1 with icon 0
end try
The only regret I have on the progress bar is that it has no “- float” option as in other “CocoaDialog” dialogs.
Interesting idea. Though i’m not thrilled about the temp file that creates, i’ve tried it out. I might be missing something, though, because i can’t get it to work, and i have downloaded and found a place for CocoaDialog.app.
My understanding is that since this is shell script, that further shell script is all that you can do in the “do all of your work here” section. Is there a way to do non-shell work in that place? I’ve tried a few weak ideas with no success.
I would just get Xcode, copy and paste your code, create your own little dialog which won’t stop processes, not too hard. Unless Cocoa Dialog does it perfectly.
Yeah. I have Xcode but haven’t used it yet. It seems it’s time to, so i’ve been simultaneously learning how to properly use that (and ASOC) while also trying clem’s idea.
Place your script inside the finish launching handler, create a window in Interface Builder which will be your dialog, then connect a window property and use makeKeyAndOrderFront_(sender) to open and performClose_(sender) to close, you can even add progress indicators if you like, which take more work, you can find out how to do properties and linking in unscripted and craig’s new tutorial on the ASOC forum.