FEM Post: Add warp vector filter

This commit is contained in:
Stefan Tröger
2015-11-14 15:25:21 +01:00
committed by wmayer
parent 43a298ee24
commit 8a339b435a
13 changed files with 403 additions and 5 deletions

View File

@@ -29,6 +29,7 @@
#include "ui_TaskPostDisplay.h"
#include "ui_TaskPostClip.h"
#include "ui_TaskPostScalarClip.h"
#include "ui_TaskPostWarpVector.h"
#include "TaskPostBoxes.h"
#include "ViewProviderFemPostObject.h"
#include "ViewProviderFemPostFunction.h"
@@ -449,4 +450,91 @@ void TaskPostScalarClip::on_InsideOut_toggled(bool val) {
}
//############################################################################################
TaskPostWarpVector::TaskPostWarpVector(ViewProviderDocumentObject* view, QWidget* parent) :
TaskPostBox(view, Gui::BitmapFactory().pixmap("fem-fem-mesh-create-node-by-poly"), tr("Clip options"), parent) {
assert(view->isDerivedFrom(ViewProviderFemPostWarpVector::getClassTypeId()));
//we load the views widget
proxy = new QWidget(this);
ui = new Ui_TaskPostWarpVector();
ui->setupUi(proxy);
QMetaObject::connectSlotsByName(this);
this->groupLayout()->addWidget(proxy);
//load the default values
updateEnumerationList(getTypedObject<Fem::FemPostWarpVectorFilter>()->Vector, ui->Vector);
double value = static_cast<Fem::FemPostWarpVectorFilter*>(getObject())->Factor.getValue();
//don't forget to sync the slider
ui->Value->blockSignals(true);
ui->Value->setValue( value);
ui->Value->blockSignals(false);
//don't forget to sync the slider
ui->Max->blockSignals(true);
ui->Max->setValue( value==0 ? 1 : value * 10.);
ui->Max->blockSignals(false);
ui->Min->blockSignals(true);
ui->Min->setValue( value==0 ? 0 : value / 10.);
ui->Min->blockSignals(false);
ui->Slider->blockSignals(true);
ui->Slider->setValue((value - ui->Min->value()) / (ui->Max->value() - ui->Min->value())*100.);
ui->Slider->blockSignals(false);
}
TaskPostWarpVector::~TaskPostWarpVector() {
}
void TaskPostWarpVector::applyPythonCode() {
}
void TaskPostWarpVector::on_Vector_currentIndexChanged(int idx) {
static_cast<Fem::FemPostWarpVectorFilter*>(getObject())->Vector.setValue(idx);
recompute();
}
void TaskPostWarpVector::on_Slider_valueChanged(int v) {
double val = ui->Min->value() + (ui->Max->value()-ui->Min->value())/100.*v;
static_cast<Fem::FemPostWarpVectorFilter*>(getObject())->Factor.setValue(val);
recompute();
//don't forget to sync the spinbox
ui->Value->blockSignals(true);
ui->Value->setValue( val );
ui->Value->blockSignals(false);
}
void TaskPostWarpVector::on_Value_valueChanged(double v) {
static_cast<Fem::FemPostWarpVectorFilter*>(getObject())->Factor.setValue(v);
recompute();
//don't forget to sync the slider
ui->Slider->blockSignals(true);
ui->Slider->setValue(int((v - ui->Min->value()) / (ui->Max->value() - ui->Min->value())*100.));
ui->Slider->blockSignals(false);
}
void TaskPostWarpVector::on_Max_valueChanged(double v) {
ui->Slider->blockSignals(true);
ui->Slider->setValue((ui->Value->value() - ui->Min->value()) / (ui->Max->value() - ui->Min->value())*100.);
ui->Slider->blockSignals(false);
}
void TaskPostWarpVector::on_Min_valueChanged(double v) {
ui->Slider->blockSignals(true);
ui->Slider->setValue((ui->Value->value() - ui->Min->value()) / (ui->Max->value() - ui->Min->value())*100.);
ui->Slider->blockSignals(false);
}
#include "moc_TaskPostBoxes.cpp"