New MonoDevelop is out!

by Miguel de Icaza

Lluis has finally put the finishing touches on the latest incarnation of MonoDevelop.

This release is feature packed: Stetic now has toolbar, menu and action editors for Gtk# applications:


The Menu Designer, showing stock-icons. Clicking on "Click to create an action" will enter a new row.


The toolbar designer, here it show how to select a stock-icon for the toolbar.

This GUI designer is based around the Gtk Action model, so all menu entries and toolbar commands are linked to the same action. So you actually hook up events to the actions, not to the individual items, which is useful to keep consistency in your application.

The stock icons are not limited to the ones that ship with Gtk+, you can define your own that you can later reference, this is how:

When designing your dialog boxes, a context-sensitive toolbar is activated depending on the widget selected, so the most common operations are available right in the design surface without having to hunt them down on a property list:


Here you can see the options available for a label: alignment of the text,
and the vertical and horizontal filling and expanding properties.

Michael's Summer of Code ASP.NET GUI designer is now part of MonoDevelop, here it is in all of its glory:


The palette on the right shows the properties for the selected control, the "OK" button.

The ASP.NET designer is built on top of Mozilla, so a lot of the work is in the interaction between the embedded Mozilla engine and the MonoDevelop host.

Code completion has been vastly improved, it now supports Generics and will also display a tooltip with the help associated with a method when you select it.

Finally, when you hover over the source code, you can get documentation for a particular method:

MonoDevelop will now also generate the auto-tools infrastructure for your project (thanks to Scott!), to ease the deployment of your applications. And is able to produce tarballs directly from the IDE:

It will generate the standard auto-* stuff, but it will also install a .pc pkg-config file for your libraries, so third party projects can "reference" your library easily.

Solutions and Widget Libraries

My favorite feature is that your solution can include not only your main project, but also other libraries, like a widget library.

In this screenshot I have created a library that contains a custom control "MyControl" which is part of the "MyWidgets" project. The "MyWidgets" project then gets added (Go to References, Edit) to the main project, and this new widget becomes available for consumption in the main program.

You can also incorporate any other libraries and widgets, and they will show up in the palette just like MyControl show up on the right here:

My Wish-list

Internationalization: I personally would like to see something like Rafael's internationalization plugin to be integrated in MonoDevelop so you could also manage internationalization in the IDE.

And there is plenty that can be done in this area, for translations we could poke web services that expose all known translation strings for a project and incorporate translations into a program. We could also have a service that translates with Google Translate and help people translate their project and keep track of progress.

Web Services: There is a web service consumer add-in that was developed by Gideon (his current code lives in http://code.google.com/p/md-addins/ that provides a similar experience to Visual Studio for creating and consuming web services.

Deployment: it would be great if someone wrote a deployment target that submits the tarball to the OpenSUSE build service.

The OpenSUSE build service will take a piece of source code and produce packages for Fedora Core, Ubuntu, SUSE and others, so we could have MonoDevelop directly generate packages for all distributions from within the IDE.

An XML Editor: it would be nice if someone wrote an XML editor that could use some RelaxNG or XmlSchema rules to provide intellisense for various file formats and provide a good XML editing experience.

IronPython Integration: IronPython has a number of features to support IDEs, and it would be lovely if we could get these things supported into MonoDevelop, in the same spirit that the Boo support does today.

More

There is much more in the Release Notes where I liberally took screenshots from.

The IDE today has support for various languages: Boo, Nemerle, Visual Basic, C#, Java and ILasm.

Lluis and his team have done a fantastic job on MonoDevelop. The demo that Lluis did in Guadec this year was truly mind blowing, I hope we have some form of screencast soon for people to witness the great integration on this IDE.

Posted on 06 Sep 2006