00001 /*========================================================================= 00002 00003 Program: Medical Imaging & Interaction Toolkit 00004 Language: C++ 00005 Date: $Date$ 00006 Version: $Revision: 16581 $ 00007 00008 Copyright (c) German Cancer Research Center, Division of Medical and 00009 Biological Informatics. All rights reserved. 00010 See MITKCopyright.txt or https://www.mitk.org/copyright.html for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 #ifndef QmitkToolSelectionBox_h_Included 00019 #define QmitkToolSelectionBox_h_Included 00020 00021 #include "QmitkToolGUIArea.h" 00022 #include "QmitkExtExports.h" 00023 00024 #include "mitkToolManager.h" 00025 00026 #include <QWidget> 00027 #include <QButtonGroup> 00028 #include <QGridLayout> 00029 00030 #include <map> 00031 00032 class QmitkToolGUI; 00033 00057 class QmitkExt_EXPORT QmitkToolSelectionBox : public QWidget 00059 { 00060 Q_OBJECT 00061 00062 public: 00063 00064 enum EnabledMode { EnabledWithReferenceAndWorkingData, EnabledWithReferenceData, EnabledWithWorkingData, AlwaysEnabled }; 00065 00066 QmitkToolSelectionBox(QWidget* parent = 0, mitk::DataStorage* storage = 0); 00067 virtual ~QmitkToolSelectionBox(); 00068 00069 mitk::ToolManager* GetToolManager(); 00070 void SetToolManager(mitk::ToolManager&); // no NULL pointer allowed here, a manager is required 00071 00072 void setTitle( const QString& title ); 00073 00079 void SetDisplayedToolGroups(const std::string& toolGroups = 0); 00080 00081 void OnToolManagerToolModified(); 00082 void OnToolManagerReferenceDataModified(); 00083 void OnToolManagerWorkingDataModified(); 00084 00085 void OnToolGUIProcessEventsMessage(); 00086 void OnToolErrorMessage(std::string s); 00087 void OnGeneralToolMessage(std::string s); 00088 00089 signals: 00090 00094 void ToolSelected(int id); 00095 00096 public slots: 00097 00098 virtual void setEnabled( bool ); 00099 virtual void SetEnabledMode(EnabledMode mode); 00100 00101 virtual void SetLayoutColumns(int); 00102 virtual void SetShowNames(bool); 00103 virtual void SetGenerateAccelerators(bool); 00104 00105 virtual void SetToolGUIArea( QWidget* parentWidget ); 00106 00107 protected slots: 00108 00109 void toolButtonClicked(int id); 00110 void SetGUIEnabledAccordingToToolManagerState(); 00111 00112 protected: 00113 00114 void showEvent( QShowEvent* ); 00115 void hideEvent( QHideEvent* ); 00116 00117 void RecreateButtons(); 00118 void SetOrUnsetButtonForActiveTool(); 00119 00120 mitk::ToolManager::Pointer m_ToolManager; 00121 00122 bool m_SelfCall; 00123 00124 std::string m_DisplayedGroups; 00125 00127 std::map<int,int> m_ButtonIDForToolID; 00129 std::map<int,int> m_ToolIDForButtonID; 00130 00131 int m_LayoutColumns; 00132 bool m_ShowNames; 00133 bool m_GenerateAccelerators; 00134 00135 QWidget* m_ToolGUIWidget; 00136 QmitkToolGUI* m_LastToolGUI; 00137 00138 // store buttons in this group 00139 QButtonGroup* m_ToolButtonGroup; 00140 QGridLayout* m_ButtonLayout; 00141 00142 EnabledMode m_EnabledMode; 00143 }; 00144 00145 #endif 00146