//
#include "dnqscellbase.h"
+#include "dnqscontainer.h"
+#include "TKAxon.h"
+#include "TKReceptor.h"
+#include "TKLog.h"
+#include "DNUtils.h"
+
+
+DNQSCellBase::DNQSCellBase(DNQSContainer *container, std::string location, std::string name, bool canInterfaceIn, bool canInterfaceOut)
+ : TKCell(container,location,name,canInterfaceIn, canInterfaceOut)
+{
+ mEngine = container->getScriptEngine();
+
+ mQSAPIInstance = mEngine->newObject();
+ mQSAPIInstance.setProperty("location", QScriptValue(QString::fromStdString(location)),QScriptValue::ReadOnly|QScriptValue::Undeletable);
+ mQSAPIInstance.setProperty("name", QScriptValue(QString::fromStdString(name)),QScriptValue::ReadOnly|QScriptValue::Undeletable);
+
+ mQSReceptors = mEngine->newObject();
+ mQSAPIInstance.setProperty("receptors", mQSReceptors,QScriptValue::ReadOnly|QScriptValue::Undeletable);
+
+ mAxonValueHandle = mEngine->toStringHandle("axonValue");
+}
+
+DNQSCellBase::~DNQSCellBase()
+{
+
+}
+
+void DNQSCellBase::prepareValueForScript()
+{
+ //update receptor values
+ for ( TKReceptorMap::iterator it = mReceptors.begin(); it != mReceptors.end(); ++it )
+ {
+ mQSReceptors.setProperty(QString::fromStdString(it->first), QScriptValue(it->second->getValue()),QScriptValue::ReadOnly);
+ }
+ //update axonValue
+ mQSAPIInstance.setProperty(mAxonValueHandle,QScriptValue(mAxon->getValue()));
+
+ mReceptorValueUpdated = false;
+
+ return;
+}
+
+void DNQSCellBase::reflectValueFromScript()
+{
+ QScriptValue value = mQSAPIInstance.property(mAxonValueHandle);
+ mAxon->setValue(value.toNumber());
+}
+
+void DNQSCellBase::handleScriptException(const char *funcName)
+{
+ std::string message = "Script Error! in ";
+ message += mLocation;
+ message += "#";
+ message += funcName;
+ if (mEngine->hasUncaughtException())
+ {
+ QScriptValue error = mEngine->uncaughtException();
+ QString errorString = error.toString();
+ message += "\n";
+ message += errorString.toStdString();
+ mEngine->clearExceptions();
+ }
+ dnNotifyWarning("Script error", message);
+}