What Is It?

The GLX Application Framework provides a foundation of common building blocks for building applications in Revolution (2.8.1 and above) on OS X (10.3 and above) and Windows (2000, XP and Vista). The framework takes care of common tasks such as splash stacks, loading stacks and externals at launch, working with user preferences, auto updating and more. This leaves you free to focus on coding the features specific to your application and not reinventing the wheel each time you start a new project.

The framework is free to use in your personal or commercial projects.

The framework does not currently have Linux support because we do not create applications for Linux. Someone is welcome to add support for this. Contact me if you are interested and we can discuss what would need to be done.

There are still some parts of the framework that are not documented yet (i.e. the undo manager and the innards of the auto update mechanism) so if you are poking around in the scripts and come across something that isn't answered anywhere then send an email. There are probably some parts that don't work exactly how one might want. If you come across something that fits into this category please mention it, or better yet, improve it and submit the change.

Thanks to Daniels & Mara for the use of the GLX name. Jerry has created tools that help Revolution developers be far more productive and hopefully this framework will help do the same. GLX2 is the must-have script editor for Revolution developers and is available at http://daniels-mara.com/glx2/.

If you have questions, suggestions or would like to contribute a modification to the framework please send an email to glxapp at bluemangolearning dot com.

What Does it Do?

Some of the features you get when using the framework:

Application Helpers
* Loads all application stacks and externals, verifying that they load correctly.
* Stores file extensions specific to your application and allows you to quickly create groups of extensions that can be used to filter types of files that can be selected in file dialogs.
* Can store and generate lists of recent files your application has opened.
* Saves positions of your application windows between launches. Your applications windows return to the state the user left them in.
* Ensures that your application windows remain visible when monitors are disconnected from the users computer.

Preferences
* Preferences API for creating, storing and retrieving user preferences.
* Stores default values for preferences that are used if no preference has been set on a users system.
* Sends messages to objects when preference values are updated (broadcasting).

Additional Messages
* glxapp_firstRun, glxapp_initializeApplication, glxapp_openApplication, glxapp_cleanupApplication, glxapp_relaunch provide straightforward messages for setting up your application and cleaning up before it quits.
* glxapp_openFiles is called whenever the operating system or user requests that your application open a file.
* preOpenWindow, openWindow: similar to preOpenStack/openStack but with one parameter that is true if the stack has been opened during the current session, false otherwise.
* preOpenView, openView: similar to preOpenCard/openCard but with one parameter that is true if the card has been opened during the current session, false otherwise.
* resizeView: similar to resizeStack but also sent whenever the user navigates between cards.
* Messages to help manage window palettes.

Deployment
* Can password protect your stacks when deploying rather than having to password protect the stacks you are developing with.
* Built-in auto update architecture along with packaging utility for creating auto update files ready to upload to your server.
* Packaging utility for placing all platform specific application files into their own folders, ready to be turned into an installer.
* Build profiles that allow you to branch functionality and location of auto update files.
* Allows you to specify files that will be included with your application (i.e. ReadMe files).

Table of Contents Next Lesson: Downloading It