1 // Copyright (C) 2003 CEA/DEN, EDF R&D
5 // File : Plot2d_FitDataDlg.cxx
6 // Author : Vadim SANDLER
10 #include "Plot2d_FitDataDlg.h"
13 #include <qvalidator.h>
15 #define SPACING_SIZE 6
16 #define MARGIN_SIZE 11
17 #define MIN_EDIT_SIZE 100
22 Plot2d_FitDataDlg::Plot2d_FitDataDlg( QWidget* parent, bool secondAxisY )
23 : QDialog( parent ? parent : 0,
26 WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ),
27 myY2MinEdit( 0 ), myY2MaxEdit( 0 ), mySecondAxisY( secondAxisY )
30 setCaption( tr( "FIT_DATA_TLT" ) );
31 setSizeGripEnabled( TRUE );
32 QGridLayout* topLayout = new QGridLayout( this );
33 topLayout->setSpacing( SPACING_SIZE );
34 topLayout->setMargin( MARGIN_SIZE );
37 myRangeGrp = new QButtonGroup( this );
38 myRangeGrp->setColumnLayout( 0, Qt::Vertical );
39 myRangeGrp->layout()->setSpacing( 0 );
40 myRangeGrp->layout()->setMargin( 0 );
41 QGridLayout* aGridLayout = new QGridLayout( myRangeGrp->layout() );
42 aGridLayout->setAlignment( Qt::AlignTop );
43 aGridLayout->setMargin( MARGIN_SIZE );
44 aGridLayout->setSpacing( SPACING_SIZE );
46 myModeAllRB = new QRadioButton( tr( "FIT_ALL" ), myRangeGrp );
47 myModeHorRB = new QRadioButton( tr( "FIT_HORIZONTAL" ), myRangeGrp );
48 myModeVerRB = new QRadioButton( tr( "FIT_VERTICAL" ), myRangeGrp );
50 QDoubleValidator* aValidator = new QDoubleValidator( this );
51 myXMinEdit = new QLineEdit( myRangeGrp );
52 myXMinEdit->setValidator( aValidator );
53 myXMinEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
54 myXMinEdit->setMinimumSize( MIN_EDIT_SIZE, 0 );
55 myXMinEdit->setText( "0.0" );
57 myYMinEdit = new QLineEdit( myRangeGrp );
58 myYMinEdit->setValidator( aValidator );
59 myYMinEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
60 myYMinEdit->setMinimumSize( MIN_EDIT_SIZE, 0 );
61 myYMinEdit->setText( "0.0" );
63 myXMaxEdit = new QLineEdit( myRangeGrp );
64 myXMaxEdit->setValidator( aValidator );
65 myXMaxEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
66 myXMaxEdit->setMinimumSize( MIN_EDIT_SIZE, 0 );
67 myXMaxEdit->setText( "0.0" );
69 myYMaxEdit = new QLineEdit( myRangeGrp );
70 myYMaxEdit->setValidator( aValidator );
71 myYMaxEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
72 myYMaxEdit->setMinimumSize( MIN_EDIT_SIZE, 0 );
73 myYMaxEdit->setText( "0.0" );
76 myY2MinEdit = new QLineEdit( myRangeGrp );
77 myY2MinEdit->setValidator( aValidator );
78 myY2MinEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
79 myY2MinEdit->setMinimumSize( MIN_EDIT_SIZE, 0 );
80 myY2MinEdit->setText( "0.0" );
82 myY2MaxEdit = new QLineEdit( myRangeGrp );
83 myY2MaxEdit->setValidator( aValidator );
84 myY2MaxEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
85 myY2MaxEdit->setMinimumSize( MIN_EDIT_SIZE, 0 );
86 myY2MaxEdit->setText( "0.0" );
89 QFrame* aHLine = new QFrame( myRangeGrp );
90 aHLine->setFrameStyle( QFrame::HLine | QFrame::Sunken );
92 QHBoxLayout* aModeLayout = new QHBoxLayout;
93 aModeLayout->setMargin( 0 );
94 aModeLayout->setSpacing( SPACING_SIZE );
95 aModeLayout->addWidget( myModeAllRB );
96 aModeLayout->addWidget( myModeHorRB );
97 aModeLayout->addWidget( myModeVerRB );
99 QLabel* horLab = new QLabel( tr( "HORIZONTAL_AXIS" ), myRangeGrp );
100 QLabel* verLab = new QLabel( tr( "VERTICAL_AXIS" ), myRangeGrp );
102 verLab->setText( tr( "VERTICAL_LEFT_AXIS" ) );
104 QFont font = horLab->font(); font.setBold( true );
105 horLab->setFont( font ); verLab->setFont( font );
107 aGridLayout->addMultiCellLayout( aModeLayout, 0, 0, 0, 4 );
108 aGridLayout->addMultiCellWidget( aHLine, 1, 1, 0, 4 );
109 aGridLayout->addWidget ( horLab, 2, 0 );
110 aGridLayout->addWidget ( new QLabel( tr( "MIN_VALUE_LAB" ), myRangeGrp ),
112 aGridLayout->addWidget ( myXMinEdit, 2, 2 );
113 aGridLayout->addWidget ( new QLabel( tr( "MAX_VALUE_LAB" ), myRangeGrp ),
115 aGridLayout->addWidget ( myXMaxEdit, 2, 4 );
116 aGridLayout->addWidget ( verLab, 3, 0 );
117 aGridLayout->addWidget ( new QLabel( tr( "MIN_VALUE_LAB" ), myRangeGrp ),
119 aGridLayout->addWidget ( myYMinEdit, 3, 2 );
120 aGridLayout->addWidget ( new QLabel( tr( "MAX_VALUE_LAB" ), myRangeGrp ),
122 aGridLayout->addWidget ( myYMaxEdit, 3, 4 );
125 QLabel* ver2Lab = new QLabel(tr( "VERTICAL_RIGHT_AXIS" ), myRangeGrp );
126 ver2Lab->setFont( font );
127 aGridLayout->addWidget ( ver2Lab, 4, 0 );
128 aGridLayout->addWidget ( new QLabel( tr( "MIN_VALUE_LAB" ), myRangeGrp ),
130 aGridLayout->addWidget ( myY2MinEdit, 4, 2 );
131 aGridLayout->addWidget ( new QLabel( tr( "MAX_VALUE_LAB" ), myRangeGrp ),
133 aGridLayout->addWidget ( myY2MaxEdit, 4, 4 );
137 myOkBtn = new QPushButton( tr( "BUT_OK" ), this, "buttonOk" );
138 myOkBtn->setAutoDefault( TRUE );
139 myOkBtn->setDefault( TRUE );
140 myCancelBtn = new QPushButton( tr( "BUT_CANCEL" ), this, "buttonCancel" );
141 myCancelBtn->setAutoDefault( TRUE );
143 topLayout->addMultiCellWidget( myRangeGrp, 0, 0, 0, 2 );
144 topLayout->addWidget( myOkBtn, 1, 0 );
145 topLayout->setColStretch( 1, 5 );
146 topLayout->addWidget( myCancelBtn, 1, 2 );
149 connect( myOkBtn, SIGNAL( clicked() ), this, SLOT( accept() ) );
150 connect( myCancelBtn, SIGNAL( clicked() ), this, SLOT( reject() ) );
151 connect( myRangeGrp, SIGNAL( clicked( int ) ), this, SLOT( onModeChanged( int ) ) );
154 myModeAllRB->setChecked( true );
161 void Plot2d_FitDataDlg::setRange( const double xMin,
168 myXMinEdit->setText( QString::number( xMin ) );
169 myXMaxEdit->setText( QString::number( xMax ) );
170 myYMinEdit->setText( QString::number( yMin ) );
171 myYMaxEdit->setText( QString::number( yMax ) );
173 myY2MinEdit->setText( QString::number( y2Min ) );
174 myY2MaxEdit->setText( QString::number( y2Max ) );
179 Gets range, returns mode (see getMode())
181 int Plot2d_FitDataDlg::getRange( double& xMin,
188 xMin = myXMinEdit->text().toDouble();
189 xMax = myXMaxEdit->text().toDouble();
190 yMin = myYMinEdit->text().toDouble();
191 yMax = myYMaxEdit->text().toDouble();
193 y2Min = myY2MinEdit->text().toDouble();
194 y2Max = myY2MaxEdit->text().toDouble();
201 if ( myModeAllRB->isChecked() )
203 if ( myModeHorRB->isChecked() )
205 if ( myModeVerRB->isChecked() )
211 Gets mode : 0 - Fit all; 1 - Fit horizontal, 2 - Fit vertical
213 int Plot2d_FitDataDlg::getMode()
216 if ( myModeAllRB->isChecked() )
218 if ( myModeHorRB->isChecked() )
220 if ( myModeVerRB->isChecked() )
226 Called when range mode changed
228 void Plot2d_FitDataDlg::onModeChanged(int mode)
232 case 0: // fit all mode
233 myXMinEdit->setEnabled(true);
234 myXMaxEdit->setEnabled(true);
235 myYMinEdit->setEnabled(true);
236 myYMaxEdit->setEnabled(true);
238 myY2MinEdit->setEnabled(true);
239 myY2MaxEdit->setEnabled(true);
242 case 1: // fit horizontal mode
243 badFocus = myYMinEdit->hasFocus() || myYMaxEdit->hasFocus();
244 myXMinEdit->setEnabled(true);
245 myXMaxEdit->setEnabled(true);
246 myYMinEdit->setEnabled(false);
247 myYMaxEdit->setEnabled(false);
249 myY2MinEdit->setEnabled(false);
250 myY2MaxEdit->setEnabled(false);
253 myXMinEdit->setFocus();
255 case 2: // fit vertical mode
256 badFocus = myXMinEdit->hasFocus() || myXMaxEdit->hasFocus();
257 myXMinEdit->setEnabled(false);
258 myXMaxEdit->setEnabled(false);
259 myYMinEdit->setEnabled(true);
260 myYMaxEdit->setEnabled(true);
262 myY2MinEdit->setEnabled(true);
263 myY2MaxEdit->setEnabled(true);
266 myYMinEdit->setFocus();