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