small changes
This commit is contained in:
@@ -21,6 +21,7 @@ REGISTER_PIVARIANTEDITOR(uint, PIVariantEditors::Int);
|
||||
REGISTER_PIVARIANTEDITOR(float, PIVariantEditors::Double);
|
||||
REGISTER_PIVARIANTEDITOR(double, PIVariantEditors::Double);
|
||||
REGISTER_PIVARIANTEDITOR(PIString, PIVariantEditors::String);
|
||||
REGISTER_PIVARIANTEDITOR(PIStringList, PIVariantEditors::StringList);
|
||||
REGISTER_PIVARIANTEDITOR(PITime, PIVariantEditors::Time);
|
||||
REGISTER_PIVARIANTEDITOR(PIDate, PIVariantEditors::Date);
|
||||
REGISTER_PIVARIANTEDITOR(PIDateTime, PIVariantEditors::DateTime);
|
||||
@@ -275,6 +276,92 @@ void PIVariantEditors::String::applyAttributes(const PIVariantMap & a) {
|
||||
}
|
||||
|
||||
|
||||
// PIVariantEditors::StringList
|
||||
|
||||
PIVariantEditors::StringList::StringList() {
|
||||
combo = new EComboBox(this);
|
||||
combo->setEditable(true);
|
||||
combo->setLineEdit(new CLineEdit);
|
||||
combo->setInsertPolicy(QComboBox::NoInsert);
|
||||
layout()->setContentsMargins(0, 0, 0, 0);
|
||||
layout()->addWidget(combo);
|
||||
auto newButton = [this](QString icon, QString tooltip) {
|
||||
auto * b = new QToolButton(this);
|
||||
b->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||
b->setIcon(QIcon(icon));
|
||||
b->setToolTip(tooltip);
|
||||
layout()->addWidget(b);
|
||||
return b;
|
||||
};
|
||||
butt_apply = newButton(":/icons/list-edit-apply.png", tr("Apply"));
|
||||
butt_add = newButton(":/icons/list-add.png", tr("Add"));
|
||||
butt_del = newButton(":/icons/list-remove.png", tr("Remove"));
|
||||
butt_clear = newButton(":/icons/edit-clear.png", tr("Clear"));
|
||||
connect(combo->lineEdit(), SIGNAL(returnPressed()), butt_apply, SLOT(click()));
|
||||
connect(butt_apply, &QToolButton::clicked, [this]() {
|
||||
int ci = combo->currentIndex();
|
||||
if (ci < 0) return;
|
||||
combo->setItemText(ci, combo->currentText());
|
||||
});
|
||||
connect(butt_add, &QToolButton::clicked, [this]() { combo->addItem(combo->currentText()); });
|
||||
connect(butt_del, &QToolButton::clicked, [this]() {
|
||||
if (combo->currentIndex() < 0) return;
|
||||
combo->removeItem(combo->currentIndex());
|
||||
});
|
||||
connect(butt_clear, &QToolButton::clicked, [this]() {
|
||||
if (QMessageBox::question(nullptr, tr("Clear All"), tr("Clear All?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
|
||||
setValue(PIStringList());
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
void PIVariantEditors::StringList::setValue(const PIVariant & v) {
|
||||
int pi = combo->currentIndex();
|
||||
combo->clear();
|
||||
combo->addItems(PI2QStringList(v.toStringList()));
|
||||
if (combo->count() > 0) {
|
||||
if (pi < combo->count() && pi >= 0) {
|
||||
combo->setCurrentIndex(pi);
|
||||
} else {
|
||||
combo->setCurrentIndex(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
PIVariant PIVariantEditors::StringList::value() const {
|
||||
QStringList l;
|
||||
for (int i = 0; i < combo->count(); ++i)
|
||||
l << combo->itemText(i);
|
||||
return Q2PIStringList(l);
|
||||
}
|
||||
|
||||
|
||||
PIVariantMap PIVariantEditors::StringList::attributes() const {
|
||||
return {
|
||||
{Attribute::readOnly, !combo->isEditable()},
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
void PIVariantEditors::StringList::applyAttributes(const PIVariantMap & a) {
|
||||
bool ro = a.value(Attribute::readOnly, !combo->isEditable()).toBool();
|
||||
combo->setEditable(!ro);
|
||||
butt_apply->setEnabled(!ro);
|
||||
butt_add->setEnabled(!ro);
|
||||
butt_del->setEnabled(!ro);
|
||||
butt_clear->setEnabled(!ro);
|
||||
}
|
||||
|
||||
|
||||
void PIVariantEditors::StringList::retranslate() {
|
||||
butt_apply->setToolTip(tr("Apply"));
|
||||
butt_add->setToolTip(tr("Add"));
|
||||
butt_del->setToolTip(tr("Remove"));
|
||||
butt_clear->setToolTip(tr("Clear"));
|
||||
}
|
||||
|
||||
|
||||
// PIVariantEditors::Color
|
||||
|
||||
PIVariantMap PIVariantEditors::Color::attributes() const {
|
||||
|
||||
Reference in New Issue
Block a user