20 #include <QTextStream>
22 #include <kfiledialog.h>
24 #include <kmessagebox.h>
36 QStringList ellipsoidList;
37 ellipsoidList <<
"IAU76" <<
"GRS80" <<
"MERIT83" <<
"WGS84" <<
"IERS89";
41 spheRadio->setChecked(
true);
42 ellipsoidBox->insertItems(5,ellipsoidList);
57 void modCalcGeodCoord::showLongLat(
void)
60 LongGeoBox->show( data->
geo()->
lng() );
61 LatGeoBox->show( data->
geo()->
lat() );
62 AltGeoBox->setText( QString(
"0.0") );
74 geoPlace->
setXPos( KGlobal::locale()->readNumber(XGeoBox->text())*1000. );
75 geoPlace->
setYPos( KGlobal::locale()->readNumber(YGeoBox->text())*1000. );
76 geoPlace->
setZPos( KGlobal::locale()->readNumber(ZGeoBox->text())*1000. );
81 geoPlace->
setLong( LongGeoBox->createDms() );
82 geoPlace->
setLat( LatGeoBox->createDms() );
83 geoPlace->
setHeight( AltGeoBox->text().toDouble() );
92 LatGeoBox->clearFields();
93 LongGeoBox->clearFields();
99 if(cartRadio->isChecked()) {
111 LongGeoBox->show( geoPlace->
lng() );
112 LatGeoBox->show( geoPlace->
lat() );
113 AltGeoBox->setText( KGlobal::locale()->formatNumber( geoPlace->
height(), 3) );
119 XGeoBox->setText( KGlobal::locale()->formatNumber( geoPlace->
xPos()/1000. ,6));
120 YGeoBox->setText( KGlobal::locale()->formatNumber( geoPlace->
yPos()/1000. ,6));
121 ZGeoBox->setText( KGlobal::locale()->formatNumber( geoPlace->
zPos()/1000. ,6));
124 void modCalcGeodCoord::geoCheck(
void) {
126 XGeoBoxBatch->setEnabled(
false );
127 XGeoCheckBatch->setChecked(
false );
128 YGeoBoxBatch->setEnabled(
false );
129 YGeoCheckBatch->setChecked(
false );
130 YGeoBoxBatch->setEnabled(
false );
131 YGeoCheckBatch->setChecked(
false );
132 xyzInputCoords =
false;
135 void modCalcGeodCoord::xyzCheck(
void) {
137 LongGeoBoxBatch->setEnabled(
false );
138 LongGeoCheckBatch->setChecked(
false );
139 LatGeoBoxBatch->setEnabled(
false );
140 LatGeoCheckBatch->setChecked(
false );
141 AltGeoBoxBatch->setEnabled(
false );
142 AltGeoCheckBatch->setChecked(
false );
143 xyzInputCoords =
true;
149 if ( LongGeoCheckBatch->isChecked() ) {
150 LongGeoBoxBatch->setEnabled(
false );
153 LongGeoBoxBatch->setEnabled(
true );
159 if ( LatGeoCheckBatch->isChecked() ) {
160 LatGeoBoxBatch->setEnabled(
false );
163 LatGeoBoxBatch->setEnabled(
true );
169 if ( AltGeoCheckBatch->isChecked() ) {
170 AltGeoBoxBatch->setEnabled(
false );
173 AltGeoBoxBatch->setEnabled(
true );
179 if ( XGeoCheckBatch->isChecked() ) {
180 XGeoBoxBatch->setEnabled(
false );
183 XGeoBoxBatch->setEnabled(
true );
189 if ( YGeoCheckBatch->isChecked() ) {
190 YGeoBoxBatch->setEnabled(
false );
193 YGeoBoxBatch->setEnabled(
true );
199 if ( ZGeoCheckBatch->isChecked() ) {
200 ZGeoBoxBatch->setEnabled(
false );
203 ZGeoBoxBatch->setEnabled(
true );
208 QString inputFileName;
209 inputFileName = KFileDialog::getOpenFileName( );
210 InputFileBoxBatch->setUrl( inputFileName );
215 QString outputFileName;
216 outputFileName = KFileDialog::getSaveFileName( );
217 OutputFileBoxBatch->setUrl( outputFileName );
220 void modCalcGeodCoord::slotRunBatch(
void) {
222 QString inputFileName;
224 inputFileName = InputFileBoxBatch->url().toLocalFile();
228 if ( QFile::exists(inputFileName) ) {
229 QFile
f( inputFileName );
230 if ( !
f.open( QIODevice::ReadOnly) ) {
231 QString message = i18n(
"Could not open file %1.",
f.fileName() );
232 KMessageBox::sorry( 0, message, i18n(
"Could Not Open File" ) );
233 inputFileName.clear();
239 processLines(istream);
243 QString message = i18n(
"Invalid file: %1", inputFileName );
244 KMessageBox::sorry( 0, message, i18n(
"Invalid file" ) );
245 inputFileName.clear();
246 InputFileBoxBatch->setUrl( inputFileName );
251 void modCalcGeodCoord::processLines(
QTextStream &istream ) {
256 QString outputFileName;
257 outputFileName = OutputFileBoxBatch->url().toLocalFile();
258 QFile fOut( outputFileName );
259 fOut.open(QIODevice::WriteOnly);
266 geoPl.setEllipsoid(0);
268 double xB, yB, zB, hB;
272 while ( ! istream.atEnd() ) {
273 line = istream.readLine();
278 QStringList fields = line.split(
' ' );
284 if (xyzInputCoords) {
288 if(XGeoCheckBatch->isChecked() ) {
289 xB = fields[i].toDouble();
292 xB = KGlobal::locale()->readNumber(XGeoBoxBatch->text()) ;
294 if ( AllRadioBatch->isChecked() )
295 ostream << xB << space;
297 if(XGeoCheckBatch->isChecked() )
298 ostream << xB << space;
302 if(YGeoCheckBatch->isChecked() ) {
303 yB = fields[i].toDouble();
306 yB = KGlobal::locale()->readNumber( YGeoBoxBatch->text()) ;
308 if ( AllRadioBatch->isChecked() )
309 ostream << yB << space;
311 if(YGeoCheckBatch->isChecked() )
312 ostream << yB << space;
315 if(ZGeoCheckBatch->isChecked() ) {
316 zB = fields[i].toDouble();
319 zB = KGlobal::locale()->readNumber( ZGeoBoxBatch->text());
321 if ( AllRadioBatch->isChecked() )
322 ostream << zB << space;
324 if(YGeoCheckBatch->isChecked() )
325 ostream << zB << space;
327 geoPl.setXPos( xB*1000.0 );
328 geoPl.setYPos( yB*1000.0 );
329 geoPl.setZPos( zB*1000.0 );
330 ostream << geoPl.lng()->toDMSString() << space <<
331 geoPl.lat()->toDMSString() << space <<
332 geoPl.height() << endl;
340 if(LongGeoCheckBatch->isChecked() ) {
341 longB = dms::fromString( fields[i],
true);
344 longB = LongGeoBoxBatch->createDms(
true);
346 if ( AllRadioBatch->isChecked() )
347 ostream << longB.toDMSString() << space;
349 if(LongGeoCheckBatch->isChecked() )
350 ostream << longB.toDMSString() << space;
354 if(LatGeoCheckBatch->isChecked() ) {
355 latB = dms::fromString( fields[i],
true);
358 latB = LatGeoBoxBatch->createDms(
true);
360 if ( AllRadioBatch->isChecked() )
361 ostream << latB.toDMSString() << space;
363 if(LatGeoCheckBatch->isChecked() )
364 ostream << latB.toDMSString() << space;
368 if(AltGeoCheckBatch->isChecked() ) {
369 hB = fields[i].toDouble();
372 hB = AltGeoBoxBatch->text().toDouble() ;
374 if ( AllRadioBatch->isChecked() )
375 ostream << hB << space;
377 if(AltGeoCheckBatch->isChecked() )
378 ostream << hB << space;
380 geoPl.setLong( longB );
381 geoPl.setLat( latB );
382 geoPl.setHeight( hB );
384 ostream << geoPl.xPos()/1000.0 << space <<
385 geoPl.yPos()/1000.0 << space <<
386 geoPl.zPos()/1000.0 << endl;
396 #include "modcalcgeodcoord.moc"
void setYPos(double y)
Set Y.
void setXPos(double x)
Set X.
KStarsData is the backbone of KStars.
modCalcGeodCoord(QWidget *p)
void slotClearGeoCoords(void)
void setZPos(double z)
Set Z.
static KStarsData * Instance()
void changeEllipsoid(int i)
Update Latitude, Longitude and Height according to new ellipsoid.
void setLat(dms l)
Set latitude according to dms argument.
void setLong(dms l)
Set longitude according to dms argument.
Contains all relevant information for specifying a location on Earth: City Name, State/Province name...
void showCartGeoCoords(void)
void getSphGeoCoords(void)
void slotLatCheckedBatch()
void slotComputeGeoCoords(void)
An angle, stored as degrees, but expressible in many ways.
void slotElevCheckedBatch()
void setHeight(double hg)
Set elevation above sea level.
void getCartGeoCoords(void)
void slotLongCheckedBatch()
void showSpheGeoCoords(void)