Hi Freddie, Actually you can write the script in a .py file and have IronPythonConsole run it for you. You can code the script in any text editor [or code editor] you want and save it as .py [actually its not mandatory to save as .py any extension will do] then, in the command line, type in IronPythonConsole your-file.py and it will run it for you. You can actually split your code into multiple files and use 'import' to include the code. For Forms Designer, you could use Visual C# to generate the 'controls layout' code for you, then copy and paste it in the .py file, restructure a little and remove the semi-colons and news and extra class names and it will work. I actually started thinking about a C# to python code converter for the 'controls layout' code generated by the Windows Forms designer because its very boring and tedious to do manual conversions [which generally involve deletions :-)]. I actually did the above using SharpDevelop's Form Designer. [http://icsharpcode.net/OpenSource/SD/Default.aspx]. Hope it helps. -- Richard Hsu. [Note. it would be really nice to tie together MyXaml + SharpDevelop + IronPython. Ideas anyone ?] Date: Wed, 06 Jul 2005 21:22:00 +0000 From: "Freddie Witherden" <[EMAIL PROTECTED]> Subject: RE: [IronPython] Making A Windows Form App To: users-ironpython.com@lists.ironpython.com Message-ID: <[EMAIL PROTECTED]> Content-Type: text/plain; format=flowedNamespaces are the biggest problem, LoadAssemblyByName and importing modules are always a paint for me. The 'editor' or command line tool is also a bit annoying as you can not copy or paste text from/to it which makes it harder to work with, but when I had a poke about with MSIL Disassembler I found: IronPythonConsole.FancyConsole, is this some kind of more advanced console, as I often make a lot of small programs in IronPython to test things about and something like a nicer IDE would be great, it is not like Jython where I can get a book so better documentation would go a long way.From: Martin Maly <[EMAIL PROTECTED]> Reply-To: Discussion of IronPython <users-ironpython.com@lists.ironpython.com> To: "Discussion of IronPython" <users-ironpython.com@lists.ironpython.com> Subject: RE: [IronPython] Making A Windows Form App Date: Wed, 6 Jul 2005 13:13:17 -0700 MIME-Version: 1.0 Received: from moutng.kundenserver.de ([212.227.126.183]) by mc2-f39.hotmail.com with Microsoft SMTPSVC(6.0.3790.211); Wed, 6 Jul 2005 13:13:30 -0700 Received: from [66.33.206.23] (helo=frida.dreamhost.com)by mxeu13.kundenserver.de with ESMTP (Nemesis),id 0MKsEO-1DqGGy2JMq-0008HJ for [EMAIL PROTECTED]; Wed, 06 Jul 2005 22:13:32 +0200 Received: from che.dreamhost.com (che.dreamhost.com [66.33.216.23])by frida.dreamhost.com (Postfix) with ESMTPid 487F516D644; Wed, 6 Jul 2005 13:13:31 -0700 (PDT) Received: from che.dreamhost.com (localhost [127.0.0.1])by che.dreamhost.com (Postfix) with ESMTPid 8C59D1BA82; Wed, 6 Jul 2005 13:13:28 -0700 (PDT) Received: from mail1.exchange.microsoft.com (mail1.exchange.microsoft.com[131.107.76.156])by che.dreamhost.com (Postfix) with ESMTP id CD58D1BA81for <users-ironpython.com@lists.ironpython.com>;Wed, 6 Jul 2005 13:13:23 -0700 (PDT) Received: from DF-GWY-01.Exchange.Corp.Microsoft.com ([157.54.54.62]) bymail1.exchange.microsoft.com over TLS secured channel withMicrosoft SMTPSVC(6.0.3790.1830); Wed, 6 Jul 2005 13:11:39 -0700 Received: from df-hub-01.exchange.corp.microsoft.com (157.54.8.109) byDF-GWY-01.Exchange.Corp.microsoft.com (157.54.54.62) with MicrosoftSMTP Server id 8.0.324.11; Wed, 6 Jul 2005 20:11:38 +0000 Received: from df-hub-01.exchange.corp.microsoft.com ([157.54.8.109]) bydf-hub-01.exchange.corp.microsoft.com with MicrosoftSMTPSVC(6.0.3790.1830); Wed, 6 Jul 2005 13:11:38 -0700 Received: from DF-BANDIT-BHD.Exchange.Microsoft.com ([157.54.54.229]) bydf-hub-01.exchange.corp.microsoft.com over TLS secured channel withMicrosoft SMTPSVC(6.0.3790.1830); Wed, 6 Jul 2005 13:11:37 -0700 X-Message-Info: JGTYoYF78jHWL9MmXrcWU2adrcEMNnu1M4xRlrPMp/U= Delivered-To: [EMAIL PROTECTED] Content-Class: urn:content-classes:message X-MimeOLE: Produced By Microsoft Exchange V6.5.7226.0 X-OriginalArrivalTime: 06 Jul 2005 20:11:37.0569 (UTC)FILETIME=[EA18B510:01C58266] X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [IronPython] Making A Windows Form App Thread-Index: AcWCZWV8ChLmjDVBQuSUEVbp1jOpZQAARvlA X-BeenThere: users-ironpython.com@lists.ironpython.com X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of IronPython <users-ironpython.com.lists.ironpython.com> List-Unsubscribe: <http://lists.ironpython.com/listinfo.cgi/users-ironpython.com>,<mailto:[EMAIL PROTECTED]> List-Archive: <http://listserver.dreamhost.com/pipermail/users-ironpython.com> List-Post: <mailto:users-ironpython.com@lists.ironpython.com> List-Help: <mailto:[EMAIL PROTECTED]> List-Subscribe: <http://lists.ironpython.com/listinfo.cgi/users-ironpython.com>,<mailto:[EMAIL PROTECTED]> Errors-To: [EMAIL PROTECTED] Return-Path: [EMAIL PROTECTED] Hi Freddie, Below is the working code. I would be interested to hear what you had most problems with. Common difficulty is the LoadAssemblyByName function. Feel free to post feedback to this discussion alias. We are interested to hear what roadblocks developers encounter as they try to use IronPython. Martin import sys sys.LoadAssemblyByName("System.Drawing") sys.LoadAssemblyByName("System.Windows.Forms") import System>from System.Drawing import Point >from System.Windows.Forms import Form, Button, Applicationdef on_click(*args): Application.Exit() frm = Form(Text = "Hello World") btn = Button(Text = "Goodbye", Location = Point(50,50)) btn.Click += on_click frm.Controls.Add(btn) Application.Run(frm)Freddie Witherden Wrote: Hi, I am trying to convert a very simple C# windows form test that I made into IronPython (to see that it can be done). However I have tried over 20 different ways with no luck. Can anyone help me? There is very very little documentation on IronPython, which I think needs to be addressed. The code is: using System; using System.Drawing; using System.Windows.Forms; namespace WinForms { public class HelloWorld : System.Windows.Forms.Form { private Button btn; public HelloWorld() { Text = "Hello World"; btn = new Button(); btn.Location = new Point(50,50); btn.Text = "Goodbye"; btn.Click += new System.EventHandler(btn_Click); Controls.Add(btn); } static void Main() { Application.Run(new HelloWorld()); } private void btn_Click(object sender, EventArgs e) { Application.Exit(); } } }_______________________________________________ users-ironpython.com mailing list users-ironpython.com@lists.ironpython.com http://lists.ironpython.com/listinfo.cgi/users-ironpython.com------------------------------ Message: 2 Date: Thu, 07 Jul 2005 18:47:39 +0000 From: "Freddie Witherden" <[EMAIL PROTECTED]> Subject: RE: [IronPython] Making A Windows Form App To: users-ironpython.com@lists.ironpython.com Message-ID: <[EMAIL PROTECTED]> Content-Type: text/plain; format=flowed .net is a lot like Java, and we can be quite sure that many moons ago the JPython team (as it was then known) had the same problem with Java modules, and probably had a long and heated debate about it so I think we should do it 'the Jython way' as there have never been any problems with it and lots of people use Jython so it must work.From: Jim Hugunin <[EMAIL PROTECTED]> Reply-To: Discussion of IronPython <users-ironpython.com@lists.ironpython.com> To: "Discussion of IronPython" <users-ironpython.com@lists.ironpython.com> Subject: RE: [IronPython] Making A Windows Form App Date: Wed, 6 Jul 2005 17:23:55 -0700 MIME-Version: 1.0 Received: from moutng.kundenserver.de ([212.227.126.171]) by mc4-f18.hotmail.com with Microsoft SMTPSVC(6.0.3790.211); Wed, 6 Jul 2005 17:24:13 -0700 Received: from [66.33.206.23] (helo=frida.dreamhost.com)by mxeu11.kundenserver.de with ESMTP (Nemesis),id 0MKuA8-1DqKBQ3a3n-0005pt for [EMAIL PROTECTED]; Thu, 07 Jul 2005 02:24:04 +0200 Received: from che.dreamhost.com (che.dreamhost.com [66.33.216.23])by frida.dreamhost.com (Postfix) with ESMTPid 880F316D56B; Wed, 6 Jul 2005 17:24:03 -0700 (PDT) Received: from che.dreamhost.com (localhost [127.0.0.1])by che.dreamhost.com (Postfix) with ESMTPid 4D3FB1BA82; Wed, 6 Jul 2005 17:23:59 -0700 (PDT) Received: from mail1.exchange.microsoft.com (mail1.exchange.microsoft.com[131.107.76.156])by che.dreamhost.com (Postfix) with ESMTP id F39541BA63for <users-ironpython.com@lists.ironpython.com>;Wed, 6 Jul 2005 17:23:56 -0700 (PDT) Received: from DF-GWY-01.Exchange.Corp.Microsoft.com ([157.54.54.62]) bymail1.exchange.microsoft.com over TLS secured channel withMicrosoft SMTPSVC(6.0.3790.1830); Wed, 6 Jul 2005 17:22:12 -0700 Received: from df-hub-01.exchange.corp.microsoft.com (157.54.8.109) byDF-GWY-01.Exchange.Corp.microsoft.com (157.54.54.62) with MicrosoftSMTP Server id 8.0.324.11; Thu, 7 Jul 2005 00:22:12 +0000 Received: from df-hub-01.exchange.corp.microsoft.com ([157.54.8.109]) bydf-hub-01.exchange.corp.microsoft.com with MicrosoftSMTPSVC(6.0.3790.1830); Wed, 6 Jul 2005 17:22:12 -0700 Received: from DF-BANDIT-BHD.Exchange.Microsoft.com ([157.54.54.229]) bydf-hub-01.exchange.corp.microsoft.com over TLS secured channel withMicrosoft SMTPSVC(6.0.3790.1830); Wed, 6 Jul 2005 17:22:12 -0700 X-Message-Info: JGTYoYF78jFojgLyvLebIfsbiobYIaFJ60Vutv4BY8A= Delivered-To: [EMAIL PROTECTED] Content-Class: urn:content-classes:message X-MimeOLE: Produced By Microsoft Exchange V6.5.7226.0 X-OriginalArrivalTime: 07 Jul 2005 00:22:12.0177 (UTC)FILETIME=[EB6BD410:01C58289] X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [IronPython] Making A Windows Form App Thread-Index: AcWCZWV8ChLmjDVBQuSUEVbp1jOpZQAARvlAAADzv3MAB2xg0A== X-BeenThere: users-ironpython.com@lists.ironpython.com X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of IronPython <users-ironpython.com.lists.ironpython.com> List-Unsubscribe: <http://lists.ironpython.com/listinfo.cgi/users-ironpython.com>,<mailto:[EMAIL PROTECTED]> List-Archive: <http://listserver.dreamhost.com/pipermail/users-ironpython.com> List-Post: <mailto:users-ironpython.com@lists.ironpython.com> List-Help: <mailto:[EMAIL PROTECTED]> List-Subscribe: <http://lists.ironpython.com/listinfo.cgi/users-ironpython.com>,<mailto:[EMAIL PROTECTED]> Errors-To: [EMAIL PROTECTED] Return-Path: [EMAIL PROTECTED] We clearly need a better design than the current sys.LoadAssembly* methods. For one thing, we shouldn't really be adding these to the existing sys module but putting new methods like this in a new IronPython module. As you point out, we should also do a better job of making this as invisible to the user as possible. In IronPython-0.6, a much larger number of assemblies were automatically searched for - including the two shown below. This meant that this particular program could run without any of this nonsense. The problem here was that this just delayed the issue of people learning about this issue and made things even more confusing when they wanted to use an assembly that wasn't in the known list. I decided that at this stage it was better to raise this issue front-and-center so that people would be aware of it and hopefully get quickly familiar with it. The other reason I wanted to make this more explicit was in the hopes that it would spur discussion about better ways of solving the problem. I'm certain that sys.LoadAssembly* is not what will ship with IronPython-1.0. Here are a few possible options in no particular order. 1. Guess the assembly based on the path, i.e. import System.Drawing will try to load "System.Drawing". This would be great if it was a naming convention that was consistently followed, but alas it is a rule that is so consistently broken I'm doubtful of the benefits. 2. Add a config file to specific a large set of default known assemblies and have the user extend this with their own. This ties scripts and config files together in a deeper way than I'd prefer. 3. Extend import, i.e. import System.Drawing from System.Drawing. Of course, the most obvious ways to do this are a change to the Python language. 4. Search some well-known directories to come up with a list of known assemblies and their types and then load assemblies strictly as needed for imports. This would add many seconds to start-up time unless this information is cached and caches are their own source of trouble. FYI - This is closest to what Jython does. 5. I'm sure there are other good ideas out there... There's a whole separate question as to whether or not any loading by partial name is too dangerous even as explicit as it is today, see here: http://blogs.msdn.com/suzcook/archive/2003/05/30/57159.aspx Thanks - Jim ________________________________________ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] On Behalf Of Keith J. Farmer Sent: Wednesday, July 06, 2005 1:36 PM To: Discussion of IronPython Subject: RE: [IronPython] Making A Windows Form App Out of curiosity, would it be possible to get IronPython to make a best-guess attempt at automatically loading an appropriate assembly, if it discovers that it doesn't know the namespace? This could alleviate the problems people have with remembering sys.LoadAssemblyByName. ________________________________________ From: [EMAIL PROTECTED] on behalf of Martin Maly Sent: Wed 7/6/2005 1:13 PM import sys sys.LoadAssemblyByName("System.Drawing") sys.LoadAssemblyByName("System.Windows.Forms") _______________________________________________ users-ironpython.com mailing list users-ironpython.com@lists.ironpython.com http://lists.ironpython.com/listinfo.cgi/users-ironpython.com------------------------------ Message: 3 Date: Mon, 11 Jul 2005 15:52:08 -0700 From: Martin Maly <[EMAIL PROTECTED]> Subject: RE: [IronPython] Documentation To: "Discussion of IronPython" <users-ironpython.com@lists.ironpython.com> Message-ID: <[EMAIL PROTECTED]> Content-Type: text/plain; charset="us-ascii" As of this moment there is no official documentation project under way except for the readme that is part of the distribution. The readme gives few examples and covers LoadAssemblyByName. Overall, the documentation story as of now is not a very good one and we need to improve it. As for IronPython and WinForms, I have been successful finding all answers to my WinForms related problems in MSDN documentation. Granted, the documentation shows examples with VB and C#, but the class hierarchy and general information how to use WinForms does apply to IronPython very well. Hope this helps. Martin-----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] On Behalf Of Freddie Witherden Sent: Friday, July 01, 2005 7:57 AM To: users-ironpython.com@lists.ironpython.com Subject: [IronPython] Documentation Hi, I would like to know if there is currently any form of documentation project running for IronPython. As, while I am very fond of it there are a few things that do need to be documented, eg import sys sys.LoadAssemblyByName() As LoadAssemblyByName is not a standard method of the sys object. It would be nice to have some information on windows forms which are also a 'special' feature of IronPython.------------------------------ Message: 4 Date: Mon, 11 Jul 2005 15:54:02 -0700 From: Martin Maly <[EMAIL PROTECTED]> Subject: RE: [IronPython] Making A Windows Form App To: "Discussion of IronPython" <users-ironpython.com@lists.ironpython.com> Message-ID: <[EMAIL PROTECTED]> Content-Type: text/plain; charset="us-ascii" The command line tool that comes with IronPython runs in the standard Windows console. You can set up the console to allow copy'n' paste. To do that: left click on the icon on the upper-left corner of the console window select "Defaults" Check "Quick edit mode" Restart the IronPython. Then you can use mouse to select area on the console. Right click (or Enter) will copy to clipboard and another right click of the mouse will insert the text as a console input. I find this very useful when using the IronPython console. Martin-----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] On Behalf Of Freddie Witherden Sent: Wednesday, July 06, 2005 2:22 PM To: users-ironpython.com@lists.ironpython.com Subject: RE: [IronPython] Making A Windows Form App Namespaces are the biggest problem, LoadAssemblyByName and importing modules are always a paint for me. The 'editor' or command line tool is also a bit annoying as you can not copy or paste text from/to it which makes it harder to work with, but when I had a poke about with MSIL Disassembler I found: IronPythonConsole.FancyConsole, is this some kind of more advanced console, as I often make a lot of small programs in IronPython to test things about and something like a nicer IDE would be great, it is not like Jython where I can get a book so better documentation would go a long way.------------------------------ Message: 5 Date: Mon, 11 Jul 2005 16:10:03 -0700 From: Martin Maly <[EMAIL PROTECTED]> Subject: RE: [IronPython] Embedding. To: "Discussion of IronPython" <users-ironpython.com@lists.ironpython.com> Message-ID: <[EMAIL PROTECTED]> Content-Type: text/plain; charset="us-ascii" Sorry for the delay in responding, Alan. For the simplest scenarios you don't need to initialize PythonEngine. For example, consider: class Program { static void Main(string[] args) { PythonEngine e = new PythonEngine(); object r = e.Evaluate("2+2"); //r == 4 } } For the more complicated cases, initialization is often necessary (for example to execute scripts that import modules and need sys.path initialized etc. You can refer to PythonCommandLine.cs to see how the IronPythonConsole initializes the PythonEngine. Essentially, we set up things 1) The sys.path variable (via PythonEngine.AddToPath method) 2) further setup of sys module (via PythonEngine.InitializeModules method) - this sets up sys.version, sys.prefix, sys.executable and sys.exec_prefix attributes 3) import site.py (via PythonEngine.ImportSite method) The interactive initialization is slightly different, but essentially this is all that is needed to get IronPython engine initialized. Hope this helps. Let me know if other questions arise. MartinAlan Kennedy Wrote: Greetings all, I've worked a lot with jython in the past, and have often made use of it by embedding it in java servers. I'd like to try the same thing with Ironpython. Is there any documentation on how to go about this? I'm specifically interested in writing ironpython "servlets", i.e. servicing web requests with ironpython code. Under jython, the interpreter has to be initialised before scripts can be executed. Is a similar initialisation necessary under ironpython? Thanks in advance, Regards, Alan.------------------------------ _______________________________________________ users-ironpython.com mailing list users-ironpython.com@lists.ironpython.com http://lists.ironpython.com/listinfo.cgi/users-ironpython.com End of users-ironpython.com Digest, Vol 12, Issue 9 *************************************************** |
_______________________________________________ users-ironpython.com mailing list users-ironpython.com@lists.ironpython.com http://lists.ironpython.com/listinfo.cgi/users-ironpython.com