Developer Release Notes
BeGUI
version 1.0.1
for
BeOS Release 4
While this documentation is copyright, anyone is free to redistribute it as long as they do not change the fundamental text. Changes to the HTML coding are fine, as is any removal of the HTML code, or any re-formatting to fit other distribution styles or formats.
This document is the third major documentation for BeGUI.
Things are still under construction
A major improvement in source code creation has taken place. In earlier versions of these routines it was necessary to create a LayoutMatrixItem for each gadget. Sometimes the LayoutMatrixItem had to be created with new (and eventually deleted), other times the use of an auto-pointer was better. Now these LayoutMatrixItems are created automatically for you and deleted when appropriate.
I have defined a spacer class. It's documentation is with the other gadgets in the Layout/Gadgets folder.
I got fed up with the massive waste of space in default BButtons, so as hinted in earlier code, I added a MyGetPreferredSize() method to this class as well.
I ripped the preference strings out of the resources. Now there are two sets of string resources, those dedicated to preferences may be found in the file BeGUIStrings.r.
I have separated the preference storage stuff from the app storage stuff as well. I am now passing a const char * prefSig into each window, so it knows which prefs it should store itself into. This results in two folders being created in /boot/home/config/settings!
I am also working on the BSlider class and have it working in a beta layout routine, but have entered a bug report against it and am awaiting the outcome of that before I go too far.
I have looked at the BTabView class with the thought of supporting it as well, but have been unable to make heads or tails of it. If someone would like to send me a simple example of working code which employs this class, I will look further into the matter.
I just realized that it would be nice to include the BPicture class in the layout routine, and am also thinking of the BBitmap class. Both would require only a tiny bit of code to support, as they do not require special sizing, being of a somewhat fixed nature. Of course, they are both really resizable, I guess, so I might have to give this some more thought!
I also just grabbed the pot.zip example from the recent BNewsletter and may well enroll it in this layout routine. After examining the code I feel that it will be a bit complicated to include for the near future.
Of course, it would be lovely to separate this all out from the application and form it into a custom library--so I did! Included with this project is a shared library libBeGUI.so, which can be created from the source by using the makefile.lib. The details for using the makefile are a bit complicated, if you need help, let me know.
I found a little speed-up in source code generation. In the creation of the LayoutMatrixItem I passed a pointer to a BList which was a member of the LayoutMatrix to which the item was soon to become attached. Instead of finding the list like:
layoutMatrix->itemList
Now, I simply pass the LayoutMatrix and get the list in the CTOR, saves a tiny bit of typing for each item.
I also found an un-used member of the MyColorControl class. I removed it by commenting it out in the code; not sure if I will need it for slider updating, have to see. See: BWindow * pparamWindow
I also pruned a bunch of excess strings from the resource source and the code. There are still a lot of unused strings, some pertaining to things I am in the process of building.
I found some math problems in my handling of MyPopUpMenu labels and their vertical and horizontal positions with respect to the menu. I have this mostly corrected now, but will have to look at the difference when the menu font is much larger or smaller than the label font.
I found I had neglected to finish the proportional slider stuff for height! Found a little bug in the Display Font Window calls.
Found a major problem with my previous usage of libprefs. I was rapidly calling it to write data if many Preference panels were automatically closed. It would get lost, so I made it all into a sequential call.
Found a nagging bug which caused a crash under some situations if the Font Display Window had been closed.
I found a few enhancements which make the windows more agressively usable. One allows for the rare occaision when you want no menu (as in a tool palette) the other allows for no title string (as you might want for a minimally intrusive tool palette). I also found a better way of storing window frame prefs. Make sure you delete any of the old BeGUI preference files in /boot/home/config/settings.
roColour drops come from one of the finest programs on any computer platform roColour 3.0 Web Edition, brought to you by the fine folks at RO DESIGN, Inc. www.rodesign.com. I especially wish to thank Richard Oesterreicher for bringing this program to the BeOS.
I also wish to thank Joseph Arnold, Daniel Berlin, John Dance, Chris Herborth and Stephen van Egmond for beta testing, help with the shared library problems and the move to x86 compatibility!
The BeOS Release 4 is brought to you by all the hard work of the nice people at Be, Inc. www.be.com. Be and BeOS are registered trademarks of Be, Inc..
The BeGUI
Book
for version 1.0.1
Copyright © 1998-1999 Ed Musgrove Be Developer #2076. All rights reserved.
edgar@harbornet.com
emusgrov@linknet.kitsap.lib.wa.us
Last modified January 19, 1999.