29 QWidget* createCustomStringEditor(
const SessionItem& item);
30 double getStep(
double val);
32 bool isDoubleProperty(
const QVariant& variant)
34 return variant.type() == QVariant::Double;
37 bool isIntProperty(
const QVariant& variant)
39 return variant.type() == QVariant::Int;
42 bool isExternalProperty(
const QVariant& variant)
47 bool isComboProperty(
const QVariant& variant)
52 bool isStringProperty(
const QVariant& variant)
54 return variant.type() == QVariant::String;
57 bool isBoolProperty(
const QVariant& variant)
59 return variant.type() == QVariant::Bool;
66 auto variant = index.data();
67 if (isExternalProperty(variant))
69 if (isComboProperty(variant))
71 if (isBoolProperty(variant))
73 if (isDoubleProperty(variant) && index.internalPointer())
81 auto variant = index.data();
82 if (isExternalProperty(variant))
84 if (isComboProperty(variant))
86 if (isBoolProperty(variant))
87 return variant.toBool() ?
"True" :
"False";
89 if (isDoubleProperty(variant) && index.internalPointer()) {
90 auto item =
static_cast<SessionItem*
>(index.internalPointer());
91 return item->
editorType() ==
"ScientificDouble"
92 ? QString::number(item->value().toDouble(),
'g')
93 : item->editorType() ==
"ScientificSpinBox"
95 : QString::number(item->value().toDouble(),
'f', item->decimals());
103 QWidget* result(
nullptr);
105 if (isDoubleProperty(item.
value())) {
106 if (item.
editorType() ==
"ScientificDouble") {
108 auto limits = item.
limits();
111 }
else if (item.
editorType() ==
"ScientificSpinBox") {
113 auto limits = item.
limits();
115 editor->setDecimals(item.
decimals());
116 editor->setSingleStep(getStep(item.
roleProperty(Qt::EditRole).toDouble()));
121 editor->setDecimals(item.
decimals());
124 }
else if (isIntProperty(item.
value())) {
128 }
else if (isBoolProperty(item.
value())) {
131 }
else if (isStringProperty(item.
value())) {
132 result = createCustomStringEditor(item);
133 }
else if (isExternalProperty(item.
value())) {
138 }
else if (isComboProperty(item.
value())) {
142 }
else if (item.
editorType() ==
"MultiSelectionComboEditor") {
147 if (parent && result)
148 result->setParent(parent);
155 QWidget* createCustomStringEditor(
const SessionItem& item)
157 QWidget* result(
nullptr);
160 auto editor =
new QLineEdit;
161 editor->setText(item.
value().toString());
164 auto editor =
new QLabel;
165 editor->setText(item.
value().toString());
172 double getStep(
double val)
174 return val == 0.0 ? 1.0 : val / 100.;
Defines class ComboProperty.
Defines classes releted to event filtering.
Defines class ExternalProperty.
Defines class GroupItemController.
Defines MultiComboPropertyEditor class.
Defines PropertyEditorFactory namespace.
Defines class ScientificSpinBox.
Defines class SessionItem.
Editor for ComboProperty variant.
Custom property to define list of string values with multiple selections.
Editor for Double variant.
void setLimits(const RealLimits &limits)
Editor for ExternalProperty variant.
void setExternalDialogType(const QString &dialogType)
The ExternalProperty class defines custom QVariant property to carry the text, color and an identifie...
void setLimits(const RealLimits &limits)
Provides custom editor for ComboProperty with multi-select option.
void setLimits(double xmin, double xmax)
Sets lower and upper limits.
Editor for ScientificDoubleProperty variant.
Editor for Double variant using ScientificSpinBox.
static QString toString(double val, int decimal_points)
QVariant value() const
Get value.
QString editorType() const
QVariant roleProperty(int role) const
Returns corresponding variant under given role, invalid variant when role is not present.
RealLimits limits() const
bool hasStringRepresentation(const QModelIndex &index)
Returns true if the index data has known (custom) convertion to string.
QString toString(const QModelIndex &index)
Provides string representation of index data.
QWidget * CreateEditor(const SessionItem &item, QWidget *parent=nullptr)
Creates an editor suitable for editing of item.value()