From 10d63e05feda638dcd745ed1f759f1d65d28ceed Mon Sep 17 00:00:00 2001 From: peri4 Date: Mon, 9 Jan 2023 15:42:12 +0300 Subject: [PATCH] small changes --- CMakeLists.txt | 2 +- libs/piqt_widgets/pivaluetree_edit.cpp | 7 +- libs/piqt_widgets/pivariant_edit_widgets.cpp | 87 +++++++++++++++++++ libs/piqt_widgets/pivariant_edit_widgets.h | 18 ++++ libs/piqt_widgets/qad_piqt_widgets.qrc | 1 + libs/widgets/plugin/scroll_spin_boxplugin.cpp | 2 +- 6 files changed, 114 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 175a20f..b5571ac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_policy(SET CMP0017 NEW) # need include() with .cmake cmake_policy(SET CMP0072 NEW) # FindOpenGL prefers GLVND by default project(QAD) set(QAD_MAJOR 2) -set(QAD_MINOR 11) +set(QAD_MINOR 12) set(QAD_REVISION 0) set(QAD_SUFFIX ) set(QAD_COMPANY SHS) diff --git a/libs/piqt_widgets/pivaluetree_edit.cpp b/libs/piqt_widgets/pivaluetree_edit.cpp index 227a3a5..9c29c84 100644 --- a/libs/piqt_widgets/pivaluetree_edit.cpp +++ b/libs/piqt_widgets/pivaluetree_edit.cpp @@ -94,6 +94,11 @@ void PIValueTreeEdit::retranslate() { for (const auto & i: label_labels) { i.second->setText(PIVariantEditorBase::vtTr(i.first)); } + if (tab_widget) { + for (int i = 0; i < tab_widget->count(); ++i) { + tab_widget->setTabText(i, PIVariantEditorBase::vtTr(Q2PIString(tab_widget->tabBar()->tabData(i).toString()))); + } + } grid->retranslate(); } @@ -345,7 +350,7 @@ PIValueTreeEdit * PIValueTreeEdit::addTreeEdit(const PIValueTree & vt) { rp << vt.name(); ve->root_path = rp; ve->parent_tree = this; - ve->setGrouping((Grouping)vt.attribute(Attribute::grouping, Parent).toInt()); + ve->setGrouping((Grouping)vt.attribute(Attribute::grouping, Parent).toEnum().selectedValue()); ve->setFullEditMode(is_full_edit); ve->setValue(vt); switch (real_grouping) { diff --git a/libs/piqt_widgets/pivariant_edit_widgets.cpp b/libs/piqt_widgets/pivariant_edit_widgets.cpp index 0b669b0..af096a5 100644 --- a/libs/piqt_widgets/pivariant_edit_widgets.cpp +++ b/libs/piqt_widgets/pivariant_edit_widgets.cpp @@ -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 { diff --git a/libs/piqt_widgets/pivariant_edit_widgets.h b/libs/piqt_widgets/pivariant_edit_widgets.h index 68bded4..df224ac 100644 --- a/libs/piqt_widgets/pivariant_edit_widgets.h +++ b/libs/piqt_widgets/pivariant_edit_widgets.h @@ -31,6 +31,7 @@ #include #include #include +#include #include namespace PIVariantEditors { @@ -126,6 +127,23 @@ private: }; +class QAD_PIQT_UTILS_EXPORT StringList: public PIVariantEditorBase { + Q_OBJECT + +public: + StringList(); + void setValue(const PIVariant & v) override; + PIVariant value() const override; + PIVariantMap attributes() const override; + +private: + void applyAttributes(const PIVariantMap & a) override; + void retranslate() override; + EComboBox * combo; + QToolButton *butt_apply, *butt_add, *butt_del, *butt_clear; +}; + + class QAD_PIQT_UTILS_EXPORT Color: public PIVariantEditorBase { Q_OBJECT diff --git a/libs/piqt_widgets/qad_piqt_widgets.qrc b/libs/piqt_widgets/qad_piqt_widgets.qrc index bdfc7f8..0f5fd65 100644 --- a/libs/piqt_widgets/qad_piqt_widgets.qrc +++ b/libs/piqt_widgets/qad_piqt_widgets.qrc @@ -3,6 +3,7 @@ ../../icons/configure.png ../../icons/border-line.png ../../icons/list-add.png + ../../icons/list-remove.png ../../icons/code-variable.png ../../icons/code-struct.png ../../icons/code-union.png diff --git a/libs/widgets/plugin/scroll_spin_boxplugin.cpp b/libs/widgets/plugin/scroll_spin_boxplugin.cpp index 55e05fd..07cbe6d 100644 --- a/libs/widgets/plugin/scroll_spin_boxplugin.cpp +++ b/libs/widgets/plugin/scroll_spin_boxplugin.cpp @@ -40,7 +40,7 @@ QString ScrollSpinBoxPlugin::group() const { QIcon ScrollSpinBoxPlugin::icon() const { - return QIcon(); + return QIcon(":/icons/scroll_spin.png"); }