File: SantasGiftBagV2.93-x86.zip, -ppc.zip Author: Brian Tietz (briant@timelinevista.com) Release: 2.93 Compatibility: R4.5 Location: contrib/develop Description: ColumnListView, Document application framework, WindowPositionSet, MouseWatcher, BufferedFile, other goodies Notes: These classes, with the exception of ColumnListView, are documented throught their header files. The functions and their arguments are clearly named so it should be obvious how to use them. When it's not, the functions are documented through comments in the header files. ColumnListView has html documentation. Make sure to read the license. AboutWindow: A nice looking about box window that extracts an image file from a specified resource in the application, putting it in a bar on the left hand side, displaying version info from the application version resource, and displaying the specified text. ArrowButton: Works just like BButton, but it provides arrows with the standard Be appearance like what is provided with BScrollBar. BetterScrollView: BScrollView replacement that allows you to specify directly the size of your data rect, and the BetterScrollView takes care of the scrollbar proportions and inactivating the scroll bars when the entire content is showing, and provides nice "pulling behavior" to reveal the content when the user is resizing the scroll view bigger. BufferedFile: Buffers file output for increased efficiency. ChecksumDataBuffer: Buffers data in an endian-independent manner for network transmission, and can generate a checksum for transmission by multiple methods. Colors.h: List of const rgb_color definitions for the standard Be UI colors. ColumnListView: BListView-derived class with columns that the user can resize, drag, sort, etc., with BOutlineListView-like support for hierarchical lists. DeepBevelView: A BView that draws a deep bevel like that of BTextControl around its perimeter. DocumentApp: A document file management framework. Provides a BApplication-derived class and a BWindow-derived class which work together to give nice document behavior, automating the process of quitting when the last window closes, prompting to save unsaved documents, etc. etc. It saves a LOT of work because getting perfect behavior in a multi-document application can take hours of coding, testing, and recoding to get it right. EndianIndependentFile: BufferedFile-derived class to buffer file output for improved efficiency and allows readable code style to still be efficient. Eliminates endian-ness issue by providing automatic byte swapping. Includes a handy ReadString/WriteString pair. GenericTestApp.cpp: Generic test application framework for testing code fragments that need a GUI. Useful for putting together new classes and also simplest-case code for reporting BeBugs(tm). MouseWatcher: Thread to track the mouse until user releases the button, even if the mouse goes outside the target BView. There's a variant that will watch the mouse and count time until twice the double-click time expires then send a message signalling that the user wants a popup menu (for single-button mouse support). MultiLineTextControl: Works just like a BTextControl, but allows multiple lines of text. NewStrings: Wrapper for BFont::GetStringWidths that returns the width of the widest string. strdup, strcat cousins that do their allocation using new. PrefilledBitmap: BBitmap wrapper that allows you to specify the image data in the constructor. SafeTime: A thread safe version of localtime. Just a stopgap until Be gets around to implementing localtime_r. ScrollViewCorner: A BView for filling the corner of a BScrollView that's not seated in the lower-right corner of a B_DOCUMENT_WINDOW. TabView: Useful if you want to link against PR1 for a wider audience. Also, the BTabView implementation is shit for resizable windows and chokes on hidden child views, TabView handles both cases properly. Funny aside: I wrote TabView as a stopgap measure while I was waiting for R3, planning to switch to BTabView in my Scheduler program project once I got R3. But as soon as I switched to BTabView I found the implementation so bad that I switched back to using my own TabView. TypedListTemplate: A templated BList that adds type checking, since BList's use of void* doesn't allow the compiler to do type checking. TextEntryAlert: A class very similar to BAlert, but which has a text entry box for the user to enter text into, which is reported back to the application when the user dismisses the dialog. It allows control over the BWindow look and feel flags, so it need not be a modal dialog, although that is the normal usage. WindowPositionSet: A class to make sure that windows are actually visible onscreen when they're created, and to manage the locations of newly created windows to space new windows so that each new window doesn't sit on top of the last one. Gives nice behavior and is easy to use. WrappingTextView: A BTextView derived class that automates the process of rewrapping the text when the view is resized. Also provides a mechanism for storing the text view contents when appropriate, which is useful if the view is of an object that can exist without the view, so that this more persistent object can be kept up-to-date when the text is modified.