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: [EMAIL PROTECTED] [mailto:users-
[EMAIL PROTECTED] 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
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com