Gambas3 op Tumbleweed 202507..

Ik ben overgestapt op Tumbleweed en Gambas 3.20.4 na een mislukte installatie op openSUSE 15.6

Tumbleweed.. 14/6/2025 (0613)

Distributions

openSUSE Tumbleweed

Education Experimental 3.14.3

home:gambas:stable Community 3.20.4+20250520+1

Dit lukte en deze is in gebruik: 3.20.4.

Enkel kijken of

  • ik deze kan updaten zonder Gambas te verliezen
  • Ik dit kan herhalen op een nieuwe Tumbleweed installatie…

Tumbleweed 0702 lukt het in eerste instantie niet met de 3.20.4 uit de community repository. Ik doe eerst een zypper dup.

Er is nog de “master” versie 3.20.99…

Gambas verstaat Note en Todo

Ik heb een beetje toevallig ontdekt dat Gambas een mooi overzichtje geeft van bepaalde opmerkingen die ik in de broncode heb gemaakt. Ini het deel van het venster onderaan waar de foutmeldingen van het compileren komen, kan je ook kiezen om de “Notes” te zien. Selecteer het Notes icoon in het rijtje “Konsole”, “Waarschuwingen”, “Notes”, “Versiecontrole (Git)”.

In vier kolommen krijg je een ovezicht van opmerkingen (commentaren) die je in je broncode gemaakt hebt met een bepaald voorvoegsel, bv “Todo” of “Note”. NOTE’s worden in het zwart getoond, TODO’s in het groen.

Type | Klasse | Lijn | Tekst

NOTE | Klassenaam1 | Lijnnummer | Tekst van de commentaar

TODO | Klassenaam2 | Lijnnummer | Tekst van de commentaar

Als je op een lijn klikt ga je onmiddellijk naar die code in de editor. Zeker handig als je een onafgewerkt stuk code aangeduid had met Todo, en het nadien vergeten was. Andere commentaren die in mijn code staan verschijnen niet, zoals “reload list”, “ok” enz.

Gambas3 op openSUSE 15.6?

(Kort: niet gelukt en ik ben overgestapt op Tumbleweed en Gambas 3.20.4)

In openSUSE 15.5 was Gambas3 niet aanwezig (op software.opensuse.org; wel ooit op een andere manier aan de praat gekregen). Maar na een update naar openSUSE 15.6 kunnen we daar weer wel op een “community” package 1-klikken om te installeren of om te bewaren als een installatiebestand: gambas3.ymp

home:munix9 Community 3.20.4

home:munix9:unstable Community 3.20.99+git.20250606….

Na aanvankelijke installatie daarvan is gambas er nog niet (misschien wel de runtime), en kan je verder gambas installeren uit het package management van gambas3. Die is daarna te vinden in het (klassiek) menu onder developement.

Helaas start Gambas3 met een fout:

 
This application has raised an unexpected
error and must abort.

Unable to find method Application_Log in class Project. Symbol not found.

[gb.jit].CCompilation.Wait.247

Even checken vanop de commandline:

**  
** OOPS! INTERNAL ERROR. Program aborting, sorry! 🙁
** Unable to compile JIT source file
**  
** [gb.jit].CCompilation.Wait.247: Unable to find method Application_Log in class Project. Symbol not found
**  
** Please send a bug report to the gambas bugtracker [1] or to the gambas mailing-list [2].
** [1] https://gambaswiki.org/bugtracker
** [2] https://lists.gambas-basic.org/#user
**

gb.jit: error: unable to compile JIT pointers of 'gb.form.terminal': 
| gcc: error: unrecognized command line option ‘-std=gnu17’; did you mean ‘-std=gnu11’?
|  

**  
** OOPS! INTERNAL ERROR. Program aborting, sorry! 🙁
** Unable to compile JIT source file
**  
** [gb.jit].CCompilation.Wait.247: Unable to find method Application_Log in class Project. Symbol not found
**  
** Please send a bug report to the gambas bugtracker [1] or to the gambas mailing-list [2].
** [1] https://gambaswiki.org/bugtracker
** [2] https://lists.gambas-basic.org/#user
**

Dit was dus geen succes, en ik probeer met Tumbleweed.. 14/6/2025

Distributions

openSUSE Tumbleweed

Education Experimental 3.14.3

home:gambas:stable Community 3.20.4+20250520+1

Gambas3 start alvast, ik check verder of bestaande programma’s werken…

Scripting

In forum.gambas.one vind je een voorbeeld om snel te starten:

#!/usr/bin/env gbs3
 Public Sub Main()
    Dim strFiles as String

    Exec ["ls", "-l"] To strFiles
    Print strFiles
 End

Bewaar het als script, met een naam bv Gb3TestScript1.gbs en maak het uitvoerbaar (chmod +x of in je bestandsbeheerder).

Om het te starten ga je in die directorie staan en doet

./Gb3TestScript1.gbs

Dit scipt doet niet veel bijzonders, maar het is een aanknopingspunt; zo kan je de uitvoer bv

  • op een gedeelde locatie zetten (bv nextcloud) om beschikbaar te maken voor collega’s
  • in html opmaken en in een directory van de webserver bewaren om zichtbaar te maken enz.

Programmanaam en datum

Gegevens over het gambas programma zelf krijg je vanuit code met Application

Print Application.Name
Print Application.Version

* Name is niet noodzakelijk hetzelfde als Application.Title (die kan anders gekozen zijn – zie Project Eigenschappen, Titel; het is een vrije tekst. Dit in tegenstelling tot de naam die overeenkomt met de projectmap-naam).

Moeilijker is de datum van het programma zelf, want terwijl je werkt in de IDE is dat eigenlijk niet gedefinieerd. Pas als je een executable hebt gemaakt (Project, Maak uitvoeringsbestand) kan je weten wat de datum van het uitvoerbare programma is.

Gegevens van een bestand vraag je op de commandolijn op met stat, en dat is overgenomen in Gambas in het commando Stat

De naam van de executable kan je niet direct opvragen, maar wel samenstellen uit pad, naam en de uitgang .gambas

De datum van een bestand: Stat(“naamvaneenbestand”) kan je zo invullen:

Stat(Application.Path &/ Application.Name & ".gambas").LastModified

Maar! als je deze code draait vanuit de IDE (F5 uitvoeren) krijg je een foutmelding: “File or directory does not exist”

Dat kan je opvangen door er Try voor te zetten, toon eventueel de foutmelding ergens:

' (er is een TextLabel voor de titel gemaakt) 
txlbTitle.Text = Application.Name & " (datum ...)"
Try txlbTitle.Tooltip = Stat(Application.Path &/ Application.Name & ".gambas").LastModified
If Error Then
txlbTitle.Tooltip &= " tried path/name: " & Application.Path &/ Application.Name & ".gambas" & " err: " & Error.Text
Endif

MySQL/mariadb zonder ssl?

In openSUSE Tumbleweed werkt de databaseverbinding naar een lokale server niet vanuit een Gambas programma.

Op de commandline met mysql client wordt duidelijk dat een veilige verbinding verondersteld wordt (ssl), maar mijn interne server heeft dat niet. Je kan met een parameter --skip_ssl afdwingen om dat niet te doen, maar hoe doe je dat vanuit je Gambas programma? Ik dacht het ooit al eens opgelost te hebben maar ik weet niet meer hoe…

De help van de client zegt: Default options are read from the following files in the given order:
/etc/my.cnf ~/.my.cnf

In een post las ik:

“If you don’t want to type --skip-ssl on the command line every time, you can instead add this to /etc/mysql/mariadb.conf.d/50-client.cnf or ${HOME}/.my.cnf
[client]
skip-ssl = true

Maar dat lijkt niet gebruikt of gelezen te worden door het gambas programma…

In openSUSE Leap 15.6 werkt het (nog) wel en is Gambas3 (ook/weer) installeerbaar.

Bladwijzer in de broncode (bookmark)

Als je een probleem in de broncode aan het oplossen bent, moet je kunnen heen en weer springen tussen verschillende stukken code. Daarvoor kan je een bladwijzer zetten om je vorige positie te onthouden: sta op een lijn en druk Ctrl-B. Er verschijnt een zacht (lichtblauw bij mij) pijltje voor de lijn.

Ga naar een willekeurige andere lijn in je text (als je weet dat je rond 500 bezig was, druk Ctrl-G 500.

Ga nu snel terug naar je bookmark met Alt-PageUp of Alt-PageDown.

Dat is handiger dan er breekpunten voor te gebruiken, die kunnen later hinderen.

Gambas en GPIO op Raspberry Pi

Een poging om commandline gpio te gebruiken vanuit/om te leiden naar een Gambas programma.

Library "/user/local/libpigpio"

Public Sub testGPIO()

Dim sAnswer As String
Dim sCommand As String

sCommand = "gpio -h"

TRY SHELL sCommand TO sAnswer

TextAreaOut.Text = sAnswer

End

Ik ga er van uit dat je een Form hebt, FMain, waar je deze code in plakt.

Op de Form heb je een TextAreaOut gemaakt.

Je kan op het scherm dan een button zetten, die deze code aanroept.

Public Sub Button1_Click()

testGPIO()

End

Hetzelfde kan je doen met gpio -g readall in sCommand; dat leest de pinnen uit naar een tabel met informatie en pin-nummers (incl BCM nummers). Enz…

Combobox titel

Ik heb een eigenaardigheid op een rapsberry pi met het gebruik van comboboxen: als je bv 3 elementen toevoegt, dan zal de combobox bij opstarten toch een lege text hebben (niet de waarde van bv eerste item). Maar je kan niet zelf iets zetten in die lege tekst (bv een titel zou handig zijn, die aangeeft wat de inhoud van de keuze is).

Dit in FMain:

Public Sub Form_Open()
'ComboBox1.Add("Choose here..")
ComboBox1.Text = "Choose here"
ComboBox1.Add("ABC")
ComboBox1.Add("Def")
ComboBox1.Add("Ghi")
'ComboBox1.Index = 0
ComboBox1.ReadOnly = True
'
ComboBox2.Add("Choose here")
ComboBox2.Add("ABC")
ComboBox2.Add("Def")
ComboBox2.Add("Ghi")
'ComboBox2.Index = 0
ComboBox2.ReadOnly = True
End
'
Public Sub ComboBox1_Click()
Message.Info(ComboBox1.Index)
End
'
Public Sub ComboBox2_Click()
Message.Info(ComboBox2.Index)
End

De ComboBox1.Text geeft geen foutmelding, maar is ook niet zichtbaar.

KDE: Vanaf je gekozen hebt in de combobox, verdwijnt de “lege lijn” bovenaan.

In tegenstelling to op de Pi: Je kan altijd terug naar de “lege” toestand.


Gambas3 op Raspberry Pi 500 (3)

In tegenstelling tot een voorgaande installatie van Gambas op een Raspberry Pi 5 (2), geraak ik hier toch verder op de 500:

Gambas3 uit de software installer van het Raspberry Pi menu gekozen (IDE en bijhorende automatisch geselecteerd). Gambas staat in het menu maar start niet – komt bekend voor (2). Foutmelding idd iets met Wayland.

Als je apart de Wayland module bij-selecteert, start Gambas3 daarna wel op maar toont van die rare horizontale lijnen als een defect televisietoestel.

Ik kan het menu “Project” niet oproepen in de IDE. Nee dat is de desktop, je moet eerst het vorige menu sluiten.

  • een CLI applicatie: “Hello World” werkt, compileren tot testCLI.gambas werkt, kan opgeroepen worden vanop de commandline, kan inhoud .txt bestand tonen.
  • een GUI applicatie: Knop en Message, werkt, kan ook .txt bestand openen en tonen.

Nog even afwachten en verder gebruiken, maar het lijkt dat de meeste problemen van (2) opgelost zijn.