Stellarium 0.15.0
StelMainScriptAPI.hpp
1 /*
2  * Stellarium
3  * Copyright (C) 2009 Matthew Gates
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version 2
8  * of the License, or (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA.
18  */
19 
20 #ifndef _STELMAINSCRIPTAPI_HPP_
21 #define _STELMAINSCRIPTAPI_HPP_
22 
23 #include <QObject>
24 #include <QVariant>
25 #include <QStringList>
26 
27 class QScriptEngine;
28 
35 class StelMainScriptAPI : public QObject
36 {
37  Q_OBJECT
38  Q_PROPERTY(double JDay READ getJDay WRITE setJDay)
39  Q_PROPERTY(double timeSpeed READ getTimeRate WRITE setTimeRate)
40 
41 public:
42  StelMainScriptAPI(QObject *parent = 0);
44 
45 // These functions will be available in scripts
46 public slots:
49  void setJDay(double JD);
52  double getJDay() const;
53 
56  void setMJDay(double MJD);
59  double getMJDay() const;
60 
76  // TODO: This calls for implementing "sol" days (planets's solar days)!
87  // GZ JDfix for 0.14: I estimate 99.7% of users will want to set UT-based dates here. We could use an awkward name like dateIsUTbased=true to keep default value true.
88  //void setDate(const QString& dt, const QString& spec="utc", const bool& enableDeltaT=true);
89  void setDate(const QString& dateStr, const QString& spec="utc", const bool& dateIsDT=false);
90 
96  QString getDate(const QString& spec="utc");
97 
101  QString getDeltaT() const;
102 
105  QString getDeltaTAlgorithm() const;
106 
115  void setDeltaTAlgorithm(QString algorithmName);
116 
122  void setTimeRate(double ts);
125  double getTimeRate() const;
126 
130  bool isRealTime();
131 
133  void setRealTime();
134 
140  void selectObjectByName(const QString& name, bool pointer=false);
141 
155  QVariantMap getObjectPosition(const QString& name);
156 
191  QVariantMap getObjectInfo(const QString& name);
192 
226  QVariantMap getSelectedObjectInfo();
227 
237  void clear(const QString& state="natural");
238 
242  double getViewAltitudeAngle();
243 
247  double getViewAzimuthAngle();
248 
252  double getViewRaAngle();
253 
257  double getViewDecAngle();
258 
261  double getViewRaJ2000Angle();
262 
265  double getViewDecJ2000Angle();
266 
273  void moveToAltAzi(const QString& alt, const QString& azi, float duration=1.);
274 
281  void moveToRaDec(const QString& ra, const QString& dec, float duration=1.);
282 
288  void moveToRaDecJ2000(const QString& ra, const QString& dec, float duration=1.);
289 
307  void setObserverLocation(double longitude, double latitude, double altitude, double duration=1., const QString& name="", const QString& planet="");
308 
314  void setObserverLocation(const QString id, float duration=1.);
315 
317  QString getObserverLocation();
318 
331  QVariantMap getObserverLocationInfo();
332 
339  void screenshot(const QString& prefix, bool invert=false, const QString& dir="", const bool overwrite=false);
340 
344  void setGuiVisible(bool b);
345 
351  void setMinFps(float m);
352 
355  float getMinFps();
356 
359  void setMaxFps(float m);
360 
363  float getMaxFps();
364 
367  QString getMountMode();
368 
371  void setMountMode(const QString& mode);
372 
375  bool getNightMode();
376 
379  void setNightMode(bool b);
380 
384  QString getProjectionMode();
385 
397  void setProjectionMode(const QString& id);
398 
401  bool getDiskViewport();
402 
405  void setDiskViewport(bool b);
406 
409  void setSphericMirror(bool b);
410 
416  void setViewportOffset(const float x, const float y);
417 
422  void setViewportStretch(const float stretch);
423 
426  QStringList getAllSkyCultureIDs();
427 
431  QString getSkyCulture();
432 
435  void setSkyCulture(const QString& id);
436 
439  QString getSkyCultureName();
440 
443  QString getSkyCultureNameI18n();
444 
447  bool getFlagGravityLabels();
448 
451  void setFlagGravityLabels(bool b);
452 
471  void loadSkyImage(const QString& id, const QString& filename,
472  double ra0, double dec0,
473  double ra1, double dec1,
474  double ra2, double dec2,
475  double ra3, double dec3,
476  double minRes=2.5, double maxBright=14, bool visible=true);
477 
478 
482  void loadSkyImage(const QString& id, const QString& filename,
483  const QString& ra0, const QString& dec0,
484  const QString& ra1, const QString& dec1,
485  const QString& ra2, const QString& dec2,
486  const QString& ra3, const QString& dec3,
487  double minRes=2.5, double maxBright=14, bool visible=true);
488 
503  void loadSkyImage(const QString& id, const QString& filename,
504  double ra, double dec, double angSize, double rotation,
505  double minRes=2.5, double maxBright=14, bool visible=true);
506 
511  void loadSkyImage(const QString& id, const QString& filename,
512  const QString& ra, const QString& dec, double angSize, double rotation,
513  double minRes=2.5, double maxBright=14, bool visible=true);
514 
533  void loadSkyImageAltAz(const QString& id, const QString& filename,
534  double azi0, double alt0,
535  double azi1, double alt1,
536  double azi2, double alt2,
537  double azi3, double alt3,
538  double minRes=2.5, double maxBright=14, bool visible=true);
539 
554  void loadSkyImageAltAz(const QString& id, const QString& filename,
555  double alt, double azi, double angSize, double rotation,
556  double minRes=2.5, double maxBright=14, bool visible=true);
557 
560  void removeSkyImage(const QString& id);
561 
569  QVariantMap getScreenXYFromAltAzi(const QString& alt, const QString& azi);
570 
575  void loadSound(const QString& filename, const QString& id);
576 
579  void playSound(const QString& id);
580 
584  void pauseSound(const QString& id);
585 
590  void stopSound(const QString& id);
591 
595  void dropSound(const QString& id);
596 
600  qint64 getSoundPosition(const QString& id);
601 
605  qint64 getSoundDuration(const QString& id);
606 
607 
620  void loadVideo(const QString& filename, const QString& id, float x, float y, bool show=true, float alpha=1.0f);
621 
624  void playVideo(const QString& id, bool keepVisibleAtEnd=false);
625 
639  void playVideoPopout(const QString& id, float fromX, float fromY, float atCenterX, float atCenterY, float finalSizeX, float finalSizeY, float popupDuration, bool frozenInTransition);
640 
644  void pauseVideo(const QString& id);
645 
650  void stopVideo(const QString& id);
651 
655  void dropVideo(const QString& id);
656 
661  void seekVideo(const QString& id, qint64 ms, bool pause=false);
662 
668  void setVideoXY(const QString& id, float x, float y, bool relative=false);
669 
674  void setVideoAlpha(const QString& id, float alpha);
675 
680  void resizeVideo(const QString& id, float w, float h);
681 
686  void showVideo(const QString& id, bool show=true);
687 
690  qint64 getVideoDuration(const QString& id);
691 
694  qint64 getVideoPosition(const QString& id);
695 
698  int getScreenWidth();
701  int getScreenHeight();
702 
705  double getScriptRate();
710  void setScriptRate(double r);
711 
714  void pauseScript();
715 
718  void setSelectedObjectInfo(const QString& level);
719 
721  void exit();
722 
724  void quitStellarium();
725 
728  void debug(const QString& s);
729 
732  void output(const QString& s);
733 
735  void resetOutput(void);
736 
739  void saveOutputAs(const QString &filename);
740 
743  QString getAppLanguage();
744 
747  void setAppLanguage(QString langCode);
748 
751  QString getSkyLanguage();
752 
755  void setSkyLanguage(QString langCode);
756 
758  void goHome();
759 
762  void setMilkyWayVisible(bool b);
763 
766  void setMilkyWayIntensity(double i);
767 
770  double getMilkyWayIntensity();
771 
774  void setZodiacalLightVisible(bool b);
775 
778  void setZodiacalLightIntensity(double i);
779 
782  double getZodiacalLightIntensity();
783 
788  int getBortleScaleIndex() const;
789 
795  void setBortleScaleIndex(int index);
796 
800  double jdFromDateString(const QString& dt, const QString& spec);
801 
802  // Methods wait() and waitFor() was added for documentation.
803  // Details: https://bugs.launchpad.net/stellarium/+bug/1402200
804 
808  void wait(double t) { Q_UNUSED(t) }
809 
819  void waitFor(const QString& dt, const QString& spec="utc") { Q_UNUSED(dt); Q_UNUSED(spec) }
820 
821 signals:
822  void requestLoadSkyImage(const QString& id, const QString& filename,
823  double c1, double c2,
824  double c3, double c4,
825  double c5, double c6,
826  double c7, double c8,
827  double minRes, double maxBright, bool visible);
828  void requestLoadSkyImageAltAz(const QString& id, const QString& filename,
829  double c1, double c2,
830  double c3, double c4,
831  double c5, double c6,
832  double c7, double c8,
833  double minRes, double maxBright, bool visible);
834 
835 
836  void requestRemoveSkyImage(const QString& id);
837 
838  void requestLoadSound(const QString& filename, const QString& id);
839  void requestPlaySound(const QString& id);
840  void requestPauseSound(const QString& id);
841  void requestStopSound(const QString& id);
842  void requestDropSound(const QString& id);
843  void requestLoadVideo(const QString& filename, const QString& id, float x, float y, bool show, float alpha);
844  void requestPlayVideo(const QString& id, const bool keepVisibleAtEnd);
845  void requestPlayVideoPopout(const QString& id, float fromX, float fromY, float atCenterX, float atCenterY, float finalSizeX, float finalSizeY, float popupDuration, bool frozenInTransition);
846  void requestPauseVideo(const QString& id);
847  void requestStopVideo(const QString& id);
848  void requestDropVideo(const QString& id);
849  void requestSeekVideo(const QString& id, qint64 ms, bool pause=false);
850  void requestSetVideoXY(const QString& id, float x, float y, bool relative=false);
851  void requestSetVideoAlpha(const QString& id, float alpha);
852  void requestResizeVideo(const QString& id, float w, float h);
853  void requestShowVideo(const QString& id, bool show);
854 
855  void requestSetNightMode(bool b);
856  void requestSetProjectionMode(QString id);
857  void requestSetSkyCulture(QString id);
858  void requestSetDiskViewport(bool b);
859  void requestExit();
860  void requestSetHomePosition();
861 };
862 
863 #endif // _STELMAINSCRIPTAPI_HPP_
864 
void setBortleScaleIndex(int index)
Changes the Bortle scale index, which is used to simulate light pollution.
void setMinFps(float m)
Set the minimum frames per second.
double getViewDecAngle()
Get the current viewing direction Declination angle at center of view.
double getMJDay() const
Get the current date as Modified Julian Day.
bool getNightMode()
Get the current status of Night Mode.
QVariantMap getObjectInfo(const QString &name)
Fetch a map with data about an object's position, magnitude and so on.
void selectObjectByName(const QString &name, bool pointer=false)
Select an object by name.
void clear(const QString &state="natural")
Clear the display options, setting a "standard" view.
double jdFromDateString(const QString &dt, const QString &spec)
For use in setDate and waitFor For parameter descriptions see setDate().
void saveOutputAs(const QString &filename)
Save output file to new file (in same directory as output.txt).
void pauseVideo(const QString &id)
Pause a video which is playing.
void moveToAltAzi(const QString &alt, const QString &azi, float duration=1.)
move the current viewing direction to some specified altitude and azimuth.
int getScreenHeight()
Get the screen height (actually, height of Stellarium main view) in pixels.
QString getAppLanguage()
Get the current application language.
void setProjectionMode(const QString &id)
Set the current projection mode.
void setDiskViewport(bool b)
Set the disk viewport.
bool isRealTime()
Get the simulation time and rate state - is it "real time".
void playSound(const QString &id)
Play a sound which has previously been loaded with loadSound.
void moveToRaDec(const QString &ra, const QString &dec, float duration=1.)
move the current viewing direction to some specified right ascension and declination.
void playVideo(const QString &id, bool keepVisibleAtEnd=false)
Play a video which has previously been loaded with loadVideo.
QString getDeltaTAlgorithm() const
get the DeltaT equation name for the simulation date and time as a string
double getTimeRate() const
Get simulation time rate.
double getViewDecJ2000Angle()
Get the current viewing direction Declination angle in J2000 frame at center of view.
double getViewRaJ2000Angle()
Get the current viewing direction Right Ascension in J2000 frame at center of view.
QString getProjectionMode()
Get the current projection mode ID string.
void setRealTime()
Set the simulation time to the current system time, and the time rate to 1.
void exit()
Stop the script.
QVariantMap getObserverLocationInfo()
Get the info of the current observer location.
void wait(double t)
Pauses the script for t seconds.
int getScreenWidth()
Get the screen width in pixels.
void setMilkyWayVisible(bool b)
Show or hide the Milky Way.
void resizeVideo(const QString &id, float w, float h)
Resize the video widget to the specified width, height.
void setVideoAlpha(const QString &id, float alpha)
Set the alpha value of a video when visible.
void playVideoPopout(const QString &id, float fromX, float fromY, float atCenterX, float atCenterY, float finalSizeX, float finalSizeY, float popupDuration, bool frozenInTransition)
Play a video which has previously been loaded with loadVideo with a complex effect.
void setNightMode(bool b)
Set the status of Night Mode.
void setViewportStretch(const float stretch)
Set a lateral width distortion.
void setSphericMirror(bool b)
Set the viewport distortion effect.
void setSelectedObjectInfo(const QString &level)
Set the amount of selected object information to display.
QString getSkyCultureName()
Find out the current sky culture and get it English name.
QString getSkyCultureNameI18n()
Find out the current sky culture and get it localized name.
void dropSound(const QString &id)
Drop a sound from memory.
void removeSkyImage(const QString &id)
Remove a SkyImage.
void setFlagGravityLabels(bool b)
Turn on/off gravity labels.
int getBortleScaleIndex() const
Returns the currently set Bortle scale index, which is used to simulate light pollution.
void setZodiacalLightVisible(bool b)
Show or hide the Zodiacal Light.
void setMountMode(const QString &mode)
Set the mount mode.
qint64 getSoundPosition(const QString &id)
Get position in a playing sound.
double getViewAltitudeAngle()
Get the current viewing direction altitude angle at center of view.
void debug(const QString &s)
print a debugging message to the console
QString getDate(const QString &spec="utc")
get the simulation date and time as a string in ISO format, e.g.
Provide script API for Stellarium global functions.
QVariantMap getSelectedObjectInfo()
Fetch a map with data about an latest selected object's position, magnitude and so on...
void setJDay(double JD)
Set the current date as Julian Day number.
void loadSkyImageAltAz(const QString &id, const QString &filename, double azi0, double alt0, double azi1, double alt1, double azi2, double alt2, double azi3, double alt3, double minRes=2.5, double maxBright=14, bool visible=true)
Load an image which will have a sky location given in alt-azimuthal coordinates.
float getMinFps()
Get the current minimum frames per second.
QVariantMap getScreenXYFromAltAzi(const QString &alt, const QString &azi)
Get screen coordinates from some specified altitude and azimuth angles may be specified in a format r...
void setViewportOffset(const float x, const float y)
Set viewport offset This can be used e.g.
void setScriptRate(double r)
Set the script execution rate as a multiple of normal execution speed.
void moveToRaDecJ2000(const QString &ra, const QString &dec, float duration=1.)
move the current viewing direction to some specified right ascension and declination in the J2000 fra...
void loadSkyImage(const QString &id, const QString &filename, double ra0, double dec0, double ra1, double dec1, double ra2, double dec2, double ra3, double dec3, double minRes=2.5, double maxBright=14, bool visible=true)
Load an image which will have sky coordinates.
void setMaxFps(float m)
Set the maximum frames per second.
QStringList getAllSkyCultureIDs()
Get a list of Sky Culture IDs.
void setSkyLanguage(QString langCode)
Set the current sky language.
void loadVideo(const QString &filename, const QString &id, float x, float y, bool show=true, float alpha=1.0f)
Load a video from a file.
void goHome()
Go to defaults position and direction of view.
void waitFor(const QString &dt, const QString &spec="utc")
Waits until a specified simulation date/time.
void loadSound(const QString &filename, const QString &id)
Load a sound from a file.
void setDate(const QString &dateStr, const QString &spec="utc", const bool &dateIsDT=false)
set the date in ISO format, e.g.
void setAppLanguage(QString langCode)
Set the current application language.
qint64 getVideoDuration(const QString &id)
Get the duration of a loaded video, or -1.
QString getMountMode()
Get the mount mode as a string.
void setGuiVisible(bool b)
Show or hide the GUI (toolbars).
void output(const QString &s)
print an output message from script
void pauseScript()
Pause the currently running script.
bool getDiskViewport()
Get the status of the disk viewport.
void dropVideo(const QString &id)
Drop a video from memory.
QString getDeltaT() const
get the DeltaT for the simulation date and time as a string in HMS format, e.g.
void showVideo(const QString &id, bool show=true)
Set the visibility state of a video.
void resetOutput(void)
Reset (clear) output file.
double getMilkyWayIntensity()
Get Milky Way intensity.
double getViewAzimuthAngle()
Get the current viewing direction azimuth angle at center of view.
void seekVideo(const QString &id, qint64 ms, bool pause=false)
Seeks a video to the requested time and either start playing or freeze there.
QString getObserverLocation()
Get the ID of the current observer location.
float getMaxFps()
Get the current maximum frames per second.
void screenshot(const QString &prefix, bool invert=false, const QString &dir="", const bool overwrite=false)
Save a screenshot.
QString getSkyLanguage()
Get the current sky language.
void quitStellarium()
Close Stellarium.
void setDeltaTAlgorithm(QString algorithmName)
set equation of the DeltaT for the simulation date and time
double getScriptRate()
Get the script execution rate as a multiple of normal execution speed.
void setMJDay(double MJD)
Set the current date as Modified Julian Day.
qint64 getSoundDuration(const QString &id)
Get duration of a sound object (if possible).
void setTimeRate(double ts)
Set time speed in JDay/sec.
void pauseSound(const QString &id)
Pause a sound which is playing.
qint64 getVideoPosition(const QString &id)
Get the current position of a loaded video, or -1.
void setVideoXY(const QString &id, float x, float y, bool relative=false)
Sets the position of the video widget.
void setMilkyWayIntensity(double i)
Set Milky Way intensity.
bool getFlagGravityLabels()
Get the current status of the gravity labels option.
void setSkyCulture(const QString &id)
Set the current sky culture.
QString getSkyCulture()
Find out the current sky culture.
double getViewRaAngle()
Get the current viewing direction Right Ascension at center of view.
void setZodiacalLightIntensity(double i)
Set Zodiacal Light intensity.
void stopSound(const QString &id)
Stop a sound from playing.
double getZodiacalLightIntensity()
Get Zodiacal Light intensity.
double getJDay() const
Get the current date as Julian Day number.
QVariantMap getObjectPosition(const QString &name)
Fetch a map with data about an object's position, magnitude and so on.
void stopVideo(const QString &id)
Stop a video from playing.
void setObserverLocation(double longitude, double latitude, double altitude, double duration=1., const QString &name="", const QString &planet="")
Set the observer location.