GDC 2.20 migration guide

This section describes differences you may encounter when upgrading to GDC 2.20.

GDC is now compiled with Microsoft® Windows® Visual C++ 2008

As with any VC++ application, GDC needs VC Runtime files - basically DLLs Microsoft provides, the equivalent of the glibc on Linux®. The difference with GDC 2.1x is that Microsoft changed the way the runtime must be deployed. With VC 2003, it was possible to provide the DLLs with the application, but this was the cause of the DLL Hell. Now The runtime system must be installed on the system directly, using a VC Redist. Our installer will always embed the corresponding VCRedist and install it if needed. But, if you were used to simply copying the GDC directory, you have to be sure that the correct redist is installed - if not, GDC will not be able to start.

Qt4: GUI changes

GDC is based on Qt, a multi platform C++ library. While 2.1x versions (and earlier) are based on Qt3, GDC 2.20 is the first Qt4 based version. Qt4 was a complete rewriting, and in lots of area Qt4 applications are different from Qt3. We've spent a lot of time to minimize the differences, but GDC 2.20 will not be 100% identical to GDC 2.11:

  • Some changes are considered to be going in the right direction. For instance, the default font on Windows has changed, but this is to match Windows requirements.
  • In some cases, it was technically not possible (or had too high a cost) to work around a change

The behavior of your applications should be unaffected. What may change is the look and feel, and the rendering.

Default font has changed

In Qt3, there was a bug which made Qt3 based applications not use the Microsoft recommended font ; this bug has been fixed in Qt4, and now GDC uses the font recommended by Microsoft. More details:

You can still set the default font in the GDC configuration panel, if you don't want GDC to use the correct system font.

Better adaptation to system style

The first version of Qt3 was released in 2001, before Windows XP. The theme mechanism was not designed to make use of all the new features introduced by Windows Vista, macOS™ 10.4 or KDE4 (and even some items like Folder pages are very poorly supported on XP). Qt4 introduced a much better styling support, relying much more on the system theme - for instance on macOS (and some Linux themes) the spacing between items is not fixed and varies depending on the item types. We've adapted these changes to Genero, but for some of them we let Qt apply the system defaults. Windows: Items where the styling mechanism change has an impact:
  • Top Menu (and StartMenu as menu) - GDC 2.11 had a Windows 2000 like style for menus. GDC 2.2x is using XP/Vista/Seven style, which is more modern but takes more space.
  • Edit based fields now have a 3D effect, a rounded border, and the current fields shows a blue border.
  • Comboboxes now have a grey gradient that becomes blue when the mouse moves over it. The side effect is that, in a Display Array, comboboxes on the current rows are not highlighted. (The system theme does not allow changing the gradient color).

Image attributes are handled differently

GDC 2.20 slightly modifies the handling of images attributes, as there were some inconsistencies in 2.11. Here are the major rules :
  • It is important to differentiate the image and the image container (widget): when drawing your form, you're defining an image container. The image(s) that will be put in this container can be smaller or larger.
  • SIZEPOLICY and WIDTH-HEIGHT attributes define the size of the container, not the size of the image.
  • SIZEPOLICY is the priority attribute. It gives a directive for the size of the image container:
    • FIXED: exact size defined in the Form Specification File.
    • INITIAL: size is computed according to the content of the first display. Once done, the size is frozen. If the content is empty (no image), the container shrinks to its minimum size.
    • DYNAMIC: the width of the container grows and shrinks according to its content.
  • WIDTH and HEIGHT attributes define the size of the container, but they are dependant on the SIZEPOLICY. It means the image container may grow or shrink even if WIDTH and HEIGHT are specified. If you really want to have a container with a fixed size, you have to use WIDTH and HEIGHT in combination with SIZEPOLICY=FIXED.
  • AUTOSCALE allows the image to be scaled to the space of the image container. It's only useful if size of the image differs from the size of the container. It means there is no interest to use it with SIZEPOLICY=DYNAMIC, as the container always fits to the image size.
  • STRETCH allows to make the container grow or shrink (and the image as well) when the parent container (for instance the window) is resized. This attribute doesn't conflict with the others.
Examples
-- image size: 80*80 pixels
WIDTH=150 PIXELS, HEIGHT=150 PIXELS, SIZEPOLICY=INITIAL, AUTOSCALE;
When it is first displayed, the container shrinks to 80*80 pixels in order to fit the image size. Its size is then frozen. AUTOSCALE is useful here only if another image of a different size is displayed afterwards in the same container.
-- image size: 80*80 pixels
WIDTH=150 PIXELS, HEIGHT=150 PIXELS, SIZEPOLICY=FIXED, AUTOSCALE;

The container has a fixed size of 150*150. The image is smaller, and AUTOSCALE allows scaling of the image to the whole space. When not using AUTOSCALE, you may also use the image style attribute alignment to define where the picture should be located when the container is bigger.

Report to printer differences

Introducing Qt4 and Scribe, the text layouting system of Qt has been entirely rewritten. This has an impact on how GDC prints Report to printer: margins, spacings, font size have changed. You may have then to change your report font to get similar result as before. Genero Report Writer is now the recommended way of producing reports.

W3C colors

While Qt3 is using X11 color definition, Qt4 is using W3C definition. Some colors have the same name in both definition, but not the same RGB value. This explains why using the term green for a color changed since 2.20.

Table 1. RGB values: X11 and W3C comparison
name X11 RGB value W3C RGB value
green #00ff00 #008000
grey #bebebe #808080
maroon #b03060 #800000
purple #00ff00 #a020f0

Hitting German ß in an UPSHIFT field results in SS

If you hit the German ß in an UPSHIFT field, it will be immediately replaced by SS. It is something expected: SS is the official capitalization of ß. ß is nearly unique among the letters of the Latin alphabet in that it has no traditional upper case form. This is because it never occurs initially in German text, and traditional German printing never used all-caps.