[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: koffice/kspread/plugins/scripting
From: Sebastian Sauer <mail () dipe ! org>
Date: 2006-11-01 7:43:02
Message-ID: 1162366982.289376.3259.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 600881 by sebsauer:
to show how the prev commit is used ;)
M +62 -33 ScriptingFunction.cpp
--- trunk/koffice/kspread/plugins/scripting/ScriptingFunction.cpp #600880:600881
@@ -42,32 +42,72 @@
//#include <main/wdgscriptsmanager.h>
/***************************************************************************
- * ScriptingFunction
+ * ScriptingFunctionImpl
*/
-KSpread::Value scripting_function_call(KSpread::valVector args, KSpread::ValueCalc \
*calc, KSpread::FuncExtra*) +class ScriptingFunctionImpl : public KSpread::Function
{
- QString scriptname = args[0].isString() ? args[0].asString() : QString();
- QString functionname = args[1].isString() ? args[1].asString() : QString();
+ public:
- KActionCollection* collection = Kross::Manager::self().actionCollection();
- if( ! collection ) {
- KSpread::Value err = KSpread::Value::errorNA();
- err.setError( "#" + i18n("Scripfunctions are disabled.") );
- return err;
- }
+ static KSpread::Value callback(KSpread::valVector args, KSpread::ValueCalc* \
calc, KSpread::FuncExtra* extra) + {
+ Q_ASSERT(extra && extra->function);
+ ScriptingFunctionImpl* funcimpl = static_cast< ScriptingFunctionImpl* >( \
extra->function ); + const QString name = funcimpl->name();
- KAction* action = scriptname.isNull() ? 0 : collection->action(scriptname);
- if( ! action ) {
- KSpread::Value err = KSpread::Value::errorVALUE(); //errorNAME();
- err.setError( "#" + i18n("No such script.") );
- return err;
- }
+ /*
+ QString scriptname = args[0].isString() ? args[0].asString() : \
QString(); + QString functionname = args[1].isString() ? \
args[1].asString() : QString(); + KActionCollection* collection = \
Kross::Manager::self().actionCollection(); + if( ! collection ) {
+ KSpread::Value err = KSpread::Value::errorNA();
+ err.setError( "#" + i18n("Scripfunctions are disabled.") );
+ return err;
+ }
+ KAction* action = scriptname.isNull() ? 0 : \
collection->action(scriptname); + if( ! action ) {
+ KSpread::Value err = KSpread::Value::errorVALUE(); //errorNAME();
+ err.setError( "#" + i18n("No such script.") );
+ return err;
+ }
+ */
- //TODO
- return KSpread::Value("This is a string");
-}
+ //TODO
+ return KSpread::Value( QString("Function %1").arg(name) );
+ }
+ ScriptingFunctionImpl(const QString& name, const QDomElement& description)
+ : KSpread::Function(name, ScriptingFunctionImpl::callback)
+ , m_name(name)
+ {
+ setNeedsExtra(true);
+
+ // if there exists no "Scripts" group yet, add it
+ KSpread::FunctionRepository* repo = KSpread::FunctionRepository::self();
+ if( ! repo->groups().contains("Scripts") )
+ repo->addGroup("Scripts");
+
+ // register ourself at the repository
+ repo->add(this);
+
+ // create a new description for the function
+ KSpread::FunctionDescription* desc = new \
KSpread::FunctionDescription(description); + desc->setGroup("Scripts");
+ repo->add(desc);
+ }
+
+ virtual ~ScriptingFunctionImpl() {}
+
+ QString name() const { return m_name; }
+
+ private:
+ QString m_name;
+};
+
+/***************************************************************************
+ * ScriptingFunction
+ */
+
class ScriptingFunction::Private
{
public:
@@ -134,16 +174,6 @@
return false;
}
- KSpread::FunctionRepository* repo = KSpread::FunctionRepository::self();
- if( ! repo->groups().contains("Scripts") )
- repo->addGroup("Scripts");
-
- KSpread::Function* f = new KSpread::Function(d->name, scripting_function_call);
- f->setParamCount(d->minparam, d->maxparam);
- f->setAcceptArray();
- f->setNeedsExtra(true);
- repo->add(f);
-
QDomElement nameelem = d->document.createElement("Name");
nameelem.appendChild( d->document.createTextNode(d->name) );
d->funcElement.appendChild(nameelem);
@@ -162,10 +192,9 @@
d->funcElement.appendChild(d->helpElement);
- KSpread::FunctionDescription* desc = new \
KSpread::FunctionDescription(d->funcElement);
- desc->setGroup("Scripts");
- repo->add(desc);
-
+ ScriptingFunctionImpl* funcimpl = new ScriptingFunctionImpl(d->name, \
d->funcElement); + funcimpl->setParamCount(d->minparam, d->maxparam);
+ funcimpl->setAcceptArray();
return true;
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic