comp.lang.ada
 help / color / mirror / Atom feed
* Gnoga - The GNU Omnificent GUI for Ada
@ 2014-09-23 18:20 David Botton
  2014-09-23 19:38 ` Anh Vo
                   ` (13 more replies)
  0 siblings, 14 replies; 58+ messages in thread
From: David Botton @ 2014-09-23 18:20 UTC (permalink / raw)


This is not an announcement of a 1.0 yet, but a progress report. It helps me stay focused and motivated along with a source for ideas and inspiration to post things, so here we go.

BTW, you can play the snake game running in Ada now over the internet, http://www.gnoga.com - NO JS and HTML that is done with Gnoga bindings to the Canvas and DOM.

I am busy working on the code at the moment so the documentation is mainly in the specs and samples for the moment and I have not had time to make a nice website for it yet, however http://www.gnoga.com is there and a link to the sourceforge site.

An introduction to what it is:

1. First and foremost the project goal is a cross platform GUI toolkit. but Instead of targeting Windows, X, Gtk or Qt, it targets the HTML5 browser. No not HTML or JS, the "browser". It acts like a "terminal" for Gnoga to render its magic. If you try and do a view source on the browser all you will get is the websocket code used to set up the communications. Long term you will be able to package a native app (.exe, .app, etc.)

2. Because the "browser" is the target it means that Gnoga applications can run local or remote. If you can get AWS running on your "board" you can use Gnoga for the front end. Yes you could write HTML and respond to Http requests etc using AWS, but with Gnoga your app is always connected and live in the browser back to the server. You can be showing real time stats, no Ajax, JSON, etc to worry about, oh yes and all of it is in Ada you don't have to touch those sick little braces { } pocked with ;;;;

3. It just happens to be that Gnoga can also create great websites with dynamic content using HTML, CSS and Ada (that's right not JS)... It's a nice bonus.

4. In fact Gnoga comes already with a number of Ada on Rails like features. Including Active Record support with bindings to MySQL and SQLite and can easily be expanded to other SQL engines.

5. There is a whole lot there already but.. there is still a lot more to go. Don't pass judgement till at least all the components are in, 6-8 weeks.

6. With this you will get things like OpenGL programming via WebGL (coming), it already has a full canvas 2d binding, and any other techi goodness thrown at the web.

7. Multimedia bindings are not far behind for video, audio, etc.

8. You will get access to client side HTML5 goodness like local storage on the client browser, etc. it's all coming.

9. Gnoga can easily use now or be extended later to bind anything that can run in a browser, JS GUI toolkits, XUL for direct native apps, etc. etc.

10. While most of the world is fighting to get JS and HTML to run and do anything, Ada get's to sit back and enjoy the ride to every new tech as it comes and still have a solid language and the ability to create secure Web apps and services dispatched from solid systems.

It's tough to get the full vision in words and there are not too many pictures to see, but if I get you excited about Ada for application development, well than I'm getting somewhere and we will both arrive soon enough at the goal :)

David Botton


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-23 18:20 Gnoga - The GNU Omnificent GUI for Ada David Botton
@ 2014-09-23 19:38 ` Anh Vo
  2014-09-24  7:15 ` Thomas Løcke
                   ` (12 subsequent siblings)
  13 siblings, 0 replies; 58+ messages in thread
From: Anh Vo @ 2014-09-23 19:38 UTC (permalink / raw)


On Tuesday, September 23, 2014 11:20:42 AM UTC-7, David Botton wrote: 
> An introduction to what it is:
>  
> 1. First and foremost the project goal is a cross platform GUI toolkit. but Instead of targeting Windows, X, Gtk or Qt, it targets the HTML5 browser. No not HTML or JS, the "browser". It acts like a "terminal" for Gnoga to render its magic. If you try and do a view source on the browser all you will get is the websocket code used to set up the communications. Long term you will be able to package a native app (.exe, .app, etc.)
>  
> 2. Because the "browser" is the target it means that Gnoga applications can run local or remote. If you can get AWS running on your "board" you can use Gnoga for the front end. Yes you could write HTML and respond to Http requests etc using AWS, but with Gnoga your app is always connected and live in the browser back to the server. You can be showing real time stats, no Ajax, JSON, etc to worry about, oh yes and all of it is in Ada you don't have to touch those sick little braces { } pocked with ;;;;
>  
> 3. It just happens to be that Gnoga can also create great websites with dynamic content using HTML, CSS and Ada (that's right not JS)... It's a nice bonus.
>  
> 4. In fact Gnoga comes already with a number of Ada on Rails like features. Including Active Record support with bindings to MySQL and SQLite and can easily be expanded to other SQL engines.
>  
> 5. There is a whole lot there already but.. there is still a lot more to go. Don't pass judgement till at least all the components are in, 6-8 weeks.
>  
> 6. With this you will get things like OpenGL programming via WebGL (coming), it already has a full canvas 2d binding, and any other techi goodness thrown at the web.
>  
> 7. Multimedia bindings are not far behind for video, audio, etc.
>  
> 8. You will get access to client side HTML5 goodness like local storage on the client browser, etc. it's all coming.
>  
> 9. Gnoga can easily use now or be extended later to bind anything that can run in a browser, JS GUI toolkits, XUL for direct native apps, etc. etc.
>  
> 10. While most of the world is fighting to get JS and HTML to run and do anything, Ada get's to sit back and enjoy the ride to every new tech as it comes and still have a solid language and the ability to create secure Web apps and services dispatched from solid systems.
>  
> It's tough to get the full vision in words and there are not too many pictures to see, but if I get you excited about Ada for application development, well than I'm getting somewhere and we will both arrive soon enough at the goal :)
>  
> David Botton

I have to say WOW! after reading the introduction. You are one of the Ada pioneers to use ~100% Ada (100% Ada some day not far away). Thank you for sharing your work.

Anh Vo


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-23 18:20 Gnoga - The GNU Omnificent GUI for Ada David Botton
  2014-09-23 19:38 ` Anh Vo
@ 2014-09-24  7:15 ` Thomas Løcke
  2014-09-24  9:57 ` tonyg
                   ` (11 subsequent siblings)
  13 siblings, 0 replies; 58+ messages in thread
From: Thomas Løcke @ 2014-09-24  7:15 UTC (permalink / raw)


Hi David,

On 09/23/2014 08:20 PM, David Botton wrote:
> This is not an announcement of a 1.0 yet, but a progress report.
> It helps me stay focused and motivated along with a source for ideas and inspiration to post things, so here we go.
>
> BTW, you can play the snake game running in Ada now over the internet, http://www.gnoga.com - NO JS and HTML that is done with Gnoga bindings to the Canvas and DOM.


This is by far one of the most impressive things I've seen in a long
time. One word: WAUV!

I'm amazed at the sheer awesomeness of this project David. Have you
thought about hosting it on Github also, so we can fork it all over
the place for massive exposure?  :o)

-- 
Thomas Løcke | thomas@12boo.net | http://12boo.net


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-23 18:20 Gnoga - The GNU Omnificent GUI for Ada David Botton
  2014-09-23 19:38 ` Anh Vo
  2014-09-24  7:15 ` Thomas Løcke
@ 2014-09-24  9:57 ` tonyg
  2014-09-24 11:59   ` David Botton
  2014-09-24 21:16 ` David Botton
                   ` (10 subsequent siblings)
  13 siblings, 1 reply; 58+ messages in thread
From: tonyg @ 2014-09-24  9:57 UTC (permalink / raw)



Great work. Its inspired!. Now this looks very promising ...oh my. I just tried to build it using aws2.1 which does not appear to have websockets. Which version of aws are you using?


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-24  9:57 ` tonyg
@ 2014-09-24 11:59   ` David Botton
  2014-09-26 14:17     ` tonyg
  0 siblings, 1 reply; 58+ messages in thread
From: David Botton @ 2014-09-24 11:59 UTC (permalink / raw)


which does not appear to have websockets. Which version of aws are you using?

I am using GNAT-GPL 2014 on Debian and both GNAT-GPL 2014 / GNAT-FSF 2014 on Mac

You can grab a more recent AWS from libre.adacore.com to download a source package for it or git clone --recursive http://forge.open-do.org/anonscm/git/aws/aws.git


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-23 18:20 Gnoga - The GNU Omnificent GUI for Ada David Botton
                   ` (2 preceding siblings ...)
  2014-09-24  9:57 ` tonyg
@ 2014-09-24 21:16 ` David Botton
  2014-09-24 21:25   ` Jeffrey Carter
  2014-09-25  4:26 ` Nasser M. Abbasi
                   ` (9 subsequent siblings)
  13 siblings, 1 reply; 58+ messages in thread
From: David Botton @ 2014-09-24 21:16 UTC (permalink / raw)


Today's update :)

This all sounds very HTMLy instead of GUI but that is because this is the gooey guts of Gnoga:

View support and auto placing of elements in to views, most important CSS styles for GUI development bound. SVG control is there but SVG DOM bindings will come in the future.

So outstanding on the basic DOM are 1)  audio and video, 2) WebGL and 3) SVG

Things missing but I may or may not add at any point, tables, inline elements like <b><em>, etc. These can be added as content of DIV_Type and for interaction with them they should be in a Span_Type.

I may consider tables, but more likely it will be in the form of some future child of View_Type that has interactivity etc.


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-24 21:16 ` David Botton
@ 2014-09-24 21:25   ` Jeffrey Carter
  2014-09-24 21:36     ` David Botton
  0 siblings, 1 reply; 58+ messages in thread
From: Jeffrey Carter @ 2014-09-24 21:25 UTC (permalink / raw)


This looks very interesting and promising. The response time of the snake game
is very poor, though.

-- 
Jeff Carter
"You couldn't catch clap in a brothel, silly English K...niggets."
Monty Python & the Holy Grail
19


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-24 21:25   ` Jeffrey Carter
@ 2014-09-24 21:36     ` David Botton
  0 siblings, 0 replies; 58+ messages in thread
From: David Botton @ 2014-09-24 21:36 UTC (permalink / raw)


> This looks very interesting and promising. The response time of the snake game
> 
> is very poor, though.

It is running in a low memory VM that is used for serving out large files for download on a slow network (I was also just compiling a new version, has some small visual improvements, for that box when you may have tried), so could be someone downloading when you were trying. Games obviously are better local :) 

Try again and should get better response timings.

I just wanted to put an example that was clearly not a "web site" like app to illustrate where this is going.

Next week if I have time, I'll see if I can move it to a better server with decent bandwidth.

David Botton


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-23 18:20 Gnoga - The GNU Omnificent GUI for Ada David Botton
                   ` (3 preceding siblings ...)
  2014-09-24 21:16 ` David Botton
@ 2014-09-25  4:26 ` Nasser M. Abbasi
  2014-09-28  1:17   ` David Botton
  2014-09-28  8:02   ` Niklas Holsti
  2014-09-28  9:06 ` David Botton
                   ` (8 subsequent siblings)
  13 siblings, 2 replies; 58+ messages in thread
From: Nasser M. Abbasi @ 2014-09-25  4:26 UTC (permalink / raw)


On 9/23/2014 1:20 PM, David Botton wrote:
>
> BTW, you can play the snake game running in Ada now over the internet, http://www.gnoga.com

Thanks David for your efforts.

When I go to the page above, I can't interact with the game,
it runs on its own for few seconds, then says game over.
I click on the keys and nothing happens. I tried this
on firefox and Chrome.

Is one supposed to do something special to actually
interact with the game? I am on windows 7. No firewall
or anything. Home pc.

--Nasser





^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-24 11:59   ` David Botton
@ 2014-09-26 14:17     ` tonyg
  2014-09-28  1:24       ` David Botton
  0 siblings, 1 reply; 58+ messages in thread
From: tonyg @ 2014-09-26 14:17 UTC (permalink / raw)


On Wednesday, 24 September 2014 12:59:14 UTC+1, David Botton  wrote:
> which does not appear to have websockets. Which version of aws are you using?
> 
> 
> 
> I am using GNAT-GPL 2014 on Debian and both GNAT-GPL 2014 / GNAT-FSF 2014 on Mac
> 
> 
> 
> You can grab a more recent AWS from libre.adacore.com to download a source package for it or git clone --recursive http://forge.open-do.org/anonscm/git/aws/aws.git

All built and working. Great work David, this arrived just in time to be incorporated in to something I was working on!

A few notes on the build process on debian wheezy (32 bit) is that you need the sqlite3 dev and mysql client dev libraries, and also you need a bin and an obj directories in the main gnoga directory.


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-25  4:26 ` Nasser M. Abbasi
@ 2014-09-28  1:17   ` David Botton
  2014-09-28  8:02   ` Niklas Holsti
  1 sibling, 0 replies; 58+ messages in thread
From: David Botton @ 2014-09-28  1:17 UTC (permalink / raw)


> When I go to the page above, I can't interact with the game,

Use the keys a, w, s, d for control. I've tested it on chrome and firefox on mac and windows. 

Perhaps your cap's lock is on?


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-26 14:17     ` tonyg
@ 2014-09-28  1:24       ` David Botton
  0 siblings, 0 replies; 58+ messages in thread
From: David Botton @ 2014-09-28  1:24 UTC (permalink / raw)


> A few notes on the build process on debian wheezy (32 bit) is that you need the sqlite3 dev and mysql client dev libraries, and also you need a bin and an obj directories in the main gnoga directory.

That is only to build the tests for mysql or sqlite if you don't want database access you do not need either.

Keep in mind that this is not even an official pre-release, when I reach in the next weeks what I consider a minimum for a pre-release and sure I won't be doing any massive restructuring of the packages I will change the build process to have this install as a library under gnat the way AWS or other libraries do.

If use use the make file it creates the bin and obj directories.

Feel free to incorporate and use, just keep in mind that the API is not fixed yet (although mainly stable). Also make sure to see how Main_Window.View is used to avoid the need to place objects as they are auto placed in their parent's DOM.

I estimate 6-8 weeks for a on official 1.0 pre-release but that time frame may be earlier if I manage my time will enough.

David Botton


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-25  4:26 ` Nasser M. Abbasi
  2014-09-28  1:17   ` David Botton
@ 2014-09-28  8:02   ` Niklas Holsti
  2014-09-28  8:26     ` David Botton
  1 sibling, 1 reply; 58+ messages in thread
From: Niklas Holsti @ 2014-09-28  8:02 UTC (permalink / raw)


On 14-09-25 07:26 , Nasser M. Abbasi wrote:
> On 9/23/2014 1:20 PM, David Botton wrote:
>>
>> BTW, you can play the snake game running in Ada now over the internet,
>> http://www.gnoga.com
> 
> Thanks David for your efforts.
> 
> When I go to the page above, I can't interact with the game,
> it runs on its own for few seconds, then says game over.
> I click on the keys and nothing happens. I tried this
> on firefox and Chrome.

I have the same experience with Firefox on Mac OS/X.

-- 
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
      .      @       .


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-28  8:02   ` Niklas Holsti
@ 2014-09-28  8:26     ` David Botton
  2014-09-28  9:18       ` Niklas Holsti
  0 siblings, 1 reply; 58+ messages in thread
From: David Botton @ 2014-09-28  8:26 UTC (permalink / raw)


> I have the same experience with Firefox on Mac OS/X.

It was developed on Mac OSX using Firefox, so I am sure it works :)

Again, check for caps lock or alternative language keyboards, etc.


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-23 18:20 Gnoga - The GNU Omnificent GUI for Ada David Botton
                   ` (4 preceding siblings ...)
  2014-09-25  4:26 ` Nasser M. Abbasi
@ 2014-09-28  9:06 ` David Botton
  2014-09-29  2:42 ` David Botton
                   ` (7 subsequent siblings)
  13 siblings, 0 replies; 58+ messages in thread
From: David Botton @ 2014-09-28  9:06 UTC (permalink / raw)


I have restructured Gnoga's source base in the following way (I don't expect any big changes like this again in structure, only continued additions)

Gnoga.Gui - All Gui / DOM elements

Gnoga.Client - Non-GUI APIs that run on the browser side (none yet but will include things like persistant storage in the browser, client side file access, etc.)

Gnoga.Server - Server side APIs, like Active Records, MySQL, SQLite bindings, Schema migration support, etc.

Gnoga.Application - Application services, Singleton, Multiuser

Gnoga.Types - Gnoga specific types


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-28  8:26     ` David Botton
@ 2014-09-28  9:18       ` Niklas Holsti
  2014-09-28  9:51         ` Niklas Holsti
  2014-10-20 21:03         ` David Botton
  0 siblings, 2 replies; 58+ messages in thread
From: Niklas Holsti @ 2014-09-28  9:18 UTC (permalink / raw)


On 14-09-28 11:26 , David Botton wrote:
>> I have the same experience with Firefox on Mac OS/X.
> 
> It was developed on Mac OSX using Firefox, so I am sure it works :)
> 
> Again, check for caps lock or alternative language keyboards, etc.

Caps lock is off, keyboard layout is German (so the geometrical
arrangement of a,w,s,d is not so suggestive).

After several attempts, it seems that the a,w,s,d keys do work, but the
game is rapid enough, and over so quickly if one makes a mistake, that
there is hardly any time to try things and learn how they work, on the
first attempt. The arrow keys don't seem to work. And there is no "Start
over" button.

Suggestions:

0. Remember that not everyone has played this game before. Or at least
may not remember how it works.

1. Make it clear that the initial screen, with the growing row of
asterisks, is not yet the game, and does not respond to the a,w,s,d keys.

2. Perhaps include a "Start game" button in the game window, to help
with point 1.

3. Make the snake motion slower, at least to start with. Perhaps make it
faster in each succeeding game, or as the score grows.

4. Make it clearer why the game is suddenly over for no visible reason.
Is there a time-out? Show a count-down if so. Is it when the snake hits
its tail? Perhaps optionally show a trace of the tail.

5. Include a "Start over" button.

6. Make the arrow keys work.

As a first intro to Gnoga, it is not very inviting, I'm sorry to say.
But I won't let it bias my view of Gnoga, once I get around to reading
more about it. The user interfaces I may want to implement are not for
games, but for "serious computation" |:-|)

-- 
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
      .      @       .


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-28  9:18       ` Niklas Holsti
@ 2014-09-28  9:51         ` Niklas Holsti
  2014-10-20 21:03         ` David Botton
  1 sibling, 0 replies; 58+ messages in thread
From: Niklas Holsti @ 2014-09-28  9:51 UTC (permalink / raw)


On 14-09-28 12:18 , Niklas Holsti wrote:

> After several attempts, it seems that the a,w,s,d keys do work, but the
> game is rapid enough, and over so quickly if one makes a mistake, that
> there is hardly any time to try things and learn how they work, on the
> first attempt. 

 ...

> Suggestions:

 ...

> 1. Make it clear that the initial screen, with the growing row of
> asterisks, is not yet the game, and does not respond to the a,w,s,d keys.

and

1.5 The game should not respond to any buffered a,w,s,d keys the user
may have pressed, by mistake, while seeing the asterisk row grow, before
the game really starts. I think this was one of my initial problems.

-- 
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
      .      @       .


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-23 18:20 Gnoga - The GNU Omnificent GUI for Ada David Botton
                   ` (5 preceding siblings ...)
  2014-09-28  9:06 ` David Botton
@ 2014-09-29  2:42 ` David Botton
  2014-09-30  3:31   ` David Botton
  2014-10-02  2:54 ` David Botton
                   ` (6 subsequent siblings)
  13 siblings, 1 reply; 58+ messages in thread
From: David Botton @ 2014-09-29  2:42 UTC (permalink / raw)


Today's update:

1) I have made numerous fixes to make sure the Ada code is compliant with my Ada coding standards.
2) I've made a number of bug fixes
3) I added a Console like View type with auto scrolling as elements added to bottom

4) I've added the first 2 tutorials on how to code in Gnoga
        http://sourceforge.net/p/gnoga/code/ci/master/tree/tutorial/

5) I've made the audio and video types functional, although they need somre more specific events and properites.
6) I added local client side storage support and session support based on sessionStorage



^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-29  2:42 ` David Botton
@ 2014-09-30  3:31   ` David Botton
  2014-09-30  9:39     ` tonyg
  2014-09-30  9:43     ` tonyg
  0 siblings, 2 replies; 58+ messages in thread
From: David Botton @ 2014-09-30  3:31 UTC (permalink / raw)


Todays Updates :)

1) 2 more Tutorials
2) Views will now deallocate dynamically created child objects on finalization
3) Moved Gnoga.Application.Multiuser to Gnoga.Application.Multi_Connect
4) Modified how app data is set for connections to now use the Main_Window, it will also deallocate it if dynamically created on finalization.
5) It is no longer necessary to use Connection.Hold unless desired for clean up on connection events.

In general as I am writing the tutorials I am doing as much as possible to simplify the API and make coding easier in Gnoga.

Here are a list of planned tutorials so far (the first 4 are now done and in the repo)

Tutorial-01 - Introduction to Gnoga applications
Tutorial-02 - Introduction to Event Handlers
Tutorial-03 - Introduction to Multi-Connection Apps
Tutorial-04 - Tasking and Gnoga
Tutorial-05 - Using the Canvas Control
Tutorial-06 - Popups windows, iFrames, and custom boot files with Gnoga
Tutorial-07 - Forms and Gnoga
Tutorial-08 - Database bindings and Schema Migrations using Gnoga
Tutorial-09 - Active Record - Data modeling in Gnoga
Tutorial-10 - Creating MVC apps and Sessions management in Gnoga

In each tutorial directory there is a README that summarizes additional aspects of Gnoga learned in that tutorial. It is worth reading through the READMEs and sources in each tutorial in order as they build on each other. They also teach far more than just their subject line about things you can do with Gnoga.


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-30  3:31   ` David Botton
@ 2014-09-30  9:39     ` tonyg
  2014-09-30 16:24       ` David Botton
  2014-09-30  9:43     ` tonyg
  1 sibling, 1 reply; 58+ messages in thread
From: tonyg @ 2014-09-30  9:39 UTC (permalink / raw)


On Tuesday, 30 September 2014 04:31:37 UTC+1, David Botton  wrote:
> Todays Updates :)
> 
> 
> 
> 1) 2 more Tutorials
> 
> 2) Views will now deallocate dynamically created child objects on finalization
> 
> 3) Moved Gnoga.Application.Multiuser to Gnoga.Application.Multi_Connect
> 
> 4) Modified how app data is set for connections to now use the Main_Window, it will also deallocate it if dynamically created on finalization.
> 
> 5) It is no longer necessary to use Connection.Hold unless desired for clean up on connection events.
> 
> 
> 
> In general as I am writing the tutorials I am doing as much as possible to simplify the API and make coding easier in Gnoga.
> 
> 
> 
> Here are a list of planned tutorials so far (the first 4 are now done and in the repo)
> 
> 
> 
> Tutorial-01 - Introduction to Gnoga applications
> 
> Tutorial-02 - Introduction to Event Handlers
> 
> Tutorial-03 - Introduction to Multi-Connection Apps
> 
> Tutorial-04 - Tasking and Gnoga
> 
> Tutorial-05 - Using the Canvas Control
> 
> Tutorial-06 - Popups windows, iFrames, and custom boot files with Gnoga
> 
> Tutorial-07 - Forms and Gnoga
> 
> Tutorial-08 - Database bindings and Schema Migrations using Gnoga
> 
> Tutorial-09 - Active Record - Data modeling in Gnoga
> 
> Tutorial-10 - Creating MVC apps and Sessions management in Gnoga
> 
> 
> 
> In each tutorial directory there is a README that summarizes additional aspects of Gnoga learned in that tutorial. It is worth reading through the READMEs and sources in each tutorial in order as they build on each other. They also teach far more than just their subject line about things you can do with Gnoga.

Hey I hope you are getting some sleep :)


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-30  3:31   ` David Botton
  2014-09-30  9:39     ` tonyg
@ 2014-09-30  9:43     ` tonyg
  2014-09-30 16:34       ` David Botton
  1 sibling, 1 reply; 58+ messages in thread
From: tonyg @ 2014-09-30  9:43 UTC (permalink / raw)


On Tuesday, 30 September 2014 04:31:37 UTC+1, David Botton  wrote:
> Todays Updates :)
> 
> 
> 
> 1) 2 more Tutorials
> 
> 2) Views will now deallocate dynamically created child objects on finalization
> 
> 3) Moved Gnoga.Application.Multiuser to Gnoga.Application.Multi_Connect
> 
> 4) Modified how app data is set for connections to now use the Main_Window, it will also deallocate it if dynamically created on finalization.
> 
> 5) It is no longer necessary to use Connection.Hold unless desired for clean up on connection events.
> 
> 
> 
> In general as I am writing the tutorials I am doing as much as possible to simplify the API and make coding easier in Gnoga.
> 
> 
> 
> Here are a list of planned tutorials so far (the first 4 are now done and in the repo)
> 
> 
> 
> Tutorial-01 - Introduction to Gnoga applications
> 
> Tutorial-02 - Introduction to Event Handlers
> 
> Tutorial-03 - Introduction to Multi-Connection Apps
> 
> Tutorial-04 - Tasking and Gnoga
> 
> Tutorial-05 - Using the Canvas Control
> 
> Tutorial-06 - Popups windows, iFrames, and custom boot files with Gnoga
> 
> Tutorial-07 - Forms and Gnoga
> 
> Tutorial-08 - Database bindings and Schema Migrations using Gnoga
> 
> Tutorial-09 - Active Record - Data modeling in Gnoga
> 
> Tutorial-10 - Creating MVC apps and Sessions management in Gnoga
> 
> 
> 
> In each tutorial directory there is a README that summarizes additional aspects of Gnoga learned in that tutorial. It is worth reading through the READMEs and sources in each tutorial in order as they build on each other. They also teach far more than just their subject line about things you can do with Gnoga.

I am keenly following this project, and the tutorials is a great idea. I was going to suggest making them part of the git share, but I see you have done that. 

I was also going to ask if there is any HTML5 side documentation that you would recommend to read to get a more thorough understanding of the workings of gnoga?


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-30  9:39     ` tonyg
@ 2014-09-30 16:24       ` David Botton
  2014-10-01  1:04         ` Shark8
  0 siblings, 1 reply; 58+ messages in thread
From: David Botton @ 2014-09-30 16:24 UTC (permalink / raw)


> Hey I hope you are getting some sleep :)

I mostly steel from sleep to have time to do this. So right now not much :)


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-30  9:43     ` tonyg
@ 2014-09-30 16:34       ` David Botton
  0 siblings, 0 replies; 58+ messages in thread
From: David Botton @ 2014-09-30 16:34 UTC (permalink / raw)


> I was also going to ask if there is any HTML5 side documentation that you would recommend to read to get a more thorough understanding of the workings of gnoga?

My purpose in writing Gnoga is so you don't have to know it :)

However, http://www.w3schools.com/ is a nice resource even though I've found many mistakes and omissions it is well and good enough for most of what is needed.

As time permits in the big picture I'll write some internal documentation as well. I have notes of important issues to discuss there.

One point about internals that you should understand (although it may take some time first depending on your knowledge of HTML5 and JS so far to get this) is that Gnoga creates objects _outside_ the Document's DOM and inserts them in later using the Element.Place_* methods or by way of views that use those methods internally. Gnoga assigns each new object to a place in the gnoga object on the page itself for internal reference. This is not the case for "attached" DOM objects that are only in the DOM and referenced by their DOM_ID (from Gnoga.Types.ID_Enumeration) always. So if they are removed from the DOM unless assigned to a JS variable and the ID_Type switche to Script they will be "lost".

The other point is that Gnoga (for the most part) to place a compatibility layer across browsers uses jQuery on the browser side and not directly JS DOM functions. This could easily be changed in a few lines of code and perhaps at some point I may.

David Botton


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-01  1:04         ` Shark8
@ 2014-10-01  0:22           ` David Botton
  2014-10-01  3:24             ` Shark8
  0 siblings, 1 reply; 58+ messages in thread
From: David Botton @ 2014-10-01  0:22 UTC (permalink / raw)


Spelling is not my strong point :)

So far for today added:

1) Ability to remove event handlers by setting to null
2) Corrected some bugs
3) Added Tutorial 05 - A quick little canvas drawing application to demonstrate the canvas and mouse events.


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-30 16:24       ` David Botton
@ 2014-10-01  1:04         ` Shark8
  2014-10-01  0:22           ` David Botton
  0 siblings, 1 reply; 58+ messages in thread
From: Shark8 @ 2014-10-01  1:04 UTC (permalink / raw)


On 9/30/2014 9:24 AM, David Botton wrote:
> I mostly steel from sleep to have time to do this.

Steel
  verb (used with object)
10. to fit with steel, as by pointing, edging, or overlaying.
11. to cause to resemble steel in some way.
12. to render insensible, inflexible, unyielding, determined, etc.:

Rendering your sleep insensible to get the time to do this... Hm?

;)


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-01  3:24             ` Shark8
@ 2014-10-01  2:55               ` David Botton
  2014-10-01  9:48                 ` tonyg
  2014-10-01 10:25                 ` tonyg
  0 siblings, 2 replies; 58+ messages in thread
From: David Botton @ 2014-10-01  2:55 UTC (permalink / raw)


>   Nice.

And now also Tutorial 06 - Popups and IFrames :)


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-01  0:22           ` David Botton
@ 2014-10-01  3:24             ` Shark8
  2014-10-01  2:55               ` David Botton
  0 siblings, 1 reply; 58+ messages in thread
From: Shark8 @ 2014-10-01  3:24 UTC (permalink / raw)


On 9/30/2014 5:22 PM, David Botton wrote:
> Spelling is not my strong point

Nor mine. :(

> So far for today added:
>
> 1) Ability to remove event handlers by setting to null
> 2) Corrected some bugs
> 3) Added Tutorial 05 - A quick little canvas drawing application
>    to demonstrate the canvas and mouse events.

  Nice.



^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-01  2:55               ` David Botton
@ 2014-10-01  9:48                 ` tonyg
  2014-10-01 13:13                   ` David Botton
  2014-10-01 13:47                   ` David Botton
  2014-10-01 10:25                 ` tonyg
  1 sibling, 2 replies; 58+ messages in thread
From: tonyg @ 2014-10-01  9:48 UTC (permalink / raw)


On Wednesday, 1 October 2014 03:55:11 UTC+1, David Botton  wrote:
> >   Nice.
> 
> 
> 
> And now also Tutorial 06 - Popups and IFrames :)

I've been playing with your library extensively since Monday, trying to fit it into something I've been doing. 

One thing I noticed, (don't know if this is due to silent exceptions being triggered in tasks) is that when I build stuff using Gnoga it works great inside my gnoga-code/bin directory, but when the executable is outside this directory, the web page still connects but nothing appears. 

I'll just keep running everything out of the gnoga bin directory for the moment, but I would be interested to know why this is, if anyone knows?


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-01  2:55               ` David Botton
  2014-10-01  9:48                 ` tonyg
@ 2014-10-01 10:25                 ` tonyg
  2014-10-01 13:31                   ` David Botton
  1 sibling, 1 reply; 58+ messages in thread
From: tonyg @ 2014-10-01 10:25 UTC (permalink / raw)


On Wednesday, 1 October 2014 03:55:11 UTC+1, David Botton  wrote:
> >   Nice.
> 
> 
> 
> And now also Tutorial 06 - Popups and IFrames :)

Is there a GUI tutorial coming soon, I am very interested in making views appear and disappear with button presses, data be updated in labels on the screen etc. and also for positioning of widgets etc.


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-01  9:48                 ` tonyg
@ 2014-10-01 13:13                   ` David Botton
  2014-10-01 13:47                   ` David Botton
  1 sibling, 0 replies; 58+ messages in thread
From: David Botton @ 2014-10-01 13:13 UTC (permalink / raw)


> I've been playing with your library extensively since Monday, trying to fit it into something I've been doing. 

Great :)

> when the executable is outside this directory, the web page still connects but nothing appears. 

I should add a tutorial on deployment for web and a some other docs until I write the programming guide / reference.

The structure needed for a Gnoga app is

App Dir
  |
  |___ bin - your gnoga app binary
  |
  |___ html - boot.html (or other boot loader used) and any static html files, etc.
  |
  |___ js - must contain jquery.min.js and jquery-ui.min.js (I may be dropping jquery-ui, we will see)
  |
  |___ css - must contain jquery-ui.css

> I'll just keep running everything out of the gnoga bin directory for the moment, but I would be interested to know why this is, if anyone knows?

The reason is that your Gnoga apps are a full webserver in addition to websocket server for gnoga apps.

Gnoga depends on jQuery and a boot loader file that contains the needed websocket connection code (see boot.html which is the default file used.)


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-01 10:25                 ` tonyg
@ 2014-10-01 13:31                   ` David Botton
  2014-10-01 15:11                     ` tonyg
  0 siblings, 1 reply; 58+ messages in thread
From: David Botton @ 2014-10-01 13:31 UTC (permalink / raw)


> Is there a GUI tutorial coming soon

Everything so far are GUI tutorials, but I think you want something that looks closer to a VB setup

>, I am very interested in making views appear and disappear with button presses, data be updated in labels on the screen etc. and also for positioning of widgets etc.

The next tutorial on forms will I am sure be what you are looking for. I hope to have time to do it today. I've been working on binding some remaining parts, for example last night I added the ability to create autocomplete lists for inputs and fieldsets for group form elements.

The example will show you how to create and interact with form elements, etc.

As for more about positioning, I think a full tutorial on that alone is very called for and will add it to the list now and see if I can skip ahead and do that sooner rather than later.

In the mean time, to "manually" position anything anywhere, after creating your element do:

My_Button.Position (Fixed);
My_Button.Top (10);
My_Button.Left (10);

One you change the Position system to Fixed you can then place an element any place you want.

The default is Position (Static). Which means elements are added on after another at the bottom of the view as you add them. If they are block elements they take an entire row, if inline they are placed one after another from left to right.

You can change the default Display of an element to be inline or block using: My_Element.Display (block); or My_Element.Display (inline);

I realize this may be too much info for now :) I am adding View types that allow for all sorts of automatic positioning, columns, etc. in the near future.

When I get the positioning tutorial done it will all make more sense and can see how simple it can be.

As for hiding and displaying Views. Views are like any other element and can be placed in to other Views, styled, etc. The default create does make it resize and take up the entire window if the window is the parent. So given that you can have many views ( or any element) and display and hide each as desired using:

My_View_or_Element.Hidden; or  My_View_or_Element.Hidden (False);
This will make an element be completely hidden from view and take no space on the page.

or

My_View_or_Element.Visible (False); or  My_View_or_Element.Visible);
This will make an element not be visible but it will still take up the same space it did before on page.

I'll make sure there are examples of all the above in coming tutorials.

David Botton




^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-01  9:48                 ` tonyg
  2014-10-01 13:13                   ` David Botton
@ 2014-10-01 13:47                   ` David Botton
  2014-10-01 19:06                     ` David Botton
  1 sibling, 1 reply; 58+ messages in thread
From: David Botton @ 2014-10-01 13:47 UTC (permalink / raw)


> when the executable is outside this directory, the web page still connects but nothing appears. 


I've added a file at the root - DEPLOYING_APPS explaining directory layouts for deployment (and development)

I've also added to the TOC for the tutorials the future positioning tutorial.

David Botton


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-01 13:31                   ` David Botton
@ 2014-10-01 15:11                     ` tonyg
  0 siblings, 0 replies; 58+ messages in thread
From: tonyg @ 2014-10-01 15:11 UTC (permalink / raw)


On Wednesday, 1 October 2014 14:31:22 UTC+1, David Botton  wrote:
> > Is there a GUI tutorial coming soon
> 
> 
> 
> Everything so far are GUI tutorials, but I think you want something that looks closer to a VB setup
> 
> 
> 
> >, I am very interested in making views appear and disappear with button presses, data be updated in labels on the screen etc. and also for positioning of widgets etc.

Great, thanks for that....
> 
> 
> 
> The next tutorial on forms will I am sure be what you are looking for. I hope to have time to do it today. I've been working on binding some remaining parts, for example last night I added the ability to create autocomplete lists for inputs and fieldsets for group form elements.
> 
> 
> 
> The example will show you how to create and interact with form elements, etc.
> 
> 
> 
> As for more about positioning, I think a full tutorial on that alone is very called for and will add it to the list now and see if I can skip ahead and do that sooner rather than later.
> 
> 
> 
> In the mean time, to "manually" position anything anywhere, after creating your element do:
> 
> 
> 
> My_Button.Position (Fixed);
> 
> My_Button.Top (10);
> 
> My_Button.Left (10);
> 
> 
> 
> One you change the Position system to Fixed you can then place an element any place you want.
> 
> 
> 
> The default is Position (Static). Which means elements are added on after another at the bottom of the view as you add them. If they are block elements they take an entire row, if inline they are placed one after another from left to right.
> 
> 
> 
> You can change the default Display of an element to be inline or block using: My_Element.Display (block); or My_Element.Display (inline);
> 
> 
> 
> I realize this may be too much info for now :) I am adding View types that allow for all sorts of automatic positioning, columns, etc. in the near future.
> 
> 
> 
> When I get the positioning tutorial done it will all make more sense and can see how simple it can be.
> 
> 
> 
> As for hiding and displaying Views. Views are like any other element and can be placed in to other Views, styled, etc. The default create does make it resize and take up the entire window if the window is the parent. So given that you can have many views ( or any element) and display and hide each as desired using:
> 
> 
> 
> My_View_or_Element.Hidden; or  My_View_or_Element.Hidden (False);
> 
> This will make an element be completely hidden from view and take no space on the page.
> 
> 
> 
> or
> 
> 
> 
> My_View_or_Element.Visible (False); or  My_View_or_Element.Visible);
> 
> This will make an element not be visible but it will still take up the same space it did before on page.
> 
> 
> 
> I'll make sure there are examples of all the above in coming tutorials.
> 
> 
> 
> David Botton



^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-01 13:47                   ` David Botton
@ 2014-10-01 19:06                     ` David Botton
  0 siblings, 0 replies; 58+ messages in thread
From: David Botton @ 2014-10-01 19:06 UTC (permalink / raw)


I decided to remove jQueryUI requirements, if I add any controls from there the js and css files will be added dynamically then.


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-23 18:20 Gnoga - The GNU Omnificent GUI for Ada David Botton
                   ` (6 preceding siblings ...)
  2014-09-29  2:42 ` David Botton
@ 2014-10-02  2:54 ` David Botton
  2014-10-02  8:58   ` tonyg
  2014-10-02 10:17   ` tonyg
  2014-10-03  2:50 ` David Botton
                   ` (5 subsequent siblings)
  13 siblings, 2 replies; 58+ messages in thread
From: David Botton @ 2014-10-02  2:54 UTC (permalink / raw)


Today I added drag and drop support and a new Tutorial that demonstrates how to use drag and drop, it also uses fixed positioning of elements.


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-02  2:54 ` David Botton
@ 2014-10-02  8:58   ` tonyg
  2014-10-02 10:17   ` tonyg
  1 sibling, 0 replies; 58+ messages in thread
From: tonyg @ 2014-10-02  8:58 UTC (permalink / raw)


On Thursday, 2 October 2014 03:54:17 UTC+1, David Botton  wrote:
> Today I added drag and drop support and a new Tutorial that demonstrates how to use drag and drop, it also uses fixed positioning of elements.

I'll go through it 


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-02  2:54 ` David Botton
  2014-10-02  8:58   ` tonyg
@ 2014-10-02 10:17   ` tonyg
  2014-10-02 15:43     ` David Botton
  1 sibling, 1 reply; 58+ messages in thread
From: tonyg @ 2014-10-02 10:17 UTC (permalink / raw)


On Thursday, 2 October 2014 03:54:17 UTC+1, David Botton  wrote:
> Today I added drag and drop support and a new Tutorial that demonstrates how to use drag and drop, it also uses fixed positioning of elements.

Part of the user interface I am building involves the rooms in peoples house and devices which are placed in rooms. 

So in my UI the devices could potentially be dragged and dropped between rooms. I am sort of struggling in my imagination how I actually track which devices though are dragged and dropped to each room if you see what I mean, after studying your example.

Another problem I have is that the App_Data type is generated at compile time when I want really to be able to populate this or even possible update it during the use of the web app.

Forgive the pun, but do you have any pointers here :)


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-02 10:17   ` tonyg
@ 2014-10-02 15:43     ` David Botton
  2014-10-02 17:26       ` tonyg
  0 siblings, 1 reply; 58+ messages in thread
From: David Botton @ 2014-10-02 15:43 UTC (permalink / raw)


> So in my UI the devices could potentially be dragged and dropped between rooms. I am sort of struggling in my imagination how I actually track which devices though are dragged and dropped to each room if you see what I mean, after studying your example.

Don't think of Drag_Text as just text. Use it to pass between objects an index to data in a DB or data structures, etc.

> Another problem I have is that the App_Data type is generated at compile time when I want really to be able to populate this or even possible update it during the use of the web app.

I don't think any tutorials talk about it yet, but any control created on the heap and marked as dynamic is cleaned up when a view finalizes, so its not per se needed to use the App_Data.

There are also other ways of working such as the AdaBlog in /demo that uses an MVC static page model and again no need for App_Data.

> Forgive the pun, but do you have any pointers here :)

Actually pointers is your answer :)

David Botton


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-02 15:43     ` David Botton
@ 2014-10-02 17:26       ` tonyg
  2014-10-03  2:21         ` David Botton
                           ` (2 more replies)
  0 siblings, 3 replies; 58+ messages in thread
From: tonyg @ 2014-10-02 17:26 UTC (permalink / raw)


On Thursday, 2 October 2014 16:43:17 UTC+1, David Botton  wrote:
> > So in my UI the devices could potentially be dragged and dropped between rooms. I am sort of struggling in my imagination how I actually track which devices though are dragged and dropped to each room if you see what I mean, after studying your example.
> 
> 
> 
> Don't think of Drag_Text as just text. Use it to pass between objects an index to data in a DB or data structures, etc.
> 
> 
> 
> > Another problem I have is that the App_Data type is generated at compile time when I want really to be able to populate this or even possible update it during the use of the web app.
> 
> 
> 
> I don't think any tutorials talk about it yet, but any control created on the heap and marked as dynamic is cleaned up when a view finalizes, so its not per se needed to use the App_Data.
> 
> 
> 
> There are also other ways of working such as the AdaBlog in /demo that uses an MVC static page model and again no need for App_Data.
> 
> 
> 
> > Forgive the pun, but do you have any pointers here :)
> 
> 
> 
> Actually pointers is your answer :)
> 
> 
> 
> David Botton

I'm looking at adablog now. I discovered some new stuff here. I never knew you could initialise a package like adablog.controller. 

If I wanted to change the adablog code so I could edit an entry, I suppose I would have attached a link to each blog post, but how would that value identifying the link pass its information ?


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-02 17:26       ` tonyg
@ 2014-10-03  2:21         ` David Botton
       [not found]         ` <5ca5a27d-9338-4b20-97d9-62ce7c952898@googlegroups.com>
  2014-10-03  2:30         ` David Botton
  2 siblings, 0 replies; 58+ messages in thread
From: David Botton @ 2014-10-03  2:21 UTC (permalink / raw)



> If I wanted to change the adablog code so I could edit an entry, I suppose I would have attached a link to each blog post, but how would that value identifying the link pass its information ?

using get parameters, but that example is to show the flexibility of the framework, not best practice :) see Readme.

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
       [not found]         ` <5ca5a27d-9338-4b20-97d9-62ce7c952898@googlegroups.com>
@ 2014-10-03  2:28           ` David Botton
  2014-10-03  3:34             ` David Botton
  2014-10-03  9:04             ` tonyg
  0 siblings, 2 replies; 58+ messages in thread
From: David Botton @ 2014-10-03  2:28 UTC (permalink / raw)


> If I create five buttons and attach the same on click handler, how do I identify the button clicked to the code inside the handler?

There are many ways to do it, here is a simple way (notice the use of dynamic controls, views will deallocate them when they are finalized). When you create each button, give it an ID. e.g.

declare
   My_Button : Button_Access;
begin
   My_Button := new Button_Type;
   My_Button.Create (My_View, "Click Me 1", ID="b1");
   My_Button.On_Click_Handler (My_Click'Access);

   My_Button := new Button_Type;
   My_Button.Create (My_View, "Click Me 2", ID="b2");
   My_Button.On_Click_Handler (My_Click'Access);
end;

procedure My_Click (Object : Base_Type'Class) is
begin
   if Object.ID = "b1" then
      Gnoga.Log ("Clicked Button 1");
   if Object.ID = "b2" then
      Gnoga.Log ("Click Button 2");
   end if;
end My_Click;


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-02 17:26       ` tonyg
  2014-10-03  2:21         ` David Botton
       [not found]         ` <5ca5a27d-9338-4b20-97d9-62ce7c952898@googlegroups.com>
@ 2014-10-03  2:30         ` David Botton
  2 siblings, 0 replies; 58+ messages in thread
From: David Botton @ 2014-10-03  2:30 UTC (permalink / raw)


> If I wanted to change the adablog code so I could edit an entry, I suppose I would have attached a link to each blog post, but how would that value identifying the link pass its information ?

BTW, See Gnoga.Gui.Window_Type.Search_Parameter for documentation on the Get parameters.

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-23 18:20 Gnoga - The GNU Omnificent GUI for Ada David Botton
                   ` (7 preceding siblings ...)
  2014-10-02  2:54 ` David Botton
@ 2014-10-03  2:50 ` David Botton
  2014-10-03 11:21 ` David Botton
                   ` (4 subsequent siblings)
  13 siblings, 0 replies; 58+ messages in thread
From: David Botton @ 2014-10-03  2:50 UTC (permalink / raw)


BTW, as of the last git push, I've completed binding all the DOM needed for application development.

Most of my development now towards 1.0 will be on (prioritized list):

1. Layout View types
2. Tutorials and Demos
3. Custom Gnoga Specific Widgets (Floating dialogs, Tab Views, etc.)
4. Any additional simplification I can bring to the API
5. User Guide and Reference Guide
6. Development tools in and for Gnoga

I have dropped the idea of binding jQuery UI since most of its functionality is either already in Gnoga or the Gnoga Custom widgest will provide it.


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-03  2:28           ` David Botton
@ 2014-10-03  3:34             ` David Botton
  2014-10-03  5:17               ` Jeffrey Carter
  2014-10-03  9:04             ` tonyg
  1 sibling, 1 reply; 58+ messages in thread
From: David Botton @ 2014-10-03  3:34 UTC (permalink / raw)


Forgot need to mark Dynamic before create for the automatic garbage collection.

> declare
> 
>    My_Button : Button_Access;
> 
> begin
> 
>    My_Button := new Button_Type;

My_Button.Dynamic;

> 
>    My_Button.Create (My_View, "Click Me 1", ID="b1");
> 
>    My_Button.On_Click_Handler (My_Click'Access);
> 
>    My_Button := new Button_Type;

My_Button.Dynamic;

>    My_Button.Create (My_View, "Click Me 2", ID="b2");
> 
>    My_Button.On_Click_Handler (My_Click'Access);
> 
> end;

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-03  3:34             ` David Botton
@ 2014-10-03  5:17               ` Jeffrey Carter
  2014-10-03 11:15                 ` David Botton
  0 siblings, 1 reply; 58+ messages in thread
From: Jeffrey Carter @ 2014-10-03  5:17 UTC (permalink / raw)


On 10/02/2014 08:34 PM, David Botton wrote:
>>
>>    My_Button.Create (My_View, "Click Me 1", ID="b1");

So Create takes a Boolean for its 3rd parameter?

-- 
Jeff Carter
"My little plum, I am like Robin Hood. I take from
the rich, and I give to the poor. ... Us poor."
Poppy
96


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-03  2:28           ` David Botton
  2014-10-03  3:34             ` David Botton
@ 2014-10-03  9:04             ` tonyg
  1 sibling, 0 replies; 58+ messages in thread
From: tonyg @ 2014-10-03  9:04 UTC (permalink / raw)


On Friday, 3 October 2014 03:28:49 UTC+1, David Botton  wrote:
> > If I create five buttons and attach the same on click handler, how do I identify the button clicked to the code inside the handler?
> 
> 
> 
> There are many ways to do it, here is a simple way (notice the use of dynamic controls, views will deallocate them when they are finalized). When you create each button, give it an ID. e.g.
> 
> 
> 
> declare
> 
>    My_Button : Button_Access;
> 
> begin
> 
>    My_Button := new Button_Type;
> 
>    My_Button.Create (My_View, "Click Me 1", ID="b1");
> 
>    My_Button.On_Click_Handler (My_Click'Access);
> 
> 
> 
>    My_Button := new Button_Type;
> 
>    My_Button.Create (My_View, "Click Me 2", ID="b2");
> 
>    My_Button.On_Click_Handler (My_Click'Access);
> 
> end;
> 
> 
> 
> procedure My_Click (Object : Base_Type'Class) is
> 
> begin
> 
>    if Object.ID = "b1" then
> 
>       Gnoga.Log ("Clicked Button 1");
> 
>    if Object.ID = "b2" then
> 
>       Gnoga.Log ("Click Button 2");
> 
>    end if;
> 
> end My_Click;

Thanks David, thats really helpful :)

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-03  5:17               ` Jeffrey Carter
@ 2014-10-03 11:15                 ` David Botton
  0 siblings, 0 replies; 58+ messages in thread
From: David Botton @ 2014-10-03 11:15 UTC (permalink / raw)



> So Create takes a Boolean for its 3rd parameter?

I wish I had your in brain compiler :)

Thanks for raising the exception :)

I just wrote that from the head, should have compiled first.

My_Button.Create (My_View, "Click Me 1", ID=>"b1"); 


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-23 18:20 Gnoga - The GNU Omnificent GUI for Ada David Botton
                   ` (8 preceding siblings ...)
  2014-10-03  2:50 ` David Botton
@ 2014-10-03 11:21 ` David Botton
  2014-10-03 11:36   ` Björn Lundin
  2014-10-03 19:05 ` David Botton
                   ` (3 subsequent siblings)
  13 siblings, 1 reply; 58+ messages in thread
From: David Botton @ 2014-10-03 11:21 UTC (permalink / raw)


I added the following to Gnoga.Application:

Lauch_URL_OSX
Lauch_URL_Windows
Lauch_URL_Linux

They will open the users default browser to url which by default is localhost:8080

That should make it more convenient when running a Gnoga app to pop the browser open for local apps.

I don't have the time yet to write examples or additions for completely native apps, but is simple enough. On Mac OS X, a simple XCode project with a browser, on Linux can create a gtk app with a browser, and on Windows, using GWindows easy to embed IE.

David Botton

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-03 11:21 ` David Botton
@ 2014-10-03 11:36   ` Björn Lundin
  2014-10-03 18:59     ` David Botton
  0 siblings, 1 reply; 58+ messages in thread
From: Björn Lundin @ 2014-10-03 11:36 UTC (permalink / raw)


On 2014-10-03 13:21, David Botton wrote:
> I added the following to Gnoga.Application:
> 
> Lauch_URL_OSX
> Lauch_URL_Windows
> Lauch_URL_Linux

please make it

 Launch_URL_OSX
 Launch_URL_Windows
 Launch_URL_Linux

;-)

--
Björn

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-03 11:36   ` Björn Lundin
@ 2014-10-03 18:59     ` David Botton
  0 siblings, 0 replies; 58+ messages in thread
From: David Botton @ 2014-10-03 18:59 UTC (permalink / raw)


> > Lauch_URL_OSX

Sorry is actually Open_URL_*

So I was really off :)

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-23 18:20 Gnoga - The GNU Omnificent GUI for Ada David Botton
                   ` (9 preceding siblings ...)
  2014-10-03 11:21 ` David Botton
@ 2014-10-03 19:05 ` David Botton
  2014-10-04  5:18   ` Shark8
  2014-10-05 18:23 ` tonyg
                   ` (2 subsequent siblings)
  13 siblings, 1 reply; 58+ messages in thread
From: David Botton @ 2014-10-03 19:05 UTC (permalink / raw)


Gnoga now has the ability to parse PHP and Python.

Before anyone starts attacking me...

While yes for some bizarre reason people could use it to actually server PHP or Pyhton pages from Gnoga apps, but that would be _abuse_.

PHP works very well as a template parser. It is the reason I added it and how I've used it in the past with Ada for web work.

I added it since I use PHP with Ada together to parse out templates for tools I am writing to generate new application build directories, custom bindings to database tables, etc.

I will explore Ada only template engines, perhaps even write one, but in the mean time, it works :)

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-03 19:05 ` David Botton
@ 2014-10-04  5:18   ` Shark8
  2014-10-05  1:17     ` David Botton
  0 siblings, 1 reply; 58+ messages in thread
From: Shark8 @ 2014-10-04  5:18 UTC (permalink / raw)


On 10/3/2014 12:05 PM, David Botton wrote:
> PHP works very well as a template parser.

But what about the template parser for AWS>
(And I would argue that PHP is *NOT* a good template parser... but 
that's another rant.)

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-04  5:18   ` Shark8
@ 2014-10-05  1:17     ` David Botton
  0 siblings, 0 replies; 58+ messages in thread
From: David Botton @ 2014-10-05  1:17 UTC (permalink / raw)


That is already available since Gnoga uses AWS. However, I'll take a look if makes sense to create a compatibility binding.

David Botton

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-23 18:20 Gnoga - The GNU Omnificent GUI for Ada David Botton
                   ` (10 preceding siblings ...)
  2014-10-03 19:05 ` David Botton
@ 2014-10-05 18:23 ` tonyg
  2014-10-07  4:31 ` David Botton
  2014-10-08  2:52 ` David Botton
  13 siblings, 0 replies; 58+ messages in thread
From: tonyg @ 2014-10-05 18:23 UTC (permalink / raw)


On Tuesday, 23 September 2014 19:20:42 UTC+1, David Botton  wrote:
> This is not an announcement of a 1.0 yet, but a progress report. It helps me stay focused and motivated along with a source for ideas and inspiration to post things, so here we go.
> 
> 
> 
> BTW, you can play the snake game running in Ada now over the internet, http://www.gnoga.com - NO JS and HTML that is done with Gnoga bindings to the Canvas and DOM.
> 
> 
> 
> I am busy working on the code at the moment so the documentation is mainly in the specs and samples for the moment and I have not had time to make a nice website for it yet, however http://www.gnoga.com is there and a link to the sourceforge site.
> 
> 
> 
> An introduction to what it is:
> 
> 
> 
> 1. First and foremost the project goal is a cross platform GUI toolkit. but Instead of targeting Windows, X, Gtk or Qt, it targets the HTML5 browser. No not HTML or JS, the "browser". It acts like a "terminal" for Gnoga to render its magic. If you try and do a view source on the browser all you will get is the websocket code used to set up the communications. Long term you will be able to package a native app (.exe, .app, etc.)
> 
> 
> 
> 2. Because the "browser" is the target it means that Gnoga applications can run local or remote. If you can get AWS running on your "board" you can use Gnoga for the front end. Yes you could write HTML and respond to Http requests etc using AWS, but with Gnoga your app is always connected and live in the browser back to the server. You can be showing real time stats, no Ajax, JSON, etc to worry about, oh yes and all of it is in Ada you don't have to touch those sick little braces { } pocked with ;;;;
> 
> 
> 
> 3. It just happens to be that Gnoga can also create great websites with dynamic content using HTML, CSS and Ada (that's right not JS)... It's a nice bonus.
> 
> 
> 
> 4. In fact Gnoga comes already with a number of Ada on Rails like features. Including Active Record support with bindings to MySQL and SQLite and can easily be expanded to other SQL engines.
> 
> 
> 
> 5. There is a whole lot there already but.. there is still a lot more to go. Don't pass judgement till at least all the components are in, 6-8 weeks.
> 
> 
> 
> 6. With this you will get things like OpenGL programming via WebGL (coming), it already has a full canvas 2d binding, and any other techi goodness thrown at the web.
> 
> 
> 
> 7. Multimedia bindings are not far behind for video, audio, etc.
> 
> 
> 
> 8. You will get access to client side HTML5 goodness like local storage on the client browser, etc. it's all coming.
> 
> 
> 
> 9. Gnoga can easily use now or be extended later to bind anything that can run in a browser, JS GUI toolkits, XUL for direct native apps, etc. etc.
> 
> 
> 
> 10. While most of the world is fighting to get JS and HTML to run and do anything, Ada get's to sit back and enjoy the ride to every new tech as it comes and still have a solid language and the ability to create secure Web apps and services dispatched from solid systems.
> 
> 
> 
> It's tough to get the full vision in words and there are not too many pictures to see, but if I get you excited about Ada for application development, well than I'm getting somewhere and we will both arrive soon enough at the goal :)
> 
> 
> 
> David Botton

In Gtkada you have labels which are holders which contain text, I'm wondering what the equivalent is in Gnoga?


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-23 18:20 Gnoga - The GNU Omnificent GUI for Ada David Botton
                   ` (11 preceding siblings ...)
  2014-10-05 18:23 ` tonyg
@ 2014-10-07  4:31 ` David Botton
  2014-10-08  2:52 ` David Botton
  13 siblings, 0 replies; 58+ messages in thread
From: David Botton @ 2014-10-07  4:31 UTC (permalink / raw)


Another update, I've been making tons of commits daily, a few nice new things:

Gnoga.Gui.View.Card - Multi card stack views
Gnoga.Gui.Docker - Dock views to sides of browser

All Views can be nested, which means Docker can be used to create great layouts of all times.

A few tweaks for mobile display.

You can now create style blocks to insert CSS if desired easily in addition to loading outside CSS files or just using properties of elements.

Support for <address>, <article>, <aside>, <header>, <main>, <nav>, <p>, <pre>, <section>
Gnoga.Gui.Element.Section

Lists - <dl>,<dd>,<dt>, <ul>,<ol>,<li>
Gnoga.Gui.Element.List

Views now have built in element maps that can be used to easily create dynamic elements and stored there or for easily building more complex views.

Support now for OptGroup in From.Selection_Type



^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-23 18:20 Gnoga - The GNU Omnificent GUI for Ada David Botton
                   ` (12 preceding siblings ...)
  2014-10-07  4:31 ` David Botton
@ 2014-10-08  2:52 ` David Botton
  13 siblings, 0 replies; 58+ messages in thread
From: David Botton @ 2014-10-08  2:52 UTC (permalink / raw)


Today lots of fixes
A new logo for Gnoga - http://gnoga.com

Now "Tabs" for use with Gnoga.Gui.View.Card - Multi card stack views . See the /test/layouts.adb if you would like to see Docker, Nested Docker, Cards + Tabs in action.

I'm about ready to get back to the tutorials. I needed layouts (i.e. docker) and wanted tabbed dialogs first.

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-09-28  9:18       ` Niklas Holsti
  2014-09-28  9:51         ` Niklas Holsti
@ 2014-10-20 21:03         ` David Botton
  2014-10-21 10:07           ` Brian Drummond
  1 sibling, 1 reply; 58+ messages in thread
From: David Botton @ 2014-10-20 21:03 UTC (permalink / raw)


> Caps lock is off, keyboard layout is German (so the geometrical
> arrangement of a,w,s,d is not so suggestive).

I have fixed the Gnoga Snake demo to now use Arrow keys also, both on web and in git.

David Botton


^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: Gnoga - The GNU Omnificent GUI for Ada
  2014-10-20 21:03         ` David Botton
@ 2014-10-21 10:07           ` Brian Drummond
  0 siblings, 0 replies; 58+ messages in thread
From: Brian Drummond @ 2014-10-21 10:07 UTC (permalink / raw)


On Mon, 20 Oct 2014 14:03:37 -0700, David Botton wrote:

>> Caps lock is off, keyboard layout is German (so the geometrical
>> arrangement of a,w,s,d is not so suggestive).
> 
> I have fixed the Gnoga Snake demo to now use Arrow keys also, both on
> web and in git.

... also making it significantly less confusing to Dvorak users!


- Brian

^ permalink raw reply	[flat|nested] 58+ messages in thread

end of thread, other threads:[~2014-10-21 10:07 UTC | newest]

Thread overview: 58+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-09-23 18:20 Gnoga - The GNU Omnificent GUI for Ada David Botton
2014-09-23 19:38 ` Anh Vo
2014-09-24  7:15 ` Thomas Løcke
2014-09-24  9:57 ` tonyg
2014-09-24 11:59   ` David Botton
2014-09-26 14:17     ` tonyg
2014-09-28  1:24       ` David Botton
2014-09-24 21:16 ` David Botton
2014-09-24 21:25   ` Jeffrey Carter
2014-09-24 21:36     ` David Botton
2014-09-25  4:26 ` Nasser M. Abbasi
2014-09-28  1:17   ` David Botton
2014-09-28  8:02   ` Niklas Holsti
2014-09-28  8:26     ` David Botton
2014-09-28  9:18       ` Niklas Holsti
2014-09-28  9:51         ` Niklas Holsti
2014-10-20 21:03         ` David Botton
2014-10-21 10:07           ` Brian Drummond
2014-09-28  9:06 ` David Botton
2014-09-29  2:42 ` David Botton
2014-09-30  3:31   ` David Botton
2014-09-30  9:39     ` tonyg
2014-09-30 16:24       ` David Botton
2014-10-01  1:04         ` Shark8
2014-10-01  0:22           ` David Botton
2014-10-01  3:24             ` Shark8
2014-10-01  2:55               ` David Botton
2014-10-01  9:48                 ` tonyg
2014-10-01 13:13                   ` David Botton
2014-10-01 13:47                   ` David Botton
2014-10-01 19:06                     ` David Botton
2014-10-01 10:25                 ` tonyg
2014-10-01 13:31                   ` David Botton
2014-10-01 15:11                     ` tonyg
2014-09-30  9:43     ` tonyg
2014-09-30 16:34       ` David Botton
2014-10-02  2:54 ` David Botton
2014-10-02  8:58   ` tonyg
2014-10-02 10:17   ` tonyg
2014-10-02 15:43     ` David Botton
2014-10-02 17:26       ` tonyg
2014-10-03  2:21         ` David Botton
     [not found]         ` <5ca5a27d-9338-4b20-97d9-62ce7c952898@googlegroups.com>
2014-10-03  2:28           ` David Botton
2014-10-03  3:34             ` David Botton
2014-10-03  5:17               ` Jeffrey Carter
2014-10-03 11:15                 ` David Botton
2014-10-03  9:04             ` tonyg
2014-10-03  2:30         ` David Botton
2014-10-03  2:50 ` David Botton
2014-10-03 11:21 ` David Botton
2014-10-03 11:36   ` Björn Lundin
2014-10-03 18:59     ` David Botton
2014-10-03 19:05 ` David Botton
2014-10-04  5:18   ` Shark8
2014-10-05  1:17     ` David Botton
2014-10-05 18:23 ` tonyg
2014-10-07  4:31 ` David Botton
2014-10-08  2:52 ` David Botton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox