Announce: AdaStudio-2024 release 02/04/2024 free edition

AdaStudio-2024 based on Qt-6.7.0-everywhere opensource (expanded with modules from Qt-5.15: qtgamepad, qtx11extras,qtwinextras),VTK-9.3.0,FFMPEG-6.0.0,OpenCV-4.9.0,SDL2-2.24.0,QtAV-1.13 MDK-SDK(wang-bin)
Qt6ada version 6.7.0 open source and qt6base.dll ,qt6ext.dll (win64),, built with Microsoft Visual Studio 2023 x64 Windows, gcc amd64 in Linux.
Package tested with gnat gpl 2020 ada compiler in Windows 64bit , Linux amd64 Debian 11.2
AdaStudio-2024 includes next modules : qt6ada,vtkada,qt6mdkada,qt6cvada(face recognition, face detection,face identification,objects detectection,QRcode detector,BARcode detection and others ) and voice recognizer.
Qt6Ada is built under GNU LGPLv3 license GNU Lesser General Public License v3.0 - GNU Project - Free Software Foundation.
Qt6Ada modules for Windows, Linux (Unix) are available from
Google drive AdaStudio - Google Drive
WebPage is
Directories tree is
AdaStudio root
Prebuilt - Qt-6.7.0, VTK-9.3.0, FFMPEG-6,Opencv-4.9.0,SDL2-2.24.0,QtAV-1.13 MDK-SDK
Win64 - prebuilt for Windows x64
qt-6.7.0win64.tar.xz - Qt-6.7.0
vtk-9.3.0win64.tar.xz - VTK-9.3.0
ffmpeg-6.1win64.tar.xz - FFMPEG-6.1.0
opencv-4.9.0win64.tar.xz - OpenCV-4.9.0
sdl2-2.24.0win64.tar.xz - SDL2-2.0.24
qtav1.13win64.tar.xz - QtAV 1.13(ffmpeg 6)
AMD64 - prebuilt binaries for Linux/Unix Desktop amd64 (Debian 11)
qt-6.7.0amd64.tar.xz - Qt-6.7.0
vtk-9.3.0amd64.tar.xz - VTK-9.3.0
ffmpeg-6.0amd64.tar.xz - FFMPEG-6.0.0
opencv-4.9.0amd64.tar.xz - OpenCV-4.9.0
sdl2-2.24.0amd64.tar.xz - SDL2-2.24.0
qtav1.13amd64.tar.xz - QtAV 1.13(ffmpeg 6)
Some components(Multimedia,Web) no correct works in linux root mode !
qt6ada - qt6ada components
qt6adademos.tar.xz - qt6ada demos
qt6adasrc.tar.xz - qt6ada packages
qt6adawin64.tar.xz - qt6ada win64 binaries
qt6adaamd64.tar.xz - qt6ada amd64 binaries
mdkada - qt6mdkada components - qt6mdkada package
mdkadademos.tar.bz2 - qt6mdkada demos
mdkadawin64.tar.bz2 - qt6mdkada win64 binaries
mdkadaamd64.tar.bz2 - qt6mdkada amd64 binaries
mdk-sdk-0.16.0.tar.xz - mdk-sdk binaries win64 amd64
qtavada - qt6avada components
qt6avadasrc.tar.xz - qt6avada packages
qt6avadademos.tar.xz - qt6avada demos
qt6avadawin64.tar.xz - qt6avada win64 binaries
qt6adaamd64.tar.xz - qt6avada amd64 binaries
qtopencvada - qt6opencvada components (with seta,ndnn,yolov models support)
qt6opencvadademos.tar.xz - qt6opencvada demos
qt6opencvadasrc.tar.xz - qt6opencvada packages
qt6opencvadawin64.tar.xz - qt6opencvada win64 binaries
qt6opencvadaamd64.tar.xz - qt6opencvada amd64 binaries
voicerecognizer - qt6ada voicerecognizer components
adasphinx.tar.xz - Sphinx voice recornizer
adawhisper.tar.xz - Whisper AI Voice recognizer(experimental)
vtkada - vtk9ada componenets
vtkadademo.tar.xz - vtkada demos
vtkadasrc.tar.xz - vtkada packages
vtkadawin64.tar.xz - vtkada win64 binaries
vtkadaamd64.tar.xz - vtkada amd64 binaries

The full list of released classes is in “Qt6 classes to Qt6Ada packages relation table.pdf”
The simple manual how to build Qt6Ada application can be read in “How to use Qt6ada.pdf”
If you have any problems or questions, tell me know.

I don’t really know what I’m looking at here. Is this an IDE? A package manager? A compiler?

A list of tarballs and version numbers is not really useful.

I think it’s kind of a QT wrapper/thick binding in Ada.

Never succeeded to use it with previous versions and developed with no transparency. I won’t try this time.

Sad as there’s no real GUI toolkit for Ada:

  • Gtkada is stuck to 3.24, in minimal maintenance mode and with no plan for the future. Not a good choice for new projects.
  • Qt / VTK are not in an usable state.
  • Gnoga / AdaGui are surely nice, but I don’t want to launch a browser just to print “Hello world!”.
  • Fltk? There seems to be some revival of the binding in 2024.

You have a lot more options than that. You can fire up a Gtk window with webtoolkit enabled and use that, which avoids all of the headache of actually using GTK since you use the gnoga stuff and GTK is just there for a window. I did something similar with java. I wrote a 20ish line program that launched an HTML view and ran Gnoga in it. Basically anything that can render HTML and JS can be used for Gnoga.

There is this:

For Ada, and fully in Ada as well.

Gnavi is only for windows. I’m only on linux.

For gtk+gnoga, it’s as heavier as launching a browser + you have less security as your embeded webkit component will not be updated.

Did someone tried imgui ada binding?

Gnavi applications can be run on Linux as well using Wine. I recently tried it out and it was easy to install Wine, just google for installation instructions. And then it is possible to execute Windows exe files by “wine blabla.exe”. When trying it out I downloaded the text editor Lea that @zertovitch is working on (I think there is one more contributor but don’t remember the name at the time of this writing), @zertovitch uploads pre-compiled versions of Lea and one just needs to download an executable and run it using wine. It worked like a charm. If you are on Linux you can create a VM using VirtualBox with Windows 10 or 11 on it and make an application using GNAVI and then execute it under Linux using Wine. I am not sure what parts of the Windows API is not supported by Wine but for making applications with simple GUI:s it goes a long way. Wine is also supported on Mac but I haven’t tried it.

Funny suggestion :slight_smile:, but:

  • My computer is from 2007, running perfectly fine (just can’t smoothly watch 4k videos and do some AI, but more than enough for everything else). I’m not sure a VM of windows 10 or 11 would be usable :smile:.
  • I don’t have an official copy of windows, don’t want to have it, and it won’t install anyway.
  • Wine is a nice concept to make few closed source windows programs more or less work on linux, but it would be a really strange idea for an open source new development targeting mainly linux.

Can’t you use it with later versions of Gtk ?

No, it’s a lot of work to switch to GTK4.

First, there’s no documentation explaining how the binding has been designed and could be updated. It seems to be using one big python script (~3000 lines) and a huge XML file (~9000 lines).

The script takes the GIR description files for GTK as input, uses the XML file to somehow patch the descriptions and generates Ada code. I suppose the XML file was not handwritten, but there’s no documentation on that point. And updating the XML file by hand would be a lot of work.

Then there are handwritten Ada files to better integrate the generated binding in an Ada programming style. They will surely need some patches.

If I replace the GIR description files for GTK3 with the files for GTK4, the script crashes. I managed to tediously update the XML (and few variables of the script) so the python script doesn’t crash, but the generated code doesn’t work as there’s a lot of missing parts. Anyway, it’s a first starting point…


Do the GTK folks consider having a stable API at some point?

Like most other gui toolkit, the api is stable between major releases. And major GTK releases are really rare.

It is even better when the API is always stable (also across major versions), like, for instance, Windows for the last 30 years…

In that sense, GTK is always stable. You can install Gtk1, Gtk2, Gtk3 and Gtk4 in parallel, and get the same stockpile of toolkits that exists on windows :slight_smile:

That’s a good point. I didn’t realize that about Windows.
Do you happen to know what the backward- and forward- compatibility stories are for Winelib? (I imagine that it is somewhat dependent on the underlying OS, but it isn’t dependent on Gtk on Linux, for example, is it?)

@zertovitch I realize this is a bit off-topic for this thread, but @joakim-strandberg mentioned writing an app using GNAVI and then running it in Wine. I wouldn’t want to have Wine as a dependency, with the setup that entails for the user, but Winelib looks interesting. Is it viable to make applications for Winelib with GNAVI? Also, is it required to have a Windows VM in order to develop with GNAVI? Can it not also be run under Wine? Thanks!