diff --git a/gui/include/Variable/VariableMenuHeaderWidget.h b/gui/include/Variable/VariableMenuHeaderWidget.h new file mode 100644 index 0000000..009b0c5 --- /dev/null +++ b/gui/include/Variable/VariableMenuHeaderWidget.h @@ -0,0 +1,37 @@ +#ifndef SCIQLOP_VARIABLEMENUHEADERWIDGET_H +#define SCIQLOP_VARIABLEMENUHEADERWIDGET_H + +#include +#include + +#include + +namespace Ui { +class VariableMenuHeaderWidget; +} // Ui + +class Variable; + +Q_DECLARE_LOGGING_CATEGORY(LOG_VariableMenuHeaderWidget) + +/** + * @brief The VariableMenuHeaderWidget class represents the widget used as a header of a menu in the + * variable inspector + * @sa VariableInspectorWidget + */ +class VariableMenuHeaderWidget : public QWidget { +public: + /** + * Ctor + * @param variables the list of variables used to generate the header + * @param parent the parent widget + */ + explicit VariableMenuHeaderWidget(const QVector > &variables, + QWidget *parent = 0); + virtual ~VariableMenuHeaderWidget() noexcept; + +private: + Ui::VariableMenuHeaderWidget *ui; +}; + +#endif // SCIQLOP_VARIABLEMENUHEADERWIDGET_H diff --git a/gui/src/Variable/VariableMenuHeaderWidget.cpp b/gui/src/Variable/VariableMenuHeaderWidget.cpp new file mode 100644 index 0000000..7baf824 --- /dev/null +++ b/gui/src/Variable/VariableMenuHeaderWidget.cpp @@ -0,0 +1,38 @@ +#include "Variable/VariableMenuHeaderWidget.h" +#include "Variable/Variable.h" + +#include + +Q_LOGGING_CATEGORY(LOG_VariableMenuHeaderWidget, "VariableMenuHeaderWidget") + +VariableMenuHeaderWidget::VariableMenuHeaderWidget( + const QVector > &variables, QWidget *parent) + : QWidget{parent}, ui{new Ui::VariableMenuHeaderWidget} +{ + ui->setupUi(this); + + // Generates label according to the state of the variables. The label contains : + // - the variable name if there is only one variable in the list + // - 'x variables' where x is the number of variables otherwise + const auto nbVariables = variables.size(); + if (nbVariables == 1) { + if (auto variable = variables.first()) { + ui->label->setText(variable->name()); + } + else { + qCCritical(LOG_VariableMenuHeaderWidget()) + << tr("Can't get the name of the variable : variable is null"); + } + } + else if (nbVariables > 1) { + ui->label->setText(tr("%1 variables").arg(nbVariables)); + } + else { + ui->label->setText(tr("No variable")); + } +} + +VariableMenuHeaderWidget::~VariableMenuHeaderWidget() noexcept +{ + delete ui; +} diff --git a/gui/ui/Variable/VariableMenuHeaderWidget.ui b/gui/ui/Variable/VariableMenuHeaderWidget.ui new file mode 100644 index 0000000..141d286 --- /dev/null +++ b/gui/ui/Variable/VariableMenuHeaderWidget.ui @@ -0,0 +1,31 @@ + + + VariableMenuHeaderWidget + + + + 0 + 0 + 110 + 34 + + + + + + + background-color: rgba(127, 127, 127, 127); + + + TextLabel + + + Qt::AlignCenter + + + + + + + +