2010-03-04 2 views
10

STDINSTDOUT에 .NET 스트림을 사용하도록 IronPython 엔진이 설정된 code.interact() (빌딩 모델링 소프트웨어 Autodesk Revit Architecture 2010 용 플러그인)의 애완 동물 오픈 소스 프로젝트 RevitPythonShell에서 명백한 경로를 시도했습니다. 그런 다음 TextBox 컨트롤로 리디렉션합니다. 다소 효과가 있지만 실제로는 못생긴 해킹 일뿐입니다. 가장 큰 문제는 일을 모든 쉘 물건을 받고있다그래픽 대화 형 IronPython 셸을 응용 프로그램에 포함시키는 방법은 무엇입니까?

: 화살표 위쪽 및 아래쪽 화살표 역사, 편집은, 그것은 얻기 위해 많은 작업을 필요 등 & 붙여 넣기, EOF, 구문 강조, 도구 팁 복사 이 오른쪽, 그리고 정말 내가 해결하려고 노력하고있어 문제가되지 않습니다 (나는 대화 형 쉘을 Revit에서 호스트하려고합니다. 완전한 쉘 GUI를 만들지 않습니다).

이 프로젝트가 .NET 프로젝트가 아니면 PyCrust/PyWrap을 재사용 할 수 있지만 WinForms 프로젝트에서 수행 할 수 있는지 확실하지 않습니다. .NET과 비슷한 것이 있습니까?

아무도 IConsole 인터페이스를 구현 한 적이 없으며 내가해야 할 일의 예를 보여줄 수 있습니까? 이것은 적절한 경로 (code 모듈을 사용하는 것과 반대되는)가 될 것으로 보이지만, 내 인생에서 나는 그것을 파악할 수 없습니다. IronPython 소스 코드에는 아무런 설명이 없습니다.

업데이트 : 일부 내용을 시험해 본 결과, 나는 결국 IronLab이라는 훌륭한 코드에 정착했습니다. 여기에는 구문 강조와 예제 셸이 포함됩니다. 코드는 훌륭하고 통합하기 쉽습니다. RevitPythonShell 코드를 임베드하는 방법에 대한 힌트를 확인하십시오.

+1

정말 좋은 통조림 솔루션이 아니므로 ... 댓글로 남겨 두겠습니다. SharpDevelop IDE 프로젝트에서 Matt Ward의 PythonConsole.cs 소스를 볼 수 있습니다. SharpDevelop \ src \ AddIns \ BackendBindings \ Python \ PythonBinding \ Project \ Src에서 찾으십시오. 이 클래스를 분리하여 다른 프로젝트에서 사용할 수 있도록 (그리고 ICSharpCode.TextEditor) 큰 문제가 될 수 있습니다. 그러나 아마도 그것은 당신을 조금 도와 줄 것입니다. 빌드 서버에서 SharpDevelop 소스를 다운로드하십시오 : http://build.sharpdevelop.net/BuildArtefacts 또는에서 svn 사용 : svn : //svnmirror.sharpdevelop.net/sharpdevelop/branches/3.0/SharpDevelop – djlawler

+0

부끄러워하지 마십시오;) 이것은 아주 좋은 답변입니다. 그렇게 할 수있게되면 곧 살펴볼 것입니다. –

답변

7

나는 비슷한 일을 찾고 있었고, 난이 IronLab 프로젝트는 좋은 IronPython의 콘솔 포함되어 있음을 발견했다. 소스 코드는 여기 https://github.com/rwg0/ironlab/tree/master/IronPythonConsole에서 찾을 수 있습니다.

[편집 됨 25/10/2016] 고정 된 깨진 URL

+0

맞습니다. 실제로 1 년 전에이 작업으로 이동했지만 내 질문을 업데이트하는 것을 잊었습니다. 나머지 세계를 위해 문서화 해 주셔서 감사합니다. IronLab 프로젝트의 IronPythonConsole은 보석입니다! RevitPythonShell 프로젝트에서 자신의 프로젝트에 임베드하는 예제를 볼 수 있습니다. –

+0

이 링크는 불행히도 죽었습니다. – canton7

+0

URL이 변경되었습니다. – Samuel

3

좋아요, 그렇다면 두 가지 가능한 답변이 있습니다. 위의 의견에 하나 .... 다른 훨씬 간단 (아무 IntelliSense를, 아니 구문 강조) :

http://www.codeproject.com/KB/edit/irontextbox2.aspx

그것은 JoeSox에 의해, 그리고 그것을하지 2.6 IronPython의 2입니다. 그러나 나는 약 5 분 안에 2.6으로 제대로 작동하도록 업데이트 할 수있었습니다. 관심이 있으시면 diff 파일을 보내거나 업데이트 된 프로젝트를 어딘가에 보낼 수있는 방법을 찾아 낼 수 있습니다 (MIT 라이센스하에 게시되었습니다).

즐기십시오!

데이비드

+0

sweet :) 내가 뭘 찾고 있었는지! 내가 달릴 때 여기로 돌아올거야! –

+0

에서 RevitPythonShell의 소스를 볼 수 있습니다 (http : //revitpythonshell.googlecode.com) IronTextBox2 컨트롤을 통합하는 방법에 대한 아이디어를 얻으려면 ... –

관련 문제