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.