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 
> <[email protected]<javascript:>
> > wrote:
>
>> On Thu, Oct 17, 2013 at 1:53 PM, Sarvi Shanmugham 
>> <[email protected]<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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to