Skip to content
Snippets Groups Projects
Commit bcea8fbf authored by Pospelov, Gennady's avatar Pospelov, Gennady
Browse files

More accurate handling of deleted instrument in InsturmentEditorWidget.

parent b6002733
No related branches found
No related tags found
No related merge requests found
...@@ -74,6 +74,13 @@ void DetectorEditorWidget::subscribeToItem() ...@@ -74,6 +74,13 @@ void DetectorEditorWidget::subscribeToItem()
init_SubDetector_Widget(); init_SubDetector_Widget();
} }
void DetectorEditorWidget::unsubscribeFromItem()
{
m_currentDetector = nullptr;
remove_SubDetectorWidget();
m_detectorTypeEditor->clearEditor();
}
void DetectorEditorWidget::init_SubDetector_Widget() void DetectorEditorWidget::init_SubDetector_Widget()
{ {
if (m_currentDetector == instrumentItem()->detectorItem()) if (m_currentDetector == instrumentItem()->detectorItem())
...@@ -81,11 +88,7 @@ void DetectorEditorWidget::init_SubDetector_Widget() ...@@ -81,11 +88,7 @@ void DetectorEditorWidget::init_SubDetector_Widget()
m_currentDetector = instrumentItem()->detectorItem(); m_currentDetector = instrumentItem()->detectorItem();
if (m_subDetectorWidget) remove_SubDetectorWidget();
m_groupBox->layout()->removeWidget(m_subDetectorWidget);
delete m_subDetectorWidget;
m_subDetectorWidget = 0;
if (m_currentDetector->modelType() == Constants::SphericalDetectorType) { if (m_currentDetector->modelType() == Constants::SphericalDetectorType) {
m_subDetectorWidget = new SphericalDetectorWidget(m_columnResizer, m_currentDetector); m_subDetectorWidget = new SphericalDetectorWidget(m_columnResizer, m_currentDetector);
...@@ -100,6 +103,15 @@ void DetectorEditorWidget::init_SubDetector_Widget() ...@@ -100,6 +103,15 @@ void DetectorEditorWidget::init_SubDetector_Widget()
m_groupBox->layout()->addWidget(m_subDetectorWidget); m_groupBox->layout()->addWidget(m_subDetectorWidget);
} }
void DetectorEditorWidget::remove_SubDetectorWidget()
{
if (m_subDetectorWidget)
m_groupBox->layout()->removeWidget(m_subDetectorWidget);
delete m_subDetectorWidget;
m_subDetectorWidget = 0;
}
InstrumentItem* DetectorEditorWidget::instrumentItem() InstrumentItem* DetectorEditorWidget::instrumentItem()
{ {
return dynamic_cast<InstrumentItem*>(currentItem()); return dynamic_cast<InstrumentItem*>(currentItem());
......
...@@ -40,9 +40,11 @@ private slots: ...@@ -40,9 +40,11 @@ private slots:
protected: protected:
virtual void subscribeToItem(); virtual void subscribeToItem();
virtual void unsubscribeFromItem();
private: private:
void init_SubDetector_Widget(); void init_SubDetector_Widget();
void remove_SubDetectorWidget();
InstrumentItem* instrumentItem(); InstrumentItem* instrumentItem();
ColumnResizer* m_columnResizer; ColumnResizer* m_columnResizer;
......
...@@ -44,6 +44,11 @@ InstrumentComponentsWidget::InstrumentComponentsWidget(QWidget* parent) ...@@ -44,6 +44,11 @@ InstrumentComponentsWidget::InstrumentComponentsWidget(QWidget* parent)
void InstrumentComponentsWidget::setInstrumentItem(InstrumentItem* instrumentItem) void InstrumentComponentsWidget::setInstrumentItem(InstrumentItem* instrumentItem)
{ {
m_beamEditor->setBeamItem(instrumentItem->beamItem()); if(instrumentItem) {
m_detectorEditor->setItem(instrumentItem); m_beamEditor->setBeamItem(instrumentItem->beamItem());
m_detectorEditor->setItem(instrumentItem);
} else {
m_beamEditor->setBeamItem(nullptr);
m_detectorEditor->setItem(nullptr);
}
} }
...@@ -71,8 +71,7 @@ void InstrumentEditorWidget::setInstrumentItem(SessionItem* instrument) ...@@ -71,8 +71,7 @@ void InstrumentEditorWidget::setInstrumentItem(SessionItem* instrument)
updateWidgets(); updateWidgets();
InstrumentItem* instrumentItem = dynamic_cast<InstrumentItem*>(instrument); InstrumentItem* instrumentItem = dynamic_cast<InstrumentItem*>(instrument);
if (instrumentItem) m_instrumentComponents->setInstrumentItem(instrumentItem);
m_instrumentComponents->setInstrumentItem(instrumentItem);
} }
void InstrumentEditorWidget::onChangedEditor(const QString&) void InstrumentEditorWidget::onChangedEditor(const QString&)
...@@ -109,9 +108,9 @@ void InstrumentEditorWidget::updateWidgets() ...@@ -109,9 +108,9 @@ void InstrumentEditorWidget::updateWidgets()
m_block_signals = true; m_block_signals = true;
if (m_currentItem) { if (m_currentItem) {
m_nameLineEdit->setText(m_currentItem->itemName());
m_nameLineEdit->setEnabled(true); m_nameLineEdit->setEnabled(true);
m_typeComboBox->setEnabled(true); m_typeComboBox->setEnabled(true);
m_nameLineEdit->setText(m_currentItem->itemName());
} else { } else {
m_nameLineEdit->setText(QString()); m_nameLineEdit->setText(QString());
m_nameLineEdit->setEnabled(false); m_nameLineEdit->setEnabled(false);
......
...@@ -45,6 +45,7 @@ InstrumentSelectorWidget::InstrumentSelectorWidget(InstrumentModel *model, QWidg ...@@ -45,6 +45,7 @@ InstrumentSelectorWidget::InstrumentSelectorWidget(InstrumentModel *model, QWidg
"")); ""));
setModel(model); setModel(model);
layout()->setMargin(10);
} }
QSize InstrumentSelectorWidget::sizeHint() const QSize InstrumentSelectorWidget::sizeHint() const
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment