Warning, /graphics/kst-plot/devel-docs/plugins/KstBasicPlugins is written in an unsupported language. File is not indexed.
0001 KstBasicPlugin Plugins
0002 ----------------------
0003
0004 The purpose of a KstBasicPlugin plugin is to provide an implementation of the
0005 virtual class "KstDataObject" via the abstract class "KstBasicPlugin." Plugin
0006 writers need to provide a class that inherits "KstBasicPlugin" and a .desktop
0007 file.
0008
0009 Here is an example of the .desktop file named 'kstobject_myplugin.desktop':
0010
0011 [Desktop Entry]
0012 Encoding=UTF-8
0013 Type=Service
0014 ServiceTypes=Kst Data Object
0015 X-KDE-ModuleType=Plugin
0016 X-KDE-Library=kstobject_fooplugin
0017 X-Kst-Plugin-Author=Your Name
0018 X-Kst-Plugin-Version=0.1
0019 Name=Foo
0020 Comment=A plugin that provides Foo algorithm.
0021
0022 Your C++ class should inherit KstBasicPlugin and provide implementations of the
0023 pure virtual methods found in KstBasicPlugin:
0024
0025 //The implementation of the algorithm the plugin provides.
0026 //Operates on the inputVectors, inputScalars, and inputStrings
0027 //to produce the outputVectors, outputScalars, and outputStrings.
0028 virtual bool algorithm() = 0;
0029
0030 //String lists of the names of the expected inputs.
0031 virtual QStringList inputVectorList() const = 0;
0032 virtual QStringList inputScalarList() const = 0;
0033 virtual QStringList inputStringList() const = 0;
0034
0035 //String lists of the names of the expected outputs.
0036 virtual QStringList outputVectorList() const = 0;
0037 virtual QStringList outputScalarList() const = 0;
0038 virtual QStringList outputStringList() const = 0;
0039
0040 Here is an example of a plugins header file:
0041
0042 #ifndef FOOPLUGIN_H
0043 #define FOOPLUGIN_H
0044
0045 #include <kstbasicplugin.h>
0046
0047 class FooPlugin : public KstBasicPlugin {
0048 Q_OBJECT
0049 public:
0050 FooPlugin(QObject *parent, const char *name, const QStringList &args);
0051 virtual ~FooPlugin();
0052
0053 virtual bool algorithm();
0054
0055 virtual QStringList inputVectorList() const;
0056 virtual QStringList inputScalarList() const;
0057 virtual QStringList inputStringList() const;
0058 virtual QStringList outputVectorList() const;
0059 virtual QStringList outputScalarList() const;
0060 virtual QStringList outputStringList() const;
0061 };
0062
0063 And here is an example of a plugins cpp file:
0064
0065 #include "fooplugin.h"
0066
0067 #include <kgenericfactory.h>
0068
0069 static const QString& VECTOR_IN = KGlobal::staticQString("Vector In");
0070 static const QString& SCALAR_IN = KGlobal::staticQString("Scalar In");
0071 static const QString& STRING_IN = KGlobal::staticQString("String In");
0072 static const QString& VECTOR_OUT = KGlobal::staticQString("Vector Out");
0073 static const QString& SCALAR_OUT = KGlobal::staticQString("Scalar Out");
0074 static const QString& STRING_OUT = KGlobal::staticQString("String Out");
0075
0076 K_EXPORT_COMPONENT_FACTORY( kstobject_fooplugin,
0077 KGenericFactory<FooPlugin>( "kstobject_fooplugin" ) )
0078
0079 FooPlugin::FooPlugin( QObject */*parent*/, const char */*name*/, const QStringList &/*args*/ )
0080 : KstBasicPlugin() {
0081 }
0082
0083
0084 FooPlugin::~FooPlugin() {
0085 }
0086
0087
0088 bool FooPlugin::algorithm() {
0089 //Do something...
0090 return true;
0091 }
0092
0093
0094 QStringList FooPlugin::inputVectorList() const {
0095 return QStringList( VECTOR_IN );
0096 }
0097
0098
0099 QStringList FooPlugin::inputScalarList() const {
0100 return QStringList( SCALAR_IN );
0101 }
0102
0103
0104 QStringList FooPlugin::inputStringList() const {
0105 return QStringList( STRING_IN );
0106 }
0107
0108
0109 QStringList FooPlugin::outputVectorList() const {
0110 return QStringList( VECTOR_OUT );
0111 }
0112
0113
0114 QStringList FooPlugin::outputScalarList() const {
0115 return QStringList( SCALAR_OUT );
0116 }
0117
0118
0119 QStringList FooPlugin::outputStringList() const {
0120 return QStringList( STRING_OUT );
0121 }
0122
0123 #include "fooplugin.moc"
0124
0125 The KstBasicPlugin takes care of providing almost everything, including the
0126 configuration widget for your plugin. The one thing it doesn't do is provide
0127 the actual algorithm or the names of the inputs/outputs.
0128
0129 See the Line Fit plugin for an example implementation.