PIVariantEdit::Enum full edit mode implement

This commit is contained in:
2022-12-17 23:52:14 +03:00
parent 5327e4f7b0
commit e0b4dc06db
9 changed files with 398 additions and 12 deletions

View File

@@ -1,10 +1,12 @@
#include "pivariant_edit_widgets.h"
#include "pivaluetree.h"
#include "pivariant_edit_enum.h"
#include "pivarianttypes.h"
#include <QEvent>
#include <QMessageBox>
#include <QToolButton>
REGISTER_PIVARIANTEDITOR(bool, PIVariantEditors::Bool);
REGISTER_PIVARIANTEDITOR(short, PIVariantEditors::Int);
@@ -153,6 +155,31 @@ void PIVariantEditors::DateTime::applyAttributes(const PIVariantMap & a) {
// PIVariantEditors::Enum
PIVariantEditors::Enum::Enum() {
widget = new QComboBox();
layout()->addWidget(widget);
edit_widget = new QWidget();
edit_widget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
edit_widget->setLayout(new QBoxLayout(QBoxLayout::LeftToRight));
QMargins m = edit_widget->layout()->contentsMargins();
m.setTop(0);
m.setBottom(0);
m.setRight(0);
edit_widget->layout()->setContentsMargins(m);
auto * b = new QToolButton();
b->setIcon(QIcon(":/icons/document-edit.png"));
connect(b, &QToolButton::clicked, this, [this]() {
PIValueTreeEditEnum dlg;
if (!dlg.showFor(src)) return;
setValue(PIVariant(dlg.ret));
});
edit_widget->layout()->addWidget(b);
layout()->setSpacing(0);
layout()->addWidget(edit_widget);
setFullEditMode(false);
}
void PIVariantEditors::Enum::setValue(const PIVariant & v) {
src = v.toEnum();
int sv = src.selectedValue();
@@ -173,3 +200,8 @@ PIVariant PIVariantEditors::Enum::value() const {
void PIVariantEditors::Enum::applyAttributes(const PIVariantMap & a) {
widget->setEnabled(!a.value(Attribute::readOnly, !widget->isEnabled()).toBool());
}
void PIVariantEditors::Enum::setFullEditMode(bool on) {
edit_widget->setVisible(on);
}