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)
57  Q_PROPERTY(bool autoHideHorizontalButtonBar READ getAutoHideHorizontalButtonBar WRITE setAutoHideHorizontalButtonBar)
58  Q_PROPERTY(bool autoHideVerticalButtonBar READ getAutoHideVerticalButtonBar WRITE setAutoHideVerticalButtonBar)
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 private slots:
158  void reloadStyle();
159 #ifndef DISABLE_SCRIPTING
160  void scriptStarted();
161  void scriptStopped();
162 #endif
163  void setStelStyle(const QString& section);
165  void quit();
166  void updateI18n();
167  void copySelectedObjectInfo(void);
168 
169 private:
171  StelAction* getAction(const QString& actionName);
172 
173  QGraphicsWidget* topLevelGraphicsWidget;
174 
175  class SkyGui* skyGui;
176 
177  StelButton* buttonTimeRewind;
178  StelButton* buttonTimeRealTimeSpeed;
179  StelButton* buttonTimeCurrent;
180  StelButton* buttonTimeForward;
181 
182  StelButton* buttonGotoSelectedObject;
183 
184  LocationDialog* locationDialog;
185  HelpDialog* helpDialog;
186  DateTimeDialog* dateTimeDialog;
187  SearchDialog* searchDialog;
188  ViewDialog* viewDialog;
189  ShortcutsDialog* shortcutsDialog;
190  ConfigurationDialog* configurationDialog;
191 #ifdef ENABLE_SCRIPT_CONSOLE
192  ScriptConsole* scriptConsole;
193 #endif
194  AstroCalcDialog* astroCalcDialog;
195  BookmarksDialog* bookmarksDialog;
196 
197  bool flagShowFlipButtons;
198  StelButton* flipVert;
199  StelButton* flipHoriz;
200 
201  bool flagShowNebulaBackgroundButton;
202  StelButton* btShowNebulaeBackground;
203 
204  bool initDone;
205 
206  QSizeF savedProgressBarSize;
207 
208  // Currently used StelStyle
209  StelStyle currentStelStyle;
210 
211 #ifndef DISABLE_SCRIPTING
212  // We use a QStringList to save the user-configured buttons while script is running, and restore them later.
213  QStringList scriptSaveSpeedbuttons;
214 #endif
215 };
216 
217 #else // NO_GUI
218 
219 #include "StelGuiBase.hpp"
220 #include <QProgressBar>
221 
222 class StelGui : public StelGuiBase
223 {
224 public:
225  StelGui() {;}
226  ~StelGui() {;}
227  virtual void init(QGraphicsWidget* topLevelGraphicsWidget, class StelAppGraphicsWidget* stelAppGraphicsWidget) {;}
228  virtual void updateI18n() {;}
229  virtual void setStelStyle(const QString& section) {;}
230  virtual void setInfoTextFilters(const StelObject::InfoStringGroup& aflags) {dummyInfoTextFilter=aflags;}
231  virtual const StelObject::InfoStringGroup& getInfoTextFilters() const {return dummyInfoTextFilter;}
232  virtual QProgressBar* addProgressBar() {return new QProgressBar;}
233  virtual QAction* addGuiActions(const QString& actionName, const QString& text, const QString& shortCut, const QString& helpGroup, bool checkable=true, bool autoRepeat=false) {return NULL;}
234  virtual void forceRefreshGui() {;}
235  virtual void setVisible(bool b) {visible=b;}
236  virtual bool getVisible() const {return visible;}
237  virtual bool isCurrentlyUsed() const {return false;}
238 private:
239  StelObject::InfoStringGroup dummyInfoTextFilter;
240  bool visible;
241 };
242 
243 #endif
244 
245 #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.
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.