Go to the documentation of this file.00001 #include "QmitkMorphologicToolGUI.h"
00002 #include "QmitkNewSegmentationDialog.h"
00003 #include <QBoxLayout>
00004 #include <QLabel>
00005 #include <QRadioButton>
00006 #include <QButtonGroup>
00007 #include <QPushButton>
00008
00009 MITK_TOOL_GUI_MACRO( , QmitkMorphologicToolGUI, "")
00010
00011 QmitkMorphologicToolGUI::QmitkMorphologicToolGUI(): QmitkToolGUI(),
00012 m_Slider(NULL)
00013 {
00014 QBoxLayout* mainLayout = new QVBoxLayout(this);
00015
00016 QBoxLayout* layout1 = new QHBoxLayout();
00017 QBoxLayout* layout2 = new QHBoxLayout();
00018
00019 QLabel* label = new QLabel( "radius:", this );
00020 QFont f = label->font();
00021 f.setBold(false);
00022 label->setFont( f );
00023 layout1->addWidget(label);
00024
00025 m_Slider = new QSlider(Qt::Horizontal, this );
00026 m_Slider->setMaximum(15);
00027 m_Slider->setMinimum(0);
00028 m_Slider->setPageStep(1);
00029 connect( m_Slider, SIGNAL(valueChanged(int)), this, SLOT(OnSliderValueChanged(int)));
00030 m_Slider->setValue( 0 );
00031 layout1->addWidget( m_Slider );
00032
00033 m_SpinBox = new QSpinBox(this);
00034 m_SpinBox->setSuffix(tr(" pixel"));
00035 m_SpinBox->setMaximum(15);
00036 m_SpinBox->setMinimum(0);
00037 m_SpinBox->setSingleStep(1);
00038 connect(m_SpinBox, SIGNAL(valueChanged(int)), this, SLOT(OnSpinBoxValueChanged(int)) );
00039 m_SpinBox->setValue(0);
00040 layout1->addWidget(m_SpinBox);
00041
00042 mainLayout->addLayout(layout1);
00043
00044 QButtonGroup* group = new QButtonGroup(this);
00045 QRadioButton* crossRadioButton = new QRadioButton();
00046 QRadioButton* ballRadioButton = new QRadioButton();
00047 group->addButton(crossRadioButton);
00048 group->addButton(ballRadioButton);
00049
00050 m_CheckBox = new QCheckBox("Preview" ,this);
00051 m_CheckBox->setCheckState(Qt::CheckState::Checked);
00052 connect(m_CheckBox, SIGNAL(stateChanged(int)), this, SLOT(OnCheckStateChanged(int)) );
00053
00054 layout2->addWidget(m_CheckBox);
00055
00056 QPushButton* okButton = new QPushButton("OK", this);
00057 connect(okButton, SIGNAL(clicked()), this, SLOT(OnAcceptPreview()) );
00058 layout2->addWidget(okButton);
00059
00060 mainLayout->addLayout(layout2);
00061
00062 connect( this, SIGNAL(NewToolAssociated(mitk::Tool*)), this, SLOT(OnNewToolAssociated(mitk::Tool*)) );
00063 }
00064
00065 QmitkMorphologicToolGUI::~QmitkMorphologicToolGUI()
00066 {
00067
00068 }
00069
00070 void QmitkMorphologicToolGUI::OnSliderValueChanged(int value)
00071 {
00072 m_SpinBox->setValue(value);
00073 if (m_MorphologicTool.IsNotNull())
00074 m_MorphologicTool->SetRadius(value);
00075 }
00076
00077 void QmitkMorphologicToolGUI::OnSpinBoxValueChanged(int value)
00078 {
00079 m_Slider->setValue(value);
00080 }
00081
00082 void QmitkMorphologicToolGUI::OnCheckStateChanged(int state)
00083 {
00084 if (m_MorphologicTool.IsNotNull())
00085 m_MorphologicTool->SetPreview(state);
00086 }
00087
00088 void QmitkMorphologicToolGUI::OnNewToolAssociated(mitk::Tool* tool)
00089 {
00090 m_MorphologicTool = dynamic_cast<mitk::MorphologicTool*>( tool );
00091 }
00092
00093 void QmitkMorphologicToolGUI::OnAcceptPreview()
00094 {
00095 if (m_MorphologicTool.IsNotNull())
00096 {
00097 QmitkNewSegmentationDialog* dialog = new QmitkNewSegmentationDialog( this );
00098 dialog->setPrompt("What did you just segment?");
00099 int dialogReturnValue = dialog->exec();
00100
00101 std::string name = dialog->GetSegmentationName().toLocal8Bit().data();
00102 mitk::Color color = dialog->GetColor();
00103
00104 delete dialog;
00105
00106 if ( dialogReturnValue != QDialog::Rejected )
00107 {
00108 m_MorphologicTool->AcceptPreview( name, color );
00109 }
00110 else
00111 {
00112 m_MorphologicTool->CancelPreviewing();
00113 }
00114 }
00115 }