Stellarium
0.17.0
|
Base class for all the GUI windows in Stellarium. More...
#include <StelDialogLogBook.hpp>
Public Slots | |
virtual void | retranslate ()=0 |
Retranslate the content of the dialog. More... | |
void | setVisible (bool) |
On the first call with "true" populates the window contents. | |
void | close () |
Closes the window (the window widget is not deleted, just not visible). | |
void | handleMovedTo (QPoint newPos) |
Adds dialog location to config.ini; should be connected in createDialogContent() | |
virtual void | handleDialogSizeChanged (QSizeF size) |
Stores dialog sizes into config.ini; should be connected from the proxy. More... | |
QString | getDialogName () |
Signals | |
void | visibleChanged (bool) |
Public Member Functions | |
StelDialog (QString dialogName="Default", QObject *parent=Q_NULLPTR) | |
bool | visible () const |
Returns true if the dialog contents have been constructed and are currently shown. | |
Protected Member Functions | |
virtual void | createDialogContent ()=0 |
Initialize the dialog widgets and connect the signals/slots. | |
Static Protected Member Functions | |
static void | connectCheckBox (QAbstractButton *checkBox, const QString &actionName) |
Helper function to connect a checkbox to the StelAction with the specified name. | |
static void | connectCheckBox (QAbstractButton *checkBox, StelAction *action) |
Helper function to connect a checkbox to the given StelAction. | |
static void | connectIntProperty (QSpinBox *spinBox, const QString &propName) |
Helper function to connect a QSpinBox to an integer StelProperty. More... | |
static void | connectIntProperty (QComboBox *comboBox, const QString &propName) |
Helper function to connect a QComboBox to an integer StelProperty. More... | |
static void | connectIntProperty (QSlider *slider, const QString &propName, int minValue, int maxValue) |
Helper function to connect a QSlider to an double or float StelProperty. More... | |
static void | connectDoubleProperty (QDoubleSpinBox *spinBox, const QString &propName) |
Helper function to connect a QDoubleSpinBox to an double or float StelProperty. More... | |
static void | connectDoubleProperty (QSlider *slider, const QString &propName, double minValue, double maxValue) |
Helper function to connect a QSlider to an double or float StelProperty. More... | |
static void | connectBoolProperty (QAbstractButton *checkBox, const QString &propName) |
Helper function to connect a checkbox to a bool StelProperty. More... | |
Protected Attributes | |
QWidget * | dialog |
The main dialog. | |
class CustomProxy * | proxy |
QString | dialogName |
The name should be set in derived classes' constructors and can be used to store and retrieve the panel locations. | |
Properties | |
bool | visible |
A local copy of StelDialog, the base class for all the GUI windows in Stellarium, included to allow the plug-in to be loaded dynamically on Windows.
Windows in Stellarium are actually basic QWidgets that have to be wrapped in a QGraphicsProxyWidget (CustomProxy) to be displayed by StelMainView (which is derived from QGraphicsView). See the Qt documentation for details.
The base widget needs to be populated with controls in the implementation of the createDialogContent() function. This can be done either manually, or by using a .ui file. See the Qt documentation on using Qt Designer .ui files for details.
The createDialogContent() function itself is called automatically the first time setVisible() is called with "true".
Moving a window is done by dragging its title bar, defined in the BarFrame class. Every derived window class needs a BarFrame object - it has to be either included in a .ui file, or manually instantiated in createDialogContent().
The screen location of the StelDialog can be stored in config.ini. This requires setting dialogName (must be a unique name, should be set in the constructor), and setting a connect() from the BarFrame's movedTo() signal to handleMovedTo() in createDialogContent(). If the dialog is called and the stored location is off-screen, the dialog is shifted to become visible.
The StelDialog base class provides multiple helper functions that allow easy two-way binding of widgets to specific StelAction or StelProperty instances. These functions are:
connectBoolProperty to connect a StelProperty to a QAbstractButton (includes QCheckBox) Take care that a valid property name is used and it represents a property that can be converted to the required data type, or the program will crash at runtime when the function is called
(An "Invalid access to memory location" error is thrown otherwise.)
|
staticprotected |
propName
is invalid/unregistered, or cannot be converted to the required datatype, the application will crash
|
staticprotected |
propName
is invalid/unregistered, or cannot be converted to the required datatype, the application will crash
|
staticprotected |
slider | The slider which should be connected |
propName | The id of the StelProperty which should be connected |
minValue | the double value associated with the minimal slider position |
maxValue | the double value associated with the maximal slider position |
propName
is invalid/unregistered, or cannot be converted to the required datatype, the application will crash
|
staticprotected |
propName
is invalid/unregistered, or cannot be converted to the required datatype, the application will crash
|
staticprotected |
The property is mapped to the selected index of the combobox.
propName
is invalid/unregistered, or cannot be converted to the required datatype, the application will crash
|
staticprotected |
slider | The slider which should be connected |
propName | The id of the StelProperty which should be connected |
minValue | the int value associated with the minimal slider position |
maxValue | the int value associated with the maximal slider position |
propName
is invalid/unregistered, or cannot be converted to the required datatype, the application will crash
|
virtualslot |
When a subclass needs a size-dependent update, implement such update in the subclass version, but call StelDialog::handleDialogSizeChanged() first.
|
pure virtualslot |
Needs to be connected to StelApp::languageChanged(). At the very least, if the window is based on a Qt Designer file (.ui), the implementation needs to call the generated class' retranslateUi() method, like this: