yab Einsteigertutorial Nr. 2System: BeOS, Haiku, Zeta
Inhalt
Wir erstellen ein Programm In diesem Tutorial werden Wir ein Programm erstellen, mit welchen man ein BFS (Be Filesystem) Image erzeugen kann. Zu aller erst muss man sich überlegen, was alles in diesem Programm enthalten sein sollte. Ein BFS Creator sollte auf jedenfall die möglichkeit geben, die Größe der Imagedatei festlegen zu können. Außerdem sollte auch der Name und der Speicherort einstellbar sein. Hat man sich ein Bild von den Funktionen der Anwendung gemacht, sollte man sich überlegen, wie das Programm ablaufen soll. Hierbei ist es immer ratsam den Ablauf des Programms aus Sicht des Anwenders zu sehen. - Der Programmstart - Eingabemaske für Name und Größe der Imagedatei. - Einen Button um das Erstellen der Imagedatei zu starten. - Öffnen eines Auswahlfensterns zum festlegen des Speicherorts der Imagedatei. - Erstellen der Imagedatei - Ausgabe einer Information, daß die Imagedatei angelegt wurde. zurück zur Übersicht Wir beginnen mit dem Grundgerüst des Programmcodes:
Dieses Grundgerüst fällt etwas größer aus als es eigentlich nötig ist, jedoch können Sie dieses Grundgerüst in dieser Form für weitere eigene Projekte verwenden. Ganz am Anfang ermitteln wir mit screenWidth = peek("desktopwidth") und screenHeight = peek("desktopheight") die Bildschirmauflösung. Zuerst die Bildschirmbreite (desktopwidth) und dann die Bildschirmhöhe (desktopheight). Diese Informationen können wir beim Erstellen des Programmfenster so verwenden, daß unser Programmfenster in der Bildschirmmitte platziert wird. Unter der Ermittlung der Bildschirmgröße, dimensionieren wir einen Array dim part$(1), der mit einer Größe von 1 gesetzt wird. Nachdem der Array erstellt wird, beginnt der inloop, welchen Sie ja schon aus dem Einsteigertutorial kennen. Bei msg$ = message$ wird der Inhalt der yab- Variable message$ in die msg$ Variable kopiert.
Nun wird die Variable msg$ gesplittet. Gesplittet wird bei jeden ":" und jedem "|" Zeichen. Mit dem ":" wird immer der Bereich der Message getrennt und mit dem "|" das Ende der Message angezeigt. Durch die Verwendung dieser Variablen, können Sie jederzeit im Programm die ausgeführte Aktion ermitteln und verarbeiten. Wenn Sie z.B. einen Button haben, dann können Sie beim Ausführen über den Terminal sehen, was ausgewählt wurde. Hier müßte jetzt wenn Sie den Button betätigen folgende Nachricht (Message) ausgegeben werden: "Button|". Diese Ausgabe läßt sich dann prima mit einer case verarbeiten. zurück zur Übersicht Das Programmfenster Jetzt erstellen wir das Programmfenster mit einbeziehen der ermittelten Desktopgröße. Platzieren Sie den Code unterhalb der Ermittlung der Desktopgröße:
Wir erstellen mit window open wie gewohnt ein Fenster, dieses soll 340 Pixel in der Breite und 160 Pixel in der Höhe haben. Da wir uns die Bildschirmgröße ermittelt haben, können wir uns jetzt diese Information zu Nutze machen und das Fenster in die Mitte des Desktops setzen. Dies tun wir indem wir die beiden Werte ScreenWidth und ScreenHeight durch 2 teilen um die Mitte des Bildschirms zu errechen und dann soviel von dem Ergebnis abziehen oder hinzufügen, daß wir am Ende auf unsere gewüschte Größe kommen. Mit den window set Befehl setzen wir die maximale und minimale Größe des Fenster fest. Damit kann man erreichen, daß ein Benutzer das Fenster ganz, wenig oder gar nicht in der Größe verändern kann. In diesem Fall ist das Fenster nicht veränderbar, da dies gar keinen Sinn machen würde. zurück zur Übersicht Die Eingabemaske Nachdem wir das Fenster erstellt haben, erstellen wir die Eingabemaske für den Anwender:
Am Anfang dieses Tutorials haben wir uns Gedanken gemacht, welche Eingabemöglichkeiten der Anwender haben sollte. Dies war die gewünschte Größe, sowie Name und Speicherort der Imagedatei. Wir platzieren deshalb untereinander einmal eine textcontrol zum eingeben der gewüschten Dateigröße und eine zum Angeben des Dateinamens. Die Platzierung der Textcontrol ist genauso Aufgebaut wie die des Buttons, welchen Sie im Einsteigertutorial bereits erstellt haben. Sie geben den Abstand vom linken und oberen Fensterrand der Anwendung zur Textcontrol und nach dem to den rechten und unteren Abstand der Textcontrol an. Dahinter folgt der Programminterne Name der Textcontrol, dann der Sichtbare Name (hier freigelassen da wir mit draw text einen Text vor die Textcontrol setzten werden) und die Angabe für den View auf welchen wir die Textcontrol platzieren möchten.
Vor und hinter die Textcontrols fügen wir mit draw text Beschreibungen ein, damit der Anwender weiß was er wo einzutragen hat. Hinter der Textcontrol für die Dateigröße steht "MB" für Megabyte, damit der Anwender weiß in welcher Einheit er die Größe angeben soll. Hinter der Textcontrol für den Dateinamen steht ".image", um den Anwender zu zeigen das dieser keine Dateiendung mehr anzugeben braucht, sondern nur den Namen, davon mal angesehen das eine Dateiendung unter BeOS und ZETA nicht nötig ist. Wiederum ist eine Dateiendung praktisch, da dadurch die Imagedatei schnell als eine solche ersichtlich ist. Zum Schluß folgt ein Button, welcher gleich von uns verwendet wird, die eingegebenen Werte zu verarbeiten. zurück zur Übersicht Ausführung der Programmfunktion Nun kommen wir zum eigentlichen Kern der Anwendung, nähmlich der Funktion eine BSF Imagedatei zu erstellen. Hierbei bedienen wir uns dem Terminalprogrammen dd zum erstellen einer Roh-Imagedatei und mkbfs zum inizialisieren des Be Filesystems. Bevor wir dies jedoch machen können, müssen wir die dazu benötigten Informationen aus den Eingaben des Anwenders ermitteln und verarbeiten. Fügen Sie folgenden Code unterhalb von switch msg$ ein:
Die case Funktion kennen Sie ja bereits aus dem Einsteigertutorial, mit diesem wird die Auswertung der Eingabe und das Erstellen der Imagedatei ausgeführt. Wir erstellen ein Variable bfssize$ und intregieren in diese die durch textcontrol get$ "bfssize" ermittelte, vom Anwender eingegebene Größe der zu erstellenden Imagedatei. Also textcontrol get$ und der Name der Textcontrol "bfssize". Das selbe machen wir mit der zweiten Textcontrol. Wir ermitteln mit textcontrol get$ "bfsname" den vom Anwender eingegebenen Namen der Imagedatei und speichern diesen in der Variablen bfsname$ Damit haben wir die beiden Eingabefelder ausgelesen und deren Einträge in Variablen gespeichert. Der nächste Schritt ist den Ablageort für die Datei zu ermitteln. Dies erfolgt über den Befehlt FILEPANEL. Wieder verwenden wir eine Variable (bfsimage$) um in ihr die ermittelte Information zu speichern. Durch FILEPANEL und deren Zusatzangaben wird ein Fenster geöffnet, welches den Programminternen Namen "Save-File und den Angezeigten Namen "Save" trägt. Danach folgt der Ordner, der geöffnet werden soll (hier /boot/home und der Name der Datei die im Eingabefeld des FILEPANEL angezeigt wird und damit der Name der erstellte Datei sein wird. Dieser setzt sich aus der Variablen bfsimage$ plus der von uns ja schon vorgegebenen Dateiendung ".image" zusammen. Mit Output$=system$("/boot/beos/bin/dd if=/dev/zero of="+bfsimage$+" bs=1024k count="+bfssize$) (system$ ist eine yab interne Variable die das Ausführen von yab- externen Anwendungen ermöglicht.) erstellen wir mit Hilfe des Terminalprogrammes dd eine Rohimagedatei, welche den Namen bfsimage$ trägt und die Gr&oouml;ße bfssize$ besitzt. Mit Output$=system$("mkbfs 2048 "+bfsimage$+"; sync"), machen wir aus der Rohimagedatei eine BFS Imagedatei. Auch hier kommt die von uns erstellen Variable bfsimage$ zum Einsatz.
Am Ende geben wir mit dem Befehl ALERT eine Nachricht aus, die die Fertigstellung der Imagedatei verkündet. Erst kommt der Text für die Ausgabe im Alertfenster, dann der Name des Buttons, der im Alertfenster enthalten ist und diesen quittiert und dann die Darstellungsart des Alertfensters. Diese Steht auf info, da wir eine "Information" ausgeben wollen. zurück zur Übersicht Was noch fehlt Somit ist das Programm von seinem Grundfunktionen her fertig. Jetzt können Sie noch wie im Einsteigertutorial gelernt, den Schließen- Button vom Fenster mit einer "Quit" Funktion belegen. Außerdem könnten Sie jetzt noch ein Menü hinzufügen um dort Informationen über das Programm oder des Entwicklers einzubringen. zurück zur Übersicht Programmcode binden Das Binden des yab Quellcodes haben Sie zwar schon im Einsteigertutorial gelernt, ist aber um dieses Tutorial von Anfang bis Ende vollständig abschließen zu können, trotzdem hier nochmal aufgeführt. Haben Sie Ihr Programm fertig gestellt, muß dieses nur noch gebunden werden. Durch das binden des Programmcodes, wird dieses für andere nicht mehr einsehbar, so daß Ihre Arbeit und Vorgehensweise nur für Sie als Eigentümer des Quellcodes einsehbar ist. Öffnen Sie den Terminal und geben folgendes ein:
Mit yab -bind gegen Sie an, daß Sie ein Quellcode binden möchten. Der Name des Programms ist der Name der Datei die nach dem Binden in Ihrem Homeverzeichnis anzufinden ist. So sieht das Programm dann am Ende aus: ![]() zurück zur Übersicht Der komplette Quellcode
zurück zur Übersicht Bereitgestellt durch BeSly, der BeOS & Zeta Wissensbasis. |