IronPython Learnings

Recently I started developing Windows Desktop Applications in IronPython – a Python language port for Windows.NET. I blogged about the application already here.

In the post, I’m sharing what I learnt in the process with a hope that it will be helpful to someone else.

Visual Studio as ipy development environment

You can download IronPython and start to develop using your favorite text editor. However having a Visual Studio environment helps. I used these instructions to setup Visual Studio for IronPython development. Fundamentally it involves:

  • Download and install ironpython
  • Download and install Visual Studio SDK
  • Run IronPython Integration Sample from ‘C:\Program Files\Visual Studio 2005 SDK\2007.02\VisualStudioIntegration\Samples\IronPythonIntegration’
Designing Windows Forms

With Visual Studio Integration, designing of Windows Forms is a simple drag and drop operation. Of course code generated by VS may not be as elegant as some Python purists like; but it works well.

Calling unmanaged code from IronPython

If you are into IronPython, you’ll definitely come across VoidSpace, who has a huge collection of IronPython articles.

I needed to query the active window for my application. VoidSpace discusses a solution in his pages. Better to name the namespace as a ‘UnmanagedCode’ as VoidSpace discusses in the solution. I named it as the name of the application and that created a lot of trouble and was difficult to troubleshoot.

Logging in IronPython

IPY doesn’t include standard python libraries (at least as of 1.1). So I used a NSpring .NET logging library.

(I found out that any .NET library can be used with IronPython. I did same with SQLite Library and SourceGrid, a grid library for .NET)

Finding time difference

One can find the time difference between two time variable (=System.DateTime.Now) using

timeSpent = currentEndTime.Subtract(currentStartTime)

If you want to know the differences in seconds then use

timeSpentinSec = timeSpent.TotalSeconds.ToString()

timeSpent.Seconds() will provide only the seconds part of the timespan. TotalSeconds() provide the time difference in seconds.

Don’t forget to stop timer

I used Timer() to poll activewindow on a regular interval. However, I forgot to stop that assuming that once the form is closed all instances will be cleared. Apparently not and so the application stayed in memory even after exit. Lesson learnt: stop all threads before exiting the application.

This entry was posted in Programming and tagged . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>