One of the new features of .NET Framework 4.0 is the introduction of Client Profiles. The Client Profile is a cut down version of the full .NET Framework that only includes the essential assemblies needed for client based applications. The idea is to reduce the download/install size for this common deployment scenario. Design time classes are not part of the client profile because they are implicitly only needed for designing and not for running your applications.

At the moment Krypton cannot be used in this situation because the Krypton design time classes are placed inside the same assembly as the relevant controls. So the Krypton Toolkit design time classes are inside the Toolkit assembly, Krypton Ribbon design time classes inside the Ribbon assembly and so forth. But the design time assembly is not included in the client profile and so the Krypton assemblies will not be loadable.

To enable this scenario I have now created a new ComponentFactory.Krypton.Design assembly and moved all the design time classes into it. This means you can write a client profile application that references the Krypton Toolkit/Ribbon/Navigator/Workspace/Docking assemblies and it will work just fine because the Krypton assemblies no longer reference the System.Design namespace.

Note that client profiles are a feature exposed in Visual Studio 2010 and so you will only be aware of them if you have downloaded and played with that version.

In most regards I would say that Australia is a first world country. But when it comes to power cuts you might as well be in the middle of Somalia. I must get a blip in power supply every couple of weeks. Almost all power boards over here come with a built-in surge protector which tells you how reliable the power supply is considered. The last cut was the most annoying as it lasted for several hours. Even worse it was evening and so the house was completely dark. I had to read a book by candlelight!

After my throwback to the Victorian era I rebooted to discover my machine was now considered to be pirated. It would let you login but then it shows a blank desktop with a message saying that your copy of windows is not genuine. I can assure you that Krypton is developed on a fully legal copy of Windows. It only took 20 minutes to get the machine working again by moving to a previous restore point and no data was lost. So I recommend all developers in Australia have a nightly backup of all your important data and ensure you image the machine on a regular basis. Luckily I do both.

I think it is fair to say the initial response to the new website design was less than enthusiastic. To some extent this is because many people do not like change and the new site is definitely a significant change over the old site. Also I would agree with many of the comments about the font family and size not being very good.

So I have just finished updating the site so that most people viewing using Windows will see the “Segoe UI” font. This might seem an odd choice but remember I am selling components to Windows developers and so the vast majority are going to be viewing the site from a Windows machine with that font installed. It falls back to using Tahoma if you do not have that font installed.

Let me know what you think of the latest update. If you could split your comments between the main site, the blog area and the forums area that would be good. Maybe you like some areas but not the others?

I mentioned a few months ago that a new website design was in the process. Well finally the process is complete and the new site us up and live!

The actual content of the site is essentially unchanged at the moment. I intend to create new webcasts and new sets of images in the new few weeks as time allows. Let me know if you spot any teething problems such as broken links.

It seems I cannot get away without having button specs on the new columns. So I’ve added a ButtonSpecs collection to the column class of each of the following types…

  • DateTimePicker
  • MaskedTextBox
  • NumericUpDown
  • DomainUpDown
  • ComboBox

Here you can see a couple of example images…

To make life a little easier for the developer I have added a ButtonSpecClick event onto the columns that is fired whenever any button spec is clicked for any cell in that column. This event has parameters that made it easy to get hold of the column, cell and button spec instances involved in that click. Stops you needing to walk around the data structures finding your way from the button spec to the cell and then the column, which although not hard is certainly a pain to work out each time you need to do it.

Note that there are no button specs on the already defined Krypton columns  TextBox/CheckBox/Button/Link. This is because they work in a different way that makes it impractical to add them. All the new columns have an instance of an actual control that is used when editing the cell. So when you click on a numeric column it uses a KryptonNumericUpDown instance perform the drawing and editing. As the KryptonNumericUpDown already has support for button specs this makes it possible to add that capability by moving the button specs from the column collection into the control for the duration of editing. But the TextBox/CheckBox/Button/Link columns all perform drawing by using direct calls to the renderer and adding extra code to simulate the presence of buttons is not a pleasant thought.