/** * Sets the 'Display' property of all selected view providers. */ void TaskAppearance::on_changeMode_activated(const QString& s) { Gui::WaitCursor wc; std::vector<Gui::ViewProvider*> Provider = getSelection(); for (std::vector<Gui::ViewProvider*>::iterator It= Provider.begin();It!=Provider.end();++It) { App::Property* prop = (*It)->getPropertyByName("DisplayMode"); if (prop && prop->getTypeId() == App::PropertyEnumeration::getClassTypeId()) { App::PropertyEnumeration* Display = (App::PropertyEnumeration*)prop; Display->setValue((const char*)s.toLatin1()); } } }
void TaskAppearance::setDisplayModes(const std::vector<Gui::ViewProvider*>& views) { QStringList commonModes, modes; for (std::vector<Gui::ViewProvider*>::const_iterator it = views.begin(); it != views.end(); ++it) { App::Property* prop = (*it)->getPropertyByName("DisplayMode"); if (prop && prop->getTypeId() == App::PropertyEnumeration::getClassTypeId()) { App::PropertyEnumeration* display = static_cast<App::PropertyEnumeration*>(prop); if (!display->getEnums()) return; const std::vector<std::string>& value = display->getEnumVector(); if (it == views.begin()) { for (std::vector<std::string>::const_iterator jt = value.begin(); jt != value.end(); ++jt) commonModes << QLatin1String(jt->c_str()); } else { for (std::vector<std::string>::const_iterator jt = value.begin(); jt != value.end(); ++jt) { if (commonModes.contains(QLatin1String(jt->c_str()))) modes << QLatin1String(jt->c_str()); } commonModes = modes; modes.clear(); } } } ui->changeMode->clear(); ui->changeMode->addItems(commonModes); ui->changeMode->setDisabled(commonModes.isEmpty()); // find the display mode to activate for (std::vector<Gui::ViewProvider*>::const_iterator it = views.begin(); it != views.end(); ++it) { App::Property* prop = (*it)->getPropertyByName("DisplayMode"); if (prop && prop->getTypeId() == App::PropertyEnumeration::getClassTypeId()) { App::PropertyEnumeration* display = static_cast<App::PropertyEnumeration*>(prop); QString activeMode = QString::fromLatin1(display->getValueAsString()); int index = ui->changeMode->findText(activeMode); if (index != -1) { ui->changeMode->setCurrentIndex(index); break; } } } }
bool TaskDlgFemConstraintFluidBoundary::accept() { std::string name = ConstraintView->getObject()->getNameInDocument(); const TaskFemConstraintFluidBoundary* boundary = static_cast<const TaskFemConstraintFluidBoundary*>(parameter); try { //Gui::Command::openCommand("Fluid boundary condition changed"); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.BoundaryType = '%s'", name.c_str(), boundary->getBoundaryType().c_str()); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.Subtype = '%s'", name.c_str(), boundary->getSubtype().c_str()); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.BoundaryValue = %f", name.c_str(), boundary->getBoundaryValue()); std::string dirname = boundary->getDirectionName().data(); std::string dirobj = boundary->getDirectionObject().data(); if (!dirname.empty()) { QString buf = QString::fromUtf8("(App.ActiveDocument.%1,[\"%2\"])"); buf = buf.arg(QString::fromStdString(dirname)); buf = buf.arg(QString::fromStdString(dirobj)); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.Direction = %s", name.c_str(), buf.toStdString().c_str()); } else { Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.Direction = None", name.c_str()); } //Reverse control is done at BoundaryType selection, this UI is hiden from user //Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.Reversed = %s", name.c_str(), boundary->getReverse() ? "True" : "False"); std::string scale = "1"; scale = boundary->getScale(); //OvG: determine modified scale Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.Scale = %s", name.c_str(), scale.c_str()); //OvG: implement modified scale //solver specific setting Fem::FemSolverObject* pcSolver = NULL; if (FemGui::ActiveAnalysisObserver::instance()->hasActiveObject()) { Fem::FemAnalysis* pcAnalysis = FemGui::ActiveAnalysisObserver::instance()->getActiveObject(); //Fem::FemSolverObject is derived from DocumentObject std::vector<App::DocumentObject*> fem = pcAnalysis->Member.getValues(); for (std::vector<App::DocumentObject*>::iterator it = fem.begin(); it != fem.end(); ++it) { if ((*it)->getTypeId().isDerivedFrom(Fem::FemSolverObject::getClassTypeId())) pcSolver = static_cast<Fem::FemSolverObject*>(*it); } } if (pcSolver) { App::PropertyBool* pHeatTransfering = NULL; App::PropertyEnumeration* pTurbulenceModel = NULL; pHeatTransfering = static_cast<App::PropertyBool*>(pcSolver->getPropertyByName("HeatTransfering")); pTurbulenceModel = static_cast<App::PropertyEnumeration*>(pcSolver->getPropertyByName("TurbulenceModel")); if (pHeatTransfering && pHeatTransfering->getValue()) { Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.ThermalBoundaryType = '%s'",name.c_str(), boundary->getThermalBoundaryType().c_str()); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.TemperatureValue = %f",name.c_str(), boundary->getTemperatureValue()); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.HeatFluxValue = %f",name.c_str(), boundary->getHeatFluxValue()); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.HTCoeffValue = %f",name.c_str(), boundary->getHTCoeffValue()); } if (pTurbulenceModel && std::string(pTurbulenceModel->getValueAsString()) != "laminar") { //update turbulence and thermal boundary settings, only if those models are activated Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.TurbulenceSpecification = '%s'",name.c_str(), boundary->getTurbulenceSpecification().c_str()); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.TurbulentIntensityValue = %f",name.c_str(), boundary->getTurbulentIntensityValue()); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.TurbulentLengthValue = %f",name.c_str(), boundary->getTurbulentLengthValue()); } } //rename document obj according to boundaryType: } catch (const Base::Exception& e) { QMessageBox::warning(parameter, tr("Input error"), QString::fromLatin1(e.what())); return false; } return TaskDlgFemConstraint::accept(); }