Warning, file /graphics/glaxnimate/src/gui/style/property_delegate.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 <QtColorWidgets/ColorDelegate> 0010 0011 #include "math/vector.hpp" 0012 #include "model/property/property.hpp" 0013 0014 namespace glaxnimate::gui::style { 0015 0016 class PropertyDelegate : public color_widgets::ColorDelegate 0017 { 0018 public: 0019 void set_forced_height(int height) { force_height = height; } 0020 0021 QWidget* editor_from_property(model::BaseProperty* prop, QWidget* parent) const; 0022 void set_editor_data(QWidget* editor, model::BaseProperty* prop) const; 0023 bool set_property_data(QWidget* editor, model::BaseProperty* prop) const; 0024 0025 protected: 0026 void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0027 0028 QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0029 0030 void setEditorData ( QWidget * editor, const QModelIndex & index ) const override; 0031 0032 void setModelData ( QWidget * editor, QAbstractItemModel * model, const QModelIndex & index ) const override; 0033 0034 void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 0035 0036 QSize sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const override; 0037 0038 private: 0039 template<class T> 0040 void paint_xy(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const 0041 { 0042 T value = index.data().value<T>(); 0043 paint_plaintext( 0044 QString("%1 x %2") 0045 .arg(math::get(value, 0)) 0046 .arg(math::get(value, 1)), 0047 painter, 0048 option, 0049 index 0050 ); 0051 } 0052 0053 void paint_plaintext(const QString& text, QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; 0054 0055 QVariant refprop(model::BaseProperty *prop, const model::PropertyTraits& traits) const; 0056 QWidget* create_editor_from_variant(const QVariant &data, int prop_flags, QWidget *parent, const QVariant& refprop, const QVariant& min, const QVariant& max) const; 0057 bool set_editor_data(QWidget *editor, const QVariant &data, int prop_flags, const QVariant &refprop) const; 0058 QVariant get_editor_data(QWidget *editor, const QVariant &data, int prop_flags, const QVariant &refprop, int& status) const; 0059 0060 int force_height = 0; 0061 }; 0062 0063 } // namespace glaxnimate::gui::style