smesh/src/SMESHGUI/SMESHGUI_aParameterDlg.cxx

212 lines
7.6 KiB
C++
Raw Normal View History

2003-07-10 19:18:22 +06:00
// SMESH SMESHGUI : GUI for SMESH 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
//
//
//
// File : SMESHGUI_aParameterDlg.cxx
// Author : Nicolas REJNERI
// Module : SMESH
2003-05-19 20:07:00 +06:00
// $Header$
2004-12-01 15:48:31 +05:00
#include "QAD_Tools.h"
#include "QAD_Desktop.h"
#include "QAD_Application.h"
2003-05-19 20:07:00 +06:00
#include "SMESHGUI_aParameterDlg.h"
2004-12-01 15:48:31 +05:00
#include "SMESHGUI_aParameter.h"
2003-05-19 20:07:00 +06:00
#include "SMESHGUI.h"
2004-12-01 15:48:31 +05:00
#include "SMESHGUI_SpinBox.h"
2003-05-19 20:07:00 +06:00
// QT Includes
#include <qgroupbox.h>
#include <qlabel.h>
#include <qpushbutton.h>
#include <qlayout.h>
#include <qspinbox.h>
#include <qvalidator.h>
#include <qtextedit.h>
2003-05-19 20:07:00 +06:00
2004-12-01 15:48:31 +05:00
using namespace std;
2003-05-19 20:07:00 +06:00
//======================================================================================
// function : SMESHGUI_aParameterDlg()
//
// The dialog will by default be modal, unless you set 'modal' to
// false when constructing dialog
//
//======================================================================================
2004-12-01 15:48:31 +05:00
SMESHGUI_aParameterDlg::SMESHGUI_aParameterDlg
(std::list<SMESHGUI_aParameterPtr> params,
QWidget* parent,
QString title,
bool modal )
2003-05-19 20:07:00 +06:00
: QDialog( parent, "MyParameterDialog", modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ),
2004-12-01 15:48:31 +05:00
myParamList( params )
2003-05-19 20:07:00 +06:00
{
/* creating widgets */
2004-12-01 15:48:31 +05:00
init();
2003-05-19 20:07:00 +06:00
/* title */
setCaption( title );
/* Move widget on the botton right corner of main widget */
QAD_Tools::centerWidget( this, parent );
}
//======================================================================================
// function : SMESHGUI_aParameterDlg::init()
// purpose : creates dialog's layout
//======================================================================================
2004-12-01 15:48:31 +05:00
void SMESHGUI_aParameterDlg::init()
2003-05-19 20:07:00 +06:00
{
setSizeGripEnabled( TRUE );
QGridLayout* topLayout = new QGridLayout( this );
topLayout->setMargin( 11 ); topLayout->setSpacing( 6 );
/***************************************************************/
QGroupBox* GroupC1 = new QGroupBox( this, "GroupC1" );
GroupC1->setColumnLayout(0, Qt::Vertical );
GroupC1->layout()->setSpacing( 0 );
GroupC1->layout()->setMargin( 0 );
QGridLayout* GroupC1Layout = new QGridLayout( GroupC1->layout() );
GroupC1Layout->setAlignment( Qt::AlignTop );
GroupC1Layout->setSpacing( 6 );
GroupC1Layout->setMargin( 11 );
2004-12-01 15:48:31 +05:00
/* Spin boxes with labels */
list<SMESHGUI_aParameterPtr>::iterator paramIt = myParamList.begin();
for ( int row = 0; paramIt != myParamList.end(); paramIt++ , row++ )
{
SMESHGUI_aParameterPtr param = (*paramIt);
QLabel * label = new QLabel( GroupC1, "TextLabel" );
GroupC1Layout->addWidget( label, row, 0 );
label->setText( param->Label() );
QWidget* aSpinWidget = 0;
2004-12-01 15:48:31 +05:00
switch ( param->GetType() ) {
case SMESHGUI_aParameter::DOUBLE: {
SMESHGUI_SpinBox* spin = new SMESHGUI_SpinBox( GroupC1 );
aSpinWidget = spin;
spin->setPrecision( 12 );
break;
}
case SMESHGUI_aParameter::INT: {
QSpinBox* spin = new QSpinBox( GroupC1 );
aSpinWidget = spin;
break;
}
case SMESHGUI_aParameter::TEXT: {
QTextEdit* edit = new QTextEdit( GroupC1 );
edit->setWordWrap( QTextEdit::NoWrap );
edit->setTextFormat( Qt::PlainText );
aSpinWidget = edit;
break;
}
2004-12-01 15:48:31 +05:00
default:;
}
if ( aSpinWidget ) {
GroupC1Layout->addWidget( aSpinWidget, row, 1 );
aSpinWidget->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Minimum ) );
aSpinWidget->setMinimumSize( 150, 0 );
param->InitializeWidget( aSpinWidget );
mySpinList.push_back( aSpinWidget );
}
2003-05-19 20:07:00 +06:00
}
/***************************************************************/
QGroupBox* GroupButtons = new QGroupBox( this, "GroupButtons" );
GroupButtons->setColumnLayout(0, Qt::Vertical );
GroupButtons->layout()->setSpacing( 0 );
GroupButtons->layout()->setMargin( 0 );
QGridLayout* GroupButtonsLayout = new QGridLayout( GroupButtons->layout() );
GroupButtonsLayout->setAlignment( Qt::AlignTop );
GroupButtonsLayout->setSpacing( 6 );
GroupButtonsLayout->setMargin( 11 );
/* Ok button */
myButtonOk = new QPushButton( GroupButtons, "buttonOk" );
myButtonOk->setText( tr("SMESH_BUT_OK") );
myButtonOk->setAutoDefault( TRUE );
myButtonOk->setDefault( TRUE );
GroupButtonsLayout->addWidget( myButtonOk, 0, 0 );
/* add spacer between buttons */
GroupButtonsLayout->addItem( new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ), 0, 1 );
/* Cancel button */
myButtonCancel = new QPushButton( GroupButtons, "buttonCancel" );
myButtonCancel->setText( tr("SMESH_BUT_CANCEL") );
myButtonCancel->setAutoDefault( TRUE );
GroupButtonsLayout->addWidget( myButtonCancel, 0, 2 );
/***************************************************************/
topLayout->addWidget( GroupC1, 0, 0);
topLayout->addWidget( GroupButtons, 1, 0);
/* signals and slots connections */
2004-12-01 15:48:31 +05:00
connect( myButtonOk, SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) );
2003-05-19 20:07:00 +06:00
connect( myButtonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) );
/* Retrieve SMESHGUI */
mySMESHGUI = SMESHGUI::GetSMESHGUI() ;
}
//======================================================================================
// function : ~SMESHGUI_aParameterDlg()
// purpose : Destructor
//======================================================================================
SMESHGUI_aParameterDlg::~SMESHGUI_aParameterDlg()
{
}
2004-12-01 15:48:31 +05:00
//=======================================================================
//function : ClickOnOk
//purpose :
//=======================================================================
2003-05-19 20:07:00 +06:00
2004-12-01 15:48:31 +05:00
void SMESHGUI_aParameterDlg::ClickOnOk()
2003-05-19 20:07:00 +06:00
{
2004-12-01 15:48:31 +05:00
if ( !mySMESHGUI->ActiveStudyLocked() ) {
list<SMESHGUI_aParameterPtr>::iterator paramIt = myParamList.begin();
list<QWidget*>::iterator widgetIt = mySpinList.begin();
for ( ;
paramIt != myParamList.end() && widgetIt != mySpinList.end();
paramIt++ , widgetIt++ )
(*paramIt)->TakeValue( *widgetIt );
accept();
}
2003-05-19 20:07:00 +06:00
}
2004-12-01 15:48:31 +05:00
//=======================================================================
// function : Parameters()
// purpose : return a list of parameters from a dialog box
//=======================================================================
bool SMESHGUI_aParameterDlg::Parameters( list<SMESHGUI_aParameterPtr> params, const char *aTitle)
{
if ( !params.empty() ) {
SMESHGUI_aParameterDlg *Dialog =
new SMESHGUI_aParameterDlg(params,
QAD_Application::getDesktop(),
aTitle,
TRUE);
return (Dialog->exec() == QDialog::Accepted);
}
return false;
}