Short DescriptionNovaTK is an object-oriented, cross-platform GUI toolkit. One of the focuses of NovaTK is to facilitate rapid development of cross-platform applications requiring fewer lines of code. The NovaTK event system is based upon a powerful callback mechanism that makes application design simpler, easier read and logical.
- Cross-platform - NovaTK is designed with a high level of abstraction with the purpose of allowing NovaTK to be easily ported to many different operating systems and frameworks. The majority of NovaTK, such as the code implementing widgets and dialogs, involves no platform specific code and calls only functions from its NovaTK's internal platform abstraction API, GSys, or C/C++ standard functions. This goal is also extended to applications built with NovaTK where NovaTK aims to make it easier to write applications that can be compiled across many platforms without changing a line of code. This naturally excludes functionality outside that which NovaTK provides(Such as audio). I believe that all programs should be designed with as few barriers to porting as possible.
- Easy to use - Heavy emphasis is placed upon designing NovaTK with an easy to use and learn, logical API. This is a primary reason that NovaTK is written in C++ as I believe that an object-oriented design is substantially simplifies the development of application GUIs as well as making it possible to develop such applications at a much faster pace with much cleaner code than would result from using procedural languages such as C. C++ also provides the required flexibility to allow the developer to use NovaTK for any type of application they can dream of. I firmly believe that NovaTK fulfills its goal with a very well designed API that is easy to learn yet still flexible enough not stand in the way of the developer.
- Rapid Application Development - One of the reasons that I started writing NovaTK was because in the past I used to write my own widgets for each application I worked on. NovaTK was originally part of a project to put common code that into a library that I could share between my applications. NovaTK has since become a full fledged GUI toolkit. It is designed to take care of all aspects of the user interface for the application to allow the developer to focus on the functionality the application was intended to provide.
The Design of NovaTKNovaTK is designed with a layer of abstraction over the user's operating system or framework. This platform layer, called "GSys" was designed so that porting of NovaTK to a different platform only required an implementation of GSys over that platform. Implementations of GSys are not just limited to operating system but can also be over other frameworks on the same operating system. At present, NovaTK only has a GSys backend for X11 and Windows but there are plans to provide a backend over Mac OS X's Carbon(or possibly Cocoa) as well as SDL to make it possible to use NovaTK in game development.
Rather than being based around an event loop, NovaTK is designed around a callback-based event system. An application may set a callback for any event on any widget. As part of this design, most applications written to use NovaTK will not have a main loop for whichever thread handles thier GUI. Instead NovaTK will take control of the thread until an event occurs for which the application has registered a callback. Although for some application that need control of the thread at all times, it is still possible design an application this way.