GDC 2.20 upgrade guide
This section describes differences you may encounter when upgrading to GDC 2.20.
Corresponding new features page: GDC 2.20 new features.
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
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:- Bug report for Qt3
- MSDN default font information: MS Shell Dlg 2 is the default font for Windows 2000 and after.
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 the 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.
-- image size: 80*80 pixels
WIDTH=150 PIXELS, HEIGHT=150 PIXELS, SIZEPOLICY=INITIAL, AUTOSCALE;
-- 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.
name | X11 RGB value | W3C RGB value |
---|---|---|
green | #00ff00 | #008000 |
grey | #bebebe | #808080 |
maroon | #b03060 | #800000 |
purple | #00ff00 | #a020f0 |