From a5aee3b31be4aeec7a60125286593b8185af2a80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20M=C3=B6bius?= Date: Wed, 30 Sep 2009 08:30:37 +0000 Subject: [PATCH] Splitted pout viewMode Interface git-svn-id: http://www.openflipper.org/svnrepo/OpenFlipper/branches/Free@7232 383ad7c9-94d9-4d36-a494-682f7c89f535 --- BasePlugin/ToolboxInterface.hh | 4 +- BasePlugin/ViewModeInterface.hh | 96 ++++++++++++++++++++++++++++++++ Core/PluginLoader.cc | 17 ++++-- Core/scripting.cc | 2 +- widgets/coreWidget/CoreWidget.hh | 4 +- widgets/coreWidget/viewMode.cc | 8 +-- 6 files changed, 118 insertions(+), 13 deletions(-) create mode 100644 BasePlugin/ViewModeInterface.hh diff --git a/BasePlugin/ToolboxInterface.hh b/BasePlugin/ToolboxInterface.hh index 21880905..fb2fc013 100644 --- a/BasePlugin/ToolboxInterface.hh +++ b/BasePlugin/ToolboxInterface.hh @@ -96,14 +96,14 @@ class ToolboxInterface { signals : - /** \brief Defines a new ViewMode + /** \brief Defines a new ViewMode for the Toolboxes * * Slot defines a new ViewMode e.g. a mode where only useful widgets * are visible by default * @param _mode name of the ViewMode * @param _usedWidgets list of used Widgets names */ - virtual void defineViewMode(QString& /*_mode*/, QStringList& /*_usedWidgets*/){}; + virtual void defineViewModeToolboxes(QString& /*_mode*/, QStringList& /*_usedWidgets*/){}; /** \brief Add a toolbox widget to the gui with the given name diff --git a/BasePlugin/ViewModeInterface.hh b/BasePlugin/ViewModeInterface.hh new file mode 100644 index 00000000..78462745 --- /dev/null +++ b/BasePlugin/ViewModeInterface.hh @@ -0,0 +1,96 @@ +/*===========================================================================*\ + * * + * OpenFlipper * + * Copyright (C) 2001-2009 by Computer Graphics Group, RWTH Aachen * + * www.openflipper.org * + * * + *---------------------------------------------------------------------------* + * This file is part of OpenFlipper. * + * * + * OpenFlipper is free software: you can redistribute it and/or modify * + * it under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 3 of * + * the License, or (at your option) any later version with the * + * following exceptions: * + * * + * If other files instantiate templates or use macros * + * or inline functions from this file, or you compile this file and * + * link it with other files to produce an executable, this file does * + * not by itself cause the resulting executable to be covered by the * + * GNU Lesser General Public License. This exception does not however * + * invalidate any other reasons why the executable file might be * + * covered by the GNU Lesser General Public License. * + * * + * OpenFlipper is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU LesserGeneral Public * + * License along with OpenFlipper. If not, * + * see . * + * * +\*===========================================================================*/ + +/*===========================================================================*\ + * * + * $Revision: 6727 $ * + * $Author: moebius $ * + * $Date: 2009-08-05 08:03:50 +0200 (Mi, 05. Aug 2009) $ * + * * +\*===========================================================================*/ + + + + +// +// C++ Interface: ViewModeInterface +// +// Description: +// +// +// Author: Jan Moebius , (C) 2007 +// + +#ifndef VIEWMODEINTERFACE_HH +#define VIEWMODEINTERFACE_HH + + #include + #include + #include + + /** + * \brief Define View Modes using this interface + * + * This Interface can be used to configure visible widgets in the viewer. A given + * view mode contains a list of toolbars, toolboxes and context menus which should + * be visible if the mode is active. Therefore you can define a subset of the + * full interface for special tasks. + * + */ +class ViewModeInterface { + + private slots : + + public : + + /// Destructor + virtual ~ViewModeInterface() {}; + + signals : + + /** \brief Defines a new ViewMode for the Toolboxes + * + * With this function you can define a set of toolboxes which should be visible + * for the specified view mode. + * + * @param _mode name of the ViewMode + * @param _usedWidgets list of used Widgets names + */ + virtual void defineViewModeToolboxes(QString& /*_mode*/, QStringList& /*_usedWidgets*/){}; + +}; + +Q_DECLARE_INTERFACE(ViewModeInterface,"OpenFlipper.ViewModeInterface/1.0") + +#endif // VIEWMODEINTERFACE_HH diff --git a/Core/PluginLoader.cc b/Core/PluginLoader.cc index 1b0f2181..4f943aee 100644 --- a/Core/PluginLoader.cc +++ b/Core/PluginLoader.cc @@ -75,6 +75,7 @@ #include "OpenFlipper/BasePlugin/MenuInterface.hh" #include "OpenFlipper/BasePlugin/ContextMenuInterface.hh" #include "OpenFlipper/BasePlugin/ViewInterface.hh" +#include "OpenFlipper/BasePlugin/ViewModeInterface.hh" #include "OpenFlipper/BasePlugin/LoadSaveInterface.hh" #include "OpenFlipper/BasePlugin/StatusbarInterface.hh" #include "OpenFlipper/BasePlugin/INIInterface.hh" @@ -603,10 +604,6 @@ void Core::loadPlugin(QString filename, bool silent){ } } - if ( checkSignal(plugin, "defineViewMode(QString,QStringList)")) - connect(plugin, SIGNAL( defineViewMode(QString, QStringList) ), - coreWidget_, SLOT( slotAddViewMode(QString, QStringList) ),Qt::DirectConnection ); - if ( checkSignal(plugin, "addToolbox(QString,QWidget*)")) connect(plugin, SIGNAL( addToolbox(QString,QWidget*) ), this, SLOT( addToolbox(QString,QWidget*) ),Qt::DirectConnection ); @@ -614,6 +611,18 @@ void Core::loadPlugin(QString filename, bool silent){ } + + //Check if the plugin supports ViewMode-Interface + ViewModeInterface* viewModePlugin = qobject_cast< ViewModeInterface * >(plugin); + if ( viewModePlugin && OpenFlipper::Options::gui() ) { + supported = supported + "ViewMode "; + + std::cerr << "Defined by " << info.name.toStdString() << std::endl;; + if ( checkSignal(plugin, "defineViewModeToolboxes(QString,QStringList)")) + connect(plugin, SIGNAL( defineViewModeToolboxes(QString, QStringList) ), + coreWidget_, SLOT( slotAddViewModeToolboxes(QString, QStringList) ),Qt::DirectConnection ); + + } //Check if the plugin supports Options-Interface OptionsInterface* optionsPlugin = qobject_cast< OptionsInterface * >(plugin); diff --git a/Core/scripting.cc b/Core/scripting.cc index 4ea6fd0f..74de3a3c 100644 --- a/Core/scripting.cc +++ b/Core/scripting.cc @@ -133,7 +133,7 @@ void Core::setViewMode(QString _viewMode){ void Core::addViewMode(QString _modeName, QString _toolboxList) { QStringList list = _toolboxList.split(";"); - coreWidget_->slotAddViewMode(_modeName,list); + coreWidget_->slotAddViewModeToolboxes(_modeName,list); } //----------------------------------------------------------------------------- diff --git a/widgets/coreWidget/CoreWidget.hh b/widgets/coreWidget/CoreWidget.hh index 036a37cc..b6e875b5 100644 --- a/widgets/coreWidget/CoreWidget.hh +++ b/widgets/coreWidget/CoreWidget.hh @@ -394,10 +394,10 @@ public: void initViewModes( ); /// Add a new ViewMode (non-userdefined viewMode) - void slotAddViewMode(QString _mode, QStringList _usedWidgets); + void slotAddViewModeToolboxes(QString _mode, QStringList _usedWidgets); /// Add a new ViewMode (_custom == userdefined viewMode) - void slotAddViewMode(QString _mode, bool _custom, QStringList _usedWidgets); + void slotAddViewModeToolboxes(QString _mode, bool _custom, QStringList _usedWidgets); /// Slot for Changing visible toolWidgets void slotChangeView(QString _mode, QStringList _toolWidgets); diff --git a/widgets/coreWidget/viewMode.cc b/widgets/coreWidget/viewMode.cc index 08925644..70f68974 100644 --- a/widgets/coreWidget/viewMode.cc +++ b/widgets/coreWidget/viewMode.cc @@ -87,12 +87,12 @@ void CoreWidget::initViewModes(){ } /// Add a new viewMode (non-custom) -void CoreWidget::slotAddViewMode(QString _mode, QStringList _usedWidgets){ - slotAddViewMode(_mode, false, _usedWidgets); +void CoreWidget::slotAddViewModeToolboxes(QString _mode, QStringList _usedWidgets){ + slotAddViewModeToolboxes(_mode, false, _usedWidgets); } /// Add a new viewMode -void CoreWidget::slotAddViewMode(QString _mode, bool _custom, QStringList _usedWidgets){ +void CoreWidget::slotAddViewModeToolboxes(QString _mode, bool _custom, QStringList _usedWidgets){ ViewMode* vm = new ViewMode(); vm->name = _mode; vm->custom = _custom; @@ -149,7 +149,7 @@ void CoreWidget::slotViewModeDialog(){ widget = new viewModeWidget(viewModes_); widget->setWindowIcon( OpenFlipper::Options::OpenFlipperIcon() ); connect(widget, SIGNAL(changeView(QString, QStringList)), this, SLOT(slotChangeView(QString, QStringList)) ); - connect(widget, SIGNAL(saveMode(QString, bool, QStringList)), this, SLOT(slotAddViewMode(QString, bool, QStringList)) ); + connect(widget, SIGNAL(saveMode(QString, bool, QStringList)), this, SLOT(slotAddViewModeToolboxes(QString, bool, QStringList)) ); connect(widget, SIGNAL(removeMode(QString)), this, SLOT(slotRemoveViewMode(QString)) ); } widget->show( OpenFlipper::Options::defaultToolboxMode() ); -- GitLab