|
Slicer 4.2
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
|
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
1.7.4