YAAF - Yet another application framework

Provides a C++ application framework which assists in writing software that is portable to the Macintosh and to Microsoft Windows.

This documents version 1.0a1, an alpha-level version of the framework. While most of the functionality is present, not all of it is there. And some of the functionality has not been as well tested as possible. As the source code is provided, you may wish to make changes as necessary to fix bugs or extend features.

If you do so, please e-mail me with your changes, and I will be more than happy to integrate them into the YAAF distribution.

You may also wish to report bugs. If so, drop me a line and I will record the bug, and try to notify you as to any fixes that may be available.

Please note that I am doing this on my spare time. Which means that like most GNU projects and other freeware efforts, I will probably be a flake.

Introduction

A framework is a collection of routines or libraries which provide a solution to a specific problem. An application framework provides assistance to developing an application.

YAAF does not pretend to be a full application framework, hiding you from having to deal with issues of the host operating system. But YAAF does abstract the fundamental issues of application development: the event loop, window management, menu management and the like. And this abstraction is portable: the abstraction for a window (XGWindow) has the same public interface regardless if the implementation is hosted on Microsoft Windows or on the MacOS.

Copyleft

I am making these libraries freely available for a few reasons. First, as developing Macintosh and Microsoft Windows application is our bread and butter, it makes sense to make a large scale sample of our work available. Second, because with the proliferation of well marketed frameworks, it makes no sense to try to compete for a dwindling market share. And third, because I can.

Here's the official copyright notice:


YAAF - Yet another application framework Copyright ©1997 William Edward Woody and In Phase Consulting This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABIILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. To contact the author, either e-mail me at woody@alumni.caltech.edu, or write to us at William Edward Woody In Phase Consulting 1545 Ard Eevin Avenue Glendale, CA 91202


Overview

Currently, this distribution comes with two libraries. The first library, yaaf_core, encapsulates the basic functionality of the application core: the event loop, windows, views, menus, and other miscellaneous areas. The first library also includes a number of class utilities and functions.

The second library, yaaf_ctrl, encapsulates a number of controls, such as check boxes, push buttons, and scroll bars.

There are currently six sample programs which are used to test and demonstrate basic features of the framework.

All of these applications and libraries have been built using the Metrowerks Codewarrior C++ v11 product.

There is still a lot of stuff to do. This includes sprucing up this document, and creating more examples.

More Information

See also:

YAAF_core documentation

Documentation on the core library. Provides an overview and documentation on the core routines.

Adding floating windows support

The core YAAF library does not support floating libraries. This provides pointers to a library module and instructions on how to add floating library support.

YAAF_ctrl documentation

Control views; this encapsulates the core library routines.

CompileVRes documentation

Views are specified as resources providing the relative geometry between them. The CompileVRes utility provides a way to create those resources from a text file specification.

Wish List and Bugs

Documentation on things I'm still working on, and things I wish for.