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.

Bei einigen Installationen führt der XmlRpc Daemon von KDE 2.1.1 leider noch zu Fehlern aufgrund von unvollständigen remote procedure calls, 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.1.1 (erhältlich auf ftp://ftp.kde.org/pub/kde/) entpacken und den Patch im Verzeichnis kdebase-2.1.1/kxmlrpc anwenden durch Eingabe von
 % patch -p0 < kxmlrpcserver-patch

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

starten und (zumindest im Verzeichnis kdebase-2.1.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. setAddFilesOption

void setAddFilesOption(int setting);

Legt Einstellung für Dateien hinzufügen fest.

Parameter:

setting

true für Hinzufügen von Plot- und Datendateien zu existierenden Plots.

6.2.10. setPathOption

void setPathOption(int setting);

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

Parameter:

setting

true für Speichern absoluter Pfade.

6.2.11. 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.12. setPageFormat

void setPageFormat(double w, double h);

Stellt Seitenformat ein.

Parameter:

w

Breite in cm.

h

Höhe in cm.

6.2.13. 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.14. 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.15. 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.16. 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.17. 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.18. 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.19. 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.20. 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.21. 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.22. deleteItem

bool deleteItem(int iItem);

Löscht Plot-Bestandteil.

Parameter:

iItem

Index des Bestandteils.

Rückgabewert: true bei Erfolg.

6.2.23. 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.24. 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.25. 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.26. 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.27. 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.28. 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 des Symbols oder der Linie.

x

x-Position in cm.

y

y-Position in cm.

text

Text.

colText

Farbe des Texts.

xoff

x-Offset des Texts in cm.

yoff

y-Offset des Texts in cm.

relSize

relative Zeichengröße.

active

true für sichtbaren Bestandteil.

6.2.29. newTextItem

void newTextItem(const QString& text,
                 const QString& color,
                 int align,
                 double x,
                 double y,
                 double dir,
                 double relSize,
                 int active);

Fügt neuen Text-Bestandteil hinzu.

Parameter:

text

Text.

color

Farbe des Texts.

align

1: linksbündig, 2: zentriert, 3: rechtsbündig.

x

x-Position in cm.

y

y-Position in cm.

dir

Richtung in Grad.

relSize

Relative Zeichengröße.

active

true für sichtbaren Bestandteil.

6.2.30. newLineItem

void newLineItem(int symb,
                 const QString& color,
                 double x,
                 double y,
                 double dir,
                 double len,
                 double relSize,
                 int active);

Fügt neuen Linien-Bestandteil hinzu.

Parameter:

symb

1 bis 9 für verschiedene Linienarten.

color

Farbe der Linie.

x

x Startposition in cm.

y

y Startposition in cm.

dir

Richtung in Grad.

len

Länge in cm.

relSize

Relative Breite.

active

true für sichtbaren Bestandteil.

6.2.31. newArrowItem

void newArrowItem(const QString& color,
                  double x,
                  double y,
                  double dir,
                  double len,
                  double relSize,
                  int active);

Fügt neuen Pfeil-Bestandteil hinzu.

Parameter:

color

Farbe des Pfeils.

x

x Position der Spitze in cm.

y

y Position der Spitze in cm.

dir

Richtung in Grad.

len

Gesamtlänge in cm.

relSize

Relative Größe der Pfeilspitze.

active

true für sichtbaren Bestandteil.

6.2.32. newRectangleItem

void newRectangleItem(const QString& color,
                      double x,
                      double y,
                      double w,
                      double h,
                      double relSize,
                      int fill,
                      int active);

Fügt neuen Rechteck-Bestandteil hinzu.

Parameter:

color

Farbe des Rechtecks.

x

x-Position der linken Seite in cm.

y

y-Position der unteren Seite in cm.

w

Breite in cm.

h

Höhe in cm.

relSize

relative Linienbreite.

fill

true für mit Farbe gefülltes Rechteck.

active

true für sichrbaren Bestandteil.

6.2.33. newEllipseItem

void newEllipseItem(const QString& color,
                    double x,
                    double y,
                    double w,
                    double h,
                    double relSize,
                    int fill,
                    int active);

Fügt neuen Ellipse-Bestandteil hinzu.

Parameter:

color

Farbe der Ellipse.

x

x-Position des Zentrums in cm.

y

y-Position des Zentrums in cm.

w

Breite in cm.

h

Höhe in cm.

relSize

relative Linienbreite.

fill

true für mit Farbe gefüllte Ellipse.

active

true für sichrbaren Bestandteil.

6.2.34. 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.35. 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.36. 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.37. 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.38. 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.39. 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.40. chiSquare

double chiSquare();

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

Rückgabewert: Chi-Quadrat.

6.2.41. 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.42. 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.