diff --git a/src/gui/dialogs/settings/frames/arealayoutframe.cpp b/src/gui/dialogs/settings/frames/arealayoutframe.cpp index 66adfc4..c9beef8 100644 --- a/src/gui/dialogs/settings/frames/arealayoutframe.cpp +++ b/src/gui/dialogs/settings/frames/arealayoutframe.cpp @@ -63,6 +63,8 @@ AreaLayoutFrame::AreaLayoutFrame(QWidget *parent, std::shared_ptrcmbResolution->findText( QString::number(SimManager->getResolution()) ); ui->cmbResolution->setCurrentIndex(ind); + setStructLimits(); + areasChanged(); } @@ -132,6 +134,9 @@ void AreaLayoutFrame::areasChanged() { float dz = SimManager->getSliceThickness(); float oz = SimManager->getSliceOffset(); + connect(ui->edtSliceThickness, &QLineEdit::textChanged, this, &AreaLayoutFrame::slicesChanged); + connect(ui->edtSliceOffset, &QLineEdit::textChanged, this, &AreaLayoutFrame::slicesChanged); + ui->edtSliceThickness->setText(Utils_Qt::numToQString(dz)); ui->edtSliceOffset->setText(Utils_Qt::numToQString(oz)); } @@ -268,3 +273,32 @@ void AreaLayoutFrame::checkEditZero(QString txt) { else ui->edtSliceOffset->setStyleSheet("color: #FF8C00"); } + +void AreaLayoutFrame::setStructLimits() { + if (!SimManager->getStructure()) + return; + + auto lims_x = SimManager->getStructure()->getLimitsX(); + auto lims_y = SimManager->getStructure()->getLimitsY(); + + ui->lblStructStartX->setText(Utils_Qt::numToQString(lims_x[0]) + " Å"); + ui->lblStructFinishX->setText(Utils_Qt::numToQString(lims_x[1]) + " Å"); + ui->lblStructStartY->setText(Utils_Qt::numToQString(lims_y[0]) + " Å"); + ui->lblStructFinishY->setText(Utils_Qt::numToQString(lims_y[1]) + " Å"); +} + +void AreaLayoutFrame::slicesChanged() { + if (!SimManager->getStructure()) + return; + + float dz = ui->edtSliceThickness->text().toFloat(); + + auto z_lims = SimManager->getPaddedStructLimitsZ(); + float z_range = z_lims[1] - z_lims[0]; + + unsigned int n_slices = (unsigned int) std::ceil(z_range / dz); + n_slices += (n_slices == 0); + + ui->lblSlices->setText(Utils_Qt::numToQString(n_slices)); + +} diff --git a/src/gui/dialogs/settings/frames/arealayoutframe.h b/src/gui/dialogs/settings/frames/arealayoutframe.h index 02fa0a5..eca577f 100644 --- a/src/gui/dialogs/settings/frames/arealayoutframe.h +++ b/src/gui/dialogs/settings/frames/arealayoutframe.h @@ -21,7 +21,6 @@ class AreaLayoutFrame : public QWidget void modeChanged(int); void updateMainCbed(); void updateMainStem(); - void slicesChanged(); public: explicit AreaLayoutFrame(QWidget *parent, std::shared_ptr simMan); @@ -42,6 +41,8 @@ private slots: void dlgCancel_clicked(); + void slicesChanged(); + private: Ui::AreaLayoutFrame *ui; @@ -54,6 +55,8 @@ private slots: bool getErrorStringCtem(); bool getErrorStringStem(); bool getErrorStringCbed(); + + void setStructLimits(); }; #endif // AREALAYOUTFRAME_H diff --git a/src/gui/dialogs/settings/frames/arealayoutframe.ui b/src/gui/dialogs/settings/frames/arealayoutframe.ui index 7f9cf1b..03bee2e 100644 --- a/src/gui/dialogs/settings/frames/arealayoutframe.ui +++ b/src/gui/dialogs/settings/frames/arealayoutframe.ui @@ -7,17 +7,17 @@ 0 0 569 - 661 + 530 Form - - + + - + 0 0 @@ -62,7 +62,96 @@ + + + + 0 + 0 + + + + QTabWidget::South + + + 0 + + + + Tab 1 + + + + + + + 100 + 26 + + + + + + + + Qt::Horizontal + + + + 43 + 20 + + + + + + + + Qt::Horizontal + + + + 44 + 20 + + + + + + + + Slice thickness + + + + + + + + 100 + 26 + + + + + + + + Slice offset + + + + + + + + + + + 0 + 0 + + QTabWidget::South @@ -117,16 +206,6 @@ - - - - -- - - - Qt::AlignCenter - - - @@ -159,10 +238,16 @@ - - + + + + + 100 + 0 + + - Angle Max: + -- Qt::AlignCenter @@ -185,6 +270,16 @@ + + + + Reciprocal max: + + + Qt::AlignCenter + + + @@ -195,14 +290,21 @@ - - - + + + + Qt::Horizontal + + - 100 - 0 + 40 + 20 + + + + -- @@ -211,6 +313,16 @@ + + + + Angle Max: + + + Qt::AlignCenter + + + @@ -221,43 +333,46 @@ - - + + - Reciprocal max: + STEM scale x: Qt::AlignCenter - - - - Qt::Horizontal + + + + STEM scale y - + + Qt::AlignCenter + + + + + + - 40 - 20 + 100 + 0 - - - - - STEM scale x + -- Qt::AlignCenter - - + + - STEM scale y + Slices: Qt::AlignCenter @@ -268,104 +383,53 @@ - - + + + + + 0 + 0 + + QTabWidget::South 0 - + Tab 1 - + - - - - 100 - 26 - - - - - - - - Qt::Horizontal - - - - 43 - 20 - - - - - - + Qt::Horizontal - 44 + 40 20 - - - - Slice thickness - - - - - - - - 100 - 26 - - - - - + - Slice offset + Preserve areas on file change - - - - - - - - QTabWidget::South - - - 0 - - - - Tab 1 - - - + Resolution: - + @@ -415,11 +479,109 @@ - - + + + + + + + + + 0 + 0 + + + + QTabWidget::South + + + 0 + + + + Tab 1 + + + + + + Structure x: + + + Qt::AlignCenter + + + + + + + Finish + + + Qt::AlignCenter + + + + + + + + 100 + 0 + + + + -- + + + Qt::AlignCenter + + + + + + + + 100 + 0 + + + + -- + + + Qt::AlignCenter + + + + + + + Start + + + Qt::AlignCenter + + + + + + + Structure y: + + + Qt::AlignCenter + + + + + Qt::Horizontal + + QSizePolicy::Expanding + 40 @@ -428,10 +590,48 @@ - - + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 100 + 0 + + - Preserve areas on file change + -- + + + Qt::AlignCenter + + + + + + + + 100 + 0 + + + + -- + + + Qt::AlignCenter diff --git a/src/gui/dialogs/settings/settingsdialog.cpp b/src/gui/dialogs/settings/settingsdialog.cpp index a39ac73..dd97812 100644 --- a/src/gui/dialogs/settings/settingsdialog.cpp +++ b/src/gui/dialogs/settings/settingsdialog.cpp @@ -95,7 +95,7 @@ SimAreaDialog::SimAreaDialog(QWidget *parent, std::shared_ptr this->setWindowTitle("Simulation area"); - this->setFixedSize(this->sizeHint()); + this->setFixedSize(this->minimumSizeHint()); }