-
Wuttke, Joachim authoredWuttke, Joachim authored
ComboProperty.h 2.30 KiB
// ************************************************************************************************
//
// BornAgain: simulate and fit reflection and scattering
//
//! @file GUI/Model/Descriptor/ComboProperty.h
//! @brief Defines class ComboProperty.
//!
//! @homepage http://www.bornagainproject.org
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2018
//! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
//
// ************************************************************************************************
#ifndef BORNAGAIN_GUI_MODEL_DESCRIPTOR_COMBOPROPERTY_H
#define BORNAGAIN_GUI_MODEL_DESCRIPTOR_COMBOPROPERTY_H
#include <QStringList>
#include <QVariant>
#include <QVector>
#include <QXmlStreamReader>
//! Custom property to define list of string values with multiple selections.
//! Intended for QVariant.
class ComboProperty {
public:
ComboProperty();
static ComboProperty fromList(const QStringList& values, const QString& current_value = "");
static ComboProperty fromStdVec(const std::vector<std::string>& values,
const std::string& current_value = "");
QString currentValue() const;
void setCurrentValue(const QString& name);
QStringList values() const { return m_values; }
void setValues(const QStringList& values);
QStringList toolTips() const { return m_tooltips; }
void setToolTips(const QStringList& tooltips);
int currentIndex() const;
void setCurrentIndex(int index);
ComboProperty& operator<<(const QString& str);
ComboProperty& operator<<(const QStringList& str);
bool operator==(const ComboProperty& other) const;
bool operator!=(const ComboProperty& other) const;
bool operator<(const ComboProperty& other) const;
QVariant variant() const;
void setSelected(int index, bool value = true);
void setSelected(const QString& name, bool value = true);
QString label() const;
void writeTo(QXmlStreamWriter* w) const;
void readFrom(QXmlStreamReader* r);
private:
ComboProperty(const QStringList& values);
QStringList m_values;
QStringList m_tooltips;
QVector<int> m_selected_indices;
};
Q_DECLARE_METATYPE(ComboProperty)
#endif // BORNAGAIN_GUI_MODEL_DESCRIPTOR_COMBOPROPERTY_H