Commit 919f5bc6 authored by Jan Möbius's avatar Jan Möbius

Moved plugin storage vector to a static

parent fa468ff5
......@@ -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,9 @@
#include <ACG/QtWidgets/QtFileDialog.hh>
#include "OpenFlipper/widgets/PluginDialog/PluginDialog.hh"
#include <OpenFlipper/common/FileTypes.hh>
/**
* The number of plugins to load simultaneously.
......@@ -555,7 +558,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 +656,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 +681,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 +692,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 +759,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,15 +791,15 @@ 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);
......@@ -807,11 +810,11 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic
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);
......@@ -2288,10 +2291,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_;
std::vector<PluginInfo>& plugins() {
return plugins_;
}
}
//=============================================================================
//=============================================================================
/*===========================================================================*\
* *
* 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/Core/PluginInfo.hh>
//== INCLUDES =================================================================
namespace PluginStorage {
/// Get the vector of all PluginInfos
std::vector<PluginInfo>& plugins();
}
//=============================================================================
//=============================================================================
......@@ -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,23 +755,23 @@ 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->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 );
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() ) {
if ( !plugins()[i].warnings.isEmpty() ) {
aboutWidget_->OpenFlipperAbout->setTextColor(Qt::darkYellow);
aboutWidget_->OpenFlipperAbout->append( "\t\t Warnings: \t\t" + plugins_[i].warnings );
aboutWidget_->OpenFlipperAbout->append( "\t\t Warnings: \t\t" + plugins()[i].warnings );
aboutWidget_->OpenFlipperAbout->setTextColor(Qt::black);
}
if ( !plugins_[i].errors.isEmpty() ) {
if ( !plugins()[i].errors.isEmpty() ) {
aboutWidget_->OpenFlipperAbout->setTextColor(Qt::darkRed);
aboutWidget_->OpenFlipperAbout->append( "\t\t Errors: \t\t" + plugins_[i].errors );
aboutWidget_->OpenFlipperAbout->append( "\t\t Errors: \t\t" + plugins()[i].errors );
aboutWidget_->OpenFlipperAbout->setTextColor(Qt::black);
}
......
......@@ -58,7 +58,7 @@
//== INCLUDES =================================================================
// -------------------- mview
#include "CoreWidget.hh"
//== IMPLEMENTATION ==========================================================
......@@ -773,8 +773,8 @@ void CoreWidget::slotAddContextItem( QAction* _entry , DataType _dataType ,Conte
void CoreWidget::slotAddContextItemToViewMode( QAction* _entry ) {
int id = -1;
// Find the plugin which added this Context Menu
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;
}
......@@ -782,8 +782,8 @@ void CoreWidget::slotAddContextItemToViewMode( QAction* _entry ) {
// Find the scripting plugin because we assign this context menu 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;
}
......@@ -796,11 +796,11 @@ void CoreWidget::slotAddContextItemToViewMode( QAction* _entry ) {
}
}
plugins_[id].contextMenus.push_back( std::pair< QString,QAction* >( plugins_[id].name + "->" + _entry->text(), _entry) );
plugins()[id].contextMenus.push_back( std::pair< QString,QAction* >( plugins()[id].name + "->" + _entry->text(), _entry) );
// add widget name to viewMode 'all'
if ( !viewModes_[0]->visibleContextMenus.contains(plugins_[id].name + "->" + _entry->text()) ){
viewModes_[0]->visibleContextMenus << plugins_[id].name + "->" + _entry->text();
if ( !viewModes_[0]->visibleContextMenus.contains(plugins()[id].name + "->" + _entry->text()) ){
viewModes_[0]->visibleContextMenus << plugins()[id].name + "->" + _entry->text();
viewModes_[0]->visibleContextMenus.sort();
}
......
......@@ -69,6 +69,8 @@
#include <ACG/Scenegraph/SceneGraphAnalysis.hh>
#include <ACG/GL/ShaderCache.hh>
#include <OpenFlipper/common/PluginStorage.hh>
// -------------------- Qt event Includes
#include <QGLFormat>
......@@ -136,7 +138,6 @@ QToolBar * PickMode::toolbar() const {
*/
CoreWidget::
CoreWidget( QVector<ViewMode*>& _viewModes,
std::vector<PluginInfo>& _plugins,
QList< SlotInfo >& _coreSlots ) :
QMainWindow(),
coreSlots_(_coreSlots),
......@@ -187,7 +188,6 @@ CoreWidget( QVector<ViewMode*>& _viewModes,
stereoSettingsWidget_(0),
aboutWidget_(0),
optionsWidget_(0),
plugins_(_plugins),
stereoActive_(false),
actionMode_(Viewer::PickingMode),
lastActionMode_(Viewer::ExamineMode),
......@@ -661,6 +661,13 @@ CoreWidget::~CoreWidget() {
//-----------------------------------------------------------------------------
std::vector<PluginInfo>& CoreWidget::plugins() {
return PluginStorage::plugins();
};
//-----------------------------------------------------------------------------
/** Set viewer to Fullscreen Mode and back
*/
void
......@@ -782,10 +789,10 @@ void CoreWidget::showToolBar( bool _state )
if ( ! viewerToolbar_->isFloating() )
viewerToolbar_->hide();
for (uint p=0; p < plugins_.size(); p++)
for ( uint j = 0 ; j < plugins_[p].toolbars.size(); ++j ) {
if ( ! plugins_[p].toolbars[j].second->isFloating() )
plugins_[p].toolbars[j].second->hide();
for (uint p=0; p < plugins().size(); p++)
for ( uint j = 0 ; j < plugins()[p].toolbars.size(); ++j ) {
if ( ! plugins()[p].toolbars[j].second->isFloating() )
plugins()[p].toolbars[j].second->hide();
}
}
else
......@@ -911,7 +918,7 @@ void CoreWidget::showOptionsWidget() {
return;
if ( optionsWidget_ == 0 ) {
optionsWidget_ = new OptionsWidget(plugins_, coreKeys_, invKeys_, 0);
optionsWidget_ = new OptionsWidget(plugins(), coreKeys_, invKeys_, 0);
connect(optionsWidget_,SIGNAL(applyOptions()),this,SIGNAL(applyOptions()));
connect(optionsWidget_,SIGNAL(saveOptions()),this,SIGNAL(saveOptions()));
connect(optionsWidget_,SIGNAL(addKeyMapping(int,Qt::KeyboardModifiers,QObject*,int)),
......
......@@ -292,7 +292,7 @@ public:
friend class Core;
/// constructor
CoreWidget( QVector<ViewMode*>& _viewModes, std::vector<PluginInfo>& _plugins, QList< SlotInfo >& _coreSlots );
CoreWidget( QVector<ViewMode*>& _viewModes, QList< SlotInfo >& _coreSlots );
/// destructor