-// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
// SMESH SMESHGUI : GUI for SMESH component
// File : SMESHGUI_Preferences_ScalarBarDlg.cxx
#include <QtxColorButton.h>
+#include "utilities.h"
+
// Qt includes
#include <QButtonGroup>
#include <QCheckBox>
myLogarithmicCheck->setText(tr("SMESH_LOGARITHMIC_SCALARBAR"));
myLogarithmicCheck->setChecked(false);
+ myThresholdCheck = new QCheckBox (myRangeGrp);
+ myThresholdCheck->setText(tr("SMESH_TRESHOLD_SCALARBAR"));
+ myThresholdCheck->setChecked(false);
+
+ myWireframeOffCheck = new QCheckBox (myRangeGrp);
+ myWireframeOffCheck->setText(tr("SMESH_WIREFRAME_OFF_SCALARBAR"));
+ myWireframeOffCheck->setChecked(false);
+
myRangeGrpLayout->addWidget( new QLabel( tr( "SMESH_RANGE_MIN" ), myRangeGrp ), 0, 0, 1, 1 );
myRangeGrpLayout->addWidget( myMinEdit, 0, 1, 1, 1 );
myRangeGrpLayout->addWidget( new QLabel( tr( "SMESH_RANGE_MAX" ), myRangeGrp ), 0, 2, 1, 1 );
myRangeGrpLayout->addWidget( myMaxEdit, 0, 3, 1, 1 );
- myRangeGrpLayout->addWidget( myLogarithmicCheck, 1, 0, 1, 4 );
+ myRangeGrpLayout->addWidget( myLogarithmicCheck, 1, 0, 1, 1 );
+ myRangeGrpLayout->addWidget( myThresholdCheck, 1, 1, 1, 1 );
+ myRangeGrpLayout->addWidget( myWireframeOffCheck, 1, 2, 1, 1 );
aTopLayout->addWidget( myRangeGrp );
connect( mySelectionMgr, SIGNAL( currentSelectionChanged() ), this, SLOT( onSelectionChanged() ) );
connect( mySMESHGUI, SIGNAL( SignalCloseAllDialogs() ), this, SLOT( reject() ) );
- myHelpFileName = "quality_page.html";
+ myHelpFileName = "scalar_bar.html";
}
//=================================================================================================
myLookupTable->SetRange( aMin, aMax );
myLookupTable->SetNumberOfTableValues(myColorsSpin->value());
+ applyThreshold(aMin, aMax);
+
+ applyWireframeOff();
bool scaleChanged = (myLogarithmicCheck->isChecked() != (myLookupTable->GetScale() == VTK_SCALE_LOG10));
if (scaleChanged)
if ( myScalarBarActor->GetLookupTable() ) {
vtkLookupTable* aLookupTable = static_cast<vtkLookupTable*>(myScalarBarActor->GetLookupTable());
- vtkFloatingPointType *range = aLookupTable->GetRange();
+ double *range = aLookupTable->GetRange();
myMinEdit->setText( QString::number( range[0],'g',12 ) );
myMaxEdit->setText( QString::number( range[1],'g',12 ) );
myLogarithmicCheck->setChecked(aLookupTable->GetScale() == VTK_SCALE_LOG10);
- myLogarithmicCheck->setEnabled(range[0] > 1e-07 && range[1] > 1e-07);
+ //myLogarithmicCheck->setEnabled(range[0] > 1e-07 && range[1] > 1e-07);
+ myLogarithmicCheck->setEnabled(range[0] != range[1]);
+
+ myThresholdCheck->setChecked(myActor->IsClipThresholdOn());
+ applyThreshold(range[0], range[1]);
+
+ myWireframeOffCheck->setChecked(myActor->IsWireframeOff());
}
+ applyWireframeOff();
+
vtkTextProperty* aTitleTextPrp = myScalarBarActor->GetTitleTextProperty();
- vtkFloatingPointType aTColor[3];
+ double aTColor[3];
aTitleTextPrp->GetColor( aTColor );
myTitleColorBtn->setColor( QColor( (int)( aTColor[0]*255 ), (int)( aTColor[1]*255 ), (int)( aTColor[2]*255 ) ) );
myTitleFontCombo->setCurrentIndex( aTitleTextPrp->GetFontFamily() );
myTitleShadowCheck->setChecked( aTitleTextPrp->GetShadow() );
vtkTextProperty* aLabelsTextPrp = myScalarBarActor->GetLabelTextProperty();
- vtkFloatingPointType aLColor[3];
+ double aLColor[3];
aLabelsTextPrp->GetColor( aLColor );
myLabelsColorBtn->setColor( QColor( (int)( aLColor[0]*255 ), (int)( aLColor[1]*255 ), (int)( aLColor[2]*255 ) ) );
myLabelsFontCombo->setCurrentIndex( aLabelsTextPrp->GetFontFamily() );
//=================================================================================================
void SMESHGUI_Preferences_ScalarBarDlg::onMinMaxChanged()
{
- double aMin = myMinEdit->text().toDouble();
- double aMax = myMaxEdit->text().toDouble();
- bool isLogarithmicEnabled = (aMin > 1e-07 && aMax > 1e-07);
- myLogarithmicCheck->setChecked(isLogarithmicEnabled);
+ // Check if the min-max range is valid.
+ const double aMin = myMinEdit->text().toDouble();
+ const double aMax = myMaxEdit->text().toDouble();
+ const bool isLogarithmicEnabled = aMin > 1e-07 && aMax > 1e-07; // TODO: is it right validation?
+
+ // The checkbox should be enabled only when the range is valid for it
myLogarithmicCheck->setEnabled(isLogarithmicEnabled);
+
+ // Change checkbox only if the range is not valid. Otherwise it's on the user decision.
+ if (!isLogarithmicEnabled)
+ {
+ myLogarithmicCheck->setChecked(isLogarithmicEnabled);
+ }
}
//=================================================================================================
SUIT_ResourceMgr* mgr = SMESH::GetResourceMgr( mySMESHGUI );
QString name;
if (mgr){
- // initialize from resoources
+ // initialize from resources
// horizontal
name = QString("scalar_bar_horizontal_%1");
DEF_VER_H = mgr->doubleValue("SMESH", name.arg( "height" ));
}
}
+
+//=================================================================================================
+/*!
+ * SMESHGUI_Preferences_ScalarBarDlg::applyThreshold()
+ *
+ * Hides and shows elements beyond the given min - max range by threshold filter inside the actor.
+ */
+//=================================================================================================
+void SMESHGUI_Preferences_ScalarBarDlg::applyThreshold(double min, double max)
+{
+ myActor->ClipThreshold(myThresholdCheck->isChecked(), min, max);
+}
+
+//=================================================================================================
+/*!
+ * SMESHGUI_Preferences_ScalarBarDlg::applyWireframeOff()
+ *
+ * Hides and shows edges' lines.
+ */
+//=================================================================================================
+void SMESHGUI_Preferences_ScalarBarDlg::applyWireframeOff()
+{
+ myActor->SetWireframeOff(myWireframeOffCheck->isChecked());
+}