PIVariantEdit::Enum full edit mode implement
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user