[IronPython] Python in the Browser updates

Jimmy Schementi Jimmy.Schementi at microsoft.com
Thu Jun 19 03:08:51 PDT 2008


My "Try IronRuby (in the browser)" toy console does doesn't users a 1-row textarea that expands as more rows are added. The previous console output isn't in the textarea, it's moved into a div above it. It's easy to hide everything's borders and set the margins/paddings right with CSS that the effect is transparent.

When I get my bits in the wild feel free to rip it off =)

~js

> -----Original Message-----
> From: users-bounces at lists.ironpython.com [mailto:users-
> bounces at lists.ironpython.com] On Behalf Of Michael Foord
> Sent: Thursday, June 19, 2008 2:05 AM
> To: Discussion of IronPython
> Subject: Re: [IronPython] Python in the Browser updates
>
> Hello all,
>
> Thanks Jonathan. The approach you suggest has several great advantages.
> The disadvantages are that you lose the ability to copy and paste (I
> think most browsers forbid you from manipulating the clipboard from
> Javascript unless the user has fiddled with some obscure settings).
>
> For the first release I'll stick with a textarea but I'll prototype
> your
> suggestion for the next release and see what I think.
>
> Michael Foord
>
> Jonathan Slenders wrote:
> >
> >
> > 2008/6/18 Michael Foord <fuzzyman at voidspace.org.uk
> > <mailto:fuzzyman at voidspace.org.uk>>:
> >
> >     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.
> >
> >
> >
> > I think Jimmy is right here. And the parts you did in javascript,
> > could also be done in Silverlight. Some suggestions how I would do
> this:
> > - instead of a text area, I'd use a html <div> , with CSS "overflow:
> > auto;" for the scrollbars.
> > - insert a <p> tag for each line into the <div>.
> > - capture the body.onkeypress events for input
> > - keep a textinput buffer in IronPython, but show the last line by
> > copying it on each keypress to the last <p>
> > - The cursor could be <span>, styled in CSS to show a pinking cursor.
> > - handle the left/right arrows to shift the cursor
> > - handle the up/down arrows to replace the last <p> with the second
> > last executed command
> > - on a "enter" press, process that line.
> > - when using a <div>, it's even very easy to do syntax highlighting
> on
> > the fly. Surround known keywords by a <span class="keyword"> and
> style
> > them.
> >
> > That shouldn't be too hard to do. But you should decide whether it's
> > necessary to have this all in IronPython. Probably, it's the cleanest
> > way to do it.
> >
> > Jonathan
> > ---------------------------------------------------------------------
> ---
> >
> > _______________________________________________
> > 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 Users mailing list