Slicer 4.2
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
qSlicerModulesMenu.h
Go to the documentation of this file.
00001 /*==============================================================================
00002 
00003   Program: 3D Slicer
00004 
00005   Copyright (c) Kitware Inc.
00006 
00007   See COPYRIGHT.txt
00008   or http://www.slicer.org/copyright/copyright.txt for details.
00009 
00010   Unless required by applicable law or agreed to in writing, software
00011   distributed under the License is distributed on an "AS IS" BASIS,
00012   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013   See the License for the specific language governing permissions and
00014   limitations under the License.
00015 
00016   This file was originally developed by Julien Finet, Kitware Inc.
00017   and was partially funded by NIH grant 3P41RR013218-12S1
00018 
00019 ==============================================================================*/
00020 
00021 #ifndef __qSlicerModulesMenu_h
00022 #define __qSlicerModulesMenu_h
00023 
00024 // Qt includes
00025 #include <QMenu>
00026 
00027 // CTK includes
00028 #include "qSlicerBaseQTGUIExport.h"
00029 
00030 class qSlicerAbstractCoreModule;
00031 class qSlicerModulesMenuPrivate;
00032 class qSlicerModuleManager;
00033 
00037 class Q_SLICER_BASE_QTGUI_EXPORT qSlicerModulesMenu: public QMenu
00038 {
00039   Q_OBJECT
00040   Q_PROPERTY(QString currentModule READ currentModule WRITE setCurrentModule NOTIFY currentModuleChanged)
00048   Q_PROPERTY(bool duplicateActions READ duplicateActions WRITE setDuplicateActions)
00049 
00056   Q_PROPERTY(bool showHiddenModules READ showHiddenModules WRITE setShowHiddenModules)
00057 public:
00058   typedef QMenu Superclass;
00059 
00063   qSlicerModulesMenu(const QString& title, QWidget* parent = 0);
00064   qSlicerModulesMenu(QWidget* parent = 0);
00065   virtual ~qSlicerModulesMenu();
00066 
00068   QAction* moduleAction(const QString& moduleName)const;
00069 
00071   inline void addModules(const QStringList& moduleNames);
00072 
00074   inline void removeModules(const QStringList& moduleNames);
00075 
00077   QString currentModule()const;
00078 
00080   void setModuleManager(qSlicerModuleManager* moduleManager);
00081   qSlicerModuleManager* moduleManager()const;
00082 
00083   void setDuplicateActions(bool duplicate);
00084   bool duplicateActions()const;
00085 
00088   void setShowHiddenModules(bool show);
00089   bool showHiddenModules()const;
00090 
00091 public slots:
00099   void addModule(const QString& moduleName);
00100 
00102   void removeModule(const QString& moduleName);
00103 
00105   void setCurrentModuleByTitle(const QString& title);
00106 
00108   void setCurrentModule(const QString& moduleName);
00109 
00110 signals:
00113   void currentModuleChanged(const QString& name);
00114 
00115 protected slots:
00116   void onActionTriggered();
00117   void actionSelected(QAction* action);
00118 
00119 protected:
00120   QScopedPointer<qSlicerModulesMenuPrivate> d_ptr;
00121 
00122   void addModule(qSlicerAbstractCoreModule*);
00123   void removeModule(qSlicerAbstractCoreModule*);
00124 
00125 private:
00126   Q_DECLARE_PRIVATE(qSlicerModulesMenu);
00127   Q_DISABLE_COPY(qSlicerModulesMenu);
00128 };
00129 
00130 //---------------------------------------------------------------------------
00131 void qSlicerModulesMenu::addModules(const QStringList& moduleNames)
00132 {
00133   foreach(const QString& moduleName, moduleNames)
00134     {
00135     this->addModule(moduleName);
00136     }
00137 }
00138 
00139 //---------------------------------------------------------------------------
00140 void qSlicerModulesMenu::removeModules(const QStringList& moduleNames)
00141 {
00142   foreach(const QString& moduleName, moduleNames)
00143     {
00144     this->removeModule(moduleName);
00145     }
00146 }
00147 
00148 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines