Please see the FAQ, TIPS and the docs folder for documentation.
To get started:
Install GNAT, a recent Ada 2012 compiler, see Alire.
On Windows 32 bit or Linux 32 bit if using GNAT GPL prior to 2014 you need to
modify the Makfile ATOMIC_ACCESS=GCC-built-ins
On Windows - if using TDM-GCC replace make below with mingw32-make
Either download and unarchive the stable version of Gnoga from
http://www.gnoga.com or use git to get the latest development version:
git clone git://git.code.sf.net/p/gnoga/code gnoga-code
cd gnoga-code
make help # for all options and configuration values
make all
then run the snake demo or tutorials in bin folder. There are additional demos in demo folder.
Open a web browser with URL like: "http://127.0.0.1:8080".
See INSTALL for more information about installing Gnoga as a standard gcc/ada
library if desired.
GNAT Studio is available with 'make studio' which launches GNAT Studio with the
actual values of compiler switches for gnoga.gpr project.
- For the demos: open demo/demo_agg.gpr project in GNAT Studio.
- For the tests: open test/test_agg.gpr project in GNAT Studio.
See docs/html/user_guide.html to get started (built with make html-docs).
See docs/html/gnoga_rm/index.html for reference manual (built with make rm-docs).
Gnoga includes a copy of Dmitry A. Kazakov's Simple Components and uses it for http and websockets.
See deps/simple_components/components.htm for details.
It includes an incredible wealth of Ada components you can incorporate in your software freely and
is under the GMGPLv2.
Here is an overview of Gnoga's framework:
The communication platform between the Ada code and the browser / native
Gnoga.Server.Connection
Gnoga.Server.Connection.Secure - https / SSL Support
Binding to the HTML5 DOM and Browser
Gnoga.Gui.Base (Not per se a binding of Node but takes its place)
Gnoga.Gui.Element, Gnoga.Gui.Element.* (HTML Elements)
Gnoga.Gui.Element.Canvas - HTML 5 Canvas bindings
Gnoga.Gui.Element.SVG - HTML SVG vector graphics
Gnoga.Gui.Element.Multimedia - HTML 5 Audio and Video
Gnoga.Gui.Element.Style - CSS Style blocks
Gnoga.Gui.Window, Gnoga.Gui.Navigator, Gnoga.Gui.Screen,
Gnoga.Gui.Location
Gnoga.Gui.Document
Application start up services
Gnoga.Server.Application.Singleton - Desktop apps
Gnoga.Server.Application.Multi_Connect - Multi user / Web apps
Gnoga higher level containers and GUI widgets
Gnoga.Gui.Views.* - Auto layout of child elements and basis for
custom Gnoga Ada only widgets
Gnoga.Gui.Views.Docker - Dock child views to view sides
Gnoga.Gui.Views.Card - Stacks of views
Gnoga.Gui.Views.Console - Views with auto scroll down
Gnoga.Gui.Views.Grid - Grid of views
Gnoga.Gui.Views.Modal_Dialog - Modal views
Gnoga client side application APIs
Gnoga.Client.Storage - local persistent and session storage on browser
Gnoga.Client.Bind_Page - Bind to all elements on pre-made HTML5 pages
Gnoga database bindings and server side APIs
Gnoga.Server.Database - support for MySQL and SQLite 3
(for ODBC bindings see deps/simple_components)
Gnoga.Server.Model - Active Data models like in Rails
Gnoga.Server.Migrations - Rails like database schema migrations
Gnoga.Server.Template_Parser - Parse files with tokens or Python 2.7
(install libpython27-dev to use the Python parser)
Gnoga development tools
tool/gnoga_make - Generate application scaffolds
and front ends to database tables
Plugin bindings to existing JavaScript libraries
Gnoga.Gui.Plugin.Ace_Editor - Full editor with Ada syntax highlighting
Gnoga.Gui.Plugin.jQuery - jQuery support to access non-Gnoga Elements
Gnoga.Gui.Plugin.jQueryUI - all the jQueryUI Interactions and Effects
Gnoga.Gui.Plugin.jQueryUI.Widgets - the jQueryUI Widgets
Gnoga.Gui.Plugin.Boot_Strap - general binding to Boot Strap
Gnoga.Gui.Plugin.Messages_Boxes - dialog message boxes
Gnoga.Gui.Plugin.MNMenu - menu construction based on list
Gnoga.Gui.Plugin.PIXI - dynamic randering graphic elements such as sprites
Gnoga.Gui.Plugin.JSTree - tree construction based on list
Gnoga.Gui.Plugin.Ace_Editor.Console_IO - console emulation based on ACE
Native Desktop and Mobile Application Support coming:
Gnoga.Server.Application.Gtk_Window - Native GTK front end