this looks like a job for... tomorrow!

A Little Strip of Progress

One of my personal goals for the next release of Mono is to fix many of the issues in MenuStrip, ToolStrip, and StatusStrip that manifest themselves in our port of Paint.Net 2.72. Paint.Net has been a godsend for the Winforms team, as it's over 100,000 lines of open-source C# Winforms code. It has helped us find countless bugs in our implementation, as well as some affirmation that we must have plenty of things right if we can run it decently well.

The main menu and tool bar were already in pretty good condition, as they exercise common use cases that I had worked on before. The only noticeable issue was that we were not querying Windows for the a couple of system colors, resulting in an ugly gray color scheme instead of the nicer, uh, beige?

(Click on images to enlarge.)

The tool box took a little bit more work. For ToolStrips, there are five different layouts you can choose. The only one I had implemented was HorizontalStackWithOverflow. The tool box needed Flow, so I had to modify the FlowLayout engine to layout ToolStrips as well. The result is pretty good. I think the two missing buttons are due to something missing in the port.


Finally, the StatusStrip has it's own layout type: SpringTableLayout. That had to be implemented as well as making sure that ToolStripControlHosts properly hid their hosted controls when they weren't visible. (The rectangle in Mono 1.2.3 is a hidden ProgressBar.)


Obviously, there are still several remaining issues that need to be cleaned up, but I'm quite proud of the progress so far.

6 comments:

Stuart said...

Congrats - great work!

Kenneth Rohde Christiansen said...

Where can we get hold of the port?

jpobst said...

The port is available in Mono's SVN at svn+ssh://mono-cvs.ximian.com/extras/trunk/pdn272/trunk. However, I don't think it gets mirrored to the anonymous SVN.

It's still in bad enough shape that it's not very reliable, and I think it's been abandoned in favor of porting 3.0, but no one has started it. In my local copy, I have all the functionality turned off as I'm really only interested in getting the menus and toolbars to work. :/

Jeffrey Stedfast said...

Wow, amazing job

jacksonh said...

How come we are missing two of the tools in the toolwindow example?

Annerose said...

These comments have been invaluable to me as is this whole site. I thank you for your comment.