Stellarium 0.13.3
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 #ifdef ENABLE_SCRIPT_CONSOLE
45 class ScriptConsole;
46 #endif
47 
51 class StelGui : public QObject, public StelGuiBase
52 {
53  Q_OBJECT
54  Q_PROPERTY(bool visible READ getVisible WRITE setVisible)
55  Q_PROPERTY(bool autoHideHorizontalButtonBar READ getAutoHideHorizontalButtonBar WRITE setAutoHideHorizontalButtonBar)
56  Q_PROPERTY(bool autoHideVerticalButtonBar READ getAutoHideVerticalButtonBar WRITE setAutoHideVerticalButtonBar)
57 
58 public:
59  friend class ViewDialog;
60 
61  StelGui();
62  virtual ~StelGui();
63 
65  // Methods defined in the StelModule class
67  virtual void init(QGraphicsWidget* topLevelGraphicsWidget);
68  void update();
69 
70  StelStyle getStelStyle() const {return currentStelStyle;}
71 
73  // Methods specific to the StelGui class
75  void loadStyle(const QString& fileName);
76 
78  BottomStelBar* getButtonBar() const;
79 
81  class LeftStelBar* getWindowsButtonBar() const;
82 
85  class SkyGui* getSkyGui() const;
86 
88  bool getFlagShowFlipButtons() const;
89 
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  QSizeF savedProgressBarSize;
201 
202  // Currently used StelStyle
203  StelStyle currentStelStyle;
204 };
205 
206 #else // NO_GUI
207 
208 #include "StelGuiBase.hpp"
209 #include <QProgressBar>
210 
211 class StelGui : public StelGuiBase
212 {
213 public:
214  StelGui() {;}
215  ~StelGui() {;}
216  virtual void init(QGraphicsWidget* topLevelGraphicsWidget, class StelAppGraphicsWidget* stelAppGraphicsWidget) {;}
217  virtual void updateI18n() {;}
218  virtual void setStelStyle(const QString& section) {;}
219  virtual void setInfoTextFilters(const StelObject::InfoStringGroup& aflags) {dummyInfoTextFilter=aflags;}
220  virtual const StelObject::InfoStringGroup& getInfoTextFilters() const {return dummyInfoTextFilter;}
221  virtual QProgressBar* addProgressBar() {return new QProgressBar;}
222  virtual QAction* addGuiActions(const QString& actionName, const QString& text, const QString& shortCut, const QString& helpGroup, bool checkable=true, bool autoRepeat=false) {return NULL;}
223  virtual void forceRefreshGui() {;}
224  virtual void setVisible(bool b) {visible=b;}
225  virtual bool getVisible() const {return visible;}
226  virtual bool isCurrentlyUsed() const {return false;}
227 private:
228  StelObject::InfoStringGroup dummyInfoTextFilter;
229  bool visible;
230 };
231 
232 #endif
233 
234 #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:37
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:53
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:51
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.