On 6/2/12 9:24 PM, Michael O'Donnell wrote:
Kevin,

   Seems we are not understanding each other. When a user
double clicks on a document associated to the app, the app
is launched. With argv emulation, I could read sys.argv to find
which document was clicked on.

With openDocument events, the double clicking on a document
opens the application. The openDocument event is consumed
(but at this point, there is only dummy code for this). Then my
code is executed, overwriting the openDocument event handler.

So, with this approach, there is no way to retrieve WHICH document
was clicked on to open the application.

Mick


Mick,

(ccing back to the list as well)

This brute-force method works for me--I double-click a "ctpx" file and the test app launches and then displays a messagebox with the name of the launched file:

----
import sys
import time
from Tkinter import *
import tkMessageBox

def doOpenFile(*args):
    for arg in args:
tkMessageBox._show(message=str(arg), type="ok", icon=tkMessageBox.WARNING)

tk = Tk()
fr=Frame(tk, height=400, width=400, bg="red")
fr.pack()
time.sleep(2)
tk.createcommand("::tk::mac::OpenDocument", doOpenFile)
for idx, value in enumerate(sys.argv):
    print idx, value
doOpenFile(sys.argv[1])
tk.mainloop()
----

I'm not sure if this works because you set argv_emulation in py2app's options, since I don't structure my apps this way, and obviously the hard command of "doOpenFile(sys.argv[1])" needs to be wrapped in some sort of try statement to guard against the app being launched without a file argument, but clearly what you want to do can be done. The opendoc event is still useful for dragging the file to the app icon in the Dock, regardless.

--Kevin

--
Kevin Walzer
Code by Kevin
http://www.codebykevin.com
_______________________________________________
Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
http://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG

Reply via email to