Mac OS: AppleScript/ AppleScript Studio

Aus Wikibooks

Wechseln zu: Navigation, Suche
Nuvola apps bookcase.svg Mac-OS-Kompendium Nuvola apps bookcase 1.svg AppleScriptNuvola mimetypes dvi.png AppleScript Studio

Mit Xcode können unter anderem AppleScript-basierte Applikationen erstellt werden. Wenn AppleScript unter Xcode verwendet wird spricht man vom "AppleScript Studio" (im Gegensatz zum "Scripteditor").

Inhaltsverzeichnis

[Bearbeiten] Einleitung

Da AppleScript relativ einfach zu erlernen ist (im Vergleich zu C oder C++), können so auch "normale" Menschen ein nettes OSX-Programm erstellen. Zunächst müssen Sie sich jedoch die "Developer Tools" von Apples Server herunterladen und installieren. Diese können kostenlos von der URL http://developer.apple.com/technology/xcode.html bezogen werden. Allerdings muss man sich zuvor einen kostenlosen Account erstellen. Während Sie die Developer Tools herunterladen, können Sie ja z.B. Ihre AppleScript Kenntnisse etwas auffrischen...

Die Vorgehensweise zur Erstellung einer OSX-Applikation mittels AppleScript und Xcode wird hier an einem Beispiel erklärt. Wir programmieren einen kleinen Fragebogen, der die Zufriedenheit mit Wikibooks erfragt und die Daten in eine kleine sqlite3-Datenbank speichert. Sicherlich, dieses Programm hat keinen großen Nutzen, da die potentiellen Probanden den Bogen an Ihrem Mac ausfüllen müssten. Trotzdem stellt ein solcher Fragebogen gewisse Herausforderungen an die Programmierung in AppleScript Studio, so dass es sich bestimmt eignet, ein Verständnis für die prinzipiellen Vorgehensweisen zu schaffen.

Wenn Sie die Developer Tools installiert haben, öffnen Sie das Programm Xcode. Dieses liegt im Hauptverzeichnis unter Developer/Applications.

[Bearbeiten] Ein neues Projekt anlegen

Starten Sie Xcode und wählen Sie aus dem Menü "File => New Project."

Es öffnet sich ein neues Fenster. Wählen Sie unter "Application" den Eintrag "AppleScript Application" aus und klicken Sie auf "next". Hierdurch bestimmen Sie, dass das neue Projekt hauptsächlich in Applescript geschrieben wird. Die Projekteinträge werden dann entsprechend automatisch generiert.

Sie werden jetzt noch nach dem Dateinamen Ihres neuen Projektes und dem Speicherort gefragt. Wir nennen unser Projekt "Wikibooks_Demo" und erstellen dafür im "Dokumente"-Ordner einen eigenen Unterordner, der z.B. auch "Wikibooks-Demo heißt.

"AppleScript Application" auswählen
Es öffnet sich nun das Xcode-Projektfenster. Auf der linken Seite sehen Sie eine Übersicht von verschiedenen Ordnern und Dateien. Zunächst sind hier nur 2 Ordner von Interesse: "Scripts" und "Resources". Klicken Sie zunächst auf den Ordner "Scripts". Sie sehen, dass Xcode bereits eine Datei angelegt hat. Diese trägt den Namen Ihres Projektes mit der Dateiendung "applescript". In Wikibooks_Demo.applescript werden wir einen Großteil unserer AppleScript-Befehle schreiben. Durch Doppelklick auf diese Datei öffnet sich der Editor. Noch ist es allerdings nicht an der Zeit um Code einzufügen - das kommt später.
Xcode Projektfenster
Scripts-Ordner mit Datei "Wikibooks_Demo.applescript"

Wechseln Sie nun in den "Resources"-Ordner. Auch hier ist bereits ein paar Datei enthalten:

  • "AppleScriptKit.sdef": Diese Datei ist als Nachschlagewerk für AppleScript Befehle und Klassen gedacht. Dies kann hilfreich sein, wenn Sie "mal kurz" nachschlagen wollen, wie eine bestimmte Aktion gescriptet werden muss.
  • "MainMenu.xib": Diese Datei ist wichtig für die graphische Erstellung unserer Programm-Fenster, so wie sie später angezeigt werden sollen. In älteren Xcode Versionen trägt die Datei den Namen "MainMenu.nib".
Resources-Ordner mit Datei "MainMenu.nib"
  • "InfoPlist.string": Diese Datei enthält Angaben über die Programm-Version sowie den Autoren. Diese Angaben erscheinen später, wenn in Ihrem Programm die Menüauswahl "Über Wikibooks_Demo" gewählt wird. Klicken Sie doppelt auf diese Datei und ändern Sie direkt den Bereich __MyCompanyName__ in Ihren Namen um. Wenn Sie möchten können Sie auch die Copyright-Angaben umändern oder weitere Informationen eintragen. Wichtig ist, dass all Ihre Angaben zwischen den Anführungszeichen stehen.
InfoPlist.string
InfoPlist.string Einträge

[Bearbeiten] Das Interface aufbauen

Fast jedes Programm besteht aus einem Graphischen User Interface (GUI), welches die Benutzung über eine grafische Oberfläche in Form von Programmfenstern ermöglicht. AppleScript Studio - also die Verwendung von AppleScript in Kombination mit den Developer Tools - ist genau für diesen Zweck entwickelt: Es ermöglicht Ihnen in sehr einfacher Weise Programmfenster zu erstellen, deren Funktionen Sie in AppleScript programmieren können. Hierzu steht der so genannte "Interface Builder" (IB) zur Verfügung. Mit ihm können Sie Ihre Programmfenster zusammenstellen, ohne sich um lästigen Standardcode zur Erzeugung der Grafiken (Fenster, Buttons, Schieberegler usw.) kümmern zu müssen. Also, frisch ans Werk. Der Interface Builder startet automatisch, wenn Sie im Xcode-Fenster auf die Datei MainMenu.xib doppelklicken. MainMenu.xib finden Sie, wenn Sie in der linken Spalte in den Ordner "Resources" schauen.

Es öffnet sich nun das Hauptfenster des IB, welches 5 Objekte enthält. Für uns sind zunächst die letzten beiden Objekte interessant: "Window" und "MainMenu". Führen Sie einen Doppelklick auf das Objekt "Window" aus. Et voila, das erste Programmfenster öffnet sich. Noch ist es leer, und es trägt auch noch den nichts sagenden Titel "Window", aber das wird sich bald ändern. Hierzu benötigen wir die Hilfe eines der elementaresten Werkzeuge des IB: des so genannten "Inspectors".

Das Hauptfenster des Interface Builders

Der Inspector ist ein Werkzeugfenster, in welchem die grundlegenden Einstellungen für die Programmfenster und deren Inhalte festgelegt werden. Sie öffnen den Inspector durch die Tastenkombination ShiftApfeli. Der Inspector hat mehrere Ansichten, die über die Reiter in der Kopfzeile angewählt werden können. Für unser Projekt sind der erste Reiter (Attribute) und der letzte Reiter (AppleScript) von Bedeutung. Wenn der Inspector öffnet, ist der erste Reiter (Attribute) geöffnet. Sie erreichen diesen Reiter auch per Tastenkombination Apfel1. Bleiben wir zunächst auf diesem Reiter. Sie sehen zu oberste ein Eingabefeld mit dem Namen "Title". Im Eingabefeld selbst steht noch "Window". Falls Sie diese Felder nicht sehen können, liegt das daran, dass Sie Ihr gerade erschaffenes Programmfenster "Window" noch nicht richtig ausgewählt haben. Klicken Sie hierzu auf die Kopfleiste Ihres Fensters (das ist die Leiste mit den rot-gelb-grünen Knöpfen auf der linken Seite). Wichtig ist, dass Sie wirklich auf die Kopfleiste - nicht aber in das Fenster klicken. Jetzt sollten Sie im Inspector das eben erwähnte Feld "Title" und nebenstehenden Eintrag "Window" sehen. Ändern Sie in dem Eingabefeld "Window" in "Wikibooks Befragung" um. Sie werden sehen, dass sich nun der Titel auch in Ihrem Programmfenster entsprechend geändert hat. Die nächste Zeile "Frame name" lassen wir leer stehen. Viel interessanter sind die darunter stehenden Häkchen.

  • Controls: "Close, Resize und Minimize". Mit ihnen können Sie die drei Knöpfe auf der linken Seite der Kopfzeile (rot-gelb-grün) Ihres Programmfensters de- und aktivieren. Wenn Sie die Häkchen entfernen (und das wollen wir mal direkt tuen), verhindern Sie, dass im späteren Programmbetrieb der Benutzer die Größe des Fensters verändern oder es mit dem roten Button schließen kann.
  • Appearance: Setzen Sie ein Häkchen bei "Textured" und schauen Sie, was mit Ihrem Programmfenster geschieht...
  • Behaviour: "Visible at launch". Dieses Häkchen sollte für das Hauptfenster Ihres Programms (und das erstellen wir ja gerade) unbedingt gesetzt werden. Für weitere Programmfenster, die nur bei bestimmten Aktionen/Funktionen erscheinen sollen, muss dieser Haken entfernt werden.

Bevor wir weitermachen, und zum Beispiel Buttons und Textfelder unserem Programmfenster hinzufügen, wechseln wir kurz in die "Applescript"-Ansicht des Inspectors.

Der Inspektor: "Attribute"-Ansicht
Da wir unser Programm in AppleScript schreiben möchten, ist die AppleScript-Ansicht des Inspectors sehr wichtig. Man erreicht diese Ansicht entweder, indem man auf das Symbol ganz rechts in der Kopfleiste des Inspectors klickt, oder durch die Tastenkombination Apfel7. Wenn Sie in der AppleScript-Ansicht sind, gehen Sie zunächst wieder sicher, dass Sie Ihr Programmfenster richtig ausgewählt haben. Klicken Sie also in die Kopfleiste Ihres Programmfensters, und schauen Sie, ob sich im Inspector irgendwas ändert. Ist dies nicht der Fall, hatten Sie Ihr Programmfenster bereits richtig ausgewählt. Sie sehen im Inspector nun die Eingabebereiche "Name, Index, Scope, Script". Gehen Sie zuerst in den Bereich "Script" und wählen Sie aus dem Dropdown-Menu "Wikibooks_Demo.applescript" aus. Hiermit sagen Sie dem Inspector, dass die Funktionen für das Objekt "Programmfenster" in der Datei "Wikibooks_Demo.applescript" programmiert werden. Erst wenn Sie diesen Eintrag gesetzt haben, können Sie die anderen Felder ausfüllen (denn die Felder werden bei der Auswahl der Scriptdatei gelöscht!). Ganz wichtig ist das oberste Feld "Name". Hier tragen Sie ein, unter welchem Namen das Objekt (in diesem Fall Ihr Programmfenster) im AppleScript-Code angesprochen wird. Da es sich bei dem Programmfenster um das Hauptfenster unseres Programms handelt, nennen wir es auch so: hauptfenster

Jetzt kann das Fenster in AppleScript eindeutig angesprochen werden.

An dieser Stelle sei nun auf eine wichtige Verständnissache von AppleScript Studio hingewiesen:

Im Gegensatz zum Scripteditor, in welchem Sie evtl. erste Erfahrungen mit AppleScript gesammelt haben, läuft ein Programm in AppleScript Studio objektbezogen ab. Das bedeutet, dass ihr Code nicht einfach zu Beginn des Programmes ausgeführt wird. Vielmehr laufen Ihre Funktionen erst dann ab, wenn "gewisse Dinge geschehen". Diese "gewissen Dinge" nennt man "Events".

Passend hierzu finden Sie in der AppleScript-Ansicht des Inspectors den Bereich "Event Handlers". Hier können Sie angeben, welche "Events" in Ihrem Programm geschehen sollen. Wenn Sie möchten, dass direkt zum Programmstart ein Code ausgeführt wird, müssen Sie dies auch so angeben. Klicken Sie hierzu auf das kleine Dreieck vor "Window" und setzen Sie aus der aufklappenden Liste einen Haken bei "opened". Hiermit teilen Sie dem IB mit, dass beim Öffnen des Programmfensters (also beim Start des Programms) ein gewisser Code ausgeführt werden soll. In vielen Fällen ist dies gar nicht notwendig, da Funktionen normalerweise erst dann ausgeführt werden sollen, wenn der User z.B. auf einen Button drückt. Wir möchten aber in unserem Beispiel hier trotzdem schon nach dem Öffnen des Programms einen Codeschnipsel ausführen lassen.

Der Inspektor: "AppleScript"-Ansicht
Der Inspektor: "AppleScript"-Aktionen wählen

Doppelklicken sie nun auf "opened" oder gehen Sie zurück in Xcode und klicken Sie dort im Script-Ordner doppelt auf die Datei "Wikibooks_Demo.applescript". Es öffnet sich nun ein Editor, und Sie sehen die folgenden Zeilen:

on opened theObject
	(*Add your script here.*)
end opened

Dieser Eintrag wurde durch die Wahl des Event Handlers "opened" automatisch in Ihrer Scriptdatei erzeugt. Die Variable theObject wird von AppleScript Studio automatisch erzeugt und enthält die Events. Die erste Zeile besagt (auf deutsch übersetzt): "Wenn das Objekt (in diesem Fall unser Programmfenster) geöffnet wird, dann tue folgendes:". Sie können nun der Aufforderung aus der zweiten Zeile ((*Add your script here.*)) nachkommen, und ihren Code hier eingeben. Die dritte Zeile besagt, dass der Code zu Ende ist. Zusammengefasst bedeutet das, dass der Code zwischen on opened und end opened beim Programmstart ausgeführt wird.


Merken Sie sich, dass...
...Sie in der Attribut-Ansicht des Inspectors das Aussehen Ihres Programms regeln. Diese Einstellungen bekommen 
   die User Ihres Programms zu sehen.
...Sie in der AppleScript-Ansicht des Inspectors unbedingt auf eine Scriptdatei verweisen müssen, über welche Sie das 
   Objekt ansprechen werden, und dass Sie hierzu unbedingt einen eindeutigen Namen für das Objekt vergeben müssen
...Sie Objekte ausschließlich über den Namen, den Sie in der AppleScript-Ansicht des Inspectors vergeben haben 
   im Code ansprechen können, nicht aber über den Namen (Title) aus der Attribute-Ansicht.
...Sie in der Scriptdatei keine on (...) theObject-Bereiche löschen, da dies zu Fehlermeldungen und Abbrüchen führt. 
   Entfernen Sie, falls Sie die Events nicht (mehr) benötigen die Häkchen im Event Handlers-Bereich der AppleScript-
   Ansicht im Inspector.

Diese vier Regeln sollten Sie sich unbedingt merken, denn sie gelten für alle Objekte (wie z.B. Buttons, Schieberegler, Fenster, Textfelder usw.), die Sie für Ihre Programm erstellen werden. Ein häufiger Anfängerfehler besteht darin, dass entweder kein Name oder keine Scriptdatei für ein Objekt angegeben wird, oder aber dass Objekte über die Namen aus der Attribute-Ansicht im Code referenziert werden. Des Weiteren führt das Löschen von automatisch generierten on (...) theObject-Bereichen in der Scriptdatei zu Fehlermeldungen während des Programmablaufs, über deren Ursache man sich im Falle eines Falles nur nach langem Suchen und Herumprobieren klar wird.


[Bearbeiten] Code für den Programmstart

Da wir das Event "opened" für unser Programmfenster ausgewählt haben, wollen wir nun auch den Codeschnipsel programmieren, der beim Programmstart ausgeführt werden soll. Wir erstellen ja hier einen Fragebogen, dessen Daten wir in einer sqlite3-Datenbank ablegen möchten (sqlite3 ist standardmäßig auf OSX-Systemen installiert). Daher werden wir beim Programmstart überprüfen, ob unsere Datenbank-Datei bereits existiert oder nicht. Sollte sie nicht existieren, werden wir sie anlegen lassen. Öffnen Sie daher die Datei "Wikibooks_Demo.applescript" und fügen Sie folgenden Code zwischen den on opened theObject-Bereich:

set dbPath to "~/Wikibooks.db" --unsere sqlite3-Datenbank soll im Userordner unter dem Namen "Wikibooks.db" gespeichert werden
--jetzt muss der Pfad noch im AppleScript-Format angegeben werden, damit der FINDER dies verstehen kann.
set pathPart1 to path to home folder as text --Pfad zum Userordner
set dbPathAS to pathPart1 & "Wikibooks.db" --der Dateiname wird dem Pfad angehaengt
	
tell application "Finder"
   if (exists file dbPathAS) then -- der Finder benötigt das AS-Format
      -- Die sqlite3-Datenbank-Datei existiert bereits... 
      -- deshalb machen wir nichts...
   else
      -- die Datenbank-Datei existiert nicht
      -- deshlab erzeugen wir sie nun mit Hilfe der Shell
      set head to "sqlite3 " & dbPath & space & quote -- so soll unser Shellbefehl beginnen
      set tail to quote -- und so endet er
      set tableName to "create table wikibooks" --wir erzeugen eine neue Tabelle "wikibooks" fuer unsere Daten
      set tableColumns to " (id, datum, dasAlter, geschlecht, f1,f2,f3,f4); " --diese Spalten soll die Tabelle haben
      do shell script head & tableName & tableColumns & tail -- so wird die Datenbank-Datei erzeugt
      --jetzt benoetigen wir noch eine Tabelle um den "working-status" abfragen zu koennen
      set tableName to "create table working" -- dies ist unsere "working" Tabelle
      set tableColumns to " (id, status, nextquestion); " --diese Spalten soll "working" haben
      do shell script head & tableName & tableColumns & tail -- so wird die Tabelle erzeugt und gespeichert
      --in "working" legen wir auch schon einen Datensatz herein
      set data1 to "insert into working values('1','1','1'); " --diese Daten wollen wir speichern
      do shell script head & data1 & tail --und das tun wir hier auch
   end if
end tell

In der Kopfzeile des Editors sehen Sie ein Symbol, dass einen Hammer zeigt und den Untertitel "Build and Go" trägt. Wenn Sie auf dieses Symbol klicken, wird Ihr Programm kompiliert und ausgeführt. Vorher fragt Xcode noch nach, ob die geöffneten Dateien gespeichert werden sollen. Klicken Sie hier immer auf "Save all". Ihr Programm startet nun. Scheinbar passiert nicht viel, denn es wird "nur" das (noch leere) Programmfenster angezeigt. Wenn Sie aber mit dem Finder in Ihren Userordner (das ist der mit dem Häuschen) gehen, werden Sie dort die Datei "Wikibooks.db" vorfinden.


[Bearbeiten] Referenzieren von Objekten

Nachdem wir mit dem on opened theObject-Codeschnipsel sichergestellt haben, dass unsere Datenbankdatei existiert, können wir nun (endlich) beginnen unser Programmfenster mit Inhalt zu füllen. Klicken Sie wieder auf die "MainMenu.xib"-Datei aus dem Resources-Ordner, um so den Interface Builder zu starten (falls er nicht schon geöffnet ist). Neben dem Inspector gibt es noch das "Library"-Werkzeug. Dieses können Sie durch die Tastenkombination ApfelShiftL öffnen. Das Werkzeug hat die zwei Reiter "Objects" und "Media". Wir benötigen nun den Reiter "Objects". Hier finden Sie nun eine Liste aller Objekte, die Sie für Ihr Programmfenster verwenden können. Suchen Sie nach dem Objekt "Label" und ziehen Sie es in das Programmfenster. Bewegen Sie das Objekt an den oberen Rand des Programmfensters, denn das Label soll unsere Überschrift werden. Haben Sie dies getan, können Sie durch einen Doppelklick auf das Label den Text darin umändern. Wir schreiben hier mal "Wikibooks Befragung" hin und drücken RETURN.

Durch einen einfachen Klick wird das Objekt markiert. Sie erkennen das an den zwei bleuen Punkten links und rechts neben dem Objekt. Wenn Sie jetzt auf einen dieser Punkte klicken und die Maustaste gedrückt halten, können Sie die Größe des Labels verändern. Das machen wir aber erst nachdem wir den Text fett formatiert und vergrößert haben. Durch die Tastenkombination Apfelb wird der Text fett. Durch die Tastenkombination Apfel+ wird der Text vergrößert (Apfel- verkleinert ihn). Drücken Sie so oft Apfel+, bis die Überschrift "Wikibooks Befragung" für Sie groß genug dargestellt wird. Jetzt können Sie mit den blauen Punkten an den Seiten den dargestellten Bereich anpassen.

Lassen Sie das Objekt markiert (erkennbar an den beiden blauen Punkten) und öffnen Sie den Inspector (ApfelShifti). In der Attribute-Ansicht sehen Sie, dass der Title schon in "Wikibooks Befragung" geändert wurde. Wechseln Sie nun in die AppleScript-Ansicht (im Inspector-Kopf das Symbol ganz rechts). Wählen Sie hier zunächst unter "Scripts" die Datei "Wikibooks_Demo.applescript". Jetzt können Sie dem Objekt einen Namen geben. Wir setzen den Namen auf "ueberschrift". Beachten Sie bitte, dass Sie keine Sonderzeichen wie z.B. Umlaute für den Namen verwenden! Einen Event-Handler wählen wir nicht aus.

Gehen Sie jetzt wieder zur "Library" und wählen Sie unter "Objects" einen Button aus, der Ihnen gefällt (z.B. den "Textured Button"). Ziehen Sie den Button in Ihr Programmfenster und platzieren Sie ihn mit etwas Abstand unter die Überschrift "Wikibooks Befragung". Sie sehen, dass der Button dort mit blauen Punkten umrandet ist. Wenn Sie auf einen der Punkte klicken und die Maustaste gedrückt halten, können Sie so die Größe des Buttons verändern. Ausserdem erkennen Sie an den Punkten, dass das Objekt markiert ist. Wechseln Sie nun zum Inspector. In der Attribute-Ansicht tragen wir im "Titel"-Feld "Befragung starten" ein. Wechseln Sie nun in die AppleScript-Ansicht. Hier muss wieder zuerst unter "Script" die Datei "Wikibooks_Demo.applescript" angegeben werden. Jetzt tragen Sie in das "Name"-Feld den Namen "start" ein. Setzen Sie im Event-Handlers-Bereich unter "Action" ein Häkchen bei "clicked". Hiermit legen Sie fest, dass etwas passieren soll (Code ausführen), wenn jemand auf den Button klickt.

Öffnen Sie nun per Doppelklick die Datei "Wikibooks_Demo.applescript". Sie werden sehen, dass hier automatisch am Dateiende ein neuer Bereich erstellt wurde: on clicked theObject

Um den Buttonklick abfangen zu können, ersetzen Sie (*Add your script here.*) durch folgenden Code:

if name of theObject = "start" then--wenn auf das Objekt "start" geklickt wurde, dann...
    set content of text field "ueberschrift" of window "hauptfenster" to "Kuckuck"--ersetze den Inhalt des Textfelds "ueberschrift"
end if

Klicken Sie auf "Build and Go" um ihr Programm zu kompilieren und zu starten. Klicken Sie auf den Button "Befragung starten" und sehen Sie, was geschieht.

Der Codeschnipsel besagt (auf deutsch) folgendes:

  • Wenn das angeklickte Objekt "start" heißt (und so haben wir ja den Button benannt), dann
  • setze den Textinhalt des Textfelds "ueberschrift" im Fenster "hauptfenster" auf "Kuckuck"


Dieser Codeschnipsel ist natürlich völlig sinnlos, zeigt aber, wie die Referenzierung in AppelScript Studio funktioniert:

  • Code wird nur zwischen on (...)-Bereichen ausgeführt.
  • durch gezielte if-Abfragen wird unterschieden, was der User getan hat (z.B. welchen Button er geklickt hat)
  • das Abfragen und Setzen von Objektinhalten geschieht über den Objektnamen, der über den Inspector in der AppleScript-Ansichtvergeben wurde
  • in manchen Fällen muss zusätzlich der Namen des Programmfensters angegeben werden, in welchem das Objekt platziert ist

[Bearbeiten] Das Beispielprogramm "Wikibooks-Demo"

So, da wir jetzt die Grundprinzipien kennen, können wir das eigentliche Beispielprogramm "Wikibooks-Demo" erstellen.


[Bearbeiten] Das Hauptfenster

Das Hauptfenster

Zunächst erweitern wir das Hauptfenster ein wenig. Gehen Sie dazu in den Interface Builder. Einen Button "Befragung starten" (mit dem AppleScript Namen "start") haben wir ja bereits erzeugt. Nun sollen zwei weitere Buttons folgen. Den ersten nennen wir "Daten exportieren" und geben ihm den AppleScript Namen "export", den zweiten nennen wir "beenden" und geben ihm auch den AppleScript Namen "beenden". Für beide Buttons wird unter Script die Datei "Wikibooks_Demo.applescript" gewählt und bei den EventHandlers ein Haken bei "clicked" gesetzt. Die Buttons ordnen wir so im Fenster an, dass sie untereinander unter der Überschrift dargestellt werden. Die Fenstergröße können Sie noch so anpassen, dass das Ganze "schön" und symmetrisch aussieht.

Ist dies geschehen, können wir ein paar Zeilen Code schreiben. Öffnen Sie die Datei "Wikibooks_Demo.applescript". Im Bereich on clicked theObject steht noch unser Sinnlos-Codeschnipsel "Kuckuck". Dieser wird nun wie folgt geändert:

on clicked theObject
   if name of theObject = "beenden" then--wenn auf das Objekt "beenden" geklickt wurde, dann...
       quit--beende das Programm
   end if
   if name of theObject = "start" then--wenn auf das Objekt "start" geklickt wurde, dann...
       show window "Eingabe"--öffne das Programmfenster "Eingabe"
   end if
   if name of theObject = "export" then--wenn auf das Objekt "export" geklickt wurde, dann...
       show window "Export"--öffne das Programmfenster "Export"
   end if
end clicked

Die beiden Programmfenster "Eingabe" und "Export" existieren noch nicht, und darum werden wir sie jetzt erstellen.

[Bearbeiten] Das "Eingabe"-Fenster

Für die Dateneingabe erstellen wir ein neues Programmfenster und eine dazugehörige AppleScript-Datei. Natürlich könnten wir auch den gesamten Code in der Datei "Wikibooks_Demo.applescript" eingeben, dies ist aber nicht sehr übersichtlich. Erstellen wir also zunächst eine neue .applescript-Datei. Gehen Sie hierzu nach Xcode und markieren Sie den Ordner "Scripts". Klicken Sie jetzt in der Menüleiste unter "File" auf "New File...". Es öffnet sich ein Dialogfenster, in welchem wir die Option "AppleScript Text File" auswählen und auf "Next" klicken (nicht AppleScript Script File, weil dies für bereits kompilierte Scripte gilt!). Als Dateinamen geben wir "Dateneingabe1.applescript" an und klicken auf "Finish". Jetzt ist die neue Scriptdatei im Ordner "Scripts" einsehbar.

Anschließend erstellen wir das neue Programmfenster. Hierfür gehen wir in den Interface Builder und wählen aus der Library (ApfelShiftL) den Eintrag "Window" aus. Diesen ziehen wir einfach aus der Library heraus, und schon ist ein neues Programmfenster erstellt. Klicken Sie jetzt auf die Kopfleiste des neuen Programmfensters und wechseln Sie in die Attribute-Ansicht des Inspectors.

  • Unter "Title" tragen wir "Basisdaten eingeben" ein
  • Entfernen Sie die Häkchen bei "Close", "Rezise" und "Minimize"
  • Entfernen Sie das Häkchen bei "Visible at Launch". Hierdurch gehen wir sicher, dass das Fenster nur angezeigt wird, wenn wir es im Code aufrufen.

Wechseln Sie nun in die AppleScript-Ansicht des Inspectors und wählen Sie zuerst unter "Script" die neue Datei "Dateneingabe1.applescript" aus. Jetzt setzen wir im "Namen"-Feld den AppleScript-Namen des neuen Programmfensters auf "Eingabe", denn unter diesem Namen wird es ja durch Klick auf den "Befragung starten"-Button des Hauptfensters angesprochen (in unserem Fall geöffnet). Im Event Handler-Bereich setzen wir unter "Window" ein Häkchen bei "opened".

Programmfenster "Basisdaten eingeben"

Jetzt füllen wir das Fenster mit Inhalt (siehe Bild):

  • Ein Label mit dem Inhalt "Bitte geben Sie die Basisdaten des Probanden ein"
  • Ein Label mit dem Inhalt "Datum:"
  • Ein Label mit dem Inhalt "Alter:"
  • Ein Label mit dem Inhalt "Geschlecht:"
  • Ein TextField mit dem Applescript-Namen "datum" und dem Script "Dateneingabe1.applescript" ohne EventHandler
  • Ein TextField mit dem Applescript-Namen "jahre" und dem Script "Dateneingabe1.applescript" ohne EventHandler
  • Ein RadioGroup-Feld mit dem Applescript-Namen "geschlecht" und dem Script "Dateneingabe1.applescript" ohne EventHandler. Geben Sie dem RadioButton-Feld die Einträge "männlich" und "weiblich"
  • Ein Button mit dem Inhalt "weiter" und dem Applescript-Namen "weiter" und dem Script "Dateneingabe1.applescript" und dem Event Handler "clicked"
  • Ein Button mit dem Inhalt "zurück" und dem Applescript-Namen "back" und dem Script "Dateneingabe1.applescript" und dem Event Handler "clicked"

Ordnen Sie die Felder so an, wie auf dem Bild rechts angezeigt.

Wenn Sie mit dem Aussehen des Fensters zufrieden sind, können wir den Code eingeben. Öffnen Sie also die Datei "Dateneingabe1.applescript". Sie sehen, dass die Datei bereits folgenden Inhalt besitzt:

on opened theObject
	(*Add your script here.*)
end opened
on clicked theObject
	(*Add your script here.*)
end clicked

Widmen wir uns zunächst dem on opened-Bereich. Wir möchten, dass im Datum-Feld das aktuelle Datum angezeigt wird, so dass man es nicht immer extra eingeben muss (Das "Datum"-Feld dient dazu abzuspeichern, an welchem Tag die Befragung durchgeführt wurde. Wir gehen davon aus, dass die meisten Daten direkt eingegeben - und nicht von z.B. einem Fragebogen übertragen werden. Daher ist das automatische Einfügen des aktuellen Datums sehr benutzerfreundlich). Das Umschreiben des Datums in das Format "2008-12-24" ist in AppleScript etwas umständlich. Im folgenden Codeblock sehen Sie, wie umständlich es ist. Bis auf die vorletzte Zeile ist der gesamte Code nur dafür da, das richtige Format zu erstellen. In der vorletzten Zeile wird das aktuelle Datum dann (endlich) in das TextField "datum" des Programmfensters geschrieben. Wir fügen folgenden Code innerhalb des on opened-Bereichs ein:

on opened theObject
   --- aktuelles Datum
   set dummy to (current date)
   set MonatsListe to {January, February, March, April, May, June, July, August, September, October, November, December}
   -- Monat als Zahl schreiben
   repeat with i from 1 to 12
		
      if dummy's month = item i of MonatsListe then
         set Monat to text -2 thru -1 of ("0" & i)
         exit repeat
         -- wenn true, wird die Schleife verlassen
      end if
   end repeat
   set derTag to text -2 thru -1 of ("0" & dummy's day) -- Tag schreiben
   set Jahr to (year of dummy) as text -- Jahr schreiben
   -- Datum zusammenbauen
   set aktuelllesDatum to Jahr & "-" & Monat & "-" & derTag--jetzt haben wir das Datum im Format "2008-12-24"
	
   set content of text field "datum" of window "Eingabe" to aktuelllesDatum--hier wird der Inhalt des "Datum"-Felds auf das aktuelleDatum gesetzt.
end opened

[Bearbeiten] Das "Export"-Fenster

[Bearbeiten] Dem Programm ein Icon hinzufügen

In diesem Abschnitt wird erklärt, wie Sie Ihrem Xcode-Projekt ein individuelles Programm-Icon hinzufügen können.

Jedes Apple-Programm hat ein schickes Icon, welches im Dock angezeigt wird, sobald das Programm aktiv ist. Für Xcode-Projekte wird ein Standard-Icon verwendet. Wenn Sie ein individuelles Icon verwenden möchten, benötigen Sie dieses im ".icns"-Format. Mit den Developer Tools wurde auch die passende Software zum Erstellen von Icons auf Ihre Festplatte installiert: der Icon Composer. Sie finden das Programm im Hauptverzeichnis der Festplatte unter "Developer/Applications/Utilities/".

  • Starten Sie nun den Icon Composer. Sie sehen das Programmfenster, welches 3 Bereiche hat: ein großes Feld und 4 kleinere Felder. Für unser Projekt nehmen wir eine "fertige" Grafikdatei, welche wir als Icon für unser Programm verwenden möchten. Wie wäre es mit dem GNU Kopf aus den Commons... Laden Sie die PNG-Datei zunächst herunter. Sie können natürlich auch eine andere Bilddatei wählen. Das Format (jpg, png, gif) ist egal.
  • Ziehen Sie nun die Bilddatei in das große Feld vom IconComposer und wählen Sie "Copy to all smaller sizes".
Importieren von Bildern in den IconComposer
  • Der GNU Kopf wurde so in alle Felder des IconComposers importiert.
GNU-Bild im Composer
  • Wählen Sie jetzt aus dem Menü "File => Export..." und speichern so das nun fertige Icon-Paket als .icns-Datei auf Ihre Festplatte.
Exportieren als .icns-Datei

Jetzt muss diese .icns-Datei dem Projekt hinzugefügt werden. Gehen Sie daher zurück ins Hauptfenster von Xcode.

  • Markieren Sie dort in der linken Spalte den "Resources"-Ordner.
  • Klicken Sie nun in der Menüleiste auf "Project => Add to Project...".
"Add to Project"-Option
  • Es öffnet sich nun ein neues Fenster in welchem Sie die soeben erstellte icns-Datei angeben können. Setzen Sie ein Häkchen bei "Copy items into destination group's folder" und klicken dann auf den "Add"-Button. Jetzt ist die Icon-Datei Ihrem Projekt hinzugefügt worden.
Icon ihrem Project hinzufügen
Damit diese auch als Programm-Icon verwendet wird, müssen noch 3 weitere Klicks von Ihnen getätigt werden.
  • Klicken Sie in der linken Leiste auf das kleine Dreieck des Ordner "Targets". Dadurch erscheint direkt unter "Targets" unser Programm "Wikibooks_Demo". Dieses müssen wir per Mausklick markieren.
  • Ist die Markierung gesetzt müssen Sie in der oberen Menüleiste auf das Info-Symbol (blauer Kreis mit einem "i" in der Mitte) klicken. Dadurch wird ein kleines Fenster geöffnet.
Im "Targets"-Ordner auf das Info-Icon klicken
  • Wählen Sie hier den Reiter "Properties" und tragen im Feld "Icon File" den Dateinamen des Icons ein. In unserem Beispiel ist das GNUhead.icns (Sie haben evtl. einen anderen Dateinamen für Ihre icns-Datei gewählt)
  • Das Fenster können Sie nun schließen, die Eingabe wird automatisch übernommen. Das Icon wird nun für Ihr Programm verwendet.
Unter "Properties" den Dateinamen des Icons eingeben

Wenn Sie das Programm nun starten, wird das Icon im Dock angezeigt.

Wikibooks.de AS-Dock.png

[Bearbeiten] Literatur

[Bearbeiten] Weblinks

Persönliche Werkzeuge