Hi,

I try to script me app using the JSTalk framework. My app i written in cocoa. I works nice with Javascript and if I use python from within my app with "PyRun_SimpleString" but if I use python over the DO connection I get problems.

What the JSTalk framework does is it establishes a connection between two app (or one app and a python interpreter) over Distributed Objects.

In the script I get a reference to my NSApplication delegate and can use all its properties and function. But if I add some objects to my documents it works only as long as the script runs. It is a problem with the proxy objects. As long as the script runs, the proxy is working and the pyObjC bridge routes the method calls correctly.

I resolved this with copying the object in my accessors but then the reference to the object in the script becomes invalid (and I need an extra copy)

Does anybody has an idea what to do?
Can I somehow make python to return the actual cocoa object rather than the proxy?

Many Thanks
Georg


excerpt of my python code:

[..]

def application(appName):
appPath = NSWorkspace.sharedWorkspace().fullPathForApplication_(appName);
        
        appBundle = NSBundle.bundleWithPath_(appPath)
        bundleId  = appBundle.bundleIdentifier()
        
        [..]

        port = bundleId + ".JSTalk"
        
        conn = None
        tries = 0
        
        while ((conn is None) and (tries < 10)):
                conn = NSConnection.connectionWithRegisteredName_host_(port, 
None)
                tries = tries + 1;
                
                if (not conn):
                        time.sleep(1)
        
        if (not conn):
                print("Could not find a JSTalk connection to " + appName)
                return None
        
        return conn.rootProxy()

glyphs = application("Glyphs") # the reference to my App delegate

node = glyphs.node() # I need the method return a new instance as I am not in the scope of my app and python does not know of my classes.

[..]

path.addNode_(node)

_______________________________________________
Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
http://mail.python.org/mailman/listinfo/pythonmac-sig

Reply via email to