Stellarium  0.20.4
Public Slots | Signals | Public Member Functions | Protected Slots | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Properties
StelDialog Class Referenceabstract

Base class for all the GUI windows in Stellarium. More...

#include <StelDialog.hpp>

Public Slots

virtual void retranslate ()=0
 Retranslate the content of the dialog. More...
 
virtual void setVisible (bool)
 On the first call with "true" populates the window contents.
 
virtual 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 () const
 

Signals

void visibleChanged (bool)
 

Public Member Functions

 StelDialog (QString dialogName="Default", QObject *parent=Q_NULLPTR)
 
virtual void styleChanged ()
 Notify that the application style changed.
 
bool visible () const
 Returns true if the dialog contents have been constructed and are currently shown.
 

Protected Slots

void askColor ()
 To be called by a connected QToolButton with a color background. More...
 
void enableKineticScrolling (bool b)
 enable kinetic scrolling. This should be connected to StelApp's StelGui signal flagUseKineticScrollingChanged.
 
void handleFontChanged ()
 connect from StelApp to handle font and font size changes.
 

Protected Member Functions

virtual void createDialogContent ()=0
 Initialize the dialog widgets and connect the signals/slots.
 
void connectColorButton (QToolButton *button, QString propertyName, QString iniName, QString moduleName="")
 Prepare a QToolButton so that it can receive and handle askColor() connections properly. More...
 
bool askConfirmation ()
 

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 (QLineEdit *lineEdit, const QString &propName)
 Helper function to connect a QLineEdit to an integer StelProperty. More...
 
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 connectStringProperty (QComboBox *comboBox, const QString &propName)
 Helper function to connect a QComboBox to an QString StelProperty. More...
 
static void connectBoolProperty (QAbstractButton *checkBox, const QString &propName)
 Helper function to connect a checkbox to a bool StelProperty. More...
 
static void connectBoolProperty (QGroupBox *checkBox, const QString &propName)
 Helper function to connect a groupbox to a bool StelProperty. More...
 

Protected Attributes

QWidget * dialog
 The main dialog.
 
class CustomProxyproxy
 
QString dialogName
 The name should be set in derived classes' constructors and can be used to store and retrieve the panel locations.
 
QList< QWidget * > kineticScrollingList
 A list of widgets where kinetic scrolling can be activated or deactivated The list must be filled once, in the constructor or init() of fillDialog() etc. More...
 

Properties

bool visible
 

Detailed Description

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.

StelProperty and StelAction

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:

Member Function Documentation

◆ askColor

void StelDialog::askColor ( )
protectedslot

This QToolButton needs properties "propName" and "iniName" which should be prepared using connectColorButton().

◆ connectBoolProperty() [1/2]

static void StelDialog::connectBoolProperty ( QAbstractButton *  checkBox,
const QString &  propName 
)
staticprotected
Warning
If the action with propName is invalid/unregistered, or cannot be converted to the required datatype, the application will crash

◆ connectBoolProperty() [2/2]

static void StelDialog::connectBoolProperty ( QGroupBox *  checkBox,
const QString &  propName 
)
staticprotected
Warning
If the action with propName is invalid/unregistered, or cannot be converted to the required datatype, the application will crash

◆ connectColorButton()

void StelDialog::connectColorButton ( QToolButton *  button,
QString  propertyName,
QString  iniName,
QString  moduleName = "" 
)
protected
Parameters
toolButtonthe QToolButton which shows the color
propertyNamea StelProperty name which must represent a color (coded as Vec3f)
iniNamethe associated entry for config.ini, in the form group/name. Usually "color/some_feature_name_color".
moduleNameif the iniName is for a module (plugin)-specific ini file, add the module name here. The module needs an implementation of getSettings()
Warning
If the action with propName is invalid/unregistered, or cannot be converted to the required datatype, the application will crash

◆ connectDoubleProperty() [1/2]

static void StelDialog::connectDoubleProperty ( QDoubleSpinBox *  spinBox,
const QString &  propName 
)
staticprotected
Warning
If the action with propName is invalid/unregistered, or cannot be converted to the required datatype, the application will crash

◆ connectDoubleProperty() [2/2]

static void StelDialog::connectDoubleProperty ( QSlider *  slider,
const QString &  propName,
double  minValue,
double  maxValue 
)
staticprotected
Parameters
sliderThe slider which should be connected
propNameThe id of the StelProperty which should be connected
minValuethe double value associated with the minimal slider position
maxValuethe double value associated with the maximal slider position
Warning
If the action with propName is invalid/unregistered, or cannot be converted to the required datatype, the application will crash

◆ connectIntProperty() [1/4]

static void StelDialog::connectIntProperty ( QLineEdit *  lineEdit,
const QString &  propName 
)
staticprotected
Note
This method also works with flag/enum types (TODO. Does it?) You should call something like setInputMask("009") for a 3-place numerical field.
Warning
If the action with propName is invalid/unregistered, or cannot be converted to the required datatype, the application will crash

◆ connectIntProperty() [2/4]

static void StelDialog::connectIntProperty ( QSpinBox *  spinBox,
const QString &  propName 
)
staticprotected
Note
This method also works with flag/enum types
Warning
If the action with propName is invalid/unregistered, or cannot be converted to the required datatype, the application will crash

◆ connectIntProperty() [3/4]

static void StelDialog::connectIntProperty ( QComboBox *  comboBox,
const QString &  propName 
)
staticprotected

The property is mapped to the selected index of the combobox.

Note
This method also works with flag/enum types
Warning
If the action with propName is invalid/unregistered, or cannot be converted to the required datatype, the application will crash

◆ connectIntProperty() [4/4]

static void StelDialog::connectIntProperty ( QSlider *  slider,
const QString &  propName,
int  minValue,
int  maxValue 
)
staticprotected
Parameters
sliderThe slider which should be connected
propNameThe id of the StelProperty which should be connected
minValuethe int value associated with the minimal slider position
maxValuethe int value associated with the maximal slider position
Warning
If the action with propName is invalid/unregistered, or cannot be converted to the required datatype, the application will crash

◆ connectStringProperty()

static void StelDialog::connectStringProperty ( QComboBox *  comboBox,
const QString &  propName 
)
staticprotected

The property is mapped to the selected string of the combobox. Make sure the string is available in the Combobox, else the first element may be chosen.

Warning
If the action with propName is invalid/unregistered, or cannot be converted to the required datatype, the application will crash

◆ handleDialogSizeChanged

virtual void StelDialog::handleDialogSizeChanged ( QSizeF  size)
virtualslot

When a subclass needs a size-dependent update, implement such update in the subclass version, but call StelDialog::handleDialogSizeChanged() first.

◆ retranslate

virtual void StelDialog::retranslate ( )
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:

if (dialog)
ui->retranslateUi(dialog);

Field Documentation

◆ kineticScrollingList

QList<QWidget *> StelDialog::kineticScrollingList
protected

functions.