Nieuw project: directory bestaat al

Gitlab project
Ik heb een nieuw project “nieuwproject” gemaakt op gitlab, leeg behalve de standaard aangemaakte README. Ik haal het af met git clone nieuwproject.

cd newproject
ls -A

.git  README.md

Ik open de Gambas3 IDE, en begin daar een nieuw programma met “New Project”, kies de map waar “nieuwproject” staat, geef als naam “newproject”:

The project directory already exists

Er is geen optie om de bestaande directory “newproject” te gebruiken in plaats van een nieuwe te laten maken door Gambas3.

Omgekeerd?
Ik verwijder de directory “newproject”.
Ik maak in Gambas3 “newproject” op die vorige locatie.

cd newproject
ls -A

.directory  .gitignore  .hidden  .icon.png  .lang  .lock  .project  .src

Dan ga ik in de hogere directory terug mijn git project afhalen met git clone:
git clone https://gitlab.com/groupname/newproject.git

fatal: destination path ‘newproject’ already exists and is not an empty directory.

Wat is de juiste manier?

Continue reading

Posted in vraag-me-af | Comments Off on Nieuw project: directory bestaat al

Kan project bestand niet openen

Bij het openen van een project krijg ik deze foutmelding:

Kan project bestand niet openen:
/home/cyb/Git/DbInfoCodePrj/dbinfocode

Void key
Project.ReadProject.3436 Project.Open.794 FWelcome.ProjectItem_Click.400 CProjectList.ProjectItem_Click.523 ProjectBox.DrawingArea_MouseUp.487 ?

Ik kan het bericht alleen wegklikken en blijf daarmee in het Gambas openingscherm om een project te kiezen.

Het project zit in een git repository.

Ik schakel over naar een andere branch (die kort daarvoor gemerged is met deze branch).

Nu gaat het project wel open. Ik schakel terug naar de “defecte” branch, en bekijk de foutmelding.
Die verwijst naar het project-bestand, dus ik open in een externe editor de .project file.

Daar vind ik stukken van een mislukte merge terug:

mcedit .project

# Gambas Project File 3.0
Title=DbInfoCode
Startup=MMain
Icon=img/DbInfoCode.png
<<<<<<< HEAD Version=3.2.11 ======= Version=3.2.12 >>>>>>> main
Component=gb.image
Component=gb.gui.qt
Component=gb.form

Ik verwijder de git lijnen en laat de juiste versie staan..

# Gambas Project File 3.0
Title=DbInfoCode
Startup=MMain
Icon=img/DbInfoCode.png
Version=3.2.12
Component=gb.image
Component=gb.gui.qt
Component=gb.form

Ok! Het project opent weer normaal.

Posted in Gambas3 | Comments Off on Kan project bestand niet openen

Dataconnection vanuit lib of app?

Ik vraag me af of ik de verbinding met de databank vanuit de applicatie moet doen of vanuit de lib die de data-classes bevat.

Nodig:

1 project als lib (zie properties bij maken nieuw gambas project)
1 project als gewone gambas3 applicatie.

Ik gebruik ook:
gb.db (Database toegang) en “Settings” in project properties, componenten (voorzien in Gambas).
– bibliotheek “DataContext” in project properties, libraries (deze moet je zelf afhalen)

In de lib zitten
– de classes bv CEmployee beschrijft de employee (properties voor velden enz).
– de Module MEmplData: bevat procedures voor het aanmaken van records, opvragen vanuit de classe voor het laden van de variabelen in de properties, bewaren vanuit de classe van het “object/record”.
– de Module MEmpData bezit ook hConData AS Connection

– de applicatie gaat de lib.hCondata initialiseren met de toegangsgegevens van de databank met behulp van DataContext.makeConnection.
(gegevens die gelezen worden uit een settings file – dat gebeurt in de DataContext class CDataContext; je kan er context naar settings mee maken, aktieve context zetten wat ook bewaard wordt in settings, nieuwe settings file maken, lijst alle contexten in settings opvragen, enz)

– in de applicatie ga je gewoon de “current” datacontext gebruiken, en je kan “switchen” van context door de “current” aan te passen via DataContext, en te “herladen”, maw de connectie terug te maken.

Posted in Databank, Gambas3, vraag-me-af | Comments Off on Dataconnection vanuit lib of app?

Git vanuit gambas

Voor een eigen programma waar de inhoud wordt bijgehouden in een git repository, zou ik die willen kunnen updaten vanuit mijn Gambas app. Sinds een tijdje is in de IDE een voorziening ingebouwd om de git branch om te schakelen enz vanuit de IDE, dus daar zit mogelijk een aanknooppunt.

Algemeen: een commando kan je vanuit Gambas lanceren met shell of exec.

In de broncode van gambas 3.18.0 vind je een map VersionControl met een Class CVersionControl, met een subclass CVersionControlGit.

Daarin:
Private Sub RunShell(sCmd As String, Optional bSilent As Boolean) As String
'
Return VersionControl.Shell("cd " & Shell(Project.Dir) & " && " & sCmd, bSilent)
'
End

In de Module (naam zonder M) “VersionControl” vind je:

Public Sub Shell(sCmd As String, Optional bSilent As Boolean, Optional aEnv As String[]) As String
'
Dim sResult As String
'
If Not bSilent Then Insert(sCmd & "\n")
Shell sCmd With aEnv To sResult
If Process.LastValue Then
$sLastResult = sResult
Insert(sResult)
Endif
Return sResult
'
End

Posted in Gambas3, Hoe - in Gambas | Comments Off on Git vanuit gambas

Demonstratie van Gambas app

RApp
Deze app die je kan vinden op GitLab (login nodig), demonstreert een paar Gambas3 technieken, zoals het maken van een About menu (met informatie over de app), het doorgeven van parameters tussen Forms, het laden van een .txt in een scherm, het organiseren van een project (bestanden, mappen), en het gebruiken van (eigen) libraries.

Als je de libraries niet geïnstalleerd hebt, kan je het programma wel bekijken om er andere dingen uit te halen.

Ook als .tar.gz op sourceforge (meestal ouder dan de git repo’s).

Posted in Gambas3 | Comments Off on Demonstratie van Gambas app

Speak met Gambas3

Als uitbreiding op Spreken met Linux kan je er ook nog Gambas tussensteken. M.a.w. espeak aanroepen vanuit je eigen Gambas3 programma. Een testprogramma bijeenharken is niet nodig, dat deed Charlie Ogier al voor ons: eSpeakGUI

Simple text to speech GUI for ‘eSpeak’
Updated for QT5 22/03/2021

Naast in te stellen opties voor toonhoogte, woordafstand enz, is het belangrijkste commando doorgegeven via shell:

Shell "espeak -v " & sList[ComboBoxAccent.Index] &
" -a " & SpinBoxAmplitude.Value & " -g " &
SpinBoxWordGap.Value & " -p " & SpinBoxPitch.Value &
" -s " & SpinBoxSpeed.Value & " " & Chr(34) &
TextEditor1.Text & Chr(34)

Charlie Ogier (C) 2016 – Licenced under GPL 3.0

Ik ben wel vergeten waar ik het vandaan heb.
Ik heb hem teruggvonden op github : https://github.com/charlie-ogier/eSpeakGUI

Posted in Uncategorized | Comments Off on Speak met Gambas3

Gambas2 in 2023?

Gambas2 draait nog steeds op een computer(*) met OpenSUSE (mogelijk geïnstalleerd in 2015), altijd ge-update werd en die ondertussen natuurlijk ook gambas3 heeft.

(*) Ondertussen aan:

Waarschijnlijk oorspronkelijk openSUSE 15.0 of Leap 42.3/42.1/13.2/13.1/23.3… maar misschien wel eens een nieuwe installatie gedaan over de oude ipv een update..

Hoe oud/wanneer oorspronkelijk geïnstalleerd?
In ieder geval Yast log files van 2021, 2020, 2019, 2017 (13/11/2017)

head zypp/history
2017-11-13 11:08:48|command|root@mybox|'/usr/bin/ruby' '/usr/lib/YaST2/bin/y2start' 'installation' '--arg' 'initial' 'qt' '--noborder' '--auto-fonts' '--fullscreen'|

rpm -qa --last | tail -1
gpg-pubkey-307e3d54-4be01a65 ma 13 nov 2017 11:08:47

stat /
Bestand: /
Grootte: 156 Blokken: 0 IO-blok: 4096 map
Apparaat: 2fh/47d Inode: 256 Koppelingen: 1
Toegang: (0755/drwxr-xr-x) UID: ( 0/ root) GID: ( 0/ root)
Toegang: 2023-03-22 09:14:57.697958271 +0100
Gewijzigd: 2018-11-26 08:18:02.931829791 +0100
Veranderd: 2018-11-26 08:18:02.931829791 +0100
Ontstaan: 2017-11-13 11:08:43.728015653 +0100

(dan zou het normaal een Leap 42.1 moeten geweest zijn).

Zeker:
OpenSUSE 15.4 (2023-02-22) : gambas2 : ok
OpenSUSE 15.3 (2022-?-? ) : gambas2 : ok
OpenSUSE 15.2 2021-06-23 : gambas2 : ok
(..?..)

Posted in Uncategorized | Comments Off on Gambas2 in 2023?

Form leeg, schijnbaar; niets meer weergegeven, alle objecten verdwenen

FMain plots leeg
Ik weet niet exact wat er voordien gebeurd is, wel dat ik twee keer Gambas3 had openstaan naast elkaar (wat ik dikwijls doe) en dat ik objecten geknipt en geplakt had van de ene naar de andere (waarbij ctrl-v niet werkte en ik rechtsklik-plak heb gedaan. Misschien heb ik het programma laten draaien en liep het vast, of heb ik het onderbroken, geen idee.

Op een bepaald moment “run” ik het programma, en er komt niets op het scherm. Ik zie wel in de konsole (F11) dat het programma draait door de uitvoer van “print” en “debug” commando’s. Er staat een zeer klein venstertje op mijn scherm dat ik probeer groter te maken, maar dat lukt niet, het klapt terug klein, of verwijnt helemaal.

In de IDE is de Form FMain ook leeg. In de Hierarchy zie ik gelukkig de objecten nog wel allemaal staan. Als ik een (onzichtbaar) object selecteer, en naar de eigenschappen kijk, zie ik dat zowel de breedte, als de x-positie en de y-positie op 0 staan.

Deze eigenschappen terug invullen met een willekeurig getal, brengt het object terug in beeld (weliswaar met verkeerde afmetingen).

MoveScaled -2,-2 of onzichtbaar?
Ik kijk in de backup (van de ondertussen veranderde FMain.form: daar zie ik verschillende negatieve waarden in “MoveScaled”.

HBoxTrypoTables HBox
MoveScaled(-2, -2)

en andere die onzichtbaar staan:

HBoxCombi HBox
Visible = False

Ik denk dat vooral die negatieve waarden het probleem zijn…

Posted in Gambas3 | Comments Off on Form leeg, schijnbaar; niets meer weergegeven, alle objecten verdwenen

Privé in de class: $

Wat prive gezegd wordt in de klasse, blijft in de klasse

Ik weet het al van lang geleden (zie naamgeving over gambas syntax), maar ik heb nu nog eens nagekeken of het in gambas3 ook nog zo gebruikt wordt, en ja.

Naming Conventions

The naming conventions are not required by the compiler. But programs which use the following naming conventions are easier to read by other programmers who want to understand the program.
Variable names

All private variable names of a class start with $

The first letter is lower case and should depend on the type of the variable

Voordeel van het markeren van de private variabelen in de klasse, is dat je gemakkelijk kan zien wat naar buiten gaat (nl alles waar geen $ voorstaat). Handig en belangrijk als je extern waarden toegespeeld krijgt en die moet verwerken in een private var in de klasse:

Private Sub checkGivenMonthYear(Optional iMonthIn As Integer, Optional iYearIn As Integer) As Boolean
'
If (iYearIn)
$iYear = iYearIn

Van buiten de klasse mag je dus geen $var tegenkomen, dan weet je dat er iets fout is. De publieke variabelen hebben dus een gewone naam, van buitenaf zichtbaar, en geen $ teken.

Voorbeeld uit de Gambas 3.18 bronccode, FMain.class:

' Gambas class file
'
Public NoMessage As Integer
'
Private $hProjectTree As CProjectTree
'
Private $sKey As String
Private $bCtrl As Boolean
Private $bInRename As Boolean
'
Private frmWelcome As FWelcome

(dus niet voor een Form)

Posted in Gambas2, Gambas3 | Comments Off on Privé in de class: $

HSplit werkt niet meer

Gordijn kapot
Bij de laatste upgrade van mijn Linux+KDE systeem en bijhorende Gambas (naar 3.18.0), werkte één van mijn programma’s niet meer naar behoren. De verdeling van de gebieden op het scherm die met een HSplit van elkaar gescheiden zijn, zijn getroffen door een “bug”. Die HSplit werkt als een soort gordijn, je kan die vertikale lijn tussen twee gebieden “in de HSplit” vastnemen en naar links of naar rechts trekken, zodat een bepaald gebied vergroot en het andere automatisch verkleint.

Ik heb een aantal gridviews in de HSplit, en tot nu toe werkte dat perfect. Maar na die update gebeuren er eigenaardige dingen; als ik een vertikale lijn wil opschuiven naar links bv, verandert de vertikale lijn van een andere gridview van plaats op het scherm. Het lijkt of je een andere lijn vasthebt bij het verschuiven, bv de volgende splitter lijn.

Buiten gebruik?
In het menu valt me ook op dat de “HSplit” niet meer voorkomt, wel een “Splitter”.
Als ik een bestaande HSplit selecteer zie ik er een symbool van doorstreepte cirkel op staan, en krijg ik geen eigenschappen rechts. Voelt erg “depricated”? Maar daar wordt niets van vermeld op http://gambaswiki.org/wiki/comp/gb.qt4/vsplit.

Ik vind wel een verwijzing in de mailinglist:

Re: [Gambas-user] Unnecessary duplication?
User namens
Bruce Steers 27-06-2022
Naar Gambas Mailing List


It’s rare to actually remove anything. many things are depreciated like for example HSplit and VSplit changed to one single Splitter container but VSplit and HSplit are not gone and still work for programs using it.

Daaruit leid ik af dat ik de HSplit en de VSplit moet vervangen door “Splitter“. Aangezien Splitter algemener is zal je moeten aangeven wat de richting is (H/V).

Backward (in)compatible
En ook omgekeerd ondervind je problemen: als je met 3.14 een project opent van 3.18 waarin de nieuwe Splitter gebruikt wordt, krijg je een foutmelding.

ProjectName > Sources > FormName
Cannot open file.
Unknown control: Splitter

Daar kan je verder dan niet veel aan doen op dit systeem…

HSplit Parameters
Verder lijkt er ook iets foutgegaan te zijn met de parameters van het bewaren van de HSplit instellingen:

Hoe moet het nu juist? Hoe kan ik “compatibele” code maken voor 3.14?
'Try HSplit1.Settings = ["150,120,600,300,160"]
Try HSplit1.Settings = [150, 120, 600, 300, 160]
'Splitter1.Settings = Settings["Screen/Splitter", "150,600,300,160"]

In het settings bestand vind ik verschillende sporen:
Splitter="0,188,977,131,276"
Splitter.Layout=[189,283,364,562,0]

(wordt vervolgd als ik daar problemen mee ondervind)

Posted in Uncategorized | Comments Off on HSplit werkt niet meer