System: BeOS, Haiku, Zeta

Index 

1. Wat is yab? 7. Toon afbeeldingen
2. Een programmavenster maken 8. Knoppen maken
3. Inloop - aanhoudende opvraging van functies 9. Programma testen in Terminal.
4. Menubalk in het venster 10. Bind programmacode (Zeta)
5. Nieuwe View toevoegen 11. Help tijdens het programmeren
6. Toon tekst  

 


 

Wat is yab?

De yab Interpreter is een BASIC dialect, namelijk een verdere ontwikkeling van het in Windows, Linux and Playstation 2 beschikbare YABASIC. yab werd geoptimaliseerd voor BeOS, ZETA and Haiku en kreeg daarvoor bijkomende commando's.

Met de hulp van deze programmeertaal is het erg eenvoudig om gewone kleine en zelfs ingewikkelde programma's te maken. Een goed voorbeeld hiervan is het brandprogramma JABA dat in ZETA vervat zit.

In het verloop van deze handleiding zal je ontdekken hoe gemakkelijk het is om een toepassing te creëren met yab. In deze handleiding vindt je geen complete toepassingen, maar eenvoudige basiskennis zodat je leert hoe met Yab te werken.



terug naar index


 

Een programmavenster maken.

Het maken (ontwerpen) van een programmavenster is eenvoudig, al wat je moet doen is het commando venster open te gebruiken en een paar gegevens over grootte, naam en interne bestemming op te geven.

window open 50,50 to 600,500, "View", "WindowName"


Het venster opent op 50 pixels van de linker schermrand en op 50 pixels van de bovenste schermrand. Na to zie je de maateenheden gebruikt voor het aangeven van vensterranden. Zo hebben we dus een venstergrootte van 550 pixels in de breedte en 450 pixels in de hoogte. Je zal zien dat niet de venstergrootte wordt weergegeven, maar alleen de coördinaten op het scherm.

Na de gegevens over de venstergrootte volgt de naam van het venster (hier: "View") voor intern gebruik. Via deze naam kan je het venster aanspreken om het bijvoorbeeld te sluiten, of om een item toe te voegen.

Als WindowName (vensternaam) duidt je de naam aan, die dan als vensterbenaming in de titel (TAB) van het venster komt te staan. Zo ziet de naam van het venster er dan uit die de gebruiker te zien krijgt.

terug naar index


Inloop - aanhoudende opvraging van functies.

Vervolgens voorzien we een een Inloop (lus), die ons zal helpen in de uitvoering van steeds terugkerende vereisten in het programma. Alles wat zich binnen deze lus in het programma bevindt draait zo lang en steeds opnieuw als de inloop dit vereist. Alles wat zich buiten deze lus bevindt staat er ofwel maar één keer, ofwel alleen als het opgeroepen wordt. Hier moet je noteren dat alles wat voor de lus komt uitgevoerd wordt vooraleer de lus opgestart is, en alles wat na de lus staat alleen als het nodig is.

inloop = true
while(inloop)
     msg$ = message$
     switch msg$

          Here the entries are inserted into the loop.

     end switch
wend


Het sluiten van het venster via de TAB is een goed voorbeeld, omdat deze functie beschikbaar zou moeten zijn in elke stap in het programma op elk moment. Geef de volgende code in, waar in de lus " Here the entries are inserted into the loop." is aangeduid. Hiervoor gebruiken we de opdracht case, die begint met de naamaanduiding en die eindigt met break.

     case "View:_QuitRequested|"

          window close "View"

     break


Als er in de sectie close van het TAB is geklikt, dan zal in het venster met de naam (View) de bijbehorende code (hier _ QuitRequested) uitgevoerd worden.

Alles wat tussen case "View:_QuitRequested|" en break staat, zal uitgevoerd worden door de oproep van dit bevel. Omdat we het venster graag willen sluiten, wordt met window close "View" het venster View gesloten.

terug naar index


Menubalk in het venster.

In de meeste gevallen hoort een menubalk eveneens bij een venster. Om deze menubalken toe te kunnen voegen, voeg je de volgende code toe boven inloop en onderaan het openen van het programmavenster, zodat dit te allen tijd zichtbaar is.

menu "Program", "Quit", "Q", "View"


Ook via dit voorbeeld gaan we het afsluiten van het programma oplossen. Met deze code voorzien we het menupunt Programmet daaronder het sub-punt Quit (afsluiten). De aanduiding Q is de aanduiding van de toetscombinatie Alt + Q, waarmee men het programma kan afsluiten zonder gebruik van het menu. De laatste opdracht View is het vensters waarin het menu aangeduid staat. Om meerdere menulijsten in te voegen, moeten meerdere lijnen ingevoegd worden, die op dezelfde manier opgebouwd worden. Bij het wijzigen van de eerste namen, wordt er automatisch een tweede menulijst toegevoegd. Hetzelfde geldt voor de subregio's.

Voor deze menu-optie moet een nieuwe toevoeging gedaan worden in de Inloop. Deze ziet er dan als volgt uit:

     case "View:Program:Quit|"

          window close "View"

     break


Omdat we het sluiten van het venster via de menubalk oproepen, zit de uitvoering van de opdracht vervat in de volgorde van de selectie binnenin het gekozen menu. Het programmavenster (View) waarbij het menu hoort, de menulijst Program en de submenulijst Quit.

terug naar index
 

Nieuwe View toevoegen.

Om te vermijden dat je steeds het programmavenster zou moeten sluiten om een nieuwe View te laden, is het aangewezen zelf een bijkomende View aan de HoofdView toe te voegen. Deze moet beginnen op ongeveer 10 pixels onder de bovenmarge van het programmavenster indien er een menubalk staat.

view 0,10 to 550,450, "View1", "View"


Het maken van een View verloopt gelijkaardig aan het openen van een venster.We geven de View de naam View1 in het programmavenster View. De View begint aan de basis van de programmavenstergrootte aan de linkerzijde vanaf 0 pixels en vanaf de bovenmarge met 10 pixels (vanwege de menubalk). De rechtse en onderzijde zijn de gegevens erna.

De View1 wordt ingevoegd waar het zou moeten aangeduid staan, in dit geval is dit juist onder het programmavenster.

terug naar index
 
Toon tekst.

In deze View1 zullen we nu een lijn tekst tonen.

     draw text 20, 20, "dit is een tekst", "View1"


Met draw text duiden we aan dat we graag een tekst willen toevoegen. Met de specificaties 20.20 duiden we de coördinaten van de tekst in de View aan. Dus op 20 pixels van de linkerzijde en 20 pixels van de bovenmarge. De tekst die volgt is de tekst die aangeduid staat in de View. Hier wordt geen automatische line-makeup gemaakt, zodat dit moet voorzien worden door het aanpassen van de tekst met het aanduiden van het venster (View). Aan het einde volgt de aanduiding Views waarop de tekst moet aangeduid worden.

terug naar index
 

Toon afbeeldingen.

Om afbeeldingen te tonen moeten we volgende code toevoegen onderaan de Views, waarop we deze willen tonen(View1).

     err = draw image 150,30, "/Path/to/Graphic/graphic.jpg", "View1"


Met draw image duiden we aan dat we een grafisch element willen invoegen. Net zoals dat het geval is voor de tekst, volgen de coördinaten waarop het diagram moet aangeduid worden. In overeenstemming met de plaatsaanduiding van het element, worden bestandsmap en het bestand aangeduid (Path/to/Graphic/graphic.jpg), welk je graag wil ingevoegd zien. Aan het einde van deze opdracht volgt de aanduiding van de Views waarop het element moet staan aangeduid.

terug naar index
 

Knop maken.

Wat is een programma zonder wissel mogelijkheden voor de specifieke programmafuncties. Of het nu is voor het doorverwijzen naar een ander programmavenster, of voor het vervullen van een taak, hiervoor wordt een knop heel dikwijls gebruikt.

     button 400, 400 to 450, 420, "Internal_Button name", "shown_Button name", "View1"


We voorzien een Button (knop) met 400 pixels van de linkerkant en 400 pixels van de bovenkant van het venster View1. De grootte van de knoppen hangt af van de data voor de rechtse (450 pixels) en onderste (420 pixels) rand van de knoppen. In het voorbeeld wordt de naam van de knoppen getoond voor intern gebruik, en dan de naam die op de knop moet komen.

De functie van de knoppen wordt aangegeven zoals voor het beëindigen van het programma, in de Inloop als een case opdracht.

     case "Internal_Button name|"

          window close "View"

     break


Hier wordt net zoals bij de andere cases de View en de interne naam van de knoppen aangeduid. Ook in dit geval kunnen we de window close opdracht om het programma te beëindigen gebruiken. De knop zou ook bijvoorbeeld bijkomende tekst, knop, grafisch element of open en/of sluit a volgend venster of View.

terug naar index
 

Programma testen in Terminal.

Als je graag je programma tussendoor even zou willen testen, dan kan je de broncode direct in een Terminal window draaien.

yab /Path/to/source code.yab


Gewoon enter yab in een Terminal gevolgd door een spatie. Dan drag en drop je het bronbestand in Terminal zodat het pad daar getoond wordt, druk Enter om je programma uit te voeren.

Ingeval je de yab IDE gebruikt, kan je het programma uitvoeren via de Menubalk in Program en daar met Run in Terminal het programma draaien.

terug naar index
 

Bind programmacode. (Zeta)

Als je programma klaar is, dan is de volgende stap bind . Met "binding" voorkom je dat anderen in je broncode kunnen kijken, zodat jij alleen de broncode kan wijzigen en bekijken.

Open een Terminal window en voer het volgende in :

yab -bind "Name of the program" /Path/to/source code.yab


Met yab -bind verklaar je dat je de broncode wil binden. De naam van het programma is de naam van het bestand dat je vindt in folder waarin je het bind uitvoert. De broncode kan toegevoegd worden zoals voorheen met drag and drop.

terug naar index
 

Help tijdens het programmeren.

- Wegens de overeenkomsten met YABASIC, is het altijd aanbevolen dat je zoekt naar oplossingen in hun documentatie.

- yab zelf heeft enkele voorbeeldcodes, die verschillende functies laten zien. Die kan je vinden in je yab folder.

- Hier op BeSly is er een yab ProgramHelp (duits), waar een uitgebreide lijst van functies is beschreven.

terug naar index

Translation by Luc Schrijvers (Begasus) and adagio of the Belgium BeOS Usergroup.
Tutorial written by Christian Albrecht (Lelldorin) March 2006
Made available by BeSly, the BeOS & Zeta knowledge.