void TaskAppearance::slotChangedObject(const Gui::ViewProvider& obj, const App::Property& prop) { // This method gets called if a property of any view provider is changed. // We pick out all the properties for which we need to update this dialog. std::vector<Gui::ViewProvider*> Provider = getSelection(); std::vector<Gui::ViewProvider*>::const_iterator vp = std::find_if (Provider.begin(), Provider.end(), std::bind2nd(std::equal_to<Gui::ViewProvider*>(), const_cast<Gui::ViewProvider*>(&obj))); if (vp != Provider.end()) { std::string prop_name = obj.getPropertyName(&prop); if (prop.getTypeId().isDerivedFrom(App::PropertyInteger::getClassTypeId())) { long value = static_cast<const App::PropertyInteger&>(prop).getValue(); if (prop_name == "Transparency") { bool blocked = ui->spinTransparency->blockSignals(true); ui->spinTransparency->setValue(value); ui->spinTransparency->blockSignals(blocked); blocked = ui->horizontalSlider->blockSignals(true); ui->horizontalSlider->setValue(value); ui->horizontalSlider->blockSignals(blocked); } } else if (prop.getTypeId().isDerivedFrom(App::PropertyFloat::getClassTypeId())) { float value = static_cast<const App::PropertyFloat&>(prop).getValue(); if (prop_name == "PointSize") { bool blocked = ui->spinPointSize->blockSignals(true); ui->spinPointSize->setValue((int)value); ui->spinPointSize->blockSignals(blocked); } else if (prop_name == "LineWidth") { bool blocked = ui->spinLineWidth->blockSignals(true); ui->spinLineWidth->setValue((int)value); ui->spinLineWidth->blockSignals(blocked); } } } }
void DlgDisplayPropertiesImp::slotChangedObject(const Gui::ViewProvider& obj, const App::Property& prop) { // This method gets called if a property of any view provider is changed. // We pick out all the properties for which we need to update this dialog. std::vector<Gui::ViewProvider*> Provider = getSelection(); std::vector<Gui::ViewProvider*>::const_iterator vp = std::find_if (Provider.begin(), Provider.end(), std::bind2nd(std::equal_to<Gui::ViewProvider*>(), const_cast<Gui::ViewProvider*>(&obj))); if (vp != Provider.end()) { std::string prop_name = obj.getPropertyName(&prop); if (prop.getTypeId() == App::PropertyColor::getClassTypeId()) { App::Color value = static_cast<const App::PropertyColor&>(prop).getValue(); if (prop_name == "ShapeColor") { bool blocked = buttonColor->blockSignals(true); buttonColor->setColor(QColor((int)(255.0f*value.r), (int)(255.0f*value.g), (int)(255.0f*value.b))); buttonColor->blockSignals(blocked); } else if (prop_name == "LineColor") { bool blocked = buttonLineColor->blockSignals(true); buttonLineColor->setColor(QColor((int)(255.0f*value.r), (int)(255.0f*value.g), (int)(255.0f*value.b))); buttonLineColor->blockSignals(blocked); } } else if (prop.getTypeId().isDerivedFrom(App::PropertyInteger::getClassTypeId())) { long value = static_cast<const App::PropertyInteger&>(prop).getValue(); if (prop_name == "Transparency") { bool blocked = spinTransparency->blockSignals(true); spinTransparency->setValue(value); spinTransparency->blockSignals(blocked); blocked = horizontalSlider->blockSignals(true); horizontalSlider->setValue(value); horizontalSlider->blockSignals(blocked); } else if (prop_name == "LineTransparency") { bool blocked = spinLineTransparency->blockSignals(true); spinLineTransparency->setValue(value); spinLineTransparency->blockSignals(blocked); blocked = sliderLineTransparency->blockSignals(true); sliderLineTransparency->setValue(value); sliderLineTransparency->blockSignals(blocked); } } else if (prop.getTypeId().isDerivedFrom(App::PropertyFloat::getClassTypeId())) { double value = static_cast<const App::PropertyFloat&>(prop).getValue(); if (prop_name == "PointSize") { bool blocked = spinPointSize->blockSignals(true); spinPointSize->setValue((int)value); spinPointSize->blockSignals(blocked); } else if (prop_name == "LineWidth") { bool blocked = spinLineWidth->blockSignals(true); spinLineWidth->setValue((int)value); spinLineWidth->blockSignals(blocked); } } } }