Some of the embellishments require not more than copying extra files, at least at this time. These files are copied as is, because they implement "brand-new" extensions to the uigen.exe-generated PhoneBook. Examples:

the Classes files PhoneNumberCell.cs, PickLocation.aspx*, etc.

extra images (icons, logo)

Other cases are not so easy to understand. Remember what happens in the life of SearchResultPhoneNumberControl.ascx, for example.

uigen.exe creates the SearchResultPhoneNumberControl.cs file from the SearchResultControl.cs template and the PhoneNumber class

The resulting SearchResultPhoneNumberControl.cs file is embellished by us to get rid of those DisplayName (i.e. <BocAllPropertiesPlaceHolderColumnDefinition /> is replaced by (<BocSimpleColumnDefinition /> s for each property)

Here is an illustration of this embellishment process:

Now let's say we modify the SearchResultControl.ascx template file so that it contains a blue dot in its top-left corner. AllSearchResultXControl.ascx files will sport this blue dot after step 1, and this includes our SearchResultPhoneNumberControl.ascx:

After modifying one or more templates and testing it by running uigen.exe we face a problem: now we have to re-embellish the entire PhoneBook web application. In our example case, we have TWO phone-book applications: an old embellished one (without the blue dot) and a new unembellished one with no blue dot:

However, what we want is merging the two, of course:

Doing this manually is BORING, but how can we automate it? Stefan had the idea of using SVN's merge mechanism, but this was not quite convincing for reasons that will become clear later in this document.

As for the automation, the simple copying ({files in Classes, icons) is done by the batch script embel.cmd.

The more tricky merging of files freshly generated from new templates with old embellished files is done by a python script named embel.py. embel.py transplants embellishments to unembellished PhoneBook files. Based on the example above, one could draw the illustration like this: