Skripting
Dieses Kapitel erklärt das Skripting Interface von LabPlot, welches die Automatisierung der Arbeit sehr erleichtern kann. Mit Hilfe der Skriptsprache kann man seine Arbeit sehr vereinfachen und seine Produktivität erhöhen. Außerdem lässt sich LabPlot mit dem Skript Interface komplett fernsteuern.

QSA
LabPlot verwendet Script for Applications (QSA) von Trolltech, Inc. Es wird unter zwei Lizenzen veröffentlicht- eine kommerzielle and eine GPL Version. Die GPL Version hat einige Einschränkungen, die jedoch nur kommerzielle Software betrifft.
Natürlich muss LabPlot mit QSA Unterstützung kompiliert werden. Für (basierend auf 3) wird die Version 1.1.X benötigt.

Skripts verwenden
Skripts sind (kleine) Dateien die Anweisungn zur Ausführung enthalten. Da LabPlot solche Anweisungen auswerten kann, kann das Programm damit automatisiert werden. Skripts könne mit jedem Texteditor bzw. mit dem in LabPlot integrierten QSA Workbench (zu fnden im Menü "Script->QSA Workbench...") erzeugt und bearbeitet werden. Sollten die Icons nicht automatisch gefunden werden, werfen Sie einen Blick in das Workbench Kapitel.
Um ein Skript auszuführen könne Sie es direkt von der Kommandozeile aufrufen (LabPlot script.qs) oder per Drag und Drop in das LabPlotfenster ziehen. Außerdem kann das Menü "Script->Open Script" benutzt werden um ein Skript auszuführen.
LabPlot setzt sich zusammen aus verschiedenen Klassen. Für die meisten Funktionen sind nur wenige davon notwendig. Für jede Akton muss nur die entsprechende Funktion aufgerufen werden. Alle verfügbaren Klassen und Funktionen können in der Referenz http://cvs.sourceforge.net/viewcvs.py/*checkout*/labplot/doc/html/hierarchy.html.nachgelesen werden.
Alle MainWin Funktionen können direkt aufgerufen werden. Fangern wir mal mit

importData("sample.dat");

an. Das importiert Daten aus der Datei "sample.dat" in eine Tabelle in LabPlot. Das folgende Bildschirmbild zeigt das Ergebnis.
Import
Import
Wenn man jetzt mit der Tabelle arbeiten will, muss nur die entsprechende Funktion der Tabelle aufgerufen werden. Möchte man aus den Daten ein 2D Plot erstellen, sieht es so aus:

importData("sample.dat");
s = activeSpreadsheet();
s.plot2DSimple();

Das Ergebnis ist
Plot aus Tabelle
Plot
Möchte man jetzt mit dem Plot arbeiten, muss man das Arbeitsblatt und den aktiven Plot aufrufen.Das entsprechende Skript sieht so aus:

importData("sample.dat");
s = activeSpreadsheet();
s.plot2DSimple();
w = activeWorksheet();
p = w.get2DPlot(w.API());
p.setBackground("green");
w.redraw();

Mit dem Ergebnis eines grünen Hintergrundes.
am Plot arbeiten
grün
Ein komplettes Skript das Daten importiert, eine Einstellungen macht und den Plot als EPS speichert würde dann so aussehen:

importData("sample-data/sin.dat");

s = activeSpreadsheet();
s.plot2DSimple();

w = activeWorksheet();
p = w.get2DPlot(w.API());

p.setBackground("green");
p.setGraphBackground("lightblue");

r = p.ActRange(0);
r.setRange(250,750);
r = p.ActRange(1);
r.setRange(-2,2);

l = p.getLegend();
l.setPosition(.5,.4);

t = p.Title();
t.setTitle("example title");
t.setRotation(10);

a = p.getAxis(0);
a.enableMajorGrid();
ll = a.getLabel();
ll.setTitle("different x axis");
font = new Font("SanSerif");
a.setTickLabelFont(font);

p.setMarksEnabled();
mark = p.markX();
mark.setRange(450,550);

p.setRegionEnabled();
p.setRegion(350,650);

// w.redraw();

exportEPS("export.eps");
exit();

Die verwendeten Funktionen sollten weitestgehend selbsterklärend sein. Die resultierende EPS Datei sieht dann so aus:
komplette Sitzung
Sitzung
Das ist praktisch alles was man wissen muss um Skripte zu verwenden. Viele Beispiele können im Verzeichnis "examples/scripts/" der Quelldistribution und im Daten Verzeichnis von LabPlot gefunden werden.

Besonderes
Für eine detailierte Beschreibung der Syntax von QSA werfen Sie einen Blick auf die Dokumentation von QSA. Alle Konstanten (enum) von LabPlot können auch in Skripten verwendet werden (definiert in labplot.qs)
Mit QSA ist es auch möglich Dateinamen per Dialog zu erfragen. Das folgende Beispiel zeigt das

d = new ImportDialog();

var filename = FileDialog.getOpenFileName( "*.dat" );
if (filename) {
        d.setFilename(filename);
        d.Apply();
}