Stellarium 0.13.1
StelGui.hpp
1 /*
2  * Stellarium
3  * Copyright (C) 2008 Fabien Chereau
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 _STELGUI_HPP_
21 #define _STELGUI_HPP_
22 
23 #include "StelModule.hpp"
24 #include "StelObject.hpp"
25 #include "StelGuiBase.hpp"
26 #include "StelStyle.hpp"
27 
28 #include <QGraphicsTextItem>
29 
30 class QGraphicsSceneMouseEvent;
31 class QTimeLine;
32 class StelButton;
33 class BottomStelBar;
34 class InfoPanel;
36 class DateTimeDialog;
37 class HelpDialog;
38 class LocationDialog;
39 class SearchDialog;
40 class ViewDialog;
41 class ShortcutsDialog;
42 #ifdef ENABLE_SCRIPT_CONSOLE
43 class ScriptConsole;
44 #endif
45 
49 class StelGui : public QObject, public StelGuiBase
50 {
51  Q_OBJECT
52  Q_PROPERTY(bool visible READ getVisible WRITE setVisible)
53  Q_PROPERTY(bool autoHideHorizontalButtonBar READ getAutoHideHorizontalButtonBar WRITE setAutoHideHorizontalButtonBar)
54  Q_PROPERTY(bool autoHideVerticalButtonBar READ getAutoHideVerticalButtonBar WRITE setAutoHideVerticalButtonBar)
55 
56 public:
57  friend class ViewDialog;
58 
59  StelGui();
60  virtual ~StelGui();
61 
63  // Methods defined in the StelModule class
65  virtual void init(QGraphicsWidget* topLevelGraphicsWidget);
66  void update();
67 
68  StelStyle getStelStyle() const {return currentStelStyle;}
69 
71  // Methods specific to the StelGui class
73  void loadStyle(const QString& fileName);
74 
76  BottomStelBar* getButtonBar() const;
77 
79  class LeftStelBar* getWindowsButtonBar() const;
80 
83  class SkyGui* getSkyGui() const;
84 
86  bool getFlagShowFlipButtons() const;
87 
90 
91  bool getFlagShowDecimalDegrees() const;
92 
94  bool initComplete(void) const;
95 
96 #ifdef ENABLE_SCRIPT_CONSOLE
97  ScriptConsole* getScriptConsole() {return scriptConsole;}
98 #endif
99 
101  virtual void forceRefreshGui();
102 
103  virtual void setVisible(bool b);
104 
105  virtual bool getVisible() const;
106 
107  virtual bool isCurrentlyUsed() const;
108 
109  virtual void setInfoTextFilters(const StelObject::InfoStringGroup& aflags);
110  virtual const StelObject::InfoStringGroup& getInfoTextFilters() const;
111 
112 public slots:
114  void setFlagShowFlipButtons(bool b);
115 
118 
119  void setFlagShowDecimalDegrees(bool b);
120 
122  bool getAutoHideHorizontalButtonBar() const;
128  void setAutoHideHorizontalButtonBar(bool b);
129 
131  bool getAutoHideVerticalButtonBar() const;
137  void setAutoHideVerticalButtonBar(bool b);
138 
139 #ifndef DISABLE_SCRIPTING
140  void setScriptKeys(bool b);
142  void increaseScriptSpeed();
143  void decreaseScriptSpeed();
144  void setRealScriptSpeed();
145  void stopScript();
146  void pauseScript();
147  void resumeScript();
148 #endif
149 
151  void setGuiVisible(bool);
152 
153 private slots:
154  void reloadStyle();
155 #ifndef DISABLE_SCRIPTING
156  void scriptStarted();
157  void scriptStopped();
158 #endif
159  void setStelStyle(const QString& section);
161  void quit();
162  void updateI18n();
163  void copySelectedObjectInfo(void);
164 
165 private:
167  StelAction* getAction(const QString& actionName);
168 
169  QGraphicsWidget* topLevelGraphicsWidget;
170 
171  class SkyGui* skyGui;
172 
173  StelButton* buttonTimeRewind;
174  StelButton* buttonTimeRealTimeSpeed;
175  StelButton* buttonTimeCurrent;
176  StelButton* buttonTimeForward;
177 
178  StelButton* buttonGotoSelectedObject;
179 
180  LocationDialog* locationDialog;
181  HelpDialog* helpDialog;
182  DateTimeDialog* dateTimeDialog;
183  SearchDialog* searchDialog;
184  ViewDialog* viewDialog;
185  ShortcutsDialog* shortcutsDialog;
186  ConfigurationDialog* configurationDialog;
187 #ifdef ENABLE_SCRIPT_CONSOLE
188  ScriptConsole* scriptConsole;
189 #endif
190 
191  bool flagShowFlipButtons;
192  StelButton* flipVert;
193  StelButton* flipHoriz;
194 
195  bool flagShowNebulaBackgroundButton;
196  StelButton* btShowNebulaeBackground;
197 
198  bool initDone;
199 
200  bool flagShowDecimalDegrees;
201 
202  QSizeF savedProgressBarSize;
203 
204  // Currently used StelStyle
205  StelStyle currentStelStyle;
206 };
207 
210 {
211  Q_OBJECT
212  Q_PLUGIN_METADATA(IID "stellarium.StelGuiPluginInterface/1.0")
213  Q_INTERFACES(StelGuiPluginInterface)
214 public:
215  virtual class StelGuiBase* getStelGuiBase() const;
216 };
217 
218 #endif // _STELGUI_HPP_
void setFlagShowFlipButtons(bool b)
Define whether the buttons toggling image flip should be visible.
void setGuiVisible(bool)
Hide or show the GUI. Public so it can be called from scripts.
virtual void setInfoTextFilters(const StelObject::InfoStringGroup &aflags)
Get a pointer on the info panel used to display selected object info.
virtual bool isCurrentlyUsed() const
Show wether the Gui is currently used.
Define the interface to implement when creating a GUI plugin.
Definition: StelGuiBase.hpp:62
void setFlagShowNebulaBackgroundButton(bool b)
Define whether the button toggling nebulae background should be visible.
bool getFlagShowNebulaBackgroundButton() const
Get whether the button toggling nebulae background is visible.
bool getAutoHideHorizontalButtonBar() const
Get the auto-hide status of the horizontal toolbar.
void setAutoHideHorizontalButtonBar(bool b)
Set the auto-hide status of the horizontal toolbar.
class SkyGui * getSkyGui() const
Get the SkyGui instance (useful for adding other interface elements).
virtual void setVisible(bool b)
Show whether the GUI is visible.
virtual void forceRefreshGui()
Used to force a refreshing of the GUI elements such as the button bars.
void setScriptKeys(bool b)
change keys when a script is running / not running
Abstract class defining the base interface for all GUIs.
Definition: StelGuiBase.hpp:32
virtual bool getVisible() const
Get the current visible status of the GUI.
Allow to load the GUI as a static plugin.
Definition: StelGui.hpp:209
bool getAutoHideVerticalButtonBar() const
Get the auto-hide status of the vertical toolbar.
The informations about the currently selected object.
Definition: SkyGui.hpp:38
A Button Graphicsitem for use in Stellarium's graphic widgets.
The class managing the layout for button bars, selected object info and loading bars.
Definition: SkyGui.hpp:54
BottomStelBar * getButtonBar() const
Get the button bar at the bottom of the screensetDateTime.
bool getFlagShowFlipButtons() const
Get whether the buttons toggling image flip are visible.
bool initComplete(void) const
returns true if the gui has complted init process.
void setAutoHideVerticalButtonBar(bool b)
Set the auto-hide status of the vertical toolbar.
virtual class StelGuiBase * getStelGuiBase() const =0
Get the instance of StelGuiBase implmenting the GUI.
virtual void init(QGraphicsWidget *topLevelGraphicsWidget)
Initialize the StelGui object.
Holds the information related to a color style for GUI and modules of Stellarium. ...
Definition: StelStyle.hpp:28
Main class for the GUI based on QGraphicView.
Definition: StelGui.hpp:49
The sky object search dialog.
void loadStyle(const QString &fileName)
Load a Qt style sheet to define the widgets style.
class LeftStelBar * getWindowsButtonBar() const
Get the button bar of the left of the screen.