From 766c3faccffc9b560c8bc92b04b05ecc07e83fbf Mon Sep 17 00:00:00 2001 From: Guido Ranzuglia granzuglia Date: Fri, 20 Aug 2010 08:52:07 +0000 Subject: [PATCH] first code sketch to support scripting engine --- src/common/common.pro | 1 + src/common/interfaces.h | 5 ++++- src/common/pluginmanager.cpp | 5 ++++- src/common/pluginmanager.h | 4 ++-- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/common/common.pro b/src/common/common.pro index 7dcc0326c..7562d7b5d 100644 --- a/src/common/common.pro +++ b/src/common/common.pro @@ -50,6 +50,7 @@ win32-msvc2008:CONFIG += staticlib QT += opengl QT += xml + TARGET = DEPENDPATH += . INCLUDEPATH += . diff --git a/src/common/interfaces.h b/src/common/interfaces.h index 213b30a5f..d52dd4cce 100644 --- a/src/common/interfaces.h +++ b/src/common/interfaces.h @@ -43,7 +43,7 @@ class QTreeWidgetItem; class MeshModel; class RenderMode; class GLArea; - +class QScriptEngine; /** The MainWindowInterface class defines just the executeFilter() callback function that is invoked by the standard parameter input dialog. @@ -339,6 +339,9 @@ public: */ virtual QTreeWidgetItem *tagDump(TagBase * /*tag*/, MeshDocument &/*md*/, MeshModel */*mm*/) {assert (0); return 0;} + + virtual void registerScriptProxyFunctions(QScriptEngine* eng) {}; + virtual FilterIDType ID(QAction *a) const { foreach( FilterIDType tt, types()) diff --git a/src/common/pluginmanager.cpp b/src/common/pluginmanager.cpp index 4cb9bd39d..056f06e1e 100644 --- a/src/common/pluginmanager.cpp +++ b/src/common/pluginmanager.cpp @@ -1,4 +1,5 @@ #include "pluginmanager.h" +#include PluginManager::PluginManager() { @@ -8,7 +9,7 @@ PluginManager::PluginManager() //qApp->addLibraryPath(getBaseDirPath()); } -void PluginManager::loadPlugins(RichParameterSet& defaultGlobal) +void PluginManager::loadPlugins(RichParameterSet& defaultGlobal,QScriptEngine* eng) { pluginsDir=QDir(getPluginDirPath()); // without adding the correct library path in the mac the loading of jpg (done via qt plugins) fails @@ -41,6 +42,8 @@ void PluginManager::loadPlugins(RichParameterSet& defaultGlobal) actionFilterMap.insert(filterAction->text(),filterAction); stringFilterMap.insert(filterAction->text(),iFilter); iFilter->initGlobalParameterSet(filterAction,defaultGlobal); + if (eng != NULL) + iFilter->registerScriptProxyFunctions(eng); } } diff --git a/src/common/pluginmanager.h b/src/common/pluginmanager.h index f9eed73dc..7ee2572d2 100644 --- a/src/common/pluginmanager.h +++ b/src/common/pluginmanager.h @@ -25,7 +25,7 @@ #define PLUGINMANAGER_H #include "interfaces.h" - +class QScriptEngine; /** \brief This class provides the basic tools for managing all the plugins. It is used by both meshlab and meshlab server. */ @@ -34,7 +34,7 @@ class PluginManager public: PluginManager(); enum TypeIO{IMPORT,EXPORT}; - void loadPlugins(RichParameterSet& defaultGlobal); + void loadPlugins(RichParameterSet& defaultGlobal,QScriptEngine* eng = NULL); inline QVector& meshIOPlugins() {return meshIOPlug;} inline QVector& meshFilterPlugins() {return meshFilterPlug;}