Changes in 41.4 general ------- All classes start with defaults that are appropriate to that class. For example, the buttonclass will have a [FRM_Type, FRTYPE_BUTTON] by default. This is altered by the user preferences. To override this, just specify a frame type. The defaults will depend on user-preferences. BGUI will load preferences. The editor is not ready, but BGUI loads and processes the files, to PROVE it can still be done in small overhead. Added new macros, Pref#?(...), that will create objects according to user preferences. These macros may change a little, but you will be able to simply recompile in the next release. Note that you do NOT need to specify the LAB_Underscore if it is simply '_'. For now, the Pref#? macros will create FuzzFrames, which will not be the default in the future, but is for now to verify that it works. areaclass --------- Areaclass is now internal. buttonclass ----------- Vector images will respect thicker frames. Cycle image is now a built-in image. You may now specify a second vector image for a selected button. Suggested by Emmanuel Doguet. checkboxclass ----------- Check image will respect thicker frames. cycleclass ----------- Vector images will respect thicker frames. Cycle image will use new built-in cycle vector BUILTIN_CYCLE. Half-fixed a problem with tooltips overwriting popup-menus, and not redrawing the popmenu when the tooltip disappears. To completely fix the problem, I need to make no tooltips appear when the popcycle is pressed. This was too extensive to make this release. Reported by David Kinder. Replaced behavior of clicking on the arrow and having it behave like a cycle gadget. I know there's been argument about this, but if you want it to behave like a popup menu, simply click the whole rest of it. Sometimes it is desirable to simply increment the cycle in the normal way, so this is (again) possible. The class will rotate the cycle arrow when clicked on. (I was bored one day). frameclass ---------- You may now backfill frames with a bitmap pattern. This is specified in a bguiPattern structure. groupclass ---------- Buffering method improved and accelerated. Buffer is only freed when the window is resized, rather than being deallocated then reallocated when you switch pages. Calculations optimized for speed. Added LGO_FixAspect to fix the aspect ratio of a member. This is specified as a fraction x:y, and specified as x in the high word, y in the low word. For example, if you wish a vector image to be twice as wide as it is high, specify LGO_FixAspect, 0x00020001. A macro is provided so you may simply specify FixAspect(x,y). BGUI will attempt to maintain this ratio, but will size down if necessary. If the group has a frame, the group offsets are now calculated from the inside of the frame. Added new constants, GRSPACE_NARROW, GRSPACE_NORMAL, and GRSPACE_WIDE for group spacing and offsets. The true value will vary depending on user preferences, so do not depend on the defaults. You should usually use GRSPACE_NORMAL for spacing in most groups of objects, unless there is supposed to be no space. When it is better to set apart groups of objects by a wider space, use GRSPACE_WIDE, and when the objects should be spaced closely together, use GRSPACE_NARROW. Macros are provided to make this easier, for example NormalSpacing will translate to GROUP_Spacing, GRSPACE_NORMAL. See the new BGUIDemo source for a proper example of the use of these constants. infoclass --------- The labelclass problem below was caused by the fact that you specify pen numbers like "\33p14%s". "%s" is printed in color 14. What if "%s" is substituted by "5 wise men". You get "\33p145 wise men" which prints " wise men" in color 145. This can be avoided by using a double escape "\33\33" as a break after a number, when you suspect the string could have a number substituted there. labelclass ---------- Fixed terrible problem: any label starting with a numeric digit would have the digits "eaten", and display any trailing text in funky colors. A cycle gadget with labels like "1", "2", "4" would be totally blank. Reported by several. mxclass ------- Added MX_LabelsID for auto-localization. If MX_LabelsID is not zero, the LAB_LabelID of each button is set starting from this value, and incrementing by one for each button. For example, if MX_LabelsID is 34, the buttons will be set to 34, 35, 36... BASE_LOCALIZE will then set these labels. pageclass --------- Buffering method improved and accelerated. Buffer is only freed when the window is resized, rather than being deallocated then reallocated when you switch pages. windowclass ----------- Removed Enforcer hit. Bug was harmless, it was a leftover line of debug code but it should have been removed before release. Added WINDOW_Locale and WINDOW_Catalog for localization at initialization. Before, you could call BASE_LOCALIZE on the window, but you would have to then call BASE_KEYLABEL on the window yourself, or the wrong keys could get attached. Specifying [ WINDOW_Locale, (struct bguiLocale *) ] will cause the window to localize itself and all subobjects using your bguiLocale. You must allocate and initialize this structure yourself. Specifying [ WINDOW_Catalog, (char *) ] will cause the window to localize itself and all subobjects using a standard locale.library catalog. If the locale.library is not available, nothing occurs. The catalog is closed automatically when the window is destroyed.