Jimmy Schementi wrote:
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 =)
I probably will do...

Michael

~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

_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to