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

[j.triv] trivial cleanup ()

Merging branch 'j.triv'  into 'main'.

See merge request !2199
parents 4b92d880 480032bb
No related branches found
No related tags found
1 merge request!2199trivial cleanup
Pipeline #122458 failed
Showing
with 55 additions and 66 deletions
......@@ -29,7 +29,7 @@ AxisPropertyForm::AxisPropertyForm(QWidget* parent, const QString& groupTitle,
layout->setFieldGrowthPolicy(QFormLayout::FieldsStayAtSizeHint);
m_nbinsSpinBox = GUI::Util::createIntSpinbox([axisProperty] { return axisProperty->nbins(); },
m_nbinsSpinBox = GUI::Util::createIntSpinBox([axisProperty] { return axisProperty->nbins(); },
[this, axisProperty](int v) {
axisProperty->setNbins(v);
emit dataChanged();
......
......@@ -30,7 +30,7 @@ SpanPropertyForm::SpanPropertyForm(QWidget* parent, const QString& groupTitle,
layout->setFieldGrowthPolicy(QFormLayout::FieldsStayAtSizeHint);
m_nbinsSpinBox = GUI::Util::createIntSpinbox([spanProperty] { return spanProperty->nbins(); },
m_nbinsSpinBox = GUI::Util::createIntSpinBox([spanProperty] { return spanProperty->nbins(); },
[this, spanProperty](int v) {
spanProperty->setNbins(v);
emit dataChanged();
......
......@@ -185,7 +185,7 @@ void MinimizerSettingsWidget::createMinuitEdits()
m_minimizerLayout->addRow(
"Strategy:",
GUI::Util::createIntSpinbox([=] { return minItem->strategy(); },
GUI::Util::createIntSpinBox([=] { return minItem->strategy(); },
[=](int v) {
minItem->setStrategy(v);
gProjectDocument.value()->setModified();
......@@ -196,7 +196,7 @@ void MinimizerSettingsWidget::createMinuitEdits()
m_minimizerLayout->addRow(
"ErrorDef factor:",
GUI::Util::createDoubleSpinbox([=] { return minItem->errorDefinition(); },
GUI::Util::createDoubleSpinBox([=] { return minItem->errorDefinition(); },
[=](double v) {
minItem->setErrorDefinition(v);
gProjectDocument.value()->setModified();
......@@ -206,7 +206,7 @@ void MinimizerSettingsWidget::createMinuitEdits()
RealLimits::positive()));
m_minimizerLayout->addRow("Tolerance:",
GUI::Util::createDoubleSpinbox(
GUI::Util::createDoubleSpinBox(
[=] { return minItem->tolerance(); },
[=](double v) {
minItem->setTolerance(v);
......@@ -217,7 +217,7 @@ void MinimizerSettingsWidget::createMinuitEdits()
m_minimizerLayout->addRow(
"Precision:",
GUI::Util::createDoubleSpinbox([=] { return minItem->precision(); },
GUI::Util::createDoubleSpinBox([=] { return minItem->precision(); },
[=](double v) {
minItem->setPrecision(v);
gProjectDocument.value()->setModified();
......@@ -227,7 +227,7 @@ void MinimizerSettingsWidget::createMinuitEdits()
m_minimizerLayout->addRow(
"Max func calls:",
GUI::Util::createIntSpinbox([=] { return minItem->maxFuncCalls(); },
GUI::Util::createIntSpinBox([=] { return minItem->maxFuncCalls(); },
[=](int v) {
minItem->setMaxFuncCalls(v);
gProjectDocument.value()->setModified();
......@@ -242,7 +242,7 @@ void MinimizerSettingsWidget::createGSLMultiMinEdits()
m_minimizerLayout->addRow(
"Max iterations:",
GUI::Util::createIntSpinbox([=] { return minItem->maxIterations(); },
GUI::Util::createIntSpinBox([=] { return minItem->maxIterations(); },
[=](int v) {
minItem->setMaxIterations(v);
gProjectDocument.value()->setModified();
......@@ -256,7 +256,7 @@ void MinimizerSettingsWidget::createTMVAGeneticEdits()
GeneticMinimizerItem* minItem = m_containerItem->minimizerItemGenetic();
m_minimizerLayout->addRow("Tolerance:",
GUI::Util::createDoubleSpinbox(
GUI::Util::createDoubleSpinBox(
[=] { return minItem->tolerance(); },
[=](double v) {
minItem->setTolerance(v);
......@@ -267,7 +267,7 @@ void MinimizerSettingsWidget::createTMVAGeneticEdits()
m_minimizerLayout->addRow(
"Max iterations:",
GUI::Util::createIntSpinbox([=] { return minItem->maxIterations(); },
GUI::Util::createIntSpinBox([=] { return minItem->maxIterations(); },
[=](int v) {
minItem->setMaxIterations(v);
gProjectDocument.value()->setModified();
......@@ -276,7 +276,7 @@ void MinimizerSettingsWidget::createTMVAGeneticEdits()
&m_updaters, true /*easy scroll*/));
m_minimizerLayout->addRow(
"Population:", GUI::Util::createIntSpinbox([=] { return minItem->populationSize(); },
"Population:", GUI::Util::createIntSpinBox([=] { return minItem->populationSize(); },
[=](int v) {
minItem->setPopulationSize(v);
gProjectDocument.value()->setModified();
......@@ -284,7 +284,7 @@ void MinimizerSettingsWidget::createTMVAGeneticEdits()
RealLimits::nonnegative(), "Population size",
&m_updaters, true /*easy scroll*/));
m_minimizerLayout->addRow("Random seed:", GUI::Util::createIntSpinbox(
m_minimizerLayout->addRow("Random seed:", GUI::Util::createIntSpinBox(
[=] { return minItem->randomSeed(); },
[=](int v) {
minItem->setRandomSeed(v);
......@@ -300,7 +300,7 @@ void MinimizerSettingsWidget::createGSLSimulatedAnnealingEdits()
SimAnMinimizerItem* minItem = m_containerItem->minimizerItemSimAn();
m_minimizerLayout->addRow(
"Max iterations:", GUI::Util::createIntSpinbox([=] { return minItem->maxIterations(); },
"Max iterations:", GUI::Util::createIntSpinBox([=] { return minItem->maxIterations(); },
[=](int v) {
minItem->setMaxIterations(v);
gProjectDocument.value()->setModified();
......@@ -311,7 +311,7 @@ void MinimizerSettingsWidget::createGSLSimulatedAnnealingEdits()
m_minimizerLayout->addRow(
"Iterations at T:",
GUI::Util::createIntSpinbox([=] { return minItem->iterationsAtEachTemp(); },
GUI::Util::createIntSpinBox([=] { return minItem->iterationsAtEachTemp(); },
[=](int v) {
minItem->setIterationsAtEachTemp(v);
gProjectDocument.value()->setModified();
......@@ -320,7 +320,7 @@ void MinimizerSettingsWidget::createGSLSimulatedAnnealingEdits()
"Number of iterations at each temperature", &m_updaters,
true /*easy scroll*/));
m_minimizerLayout->addRow("Step size:", GUI::Util::createDoubleSpinbox(
m_minimizerLayout->addRow("Step size:", GUI::Util::createDoubleSpinBox(
[=] { return minItem->stepSize(); },
[=](double v) {
minItem->setStepSize(v);
......@@ -329,7 +329,7 @@ void MinimizerSettingsWidget::createGSLSimulatedAnnealingEdits()
&m_updaters, "Max step size used in random walk",
RealLimits::nonnegative()));
m_minimizerLayout->addRow("k:", GUI::Util::createDoubleSpinbox(
m_minimizerLayout->addRow("k:", GUI::Util::createDoubleSpinBox(
[=] { return minItem->boltzmanK(); },
[=](double v) {
minItem->setBoltzmanK(v);
......@@ -338,7 +338,7 @@ void MinimizerSettingsWidget::createGSLSimulatedAnnealingEdits()
&m_updaters, "Boltzmann k", RealLimits::nonnegative()));
m_minimizerLayout->addRow(
"T init:", GUI::Util::createDoubleSpinbox([=] { return minItem->boltzmanInitT(); },
"T init:", GUI::Util::createDoubleSpinBox([=] { return minItem->boltzmanInitT(); },
[=](double v) {
minItem->setBoltzmanInitT(v);
gProjectDocument.value()->setModified();
......@@ -346,7 +346,7 @@ void MinimizerSettingsWidget::createGSLSimulatedAnnealingEdits()
&m_updaters, "Boltzmann initial temperature",
RealLimits::nonnegative()));
m_minimizerLayout->addRow("mu:", GUI::Util::createDoubleSpinbox(
m_minimizerLayout->addRow("mu:", GUI::Util::createDoubleSpinBox(
[=] { return minItem->boltzmanMu(); },
[=](double v) {
minItem->setBoltzmanMu(v);
......@@ -355,7 +355,7 @@ void MinimizerSettingsWidget::createGSLSimulatedAnnealingEdits()
&m_updaters, "Boltzmann mu", RealLimits::nonnegative()));
m_minimizerLayout->addRow(
"T min:", GUI::Util::createDoubleSpinbox([=] { return minItem->boltzmanMinT(); },
"T min:", GUI::Util::createDoubleSpinBox([=] { return minItem->boltzmanMinT(); },
[=](double v) {
minItem->setBoltzmanMinT(v);
gProjectDocument.value()->setModified();
......@@ -369,7 +369,7 @@ void MinimizerSettingsWidget::createGSLLevMarEdits()
GSLLMAMinimizerItem* minItem = m_containerItem->minimizerItemGSLLMA();
m_minimizerLayout->addRow("Tolerance:",
GUI::Util::createDoubleSpinbox(
GUI::Util::createDoubleSpinBox(
[=] { return minItem->tolerance(); },
[=](double v) {
minItem->setTolerance(v);
......@@ -380,7 +380,7 @@ void MinimizerSettingsWidget::createGSLLevMarEdits()
m_minimizerLayout->addRow(
"Max iterations:",
GUI::Util::createIntSpinbox([=] { return minItem->maxIterations(); },
GUI::Util::createIntSpinBox([=] { return minItem->maxIterations(); },
[=](int v) {
minItem->setMaxIterations(v);
gProjectDocument.value()->setModified();
......
......@@ -57,18 +57,18 @@ void DistributionSelector::createDistributionWidgets()
createSpinBox(it->hwhm());
createNumSamplesSpinBox(it);
} else if (auto* it = dynamic_cast<DistributionGateItem*>(m_item->distributionItem())) {
auto* minSpinbox = createSpinBox(it->minimum());
auto* maxSpinbox = createSpinBox(it->maximum());
connect(minSpinbox, &DoubleSpinBox::baseValueChanged, [it, maxSpinbox](double d) {
auto* minSpinBox = createSpinBox(it->minimum());
auto* maxSpinBox = createSpinBox(it->maximum());
connect(minSpinBox, &DoubleSpinBox::baseValueChanged, [it, maxSpinBox](double d) {
if (d > it->maximum()) {
it->setMaximum(d);
maxSpinbox->updateValue();
maxSpinBox->updateValue();
}
});
connect(maxSpinbox, &DoubleSpinBox::baseValueChanged, [it, minSpinbox](double d) {
connect(maxSpinBox, &DoubleSpinBox::baseValueChanged, [it, minSpinBox](double d) {
if (d < it->minimum()) {
it->setMinimum(d);
minSpinbox->updateValue();
minSpinBox->updateValue();
}
});
createNumSamplesSpinBox(it);
......@@ -102,7 +102,7 @@ void DistributionSelector::createNumSamplesSpinBox(DistributionItem* dist)
{
ASSERT(dist);
m_formLayout->addRow("Number of samples:",
GUI::Util::createIntSpinbox([dist] { return dist->numberOfSamples(); },
GUI::Util::createIntSpinBox([dist] { return dist->numberOfSamples(); },
[this, dist](int v) {
dist->setNumberOfSamples(v);
emit distributionChanged();
......
......@@ -25,7 +25,6 @@ class BeamDistributionItem;
class DistributionItem;
class DoubleProperty;
class DoubleSpinBox;
class ScientificSpinBox;
//! configuration to control how the user can enter a mean value
struct MeanConfig {
......
......@@ -156,10 +156,10 @@ MaterialEditorDialog::MaterialEditorDialog(SampleItem* sample, QWidget* parent)
configScientificDoubleEdit(m_realEdit, RealLimits::limitless());
configScientificDoubleEdit(m_imaginaryEdit, RealLimits::limitless());
using GUI::View::NumberUtil::configSpinbox;
configSpinbox(m_xSpinBox, 3, RealLimits::limitless());
configSpinbox(m_ySpinBox, 3, RealLimits::limitless());
configSpinbox(m_zSpinBox, 3, RealLimits::limitless());
using GUI::View::NumberUtil::configSpinBox;
configSpinBox(m_xSpinBox, 3, RealLimits::limitless());
configSpinBox(m_ySpinBox, 3, RealLimits::limitless());
configSpinBox(m_zSpinBox, 3, RealLimits::limitless());
// Setting z-component is temporary disabled (see issue #654)
// When implemented, rm disabling
......
......@@ -22,7 +22,7 @@ DoubleSpinBox::DoubleSpinBox(const DoubleProperty& d, bool easyScrollable, QWidg
, m_easyScrollable(easyScrollable)
{
setFocusPolicy(Qt::StrongFocus);
GUI::View::NumberUtil::configSpinbox(this, d.decimals(), d.limits());
GUI::View::NumberUtil::configSpinBox(this, d.decimals(), d.limits());
setToolTip(d.tooltip());
setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
......
......@@ -35,7 +35,7 @@ ScientificSpinBox* GUI::Util::createScientificSpinBox(QFormLayout* parentLayout,
{
auto* spinBox = new ScientificSpinBox(parentLayout->parentWidget());
spinBox->setFocusPolicy(Qt::StrongFocus);
GUI::View::NumberUtil::configSpinbox(spinBox, d.decimals(), d.limits());
GUI::View::NumberUtil::configSpinBox(spinBox, d.decimals(), d.limits());
spinBox->setToolTip(d.tooltip());
spinBox->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
spinBox->setValue(d.value());
......@@ -61,7 +61,7 @@ QCheckBox* GUI::Util::createCheckBox(const QString& title, function<bool()> gett
return checkBox;
}
QSpinBox* GUI::Util::createIntSpinbox(function<int()> getter, function<void(int)> slot,
QSpinBox* GUI::Util::createIntSpinBox(function<int()> getter, function<void(int)> slot,
const RealLimits& limits, QString tooltip,
QList<function<void()>>* updaters, bool easyScrollable)
{
......@@ -89,7 +89,7 @@ QSpinBox* GUI::Util::createIntSpinbox(function<int()> getter, function<void(int)
return spin;
}
QDoubleSpinBox* GUI::Util::createDoubleSpinbox(function<double()> getter,
QDoubleSpinBox* GUI::Util::createDoubleSpinBox(function<double()> getter,
function<void(double)> slot,
QList<function<void()>>* updaters, QString tooltip,
const RealLimits& limits, bool easyScrollable)
......
......@@ -66,13 +66,13 @@ QCheckBox* createCheckBox(const QString& title, std::function<bool()> getter,
//! "easyScrollable" flag is false. Otherwise it would be dangerous if the spin box is on a
//! scrollable form - unintended and unnoticed changes would take place when just scrolling through
//! the form.
QSpinBox* createIntSpinbox(std::function<int()> getter, std::function<void(int)> slot,
QSpinBox* createIntSpinBox(std::function<int()> getter, std::function<void(int)> slot,
const RealLimits& limits = {}, QString tooltip = "",
QList<std::function<void()>>* updaters = nullptr,
bool easyScrollable = false);
//! Creates a scrollable updatable doublespinBox
QDoubleSpinBox* createDoubleSpinbox(std::function<double()> getter,
QDoubleSpinBox* createDoubleSpinBox(std::function<double()> getter,
std::function<void(double)> slot,
QList<std::function<void()>>* updaters, QString tooltip = "",
const RealLimits& limits = {}, bool easyScrollable = true);
......
......@@ -41,7 +41,7 @@ void GUI::View::NumberUtil::configScientificDoubleEdit(QLineEdit* edit, const Re
edit->setValidator(validator);
}
void GUI::View::NumberUtil::configSpinbox(QDoubleSpinBox* spinBox, int decimals,
void GUI::View::NumberUtil::configSpinBox(QDoubleSpinBox* spinBox, int decimals,
const RealLimits& limits)
{
spinBox->setMaximum(std::numeric_limits<double>::max());
......@@ -56,7 +56,7 @@ void GUI::View::NumberUtil::configSpinbox(QDoubleSpinBox* spinBox, int decimals,
spinBox->setSingleStep(singleStep(decimals));
}
void GUI::View::NumberUtil::configSpinbox(ScientificSpinBox* spinBox, int decimals,
void GUI::View::NumberUtil::configSpinBox(ScientificSpinBox* spinBox, int decimals,
const RealLimits& limits)
{
spinBox->setMaximum(std::numeric_limits<double>::max());
......
......@@ -26,8 +26,8 @@ namespace GUI::View::NumberUtil {
void configScientificDoubleEdit(QLineEdit* edit, const RealLimits& limits);
void configSpinbox(QDoubleSpinBox* spinBox, int decimals, const RealLimits& limits);
void configSpinbox(ScientificSpinBox* spinBox, int decimals, const RealLimits& limits);
void configSpinBox(QDoubleSpinBox* spinBox, int decimals, const RealLimits& limits);
void configSpinBox(ScientificSpinBox* spinBox, int decimals, const RealLimits& limits);
} // namespace GUI::View::NumberUtil
......
......@@ -17,7 +17,7 @@
#include <QSpinBox>
//! Spinbox that enables scrolling only on focus
//! SpinBox that enables scrolling only on focus
class SafeSpinBox : public QSpinBox {
Q_OBJECT
......
......@@ -173,7 +173,7 @@ void CoreAndShellForm::createCoreWidgets()
const QString formfactor = FormFactorItemCatalog::menuEntry(particle->formFactorItem());
groupTitle += " (" + formfactor + ")";
core.layout->addBoldRow("Material", new MaterialInplaceForm(this, particle, m_ec));
core.layout->addBoldRow("Material", new MaterialInplaceForm(particle, m_ec));
core.layout->addGroupOfValues("Geometry", particle->formFactorItem()->geometryProperties());
core.layout->addVector(particle->position(), false);
core.layout->addSelection(particle->rotationSelection());
......@@ -189,7 +189,7 @@ void CoreAndShellForm::createShellWidgets()
const QString formfactor = FormFactorItemCatalog::menuEntry(particle->formFactorItem());
groupTitle += " (" + formfactor + ")";
shell.layout->addBoldRow("Material", new MaterialInplaceForm(this, particle, m_ec));
shell.layout->addBoldRow("Material", new MaterialInplaceForm(particle, m_ec));
shell.layout->addGroupOfValues("Geometry",
particle->formFactorItem()->geometryProperties());
shell.layout->addSelection(particle->rotationSelection());
......
......@@ -99,7 +99,7 @@ void InterferenceForm::createInterferenceWidgets()
} else if (auto* itf = dynamic_cast<InterferenceFinite2DLatticeItem*>(interference)) {
m_layout->addValue(itf->positionVariance());
m_layout->addBoldRow("Domain size 1:",
GUI::Util::createIntSpinbox([itf] { return itf->domainSize1(); },
GUI::Util::createIntSpinBox([itf] { return itf->domainSize1(); },
[this, itf](int v) {
itf->setDomainSize1(v);
emit m_ec->modified();
......@@ -107,7 +107,7 @@ void InterferenceForm::createInterferenceWidgets()
RealLimits::lowerLimited(1),
"Domain size 1 in number of unit cells"));
m_layout->addBoldRow("Domain size 2:",
GUI::Util::createIntSpinbox([itf] { return itf->domainSize2(); },
GUI::Util::createIntSpinBox([itf] { return itf->domainSize2(); },
[this, itf](int v) {
itf->setDomainSize2(v);
emit m_ec->modified();
......
......@@ -19,7 +19,6 @@
#include "GUI/Model/Sample/CoreAndShellItem.h"
#include "GUI/Model/Sample/MesocrystalItem.h"
#include "GUI/Model/Sample/ParticleItem.h"
#include "GUI/View/Numeric/DoubleLineEdit.h"
#include "GUI/View/Numeric/DoubleSpinBox.h"
#include "GUI/View/Sample/CompoundForm.h"
#include "GUI/View/Sample/CoreAndShellForm.h"
......
......@@ -94,10 +94,10 @@ LayerForm::LayerForm(QWidget* parent, LayerItem* layerItem, SampleEditorControll
QColor bckgroundCol = m_layer->color();
setStyleSheet("LayerForm {background-color: " + bckgroundCol.name(QColor::HexRgb) + "}");
m_layout->addBoldRow("Material:", new MaterialInplaceForm(this, layerItem, ec));
m_layout->addBoldRow("Material:", new MaterialInplaceForm(layerItem, ec));
m_layout->addValue(m_layer->thickness());
m_layout->addBoldRow("Number of slices:", GUI::Util::createIntSpinbox(
m_layout->addBoldRow("Number of slices:", GUI::Util::createIntSpinBox(
[this] { return m_layer->numSlices(); },
[this](int v) {
m_layer->setNumSlices(v);
......
......@@ -31,10 +31,8 @@
#include <QLabel>
#include <QPushButton>
MaterialInplaceForm::MaterialInplaceForm(QWidget* parent, ItemWithMaterial* item,
SampleEditorController* ec)
: QWidget(parent)
, m_item(item)
MaterialInplaceForm::MaterialInplaceForm(ItemWithMaterial* item, SampleEditorController* ec)
: m_item(item)
, m_ec(ec)
, m_layout(new QGridLayout(this))
{
......@@ -42,7 +40,7 @@ MaterialInplaceForm::MaterialInplaceForm(QWidget* parent, ItemWithMaterial* item
createWidgets();
connect(itemWithMaterial()->materialItem(), &MaterialItem::dataChanged, this,
&MaterialInplaceForm::onMaterialChanged);
&MaterialInplaceForm::updateValues);
}
ItemWithMaterial* MaterialInplaceForm::itemWithMaterial() const
......@@ -74,7 +72,7 @@ void MaterialInplaceForm::selectMaterial()
m_ec->selectMaterial(m_item, newMaterialIdentifier);
createWidgets();
connect(itemWithMaterial()->materialItem(), &MaterialItem::dataChanged, this,
&MaterialInplaceForm::onMaterialChanged);
&MaterialInplaceForm::updateValues);
} else {
updateValues(); // necessary, since in the material editor the values could have been
// changed without selecting a different material
......@@ -136,8 +134,3 @@ void MaterialInplaceForm::createWidgets()
m_layout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding), 0, m_layout->columnCount());
}
void MaterialInplaceForm::onMaterialChanged()
{
updateValues();
}
......@@ -25,7 +25,7 @@ class SampleEditorController;
class MaterialInplaceForm : public QWidget {
Q_OBJECT
public:
MaterialInplaceForm(QWidget* parent, ItemWithMaterial* item, SampleEditorController* ec);
MaterialInplaceForm(ItemWithMaterial* item, SampleEditorController* ec);
ItemWithMaterial* itemWithMaterial() const;
void updateValues();
......@@ -33,7 +33,6 @@ public:
private:
void selectMaterial();
void createWidgets();
void onMaterialChanged();
ItemWithMaterial* m_item;
SampleEditorController* m_ec;
......
......@@ -37,7 +37,7 @@ ParticleForm::ParticleForm(QWidget* parent, ParticleItem* particleItem, bool all
auto* layout = new HeinzFormLayout(ec);
body()->setLayout(layout);
layout->addBoldRow("Material", new MaterialInplaceForm(this, particleItem, ec));
layout->addBoldRow("Material", new MaterialInplaceForm(particleItem, ec));
layout->addGroupOfValues("Geometry", particleItem->formFactorItem()->geometryProperties());
layout->addVector(particleItem->position(), false);
layout->addSelection(particleItem->rotationSelection());
......
......@@ -25,7 +25,6 @@
#include "GUI/Model/Sample/ParticleLayoutItem.h"
#include "GUI/Model/Sample/SampleItem.h"
#include "GUI/Support/XML/Backup.h"
#include "GUI/View/Numeric/DoubleSpinBox.h"
#include "GUI/View/Sample/CompoundForm.h"
#include "GUI/View/Sample/CoreAndShellForm.h"
#include "GUI/View/Sample/InterferenceForm.h"
......
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