[Kstars-devel] KDE/kdeedu/kstars/kstars/tools

Akarsh Simha akarshsimha at gmail.com
Sat Jul 12 21:37:34 CEST 2008


SVN commit 831466 by asimha:

Double clicking on a list item in the conjunction tool will take you
right to the conjunction. (geographical location, time, and object)

CCMAIL: kstars-devel at kde.org



 M  +35 -9     conjunctions.cpp  
 M  +3 -0      conjunctions.h  


--- trunk/KDE/kdeedu/kstars/kstars/tools/conjunctions.cpp #831465:831466
@@ -44,8 +44,10 @@
 #include "finddialog.h"
 #include "kscomet.h"
 #include "ksasteroid.h"
+#include "skymap.h"
+#include "infoboxes.h"
 
-ConjunctionsTool::ConjunctionsTool(QWidget *parentSplit) 
+ConjunctionsTool::ConjunctionsTool(QWidget *parentSplit)
     : QFrame(parentSplit), Object1( 0 ), Object2( 0 ) {
 
   setupUi(this);
@@ -62,13 +64,13 @@
   KStarsData *kd = KStarsData::Instance();
   KStarsDateTime dtStart ( KStarsDateTime::currentDateTime() );
   KStarsDateTime dtStop ( dtStart.djd() + 365.24 ); // TODO: Refine
-  
+
   startDate -> setDateTime( dtStart.dateTime() );
   stopDate -> setDateTime( dtStop.dateTime() );
-  
+
   geoPlace = kd -> geo();
   LocationButton -> setText( geoPlace -> fullName() );
-  
+
   pNames[KSPlanetBase::MERCURY] = i18n("Mercury");
   pNames[KSPlanetBase::VENUS] = i18n("Venus");
   pNames[KSPlanetBase::MARS] = i18n("Mars");
@@ -89,6 +91,8 @@
   connect(LocationButton, SIGNAL(clicked()), this, SLOT(slotLocation()));
   connect(Obj1FindButton, SIGNAL(clicked()), this, SLOT(slotFindObject()));
   connect(ComputeButton, SIGNAL(clicked()), this, SLOT(slotCompute()));
+  connect( OutputView, SIGNAL( itemDoubleClicked( QListWidgetItem * ) ), this, SLOT( slotGoto() ) );
+
   show();
 }
 
@@ -99,6 +103,23 @@
         delete Object2;
 }
 
+void ConjunctionsTool::slotGoto() {
+    int index = OutputView->currentRow();
+    long double jd = outputJDList.value( index );
+    KStarsDateTime dt;
+    KStars *ks= (KStars *) topLevelWidget()->parent();
+    KStarsData *data = KStarsData::Instance();
+    SkyMap *map = ks->map();
+
+    data->setLocation( *geoPlace );
+    ks->infoBoxes()->geoChanged( geoPlace );
+    dt.setDJD( jd );
+    data->changeDateTime( dt );
+    map->setClickedObject( data->skyComposite()->findByName( Object1->name() ) ); // This is required, because the Object1 we have is a copy
+    map->setClickedPoint( map->clickedObject() );
+    map->slotCenter();
+}
+
 void ConjunctionsTool::slotFindObject() {
     FindDialog fd( (KStars*) topLevelWidget()->parent() );
     if ( fd.exec() == QDialog::Accepted ) {
@@ -142,7 +163,7 @@
 void ConjunctionsTool::slotLocation()
 {
   LocationDialog ld( (KStars*) topLevelWidget()->parent() );
-  
+
   if ( ld.exec() == QDialog::Accepted ) {
     geoPlace = ld.selectedCity();
     LocationButton -> setText( geoPlace -> fullName() );
@@ -159,7 +180,7 @@
   dms maxSeparation(1.0); // TODO: Make maxSeparation user-specifiable
   // TODO: Get geoPlace from user.
   //    dms LST( geoPlace->GSTtoLST( dt.gst() ) );
-  
+
   if( !Object1 ) {
       // TODO: Display some error message
       KMessageBox::sorry( 0, i18n("Please select an object to check conjunctions with, by clicking on the \'Find Object\' button.") );
@@ -171,11 +192,12 @@
   KSConjunct ksc;
   ComputeStack->setCurrentIndex( 1 );
   connect( &ksc, SIGNAL(madeProgress(int)), this, SLOT(showProgress(int)) );
-  
-  showConjunctions(ksc.findClosestApproach(*Object1, *Object2, startJD, stopJD, maxSeparation));
+
+  showConjunctions( ksc.findClosestApproach(*Object1, *Object2, startJD, stopJD, maxSeparation) );
+
   ComputeStack->setCurrentIndex( 0 );
   QApplication::restoreOverrideCursor();
-    
+
   delete Object2;
   Object2 = NULL;
 
@@ -189,12 +211,16 @@
 
   KStarsDateTime dt;
   QMap<long double, dms>::Iterator it;
+  int i;
 
   OutputView->clear();
+  outputJDList.clear();
+  i = 0;
 
   for(it = conjunctionlist.begin(); it != conjunctionlist.end(); ++it) {
     dt.setDJD( it.key() );
     OutputView -> addItem( i18n("Conjunction on %1 UT: Separation is %2", dt.toString("%a, %d %b %Y %H:%M"), it.data().toDMSString()) );
+    outputJDList.insert( i, it.key() );
   }
 }
 
--- trunk/KDE/kdeedu/kstars/kstars/tools/conjunctions.h #831465:831466
@@ -34,6 +34,7 @@
 class GeoLocation;
 class KSPlanetBase;
 class dms;
+class QListWidgetItem;
 
 /**
   *@short Predicts conjunctions using KSConjunct in the background
@@ -53,12 +54,14 @@
     void slotCompute();
     void showProgress(int);
     void slotFindObject();
+    void slotGoto();
 
 private:
     SkyObject *Object1;
     KSPlanetBase *Object2;        // Second object is always a planet.
     
     QHash<int, QString> pNames;   // To store the names of Planets vs. values expected by KSPlanetBase::createPlanet()
+    QMap<int, long double> outputJDList; // To store Julian Days corresponding to the row index in the output list widget
 
     void showConjunctions(QMap<long double, dms> conjunctionlist);
 


More information about the Kstars-devel mailing list