Page MenuHomePhabricator

patch-3186.patch

Authored By
maleike
Dec 17 2009, 1:41 PM
Size
11 KB
Referenced Files
None
Subscribers
None

patch-3186.patch

Index: CoreUI/Qmitk/QmitkRenderWindowMenu.cpp
===================================================================
--- CoreUI/Qmitk/QmitkRenderWindowMenu.cpp (revision 20895)
+++ CoreUI/Qmitk/QmitkRenderWindowMenu.cpp (working copy)
@@ -47,7 +47,8 @@
m_Layout(0),
m_LayoutDesign(0),
m_OldLayoutDesign(0),
-m_FullScreenMode(false)
+m_FullScreenMode(false),
+m_CrosshairMenu(NULL)
{
//Create Menu Widget
this->CreateMenuWidget();
@@ -80,68 +81,12 @@
QSize size( 13, 13 );
- static QMenu* crosshairModesMenu = NULL;
- if ( !crosshairModesMenu )
- {
- crosshairModesMenu = new QMenu(NULL); // is shared by all menubars TODO should be deleted somehow
-
- m_ShowHideCrosshairVisibilityAction = new QAction(crosshairModesMenu);
- m_ShowHideCrosshairVisibilityAction->setText("Show crosshair");
- m_ShowHideCrosshairVisibilityAction->setCheckable(true);
- m_ShowHideCrosshairVisibilityAction->setChecked(true); // TODO observe current status
- connect( m_ShowHideCrosshairVisibilityAction, SIGNAL(toggled(bool)), this, SIGNAL(ShowCrosshair(bool)));
- crosshairModesMenu->addAction( m_ShowHideCrosshairVisibilityAction );
-
- QAction* resetViewAction = new QAction(crosshairModesMenu);
- resetViewAction->setText("Reset view");
- connect( resetViewAction, SIGNAL(triggered()), this, SIGNAL(ResetView()));
- crosshairModesMenu->addAction( resetViewAction );
-
- QAction* rotationGroupSeparator = new QAction(crosshairModesMenu);
- rotationGroupSeparator->setSeparator(true);
- rotationGroupSeparator->setText("Rotation mode");
- crosshairModesMenu->addAction( rotationGroupSeparator );
-
- QActionGroup* rotationModeActionGroup = new QActionGroup(crosshairModesMenu);
- rotationModeActionGroup->setExclusive(true);
- connect( rotationModeActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(OnCrosshairRotationModeSelected(QAction*)) );
-
- QAction* noCrosshairRotation = new QAction(crosshairModesMenu);
- noCrosshairRotation->setActionGroup(rotationModeActionGroup);
- noCrosshairRotation->setText("No crosshair rotation");
- noCrosshairRotation->setCheckable(true);
- noCrosshairRotation->setChecked(true); // TODO observe current status
- noCrosshairRotation->setData( QmitkStdMultiWidget::PLANE_MODE_SLICING );
- crosshairModesMenu->addAction( noCrosshairRotation );
-
- QAction* singleCrosshairRotation = new QAction(crosshairModesMenu);
- singleCrosshairRotation->setActionGroup(rotationModeActionGroup);
- singleCrosshairRotation->setText("Crosshair rotation");
- singleCrosshairRotation->setCheckable(true);
- singleCrosshairRotation->setData( QmitkStdMultiWidget::PLANE_MODE_ROTATION );
- crosshairModesMenu->addAction( singleCrosshairRotation );
-
- QAction* coupledCrosshairRotation = new QAction(crosshairModesMenu);
- coupledCrosshairRotation->setActionGroup(rotationModeActionGroup);
- coupledCrosshairRotation->setText("Coupled crosshair rotation");
- coupledCrosshairRotation->setCheckable(true);
- coupledCrosshairRotation->setData( QmitkStdMultiWidget::PLANE_MODE_ROTATION );
- crosshairModesMenu->addAction( coupledCrosshairRotation );
-
- QAction* swivelMode = new QAction(crosshairModesMenu);
- swivelMode->setActionGroup(rotationModeActionGroup);
- swivelMode->setText("Swivel mode");
- swivelMode->setCheckable(true);
- swivelMode->setData( QmitkStdMultiWidget::PLANE_MODE_SWIVEL );
- crosshairModesMenu->addAction( swivelMode );
- }
-
// button for changing rotation mode
m_CrosshairModeButton = new QPushButton();
m_CrosshairModeButton->setMaximumSize(15, 15);
m_CrosshairModeButton->setIconSize(size);
m_CrosshairModeButton->setFlat( true );
- m_CrosshairModeButton->setMenu( crosshairModesMenu );
+ m_CrosshairModeButton->setMenu( this->GetCrossHairMenu() );
m_CrosshairModeButton->setIcon( QIcon( iconCrosshairMode_xpm ) );
layout->addWidget( m_CrosshairModeButton );
@@ -166,7 +111,87 @@
connect( m_SettingsButton, SIGNAL( clicked(bool) ), this, SLOT(OnSettingsButton(bool)) );
}
+QMenu* QmitkRenderWindowMenu::CreateCrosshairMenu()
+{
+ QMenu* crosshairModesMenu = new QMenu(this);
+
+ m_ShowHideCrosshairVisibilityAction = new QAction(crosshairModesMenu);
+ m_ShowHideCrosshairVisibilityAction->setText("Show crosshair");
+ m_ShowHideCrosshairVisibilityAction->setCheckable(true);
+ m_ShowHideCrosshairVisibilityAction->setChecked(true); // TODO observe current status
+ crosshairModesMenu->addAction( m_ShowHideCrosshairVisibilityAction );
+ QAction* resetViewAction = new QAction(crosshairModesMenu);
+ resetViewAction->setText("Reset view");
+ crosshairModesMenu->addAction( resetViewAction );
+
+ QAction* rotationGroupSeparator = new QAction(crosshairModesMenu);
+ rotationGroupSeparator->setSeparator(true);
+ rotationGroupSeparator->setText("Rotation mode");
+ crosshairModesMenu->addAction( rotationGroupSeparator );
+
+ QActionGroup* rotationModeActionGroup = new QActionGroup(crosshairModesMenu);
+ rotationModeActionGroup->setExclusive(true);
+
+ QAction* noCrosshairRotation = new QAction(crosshairModesMenu);
+ noCrosshairRotation->setActionGroup(rotationModeActionGroup);
+ noCrosshairRotation->setText("No crosshair rotation");
+ noCrosshairRotation->setCheckable(true);
+ noCrosshairRotation->setChecked(true); // TODO observe current status
+ noCrosshairRotation->setData( QmitkStdMultiWidget::PLANE_MODE_SLICING );
+ crosshairModesMenu->addAction( noCrosshairRotation );
+
+ QAction* singleCrosshairRotation = new QAction(crosshairModesMenu);
+ singleCrosshairRotation->setActionGroup(rotationModeActionGroup);
+ singleCrosshairRotation->setText("Crosshair rotation");
+ singleCrosshairRotation->setCheckable(true);
+ singleCrosshairRotation->setData( QmitkStdMultiWidget::PLANE_MODE_ROTATION );
+ crosshairModesMenu->addAction( singleCrosshairRotation );
+
+ QAction* coupledCrosshairRotation = new QAction(crosshairModesMenu);
+ coupledCrosshairRotation->setActionGroup(rotationModeActionGroup);
+ coupledCrosshairRotation->setText("Coupled crosshair rotation");
+ coupledCrosshairRotation->setCheckable(true);
+ coupledCrosshairRotation->setData( QmitkStdMultiWidget::PLANE_MODE_ROTATION );
+ crosshairModesMenu->addAction( coupledCrosshairRotation );
+
+ QAction* swivelMode = new QAction(crosshairModesMenu);
+ swivelMode->setActionGroup(rotationModeActionGroup);
+ swivelMode->setText("Swivel mode");
+ swivelMode->setCheckable(true);
+ swivelMode->setData( QmitkStdMultiWidget::PLANE_MODE_SWIVEL );
+ crosshairModesMenu->addAction( swivelMode );
+
+ connect( m_ShowHideCrosshairVisibilityAction, SIGNAL(toggled(bool)), this, SIGNAL(ShowCrosshair(bool)));
+ connect( resetViewAction, SIGNAL(triggered()), this, SIGNAL(ResetView()));
+ connect( rotationModeActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(OnCrosshairRotationModeSelected(QAction*)) );
+
+ return crosshairModesMenu;
+}
+
+QMenu* QmitkRenderWindowMenu::GetCrossHairMenu()
+{
+ if (!m_CrosshairMenu)
+ {
+ m_CrosshairMenu = this->CreateCrosshairMenu();
+ }
+
+ return m_CrosshairMenu;
+}
+
+void QmitkRenderWindowMenu::SetCrossHairMenu(QMenu* menu)
+{
+ if (m_CrosshairMenu != menu)
+ {
+ m_CrosshairMenu = menu;
+
+ if (m_CrosshairModeButton)
+ {
+ m_CrosshairModeButton->setMenu( GetCrossHairMenu() );
+ }
+ }
+}
+
void QmitkRenderWindowMenu::CreateSettingsWidget()
{
m_Settings = new QMenu(this);
Index: CoreUI/Qmitk/QmitkRenderWindow.cpp
===================================================================
--- CoreUI/Qmitk/QmitkRenderWindow.cpp (revision 20895)
+++ CoreUI/Qmitk/QmitkRenderWindow.cpp (working copy)
@@ -35,7 +35,7 @@
#include "QmitkRenderWindowMenu.h"
QmitkRenderWindow::QmitkRenderWindow(QWidget *parent, QString name, mitk::VtkPropRenderer* renderer)
-: QVTKWidget(parent), m_Renderer(renderer), m_ResendQtEvents(true), m_MenuWidgetActivated(false)
+: QVTKWidget(parent), m_Renderer(renderer), m_ResendQtEvents(true), m_MenuWidgetActivated(false), m_MenuWidget(NULL)
{
if(m_Renderer.IsNull())
{
@@ -322,3 +322,20 @@
if( m_MenuWidget )
m_MenuWidget->ChangeFullScreenMode( state );
}
+
+QMenu* QmitkRenderWindow::GetCrossHairMenu()
+{
+ if (m_MenuWidget)
+ {
+ return m_MenuWidget->GetCrossHairMenu();
+ }
+}
+
+void QmitkRenderWindow::SetCrossHairMenu(QMenu* menu)
+{
+ if (m_MenuWidget)
+ {
+ m_MenuWidget->SetCrossHairMenu( menu );
+ }
+}
+
Index: CoreUI/Qmitk/QmitkRenderWindowMenu.h
===================================================================
--- CoreUI/Qmitk/QmitkRenderWindowMenu.h (revision 20895)
+++ CoreUI/Qmitk/QmitkRenderWindowMenu.h (working copy)
@@ -196,8 +196,13 @@
};
+ QMenu* GetCrossHairMenu();
+ void SetCrossHairMenu(QMenu* menu);
+
protected:
+ QMenu* CreateCrosshairMenu();
+
QPushButton* m_CrosshairModeButton;
QAction* m_ShowHideCrosshairVisibilityAction;
@@ -247,6 +252,8 @@
/*! QMenu containg all layout direction and layout design settings.*/
QMenu* m_Settings;
+
+ QMenu* m_CrosshairMenu;
/*! Index of layout direction. 0: transversal; 1: saggital; 2: coronal; 3: threeD */
unsigned int m_Layout;
Index: CoreUI/Qmitk/QmitkStdMultiWidget.h
===================================================================
--- CoreUI/Qmitk/QmitkStdMultiWidget.h (revision 20895)
+++ CoreUI/Qmitk/QmitkStdMultiWidget.h (working copy)
@@ -49,6 +49,7 @@
public:
QmitkStdMultiWidget(QWidget* parent = 0, Qt::WindowFlags f = 0);
+ virtual ~QmitkStdMultiWidget();
mitk::SliceNavigationController*
GetTimeNavigationController();
Index: CoreUI/Qmitk/QmitkStdMultiWidget.cpp
===================================================================
--- CoreUI/Qmitk/QmitkStdMultiWidget.cpp (revision 20895)
+++ CoreUI/Qmitk/QmitkStdMultiWidget.cpp (working copy)
@@ -127,18 +127,21 @@
mitkWidget2->setMaximumSize(2000,2000);
mitkWidget2->setEnabled( TRUE );
mitkWidget2->SetLayoutIndex( SAGITTAL );
+ mitkWidget2->SetCrossHairMenu( mitkWidget1->GetCrossHairMenu() );
mitkWidgetLayout2->addWidget(mitkWidget2);
//Create RenderWindows 3
mitkWidget3 = new QmitkRenderWindow(mitkWidget3Container, "stdmulti.widget3");
mitkWidget3->setMaximumSize(2000,2000);
mitkWidget3->SetLayoutIndex( CORONAL );
+ mitkWidget3->SetCrossHairMenu( mitkWidget1->GetCrossHairMenu() );
mitkWidgetLayout3->addWidget(mitkWidget3);
//Create RenderWindows 4
mitkWidget4 = new QmitkRenderWindow(mitkWidget4Container, "stdmulti.widget4");
mitkWidget4->setMaximumSize(2000,2000);
mitkWidget4->SetLayoutIndex( THREE_D );
+ mitkWidget4->SetCrossHairMenu( mitkWidget1->GetCrossHairMenu() );
mitkWidgetLayout4->addWidget(mitkWidget4);
//create SignalSlot Connection
@@ -405,6 +408,12 @@
mitkWidget4->GetRenderWindow() );
m_RectangleRendering4->Enable(1.0,1.0,0.0);
}
+
+QmitkStdMultiWidget::~QmitkStdMultiWidget()
+{
+ DisablePositionTracking();
+ DisableNavigationControllerEventListening();
+}
void QmitkStdMultiWidget::RemovePlanesFromDataStorage()
{
@@ -1545,7 +1554,6 @@
gi->AddListener( m_TimeNavigationController );
}
-
void QmitkStdMultiWidget::DisableNavigationControllerEventListening()
{
// Do not let NavigationControllers listen to GlobalInteraction
Index: CoreUI/Qmitk/QmitkRenderWindow.h
===================================================================
--- CoreUI/Qmitk/QmitkRenderWindow.h (revision 20895)
+++ CoreUI/Qmitk/QmitkRenderWindow.h (working copy)
@@ -52,6 +52,9 @@
virtual mitk::BaseController * GetController();
virtual mitk::VtkPropRenderer* GetRenderer();
+ QMenu* GetCrossHairMenu();
+ void SetCrossHairMenu(QMenu* menu);
+
/**
* \brief Whether Qt events should be passed to parent (default: true)
*

File Metadata

Mime Type
text/plain
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
396
Default Alt Text
patch-3186.patch (11 KB)