[IronPython] Python in the Browser updates
Michael Foord
fuzzyman at voidspace.org.uk
Wed Jun 18 12:01:23 CEST 2008
Jimmy Schementi wrote:
> Michael, question for you:
>
>
>> On every keypress Javascript calls into IronPython (via the C#!).
>>
>
> How come you used C# to handle the onkeypress event? This should do it in Python:
>
>
Did you look at the code to see why? I'd be really interested to know if
I can do what I'm doing from Python inside Silverlight, but I doubt it.
There's not much code in total, so it should be easy to follow.
I actually handle the onkeypress event from Javascript (onkeypress.js).
This calls into 'getSelection' (cursor_pos.js) to work out the current
selection in the textarea. Naturally this is easy to do in Firefox /
Safari and scarily awful in IE. :-)
Having worked these out (and shortcut a few specific scenarios - like
ctrl-A, ctrl-Z and ctrl-C), the Javascript then calls into IronPython
with the selection start, selection end, and the character that was
pressed. I use C# to expose a scriptable type that Javascript can call.
I use attaching events from Python to provide the sample code. There are
three links above the console and Python handles the 'onclick' event to
swap the examples around.
Michael Foord
> <textarea id="code"></textarea>
> <div id="result"></div>
>
> from System import EventHandler
> from System.Windows.Browser import Htmlpage, HtmlEventArgs
>
> document = System.Windows.Browser.HtmlPage.Document
> def onkeypress(s, e):
> document.result.innerHTML += "KeyPress<br />"
> document.code.AttachEvent("onkeypress", EventHandler[HtmlEventArgs](onkeypress))
>
> Anyway, just wondering if anything was blocking you from hooking HTML events with Python.
>
> ~js
>
>
>> -----Original Message-----
>> From: users-bounces at lists.ironpython.com [mailto:users-
>> bounces at lists.ironpython.com] On Behalf Of Michael Foord
>> Sent: Tuesday, June 17, 2008 2:52 PM
>> To: Discussion of IronPython
>> Subject: Re: [IronPython] Python in the Browser updates
>>
>> Hello all,
>>
>> Sorry for the noise - but tomorrow I hope to package this for a release
>> and if any of you get the chance to give me any feedback before then.
>>
>> http://www.voidspace.org.uk/ironpython/silverlight-console/console.html
>>
>> I think I have fixed all the basic usability issues (it is no longer
>> possible to screw up the console so that it refuses further input for
>> example). To *really* fix input I ought to move execution into its own
>> thread so that we can interrupt infinite loops [1] - but that is a
>> bigger change so I am resisting it for the moment.
>>
>> The big change is that I have added some simple code snippets - as an
>> example of how it could be used in tutorials or for teaching Python.
>>
>> It is also easy to customize - the source code (200 lines of Python, 70
>> lines of Javascript, 25 lines of C#) shows how to prepopulate the
>> execution context and show the first few lines of code in the
>> interpreter.
>>
>> You can get the sourcecode from the repository of course:
>>
>> http://code.google.com/p/pythoninthebrowser/
>>
>> All the best,
>>
>> Michael Foord
>>
>> [1] and then decide whether on windows a ctrl-c should send a keyboard
>> interrupt or copy to the clipboard...
>>
>> Michael Foord wrote:
>>
>>> For those who are interested, I've updated "Python in the Browser".
>>>
>>> Both the repository:
>>>
>>> http://code.google.com/p/pythoninthebrowser/
>>>
>>> And the online demo:
>>>
>>> http://www.voidspace.org.uk/ironpython/silverlight-
>>>
>> console/console.html
>>
>>> There are a few minor but nice improvements:
>>>
>>> * The Javascript now works with IE 7!
>>> * The textarea scrolls as input is printed
>>> * The context window is disabled to prevent you pasting over the
>>>
>> input
>>
>>> area - not sure if this is really an improvement though...
>>> * The input area is cleared on load - to stop browsers like Firefox
>>> and Safari repopulating the textarea for us on browser refresh
>>> * Recursion limit is set
>>>
>>> I think it is basically in a useful state now... I might push out a
>>> '0.1' release from the current SVN head.
>>>
>>> All the best,
>>>
>>> Michael Foord
>>>
>>>
>> --
>> http://www.ironpythoninaction.com/
>> http://www.theotherdelia.co.uk/
>> http://www.voidspace.org.uk/
>> http://www.ironpython.info/
>> http://www.resolverhacks.net/
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.ironpython.com
>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>
>
>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
More information about the Ironpython-users
mailing list