23 #include <tulip/Plugin.h>
35 static const std::string INTERACTOR_CATEGORY =
"Interactor";
55 Q_PROPERTY(
unsigned int priority READ priority)
56 Q_PROPERTY(QAction* action READ action)
57 Q_PROPERTY(
tlp::View* view READ view WRITE setView)
58 Q_PROPERTY(QCursor cursor READ cursor)
62 return INTERACTOR_CATEGORY;
65 return ":/tulip/gui/icons/32/plugin_interactor.png";
71 virtual bool isCompatible(
const std::string& viewName)
const=0;
79 virtual QWidget* configurationWidget()
const=0;
86 virtual unsigned int priority()
const=0;
93 virtual QAction* action()
const=0;
105 virtual QCursor cursor()
const=0;
111 virtual void construct()=0;
125 virtual void install(QObject* target)=0;
131 virtual void uninstall()=0;
136 virtual void undoIsDone()=0;
144 return QObject::eventFilter(obj,ev);
153 static QMap<std::string,QList<std::string> > _compatibilityMap;
155 static void initInteractorsDependencies();
156 static QList<std::string> compatibleInteractors(
const std::string& viewName);
178 #define INTERACTORPLUGINVIEWEXTENSION(CLASS_NAME,STRING_CLASS_NAME,BASE_INTERACTOR_STRING_NAME,VIEW_STRING_NAME,AUTHOR,DATE,DESCRIPTION,VERSION)\
179 class CLASS_NAME : public tlp::Interactor {\
180 mutable tlp::Interactor* _component;\
182 std::string name() const { return std::string(STRING_CLASS_NAME); } \
183 std::string author() const { return std::string(AUTHOR); }\
184 std::string date() const { return std::string(DATE); } \
185 std::string info() const { return std::string(DESCRIPTION); } \
186 std::string release() const { return std::string(VERSION); }\
187 std::string tulipRelease() const { return std::string(TULIP_RELEASE); }\
188 std::string group() const { return getComponent()->group(); }\
189 CLASS_NAME(const PluginContext *):_component(NULL) {}\
190 bool isCompatible(const std::string& viewName) const { return viewName == VIEW_STRING_NAME; }\
191 QWidget* configurationWidget() const { return getComponent()->configurationWidget(); }\
192 unsigned int priority() const { return getComponent()->priority(); }\
193 QAction* action() const { return getComponent()->action(); }\
194 tlp::View* view() const { return getComponent()->view(); }\
195 QCursor cursor() const { return getComponent()->cursor(); }\
196 void construct() { getComponent()->construct(); }\
197 void setView(tlp::View* v) { getComponent()->setView(v); }\
198 void install(QObject* target) { getComponent()->install(target); }\
199 void uninstall() { getComponent()->uninstall(); }\
200 void undoIsDone() { getComponent()->undoIsDone(); }\
201 tlp::Interactor* getComponent() const {\
203 _component = tlp::PluginLister::instance()->getPluginObject<Interactor>(BASE_INTERACTOR_STRING_NAME,NULL); assert(_component != NULL);\
217 #define INTERACTORPLUGINVIEWEXTENSIONWITHPRIORITY(CLASS_NAME,STRING_CLASS_NAME,BASE_INTERACTOR_STRING_NAME,VIEW_STRING_NAME,AUTHOR,DATE,DESCRIPTION,VERSION,PRIORITY) \
218 class CLASS_NAME : public tlp::Interactor {\
219 mutable tlp::Interactor* _component;\
221 std::string name() const { return std::string(STRING_CLASS_NAME); } \
222 std::string author() const { return std::string(AUTHOR); }\
223 std::string date() const { return std::string(DATE); } \
224 std::string info() const { return std::string(DESCRIPTION); } \
225 std::string release() const { return std::string(VERSION); }\
226 std::string tulipRelease() const { return std::string(TULIP_RELEASE); }\
227 std::string group() const { return getComponent()->group(); }\
228 CLASS_NAME(const PluginContext *):_component(NULL) {}\
229 bool isCompatible(const std::string& viewName) const { return viewName == VIEW_STRING_NAME; }\
230 QWidget* configurationWidget() const { return getComponent()->configurationWidget(); }\
231 unsigned int priority() const { return PRIORITY; }\
232 QAction* action() const { return getComponent()->action(); }\
233 tlp::View* view() const { return getComponent()->view(); }\
234 QCursor cursor() const { return getComponent()->cursor(); }\
235 void construct() { getComponent()->construct(); }\
236 void setView(tlp::View* v) { getComponent()->setView(v); }\
237 void install(QObject* target) { getComponent()->install(target); }\
238 void uninstall() { getComponent()->uninstall(); }\
239 void undoIsDone() { getComponent()->undoIsDone(); }\
240 tlp::Interactor* getComponent() const {\
242 _component = tlp::PluginLister::instance()->getPluginObject<Interactor>(BASE_INTERACTOR_STRING_NAME,NULL); assert(_component != NULL);\