Как встроить графическую интерактивную оболочку IronPython в приложение?

я пробовал очевидный путь в своем Проект с открытым исходным кодом для домашних животных RevitPythonShell (плагин для программного обеспечения для моделирования зданий Autodesk Revit Architecture 2010): code.interact () с механизмом IronPython, настроенным на использование потоков .NET для ] STDIN и STDOUT . Затем я перенаправляю их на элемент управления TextBox . Это вроде работает, но на самом деле это всего лишь уродливый взлом.

Основная проблема - заставить работать все компоненты оболочки: стрелки вверх и вниз для истории, редактирование, копирование и вставка, EOF, подсветка синтаксиса, подсказки для инструментов. и т.п. Требуется много работы, чтобы понять это правильно , и это не та проблема, которую я пытаюсь решить (я пытаюсь получить интерактивную оболочку, размещенную в Revit, а не сделать идеальный графический интерфейс оболочки) ).

Если бы это был не проект .NET, я бы, вероятно, рассмотрел возможность повторного использования PyCrust / PyWrap , но я не уверен, что это можно сделать из проекта WinForms. Есть ли что-нибудь похожее для .NET?

Кто-нибудь когда-либо реализовывал интерфейс IConsole и может показать пример того, что мне нужно сделать? Кажется, что это был бы правильный путь (в отличие от использования модуля code ), но я не могу понять это на протяжении всей жизни. Исходный код IronPython не имеет никаких комментариев.

ОБНОВЛЕНИЕ: После того, как мы попробовали что-то, В конце концов я остановился на превосходном коде IronLab . Он включает в себя пример оболочки с подсветкой синтаксиса и все. Код был приятным и легко интегрируемым. Проверьте код RevitPythonShell на подсказки о том, как его встраивать.

10
задан Daren Thomas 30 May 2012 в 07:32
поделиться

1 ответ

Хорошо, тогда у меня есть два возможных ответа. Один в комментарии выше .... и другой намного проще (без интеллекта, без подсветки синтаксиса):

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

Это от JoeSox, и это для IronPython 2, а не для 2.6. Однако я смог обновить его до версии 2.6 примерно за пять минут. Если вам интересно, я могу найти способ отправить вам файл сравнения или куда-нибудь добавить обновленный проект (он был опубликован под лицензией MIT).

Наслаждайтесь!

Дэвид

3
ответ дан 4 December 2019 в 01:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: