Was the addlistener problem fixed for the pyjamas-desktop with your recent commits? Are you able to run examples from pyajamas-desktop using giwebkit?
I was able to run examples/helloworld sarvi-mac:helloworld sarvi$ ../../lpython/bin/python HelloWorld.py But the KitchenSink still fails for the addlistener sarvi-mac:kitchensink sarvi$ ../../lpython/bin/python KitchenSink.py INFO:pyjs.runners:conf: [('runner', 'giwebkit'), ('home', '/Users/sarvi/.pyjd'), ('is_desktop', True), ('native_dnd', True), ('engine', 'giwebkit')] init None True INFO:pyjs.runners.giwebkit:uri: [('scheme', 'file'), ('user', None), ('password', None), ('host', ''), ('port', 0L), ('path', '/Users/sarvi/Workspace/pyjs/examples/kitchensink/public/KitchenSink.html'), ('query', None), ('fragment', None)] DEBUG:pyjs.runners.giwebkit:sub-frame: <WebFrame object at 0x149894b40 (WebKitWebFrame at 0x7fcc2a023c40)> Traceback (most recent call last): File "/Users/sarvi/Workspace/pyjs/pyjs/runners/giwebkit.py", line 608, in _frame_loaded_cb __pyjamas__.set_main_frame(self) File "/Users/sarvi/Workspace/pyjs/pyjswidgets/__pyjamas__.py", line 38, in set_main_frame DOM.init() File "/Users/sarvi/Workspace/pyjs/pyjswidgets/pyjamas/DOM.py", line 83, in init mf._addWindowEventListener("click", browser_event_cb) File "/Users/sarvi/Workspace/pyjs/pyjs/runners/giwebkit.py", line 692, in addWindowEventListener self._wnd.add_event_listener(event_name, listener, False, None) File "/Users/sarvi/Workspace/pyjs/pyjs/runners/giwebkit.py", line 410, in __call__ return self.getattr(inst, key) File "/Users/sarvi/Workspace/pyjs/pyjs/runners/giwebkit.py", line 421, in getattr inst.__class__.__name__, key)) AttributeError: 'DOMDOMWindow' object has no attribute 'add_event_listener' On Thursday, October 17, 2013 2:16:24 PM UTC-7, C Anthony Risinger wrote: > > On Thu, Oct 17, 2013 at 2:28 PM, C Anthony Risinger > <ant...@xtfx.me<javascript:> > > wrote: > >> On Thu, Oct 17, 2013 at 1:53 PM, Sarvi Shanmugham >> <sarv...@gmail.com<javascript:> >> > wrote: >> >>> I added a return to the begining of the addWindowListener function and >>> it skipped that error >>> and hit another similar to the last one >>> >>> I made a couple of more fixes. I got the error below >>> init <pyjs.runners.giwebkit.RunnerContext object at 0x10a0699d0> True >>> Traceback (most recent call last): >>> File "KitchenSink.py", line 117, in <module> >>> pyjd.setup("public/KitchenSink.html") >>> File "/Users/sarvi/Workspace/pyjs/pyjs/runners/__init__.py", line 68, >>> in setup >>> listener() >>> File "/Users/sarvi/Workspace/pyjs/pyjswidgets/pyjamas/History.py", >>> line 109, in init >>> hash = wnd().location.hash >>> File "/Users/sarvi/Workspace/pyjs/pyjs/runners/giwebkit.py", line 408, >>> in __call__ >>> return self.getattr(inst, key) >>> File "/Users/sarvi/Workspace/pyjs/pyjs/runners/giwebkit.py", line 413, >>> in getattr >>> attr = impl(inst, key) >>> File "/Users/sarvi/Workspace/pyjs/pyjs/runners/giwebkit.py", line 423, >>> in getattr_gi >>> if inst.get_data(key) is None: >>> File >>> "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/gi/overrides/GObject.py", >>> >>> line 590, in _unsupported_data_method >>> raise RuntimeError('Data access methods are unsupported. ' >>> RuntimeError: Data access methods are unsupported. Use normal Python >>> attributes instead >>> >>> And made a change to hasattr() along the same lines as your suggestion >>> above. >>> >>> Then I got the following >>> File "/Users/sarvi/Workspace/pyjs/pyjs/runners/giwebkit.py", line 438, >>> in getattr_w3 >>> attr = self._custom[key].bind(key) >>> File "/Users/sarvi/Workspace/pyjs/pyjs/runners/giwebkit.py", line 360, >>> in bind >>> return types.MethodType(cls(key), None, owner) >>> File "/Users/sarvi/Workspace/pyjs/pyjs/runners/giwebkit.py", line 328, >>> in __init__ >>> Soup.URI.new() >>> TypeError: new() takes exactly 1 argument (0 given) >>> >>> I just changed that to take Scoup.URI.new('http://www.google.com') >>> >>> and then I hit this >>> File "/Users/sarvi/Workspace/pyjs/pyjs/runners/giwebkit.py", line 438, >>> in getattr_w3 >>> attr = self._custom[key].bind(key) >>> File "/Users/sarvi/Workspace/pyjs/pyjs/runners/giwebkit.py", line 360, >>> in bind >>> return types.MethodType(cls(key), None, owner) >>> File "/Users/sarvi/Workspace/pyjs/pyjs/runners/giwebkit.py", line 332, >>> in __init__ >>> doc = app._doc >>> NameError: global name 'app' is not defined >>> >>> When I was looking through, I am not sure I understand how this code has >>> been working so far, coz "app" is not >>> defined gloablly. >>> >>> What am I missing. >>> I could wait for you to finish up the addEventListener, but I suspect >>> thats not gonna address any of this. >>> So let me know if it is helpful for me to pursue this. >>> >> >> so i was looking into this... and i have absolutely no idea what changed, >> webkit or gobject-introspection, but AFAICT... add_event_listener is NOW >> SUPPORTED OUT OF THE BOX. >> >> i'm going to spend a few minutes on this so i'll ping when done... go >> ahead and stand by until then, i'll let you know once it runs on my machine. >> > > ok, some success... > > the goog news is add_event_listener REALLY does work, the problem is the > handler doesn't recieve any args. i know what the problem is, and i'm > pretty sure there is a solution using PyGI's overrides system, but i'll > have to look at that later... FTW, i somewhat described the issue last > year, here: > > https://bugs.webkit.org/show_bug.cgi?id=77835#c16 > > ...it relates to the fact that a GCallback (before casting) doesn't > receive any args, therefore PyGI doesn't send any. > > RE: the `app` issue, honestly i don't know how that worked before... more > than likely i changed the global from app -> context at the last second and > never tested it before committing, but i promise you, this thing worked at > one point :) > > so, even though event handling is busted, and will cause a segfault, you > should be able to do this: > > # cd examples/kitchensink/ > # ../../bin/pyjd KitchenSink.py > > ...and see the example in all it's glory. you must be in the proper > directory else it won't find the template HTML file. mousing over the > window will lead to a segfault until i figure out how to tell PyGI which > args to expect for a handler... i know it can be done by modifying the > annotation in the source (as i demonstrated in the link above), but > obviously we don't want to do that because then you have to recompile > webkit for a very stupid reason. > > i may have time tonight to look into this, otherwise i'l have to punt > until the weekend, but feel free to explore until then! this is probably > the final hurdle to a fully out-of-the-box solution for Linux (and > apparently MacOS!) > > -- > > C Anthony > -- --- You received this message because you are subscribed to the Google Groups "Pyjs.org Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to pyjs-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.