X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FVISUGUI%2FVisuGUI_IsoSurfacesDlg.cxx;h=344e30a26d15924640c999113a832e68bb4c6665;hb=da5787a5ec70051bfa72361e7d9c51fcf167ff6b;hp=5977d5eedade169bf1cba5ec63ed8ed146881563;hpb=ea0d11b57debc8f1953669110cab2eaf790681b1;p=modules%2Fvisu.git diff --git a/src/VISUGUI/VisuGUI_IsoSurfacesDlg.cxx b/src/VISUGUI/VisuGUI_IsoSurfacesDlg.cxx index 5977d5ee..344e30a2 100644 --- a/src/VISUGUI/VisuGUI_IsoSurfacesDlg.cxx +++ b/src/VISUGUI/VisuGUI_IsoSurfacesDlg.cxx @@ -1,104 +1,190 @@ // VISU VISUGUI : GUI of VISU component // // 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 +// 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 // // // // File : VisuGUI_IsoSurfacesDlg.cxx -// Author : Laurent CORNABE & Hubert ROLLAND +// Author : Laurent CORNABE & Hubert ROLLAND // Module : VISU // $Header$ #include "VisuGUI_IsoSurfacesDlg.h" -#include "VISU_IsoSurfaces_i.hh" -#include "QAD_Application.h" -#include "QAD_Desktop.h" -#include "QAD_MessageBox.h" +#include "VisuGUI.h" +#include "VisuGUI_Tools.h" + +#include "SalomeApp_Application.h" + +#include "SUIT_Desktop.h" +#include "SUIT_MessageBox.h" #include #include #include +#include using namespace std; -/*! - Constructor -*/ -VisuGUI_IsoSurfacesDlg::VisuGUI_IsoSurfacesDlg() - : QDialog( QAD_Application::getDesktop(), "VisuGUI_IsoSurfacesDlg", true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) + +VisuGUI_IsoSurfPane::VisuGUI_IsoSurfPane (QWidget* parent) + : QVBox(parent) { - setCaption( tr( "Iso Surfaces Definition" ) ); - setSizeGripEnabled( TRUE ); - - QGridLayout* TopLayout = new QGridLayout( this ); - TopLayout->setSpacing( 6 ); - TopLayout->setMargin( 11 ); - - QGroupBox* TopGroup = new QGroupBox( this, "TopGroup" ); - TopGroup->setColumnLayout(0, Qt::Vertical ); - TopGroup->layout()->setSpacing( 0 ); - TopGroup->layout()->setMargin( 0 ); - QGridLayout* TopGroupLayout = new QGridLayout( TopGroup->layout() ); + QFrame* TopGroup = new QFrame( this, "TopGroup" ); + TopGroup->setFrameStyle(QFrame::Box | QFrame::Sunken); + TopGroup->setLineWidth(1); + + QGridLayout* TopGroupLayout = new QGridLayout(TopGroup); TopGroupLayout->setAlignment( Qt::AlignTop ); TopGroupLayout->setSpacing( 6 ); TopGroupLayout->setMargin( 11 ); - QLabel* LabelMin = new QLabel( tr( "Minimum value:" ), TopGroup, "LabelMin" ); - TopGroupLayout->addWidget( LabelMin, 0, 0 ); - //MinIso = new QAD_SpinBoxDbl( TopGroup, -DBL_MAX, DBL_MAX, 0.1 ); + QLabel* LabelNbr = new QLabel (tr("NB_SURFACES"), TopGroup, "LabelNbr"); + TopGroupLayout->addWidget( LabelNbr, 0, 0 ); + NbrIso = new QSpinBox( 1, 100, 1, TopGroup, "NbrIso" ); + NbrIso->setValue( 1 ); + TopGroupLayout->addWidget( NbrIso, 0, 1 ); + + QLabel* LabelMin = new QLabel (tr("MIN_VALUE"), TopGroup, "LabelMin"); + TopGroupLayout->addWidget(LabelMin, 1, 0); + //MinIso = new QtxDblSpinBox( -DBL_MAX, DBL_MAX, 0.1, TopGroup ); MinIso = new QLineEdit( TopGroup ); - MinIso->setValidator( new QDoubleValidator(this) ); + MinIso->setValidator( new QDoubleValidator(TopGroup) ); MinIso->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); MinIso->setMinimumSize( 70, 0 ); LabelMin->setBuddy(MinIso); - TopGroupLayout->addWidget( MinIso, 0, 1 ); + TopGroupLayout->addWidget( MinIso, 1, 1 ); - QLabel* LabelMax = new QLabel( tr( "Maximum value:" ), TopGroup, "LabelMax" ); - TopGroupLayout->addWidget( LabelMax, 1, 0 ); - //MaxIso = new QAD_SpinBoxDbl( TopGroup, -DBL_MAX, DBL_MAX, 0.1); + QLabel* LabelMax = new QLabel (tr("MAX_VALUE"), TopGroup, "LabelMax"); + TopGroupLayout->addWidget( LabelMax, 2, 0 ); + //MaxIso = new QtxSpinBoxDbl( -DBL_MAX, DBL_MAX, 0.1, TopGroup ); MaxIso = new QLineEdit( TopGroup ); - MaxIso->setValidator( new QDoubleValidator(this) ); + MaxIso->setValidator( new QDoubleValidator(TopGroup) ); MaxIso->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); MaxIso->setMinimumSize( 70, 0 ); LabelMax->setBuddy(MaxIso); - TopGroupLayout->addWidget( MaxIso, 1, 1 ); - - CBUpdate = new QCheckBox ( tr( "Update scalar bar with these values" ), TopGroup); - CBUpdate->setSizePolicy( QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed) ); - TopGroupLayout->addMultiCellWidget( CBUpdate, 4, 4, 0, 1); - CBUpdate->setChecked(true); - - CBLog = new QCheckBox ( tr( "Logarithmic scaling" ), TopGroup); - CBLog->setSizePolicy( QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed) ); - TopGroupLayout->addMultiCellWidget( CBLog, 3, 3, 0, 1); - - QLabel* LabelNbr = new QLabel( tr( "Number of surfaces:" ), TopGroup, "LabelNbr" ); - TopGroupLayout->addWidget( LabelNbr, 2, 0 ); - NbrIso = new QSpinBox( 1, 100, 1, TopGroup, "NbrIso" ); - NbrIso->setValue( 1 ); - TopGroupLayout->addWidget( NbrIso, 2, 1 ); - + TopGroupLayout->addWidget( MaxIso, 2, 1 ); + + +// CBUpdate = new QCheckBox ( tr( "Update scalar bar with these values" ), TopGroup); +// CBUpdate->setSizePolicy( QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed) ); +// TopGroupLayout->addMultiCellWidget( CBUpdate, 4, 4, 0, 1); +// CBUpdate->setChecked(false); + QPushButton* aUpdateBtn = new QPushButton( "Update scalar bar range with these values", TopGroup); + TopGroupLayout->addMultiCellWidget( aUpdateBtn, 3, 3, 0, 1); + connect( aUpdateBtn, SIGNAL( clicked() ), this, SLOT(onCBUpdate() ) ); + +// CBLog = new QCheckBox ( tr( "Logarithmic scaling" ), TopGroup); +// CBLog->setSizePolicy( QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed) ); +// TopGroupLayout->addMultiCellWidget( CBLog, 3, 3, 0, 1); +} + +void VisuGUI_IsoSurfPane::initFromPrsObject (VISU::IsoSurfaces_i* thePrs) +{ + NbrIso->setValue(thePrs->GetNbSurfaces()); + MinIso->setText(QString::number(thePrs->GetSubMin())); + MaxIso->setText(QString::number(thePrs->GetSubMax())); +// switch(thePrs->GetScaling()){ +// case VISU::LOGARITHMIC : +// CBLog->setChecked(true); +// break; +// default: +// CBLog->setChecked(false); +// } +} + +int VisuGUI_IsoSurfPane::storeToPrsObject (VISU::IsoSurfaces_i* thePrs) +{ + thePrs->SetNbSurfaces(NbrIso->value()); + thePrs->SetSubRange(MinIso->text().toDouble(), MaxIso->text().toDouble()); + return 1; +// if (CBUpdate->isChecked()) +// { +// thePrs->SetRange(MinIso->text().toDouble(), MaxIso->text().toDouble()); +// if (CBLog->isChecked()) +// thePrs->SetScaling(VISU::LOGARITHMIC); +// else +// thePrs->SetScaling(VISU::LINEAR); +// } +} + +void VisuGUI_IsoSurfPane::onCBUpdate() +{ + // if (CBUpdate->isChecked()) { + myScalarPane->setRange(MinIso->text().toDouble(), MaxIso->text().toDouble(), true); + // } +// CBLog->setDisabled(false); +// else CBLog->setDisabled(true); +} + +bool VisuGUI_IsoSurfPane::check() +{ + if (MinIso->text().toDouble() >= MaxIso->text().toDouble()) { + MESSAGE(tr("MSG_MINMAX_VALUES")); + SUIT_MessageBox::warn1( this,tr("WRN_VISU"), + tr("MSG_MINMAX_VALUES"), + tr("BUT_OK")); + return false; + } // else if (/* CBUpdate->isChecked() && CBLog->isChecked() && */ +// (MinIso->text().toDouble() <=0 || MaxIso->text().toDouble() <=0) ) { +// SUIT_MessageBox::warn1( this, +// tr("WRN_VISU"), +// tr("WRN_LOGARITHMIC_RANGE_ISOSURF"), +// tr("BUT_OK")); +// return false; +// } + return true; +} + + + + + +/*! + Constructor +*/ +VisuGUI_IsoSurfacesDlg::VisuGUI_IsoSurfacesDlg (SalomeApp_Module* theModule) + : QDialog(VISU::GetDesktop(theModule), "VisuGUI_IsoSurfacesDlg", true, + WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) +{ + setCaption(tr("DEFINE_ISOSURFACES")); + setSizeGripEnabled( TRUE ); + + QVBoxLayout* TopLayout = new QVBoxLayout(this); + TopLayout->setSpacing( 6 ); + TopLayout->setMargin(11); + + QTabWidget* aTabBox = new QTabWidget(this); + myIsoPane = new VisuGUI_IsoSurfPane(this); + myIsoPane->setMargin( 5 ); + aTabBox->addTab(myIsoPane, "Iso Surface"); + myScalarPane = new VisuGUI_ScalarBarPane(this, false); + myIsoPane->setScalarBarPane(myScalarPane); + myScalarPane->setMargin( 5 ); + aTabBox->addTab(myScalarPane, "Scalar Bar"); + + TopLayout->addWidget(aTabBox); + QGroupBox* GroupButtons = new QGroupBox( this, "GroupButtons" ); - GroupButtons->setGeometry( QRect( 10, 10, 281, 48 ) ); + GroupButtons->setGeometry( QRect( 10, 10, 281, 48 ) ); GroupButtons->setColumnLayout(0, Qt::Vertical ); GroupButtons->layout()->setSpacing( 0 ); GroupButtons->layout()->setMargin( 0 ); @@ -106,7 +192,7 @@ VisuGUI_IsoSurfacesDlg::VisuGUI_IsoSurfacesDlg() GroupButtonsLayout->setAlignment( Qt::AlignTop ); GroupButtonsLayout->setSpacing( 6 ); GroupButtonsLayout->setMargin( 11 ); - + QPushButton* buttonOk = new QPushButton( tr( "&OK" ), GroupButtons, "buttonOk" ); buttonOk->setAutoDefault( TRUE ); buttonOk->setDefault( TRUE ); @@ -115,69 +201,16 @@ VisuGUI_IsoSurfacesDlg::VisuGUI_IsoSurfacesDlg() QPushButton* buttonCancel = new QPushButton( tr( "&Cancel" ) , GroupButtons, "buttonCancel" ); buttonCancel->setAutoDefault( TRUE ); GroupButtonsLayout->addWidget( buttonCancel, 0, 2 ); - - TopLayout->addWidget( TopGroup, 0, 0 ); - TopLayout->addWidget( GroupButtons, 1, 0 ); - + + TopLayout->addWidget(GroupButtons); + // signals and slots connections connect( buttonOk, SIGNAL( clicked() ), this, SLOT( accept() ) ); connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) ); - connect( CBUpdate, SIGNAL( clicked() ), this, SLOT(onCBUpdate() ) ); -} - -/*! - Destructor -*/ -VisuGUI_IsoSurfacesDlg::~VisuGUI_IsoSurfacesDlg() -{ -} - -void VisuGUI_IsoSurfacesDlg::initFromPrsObject(VISU::IsoSurfaces_i* thePrs) { - NbrIso->setValue(thePrs->GetNbSurfaces()); - MinIso->setText(QString::number(thePrs->GetSubMin())); - MaxIso->setText(QString::number(thePrs->GetSubMax())); - switch(thePrs->GetScaling()){ - case VISU::LOGARITHMIC : - CBLog->setChecked(true); - break; - default: - CBLog->setChecked(false); - } -} - -void VisuGUI_IsoSurfacesDlg::storeToPrsObject(VISU::IsoSurfaces_i* thePrs) { - thePrs->SetNbSurfaces(NbrIso->value()); - thePrs->SetSubRange(MinIso->text().toDouble(), MaxIso->text().toDouble()); - if (CBUpdate->isChecked()) - { - thePrs->SetRange(MinIso->text().toDouble(), MaxIso->text().toDouble()); - if (CBLog->isChecked()) - thePrs->SetScaling(VISU::LOGARITHMIC); - else - thePrs->SetScaling(VISU::LINEAR); - } -} - -void VisuGUI_IsoSurfacesDlg::accept() { - - if (MinIso->text().toDouble() >= MaxIso->text().toDouble()) - QAD_MessageBox::warn1( this,tr("VISU_WARNING"), - tr("MSG_MINMAX_VALUES"), - tr("VISU_BUT_OK")); - else if ( CBUpdate->isChecked() && CBLog->isChecked() && (MinIso->text().toDouble() <=0 || MaxIso->text().toDouble() <=0) ) - { - - QAD_MessageBox::warn1( this, - tr("VISU_WARNING"), - tr("WRN_LOGARITHMIC_RANGE_ISOSURF"), - tr("VISU_BUT_OK")); - } - else QDialog::accept(); } -void VisuGUI_IsoSurfacesDlg::onCBUpdate() +void VisuGUI_IsoSurfacesDlg::accept() { - if (CBUpdate->isChecked()) - CBLog->setDisabled(false); - else CBLog->setDisabled(true); + if (myIsoPane->check() && myScalarPane->check()) + QDialog::accept(); }