Kstars
7 #include "kspopupmenu.h"
9 #include "config-kstars.h"
12 #include "kstarsdata.h"
14 #include "skyobjects/skyobject.h"
15 #include "skyobjects/starobject.h"
16 #include "skyobjects/trailobject.h"
17 #include "skyobjects/catalogobject.h"
18 #include "skyobjects/ksmoon.h"
19 #include "skyobjects/satellite.h"
20 #include "skyobjects/supernova.h"
21 #include "skycomponents/constellationboundarylines.h"
22 #include "skycomponents/flagcomponent.h"
23 #include "skycomponents/skymapcomposite.h"
24 #include "skyobjectuserdata.h"
25 #include "tools/whatsinteresting/wiview.h"
26 #include "catalogsdb.h"
27 #include "observinglist.h"
30 #include "indi/indilistener.h"
31 #include "indi/guimanager.h"
32 #include "indi/driverinfo.h"
33 #include "indi/indistd.h"
34 #include "indi/indidevice.h"
35 #include "indi/indigroup.h"
36 #include "indi/indiproperty.h"
37 #include "indi/indielement.h"
38 #include "indi/indimount.h"
39 #include <basedevice.h>
42 #include <KLocalizedString>
44 #include <QWidgetAction>
51 if (m > -30 && m < 90)
52 return QString(
"%1<sup>m</sup>").
arg(m, 0,
'f', 2);
87 return isRaise ?
i18n(
"Rise time: %1", time) :
88 i18nc(
"the time at which an object falls below the horizon",
89 "Set time: %1", time);
92 return isRaise ?
i18n(
"No rise time: Circumpolar") :
93 i18n(
"No set time: Circumpolar");
95 return isRaise ?
i18n(
"No rise time: Never rises") :
96 i18n(
"No set time: Never rises");
106 return i18n(
"Transit time: %1",
114 :
QMenu(
KStars::Instance()), m_CurrentFlagIdx(-1), m_EditActionMapping(nullptr),
115 m_DeleteActionMapping(nullptr)
121 if (m_EditActionMapping)
123 delete m_EditActionMapping;
126 if (m_DeleteActionMapping)
128 delete m_DeleteActionMapping;
135 SkyObject o(SkyObject::TYPE_UNKNOWN, nullObj->
ra(), nullObj->
dec());
145 void KSPopupMenu::slotEditFlag()
147 if (m_CurrentFlagIdx != -1)
153 void KSPopupMenu::slotDeleteFlag()
155 if (m_CurrentFlagIdx != -1)
161 void KSPopupMenu::slotEditFlag(
QAction *action)
163 int idx = m_EditActionMapping->
value(action, -1);
176 void KSPopupMenu::slotDeleteFlag(
QAction *action)
178 int idx = m_DeleteActionMapping->
value(action, -1);
196 if (star->
name() !=
"star")
212 initPopupMenu(star, name,
i18n(
"star"),
215 if (star->
name() !=
"star")
230 QString name = getObjectName(obj);
234 .
arg(magToStr(obj->
mag()))
240 float b = obj->
b() > 0 ? obj->
b() : obj->
a();
244 initPopupMenu(obj, name, typeName, info);
256 void KSPopupMenu::createMoonMenu(
KSMoon *moon)
266 QString velocity, altitude, range;
273 addFancyLabel(satellite->
name());
274 addFancyLabel(satellite->
id());
275 addFancyLabel(
i18n(
"satellite"));
276 addFancyLabel(KStarsData::Instance()
278 ->constellationBoundary()
279 ->constellationName(satellite));
283 addFancyLabel(
i18n(
"Velocity: %1 km/s", velocity), -2);
284 addFancyLabel(
i18n(
"Altitude: %1 km", altitude), -2);
285 addFancyLabel(
i18n(
"Range: %1 km", range), -2);
295 i18n(
"Angular Distance To... ["), ks->
map(),
296 SLOT(slotBeginAngularDistance()));
298 i18n(
"Starhop from here to... "), ks->
map(),
299 SLOT(slotBeginStarHop()));
301 SLOT(slotCopyTLE()));
306 SLOT(slotRemoveObjectLabel()));
309 SLOT(slotAddObjectLabel()));
318 float mag = supernova->
mag();
330 initPopupMenu(supernova, name,
i18n(
"supernova"), info);
334 QString info,
bool showDetails,
bool showObsList,
338 SkyMap *map = SkyMap::Instance();
341 bool showLabel = (name !=
i18n(
"star") && !name.isEmpty());
345 Name =
i18n(
"Empty sky");
350 addFancyLabel(KStarsData::Instance()
352 ->constellationBoundary()
353 ->constellationName(obj));
358 addFancyLabel(riseSetTimeLabel(o,
true), -2);
359 addFancyLabel(riseSetTimeLabel(o,
false), -2);
360 addFancyLabel(transitTimeLabel(o), -2);
365 if (map->isInObjectPointingMode() && obj->
type() != 21)
367 addAction(
i18n(
"Select this object"), map, SLOT(slotObjectSelected()));
377 initFlagActions(obj);
383 i18n(
"Angular Distance To... ["), map,
384 SLOT(slotBeginAngularDistance()));
386 i18n(
"Starhop from here to... "), map, SLOT(slotBeginStarHop()));
391 i18nc(
"Show Detailed Information Dialog",
"Details"), map,
395 SLOT(slotCopyCoordinates()));
400 if (
map->isObjectLabeled(obj))
403 SLOT(slotRemoveObjectLabel()));
408 SLOT(slotAddObjectLabel()));
414 if (data->observingList()->contains(obj))
416 i18n(
"Remove From Observing WishList"), data->observingList(),
417 SLOT(slotRemoveObject()));
420 data->observingList(), SLOT(slotAddObject()));
429 addAction(
i18n(
"Add Trail"), map, SLOT(slotAddPlanetTrail()));
433 SLOT(slotEyepieceView()));
441 addAction(
i18n(
"View in XPlanet"), map, SLOT(slotStartXplanetViewer()));
447 this, SLOT(slotViewInWI()));
450 void KSPopupMenu::initFlagActions(
SkyObject *obj)
460 SLOT(slotAddFlag()));
463 else if (flags.
size() == 1)
467 SLOT(slotEditFlag()));
469 SLOT(slotDeleteFlag()));
471 m_CurrentFlagIdx = flags.
first();
483 SLOT(slotEditFlag(
QAction *)));
485 SLOT(slotDeleteFlag(
QAction *)));
487 if (m_EditActionMapping)
489 delete m_EditActionMapping;
492 if (m_DeleteActionMapping)
494 delete m_DeleteActionMapping;
500 foreach (
int idx, flags)
506 if (flagLabel.
size() > 35)
508 flagLabel = flagLabel.
left(35);
515 m_EditActionMapping->
insert(editAction, idx);
520 m_DeleteActionMapping->
insert(deleteAction, idx);
532 const auto &user_data = KStarsData::Instance()->
getUserData(obj->
name());
533 const auto &image_list = user_data.images();
534 const auto &website_list = user_data.websites();
535 for (
const auto &res : std::list <
536 std::tuple<QString, SkyObjectUserdata::LinkList, SkyObjectUserdata::Type >>
538 {
i18n(
"Image Resources"), image_list, SkyObjectUserdata::Type::image },
539 {
i18n(
"Web Links"), website_list, SkyObjectUserdata::Type::website }
542 const auto &
title = std::get<0>(res);
543 const auto &list = std::get<1>(res);
544 const auto &type = std::get<2>(res);
550 for (
const auto &entry : list)
554 if (type == SkyObjectUserdata::Type::website)
556 i18nc(
"Image/info menu item (should be translated)",
558 ks->
map(), SLOT(slotInfo()));
561 i18nc(
"Image/info menu item (should be translated)",
563 ks->
map(), SLOT(slotImage()));
578 if (object->getCatalog().mut &&
579 manager.get_object(object->getObjectId()).first)
582 SLOT(slotRemoveCustomObject()));
599 void KSPopupMenu::addINDI()
602 if (INDIListener::Instance()->
size() == 0)
605 for (
auto &oneDevice : INDIListener::devices())
607 if (!(oneDevice->getDriverInterface() & INDI::BaseDevice::TELESCOPE_INTERFACE))
611 auto mount = oneDevice->getMount();
615 QMenu *mountMenu =
new QMenu(mount->getDeviceName());
619 if (mount->canGoto() || mount->canSync())
621 if (mount->canGoto())
624 i18nc(
"Move mount to target",
"Goto"));
627 [mount] { mount->Slew(SkyMap::Instance()->clickedPoint()); });
629 if (
mount->canSync())
633 i18nc(
"Synchronize mount to target",
"Sync"));
636 [mount] {
mount->Sync(SkyMap::Instance()->clickedPoint()); });
642 if (
mount->canAbort())
651 if (
mount->canPark())
667 if (clickedObject && clickedObject->
type() == SkyObject::SATELLITE &&
668 (
mount->canTrackSatellite()))
677 [mount, sat, currentTime, currentTimePlusOne]
679 mount->setSatelliteTLEandTrack(sat->
tle(), currentTime,
685 if (
mount->canCustomPark())
688 i18n(
"Goto && Set As Parking Position"));
691 [mount] {
mount->setCustomParking(); });
697 [mount] {
mount->find(); });
702 void KSPopupMenu::addFancyLabel(
const QString &name,
int deltaFontSize)
708 if (deltaFontSize != 0)
711 font.setPointSize(
font.pointSize() + deltaFontSize);
719 void KSPopupMenu::slotViewInWI()
Extension of QDateTime for KStars KStarsDateTime can represent the date/time as a Julian Day,...
const T value(const Key &key) const const
void setAlt(dms alt)
Sets Alt, the Altitude.
QPixmap fromImage(const QImage &image, Qt::ImageConversionFlags flags)
QString number(int n, int base)
QString translatedLongName() const
QString name(void) const override
If star is unnamed return "star" otherwise return the name.
QImage image(int index)
Get image.
Stores dms coordinates for a point in the sky. for converting between coordinate systems.
QString phaseName() const
void slotToggleWIView()
action slot: toggle What's Interesting window
QIcon fromTheme(const QString &name)
virtual QString name(void) const
SkyObject * clickedObject() const
Retrieve the object nearest to a mouse click event.
QString translatedName() const
bool isObjectLabeled(SkyObject *o)
QTime addSecs(int s) const const
Manages the catalog database and provides an interface to provide an interface to query and modify th...
bool isValid() const const
float getRedShift() const
const SkyObjectUserdata::Data & getUserData(const QString &name)
Get a reference to the user data of an object with the name name.
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QString translatedName2() const
void slotEditFlag(int flagIdx)
Open Flag Manager window with selected flag focused and ready to edit.
Provides necessary information about the Moon. A subclass of SkyObject that provides information need...
KStarsDateTime addSecs(double s) const
QHash::iterator insert(const Key &key, const T &value)
virtual SkyObject * clone() const
Create copy of object.
static KStars * Instance()
KIOCORE_EXPORT SimpleJob * mount(bool ro, const QByteArray &fstype, const QString &dev, const QString &point, JobFlags flags=DefaultFlags)
QString i18n(const char *text, const TYPE &arg...)
QString & setNum(short n, int base)
const CachingDms & dec() const
subclass of SkyObject specialized for stars.
QTime riseSetTime(const KStarsDateTime &dt, const GeoLocation *geo, bool rst, bool exact=true) const
Determine the time at which the point will rise or set.
provides a SkyObject with an attachable Trail
bool isEmpty() const const
QString sptype(void) const
Returns entire spectral type string.
QString toString(qlonglong i) const const
bool isEmpty() const const
This is the main window for KStars. In addition to the GUI elements, the class contains the program c...
void slotDeleteFlag(int flagIdx)
Delete selected flag.
SkyMapComposite * skyComposite()
QString name
The catalog mame.
void setData(const QVariant &userData)
QString label(StandardShortcut id)
const KStarsDateTime & ut() const
static QString typeName(const int t)
void triggered(bool checked)
void setAz(dms az)
Sets Az, the Azimuth.
const CachingDms & ra() const
QString arg(qlonglong a, int fieldWidth, int base, QChar fillChar) const const
QList< int > getFlagsNearPix(SkyPoint *point, int pixelRadius)
Get list of flag indexes near specified SkyPoint with radius specified in pixels.
QString left(int n) const const
const double & Degrees() const
QString label(int index)
Get label.
Canvas widget for displaying the sky bitmap; also handles user interaction events.
const char * name(StandardAction id)
bool isSolarSystem() const
QString i18nc(const char *context, const char *text, const TYPE &arg...)
virtual QString longname(void) const
QTime transitTime(const KStarsDateTime &dt, const GeoLocation *geo) const
The same iteration technique described in riseSetTime() is used here.
KStarsData * data() const
QByteArray toLocal8Bit() const const
QFuture< void > map(Sequence &sequence, MapFunctor function)
A simple container object to hold the minimum information for a Deep Sky Object to be drawn on the sk...
Information about an object in the sky.
QString & append(QChar ch)
const CatalogsDB::Catalog getCatalog() const
Get information about the catalog that this objects stems from.
char * toString(const EngineQuery &query)
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Fri Jun 9 2023 04:02:22 by
doxygen 1.8.17 written
by
Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.