Stellarium 0.15.0
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 #ifndef NO_GUI
24 
25 #include "StelModule.hpp"
26 #include "StelObject.hpp"
27 #include "StelGuiBase.hpp"
28 #include "StelStyle.hpp"
29 
30 #include <QGraphicsTextItem>
31 
32 class QGraphicsSceneMouseEvent;
33 class QTimeLine;
34 class StelButton;
35 class BottomStelBar;
36 class InfoPanel;
38 class DateTimeDialog;
39 class HelpDialog;
40 class LocationDialog;
41 class SearchDialog;
42 class ViewDialog;
43 class ShortcutsDialog;
44 class AstroCalcDialog;
45 class BookmarksDialog;
46 #ifdef ENABLE_SCRIPT_CONSOLE
47 class ScriptConsole;
48 #endif
49 
53 class StelGui : public QObject, public StelGuiBase
54 {
55  Q_OBJECT
56  Q_PROPERTY(bool visible READ getVisible WRITE setVisible NOTIFY visibleChanged)
57  Q_PROPERTY(bool autoHideHorizontalButtonBar READ getAutoHideHorizontalButtonBar WRITE setAutoHideHorizontalButtonBar NOTIFY autoHideHorizontalButtonBarChanged)
58  Q_PROPERTY(bool autoHideVerticalButtonBar READ getAutoHideVerticalButtonBar WRITE setAutoHideVerticalButtonBar NOTIFY autoHideVerticalButtonBarChanged)
59 
60 public:
61  friend class ViewDialog;
62 
63  StelGui();
64  virtual ~StelGui();
65 
67  // Methods defined in the StelModule class
69  virtual void init(QGraphicsWidget* topLevelGraphicsWidget);
70  void update();
71 
72  StelStyle getStelStyle() const {return currentStelStyle;}
73 
75  // Methods specific to the StelGui class
77  void loadStyle(const QString& fileName);
78 
80  BottomStelBar* getButtonBar() const;
81 
83  class LeftStelBar* getWindowsButtonBar() const;
84 
87  class SkyGui* getSkyGui() const;
88 
90  bool getFlagShowFlipButtons() const;
91 
94 
96  bool initComplete(void) const;
97 
98 #ifdef ENABLE_SCRIPT_CONSOLE
99  ScriptConsole* getScriptConsole() {return scriptConsole;}
100 #endif
101 
103  virtual void forceRefreshGui();
104 
105  virtual void setVisible(bool b);
106 
107  virtual bool getVisible() const;
108 
109  virtual bool getAstroCalcVisible();
110 
111  virtual bool isCurrentlyUsed() const;
112 
113  virtual void setInfoTextFilters(const StelObject::InfoStringGroup& aflags);
114  virtual const StelObject::InfoStringGroup& getInfoTextFilters() const;
115 
116 public slots:
118  void setFlagShowFlipButtons(bool b);
119 
122 
123  void setFlagShowDecimalDegrees(bool b);
124 
126  bool getAutoHideHorizontalButtonBar() const;
132  void setAutoHideHorizontalButtonBar(bool b);
133 
135  bool getAutoHideVerticalButtonBar() const;
141  void setAutoHideVerticalButtonBar(bool b);
142 
143 #ifndef DISABLE_SCRIPTING
144  void setScriptKeys(bool b);
146  void increaseScriptSpeed();
147  void decreaseScriptSpeed();
148  void setRealScriptSpeed();
149  void stopScript();
150  void pauseScript();
151  void resumeScript();
152 #endif
153 
155  void setGuiVisible(bool);
156 
157 signals:
158  void visibleChanged(bool b);
159  void autoHideHorizontalButtonBarChanged(bool b);
160  void autoHideVerticalButtonBarChanged(bool b);
161 
162 private slots:
163  void reloadStyle();
164 #ifndef DISABLE_SCRIPTING
165  void scriptStarted();
166  void scriptStopped();
167 #endif
168  void setStelStyle(const QString& section);
170  void quit();
171  void updateI18n();
172  void copySelectedObjectInfo(void);
173 
174 private:
176  StelAction* getAction(const QString& actionName);
177 
178  QGraphicsWidget* topLevelGraphicsWidget;
179 
180  class SkyGui* skyGui;
181 
182  StelButton* buttonTimeRewind;
183  StelButton* buttonTimeRealTimeSpeed;
184  StelButton* buttonTimeCurrent;
185  StelButton* buttonTimeForward;
186 
187  StelButton* buttonGotoSelectedObject;
188 
189  LocationDialog* locationDialog;
190  HelpDialog* helpDialog;
191  DateTimeDialog* dateTimeDialog;
192  SearchDialog* searchDialog;
193  ViewDialog* viewDialog;
194  ShortcutsDialog* shortcutsDialog;
195  ConfigurationDialog* configurationDialog;
196 #ifdef ENABLE_SCRIPT_CONSOLE
197  ScriptConsole* scriptConsole;
198 #endif
199  AstroCalcDialog* astroCalcDialog;
200  BookmarksDialog* bookmarksDialog;
201 
202  bool flagShowFlipButtons;
203  StelButton* flipVert;
204  StelButton* flipHoriz;
205 
206  bool flagShowNebulaBackgroundButton;
207  StelButton* btShowNebulaeBackground;
208 
209  bool initDone;
210 
211  QSizeF savedProgressBarSize;
212 
213  // Currently used StelStyle
214  StelStyle currentStelStyle;
215 
216 #ifndef DISABLE_SCRIPTING
217  // We use a QStringList to save the user-configured buttons while script is running, and restore them later.
218  QStringList scriptSaveSpeedbuttons;
219 #endif
220 };
221 
222 #else // NO_GUI
223 
224 #include "StelGuiBase.hpp"
225 #include <QProgressBar>
226 
227 class StelGui : public StelGuiBase
228 {
229 public:
230  StelGui() {;}
231  ~StelGui() {;}
232  virtual void init(QGraphicsWidget* topLevelGraphicsWidget, class StelAppGraphicsWidget* stelAppGraphicsWidget) {;}
233  virtual void updateI18n() {;}
234  virtual void setStelStyle(const QString& section) {;}
235  virtual void setInfoTextFilters(const StelObject::InfoStringGroup& aflags) {dummyInfoTextFilter=aflags;}
236  virtual const StelObject::InfoStringGroup& getInfoTextFilters() const {return dummyInfoTextFilter;}
237  virtual QProgressBar* addProgressBar() {return new QProgressBar;}
238  virtual QAction* addGuiActions(const QString& actionName, const QString& text, const QString& shortCut, const QString& helpGroup, bool checkable=true, bool autoRepeat=false) {return NULL;}
239  virtual void forceRefreshGui() {;}
240  virtual void setVisible(bool b) {visible=b;}
241  virtual bool getVisible() const {return visible;}
242  virtual bool isCurrentlyUsed() const {return false;}
243 private:
244  StelObject::InfoStringGroup dummyInfoTextFilter;
245  bool visible;
246 };
247 
248 #endif
249 
250 #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.
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:30
virtual bool getVisible() const
Get the current visible status of the GUI.
Wrapper around an argumentless QObject slot or a bool Q_PROPERTY with WRITE method, allowing the slot to be called/property to be toggled using this action object.
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:56
BottomStelBar * getButtonBar() const
Get the button bar at the bottom of the screen.
bool getFlagShowFlipButtons() const
Get whether the buttons toggling image flip are visible.
bool initComplete(void) const
returns true if the gui has completed init process.
void setAutoHideVerticalButtonBar(bool b)
Set the auto-hide status of the vertical toolbar.
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:53
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.