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.