Commit ef806d5b authored by Jan Möbius's avatar Jan Möbius

Merge branch 'List_plugins_with_info_in_about' into 'master'

List plugins with info in about

See merge request !89
parents fa468ff5 6b39edeb
......@@ -88,6 +88,8 @@
#include <OpenFlipper/widgets/messageBox/StaysOnTopMessageBox.hh>
#include <OpenFlipper/common/PluginStorage.hh>
#define WIDGET_HEIGHT 800
#define WIDGET_WIDTH 800
......@@ -236,7 +238,7 @@ Core::init() {
Qt::AlignBottom | Qt::AlignLeft , Qt::white);
}
coreWidget_ = new CoreWidget(viewModes_ , plugins_, coreSlots_);
coreWidget_ = new CoreWidget(viewModes_ , coreSlots_);
spinBoxEventFilter_.registerScrollArea(coreWidget_->getToolboxScrollArea());
spinBoxEventFilter_.registerScrollArea(coreWidget_->getToolboxArea());
......@@ -718,6 +720,12 @@ Core::~Core()
//-----------------------------------------------------------------------------
std::vector<PluginInfo>& Core::plugins() {
return PluginStorage::plugins();
};
//-----------------------------------------------------------------------------
void
Core::slotMouseEventIdentify( QMouseEvent* _event )
{
......@@ -1169,8 +1177,8 @@ void Core::slotExit() {
clearAll();
// Notify plugins of imminent exit.
for ( uint i = 0 ; i < plugins_.size() ; ++i ){
BaseInterface* basePlugin = qobject_cast< BaseInterface * >(plugins_[i].plugin);
for ( uint i = 0 ; i < plugins().size() ; ++i ){
BaseInterface* basePlugin = qobject_cast< BaseInterface * >(plugins()[i].plugin);
// Dont call exit if we cannot get the Plugin
if ( basePlugin )
......@@ -1178,7 +1186,7 @@ void Core::slotExit() {
}
// Delete Plugins to actually call their destructor
for(PluginInfo p : plugins_)
for(PluginInfo p : plugins())
delete p.plugin;
// close the log file to ensure everything is writeen correctly
......@@ -1300,9 +1308,9 @@ void Core::slotSetSlotDescription(QString _slotName, QString _slotDescrip
//find plugin
PluginInfo* pluginInfo = 0;
for (uint i=0; i < plugins_.size(); i++)
if (plugins_[i].plugin == sender())
pluginInfo = &plugins_[i];
for (uint i=0; i < plugins().size(); i++)
if (plugins()[i].plugin == sender())
pluginInfo = &plugins()[i];
if (pluginInfo == 0){
emit log(LOGERR, tr("Unable to set slot-description. Plugin not found!"));
......@@ -1378,9 +1386,9 @@ void Core::slotGetDescription(QString _function, QString& _fnDescript
//find plugin
PluginInfo* pluginInfo = 0;
for (uint i=0; i < plugins_.size(); i++)
if (plugins_[i].rpcName == pluginName)
pluginInfo = &plugins_[i];
for (uint i=0; i < plugins().size(); i++)
if (plugins()[i].rpcName == pluginName)
pluginInfo = &plugins()[i];
if (pluginInfo == 0){
emit log(LOGERR, tr("Unable to get slot-description. Plugin not found!"));
......@@ -1524,12 +1532,12 @@ void Core::writeVersionNumbers(QString _filename){
ini.add_entry( "Core" , "VersionLinux" , OpenFlipper::Options::coreVersion() );
//add pluginVersions
for (uint i=0; i < plugins_.size(); i++){
for (uint i=0; i < plugins().size(); i++){
if ( OpenFlipper::Options::isWindows() )
ini.add_entry( plugins_[i].name , "VersionWindows" , plugins_[i].version );
ini.add_entry( plugins()[i].name , "VersionWindows" , plugins()[i].version );
else
ini.add_entry( plugins_[i].name , "VersionLinux" , plugins_[i].version );
ini.add_entry( plugins()[i].name , "VersionLinux" , plugins()[i].version );
}
ini.disconnect();
......
......@@ -121,7 +121,6 @@
#include <OpenFlipper/threads/JobInfo.hh>
#include <OpenFlipper/common/FileTypes.hh>
#include <OpenFlipper/common/InformationPlugins.hh>
#include "SpinBoxEventFilter.hh"
......@@ -1214,11 +1213,9 @@ private slots:
//===========================================================================
public :
const std::vector<PluginInfo> plugins() const {return plugins_; };
std::vector<PluginInfo>& plugins();
private:
/// List of all loaded plugins_
std::vector<PluginInfo> plugins_;
/// Index of Plugins toolbox widget
int toolboxindex_;
......
......@@ -467,11 +467,11 @@ void connectPlugins( Core* c, const std::vector<PluginInfo>& plugins_, QString _
}
void Core::slotCrossPluginConnect( QString _pluginName1, const char* _signal, QString _pluginName2, const char* _slot) {
connectPlugins(this, plugins_, _pluginName1, _signal, _pluginName2, _slot, false);
connectPlugins(this, plugins(), _pluginName1, _signal, _pluginName2, _slot, false);
}
void Core::slotCrossPluginConnectQueued( QString _pluginName1, const char* _signal, QString _pluginName2, const char* _slot) {
connectPlugins(this, plugins_, _pluginName1, _signal, _pluginName2, _slot, true);
connectPlugins(this, plugins(), _pluginName1, _signal, _pluginName2, _slot, true);
}
//========================================================================================
......
......@@ -86,6 +86,10 @@
#include <ACG/QtWidgets/QtFileDialog.hh>
#include "OpenFlipper/widgets/PluginDialog/PluginDialog.hh"
#include <OpenFlipper/common/FileTypes.hh>
#include <OpenFlipper/common/PluginStorage.hh>
/**
* The number of plugins to load simultaneously.
......@@ -555,7 +559,7 @@ void Core::loadPlugins()
emit pluginsInitialized();
emit log(LOGOUT,tr("Loaded %n Plugin(s)","",int(plugins_.size())) );
emit log(LOGOUT,tr("Loaded %n Plugin(s)","",int(plugins().size())) );
}
/** @brief slot for loading Plugins
......@@ -653,7 +657,7 @@ void Core::slotShowPlugins(){
while (ret == 0){
PluginDialog* dialog = new PluginDialog(plugins_, coreWidget_);
PluginDialog* dialog = new PluginDialog(plugins(), coreWidget_);
//connect signals
connect(dialog, SIGNAL( loadPlugin() ), this, SLOT( slotLoadPlugin() ));
......@@ -678,9 +682,9 @@ void Core::slotBlockPlugin(const QString &_name)
OpenFlipperSettings().setValue("PluginControl/DontLoadNames",dontLoadPlugins);
}
for (size_t i = 0; i < plugins_.size();++i)
if (plugins_[i].name == _name)
plugins_[i].status = PluginInfo::BLOCKED;
for (size_t i = 0; i < plugins().size();++i)
if (plugins()[i].name == _name)
plugins()[i].status = PluginInfo::BLOCKED;
}
void Core::slotUnBlockPlugin(const QString &_name)
......@@ -689,9 +693,9 @@ void Core::slotUnBlockPlugin(const QString &_name)
dontLoadPlugins.removeAll(_name);
OpenFlipperSettings().setValue("PluginControl/DontLoadNames",dontLoadPlugins);
for (size_t i = 0; i < plugins_.size();++i)
if (plugins_[i].name == _name)
plugins_[i].status = PluginInfo::UNLOADED;
for (size_t i = 0; i < plugins().size();++i)
if (plugins()[i].name == _name)
plugins()[i].status = PluginInfo::UNLOADED;
}
......@@ -756,9 +760,9 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic
// Check if a plugin has been loaded
PluginInfo info;
int alreadyLoadedAt = -1;
for (unsigned int k=0; k < plugins_.size(); k++)
for (unsigned int k=0; k < plugins().size(); k++)
{
if (plugins_[k].path == _filename)
if (plugins()[k].path == _filename)
alreadyLoadedAt = static_cast<int>(k);
}
info.status = PluginInfo::FAILED;
......@@ -788,34 +792,45 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic
}
//Check if plugin is already loaded
for (unsigned int k=0; k < plugins_.size(); k++){
for (unsigned int k=0; k < plugins().size(); k++){
QString name_nospace = basePlugin->name();
name_nospace.remove(" ");
if (plugins_[k].name == name_nospace && plugins_[k].path != _filename && plugins_[k].status == PluginInfo::LOADED){
if (plugins()[k].name == name_nospace && plugins()[k].path != _filename && plugins()[k].status == PluginInfo::LOADED){
if (_silent || OpenFlipper::Options::nogui() ){ //dont load the plugin
warnings += tr("Warning: Already loaded from %1").arg( plugins_[k].path) + "\n";
warnings += tr("Warning: Already loaded from %1").arg( plugins()[k].path) + "\n";
printPluginLoadLog(errors, warnings);
info.description = basePlugin->description() + tr(" *Already loaded.*");
info.errors = errors;
info.warnings = warnings;
PluginStorage::pluginsFailed().push_back(info);
return;
}else{ //ask the user
int ret = QMessageBox::question(coreWidget_,
tr("Plugin already loaded"),
tr("A Plugin with the same name was already loaded from %1.\n"
"You can only load the new plugin if you unload the existing one first.\n\n"
"Do you want to unload the existing plugin first?").arg( plugins_[k].path),
"Do you want to unload the existing plugin first?").arg( plugins()[k].path),
QMessageBox::Yes|QMessageBox::No, QMessageBox::No);
if (ret == QMessageBox::No)
{
warnings += tr("Warning: Already loaded from %1.").arg( plugins_[k].path) + "\n";
warnings += tr("Warning: Already loaded from %1.").arg( plugins()[k].path) + "\n";
printPluginLoadLog(errors, warnings);
info.description = basePlugin->description() + tr(" *Already loaded.*");
info.errors = errors;
info.warnings = warnings;
PluginStorage::pluginsFailed().push_back(info);
return;
}
}
......@@ -831,6 +846,12 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic
printPluginLoadLog(errors, warnings);
info.status = PluginInfo::BLOCKED;
info.errors = errors;
info.warnings = warnings;
PluginStorage::pluginsFailed().push_back(info);
return;
}
......@@ -856,6 +877,11 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic
info.description = basePlugin->description() + tr(" *Plugin access denied.*");
// Abort here, as the plugin will not do anything else until correct authentication.
info.errors = errors;
info.warnings = warnings;
PluginStorage::pluginsFailed().push_back(info);
return;
}
}
......@@ -878,6 +904,11 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic
printPluginLoadLog(errors, warnings);
info.errors = errors;
info.warnings = warnings;
PluginStorage::pluginsFailed().push_back(info);
return;
}
......@@ -891,6 +922,11 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic
printPluginLoadLog(errors, warnings);
info.errors = errors;
info.warnings = warnings;
PluginStorage::pluginsFailed().push_back(info);
return;
}
......@@ -899,6 +935,11 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic
printPluginLoadLog(errors, warnings);
info.errors = errors;
info.warnings = warnings;
PluginStorage::pluginsFailed().push_back(info);
return;
}
......@@ -2083,6 +2124,11 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic
printPluginLoadLog(errors, warnings);
info.errors = errors;
info.warnings = warnings;
PluginStorage::pluginsFailed().push_back(info);
return;
}
......@@ -2141,6 +2187,12 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic
if ( openGLCheck != "" ) {
errors += tr("Error: Insufficient OpenGL capabilities in post processor Plugin ") + postProcessorNameString + " !" + "\n";
errors += openGLCheck + "\n";
info.errors = errors;
info.warnings = warnings;
PluginStorage::pluginsFailed().push_back(info);
return;
}
......@@ -2288,10 +2340,10 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic
info.warnings = warnings;
if (alreadyLoadedAt != -1) {
plugins_[alreadyLoadedAt] = info;
plugins()[alreadyLoadedAt] = info;
}
else
plugins_.push_back(info);
plugins().push_back(info);
printPluginLoadLog(errors, warnings);
......
......@@ -68,8 +68,8 @@
void Core::slotPluginExists( QString _pluginName , bool& _exists ) {
for ( int i = 0 ; i < (int)plugins_.size(); ++i ) {
if ( plugins_[i].rpcName == _pluginName ) {
for ( int i = 0 ; i < (int)plugins().size(); ++i ) {
if ( plugins()[i].rpcName == _pluginName ) {
_exists = true;
return;
}
......@@ -82,8 +82,8 @@ void Core::slotFunctionExists( QString _pluginName , QString _functionName , boo
//Find plugin
int plugin = -1;
for ( int i = 0 ; i < (int)plugins_.size(); ++i ) {
if ( plugins_[i].rpcName == _pluginName ) {
for ( int i = 0 ; i < (int)plugins().size(); ++i ) {
if ( plugins()[i].rpcName == _pluginName ) {
plugin = i;
break;
}
......@@ -94,15 +94,15 @@ void Core::slotFunctionExists( QString _pluginName , QString _functionName , boo
return;
}
_exists = plugins_[plugin].rpcFunctions.contains(_functionName);
_exists = plugins()[plugin].rpcFunctions.contains(_functionName);
}
void Core::slotCall( QString _pluginName , QString _functionName , bool& _success ) {
//Find plugin
int plugin = -1;
for ( int i = 0 ; i < (int)plugins_.size(); ++i ) {
if ( plugins_[i].rpcName == _pluginName ) {
for ( int i = 0 ; i < (int)plugins().size(); ++i ) {
if ( plugins()[i].rpcName == _pluginName ) {
plugin = i;
break;
}
......@@ -114,7 +114,7 @@ void Core::slotCall( QString _pluginName , QString _functionName , bool& _succes
return;
}
if ( !plugins_[plugin].rpcFunctions.contains(_functionName) ) {
if ( !plugins()[plugin].rpcFunctions.contains(_functionName) ) {
_success = false;
emit log(LOGERR, tr("Unable to call function from Plugin : ") + _pluginName);
emit log(LOGERR, tr("Function ") + _functionName + tr(" not found!"));
......
......@@ -52,6 +52,9 @@
//#include <ObjectTypes/Light/Light.hh>
#include <OpenFlipper/common/FileTypes.hh>
/// Save Settings (slot is called from CoreWidget's File-Menu)
void Core::saveSettings(){
......
......@@ -231,13 +231,13 @@ void Core::setToolBoxSide(QString _side) {
//-----------------------------------------------------------------------------
QWidget *Core::getToolbox(QString _pluginName, QString _toolboxName) {
std::vector<PluginInfo>::const_iterator pluginIt = plugins_.end();
for (std::vector<PluginInfo>::const_iterator it = plugins_.begin(), it_end = plugins_.end(); it != it_end; ++it) {
std::vector<PluginInfo>::const_iterator pluginIt = plugins().end();
for (std::vector<PluginInfo>::const_iterator it = plugins().begin(), it_end = plugins().end(); it != it_end; ++it) {
if (it->name == _pluginName) {
pluginIt = it;
}
}
if (pluginIt == plugins_.end()) return 0;
if (pluginIt == plugins().end()) return 0;
for (std::vector<std::pair<QString , QWidget*> >::const_iterator it = pluginIt->toolboxWidgets.begin(), it_end = pluginIt->toolboxWidgets.end();
it != it_end; ++it) {
......@@ -266,8 +266,8 @@ void Core::addToolbox(QString _name ,QWidget* _widget, QIcon* _icon,
int id = -1;
// Find the plugin which added this Toolbox
for ( uint i = 0 ; i < plugins_.size(); ++i ) {
if ( plugins_[i].plugin == sender() ) {
for ( uint i = 0 ; i < plugins().size(); ++i ) {
if ( plugins()[i].plugin == sender() ) {
id = i;
break;
}
......@@ -275,8 +275,8 @@ void Core::addToolbox(QString _name ,QWidget* _widget, QIcon* _icon,
// Find the scripting plugin because we assign this toolBox to it as we did not find the original sender
if ( id == -1 ) {
for ( uint i = 0 ; i < plugins_.size(); ++i ) {
if ( plugins_[i].name == "Scripting" ) {
for ( uint i = 0 ; i < plugins().size(); ++i ) {
if ( plugins()[i].name == "Scripting" ) {
id = i;
break;
}
......@@ -290,9 +290,9 @@ void Core::addToolbox(QString _name ,QWidget* _widget, QIcon* _icon,
}
spinBoxEventFilter_.hookUpToWidgetTree(_widget);
plugins_[id].toolboxWidgets.push_back( std::pair< QString,QWidget* >( _name , _widget) );
plugins_[id].toolboxIcons.push_back( _icon );
plugins_[id].headerAreaWidgets.push_back( std::pair< QString,QWidget* >( _name , _headerAreaWidget) );
plugins()[id].toolboxWidgets.push_back( std::pair< QString,QWidget* >( _name , _widget) );
plugins()[id].toolboxIcons.push_back( _icon );
plugins()[id].headerAreaWidgets.push_back( std::pair< QString,QWidget* >( _name , _headerAreaWidget) );
// add widget name to viewMode 'all'
if ( !viewModes_[0]->visibleToolboxes.contains(_name) ){
......
......@@ -58,7 +58,7 @@
/**
* \file FileTypes.cc
* This File contains the management of file plugins.
* This File contains the file type management vectors
*/
......@@ -66,14 +66,12 @@
#include <OpenFlipper/common/FileTypes.hh>
// Stores information about file types supported by the file plugins.
static std::vector<fileTypes> supportedTypes_;
std::vector<fileTypes>& supportedTypes() {
return supportedTypes_;
}
//=============================================================================
//=============================================================================
......@@ -58,12 +58,11 @@
/**
* \file FileTypes.hh
* This File contains the management of file plugins.
* This File contains the file type management vectors
*/
#ifndef FILETYPES_HH
#define FILETYPES_HH
#pragma once
#include <QString>
#include <OpenFlipper/common/GlobalDefines.hh>
......@@ -84,10 +83,8 @@ struct fileTypes {
// Get vector of supported types
DLLEXPORT
std::vector<fileTypes>&
supportedTypes();
std::vector<fileTypes>& supportedTypes();
//=============================================================================
#endif // FILETYPES_HH defined
//=============================================================================
/*===========================================================================*\
* *
* OpenFlipper *
* Copyright (c) 2001-2015, RWTH-Aachen University *
* Department of Computer Graphics and Multimedia *
* All rights reserved. *
* www.openflipper.org *
* *
*---------------------------------------------------------------------------*
* This file is part of OpenFlipper. *
*---------------------------------------------------------------------------*
* *
* Redistribution and use in source and binary forms, with or without *
* modification, are permitted provided that the following conditions *
* are met: *
* *
* 1. Redistributions of source code must retain the above copyright notice, *
* this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* *
* 3. Neither the name of the copyright holder nor the names of its *
* contributors may be used to endorse or promote products derived from *
* this software without specific prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
* *
\*===========================================================================*/
/*===========================================================================*\
* *
* $Revision$ *
* $LastChangedBy$ *
* $Date$ *
* *
\*===========================================================================*/
//=============================================================================
//
// Types
//
//=============================================================================
/**
* \file PluginStorage.cc
* This File contains the management of plugins.
*/
//== INCLUDES =================================================================
#include <OpenFlipper/common/PluginStorage.hh>
namespace PluginStorage {
/// reference to Core plugin list
static std::vector<PluginInfo> plugins_;
/// reference to failed plugin list
static std::vector<PluginInfo> pluginsFailed_;
std::vector<PluginInfo>& plugins() {
return plugins_;
}
std::vector<PluginInfo>& pluginsFailed() {
return pluginsFailed_;
}
}
//=============================================================================
//=============================================================================
/*===========================================================================*\
* *
* OpenFlipper *
* Copyright (c) 2001-2015, RWTH-Aachen University *
* Department of Computer Graphics and Multimedia *
* All rights reserved. *
* www.openflipper.org *
* *
*---------------------------------------------------------------------------*
* This file is part of OpenFlipper. *
*---------------------------------------------------------------------------*
* *
* Redistribution and use in source and binary forms, with or without *
* modification, are permitted provided that the following conditions *
* are met: *
* *
* 1. Redistributions of source code must retain the above copyright notice, *
* this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* *
* 3. Neither the name of the copyright holder nor the names of its *
* contributors may be used to endorse or promote products derived from *
* this software without specific prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
* *
\*===========================================================================*/
/*===========================================================================*\
* *
* $Revision$ *
* $LastChangedBy$ *
* $Date$ *
* *
\*===========================================================================*/
//=============================================================================
//
// Types
//
//=============================================================================
/**
* \file PluginStorage.hh
* This File contains the management vector for the plugins.
*/
#pragma once
#include <OpenFlipper/common/GlobalDefines.hh>
#include <OpenFlipper/Core/PluginInfo.hh>
//== INCLUDES =================================================================
namespace PluginStorage {
/// Get the vector of all PluginInfos
DLLEXPORT
std::vector<PluginInfo>& plugins();
/// Get the vector of all PluginInfos for plugins that failed to load at startup
DLLEXPORT
std::vector<PluginInfo>& pluginsFailed();
}
//=============================================================================
//=============================================================================
......@@ -61,8 +61,10 @@
#include <common/glew_wrappers.hh>
#include "CoreWidget.hh"
#include <OpenFlipper/common/PluginStorage.hh>
#include <OpenFlipper/common/FileTypes.hh>
#include <QGLFormat>
#ifndef WIN32
......@@ -753,28 +755,60 @@ void CoreWidget::showAboutWidget( ) {
aboutWidget_->OpenFlipperAbout->append(tr("Loaded Plugins:"));
aboutWidget_->OpenFlipperAbout->setCurrentFont(standardFont);
for ( uint i = 0 ; i < plugins_.size() ; ++i ) {
for ( uint i = 0 ; i < plugins().size() ; ++i ) {
aboutWidget_->OpenFlipperAbout->setCurrentFont(boldFont);
aboutWidget_->OpenFlipperAbout->append( "\t" + plugins()[i].name );
aboutWidget_->OpenFlipperAbout->setCurrentFont(standardFont);
aboutWidget_->OpenFlipperAbout->append( "\t\t Version: \t\t" + plugins()[i].version );
aboutWidget_->OpenFlipperAbout->append( "\t\t Description: \t" + plugins()[i].description );
aboutWidget_->OpenFlipperAbout->append( "\t\t Path \t\t" + plugins()[i].path );
if ( !plugins()[i].warnings.isEmpty() ) {
aboutWidget_->OpenFlipperAbout->setTextColor(Qt::darkYellow);
aboutWidget_->OpenFlipperAbout->append( "\t\t Warnings: \t\t" + plugins()[i].warnings );
aboutWidget_->OpenFlipperAbout->setTextColor(Qt::black);
}
if ( !plugins()[i].errors.isEmpty() ) {
aboutWidget_->OpenFlipperAbout->setTextColor(Qt::darkRed);
aboutWidget_->OpenFlipperAbout->append( "\t\t Errors: \t\t" + plugins()[i].errors );
aboutWidget_->OpenFlipperAbout->setTextColor(Qt::black);
}
}
// =====================================================================================
// List failed Plugins
// =====================================================================================
aboutWidget_->OpenFlipperAbout->setCurrentFont(boldFont);
aboutWidget_->OpenFlipperAbout->append(tr("Failed Plugins:"));
aboutWidget_->OpenFlipperAbout->setCurrentFont(standardFont);
for ( unsigned i = 0 ; i < PluginStorage::pluginsFailed().size() ; ++i ) {
aboutWidget_->OpenFlipperAbout->setCurrentFont(boldFont);
aboutWidget_->OpenFlipperAbout->append( "\t" + plugins_[i].name );
aboutWidget_->OpenFlipperAbout->append( "\t" + PluginStorage::pluginsFailed