My hobbyist coding updates and releases as the mysterious "Mr. Tines"

Monday, 30 July 2007

Not quite so pretty

After remarkably little work, it runs under Mono 1.2.4 and IPCE-r6. The main changes are that as Mono doesn't support System.Management (and the extra work wasn't useful for the icon related info), I fell back to Directory.GetLogicalDrives(), and had to do a bit of type tweaking (explicitly converting to Bitmap to draw the icons).

Everything else is non-visible : the lower left sector has been factored out into a separate class and modules have been rationalised, ahead of making a next step in functionality.

First drop for the curious and for back-up distribution. Now updated.

Sunday, 29 July 2007

You move 16 tons...

The gaps in the Win32 API support in .Net are random and frustrating. You can get all the drive letters (and the "DriveType" or "MediaType" properties which together give the offset into Shell32.dll for the drive icon), but short of unpicking the PE format by hand, Google gives no way to get the icons without using P/Invoke.

So with a combination of existing recipes for wrapping SHGetFileInfo in C#, and feeding it through Fuzzyman's dynamic compiler utility, I have some approximately script-like behaviour for icon extraction -- as can be seen from the left-hand dropdown in the screenshot.

I still need to add some extra hooks to use SHGetFileInfo to check if a file is executable or not, so I can get custom icons, and then refactor out a proper utility. And there's still more work on the generic directory pane widget before it'll be something stand-alone (sorted file list, hooking up events); though I hope that should not require any more exploting of exotic APIs to achieve.

Saturday, 28 July 2007

Sneak Peek

I've starting recoding my FTP client in IronPython, mainly as a self-teaching exercise (but hoping it might work in Mono/IPCE too). So far, this is the shell of the main UI, with a ribbon-style bar at the top.

The biggest piece of work is likely to be the Directory Pane component that Fox just gave to me on a plate.