Development Machine Updated, and IDE(s) restarted..

It’s been a while, and Life <-> DIY <-> Work <-> Foss had ratio problems.

The DIY still needs to be done,

Work pays for the mortgage (just)

Foss went to sleep

and it felt like life was get-up, work, come home, eat, sleep – repeat

Well the Daylight hours (Minutes currently) are getting longer, and that means things a re starting to dry out, and Foss gets a little look-in.

Elucidate:

Has had a few long standing issues corrected, and a few features added.

Liquesce:

Is undergoing a revamp into .net 4.5.1, new CBFS, and new performance measurements –> improvements.

Amalgam, has bee parked as Eldos’s version is pretty good.

WinAFred is private still, and trackers seems to have been hijacked by stale hangers-on in the Codeplex (I want to be a developer email) domain”” Winking smile

Advertisements

Winforms Wizard Tracker

Using the previously mentioned ProgressTracker control, I have now combined the MBG.SimpleWizard dll into a generic control that allows UserControl pages to be added. Which will then auto populate (And hence progress) the Tracker as a single entity.

By using the UserControl separation, means that each of the page logic is contained in a single class.

So here is a picture of the test App:

WizardTracker

It is showing that progress has got to what is called “Page2b”, and it’s style has a border (The other pages did not) and it has a few Winform objects on it that are responding to mouse over.

The node name is derived from the Pages name, and the initialisation (or override) is all done in the parent form that hosts the Wizard tracker.

The base control will be added to the Elucidate project to become the Repair control wizard.

A C# Winforms Guided Tracker.

I’ve been looking for an implementation of a “Guided Tracker” that can be used easily within a winform wizard.
These things are also called progress indicators, and are often mistaken for breadcrumb controls. for a good guide and a look at what these can be done inside html / JavaScript, then look here : Tracker in Web Design

After seeing some nice ones done in WPF, I wanted to be able to use them via WPF hosting. This seemed to cause more problems than is solved. So I have done my own. It’s not polished yet, bit it allows me to get on with the wizard.

ProgressIndicator

This can be found here as part of the Elucidate project.

I tried to make the drawing as much a one time thing as possible (i.e. not perform on every OnPaint), and to get the existing Label control to do all the hard work of text placement and image display.

Elucidate is in a feature request phase

It hasn’t been long since it went stable, so now is a good time to start to add features to the code base to make it more useful. The first of these to come to fruition is the Coverage display:

– Add view of protection to the settings page.
– Add click to toggle between GBytes and Percentage.
– Add a new tab for the coverage display with the breakout titles of the sources and include the Parity areas as well.
– Fix the Unsaved Changes warning when loading a populated settings page.
– Replace default left image in the installer

This is achieved via the charting control from within .Net 4 and does a pretty good job.

If you have a feature that you would like to see implemented, then go to Elucidate and vote or create some new ones.

PropertyGrid – NumericUpDown Range Editor

OK, that probably sounds like complete rubbish for a title, but I had to get the gist of it out there.

This set of classes that allows a .Net PropertyGrid (Written in C# but should be convertible into other .Net CLR’s) to have a field that is driven by a the NumericUpDown toolbox Form type (Not WPF).

It also allows direct edit, of the field and will then do range validation (and correction) of the value entered.
And, will work with any number that will go into a PropertyGrid, i.e. not limited to the UpDown decimal type.

Here’s an example of how the attributes can be added to an existing PropertyGrid field (in bold):

[

DescriptionAttribute("0 is automatic, use 1 for problem finding scenario’s.\rRange 0 <-> 32"),
DisplayName("Thread Count"), CategoryAttribute("Dokan"
)]
[
TypeConverter(typeof(NumericUpDownTypeConverter))]
[
Editor(typeof(NumericUpDownTypeEditor), typeof(UITypeEditor)), MinMaxAttribute
(0, 32)]
public ushort ThreadCount { get; set; }

This shows the TypeConverter to allow direct editing.
The UITypeEditor to show the NumericUpDown control.
And, the new attribute to set the range MinMaxAttribute

The MinMaxAttribute can also take a step and increment values (They default to 1 if not specified).

The classes are currently here:

http://liquesce.codeplex.com/SourceControl/changeset/view/75980#1725747

 

Credit to the following sources:

http://social.msdn.microsoft.com/Forums/da-DK/netfxbcl/thread/370ce9d3-fc44-4cdc-9c76-dd913c9b572f

http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/afcd4dd5-5538-433b-8cac-78c081ee16b6

http://social.msdn.microsoft.com/Forums/en/winforms/thread/b9325e61-767b-43c8-96a2-e0caef2cecad

 

Elucidate is undergoing a “Compatibility update for SnapRAID V1.7”

As SnapRAID moves forward, it is getting some new options, and the original Elucidate also had a few minor issues that needed to be ironed out.

The issues and requests have all been stored in the Elucidate project over at codeplex, and now I am getting close to a “Stable” release candidate. The big thing left is either to workaround a documented issue with the Scheduling component that I have “borrowed”, or wait for its original author to help me out with the issue (As he cannot recreate it).

Go to the following location to find out about Elucidates status and see what other things have been added to this version. –> Elucidate

Liquesce and file security…

It’s been a frustrating few evenings (well 5 actually !) trying to sort out what was being done in Windows 7 x64 with the GetFileSecurity API and then what Explorer was showing me.

It turns out there are issues with how Dokan and Explorer treat each other, and then it’s all different when the same files are being accessed over a share to those same locations:

 

1) ACL’s not on NTFS drives

This caught me out, because the source format type, can be anything that windows recognises, then the API’s still have to work as if they have ACL (Because that is what Liquesce states as being supported). Now, this means that if the source type is anything other than a type that does not have ACL, then explorer (And other apps) do not know this.

Lets show you in some pictures, these are generated via the Liquesce Mount, but their underlying sources are different:

FAT32 (Kylie) NTFS (Test1)
FAT32 NTFS

So the files(directories) without ACL, are shown with a padlock padlock, and when going into the security tab of properties, you can see that “No permissions have been assigned etc."; and if you attempt to apply then it fails (Silly message box for every directory inside the parent).

The NTFS Test1 works as expected.

 

2) ACL access via a share

Explorer requests an additional ACL level when accessing files via a share = SACL_SECURITY_INFORMATION

This needs special permissions to retrieve and also access to certain levels of the OS API’s. Even running as a service and setting a manifest file with the permissions set to “highestAvailable”, the code that actually calls the GetFileSecurity API does not get the expected result. Sad smile

Returning access denied to explorer just stops it going any further, so that is not helpful. The (current) answer is to go and implement the workaround mentioned in http://code.google.com/p/dokan/issues/detail?id=209

So what’s next? Well Testing on all the supported platforms, and some additional text in the testing procedure Smile