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