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> 91 static const int PRELOAD_THREADS_COUNT = (QThread::idealThreadCount() != -1) ? QThread::idealThreadCount() : 8;
93 namespace 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);
182 aggregator_->expectLoaders(1);
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);
207 aggregator_->loaderReady(loader);
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 QSet<QString> staticPlugins = QSet<QString>::fromList(
320 QString::fromUtf8(cmake::static_plugins).split(
"\n"));
321 for (
int i = 0; i < pluginlist.size(); ) {
322 const QString bn = QFileInfo(pluginlist[i]).fileName();
323 if (staticPlugins.contains(bn)) {
324 emit log(
LOGOUT, trUtf8(
"Not loading dynamic %1 as it is statically " 325 "linked against OpenFlipper.").arg(bn));
326 pluginlist.removeAt(i);
339 for (
int i = 0 ; i < dontLoadPlugins.size(); ++i )
340 emit log(
LOGWARN,tr(
"Skipping Plugins :\t %1").arg( dontLoadPlugins[i] ) );
342 emit log(
LOGOUT,
"================================================================================");
349 std::vector< PreloadThread* > loaderThreads(PRELOAD_THREADS_COUNT);
354 for (std::vector< PreloadThread* >::iterator it = loaderThreads.begin();
355 it != loaderThreads.end(); ++it) {
363 for (
int i = 0 ; i < pluginlist.size() ; ++i) {
364 loaderThreads[i % loaderThreads.size()]->addFilename(pluginlist[i]);
370 for (std::vector< PreloadThread* >::iterator it = loaderThreads.begin();
371 it != loaderThreads.end(); ++it) {
378 std::vector<QPluginLoader*> loadedPlugins;
379 loadedPlugins.reserve(pluginlist.size());
384 loadedPlugins.push_back(loader);
387 splashMessage_ = tr(
"Loading Plugin %1/%2").arg(loadedPlugins.size()).arg(pluginlist.size()) ;
388 splash_->showMessage( splashMessage_ , Qt::AlignBottom | Qt::AlignLeft , Qt::white);
395 for (std::vector< PreloadThread* >::iterator it = loaderThreads.begin();
396 it != loaderThreads.end(); ++it) {
405 for (std::vector<QPluginLoader*>::iterator it = loadedPlugins.begin();
406 it != loadedPlugins.end(); ++it) {
409 splashMessage_ = tr(
"Initializing Plugin %1/%2")
410 .arg(std::distance(loadedPlugins.begin(), it) + 1)
411 .arg(loadedPlugins.size());
412 splash_->showMessage( splashMessage_ , Qt::AlignBottom | Qt::AlignLeft , Qt::white);
415 if ((*it)->instance() != 0 ) {
416 QString pluginLicenseText =
"";
417 loadPlugin((*it)->fileName(),
true,pluginLicenseText, (*it)->instance());
418 licenseTexts += pluginLicenseText;
420 emit log(
LOGERR,tr(
"Unable to load Plugin :\t %1").arg( (*it)->fileName() ) );
421 emit log(
LOGERR,tr(
"Error was : ") + (*it)->errorString() );
422 emit log(
LOGOUT,
"================================================================================");
430 QVector<QStaticPlugin> staticPlugins = QPluginLoader::staticPlugins();
431 for (QVector<QStaticPlugin>::iterator it = staticPlugins.begin();
432 it != staticPlugins.end(); ++it) {
433 QObject *instance = it->instance();
436 QString fakeName = QString::fromUtf8(
"<Statically Linked>::/%1.%2")
437 .arg(basePlugin->
name())
438 .arg(OpenFlipper::Options::isWindows() ?
"dll" :
"so");
439 QString pluginLicenseText =
"";
440 loadPlugin(fakeName,
true, pluginLicenseText, instance);
441 licenseTexts += pluginLicenseText;
445 emit log(
LOGINFO, tr(
"Total time needed to load plugins was %1 ms.").arg(time.elapsed()));
449 if ( licenseTexts !=
"" ) {
450 if ( OpenFlipper::Options::gui() ) {
453 QStringList licenseBlocks = licenseTexts.split(
"==");
456 for ( QStringList::iterator it = licenseBlocks.begin(); it != licenseBlocks.end() ; ++it )
457 if ( ! it->contains(
"PluginName") ) {
458 licenseBlocks.erase(it);
459 it = licenseBlocks.begin();
463 QMap< QString , QString > contacts;
465 for ( QStringList::iterator it = licenseBlocks.begin(); it != licenseBlocks.end() ; ++it ) {
466 QStringList lines = it->split(
"\n");
468 lines = lines.filter (
"Contact mail", Qt::CaseInsensitive );
471 if (lines.size() == 1) {
472 QString mail = lines[0].section(
":",-1).simplified();
473 QString list = contacts.take(mail);
475 contacts.insert(mail,list);
477 emit log(
LOGWARN,tr(
"Can't extract mail contact from license request"));
482 for ( QMap<QString , QString>::iterator it = contacts.begin() ; it != contacts.end() ; ++it ) {
484 QStringList request = it.value().split(
"\n");
487 for ( QStringList::iterator lit = request.begin(); lit != request.end() ; ++lit ) {
489 if ( lit->contains(
"Message:") ) {
490 *lit = lit->section(
":",-1).simplified();
493 if ( lit->contains(
"Contact mail:") ) {
494 *lit = lit->section(
":",-1).simplified();
501 QTextEdit *edit =
new QTextEdit(&licenseBox);
502 edit->setText(request.join(
"\n"));
504 QLabel* mailLabel =
new QLabel(&licenseBox);
505 mailLabel->setText(tr(
"The text has been copied to your clipboard. Open in Mail program?"));
507 QPushButton* noButton =
new QPushButton(&licenseBox);
508 noButton->setText(tr(
"No"));
509 connect( noButton, SIGNAL(clicked ()), &licenseBox, SLOT(reject()) );
511 QPushButton* yesButton =
new QPushButton(&licenseBox);
512 yesButton->setText(tr(
"Yes"));
513 connect( yesButton, SIGNAL(clicked ()), &licenseBox, SLOT(accept()) );
515 QGridLayout *layout =
new QGridLayout;
516 layout->addWidget(edit,0,0,1,2);
517 layout->addWidget(mailLabel,1,0,1,2);
518 layout->addWidget(noButton,2,0);
519 layout->addWidget(yesButton,2,1);
520 licenseBox.setLayout(layout);
522 licenseBox.resize(500,500);
523 licenseBox.setModal(
true);
524 licenseBox.setWindowTitle(tr(
"Plugin License check failed, issuer is: %1").arg( it.key() ));
525 int userAnswer =licenseBox.exec();
528 QClipboard *cb = QApplication::clipboard();
529 cb->setText(request.join(
"\n"));
531 if ( userAnswer == 1 ) {
532 QString url =
"mailto:" + it.key();
533 url +=
"?subject=License Request&body=";
535 url += request.join(
";;");
537 url += request.join(
"\n");
540 QUrl encodedURL(url, QUrl::TolerantMode);
541 QDesktopServices::openUrl(encodedURL);
549 emit log(
LOGWARN,tr(
"Plugin License check failed: "));
550 std::cerr << licenseTexts.toStdString() << std::endl;
554 emit pluginsInitialized();
558 emit log(
LOGOUT,tr(
"Loaded %n Plugin(s)",
"",
int(plugins().size())) );
565 if ( OpenFlipper::Options::nogui() )
573 if ( OpenFlipper::Options::isWindows() )
574 filter =
"Plugins (*.dll)";
576 filter =
"Plugins (*.so)";
579 QString filename = ACG::getOpenFileName(coreWidget_,tr(
"Load Plugin"),filter,
OpenFlipperSettings().value(
"Core/CurrentDir").toString() );
581 if (filename.isEmpty())
586 QPluginLoader loader( filename );
587 QObject *plugin = loader.instance();
595 name = basePlugin->
name();
602 QStringList dontLoadPlugins =
OpenFlipperSettings().
value(
"PluginControl/DontLoadNames", QStringList()).toStringList();
603 if (dontLoadPlugins.contains(name)){
604 int ret = QMessageBox::question(0, tr(
"Plugin Loading Prevention"),
605 tr(
"OpenFlipper is currently configured to prevent loading this plugin.\n" 606 "Do you want to enable this plugin permanently?"),
607 QMessageBox::Yes | QMessageBox::No,
609 if (ret == QMessageBox::Yes) {
610 dontLoadPlugins.removeAll(name);
617 QStringList additionalPlugins =
OpenFlipperSettings().
value(
"PluginControl/AdditionalPlugins", QStringList()).toStringList();
618 if (!additionalPlugins.contains(name)){
619 int ret = QMessageBox::question(0, tr(
"Plugin Loading ..."),
620 tr(
"Should OpenFlipper load this plugin on next startup?"),
621 QMessageBox::Yes | QMessageBox::No,
623 if (ret == QMessageBox::Yes) {
624 additionalPlugins << filename;
625 std::cerr <<
"Added: " << filename.toStdString() << std::endl;
630 QString licenseText =
"";
631 loadPlugin(filename,
false,licenseText);
633 if ( licenseText !=
"" ) {
634 if ( OpenFlipper::Options::gui() ) {
635 QMessageBox::warning ( 0, tr(
"Plugin License check failed"), licenseText );
637 std::cerr <<
"OpenURL: " << std::endl;
638 QDesktopServices::openUrl(QUrl(tr(
"mailto:contact@openflipper.com?subject=License Request&body=%1").arg(licenseText), QUrl::TolerantMode));
640 std::cerr <<
"Plugin License check failed" << std::endl;
641 std::cerr << licenseText.toStdString() << std::endl;
650 if ( OpenFlipper::Options::gui() ){
659 connect(dialog, SIGNAL( loadPlugin() ),
this, SLOT( slotLoadPlugin() ));
660 connect(dialog, SIGNAL(blockPlugin(
const QString&)),
this, SLOT(slotBlockPlugin(
const QString&)));
661 connect(dialog, SIGNAL(unBlockPlugin(
const QString&)),
this, SLOT(slotUnBlockPlugin(
const QString&)));
662 connect(dialog, SIGNAL(loadPlugin(
const QString& ,
const bool , QString& , QObject* )),
663 this,SLOT(loadPlugin(
const QString& ,
const bool , QString& , QObject* )));
666 ret = dialog->exec();
675 QStringList dontLoadPlugins =
OpenFlipperSettings().
value(
"PluginControl/DontLoadNames",QStringList()).toStringList();
676 if ( !dontLoadPlugins.contains(_name) ){
677 dontLoadPlugins << _name;
681 for (
size_t i = 0; i < plugins().size();++i)
682 if (plugins()[i].name == _name)
683 plugins()[i].status = PluginInfo::BLOCKED;
688 QStringList dontLoadPlugins =
OpenFlipperSettings().
value(
"PluginControl/DontLoadNames",QStringList()).toStringList();
689 dontLoadPlugins.removeAll(_name);
692 for (
size_t i = 0; i < plugins().size();++i)
693 if (plugins()[i].name == _name)
694 plugins()[i].status = PluginInfo::UNLOADED;
699 emit log(
LOGERR ,errors );
701 emit log(
LOGOUT,
"================================================================================");
710 void Core::loadPlugin(
const QString& _filename,
const bool _silent, QString& _licenseErrors, QObject* _plugin){
715 if ( OpenFlipper::Options::isWindows() ) {
716 QString dllname = _filename;
717 if ( ! dllname.endsWith(
".dll" ) )
721 if ( OpenFlipper::Options::isLinux() ) {
722 QString soname = _filename;
723 if ( ! soname.endsWith(
".so" ) )
731 QString errors, warnings;
736 if ( _plugin == 0 ) {
737 QPluginLoader loader( _filename );
738 plugin = loader.instance();
742 errors += tr(
"Error: Unable to load Plugin :\t %1").arg( _filename ) +
"\n";
743 errors += tr(
"Error: Error was : ") + loader.errorString() +
"\n";
747 emit log(
LOGOUT,
"================================================================================");
749 emit log (
LOGOUT,tr(
"Plugin loaded: \t %1").arg(_filename));
758 int alreadyLoadedAt = -1;
759 for (
unsigned int k=0; k < plugins().size(); k++)
761 if (plugins()[k].path == _filename)
762 alreadyLoadedAt = static_cast<int>(k);
764 info.status = PluginInfo::FAILED;
765 info.
path = _filename;
768 emit log(
LOGOUT,tr(
"Location : \t %1").arg( _filename) );
780 QStringList additionalPlugins =
OpenFlipperSettings().
value(
"PluginControl/AdditionalPlugins", QStringList()).toStringList();
781 info.
buildIn = !additionalPlugins.contains(info.
path);
783 emit log(
LOGOUT,tr(
"Found Plugin : \t %1").arg(basePlugin->
name()) );
786 splashMessage_ = splashMessage_ +
" " + basePlugin->
name() ;
787 splash_->showMessage( splashMessage_ , Qt::AlignBottom | Qt::AlignLeft , Qt::white);
791 for (
unsigned int k=0; k < plugins().size(); k++){
793 QString name_nospace = basePlugin->
name();
794 name_nospace.remove(
" ");
796 if (plugins()[k].name == name_nospace && plugins()[k].path != _filename && plugins()[k].status == PluginInfo::LOADED){
797 if (_silent || OpenFlipper::Options::nogui() ){
799 warnings += tr(
"Warning: Already loaded from %1").arg( plugins()[k].path) +
"\n";
801 printPluginLoadLog(errors, warnings);
808 PluginStorage::pluginsFailed().push_back(info);
812 int ret = QMessageBox::question(coreWidget_,
813 tr(
"Plugin already loaded"),
814 tr(
"A Plugin with the same name was already loaded from %1.\n" 815 "You can only load the new plugin if you unload the existing one first.\n\n" 816 "Do you want to unload the existing plugin first?").arg( plugins()[k].path),
817 QMessageBox::Yes|QMessageBox::No, QMessageBox::No);
818 if (ret == QMessageBox::No)
820 warnings += tr(
"Warning: Already loaded from %1.").arg( plugins()[k].path) +
"\n";
822 printPluginLoadLog(errors, warnings);
829 PluginStorage::pluginsFailed().push_back(info);
836 QStringList dontLoadPlugins =
OpenFlipperSettings().
value(
"PluginControl/DontLoadNames",QStringList()).toStringList();
838 if ( dontLoadPlugins.contains(basePlugin->
name(), Qt::CaseInsensitive) ) {
840 warnings += tr(
"Warning: OpenFlipper.ini prevented Plugin %1 from being loaded! ").arg( basePlugin->
name() ) +
"\n";
842 printPluginLoadLog(errors, warnings);
844 info.status = PluginInfo::BLOCKED;
849 PluginStorage::pluginsFailed().push_back(info);
856 if ( securePlugin ) {
857 emit log(
LOGINFO,tr(
"Plugin uses security interface. Trying to authenticate against plugin ..."));
859 bool success =
false;
860 QMetaObject::invokeMethod(plugin,
"authenticate", Q_RETURN_ARG(
bool , success ) ) ;
862 QString message =
"";
863 QMetaObject::invokeMethod(plugin,
"licenseError", Q_RETURN_ARG( QString , message ) ) ;
864 _licenseErrors = message;
867 emit log(
LOGINFO,tr(
"... ok. Loading plugin "));
870 errors += tr(
"Error: Failed to load plugin. Plugin access denied by license management.");
872 printPluginLoadLog(errors, warnings);
880 PluginStorage::pluginsFailed().push_back(info);
886 emit log(
LOGOUT,tr(
"Plugin Description :\t %1 ").arg( basePlugin->
description()) );
888 supported =
"BaseInterface ";
891 if ( checkSlot(plugin,
"version()") )
894 info.
version = QString::number(-1);
896 if ( OpenFlipper::Options::nogui() ) {
898 if ( ! checkSlot( plugin ,
"noguiSupported()" ) ) {
899 warnings += tr(
"Warning: Running in nogui mode which is unsupported by this plugin, skipping");
901 printPluginLoadLog(errors, warnings);
906 PluginStorage::pluginsFailed().push_back(info);
915 if ( checkSignal(plugin,
"updated_objects(int)") ) {
917 errors += tr(
"Error: Plugin Uses old style updated_objects! Convert to updatedObject!") +
"\n";
919 printPluginLoadLog(errors, warnings);
924 PluginStorage::pluginsFailed().push_back(info);
929 if ( checkSignal(plugin,
"update_view()") ) {
930 errors += tr(
"Error: Plugin Uses old style update_view! Convert to updateView!") +
"\n";
932 printPluginLoadLog(errors, warnings);
937 PluginStorage::pluginsFailed().push_back(info);
942 if ( checkSignal(plugin,
"updateView()") )
943 connect(plugin,SIGNAL(updateView()),
this,SLOT(updateView()), Qt::AutoConnection);
945 if ( checkSignal(plugin,
"blockScenegraphUpdates(bool)") )
946 connect(plugin,SIGNAL(blockScenegraphUpdates(
bool)),
this,SLOT(blockScenegraphUpdates(
bool)), Qt::QueuedConnection);
948 if ( checkSignal(plugin,
"updatedObject(int)") && checkSignal(plugin,
"updatedObject(int,const UpdateType&)") ){
950 errors += tr(
"Error: Plugin uses deprecated and(!) new updatedObject. Only new updatedObject will be active.") +
"\n";
952 log(
LOGERR,tr(
"Plugin uses deprecated and(!) new updatedObject. Only new updatedObject will be active."));
953 connect(plugin,SIGNAL(updatedObject(
int,
const UpdateType&)),
this,SLOT(slotObjectUpdated(
int,
const UpdateType&)), Qt::AutoConnection);
957 if ( checkSignal(plugin,
"updatedObject(int)") ){
958 warnings += tr(
"Warning: Plugin uses deprecated updatedObject.") +
"\n";
960 log(
LOGWARN,tr(
"Plugin uses deprecated updatedObject."));
961 connect(plugin,SIGNAL(updatedObject(
int)),
this,SLOT(slotObjectUpdated(
int)), Qt::AutoConnection);
964 if ( checkSignal(plugin,
"updatedObject(int,const UpdateType&)") )
965 connect(plugin,SIGNAL(updatedObject(
int,
const UpdateType&)),
this,SLOT(slotObjectUpdated(
int,
const UpdateType&)), Qt::AutoConnection);
968 if ( checkSlot( plugin ,
"slotObjectUpdated(int)" ) && checkSlot( plugin ,
"slotObjectUpdated(int,const UpdateType&)" ) ){
969 errors += tr(
"Error: Plugin uses deprecated and(!) new slotObjectUpdated. Only new slotObjectUpdated will be active.") +
"\n";
971 log(
LOGERR,tr(
"Plugin uses deprecated and(!) new slotObjectUpdated. Only new slotObjectUpdated will be active."));
972 connect(
this,SIGNAL(signalObjectUpdated(
int,
const UpdateType&)),plugin,SLOT(slotObjectUpdated(
int,
const UpdateType&)), Qt::DirectConnection);
976 if ( checkSlot( plugin ,
"slotObjectUpdated(int)" ) ){
977 warnings += tr(
"Warning: Plugin uses deprecated slotObjectUpdated.") +
"\n";
978 log(
LOGWARN,tr(
"Plugin uses deprecated slotObjectUpdated."));
979 connect(
this,SIGNAL(signalObjectUpdated(
int)),plugin,SLOT(slotObjectUpdated(
int)), Qt::DirectConnection);
982 if ( checkSlot( plugin ,
"slotObjectUpdated(int,const UpdateType&)" ) )
983 connect(
this,SIGNAL(signalObjectUpdated(
int,
const UpdateType&)),plugin,SLOT(slotObjectUpdated(
int,
const UpdateType&)), Qt::DirectConnection);
986 if ( checkSignal(plugin,
"objectPropertiesChanged(int)")) {
987 errors += tr(
"Error: Signal objectPropertiesChanged(int) is deprecated.") +
"\n";
988 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";
989 errors += tr(
"Error: Please remove this signal from your plugins!.") +
"\n";
992 if ( checkSlot( plugin ,
"slotViewChanged()" ) )
993 connect(
this,SIGNAL(pluginViewChanged()),plugin,SLOT(slotViewChanged()), Qt::DirectConnection);
995 if ( checkSlot( plugin ,
"slotSceneDrawn()" ) )
996 connect(
this,SIGNAL(pluginSceneDrawn()),plugin,SLOT(slotSceneDrawn()), Qt::DirectConnection);
998 if ( checkSlot( plugin ,
"slotDrawModeChanged(int)" ) )
999 connect(coreWidget_,SIGNAL(drawModeChanged(
int)),plugin,SLOT(slotDrawModeChanged(
int)), Qt::DirectConnection);
1001 if ( checkSlot(plugin,
"slotObjectPropertiesChanged(int)"))
1002 connect(
this,SIGNAL(objectPropertiesChanged(
int)),plugin,SLOT(slotObjectPropertiesChanged(
int)), Qt::DirectConnection);
1004 if ( checkSignal(plugin,
"visibilityChanged()" ) ) {
1005 errors += tr(
"Error: Signal visibilityChanged() now requires objectid or -1 as argument.") +
"\n";
1008 if ( checkSignal(plugin,
"visibilityChanged(int)") ) {
1009 errors += tr(
"Error: Signal visibilityChanged(int) is deprecated!") +
"\n";
1010 errors += tr(
"Error: If an object changes its visibility, it will call the required functions automatically.") +
"\n";
1011 errors += tr(
"Error: If you change a scenegraph node, call nodeVisibilityChanged(int). See docu of this function for details.") +
"\n";
1014 if ( checkSignal(plugin,
"nodeVisibilityChanged(int)") )
1015 connect(plugin,SIGNAL(nodeVisibilityChanged(
int)),
this,SLOT(slotVisibilityChanged(
int)), Qt::DirectConnection);
1018 if ( checkSlot(plugin,
"slotVisibilityChanged(int)") )
1019 connect(
this,SIGNAL(visibilityChanged(
int)),plugin,SLOT(slotVisibilityChanged(
int)), Qt::DirectConnection);
1021 if ( checkSignal(plugin,
"activeObjectChanged()" ) ) {
1022 errors += tr(
"Error: Signal activeObjectChanged() is now objectSelectionChanged( int _objectId )") +
"\n";
1025 if ( checkSlot(plugin,
"slotActiveObjectChanged()" ) ) {
1026 errors += tr(
"Error: Slot slotActiveObjectChanged() is now slotObjectSelectionChanged( int _objectId ) ") +
"\n";
1029 if ( checkSlot(plugin,
"slotAllCleared()") )
1030 connect(
this,SIGNAL(allCleared()),plugin,SLOT(slotAllCleared()));
1033 if ( checkSignal(plugin,
"objectSelectionChanged(int)") ) {
1034 errors += tr(
"Error: Signal objectSelectionChanged(in) is deprecated!") +
"\n";
1035 errors += tr(
"Error: If the selection for an object is changed, the core will emit the required signals itself!") +
"\n";
1038 if ( checkSlot( plugin ,
"slotObjectSelectionChanged(int)" ) )
1039 connect(
this,SIGNAL(objectSelectionChanged(
int)),plugin,SLOT(slotObjectSelectionChanged(
int) ), Qt::DirectConnection);
1042 if ( checkSlot( plugin ,
"pluginsInitialized()" ) )
1043 connect(
this,SIGNAL(pluginsInitialized()),plugin,SLOT(pluginsInitialized()), Qt::DirectConnection);
1045 if ( checkSlot( plugin ,
"pluginsInitialized(QVector<QPair<QString,QString>>const&)" ) )
1046 connect(
this,SIGNAL(pluginsInitialized(QVector<QPair<QString,QString>>
const&)),plugin,SLOT(pluginsInitialized(QVector<QPair<QString,QString>>
const&)), Qt::DirectConnection);
1048 if ( checkSignal(plugin,
"setSlotDescription(QString,QString,QStringList,QStringList)") )
1049 connect(plugin, SIGNAL(setSlotDescription(QString,QString,QStringList,QStringList)),
1050 this, SLOT(slotSetSlotDescription(QString,QString,QStringList,QStringList)) );
1055 if ( checkSignal(plugin,
"setRenderer(unsigned int,QString)" ) ) {
1056 connect(plugin,SIGNAL(setRenderer(
unsigned int,QString)),
this,SLOT(slotSetRenderer(
unsigned int,QString)));
1059 if ( checkSignal(plugin,
"getCurrentRenderer(unsigned int,QString&)" ) ) {
1060 connect(plugin,SIGNAL(getCurrentRenderer(
unsigned int,QString&)),
this,SLOT(slotGetCurrentRenderer(
unsigned int,QString&)), Qt::DirectConnection);
1069 supported = supported +
"Logging ";
1073 loggers_.push_back(newlog);
1074 connect(plugin,SIGNAL(log(
Logtype, QString )),newlog,SLOT(slotLog(
Logtype, QString )),Qt::DirectConnection);
1075 connect(plugin,SIGNAL(log(QString )),newlog,SLOT(slotLog(QString )),Qt::DirectConnection);
1078 if ( OpenFlipper::Options::gui() )
1079 connect(newlog,SIGNAL(log(
Logtype, QString )),coreWidget_,SLOT(slotLog(
Logtype, QString )),Qt::DirectConnection);
1082 connect(newlog,SIGNAL(log(
Logtype, QString )),
this,SLOT(slotLog(
Logtype, QString )),Qt::DirectConnection);
1085 connect(newlog,SIGNAL(log(
Logtype, QString )),
this,SLOT(slotLogToFile(
Logtype, QString )),Qt::DirectConnection);
1088 if ( checkSlot(plugin,
"logOutput(Logtype,QString)") )
1089 connect(
this,SIGNAL(externalLog(
Logtype,QString)), plugin, SLOT(logOutput(
Logtype,QString)) ) ;
1094 if ( menubarPlugin && OpenFlipper::Options::gui() ) {
1095 supported = supported +
"Menubar ";
1097 if ( checkSignal(plugin,
"addMenubarAction(QAction*,QString)") )
1098 connect(plugin , SIGNAL(addMenubarAction(QAction*,QString)),
1099 coreWidget_ , SLOT(slotAddMenubarAction(QAction*,QString)),Qt::DirectConnection);
1100 if ( checkSignal(plugin,
"addMenubarActions(std::vector<QAction*>, QString)") )
1101 connect(plugin , SIGNAL(addMenubarActions(std::vector<QAction*>,QString)),
1102 coreWidget_ , SLOT(slotAddMenubarActions(std::vector<QAction*>,QString)),Qt::DirectConnection);
1103 if ( checkSignal(plugin,
"getMenubarMenu (QString,QMenu*&,bool)") )
1104 connect(plugin , SIGNAL(getMenubarMenu (QString,QMenu*&,
bool)),
1105 coreWidget_ , SLOT(slotGetMenubarMenu (QString,QMenu*&,
bool)),Qt::DirectConnection);
1110 if ( contextMenuPlugin && OpenFlipper::Options::gui() ) {
1111 supported = supported +
"ContextMenu ";
1113 if ( checkSignal(plugin,
"addContextMenuItem(QAction*,ContextMenuType)") )
1114 connect(plugin , SIGNAL(addContextMenuItem(QAction*,
ContextMenuType)),
1115 coreWidget_ , SLOT(slotAddContextItem(QAction*,
ContextMenuType)),Qt::DirectConnection);
1117 if ( checkSignal(plugin,
"addContextMenuItem(QAction*,DataType,ContextMenuType)") )
1121 if ( checkSignal(plugin,
"hideContextMenu()") )
1122 connect(plugin , SIGNAL(hideContextMenu()),
1123 coreWidget_ , SLOT(slotHideContextMenu()),Qt::DirectConnection);
1125 if ( checkSlot(plugin,
"slotUpdateContextMenu(int)") )
1126 connect(coreWidget_ , SIGNAL(updateContextMenu(
int)),
1127 plugin , SLOT(slotUpdateContextMenu(
int)),Qt::DirectConnection);
1129 if ( checkSlot(plugin,
"slotUpdateContextMenuNode(int)") )
1130 connect(coreWidget_ , SIGNAL(updateContextMenuNode(
int)),
1131 plugin , SLOT(slotUpdateContextMenuNode(
int)),Qt::DirectConnection);
1133 if ( checkSlot(plugin,
"slotUpdateContextMenuBackground()") )
1134 connect(coreWidget_ , SIGNAL(updateContextMenuBackground()),
1135 plugin , SLOT(slotUpdateContextMenuBackground()),Qt::DirectConnection);
1140 if ( toolboxPlugin && OpenFlipper::Options::gui() ) {
1141 supported = supported +
"Toolbox ";
1144 if ( checkSignal(plugin,
"addToolbox(QString,QWidget*)"))
1145 connect(plugin, SIGNAL( addToolbox(QString,QWidget*) ),
1146 this, SLOT( addToolbox(QString,QWidget*) ),Qt::DirectConnection );
1148 if ( checkSignal(plugin,
"addToolbox(QString,QWidget*,QIcon*)"))
1149 connect(plugin, SIGNAL( addToolbox(QString,QWidget*,QIcon*) ),
1150 this, SLOT( addToolbox(QString,QWidget*,QIcon*) ),Qt::DirectConnection );
1152 if ( checkSignal(plugin,
"addToolbox(QString,QWidget*,QIcon*,QWidget*)"))
1153 connect(plugin, SIGNAL( addToolbox(QString,QWidget*,QIcon*,QWidget*) ),
1154 this, SLOT( addToolbox(QString,QWidget*,QIcon*,QWidget*) ),Qt::DirectConnection );
1159 if ( viewModePlugin && OpenFlipper::Options::gui() ) {
1160 supported = supported +
"ViewMode ";
1162 if ( checkSignal(plugin,
"defineViewModeToolboxes(QString,QStringList)"))
1163 connect(plugin, SIGNAL( defineViewModeToolboxes(QString, QStringList) ),
1164 coreWidget_, SLOT( slotAddViewModeToolboxes(QString, QStringList) ),Qt::DirectConnection );
1166 if ( checkSignal(plugin,
"defineViewModeToolbars(QString,QStringList)"))
1167 connect(plugin, SIGNAL( defineViewModeToolbars(QString, QStringList) ),
1168 coreWidget_, SLOT( slotAddViewModeToolbars(QString, QStringList) ),Qt::DirectConnection );
1170 if ( checkSignal(plugin,
"defineViewModeContextMenus(QString,QStringList)"))
1171 connect(plugin, SIGNAL( defineViewModeContextMenus(QString, QStringList) ),
1172 coreWidget_, SLOT( slotAddViewModeContextMenus(QString, QStringList) ),Qt::DirectConnection );
1174 if ( checkSignal(plugin,
"defineViewModeIcon(QString,QString)"))
1175 connect(plugin, SIGNAL( defineViewModeIcon(QString, QString) ),
1176 coreWidget_, SLOT( slotSetViewModeIcon(QString, QString) ),Qt::DirectConnection );
1178 if ( checkSignal(plugin,
"setViewMode(QString,bool)"))
1179 connect(plugin, SIGNAL( setViewMode(QString,
bool) ),
1180 coreWidget_, SLOT( setViewMode(QString,
bool) ),Qt::DirectConnection );
1185 if ( optionsPlugin && OpenFlipper::Options::gui() ) {
1186 supported = supported +
"Options ";
1188 QWidget* widget = 0;
1192 if ( checkSlot(plugin,
"applyOptions()") )
1193 connect(coreWidget_ , SIGNAL( applyOptions() ),
1194 plugin , SLOT( applyOptions() ),Qt::DirectConnection);
1200 if ( toolbarPlugin && OpenFlipper::Options::gui() ) {
1201 supported = supported +
"Toolbars ";
1203 if ( checkSignal(plugin,
"addToolbar(QToolBar*)") )
1204 connect(plugin,SIGNAL(addToolbar(QToolBar*)),
1205 coreWidget_,SLOT(slotAddToolbar(QToolBar*)),Qt::DirectConnection);
1207 if ( checkSignal(plugin,
"removeToolbar(QToolBar*)") )
1208 connect(plugin,SIGNAL(removeToolbar(QToolBar*)),
1209 coreWidget_,SLOT(slotRemoveToolbar(QToolBar*)),Qt::DirectConnection);
1211 if ( checkSignal(plugin,
"getToolBar(QString,QToolBar*&)") )
1212 connect(plugin,SIGNAL(getToolBar(QString,QToolBar*&)),
1213 coreWidget_,SLOT(getToolBar(QString,QToolBar*&)),Qt::DirectConnection);
1219 if ( statusbarPlugin && OpenFlipper::Options::gui() ) {
1220 supported = supported +
"StatusBar ";
1222 if ( checkSignal(plugin,
"showStatusMessage(QString,int)") )
1223 connect(plugin,SIGNAL(showStatusMessage(QString,
int)),
1224 coreWidget_,SLOT(statusMessage(QString,
int)),Qt::DirectConnection);
1227 if ( checkSignal(plugin,
"setStatus(ApplicationStatus::applicationStatus)") )
1231 if ( checkSignal(plugin,
"clearStatusMessage()") )
1232 connect(plugin,SIGNAL(clearStatusMessage()),
1233 coreWidget_,SLOT(clearStatusMessage()));
1235 if ( checkSignal(plugin,
"addWidgetToStatusbar(QWidget*)") )
1236 connect(plugin,SIGNAL(addWidgetToStatusbar(QWidget*)), coreWidget_,SLOT(addWidgetToStatusbar(QWidget*)));
1241 if ( keyPlugin && OpenFlipper::Options::gui() ) {
1242 supported = supported +
"KeyboardEvents ";
1244 if ( checkSignal(plugin,
"registerKey(int,Qt::KeyboardModifiers,QString,bool)") )
1245 connect(plugin,SIGNAL( registerKey(
int, Qt::KeyboardModifiers, QString,
bool) ),
1246 coreWidget_,SLOT(slotRegisterKey(
int, Qt::KeyboardModifiers, QString,
bool)) );
1251 if ( mousePlugin && OpenFlipper::Options::gui() ) {
1252 supported = supported +
"MouseEvents ";
1254 if ( checkSlot( plugin ,
"slotMouseWheelEvent(QWheelEvent*,const std::string&)" ) )
1255 connect(
this , SIGNAL(PluginWheelEvent(QWheelEvent * ,
const std::string & )),
1256 plugin , SLOT(slotMouseWheelEvent(QWheelEvent* ,
const std::string & )));
1258 if ( checkSlot( plugin ,
"slotMouseEvent(QMouseEvent*)" ) )
1259 connect(
this , SIGNAL(PluginMouseEvent(QMouseEvent*)),
1260 plugin , SLOT(slotMouseEvent(QMouseEvent*)));
1262 if ( checkSlot( plugin ,
"slotMouseEventLight(QMouseEvent*)" ) )
1263 connect(
this , SIGNAL(PluginMouseEventLight(QMouseEvent*)),
1264 plugin , SLOT(slotMouseEventLight(QMouseEvent*)));
1270 if ( infoPlugin && OpenFlipper::Options::gui() ) {
1271 supported = supported +
"TypeInformation ";
1274 supportedInfoTypes().insert(std::pair<InformationInterface*,DataType>(infoPlugin,dtype));
1279 if ( pickPlugin && OpenFlipper::Options::gui() ) {
1280 supported = supported +
"Picking ";
1282 if ( checkSlot( plugin ,
"slotPickModeChanged(const std::string&)" ) )
1283 connect(coreWidget_,SIGNAL(signalPickModeChanged (
const std::string &)),
1284 plugin,SLOT(slotPickModeChanged(
const std::string &)));
1286 if ( checkSignal(plugin,
"addPickMode(const std::string&)") )
1287 connect(plugin,SIGNAL(addPickMode(
const std::string& )),
1288 this,SLOT(slotAddPickMode(
const std::string& )),Qt::DirectConnection);
1290 if ( checkSignal(plugin,
"addHiddenPickMode(const std::string&)") )
1291 connect(plugin,SIGNAL(addHiddenPickMode(
const std::string& )),
1292 this,SLOT(slotAddHiddenPickMode(
const std::string& )),Qt::DirectConnection);
1294 if ( checkSignal(plugin,
"setPickModeCursor(const std::string&,QCursor)") )
1295 for (
unsigned int i = 0 ; i < OpenFlipper::Options::examinerWidgets() ; ++i )
1296 connect(plugin,SIGNAL(setPickModeCursor(
const std::string& ,QCursor)),
1297 coreWidget_,SLOT(setPickModeCursor(
const std::string& ,QCursor)),Qt::DirectConnection);
1299 if ( checkSignal(plugin,
"setPickModeMouseTracking(const std::string&,bool)") )
1300 for (
unsigned int i = 0 ; i < OpenFlipper::Options::examinerWidgets() ; ++i )
1301 connect(plugin,SIGNAL(setPickModeMouseTracking(
const std::string& ,
bool)),
1302 coreWidget_,SLOT(setPickModeMouseTracking(
const std::string& ,
bool)),Qt::DirectConnection);
1304 if ( checkSignal(plugin,
"setPickModeToolbar(const std::string&,QToolBar*)") )
1305 connect(plugin,SIGNAL(setPickModeToolbar (
const std::string&, QToolBar*)),
1306 coreWidget_,SLOT(setPickModeToolbar (
const std::string&, QToolBar*)),Qt::DirectConnection);
1308 if ( checkSignal(plugin,
"removePickModeToolbar(const std::string&)") )
1309 connect(plugin,SIGNAL(removePickModeToolbar(
const std::string&)),
1310 coreWidget_,SLOT(removePickModeToolbar(
const std::string&)),Qt::DirectConnection);
1317 supported = supported +
"INIFile ";
1319 if ( checkSlot( plugin ,
"loadIniFile(INIFile&,int)" ) )
1320 connect(
this , SIGNAL(iniLoad(
INIFile&,
int)),
1321 plugin , SLOT( loadIniFile(
INIFile&,
int) ),Qt::DirectConnection);
1323 if ( checkSlot( plugin ,
"saveIniFile(INIFile&,int)" ) )
1324 connect(
this , SIGNAL(iniSave(
INIFile& ,
int )),
1325 plugin , SLOT( saveIniFile(
INIFile& ,
int ) ),Qt::DirectConnection);
1327 if ( checkSlot( plugin ,
"saveIniFileOptions(INIFile&)" ) )
1328 connect(
this , SIGNAL(iniSaveOptions(
INIFile& )),
1329 plugin , SLOT( saveIniFileOptions(
INIFile& ) ),Qt::DirectConnection);
1331 if ( checkSlot( plugin ,
"saveOnExit(INIFile&)" ) )
1332 connect(
this , SIGNAL(saveOnExit(
INIFile& )),
1333 plugin , SLOT( saveOnExit(
INIFile& ) ),Qt::DirectConnection);
1335 if ( checkSlot( plugin ,
"loadIniFileOptions(INIFile&)" ) )
1336 connect(
this , SIGNAL(iniLoadOptions(
INIFile& )),
1337 plugin , SLOT( loadIniFileOptions(
INIFile& ) ),Qt::DirectConnection);
1339 if ( checkSlot( plugin ,
"loadIniFileOptionsLast(INIFile&)" ) )
1340 connect(
this , SIGNAL(iniLoadOptionsLast(
INIFile& )),
1341 plugin , SLOT( loadIniFileOptionsLast(
INIFile& ) ),Qt::DirectConnection);
1344 #ifdef PYTHON_ENABLED 1349 if ( pythonPlugin ) {
1350 supported = supported +
"PythonInterface ";
1352 QObject* currentPluginPointer = qobject_cast< QObject * >(plugin);
1354 setPluginPointer(basePlugin->
name() , currentPluginPointer);
1362 if ( selectionPlugin && OpenFlipper::Options::gui() ) {
1363 supported = supported +
"SelectionBase ";
1365 if ( checkSignal(plugin,
"addSelectionEnvironment(QString,QString,QIcon,QString&)") ) {
1366 errors += tr(
"Error: Plugin uses deprecated addSelectionEnvironment(QString,QString,QIcon,QString&) , Replace the qicon by the path to the icon!") +
"\n";
1367 log(
LOGERR,tr(
"Plugin uses deprecated addSelectionEnvironment(QString,QString,QIcon,QString&) , Replace the qicon by the path to the icon!"));
1370 if ( checkSignal(plugin,
"addSelectionEnvironment(QString,QString,QString,QString&)") )
1371 connect(plugin , SIGNAL(addSelectionEnvironment(QString,QString,QString,QString&)),
1372 this , SLOT(slotAddSelectionEnvironment(QString,QString,QString,QString&)),Qt::DirectConnection);
1376 if ( checkSlot(plugin,
"slotAddSelectionEnvironment(QString,QString,QIcon,QString&)") ) {
1377 errors += tr(
"Error: Plugin uses deprecated slotAddSelectionEnvironment(QString,QString,QIcon,QString&) , Replace the qicon by the path to the icon!") +
"\n";
1380 if ( checkSlot( plugin ,
"slotAddSelectionEnvironment(QString,QString,QString,QString&)" ) )
1381 connect(
this , SIGNAL(addSelectionEnvironment(QString,QString,QString,QString&)),
1382 plugin , SLOT(slotAddSelectionEnvironment(QString,QString,QString,QString&)),Qt::DirectConnection);
1386 if ( checkSignal(plugin,
"registerType(QString,DataType)") )
1387 connect(plugin , SIGNAL(registerType(QString,
DataType)),
1388 this , SLOT(slotRegisterType(QString,
DataType)),Qt::DirectConnection);
1392 if ( checkSlot( plugin ,
"slotRegisterType(QString,DataType)" ) )
1393 connect(
this , SIGNAL(registerType(QString,
DataType)),
1394 plugin , SLOT(slotRegisterType(QString,
DataType)),Qt::DirectConnection);
1398 if ( checkSignal(plugin,
"addPrimitiveType(QString,QString,QIcon,SelectionInterface::PrimitiveType&)") ) {
1399 errors += tr(
"Error: Plugin uses deprecated addPrimitiveType(QString,QString,QIcon,SelectionInterface::PrimitiveType&) , Replace the qicon by the path to the icon!") +
"\n";
1402 if ( checkSignal(plugin,
"addPrimitiveType(QString,QString,QString,SelectionInterface::PrimitiveType&)") )
1403 connect(plugin , SIGNAL(addPrimitiveType(QString,QString,QString,SelectionInterface::PrimitiveType&)),
1404 this , SLOT(slotAddPrimitiveType(QString,QString,QString,SelectionInterface::PrimitiveType&)),Qt::DirectConnection);
1408 if ( checkSlot(plugin,
"slotAddPrimitiveType(QString,QString,QIcon,SelectionInterface::PrimitiveType&)") )
1409 log(
LOGERR,tr(
"Plugin uses deprecated slotAddPrimitiveType(QString,QString,QIcon,SelectionInterface::PrimitiveType&) , Replace the qicon by the path to the icon!"));
1411 if ( checkSlot( plugin ,
"slotAddPrimitiveType(QString,QString,QString,SelectionInterface::PrimitiveType&)" ) )
1412 connect(
this , SIGNAL(addPrimitiveType(QString,QString,QString,SelectionInterface::PrimitiveType&)),
1413 plugin , SLOT(slotAddPrimitiveType(QString,QString,QString,SelectionInterface::PrimitiveType&)),Qt::DirectConnection);
1417 if ( checkSignal(plugin,
"addCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&)") ) {
1418 errors += tr(
"Error: Plugin uses deprecated addCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&) , Replace the qicon by the path to the icon!") +
"\n";
1420 log(
LOGERR,tr(
"Plugin uses deprecated addCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&) , Replace the qicon by the path to the icon!"));
1423 if ( checkSignal(plugin,
"addCustomSelectionMode(QString,QString,QString,QString,SelectionInterface::PrimitiveType,QString&)") )
1424 connect(plugin , SIGNAL(addCustomSelectionMode(QString,QString,QString,QString,SelectionInterface::PrimitiveType,QString&)),
1425 this , SLOT(slotAddCustomSelectionMode(QString,QString,QString,QString,SelectionInterface::PrimitiveType,QString&)),Qt::DirectConnection);
1429 if ( checkSignal(plugin,
"addCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&,DataType)") ) {
1430 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";
1431 log(
LOGERR,tr(
"Plugin uses deprecated addCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&,DataType) , Replace the qicon by the path to the icon!"));
1434 if ( checkSignal(plugin,
"addCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&,DataType)") )
1435 connect(plugin , SIGNAL(addCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&,
DataType)),
1436 this , SLOT(slotAddCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&,
DataType)),Qt::DirectConnection);
1440 if ( checkSlot(plugin,
"slotAddCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&)") ) {
1441 errors += tr(
"Error: Plugin uses deprecated slotAddCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&) , Replace the qicon by the path to the icon!") +
"\n";
1442 log(
LOGERR,tr(
"Plugin uses deprecated slotAddCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&) , Replace the qicon by the path to the icon!"));
1445 if ( checkSlot( plugin ,
"slotAddCustomSelectionMode(QString,QString,QString,QString,SelectionInterface::PrimitiveType,QString&)" ) )
1446 connect(
this , SIGNAL(addCustomSelectionMode(QString,QString,QString,QString,SelectionInterface::PrimitiveType,QString&)),
1447 plugin , SLOT(slotAddCustomSelectionMode(QString,QString,QString,QString,SelectionInterface::PrimitiveType,QString&)),Qt::DirectConnection);
1451 if ( checkSlot(plugin,
"slotAddCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&,DataType)") ) {
1452 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";
1453 log(
LOGERR,tr(
"Plugin uses deprecated slotAddCustomSelectionMode(QString,QString,QString,QIcon,SelectionInterface::PrimitiveType,QString&,DataType) , Replace the qicon by the path to the icon!"));
1456 if ( checkSlot( plugin ,
"slotAddCustomSelectionMode(QString,QString,QString,QString,SelectionInterface::PrimitiveType,QString&,DataType)" ) )
1457 connect(
this , SIGNAL(addCustomSelectionMode(QString,QString,QString,QString,SelectionInterface::PrimitiveType,QString&,
DataType)),
1458 plugin , SLOT(slotAddCustomSelectionMode(QString,QString,QString,QString,SelectionInterface::PrimitiveType,QString&,
DataType)),Qt::DirectConnection);
1463 if ( checkSignal(plugin,
"addSelectionOperations(QString,QStringList,QString,SelectionInterface::PrimitiveType)") )
1464 connect(plugin , SIGNAL(addSelectionOperations(QString,QStringList,QString,SelectionInterface::PrimitiveType)),
1465 this , SLOT(slotAddSelectionOperations(QString,QStringList,QString,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1467 if ( checkSlot( plugin ,
"slotAddSelectionOperations(QString,QStringList,QString,SelectionInterface::PrimitiveType)" ) )
1468 connect(
this , SIGNAL(addSelectionOperations(QString,QStringList,QString,SelectionInterface::PrimitiveType)),
1469 plugin , SLOT(slotAddSelectionOperations(QString,QStringList,QString,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1471 if ( checkSignal(plugin,
"addSelectionParameters(QString,QWidget*,QString,SelectionInterface::PrimitiveType)") )
1472 connect(plugin , SIGNAL(addSelectionParameters(QString,QWidget*,QString,SelectionInterface::PrimitiveType)),
1473 this , SLOT(slotAddSelectionParameters(QString,QWidget*,QString,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1475 if ( checkSlot( plugin ,
"slotAddSelectionParameters(QString,QWidget*,QString,SelectionInterface::PrimitiveType)" ) )
1476 connect(
this , SIGNAL(addSelectionParameters(QString,QWidget*,QString,SelectionInterface::PrimitiveType)),
1477 plugin , SLOT(slotAddSelectionParameters(QString,QWidget*,QString,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1480 if ( checkSignal(plugin,
"selectionOperation(QString)") )
1481 connect(plugin , SIGNAL(selectionOperation(QString)),
1482 this , SLOT(slotSelectionOperation(QString)),Qt::DirectConnection);
1484 if ( checkSlot( plugin ,
"slotSelectionOperation(QString)" ) )
1485 connect(
this , SIGNAL(selectionOperation(QString)),
1486 plugin , SLOT(slotSelectionOperation(QString)),Qt::DirectConnection);
1488 if ( checkSignal(plugin,
"showToggleSelectionMode(QString,bool,SelectionInterface::PrimitiveType)") )
1489 connect(plugin , SIGNAL(showToggleSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),
1490 this , SLOT(slotShowToggleSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1492 if ( checkSlot( plugin ,
"slotShowToggleSelectionMode(QString,bool,SelectionInterface::PrimitiveType)" ) )
1493 connect(
this , SIGNAL(showToggleSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),
1494 plugin , SLOT(slotShowToggleSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1496 if ( checkSignal(plugin,
"showLassoSelectionMode(QString,bool,SelectionInterface::PrimitiveType)") )
1497 connect(plugin , SIGNAL(showLassoSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),
1498 this , SLOT(slotShowLassoSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1500 if ( checkSlot( plugin ,
"slotShowLassoSelectionMode(QString,bool,SelectionInterface::PrimitiveType)" ) )
1501 connect(
this , SIGNAL(showLassoSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),
1502 plugin , SLOT(slotShowLassoSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1504 if ( checkSignal(plugin,
"showVolumeLassoSelectionMode(QString,bool,SelectionInterface::PrimitiveType)") )
1505 connect(plugin , SIGNAL(showVolumeLassoSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),
1506 this , SLOT(slotShowVolumeLassoSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1508 if ( checkSlot( plugin ,
"slotShowVolumeLassoSelectionMode(QString,bool,SelectionInterface::PrimitiveType)" ) )
1509 connect(
this , SIGNAL(showVolumeLassoSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),
1510 plugin , SLOT(slotShowVolumeLassoSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1512 if ( checkSignal(plugin,
"showSurfaceLassoSelectionMode(QString,bool,SelectionInterface::PrimitiveType)") )
1513 connect(plugin , SIGNAL(showSurfaceLassoSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),
1514 this , SLOT(slotShowSurfaceLassoSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1516 if ( checkSlot( plugin ,
"slotShowSurfaceLassoSelectionMode(QString,bool,SelectionInterface::PrimitiveType)" ) )
1517 connect(
this , SIGNAL(showSurfaceLassoSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),
1518 plugin , SLOT(slotShowSurfaceLassoSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1520 if ( checkSignal(plugin,
"showSphereSelectionMode(QString,bool,SelectionInterface::PrimitiveType)") )
1521 connect(plugin , SIGNAL(showSphereSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),
1522 this , SLOT(slotShowSphereSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1524 if ( checkSlot( plugin ,
"slotShowSphereSelectionMode(QString,bool,SelectionInterface::PrimitiveType)" ) )
1525 connect(
this , SIGNAL(showSphereSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),
1526 plugin , SLOT(slotShowSphereSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1528 if ( checkSignal(plugin,
"showClosestBoundarySelectionMode(QString,bool,SelectionInterface::PrimitiveType)") )
1529 connect(plugin , SIGNAL(showClosestBoundarySelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),
1530 this , SLOT(slotShowClosestBoundarySelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1532 if ( checkSlot( plugin ,
"slotShowClosestBoundarySelectionMode(QString,bool,SelectionInterface::PrimitiveType)" ) )
1533 connect(
this , SIGNAL(showClosestBoundarySelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),
1534 plugin , SLOT(slotShowClosestBoundarySelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1536 if ( checkSignal(plugin,
"showFloodFillSelectionMode(QString,bool,SelectionInterface::PrimitiveType)") )
1537 connect(plugin , SIGNAL(showFloodFillSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),
1538 this , SLOT(slotShowFloodFillSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1540 if ( checkSlot( plugin ,
"slotShowFloodFillSelectionMode(QString,bool,SelectionInterface::PrimitiveType)" ) )
1541 connect(
this , SIGNAL(showFloodFillSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),
1542 plugin , SLOT(slotShowFloodFillSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1544 if ( checkSignal(plugin,
"showComponentsSelectionMode(QString,bool,SelectionInterface::PrimitiveType)") )
1545 connect(plugin , SIGNAL(showComponentsSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),
1546 this , SLOT(slotShowComponentsSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1548 if ( checkSlot( plugin ,
"slotShowComponentsSelectionMode(QString,bool,SelectionInterface::PrimitiveType)" ) )
1549 connect(
this , SIGNAL(showComponentsSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),
1550 plugin , SLOT(slotShowComponentsSelectionMode(QString,
bool,SelectionInterface::PrimitiveType)),Qt::DirectConnection);
1552 if ( checkSignal(plugin,
"toggleSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)") )
1553 connect(plugin , SIGNAL(toggleSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1554 this , SLOT(slotToggleSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1556 if ( checkSlot( plugin ,
"slotToggleSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)" ) )
1557 connect(
this , SIGNAL(toggleSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1558 plugin , SLOT(slotToggleSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1560 if ( checkSignal(plugin,
"lassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)") )
1561 connect(plugin , SIGNAL(lassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1562 this , SLOT(slotLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1564 if ( checkSlot( plugin ,
"slotLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)" ) )
1565 connect(
this , SIGNAL(lassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1566 plugin , SLOT(slotLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1568 if ( checkSignal(plugin,
"volumeLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)") )
1569 connect(plugin , SIGNAL(volumeLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1570 this , SLOT(slotVolumeLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1572 if ( checkSlot( plugin ,
"slotVolumeLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)" ) )
1573 connect(
this , SIGNAL(volumeLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1574 plugin , SLOT(slotVolumeLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1576 if ( checkSignal(plugin,
"surfaceLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)") )
1577 connect(plugin , SIGNAL(surfaceLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1578 this , SLOT(slotSurfaceLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1580 if ( checkSlot( plugin ,
"slotSurfaceLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)" ) )
1581 connect(
this , SIGNAL(surfaceLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1582 plugin , SLOT(slotSurfaceLassoSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1584 if ( checkSignal(plugin,
"sphereSelection(QMouseEvent*,double,SelectionInterface::PrimitiveType,bool)") )
1585 connect(plugin , SIGNAL(sphereSelection(QMouseEvent*,
double,SelectionInterface::PrimitiveType,
bool)),
1586 this , SLOT(slotSphereSelection(QMouseEvent*,
double,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1588 if ( checkSlot( plugin ,
"slotSphereSelection(QMouseEvent*,double,SelectionInterface::PrimitiveType,bool)" ) )
1589 connect(
this , SIGNAL(sphereSelection(QMouseEvent*,
double,SelectionInterface::PrimitiveType,
bool)),
1590 plugin , SLOT(slotSphereSelection(QMouseEvent*,
double,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1592 if ( checkSignal(plugin,
"closestBoundarySelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)") )
1593 connect(plugin , SIGNAL(closestBoundarySelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1594 this , SLOT(slotClosestBoundarySelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1596 if ( checkSlot( plugin ,
"slotClosestBoundarySelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)" ) )
1597 connect(
this , SIGNAL(closestBoundarySelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1598 plugin , SLOT(slotClosestBoundarySelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1600 if ( checkSignal(plugin,
"floodFillSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)") )
1601 connect(plugin , SIGNAL(floodFillSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1602 this , SLOT(slotFloodFillSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1604 if ( checkSlot( plugin ,
"slotFloodFillSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)" ) )
1605 connect(
this , SIGNAL(floodFillSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1606 plugin , SLOT(slotFloodFillSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1608 if ( checkSignal(plugin,
"componentsSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)") )
1609 connect(plugin , SIGNAL(componentsSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1610 this , SLOT(slotComponentsSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1612 if ( checkSlot( plugin ,
"slotComponentsSelection(QMouseEvent*,SelectionInterface::PrimitiveType,bool)" ) )
1613 connect(
this , SIGNAL(componentsSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),
1614 plugin , SLOT(slotComponentsSelection(QMouseEvent*,SelectionInterface::PrimitiveType,
bool)),Qt::DirectConnection);
1616 if ( checkSignal(plugin,
"customSelection(QMouseEvent*,SelectionInterface::PrimitiveType,QString,bool)") )
1617 connect(plugin , SIGNAL(customSelection(QMouseEvent*,SelectionInterface::PrimitiveType,QString,
bool)),
1618 this , SLOT(slotCustomSelection(QMouseEvent*,SelectionInterface::PrimitiveType,QString,
bool)),Qt::DirectConnection);
1620 if ( checkSlot( plugin ,
"slotCustomSelection(QMouseEvent*,SelectionInterface::PrimitiveType,QString,bool)" ) )
1621 connect(
this , SIGNAL(customSelection(QMouseEvent*,SelectionInterface::PrimitiveType,QString,
bool)),
1622 plugin , SLOT(slotCustomSelection(QMouseEvent*,SelectionInterface::PrimitiveType,QString,
bool)),Qt::DirectConnection);
1624 if ( checkSignal(plugin,
"getActiveDataTypes(SelectionInterface::TypeList&)") )
1625 connect(plugin , SIGNAL(getActiveDataTypes(SelectionInterface::TypeList&)),
1626 this , SLOT(slotGetActiveDataTypes(SelectionInterface::TypeList&)),Qt::DirectConnection);
1628 if ( checkSlot( plugin ,
"slotGetActiveDataTypes(SelectionInterface::TypeList&)" ) )
1629 connect(
this , SIGNAL(getActiveDataTypes(SelectionInterface::TypeList&)),
1630 plugin , SLOT(slotGetActiveDataTypes(SelectionInterface::TypeList&)),Qt::DirectConnection);
1632 if ( checkSignal(plugin,
"getActivePrimitiveType(SelectionInterface::PrimitiveType&)") )
1633 connect(plugin , SIGNAL(getActivePrimitiveType(SelectionInterface::PrimitiveType&)),
1634 this , SLOT(slotGetActivePrimitiveType(SelectionInterface::PrimitiveType&)),Qt::DirectConnection);
1636 if ( checkSlot( plugin ,
"slotGetActivePrimitiveType(SelectionInterface::PrimitiveType&)" ) )
1637 connect(
this , SIGNAL(getActivePrimitiveType(SelectionInterface::PrimitiveType&)),
1638 plugin , SLOT(slotGetActivePrimitiveType(SelectionInterface::PrimitiveType&)),Qt::DirectConnection);
1640 if ( checkSignal(plugin,
"targetObjectsOnly(bool&)") )
1641 connect(plugin , SIGNAL(targetObjectsOnly(
bool&)),
1642 this , SLOT(slotTargetObjectsOnly(
bool&)),Qt::DirectConnection);
1644 if ( checkSlot( plugin ,
"slotTargetObjectsOnly(bool&)" ) )
1645 connect(
this , SIGNAL(targetObjectsOnly(
bool&)),
1646 plugin , SLOT(slotTargetObjectsOnly(
bool&)),Qt::DirectConnection);
1648 if ( checkSignal(plugin,
"loadSelection(const INIFile&)") )
1649 connect(plugin , SIGNAL(loadSelection(
const INIFile&)),
1650 this , SLOT(slotLoadSelection(
const INIFile&)),Qt::DirectConnection);
1652 if ( checkSlot( plugin ,
"slotLoadSelection(const INIFile&)" ) )
1653 connect(
this , SIGNAL(loadSelection(
const INIFile&)),
1654 plugin , SLOT(slotLoadSelection(
const INIFile&)),Qt::DirectConnection);
1656 if ( checkSignal(plugin,
"saveSelection(INIFile&)") )
1657 connect(plugin , SIGNAL(saveSelection(
INIFile&)),
1658 this , SLOT(slotSaveSelection(
INIFile&)),Qt::DirectConnection);
1660 if ( checkSlot( plugin ,
"slotSaveSelection(INIFile&)" ) )
1661 connect(
this , SIGNAL(saveSelection(
INIFile&)),
1662 plugin , SLOT(slotSaveSelection(
INIFile&)),Qt::DirectConnection);
1664 if ( checkSignal(plugin,
"registerKeyShortcut(int,Qt::KeyboardModifiers)") )
1665 connect(plugin , SIGNAL(registerKeyShortcut(
int,Qt::KeyboardModifiers)),
1666 this , SLOT(slotRegisterKeyShortcut(
int,Qt::KeyboardModifiers)),Qt::DirectConnection);
1668 if ( checkSlot( plugin ,
"slotRegisterKeyShortcut(int,Qt::KeyboardModifiers)" ) )
1669 connect(
this , SIGNAL(registerKeyShortcut(
int,Qt::KeyboardModifiers)),
1670 plugin , SLOT(slotRegisterKeyShortcut(
int,Qt::KeyboardModifiers)),Qt::DirectConnection);
1672 if ( checkSignal(plugin,
"keyShortcutEvent(int,Qt::KeyboardModifiers)") )
1673 connect(plugin , SIGNAL(keyShortcutEvent(
int,Qt::KeyboardModifiers)),
1674 this , SLOT(slotKeyShortcutEvent(
int,Qt::KeyboardModifiers)),Qt::DirectConnection);
1676 if ( checkSlot( plugin ,
"slotKeyShortcutEvent(int,Qt::KeyboardModifiers)" ) )
1677 connect(
this , SIGNAL(keyShortcutEvent(
int,Qt::KeyboardModifiers)),
1678 plugin , SLOT(slotKeyShortcutEvent(
int,Qt::KeyboardModifiers)),Qt::DirectConnection);
1683 if ( texturePlugin && OpenFlipper::Options::gui() ) {
1684 supported = supported +
"Textures ";
1686 if ( checkSignal(plugin,
"addTexture(QString,QString,uint,int)") )
1687 connect(plugin , SIGNAL(addTexture( QString , QString , uint ,
int )),
1688 this , SLOT(slotAddTexture(QString, QString, uint,
int)),Qt::DirectConnection);
1690 if ( checkSignal(plugin,
"addTexture(QString,QImage,uint,int)") )
1691 connect(plugin , SIGNAL(addTexture( QString , QImage , uint ,
int )),
1692 this , SLOT(slotAddTexture(QString, QImage, uint,
int)),Qt::DirectConnection);
1694 if ( checkSlot( plugin ,
"slotTextureAdded(QString,QString,uint,int)" ) )
1695 connect(
this , SIGNAL(addTexture(QString,QString, uint,
int)),
1696 plugin , SLOT(slotTextureAdded(QString,QString, uint,
int)),Qt::DirectConnection);
1698 if ( checkSlot( plugin ,
"slotTextureAdded(QString,QImage,uint,int)" ) )
1699 connect(
this , SIGNAL(addTexture(QString,QImage, uint,
int)),
1700 plugin , SLOT(slotTextureAdded(QString,QImage, uint,
int)),Qt::DirectConnection);
1702 if ( checkSignal(plugin,
"addTexture(QString,QString,uint)") )
1703 connect(plugin , SIGNAL(addTexture( QString , QString , uint )),
1704 this , SLOT(slotAddTexture(QString, QString, uint)),Qt::AutoConnection);
1706 if ( checkSignal(plugin,
"addTexture(QString,QImage,uint)") )
1707 connect(plugin , SIGNAL(addTexture( QString , QImage , uint )),
1708 this , SLOT(slotAddTexture(QString, QImage, uint)),Qt::AutoConnection);
1710 if ( checkSlot( plugin ,
"slotTextureAdded(QString,QString,uint)" ) )
1711 connect(
this , SIGNAL(addTexture(QString,QString, uint)),
1712 plugin , SLOT(slotTextureAdded(QString,QString, uint)),Qt::DirectConnection);
1714 if ( checkSlot( plugin ,
"slotTextureAdded(QString,QImage,uint)" ) )
1715 connect(
this , SIGNAL(addTexture(QString,QImage, uint)),
1716 plugin , SLOT(slotTextureAdded(QString,QImage, uint)),Qt::DirectConnection);
1718 if ( checkSignal(plugin,
"updateTexture(QString,int)") )
1719 connect(plugin , SIGNAL(updateTexture( QString ,
int )),
1720 this , SLOT(slotUpdateTexture(QString ,
int)),Qt::AutoConnection);
1722 if ( checkSlot( plugin ,
"slotUpdateTexture(QString,int)" ) )
1723 connect(
this , SIGNAL(updateTexture(QString ,
int)),
1724 plugin , SLOT(slotUpdateTexture(QString,
int )),Qt::DirectConnection);
1726 if ( checkSignal(plugin,
"updateAllTextures()") )
1727 connect(plugin , SIGNAL(updateAllTextures()),
1728 this , SLOT(slotUpdateAllTextures()));
1730 if ( checkSlot( plugin ,
"slotUpdateAllTextures()" ) )
1731 connect(
this , SIGNAL(updateAllTextures()),
1732 plugin , SLOT(slotUpdateAllTextures()));
1734 if ( checkSignal(plugin,
"updatedTextures(QString,int)") )
1735 connect(plugin , SIGNAL(updatedTextures( QString ,
int )),
1736 this , SLOT(slotTextureUpdated( QString,
int ) ),Qt::AutoConnection);
1738 if ( checkSlot( plugin ,
"slotTextureUpdated(QString,int)" ) )
1739 connect(
this , SIGNAL(updatedTextures( QString ,
int )),
1740 plugin , SLOT(slotTextureUpdated( QString,
int ) ),Qt::DirectConnection);
1742 if ( checkSignal(plugin,
"setTextureMode(QString,QString,int)") )
1743 connect(plugin , SIGNAL(setTextureMode(QString, QString,
int )),
1744 this , SLOT(slotSetTextureMode(QString, QString,
int )),Qt::AutoConnection );
1746 if ( checkSlot( plugin ,
"slotSetTextureMode(QString,QString,int)" ) )
1747 connect(
this , SIGNAL(setTextureMode(QString, QString,
int )),
1748 plugin , SLOT(slotSetTextureMode(QString, QString,
int )),Qt::DirectConnection );
1750 if ( checkSignal(plugin,
"setTextureMode(QString,QString)") )
1751 connect(plugin , SIGNAL(setTextureMode(QString ,QString )),
1752 this , SLOT(slotSetTextureMode(QString ,QString )),Qt::AutoConnection );
1754 if ( checkSlot( plugin ,
"slotSetTextureMode(QString,QString)" ) )
1755 connect(
this , SIGNAL(setTextureMode(QString ,QString )),
1756 plugin , SLOT(slotSetTextureMode(QString ,QString )),Qt::DirectConnection );
1758 if ( checkSignal(plugin,
"switchTexture(QString,int)") )
1759 connect(plugin , SIGNAL(switchTexture(QString,
int )),
1760 this , SLOT(slotSwitchTexture(QString,
int )),Qt::QueuedConnection);
1762 if ( checkSlot( plugin ,
"slotSwitchTexture(QString,int)" ) )
1763 connect(
this , SIGNAL(switchTexture(QString,
int )),
1764 plugin , SLOT(slotSwitchTexture(QString,
int )),Qt::QueuedConnection);
1766 if ( checkSignal(plugin,
"switchTexture(QString)") )
1767 connect(plugin , SIGNAL(switchTexture(QString )),
1768 this , SLOT(slotSwitchTexture(QString )),Qt::QueuedConnection);
1770 if ( checkSlot( plugin ,
"slotSwitchTexture(QString)" ) )
1771 connect(
this , SIGNAL(switchTexture(QString )),
1772 plugin , SLOT(slotSwitchTexture(QString )),Qt::QueuedConnection);
1776 if ( checkSignal( plugin ,
"textureChangeImage(QString,QImage&,int)" ) )
1777 connect(plugin , SIGNAL(textureChangeImage(QString,QImage&,
int)),
1778 this , SLOT(slotTextureChangeImage(QString,QImage&,
int)),Qt::DirectConnection);
1780 if ( checkSlot( plugin ,
"slotTextureChangeImage(QString,QImage&,int)" ) )
1781 connect(
this , SIGNAL(textureChangeImage(QString,QImage&,
int)),
1782 plugin , SLOT(slotTextureChangeImage(QString,QImage&,
int)),Qt::DirectConnection);
1784 if ( checkSignal( plugin ,
"textureChangeImage(QString,QImage&)" ) )
1785 connect(plugin , SIGNAL(textureChangeImage(QString,QImage&)),
1786 this , SLOT(slotTextureChangeImage(QString,QImage&)),Qt::DirectConnection);
1788 if ( checkSlot( plugin ,
"slotTextureChangeImage(QString,QImage&)" ) )
1789 connect(
this , SIGNAL(textureChangeImage(QString,QImage&)),
1790 plugin , SLOT(slotTextureChangeImage(QString,QImage&)),Qt::DirectConnection);
1792 if ( checkSignal( plugin ,
"addMultiTexture(QString,QString,QString,int,int&)" ) )
1793 connect(plugin , SIGNAL(addMultiTexture(QString,QString,QString,
int,
int&) ),
1794 this , SLOT(slotMultiTextureAdded(QString,QString,QString,
int,
int&) ),Qt::DirectConnection);
1796 if ( checkSignal( plugin ,
"addMultiTexture(QString,QString,QImage,int,int&)" ) )
1797 connect(plugin , SIGNAL(addMultiTexture(QString,QString,QImage,
int,
int&) ),
1798 this , SLOT(slotMultiTextureAdded(QString,QString,QImage,
int,
int&) ),Qt::DirectConnection);
1800 if ( checkSlot( plugin ,
"slotMultiTextureAdded( QString,QString,QString,int,int&)" ) )
1801 connect(
this , SIGNAL(addMultiTexture(QString,QString,QString,
int,
int&) ),
1802 plugin , SLOT(slotMultiTextureAdded( QString,QString,QString,
int,
int&) ),Qt::DirectConnection);
1804 if ( checkSlot( plugin ,
"slotMultiTextureAdded( QString,QString,QImage,int,int&)" ) )
1805 connect(
this , SIGNAL(addMultiTexture(QString,QString,QImage,
int,
int&) ),
1806 plugin , SLOT(slotMultiTextureAdded( QString,QString,QImage,
int,
int&) ),Qt::DirectConnection);
1808 if ( checkSignal( plugin ,
"textureGetImage(QString,QImage&,int)" ) )
1809 connect(plugin , SIGNAL(textureGetImage(QString,QImage&,
int)),
1810 this , SLOT(slotTextureGetImage(QString,QImage&,
int)),Qt::DirectConnection);
1812 if ( checkSlot( plugin ,
"slotTextureGetImage(QString,QImage&,int)" ) )
1813 connect(
this , SIGNAL(textureGetImage(QString,QImage&,
int)),
1814 plugin , SLOT(slotTextureGetImage(QString,QImage&,
int)),Qt::DirectConnection);
1816 if ( checkSignal( plugin ,
"textureGetImage(QString,QImage&)" ) )
1817 connect(plugin , SIGNAL(textureGetImage(QString,QImage&)),
1818 this , SLOT(slotTextureGetImage(QString,QImage&)),Qt::DirectConnection);
1820 if ( checkSlot( plugin ,
"slotTextureGetImage(QString,QImage&)" ) )
1821 connect(
this , SIGNAL(textureGetImage(QString,QImage&)),
1822 plugin , SLOT(slotTextureGetImage(QString,QImage&)),Qt::DirectConnection);
1824 if ( checkSignal( plugin ,
"textureIndex(QString,int,int&)" ) )
1825 connect(plugin , SIGNAL(textureIndex(QString,
int,
int&)),
1826 this , SLOT(slotTextureIndex(QString,
int,
int&)),Qt::DirectConnection);
1828 if ( checkSlot( plugin ,
"slotTextureIndex(QString,int,int&)" ) )
1829 connect(
this , SIGNAL(textureIndex(QString,
int,
int&)),
1830 plugin , SLOT(slotTextureIndex(QString,
int,
int&)),Qt::DirectConnection);
1832 if ( checkSignal( plugin ,
"textureIndexPropertyName(int,QString&)" ) )
1833 connect(plugin , SIGNAL(textureIndexPropertyName(
int,QString&)),
1834 this , SLOT(slotTextureIndexPropertyName(
int,QString&)),Qt::DirectConnection);
1836 if ( checkSlot( plugin ,
"slotTextureIndexPropertyName(int,QString&)" ) )
1837 connect(
this , SIGNAL(textureIndexPropertyName(
int,QString&)),
1838 plugin , SLOT(slotTextureIndexPropertyName(
int,QString&)),Qt::DirectConnection);
1840 if ( checkSignal( plugin ,
"textureName(int,int,QString&)" ) )
1841 connect(plugin , SIGNAL(textureName(
int,
int,QString&)),
1842 this , SLOT(slotTextureName(
int,
int,QString&)),Qt::DirectConnection);
1844 if ( checkSlot( plugin ,
"slotTextureName(int,int,QString&)" ) )
1845 connect(
this , SIGNAL(textureName(
int,
int,QString&)),
1846 plugin , SLOT(slotTextureName(
int,
int,QString&)),Qt::DirectConnection);
1848 if ( checkSignal( plugin ,
"textureFilename(int,QString,QString&)" ) )
1849 connect(plugin , SIGNAL(textureFilename(
int,QString,QString&)),
1850 this , SLOT(slotTextureFilename(
int,QString,QString&)),Qt::DirectConnection);
1852 if ( checkSlot( plugin ,
"slotTextureFilename(int,QString,QString&)" ) )
1853 connect(
this , SIGNAL(textureFilename(
int,QString,QString&)),
1854 plugin , SLOT(slotTextureFilename(
int,QString,QString&)),Qt::DirectConnection);
1856 if ( checkSignal( plugin ,
"getCurrentTexture(int,QString&)" ) )
1857 connect(plugin , SIGNAL(getCurrentTexture(
int,QString&)),
1858 this , SLOT(slotGetCurrentTexture(
int,QString&)),Qt::DirectConnection);
1860 if ( checkSlot( plugin ,
"slotGetCurrentTexture(int,QString&)" ) )
1861 connect(
this , SIGNAL(getCurrentTexture(
int,QString&)),
1862 plugin , SLOT(slotGetCurrentTexture(
int,QString&)),Qt::DirectConnection);
1864 if ( checkSignal( plugin ,
"getSubTextures(int,QString,QStringList&)" ) )
1865 connect(plugin , SIGNAL(getSubTextures(
int,QString,QStringList&)),
1866 this , SLOT(slotGetSubTextures(
int,QString,QStringList&)),Qt::DirectConnection);
1868 if ( checkSlot( plugin ,
"slotGetSubTextures(int,QString,QStringList&)" ) )
1869 connect(
this , SIGNAL(getSubTextures(
int,QString,QStringList&)),
1870 plugin , SLOT(slotGetSubTextures(
int,QString,QStringList&)),Qt::DirectConnection);
1875 if ( backupPlugin ) {
1876 supported = supported +
"Backups ";
1879 if ( checkSignal( plugin ,
"createBackup(int,QString,UpdateType)" ) ) {
1880 connect(plugin , SIGNAL(createBackup(
int,QString,
UpdateType)) ,
1881 this , SIGNAL(createBackup(
int,QString,
UpdateType)),Qt::DirectConnection );
1884 if ( checkSlot( plugin ,
"slotCreateBackup(int,QString,UpdateType)" ) ) {
1885 connect(
this , SIGNAL(createBackup(
int,QString,
UpdateType)),
1886 plugin , SLOT( slotCreateBackup(
int,QString,
UpdateType) ),Qt::DirectConnection);
1890 if ( checkSignal( plugin ,
"createBackup(IdList,QString,std::vector<UpdateType>)" ) ) {
1891 connect(plugin , SIGNAL(createBackup(
IdList,QString,std::vector<UpdateType>)) ,
1892 this , SIGNAL(createBackup(
IdList,QString,std::vector<UpdateType>)),Qt::DirectConnection );
1895 if ( checkSlot( plugin ,
"slotCreateBackup(IdList,QString,std::vector<UpdateType>)" ) ) {
1896 connect(
this , SIGNAL(createBackup(
IdList,QString,std::vector<UpdateType>)),
1897 plugin , SLOT( slotCreateBackup(
IdList,QString,std::vector<UpdateType>) ),Qt::DirectConnection);
1902 if ( checkSignal( plugin ,
"undo(int)" ) ) {
1903 connect(plugin , SIGNAL(undo(
int)) ,
1904 this , SIGNAL(undo(
int)),Qt::DirectConnection );
1908 if ( checkSlot( plugin ,
"slotUndo(int)" ) ) {
1909 connect(
this , SIGNAL(undo(
int)),
1910 plugin , SLOT( slotUndo(
int) ),Qt::DirectConnection);
1914 if ( checkSignal( plugin ,
"redo(int)" ) ) {
1915 connect(plugin , SIGNAL(redo(
int)) ,
1916 this , SIGNAL(redo(
int)),Qt::DirectConnection );
1920 if ( checkSlot( plugin ,
"slotRedo(int)" ) ) {
1921 connect(
this , SIGNAL(redo(
int)),
1922 plugin , SLOT( slotRedo(
int) ),Qt::DirectConnection);
1926 if ( checkSignal( plugin ,
"undo()" ) ) {
1927 connect(plugin , SIGNAL(undo()) ,
1928 this , SIGNAL(undo()),Qt::DirectConnection );
1932 if ( checkSlot( plugin ,
"slotUndo()" ) ) {
1933 connect(
this , SIGNAL(undo()),
1934 plugin , SLOT( slotUndo() ),Qt::DirectConnection);
1938 if ( checkSignal( plugin ,
"redo()" ) ) {
1939 connect(plugin , SIGNAL(redo()) ,
1940 this , SIGNAL(redo()),Qt::DirectConnection );
1944 if ( checkSlot( plugin ,
"slotRedo()" ) ) {
1945 connect(
this , SIGNAL(redo()),
1946 plugin , SLOT( slotRedo() ),Qt::DirectConnection);
1954 if ( checkSignal( plugin ,
"aboutToRestore(int)" ) ) {
1955 connect(plugin , SIGNAL( aboutToRestore(
int)) ,
1956 this , SIGNAL( aboutToRestore(
int) ),Qt::DirectConnection);
1960 if ( checkSignal( plugin ,
"restored(int)" ) ) {
1961 connect(plugin , SIGNAL(restored(
int)) ,
1962 this , SIGNAL( restored(
int) ),Qt::DirectConnection);
1970 if ( checkSlot( plugin ,
"slotAboutToRestore(int)" ) ) {
1971 connect(
this , SIGNAL( aboutToRestore(
int)) ,
1972 plugin , SLOT( slotAboutToRestore(
int) ),Qt::DirectConnection);
1976 if ( checkSlot( plugin ,
"slotRestored(int)" ) ) {
1977 connect(
this , SIGNAL( restored(
int)) ,
1978 plugin , SLOT( slotRestored(
int) ),Qt::DirectConnection);
1982 if ( checkSignal( plugin ,
"generateBackup(int,QString,UpdateType)" ) ) {
1983 connect(plugin , SIGNAL(generateBackup(
int,QString,
UpdateType)) ,
1984 this , SLOT(slotGenerateBackup(
int,QString,
UpdateType)),Qt::DirectConnection );
1990 if ( LoadSavePlugin ) {
1991 supported = supported +
"Load/Save ";
1992 if ( checkSignal(plugin,
"load( QString,DataType,int& )" ) )
1993 connect(plugin , SIGNAL(load( QString,
DataType,
int& )) ,
1994 this , SLOT(slotLoad( QString,
DataType,
int& )),Qt::DirectConnection );
1995 if ( checkSignal(plugin,
"save(int,QString)" ) )
1996 connect(plugin , SIGNAL( save(
int,QString) ) ,
1997 this , SLOT( saveObject(
int,QString) ), Qt::DirectConnection);
1999 if ( checkSlot( plugin ,
"fileOpened(int)" ) )
2000 connect(
this , SIGNAL( openedFile(
int) ) ,
2001 plugin , SLOT( fileOpened(
int ) ),Qt::DirectConnection);
2003 if ( checkSignal(plugin,
"addEmptyObject(DataType,int&)" ) )
2004 connect(plugin , SIGNAL( addEmptyObject(
DataType,
int& )) ,
2005 this , SLOT( slotAddEmptyObject(
DataType,
int&) ),Qt::DirectConnection);
2007 if ( checkSignal(plugin,
"copyObject(int,int&)" ) )
2008 connect(plugin , SIGNAL( copyObject(
int,
int& )) ,
2009 this , SLOT( slotCopyObject(
int,
int&) ),Qt::DirectConnection);
2012 if ( checkSignal(plugin,
"emptyObjectAdded(int)" ) )
2013 connect(plugin , SIGNAL( emptyObjectAdded(
int ) ) ,
2014 this , SLOT( slotEmptyObjectAdded (
int ) ),Qt::QueuedConnection);
2017 if ( checkSlot(plugin,
"addedEmptyObject(int)" ) )
2018 connect(
this , SIGNAL( emptyObjectAdded(
int ) ) ,
2019 plugin , SLOT( addedEmptyObject(
int ) ),Qt::DirectConnection);
2021 if ( checkSignal(plugin,
"deleteObject(int)" ) )
2022 connect(plugin , SIGNAL( deleteObject(
int ) ) ,
2023 this , SLOT( deleteObject(
int ) ),Qt::AutoConnection);
2025 if ( checkSignal(plugin,
"deleteAllObjects()" ) )
2026 connect(plugin , SIGNAL( deleteAllObjects() ) ,
2027 this , SLOT( slotDeleteAllObjects() ),Qt::DirectConnection);
2029 if ( checkSignal(plugin,
"getAllFileFilters(QStringList&)" ) )
2030 connect(plugin , SIGNAL( getAllFileFilters(QStringList&) ) ,
2031 this , SLOT( slotGetAllFilters(QStringList&) ),Qt::DirectConnection);
2033 if ( checkSlot(plugin,
"objectDeleted(int)" ) )
2034 connect(
this , SIGNAL( objectDeleted(
int ) ) ,
2035 plugin , SLOT( objectDeleted(
int ) ),Qt::DirectConnection);
2041 if ( viewPlugin && OpenFlipper::Options::gui() ) {
2042 supported = supported +
"View ";
2044 if ( checkSignal(plugin,
"getStackWidget(QString,QWidget*&)" ) )
2045 connect(plugin , SIGNAL(getStackWidget( QString , QWidget*&)),
2046 coreWidget_ , SLOT( slotGetStackWidget( QString , QWidget*& ) ) ,Qt::DirectConnection );
2047 if ( checkSignal(plugin,
"addStackWidget(QString,QWidget*)" ) )
2048 connect(plugin , SIGNAL(addStackWidget( QString , QWidget*)),
2049 coreWidget_ , SLOT( slotAddStackWidget( QString , QWidget* ) ) ,Qt::DirectConnection );
2050 if ( checkSignal(plugin,
"updateStackWidget(QString,QWidget*)" ) )
2051 connect(plugin , SIGNAL(updateStackWidget( QString , QWidget*)),
2052 coreWidget_ , SLOT( slotUpdateStackWidget( QString , QWidget* ) ) ,Qt::DirectConnection );
2057 if ( processPlugin ) {
2058 supported = supported +
"Process ";
2060 if ( checkSignal(plugin,
"startJob(QString,QString,int,int,bool)" ) )
2061 connect(plugin , SIGNAL(startJob(QString, QString,
int,
int,
bool)),
2062 this , SLOT( slotStartJob(QString, QString,
int,
int,
bool) ), Qt::DirectConnection );
2064 errors += tr(
"Error: Process Interface defined but no startJob signal found!") +
"\n";
2067 if ( checkSignal(plugin,
"setJobState(QString,int)" ) )
2068 connect(plugin , SIGNAL(setJobState(QString,
int)),
2069 this , SLOT( slotSetJobState(QString,
int) ), Qt::QueuedConnection );
2071 errors += tr(
"Error: Process Interface defined but no setJobState signal found!") +
"\n";
2074 if ( checkSignal(plugin,
"setJobName(QString,QString)" ) )
2075 connect(plugin , SIGNAL(setJobName(QString, QString)),
2076 this , SLOT( slotSetJobName(QString, QString) ), Qt::QueuedConnection );
2078 errors += tr(
"Error: Process Interface defined but no setJobName signal found!") +
"\n";
2081 if ( checkSignal(plugin,
"setJobDescription(QString,QString)" ) )
2082 connect(plugin , SIGNAL(setJobDescription(QString, QString)),
2083 this , SLOT( slotSetJobDescription(QString, QString) ), Qt::QueuedConnection );
2085 errors += tr(
"Error: Process Interface defined but no setJobDescription signal found!") +
"\n";
2088 if ( checkSignal(plugin,
"cancelJob(QString)" ) )
2089 connect(plugin , SIGNAL(cancelJob(QString)),
2090 this , SLOT( slotCancelJob(QString) ), Qt::QueuedConnection );
2092 if ( checkSignal(plugin,
"finishJob(QString)" ) )
2093 connect(plugin , SIGNAL(finishJob(QString)),
2094 this , SLOT( slotFinishJob(QString) ), Qt::QueuedConnection );
2096 errors += tr(
"Error: Process Interface defined but no finishJob signal found!") +
"\n";
2099 if ( checkSlot(plugin,
"canceledJob(QString)" ) )
2100 connect(
this , SIGNAL( jobCanceled( QString ) ) ,
2101 plugin , SLOT( canceledJob(QString) ),Qt::QueuedConnection);
2103 errors += tr(
"Error: Process Interface defined but no cancel canceledJob slot found!") +
"\n";
2110 supported = supported +
"RPC ";
2112 if ( checkSignal(plugin,
"pluginExists(QString,bool&)" ) )
2113 connect(plugin , SIGNAL( pluginExists(QString,
bool&) ),
2114 this , SLOT( slotPluginExists(QString,
bool&) ) ,Qt::DirectConnection );
2115 if ( checkSignal(plugin,
"functionExists(QString,QString,bool&)" ) )
2116 connect(plugin , SIGNAL(functionExists(QString,QString,
bool&)),
2117 this , SLOT( slotFunctionExists(QString,QString,
bool&) ) ,Qt::DirectConnection );
2118 if ( checkSignal(plugin,
"call(QString,QString,bool&)" ) )
2119 connect(plugin , SIGNAL(call(QString,QString,
bool&)),
2120 this , SLOT(slotCall(QString,QString,
bool&)) ,Qt::DirectConnection );
2121 if ( checkSignal(plugin,
"call(QString,bool&)" ) )
2122 connect(plugin , SIGNAL(call(QString,
bool&)),
2123 this , SLOT(slotCall(QString,
bool&)) ,Qt::DirectConnection );
2124 if ( checkSignal(plugin,
"getValue(QString,QVariant&)" ) )
2125 connect(plugin , SIGNAL(getValue(QString,QVariant&)),
2126 this , SLOT(slotGetValue(QString,QVariant&)) ,Qt::DirectConnection );
2131 if ( interconnectionPlugin ) {
2132 supported = supported +
"Plugin Interconnection ";
2134 if ( checkSignal(plugin,
"crossPluginConnect(QString,const char*,QString,const char*)" ) ) {
2135 connect(plugin , SIGNAL( crossPluginConnect(QString,
const char*,QString,
const char*) ),
2136 this , SLOT( slotCrossPluginConnect(QString,
const char*,QString,
const char*) ));
2139 if ( checkSignal(plugin,
"crossPluginConnectQueued(QString,const char*,QString,const char*)" ) ) {
2140 connect(plugin , SIGNAL( crossPluginConnectQueued(QString,
const char*,QString,
const char*) ),
2141 this , SLOT( slotCrossPluginConnectQueued(QString,
const char*,QString,
const char*) ));
2147 if ( renderPlugin ) {
2148 supported = supported +
"Rendering ";
2150 if ( checkSlot( plugin ,
"rendererName()" ) ) {
2151 QString rendererNameString =
"";
2154 QMetaObject::invokeMethod(plugin,
"rendererName", Qt::DirectConnection, Q_RETURN_ARG(QString,rendererNameString) ) ;
2157 QString openGLCheck =
"";
2158 QMetaObject::invokeMethod(plugin,
"checkOpenGL", Qt::DirectConnection, Q_RETURN_ARG(QString,openGLCheck) ) ;
2160 if ( openGLCheck !=
"" ) {
2161 errors += tr(
"Error: Insufficient OpenGL capabilities in Renderer Plugin ") + rendererNameString +
" !" +
"\n";
2162 errors += openGLCheck +
"\n";
2164 printPluginLoadLog(errors, warnings);
2169 PluginStorage::pluginsFailed().push_back(info);
2176 if ( ! renderManager().rendererExists(rendererNameString) ) {
2177 rendererInfo = renderManager().
newRenderer(rendererNameString);
2179 errors += tr(
"Error: Renderer Plugin %1 already exists") +
"\n";
2183 if ( rendererInfo != 0) {
2184 rendererInfo->
plugin = renderPlugin;
2185 rendererInfo->
name = basePlugin->
name();
2194 rendererInfo->
modes = supportedModes;
2196 if ( checkSlot( plugin ,
"optionsAction()" ) ) {
2206 errors += tr(
"Error: Renderer Plugin without rendererName Function?!") +
"\n";
2213 if ( postProcessorPlugin ) {
2214 supported = supported +
"PostProcessor ";
2216 if ( checkSlot( plugin ,
"postProcessorName()" ) ) {
2217 QString postProcessorNameString =
"";
2220 QMetaObject::invokeMethod(plugin,
"postProcessorName", Qt::DirectConnection, Q_RETURN_ARG(QString,postProcessorNameString) ) ;
2223 QString openGLCheck =
"";
2224 QMetaObject::invokeMethod(plugin,
"checkOpenGL", Qt::DirectConnection, Q_RETURN_ARG(QString,openGLCheck) ) ;
2226 if ( openGLCheck !=
"" ) {
2227 errors += tr(
"Error: Insufficient OpenGL capabilities in post processor Plugin ") + postProcessorNameString +
" !" +
"\n";
2228 errors += openGLCheck +
"\n";
2233 PluginStorage::pluginsFailed().push_back(info);
2240 if ( ! postProcessorManager().postProcessorExists(postProcessorNameString) ) {
2241 postProcessorInfo = postProcessorManager().
newPostProcessor(postProcessorNameString);
2243 errors += tr(
"Error: PostProcessor Plugin %1 already exists").arg(postProcessorNameString) +
"\n";
2247 if ( postProcessorInfo != 0) {
2248 postProcessorInfo->
plugin = postProcessorPlugin;
2249 postProcessorInfo->
name = basePlugin->
name();
2253 if ( checkSlot( plugin ,
"optionsAction()" ) ) {
2263 errors += tr(
"Error: PostProcessor Plugin without postProcessorName Function?!") +
"\n";
2269 if ( aboutInfoPlugin && OpenFlipper::Options::gui() ) {
2270 supported = supported +
"AboutInfo ";
2272 if ( checkSignal(plugin,
"addAboutInfo(QString,QString)") )
2273 connect(plugin , SIGNAL(addAboutInfo(QString,QString)),
2274 coreWidget_ , SLOT(addAboutInfo(QString,QString)),Qt::DirectConnection);
2280 QScriptValue scriptInstance = scriptEngine_.newQObject(plugin,
2281 QScriptEngine::QtOwnership,
2282 QScriptEngine::ExcludeChildObjects |
2283 QScriptEngine::ExcludeSuperClassMethods |
2284 QScriptEngine::ExcludeSuperClassProperties
2288 QString scriptingName = info.
rpcName;
2290 scriptEngine_.globalObject().setProperty(scriptingName, scriptInstance);
2292 QScriptValueIterator it(scriptInstance);
2293 while (it.hasNext()) {
2297 if ( checkSignal( plugin, it.name().toLatin1() ) )
2302 scriptingFunctions_.push_back( scriptingName +
"." + it.name() );
2308 if ( scriptPlugin ) {
2309 supported = supported +
"Scripting ";
2313 scriptingWrappers_.push_back(newScript);
2317 if ( checkSignal(plugin,
"scriptInfo(QString)" ) ) {
2320 connect(plugin , SIGNAL( scriptInfo(QString) ),
2321 newScript , SLOT( slotScriptInfo(QString) ) ,Qt::DirectConnection );
2324 connect(newScript , SIGNAL( scriptInfo(QString,QString) ),
2325 this , SLOT( slotScriptInfo(QString,QString) ));
2329 if ( checkSlot(plugin,
"slotScriptInfo(QString,QString)") ) {
2330 connect(
this , SIGNAL(scriptInfo(QString,QString)),
2331 plugin , SLOT(slotScriptInfo(QString,QString)));
2335 if ( checkSignal(plugin,
"getDescription(QString,QString&,QStringList&,QStringList&)") )
2336 connect(plugin , SIGNAL( getDescription(QString,QString&,QStringList&,QStringList&) ),
2337 this , SLOT( slotGetDescription(QString,QString&,QStringList&,QStringList&) ));
2342 if ( checkSignal(plugin,
"executeScript(QString)") )
2343 connect(plugin , SIGNAL(executeScript(QString)),
2344 this , SLOT(slotExecuteScript(QString)));
2347 if ( checkSignal(plugin,
"executeFileScript(QString)") )
2348 connect(plugin , SIGNAL(executeFileScript(QString)),
2349 this , SLOT(slotExecuteFileScript(QString)));
2352 if ( checkSlot(plugin,
"slotExecuteScript(QString)") )
2353 connect(
this , SIGNAL(executeScript(QString)),
2354 plugin , SLOT(slotExecuteScript(QString)));
2357 if ( checkSlot(plugin,
"slotExecuteFileScript(QString)") )
2358 connect(
this , SIGNAL(executeFileScript(QString)),
2359 plugin , SLOT(slotExecuteFileScript(QString)));
2364 if ( checkSignal(plugin,
"getScriptingEngine(QScriptEngine*&)") )
2365 connect(plugin , SIGNAL(getScriptingEngine(QScriptEngine*&)),
2366 this , SLOT(slotGetScriptingEngine(QScriptEngine*&)));
2369 if ( checkSignal(plugin,
"getAvailableFunctions(QStringList&)") )
2370 connect(plugin , SIGNAL(getAvailableFunctions(QStringList&)),
2371 this , SLOT(slotGetAllAvailableFunctions(QStringList&)));
2377 info.status = PluginInfo::LOADED;
2381 if (alreadyLoadedAt != -1) {
2382 plugins()[alreadyLoadedAt] = info;
2385 plugins().push_back(info);
2387 printPluginLoadLog(errors, warnings);
2392 if ( checkSlot(plugin,
"initializePlugin()") )
2393 QMetaObject::invokeMethod(plugin,
"initializePlugin", Qt::DirectConnection);
2400 supported = supported +
"File ";
2402 QStringList loadFilters = filePlugin->
getLoadFilters().split(
";;");
2403 QStringList saveFilters = filePlugin->
getSaveFilters().split(
";;");
2406 for (
int i = 0; i < loadFilters.size(); ++i) {
2408 ft.name = basePlugin->
name();
2410 ft.loadFilters = loadFilters[i];
2411 ft.saveFilters =
"";
2412 ft.plugin = filePlugin;
2414 ft.saveMultipleObjects = checkSlot(plugin,
"saveObjects(IdList,QString)");
2416 supportedTypes().push_back(ft);
2418 for (
int i = 0; i < saveFilters.size(); ++i) {
2420 ft.name = basePlugin->
name();
2422 ft.loadFilters =
"";
2423 ft.saveFilters = saveFilters[i];
2424 ft.plugin = filePlugin;
2426 ft.saveMultipleObjects = checkSlot(plugin,
"saveObjects(IdList,QString)");
2428 supportedTypes().push_back(ft);
2432 if ( checkSignal(plugin,
"openedFile(int)" ) )
2433 connect(plugin , SIGNAL( openedFile(
int ) ) ,
2434 this , SLOT( slotFileOpened (
int ) ),Qt::DirectConnection);
2440 supported = supported +
"Type ";
2443 typePlugin->registerType();
2447 dt.name = basePlugin->
name();
2449 dt.plugin = typePlugin;
2452 supportedDataTypes_.push_back(dt);
2455 if ( !LoadSavePlugin && checkSignal(plugin,
"emptyObjectAdded(int)" ) )
2456 connect(plugin , SIGNAL( emptyObjectAdded(
int ) ) ,
2457 this , SLOT( slotEmptyObjectAdded (
int ) ),Qt::DirectConnection);
2461 if ( metadataPlugin ) {
2462 if (checkSlot(plugin,
"slotGenericMetadataDeserialized(QString,QString)")) {
2463 connect(
this, SIGNAL(genericMetadataDeserialized(QString, QString)),
2464 plugin, SLOT(slotGenericMetadataDeserialized(QString, QString)));
2466 if (checkSlot(plugin,
"slotObjectMetadataDeserialized(QString,QString)")) {
2467 connect(
this, SIGNAL(objectMetadataDeserialized(QString, QString)),
2468 plugin, SLOT(slotObjectMetadataDeserialized(QString, QString)));
2470 if (checkSlot(plugin,
"slotObjectMetadataDeserializedJson(QString,QJsonDocument)")) {
2471 connect(
this, SIGNAL(objectMetadataDeserializedJson(QString, QJsonDocument)),
2472 plugin, SLOT(slotObjectMetadataDeserializedJson(QString, QJsonDocument)));
2474 if (checkSignal(plugin,
"metadataDeserialized(QVector<QPair<QString,QString> >)")) {
2475 connect(plugin, SIGNAL(metadataDeserialized(QVector<QPair<QString, QString> >)),
2476 this, SLOT(slotMetadataDeserialized(QVector<QPair<QString, QString> >)));
const QVector< QPair< QString, QString > > & pluginCommandLineOptions()
Get command line plugin settings as key-value pairs.
virtual QAction * optionsAction()
Return options menu.
Interface class for type definitions.
void loadPlugin(const QString &_filename, const bool _silent, QString &_licenseErrors, QObject *_plugin=0)
Function for loading Plugins.
QString description
Description of the plugin.
void loaderReady(QPluginLoader *loader)
Interface class for exporting functions to python.
Options Dialog interface.
void slotBlockPlugin(const QString &_rpcName)
Function for Blocking Plugins. Blocked plugins will unloaded and not loaded wthin the next starts...
QString version
Version of the plugin.
Interface class for receiving mouse events.
QString name
Name of the plugin ( requested from the plugin on load)
bool checkSignal(QObject *_plugin, const char *_signalSignature)
Check if a plugin has a signal.
virtual QString getLoadFilters()=0
void loadPlugins()
Load all plugins from default plugin directory and from INI-File.
QString warnings
Store warnings encountered during plugin loading.
Logtype
Log types for Message Window.
RenderInterface * plugin
Pointer to the loaded plugin (Already casted when loading it)
QString description
Description of the plugin ( requested from the plugin on load)
virtual bool initializeOptionsWidget(QWidget *&_widget)=0
Initialize the Options Widget.
Defines the order in which plugins have to be loaded.
QString description
Description of the plugin ( requested from the plugin on load)
QString name
Name of the plugin ( requested from the plugin on load)
ACG::SceneGraph::DrawModes::DrawMode modes
Supported DrawModes.
Interface for all Plugins which do logging to the logging window of the framework.
void slotShowPlugins()
Show Plugins Dialog.
bool buildIn
Indicates, if the plugin is a built in Plugin (in Plugin directory)
QStringList rpcFunctions
List of exported rpc slots.
applicationStatus
Enum for the statusBar Status Icon.
Interface class for adding view modes to the ui.
QString name
Name of the plugin ( requested from the plugin on load)
PostProcessorInfo * newPostProcessor(QString _name)
Get a new post processor Instance.
virtual QAction * optionsAction()
Return options menu.
std::vector< int > IdList
Standard Type for id Lists used for scripting.
virtual QString name()=0
Return a name for the plugin.
virtual QString version()
Return a version string for your plugin.
DLLEXPORT void registerTypes()
PreloadThread(PreloadAggregator *aggregator)
Preload thread constructor.
void printPluginLoadLog(const QString &errors, const QString &warnings)
Print all info collected about plugin during loading.
void slotUnBlockPlugin(const QString &_rpcName)
Function for UnBlocking Plugins. Plugins will not loaded automatically.
QWidget * optionsWidget
Pointer to plugins options widget (if available)
QString version
Version of the plugin.
QVariant value(const QString &key, const QVariant &defaultValue=QVariant()) const
void expectLoaders(int count)
Interface to add global image post processor functions from within plugins.
Interface to call functions across plugins.
RendererInfo * newRenderer(QString _name)
Get a new renderer Instance.
virtual QString description()=0
Return a description of what the plugin is doing.
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.
void slotLoadPlugin()
Load Plugins from menu.
QString version
Version of the plugin ( requested from the plugin on load)
virtual DataType supportedType()=0
Return your supported object type( e.g. DATA_TRIANGLE_MESH )
virtual DataType supportedType()=0
Return your supported object type( e.g. DATA_TRIANGLE_MESH )
QPluginLoader * waitForNextLoader()
Keyboard Event Interface.
Interface class for Plugins which have to store information in ini files.
Class for the handling of simple configuration files.
bool checkSlot(QObject *_plugin, const char *_slotSignature)
Check if a plugin has a slot.
QString errors
Store errors encountered during plugin loading.
QString path
Path to the plugin ( set on load )
Interface for all Plugins which provide scriptable Functions.
void run()
preload function
QObject * plugin
Pointer to the loaded plugin (Already casted when loading it)
void setValue(const QString &key, const QVariant &value)
Wrapper function which makes it possible to enable Debugging output with -DOPENFLIPPER_SETTINGS_DEBUG...
Interface to add additional rendering functions from within plugins.
Allow to connect slots between plugins.
DLLEXPORT OpenFlipperQSettings & OpenFlipperSettings()
QSettings object containing all program settings of OpenFlipper.
Provide texture support for a plugin.
QAction * optionsAction
Possible action to add an options action or menu to the system.
Interface class for Thread handling.
virtual QString getSaveFilters()=0
PostProcessorInterface * plugin
Pointer to the loaded plugin (Already casted when loading it)
QAction * optionsAction
Possible action to add an options action or menu to the system.
Interface class from which all plugins have to be created.
Allow access to picking functions.
Interface class for backup handling.
Interface class for file handling.
QString rpcName
Clean rpc name of the plugin.
Interface for all plugins which want to Load or Save files and create Objects.