65#include "OpenFlipper/BasePlugin/TextureInterface.hh"
69#include "OpenFlipper/BasePlugin/INIInterface.hh"
76#include "OpenFlipper/BasePlugin/PluginFunctionsCore.hh"
79#include <ACG/QtWidgets/QtFileDialog.hh>
80#include "OpenFlipper/widgets/PluginDialog/PluginDialog.hh"
85#include <OpenFlipper/BasePlugin/PythonFunctionsCore.hh>
91static const int PRELOAD_THREADS_COUNT = (QThread::idealThreadCount() != -1) ? QThread::idealThreadCount() : 8;
93namespace cmake {
extern const char *static_plugins; };
109 QMutexLocker loadersLock(&loadersMutex_);
110 expectedLoaders_ += count;
120 QMutexLocker loadersLock(&loadersMutex_);
121 loaders_.push_back(loader);
123 pluginAvailable_.wakeOne();
138 QMutexLocker loadersLock(&loadersMutex_);
139 if (loaders_.empty()) {
140 if (expectedLoaders_ > 0) {
141 pluginAvailable_.wait(&loadersMutex_);
151 QPluginLoader *result = loaders_.front();
152 loaders_.pop_front();
157 std::deque<QPluginLoader *> loaders_;
158 QWaitCondition pluginAvailable_;
159 QMutex loadersMutex_;
161 int expectedLoaders_;
179 void addFilename(
const QString &filename) {
180 QMutexLocker filenamesLock(&filenamesMutex_);
181 filenames_.push_back(filename);
198 QMutexLocker filenamesLock(&filenamesMutex_);
199 if (filenames_.empty())
break;
200 fileName = filenames_.front();
201 filenames_.pop_front();
204 QPluginLoader *loader =
new QPluginLoader;
205 loader->setFileName(fileName);
212 std::deque<QString> filenames_;
213 QMutex filenamesMutex_;
227 size_t getTypeOrdinal(
const QString &name)
const {
228 const QString basename = QFileInfo(name).baseName();
229 if (basename.contains(
"Plugin-Type"))
231 else if (basename.contains(
"Plugin-File"))
233 else if (basename.contains(
"TextureControl"))
239 bool operator() (
const QString &a,
const QString &b)
const {
240 const size_t typeA = getTypeOrdinal(a);
241 const size_t typeB = getTypeOrdinal(b);
242 if (typeA != typeB) {
return typeA < typeB; }
246 bool operator() (
const QPluginLoader *a,
const QPluginLoader *b)
const {
247 return operator() (a->fileName(), b->fileName());
255 const QMetaObject* meta = _plugin->metaObject();
256 int id = meta->indexOfSlot( QMetaObject::normalizedSignature( _slotSignature ) );
261 const QMetaObject* meta = _plugin->metaObject();
262 int id = meta->indexOfSignal( QMetaObject::normalizedSignature( _signalSignature ) );
274 QString licenseTexts =
"";
277 QDir tempDir = QDir(OpenFlipper::Options::pluginDir());
284 if ( OpenFlipper::Options::isWindows() )
290 QStringList pluginlist = tempDir.entryList(filter,QDir::Files);
293 for (
int i=0; i < pluginlist.size(); i++) {
294 pluginlist[i] = tempDir.absoluteFilePath(pluginlist[i]);
298 QStringList dontLoadPlugins =
OpenFlipperSettings().
value(
"PluginControl/DontLoadNames", QStringList()).toStringList();
301 for (
int i = 0 ; i < dontLoadPlugins.size(); ++i)
302 emit
log(
LOGOUT,tr(
"dontLoadPlugins Plugin from ini file: %1").arg( dontLoadPlugins[i] ) );
305 QStringList additionalPlugins =
OpenFlipperSettings().
value(
"PluginControl/AdditionalPlugins", QStringList()).toStringList();
308 for (
int i = 0 ; i < additionalPlugins.size(); ++i) {
309 emit
log(
LOGOUT,tr(
"Additional Plugin from file: %1").arg( additionalPlugins[i] ) );
313 pluginlist = additionalPlugins << pluginlist;
319 QStringList list = QString::fromUtf8(cmake::static_plugins).split(
"\n");
320 #if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
321 QSet<QString> staticPlugins = QSet<QString>(list.begin(),list.end());
323 QSet<QString> staticPlugins = QSet<QString>::fromList(list);
325 for (
int i = 0; i < pluginlist.size(); ) {
326 const QString bn = QFileInfo(pluginlist[i]).baseName().remove(
"lib");
327 if (staticPlugins.contains(bn)) {
328 emit
log(
LOGWARN, tr(
"Not loading dynamic %1 as it is statically "
329 "linked against OpenFlipper.").arg(bn));
330 pluginlist.removeAt(i);
343 for (
int i = 0 ; i < dontLoadPlugins.size(); ++i )
344 emit
log(
LOGWARN,tr(
"Skipping Plugins :\t %1").arg( dontLoadPlugins[i] ) );
346 emit
log(
LOGOUT,
"================================================================================");
353 std::vector< PreloadThread* > loaderThreads(PRELOAD_THREADS_COUNT);
358 for (std::vector< PreloadThread* >::iterator it = loaderThreads.begin();
359 it != loaderThreads.end(); ++it) {
367 for (
int i = 0 ; i < pluginlist.size() ; ++i) {
368 loaderThreads[i % loaderThreads.size()]->addFilename(pluginlist[i]);
374 for (std::vector< PreloadThread* >::iterator it = loaderThreads.begin();
375 it != loaderThreads.end(); ++it) {
382 std::vector<QPluginLoader*> loadedPlugins;
383 loadedPlugins.reserve(pluginlist.size());
388 loadedPlugins.push_back(loader);
391 splashMessage_ = tr(
"Loading Plugin %1/%2").arg(loadedPlugins.size()).arg(pluginlist.size()) ;
399 for (std::vector< PreloadThread* >::iterator it = loaderThreads.begin();
400 it != loaderThreads.end(); ++it) {
409 for (std::vector<QPluginLoader*>::iterator it = loadedPlugins.begin();
410 it != loadedPlugins.end(); ++it) {
414 .arg(std::distance(loadedPlugins.begin(), it) + 1)
415 .arg(loadedPlugins.size());
419 if ((*it)->instance() != 0 ) {
420 QString pluginLicenseText =
"";
421 loadPlugin((*it)->fileName(),
true,pluginLicenseText, (*it)->instance());
422 licenseTexts += pluginLicenseText;
424 emit
log(
LOGERR,tr(
"Unable to load Plugin :\t %1").arg( (*it)->fileName() ) );
425 emit
log(
LOGERR,tr(
"Error was : ") + (*it)->errorString() );
426 emit
log(
LOGOUT,
"================================================================================");
434 QVector<QStaticPlugin> staticPlugins = QPluginLoader::staticPlugins();
435 for (QVector<QStaticPlugin>::iterator it = staticPlugins.begin();
436 it != staticPlugins.end(); ++it) {
437 QObject *instance = it->instance();
438 BaseInterface* basePlugin = qobject_cast< BaseInterface * >(instance);
440 QString fakeName = QString::fromUtf8(
"<Statically Linked>::/%1.%2")
441 .arg(basePlugin->
name())
442 .arg(OpenFlipper::Options::isWindows() ?
"dll" :
"so");
443 QString pluginLicenseText =
"";
444 loadPlugin(fakeName,
true, pluginLicenseText, instance);
445 licenseTexts += pluginLicenseText;
449 emit
log(
LOGINFO, tr(
"Total time needed to load plugins was %1 ms.").arg(time.elapsed()));
453 if ( licenseTexts !=
"" ) {
454 if ( OpenFlipper::Options::gui() ) {
457 QStringList licenseBlocks = licenseTexts.split(
"==");
460 for ( QStringList::iterator it = licenseBlocks.begin(); it != licenseBlocks.end() ; ++it )
461 if ( ! it->contains(
"PluginName") ) {
462 licenseBlocks.erase(it);
463 it = licenseBlocks.begin();
467 QMap< QString , QString > contacts;
469 for ( QStringList::iterator it = licenseBlocks.begin(); it != licenseBlocks.end() ; ++it ) {
470 QStringList lines = it->split(
"\n");
472 lines = lines.filter (
"Contact mail", Qt::CaseInsensitive );
475 if (lines.size() == 1) {
476 QString mail = lines[0].section(
":",-1).simplified();
477 QString list = contacts.take(mail);
479 contacts.insert(mail,list);
481 emit
log(
LOGWARN,tr(
"Can't extract mail contact from license request"));
486 for ( QMap<QString , QString>::iterator it = contacts.begin() ; it != contacts.end() ; ++it ) {
488 QStringList request = it.value().split(
"\n");
491 for ( QStringList::iterator lit = request.begin(); lit != request.end() ; ++lit ) {
493 if ( lit->contains(
"Message:") ) {
494 *lit = lit->section(
":",-1).simplified();
497 if ( lit->contains(
"Contact mail:") ) {
498 *lit = lit->section(
":",-1).simplified();
505 QTextEdit *edit =
new QTextEdit(&licenseBox);
506 edit->setText(request.join(
"\n"));
508 QLabel* mailLabel =
new QLabel(&licenseBox);
509 mailLabel->setText(tr(
"The text has been copied to your clipboard. Open in Mail program?"));
511 QPushButton* noButton =
new QPushButton(&licenseBox);
512 noButton->setText(tr(
"No"));
513 connect( noButton, SIGNAL(clicked ()), &licenseBox, SLOT(reject()) );
515 QPushButton* yesButton =
new QPushButton(&licenseBox);
516 yesButton->setText(tr(
"Yes"));
517 connect( yesButton, SIGNAL(clicked ()), &licenseBox, SLOT(accept()) );
519 QGridLayout *layout =
new QGridLayout;
520 layout->addWidget(edit,0,0,1,2);
521 layout->addWidget(mailLabel,1,0,1,2);
522 layout->addWidget(noButton,2,0);
523 layout->addWidget(yesButton,2,1);
524 licenseBox.setLayout(layout);
526 licenseBox.resize(500,500);
527 licenseBox.setModal(
true);
528 licenseBox.setWindowTitle(tr(
"Plugin License check failed, issuer is: %1").arg( it.key() ));
529 int userAnswer =licenseBox.exec();
532 QClipboard *cb = QApplication::clipboard();
533 cb->setText(request.join(
"\n"));
535 if ( userAnswer == 1 ) {
536 QString url =
"mailto:" + it.key();
537 url +=
"?subject=License Request&body=";
539 url += request.join(
";;");
541 url += request.join(
"\n");
544 QUrl encodedURL(url, QUrl::TolerantMode);
545 QDesktopServices::openUrl(encodedURL);
553 emit
log(
LOGWARN,tr(
"Plugin License check failed: "));
554 std::cerr << licenseTexts.toStdString() << std::endl;
569 if ( OpenFlipper::Options::nogui() )
577 if ( OpenFlipper::Options::isWindows() )
578 filter =
"Plugins (*.dll)";
580 filter =
"Plugins (*.so)";
585 if (filename.isEmpty())
590 QPluginLoader loader( filename );
591 QObject *plugin = loader.instance();
597 BaseInterface* basePlugin = qobject_cast< BaseInterface * >(plugin);
599 name = basePlugin->
name();
606 QStringList dontLoadPlugins =
OpenFlipperSettings().
value(
"PluginControl/DontLoadNames", QStringList()).toStringList();
607 if (dontLoadPlugins.contains(name)){
608 int ret = QMessageBox::question(0, tr(
"Plugin Loading Prevention"),
609 tr(
"OpenFlipper is currently configured to prevent loading this plugin.\n"
610 "Do you want to enable this plugin permanently?"),
611 QMessageBox::Yes | QMessageBox::No,
613 if (ret == QMessageBox::Yes) {
614 dontLoadPlugins.removeAll(name);
621 QStringList additionalPlugins =
OpenFlipperSettings().
value(
"PluginControl/AdditionalPlugins", QStringList()).toStringList();
622 if (!additionalPlugins.contains(name)){
623 int ret = QMessageBox::question(0, tr(
"Plugin Loading ..."),
624 tr(
"Should OpenFlipper load this plugin on next startup?"),
625 QMessageBox::Yes | QMessageBox::No,
627 if (ret == QMessageBox::Yes) {
628 additionalPlugins << filename;
629 std::cerr <<
"Added: " << filename.toStdString() << std::endl;
634 QString licenseText =
"";
637 if ( licenseText !=
"" ) {
638 if ( OpenFlipper::Options::gui() ) {
639 QMessageBox::warning ( 0, tr(
"Plugin License check failed"), licenseText );
641 std::cerr <<
"OpenURL: " << std::endl;
642 QDesktopServices::openUrl(QUrl(tr(
"mailto:contact@openflipper.com?subject=License Request&body=%1").arg(licenseText), QUrl::TolerantMode));
644 std::cerr <<
"Plugin License check failed" << std::endl;
645 std::cerr << licenseText.toStdString() << std::endl;
654 if ( OpenFlipper::Options::gui() ){
664 connect(dialog, SIGNAL(blockPlugin(
const QString&)),
this, SLOT(
slotBlockPlugin(
const QString&)));
665 connect(dialog, SIGNAL(unBlockPlugin(
const QString&)),
this, SLOT(
slotUnBlockPlugin(
const QString&)));
666 connect(dialog, SIGNAL(
loadPlugin(
const QString& ,
const bool , QString& , QObject* )),
667 this,SLOT(
loadPlugin(
const QString& ,
const bool , QString& , QObject* )));
670 ret = dialog->exec();
679 QStringList dontLoadPlugins =
OpenFlipperSettings().
value(
"PluginControl/DontLoadNames",QStringList()).toStringList();
680 if ( !dontLoadPlugins.contains(_name) ){
681 dontLoadPlugins << _name;
685 for (
size_t i = 0; i <
plugins().size();++i)
686 if (
plugins()[i].name == _name)
687 plugins()[i].status = PluginInfo::BLOCKED;
692 QStringList dontLoadPlugins =
OpenFlipperSettings().
value(
"PluginControl/DontLoadNames",QStringList()).toStringList();
693 dontLoadPlugins.removeAll(_name);
696 for (
size_t i = 0; i <
plugins().size();++i)
697 if (
plugins()[i].name == _name)
698 plugins()[i].status = PluginInfo::UNLOADED;
705 emit
log(
LOGOUT,
"================================================================================");
714void Core::loadPlugin(
const QString& _filename,
const bool _silent, QString& _licenseErrors, QObject* _plugin){
719 if ( OpenFlipper::Options::isWindows() ) {
720 QString dllname = _filename;
721 if ( ! dllname.endsWith(
".dll" ) )
725 if ( OpenFlipper::Options::isLinux() ) {
726 QString soname = _filename;
727 if ( ! soname.endsWith(
".so" ) )
735 QString errors, warnings;
740 if ( _plugin == 0 ) {
741 QPluginLoader loader( _filename );
742 plugin = loader.instance();
746 errors += tr(
"Error: Unable to load Plugin :\t %1").arg( _filename ) +
"\n";
747 errors += tr(
"Error: Error was : ") + loader.errorString() +
"\n";
751 emit
log(
LOGOUT,
"================================================================================");
753 emit
log (
LOGOUT,tr(
"Plugin loaded: \t %1").arg(_filename));
762 int alreadyLoadedAt = -1;
763 for (
unsigned int k=0; k <
plugins().size(); k++)
765 if (
plugins()[k].path == _filename)
766 alreadyLoadedAt =
static_cast<int>(k);
768 info.status = PluginInfo::FAILED;
769 info.
path = _filename;
772 emit
log(
LOGOUT,tr(
"Location : \t %1").arg( _filename) );
775 BaseInterface* basePlugin = qobject_cast< BaseInterface * >(plugin);
784 QStringList additionalPlugins =
OpenFlipperSettings().
value(
"PluginControl/AdditionalPlugins", QStringList()).toStringList();
785 info.
buildIn = !additionalPlugins.contains(info.
path);
787 emit
log(
LOGOUT,tr(
"Found Plugin : \t %1").arg(basePlugin->
name()) );
795 for (
unsigned int k=0; k <
plugins().size(); k++){
797 QString name_nospace = basePlugin->
name();
798 name_nospace.remove(
" ");
800 if (
plugins()[k].name == name_nospace &&
plugins()[k].path != _filename &&
plugins()[k].status == PluginInfo::LOADED){
801 if (_silent || OpenFlipper::Options::nogui() ){
803 warnings += tr(
"Warning: Already loaded from %1").arg(
plugins()[k].path) +
"\n";
812 PluginStorage::pluginsFailed().push_back(info);
817 tr(
"Plugin already loaded"),
818 tr(
"A Plugin with the same name was already loaded from %1.\n"
819 "You can only load the new plugin if you unload the existing one first.\n\n"
820 "Do you want to unload the existing plugin first?").arg(
plugins()[k].path),
821 QMessageBox::Yes|QMessageBox::No, QMessageBox::No);
822 if (ret == QMessageBox::No)
824 warnings += tr(
"Warning: Already loaded from %1.").arg(
plugins()[k].path) +
"\n";
833 PluginStorage::pluginsFailed().push_back(info);
840 QStringList dontLoadPlugins =
OpenFlipperSettings().
value(
"PluginControl/DontLoadNames",QStringList()).toStringList();
842 if ( dontLoadPlugins.contains(basePlugin->
name(), Qt::CaseInsensitive) ) {
844 warnings += tr(
"Warning: OpenFlipper.ini prevented Plugin %1 from being loaded! ").arg( basePlugin->
name() ) +
"\n";
848 info.status = PluginInfo::BLOCKED;
853 PluginStorage::pluginsFailed().push_back(info);
860 if ( securePlugin ) {
861 emit
log(
LOGINFO,tr(
"Plugin uses security interface. Trying to authenticate against plugin ..."));
863 bool success =
false;
864 QMetaObject::invokeMethod(plugin,
"authenticate", Q_RETURN_ARG(
bool , success ) ) ;
866 QString message =
"";
867 QMetaObject::invokeMethod(plugin,
"licenseError", Q_RETURN_ARG( QString , message ) ) ;
868 _licenseErrors = message;
871 emit
log(
LOGINFO,tr(
"... ok. Loading plugin "));
874 errors += tr(
"Error: Failed to load plugin. Plugin access denied by license management.");
884 PluginStorage::pluginsFailed().push_back(info);
892 supported =
"BaseInterface ";
898 info.
version = QString::number(-1);
900 if ( OpenFlipper::Options::nogui() ) {
902 if ( !
checkSlot( plugin ,
"noguiSupported()" ) ) {
903 warnings += tr(
"Warning: Running in nogui mode which is unsupported by this plugin, skipping");
910 PluginStorage::pluginsFailed().push_back(info);
919 if (
checkSignal(plugin,
"updated_objects(int)") ) {
921 errors += tr(
"Error: Plugin Uses old style updated_objects! Convert to updatedObject!") +
"\n";
928 PluginStorage::pluginsFailed().push_back(info);
934 errors += tr(
"Error: Plugin Uses old style update_view! Convert to updateView!") +
"\n";
941 PluginStorage::pluginsFailed().push_back(info);
949 if (
checkSignal(plugin,
"blockScenegraphUpdates(bool)") )
952 if (
checkSignal(plugin,
"updatedObject(int)") &&
checkSignal(plugin,
"updatedObject(int,const UpdateType&)") ){
954 errors += tr(
"Error: Plugin uses deprecated and(!) new updatedObject. Only new updatedObject will be active.") +
"\n";
956 log(
LOGERR,tr(
"Plugin uses deprecated and(!) new updatedObject. Only new updatedObject will be active."));
962 warnings += tr(
"Warning: Plugin uses deprecated updatedObject.") +
"\n";
964 log(
LOGWARN,tr(
"Plugin uses deprecated updatedObject."));
965 connect(plugin,SIGNAL(updatedObject(
int)),
this,SLOT(
slotObjectUpdated(
int)), Qt::AutoConnection);
968 if (
checkSignal(plugin,
"updatedObject(int,const UpdateType&)") )
972 if (
checkSlot( plugin ,
"slotObjectUpdated(int)" ) &&
checkSlot( plugin ,
"slotObjectUpdated(int,const UpdateType&)" ) ){
973 errors += tr(
"Error: Plugin uses deprecated and(!) new slotObjectUpdated. Only new slotObjectUpdated will be active.") +
"\n";
975 log(
LOGERR,tr(
"Plugin uses deprecated and(!) new slotObjectUpdated. Only new slotObjectUpdated will be active."));
980 if (
checkSlot( plugin ,
"slotObjectUpdated(int)" ) ){
981 warnings += tr(
"Warning: Plugin uses deprecated slotObjectUpdated.") +
"\n";
982 log(
LOGWARN,tr(
"Plugin uses deprecated slotObjectUpdated."));
986 if (
checkSlot( plugin ,
"slotObjectUpdated(int,const UpdateType&)" ) )
990 if (
checkSignal(plugin,
"objectPropertiesChanged(int)")) {
991 errors += tr(
"Error: Signal objectPropertiesChanged(int) is deprecated.") +
"\n";
992 errors += tr(
"Error: The signal will be automatically emitted by the object that has been changed and the core will deliver it to the plugins!.") +
"\n";
993 errors += tr(
"Error: Please remove this signal from your plugins!.") +
"\n";
996 if (
checkSlot( plugin ,
"slotViewChanged()" ) )
997 connect(
this,SIGNAL(
pluginViewChanged()),plugin,SLOT(slotViewChanged()), Qt::DirectConnection);
999 if (
checkSlot( plugin ,
"slotSceneDrawn()" ) )
1000 connect(
this,SIGNAL(
pluginSceneDrawn()),plugin,SLOT(slotSceneDrawn()), Qt::DirectConnection);
1002 if (
checkSlot( plugin ,
"slotDrawModeChanged(int)" ) )
1003 connect(
coreWidget_,SIGNAL(drawModeChanged(
int)),plugin,SLOT(slotDrawModeChanged(
int)), Qt::DirectConnection);
1005 if (
checkSlot(plugin,
"slotObjectPropertiesChanged(int)"))
1008 if (
checkSignal(plugin,
"visibilityChanged()" ) ) {
1009 errors += tr(
"Error: Signal visibilityChanged() now requires objectid or -1 as argument.") +
"\n";
1012 if (
checkSignal(plugin,
"visibilityChanged(int)") ) {
1013 errors += tr(
"Error: Signal visibilityChanged(int) is deprecated!") +
"\n";
1014 errors += tr(
"Error: If an object changes its visibility, it will call the required functions automatically.") +
"\n";
1015 errors += tr(
"Error: If you change a scenegraph node, call nodeVisibilityChanged(int). See docu of this function for details.") +
"\n";
1018 if (
checkSignal(plugin,
"nodeVisibilityChanged(int)") )
1019 connect(plugin,SIGNAL(nodeVisibilityChanged(
int)),
this,SLOT(
slotVisibilityChanged(
int)), Qt::DirectConnection);
1022 if (
checkSlot(plugin,
"slotVisibilityChanged(int)") )
1025 if (
checkSignal(plugin,
"activeObjectChanged()" ) ) {
1026 errors += tr(
"Error: Signal activeObjectChanged() is now objectSelectionChanged( int _objectId )") +
"\n";
1029 if (
checkSlot(plugin,
"slotActiveObjectChanged()" ) ) {
1030 errors += tr(
"Error: Slot slotActiveObjectChanged() is now slotObjectSelectionChanged( int _objectId ) ") +
"\n";
1033 if (
checkSlot(plugin,
"slotAllCleared()") )
1034 connect(
this,SIGNAL(
allCleared()),plugin,SLOT(slotAllCleared()));
1037 if (
checkSignal(plugin,
"objectSelectionChanged(int)") ) {
1038 errors += tr(
"Error: Signal objectSelectionChanged(in) is deprecated!") +
"\n";
1039 errors += tr(
"Error: If the selection for an object is changed, the core will emit the required signals itself!") +
"\n";
1042 if (
checkSlot( plugin ,
"slotObjectSelectionChanged(int)" ) )
1046 if (
checkSlot( plugin ,
"pluginsInitialized()" ) )
1049 if (
checkSlot( plugin ,
"pluginsInitialized(QVector<QPair<QString,QString>>const&)" ) )
1052 if (
checkSignal(plugin,
"setSlotDescription(QString,QString,QStringList,QStringList)") )
1059 if (
checkSignal(plugin,
"setRenderer(unsigned int,QString)" ) ) {
1060 connect(plugin,SIGNAL(setRenderer(
unsigned int,QString)),
this,SLOT(
slotSetRenderer(
unsigned int,QString)));
1063 if (
checkSignal(plugin,
"getCurrentRenderer(unsigned int,QString&)" ) ) {
1064 connect(plugin,SIGNAL(getCurrentRenderer(
unsigned int,QString&)),
this,SLOT(
slotGetCurrentRenderer(
unsigned int,QString&)), Qt::DirectConnection);
1073 supported = supported +
"Logging ";
1079 connect(plugin,SIGNAL(
log(QString )),newlog,SLOT(
slotLog(QString )),Qt::DirectConnection);
1082 if ( OpenFlipper::Options::gui() )
1092 if (
checkSlot(plugin,
"logOutput(Logtype,QString)") )
1097 MenuInterface* menubarPlugin = qobject_cast< MenuInterface * >(plugin);
1098 if ( menubarPlugin && OpenFlipper::Options::gui() ) {
1099 supported = supported +
"Menubar ";
1101 if (
checkSignal(plugin,
"addMenubarAction(QAction*,QString)") )
1102 connect(plugin , SIGNAL(addMenubarAction(QAction*,QString)),
1103 coreWidget_ , SLOT(slotAddMenubarAction(QAction*,QString)),Qt::DirectConnection);
1104 if (
checkSignal(plugin,
"addMenubarActions(std::vector<QAction*>, QString)") )
1105 connect(plugin , SIGNAL(addMenubarActions(std::vector<QAction*>,QString)),
1106 coreWidget_ , SLOT(slotAddMenubarActions(std::vector<QAction*>,QString)),Qt::DirectConnection);
1107 if (
checkSignal(plugin,
"getMenubarMenu (QString,QMenu*&,bool)") )
1108 connect(plugin , SIGNAL(getMenubarMenu (QString,QMenu*&,
bool)),
1109 coreWidget_ , SLOT(slotGetMenubarMenu (QString,QMenu*&,
bool)),Qt::DirectConnection);
1114 if ( contextMenuPlugin && OpenFlipper::Options::gui() ) {
1115 supported = supported +
"ContextMenu ";
1117 if (
checkSignal(plugin,
"addContextMenuItem(QAction*,ContextMenuType)") )
1118 connect(plugin , SIGNAL(addContextMenuItem(QAction*,
ContextMenuType)),
1121 if (
checkSignal(plugin,
"addContextMenuItem(QAction*,DataType,ContextMenuType)") )
1126 connect(plugin , SIGNAL(hideContextMenu()),
1127 coreWidget_ , SLOT(slotHideContextMenu()),Qt::DirectConnection);
1129 if (
checkSlot(plugin,
"slotUpdateContextMenu(int)") )
1130 connect(
coreWidget_ , SIGNAL(updateContextMenu(
int)),
1131 plugin , SLOT(slotUpdateContextMenu(
int)),Qt::DirectConnection);
1133 if (
checkSlot(plugin,
"slotUpdateContextMenuNode(int)") )
1134 connect(
coreWidget_ , SIGNAL(updateContextMenuNode(
int)),
1135 plugin , SLOT(slotUpdateContextMenuNode(
int)),Qt::DirectConnection);
1137 if (
checkSlot(plugin,
"slotUpdateContextMenuBackground()") )
1138 connect(
coreWidget_ , SIGNAL(updateContextMenuBackground()),
1139 plugin , SLOT(slotUpdateContextMenuBackground()),Qt::DirectConnection);
1143 ToolboxInterface* toolboxPlugin = qobject_cast< ToolboxInterface * >(plugin);
1144 if ( toolboxPlugin && OpenFlipper::Options::gui() ) {
1145 supported = supported +
"Toolbox ";
1148 if (
checkSignal(plugin,
"addToolbox(QString,QWidget*)"))
1149 connect(plugin, SIGNAL(
addToolbox(QString,QWidget*) ),
1150 this, SLOT(
addToolbox(QString,QWidget*) ),Qt::DirectConnection );
1152 if (
checkSignal(plugin,
"addToolbox(QString,QWidget*,QIcon*)"))
1153 connect(plugin, SIGNAL(
addToolbox(QString,QWidget*,QIcon*) ),
1154 this, SLOT(
addToolbox(QString,QWidget*,QIcon*) ),Qt::DirectConnection );
1156 if (
checkSignal(plugin,
"addToolbox(QString,QWidget*,QIcon*,QWidget*)"))
1157 connect(plugin, SIGNAL(
addToolbox(QString,QWidget*,QIcon*,QWidget*) ),
1158 this, SLOT(
addToolbox(QString,QWidget*,QIcon*,QWidget*) ),Qt::DirectConnection );
1162 ViewModeInterface* viewModePlugin = qobject_cast< ViewModeInterface * >(plugin);
1163 if ( viewModePlugin && OpenFlipper::Options::gui() ) {
1164 supported = supported +
"ViewMode ";
1166 if (
checkSignal(plugin,
"defineViewModeToolboxes(QString,QStringList)"))
1167 connect(plugin, SIGNAL( defineViewModeToolboxes(QString, QStringList) ),
1168 coreWidget_, SLOT( slotAddViewModeToolboxes(QString, QStringList) ),Qt::DirectConnection );
1170 if (
checkSignal(plugin,
"defineViewModeToolbars(QString,QStringList)"))
1171 connect(plugin, SIGNAL( defineViewModeToolbars(QString, QStringList) ),
1172 coreWidget_, SLOT( slotAddViewModeToolbars(QString, QStringList) ),Qt::DirectConnection );
1174 if (
checkSignal(plugin,
"defineViewModeContextMenus(QString,QStringList)"))
1175 connect(plugin, SIGNAL( defineViewModeContextMenus(QString, QStringList) ),
1176 coreWidget_, SLOT( slotAddViewModeContextMenus(QString, QStringList) ),Qt::DirectConnection );
1178 if (
checkSignal(plugin,
"defineViewModeIcon(QString,QString)"))
1179 connect(plugin, SIGNAL( defineViewModeIcon(QString, QString) ),
1180 coreWidget_, SLOT( slotSetViewModeIcon(QString, QString) ),Qt::DirectConnection );
1182 if (
checkSignal(plugin,
"setViewMode(QString,bool)"))
1183 connect(plugin, SIGNAL(
setViewMode(QString,
bool) ),
1188 OptionsInterface* optionsPlugin = qobject_cast< OptionsInterface * >(plugin);
1189 if ( optionsPlugin && OpenFlipper::Options::gui() ) {
1190 supported = supported +
"Options ";
1192 QWidget* widget = 0;
1196 if (
checkSlot(plugin,
"applyOptions()") )
1203 ToolbarInterface* toolbarPlugin = qobject_cast< ToolbarInterface * >(plugin);
1204 if ( toolbarPlugin && OpenFlipper::Options::gui() ) {
1205 supported = supported +
"Toolbars ";
1207 if (
checkSignal(plugin,
"addToolbar(QToolBar*)") )
1208 connect(plugin,SIGNAL(addToolbar(QToolBar*)),
1209 coreWidget_,SLOT(slotAddToolbar(QToolBar*)),Qt::DirectConnection);
1211 if (
checkSignal(plugin,
"removeToolbar(QToolBar*)") )
1212 connect(plugin,SIGNAL(removeToolbar(QToolBar*)),
1213 coreWidget_,SLOT(slotRemoveToolbar(QToolBar*)),Qt::DirectConnection);
1215 if (
checkSignal(plugin,
"getToolBar(QString,QToolBar*&)") )
1216 connect(plugin,SIGNAL(getToolBar(QString,QToolBar*&)),
1217 coreWidget_,SLOT(getToolBar(QString,QToolBar*&)),Qt::DirectConnection);
1223 if ( statusbarPlugin && OpenFlipper::Options::gui() ) {
1224 supported = supported +
"StatusBar ";
1226 if (
checkSignal(plugin,
"showStatusMessage(QString,int)") )
1227 connect(plugin,SIGNAL(showStatusMessage(QString,
int)),
1228 coreWidget_,SLOT(statusMessage(QString,
int)),Qt::DirectConnection);
1231 if (
checkSignal(plugin,
"setStatus(ApplicationStatus::applicationStatus)") )
1236 connect(plugin,SIGNAL(clearStatusMessage()),
1239 if (
checkSignal(plugin,
"addWidgetToStatusbar(QWidget*)") )
1240 connect(plugin,SIGNAL(addWidgetToStatusbar(QWidget*)),
coreWidget_,SLOT(addWidgetToStatusbar(QWidget*)));
1244 KeyInterface* keyPlugin = qobject_cast< KeyInterface * >(plugin);
1245 if ( keyPlugin && OpenFlipper::Options::gui() ) {
1246 supported = supported +
"KeyboardEvents ";
1248 if (
checkSignal(plugin,
"registerKey(int,Qt::KeyboardModifiers,QString,bool)") )
1249 connect(plugin,SIGNAL( registerKey(
int, Qt::KeyboardModifiers, QString,
bool) ),
1250 coreWidget_,SLOT(slotRegisterKey(
int, Qt::KeyboardModifiers, QString,
bool)) );
1254 MouseInterface* mousePlugin = qobject_cast< MouseInterface * >(plugin);
1255 if ( mousePlugin && OpenFlipper::Options::gui() ) {
1256 supported = supported +
"MouseEvents ";
1258 if (
checkSlot( plugin ,
"slotMouseWheelEvent(QWheelEvent*,const std::string&)" ) )
1259 connect(
this , SIGNAL(
PluginWheelEvent(QWheelEvent * ,
const std::string & )),
1260 plugin , SLOT(slotMouseWheelEvent(QWheelEvent* ,
const std::string & )));
1262 if (
checkSlot( plugin ,
"slotMouseEvent(QMouseEvent*)" ) )
1266 if (
checkSlot( plugin ,
"slotMouseEventLight(QMouseEvent*)" ) )
1274 if ( infoPlugin && OpenFlipper::Options::gui() ) {
1275 supported = supported +
"TypeInformation ";
1278 supportedInfoTypes().insert(std::pair<InformationInterface*,DataType>(infoPlugin,dtype));
1283 if ( pickPlugin && OpenFlipper::Options::gui() ) {
1284 supported = supported +
"Picking ";
1286 if (
checkSlot( plugin ,
"slotPickModeChanged(const std::string&)" ) )
1287 connect(
coreWidget_,SIGNAL(signalPickModeChanged (
const std::string &)),
1288 plugin,SLOT(slotPickModeChanged(
const std::string &)));
1290 if (
checkSignal(plugin,
"addPickMode(const std::string&)") )
1291 connect(plugin,SIGNAL(addPickMode(
const std::string& )),
1292 this,SLOT(
slotAddPickMode(
const std::string& )),Qt::DirectConnection);
1294 if (
checkSignal(plugin,
"addHiddenPickMode(const std::string&)") )
1295 connect(plugin,SIGNAL(addHiddenPickMode(
const std::string& )),
1298 if (
checkSignal(plugin,
"setPickModeCursor(const std::string&,QCursor)") )
1299 for (
unsigned int i = 0 ; i < OpenFlipper::Options::examinerWidgets() ; ++i )
1300 connect(plugin,SIGNAL(setPickModeCursor(
const std::string& ,QCursor)),
1301 coreWidget_,SLOT(setPickModeCursor(
const std::string& ,QCursor)),Qt::DirectConnection);
1303 if (
checkSignal(plugin,
"setPickModeMouseTracking(const std::string&,bool)") )
1304 for (
unsigned int i = 0 ; i < OpenFlipper::Options::examinerWidgets() ; ++i )
1305 connect(plugin,SIGNAL(setPickModeMouseTracking(
const std::string& ,
bool)),
1306 coreWidget_,SLOT(setPickModeMouseTracking(
const std::string& ,
bool)),Qt::DirectConnection);
1308 if (
checkSignal(plugin,
"setPickModeToolbar(const std::string&,QToolBar*)") )
1309 connect(plugin,SIGNAL(setPickModeToolbar (
const std::string&, QToolBar*)),
1310 coreWidget_,SLOT(setPickModeToolbar (
const std::string&, QToolBar*)),Qt::DirectConnection);
1312 if (
checkSignal(plugin,
"removePickModeToolbar(const std::string&)") )
1313 connect(plugin,SIGNAL(removePickModeToolbar(
const std::string&)),
1314 coreWidget_,SLOT(removePickModeToolbar(
const std::string&)),Qt::DirectConnection);
1319 INIInterface* iniPlugin = qobject_cast< INIInterface * >(plugin);
1321 supported = supported +
"INIFile ";
1323 if (
checkSlot( plugin ,
"loadIniFile(INIFile&,int)" ) )
1325 plugin , SLOT( loadIniFile(
INIFile&,
int) ),Qt::DirectConnection);
1327 if (
checkSlot( plugin ,
"saveIniFile(INIFile&,int)" ) )
1329 plugin , SLOT( saveIniFile(
INIFile& ,
int ) ),Qt::DirectConnection);
1331 if (
checkSlot( plugin ,
"saveIniFileOptions(INIFile&)" ) )
1333 plugin , SLOT( saveIniFileOptions(
INIFile& ) ),Qt::DirectConnection);
1335 if (
checkSlot( plugin ,
"saveOnExit(INIFile&)" ) )
1339 if (
checkSlot( plugin ,
"loadIniFileOptions(INIFile&)" ) )
1341 plugin , SLOT( loadIniFileOptions(
INIFile& ) ),Qt::DirectConnection);
1343 if (
checkSlot( plugin ,
"loadIniFileOptionsLast(INIFile&)" ) )
1345 plugin , SLOT( loadIniFileOptionsLast(
INIFile& ) ),Qt::DirectConnection);
1348#ifdef PYTHON_ENABLED
1351 PythonInterface* pythonPlugin = qobject_cast< PythonInterface * >(plugin);
1352 if ( pythonPlugin ) {
1353 supported = supported +
"PythonInterface ";
1355 QObject* currentPluginPointer = qobject_cast< QObject * >(plugin);
1357 setPluginPointer(basePlugin->
name() , currentPluginPointer);
1359 if (
checkSignal(plugin,
"executePythonScript(QString)")) {
1361 this, SLOT(slotExecutePythonScript(QString)), Qt::DirectConnection);
1364 if (
checkSignal(plugin,
"openPythonScriptInEditor(QString)")) {
1365 connect(plugin, SIGNAL(openPythonScriptInEditor(QString)),
1366 this, SLOT(slotOpenPythonScriptInEditor(QString)), Qt::DirectConnection);
1374 if ( selectionPlugin && OpenFlipper::Options::gui() ) {
1375 supported = supported +
"SelectionBase ";
1377 if (
checkSignal(plugin,
"addSelectionEnvironment(QString,QString,QIcon,QString&)") ) {
1378 errors += tr(
"Error: Plugin uses deprecated addSelectionEnvironment(QString,QString,QIcon,QString&) , Replace the qicon by the path to the icon!") +
"\n";
1379 log(
LOGERR,tr(
"Plugin uses deprecated addSelectionEnvironment(QString,QString,QIcon,QString&) , Replace the qicon by the path to the icon!"));
1382 if (
checkSignal(plugin,
"addSelectionEnvironment(QString,QString,QString,QString&)") )
1388 if (
checkSlot(plugin,
"slotAddSelectionEnvironment(QString,QString,QIcon,QString&)") ) {
1389 errors += tr(
"Error: Plugin uses deprecated slotAddSelectionEnvironment(QString,QString,QIcon,QString&) , Replace the qicon by the path to the icon!") +
"\n";
1392 if (
checkSlot( plugin ,
"slotAddSelectionEnvironment(QString,QString,QString,QString&)" ) )
1398 if (
checkSignal(plugin,
"registerType(QString,DataType)") )
1404 if (
checkSlot( plugin ,
"slotRegisterType(QString,DataType)" ) )
1410 if (
checkSignal(plugin,
"addPrimitiveType(QString,QString,QIcon,SelectionInterface::PrimitiveType&)") ) {
1411 errors += tr(
"Error: Plugin uses deprecated addPrimitiveType(QString,QString,QIcon,SelectionInterface::PrimitiveType&) , Replace the qicon by the path to the icon!") +
"\n";
1414 if (
checkSignal(plugin,
"addPrimitiveType(QString,QString,QString,SelectionInterface::PrimitiveType&)") )
1415 connect(plugin , SIGNAL(
addPrimitiveType(QString,QString,QString,SelectionInterface::PrimitiveType&)),
1416 this , SLOT(
slotAddPrimitiveType(QString,QString,QString,SelectionInterface::PrimitiveType&)),Qt::DirectConnection);
1420 if (
checkSlot(plugin,
"slotAddPrimitiveType(QString,QString,QIcon,SelectionInterface::PrimitiveType&)") )
1421 log(
LOGERR,tr(
"Plugin uses deprecated slotAddPrimitiveType(QString,QString,QIcon,SelectionInterface::PrimitiveType&) , Replace the qicon by the path to the icon!"));
1423 if (
checkSlot( plugin ,
"slotAddPrimitiveType(QString,QString,QString,SelectionInterface::PrimitiveType&)" ) )
1424 connect(
this , SIGNAL(
addPrimitiveType(QString,QString,QString,SelectionInterface::PrimitiveType&)),
1425 plugin , SLOT(
slotAddPrimitiveType(QString,QString,QString,SelectionInterface::PrimitiveType&)),Qt::DirectConnection);
1429 if (
checkSignal(plugin,
"addCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&)") ) {
1430 errors += tr(
"Error: Plugin uses deprecated addCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&) , Replace the qicon by the path to the icon!") +
"\n";
1432 log(
LOGERR,tr(
"Plugin uses deprecated addCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&) , Replace the qicon by the path to the icon!"));
1435 if (
checkSignal(plugin,
"addCustomSelectionMode(QString,QString,QString,QString,SelectionInterface::PrimitiveType,QString&)") )
1436 connect(plugin , SIGNAL(
addCustomSelectionMode(QString,QString,QString,QString,SelectionInterface::PrimitiveType,QString&)),
1437 this , SLOT(
slotAddCustomSelectionMode(QString,QString,QString,QString,SelectionInterface::PrimitiveType,QString&)),Qt::DirectConnection);
1441 if (
checkSignal(plugin,
"addCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&,DataType)") ) {
1442 errors += tr(
"Error: Plugin uses deprecated addCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&,DataType) , Replace the qicon by the path to the icon!") +
"\n";
1443 log(
LOGERR,tr(
"Plugin uses deprecated addCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&,DataType) , Replace the qicon by the path to the icon!"));
1446 if (
checkSignal(plugin,
"addCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&,DataType)") )
1452 if (
checkSlot(plugin,
"slotAddCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&)") ) {
1453 errors += tr(
"Error: Plugin uses deprecated slotAddCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&) , Replace the qicon by the path to the icon!") +
"\n";
1454 log(
LOGERR,tr(
"Plugin uses deprecated slotAddCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&) , Replace the qicon by the path to the icon!"));
1457 if (
checkSlot( plugin ,
"slotAddCustomSelectionMode(QString,QString,QString,QString,SelectionInterface::PrimitiveType,QString&)" ) )
1458 connect(
this , SIGNAL(
addCustomSelectionMode(QString,QString,QString,QString,SelectionInterface::PrimitiveType,QString&)),
1459 plugin , SLOT(
slotAddCustomSelectionMode(QString,QString,QString,QString,SelectionInterface::PrimitiveType,QString&)),Qt::DirectConnection);
1463 if (
checkSlot(plugin,
"slotAddCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&,DataType)") ) {
1464 errors += tr(
"Error: Plugin uses deprecated slotAddCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&,DataType) , Replace the qicon by the path to the icon!") +
"\n";
1465 log(
LOGERR,tr(
"Plugin uses deprecated slotAddCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&,DataType) , Replace the qicon by the path to the icon!"));
1468 if (
checkSlot( plugin ,
"slotAddCustomSelectionMode(QString,QString,QString,QString,SelectionInterface::PrimitiveType,QString&,DataType)" ) )
1475 if (
checkSignal(plugin,
"addSelectionOperations(QString,QStringList,QString,SelectionInterface::PrimitiveType)") )
1476 connect(plugin , SIGNAL(
addSelectionOperations(QString,QStringList,QString,SelectionInterface::PrimitiveType)),
1477 this , SLOT(
slotAddSelectionOperations(QString,QStringList,QString,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1479 if (
checkSlot( plugin ,
"slotAddSelectionOperations(QString,QStringList,QString,SelectionInterface::PrimitiveType)" ) )
1480 connect(
this , SIGNAL(
addSelectionOperations(QString,QStringList,QString,SelectionInterface::PrimitiveType)),
1481 plugin , SLOT(
slotAddSelectionOperations(QString,QStringList,QString,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1483 if (
checkSignal(plugin,
"addSelectionParameters(QString,QWidget*,QString,SelectionInterface::PrimitiveType)") )
1484 connect(plugin , SIGNAL(
addSelectionParameters(QString,QWidget*,QString,SelectionInterface::PrimitiveType)),
1487 if (
checkSlot( plugin ,
"slotAddSelectionParameters(QString,QWidget*,QString,SelectionInterface::PrimitiveType)" ) )
1488 connect(
this , SIGNAL(
addSelectionParameters(QString,QWidget*,QString,SelectionInterface::PrimitiveType)),
1492 if (
checkSignal(plugin,
"selectionOperation(QString)") )
1496 if (
checkSlot( plugin ,
"slotSelectionOperation(QString)" ) )
1500 if (
checkSignal(plugin,
"showToggleSelectionMode(QString,bool,SelectionInterface::PrimitiveType)") )
1504 if (
checkSlot( plugin ,
"slotShowToggleSelectionMode(QString,bool,SelectionInterface::PrimitiveType)" ) )
1508 if (
checkSignal(plugin,
"showLassoSelectionMode(QString,bool,SelectionInterface::PrimitiveType)") )
1512 if (
checkSlot( plugin ,
"slotShowLassoSelectionMode(QString,bool,SelectionInterface::PrimitiveType)" ) )
1516 if (
checkSignal(plugin,
"showVolumeLassoSelectionMode(QString,bool,SelectionInterface::PrimitiveType)") )
1520 if (
checkSlot( plugin ,
"slotShowVolumeLassoSelectionMode(QString,bool,SelectionInterface::PrimitiveType)" ) )
1524 if (
checkSignal(plugin,
"showSurfaceLassoSelectionMode(QString,bool,SelectionInterface::PrimitiveType)") )
1528 if (
checkSlot( plugin ,
"slotShowSurfaceLassoSelectionMode(QString,bool,SelectionInterface::PrimitiveType)" ) )
1532 if (
checkSignal(plugin,
"showSphereSelectionMode(QString,bool,SelectionInterface::PrimitiveType)") )
1536 if (
checkSlot( plugin ,
"slotShowSphereSelectionMode(QString,bool,SelectionInterface::PrimitiveType)" ) )
1540 if (
checkSignal(plugin,
"showClosestBoundarySelectionMode(QString,bool,SelectionInterface::PrimitiveType)") )
1544 if (
checkSlot( plugin ,
"slotShowClosestBoundarySelectionMode(QString,bool,SelectionInterface::PrimitiveType)" ) )
1548 if (
checkSignal(plugin,
"showFloodFillSelectionMode(QString,bool,SelectionInterface::PrimitiveType)") )
1552 if (
checkSlot( plugin ,
"slotShowFloodFillSelectionMode(QString,bool,SelectionInterface::PrimitiveType)" ) )
1556 if (
checkSignal(plugin,
"showComponentsSelectionMode(QString,bool,SelectionInterface::PrimitiveType)") )
1560 if (
checkSlot( plugin ,
"slotShowComponentsSelectionMode(QString,bool,SelectionInterface::PrimitiveType)" ) )
1564 if (
checkSignal(plugin,
"toggleSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)") )
1565 connect(plugin , SIGNAL(
toggleSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1566 this , SLOT(
slotToggleSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1568 if (
checkSlot( plugin ,
"slotToggleSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)" ) )
1569 connect(
this , SIGNAL(
toggleSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1570 plugin , SLOT(
slotToggleSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1572 if (
checkSignal(plugin,
"lassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)") )
1573 connect(plugin , SIGNAL(
lassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1574 this , SLOT(
slotLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1576 if (
checkSlot( plugin ,
"slotLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)" ) )
1577 connect(
this , SIGNAL(
lassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1578 plugin , SLOT(
slotLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1580 if (
checkSignal(plugin,
"volumeLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)") )
1581 connect(plugin , SIGNAL(
volumeLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1584 if (
checkSlot( plugin ,
"slotVolumeLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)" ) )
1585 connect(
this , SIGNAL(
volumeLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1586 plugin , SLOT(
slotVolumeLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1588 if (
checkSignal(plugin,
"surfaceLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)") )
1589 connect(plugin , SIGNAL(
surfaceLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1592 if (
checkSlot( plugin ,
"slotSurfaceLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)" ) )
1596 if (
checkSignal(plugin,
"sphereSelection(QMouseEvent*,double,SelectionInterface::PrimitiveType,bool)") )
1597 connect(plugin , SIGNAL(
sphereSelection(QMouseEvent*,
double,SelectionInterface::PrimitiveType,
bool)),
1598 this , SLOT(
slotSphereSelection(QMouseEvent*,
double,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1600 if (
checkSlot( plugin ,
"slotSphereSelection(QMouseEvent*,double,SelectionInterface::PrimitiveType,bool)" ) )
1601 connect(
this , SIGNAL(
sphereSelection(QMouseEvent*,
double,SelectionInterface::PrimitiveType,
bool)),
1602 plugin , SLOT(
slotSphereSelection(QMouseEvent*,
double,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1604 if (
checkSignal(plugin,
"closestBoundarySelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)") )
1608 if (
checkSlot( plugin ,
"slotClosestBoundarySelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)" ) )
1612 if (
checkSignal(plugin,
"floodFillSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)") )
1613 connect(plugin , SIGNAL(
floodFillSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1614 this , SLOT(
slotFloodFillSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1616 if (
checkSlot( plugin ,
"slotFloodFillSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)" ) )
1617 connect(
this , SIGNAL(
floodFillSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1618 plugin , SLOT(
slotFloodFillSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1620 if (
checkSignal(plugin,
"componentsSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)") )
1621 connect(plugin , SIGNAL(
componentsSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1622 this , SLOT(
slotComponentsSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1624 if (
checkSlot( plugin ,
"slotComponentsSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)" ) )
1625 connect(
this , SIGNAL(
componentsSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1626 plugin , SLOT(
slotComponentsSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1628 if (
checkSignal(plugin,
"customSelection(QMouseEvent*,SelectionInterface::PrimitiveType,QString,bool)") )
1629 connect(plugin , SIGNAL(
customSelection(QMouseEvent*,SelectionInterface::PrimitiveType,QString,
bool)),
1630 this , SLOT(
slotCustomSelection(QMouseEvent*,SelectionInterface::PrimitiveType,QString,
bool)),Qt::DirectConnection);
1632 if (
checkSlot( plugin ,
"slotCustomSelection(QMouseEvent*,SelectionInterface::PrimitiveType,QString,bool)" ) )
1633 connect(
this , SIGNAL(
customSelection(QMouseEvent*,SelectionInterface::PrimitiveType,QString,
bool)),
1634 plugin , SLOT(
slotCustomSelection(QMouseEvent*,SelectionInterface::PrimitiveType,QString,
bool)),Qt::DirectConnection);
1636 if (
checkSignal(plugin,
"getActiveDataTypes(SelectionInterface::TypeList&)") )
1640 if (
checkSlot( plugin ,
"slotGetActiveDataTypes(SelectionInterface::TypeList&)" ) )
1644 if (
checkSignal(plugin,
"getActivePrimitiveType(SelectionInterface::PrimitiveType&)") )
1648 if (
checkSlot( plugin ,
"slotGetActivePrimitiveType(SelectionInterface::PrimitiveType&)" ) )
1652 if (
checkSignal(plugin,
"targetObjectsOnly(bool&)") )
1656 if (
checkSlot( plugin ,
"slotTargetObjectsOnly(bool&)" ) )
1660 if (
checkSignal(plugin,
"loadSelection(const INIFile&)") )
1664 if (
checkSlot( plugin ,
"slotLoadSelection(const INIFile&)" ) )
1668 if (
checkSignal(plugin,
"saveSelection(INIFile&)") )
1672 if (
checkSlot( plugin ,
"slotSaveSelection(INIFile&)" ) )
1676 if (
checkSignal(plugin,
"registerKeyShortcut(int,Qt::KeyboardModifiers)") )
1680 if (
checkSlot( plugin ,
"slotRegisterKeyShortcut(int,Qt::KeyboardModifiers)" ) )
1684 if (
checkSignal(plugin,
"keyShortcutEvent(int,Qt::KeyboardModifiers)") )
1688 if (
checkSlot( plugin ,
"slotKeyShortcutEvent(int,Qt::KeyboardModifiers)" ) )
1694 TextureInterface* texturePlugin = qobject_cast< TextureInterface * >(plugin);
1695 if ( texturePlugin && OpenFlipper::Options::gui() ) {
1696 supported = supported +
"Textures ";
1698 if (
checkSignal(plugin,
"addTexture(QString,QString,uint,int)") )
1699 connect(plugin , SIGNAL(
addTexture( QString , QString , uint ,
int )),
1700 this , SLOT(
slotAddTexture(QString, QString, uint,
int)),Qt::DirectConnection);
1702 if (
checkSignal(plugin,
"addTexture(QString,QImage,uint,int)") )
1703 connect(plugin , SIGNAL(
addTexture( QString , QImage , uint ,
int )),
1704 this , SLOT(
slotAddTexture(QString, QImage, uint,
int)),Qt::DirectConnection);
1706 if (
checkSlot( plugin ,
"slotTextureAdded(QString,QString,uint,int)" ) )
1707 connect(
this , SIGNAL(
addTexture(QString,QString, uint,
int)),
1708 plugin , SLOT(slotTextureAdded(QString,QString, uint,
int)),Qt::DirectConnection);
1710 if (
checkSlot( plugin ,
"slotTextureAdded(QString,QImage,uint,int)" ) )
1711 connect(
this , SIGNAL(
addTexture(QString,QImage, uint,
int)),
1712 plugin , SLOT(slotTextureAdded(QString,QImage, uint,
int)),Qt::DirectConnection);
1714 if (
checkSignal(plugin,
"addTexture(QString,QString,uint)") )
1715 connect(plugin , SIGNAL(
addTexture( QString , QString , uint )),
1716 this , SLOT(
slotAddTexture(QString, QString, uint)),Qt::AutoConnection);
1718 if (
checkSignal(plugin,
"addTexture(QString,QImage,uint)") )
1719 connect(plugin , SIGNAL(
addTexture( QString , QImage , uint )),
1720 this , SLOT(
slotAddTexture(QString, QImage, uint)),Qt::AutoConnection);
1722 if (
checkSlot( plugin ,
"slotTextureAdded(QString,QString,uint)" ) )
1723 connect(
this , SIGNAL(
addTexture(QString,QString, uint)),
1724 plugin , SLOT(slotTextureAdded(QString,QString, uint)),Qt::DirectConnection);
1726 if (
checkSlot( plugin ,
"slotTextureAdded(QString,QImage,uint)" ) )
1727 connect(
this , SIGNAL(
addTexture(QString,QImage, uint)),
1728 plugin , SLOT(slotTextureAdded(QString,QImage, uint)),Qt::DirectConnection);
1730 if (
checkSignal(plugin,
"updateTexture(QString,int)") )
1734 if (
checkSlot( plugin ,
"slotUpdateTexture(QString,int)" ) )
1742 if (
checkSlot( plugin ,
"slotUpdateAllTextures()" ) )
1746 if (
checkSignal(plugin,
"updatedTextures(QString,int)") )
1750 if (
checkSlot( plugin ,
"slotTextureUpdated(QString,int)" ) )
1754 if (
checkSignal(plugin,
"setTextureMode(QString,QString,int)") )
1758 if (
checkSlot( plugin ,
"slotSetTextureMode(QString,QString,int)" ) )
1762 if (
checkSignal(plugin,
"setTextureMode(QString,QString)") )
1766 if (
checkSlot( plugin ,
"slotSetTextureMode(QString,QString)" ) )
1770 if (
checkSignal(plugin,
"switchTexture(QString,int)") )
1774 if (
checkSlot( plugin ,
"slotSwitchTexture(QString,int)" ) )
1778 if (
checkSignal(plugin,
"switchTexture(QString)") )
1782 if (
checkSlot( plugin ,
"slotSwitchTexture(QString)" ) )
1788 if (
checkSignal( plugin ,
"textureChangeImage(QString,QImage&,int)" ) )
1792 if (
checkSlot( plugin ,
"slotTextureChangeImage(QString,QImage&,int)" ) )
1796 if (
checkSignal( plugin ,
"textureChangeImage(QString,QImage&)" ) )
1800 if (
checkSlot( plugin ,
"slotTextureChangeImage(QString,QImage&)" ) )
1804 if (
checkSignal( plugin ,
"addMultiTexture(QString,QString,QString,int,int&)" ) )
1805 connect(plugin , SIGNAL(
addMultiTexture(QString,QString,QString,
int,
int&) ),
1808 if (
checkSignal( plugin ,
"addMultiTexture(QString,QString,QImage,int,int&)" ) )
1809 connect(plugin , SIGNAL(
addMultiTexture(QString,QString,QImage,
int,
int&) ),
1812 if (
checkSlot( plugin ,
"slotMultiTextureAdded( QString,QString,QString,int,int&)" ) )
1813 connect(
this , SIGNAL(
addMultiTexture(QString,QString,QString,
int,
int&) ),
1816 if (
checkSlot( plugin ,
"slotMultiTextureAdded( QString,QString,QImage,int,int&)" ) )
1817 connect(
this , SIGNAL(
addMultiTexture(QString,QString,QImage,
int,
int&) ),
1820 if (
checkSignal( plugin ,
"textureGetImage(QString,QImage&,int)" ) )
1824 if (
checkSlot( plugin ,
"slotTextureGetImage(QString,QImage&,int)" ) )
1828 if (
checkSignal( plugin ,
"textureGetImage(QString,QImage&)" ) )
1832 if (
checkSlot( plugin ,
"slotTextureGetImage(QString,QImage&)" ) )
1836 if (
checkSignal( plugin ,
"textureIndex(QString,int,int&)" ) )
1837 connect(plugin , SIGNAL(
textureIndex(QString,
int,
int&)),
1840 if (
checkSlot( plugin ,
"slotTextureIndex(QString,int,int&)" ) )
1844 if (
checkSignal( plugin ,
"textureIndexPropertyName(int,QString&)" ) )
1848 if (
checkSlot( plugin ,
"slotTextureIndexPropertyName(int,QString&)" ) )
1852 if (
checkSignal( plugin ,
"textureName(int,int,QString&)" ) )
1853 connect(plugin , SIGNAL(
textureName(
int,
int,QString&)),
1856 if (
checkSlot( plugin ,
"slotTextureName(int,int,QString&)" ) )
1857 connect(
this , SIGNAL(
textureName(
int,
int,QString&)),
1858 plugin , SLOT(
slotTextureName(
int,
int,QString&)),Qt::DirectConnection);
1860 if (
checkSignal( plugin ,
"textureFilename(int,QString,QString&)" ) )
1864 if (
checkSlot( plugin ,
"slotTextureFilename(int,QString,QString&)" ) )
1868 if (
checkSignal( plugin ,
"getCurrentTexture(int,QString&)" ) )
1872 if (
checkSlot( plugin ,
"slotGetCurrentTexture(int,QString&)" ) )
1876 if (
checkSignal( plugin ,
"getSubTextures(int,QString,QStringList&)" ) )
1877 connect(plugin , SIGNAL(
getSubTextures(
int,QString,QStringList&)),
1880 if (
checkSlot( plugin ,
"slotGetSubTextures(int,QString,QStringList&)" ) )
1886 BackupInterface* backupPlugin = qobject_cast< BackupInterface * >(plugin);
1887 if ( backupPlugin ) {
1888 supported = supported +
"Backups ";
1891 if (
checkSignal( plugin ,
"createBackup(int,QString,UpdateType)" ) ) {
1896 if (
checkSlot( plugin ,
"slotCreateBackup(int,QString,UpdateType)" ) ) {
1898 plugin , SLOT( slotCreateBackup(
int,QString,
UpdateType) ),Qt::DirectConnection);
1902 if (
checkSignal( plugin ,
"createBackup(IdList,QString,std::vector<UpdateType>)" ) ) {
1904 this , SIGNAL(
createBackup(
IdList,QString,std::vector<UpdateType>)),Qt::DirectConnection );
1907 if (
checkSlot( plugin ,
"slotCreateBackup(IdList,QString,std::vector<UpdateType>)" ) ) {
1909 plugin , SLOT( slotCreateBackup(
IdList,QString,std::vector<UpdateType>) ),Qt::DirectConnection);
1915 connect(plugin , SIGNAL(
undo(
int)) ,
1916 this , SIGNAL(
undo(
int)),Qt::DirectConnection );
1920 if (
checkSlot( plugin ,
"slotUndo(int)" ) ) {
1921 connect(
this , SIGNAL(
undo(
int)),
1922 plugin , SLOT( slotUndo(
int) ),Qt::DirectConnection);
1927 connect(plugin , SIGNAL(
redo(
int)) ,
1928 this , SIGNAL(
redo(
int)),Qt::DirectConnection );
1932 if (
checkSlot( plugin ,
"slotRedo(int)" ) ) {
1933 connect(
this , SIGNAL(
redo(
int)),
1934 plugin , SLOT( slotRedo(
int) ),Qt::DirectConnection);
1939 connect(plugin , SIGNAL(
undo()) ,
1940 this , SIGNAL(
undo()),Qt::DirectConnection );
1944 if (
checkSlot( plugin ,
"slotUndo()" ) ) {
1945 connect(
this , SIGNAL(
undo()),
1946 plugin , SLOT( slotUndo() ),Qt::DirectConnection);
1951 connect(plugin , SIGNAL(
redo()) ,
1952 this , SIGNAL(
redo()),Qt::DirectConnection );
1956 if (
checkSlot( plugin ,
"slotRedo()" ) ) {
1957 connect(
this , SIGNAL(
redo()),
1958 plugin , SLOT( slotRedo() ),Qt::DirectConnection);
1966 if (
checkSignal( plugin ,
"aboutToRestore(int)" ) ) {
1973 connect(plugin , SIGNAL(
restored(
int)) ,
1974 this , SIGNAL(
restored(
int) ),Qt::DirectConnection);
1982 if (
checkSlot( plugin ,
"slotAboutToRestore(int)" ) ) {
1984 plugin , SLOT( slotAboutToRestore(
int) ),Qt::DirectConnection);
1988 if (
checkSlot( plugin ,
"slotRestored(int)" ) ) {
1989 connect(
this , SIGNAL(
restored(
int)) ,
1990 plugin , SLOT( slotRestored(
int) ),Qt::DirectConnection);
1994 if (
checkSignal( plugin ,
"generateBackup(int,QString,UpdateType)" ) ) {
1995 connect(plugin , SIGNAL(generateBackup(
int,QString,
UpdateType)) ,
2001 LoadSaveInterface* LoadSavePlugin = qobject_cast< LoadSaveInterface * >(plugin);
2002 if ( LoadSavePlugin ) {
2003 supported = supported +
"Load/Save ";
2004 if (
checkSignal(plugin,
"load( QString,DataType,int& )" ) )
2005 connect(plugin , SIGNAL(load( QString,
DataType,
int& )) ,
2008 connect(plugin , SIGNAL( save(
int,QString) ) ,
2009 this , SLOT(
saveObject(
int,QString) ), Qt::DirectConnection);
2011 if (
checkSlot( plugin ,
"fileOpened(int)" ) )
2013 plugin , SLOT( fileOpened(
int ) ),Qt::DirectConnection);
2015 if (
checkSignal(plugin,
"addEmptyObject(DataType,int&)" ) )
2019 if (
checkSignal(plugin,
"copyObject(int,int&)" ) )
2020 connect(plugin , SIGNAL( copyObject(
int,
int& )) ,
2024 if (
checkSignal(plugin,
"emptyObjectAdded(int)" ) )
2029 if (
checkSlot(plugin,
"addedEmptyObject(int)" ) )
2031 plugin , SLOT( addedEmptyObject(
int ) ),Qt::DirectConnection);
2035 this , SLOT(
deleteObject(
int ) ),Qt::AutoConnection);
2038 connect(plugin , SIGNAL( deleteAllObjects() ) ,
2041 if (
checkSignal(plugin,
"getAllFileFilters(QStringList&)" ) )
2042 connect(plugin , SIGNAL( getAllFileFilters(QStringList&) ) ,
2045 if (
checkSlot(plugin,
"objectDeleted(int)" ) )
2047 plugin , SLOT(
objectDeleted(
int ) ),Qt::DirectConnection);
2052 ViewInterface* viewPlugin = qobject_cast< ViewInterface * >(plugin);
2053 if ( viewPlugin && OpenFlipper::Options::gui() ) {
2054 supported = supported +
"View ";
2056 if (
checkSignal(plugin,
"getStackWidget(QString,QWidget*&)" ) )
2057 connect(plugin , SIGNAL(getStackWidget( QString , QWidget*&)),
2058 coreWidget_ , SLOT( slotGetStackWidget( QString , QWidget*& ) ) ,Qt::DirectConnection );
2059 if (
checkSignal(plugin,
"addStackWidget(QString,QWidget*)" ) )
2060 connect(plugin , SIGNAL(addStackWidget( QString , QWidget*)),
2061 coreWidget_ , SLOT( slotAddStackWidget( QString , QWidget* ) ) ,Qt::DirectConnection );
2062 if (
checkSignal(plugin,
"updateStackWidget(QString,QWidget*)" ) )
2063 connect(plugin , SIGNAL(updateStackWidget( QString , QWidget*)),
2064 coreWidget_ , SLOT( slotUpdateStackWidget( QString , QWidget* ) ) ,Qt::DirectConnection );
2068 ProcessInterface* processPlugin = qobject_cast< ProcessInterface * >(plugin);
2069 if ( processPlugin ) {
2070 supported = supported +
"Process ";
2072 if (
checkSignal(plugin,
"startJob(QString,QString,int,int,bool)" ) )
2073 connect(plugin , SIGNAL(startJob(QString, QString,
int,
int,
bool)),
2074 this , SLOT(
slotStartJob(QString, QString,
int,
int,
bool) ), Qt::DirectConnection );
2076 errors += tr(
"Error: Process Interface defined but no startJob signal found!") +
"\n";
2079 if (
checkSignal(plugin,
"setJobState(QString,int)" ) )
2080 connect(plugin , SIGNAL(setJobState(QString,
int)),
2083 errors += tr(
"Error: Process Interface defined but no setJobState signal found!") +
"\n";
2086 if (
checkSignal(plugin,
"setJobName(QString,QString)" ) )
2087 connect(plugin , SIGNAL(setJobName(QString, QString)),
2088 this , SLOT(
slotSetJobName(QString, QString) ), Qt::QueuedConnection );
2090 errors += tr(
"Error: Process Interface defined but no setJobName signal found!") +
"\n";
2093 if (
checkSignal(plugin,
"setJobDescription(QString,QString)" ) )
2094 connect(plugin , SIGNAL(setJobDescription(QString, QString)),
2097 errors += tr(
"Error: Process Interface defined but no setJobDescription signal found!") +
"\n";
2101 connect(plugin , SIGNAL(cancelJob(QString)),
2102 this , SLOT(
slotCancelJob(QString) ), Qt::QueuedConnection );
2105 connect(plugin , SIGNAL(finishJob(QString)),
2106 this , SLOT(
slotFinishJob(QString) ), Qt::QueuedConnection );
2108 errors += tr(
"Error: Process Interface defined but no finishJob signal found!") +
"\n";
2111 if (
checkSlot(plugin,
"canceledJob(QString)" ) )
2113 plugin , SLOT( canceledJob(QString) ),Qt::QueuedConnection);
2115 errors += tr(
"Error: Process Interface defined but no cancel canceledJob slot found!") +
"\n";
2120 RPCInterface* rpcPlugin = qobject_cast< RPCInterface * >(plugin);
2122 supported = supported +
"RPC ";
2124 if (
checkSignal(plugin,
"pluginExists(QString,bool&)" ) )
2125 connect(plugin , SIGNAL( pluginExists(QString,
bool&) ),
2127 if (
checkSignal(plugin,
"functionExists(QString,QString,bool&)" ) )
2128 connect(plugin , SIGNAL(functionExists(QString,QString,
bool&)),
2130 if (
checkSignal(plugin,
"call(QString,QString,bool&)" ) )
2131 connect(plugin , SIGNAL(call(QString,QString,
bool&)),
2132 this , SLOT(
slotCall(QString,QString,
bool&)) ,Qt::DirectConnection );
2134 connect(plugin , SIGNAL(call(QString,
bool&)),
2135 this , SLOT(
slotCall(QString,
bool&)) ,Qt::DirectConnection );
2136 if (
checkSignal(plugin,
"getValue(QString,QVariant&)" ) )
2137 connect(plugin , SIGNAL(getValue(QString,QVariant&)),
2138 this , SLOT(
slotGetValue(QString,QVariant&)) ,Qt::DirectConnection );
2143 if ( interconnectionPlugin ) {
2144 supported = supported +
"Plugin Interconnection ";
2146 if (
checkSignal(plugin,
"crossPluginConnect(QString,const char*,QString,const char*)" ) ) {
2147 connect(plugin , SIGNAL( crossPluginConnect(QString,
const char*,QString,
const char*) ),
2151 if (
checkSignal(plugin,
"crossPluginConnectQueued(QString,const char*,QString,const char*)" ) ) {
2152 connect(plugin , SIGNAL( crossPluginConnectQueued(QString,
const char*,QString,
const char*) ),
2158 RenderInterface* renderPlugin = qobject_cast< RenderInterface * >(plugin);
2159 if ( renderPlugin ) {
2160 supported = supported +
"Rendering ";
2162 if (
checkSlot( plugin ,
"rendererName()" ) ) {
2163 QString rendererNameString =
"";
2166 QMetaObject::invokeMethod(plugin,
"rendererName", Qt::DirectConnection, Q_RETURN_ARG(QString,rendererNameString) ) ;
2169 QString openGLCheck =
"";
2170 QMetaObject::invokeMethod(plugin,
"checkOpenGL", Qt::DirectConnection, Q_RETURN_ARG(QString,openGLCheck) ) ;
2172 if ( openGLCheck !=
"" ) {
2173 errors += tr(
"Error: Insufficient OpenGL capabilities in Renderer Plugin ") + rendererNameString +
" !" +
"\n";
2174 errors += openGLCheck +
"\n";
2181 PluginStorage::pluginsFailed().push_back(info);
2188 if ( ! renderManager().rendererExists(rendererNameString) ) {
2189 rendererInfo = renderManager().
newRenderer(rendererNameString);
2191 errors += tr(
"Error: Renderer Plugin %1 already exists") +
"\n";
2195 if ( rendererInfo != 0) {
2196 rendererInfo->
plugin = renderPlugin;
2197 rendererInfo->
name = basePlugin->
name();
2206 rendererInfo->
modes = supportedModes;
2208 if (
checkSlot( plugin ,
"optionsAction()" ) ) {
2218 errors += tr(
"Error: Renderer Plugin without rendererName Function?!") +
"\n";
2225 if ( postProcessorPlugin ) {
2226 supported = supported +
"PostProcessor ";
2228 if (
checkSlot( plugin ,
"postProcessorName()" ) ) {
2229 QString postProcessorNameString =
"";
2232 QMetaObject::invokeMethod(plugin,
"postProcessorName", Qt::DirectConnection, Q_RETURN_ARG(QString,postProcessorNameString) ) ;
2235 QString openGLCheck =
"";
2236 QMetaObject::invokeMethod(plugin,
"checkOpenGL", Qt::DirectConnection, Q_RETURN_ARG(QString,openGLCheck) ) ;
2238 if ( openGLCheck !=
"" ) {
2239 errors += tr(
"Error: Insufficient OpenGL capabilities in post processor Plugin ") + postProcessorNameString +
" !" +
"\n";
2240 errors += openGLCheck +
"\n";
2245 PluginStorage::pluginsFailed().push_back(info);
2252 if ( ! postProcessorManager().postProcessorExists(postProcessorNameString) ) {
2253 postProcessorInfo = postProcessorManager().
newPostProcessor(postProcessorNameString);
2255 errors += tr(
"Error: PostProcessor Plugin %1 already exists").arg(postProcessorNameString) +
"\n";
2259 if ( postProcessorInfo != 0) {
2260 postProcessorInfo->
plugin = postProcessorPlugin;
2261 postProcessorInfo->
name = basePlugin->
name();
2265 if (
checkSlot( plugin ,
"optionsAction()" ) ) {
2275 errors += tr(
"Error: PostProcessor Plugin without postProcessorName Function?!") +
"\n";
2281 if ( aboutInfoPlugin && OpenFlipper::Options::gui() ) {
2282 supported = supported +
"AboutInfo ";
2284 if (
checkSignal(plugin,
"addAboutInfo(QString,QString)") )
2285 connect(plugin , SIGNAL(addAboutInfo(QString,QString)),
2286 coreWidget_ , SLOT(addAboutInfo(QString,QString)),Qt::DirectConnection);
2291#if QT_VERSION_MAJOR < 6
2293 QScriptValue scriptInstance =
scriptEngine_.newQObject(plugin,
2294 QScriptEngine::QtOwnership,
2295 QScriptEngine::ExcludeChildObjects |
2296 QScriptEngine::ExcludeSuperClassMethods |
2297 QScriptEngine::ExcludeSuperClassProperties
2301 QString scriptingName = info.
rpcName;
2303 scriptEngine_.globalObject().setProperty(scriptingName, scriptInstance);
2305 QScriptValueIterator it(scriptInstance);
2306 while (it.hasNext()) {
2310 if (
checkSignal( plugin, it.name().toLatin1() ) )
2324 ScriptInterface* scriptPlugin = qobject_cast< ScriptInterface * >(plugin);
2325 if ( scriptPlugin ) {
2326 supported = supported +
"Scripting ";
2328 #if QT_VERSION_MAJOR < 6
2336 if (
checkSignal(plugin,
"scriptInfo(QString)" ) ) {
2339 connect(plugin , SIGNAL(
scriptInfo(QString) ),
2340 newScript , SLOT(
slotScriptInfo(QString) ) ,Qt::DirectConnection );
2343 connect(newScript , SIGNAL(
scriptInfo(QString,QString) ),
2349 if (
checkSlot(plugin,
"slotScriptInfo(QString,QString)") ) {
2350 connect(
this , SIGNAL(
scriptInfo(QString,QString)),
2355 if (
checkSignal(plugin,
"getDescription(QString,QString&,QStringList&,QStringList&)") )
2356 connect(plugin , SIGNAL( getDescription(QString,QString&,QStringList&,QStringList&) ),
2361 if (
checkSignal(plugin,
"executeScript(QString)") )
2366 if (
checkSlot(plugin,
"slotExecuteScript(QString)") )
2371 if (
checkSlot(plugin,
"slotExecuteFileScript(QString)") )
2378 if (
checkSignal(plugin,
"getScriptingEngine(QScriptEngine*&)") )
2379 connect(plugin , SIGNAL(getScriptingEngine(QScriptEngine*&)),
2383 if (
checkSignal(plugin,
"getAvailableFunctions(QStringList&)") )
2384 connect(plugin , SIGNAL(getAvailableFunctions(QStringList&)),
2396 if (
checkSignal(plugin,
"executeFileScript(QString)") )
2401 if (
checkSignal(plugin,
"showScriptInEditor(QString)") )
2402 connect(plugin , SIGNAL(showScriptInEditor(QString)),
2409 for (
int i=0;i<plugin->metaObject()->methodCount();i++) {
2410 QMetaMethod method = plugin->metaObject()->method(i);
2412 if (method.access() == QMetaMethod::Public) {
2413 const std::string name = method.name().toStdString();
2426 info.status = PluginInfo::LOADED;
2430 if (alreadyLoadedAt != -1) {
2431 plugins()[alreadyLoadedAt] = info;
2441 if (
checkSlot(plugin,
"initializePlugin()") )
2442 QMetaObject::invokeMethod(plugin,
"initializePlugin", Qt::DirectConnection);
2447 FileInterface* filePlugin = qobject_cast< FileInterface * >(plugin);
2449 supported = supported +
"File ";
2451 QStringList loadFilters = filePlugin->
getLoadFilters().split(
";;");
2452 QStringList saveFilters = filePlugin->
getSaveFilters().split(
";;");
2455 for (
int i = 0; i < loadFilters.size(); ++i) {
2457 ft.name = basePlugin->
name();
2459 ft.loadFilters = loadFilters[i];
2460 ft.saveFilters =
"";
2461 ft.plugin = filePlugin;
2463 ft.saveMultipleObjects =
checkSlot(plugin,
"saveObjects(IdList,QString)");
2465 supportedTypes().push_back(ft);
2467 for (
int i = 0; i < saveFilters.size(); ++i) {
2469 ft.name = basePlugin->
name();
2471 ft.loadFilters =
"";
2472 ft.saveFilters = saveFilters[i];
2473 ft.plugin = filePlugin;
2475 ft.saveMultipleObjects =
checkSlot(plugin,
"saveObjects(IdList,QString)");
2477 supportedTypes().push_back(ft);
2482 connect(plugin , SIGNAL(
openedFile(
int ) ) ,
2487 TypeInterface* typePlugin = qobject_cast< TypeInterface * >(plugin);
2489 supported = supported +
"Type ";
2492 typePlugin->registerType();
2496 dt.name = basePlugin->
name();
2498 dt.plugin = typePlugin;
2504 if ( !LoadSavePlugin &&
checkSignal(plugin,
"emptyObjectAdded(int)" ) )
2509 MetadataInterface* metadataPlugin = qobject_cast< MetadataInterface * >(plugin);
2510 if ( metadataPlugin ) {
2511 if (
checkSlot(plugin,
"slotGenericMetadataDeserialized(QString,QString)")) {
2512 connect(
this, SIGNAL(genericMetadataDeserialized(QString, QString)),
2513 plugin, SLOT(slotGenericMetadataDeserialized(QString, QString)));
2515 if (
checkSlot(plugin,
"slotObjectMetadataDeserialized(QString,QString)")) {
2516 connect(
this, SIGNAL(objectMetadataDeserialized(QString, QString)),
2517 plugin, SLOT(slotObjectMetadataDeserialized(QString, QString)));
2519 if (
checkSlot(plugin,
"slotObjectMetadataDeserializedJson(QString,QJsonDocument)")) {
2520 connect(
this, SIGNAL(objectMetadataDeserializedJson(QString, QJsonDocument)),
2521 plugin, SLOT(slotObjectMetadataDeserializedJson(QString, QJsonDocument)));
2523 if (
checkSignal(plugin,
"metadataDeserialized(QVector<QPair<QString,QString> >)")) {
2524 connect(plugin, SIGNAL(metadataDeserialized(QVector<QPair<QString, QString> >)),
2525 this, SLOT(slotMetadataDeserialized(QVector<QPair<QString, QString> >)));
DLLEXPORT void registerTypes()
std::vector< int > IdList
Standard Type for id Lists used for scripting.
DLLEXPORT OpenFlipperQSettings & OpenFlipperSettings()
QSettings object containing all program settings of OpenFlipper.
Logtype
Log types for Message Window.
Interface class for backup handling.
Interface class from which all plugins have to be created.
virtual QString version()
Return a version string for your plugin.
virtual QString name()=0
Return a name for the plugin.
virtual QString description()=0
Return a description of what the plugin is doing.
void textureIndex(QString _textureName, int _id, int &_index)
get the texture index
void setSlotDescription(QString _slotName, QString _slotDescription, QStringList _parameters, QStringList _descriptions)
Core scripting engine.
void slotCrossPluginConnectQueued(const QString &_pluginName1, const char *_signal, const QString &_pluginName2, const char *_slot)
Called to create inter plugin connections.
void slotTextureIndexPropertyName(int _id, QString &_propertyName)
Called by plugins if texture index property name should be fetched.
void slotGetAllFilters(QStringList &_list)
Called when a plugin requests a list of file-filters.
void slotGetAllAvailableFunctions(QStringList &_functions)
Core scripting engine.
void executeFileScript(QString _filename)
Core scripting engine.
void undo()
Signal send to plugins when whole scene is cleared.
void updateTexture(QString, int)
Tell the plugins to update the given texture.
void keyShortcutEvent(int _key, Qt::KeyboardModifiers _modifiers=Qt::NoModifier)
SelectionInterface: This signal is emitted when a key shortcut has been pressed.
void updatedTextures(QString, int)
This Signal is send to the plugins if a texture has been updated.
void addTexture(QString, QString, uint, int)
The texture with the given name and filename has been added.
void saveSelection(INIFile &_file)
SelectionInterface: This signal is emitted when a selection should be written into a file.
void targetObjectsOnly(bool &_targetsOnly)
SelectionInterface: This signal is emitted if the current target restriction state is requested.
void pluginSceneDrawn()
This signal is emitted after the scene has been drawn.
void slotAddTexture(QString _textureName, QString _filename, uint _dimension, int _id)
Called by a plugin if it creates a texture.
void applyOptions()
after ini-files have been loaded and core is up or if options have been changed -> apply Options
void PluginMouseEventLight(QMouseEvent *)
Emitted when an light event occurs.
void slotMouseEvent(QMouseEvent *_event)
Gets called by examiner widget when mouse is moved in picking mode.
void slotAddSelectionOperations(const QString &_handleName, const QStringList &_operationsList, const QString &_category, SelectionInterface::PrimitiveType _type)
SelectionInterface: Called in order to add non-interactive operations for a specific primitive type.
void slotObjectPropertiesChanged(int _id)
Called by plugins if object properties like names have changed.
void slotTextureName(int _id, int _textureIndex, QString &_textureName)
Called by plugins if texture name should be fetched.
void showToggleSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes)
SelectionInterface: This signal is emitted when standard toggle selection is required.
void slotSetJobName(QString _jobId, QString _name)
A job's widget caption has been updated by a plugin.
void switchTexture(QString, int)
Switch Texture Plugins to a given Mode.
void componentsSelection(QMouseEvent *_event, SelectionInterface::PrimitiveType _currentType, bool _deselect)
SelectionInterface: This signal is emitted when standard connected components selection has been perf...
void slotCall(const QString &_pluginName, const QString &_functionName, bool &_success)
void allCleared()
Signal send to plugins when whole scene is cleared.
void slotFunctionExists(const QString &_pluginName, const QString &_functionName, bool &_exists)
Check if a function exists.
void slotShowFloodFillSelectionMode(const QString &_handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes)
SelectionInterface: Provide flood fill selection operation for specific selection mode.
void addSelectionEnvironment(QString _modeName, QString _description, QString _icon, QString &_handleName)
SelectionInterface: This signal is emitted when a new toolbutton should be added.
void PluginMouseEvent(QMouseEvent *)
When this Signal is emitted when a Mouse Event occures.
void slotTextureUpdated(const QString &_textureName, int _identifier)
A Texture has been updated.
void slotShowLassoSelectionMode(const QString &_handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes)
SelectionInterface: Provide lasso selection operation for specific selection mode.
void iniLoadOptionsLast(INIFile &_ini)
This signal is used to tell the plugins to load their new status after objects are loaded.
void slotShowComponentsSelectionMode(const QString &_handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes)
SelectionInterface: Provide connected components selection operation for specific selection mode.
void slotKeyShortcutEvent(int _key, Qt::KeyboardModifiers _modifiers)
SelectionInterface: Called when a key event occurred.
void addSelectionOperations(QString _handleName, QStringList _operationsList, QString _category, SelectionInterface::PrimitiveType _type)
SelectionInterface: This signal is used to add non-interactive operations for a specific primitive ty...
void showVolumeLassoSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes)
SelectionInterface: This signal is emitted when standard volume lasso selection is required.
void emptyObjectAdded(int _id)
Tell the plugins that an empty object has been added.
void slotShowClosestBoundarySelectionMode(const QString &_handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes)
SelectionInterface: Provide closest boundary selection operation for specific selection mode.
void selectionOperation(QString _operation)
SelectionInterface: This signal is emitted when a non-interactive operation has been performed.
void printPluginLoadLog(const QString &errors, const QString &warnings)
Print all info collected about plugin during loading.
void iniSaveOptions(INIFile &_ini)
This signal is used to tell the plugins to save their current status.
void updateAllTextures()
Update all textures in the plugins.
void slotAddPrimitiveType(const QString &_handleName, const QString &_name, const QString &_icon, SelectionInterface::PrimitiveType &_typeHandle)
SelectionInterface: Called when a new, non-standard primitive type should be handled.
void textureName(int _id, int _textureIndex, QString &_textureName)
get the texture name
void slotExecuteScript(const QString &_script)
void slotGetDescription(QString _function, QString &_fnDescription, QStringList &_parameters, QStringList &_descriptions)
get available descriptions for a given public slot
void addSelectionParameters(QString _handleName, QWidget *_widget, QString _category, SelectionInterface::PrimitiveType _type)
SelectionInterface: This signal is used to add interactive selection parameters for a specific primit...
void loadPlugins()
Load all plugins from default plugin directory and from INI-File.
void slotGenerateBackup(int _id, QString _name, UpdateType _type)
Slot for generating type specific backups.
std::vector< dataTypes > supportedDataTypes_
Type-Plugins.
void openedFile(int _id)
Tell the plugins that a file has been opened ( -> Database)
void slotShowSurfaceLassoSelectionMode(const QString &_handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes)
SelectionInterface: Provide surface lasso selection operation for specific selection mode.
void scriptInfo(QString _pluginName, QString _functionName)
Core scripting engine.
void showComponentsSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes)
SelectionInterface: This signal is emitted when standard connected components selection is required.
void getActivePrimitiveType(SelectionInterface::PrimitiveType &_type)
SelectionInterface: This signal is emitted when the active (selected) primitive type should be fetche...
void slotMultiTextureAdded(QString _textureGroup, QString _name, QString _filename, int _id, int &_textureId)
Called by a plugin if it creates a multitexture.
QStringList scriptingFunctions_
List of all registered scripting functions.
void slotSetTextureMode(const QString &_textureName, const QString &_mode, int _id)
A texture mode should be changed.
void customSelection(QMouseEvent *_event, SelectionInterface::PrimitiveType _currentType, QString _customIdentifier, bool _deselect)
SelectionInterface: This signal is emitted when a custom selection operation has been performed.
void slotLoadPlugin()
Load Plugins from menu.
std::vector< ScriptingWrapper * > scriptingWrappers_
Wrappers for plugin scripting.
void slotLog(Logtype _type, QString _message)
Console logger.
void slotTextureIndex(const QString &_textureName, int _id, int &_index)
Called by plugins if texture index should be fetched.
void slotComponentsSelection(QMouseEvent *_event, SelectionInterface::PrimitiveType _currentType, bool _deselect)
SelectionInterface: Called when connected components selection operation has been performed.
void pluginsInitialized()
Called after all plugins are loaded.
void saveOnExit(INIFile &_ini)
This signal is emitted before the core deletes its data and exits.
void showSurfaceLassoSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes)
SelectionInterface: This signal is emitted when standard surface lasso selection is required.
void visibilityChanged(int _id)
Tell plugins that the visibility of an object has changed.
void slotCopyObject(int _oldId, int &_newId)
Slot copying an object.
void slotFloodFillSelection(QMouseEvent *_event, SelectionInterface::PrimitiveType _currentType, bool _deselect)
SelectionInterface: Called when flood fill selection operation has been performed.
void redo()
Signal send to plugins when whole scene is cleared.
void executeScript(QString _script)
Core scripting engine.
void addToolbox(const QString &_name, QWidget *_widget)
Add a Toolbox from a plugin or from scripting.
void slotLoadSelection(const INIFile &_file)
SelectionInterface: Called when a selection should be loaded from a file.
void slotEmptyObjectAdded(int _id)
Called when an empty object has been Added.
void slotRegisterKeyShortcut(int _key, Qt::KeyboardModifiers _modifiers)
SelectionInterface: Called when a key shortcut is to be registered.
void addCustomSelectionMode(QString _handleName, QString _modeName, QString _description, QString _icon, SelectionInterface::PrimitiveType _associatedTypes, QString &_customIdentifier)
SelectionInterface: This signal is emitted when a custom selection mode is added.
void slotFinishJob(QString _jobId)
A job state has been finished by a plugin.
void slotUpdateAllTextures()
Update all textures in the plugins.
void slotGetActiveDataTypes(SelectionInterface::TypeList &_types)
SelectionInterface: Called when active (selected) data types should be fetched.
void slotLogToFile(Logtype _type, QString _message)
log to file
void slotToggleSelection(QMouseEvent *_event, SelectionInterface::PrimitiveType _currentType, bool _deselect)
SelectionInterface: Called when toggle selection operation has been performed.
void slotSelectionOperation(const QString &_operation)
SelectionInterface: Called when a non-interactive operation has been performed.
void slotShowScriptInEditor(const QString &_filename)
bool checkSlot(QObject *_plugin, const char *_slotSignature)
Check if a plugin has a slot.
void slotObjectSelectionChanged(int _id)
Called by Plugins if they changed the active object.
void pluginViewChanged()
This signal is emitted if one of the viewers updated its view.
void createBackup(int _objectid, QString _name, UpdateType _type=UPDATE_ALL)
Tell backup-plugin to create a backup.
void objectSelectionChanged(int)
This signal is emitted if the object has been changed (source/target)
void iniLoadOptions(INIFile &_ini)
This signal is used to tell the plugins to load their new status.
void loadPlugin(const QString &_filename, const bool _silent, QString &_licenseErrors, QObject *_plugin=0)
Function for loading Plugins.
void slotTextureGetImage(const QString &_textureName, QImage &_image)
Called by plugins if texture image should be fetched.
void volumeLassoSelection(QMouseEvent *_event, SelectionInterface::PrimitiveType _currentType, bool _deselect)
SelectionInterface: This signal is emitted when standard volume lasso selection has been performed.
void getSubTextures(int _id, QString _multiTextureName, QStringList &_subTextures)
get a multi-texture's sub textures
void slotDeleteAllObjects()
Called when a plugin wants to delete all objects.
void blockScenegraphUpdates(bool _block)
Called when a plugin wants to lock or unlock scenegraph updates.
void slotBlockPlugin(const QString &_rpcName)
Function for Blocking Plugins. Blocked plugins will unloaded and not loaded wthin the next starts.
void showSphereSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes)
SelectionInterface: This signal is emitted when standard sphere selection is required.
void slotSetJobDescription(QString _jobId, QString _text)
A job's widget's status text has been updated by a plugin.
void slotSetJobState(QString _jobId, int _value)
A job state has been updated by a plugin.
void slotShowToggleSelectionMode(const QString &_handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes)
SelectionInterface: Provide toggle selection operation for specific selection mode.
void iniSave(INIFile &_ini, int _id)
This signal is used to tell the plugins to save the data of _id to the given file.
void sphereSelection(QMouseEvent *_event, double _radius, SelectionInterface::PrimitiveType _currentType, bool _deselect)
SelectionInterface: This signal is emitted when standard sphere selection has been performed.
void objectDeleted(int)
Called after an object has been deleted.
void iniLoad(INIFile &, int)
If an ini File is opened, this signal is send to Plugins capable of handling ini files.
QSplashScreen * splash_
SplashScreen, only used in gui mode.
void objectPropertiesChanged(int _id)
Tell plugins that object properties such as object names have been changed.
std::vector< PluginInfo > & plugins()
Index of Plugins toolbox widget.
void slotCrossPluginConnect(const QString &_pluginName1, const char *_signal, const QString &_pluginName2, const char *_slot)
Called to create inter plugin connections.
void slotAddPickMode(const std::string &_mode)
Add a new picking mode to the examiner_widget_.
void aboutToRestore(int _objectId)
Backup Plugin tells other Plugins that a restore will happen.
void slotSetSlotDescription(QString _slotName, QString _slotDescription, QStringList _parameters, QStringList _descriptions)
set a description for one of the plugin's public slots
void slotVolumeLassoSelection(QMouseEvent *_event, SelectionInterface::PrimitiveType _currentType, bool _deselect)
SelectionInterface: Called when volume lasso selection operation has been performed.
void getCurrentTexture(int _id, QString &_textureName)
get current texture
QString splashMessage_
Last Splash message;.
void closestBoundarySelection(QMouseEvent *_event, SelectionInterface::PrimitiveType _currentType, bool _deselect)
SelectionInterface: This signal is emitted when standard closest boundary selection has been performe...
void loadSelection(const INIFile &_file)
SelectionInterface: This signal is emitted when a selection should be loaded from a file.
void slotLoad(QString _filename, DataType _type, int &_id)
A plugin wants to load a given file.
void slotStartJob(QString _jobId, QString _description, int _min, int _max, bool _blocking)
A job has been started by a plugin.
void slotSwitchTexture(const QString &_textureName, int _id)
Tells Plugins to switch to the given Texture.
void addPrimitiveType(QString _handleName, QString _name, QString _icon, SelectionInterface::PrimitiveType &_typeHandle)
SelectionInterface: This signal is emitted when a selection plugin should handle a new primitive type...
void registerType(QString _handleName, DataType _type)
SelectionInterface: This signal is emitted when a data type should be registered for a selection mode...
QScriptEngine scriptEngine_
Core scripting engine.
void slotGetCurrentRenderer(unsigned int _viewer, QString &_rendererName)
called to get the currently active renderer renderer for a specific viewer
void slotSphereSelection(QMouseEvent *_event, double _radius, SelectionInterface::PrimitiveType _currentType, bool _deselect)
SelectionInterface: Called when sphere selection operation has been performed.
void surfaceLassoSelection(QMouseEvent *_event, SelectionInterface::PrimitiveType _currentType, bool _deselect)
SelectionInterface: This signal is emitted when standard surface lasso selection has been performed.
void slotLassoSelection(QMouseEvent *_event, SelectionInterface::PrimitiveType _currentType, bool _deselect)
SelectionInterface: Called when lasso selection operation has been performed.
void toggleSelection(QMouseEvent *_event, SelectionInterface::PrimitiveType _currentType, bool _deselect)
SelectionInterface: This signal is emitted when standard toggle selection has been performed.
void deleteObject(int _id)
Called to delete an object.
void slotCancelJob(QString _jobId)
A job state has been canceled by a plugin.
void showFloodFillSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes)
SelectionInterface: This signal is emitted when standard flood fill selection is required.
void slotGetValue(const QString &_expression, QVariant &_result)
void slotScriptInfo(const QString &_pluginName, const QString &_functionName)
Core scripting engine.
void slotPluginExists(const QString &_pluginName, bool &_exists)
Check if a plugin exists.
void showLassoSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes)
SelectionInterface: This signal is emitted when standard lasso selection is required.
std::vector< PluginLogger * > loggers_
Logger interfaces between plugins and core logger.
void slotUpdateTexture(const QString &_name, int _identifier)
Tell the plugins to update the given texture.
void slotAddEmptyObject(DataType _type, int &_id)
Slot adding empty object of a given type.
void slotObjectUpdated(int _identifier, const UpdateType &_type=UPDATE_ALL)
Called by the plugins if they changed something in the object list (deleted, added,...
void floodFillSelection(QMouseEvent *_event, SelectionInterface::PrimitiveType _currentType, bool _deselect)
SelectionInterface: This signal is emitted when standard flood fill selection has been performed.
void addMultiTexture(QString _textureGroup, QString _name, QString _filename, int _id, int &_textureId)
The texture with the given name and filename has been added.
void slotExecuteFileScript(const QString &_filename)
void slotVisibilityChanged(int _id)
Called when a plugin changes the visibility of an object.
void updateView()
Called when a plugin requests an update in the viewer.
void slotShowPlugins()
Show Plugins Dialog.
void log(Logtype _type, QString _message)
Logg with OUT,WARN or ERR as type.
void textureIndexPropertyName(int _id, QString &_propertyName)
get the texture index property name
void PluginWheelEvent(QWheelEvent *, const std::string &)
When this Signal is emitted when a Wheel Event occures.
void slotAddSelectionParameters(const QString &_handleName, QWidget *_widget, const QString &_category, SelectionInterface::PrimitiveType _type)
SelectionInterface: Called in order to add interactive parameters for a specific primitive type.
void slotSaveSelection(INIFile &_file)
SelectionInterface: Called when a selection should be stored into a file.
void getActiveDataTypes(SelectionInterface::TypeList &_types)
SelectionInterface: This signal is emitted when the active (selected) data types should be fetched.
void slotSurfaceLassoSelection(QMouseEvent *_event, SelectionInterface::PrimitiveType _currentType, bool _deselect)
SelectionInterface: Called when surface lasso selection operation has been performed.
void setViewMode(QString _viewMode)
Set the active ViewMode.
void slotTextureFilename(int _id, const QString &_textureName, QString &_textureFilename)
Called by plugins if texture name should be fetched.
void executePythonScript(const QString &_script)
execute the given string as a python script
void slotAddHiddenPickMode(const std::string &_mode)
Add a new and invisible picking mode to the examiner_widget_.
void slotFileOpened(int _id)
Called when a file has been opened.
void slotAddSelectionEnvironment(const QString &_modeName, const QString &_description, const QString &_icon, QString &_handleName)
SelectionInterface: Called when a new selection type button should be added to the toolbar.
void textureFilename(int _id, QString _textureName, QString &_textureFilename)
get the texture's filename
void textureChangeImage(QString _textureName, QImage &_image)
Change the image for a given texture.
void slotSetRenderer(unsigned int _viewer, QString _rendererName)
called to switch the renderer for a specific viewer
void slotMouseEventLight(QMouseEvent *_event)
Handle Mouse events when in Light mode.
void slotUnBlockPlugin(const QString &_rpcName)
Function for UnBlocking Plugins. Plugins will not loaded automatically.
void textureGetImage(QString _textureName, QImage &_image)
fetch texture image
void restored(int _objectId)
Backup Plugin tells other Plugins that a restore has happened.
void slotGetCurrentTexture(int _id, QString &_textureName)
Called by plugins if current texture should be retrieved.
void showClosestBoundarySelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes)
SelectionInterface: This signal is emitted when standard closest boundary selection is required.
void slotGetActivePrimitiveType(SelectionInterface::PrimitiveType &_type)
SelectionInterface: Called when active primitive type should be fetched.
void slotCustomSelection(QMouseEvent *_event, SelectionInterface::PrimitiveType _currentType, const QString &_customIdentifier, bool _deselect)
SelectionInterface: Called when custom selection operation has been performed.
void slotGetScriptingEngine(QScriptEngine *&_engine)
Core scripting engine.
void slotAddCustomSelectionMode(const QString &_handleName, const QString &_modeName, const QString &_description, const QString &_icon, SelectionInterface::PrimitiveType _associatedTypes, QString &_customIdentifier)
SelectionInterface: Add new selection mode for specified type.
void slotTextureChangeImage(const QString &_textureName, QImage &_image)
Called by plugins if texture image should be changed.
void registerKeyShortcut(int _key, Qt::KeyboardModifiers _modifiers)
SelectionInterface: This signal is emitted when a type selection plugin wants to listen to a key even...
void slotClosestBoundarySelection(QMouseEvent *_event, SelectionInterface::PrimitiveType _currentType, bool _deselect)
SelectionInterface: Called when closest boundary selection operation has been performed.
void jobCanceled(QString _jobId)
A job has been started by a plugin.
void slotGetSubTextures(int _id, const QString &_multiTextureName, QStringList &_subTextures)
Called by plugins if a multi-texture's sub textures should be fetched.
void slotShowVolumeLassoSelectionMode(const QString &_handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes)
SelectionInterface: Provide volume lasso selection operation for specific selection mode.
void slotRegisterType(const QString &_handleName, DataType _type)
SelectionInterface: Called when a data type is added for a specific selection type.
bool saveObject(int _id, QString _filename)
Save an object.
void signalObjectUpdated(int)
When this Signal is emitted all Plugins are informed that the object list changed.
void externalLog(Logtype _type, QString _message)
This signal is emitted to send log data to a plugin.
bool checkSignal(QObject *_plugin, const char *_signalSignature)
Check if a plugin has a signal.
void lassoSelection(QMouseEvent *_event, SelectionInterface::PrimitiveType _currentType, bool _deselect)
SelectionInterface: This signal is emitted when standard lasso selection has been performed.
void slotTargetObjectsOnly(bool &_targetsOnly)
SelectionInterface: Called when target restriction state should be fetched.
int addEmptyObject(DataType _type)
void setTextureMode(QString _textureName, QString _mode, int _id)
A texture mode should be changed.
CoreWidget * coreWidget_
The main applications widget ( only created in gui mode )
void slotShowSphereSelectionMode(const QString &_handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes)
SelectionInterface: Provide sphere selection operation for specific selection mode.
Interface class for file handling.
virtual QString getLoadFilters()=0
virtual QString getSaveFilters()=0
virtual DataType supportedType()=0
Return your supported object type( e.g. DATA_TRIANGLE_MESH )
Class for the handling of simple configuration files.
Interface class for Plugins which have to store information in ini files.
Keyboard Event Interface.
Interface for all plugins which want to Load or Save files and create Objects.
Interface for all Plugins which do logging to the logging window of the framework.
Interface class for receiving mouse events.
QVariant value(const QString &key, const QVariant &defaultValue=QVariant()) const
void setValue(const QString &key, const QVariant &value)
Wrapper function which makes it possible to enable Debugging output with -DOPENFLIPPER_SETTINGS_DEBUG...
Options Dialog interface.
virtual bool initializeOptionsWidget(QWidget *&_widget)=0
Initialize the Options Widget.
Allow access to picking functions.
Allow to connect slots between plugins.
QString rpcName
Clean rpc name of the plugin.
QString errors
Store errors encountered during plugin loading.
QStringList rpcFunctions
List of exported rpc slots.
QString name
Name of the plugin ( requested from the plugin on load)
QString warnings
Store warnings encountered during plugin loading.
QString version
Version of the plugin.
QString description
Description of the plugin ( requested from the plugin on load)
QObject * plugin
Pointer to the loaded plugin (Already casted when loading it)
QString path
Path to the plugin ( set on load )
QWidget * optionsWidget
Pointer to plugins options widget (if available)
bool buildIn
Indicates, if the plugin is a built in Plugin (in Plugin directory)
Defines the order in which plugins have to be loaded.
QAction * optionsAction
Possible action to add an options action or menu to the system.
QString name
Name of the plugin ( requested from the plugin on load)
PostProcessorInterface * plugin
Pointer to the loaded plugin (Already casted when loading it)
QString version
Version of the plugin.
QString description
Description of the plugin.
Interface to add global image post processor functions from within plugins.
virtual QAction * optionsAction()
Return options menu.
PostProcessorInfo * newPostProcessor(QString _name)
Get a new post processor Instance.
void expectLoaders(int count)
void loaderReady(QPluginLoader *loader)
QPluginLoader * waitForNextLoader()
PreloadThread(PreloadAggregator *aggregator)
Preload thread constructor.
void run()
preload function
Interface class for Thread handling.
Interface class for exporting functions to python.
Interface to call functions across plugins.
Interface to add additional rendering functions from within plugins.
virtual QAction * optionsAction()
Return options menu.
RendererInfo * newRenderer(QString _name)
Get a new renderer Instance.
QAction * optionsAction
Possible action to add an options action or menu to the system.
ACG::SceneGraph::DrawModes::DrawMode modes
Supported DrawModes.
QString name
Name of the plugin ( requested from the plugin on load)
RenderInterface * plugin
Pointer to the loaded plugin (Already casted when loading it)
QString description
Description of the plugin ( requested from the plugin on load)
QString version
Version of the plugin ( requested from the plugin on load)
Interface for all Plugins which provide scriptable Functions.
Interface class for adding copy protection and license management to a plugin.
Interface for all plugins which want to use selection functions.
Control OpenFlippers status bar.
Provide texture support for a plugin.
Interface class for type definitions.
virtual DataType supportedType()=0
Return your supported object type( e.g. DATA_TRIANGLE_MESH )
Interface class for adding view modes to the ui.
applicationStatus
Enum for the statusBar Status Icon.
const QVector< QPair< QString, QString > > & pluginCommandLineOptions()
Get command line plugin settings as key-value pairs.