Das K Desktop Environment

6.2. DCOP-Schnittstelle

Die DCOP-Schnittstelle erlaubt die Steuerung von Kpl durch andere KDE-Anwendungen und Skripte.

Für eine KDE-Anwendung, die von der DCOP-Schnittstelle von Kpl Gebrauch machen soll, sollten Sie die Header-Datei kpl_stub.h einbinden, die im Verzeichnis $KDEDIR/include installiert ist. Sie müssen außerdem die Datei kpl_stub.cpp aus $KDEDIR/share/apps/kpl übersetzen und zu Ihrer Anwendung binden. Diese beiden Dateien stellen die DCOP-Schnittstellenfunktionen von Kpl als Methoden der Klasse KplApp_stub zur Verfügung. Ein C++-Beispiel demo1.cpp, das sie nutzt, ist im Verzeichnis $KDEDIR/share/apps/kpl installiert.

Der KDE XmlRpc Daemon (kxmlrpcd) eröffnet einen Weg, die DCOP-Schnittstelle von Kpl von Skripten verschiedener Sprachen durch remote procedure calls (RPC) mittels XML und HTTP zu nutzen. Ein in Python geschriebenes Beispiel demo1.py ist im Verzeichnis $KDEDIR/share/apps/kpl installiert. Es läßt praktisch dasselbe wie das C++-Beispiel ablaufen. Um es auzuführen, müssen Sie die Python-XML-RPC-Bibliothek http://www.pythonware.com/downloads/xmlrpc-0.9.8-990621.zip in Ihr Python-Verzeichnis (z. B. /usr/lib/python1.5) entpacken. Beachten Sie, daß der Authentifizierungsmechanismus von kxmlrpc als allerersten Parameter die Authentifizierungszeichenkette beim Aufruf jeder Schnittstellenfunktion benötigt.

Um die DCOP-Schnittstelle von Kpl zu testen, können Sie auch die KDE-DCOP-Hilfsprogramme dcop (Kommandozeile) und kdcop (GUI) benutzen.

DerXmlRpc Daemon von KDE 2.0.1 enthält leider noch einen Bug, der in Fehlern aufgrund von unvollständigen remote procedure calls resultiert, wenn dabei mehr als 1 KByte übertragen werden müssen. Dies passiert bei Nutzung von Funktionen mit sehr langen Parameterlisten wie newFrameItem() (siehe unten). Bis das Problem auf gründlichere Weise gelöst ist, können Sie einen Patch auf den Quellcode von kxmlrpcd anwenden. Die Patch-Datei mit dem Namen kxmlrpcserver-patch ist im Verzeichnis $KDEDIR/share/apps/kpl installiert. Sie vergrößert einfach die Größe eines Puffers von 1 K auf 4 K. Sie müssen das Paket mit dem Quellcode von kdebase-2.0.1 (erhältlich auf ftp://ftp.kde.org/pub/kde/) entpacken und den Patch im Verzeichnis kdebase-2.0.1/kxmlrpc anwenden durch Eingabe von
 % patch -p0 < kxmlrpcserver-patch

Danach sollten Sie im Verzeichnis kdebase-2.0.1
 % ./configure

starten und (zumindest im Verzeichnis kdebase-2.0.1/kxmlrpc)
 % make

und (als root)
 % make install

Die gepatchte Version von kxmlrpc wird dann bei Ihrem nächsten Login aktiv.

Die DCOP-Schnittstelle von Kpl stellt die folgenden Funktionen zur Verfügung:

6.2.1. newPlot

void newPlot();

Löscht den aktuellen Plot.

6.2.2. openPlot

bool openPlot(const QString& url);

Öffnet eine Plotdatei.

Parameter:

url

URL der Datei.

Rückgabewert: true bei Erfolg.

6.2.3. openData

bool openData(const QString& url);

Öffnet eine Datendatei.

Parameter:

url

URL der Datei.

Rückgabewert: true bei Erfolg.

6.2.4. doPlot

void doPlot();

Stellt Plot dar.

6.2.5. savePlot

bool savePlot(const QString& url);

Speichert Plotdatei.

Parameter:

url

URL der Datei.

Rückgabewert: true bei Erfolg.

6.2.6. savePS

bool savePS(const QString& url,
            int landscape);

Erzeugt PostScript-Datei.

Parameter:

url

URL der Datei.

landscape

true für Querformat.

Rückgabewert: true bei Erfolg.

6.2.7. printPlot

bool printPlot(const QString& printerName,
               const QString& fileName,
               int landscape,
               int numCopies);

Druckt aktuellen Plot aus.

Parameter:

printerName

Name des Druckers.

fileName

Name einer Ausgabedatei (leer bei Ausgabe auf Drucker).

landscape

true für Querformat.

numCopies

Anzahl Kopien.

Rückgabewert: true bei Erfolg.

6.2.8. setAutoplotOption

void setAutoplotOption(int setting);

Legt Autoplot-Einstellung fest.

Parameter:

setting

true für automatisches Plotten nach Änderungen.

6.2.9. setPathOption

void setPathOption(int setting);

Legt Einstellung für Abspeicherung absoluter/relativer Pfade fest.

Parameter:

setting

true für Speichern absoluter Pfade.

6.2.10. setBoundingBoxOption

void setBoundingBoxOption(int setting);

Legt Einstellung für Berechnung der PostScript Bounding Box fest.

Parameter:

setting

true für automatisches Berechnen der Bounding Box.

6.2.11. setPageFormat

void setPageFormat(double w, double h);

Stellt Seitenformat ein.

Parameter:

w

Breite in cm.

h

Höhe in cm.

6.2.12. setColors

void setColors(const QString& colFrame,
               const QString& colGrid,
               const QString& colData);

Stellt Standardfarben ein (hexadezimalkodierte RGB-Zeichenketten, z. B. "ff" für rot).

Parameter:

colFrame

Farbe für Rahmen und Beschriftung.

colGrid

Farbe für Gitter und Tickmarken.

colData

Farbe für Linien und Symbole.

6.2.13. setOutputFormat

void setOutputFormat(const QString& pres,
                     int prec);

Stellt Format für numerische Ausgaben ein.

Parameter:

pres

Darstellungszeichen entsprechend der Funktion printf().

prec

Genauigkeit.

6.2.14. setAutoplot

void setAutoplot(double x0,
                 double w,
                 double y0,
                 double h,
                 int gridmode,
                 const QString& sx,
                 const QString& sy,
                 const QString& sh,
                 int pathHeading,
                 int ix,
                 int iy,
                 int ie,
                 int logx,
                 int logy,
                 int errbars,
                 int symb,
                 int autoNorm,
                 int autoFit);

Setzt Autoplot-Einstellungen.

Parameter:

x0

linker Seitenrand in cm.

w

Breite des Datenfensters in cm.

y0

unterer Seitenrand in cm.

h

Höhe des Datenfensters in cm.

gridmode

0 für nur Rahmen, 1 für Achsen mit Tickmarken, 2 für Achsen mit Tickmarken und Beschriftung, 3 für Gitter, 4 für Gitter mit Beschriftung.

sx

x-Achsentext.

sy

y-Achsentext.

sh

Kopfzeilentext.

pathHeading

true für Kopfzeile = Pfad.

ix

x-Spaltenindex.

iy

y-Spaltenindex.

ie

Fehlerspaltenindex.

logx

true für logarithmische Skalierung der x-Achse.

logy

true für logarithmische Skalierung der y-Achse.

errbars

true für Zeichnen von Fehlerbalken.

symb

0 für Kreise, < 0 für verschiedene Symbole, >0 für verschiedene Linienarten.

autoNorm

true für automatische Normierung.

autoFit

true für automatische Parameteranpassung.

6.2.15. setAutofit

void setAutofit(const QString& path,
                const QString& name,
                int nonLin,
                int errCol,
                const QString& errModPath,
                const QString& errModName,
                int itMax,
                double tol,
                int symb,
                const QString& color,
                int showDlg,
                int savePar,
                int follow);

Setzt Autofit-Einstellungen.

Parameter:

path

absoluter Pfad der Bibliothek mit der anzupassenden Funktion.

name

Name der anzupassenden Funktion.

nonLin

true für nichtlineare Parameteranpassung.

errCol

true für Wichten der Daten durch Fehlerspalte, false für Wichten durch Fehlermodellfunktion.

errModPath

absoluter Pfad der Bibliothek mit der Fehlermodellfunktion.

errModName

Name der Fehlermodellfunktion.

itMax

maximale Anzahl Iterationen (nur nichtlineare Anpassung).

tol

Toleranz (nur nichtlineare Anpassung).

symb

Funktionsplot: 0 für Kreise, < 0 für verschiedene Symbole, >0 für verschiedene Linienarten.

color

Farbe für Funktionsplot.

showDlg

true für Anzeige des Dialogs Parameteranpassung.

savePar

true für Speichern der resultierenden Parameter in Dateienfiles.

follow

true für Parametern folgen bei Serien von Anpassungen.

6.2.16. loadAutofitPar

bool loadAutofitPar(const QString& url);

Lädt Parametersatz der Autofit-Funktion von Datei.

Parameter:

url

URL der Datei.

Rückgabewert: true bei Erfolg.

6.2.17. setAutofitPar

bool setAutofitPar(int iPar,
                   double value);

Setzt Wert eines Parameters für Autofit-Funktion.

Parameter:

iPar

Parameterindex.

value

Parameterwert.

Rückgabewert: true bei Erfolg.

6.2.18. enableFitPar

bool enableFitPar(int iPar,
                  int fit);

Legt anzupassende und nicht anzupassende Parameter fest.

Parameter:

iPar

Parameterindex.

fit

true stellt Parameter als anzupassend ein.

Rückgabewert: true bei Erfolg.

6.2.19. loadErrModPar

bool loadErrModPar(const QString& url,
                   int iArr);

Lädt Parametersatz für Fehlermodellfunktion von Datei.

Parameter:

url

URL der Datei.

iArr

Feldlistenindex.

Rückgabewert: true bei Erfolg.

6.2.20. setErrModPar

bool setErrModPar(int iPar,
                  double value,
                  int iArr);

Setzt Wert eines Parameters einer Fehlermodellfunktion.

Parameter:

iPar

Parameterindex.

value

Parameterwert.

iArr

Feldlistenindex.

Rückgabewert: true bei Erfolg.

6.2.21. deleteItem

bool deleteItem(int iItem);

Löscht Plot-Bestandteil.

Parameter:

iItem

Index des Bestandteils.

Rückgabewert: true bei Erfolg.

6.2.22. moveItem

bool moveItem(int is,
              int id);

Verschiebt Plot-Bestandteil.

Parameter:

is

Quellindex des Bestandteils.

id

Zielindex des Bestandteils.

Rückgabewert: true bei Erfolg.

6.2.23. newFrameItem

void newFrameItem(double x0,
                  double w,
                  double y0,
                  double h,
                  double xmin,
                  double xmax,
                  double ymin,
                  double ymax,
                  int logx,
                  int logy,
                  int ndigx,
                  int ndigy,
                  const QString& colFrame,
                  const QString& colGrid,
                  double xtic,
                  double ytic,
                  int mticx,
                  int mticy,
                  int gridmode,
                  int iex,
                  int iey,
                  const QString& sx,
                  const QString& sy,
                  const QString& sh,
                  double relSize,
                  int active);

Fügt neuen Rahmen-Bestandteil hinzu.

Parameter:

x0

linker Seitenrand in cm.

w

Breite in cm.

y0

unterer Seitenrand in cm.

h

Höhe in cm.

xmin

x-Wert für linken Rand des Datenfensters in Benutzereinheiten.

xmax

x-Wert für rechten Rand des Datenfensters in Benutzereinheiten.

ymin

y-Wert für unteren Rand des Datenfensters in Benutzereinheiten.

ymax

y-Wert für oberen Rand des Datenfensters in Benutzereinheiten.

logx

true für logarithmische Skalierung der x-Achse.

logy

true für logarithmische Skalierung der y-Achse.

ndigx

Anzahl Nachkommastellen für x-Achse.

ndigy

Anzahl Nachkommastellen für y-Achse.

colFrame

Farbe für Rahmen und Beschriftung.

colGrid

Farbe für Gitter und Tickmarken.

xtic

Abstand zwischen großen Tickmarken der x-Achse.

ytic

Abstand zwischen großen Tickmarken der y-Achse.

mticx

Anzahl Intervalle zwischen großen Tickmarken der x-Achse.

mticy

Anzahl Intervalle zwischen großen Tickmarken der y-Achse.

gridmode

0 für nur Rahmen, 1 für Achsen mit Tickmarken, 2 für Achsen mit Tickmarken und Beschriftung, 3 für Gitter, 4 für Gitter mit Beschriftung.

iex

Logarithmus des Normierungsfaktors für x-Achse.

iey

Logarithmus des Normierungsfaktors für y-Achse.

sx

x-Achsentext.

sy

y-Achsentext.

sh

Kopfzeilentext.

relSize

relative Größe für Text, Symbole und Linienbreiten.

active

true für sichtbaren Bestandteil.

6.2.24. newArrayItem

bool newArrayItem(const QString& path,
                  int ix,
                  int iy,
                  int ie,
                  int istart,
                  int n,
                  int errbars,
                  int symb,
                  const QString& color,
                  double fx,
                  double fy,
                  int active);

Fügt neuen Feld-Bestandteil hinzu.

Parameter:

path

absoluter Pfad der Datendatei.

ix

x-Spaltenindex.

iy

y-Spaltenindex.

ie

Fehlerspaltenindex.

istart

Startzeilenindex.

n

Anzahl Datenpunkte.

errbars

true für Zeichnen von Fehlerbalken.

symb

0 für Kreise, < 0 für verschiedene Symbole, >0 für verschiedene Linienarten.

color

Farbe für Datenplot.

fx

Normierungsfaktor für x-Werte.

fy

Normierungsfaktor für y-Werte.

active

true für sichtbaren Bestandteil.

Rückgabewert: true bei Erfolg.

6.2.25. newFunItem

bool newFunItem(const QString& path,
                const QString& name,
                double xmin,
                double xmax,
                double dx,
                int symb,
                const QString& color,
                double fx,
                double fy,
                int active);

Fügt neuen Funktions-Bestandteil hinzu.

Parameter:

path

absoluter Pfad der Funktionsbibliothek.

name

Name der Funktion.

xmin

minimaler Wert des Arguments.

xmax

maximaler Wert des Arguments.

dx

Schrittweite der Argumentenwerte.

symb

0 für Kreise, < 0 für verschiedene Symbole, >0 für verschiedene Linienarten.

color

Farbe für Funktionsplot.

fx

Normierungsfaktor für x-Werte.

fy

Normierungsfaktor für y-Werte.

active

true für sichtbaren Bestandteil.

Rückgabewert: true bei Erfolg.

6.2.26. newParFunItem

bool newParFunItem(const QString& pathx,
                   const QString& namex,
                   const QString& pathy,
                   const QString& namey,
                   double tmin,
                   double tmax,
                   double dt,
                   int symb,
                   const QString& color,
                   double fx,
                   double fy,
                   int active);

Fügt neuen Bestandteil Parametrische Funktion hinzu.

Parameter:

pathx

absoluter Pfad der Bibliothek mit derFunktion für die y-Werte.

namex

Name der Funktion für die x-Werte.

pathy

absoluter Pfad der Bibliothek mit der Funktion für die y-Werte.

namey

Name der Funktion für die y-Werte.

tmin

minimaler Wert des Arguments.

tmax

maximaler Wert des Arguments.

dt

Schrittweite der Argumentenwerte.

symb

0 für Kreise, < 0 für verschiedene Symbole, >0 für verschiedene Linienarten.

color

Farbe für Funktionsplot.

fx

Normierungsfaktor für x-Werte.

fy

Normierungsfaktor für y-Werte.

active

true für sichtbaren Bestandteil.

Rückgabewert: true bei Erfolg.

6.2.27. newLegendItem

void newLegendItem(int symb,
                   const QString& colSymb,
                   double x,
                   double y,
                   const QString& text,
                   const QString& colText,
                   double xoff,
                   double yoff,
                   double relSize,
                   int active);

Fügt neuen Legenden-Bestandteil hinzu.

Parameter:

symb

0 für Kreise, < 0 für verschiedene Symbole, >0 für verschiedene Linienarten.

colSymb

Farbe für Symbol oder Linie.

x

x-Position in cm.

y

y-Position in cm.

text

Text.

colText

Farbe für Text.

xoff

x-Offset für Text in cm.

yoff

y-Offset für Text in cm.

relSize

relative Größe für Text.

active

true für sichtbaren Bestandteil.

6.2.28. autoScaleFrame

bool autoScaleFrame(int iItem,
                    int autoNorm);

Skaliert Rahmen automatisch gemäß allen zugehörigen Bestandteilen.

Parameter:

iItem

Index des Rahmen-Bestandteils.

autoNorm

true für zusätzliche automatische Normierung.

Rückgabewert: true bei Erfolg.

6.2.29. loadPar

bool loadPar(const QString& url,
             int iItem,
             int yFun);

Lädt Parametersatz für Funktion von Datei.

Parameter:

url

URL der Datei.

iItem

Index des Funktions-Bestandteils.

yFun

true für y-Funktionsparameter, false für x-Funktionsparameter (nur für parametrische Funktionen).

Rückgabewert: true bei Erfolg.

6.2.30. setPar

bool setPar(int iItem,
            int iPar,
            double value,
            int yFun);

Setzt Wert eines Funktionsparameters.

Parameter:

iItem

Index des Funktions-Bestandteils.

iPar

Parameterindex.

value

Parameterwert.

yFun

true für y-Funktionsparameter, false für x-Funktionsparameter (nur für parametrische Funktionen).

Rückgabewert: true bei Erfolg.

6.2.31. setArrayRange

bool setArrayRange(int iItem,
                   int iStart,
                   int n);

Legt Zeilenbereich eines Felds fest.

Parameter:

iItem

Index des Feld-Bestandteils.

iStart

Startzeilenindex.

n

Anzahl Datenpunkte.

Rückgabewert: true bei Erfolg.

6.2.32. addFitItems

bool addFitItems(int erase,
                 int iArr,
                 int iFun,
                 int errCol,
                 const QString& errModPath,
                 const QString& errModName);

Fügt Feld- und Funktions-Bestandteile zu Listen für (multidimensionale) Parameteranpassung hinzu.

Parameter:

erase

true: löscht Liste vorher.

iArr

Index des Feld-Bestandteils.

iFun

Index des Funktionsbestandteils.

errCol

true für Wichten der Daten durch Fehlerspalte, false für Wichten durch Fehlermodellfunktion.

errModPath

absoluter Pfad der Bibliothek mit der Fehlermodellfunktion.

errModName

Name der Fehlermodellfunktion.

Rückgabewert: true bei Erfolg.

6.2.33. fit

bool fit(int nonLin,
         int savePar,
         int follow);

Führt Parameteranpassung durch.

Parameter:

nonLin

true für nichtlineare Parameteranpassung.

savePar

true für Speichern der resultierenden Parameter in Datei.

follow

true für Parametern folgen bei Serienanpassungen.

Rückgabewert: true bei Erfolg.

6.2.34. chiSquare

double chiSquare();

Gibt Chi-Quadrat-Wert der letzen Parameteranpassung zurück.

Rückgabewert: Chi-Quadrat.

6.2.35. saveFitPar

bool saveFitPar(const QString& url);

Speichert aus einer Anpassung resultierende Parameter und ihre Fehler in einer Datei.

Parameter:

url

URL der Datei.

Rückgabewert: true bei Erfolg.

6.2.36. exportValues

bool exportValues(const QString& url,
                  int iItem);

Exportiert Funktionswertetabelle in Datei.

Parameter:

url

URL der Datei.

iItem

Index des Funktions-Bestandteils.

Rückgabewert: true bei Erfolg.