Fixed text file permissions
[snark14.git] / tools / Input / mode.cpp
1 /** @file mode.cpp
2     @package snark14Input
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
6 */
7
8 #include "mode.h"
9 #include "misc.h"
10 #include "variables.h"
11 #include <stdio.h>
12 #include <stdlib.h>
13 #include <errno.h>
14
15 #include <qcheckbox.h>
16 #include <qframe.h>
17 #include <qlabel.h>
18 #include <qlineedit.h>
19 #include <qpushbutton.h>
20 #include <qradiobutton.h>
21 #include <qlayout.h>
22 #include <qvariant.h>
23 #include <qtooltip.h>
24 #include <qwhatsthis.h>
25 #include <qmessagebox.h>
26
27 /** 
28  *  Constructs a modewindow which is a child of 'parent', with the 
29  *  name 'name' and widget flags set to 'f' 
30  *
31  *  The dialog will by default be modeless, unless you set 'modal' to
32  *  TRUE to construct a modal dialog.
33 @param void
34 @author Bruno M. Carvalho
35 @version 1.0 */
36 modewindow::modewindow( QWidget* parent,  const char* name, bool modal, WFlags fl )
37     : QDialog( parent, name, modal, fl )
38 {
39     if ( !name )
40         setName( "modewindow" );
41     resize( 400, 250 ); 
42     setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, sizePolicy().hasHeightForWidth() ) );
43     setMinimumSize( QSize( 400, 250 ) );
44     setMaximumSize( QSize( 400, 250 ) );
45     setCaption( tr( "Mode Window" ) );
46
47     modelabel = new QLabel( this, "modelabel" );
48     modelabel->setGeometry( QRect( 10, 10, 70, 30 ) ); 
49     modelabel->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, modelabel->sizePolicy().hasHeightForWidth() ) );
50     modelabel->setMinimumSize( QSize( 70, 30 ) );
51     modelabel->setMaximumSize( QSize( 70, 30 ) );
52     modelabel->setText( tr( "MODE" ) );
53
54     lowerbox = new QCheckBox( this, "lowerbox" );
55     lowerbox->setGeometry( QRect( 30, 60, 80, 30 ) ); 
56     lowerbox->setText( tr( "LOWER" ) ); 
57     QObject::connect(lowerbox,SIGNAL(clicked()),this,SLOT(activateLowerFields()));
58
59     lowervalue = new QLineEdit( this, "lowervalue" );
60     lowervalue->setGeometry( QRect( 130, 60, 110, 30 ) ); 
61     lowervalue->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, lowervalue->sizePolicy().hasHeightForWidth() ) );
62     lowervalue->setEnabled(FALSE);
63
64     lowervaluelabel = new QLabel( this, "lowervaluelabel" );
65     lowervaluelabel->setEnabled( FALSE );
66     lowervaluelabel->setGeometry( QRect( 140, 40, 90, 20 ) ); 
67     lowervaluelabel->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)1, lowervaluelabel->sizePolicy().hasHeightForWidth() ) );
68     lowervaluelabel->setText( tr( "lower_value" ) );
69     lowervaluelabel->setEnabled(FALSE);
70
71     upperbox = new QCheckBox( this, "upperbox" );
72     upperbox->setGeometry( QRect( 30, 130, 80, 30 ) ); 
73     upperbox->setText( tr( "UPPER" ) ); 
74     QObject::connect(upperbox,SIGNAL(clicked()),this,SLOT(activateUpperFields()));
75
76     uppervalue = new QLineEdit( this, "uppervalue" );
77     uppervalue->setGeometry( QRect( 130, 130, 110, 30 ) ); 
78     uppervalue->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, uppervalue->sizePolicy().hasHeightForWidth() ) );
79     uppervalue->setEnabled(FALSE);
80
81     uppervaluelabel = new QLabel( this, "uppervaluelabel" );
82     uppervaluelabel->setGeometry( QRect( 140, 110, 90, 20 ) ); 
83     uppervaluelabel->setText( tr( "upper_value" ) ); 
84     uppervaluelabel->setEnabled(FALSE);
85
86     Line9 = new QFrame( this, "Line9" );
87     Line9->setGeometry( QRect( -10, 175, 420, 16 ) ); 
88     Line9->setFrameStyle( QFrame::HLine | QFrame::Sunken );
89
90     okbutton = new QPushButton( this, "okbutton" );
91     okbutton->setGeometry( QRect( 50, 190, 100, 40 ) ); 
92     okbutton->setText( tr( "OK" ) );
93     QObject::connect(okbutton,SIGNAL(clicked()),this,SLOT(checkValues()));
94
95     cancelbutton = new QPushButton( this, "cancelbutton" );
96     cancelbutton->setGeometry( QRect( 250, 190, 100, 40 ) ); 
97     cancelbutton->setText( tr( "Cancel" ) );
98     QObject::connect(cancelbutton,SIGNAL(clicked()),this,SLOT(reject()));
99 }
100
101 /**  
102  *  Destroys the object and frees any allocated resources
103  */
104 modewindow::~modewindow()
105 {
106     // no need to delete child widgets, Qt does it all for us
107 }
108
109 /* Activates lower and upper fields 
110 @param void
111 @author Bruno M. Carvalho
112 @version 1.0 */
113 /* void modewindow::activateFields()
114 {
115   if(modelabel->isChecked()) {
116     lowerbox->setEnabled(TRUE);
117     upperbox->setEnabled(TRUE);
118   }
119   else {
120     lowerbox->setEnabled(FALSE);
121     upperbox->setEnabled(FALSE);
122     lowervalue->setEnabled(FALSE);
123     lowervaluelabel->setEnabled(FALSE);
124     uppervalue->setEnabled(FALSE);
125     uppervaluelabel->setEnabled(FALSE);
126   }
127 } */
128
129 /** Activates lower subfields 
130 @param void
131 @author Bruno M. Carvalho
132 @version 1.0 */
133 void modewindow::activateLowerFields()
134 {
135   if(lowerbox->isChecked()) {
136     lowervalue->setEnabled(TRUE);
137     lowervaluelabel->setEnabled(TRUE);
138   }
139   else {
140     lowervalue->setEnabled(FALSE);
141     lowervaluelabel->setEnabled(FALSE);
142   }
143 }
144
145 /** Activates upper subfields 
146 @param void
147 @author Bruno M. Carvalho
148 @version 1.0 */
149 void modewindow::activateUpperFields()
150 {
151   if(upperbox->isChecked()) {
152     uppervalue->setEnabled(TRUE);
153     uppervaluelabel->setEnabled(TRUE);
154   }
155   else {
156     uppervalue->setEnabled(FALSE);
157     uppervaluelabel->setEnabled(FALSE);
158   }
159 }
160
161 /** Returns a string for MODE input sequence
162 @param void
163 @return mode
164 @author Bruno M. Carvalho
165 @version 1.0 */
166 QString modewindow::getOutput()
167 {
168   QString output;
169
170   output.sprintf("MODE ");
171   if(lowerbox->isChecked()) {
172     output.append("LOWER ");
173     output+=lowervalue->text();
174     output.append(" ");
175   }
176   if(upperbox->isChecked()) {
177     output.append("UPPER ");
178     output+=uppervalue->text();
179   }
180
181   return output;
182 }
183
184 void modewindow::checkValues()
185 {
186   int f=0;
187   float l=0,u=0;
188   
189   if(lowerbox->isChecked()) {
190     l=strtof((const char *)lowervalue->text());
191     if(errnum) 
192       f=1;
193     if(upperbox->isChecked()) {
194       u=strtof((const char *)uppervalue->text());
195       if(errnum) 
196         f=2;
197       if(l>u && !f) 
198         f=3;
199     }
200   }
201   switch(f) {
202   case 0: accept();
203     break;
204   case 1: QMessageBox::information(this,"SnarkInput","Error!\n"
205                                    "Invalid lower_value format.");
206   lowerbox->setFocus();
207     break;
208   case 2: QMessageBox::information(this,"SnarkInput","Error!\n"
209                                    "Invalid upper_value format.");
210   upperbox->setFocus();
211     break;
212   case 3: QMessageBox::information(this,"SnarkInput","Error!\n"
213                                    "lower_value bigger than upper_value.");
214   lowerbox->setFocus();
215     break;
216   }
217 }