2010-03-04 43 views
10

我已經嘗試了我的寵物開源項目RevitPythonShell(建築建模軟件Autodesk Revit Architecture 2010的插件)中的明顯路徑:code.interact(),IronPython引擎設置爲使用.NET流STDINSTDOUT。這些我然後重定向到一個TextBox控件。它有點不錯,但真的只是一個醜陋的黑客。如何在應用程序中嵌入圖形交互式IronPython shell?

主要問題是讓所有shell的東西工作:上箭頭和下箭頭的歷史,編輯,複製&粘貼,EOF,語法突出顯示,工具提示等需要很多工作才能獲得這個權利,它不是真正的問題,我試圖解決(我試圖獲得一個交互式外殼託管在Revit中,而不是完美的外殼GUI)。

如果這不是一個.NET項目,我可能會考慮重用PyCrust/PyWrap,但我不確定這是否可以從WinForms項目中完成。有什麼類似的.NET?

有沒有人實現過IConsole接口,並且可以顯示我需要做什麼的例子?看起來這將是正確的路線(而不是使用code模塊),但對於我的生活,我無法弄清楚。 IronPython源代碼沒有任何評論。

更新:在嘗試了一些東西后,我最終決定了極好的IronLab代碼。它包括一個帶有語法高亮顯示的示例shell以及全部。代碼很好,易於集成。檢查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 2010-03-04 11:46:45

+0

不要害羞;)這本身就是一個非常好的答案 - 只要我這樣做,我會盡快查看它! – 2010-03-04 13:25:36

回答

7

我一直在尋找類似的事情,我發現IronLab項目包含一個很好的IronPython的控制檯。源代碼可以在這裏找到https://github.com/rwg0/ironlab/tree/master/IronPythonConsole

[修改於25/10/2016]修復破損的網址

+0

正確的,我實際上移動到大約一年前,但忘記更新我的問題。感謝您爲世界其他地方記錄它。 IronLab項目的IronPythonConsole是一顆寶石!您可以在RevitPythonShell項目中看到將其嵌入到自己項目中的示例。 – 2012-03-22 07:33:38

+0

不幸的是,此鏈接已死亡。 – canton7 2016-10-21 16:12:43

+0

更改了網址。 – Samuel 2016-10-25 09:05:41

3

好的,那麼我有兩個可能的答案。一個在上面的評論....和另一個更簡單(沒有智能感知,無語法高亮):

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

這是由JoeSox,並且它是IronPython的2,並不2.6。但是,我能夠在大約五分鐘內將其更新爲2.6版,並且能夠正常工作。如果您有興趣,我可以找出一種方法向您發送差異文件或者在某處(更新項目是在MIT許可下發布的)發佈更新的項目。

享受!

大衛

+0

甜蜜:)只是我在找什麼!將在我運行時報告回來! – 2010-03-05 07:56:16

+0

您可以查看RevitPythonShell的源代碼(http://revitpythonshell.googlecode。com)的想法如何整合這IronTextBox2控制... – 2011-05-05 12:03:29

相關問題