Gambas 3 openSUSE Leap 15.2

Bv via software.opensuse.
https://software.opensuse.org/package/gambas3

Dit (3.14) is een relatief nieuwe versie van Gambas3, in vorige versies van Leap was 3.10 de officiële versie. (Zie “Unsupported distributions”)
Je kan ook een nog nieuwere 3.15 installeren uit
home:munix9 Community: 3.15.2

(Wil je ook de IDE om zelf te programmeren? Dan moet je specifiek gambas3-IDE zoeken, ofwel nadien bij softwarebeheer de IDE bij-installeren; daarbij worden dan alle andere nodige gambas3 onderdelen afgehaald.)

Een klik op Direct install opent

Yast2 – 1 Click Install – ruby.ruby2.5

gambas3 installation
“gambas3”
BASIC interpreter under Linux

Gambas is a development environment based on a BASIC interpreter with
object extensions, similar to Visual Basic. With Gambas, you can
design program GUIs, access MySQL or PostgreSQL databases, control
KDE applications, translate your program into many languages, create
network applications, build RPMs of your apps automatically.

Bevestigen..

“Proposal”

If you continue, the following changes will be made to your system:
Repositories to be added:
http://download.opensuse.org/distribution/leap/15.2/repo/oss/ (openSUSE:Leap:15.2)
Note:

You will remain subscribed to these repositories after installation.
Software to be installed:
gambas3

Next..

“Perform Installation…”

Software installation
Installation was successful

Klaar.

Of niet?
In het KDE menu, onder development zie je nu gambas3 staan.
Als je er op klikt, en er gebeurt niets, dan heb je waarschijnlijk niet de IDE geînstalleerd, maar enkel de runtime om gemaakte gambas programma’s te kunnen draaien.

In softwarebeheer zoeken naar gambas3-ide uitkiezen en bevetigen, en alle bijhorende gambas3 onderdelen, en andere extra paketten nodig voor softwareontwikkeling bevestigen en installeren. Dat kan oplopen tot bv 133 paketten in totaal.

Packages
Installed Packages: 133
akonadi-server-sqlite, bison, bison-lang, dpkg, dpkg-lang, gambas3-devel, gambas3-gb-args, gambas3-gb-cairo… (more)
Statistics
Elapsed Time: 01:47
Total Installed Size: 239.86 MiB
Total Downloaded Size: 65.86 MiB

Veel programmeerplezier.

Venster met invoer (vraag en antwoord)

Situatie: je hebt een form FMain, en je wil een vraag stellen waarbij je een antwoord verwacht van de gebruiker, dat je nodig hebt voor het verdere verloop van het programma.

Als dat een eenvoudig Ja/Neen of iets dergelijks is, kan je gewoon Message.Question(...) gebruiken; daarbij kan je detecteren welke knop gedrukt is (de waarde komt uit de Message return waarde);

If Message.Question("Really delete from database?", "Yes", "No-Cancel") = 1

– er wordt geteld vanaf 1 (bv 1=”ok” 2=”ok+save”, 3=”cancel”)
– laatste keuze is altijd de “cancel” keuze, is ook default
Antwoord dus bv 1, en daarop reageren via bv SELECT.
Maar als je echt invoer van een woord of tekst hebt, hoe dan?

Ik weet niet of het “de” juiste manier is in Gambas, maar ik loste het zo op:

Ik maak een Form FGetText met enkel
– een tekst voor de vraag (TextLabel)
– een tekstveld voor de invoer (TextBox)
– een sluiten-knop (Button)
En een procedure die public is om de vraag op te geven: setQuestion(s as string) en die in de form die vraag in een TextLabel steekt.

Deze form wordt aangeroepen

Dim sNewFile As String
'
MMain.sGetText = ""
FGetText.setQuestion("New text title or enter for default.txt ")
FGetText.Show
Wait 0.1
While Not FGetText.Closed
' this is where the form works...
Wait 0.1 ' until it is closed
Wend
If (MMain.sGetText) ' this is where the answer is found
' etc.

Als de Form gesloten wordt, geeft die eerst de waarde die ingevuld is door aan een public variabele in MMain. Deze procedure wordt aangeroepen na een “enter of return”, of de textbox nu leeg of gevuld is.

Het programmaverloop kan daar dan de waarde ophalen nadat het venster gesloten is; indien leeg kan een voorgedefinieerde standaardwaarde gebruikt worden.

Ik heb lang gewacht om dit uit te zoeken omdat ik dacht dat er toch een Gambas manier moest zijn om dat anders te doen, en misschien vind ik die ooit nog… maar toch..

Veel plezier..