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: [EMAIL PROTECTED] [mailto:users- > [EMAIL PROTECTED] 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 <[EMAIL PROTECTED] > > <mailto:[EMAIL PROTECTED]>>: > > > > 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 > > [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
