InputField for Grid-Size in Sketcher

This commit is contained in:
jriegel 2014-04-15 05:20:00 +02:00
parent 79181ad877
commit ca642bb546
3 changed files with 53 additions and 94 deletions

View File

@ -50,8 +50,8 @@ SketcherGeneralWidget::SketcherGeneralWidget(QWidget *parent)
this, SLOT(toggleGridView(bool)));
connect(ui->checkBoxGridSnap, SIGNAL(stateChanged(int)),
this, SLOT(toggleGridSnap(int)));
connect(ui->comboBoxGridSize, SIGNAL(currentIndexChanged(QString)),
this, SLOT(setGridSize(QString)));
connect(ui->gridSize, SIGNAL(valueChanged(double)),
this, SLOT(setGridSize(double)));
connect(ui->checkBoxAutoconstraints, SIGNAL(stateChanged(int)),
this, SIGNAL(emitToggleAutoconstraints(int)));
}
@ -67,8 +67,7 @@ void SketcherGeneralWidget::saveSettings()
.GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/Sketcher/General");
hGrp->SetBool("ShowGrid", ui->checkBoxShowGrid->isChecked());
QString size = ui->comboBoxGridSize->currentText();
hGrp->SetASCII("GridSize", (const char*)size.toAscii());
ui->gridSize->pushToHistory();
hGrp->SetBool("GridSnap", ui->checkBoxGridSnap->isChecked());
hGrp->SetBool("AutoConstraints", ui->checkBoxAutoconstraints->isChecked());
@ -79,95 +78,34 @@ void SketcherGeneralWidget::loadSettings()
Base::Reference<ParameterGrp> hGrp = App::GetApplication().GetUserParameter()
.GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/Sketcher/General");
ui->checkBoxShowGrid->setChecked(hGrp->GetBool("ShowGrid", true));
fillGridCombo();
QString size = ui->comboBoxGridSize->currentText();
size = QString::fromAscii(hGrp->GetASCII("GridSize", (const char*)size.toAscii()).c_str());
int it = ui->comboBoxGridSize->findText(size);
if (it != -1) ui->comboBoxGridSize->setCurrentIndex(it);
ui->gridSize->setParamGrpPath(QByteArray("User parameter:BaseApp/History/SketchGridSize"));
//ui->gridSize->setToLastUsedValue();
ui->checkBoxGridSnap->setChecked(hGrp->GetBool("GridSnap", ui->checkBoxGridSnap->isChecked()));
ui->checkBoxAutoconstraints->setChecked(hGrp->GetBool("AutoConstraints", ui->checkBoxAutoconstraints->isChecked()));
}
void SketcherGeneralWidget::fillGridCombo(void)
{
if (Base::UnitsApi::getSchema() == Base::Imperial1) {
ui->comboBoxGridSize->addItem(QString::fromUtf8("1/1000 [thou] \""));
ui->comboBoxGridSize->addItem(QString::fromUtf8("1/128 \""));
ui->comboBoxGridSize->addItem(QString::fromUtf8("1/100 \""));
ui->comboBoxGridSize->addItem(QString::fromUtf8("1/64 \""));
ui->comboBoxGridSize->addItem(QString::fromUtf8("1/32 \""));
ui->comboBoxGridSize->addItem(QString::fromUtf8("1/16 \""));
ui->comboBoxGridSize->addItem(QString::fromUtf8("1/8 \""));
ui->comboBoxGridSize->addItem(QString::fromUtf8("1/4 \""));
ui->comboBoxGridSize->addItem(QString::fromUtf8("1/2 \""));
ui->comboBoxGridSize->addItem(QString::fromUtf8("1 \""));
ui->comboBoxGridSize->addItem(QString::fromUtf8("2 \""));
ui->comboBoxGridSize->addItem(QString::fromUtf8("4 \""));
ui->comboBoxGridSize->addItem(QString::fromUtf8("8 \""));
ui->comboBoxGridSize->addItem(QString::fromUtf8("12 \" [foot]"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("16 \""));
ui->comboBoxGridSize->addItem(QString::fromUtf8("36 \" [yard]"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("72 \" [2 yards]"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("144 \" [4 yards]"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("396 \" [half chain]"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("792 \" [chain]"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("792 \" [2 chains]"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("1584 \" [4 chains]"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("3960 \" [half furlong]"));
ui->comboBoxGridSize->setCurrentIndex(ui->comboBoxGridSize->findText(QString::fromUtf8("1/4 \"")));
}
else {
ui->comboBoxGridSize->addItem(QString::fromUtf8("1 \xC2\xB5m"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("2 \xC2\xB5m"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("5 \xC2\xB5m"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("10 \xC2\xB5m"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("20 \xC2\xB5m"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("50 \xC2\xB5m"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("0.1 mm"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("0.2 mm"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("0.5 mm"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("1 mm"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("2 mm"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("5 mm"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("10 mm"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("20 mm"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("50 mm"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("100 mm"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("200 mm"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("500 mm"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("1 m"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("2 m"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("5 m"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("10 m"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("20 m"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("50 m"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("100 m"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("200 m"));
ui->comboBoxGridSize->addItem(QString::fromUtf8("500 m"));
ui->comboBoxGridSize->setCurrentIndex(ui->comboBoxGridSize->findText(QString::fromUtf8("10 mm")));
}
}
void SketcherGeneralWidget::toggleGridView(bool on)
{
ui->label->setEnabled(on);
ui->comboBoxGridSize->setEnabled(on);
ui->gridSize->setEnabled(on);
ui->checkBoxGridSnap->setEnabled(on);
emitToggleGridView(on);
}
void SketcherGeneralWidget::setGridSize(const QString& val)
void SketcherGeneralWidget::setGridSize(double val)
{
emitSetGridSize(val);
}
void SketcherGeneralWidget::setInitGridSize(double val)
{
ui->gridSize->setValue(Base::Quantity(val,Base::Unit::Length));
}
void SketcherGeneralWidget::toggleGridSnap(int state)
{
setGridSize(ui->comboBoxGridSize->currentText()); // Ensure consistency
emitToggleGridSnap(state);
}
@ -200,8 +138,8 @@ TaskSketcherGeneral::TaskSketcherGeneral(ViewProviderSketch *sketchView)
);
QObject::connect(
widget, SIGNAL(emitSetGridSize(QString)),
this , SLOT (setGridSize(QString))
widget, SIGNAL(emitSetGridSize(double)),
this , SLOT (setGridSize(double))
);
QObject::connect(
@ -209,8 +147,10 @@ TaskSketcherGeneral::TaskSketcherGeneral(ViewProviderSketch *sketchView)
this , SLOT (toggleAutoconstraints(int))
);
Gui::Selection().Attach(this);
widget->loadSettings();
widget->setInitGridSize(sketchView->GridSize.getValue() );
}
TaskSketcherGeneral::~TaskSketcherGeneral()
@ -224,11 +164,10 @@ void TaskSketcherGeneral::toggleGridView(bool on)
sketchView->ShowGrid.setValue(on);
}
void TaskSketcherGeneral::setGridSize(const QString& val)
void TaskSketcherGeneral::setGridSize(double val)
{
float gridSize = (float) Base::Quantity::parse(val).getValue();
if (gridSize > 0)
sketchView->GridSize.setValue(gridSize);
if (val > 0)
sketchView->GridSize.setValue(val);
}
void TaskSketcherGeneral::toggleGridSnap(int state)

View File

@ -47,22 +47,22 @@ public:
void saveSettings();
void loadSettings();
void setInitGridSize(double val);
Q_SIGNALS:
void setGridSnap(int Type);
void emitToggleGridView(bool);
void emitToggleGridSnap(int);
void emitSetGridSize(const QString&);
void emitSetGridSize(double);
void emitToggleAutoconstraints(int);
public Q_SLOTS:
void toggleGridView(bool on);
void setGridSize(const QString& val);
void setGridSize(double val);
void toggleGridSnap(int state);
protected:
void changeEvent(QEvent *e);
void fillGridCombo(void);
private:
Ui_TaskSketcherGeneral* ui;
@ -85,7 +85,7 @@ Q_SIGNALS:
public Q_SLOTS:
void toggleGridView(bool on);
void setGridSize(const QString& val);
void setGridSize(double val);
void toggleGridSnap(int state);
void toggleAutoconstraints(int state);

View File

@ -34,14 +34,26 @@
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBoxGridSize">
<property name="enabled">
<bool>true</bool>
</property>
<property name="currentIndex">
<number>-1</number>
</property>
</widget>
<widget class="Gui::InputField" name="gridSize">
<property name="unit" stdset="0">
<string>mm</string>
</property>
<property name="decimals" stdset="0">
<number>3</number>
</property>
<property name="maximum" stdset="0">
<double>99999999.0</double>
</property>
<property name="minimum" stdset="0">
<double>0.2</double>
</property>
<property name="singleStep" stdset="0">
<double>1.000000000000000</double>
</property>
<property name="value" stdset="0">
<double>0.0000001</double>
</property>
</widget>
</item>
</layout>
</item>
@ -71,5 +83,13 @@
</layout>
</widget>
<resources/>
<connections/>
<customwidgets>
<customwidget>
<class>Gui::InputField</class>
<extends>QLineEdit</extends>
<header>Gui/InputField.h</header>
</customwidget>
</customwidgets>
<connections/>
</ui>