summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander V. Wolf <alex.v.wolf@gmail.com>2022-03-14 23:02:42 +0700
committerAlexander V. Wolf <alex.v.wolf@gmail.com>2022-03-14 23:02:42 +0700
commit7b6a3bfac96613ec899a62d2d394e15cbc8c37bd (patch)
tree115140dba208758ae2f945efaca56eb2ee9ab15d
parent5b2bee8ca7c5c480eeb75f4fba06d23b21d8de3a (diff)
Visual fix for AstroCalc/Positions tool
-rw-r--r--src/gui/AstroCalcDialog.cpp40
-rw-r--r--src/gui/AstroCalcDialog.hpp11
2 files changed, 47 insertions, 4 deletions
diff --git a/src/gui/AstroCalcDialog.cpp b/src/gui/AstroCalcDialog.cpp
index 6d9f70aae3..9bb1abebee 100644
--- a/src/gui/AstroCalcDialog.cpp
+++ b/src/gui/AstroCalcDialog.cpp
@@ -321,6 +321,7 @@ void AstroCalcDialog::createDialogContent()
connect(dsoMgr, SIGNAL(maxSizeLimitChanged(double)), this, SLOT(currentCelestialPositions()));
connect(ui->hecPositionsTreeWidget, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(selectCurrentHECPosition(QModelIndex)));
+ connect(ui->hecPositionsTreeWidget, SIGNAL(clicked(QModelIndex)), this, SLOT(markCurrentHECPosition(QModelIndex)));
connect(ui->hecPositionsUpdateButton, SIGNAL(clicked()), this, SLOT(currentHECPositions()));
connect(ui->hecPositionsSaveButton, SIGNAL(clicked()), this, SLOT(saveHECPositions()));
connect(ui->tabWidgetPositions, SIGNAL(currentChanged(int)), this, SLOT(changePositionsTab(int)));
@@ -1599,15 +1600,14 @@ void AstroCalcDialog::fillHECPositionTable(QString objectName, QString latitude,
void AstroCalcDialog::currentHECPositions()
{
QPair<QString, QString> coordStrings;
+ hecObjects.clear();
initListHECPositions();
const bool withDecimalDegree = StelApp::getInstance().getFlagShowDecimalDegrees();
double distance, longitude, latitude, dl;
Vec3d pos;
bool sign;
- QScatterSeries *seriesPlanets = new QScatterSeries();
- QScatterSeries *seriesSun = new QScatterSeries();
- seriesSun->append(0., -1.5);
+ HECPosition object;
const double JD = core->getJD();
ui->hecPositionsTimeLabel->setText(q_("Positions on %1").arg(QString("%1 %2").arg(localeMgr->getPrintableDateLocal(JD), localeMgr->getPrintableTimeLocal(JD))));
@@ -1633,7 +1633,10 @@ void AstroCalcDialog::currentHECPositions()
}
fillHECPositionTable(planet->getNameI18n(), coordStrings.first, coordStrings.second, distance);
- seriesPlanets->append(360.-dl, log(distance));
+ object.objectName = planet->getNameI18n();
+ object.x = 360.-dl;
+ object.y = log(distance);
+ hecObjects.append(object);
}
}
@@ -1641,11 +1644,29 @@ void AstroCalcDialog::currentHECPositions()
// sort-by-distance
ui->hecPositionsTreeWidget->sortItems(HECColumnDistance, Qt::AscendingOrder);
+ drawHECGraph();
+}
+
+void AstroCalcDialog::drawHECGraph(QString selectedObject)
+{
+ QScatterSeries *seriesPlanets = new QScatterSeries();
+ QScatterSeries *seriesSelectedPlanet = new QScatterSeries();
+ QScatterSeries *seriesSun = new QScatterSeries();
+ seriesSun->append(0., -1.5);
+
+ for (const auto& planet : qAsConst(hecObjects))
+ {
+ seriesPlanets->append(planet.x, planet.y);
+ if (!selectedObject.isEmpty() && planet.objectName==selectedObject)
+ seriesSelectedPlanet->append(planet.x, planet.y);
+ }
+
QColor axisColor(Qt::lightGray);
QColor labelColor(Qt::white);
QPolarChart *chart = new QPolarChart();
chart->addSeries(seriesPlanets);
+ chart->addSeries(seriesSelectedPlanet);
chart->addSeries(seriesSun);
chart->legend()->hide();
chart->setMargins(QMargins(0, 0, 0, 0));
@@ -1695,6 +1716,12 @@ void AstroCalcDialog::currentHECPositions()
seriesPlanets->setColor(Qt::cyan);
seriesPlanets->setBorderColor(Qt::transparent);
+ seriesSelectedPlanet->attachAxis(angularAxis);
+ seriesSelectedPlanet->attachAxis(radialAxis);
+ seriesSelectedPlanet->setMarkerSize(7);
+ seriesSelectedPlanet->setColor(Qt::green);
+ seriesSelectedPlanet->setBorderColor(Qt::transparent);
+
seriesSun->attachAxis(angularAxis);
seriesSun->attachAxis(radialAxis);
seriesSun->setMarkerSize(9);
@@ -1812,6 +1839,11 @@ void AstroCalcDialog::selectCurrentHECPosition(const QModelIndex& modelIndex)
}
}
+void AstroCalcDialog::markCurrentHECPosition(const QModelIndex& modelIndex)
+{
+ drawHECGraph(modelIndex.sibling(modelIndex.row(), HECColumnName).data().toString());
+}
+
void AstroCalcDialog::selectCurrentEphemeride(const QModelIndex& modelIndex)
{
// Find the object
diff --git a/src/gui/AstroCalcDialog.hpp b/src/gui/AstroCalcDialog.hpp
index da1b051d3c..5098e6969d 100644
--- a/src/gui/AstroCalcDialog.hpp
+++ b/src/gui/AstroCalcDialog.hpp
@@ -58,6 +58,14 @@ struct Ephemeris
};
Q_DECLARE_METATYPE(Ephemeris)
+struct HECPosition
+{
+ QString objectName;
+ double x;
+ double y;
+};
+Q_DECLARE_METATYPE(HECPosition)
+
class AstroCalcDialog : public StelDialog
{
Q_OBJECT
@@ -242,8 +250,10 @@ private slots:
void selectCurrentCelestialPosition(const QModelIndex &modelIndex);
void currentHECPositions();
+ void drawHECGraph(QString selectedObject = "");
void saveHECPositions();
void selectCurrentHECPosition(const QModelIndex &modelIndex);
+ void markCurrentHECPosition(const QModelIndex &modelIndex);
void saveCelestialPositionsMagnitudeLimit(double mag);
void saveCelestialPositionsHorizontalCoordinatesFlag(bool b);
@@ -400,6 +410,7 @@ private:
QTimer *currentTimeLine;
QHash<QString,int> wutCategories;
QPair<double, double> getLunarEclipseXY() const;
+ QList<HECPosition> hecObjects;
void saveTableAsCSV(const QString& fileName, QTreeWidget* tWidget, QStringList& headers);
void saveTableAsBookmarks(const QString& fileName, QTreeWidget* tWidget);