[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdeedu/kstars/kstars
From:       Akarsh Simha <akarshsimha () gmail ! com>
Date:       2011-01-03 10:16:07
Message-ID: 20110103101607.B208EAC8B8 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1211221 by asimha:

Makeshift star hopping feature that is composed of nausea-inducing
code. This is mostly test code that was return to ensure that the
backends were working. Putting it into the git history for safety, in
case I need to reach it again. This code should be entirely replaced
by nice, shiny, clean code for accessing the star hopper backends.

 M  +2 -0      kspopupmenu.cpp  
 M  +31 -8     skymap.cpp  
 M  +9 -3      skymap.h  
 M  +2 -2      skymapdrawabstract.cpp  
 M  +5 -5      skymapevents.cpp  


--- trunk/KDE/kdeedu/kstars/kstars/kspopupmenu.cpp #1211220:1211221
@@ -188,6 +188,8 @@
     //FIXME: add key shortcut to menu items properly!
     addAction( i18n( "Angular Distance To...            [" ), ks->map(),
                SLOT( slotBeginAngularDistance() ) );
+    addAction( i18n( "Starhop from here to...            " ), ks->map(),
+               SLOT(slotBeginStarHop()) ); 
 
     //Insert item for Showing details dialog
     if ( showDetails )
--- trunk/KDE/kdeedu/kstars/kstars/skymap.cpp #1211220:1211221
@@ -66,6 +66,8 @@
 #include "skymapgldraw.h"
 #endif
 
+#include "starhopper.h"
+
 #ifdef HAVE_XPLANET
 #include <KProcess>
 #include <kfiledialog.h>
@@ -148,7 +150,7 @@
 
 SkyMap::SkyMap() : 
     QGraphicsView( KStars::Instance() ),
-    computeSkymap(true), angularDistanceMode(false), scrollCount(0),
+    computeSkymap(true), rulerMode(false), scrollCount(0),
     data( KStarsData::Instance() ), pmenu(0),
     ClickedObject(0), FocusObject(0), TransientObject(0), m_proj(0)
 {
@@ -560,7 +562,16 @@
 }
 
 void SkyMap::slotBeginAngularDistance() {
-    angularDistanceMode = true;
+    beginRulerMode( false );
+}
+
+void SkyMap::slotBeginStarHop() {
+    beginRulerMode( true );
+}
+
+void SkyMap::beginRulerMode( bool starHopRuler ) {
+    rulerMode = true;
+    starHopDefineMode = starHopRuler;
     AngularRuler.clear();
 
     //If the cursor is near a SkyObject, reset the AngularRuler's 
@@ -578,8 +589,10 @@
     AngularRuler.update( data );
 }
 
-void SkyMap::slotEndAngularDistance() {
-    if( angularDistanceMode ) {
+void SkyMap::slotEndRulerMode() {
+    if( !rulerMode )
+        return;
+    if( !starHopDefineMode ) { // Angular Ruler
         QString sbMessage;
 
         //If the cursor is near a SkyObject, reset the AngularRuler's
@@ -593,7 +606,7 @@
             AngularRuler.setPoint( 1, clickedPoint() );
         }
 
-        angularDistanceMode=false;
+        rulerMode=false;
         AngularRuler.update( data );
         dms angularDistance = AngularRuler.angularSize();
         AngularRuler.clear();
@@ -609,10 +622,20 @@
         box->adjust();
         box->show();
     }
+    else { // Star Hop
+        StarHopper hopper;
+        QList<const StarObject *> path = hopper.computePath( *AngularRuler.point( 0 ), \
*AngularRuler.points().last(), 1.0, 9.0 ); // FIXME: Hardcoded FOV and magnitude limits for testing +     \
kDebug() << "path count: " << path.count(); +        foreach( const StarObject *conststar, path ) {
+            
 }
+        rulerMode = false;
+    }
 
-void SkyMap::slotCancelAngularDistance(void) {
-    angularDistanceMode=false;
+}
+
+void SkyMap::slotCancelRulerMode(void) {
+    rulerMode = false;
     AngularRuler.clear();
 }
 
@@ -1081,7 +1104,7 @@
 }
 
 void SkyMap::updateAngleRuler() {
-    if( angularDistanceMode && (!pmenu || !pmenu->isVisible()) )
+    if( rulerMode && (!pmenu || !pmenu->isVisible()) )
         AngularRuler.setPoint( 1, mousePoint() );
     AngularRuler.update( data );
 }
--- trunk/KDE/kdeedu/kstars/kstars/skymap.h #1211220:1211221
@@ -430,6 +430,8 @@
      * having clicked on the skymap and not having done so */
     void slotBeginAngularDistance();
 
+    void slotBeginStarHop(); // TODO: Add docs
+    
     // NOTE: This method is draw-backend independent.
     /**Computes the angular distance, prints the result in the status
      * bar and disables the angular distance measuring mode
@@ -437,11 +439,11 @@
      * name of the clicked object plus the angular distance. If 
      * the user did not clicked on the map, just pressed ], only 
      * the angular distance is printed */
-    void slotEndAngularDistance();
+    void slotEndRulerMode();
 
     /**Disables the angular distance measuring mode. Nothing is printed
      * in the status bar */
-    void slotCancelAngularDistance();
+    void slotCancelRulerMode();
 
 #ifdef HAVE_OPENGL
     void slotToggleGL();
@@ -624,6 +626,9 @@
      */
     void zoomOutOrMagStep( const int modifier );
 
+    void beginRulerMode( bool starHopRuler ); // TODO: Add docs
+
+
 #ifdef HAVE_XPLANET
     /**
      * @short Strart xplanet.
@@ -636,7 +641,8 @@
     bool mouseMoveCursor;  // true if mouseMoveEvent; needed by setMouseMoveCursor
     bool slewing, clockSlewing;
     bool computeSkymap;  //if false only old pixmap will repainted with bitBlt(), this saves a lot of \
                cpu usage
-    bool angularDistanceMode;
+    bool rulerMode; // True if we are either looking for angular distance or star hopping directions
+    bool starHopDefineMode; // True only if we are looking for star hopping directions. If false while \
rulerMode is true, it means we are measuring angular distance. FIXME: Find a better way to do this  int \
scrollCount;  double y0;
 
--- trunk/KDE/kdeedu/kstars/kstars/skymapdrawabstract.cpp #1211220:1211221
@@ -78,8 +78,8 @@
     // certain drawing functions which are implemented in
     // SkyMapDrawAbstract. Really, it doesn't draw anything on its
     // own.
-    if ( m_SkyMap->angularDistanceMode ) {
-        m_SkyMap->updateAngleRuler();
+    if ( m_SkyMap->rulerMode ) {
+        updateAngleRuler();
         drawAngleRuler( p );
     }
 }
--- trunk/KDE/kdeedu/kstars/kstars/skymapevents.cpp #1211220:1211221
@@ -216,12 +216,12 @@
         break;
 
     case Qt::Key_BracketLeft:   // Begin measuring angular distance
-        if( !angularDistanceMode )
+        if( !rulerMode )
             slotBeginAngularDistance();
         break;
     case Qt::Key_Escape:        // Cancel angular distance measurement
-        if( angularDistanceMode )
-            slotCancelAngularDistance();
+        if( rulerMode )
+            slotCancelRulerMode();
         break;
     case Qt::Key_Comma:  //advance one step backward in time
     case Qt::Key_Less:
@@ -616,9 +616,9 @@
             }
             break;
         case Qt::RightButton:
-            if( angularDistanceMode ) {
+            if( rulerMode ) {
                 // Compute angular distance.
-                slotEndAngularDistance();
+                slotEndRulerMode();
             } else {
                 // Show popup menu
                 if( clickedObject() ) {


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic