Skip to content
Snippets Groups Projects
Commit f4590476 authored by Wuttke, Joachim's avatar Wuttke, Joachim
Browse files

+ onSelectMaterial; - parent

parent 95461bcc
No related branches found
No related tags found
1 merge request!2201repair and copy edit MaterialEditorDialog (#867); get rid of class DoubleLineEdit
...@@ -32,9 +32,23 @@ ...@@ -32,9 +32,23 @@
#include <QHBoxLayout> #include <QHBoxLayout>
#include <QVBoxLayout> #include <QVBoxLayout>
MaterialEditorDialog::MaterialEditorDialog(SampleItem* sample, QWidget* parent) //! Static caller
: QDialog(parent)
, m_sample(sample) QString MaterialEditorDialog::chooseMaterial(SampleItem* sample,
const QString& identifierOfPreviousMaterial)
{
MaterialEditorDialog dialog(sample);
dialog.setCurrentMaterial(identifierOfPreviousMaterial);
if (dialog.exec() == QDialog::Accepted)
if (MaterialItem* material = dialog.currentMaterialItem())
return material->identifier();
return {};
}
MaterialEditorDialog::MaterialEditorDialog(SampleItem* sample)
: m_sample(sample)
{ {
setObjectName("MaterialEditorDialog"); setObjectName("MaterialEditorDialog");
...@@ -95,26 +109,29 @@ MaterialEditorDialog::MaterialEditorDialog(SampleItem* sample, QWidget* parent) ...@@ -95,26 +109,29 @@ MaterialEditorDialog::MaterialEditorDialog(SampleItem* sample, QWidget* parent)
// Refractive data // Refractive data
m_refractiveGroupBox = new QGroupBox("Material data (refractive index based)"); m_refr_group = new QGroupBox("Material data (refractive index based)");
ed_vlayout->addWidget(m_refractiveGroupBox); ed_vlayout->addWidget(m_refr_group);
auto* formLayout_5 = new QFormLayout(m_refractiveGroupBox); // WHERE USED? auto* refr_form = new QFormLayout;
m_refr_group->setLayout(refr_form);
m_deltaEdit = new QLineEdit; m_deltaEdit = new QLineEdit;
m_deltaEdit->setToolTip("Delta of refractive index (n = 1 - delta + i*beta)"); m_deltaEdit->setToolTip("Delta of refractive index (n = 1 - delta + i*beta)");
m_betaEdit = new QLineEdit; m_betaEdit = new QLineEdit;
m_betaEdit->setToolTip("Beta of refractive index (n = 1 - delta + i*beta)"); m_betaEdit->setToolTip("Beta of refractive index (n = 1 - delta + i*beta)");
formLayout_5->addRow("Delta:", m_deltaEdit); refr_form->addRow("Delta:", m_deltaEdit);
formLayout_5->addRow("Beta:", m_betaEdit); refr_form->addRow("Beta:", m_betaEdit);
m_sldGroupBox = new QGroupBox("Material data (SLD based [1/Ų])"); m_sld_group = new QGroupBox("Material data (SLD based [1/Ų])");
ed_vlayout->addWidget(m_sldGroupBox); ed_vlayout->addWidget(m_sld_group);
auto* formLayout_4 = new QFormLayout;
auto* sld_form = new QFormLayout;
m_refr_group->setLayout(sld_form);
m_realEdit = new QLineEdit; m_realEdit = new QLineEdit;
m_realEdit->setToolTip("Real part of SLD (SLD = real - i*imag), AA^{-2}"); m_realEdit->setToolTip("Real part of SLD (SLD = real - i*imag), AA^{-2}");
m_imaginaryEdit = new QLineEdit; m_imaginaryEdit = new QLineEdit;
m_imaginaryEdit->setToolTip("Imaginary part of SLD (SLD = real - i*imag), AA^{-2}"); m_imaginaryEdit->setToolTip("Imaginary part of SLD (SLD = real - i*imag), AA^{-2}");
formLayout_4->addRow("Real:", m_realEdit); sld_form->addRow("Real:", m_realEdit);
formLayout_4->addRow("Imaginary:", m_imaginaryEdit); sld_form->addRow("Imaginary:", m_imaginaryEdit);
// Magnetization // Magnetization
...@@ -246,9 +263,11 @@ MaterialEditorDialog::MaterialEditorDialog(SampleItem* sample, QWidget* parent) ...@@ -246,9 +263,11 @@ MaterialEditorDialog::MaterialEditorDialog(SampleItem* sample, QWidget* parent)
if (m_model->rowCount() > 0) if (m_model->rowCount() > 0)
m_treeView->setCurrentIndex(m_model->first()); m_treeView->setCurrentIndex(m_model->first());
else { else {
m_sldGroupBox->hide(); m_sld_group->hide();
m_editor->setEnabled(false); m_editor->setEnabled(false);
} }
onSelectMaterial();
} }
MaterialEditorDialog::~MaterialEditorDialog() MaterialEditorDialog::~MaterialEditorDialog()
...@@ -262,18 +281,6 @@ void MaterialEditorDialog::accept() ...@@ -262,18 +281,6 @@ void MaterialEditorDialog::accept()
QDialog::accept(); QDialog::accept();
} }
QString MaterialEditorDialog::chooseMaterial(QWidget* parent, SampleItem* sample,
const QString& identifierOfPreviousMaterial)
{
MaterialEditorDialog dialog(sample, parent);
dialog.setCurrentMaterial(identifierOfPreviousMaterial);
if (dialog.exec() == QDialog::Accepted)
if (MaterialItem* material = dialog.currentMaterialItem())
return material->identifier();
return {};
}
void MaterialEditorDialog::addRefractiveMaterial() void MaterialEditorDialog::addRefractiveMaterial()
{ {
setCurrentMaterial(m_model->addRefractiveMaterialItem("unnamed", 0.0, 0.0)); setCurrentMaterial(m_model->addRefractiveMaterialItem("unnamed", 0.0, 0.0));
...@@ -293,7 +300,7 @@ void MaterialEditorDialog::cloneCurrentMaterial() ...@@ -293,7 +300,7 @@ void MaterialEditorDialog::cloneCurrentMaterial()
void MaterialEditorDialog::removeCurrentMaterial() void MaterialEditorDialog::removeCurrentMaterial()
{ {
MaterialItem* material = currentMaterialItem(); MaterialItem* material = currentMaterialItem();
if (material == nullptr) if (!material)
return; return;
if (identifiersOfUsedMaterials().contains(material->identifier())) { if (identifiersOfUsedMaterials().contains(material->identifier())) {
...@@ -313,6 +320,16 @@ void MaterialEditorDialog::onSelectColor() ...@@ -313,6 +320,16 @@ void MaterialEditorDialog::onSelectColor()
fill(); fill();
} }
void MaterialEditorDialog::onSelectMaterial()
{
MaterialItem* material = currentMaterialItem();
if (!material)
return;
m_refr_group->setVisible(material->hasRefractiveIndex());
m_sld_group->setVisible(!material->hasRefractiveIndex());
}
void MaterialEditorDialog::updateActionEnabling() void MaterialEditorDialog::updateActionEnabling()
{ {
m_removeMaterialAction->setEnabled(currentIndex().isValid()); m_removeMaterialAction->setEnabled(currentIndex().isValid());
...@@ -330,8 +347,8 @@ void MaterialEditorDialog::fill() ...@@ -330,8 +347,8 @@ void MaterialEditorDialog::fill()
m_editor->setEnabled(materialItem != nullptr); m_editor->setEnabled(materialItem != nullptr);
if (materialItem == nullptr) { if (materialItem == nullptr) {
m_refractiveGroupBox->show(); m_refr_group->show();
m_sldGroupBox->hide(); m_sld_group->hide();
for (auto* lineEdit : m_editor->findChildren<QLineEdit*>()) for (auto* lineEdit : m_editor->findChildren<QLineEdit*>())
lineEdit->clear(); lineEdit->clear();
for (auto* spinBox : m_editor->findChildren<QDoubleSpinBox*>()) for (auto* spinBox : m_editor->findChildren<QDoubleSpinBox*>())
...@@ -339,9 +356,6 @@ void MaterialEditorDialog::fill() ...@@ -339,9 +356,6 @@ void MaterialEditorDialog::fill()
return; return;
} }
m_refractiveGroupBox->setVisible(materialItem->hasRefractiveIndex());
m_sldGroupBox->setVisible(!materialItem->hasRefractiveIndex());
m_nameEdit->setText(materialItem->matItemName()); m_nameEdit->setText(materialItem->matItemName());
m_colorInfo->setText(QString("[%1, %2, %3] (%4)") m_colorInfo->setText(QString("[%1, %2, %3] (%4)")
.arg(materialItem->color().red()) .arg(materialItem->color().red())
...@@ -368,11 +382,13 @@ void MaterialEditorDialog::fill() ...@@ -368,11 +382,13 @@ void MaterialEditorDialog::fill()
void MaterialEditorDialog::setCurrentMaterial(const MaterialItem* m) void MaterialEditorDialog::setCurrentMaterial(const MaterialItem* m)
{ {
m_treeView->setCurrentIndex(m_model->indexFromMaterial(m)); m_treeView->setCurrentIndex(m_model->indexFromMaterial(m));
onSelectMaterial();
} }
void MaterialEditorDialog::setCurrentMaterial(const QString& identifier) void MaterialEditorDialog::setCurrentMaterial(const QString& identifier)
{ {
m_treeView->setCurrentIndex(m_model->indexFromMaterial(identifier)); m_treeView->setCurrentIndex(m_model->indexFromMaterial(identifier));
onSelectMaterial();
} }
QModelIndex MaterialEditorDialog::currentIndex() const QModelIndex MaterialEditorDialog::currentIndex() const
......
...@@ -41,11 +41,11 @@ public: ...@@ -41,11 +41,11 @@ public:
//! Use this to choose a material. identifierOfPreviousMaterial is the material which should be //! Use this to choose a material. identifierOfPreviousMaterial is the material which should be
//! selected when opening the dialog. Returns the identifier of the newly selected material. //! selected when opening the dialog. Returns the identifier of the newly selected material.
//! Returns an empty string, if the dialog is cancelled. //! Returns an empty string, if the dialog is cancelled.
static QString chooseMaterial(QWidget* parent, SampleItem* sample, static QString chooseMaterial(SampleItem* sample,
const QString& identifierOfPreviousMaterial); const QString& identifierOfPreviousMaterial);
private: private:
MaterialEditorDialog(SampleItem* sample, QWidget* parent = nullptr); MaterialEditorDialog(SampleItem* sample);
~MaterialEditorDialog() override; ~MaterialEditorDialog() override;
//! updates original material model with the edited model //! updates original material model with the edited model
...@@ -57,6 +57,8 @@ private: ...@@ -57,6 +57,8 @@ private:
void removeCurrentMaterial(); void removeCurrentMaterial();
void onSelectColor(); void onSelectColor();
void onSelectMaterial();
void updateActionEnabling(); void updateActionEnabling();
void fill(); void fill();
void setCurrentMaterial(const MaterialItem* m); void setCurrentMaterial(const MaterialItem* m);
...@@ -68,7 +70,6 @@ private: ...@@ -68,7 +70,6 @@ private:
//! E.g. the material selected in a particle. //! E.g. the material selected in a particle.
QStringList identifiersOfUsedMaterials() const; QStringList identifiersOfUsedMaterials() const;
private:
MaterialModel m_tmpMaterialModel; //! Materials for working within this dialog MaterialModel m_tmpMaterialModel; //! Materials for working within this dialog
QAction* m_cloneMaterialAction; QAction* m_cloneMaterialAction;
...@@ -80,8 +81,8 @@ private: ...@@ -80,8 +81,8 @@ private:
QTreeView* m_treeView; QTreeView* m_treeView;
QPushButton* m_selectColorButton; QPushButton* m_selectColorButton;
QWidget* m_editor; QWidget* m_editor;
QGroupBox* m_sldGroupBox; QGroupBox* m_sld_group;
QGroupBox* m_refractiveGroupBox; QGroupBox* m_refr_group;
QDoubleSpinBox* m_xSpinBox; QDoubleSpinBox* m_xSpinBox;
QDoubleSpinBox* m_ySpinBox; QDoubleSpinBox* m_ySpinBox;
QDoubleSpinBox* m_zSpinBox; QDoubleSpinBox* m_zSpinBox;
......
...@@ -59,7 +59,7 @@ void MaterialInplaceForm::selectMaterial() ...@@ -59,7 +59,7 @@ void MaterialInplaceForm::selectMaterial()
{ {
const auto materialsBackup = GUI::Util::createBackup(&m_ec->sampleItem()->materialModel()); const auto materialsBackup = GUI::Util::createBackup(&m_ec->sampleItem()->materialModel());
const QString newMaterialIdentifier = MaterialEditorDialog::chooseMaterial( const QString newMaterialIdentifier = MaterialEditorDialog::chooseMaterial(
GUI::Global::mainWindow, m_ec->sampleItem(), m_item->materialIdentifier()); m_ec->sampleItem(), m_item->materialIdentifier());
if (!newMaterialIdentifier.isEmpty() && newMaterialIdentifier != m_item->materialIdentifier()) { if (!newMaterialIdentifier.isEmpty() && newMaterialIdentifier != m_item->materialIdentifier()) {
itemWithMaterial()->materialItem()->disconnect(this); itemWithMaterial()->materialItem()->disconnect(this);
......
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