• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Stellarium / stellarium / 6685397774

29 Oct 2023 07:37PM UTC coverage: 11.735% (-0.002%) from 11.737%
6685397774

push

github

10110111
Deduplicate title bar implementation

131 of 131 new or added lines in 56 files covered. (100.0%)

14842 of 126472 relevant lines covered (11.74%)

21617.74 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/plugins/ArchaeoLines/src/gui/ArchaeoLinesDialog.cpp
1
/*
2
 * ArchaeoLines plug-in for Stellarium
3
 *
4
 * Copyright (C) 2014 Georg Zotti
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18
 */
19

20
#include <QRegularExpression>
21

22
#include "ArchaeoLines.hpp"
23
#include "ArchaeoLinesDialog.hpp"
24
#include "ui_archaeoLinesDialog.h"
25

26
#include "ArchaeoLinesDialogLocations.hpp"
27

28
#include "StelApp.hpp"
29
#include "StelGui.hpp"
30
#include "StelModule.hpp"
31
#include "StelModuleMgr.hpp"
32
#include "StelTranslator.hpp"
33
#include "AngleSpinBox.hpp"
34
#include "StelUtils.hpp"
35

36
ArchaeoLinesDialog::ArchaeoLinesDialog()
×
37
        : StelDialog("ArchaeoLines")
38
        , al(Q_NULLPTR)
×
39
{
40
        ui = new Ui_archaeoLinesDialog();
×
41
        locationsDialog = new ArchaeoLinesDialogLocations();
×
42
}
×
43

44
ArchaeoLinesDialog::~ArchaeoLinesDialog()
×
45
{
46
        delete locationsDialog; locationsDialog=Q_NULLPTR;
×
47
        delete ui;              ui=Q_NULLPTR;
×
48
}
×
49

50
void ArchaeoLinesDialog::retranslate()
×
51
{
52
        if (dialog)
×
53
        {
54
                ui->retranslateUi(dialog);
×
55
                setAboutHtml();
×
56
        }
57
}
×
58

59
void ArchaeoLinesDialog::createDialogContent()
×
60
{
61
        al = GETSTELMODULE(ArchaeoLines);
×
62
        ui->setupUi(dialog);
×
63

64
        // Kinetic scrolling
65
        kineticScrollingList << ui->aboutTextBrowser;
×
66
        StelGui* gui= static_cast<StelGui*>(StelApp::getInstance().getGui());
×
67
        enableKineticScrolling(gui->getFlagUseKineticScrolling());
×
68
        connect(gui, SIGNAL(flagUseKineticScrollingChanged(bool)), this, SLOT(enableKineticScrolling(bool)));
×
69

70
        connect(&StelApp::getInstance(), SIGNAL(languageChanged()), this, SLOT(retranslate()));
×
71
        connect(ui->titleBar, &TitleBar::closeClicked, this, &StelDialog::close);
×
72
        connect(ui->titleBar, SIGNAL(movedTo(QPoint)), this, SLOT(handleMovedTo(QPoint)));
×
73

74
        connectIntProperty(ui->lineWidthSpinBox, "ArchaeoLines.lineWidth");
×
75

76
        connectBoolProperty(ui->equinoxCheckBox,         "ArchaeoLines.flagShowEquinox");
×
77
        connectBoolProperty(ui->solsticesCheckBox,       "ArchaeoLines.flagShowSolstices");
×
78
        connectBoolProperty(ui->crossquarterCheckBox,    "ArchaeoLines.flagShowCrossquarters");
×
79
        connectBoolProperty(ui->majorStandstillCheckBox, "ArchaeoLines.flagShowMajorStandstills");
×
80
        connectBoolProperty(ui->minorStandstillCheckBox, "ArchaeoLines.flagShowMinorStandstills");
×
81
        connectBoolProperty(ui->polarCirclesCheckBox,    "ArchaeoLines.flagShowPolarCircles");
×
82
        connectBoolProperty(ui->zenithPassageCheckBox,   "ArchaeoLines.flagShowZenithPassage");
×
83
        connectBoolProperty(ui->nadirPassageCheckBox,    "ArchaeoLines.flagShowNadirPassage");
×
84
        connectBoolProperty(ui->selectedObjectCheckBox,  "ArchaeoLines.flagShowSelectedObject");
×
85
        connectBoolProperty(ui->selectedObjectAzimuthCheckBox,    "ArchaeoLines.flagShowSelectedObjectAzimuth");
×
86
        connectBoolProperty(ui->selectedObjectHourAngleCheckBox,  "ArchaeoLines.flagShowSelectedObjectHourAngle");
×
87
        connectBoolProperty(ui->currentSunCheckBox,      "ArchaeoLines.flagShowCurrentSun");
×
88
        connectBoolProperty(ui->currentMoonCheckBox,     "ArchaeoLines.flagShowCurrentMoon");
×
89

90
        connectIntProperty(ui->currentPlanetComboBox, "ArchaeoLines.enumShowCurrentPlanet");
×
91

92
        ui->geographicLocation1LatitudeDoubleSpinBox->setPrefixType(AngleSpinBox::Latitude);
×
93
        ui->geographicLocation1LatitudeDoubleSpinBox->setMinimum(-90., true);
×
94
        ui->geographicLocation1LatitudeDoubleSpinBox->setMaximum(90., true);
×
95
        ui->geographicLocation1LatitudeDoubleSpinBox->setWrapping(false);
×
96
        ui->geographicLocation2LatitudeDoubleSpinBox->setPrefixType(AngleSpinBox::Latitude);
×
97
        ui->geographicLocation2LatitudeDoubleSpinBox->setMinimum(-90., true);
×
98
        ui->geographicLocation2LatitudeDoubleSpinBox->setMaximum(90., true);
×
99
        ui->geographicLocation2LatitudeDoubleSpinBox->setWrapping(false);
×
100
        ui->geographicLocation1LongitudeDoubleSpinBox->setPrefixType(AngleSpinBox::Longitude);
×
101
        ui->geographicLocation1LongitudeDoubleSpinBox->setMinimum(-180., true);
×
102
        ui->geographicLocation1LongitudeDoubleSpinBox->setMaximum(180., true);
×
103
        ui->geographicLocation1LongitudeDoubleSpinBox->setWrapping(true);
×
104
        ui->geographicLocation2LongitudeDoubleSpinBox->setPrefixType(AngleSpinBox::Longitude);
×
105
        ui->geographicLocation2LongitudeDoubleSpinBox->setMinimum(-180., true);
×
106
        ui->geographicLocation2LongitudeDoubleSpinBox->setMaximum(180., true);
×
107
        ui->geographicLocation2LongitudeDoubleSpinBox->setWrapping(true);
×
108
        ui->customAzimuth1DoubleSpinBox->setPrefixType(AngleSpinBox::Normal);
×
109
        ui->customAzimuth1DoubleSpinBox->setMinimum(0., true);
×
110
        ui->customAzimuth1DoubleSpinBox->setMaximum(360., true);
×
111
        ui->customAzimuth1DoubleSpinBox->setWrapping(true);
×
112
        ui->customAzimuth2DoubleSpinBox->setPrefixType(AngleSpinBox::Normal);
×
113
        ui->customAzimuth2DoubleSpinBox->setMinimum(0., true);
×
114
        ui->customAzimuth2DoubleSpinBox->setMaximum(360., true);
×
115
        ui->customAzimuth2DoubleSpinBox->setWrapping(true);
×
116
        ui->customAltitude1DoubleSpinBox->setPrefixType(AngleSpinBox::Normal);
×
117
        ui->customAltitude1DoubleSpinBox->setMinimum(-90., true);
×
118
        ui->customAltitude1DoubleSpinBox->setMaximum( 90., true);
×
119
        ui->customAltitude1DoubleSpinBox->setWrapping(false);
×
120
        ui->customAltitude2DoubleSpinBox->setPrefixType(AngleSpinBox::Normal);
×
121
        ui->customAltitude2DoubleSpinBox->setMinimum(-90., true);
×
122
        ui->customAltitude2DoubleSpinBox->setMaximum( 90., true);
×
123
        ui->customAltitude2DoubleSpinBox->setWrapping(false);
×
124
        ui->customDeclination1DoubleSpinBox->setPrefixType(AngleSpinBox::NormalPlus);
×
125
        ui->customDeclination1DoubleSpinBox->setMinimum(-90., true);
×
126
        ui->customDeclination1DoubleSpinBox->setMaximum(90., true);
×
127
        ui->customDeclination1DoubleSpinBox->setWrapping(false);
×
128
        ui->customDeclination2DoubleSpinBox->setPrefixType(AngleSpinBox::NormalPlus);
×
129
        ui->customDeclination2DoubleSpinBox->setMinimum(-90., true);
×
130
        ui->customDeclination2DoubleSpinBox->setMaximum(90., true);
×
131
        ui->customDeclination2DoubleSpinBox->setWrapping(false);
×
132

133
        // TBD: Store a decimal/DMS selection property separately?
134
        setDisplayFormatForSpins(StelApp::getInstance().getFlagShowDecimalDegrees());
×
135
        connect(&StelApp::getInstance(), SIGNAL(flagShowDecimalDegreesChanged(bool)), this, SLOT(setDisplayFormatForSpins(bool)));
×
136

137
        connect(ui->geographicLocation1PickPushButton, &QPushButton::clicked, this, [=](){locationsDialog->setVisible(true); locationsDialog->setModalContext(1);});
×
138
        connect(ui->geographicLocation2PickPushButton, &QPushButton::clicked, this, [=](){locationsDialog->setVisible(true); locationsDialog->setModalContext(2);});
×
139

140
        connectBoolProperty(ui->geographicLocation1CheckBox,                 "ArchaeoLines.flagShowGeographicLocation1");
×
141
        connectBoolProperty(ui->geographicLocation2CheckBox,                 "ArchaeoLines.flagShowGeographicLocation2");
×
142
        connectDoubleProperty(ui->geographicLocation1LongitudeDoubleSpinBox, "ArchaeoLines.geographicLocation1Longitude");
×
143
        connectDoubleProperty(ui->geographicLocation1LatitudeDoubleSpinBox,  "ArchaeoLines.geographicLocation1Latitude");
×
144
        connectDoubleProperty(ui->geographicLocation2LongitudeDoubleSpinBox, "ArchaeoLines.geographicLocation2Longitude");
×
145
        connectDoubleProperty(ui->geographicLocation2LatitudeDoubleSpinBox,  "ArchaeoLines.geographicLocation2Latitude");
×
146
        connectStringProperty(ui->geographicLocation1LineEdit,               "ArchaeoLines.geographicLocation1Label");
×
147
        connectStringProperty(ui->geographicLocation2LineEdit,               "ArchaeoLines.geographicLocation2Label");
×
148

149
        connectBoolProperty(ui->customAzimuth1CheckBox,        "ArchaeoLines.flagShowCustomAzimuth1");
×
150
        connectBoolProperty(ui->customAzimuth2CheckBox,        "ArchaeoLines.flagShowCustomAzimuth2");
×
151
        connectDoubleProperty(ui->customAzimuth1DoubleSpinBox, "ArchaeoLines.customAzimuth1");
×
152
        connectDoubleProperty(ui->customAzimuth2DoubleSpinBox, "ArchaeoLines.customAzimuth2");
×
153
        connectStringProperty(ui->customAzimuth1LineEdit,      "ArchaeoLines.customAzimuth1Label");
×
154
        connectStringProperty(ui->customAzimuth2LineEdit,      "ArchaeoLines.customAzimuth2Label");
×
155

156
        connectBoolProperty(ui->customAltitude1CheckBox,        "ArchaeoLines.flagShowCustomAltitude1");
×
157
        connectBoolProperty(ui->customAltitude2CheckBox,        "ArchaeoLines.flagShowCustomAltitude2");
×
158
        connectDoubleProperty(ui->customAltitude1DoubleSpinBox, "ArchaeoLines.customAltitude1");
×
159
        connectDoubleProperty(ui->customAltitude2DoubleSpinBox, "ArchaeoLines.customAltitude2");
×
160
        connectStringProperty(ui->customAltitude1LineEdit,      "ArchaeoLines.customAltitude1Label");
×
161
        connectStringProperty(ui->customAltitude2LineEdit,      "ArchaeoLines.customAltitude2Label");
×
162

163
        connectBoolProperty(ui->customDeclination1CheckBox,        "ArchaeoLines.flagShowCustomDeclination1");
×
164
        connectBoolProperty(ui->customDeclination2CheckBox,        "ArchaeoLines.flagShowCustomDeclination2");
×
165
        connectDoubleProperty(ui->customDeclination1DoubleSpinBox, "ArchaeoLines.customDeclination1");
×
166
        connectDoubleProperty(ui->customDeclination2DoubleSpinBox, "ArchaeoLines.customDeclination2");
×
167
        connectStringProperty(ui->customDeclination1LineEdit,      "ArchaeoLines.customDeclination1Label");
×
168
        connectStringProperty(ui->customDeclination2LineEdit,      "ArchaeoLines.customDeclination2Label");
×
169

170
        connectColorButton(ui->equinoxColorToolButton,                 "ArchaeoLines.equinoxColor",                 "ArchaeoLines/color_equinox");
×
171
        connectColorButton(ui->solsticesColorToolButton,               "ArchaeoLines.solsticesColor",               "ArchaeoLines/color_solstices");
×
172
        connectColorButton(ui->crossquarterColorToolButton,            "ArchaeoLines.crossquartersColor",           "ArchaeoLines/color_crossquarters");
×
173
        connectColorButton(ui->majorStandstillColorToolButton,         "ArchaeoLines.majorStandstillColor",         "ArchaeoLines/color_major_standstill");
×
174
        connectColorButton(ui->minorStandstillColorToolButton,         "ArchaeoLines.minorStandstillColor",         "ArchaeoLines/color_minor_standstill");
×
175
        connectColorButton(ui->polarCirclesColorToolButton,            "ArchaeoLines.polarCirclesColor",            "ArchaeoLines/color_polar_circles");
×
176
        connectColorButton(ui->zenithPassageColorToolButton,           "ArchaeoLines.zenithPassageColor",           "ArchaeoLines/color_zenith_passage");
×
177
        connectColorButton(ui->nadirPassageColorToolButton,            "ArchaeoLines.nadirPassageColor",            "ArchaeoLines/color_nadir_passage");
×
178
        connectColorButton(ui->selectedObjectColorToolButton,          "ArchaeoLines.selectedObjectColor",          "ArchaeoLines/color_selected_object");
×
179
        connectColorButton(ui->selectedObjectAzimuthColorToolButton,   "ArchaeoLines.selectedObjectAzimuthColor",   "ArchaeoLines/color_selected_object_azimuth");
×
180
        connectColorButton(ui->selectedObjectHourAngleColorToolButton, "ArchaeoLines.selectedObjectHourAngleColor", "ArchaeoLines/color_selected_object_hour_angle");
×
181
        connectColorButton(ui->currentSunColorToolButton,              "ArchaeoLines.currentSunColor",              "ArchaeoLines/color_current_sun");
×
182
        connectColorButton(ui->currentMoonColorToolButton,             "ArchaeoLines.currentMoonColor",             "ArchaeoLines/color_current_moon");
×
183
        connectColorButton(ui->currentPlanetColorToolButton,           "ArchaeoLines.currentPlanetColor",           "ArchaeoLines/color_current_planet");
×
184
        connectColorButton(ui->geographicLocation1ColorToolButton,     "ArchaeoLines.geographicLocation1Color",     "ArchaeoLines/color_geographic_location_1");
×
185
        connectColorButton(ui->geographicLocation2ColorToolButton,     "ArchaeoLines.geographicLocation2Color",     "ArchaeoLines/color_geographic_location_2");
×
186
        connectColorButton(ui->customAzimuth1ColorToolButton,          "ArchaeoLines.customAzimuth1Color",          "ArchaeoLines/color_custom_azimuth_1");
×
187
        connectColorButton(ui->customAzimuth2ColorToolButton,          "ArchaeoLines.customAzimuth2Color",          "ArchaeoLines/color_custom_azimuth_2");
×
188
        connectColorButton(ui->customAltitude1ColorToolButton,         "ArchaeoLines.customAltitude1Color",         "ArchaeoLines/color_custom_altitude_1");
×
189
        connectColorButton(ui->customAltitude2ColorToolButton,         "ArchaeoLines.customAltitude2Color",         "ArchaeoLines/color_custom_altitude_2");
×
190
        connectColorButton(ui->customDeclination1ColorToolButton,      "ArchaeoLines.customDeclination1Color",      "ArchaeoLines/color_custom_declination_1");
×
191
        connectColorButton(ui->customDeclination2ColorToolButton,      "ArchaeoLines.customDeclination2Color",      "ArchaeoLines/color_custom_declination_2");
×
192

193
        connect(ui->customAzimuth1PushButton,     SIGNAL(clicked()), this, SLOT(assignCustomAzimuth1FromSelection()));
×
194
        connect(ui->customAzimuth2PushButton,     SIGNAL(clicked()), this, SLOT(assignCustomAzimuth2FromSelection()));
×
195
        connect(ui->customAltitude1PushButton,    SIGNAL(clicked()), this, SLOT(assignCustomAltitude1FromSelection()));
×
196
        connect(ui->customAltitude2PushButton,    SIGNAL(clicked()), this, SLOT(assignCustomAltitude2FromSelection()));
×
197
        connect(ui->customDeclination1PushButton, SIGNAL(clicked()), this, SLOT(assignCustomDeclination1FromSelection()));
×
198
        connect(ui->customDeclination2PushButton, SIGNAL(clicked()), this, SLOT(assignCustomDeclination2FromSelection()));
×
199

200
        connect(ui->restoreDefaultsButton,   SIGNAL(clicked()), this, SLOT(resetArchaeoLinesSettings()));
×
201
        connect(ui->restoreDefaultsButtonCL, SIGNAL(clicked()), this, SLOT(resetArchaeoLinesSettings()));
×
202

203
        setAboutHtml();
×
204
}
×
205

206
void ArchaeoLinesDialog::setAboutHtml(void)
×
207
{
208
        // Regexp to replace {text} with an HTML link.
209
        QRegularExpression a_rx("[{]([^{]*)[}]");
×
210

211
        QString html = "<html><head></head><body>";
×
212
        html += "<h2>" + q_("ArchaeoLines Plug-in") + "</h2><table width=\"90%\">";
×
213
        html += "<tr width=\"30%\"><td><strong>" + q_("Version") + ":</strong></td><td>" + ARCHAEOLINES_PLUGIN_VERSION + "</td></tr>";
×
214
        html += "<tr><td><strong>" + q_("License") + ":</strong></td><td>" + ARCHAEOLINES_PLUGIN_LICENSE + "</td></tr>";
×
215
        html += "<tr><td><strong>" + q_("Author") + ":</strong></td><td>Georg Zotti</td></tr>";
×
216
        //html += "<tr><td><strong>" + q_("Contributors") + ":</strong></td><td> List with br separators </td></tr>";
217
        html += "</table>";
×
218

219
        html += "<p>" + q_("The ArchaeoLines plugin displays any combination of declination arcs most relevant to archaeo- or ethnoastronomical studies.") + "</p>";
×
220
        html += "<ul><li>" + q_("Declinations of equinoxes (i.e. equator) and the solstices") + "</li>";
×
221
        html += "<li>" + q_("Declinations of the crossquarter days (days right between solstices and equinoxes)") + "</li>";
×
222
        html += "<li>" + q_("Declinations of the Major Lunar Standstills") + "</li>";
×
223
        html += "<li>" + q_("Declinations of the Minor Lunar Standstills") + "</li>";
×
224
        html += "<li>" + q_("Declination of the Polar circles") + "</li>";
×
225
        html += "<li>" + q_("Declination of the Zenith passage") + "</li>";
×
226
        html += "<li>" + q_("Declination of the Nadir passage") + "</li>";
×
227
        html += "<li>" + q_("Declination of the currently selected object") + "</li>";
×
228
        html += "<li>" + q_("Azimuth of the currently selected object") + "</li>";
×
229
        html += "<li>" + q_("Hour Angle of the currently selected object") + "</li>";
×
230
        html += "<li>" + q_("Current declination of the sun") + "</li>";
×
231
        html += "<li>" + q_("Current declination of the moon") + "</li>";
×
232
        html += "<li>" + q_("Current declination of a naked-eye planet") + "</li></ul>";
×
233
        html += "<p>" + q_("The lunar lines include horizon parallax effects. "
×
234
                           "There are two lines each drawn, for maximum and minimum distance of the moon. "
235
                           "Note that declination of the moon at the major standstill can exceed the "
236
                           "indicated limits if it is high in the sky due to parallax effects.") + "</p>";        
×
237
        html += "<p>" + q_("Some religions, most notably Islam, adhere to a practice of observing a prayer direction towards a particular location. "
×
238
                           "Azimuth lines for two locations can be shown. Default locations are Mecca (Kaaba) and Jerusalem, "
239
                           "but you can select locations from Stellarium's locations list or enter arbitrary locations. "
240
                           "The directions are computed based on spherical trigonometry on a spherical Earth.") + "</p>";
×
241
        html += "<p>" + q_("In addition, up to two lines each with arbitrary azimuth, altitude and declination lines with custom label can be shown.") + "</p>";
×
242

243
        html += "<h3>" + q_("Publications") + "</h3>";
×
244
        html += "<p>"  + q_("If you use this plugin in your publications, please cite:") + "</p>";
×
245
        html += "<ul>";
×
246
        html += "<li>" + QString("{Georg Zotti: Open Source Virtual Archaeoastronomy}. Mediterranean Archaeology and Archaeometry, Vol. 16, No 4 (2016), pp. 17-24.")
×
247
                        .toHtmlEscaped().replace(a_rx, "<a href=\"http://maajournal.com/Issues/2016/Vol16-4/Full3.pdf\">\\1</a>") + "</li>";
×
248
        html += "<li>" + QString("{Georg Zotti, Susanne M. Hoffmann, Alexander Wolf, Fabien Chéreau, Guillaume Chéreau: The simulated sky: Stellarium for cultural astronomy research.} Journal for Skyscape Archaeology, 6.2, 2021, pp. 221-258.")
×
249
                             .toHtmlEscaped().replace(a_rx, "<a href=\"https://doi.org/10.1558/jsa.17822\">\\1</a>") + "</li>";
×
250
        html += "</ul>";
×
251

252
        html += StelApp::getInstance().getModuleMgr().getStandardSupportLinksInfo("ArchaeoLines plugin");
×
253

254
        html += "</body></html>";
×
255

256
        StelGui* gui = dynamic_cast<StelGui*>(StelApp::getInstance().getGui());
×
257
        if(gui!=Q_NULLPTR)
×
258
        {
259
                QString htmlStyleSheet(gui->getStelStyle().htmlStyleSheet);
×
260
                ui->aboutTextBrowser->document()->setDefaultStyleSheet(htmlStyleSheet);
×
261
        }
×
262

263
        ui->aboutTextBrowser->setHtml(html);
×
264
}
×
265

266

267
void ArchaeoLinesDialog::resetArchaeoLinesSettings()
×
268
{
269
        if (askConfirmation())
×
270
        {
271
                qDebug() << "[ArchaeoLines] restore defaults...";
×
272
                al->restoreDefaultSettings();
×
273
                ui->geographicLocation1LineEdit->setText(al->getLineLabel(ArchaeoLine::GeographicLocation1));
×
274
                ui->geographicLocation2LineEdit->setText(al->getLineLabel(ArchaeoLine::GeographicLocation2));
×
275
                ui->customAzimuth1LineEdit->setText(al->getLineLabel(ArchaeoLine::CustomAzimuth1));
×
276
                ui->customAzimuth2LineEdit->setText(al->getLineLabel(ArchaeoLine::CustomAzimuth2));
×
277
                ui->customAltitude1LineEdit->setText(al->getLineLabel(ArchaeoLine::CustomAltitude1));
×
278
                ui->customAltitude2LineEdit->setText(al->getLineLabel(ArchaeoLine::CustomAltitude2));
×
279
                ui->customDeclination1LineEdit->setText(al->getLineLabel(ArchaeoLine::CustomDeclination1));
×
280
                ui->customDeclination2LineEdit->setText(al->getLineLabel(ArchaeoLine::CustomDeclination2));
×
281
        }
282
        else
283
                qDebug() << "[ArchaeoLines] restore defaults is canceled...";
×
284
}
×
285

286
void ArchaeoLinesDialog::setDisplayFormatForSpins(bool flagDecimalDegrees)
×
287
{
288
        int places = 2;
×
289
        AngleSpinBox::DisplayFormat format = AngleSpinBox::DMSSymbols;
×
290
        if (flagDecimalDegrees)
×
291
        {
292
                places = 6;
×
293
                format = AngleSpinBox::DecimalDeg;
×
294
        }
295
        const QList<AngleSpinBox *> list={ui->geographicLocation1LatitudeDoubleSpinBox,  ui->geographicLocation2LatitudeDoubleSpinBox,
×
296
                                          ui->geographicLocation1LongitudeDoubleSpinBox, ui->geographicLocation2LongitudeDoubleSpinBox,
×
297
                                          ui->customAzimuth1DoubleSpinBox,               ui->customAzimuth2DoubleSpinBox,
×
298
                                          ui->customAltitude1DoubleSpinBox,              ui->customAltitude2DoubleSpinBox,
×
299
                                          ui->customDeclination1DoubleSpinBox,           ui->customDeclination2DoubleSpinBox};
×
300
        QList<AngleSpinBox *>::const_iterator i;
×
301
        for (i=list.constBegin(); i!=list.constEnd(); ++i)
×
302
        {
303
                (*i)->setDecimals(places);
×
304
                (*i)->setDisplayFormat(format);
×
305
        }
306
}
×
307

308
void ArchaeoLinesDialog::assignCustomAzimuth1FromSelection()
×
309
{
310
        StelObjectMgr *mgr=GETSTELMODULE(StelObjectMgr);
×
311
        if (!mgr->getWasSelected())
×
312
                return;
×
313

314
        StelCore *core=StelApp::getInstance().getCore();
×
315
        StelObjectP sel=mgr->getSelectedObject().at(0);
×
316
        Vec3d altAz=sel->getAltAzPosAuto(core);
×
317
        double az, alt;
318
        StelUtils::rectToSphe(&az, &alt, altAz);
×
319
        az=M_PI-az;
×
320
        al->setCustomAzimuth1(az*M_180_PI);
×
321
        al->setCustomAzimuth1Label(sel->getNameI18n());
×
322
        al->showCustomAzimuth1(true);
×
323
}
×
324
void ArchaeoLinesDialog::assignCustomAzimuth2FromSelection()
×
325
{
326
        StelObjectMgr *mgr=GETSTELMODULE(StelObjectMgr);
×
327
        if (!mgr->getWasSelected())
×
328
                return;
×
329

330
        StelCore *core=StelApp::getInstance().getCore();
×
331
        StelObjectP sel=mgr->getSelectedObject().at(0);
×
332
        Vec3d altAz=sel->getAltAzPosAuto(core);
×
333
        double az, alt;
334
        StelUtils::rectToSphe(&az, &alt, altAz);
×
335
        az=M_PI-az;
×
336
        al->setCustomAzimuth2(az*M_180_PI);
×
337
        al->setCustomAzimuth2Label(sel->getNameI18n());
×
338
        al->showCustomAzimuth2(true);
×
339
}
×
340
void ArchaeoLinesDialog::assignCustomAltitude1FromSelection()
×
341
{
342
        StelObjectMgr *mgr=GETSTELMODULE(StelObjectMgr);
×
343
        if (!mgr->getWasSelected())
×
344
                return;
×
345

346
        StelCore *core=StelApp::getInstance().getCore();
×
347
        StelObjectP sel=mgr->getSelectedObject().at(0);
×
348
        Vec3d altAz=sel->getAltAzPosAuto(core);
×
349
        double az, alt;
350
        StelUtils::rectToSphe(&az, &alt, altAz);
×
351
        al->setCustomAltitude1(alt*M_180_PI);
×
352
        al->setCustomAltitude1Label(sel->getNameI18n());
×
353
        al->showCustomAltitude1(true);
×
354
}
×
355
void ArchaeoLinesDialog::assignCustomAltitude2FromSelection()
×
356
{
357
        StelObjectMgr *mgr=GETSTELMODULE(StelObjectMgr);
×
358
        if (!mgr->getWasSelected())
×
359
                return;
×
360

361
        StelCore *core=StelApp::getInstance().getCore();
×
362
        StelObjectP sel=mgr->getSelectedObject().at(0);
×
363
        Vec3d altAz=sel->getAltAzPosAuto(core);
×
364
        double az, alt;
365
        StelUtils::rectToSphe(&az, &alt, altAz);
×
366
        al->setCustomAltitude2(alt*M_180_PI);
×
367
        al->setCustomAltitude2Label(sel->getNameI18n());
×
368
        al->showCustomAltitude2(true);
×
369
}
×
370
void ArchaeoLinesDialog::assignCustomDeclination1FromSelection()
×
371
{
372
        StelObjectMgr *mgr=GETSTELMODULE(StelObjectMgr);
×
373
        if (!mgr->getWasSelected())
×
374
                return;
×
375

376
        StelCore *core=StelApp::getInstance().getCore();
×
377
        StelObjectP sel=mgr->getSelectedObject().at(0);
×
378
        Vec3d eq=sel->getEquinoxEquatorialPos(core);
×
379
        double ra, dec;
380
        StelUtils::rectToSphe(&ra, &dec, eq);
×
381
        al->setCustomDeclination1(dec*M_180_PI);
×
382
        al->setCustomDeclination1Label(sel->getNameI18n());
×
383
        al->showCustomDeclination1(true);
×
384
}
×
385
void ArchaeoLinesDialog::assignCustomDeclination2FromSelection()
×
386
{
387
        StelObjectMgr *mgr=GETSTELMODULE(StelObjectMgr);
×
388
        if (!mgr->getWasSelected())
×
389
                return;
×
390

391
        StelCore *core=StelApp::getInstance().getCore();
×
392
        StelObjectP sel=mgr->getSelectedObject().at(0);
×
393
        Vec3d eq=sel->getEquinoxEquatorialPos(core);
×
394
        double ra, dec;
395
        StelUtils::rectToSphe(&ra, &dec, eq);
×
396
        al->setCustomDeclination2(dec*M_180_PI);
×
397
        al->setCustomDeclination2Label(sel->getNameI18n());
×
398
        al->showCustomDeclination2(true);
×
399
}
×
400

401

402
// Notes/Observations by GZ in 2015-04 with Qt5.4.0/MinGW on Windows7SP1.
403
// (1) There are issues in calling the QColorPanel that seem to be related to QTBUG-35302,
404
// although it was reportedly fixed at least for X11 in Qt5.3.0.
405
// On Win7 with NVidia Geforce and Win8.1 on Radeon, the color panel hides behind the Stellarium main window if set to fullscreen.
406
// On Win7 with Intel HD4600, and various Linuces, no problem is seen, the color panel is right on top of the fullscreen main window.
407
// It seems not to depend on MinGW vs. MSVC builds, but on details in GPU drivers and Qt.
408

409
// (2) Likely another bug in QColorDialog: If you choose one of the preconfigured colors (left half),
410
// on next change of that color it will have toggled one high bit of one component.
411
// On next change, it will be toggled again.
412
// If you configure a color from the right color field, all is OK (unless you "hit" a preconfigured color in the right field).
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc