Does anyone know if this is an old or new bug. When I drop an internet location file onto the following droplet, it opens the internet location and doesn’t process the parameter:
on open p
set c to class of p
display dialog (c as string)
return
end open
That’s interesting. I was wondering if the bug occurs in ASOC droplets Finally figured out how to make the droplet in Xcode from one of your posts. Thanks a lot.
Now about to test the webloc extension. I’d bet that it won’t work.
Just thought of an idea. if you check the selected files in Finder before ‘application_openFile_(theSender, theFile)’, then you might be able to stop Safari opening it. I’ll try checking in the ‘applicationWillFinishLaunching_(aNotification)’ handler. Then, get the list of selected files in Finder.
I suppose that you all tried these workarounds already, but it’s fun.
It happens everywhere. The way apps open files is as a result of an Apple event sent to them, listing the files. When it’s an internet location file, the whole mechanism is short-circuited.
You can do the same thing in AppleScript. The problem, though, is you can have a file selected in the Finder, and drag another file altogether – the dragged file is not necessarily the selection.
One other option I was thinking about is ui scripting Finder just to get selected items. Something like:
Darn I can’t find the script. Desktop is full.
I reread your posts. Didn’t think about dragging a file that is not selected. One track minded, me. Did manage to get the selection before Safari opened though. Another way it won’t work is if the droplet is in a different window from the selected dragged files. Then, the droplet becomes selected.
Edited: just thought of another workaround. Get the url from Safari.
Edited: the only problem with that is if you have duplicate (or the same urls) in the internet location files. Need another workaround for that also.
Edited: also, if one of the open windows contains many items, then you have a problem with time.
Edited: just thought of one thing. If there are more than one file dropped, then the selection must be true. Because you cannot drop more than one item unless they are selected.
Edited: i.e. in their windows.
Edited: it’s a good thing that Apple ended the text in their internet location files with a return. Then, you know the end of the url.
I’m quite sure that you can make a Python droplet. But, you need to download the update. It’s been a while since I’ve used that, the application. The Finder module is exactly like part of scripting the Finder, but what I’ve noticed is that Python doesn’t always return the same things. Need to look into it further.
Maybe you can try to change the uti of the info plist file to process webloc files? What I am saying is that in order for your droplet to process a webloc file, you must configure the droplet to do so by editing the info plist file, with regards to which uti’s your droplet can handle. This will hopefully work. You’ll find how to edit the info plist file in at least property list programming guide, or that will point to the document. Shouldn’t it work, then you must try to write an on open location handler.
Edit
It may very well be so, that the Launchservices, opens and reads the url in the webloc file for you, regardless, if your app takes webloc files or not, but the only way of figuring that out, is by actually trying. If it don’t handle webloc files, then you should try to configure your droplet to take url’s. Then you at least know for sure what is happening.
I’ve been trying all kinds of things with the info.plist with info from the internet and the developer docs. Can’t get it to work. It’s very hard trying something when you don’t know if it will work or not.
I have the feeling that it might not work. It seems like something is happening in the drag and not the drop. I’ll check it out again tomorrow. Also, I need to recheck what to enter the schemes.
Well, I don’t think you can make the webpagehelper work anymore with Safari, at least I couldn’t, and I gave a fair try to it, as I had it working on Snow Leopard, with that version of Safari.
This snippet below does what it is intended to do. (Save as applet, then drop webloc) The problem with weblocs, is that they become urls, before you can see them. So this may not serve your purpose at all.
on open location url_item
display dialog (url_item as text)
end open location
There is no good way to figure out where a webloc resideds in all cases.
Sorry if I’ve read too quickly all the posts but what I’ve ended up with is just a little series of trials on a drag and dropped webloc from Safari onto the Desktop. Double-clicking the webloc, we knew that, opens the URL straight in the default Web browser. So I tried to force open it in TextEdit: bad luck, also opens in Safari! So I decided to get inside of the webloc file itself by changing webloc extension into txt and bingo the file opens flawlessly in TextEdit. And the text is interesting: it reads bplist00”SURL_-http://macscripter.net/viewtopic.php?id=43021?
So I’m sure a little handler would convert the webloc file into a txt file and then read from it and extract the relevant URL as string.
Does it help?
EDIT: I think I get what you meant. :rolleyes: at opening a webloc file, nothing to do it opens in the Web browser! Gosh! Just an idea: what about creating a sorta hot folder with a script attached to it “on adding folder items to this_folder after receiving added_items” and process of the files without any open event?
on adding folder items to this_folder after receiving added_items
repeat with an_item in added_items
set a to info for an_item
set c to name extension of a
display dialog (c as string)
return
end repeat
end adding folder items to
This script saved as a Folder Action Script and attached to a folder works like a charm here. So back to the OP’s needs, one could probably reach the initial aim. HTH.