ho provato il percorso evidente nel mio animaletto progetto open source RevitPythonShell (un plugin per la costruzione software di modellazione Autodesk Revit Architecture 2010): code.interact()
con il motore di IronPython impostato per l'uso di .NET flussi per STDIN
e STDOUT
. Questi poi reindirizzare a un controllo . Funziona un po ', ma in realtà è solo un brutto scherzo.Come incorporare una shell grafica IronPython interattiva in un'applicazione?
Il problema principale è ottenere tutto il materiale shell per lavorare: Up-freccia e freccia giù per la storia, la modifica, copia & pasta, EOF, evidenziazione della sintassi, i suggerimenti ecc Ci vuole un sacco di lavoro per arrivare questo diritto, e non è proprio il problema che sto cercando di risolvere (sto cercando di ottenere una shell interattiva ospitata in Revit, non la perfetta GUI della shell).
Se questo non fosse un progetto .NET, probabilmente mi piacerebbe riutilizzare PyCrust/PyWrap, ma non sono sicuro che ciò possa essere fatto da un progetto WinForms. C'è qualcosa di simile per .NET?
Qualcuno ha mai implementato l'interfaccia IConsole
e può mostrare un esempio di cosa avrei bisogno di fare? Sembra che questa sarebbe la strada giusta da percorrere (al contrario di usare il modulo code
), ma per la vita di me non riesco a capirlo. Il codice sorgente IronPython non ha commenti di sorta.
UPDATE: Dopo aver provato alcune cose, alla fine ho optato per il superbo codice IronLab. Include una shell di esempio con l'evidenziazione della sintassi e tutto. Il codice era bello e facile da integrare. Controlla il codice RevitPythonShell sui suggerimenti su come incorporarlo.
Non proprio una bella soluzione in scatola ... quindi lascio come un commento. Si può guardare il sorgente PythonConsole.cs di Matt Ward nel progetto IDE SharpDevelop. Cerca in SharpDevelop \ src \ AddIns \ BackendBindings \ Python \ PythonBinding \ Project \ Src. Potrebbe essere un grosso problema interrompere questa lezione in modo che (e ICSharpCode.TextEditor) possa essere utilizzato in altri progetti. Ma forse ti aiuterà un po '. Scarica il sorgente SharpDevelop dal loro server di compilazione: http://build.sharpdevelop.net/BuildArtefacts o usa svn a: svn: //svnmirror.sharpdevelop.net/sharpdevelop/branches/3.0/SharpDevelop – djlawler
non essere timido;) questa è un'ottima risposta a sé stante: ne darò un'occhiata non appena avrò l'occasione di farlo! –