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))); this, SLOT(toggleGridView(bool)));
connect(ui->checkBoxGridSnap, SIGNAL(stateChanged(int)), connect(ui->checkBoxGridSnap, SIGNAL(stateChanged(int)),
this, SLOT(toggleGridSnap(int))); this, SLOT(toggleGridSnap(int)));
connect(ui->comboBoxGridSize, SIGNAL(currentIndexChanged(QString)), connect(ui->gridSize, SIGNAL(valueChanged(double)),
this, SLOT(setGridSize(QString))); this, SLOT(setGridSize(double)));
connect(ui->checkBoxAutoconstraints, SIGNAL(stateChanged(int)), connect(ui->checkBoxAutoconstraints, SIGNAL(stateChanged(int)),
this, SIGNAL(emitToggleAutoconstraints(int))); this, SIGNAL(emitToggleAutoconstraints(int)));
} }
@ -66,9 +66,8 @@ void SketcherGeneralWidget::saveSettings()
Base::Reference<ParameterGrp> hGrp = App::GetApplication().GetUserParameter() Base::Reference<ParameterGrp> hGrp = App::GetApplication().GetUserParameter()
.GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/Sketcher/General"); .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/Sketcher/General");
hGrp->SetBool("ShowGrid", ui->checkBoxShowGrid->isChecked()); hGrp->SetBool("ShowGrid", ui->checkBoxShowGrid->isChecked());
QString size = ui->comboBoxGridSize->currentText(); ui->gridSize->pushToHistory();
hGrp->SetASCII("GridSize", (const char*)size.toAscii());
hGrp->SetBool("GridSnap", ui->checkBoxGridSnap->isChecked()); hGrp->SetBool("GridSnap", ui->checkBoxGridSnap->isChecked());
hGrp->SetBool("AutoConstraints", ui->checkBoxAutoconstraints->isChecked()); hGrp->SetBool("AutoConstraints", ui->checkBoxAutoconstraints->isChecked());
@ -79,95 +78,34 @@ void SketcherGeneralWidget::loadSettings()
Base::Reference<ParameterGrp> hGrp = App::GetApplication().GetUserParameter() Base::Reference<ParameterGrp> hGrp = App::GetApplication().GetUserParameter()
.GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/Sketcher/General"); .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/Sketcher/General");
ui->checkBoxShowGrid->setChecked(hGrp->GetBool("ShowGrid", true)); ui->checkBoxShowGrid->setChecked(hGrp->GetBool("ShowGrid", true));
ui->gridSize->setParamGrpPath(QByteArray("User parameter:BaseApp/History/SketchGridSize"));
fillGridCombo(); //ui->gridSize->setToLastUsedValue();
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->checkBoxGridSnap->setChecked(hGrp->GetBool("GridSnap", ui->checkBoxGridSnap->isChecked())); ui->checkBoxGridSnap->setChecked(hGrp->GetBool("GridSnap", ui->checkBoxGridSnap->isChecked()));
ui->checkBoxAutoconstraints->setChecked(hGrp->GetBool("AutoConstraints", ui->checkBoxAutoconstraints->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) void SketcherGeneralWidget::toggleGridView(bool on)
{ {
ui->label->setEnabled(on); ui->label->setEnabled(on);
ui->comboBoxGridSize->setEnabled(on); ui->gridSize->setEnabled(on);
ui->checkBoxGridSnap->setEnabled(on); ui->checkBoxGridSnap->setEnabled(on);
emitToggleGridView(on); emitToggleGridView(on);
} }
void SketcherGeneralWidget::setGridSize(const QString& val) void SketcherGeneralWidget::setGridSize(double val)
{ {
emitSetGridSize(val); emitSetGridSize(val);
} }
void SketcherGeneralWidget::setInitGridSize(double val)
{
ui->gridSize->setValue(Base::Quantity(val,Base::Unit::Length));
}
void SketcherGeneralWidget::toggleGridSnap(int state) void SketcherGeneralWidget::toggleGridSnap(int state)
{ {
setGridSize(ui->comboBoxGridSize->currentText()); // Ensure consistency
emitToggleGridSnap(state); emitToggleGridSnap(state);
} }
@ -200,8 +138,8 @@ TaskSketcherGeneral::TaskSketcherGeneral(ViewProviderSketch *sketchView)
); );
QObject::connect( QObject::connect(
widget, SIGNAL(emitSetGridSize(QString)), widget, SIGNAL(emitSetGridSize(double)),
this , SLOT (setGridSize(QString)) this , SLOT (setGridSize(double))
); );
QObject::connect( QObject::connect(
@ -209,8 +147,10 @@ TaskSketcherGeneral::TaskSketcherGeneral(ViewProviderSketch *sketchView)
this , SLOT (toggleAutoconstraints(int)) this , SLOT (toggleAutoconstraints(int))
); );
Gui::Selection().Attach(this); Gui::Selection().Attach(this);
widget->loadSettings(); widget->loadSettings();
widget->setInitGridSize(sketchView->GridSize.getValue() );
} }
TaskSketcherGeneral::~TaskSketcherGeneral() TaskSketcherGeneral::~TaskSketcherGeneral()
@ -224,11 +164,10 @@ void TaskSketcherGeneral::toggleGridView(bool on)
sketchView->ShowGrid.setValue(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 (val > 0)
if (gridSize > 0) sketchView->GridSize.setValue(val);
sketchView->GridSize.setValue(gridSize);
} }
void TaskSketcherGeneral::toggleGridSnap(int state) void TaskSketcherGeneral::toggleGridSnap(int state)

View File

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

View File

@ -34,14 +34,26 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QComboBox" name="comboBoxGridSize"> <widget class="Gui::InputField" name="gridSize">
<property name="enabled"> <property name="unit" stdset="0">
<bool>true</bool> <string>mm</string>
</property> </property>
<property name="currentIndex"> <property name="decimals" stdset="0">
<number>-1</number> <number>3</number>
</property> </property>
</widget> <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> </item>
</layout> </layout>
</item> </item>
@ -71,5 +83,13 @@
</layout> </layout>
</widget> </widget>
<resources/> <resources/>
<connections/> <customwidgets>
<customwidget>
<class>Gui::InputField</class>
<extends>QLineEdit</extends>
<header>Gui/InputField.h</header>
</customwidget>
</customwidgets>
<connections/>
</ui> </ui>