I have been busy refactoring the Registry Editor, converting it from hack to architecture. As I plan to release the source code for it, I want it to be well-structured and easily extensible (I don't think I'll do editors for all registry data types). Can't wait for VS.NET 2005 where refactoring will be built in, though you can easily get ReSharper today. Online resources aside, the Refactoring dead-tree edition from Fowler should sit on every developer's bookshelf.

To close this post, one more screenshot of the Registry Editor in action - the menu:

Got bitten once again with gratitious help of VS.NET 2003: how does tab order work on the Compact Framework? Based on the order in which controls are added to the Controls collection in InitializeComponent - and guess what, VS.NET does this in reverse order, or the Forms Designer, to be more precise. Details in the section "Tab Order and Focus" in here.

What is the behavior of a tree view control? Well, it lets you expand the tree - but what should it do when you reach a leaf node? Right,
switch to List View mode where you can view and edit the values.

This turned out to be unnecessarily complicated - because I painted myself into a corner, sort of with the help of Visual Studio .NET 2003. When I added an image list, upon load I'd run into an exception of MissingManifestResourceException.

One more step completed - a bare-bones string value editor (yes, for both editing existing and adding new string values):

Now, the bad news is that the OpenNETCF.org Smart Device Framework won't cut the mustard for the editing part - I will have to resort to P/Invoke for getting at the value data types correctly. I knew that P/Invoke would rear its ugly head rather sooner than later. Anyways, nice learning project.

In addition to the tree view as reported earlier, I now also got the list view up running:

Note that pretty icons ("UI candy") are missing (eg folder or value data type), but getting functionality done is more interesting at the moment. When switching from tree view to list view, I already switch to the very same registry path, missing is path preservation on the switch back from list view to tree view.

I promised that I would write some SmartPhone applications now that I have an SPV C500 Developer Edition, and today I got around to installing the SDKs - and immediately got started with my very first Compact Framework application, a full-blown registry editor (now how nerdy is that for your first application?). The tree view is already done as shown in the emulator screenshot below:

List View and then editing support is next. Not too bad a result for playing for less than an hour, now is it?

I think I can safely assume that everyone knows about SourceForge.net, where first-class .NET projects such as NUnit, NAnt, NProf as well as many others are hosted. Much less known is GForge, which is a fork that you can host yourself based on the GPL version of SourceForge before it was made closed-source by VA Linux in 2001.

Since that time GForge was improved, and it has reached version 4 just recently. To give you a really high-level idea of what it is, a short quote from the project page itself: GForge has tools to help your team collaborate, like message forums and mailing lists; tools to create and control access to Source Code Management repositories like CVS and Subversion. GForge automatically creates a repository and controls access to it depending on the role settings of the project.