2010-03-04 13 views
10

मैंने अपने पालतू ओपन सोर्स प्रोजेक्ट RevitPythonShell (बिल्डिंग मॉडलिंग सॉफ्टवेयर ऑटोडस्क रेविट आर्किटेक्चर 2010 के लिए एक प्लगइन) में स्पष्ट पथ की कोशिश की है: code.interact()STDIN और STDOUT के लिए .NET स्ट्रीम का उपयोग करने के लिए स्थापित आयरनपीथन इंजन के साथ। ये मैं फिर TextBox नियंत्रण पर रीडायरेक्ट करता हूं। यह थोड़े काम करता है, लेकिन वास्तव में केवल एक बदसूरत हैक है।एक आवेदन में एक ग्राफिकल इंटरैक्टिव IronPython खोल कैसे एम्बेड करें?

मुख्य समस्या सभी शैल सामग्री को काम करने के लिए मिल रही है: इतिहास, संपादन, प्रतिलिपि & पेस्ट, ईओएफ, सिंटैक्स हाइलाइटिंग, टूल टिप्स इत्यादि के लिए ऊपर-तीर और नीचे तीर यह प्राप्त करने में बहुत अधिक काम करता है यह सही है, और यह वास्तव में समस्या नहीं है जिसे मैं हल करने की कोशिश कर रहा हूं (मैं रेविट में होस्ट किया गया एक इंटरैक्टिव खोल प्राप्त करने की कोशिश कर रहा हूं, सही शेल जीयूआई नहीं बना सकता)।

अगर यह .NET प्रोजेक्ट नहीं था, तो शायद मैं PyCrust/PyWrap का पुन: उपयोग करने में देखता हूं, लेकिन मुझे यकीन नहीं है कि यह WinForms प्रोजेक्ट से किया जा सकता है या नहीं। क्या .NET के लिए कुछ भी समान है?

क्या किसी ने कभी IConsole इंटरफेस को कार्यान्वित किया है और मुझे एक उदाहरण दिखा सकता है कि मुझे क्या करना होगा? ऐसा लगता है कि यह जाने का उचित मार्ग होगा (code मॉड्यूल का उपयोग करने के विपरीत), लेकिन मेरे जीवन के लिए मैं इसे समझ नहीं सकता। IronPython स्रोत कोड में कोई टिप्पणी नहीं है।

अद्यतन: कुछ सामानों को आजमाने के बाद, मैं अंततः शानदार IronLab कोड पर बस गया। इसमें वाक्यविन्यास हाइलाइटिंग और सभी के साथ एक उदाहरण खोल शामिल है। कोड एकीकृत और एकीकृत करने में आसान था। इसे एम्बेड करने के तरीके पर संकेतों पर RevitPythonShell कोड देखें।

+1

नहीं वास्तव में एक अच्छा डिब्बाबंद समाधान ... इसलिए मैं यह एक टिप्पणी के रूप में छोड़ देंगे। आप SharDDevelop IDE प्रोजेक्ट में मैट वार्ड के पायथन कंसोल.cs स्रोत को देख सकते हैं। SharpDevelop \ src \ AddIns \ BackendBindings \ Python \ Python बाइंडिंग \ Project \ Src में देखें। इस कक्षा को तोड़ने के लिए यह एक बड़ी समस्या हो सकती है ताकि यह (और ICSharpCode.TextEditor) अन्य परियोजनाओं में उपयोग किया जा सके। लेकिन शायद यह आपको थोड़ा सा मदद करेगा। अपने बिल्ड सर्वर से शार्प डेवलपमेंट स्रोत डाउनलोड करें: 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 पर संपादित करें] तय टूटी हुई यूआरएल

+0

सही, मैं वास्तव में एक साल पहले इस पर स्थानांतरित हो गया था, लेकिन मेरे प्रश्न को अपडेट करना भूल गया। बाकी दुनिया के लिए इसे दस्तावेज करने के लिए धन्यवाद। IronLab परियोजना से IronPythonConsole एक मणि है! आप RevitPythonShell प्रोजेक्ट में अपनी परियोजना में इसे एम्बेड करने का एक उदाहरण देख सकते हैं। –

+0

यह लिंक दुर्भाग्य से मर चुका है। – canton7

+0

यूआरएल बदल दिया। – Samuel

3

ठीक है, तो मेरे पास दो संभावित उत्तर हैं। ऊपर टिप्पणी में एक .... और एक अन्य बहुत आसान (कोई IntelliSense, कोई वाक्य रचना हाइलाइटिंग):

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

यह JoeSox से है, और यह IronPython 2, नहीं 2.6 के लिए है। हालांकि मैं लगभग पांच मिनट में 2.6 के साथ ठीक से काम करने के लिए इसे अद्यतन करने में सक्षम था। यदि आप रुचि रखते हैं तो मैं आपको एक diff फ़ाइल भेजने या कहीं भी अपडेट की गई परियोजना को थप्पड़ मारने का तरीका समझ सकता हूं (इसे एमआईटी लाइसेंस के तहत प्रकाशित किया गया था)।

आनंद लें!

डेविड

+0

मीठा :) बस मैं क्या देख रहा था! जब मैं इसे चलाता हूं तो यहां वापस रिपोर्ट करूंगा! –

+0

आप RevitPythonShell (http: //revitpythonshell.googlecode) के स्रोत को देख सकते हैं।कॉम) IronTextBox2 नियंत्रण को एकीकृत करने के बारे में एक विचार के लिए ... –

संबंधित मुद्दे