Gambas “2″ op KUbuntu 8.4?

Ondertussen is Gambas doorgedrongen tot de Ubuntu softwareverzameling. In Kmenu, Add/Remove software (“adept installer”), zoek “Gambas”: Gambas 2 aanklikken, installatie bevestigen.
“Installation Complete” (Quit)

Helaas weer de Ubuntu-way: je kan hier niet zien welke versie het exact is. Na installatie krijg ik nog altijd de 1.9.91 versie van Gambas.
Daarom eerst een “uninstall” en dan een “install” vanuit het software management pakket (add/remove software).
Het blijft versie 1.9.91…

Er staat uitleg op http://gambas.gnulinex.org/ubuntu/ hoe de daar vermelde packages te gebruiken:
– wijzigen van de lijst met servers in

/etc/apt/sources.list

bv door een terminal te openen en sudo mc, daar in /etc/apt/ het bestand sources.list zoeken en met F4 (edit) openen

Een lijn toevoegen met (althans voor versie 8.4 “Hardy” – zie de pagina voor andere versies)

deb http://azores.linex.org/gambas-other/ hardy main

Daarna nog altijd op de command prompt:
sudo apt-get update

Uiteindelijk:
sudo apt-get install gambas2

Dat sluit af met
Setting up gambas2 (2.5-1ubuntu1) …

Maar als Gambas gestart wordt geeft die vreemd genoeg versie 1.9!

Ps: het is een KUbuntu na upgrade van 7.10 naar 8.4.

Bestaan globale variabelen in Gambas?

Volgens de tip of the day zijn er geen globale variabelen in Gambas. Je kan wel op hoogste niveau een variabele declareren en die gebruiken; ofwel vanuit de hoofdmodule (main module):
PUBLIC myGlobalVar
ofwel vanuit het hoofdscherm (FMain):
PUBLIC STATIC myGlobalVar

Om ze te gebruiken vermeld je de modulenaam:
ModMain.myGlobalVar
FMain.myGlobalVar

Wat ik ook al gezien heb is een aparte module waarin de variabelen komen die je gemeenschappelijk nodig hebt:
ModCommon.myGlobalVar

Rolluik: ComboBox als afrol-lijst (Drop-down list)

ComboBox De Combobox lijkt het meest op een gewone “drop down list” of rolluiklijst.
Toch gedraagt hij zich niet zo. Als je op de lijst klikt gaat die niet open, maar krijg je een “carrot” of cursor in het woord “ComboBox1” (knipperend vertikaal streepje).
De enige plek waar je de lijst kan doen openklappen is het pijltje rechts ernaast, en dat is in verhouding een klein vlak.
Om de hele oppervlakte op een klik te laten reageren met openklappen van de keuzelijst kan je het gedrag van “mousedown” definiëren:
Rechtsklik, Events, MouseDown brengt je in de code onder PUBLIC SUB ComboBox1_MouseDown() van de combobox. Voeg daar de “Popup” toe:

PUBLIC SUB ComboBox1_MouseDown()
ComboBox1.Popup()
END

Wil je de lijst nog “gevoeliger” maken kan je in plaats daarvan de lijst al laten openklappen als het pijltje er voorbijkomt:

PUBLIC SUB ComboBox1_enter()
ComboBox1.Popup()
END

Hoe je die lijst terug laat “inklappen” als je niet geselecteerd / geklikt hebt, heb ik niet gevonden.
(misschien met de _leave methode?)

Meer dan 1 waarde terugkrijgen uit functie

Een functie geeft normaal geen, ofwel 1 waarde terug. De waarde kan een boolean zijn voor gelukt/niet gelukt, of het resultaat van een berekening of bewerking op getallen of tekst.

Als de functie meer dan 1 waarde moet teruggeven, kan je een array vullen met de waarden.

Of zoals Benoît zelf voorstelt:

I think the better is using an array of Variant, or better an anoynmous array:

FUNCTION DoSomething(Name AS String) AS Array
DIM FirstResult AS ...
DIM SecondResult AS ...
' Do something
RETURN [FirstResult, SecondResult]
END

Op deze manier kan je tot 63 resultaatwaarden teruggeven.

Bad dimension error bij run: waar zit de fout?

run Na een hoop veranderingen vraag ik een “RUN” en het programma eindigt met de foutmelding “bad dimension”.
Error Bad dim
Spijtig genoeg geeft Gambas deze keer niet aan waar de fout zich voordoet. Normaal kom je in de source code op de plaats van de fout te staan na een foutmelding die de fout beschrijft Normale foutmelding.
Als ik terug op run druk (om het programma voort te zetten), crasht het.error crash

Ik probeer de laatste veranderingen ongedaan te maken, maar het zijn er helaas nogal veel en ik vind daar de fout niet mee.

breakpoints Je kan dan “breakpoints” zetten in je code om het programma tot daar te laten lopen. Ik probeer met breakpoints in PUBLIC SUB Form_Open() van de main form (Forms, FMain) omdat de fout zich voordoet bij het uitvoeren van het programma alvorens ik ergens klik of iets “doe”. In dit geval haalt het niets uit; eender waar ik de breakpoints zet, ik blijf dezelfde foutmelding krijgen.

Je kan dus geen breakpoints zetten in de initialisering van variabelen bovenaan in de Form, voor de eigenlijke instructies beginnen. Je kan wel gemakkelijk een ' zetten vooraan de lijn, om de lijn om te vormen in “commentaar”, waardoor ze dus niet meer wordt gebruikt door het programma. De foutmelding kwam niet meer voor nadat ik een array uitge-comment had: PRIVATE aBookType AS NEW String[0, 0]. Inderdaad dimensie dus; door de foutmelding beter te lezen had ik het kunnen weten. variabelen

Current objects
Een andere mogelijkheid is kijken naar de variabelen na het afbreken van het programma. Onderaan in het tabblad “Current Objects” heb je een lijst met variabelen. Daar stond de foute variabele niet bij, .
Wat dus niet gaat is dimensie nul: PRIVATE aBookType AS NEW String[0, 0]
wat wel gaat: PRIVATE aBookType AS NEW String[1, 1]

kopieer-plak fout (copy-paste crash)

2 x Gambas open (twee keer de hele applicatie gestart).

In de eerste Gambas heb ik een bestaand project open, waaruit ik enkele dingen wil kopieren naar de andere FMain.form.

Gambas, select listbox, copy, schakel over naar andere Gambas, rechtsklik plak: ok

Schakel terug naar eerste Gambas.

Select lcdNumber, copy, switch to other Gambas, rightclick paste:

Gambas2
This application has raised an unexpected error and must abort

Component missing.
FForm.CreateControl.1060

Veroorzaakt doordat het nieuwe project als graphic maar niet als QT project was gestart – het is een typische QT-component.

Toevoegen: Project, properties, “gb.qt” – incompatible met gb.qui – afgezet
en “gb.qt.ext” : daarin zitten de ronde draaiknop en de LCD cijfers.

2 x Gambas open.

In first Gambas I have an existing app to copy from FMain.form.

Gambas, select listbox, copy, switch to other Gambas, rightclick paste: ok

switch back to first Gambas, select lcdNumber, copy, switch to other Gambas, rightclick paste:

Gambas2
This application has raised an unexpected error and must abort

Component missing.
FForm.CreateControl.1060

Caused by missing components in the project. The second, new Gambas environment was started with a new project, with different selection of components: Type graphical application instead of QT graphical application.
The LCD controls are typical for QT.

Solved the problem by adding the components:

Project, properties, gb.qtincompatible with gb.qui – switched off

and gb.qt.ext : this contains these LCD numbers.

Om een beetje universeler te werken kan je die componenten beter vermijden blijkbaar.

Gambas 2.2 op openSuse 10.3

gambas in menu Installatie van Gambas huidige versie 2.2.
(geeft met 1.9 apps: “version too old, recompile the project”)
Systeem:

  • openSuse installatie 10.3 (KDE 3.5.7) voorzien van updates tot 1/3/08.
  • Standaard installatie KDE met aantal devel packages (zie detail in volledige artikel)
  • oss en non-oss online repositories
  • gambas van: ftp://ftp.gwdg.de/pub/linux/misc/suser-gbv/rpms/10.3

Geïnstalleerd uit distro:

  • autoconf, automake
  • gcc, gcc++
  • make
  • qt3-devel
  • kdevelop3, kdelibs*
  • kdewebdev
  • poppler, poppler-devel, poppler-qt4
  • perl, pcre, pcre-devel
  • openldap2, -client, -devel
  • curl, libcurl-devel
  • mysql client (en server indien geen andere mysql-server beschikbaar), libmysqlclient-devel
  • unixodbc
  • libxml2, -devel, -++, libxslt, -devel
  • zlib, -devel, glibc
  • SDL -devel, -sound, -mixer, -image –devel
  • Mesa, -devel
  • libpng – devel
  • libjpeg – devel
  • daaruitvolgend automatisch aalib-devl, cyrus-sasl-devel, glibmm2, libsigc++2, libsmpeg0, physfs, …

Volgens http://gambas.sourceforge.net/ zijn er openSuse packages: “NO but yes, thanks to Guillermo”

sudo zypper ar ftp://ftp.gwdg.de/pub/linux/misc/suser-gbv/rpms/10.3 gambasSuse

* Adding repository ‘gambasSuse’
Repository ‘gambasSuse’ successfully added:
Enabled: Yes
Autorefresh: Yes
URL: ftp://ftp.gwdg.de/pub/linux/misc/suser-gbv/rpms/10.3

zypper -v install gambas2

Dan ging een en ander mis.
* Een tweede keer dit aangevuld:

/var/cache/zypp/raw/gambasSuse: Required file is missing: ./setup/descr/packages

Die is zeker wel aanwezig … (op de server. Maar niet in mijn zypper cache. Er gaat blijkbaar iets mis en er wordt alleen een deel van de files afgehaald naar de cache. Ik haal ze manueel af met
wget -r ftp://ftp.gwdg.de/pub/linux/misc/suser-gbv/rpms/10.3
En maak een selectie die ik naar de
/var/cache/zypp/raw/gambasSuse
directory kopieer. (als root)
Dan terug installatie commando, en

The following NEW package is going to be installed:
gambas2-2.2.1-2.gbv.suse103.i586 (gambasSuse2)

Overall download size: 8.5 K. After the operation, 0.0 B will be freed.
Continue? [yes/no]: yes

* Installing: gambas2-2.2.1-2.gbv.suse103 [100%]
CommitResult 1 (errors 0, remaining 0, srcremaining 0)

maar helaas geen gambas2 te vinden, en zypper -if gambas2 geeft:
Information for package gambas2:

Repository: gambasSuse2
Name: gambas2
Version: 2.2.1-2.gbv.suse103
Arch: i586
Installed: Yes
Status: up-to-date
Installed Size: 0 B
Summary:
Description:

Installed Size lijkt me wat weinig … dus Yast2 opgestart en daar “gambas” gezocht; er is een hele reeks gambas2 aanwezig, en alleen “gambas2” zelf staat aktief. Ik kies alle andere gambas2 paketten ook en bevestig. Volgende bijkomende paketten duiken op:
libffi42, libsvg, lirc, omniORB, postgresql, postgresql-libs, tv-common, v4l-tools.
Daarna is Gambas2 inderdaad aanwezig in het menu (met icoon):
KMenu/Development/Integrated Environment/Gambas2
Start mooi op, er zitten veel voorbeeldprojecten bij; ik probeer het bijgeleverde voorbeeld van de muziekspeler. Het start op “readonly” en werkt perfect!

* Even nog de eerste keer: Bij het ontbreken van libffi en libffi-devel stel ik vast dat de openSUSE DVD niet alles van de OSS repository bevat. Dus moet je die ook toevoegen aan de installatie-bronnen: protocol, server, directory:
http:// download.opensuse.org/ distribution/10.3/repo/oss/

gambas2-gb-qt-kde-html geeft probleem van missende:
libXext.so.6
liblCE.so.6
libSM.so.6
libX11.so.6
libqt-mt.so.3
libDCOP.so.4

Ik schakel voorlopig gambas2-gb-qt-kde-html uit *, en kies wel alle andere delen van gambas (uit de online repo), behalve gambas2-gb-vb (visual basic compatibility).
Daarbij worden nog volgende dependencies automatisch toegevoegd:
libsvg, lirc, mysql, omniORB, tv-common, v4l-tools
Yast: installatie ok.
Deze keer komt Gambas ook in het KDE-menu, onder Development, Integrated Environment, met een lelijk, onscherp icoon.
Je vindt ander iconen in /usr/share/gambas2/icons/, het logo piepklein in /usr/share/gambas2/help/tree/img/, en de grote achtergrond-garnaal in /usr/share/gambas2/help/, en Gambas2 start van daaruit op als Gambas 2.2

(*) dit blijkt een vergissing te zijn. Veel applicaties** werken niet in Gambas2, met de foutmelding: cannot load component gb.qt.kde: cannot find library file
(andere werken wel, als het drag-n-drop voorbeeld, of het mysql database voorbeeld)

Yast, gambas2, gambas2-gb-qt-kde-html bijgeinstalleerd zonder dependencies-problemen.

Gambas werkt nu goed voor de voorbeelden met
** kate (Automation, Kate browser)

gambasIDEopensuse

Gambas 2.0 is officieel uit.

GambasTweePuntNul Na drie jaar ontwikkelen is de nieuwe versie van Gambas, 2.0 nu officieel uitgebracht.
Er zijn al vertalingen van in Frans, Japans, Zweeds, Italiaans, Spaans en Catalaans.
Vorige versie 1.0 is nog beschikbaar, maar zal niet meer verder onderhouden worden.
Het origineel Engelstalig artikel bevat meer info en een Engelstalige changelog.

Het programmeren in 2008 kan beginnen…

Info gambas.sourceforge.net/ + download source