Warning, file /graphics/glaxnimate/src/gui/widgets/enum_combo.hpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002  * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best>
0003  *
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  */
0006 
0007 #pragma once
0008 
0009 #include <QComboBox>
0010 #include <QMetaEnum>
0011 
0012 namespace glaxnimate::gui {
0013 
0014 
0015 class EnumCombo : public QComboBox
0016 {
0017     Q_OBJECT
0018 
0019 public:
0020     EnumCombo(QWidget* parent = nullptr);
0021     EnumCombo(const QMetaEnum& meta_enum, int current_value, QWidget* parent = nullptr);
0022 
0023     template<class T>
0024     EnumCombo(T current_value, QWidget* parent = nullptr)
0025     : EnumCombo(QMetaEnum::fromType<T>(), int(current_value), parent)
0026     {}
0027 
0028     int current_value() const;
0029     void set_current_value(int i);
0030 
0031     void set_data(const QMetaEnum& meta_enum, int current_value);
0032     bool set_data_from_qvariant(const QVariant& var);
0033 
0034 
0035     static std::pair<QString, const char*> data_for(const QVariant& data);
0036     static std::pair<QString, const char*> data_for(const QMetaEnum& meta_enum, int value);
0037 
0038 private:
0039     static bool inspect_qvariant(const QVariant& data, QMetaEnum& meta_enum, int& value);
0040 
0041     void populate(int current_value);
0042     void retranslate();
0043 
0044     QMetaEnum meta_enum;
0045 };
0046 
0047 } // namespace glaxnimate::gui