Datacontext voor directories voorbeeld

Datacontext voor directories: een voorbeeld (met in groen hoe het er uit ziet in het configuratie/settings bestand)

De code

dim bOk as boolean

We leggen bv eerst vast hoe onze dirset gaat heten*:

bOk = newDirSet("Export")

[DirSet]
Export = ""

Best een beschrijving geven om uit te leggen wat hiermee moet gebeuren:

updDirSet(“Export”, “Dir for data export from this application”)

[DirSet]
Export = "Dir for data export from this application"

Kan ook in één keer:

bOk = newDirSet("Export", "Dir for data export from this application")

.. met hetzelfde resultaat als boven in het settings bestand; toon beschrijving van..

print getDirSetDescription("Export")

Dir for data export from this application

We kunnen alle (in configuratiebestand) bestaande dirsets opvragen:

arrString[] = getAllDirSetNames()

Directory path opslaan

En nu het belangrijkste: een directorypath bewaren voor een bepaalde dirset; hier context 0 **:

setDirValue(0, "Export", "path", "/home/copyleft/Data/Export")

[Datacontext0-Export]
path = "/home/copyleft/Data/Export"

(**) Als een datacontext in gebruik is kan je de huidige id opvragen:

print hDataContext.getCurrentContextId()

En dan écht het belangrijkste: getDirValue opvragen; hier tonen we hem enkel:

print "We export to: " & getDirValue(hDataContext.getCurrentContextId(), "Export", "path")

We export to: /home/copyleft/Data/Export

De directory opvragen gebeurt in je applicatie op het moment dat je daar iets mee wil doen; bv een tekst bewaren in een bestand:

File.Save(getDirValue(0, "Export", "path") &/ "ExportOfTheDay.txt", sText);

Intern gebruikt DataContext deze methode om de Settings te maken:

print getContextDirSet(0, "Export")

Datacontext0-Export

Wat er in het bestand zo uitziet (zie ook hierboven):
[Datacontext0-Export]
...

(*) De naam “Export” zal misschien vastliggen in je applicatie, of laat je daar kiezen.

Ook de sleutel “path” kan je in principe kiezen. De Datacontext bewaart er verder nog de datum van aanmaak en laatste wijziging bij, die kan je nazien in het configuratiebestand (momenteel nog niet vanuit een methode in de library, tenzij je in getDirValue de juiste sleutel meegeeft, zoals csKEYMODIFIED, zie definities in DataContext class).

Andere voorbeelden

  • Import : bv om txt bestanden in te lezen
  • Pictures: bv iconen of beeldmateriaal waarnaar gelinkt wordt / om ze te laden in de applicatie
  • Export : zoals hierboven, bv om vanuit een applicatie een CSV export bestand te maken en dat op een vaste plaats voor de gebruiker te bewaren.
  • Cam: opgenomen beeld met webcam

DataContext: het unieke van het gebruik met het datacontext concept is dat je voor iedere “DataContext” aangepaste directory locaties kan opslaan. Door de datacontext om te schakelen gebruik je andere databases en andere directories, bv:

  • Datacontext0 = “Dev”, locale map op mijn laptop waarop ik programmeer; en de databaseverbindingen gaan naar mijn “localhost” database met testgegevens.
  • Datacontext1 = “live”, een map op een server of nextcloud die gedeeld wordt met andere gebruikers, en de database instellingen spreken de echte servers met live aan.

Toegepast op ons voorbeeld zou ons instellingenbestand zoiets bevatten (de database gegevens even weggelaten):

[DataContext0]
Name = "Live"
Description = "Echte gegevens, in gebruik

[DataContext1]
Name = "Dev"
Description = "Ontwikkelomgeving local(host)"

[DirSet]
Name = "Export"
Description = "Export csv files here"

[DataContext0-Export]
path = "/nextcloud/shared/myappdata/out"
created = "01/01/2024"

[DataContext1-Export]
path = "/home/username/myappdata/out"
created = "03/01/2024"

...


Compileren met debug info

Soms kan het nuttig zijn om je programma te compileren mét de debug informatie aan, het is een parameter die je kan instellen in de IDE.

In een script: parameter -g bij de opdracht gbc:

gbc3 -g -a 2> log.txt

gevolgd door

gba3 -o $targetdir/gb3run/$targetbase.gambas

Datacontext voor directories

Ik pas al een tijdje het “datacontext” begrip toe in mijn eigen programma’s, waarbij ik gemakkelijk kan omschakelen tussen database-servers voor “development” en “live” data.

Nu wil ik samen daarmee ook andere directories gebruiken, bv voor uitvoer (“Export”). Standaard had ik daarvoor in “/home/user/Data/myApp/” een map “Export/”, maar nu wil ik schakelen tussen
“live/Export” en “dev/Export”.

In mijn configuratie-bestand maak (definieer) ik daarvoor volgende settings:
(ik gebruik het DataContext object myContext)

myContext.newDirSet("Export", "Export of data here")

Dat bewaart:

[DirSet]
Export="Export of data here"
..

Uitgebreider voorbeeld: een programma dat gegevens met foto’s opslaat in een database, daarvoor kan importeren en er ook uit kan exporteren zou volgende directories kunnen gebruiken:
(telkens de naam en de verklaring)

[DirSet]
Export=”Export of data here”
Import=”Import of data here”
Cam=”Camera images come here”
DbPictures=”Database URL’s to pictures here”

Je kan ze inlezen in een array van strings:
myContext.getAllDirSetNames()
(en zo ook tellen met array.Count)

Ik houd bovenstaande omschakelmogelijkheden aan tussen mijn echt gebruikte gegevens en mijn ontwikkelomgeving:
(terug te vinden in ~.config/gambas3/myApp.conf)


[DataContext0]
Name="live"
...

[DataContext1]
Name="dev"
...

Met het omschakelen van DataContext 0 naar 1 moeten ook de Dirset keuzes aangepast van 0 naar 1.

Daarvoor heb ik config settings nodig:

[Dirset0-Export]
Dir="/home/user/Data/myApp/live/Export"

[Dirset1-Export]
Dir="/home/user/Data/myApp/dev/Export"

Die maak ik met:

myContext.setDirValue(0, "Export", "path", User.Home)
(maak een variabele om te gebruiken ipv User.Home)

In de klasse CDataContext heb ik voor de directory instellingen dus:

newDirSet(sName As String, Optional sDescription As String) As Boolean

updDirSet(sName As String, sNewDescription As String) As Boolean

getDirSetDescription(sName As String) As String


getContextDirSet(iContextId As Integer, sDirSetName As String) As String


getDirValue(iContextId As Integer, sDirSetName As String, sKey As String) As String


setDirValue(iContextId As Integer, sDirSetName As String, sKey As String, sDir As String) As Boolean


getAllDirSetNames() As String[]

Met de bedoeling redelijk universeel toepasbaar te zijn, vanaf je een DataContext hebt gedefinieerd kan je het gebruiken, ook los van database instellingen:

https://sourceforge.net/projects/garlic3/files/Lib/DataContext/

Gebruik: het project bevat Classes en een Module, en een uitvoerbaar (desktop) programma met FMain en een menu om te testen wat het doet.

Als je het compileert als “library” dan gaat die code niet mee, en kan je het als (project properties) “library” gebruiken in een ander Gambas3 project.

Zie ook DataContext voor directories voorbeeld

Gambas3 updates v.a. 2024

Zie ook
Gambas3 updates 2018-2023.
Gambas2 updates

Gambas updates (v.a. ong dec 2023) – 2024:
(Vastgesteld ,vooral op OpenSUSE. Algemene “Release page“, voor Ubuntu zie bv hier)

2024-11-05
OpenSUSE 15.6: Gambas3 v. 3.19.5-lp156.2.1
build 19 oktober 2024 : Gambas is terug van weggeweest bij Suse

2024-08-19
OpenSUSE 15.5: Gambas3 verwijderd?
OpenSUSE Tumbleweed: Gambas3 verwijderd?
Niet meer in de repositories aanwezig, en de IDE kan door een update zelfs gedeinstalleerd worden! Zie Waar is Gambas…
– Hopelijk een tijdelijk (vakantie-) probleem. (*)

– upd: * Zie Gambas is terug

2024-07-28
OpenSUSE 15.5: Gambas3 v 3.19.3-lp155.2.1

2024-07-05
OpenSUSE 15.5: Gambas3 v 3.19.3-lp155.1.1

2024-05-31
OpenSUSE 15.5: Gambas3 v 3.19.2-lp155.1.2

2024-05-31
OpenSUSE 15.5: Gambas3 v 3.19.2-lp155.1.1

2024-03-20
OpenSUSE 15.5: Gambas3 v 3.19.1-lp155.2.1

2024-03-17
OpenSUSE 15.5: Gambas3 v 3.19.1-lp155.1.1

2024-03-12
OpenSUSE 15.5: Gambas3 v 3.19.0-6.3

??
OpenSUSE 15.5: Gambas3 v 3.19.0-5.3

2024-02-08
OpenSUSE 15.5: Gambas3 v 3.19.0-lp155.10.1
Het lijkt me dat hierna de icoontjes zijn veranderd. Ze zijn eenvoudiger en kleurlozer gewordenm niet echt een verbetering…

2024-01-15
OpenSUSE 15.5: Gambas3 v 3.18.4-lp155.10.1

Gambas is back! Gambas3 is terug in openSUSE!

Na een onderbreking van een paar maanden ben ik verheugd Gambas terug gemakkelijk te kunnen installeren in OpenSUSE, namelijk in versie 15.6. (geïnstalleerd, upd: ook gebruikt).

Stappen:
verse 15.6
Na een update van opensuse 15.5 naar 15.6 ging ik op zoek naar de vroegere bron van Gambas(3) in openSUSE: Munix.

Munix repo
Repository toegevoegd via YAST:
https://download.opensuse.org/repositories/home:/munix9/ (URL link)
En met 15.6 hebben we geluk: gambas3 is weer voorzien:
bv gambas3-runtime-3.19.5-lp156.2.1.x86_64.rpm
ps: En (voorlopig nog) niet in 16.0.

Software Installeren: gambas3
Selecteren:
gambas3 – Complete visual development environment for Gambas
Version: 3.19.5

Installation Successfully Finished
Packages
Installed Packages: 139
autoconf, automake, bison, bison-lang, dwz, gambas3, gambas3-dev-tools, gambas3-gb-args… (more)

Continue reading

Gambas 3 op Raspberry Pi 400 kit

Op de meegeleverde SD kaart staat Raspbian 11.
Na installatie/configuratie bij het eerste opstarten van de Pi, moet je Gambas apart bij installeren.

  • Add/Remove software
  • Linkse kolom bij de software groepen: Ontwikkeling (Development)
  • of zoek “Gambas”
  • Kies bv “Complete Visual Development environment for Gambas”, om de hele IDE+andere onderdelen te krijgen, bevestig
  • Bevestig, wachtwoord geven : “installing packages – please wait ..”

Als de installatie klaar is, staat Gambas3 in het menu onder Programmeren: het is versie 3.15.2. De voorbeelden zijn niet mee geïnstalleerd.