3 @author Bruno M. Carvalho and Deniz Sarioz
4 licensed under (open-source) QPL v1.0
5 which accompanies this distribution in the file QPL
10 #include "variables.h"
12 #include <qbuttongroup.h>
15 #include <qlineedit.h>
16 #include <qmultilineedit.h>
17 #include <qpushbutton.h>
18 #include <qradiobutton.h>
22 #include <qwhatsthis.h>
23 #include <qmessagebox.h>
26 * Constructs a evaluatewindow which is a child of 'parent', with the
27 * name 'name' and widget flags set to 'f'
29 * The dialog will by default be modeless, unless you set 'modal' to
30 * TRUE to construct a modal dialog.
32 @author Bruno M. Carvalho
34 evaluatewindow::evaluatewindow( QWidget* parent, const char* name, bool modal, WFlags fl )
35 : QDialog( parent, name, modal, fl )
38 setName( "evaluatewindow" );
40 setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, sizePolicy().hasHeightForWidth() ) );
41 setMinimumSize( QSize( 400, 600 ) );
42 setMaximumSize( QSize( 400, 600 ) );
43 setCaption( tr( "Evaluate Window" ) );
45 evaluatelabel = new QLabel( this, "evaluatelabel" );
46 evaluatelabel->setGeometry( QRect( 10, 10, 120, 30 ) );
47 evaluatelabel->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, evaluatelabel->sizePolicy().hasHeightForWidth() ) );
48 evaluatelabel->setMinimumSize( QSize( 120, 30 ) );
49 evaluatelabel->setMaximumSize( QSize( 120, 30 ) );
50 evaluatelabel->setText( tr( "EVALUATE" ) );
52 evalnamelabel = new QLabel( this, "evalnamelabel" );
53 evalnamelabel->setGeometry( QRect( 200, 20, 190, 30) );
54 // evalnamelabel->setMinimumSize( QSize( 120, 30) );
55 evalnamelabel->setText( tr( "EVALUATE run name:" ) );
57 evalnamefield = new QLineEdit( this, "evalnamefield" );
58 evalnamefield->setGeometry( QRect( 210, 51, 170, 28) );
59 evalnamefield->setEnabled(TRUE);
61 evaluatebuttongroup = new QButtonGroup( this, "evaluatebuttongroup" );
62 evaluatebuttongroup->setGeometry( QRect( 40, 40, 160, 140 ) );
63 evaluatebuttongroup->setTitle( tr( "type" ) );
64 evaluatebuttongroup->setAlignment( int( QButtonGroup::AlignHCenter ) );
66 resolutionbutton = new QRadioButton( evaluatebuttongroup, "resolutionbutton" );
67 resolutionbutton->setGeometry( QRect( 10, 20, 130, 24 ) );
68 resolutionbutton->setText( tr( "RESOLUTION" ) );
70 pointbutton = new QRadioButton( evaluatebuttongroup, "pointbutton" );
71 pointbutton->setGeometry( QRect( 10, 50, 110, 24 ) );
72 pointbutton->setText( tr( "POINT" ) );
74 bothbutton = new QRadioButton( evaluatebuttongroup, "bothbutton" );
75 bothbutton->setGeometry( QRect( 10, 80, 110, 24 ) );
76 bothbutton->setText( tr( "BOTH" ) );
78 nonebutton = new QRadioButton( evaluatebuttongroup, "nonebutton" );
79 nonebutton->setGeometry( QRect( 10, 110, 80, 24 ) );
80 nonebutton->setText( tr( "NONE" ) );
82 linebutton = new QRadioButton( this, "linebutton" );
83 // linebutton->setGeometry( QRect( 210, 50, 100, 30 ) );
84 linebutton->setGeometry( QRect( 210, 130, 100, 30 ) );
85 linebutton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, linebutton->sizePolicy().hasHeightForWidth() ) );
86 linebutton->setMinimumSize( QSize( 100, 30 ) );
87 linebutton->setMaximumSize( QSize( 100, 30 ) );
88 linebutton->setText( tr( "LINE" ) );
90 evaluatebuttongroup2 = new QButtonGroup( this, "evaluatebuttongroup2" );
91 evaluatebuttongroup2->setGeometry( QRect( 40, 190, 310, 80 ) );
92 evaluatebuttongroup2->setTitle( tr( "" ) );
93 evaluatebuttongroup2->setAlignment( int( QButtonGroup::AlignHCenter ) );
95 wholepicbutton = new QRadioButton( evaluatebuttongroup2, "wholepicbutton" );
96 wholepicbutton->setGeometry( QRect( 10, 10, 110, 24 ) );
97 wholepicbutton->setText( tr( "WHOLEPIC" ) );
98 QObject::connect(wholepicbutton,SIGNAL(clicked()),this,SLOT(activateWholepicFields()));
99 wholepicbutton->setChecked(true);
101 lowden = new QLineEdit( evaluatebuttongroup2, "lowden" );
102 lowden->setGeometry( QRect( 150, 30, 60, 28 ) );
103 lowden->setEnabled(TRUE);
105 lowdenlabel = new QLabel( evaluatebuttongroup2, "lowdenlabel" );
106 lowdenlabel->setGeometry( QRect( 150, 10, 60, 20 ) );
107 lowdenlabel->setText( tr( "lowden" ) );
108 lowdenlabel->setEnabled(TRUE);
110 highden = new QLineEdit( evaluatebuttongroup2, "highden" );
111 highden->setGeometry( QRect( 230, 30, 60, 28 ) );
112 highden->setEnabled(TRUE);
114 highdenlabel = new QLabel( evaluatebuttongroup2, "highdenlabel" );
115 highdenlabel->setGeometry( QRect( 230, 10, 60, 20 ) );
116 highdenlabel->setText( tr( "highden" ) );
117 highdenlabel->setEnabled(TRUE);
119 selectivebutton = new QRadioButton( evaluatebuttongroup2, "selectivebutton" );
120 selectivebutton->setGeometry( QRect( 10, 40, 130, 24 ) );
121 selectivebutton->setText( tr( "SELECTIVE" ) );
122 QObject::connect(selectivebutton,SIGNAL(clicked()),this,SLOT(activateSelectiveFields()));
124 shapes = new QMultiLineEdit( this, "shapes" );
125 shapes->setGeometry( QRect( 30, 300, 350, 124 ) );
126 shapes->setMaxLines(40);
127 shapes->setEnabled(FALSE);
129 shapeslabel = new QLabel( this, "shapeslabel" );
130 shapeslabel->setGeometry( QRect( 90, 280, 240, 20 ) );
131 shapeslabel->setText( tr( "SELECTIVE shapes descriptions" ) );
132 shapeslabel->setEnabled(FALSE);
134 shapesinstructionslabel = new QLabel( this, "shapesinstructionslabel" );
135 shapesinstructionslabel->setGeometry( QRect( 80, 425, 270, 20 ) );
136 shapesinstructionslabel->setText( tr( "shape cx cy u v ang [lowden higden]" ) );
137 shapesinstructionslabel->setEnabled(FALSE);
139 iterationflaglabel = new QLabel( this, "iterationflaglinelabel" );
140 iterationflaglabel->setGeometry( QRect( 140, 450, 150, 20 ) );
141 iterationflaglabel->setText( tr( "iteration_flag_line" ) );
143 iterationflagline = new QLineEdit( this, "iterationflagline" );
144 iterationflagline->setGeometry( QRect( 30, 470, 350, 28 ) );
146 Line4 = new QFrame( this, "Line4" );
147 Line4->setGeometry( QRect( -5, 505, 410, 16 ) );
148 Line4->setFrameStyle( QFrame::HLine | QFrame::Sunken );
150 okbutton = new QPushButton( this, "okbutton" );
151 okbutton->setGeometry( QRect( 50, 540, 100, 40 ) );
152 okbutton->setText( tr( "OK" ) );
153 QObject::connect(okbutton,SIGNAL(clicked()),this,SLOT(checkValues()));
155 cancelbutton = new QPushButton( this, "cancelbutton" );
156 cancelbutton->setGeometry( QRect( 250, 540, 100, 40 ) );
157 cancelbutton->setText( tr( "Cancel" ) );
158 QObject::connect(cancelbutton,SIGNAL(clicked()),this,SLOT(reject()));
162 * Destroys the object and frees any allocated resources
164 evaluatewindow::~evaluatewindow()
166 // no need to delete child widgets, Qt does it all for us
169 /** Activates type, region and flag fields
171 @author Bruno M. Carvalho
173 /*void evaluatewindow::activateFields()
175 if(evaluatebutton->isChecked()) {
176 evaluatebuttongroup->setEnabled(TRUE);
177 resolutionbutton->setEnabled(TRUE);
178 pointbutton->setEnabled(TRUE);
179 bothbutton->setEnabled(TRUE);
180 nonebutton->setEnabled(TRUE);
181 linebutton->setEnabled(TRUE);
182 evaluatebuttongroup2->setEnabled(TRUE);
183 wholepicbutton->setEnabled(TRUE);
184 selectivebutton->setEnabled(TRUE);
185 if(wholepicbutton->isChecked()) {
186 lowden->setEnabled(TRUE);
187 lowdenlabel->setEnabled(TRUE);
188 highden->setEnabled(TRUE);
189 highdenlabel->setEnabled(TRUE);
192 if(selectivebutton->isChecked()) {
193 shapes->setEnabled(TRUE);
194 shapeslabel->setEnabled(TRUE);
195 shapesinstructionslabel->setEnabled(TRUE);
197 iterationflagline->setEnabled(TRUE);
198 iterationflaglabel->setEnabled(TRUE);
201 evaluatebuttongroup->setEnabled(FALSE);
202 resolutionbutton->setEnabled(FALSE);
203 pointbutton->setEnabled(FALSE);
204 bothbutton->setEnabled(FALSE);
205 nonebutton->setEnabled(FALSE);
206 linebutton->setEnabled(FALSE);
207 evaluatebuttongroup2->setEnabled(FALSE);
208 wholepicbutton->setEnabled(FALSE);
209 selectivebutton->setEnabled(FALSE);
210 lowden->setEnabled(FALSE);
211 lowdenlabel->setEnabled(FALSE);
212 highden->setEnabled(FALSE);
213 highdenlabel->setEnabled(FALSE);
214 shapes->setEnabled(FALSE);
215 shapeslabel->setEnabled(FALSE);
216 shapesinstructionslabel->setEnabled(FALSE);
217 iterationflagline->setEnabled(FALSE);
218 iterationflaglabel->setEnabled(FALSE);
222 /** Activates wholepic fields and deactivates selective fields
224 @author Bruno M. Carvalho
226 void evaluatewindow::activateWholepicFields()
228 if(wholepicbutton->isChecked()) {
229 lowden->setEnabled(TRUE);
230 lowdenlabel->setEnabled(TRUE);
231 highden->setEnabled(TRUE);
232 highdenlabel->setEnabled(TRUE);
233 shapes->setEnabled(FALSE);
234 shapeslabel->setEnabled(FALSE);
235 shapesinstructionslabel->setEnabled(FALSE);
238 lowden->setEnabled(FALSE);
239 lowdenlabel->setEnabled(FALSE);
240 highden->setEnabled(FALSE);
241 highdenlabel->setEnabled(FALSE);
245 /** Activates selective fields and deactivates wholepic fields
247 @author Bruno M. Carvalho
249 void evaluatewindow::activateSelectiveFields()
251 if(selectivebutton->isChecked()) {
252 shapes->setEnabled(TRUE);
253 shapeslabel->setEnabled(TRUE);
254 shapesinstructionslabel->setEnabled(TRUE);
255 lowden->setEnabled(FALSE);
256 lowdenlabel->setEnabled(FALSE);
257 highden->setEnabled(FALSE);
258 highdenlabel->setEnabled(FALSE);
261 shapes->setEnabled(FALSE);
262 shapeslabel->setEnabled(FALSE);
263 shapesinstructionslabel->setEnabled(FALSE);
267 /** Returns a string for EVALUATE input sequence
270 @author Bruno M. Carvalho
272 QString evaluatewindow::getOutput()
276 output.sprintf("EVALUATE ");
277 if(resolutionbutton->isChecked()) {
278 output.append("RESOLUTION ");
281 if(pointbutton->isChecked()) {
282 output.append("POINT ");
285 if(bothbutton->isChecked()) {
286 output.append("BOTH ");
288 if(linebutton->isChecked()) {
289 output.append("LINE ");
293 output += evalnamefield->text();
296 if(wholepicbutton->isChecked()) {
297 output.append("WHOLEPIC ");
298 if(! (lowden->text().stripWhiteSpace().isEmpty())) {
299 output+=lowden->text();
301 output+=highden->text();
307 if(selectivebutton->isChecked()) {
308 output.append("SELECTIVE \n");
309 output+=shapes->text();
310 output.append(" \n");
311 output.append("LAST \n");
313 output+=iterationflagline->text();
314 //output.append(" \n");
320 void evaluatewindow::checkValues()
325 if(wholepicbutton->isChecked()) {
326 bool lowblank = lowden->text().stripWhiteSpace().isEmpty();
327 bool highblank = highden->text().stripWhiteSpace().isEmpty();
328 if((lowblank && (!highblank) ) || ( (!lowblank) && highblank)) {
329 QMessageBox::information(this,"SnarkInput","Error!\n"
330 "Must specify either both or neither of lowden and highden");
334 lo=strtof((const char *)lowden->text());
337 hi=strtof((const char *)highden->text());
344 if(!isintspace(iterationflagline->text()))
347 QString teststr = evalnamefield->text();
348 QString teststr2 = teststr.stripWhiteSpace();
349 if (teststr2.isEmpty()) {
355 case 1: QMessageBox::information(this,"SnarkInput","Error!\n"
356 "Invalid lowden format");
359 case 2: QMessageBox::information(this,"SnarkInput","Error!\n"
360 "Invalid highden format");
363 case 3: QMessageBox::information(this,"SnarkInput","Error!\n"
364 "lowden bigger than highden");
367 case 4: QMessageBox::information(this,"SnarkInput","Error!\n"
368 "iteration_flag_line must contain\n"
369 "only 0-9 and spaces and must\n"
371 iterationflagline->setFocus();
373 case 5: QMessageBox::information(this,"SnarkInput","Error!\n"
374 "EVALUATE run name may NOT be\n"
375 "empty or whitespace");