X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_Preferences_ScalarBarDlg.cxx;h=056b89554787fd326c256be3119be0e97c405aa0;hp=0608341655aaa5af3f43bba08179ba432e9248e8;hb=ae29d465091933df101dfac6ae99d3becf4efde7;hpb=4791f5b30ea7a9c1247aa551750dc71cb83b99aa diff --git a/src/SMESHGUI/SMESHGUI_Preferences_ScalarBarDlg.cxx b/src/SMESHGUI/SMESHGUI_Preferences_ScalarBarDlg.cxx index 060834165..056b89554 100644 --- a/src/SMESHGUI/SMESHGUI_Preferences_ScalarBarDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_Preferences_ScalarBarDlg.cxx @@ -1,206 +1,873 @@ -// SMESH SMESHGUI : GUI for SMESH component +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // -// Copyright (C) 2003 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. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// 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. // +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // -// File : SMESHGUI_Preferences_ScalarBarDlg.cxx -// Author : Nicolas REJNERI -// Module : SMESH -// $Header$ +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// 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 +// Author : Nicolas REJNERI, Open CASCADE S.A.S. +// SMESH includes -using namespace std; #include "SMESHGUI_Preferences_ScalarBarDlg.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Constructs a SMESHGUI_Preferences_ScalarBarDlg which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' +#include "SMESHGUI.h" +#include "SMESHGUI_SpinBox.h" +#include "SMESHGUI_VTKUtils.h" +#include "SMESHGUI_Utils.h" + +#include +#include +#include +#include + +// SALOME GUI includes +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +// Qt includes +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// VTK includes +#include +#include + +#define MINIMUM_WIDTH 70 +#define MARGIN_SIZE 11 +#define SPACING_SIZE 6 + +// Only one instance is allowed +SMESHGUI_Preferences_ScalarBarDlg* SMESHGUI_Preferences_ScalarBarDlg::myDlg = 0; + +//================================================================================================= +/*! + * SMESHGUI_Preferences_ScalarBarDlg::ScalarBarProperties * - * The dialog will by default be modeless, unless you set 'modal' to - * TRUE to construct a modal dialog. + * Gets the only instance of "Scalar Bar Properties" dialog box */ -SMESHGUI_Preferences_ScalarBarDlg::SMESHGUI_Preferences_ScalarBarDlg( QWidget* parent, const char* name, bool modal, WFlags fl ) - : QDialog( parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) +//================================================================================================= +void SMESHGUI_Preferences_ScalarBarDlg::ScalarBarProperties( SMESHGUI* theModule ) { - if ( !name ) - setName( "SMESHGUI_Preferences_ScalarBarDlg" ); - setCaption( tr( "SMESH_PREFERENCES_SCALARBAR" ) ); - setSizeGripEnabled( TRUE ); - - grid = new QGridLayout( this ); - grid->setSpacing( 6 ); - grid->setMargin( 11 ); - - /******************************************************************************/ - Properties = new QGroupBox( this, "Properties" ); - Properties->setTitle( tr( "SMESH_PROPERTIES" ) ); - Properties->setColumnLayout(0, Qt::Vertical ); - Properties->layout()->setSpacing( 0 ); - Properties->layout()->setMargin( 0 ); - grid_4 = new QGridLayout( Properties->layout() ); - grid_4->setAlignment( Qt::AlignTop ); - grid_4->setSpacing( 6 ); - grid_4->setMargin( 11 ); - - /* Font */ - grid_5 = new QGridLayout; - grid_5->setSpacing( 6 ); - grid_5->setMargin( 0 ); - TextLabel2 = new QLabel( Properties, "TextLabel2" ); - TextLabel2->setText( tr( "SMESH_FONT" ) ); - grid_5->addWidget( TextLabel2, 0, 0 ); - ComboBox1 = new QComboBox( FALSE, Properties, "ComboBox1" ); - ComboBox1->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - ComboBox1->insertItem( tr( "SMESH_FONT_ARIAL" ) ); - ComboBox1->insertItem( tr( "SMESH_FONT_COURIER" ) ); - ComboBox1->insertItem( tr( "SMESH_FONT_TIMES" ) ); - grid_5->addWidget( ComboBox1, 0, 1 ); - grid_4->addLayout( grid_5, 0, 0 ); - - /* Font attributes */ - grid_6 = new QGridLayout; - grid_6->setSpacing( 6 ); - grid_6->setMargin( 0 ); - Bold = new QCheckBox( Properties, "Bold" ); - Bold->setText( tr( "SMESH_FONT_BOLD" ) ); - grid_6->addWidget( Bold, 0, 0 ); - Italic = new QCheckBox( Properties, "Italic" ); - Italic->setText( tr( "SMESH_FONT_ITALIC" ) ); - grid_6->addWidget( Italic, 0, 1 ); - Shadow = new QCheckBox( Properties, "Shadow" ); - Shadow->setText( tr( "SMESH_FONT_SHADOW" ) ); - grid_6->addWidget( Shadow, 0, 2 ); - grid_4->addLayout( grid_6, 1, 0 ); - - grid_7 = new QGridLayout; - grid_7->setSpacing( 6 ); - grid_7->setMargin( 0 ); - NumberColors = new QLabel( Properties, "NumberColors" ); - NumberColors->setText( tr( "SMESH_NUMBEROFCOLORS" ) ); - grid_7->addWidget( NumberColors, 0, 0 ); - SpinBoxColors = new QSpinBox( Properties, "SpinBoxColors" ); - SpinBoxColors->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - SpinBoxColors->setMinValue( 1 ); - grid_7->addWidget( SpinBoxColors, 0, 1 ); - NumberLabels = new QLabel( Properties, "NumberLabels" ); - NumberLabels->setText( tr( "SMESH_NUMBEROFLABELS" ) ); - grid_7->addWidget( NumberLabels, 1, 0 ); - SpinBoxLabels = new QSpinBox( Properties, "SpinBoxLabels" ); - SpinBoxLabels->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - SpinBoxLabels->setMinValue( 1 ); - grid_7->addWidget( SpinBoxLabels, 1, 1 ); - grid_4->addLayout( grid_7, 2, 0 ); - - grid->addWidget( Properties, 0, 0 ); - - /******************************************************************************/ - ButtonGroup_Orientation = new QButtonGroup( this, "ButtonGroup_Orientation" ); - ButtonGroup_Orientation->setTitle( tr( "SMESH_ORIENTATION" ) ); - ButtonGroup_Orientation->setColumnLayout(0, Qt::Vertical ); - ButtonGroup_Orientation->layout()->setSpacing( 0 ); - ButtonGroup_Orientation->layout()->setMargin( 0 ); - grid_2 = new QGridLayout( ButtonGroup_Orientation->layout() ); - grid_2->setAlignment( Qt::AlignTop ); - grid_2->setSpacing( 6 ); - grid_2->setMargin( 11 ); - RadioVert = new QRadioButton( ButtonGroup_Orientation, "RadioVert" ); - RadioVert->setText( tr( "SMESH_VERTICAL" ) ); - RadioHoriz = new QRadioButton( ButtonGroup_Orientation, "RadioHoriz" ); - RadioHoriz->setText( tr( "SMESH_HORIZONTAL" ) ); - grid_2->addWidget( RadioVert, 0, 0 ); - grid_2->addWidget( RadioHoriz, 0, 1 ); - - grid->addWidget( ButtonGroup_Orientation, 1, 0 ); - - /******************************************************************************/ - GroupBox5 = new QGroupBox( this, "GroupBox5" ); - GroupBox5->setTitle( tr( "SMESH_DIMENSIONS" ) ); - GroupBox5->setColumnLayout(0, Qt::Vertical ); - GroupBox5->layout()->setSpacing( 0 ); - GroupBox5->layout()->setMargin( 0 ); - grid_11 = new QGridLayout( GroupBox5->layout() ); - grid_11->setAlignment( Qt::AlignTop ); - grid_11->setSpacing( 6 ); - grid_11->setMargin( 11 ); - - LineEditWidth = new QLineEdit( GroupBox5, "LineEditWidth" ); - grid_11->addWidget( LineEditWidth, 0, 0 ); - Width = new QLabel( GroupBox5, "Width" ); - Width->setText( tr( "SMESH_WIDTH" ) ); - grid_11->addWidget( Width, 0, 1 ); - LineEditHeight = new QLineEdit( GroupBox5, "LineEditHeight" ); - grid_11->addWidget( LineEditHeight, 1, 0 ); - Height = new QLabel( GroupBox5, "Height" ); - Height->setText( tr( "SMESH_HEIGHT" ) ); - grid_11->addWidget( Height, 1, 1 ); - - grid->addWidget( GroupBox5, 2, 0 ); - - /***************************************************************/ - QGroupBox* GroupButtons = new QGroupBox( this, "GroupButtons" ); - GroupButtons->setGeometry( QRect( 10, 10, 281, 48 ) ); - GroupButtons->setTitle( tr( "" ) ); - GroupButtons->setColumnLayout(0, Qt::Vertical ); - GroupButtons->layout()->setSpacing( 0 ); - GroupButtons->layout()->setMargin( 0 ); - grid_15 = new QGridLayout( GroupButtons->layout() ); - grid_15->setAlignment( Qt::AlignTop ); - grid_15->setSpacing( 6 ); - grid_15->setMargin( 11 ); - buttonOk = new QPushButton( GroupButtons, "buttonOk" ); - buttonOk->setText( tr( "SMESH_BUT_OK" ) ); - buttonOk->setAutoDefault( TRUE ); - buttonOk->setDefault( TRUE ); - grid_15->addWidget( buttonOk, 0, 0 ); - grid_15->addItem( new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ), 0, 1 ); - buttonCancel = new QPushButton( GroupButtons, "buttonCancel" ); - buttonCancel->setText( tr( "SMESH_BUT_CANCEL" ) ); - buttonCancel->setAutoDefault( TRUE ); - grid_15->addWidget( buttonCancel, 0, 2 ); - - grid->addWidget( GroupButtons, 3, 0 ); - - // signals and slots connections - connect( buttonOk, SIGNAL( clicked() ), this, SLOT( accept() ) ); - connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) ); + if (!myDlg) { + myDlg = new SMESHGUI_Preferences_ScalarBarDlg( theModule ); + myDlg->show(); + } else { + myDlg->show(); + myDlg->raise(); + myDlg->activateWindow(); + } } -/* - * Destroys the object and frees any allocated resources +//================================================================================================= +/*! + * SMESHGUI_Preferences_ScalarBarDlg::SMESHGUI_Preferences_ScalarBarDlg + * + * Constructor */ +//================================================================================================= +SMESHGUI_Preferences_ScalarBarDlg::SMESHGUI_Preferences_ScalarBarDlg( SMESHGUI* theModule ) + : QDialog( SMESH::GetDesktop( theModule ) ), + mySMESHGUI( theModule ), + mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ) +{ + DEF_VER_X = 0.01; + DEF_VER_Y = 0.10; + DEF_VER_H = 0.80; + DEF_VER_W = 0.10; + DEF_HOR_X = 0.20; + DEF_HOR_Y = 0.01; + DEF_HOR_H = 0.12; + DEF_HOR_W = 0.60; + + setModal( false ); + setAttribute( Qt::WA_DeleteOnClose, true ); + setWindowTitle( tr("SMESH_PROPERTIES_SCALARBAR") ); + setSizeGripEnabled(true); + + myActor = 0; + + /******************************************************************************/ + // Top layout + QVBoxLayout* aTopLayout = new QVBoxLayout( this ); + aTopLayout->setSpacing( SPACING_SIZE ); aTopLayout->setMargin( MARGIN_SIZE ); + + /******************************************************************************/ + // Scalar range + myRangeGrp = new QGroupBox ( tr( "SMESH_RANGE_SCALARBAR" ), this ); + //QHBoxLayout* myRangeGrpLayout = new QHBoxLayout( myRangeGrp ); + QGridLayout* myRangeGrpLayout = new QGridLayout( myRangeGrp ); + myRangeGrpLayout->setSpacing( SPACING_SIZE ); myRangeGrpLayout->setMargin( MARGIN_SIZE ); + + myMinEdit = new QLineEdit( myRangeGrp ); + myMinEdit->setMinimumWidth( MINIMUM_WIDTH ); + myMinEdit->setValidator( new QDoubleValidator( this ) ); + + myMaxEdit = new QLineEdit( myRangeGrp ); + myMaxEdit->setMinimumWidth( MINIMUM_WIDTH ); + myMaxEdit->setValidator( new QDoubleValidator( this ) ); + + myLogarithmicCheck = new QCheckBox (myRangeGrp); + myLogarithmicCheck->setText(tr("SMESH_LOGARITHMIC_SCALARBAR")); + myLogarithmicCheck->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 ); + + aTopLayout->addWidget( myRangeGrp ); + + /******************************************************************************/ + // Text properties + myFontGrp = new QGroupBox ( tr( "SMESH_FONT_SCALARBAR" ), this ); + QGridLayout* myFontGrpLayout = new QGridLayout( myFontGrp ); + myFontGrpLayout->setSpacing( SPACING_SIZE ); myFontGrpLayout->setMargin( MARGIN_SIZE ); + + myTitleColorBtn = new QtxColorButton( myFontGrp ); + + myTitleFontCombo = new QComboBox( myFontGrp ); + myTitleFontCombo->setMinimumWidth( MINIMUM_WIDTH ); + myTitleFontCombo->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); + myTitleFontCombo->addItem( tr( "SMESH_FONT_ARIAL" ) ); + myTitleFontCombo->addItem( tr( "SMESH_FONT_COURIER" ) ); + myTitleFontCombo->addItem( tr( "SMESH_FONT_TIMES" ) ); + + myTitleBoldCheck = new QCheckBox( tr( "SMESH_FONT_BOLD" ), myFontGrp ); + myTitleItalicCheck = new QCheckBox( tr( "SMESH_FONT_ITALIC" ), myFontGrp ); + myTitleShadowCheck = new QCheckBox( tr( "SMESH_FONT_SHADOW" ), myFontGrp ); + + myLabelsColorBtn = new QtxColorButton( myFontGrp ); + + myLabelsFontCombo = new QComboBox( myFontGrp ); + myLabelsFontCombo->setMinimumWidth( MINIMUM_WIDTH ); + myLabelsFontCombo->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); + myLabelsFontCombo->addItem( tr( "SMESH_FONT_ARIAL" ) ); + myLabelsFontCombo->addItem( tr( "SMESH_FONT_COURIER" ) ); + myLabelsFontCombo->addItem( tr( "SMESH_FONT_TIMES" ) ); + + myLabelsBoldCheck = new QCheckBox( tr( "SMESH_FONT_BOLD" ), myFontGrp ); + myLabelsItalicCheck = new QCheckBox( tr( "SMESH_FONT_ITALIC" ), myFontGrp ); + myLabelsShadowCheck = new QCheckBox( tr( "SMESH_FONT_SHADOW" ), myFontGrp ); + + myFontGrpLayout->addWidget( new QLabel( tr( "SMESH_TITLE" ), myFontGrp ), 0, 0 ); + myFontGrpLayout->addWidget( myTitleColorBtn, 0, 1 ); + myFontGrpLayout->addWidget( myTitleFontCombo, 0, 2 ); + myFontGrpLayout->addWidget( myTitleBoldCheck, 0, 3 ); + myFontGrpLayout->addWidget( myTitleItalicCheck, 0, 4 ); + myFontGrpLayout->addWidget( myTitleShadowCheck, 0, 5 ); + + myFontGrpLayout->addWidget( new QLabel( tr( "SMESH_LABELS" ), myFontGrp ), 1, 0 ); + myFontGrpLayout->addWidget( myLabelsColorBtn, 1, 1 ); + myFontGrpLayout->addWidget( myLabelsFontCombo, 1, 2 ); + myFontGrpLayout->addWidget( myLabelsBoldCheck, 1, 3 ); + myFontGrpLayout->addWidget( myLabelsItalicCheck, 1, 4 ); + myFontGrpLayout->addWidget( myLabelsShadowCheck, 1, 5 ); + + aTopLayout->addWidget( myFontGrp ); + + /******************************************************************************/ + // Labels & Colors + myLabColorGrp = new QGroupBox ( tr( "SMESH_LABELS_COLORS_SCALARBAR" ), this ); + QHBoxLayout* myLabColorGrpLayout = new QHBoxLayout( myLabColorGrp ); + myLabColorGrpLayout->setSpacing( SPACING_SIZE ); myLabColorGrpLayout->setMargin( MARGIN_SIZE ); + + myColorsSpin = new SalomeApp_IntSpinBox( myLabColorGrp ); + myColorsSpin->setAcceptNames( false ); // No Notebook variables allowed + myColorsSpin->setRange( 2, 256 ); + myColorsSpin->setSingleStep( 1 ); + myColorsSpin->setMinimumWidth( MINIMUM_WIDTH ); + myColorsSpin->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); + + myLabelsSpin = new SalomeApp_IntSpinBox( myLabColorGrp ); + myLabelsSpin->setAcceptNames( false ); // No Notebook variables allowed + myLabelsSpin->setRange( 2, 65 ); + myLabelsSpin->setSingleStep( 1 ); + myLabelsSpin->setMinimumWidth( MINIMUM_WIDTH ); + myLabelsSpin->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); + + myLabColorGrpLayout->addWidget( new QLabel( tr( "SMESH_NUMBEROFCOLORS" ), myLabColorGrp ) ); + myLabColorGrpLayout->addWidget( myColorsSpin ); + myLabColorGrpLayout->addWidget( new QLabel( tr( "SMESH_NUMBEROFLABELS" ), myLabColorGrp ) ); + myLabColorGrpLayout->addWidget( myLabelsSpin ); + + aTopLayout->addWidget( myLabColorGrp ); + + /******************************************************************************/ + // Orientation + myOrientationGrp = new QGroupBox ( tr( "SMESH_ORIENTATION" ), this ); + QButtonGroup* aOrientationGrp = new QButtonGroup( this ); + QHBoxLayout* myOrientationGrpLayout = new QHBoxLayout( myOrientationGrp ); + myOrientationGrpLayout->setSpacing( SPACING_SIZE ); myOrientationGrpLayout->setMargin( MARGIN_SIZE ); + + myVertRadioBtn = new QRadioButton( tr( "SMESH_VERTICAL" ), myOrientationGrp ); + myHorizRadioBtn = new QRadioButton( tr( "SMESH_HORIZONTAL" ), myOrientationGrp ); + myVertRadioBtn->setChecked( true ); + + myOrientationGrpLayout->addWidget( myVertRadioBtn ); + myOrientationGrpLayout->addWidget( myHorizRadioBtn ); + aOrientationGrp->addButton(myVertRadioBtn); + aOrientationGrp->addButton(myHorizRadioBtn); + + aTopLayout->addWidget( myOrientationGrp ); + + /******************************************************************************/ + // Position & Size + myOriginDimGrp = new QGroupBox ( tr("SMESH_POSITION_SIZE_SCALARBAR"), this ); + QGridLayout* myOriginDimGrpLayout = new QGridLayout( myOriginDimGrp ); + myOriginDimGrpLayout->setSpacing( SPACING_SIZE ); myOriginDimGrpLayout->setMargin( MARGIN_SIZE ); + + myXSpin = new SMESHGUI_SpinBox(myOriginDimGrp); + myXSpin->setAcceptNames( false ); + myXSpin->RangeStepAndValidator( 0.0, 1.0, 0.1, "parametric_precision" ); + myXSpin->setMinimumWidth( MINIMUM_WIDTH ); + myXSpin->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); + + myYSpin = new SMESHGUI_SpinBox(myOriginDimGrp); + myYSpin->setAcceptNames( false ); + myYSpin->RangeStepAndValidator( 0.0, 1.0, 0.1, "parametric_precision" ); + myYSpin->setMinimumWidth( MINIMUM_WIDTH ); + myYSpin->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); + + myWidthSpin = new SMESHGUI_SpinBox(myOriginDimGrp); + myWidthSpin->setAcceptNames( false ); + myWidthSpin->RangeStepAndValidator( 0.0, 1.0, 0.1, "parametric_precision" ); + myWidthSpin->setMinimumWidth( MINIMUM_WIDTH ); + myWidthSpin->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); + + myHeightSpin = new SMESHGUI_SpinBox(myOriginDimGrp); + myHeightSpin->setAcceptNames( false ); + myHeightSpin->RangeStepAndValidator( 0.0, 1.0, 0.1, "parametric_precision" ); + myHeightSpin->setMinimumWidth( MINIMUM_WIDTH ); + myHeightSpin->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); + + myOriginDimGrpLayout->addWidget( new QLabel( tr( "SMESH_X_SCALARBAR" ), myOriginDimGrp ), 0, 0 ); + myOriginDimGrpLayout->addWidget( myXSpin, 0, 1 ); + myOriginDimGrpLayout->addWidget( new QLabel( tr( "SMESH_Y_SCALARBAR" ), myOriginDimGrp ), 0, 2 ); + myOriginDimGrpLayout->addWidget( myYSpin, 0, 3 ); + myOriginDimGrpLayout->addWidget( new QLabel( tr( "SMESH_WIDTH" ), myOriginDimGrp ), 1, 0 ); + myOriginDimGrpLayout->addWidget( myWidthSpin, 1, 1 ); + myOriginDimGrpLayout->addWidget( new QLabel( tr( "SMESH_HEIGHT" ), myOriginDimGrp ), 1, 2 ); + myOriginDimGrpLayout->addWidget( myHeightSpin, 1, 3 ); + + aTopLayout->addWidget( myOriginDimGrp ); + /******************************************************************************/ + + // Destribution + myDistributionGrp = new QGroupBox ( tr( "SMESH_DISTRIBUTION_SCALARBAR" ), this ); + myDistributionGrp->setCheckable(true); + QHBoxLayout* aDistributionGrpLayout = new QHBoxLayout( myDistributionGrp ); + aDistributionGrpLayout->setSpacing( SPACING_SIZE ); aDistributionGrpLayout->setMargin( MARGIN_SIZE ); + + myDistribColorGrp = new QButtonGroup( this ); + + myDMonoColor = new QRadioButton( tr( "SMESH_MONOCOLOR" ) , myDistributionGrp ); + myDMultiColor = new QRadioButton( tr( "SMESH_MULTICOLOR" ), myDistributionGrp ); + myDMonoColor->setChecked( true ); + + myDistribColorGrp->addButton(myDMonoColor);myDistribColorGrp->setId(myDMonoColor,1); + myDistribColorGrp->addButton(myDMultiColor);myDistribColorGrp->setId(myDMultiColor,2); + + aDistributionGrpLayout->addWidget( myDMultiColor ); + aDistributionGrpLayout->addWidget( myDMonoColor ); + + //Color of the Distribution in monocolor case: + myDistributionColorLbl = new QLabel( tr( "SMESH_DISTRIBUTION_COLOR" ), myDistributionGrp ); + aDistributionGrpLayout->addWidget( myDistributionColorLbl ); + myMonoColorBtn = new QtxColorButton( myDistributionGrp ); + aDistributionGrpLayout->addWidget(myMonoColorBtn); + + aTopLayout->addWidget(myDistributionGrp); + + /******************************************************************************/ + // Common buttons + myButtonGrp = new QGroupBox( this ); + QHBoxLayout* myButtonGrpLayout = new QHBoxLayout( myButtonGrp ); + myButtonGrpLayout->setSpacing( SPACING_SIZE ); myButtonGrpLayout->setMargin( MARGIN_SIZE ); + + myOkBtn = new QPushButton( tr( "SMESH_BUT_APPLY_AND_CLOSE" ), myButtonGrp ); + myOkBtn->setAutoDefault( true ); myOkBtn->setDefault( true ); + myApplyBtn = new QPushButton( tr( "SMESH_BUT_APPLY" ), myButtonGrp ); + myApplyBtn->setAutoDefault( true ); + myCancelBtn = new QPushButton( tr( "SMESH_BUT_CLOSE" ), myButtonGrp ); + myCancelBtn->setAutoDefault( true ); + myHelpBtn = new QPushButton( tr("SMESH_BUT_HELP"), myButtonGrp ); + myHelpBtn->setAutoDefault(true); + + myButtonGrpLayout->addWidget( myOkBtn ); + myButtonGrpLayout->addSpacing( 10 ); + myButtonGrpLayout->addWidget( myApplyBtn ); + myButtonGrpLayout->addSpacing( 10 ); + myButtonGrpLayout->addStretch(); + myButtonGrpLayout->addWidget( myCancelBtn ); + myButtonGrpLayout->addWidget( myHelpBtn ); + + aTopLayout->addWidget( myButtonGrp ); + + /***************************************************************/ + // Init + // --> first init from preferences + SUIT_ResourceMgr* mgr = SMESH::GetResourceMgr( mySMESHGUI ); + + QColor titleColor = mgr->colorValue("SMESH", "scalar_bar_title_color", + QColor(255, 255, 255)); + myTitleColorBtn->setColor(titleColor); + myTitleFontCombo->setCurrentIndex(0); + if (mgr->hasValue("SMESH", "scalar_bar_title_font")) { + QFont f = mgr->fontValue( "SMESH", "scalar_bar_title_font" ); + if( f.family()=="Arial" ) + myTitleFontCombo->setCurrentIndex(0); + if( f.family()=="Courier" ) + myTitleFontCombo->setCurrentIndex(1); + if( f.family()=="Times") + myTitleFontCombo->setCurrentIndex(2); + + myTitleBoldCheck->setChecked ( f.bold() ); + myTitleItalicCheck->setChecked( f.italic() ); + myTitleShadowCheck->setChecked( f.overline() ); + } + + QColor labelColor = mgr->colorValue("SMESH", "scalar_bar_label_color", + QColor(255, 255, 255)); + myLabelsColorBtn->setColor(labelColor); + myLabelsFontCombo->setCurrentIndex(0); + if (mgr->hasValue("SMESH", "scalar_bar_label_font")) { + QFont f = mgr->fontValue( "SMESH", "scalar_bar_label_font" ); + if (f.family() == "Arial") + myLabelsFontCombo->setCurrentIndex(0); + if (f.family() == "Courier") + myLabelsFontCombo->setCurrentIndex(1); + if (f.family() == "Times") + myLabelsFontCombo->setCurrentIndex(2); + + myLabelsBoldCheck ->setChecked( f.bold() ); + myLabelsItalicCheck->setChecked( f.italic() ); + myLabelsShadowCheck->setChecked( f.overline() ); + } + + int aNbColors = mgr->integerValue("SMESH", "scalar_bar_num_colors", 64); + myColorsSpin->setValue(aNbColors); + + int aNbLabels = mgr->integerValue("SMESH", "scalar_bar_num_labels", 5); + myLabelsSpin->setValue(aNbLabels); + + int aOrientation = mgr->integerValue( "SMESH", "scalar_bar_orientation", 1 ); + bool isHoriz = aOrientation == 1; + if (isHoriz) + myHorizRadioBtn->setChecked(true); + else + myVertRadioBtn->setChecked(true); + myIniOrientation = myVertRadioBtn->isChecked(); + + QString name = isHoriz ? "scalar_bar_horizontal_%1" : "scalar_bar_vertical_%1"; + + myIniX = mgr->doubleValue("SMESH", name.arg( "x" ), + myHorizRadioBtn->isChecked() ? DEF_HOR_X : DEF_VER_X); + + myIniY = mgr->doubleValue("SMESH", name.arg( "y" ), + myHorizRadioBtn->isChecked() ? DEF_HOR_Y : DEF_VER_Y); + + myIniW = mgr->doubleValue("SMESH", name.arg( "width" ), + myHorizRadioBtn->isChecked() ? DEF_HOR_W : DEF_VER_W); + + myIniH = mgr->doubleValue("SMESH", name.arg( "height" ), + myHorizRadioBtn->isChecked() ? DEF_HOR_H : DEF_VER_H); + + setOriginAndSize(myIniX, myIniY, myIniW, myIniH); + + + bool distributionVisibility = mgr->booleanValue("SMESH","distribution_visibility"); + myDistributionGrp->setChecked(distributionVisibility); + + int coloringType = mgr->integerValue("SMESH", "distribution_coloring_type", 0); + if( coloringType == SMESH_MONOCOLOR_TYPE ) { + myDMonoColor->setChecked(true); + onDistributionChanged(myDistribColorGrp->id(myDMonoColor)); + } else { + myDMultiColor->setChecked(true); + onDistributionChanged(myDistribColorGrp->id(myDMultiColor)); + + } + + QColor distributionColor = mgr->colorValue("SMESH", "distribution_color", + QColor(255, 255, 255)); + myMonoColorBtn->setColor(distributionColor); + + // --> then init from selection if necessary + onSelectionChanged(); + + /***************************************************************/ + // Connect section + connect( myOkBtn, SIGNAL( clicked() ), this, SLOT( onOk() ) ); + connect( myApplyBtn, SIGNAL( clicked() ), this, SLOT( onApply() ) ); + connect( myCancelBtn, SIGNAL( clicked() ), this, SLOT( reject() ) ); + connect( myHelpBtn, SIGNAL(clicked()), this, SLOT( onHelp() ) ); + connect( myMinEdit, SIGNAL( textChanged(const QString &) ), this, SLOT( onMinMaxChanged() ) ); + connect( myMaxEdit, SIGNAL( textChanged(const QString &) ), this, SLOT( onMinMaxChanged() ) ); + connect( myXSpin, SIGNAL( valueChanged( double ) ), this, SLOT( onXYChanged() ) ); + connect( myYSpin, SIGNAL( valueChanged( double ) ), this, SLOT( onXYChanged() ) ); + connect( aOrientationGrp, SIGNAL( buttonClicked( int ) ), this, SLOT( onOrientationChanged() ) ); + connect( myDistributionGrp, SIGNAL( toggled(bool) ), this, SLOT(onDistributionActivated(bool)) ); + connect( myDistribColorGrp, SIGNAL( buttonClicked( int ) ), this, SLOT( onDistributionChanged( int ) ) ); + connect( mySelectionMgr, SIGNAL( currentSelectionChanged() ), this, SLOT( onSelectionChanged() ) ); + connect( mySMESHGUI, SIGNAL( SignalCloseAllDialogs() ), this, SLOT( reject() ) ); + + myHelpFileName = "quality_page.html"; +} + +//================================================================================================= +/*! + * SMESHGUI_Preferences_ScalarBarDlg::~SMESHGUI_Preferences_ScalarBarDlg + * + * Destructor + */ +//================================================================================================= SMESHGUI_Preferences_ScalarBarDlg::~SMESHGUI_Preferences_ScalarBarDlg() { - // no need to delete child widgets, Qt does it all for us } +//================================================================================================= +/*! + * SMESHGUI_Preferences_ScalarBarDlg::onOk + * + * OK button slot + */ +//================================================================================================= +void SMESHGUI_Preferences_ScalarBarDlg::onOk() +{ + if ( onApply() ) + reject(); +} + +//================================================================================================= +/*! + * SMESHGUI_Preferences_ScalarBarDlg::onApply + * + * Apply button slot + */ +//================================================================================================= +bool SMESHGUI_Preferences_ScalarBarDlg::onApply() +{ + // Scalar Bar properties + if (!myActor) + return false; + SMESH_ScalarBarActor* myScalarBarActor = myActor->GetScalarBarActor(); + + vtkTextProperty* aTitleTextPrp = myScalarBarActor->GetTitleTextProperty(); + QColor aTColor = myTitleColorBtn->color(); + aTitleTextPrp->SetColor( aTColor.red()/255., aTColor.green()/255., aTColor.blue()/255. ); + if ( myTitleFontCombo->currentIndex() == 0 ) + aTitleTextPrp->SetFontFamilyToArial(); + else if ( myTitleFontCombo->currentIndex() == 1 ) + aTitleTextPrp->SetFontFamilyToCourier(); + else + aTitleTextPrp->SetFontFamilyToTimes(); + aTitleTextPrp->SetBold( myTitleBoldCheck->isChecked() ); + aTitleTextPrp->SetItalic( myTitleItalicCheck->isChecked() ); + aTitleTextPrp->SetShadow( myTitleShadowCheck->isChecked() ); + myScalarBarActor->SetTitleTextProperty( aTitleTextPrp ); + + vtkTextProperty* aLabelsTextPrp = myScalarBarActor->GetLabelTextProperty(); + QColor aLColor = myLabelsColorBtn->color(); + aLabelsTextPrp->SetColor( aLColor.red()/255., aLColor.green()/255., aLColor.blue()/255. ); + if ( myLabelsFontCombo->currentIndex() == 0 ) + aLabelsTextPrp->SetFontFamilyToArial(); + else if ( myLabelsFontCombo->currentIndex() == 1 ) + aLabelsTextPrp->SetFontFamilyToCourier(); + else + aLabelsTextPrp->SetFontFamilyToTimes(); + aLabelsTextPrp->SetBold( myLabelsBoldCheck->isChecked() ); + aLabelsTextPrp->SetItalic( myLabelsItalicCheck->isChecked() ); + aLabelsTextPrp->SetShadow( myLabelsShadowCheck->isChecked() ); + myScalarBarActor->SetLabelTextProperty( aLabelsTextPrp ); + + myScalarBarActor->SetNumberOfLabels( myLabelsSpin->value() ); + + if ( myHorizRadioBtn->isChecked() ) + myScalarBarActor->SetOrientationToHorizontal(); + else + myScalarBarActor->SetOrientationToVertical(); + + myScalarBarActor->SetPosition( myXSpin->value(), myYSpin->value() ); + myScalarBarActor->SetWidth( myWidthSpin->value() ); + myScalarBarActor->SetHeight( myHeightSpin->value() ); + + // Distribution + bool distributionTypeChanged = false, colorChanged=false; + myScalarBarActor->SetDistributionVisibility((int)myDistributionGrp->isChecked()); + if( myDistributionGrp->isChecked() ) { + int ColoringType = myDMultiColor->isChecked() ? SMESH_MULTICOLOR_TYPE : SMESH_MONOCOLOR_TYPE; + distributionTypeChanged = (ColoringType != myScalarBarActor->GetDistributionColoringType()); + if (distributionTypeChanged) + myScalarBarActor->SetDistributionColoringType(ColoringType); + + if( !myDMultiColor->isChecked() ) { + QColor aTColor = myMonoColorBtn->color(); + double rgb[3], oldRgb[3];; + rgb [0] = aTColor.red()/255.; + rgb [1] = aTColor.green()/255.; + rgb [2] = aTColor.blue()/255.; + myScalarBarActor->GetDistributionColor(oldRgb); + colorChanged = (rgb[0] != oldRgb[0] || rgb[1] != oldRgb[1] || rgb[2] != oldRgb[2]); + if(colorChanged) + myScalarBarActor->SetDistributionColor(rgb); + } + } + + double aMin = myMinEdit->text().toDouble(); + double aMax = myMaxEdit->text().toDouble(); + vtkLookupTable* myLookupTable = + static_cast(myScalarBarActor->GetLookupTable()); + double oldMinMax[2] = { myLookupTable->GetRange()[0], myLookupTable->GetRange()[1] }; + bool rangeChanges = ( fabs( oldMinMax[0] - aMin ) + fabs( oldMinMax[1] - aMax ) > + 0.001 * ( aMax-aMin + oldMinMax[1]-oldMinMax[0] )); + + bool nbColorsChanged = (myColorsSpin->value() != myScalarBarActor->GetMaximumNumberOfColors()); + if(nbColorsChanged) + myScalarBarActor->SetMaximumNumberOfColors(myColorsSpin->value()); + + myLookupTable->SetRange( aMin, aMax ); + myLookupTable->SetNumberOfTableValues(myColorsSpin->value()); + + bool scaleChanged = (myLogarithmicCheck->isChecked() != (myLookupTable->GetScale() == VTK_SCALE_LOG10)); + if (scaleChanged) + myLookupTable->SetScale(myLogarithmicCheck->isChecked() ? VTK_SCALE_LOG10 : VTK_SCALE_LINEAR); + + myLookupTable->Build(); + + if (nbColorsChanged || rangeChanges || scaleChanged) + myActor->UpdateDistribution(); + +#ifndef DISABLE_PLOT2DVIEWER + if( myActor->GetPlot2Histogram() && + (nbColorsChanged || + rangeChanges || + distributionTypeChanged || + colorChanged )) + SMESH::ProcessIn2DViewers(myActor); +#endif + + SMESH::RepaintCurrentView(); + return true; +} + +//================================================================================================= +/*! + * SMESHGUI_Preferences_ScalarBarDlg::reject + * + * Cancel button slot + */ +//================================================================================================= +void SMESHGUI_Preferences_ScalarBarDlg::reject() +{ + myDlg = 0; + QDialog::reject(); +} + +//================================================================================================= +/*! + * SMESHGUI_Preferences_ScalarBarDlg::onHelp + * + * Help button slot + */ +//================================================================================================= +void SMESHGUI_Preferences_ScalarBarDlg::onHelp() +{ + LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication()); + if (app) + app->onHelpContextModule(mySMESHGUI ? app->moduleName(mySMESHGUI->moduleName()) : QString(""), myHelpFileName); + else { + QString platform; +#ifdef WIN32 + platform = "winapplication"; +#else + platform = "application"; +#endif + SUIT_MessageBox::warning(this, tr("WRN_WARNING"), + tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE"). + arg(app->resourceMgr()->stringValue("ExternalBrowser", + platform)). + arg(myHelpFileName)); + } +} + +//================================================================================================= +/*! + * SMESHGUI_Preferences_ScalarBarDlg::onSelectionChanged + * + * Called when selection changed + */ +//================================================================================================= +void SMESHGUI_Preferences_ScalarBarDlg::onSelectionChanged() +{ + SALOME_ListIO aList; + mySelectionMgr->selectedObjects(aList); + + if (aList.Extent() == 1) { + Handle(SALOME_InteractiveObject) anIO = aList.First(); + if( anIO->hasEntry() ) { + SMESH_Actor* anActor = SMESH::FindActorByEntry(anIO->getEntry()); + if ( anActor && anActor->GetScalarBarActor() && anActor->GetControlMode() != SMESH_Actor::eNone ) { + myActor = anActor; + SMESH_ScalarBarActor* myScalarBarActor = myActor->GetScalarBarActor(); + + if ( myScalarBarActor->GetLookupTable() ) { + vtkLookupTable* aLookupTable = static_cast(myScalarBarActor->GetLookupTable()); + + 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); + } + + vtkTextProperty* aTitleTextPrp = myScalarBarActor->GetTitleTextProperty(); + 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() ); + myTitleBoldCheck->setChecked( aTitleTextPrp->GetBold() ); + myTitleItalicCheck->setChecked( aTitleTextPrp->GetItalic() ); + myTitleShadowCheck->setChecked( aTitleTextPrp->GetShadow() ); + + vtkTextProperty* aLabelsTextPrp = myScalarBarActor->GetLabelTextProperty(); + 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() ); + myLabelsBoldCheck->setChecked( aLabelsTextPrp->GetBold() ); + myLabelsItalicCheck->setChecked( aLabelsTextPrp->GetItalic() ); + myLabelsShadowCheck->setChecked( aLabelsTextPrp->GetShadow() ); + + myLabelsSpin->setValue( myScalarBarActor->GetNumberOfLabels() ); + myColorsSpin->setValue( myScalarBarActor->GetMaximumNumberOfColors() ); + + if ( myScalarBarActor->GetOrientation() == VTK_ORIENT_VERTICAL ) + myVertRadioBtn->setChecked( true ); + else + myHorizRadioBtn->setChecked( true ); + myIniOrientation = myVertRadioBtn->isChecked(); + + myIniX = myScalarBarActor->GetPosition()[0]; + myIniY = myScalarBarActor->GetPosition()[1]; + myIniW = myScalarBarActor->GetWidth(); + myIniH = myScalarBarActor->GetHeight(); + setOriginAndSize( myIniX, myIniY, myIniW, myIniH ); + + int coloringType = myScalarBarActor->GetDistributionColoringType(); + myScalarBarActor->GetDistributionColor( aTColor ); + myMonoColorBtn->setColor( QColor( (int)( aTColor[0]*255 ), (int)( aTColor[1]*255 ), (int)( aTColor[2]*255 ) ) ); + if ( coloringType == SMESH_MONOCOLOR_TYPE ) { + myDMonoColor->setChecked(true); + onDistributionChanged(myDistribColorGrp->id(myDMonoColor)); + } else { + myDMultiColor->setChecked(true); + onDistributionChanged(myDistribColorGrp->id(myDMultiColor)); + } + myDistributionGrp->setChecked((bool)myScalarBarActor->GetDistributionVisibility()); + onDistributionActivated(myScalarBarActor->GetDistributionVisibility()); + + myRangeGrp->setEnabled( true ); + myFontGrp->setEnabled( true ); + myLabColorGrp->setEnabled( true ); + myOrientationGrp->setEnabled( true ); + myOriginDimGrp->setEnabled( true ); + myOkBtn->setEnabled( true ); + myApplyBtn->setEnabled( true ); + myDistributionGrp->setEnabled( true ); + return; + } + } + } + myActor = 0; + myRangeGrp->setEnabled( false ); + myFontGrp->setEnabled( false ); + myLabColorGrp->setEnabled( false ); + myOrientationGrp->setEnabled( false ); + myOriginDimGrp->setEnabled( false ); + myOkBtn->setEnabled( false ); + myApplyBtn->setEnabled( false ); + myDistributionGrp->setEnabled( false ); +} + +//================================================================================================= +/*! + * SMESHGUI_Preferences_ScalarBarDlg::onMinMaxChanged + * + * Called when Scalar Range values are changed + */ +//================================================================================================= +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); + myLogarithmicCheck->setEnabled(isLogarithmicEnabled); +} + +//================================================================================================= +/*! + * SMESHGUI_Preferences_ScalarBarDlg::onXYChanged + * + * Called when X, Y values are changed + */ +//================================================================================================= +void SMESHGUI_Preferences_ScalarBarDlg::onXYChanged() +{ + myWidthSpin->setMaximum( 1.0 - myXSpin->value() ); + myHeightSpin->setMaximum( 1.0 - myYSpin->value() ); +} + +//================================================================================================= +/*! + * SMESHGUI_Preferences_ScalarBarDlg::setOriginAndSize + * + * Called when X, Y values are changed + */ +//================================================================================================= +void SMESHGUI_Preferences_ScalarBarDlg::setOriginAndSize( const double x, + const double y, + const double w, + const double h ) +{ + blockSignals( true ); + myXSpin->setValue( x ); + myYSpin->setValue( y ); + myWidthSpin->setMaximum( 1.0 ); + myWidthSpin->setValue( w ); + myHeightSpin->setMaximum( 1.0 ); + myHeightSpin->setValue( h ); + blockSignals( false ); + onXYChanged(); +} + + +//================================================================================================= +/*! + * SMESHGUI_Preferences_ScalarBarDlg::onDistributionChanged + * + * Called when coloring type of the distribution is changed + */ +//================================================================================================= +void SMESHGUI_Preferences_ScalarBarDlg::onDistributionChanged( int id ) { + + bool isActive = myDistribColorGrp->id(myDMonoColor) == id; + + myMonoColorBtn->setEnabled(isActive); + myDistributionColorLbl->setEnabled(isActive); +} +//================================================================================================= +/*! + * SMESHGUI_Preferences_ScalarBarDlg::onDistributionActivated + * + * Called when distribution group check box is changed + */ +//================================================================================================= +void SMESHGUI_Preferences_ScalarBarDlg::onDistributionActivated(bool on) { + if(on) { + if(myDMonoColor->isChecked()) + onDistributionChanged(myDistribColorGrp->id(myDMonoColor) ); + else if(myDMultiColor->isChecked()) + onDistributionChanged(myDistribColorGrp->id(myDMultiColor) ); + } + else { + myMonoColorBtn->setEnabled(false); + myDistributionColorLbl->setEnabled(false); + } +} + + +//================================================================================================= +/*! + * SMESHGUI_Preferences_ScalarBarDlg::onOrientationChanged + * + * Called when orientation is changed + */ +//================================================================================================= +void SMESHGUI_Preferences_ScalarBarDlg::onOrientationChanged() +{ + initScalarBarFromResources(); + + int aOrientation = myVertRadioBtn->isChecked(); + if ( aOrientation == myIniOrientation ) + setOriginAndSize( myIniX, myIniY, myIniW, myIniH ); + else + setOriginAndSize( aOrientation ? DEF_VER_X : DEF_HOR_X, + aOrientation ? DEF_VER_Y : DEF_HOR_Y, + aOrientation ? DEF_VER_W : DEF_HOR_W, + aOrientation ? DEF_VER_H : DEF_HOR_H ); +} + +//================================================================================================= +/*! + * SMESHGUI_Preferences_ScalarBarDlg::initScalarBarFromResources() + * + * Rereading vertical and horizontal default positions from resources. + */ +//================================================================================================= +void SMESHGUI_Preferences_ScalarBarDlg::initScalarBarFromResources() +{ + SUIT_ResourceMgr* mgr = SMESH::GetResourceMgr( mySMESHGUI ); + QString name; + if (mgr){ + // initialize from resoources + + // horizontal + name = QString("scalar_bar_horizontal_%1"); + if (mgr->hasValue("SMESH", name.arg( "x" ))) + DEF_HOR_X = mgr->doubleValue("SMESH", name.arg( "x" )); + if (mgr->hasValue("SMESH", name.arg( "y" ))) + DEF_HOR_Y = mgr->doubleValue("SMESH", name.arg( "y" )); + if (mgr->hasValue("SMESH", name.arg( "width" ))) + DEF_HOR_W = mgr->doubleValue("SMESH", name.arg( "width" )); + if (mgr->hasValue("SMESH", name.arg( "height" ))) + DEF_HOR_H = mgr->doubleValue("SMESH", name.arg( "height" )); + + // vertical + name = QString("scalar_bar_vertical_%1"); + if (mgr->hasValue("SMESH", name.arg( "x" ))) + DEF_VER_X = mgr->doubleValue("SMESH", name.arg( "x" )); + if (mgr->hasValue("SMESH", name.arg( "y" ))) + DEF_VER_Y = mgr->doubleValue("SMESH", name.arg( "y" )); + if (mgr->hasValue("SMESH", name.arg( "width" ))) + DEF_VER_W = mgr->doubleValue("SMESH", name.arg( "width" )); + if (mgr->hasValue("SMESH", name.arg( "height" ))) + DEF_VER_H = mgr->doubleValue("SMESH", name.arg( "height" )); + } +}