Unfortunately there's currently no way to switch this from Python code.

What we need to do is expose something in IronPythonConsole.exe which lets you 
set PythonCommandLine.MyConsole (currently you can't do this because 
PythonCommandLine is private).  If you made PythonCommandLine public you could 
do clr.AddReference('IronPythonConsole.exe') and then from IronPythonConsole  
import PythonCommandLine, IConsole.  Finally you can implement your own console:

class MyConsole(IConsole):
        def ReadLine(autoIndentSize): pass
        def Write(text, style): pass
        def WriteLine(text, style): pass


and then call PythonCommandLine.MyConsole = MyConsole()

and those methods will override the interface implementation (or in other words 
- it's quite easy to deal with overriding methods :) ).

That's the hacky way to get to where you can start experimenting with this.  We 
probably need to come up w/ a better long-term way to do this.  This is an 
unfortunate side effect of the runtime & console being so separated - the 
runtime doesn't know anything about the console, and the console can't use the 
runtime's stdin because it needs to be able to deal w/ input such as arrow keys.

I don't know that we could do anything here before 1.0, but I'll open a 
CodePlex bug for improving console <-> runtime interop.


-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Jörgen Stenarson
Sent: Thursday, June 29, 2006 12:14 PM
To: Discussion of IronPython
Subject: Re: [IronPython] ironpython alternative to PyOS_ReadlineFunctionPointer

Dino,
I've been sucessful in locating ReadLineFromSrc but not IConsole (from the 
IronPythonConsole). However ReadLineFromSrc is a read only attribute in the 
IronPython.Runtime.Operations.Ops module. Ideally I would like to do something 
like this:

import IronPython

def my_readline():
     txt=System.Console.ReadLine()
     return txt

IronPython.readline=my_readline

But I guess it could be difficult if what I want to override a method in a 
class instance written in C#. Am I right? Could this be changed in that case?

/Jörgen



Dino Viehland skrev:
> Ops.ReadLineFromSrc will be called if for example someone calls raw_input() 
> from Python (one way to read from the user).  IConsole.ReadLine gets called 
> when we're reading input from the console for some code you're typing in.
>
> I think ideally these would be using the same underlying implementation but 
> do to the extra things our fancy console does they're rather divergent today. 
>  For readline I suspect you'll want to be updating IConsole.ReadLine instead.
>
> Also it'd be great if you could keep us updated when you get something 
> working.  One of our PMs has wanted good history support, and I think Bruce 
> (who implemented socket as part of his internship this summer) might prefer 
> readline's key bindings :).
>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Jörgen
> Stenarson
> Sent: Wednesday, June 28, 2006 2:21 PM
> To: Discussion of IronPython
> Subject: Re: [IronPython] ironpython alternative to
> PyOS_ReadlineFunctionPointer
>
> Thanks for the response, I will have to investigate this further.
>
> Just to clarify, what I want to do is replace the function that is called by 
> the ironpython interpreter to read a line of text from the user.
>
> /Jörgen
>
> Dino Viehland skrev:
>> Is IronPython.Runtime.Operations.Ops.ReadLineFromSrc what you're looking 
>> for?  This allows you to read a line of input from std-in.
>>
>> I'm not familiar w/ CPython's internal interfaces so I'm not sure if that's 
>> right or not...  The other option is that this is the functionality that 
>> lives in the console, and you want IConsole.ReadLine.
>>
>> Currently these two are rather disconnected.
>>
>> -----Original Message-----
>> From: [EMAIL PROTECTED]
>> [mailto:[EMAIL PROTECTED] On Behalf Of Jörgen
>> Stenarson
>> Sent: Wednesday, June 28, 2006 11:44 AM
>> To: Discussion of IronPython
>> Subject: [IronPython] ironpython alternative to
>> PyOS_ReadlineFunctionPointer
>>
>> Hi,
>>
>> I'm working on a python based implementation of readline (pyreadline 
>> available from 
>> http://projects.scipy.org/ipython/ipython/wiki/PyReadline/Intro). I'm 
>> experimenting with adding support for ironpython, I have been successful in 
>> porting some of the ctypes based routines used for keyboard event processing 
>> to ironpython using System.Console. It has been quite painless so far.
>>
>> But to take this further I need to know the ironpython equivalent to 
>> PyOS_ReadlineFunctionPointer in cpython and how to use it. Is this 
>> functionality exposed and if not do you plan to expose it?
>>
>> Best regards,
>> Jörgen Stenarson
>>
>> _______________________________________________
>> users mailing list
>> users@lists.ironpython.com
>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>> _______________________________________________
>> users mailing list
>> users@lists.ironpython.com
>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>
>
> _______________________________________________
> users mailing list
> users@lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> _______________________________________________
> users mailing list
> users@lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>

_______________________________________________
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
_______________________________________________
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to