ColorBox2 — Project Objectives
The goal of ColorBox2 is to create a complete development framework for
easy creating and deplying of web-based client-server applications in C++.
High level of abstraction, event driven programming, modular and object design, easily
extensible hierarchy of object classes and other properties should minimize the need
of "annoying routine" known in traditional means for creating web applications.
The application logic should be separated from the visual representation and implementation
of various details.
There are several notable components of the whole framework:
- Data types and structures
Data types for storing character strings, lists of items and key=value pairs.
These types should also allow the end programmer to enjoy the ease of coding
similar to many popular intepreted languages.
- Templates, widgets and containers
This about a web application more in terms of a conventional GUI
application than an input/output filter. Widgets are separate
visual parts of the application (like a paragraph, form, menu, etc.),
containers are the means to group them in a specific layout and templates
make the interconnection between the widget and HTML output they provide.
Widgets should have means to preserve their internal state also during the "reloads"
of the web application in the user's web browser. A global serializer handles
this and stores persistent data in HTTP request variables automatically.
- Just-In-Time compilation
The web server module of ColorBox2 handles the compilation of altered end
programmer's source codes on-the-fly. Thus in production environment the web applications
run as fast as a native binary code can be run, but also always reflect the changes in their
source code allowing almost interpreted-language flexibility.
In the first public release, the software has to support at least these
- Basic features
- Header files and shared library for the web applications development.
- Just-In-Time compiler.
- Web server module for on-the-fly compiling and running of the web applications.
- Sample applications source code.
- Class (the basic class for all framework classes).
- Array (low-level growable array).
- PString (multipurpose character string).
- PStringTokenizer (splitting string into tokes).
- List (universal list of items).
- Map (single pair of key=value).
- MapList (list of key=value pairs).
- Tree (simple universal tree implementation).
- SerializedClass, Serializer (means for persistent data storage).
- Template (HTML output representation).
- Application (main application class).
- Event (generic application event class).
- Widget, Container (the basic classes for visual components).
- Form, FormElement, Button, ListBox, InputBox (web forms).
- Text (rich text manipulations).
- Paragraph, Menu, TreeMenu, Image, ImageDS, Spacer (sample widgets).
- ContainerBin, Layout (sample containers).
- RichEditor, RelationEditor (sample complex dialogs).
- DataSource, Query, Domain, DSMySQL, DSFlatFile, DSCSVFile, DSXMLFile (external data manipulation).