void DialogTransformVolume::RespondSliderRotate( int n ) { if ( isVisible() ) { LayerMRI* layer = ( LayerMRI* )MainWindow::GetMainWindow()->GetActiveLayer( "MRI" ); if ( layer ) { double angle[3]; layer->GetRotate( angle ); angle[n] = m_sliderRotate[n]->value()/2.0; layer->SetRotate( angle, ui->radioButtonAroundCenter->isChecked() ); MainWindow::GetMainWindow()->RequestRedraw(); ChangeLineEditNumber(m_textAngle[n], angle[n], 2, true ); UpdateUI( 1 ); } } }
void DialogTransformVolume::RespondScrollTranslate( int n ) { if ( isVisible() ) { LayerMRI* layer = ( LayerMRI* )MainWindow::GetMainWindow()->GetActiveLayer( "MRI" ); if ( layer ) { double pos[3]; layer->GetTranslate( pos ); int range = m_scrollTranslate[n]->maximum(); int npos = m_scrollTranslate[n]->value(); pos[n] = ( npos - range/2 ) * m_dIncrementTranslate; layer->SetTranslate( pos ); MainWindow::GetMainWindow()->RequestRedraw(); ChangeLineEditNumber(m_textTranslate[n], pos[n], 2, true); UpdateUI( 1 ); } } }
void DialogTransformVolume::RespondScrollScale( int n ) { LayerMRI* layer = ( LayerMRI* )MainWindow::GetMainWindow()->GetActiveLayer( "MRI" ); if ( layer ) { double scale[3]; layer->GetScale( scale ); int npos = m_scrollScale[n]->value(); if ( npos >= 50 ) { scale[n] = ( npos - 50 ) / 50.0 + 1.0; } else { scale[n] = ( npos - 50 ) / 100.0 + 1.0; } layer->SetScale( scale ); MainWindow::GetMainWindow()->RequestRedraw(); ChangeLineEditNumber( m_textScale[n], scale[n] ); UpdateUI( 0 ); } }
// scope: 0 => translate related, 1 => scale related, 2 => both void DialogTransformVolume::UpdateUI( int scope ) { LayerMRI* layer = (LayerMRI* )MainWindow::GetMainWindow()->GetActiveLayer( "MRI" ); if ( layer ) { QList<QWidget*> allwidgets = this->findChildren<QWidget*>(); for ( int i = 0; i < allwidgets.size(); i++ ) { allwidgets[i]->blockSignals( true ); } if ( scope == 0 || scope == 2 ) { double* vs = layer->GetWorldVoxelSize(); double* ws = layer->GetWorldSize(); double pos[3]; layer->GetTranslate( pos ); for ( int i = 0; i < 3; i++ ) { int range = (int)( ws[i] / vs[i] + 0.5 ) * 2; int npos = (int)(pos[i] / vs[i]) + range/2; m_scrollTranslate[i]->setRange(0, range); m_scrollTranslate[i]->setValue(npos); ChangeLineEditNumber(m_textTranslate[i], pos[i]); } } if ( scope == 1 || scope == 2 ) { double scale[3]; layer->GetScale( scale ); for ( int i = 0; i < 3; i++ ) { if ( scale[i] >= 1 ) { m_scrollScale[i]->setValue( 50 + (int)( (scale[i]-1.0)*50 ) ); } else { m_scrollScale[i]->setValue( 50 - (int)( (1.0-scale[i])*100 ) ); } ChangeLineEditNumber(m_textScale[i], scale[i]); } } ui->pushButtonRestore->setEnabled( layer->IsTransformed() ); ui->pushButtonSaveReg->setEnabled( layer->IsTransformed() ); ui->pushButtonSaveVolumeAs->setEnabled( layer->IsTransformed() ); double angle[3]; layer->GetRotate(angle); ui->groupBoxAxis->setDisabled(angle[0] != 0 || angle[1] != 0 || angle[2] != 0); for (int i = 0; i < 3; i++) { double val = angle[i]; while (val > 180) val -= 360; while (angle[i] < -180) val += 360; m_sliderRotate[i]->setValue((int)val); ChangeLineEditNumber(m_textAngle[i], angle[i]); } for ( int i = 0; i < allwidgets.size(); i++ ) { allwidgets[i]->blockSignals( false ); } } }
void PanelPointSet::DoUpdateWidgets() { BlockAllSignals( true ); LayerPointSet* layer = GetCurrentLayer<LayerPointSet*>(); for ( int i = 0; i < this->allWidgets.size(); i++ ) { if ( allWidgets[i] != ui->toolbar && allWidgets[i]->parentWidget() != ui->toolbar ) { allWidgets[i]->setEnabled(layer); } } int nColorMap = 0; bool bShowSpline = false; ui->lineEditFileName->clear(); if ( layer ) { ui->sliderOpacity->setValue( (int)( layer->GetProperty()->GetOpacity() * 100 ) ); ChangeDoubleSpinBoxValue( ui->doubleSpinBoxOpacity, layer->GetProperty()->GetOpacity() ); double* rgb = layer->GetProperty()->GetColor(); ui->colorpickerPointColor->setCurrentColor( QColor( (int)(rgb[0]*255), (int)(rgb[1]*255), (int)(rgb[2]*255) ) ); rgb = layer->GetProperty()->GetSplineColor(); ui->colorpickerSplineColor->setCurrentColor( QColor( (int)(rgb[0]*255), (int)(rgb[1]*255), (int)(rgb[2]*255) ) ); ui->lineEditFileName->setText( MyUtils::Win32PathProof(layer->GetFileName()) ); ui->lineEditFileName->setCursorPosition( ui->lineEditFileName->text().size() ); ChangeLineEditNumber( ui->lineEditRadius, layer->GetProperty()->GetRadius() ); ChangeLineEditNumber( ui->lineEditSplineRadius, layer->GetProperty()->GetSplineRadius() ); ui->labelNumberTotal->setText(QString("%1").arg(layer->GetNumberOfPoints())); ui->spinBoxGoToPoint->setRange(1, layer->GetNumberOfPoints()); nColorMap = layer->GetProperty()->GetColorMap(); double fMin = layer->GetProperty()->GetScalarMinValue(); double fMax = layer->GetProperty()->GetScalarMaxValue(); ui->sliderMin->setValue( (int)( ( layer->GetProperty()->GetHeatScaleMin() - fMin ) / ( fMax - fMin ) * 100 ) ); ui->sliderMid->setValue( (int)( ( layer->GetProperty()->GetHeatScaleMid() - fMin ) / ( fMax - fMin ) * 100 ) ); ui->sliderMax->setValue( (int)( ( layer->GetProperty()->GetHeatScaleMax() - fMin ) / ( fMax - fMin ) * 100 ) ); ui->sliderOffset->setValue( (int)( ( layer->GetProperty()->GetHeatScaleOffset() + fMax ) / ( fMax + fMax ) * 100 ) ); ChangeLineEditNumber( ui->lineEditMin, layer->GetProperty()->GetHeatScaleMin() ); ChangeLineEditNumber( ui->lineEditMid, layer->GetProperty()->GetHeatScaleMid() ); ChangeLineEditNumber( ui->lineEditMax, layer->GetProperty()->GetHeatScaleMax() ); ChangeLineEditNumber( ui->lineEditOffset, layer->GetProperty()->GetHeatScaleOffset() ); ui->comboBoxSplineColor->setCurrentIndex( nColorMap ); ui->comboBoxScalarMap->clear();; QList<Layer*> layers = MainWindow::GetMainWindow()->GetLayerCollection( "MRI" )->GetLayers(); int nSel = -1; for ( int i = 0; i < layers.size(); i++ ) { ui->comboBoxScalarMap->addItem( layers[i]->GetName(), QVariant::fromValue((QObject*)layers[i]) ); if ( layer->GetProperty()->GetScalarType() == LayerPropertyPointSet::ScalarLayer && layer->GetProperty()->GetScalarLayer() == layers[i] ) { nSel = i; } } std::vector<ScalarValues> svs = layer->GetProperty()->GetScalarSets(); for ( int i = 0; i < (int)svs.size(); i++ ) { ui->comboBoxScalarMap->addItem( svs[i].strName ); if ( layer->GetProperty()->GetScalarType() == LayerPropertyPointSet::ScalarSet && layer->GetProperty()->GetScalarSet() == i ) { nSel = i + layers.size(); } } ui->comboBoxScalarMap->addItem( "Load..." ); if ( nSel >= 0 ) { ui->comboBoxScalarMap->setCurrentIndex( nSel ); } bShowSpline = layer->GetProperty()->GetShowSpline(); ui->checkBoxShowSpline->setChecked( bShowSpline ); ui->checkBoxSnapToCenter->setChecked( layer->GetProperty()->GetSnapToVoxelCenter() ); } // MainWindow* mainWnd = MainWindow::GetMainWindowPointer(); ui->colorpickerPointColor->setEnabled( layer ); ui->comboBoxSplineColor->setEnabled( layer ); ShowWidgets( m_widgetlistSpline, bShowSpline ); ShowWidgets( m_widgetlistSolidColor, bShowSpline && layer && nColorMap == LayerPropertyPointSet::SolidColor ); ShowWidgets( m_widgetlistHeatScale, bShowSpline && layer && nColorMap == LayerPropertyPointSet::HeatScale ); BlockAllSignals( false ); }