260 changes: 11 additions & 249 deletions pyKst/html/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,64 +18,40 @@ To interact with a kst session, you must create a client. To open an interface w

Primitives
**********
Scalars, Vectors, Matracies, and Strings (Primitives) can be used in your scripts to share data with kst. All methods are pass-by-value: for example, if you get a value of a scalar and change it, the data inside kst is not changed. You need to explicitly call setValue(). You can get an instance of an existing primitive through the ExistingScalar, ExistingVector, ExistingMatrix, and ExistingString classes. These classes also provide a class method getList() which returns a list of all instances of that type.
Scalars, Vectors, Matrices, and Strings (Primitives) can be used in your scripts to share data with kst. All methods are pass-by-value: for example, if you get a value of a scalar and change it, the data inside kst is not changed. You need to explicitly call setValue(). You can get an instance of an existing primitive through the ExistingScalar, ExistingVector, ExistingMatrix, and ExistingString classes. These classes also provide a class method getList() which returns a list of all instances of that type.

Scalars
-------
.. autoclass:: DataSourceScalar
:members:
:inherited-members:
:exclude-members: setValue

.. autoclass:: DataVectorScalar
.. autoclass:: VectorScalar
:members:
:inherited-members:
:exclude-members: setValue

.. autoclass:: GeneratedScalar
:members:
:inherited-members:

.. autoclass:: ExistingScalar
:members:
:inherited-members:

Vectors
-------
.. autoclass:: DataVector
:members:
:inherited-members:
:exclude-members: blank, zero, setNewAndShift, setName, resize, newSync

.. autoclass:: GeneratedVector
:members:
:inherited-members:
:exclude-members: changeFrames, numFrames, startFrame, doSkip, doAve, skip, reload_, samplesPerFrame, fileLength, readToEOF, countFromEOF, descriptionTip, isValid

.. autoclass:: EditableVector
:members:
:inherited-members:
:exclude-members: changeFrames, numFrames, startFrame, doSkip, doAve, skip, reload_, samplesPerFrame, fileLength, readToEOF, countFromEOF, descriptionTip, isValid

.. autoclass:: ExistingVector
:members:
:inherited-members:

Matricies
Matrices
---------
Support for matrices is fairly limited, but you can get data into kst with an EditableMatrix.

.. autoclass:: DataMatrix
:members:
:inherited-members:

.. autoclass:: ExistingMatrix
:members:
:inherited-members:

.. autoclass:: EditableMatrix
:members:
:inherited-members:

Strings
-------
Expand All @@ -88,236 +64,16 @@ Strings
:members:
:inherited-members:

.. autoclass:: ExistingString
:members:
:inherited-members:

Relations
*********
Relations are objects which can be added to a plot.

Curves
------
.. autoclass:: NewCurve
:members:
:inherited-members:

.. autoclass:: ExistingCurve
:members:
:inherited-members:

Images
------
An image is a representation of a matrix

.. autoclass:: ColorImage
.. autoclass:: Curve
:members:
:inherited-members:

.. autoclass:: ContourImage
:members:
:inherited-members:

.. autoclass:: ColorContourImage
:members:
:inherited-members:

.. autoclass:: ExistingImage
:members:
:inherited-members:

Data Objects
**********************
Data objects take primitives as inputs and produce primitives as outputs.

Equations
---------

.. autoclass:: Equation
:members:
:inherited-members:

.. autoclass:: NewEquation
:members:

.. autoclass:: ExistingEquation
:members:

Power Spectra
-------------

.. autoclass:: Spectrum
:members:
:inherited-members:

.. autoclass:: NewSpectrum
:members:

.. autoclass:: ExistingSpectrum
:members:

Histograms
----------

.. autoclass:: Histogram
:members:
:inherited-members:

.. autoclass:: NewHistogram
:members:

.. autoclass:: ExistingHistogram
:members:

Linear Fit
----------

.. autoclass:: NewLinearFit
:members:

.. autoclass:: ExistingLinearFit
:members:
:inherited-members:

Polynomial Fit
--------------

.. autoclass:: NewPolynomialFit
:members:

.. autoclass:: ExistingPolynomialFit
:members:
:inherited-members:

Sinusoid Fit
------------

.. autoclass:: NewSinusoidFit
:members:

.. autoclass:: ExistingSinusoidFit
:members:
:inherited-members:

Gaussian Fit
------------

.. autoclass:: NewGaussianFit
:members:

.. autoclass:: ExistingGaussianFit
:members:
:inherited-members:

Lorentzian Fit
--------------

.. autoclass:: NewLorentzianFit
:members:

.. autoclass:: ExistingLorentzianFit
:members:
:inherited-members:

Exponential Fit
---------------

.. autoclass:: NewExponentialFit
:members:

.. autoclass:: ExistingExponentialFit
:members:
:inherited-members:

Low Pass Filter
---------------

.. autoclass:: NewLowPassFilter
:members:

.. autoclass:: ExistingLowPassFilter
:members:
:inherited-members:

High Pass Filter
----------------

.. autoclass:: NewHighPassFilter
:members:

.. autoclass:: ExistingHighPassFilter
:members:
:inherited-members:

Band Pass Filter
----------------

.. autoclass:: NewBandPassFilter
:members:

.. autoclass:: ExistingBandPassFilter
:members:
:inherited-members:

Band Stop Filter
----------------

.. autoclass:: NewBandStopFilter
:members:

.. autoclass:: ExistingBandStopFilter
:members:
:inherited-members:

Cumulative Sum (Integral)
-------------------------

.. autoclass:: NewCumulativeSum
:members:

.. autoclass:: ExistingCumulativeSum
:members:
:inherited-members:

Differentiation
---------------

.. autoclass:: NewDifferentiation
:members:

.. autoclass:: ExistingDifferentiation
:members:
:inherited-members:

Despike Filter
--------------

.. autoclass:: NewDespikeFilter
:members:

.. autoclass:: ExistingDespikeFilter
:members:
:inherited-members:

Shift
-----

.. autoclass:: NewShift
:members:

.. autoclass:: ExistingShift
:members:
:inherited-members:

CumulativeAverage
-----------------

.. autoclass:: NewCumulativeAverage
:members:

.. autoclass:: ExistingCumulativeAverage
:members:
:inherited-members:

Annotations
***********
Expand All @@ -326,34 +82,40 @@ Annotations along with interactive items (see the next section) can be used to t
.. autoclass:: Label
:members:
:inherited-members:

:exclude-members: set_fill_color, set_fill_style, set_stroke_style, set_stroke_width, set_stroke_brush_color, set_stroke_brush_style, set_stroke_join_style, set_stroke_cap_style, set_fixed_aspect_ratio, set_size
.. autoclass:: Box
:members:
:inherited-members:

.. autoclass:: Circle
:members:
:inherited-members:
:exclude-members: set_stroke_join_style, set_stroke_cap_style, set_fixed_aspect_ratio, set_size

.. autoclass:: Ellipse
:members:
:inherited-members:
:exclude-members: set_stroke_join_style, set_stroke_cap_style

.. autoclass:: Line
:members:
:inherited-members:
:exclude-members: set_fill_color, set_fill_style, set_stroke_join_style, set_fixed_aspect_ratio, set_size

.. autoclass:: Arrow
:members:
:inherited-members:
:exclude-members: set_fill_color, set_fill_style, set_stroke_join_style, set_fixed_aspect_ratio, set_size

.. autoclass:: Picture
:members:
:inherited-members:
:exclude-members: set_fill_color, set_fill_style, set_stroke_style, set_stroke_width, set_stroke_brush_color, set_stroke_brush_style, set_stroke_join_style, set_stroke_cap_style

.. autoclass:: SVG
:members:
:inherited-members:
:exclude-members: set_fill_color, set_fill_style, set_stroke_style, set_stroke_width, set_stroke_brush_color, set_stroke_brush_style, set_stroke_join_style, set_stroke_cap_style

.. autoclass:: Plot
:members:
Expand Down
2,149 changes: 1,586 additions & 563 deletions pyKst/pykst.py

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/libkstmath/curve.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -666,7 +666,7 @@ RelationPtr Curve::makeDuplicate() const {
curve->setHasHead(HasHead);
curve->setLineWidth(LineWidth);
curve->setLineStyle(LineStyle);
curve->setPointType(PointDensity);
curve->setPointType(PointType);
curve->setPointSize(PointSize);
curve->setPointDensity(PointDensity);

Expand Down
165 changes: 161 additions & 4 deletions src/libkstmath/relationscriptinterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#include "updateserver.h"
#include "vector.h"
#include "colorsequence.h"
#include "linestyle.h"

#include <QStringBuilder>

Expand All @@ -31,19 +32,37 @@ QString doRelationScriptCommand(QString command,Relation *relation) {
return v;
}

if (command.startsWith("maxX(")) {
return QString::number(relation->maxX());
} // FIXME the rest...

return QString();
}


QString RelationSI::maxX(QString&) {
return QString::number(relation->maxX());
}

QString RelationSI::minX(QString&) {
return QString::number(relation->minX());
}

QString RelationSI::maxY(QString&) {
return QString::number(relation->maxY());
}

QString RelationSI::minY(QString&) {
return QString::number(relation->minY());
}

QString RelationSI::showEditDialog(QString&) {
relation->showEditDialog();
return "done";
}

/******************************************************/
/* Curves */
/******************************************************/
CurveSI::CurveSI(CurvePtr it) {
curve=it;
relation = it;

_fnMap.insert("setXVector",&CurveSI::setXVector);
_fnMap.insert("setYVector",&CurveSI::setYVector);
Expand All @@ -60,9 +79,36 @@ CurveSI::CurveSI(CurvePtr it) {
_fnMap.insert("setHasBars",&CurveSI::setHasBars);
_fnMap.insert("setHasHead",&CurveSI::setHasHead);

_fnMap.insert("color",&CurveSI::color);
_fnMap.insert("headColor",&CurveSI::headColor);
_fnMap.insert("barFillColor",&CurveSI::barFillColor);
_fnMap.insert("hasPoints",&CurveSI::hasPoints);
_fnMap.insert("hasLines",&CurveSI::hasLines);
_fnMap.insert("hasBars",&CurveSI::hasBars);
_fnMap.insert("hasHead",&CurveSI::hasHead);

_fnMap.insert("setLineWidth",&CurveSI::setLineWidth);
_fnMap.insert("setPointSize",&CurveSI::setPointSize);

_fnMap.insert("setPointType",&CurveSI::setPointType);
_fnMap.insert("setHeadType",&CurveSI::setHeadType);
_fnMap.insert("setLineStyle",&CurveSI::setLineStyle);
_fnMap.insert("setPointDensity",&CurveSI::setPointDensity);

_fnMap.insert("lineWidth",&CurveSI::lineWidth);
_fnMap.insert("pointSize",&CurveSI::pointSize);
_fnMap.insert("pointType",&CurveSI::pointType);
_fnMap.insert("headType",&CurveSI::headType);
_fnMap.insert("lineStyle",&CurveSI::lineStyle);
_fnMap.insert("pointDensity",&CurveSI::pointDensity);

// functions from relationSI
_fnMap.insert("maxX",&CurveSI::maxX);
_fnMap.insert("minX",&CurveSI::minX);
_fnMap.insert("maxY",&CurveSI::maxY);
_fnMap.insert("minY",&CurveSI::minY);
_fnMap.insert("showEditDialog",&CurveSI::showEditDialog);

}

QString CurveSI::doCommand(QString command_in) {
Expand Down Expand Up @@ -263,5 +309,116 @@ QString CurveSI::setPointSize(QString& command) {
return "Done";
}

QString CurveSI::setPointType(QString& command) {
QString parameter = getArg(command);
int x = parameter.toInt();

if (x<0) x = 0;

curve->setPointType(x);
return "Done";

}

QString CurveSI::setHeadType(QString& command) {
QString parameter = getArg(command);
int x = parameter.toInt();

if (x<0) x = 0;

curve->setHeadType(x);
return "Done";

}

QString CurveSI::setLineStyle(QString& command) {
QString parameter = getArg(command);
int x = parameter.toInt();

if (x<0) x = 0;

curve->setLineStyle(x);
return "Done";
}

QString CurveSI::setPointDensity(QString& command) {
QString parameter = getArg(command);
int x = parameter.toInt();

if (x<0) x = 0;
if (x>POINTDENSITY_MAXTYPE) x = POINTDENSITY_MAXTYPE;

curve->setPointDensity(x);
return "Done";
}

QString CurveSI::color(QString&) {
return curve->color().name();
}

QString CurveSI::headColor(QString&) {
return curve->headColor().name();
}

QString CurveSI::barFillColor(QString&) {
return curve->barFillColor().name();
}

QString CurveSI::hasPoints(QString&) {
if (curve->hasPoints()) {
return "True";
} else {
return "False";
}
}

QString CurveSI::hasLines(QString&) {
if (curve->hasLines()) {
return "True";
} else {
return "False";
}
}

QString CurveSI::hasBars(QString&) {
if (curve->hasBars()) {
return "True";
} else {
return "False";
}
}

QString CurveSI::hasHead(QString&) {
if (curve->hasHead()) {
return "True";
} else {
return "False";
}
}

QString CurveSI::lineWidth(QString&) {
return QString::number(curve->lineWidth());
}

QString CurveSI::pointSize(QString&) {
return QString::number(curve->pointSize());
}

QString CurveSI::pointType(QString&) {
return QString::number(curve->pointType());
}

QString CurveSI::headType(QString&) {
return QString::number(curve->headType());
}

QString CurveSI::lineStyle(QString&) {
return QString::number(curve->lineStyle());
}

QString CurveSI::pointDensity(QString& command) {
return QString::number(curve->pointDensity());
}


}
41 changes: 40 additions & 1 deletion src/libkstmath/relationscriptinterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,24 @@ namespace Kst {
class CurveSI;
typedef QString (CurveSI::*CurveInterfaceMemberFn)(QString& command);

class KSTMATH_EXPORT CurveSI : public ScriptInterface
class KSTMATH_EXPORT RelationSI : public ScriptInterface
{
Q_OBJECT

public:
QString maxX(QString&);
QString minX(QString&);
QString maxY(QString&);
QString minY(QString&);
QString showEditDialog(QString&);

protected:
RelationPtr relation;

};


class KSTMATH_EXPORT CurveSI : public RelationSI
{
Q_OBJECT
public:
Expand Down Expand Up @@ -57,9 +74,31 @@ class KSTMATH_EXPORT CurveSI : public ScriptInterface
QString setHasBars(QString& command);
QString setHasHead(QString& command);


QString setLineWidth(QString& command);
QString setPointSize(QString& command);

QString setPointType(QString& command);
QString setHeadType(QString& command);
QString setLineStyle(QString& command);
QString setPointDensity(QString& command);

QString color(QString&);
QString headColor(QString&);
QString barFillColor(QString&);
QString hasPoints(QString&);
QString hasLines(QString&);
QString hasBars(QString&);
QString hasHead(QString&);

QString lineWidth(QString&);
QString pointSize(QString&);

QString pointType(QString&);
QString headType(QString&);
QString lineStyle(QString&);
QString pointDensity(QString& command);

};

}
Expand Down