diff --git a/icons/list-edit-apply.png b/icons/list-edit-apply.png new file mode 100644 index 0000000..fffaa98 Binary files /dev/null and b/icons/list-edit-apply.png differ diff --git a/libs/qglview/propertyeditor.cpp b/libs/qglview/propertyeditor.cpp index cce7e95..ed0f81b 100644 --- a/libs/qglview/propertyeditor.cpp +++ b/libs/qglview/propertyeditor.cpp @@ -231,11 +231,11 @@ void Delegate::changedFlag() { int row = 0; qulonglong val = 0; QList chldr; - mi = p.child(row, 1); + mi = model->index(row, 1, p); while (mi.isValid()) { chldr << mi; model->setData(mi, !mi.data(Qt::UserRole + 4).toBool(), Qt::UserRole + 4); - mi = p.child(++row, 1); + mi =model->index(++row, 1, p); } bool cc = cmi.data(Qt::UserRole + 3).toBool(); qulonglong cv = cmi.data(Qt::UserRole).toULongLong(); @@ -358,8 +358,8 @@ void PropertyEditor::rebuild() { tli->setFont(0, font_b); setItemBackColor(tli, Qt::darkGray); setItemForeColor(tli, Qt::white); + tli->setFirstColumnSpanned(true); addTopLevelItem(tli); - setFirstItemColumnSpanned(tli, true); tli->setExpanded(true); for (int i = ps; i < pe; ++i) { props << o->property(i); diff --git a/libs/widgets/ecombobox.cpp b/libs/widgets/ecombobox.cpp index c8125ab..cee4ce6 100644 --- a/libs/widgets/ecombobox.cpp +++ b/libs/widgets/ecombobox.cpp @@ -1,12 +1,11 @@ -#include #include -#include #include +#include #include "ecombobox.h" #include "qad_types.h" -class EModel: public QStandardItemModel { +class QAD_WIDGETS_EXPORT EModel: public QStandardItemModel { public: EModel(QObject * parent = 0): QStandardItemModel(parent) { #if QT_VERSION < 0x050000 @@ -21,10 +20,12 @@ protected: } #if QT_VERSION >= 0x050000 Qt::DropActions supportedDragActions() const {return Qt::MoveAction;} + Qt::DropActions supportedDropActions() const {return Qt::MoveAction;} #endif }; + EComboBox::EComboBox(QWidget * parent): QComboBox(parent) { setView(&iv); setModel(new EModel()); @@ -52,6 +53,7 @@ EComboBox::EComboBox(QWidget * parent): QComboBox(parent) { header.layout()->addWidget(&filter); header.setParent(iv.header()); connect(&filter, SIGNAL(textChanged(QString)), this, SLOT(filterChanged(QString))); + connect(model(), &EModel::layoutChanged, this, &EComboBox::rowsChanged); } diff --git a/libs/widgets/ecombobox.h b/libs/widgets/ecombobox.h index 4d1c88e..fd58ee1 100644 --- a/libs/widgets/ecombobox.h +++ b/libs/widgets/ecombobox.h @@ -52,7 +52,7 @@ private slots: void filterChanged(const QString & text, bool first = false); signals: - + void rowsChanged(); }; #endif // ECOMBOBOX_H diff --git a/libs/widgets/lang/qad_widgets_en.ts b/libs/widgets/lang/qad_widgets_en.ts index 0bf28b5..93e4d3a 100644 --- a/libs/widgets/lang/qad_widgets_en.ts +++ b/libs/widgets/lang/qad_widgets_en.ts @@ -5,7 +5,7 @@ CLineEdit - + Clear @@ -233,8 +233,8 @@ EComboBox - - + + Filter @@ -242,8 +242,8 @@ EvalSpinBox - - + + Clear @@ -251,32 +251,32 @@ MatrixEdit - + Cols: - + Rows: - + Null - + 0 - + Identity - + I @@ -284,23 +284,24 @@ PathEdit - + All files(*) - - + + Choose - + Select directory - + + Select file @@ -378,8 +379,8 @@ - - + + Press F1 for details @@ -525,57 +526,57 @@ QPIConfigWidget - + Name - + Value - + Type - + Comment - + Add item ... - + Add node ... - + Convert to item - + Convert to node - + Remove - + Expand all - + Collapse all @@ -625,7 +626,7 @@ QVariantEdit - + Invalid value @@ -655,23 +656,38 @@ StringListEdit + + + Apply + + - + Add - + Remove - + Clear + + + Clear All + + + + + Clear All? + + diff --git a/libs/widgets/lang/qad_widgets_ru.ts b/libs/widgets/lang/qad_widgets_ru.ts index e933d26..cce04c7 100644 --- a/libs/widgets/lang/qad_widgets_ru.ts +++ b/libs/widgets/lang/qad_widgets_ru.ts @@ -5,7 +5,7 @@ CLineEdit - + Clear Сбросить @@ -233,8 +233,8 @@ EComboBox - - + + Filter Фильтр @@ -242,8 +242,8 @@ EvalSpinBox - - + + Clear Очистить @@ -251,32 +251,32 @@ MatrixEdit - + Cols: Колонки: - + Rows: Строки: - + Null Обнулить - + 0 - + Identity Единичная - + I @@ -284,23 +284,24 @@ PathEdit - + All files(*) Все файлы(*) - - + + Choose Выберите - + Select directory Выберите директорию - + + Select file Выберите файл @@ -308,8 +309,8 @@ QCodeEdit - - + + Press F1 for details Нажмите F1 для справочной информации @@ -525,57 +526,57 @@ QPIConfigWidget - + Name Имя - + Value Значение - + Type Тип - + Comment Описание - + Add item ... Добавить поле ... - + Add node ... Добавить секцию ... - + Convert to item Преобразовать в значение - + Convert to node Преобразовать в секцию - + Remove Удалить - + Expand all Свернуть все - + Collapse all Развернуть все @@ -625,7 +626,7 @@ QVariantEdit - + Invalid value Неверное значение @@ -655,23 +656,38 @@ StringListEdit + + + Apply + Применить + - + Add Добавить - + Remove Удалить - + Clear Очистить + + + Clear All + Очистить всё + + + + Clear All? + Очистить всё? + diff --git a/libs/widgets/qad_widgets.qrc b/libs/widgets/qad_widgets.qrc index eb6398f..781f937 100644 --- a/libs/widgets/qad_widgets.qrc +++ b/libs/widgets/qad_widgets.qrc @@ -1,42 +1,43 @@ - - ../../icons/edit-clear-locationbar-rtl.png - ../../icons/edit-copy.png - ../../icons/edit-paste.png - ../../icons/edit-find.png - ../../icons/edit-delete.png - ../../icons/edit-clear.png - ../../icons/dialog-ok-apply.png - ../../icons/dialog-warning.png - ../../icons/tools-wizard.png - ../../icons/go-next.png - ../../icons/go-previous.png - ../../icons/item.png - ../../icons/item-add.png - ../../icons/node.png - ../../icons/node-add.png - ../../icons/list-add.png - ../../icons/document-new.png - ../../icons/document-edit.png - ../../icons/document-close.png - ../../icons/document-save.png - ../../icons/document-save-as.png - ../../icons/document-save-all.png - ../../icons/document-revert.png - ../../icons/document-open.png - ../../icons/document-open-recent.png - ../../icons/alpha.png - ../../icons/chardialog.png - ../../icons/clineedit.png - ../../icons/colorbutton.png - ../../icons/ecombobox.png - ../../icons/evalspinbox.png - ../../icons/qcodeedit.png - ../../icons/qpiconsole.png - ../../icons/qvariantedit.png - ../../icons/spinslider.png - ../../icons/code-word.png - ../../icons/f1.png - ../../icons/scroll_spin.png - + +../../icons/edit-clear-locationbar-rtl.png +../../icons/edit-copy.png +../../icons/edit-paste.png +../../icons/edit-find.png +../../icons/edit-delete.png +../../icons/edit-clear.png +../../icons/dialog-ok-apply.png +../../icons/dialog-warning.png +../../icons/tools-wizard.png +../../icons/go-next.png +../../icons/go-previous.png +../../icons/item.png +../../icons/item-add.png +../../icons/node.png +../../icons/node-add.png +../../icons/list-add.png +../../icons/list-edit-apply.png +../../icons/document-new.png +../../icons/document-edit.png +../../icons/document-close.png +../../icons/document-save.png +../../icons/document-save-as.png +../../icons/document-save-all.png +../../icons/document-revert.png +../../icons/document-open.png +../../icons/document-open-recent.png +../../icons/alpha.png +../../icons/chardialog.png +../../icons/clineedit.png +../../icons/colorbutton.png +../../icons/ecombobox.png +../../icons/evalspinbox.png +../../icons/qcodeedit.png +../../icons/qpiconsole.png +../../icons/qvariantedit.png +../../icons/spinslider.png +../../icons/code-word.png +../../icons/f1.png +../../icons/scroll_spin.png + diff --git a/libs/widgets/qvariantedit.cpp b/libs/widgets/qvariantedit.cpp index 5f7d8a9..9842354 100644 --- a/libs/widgets/qvariantedit.cpp +++ b/libs/widgets/qvariantedit.cpp @@ -1,14 +1,7 @@ #include "qvariantedit.h" #include #include - - -StringListEdit::~StringListEdit() { - delete combo; - delete butt_add; - delete butt_del; - delete butt_clear; -} +#include QStringList StringListEdit::value() const { @@ -19,10 +12,15 @@ QStringList StringListEdit::value() const { void StringListEdit::setValue(const QStringList & v) { + int pi = combo->currentIndex(); combo->clear(); if (!v.isEmpty()) { combo->addItems(v); - combo->setCurrentIndex(0); + if (pi < combo->count() && pi >= 0) { + combo->setCurrentIndex(pi); + } else { + combo->setCurrentIndex(0); + } } } @@ -47,36 +45,44 @@ void StringListEdit::clear() { } -StringListEdit::StringListEdit(QWidget * parent): QWidget(parent), lay(QBoxLayout::LeftToRight, this) { +StringListEdit::StringListEdit(QWidget * parent): QWidget(parent) { + lay = new QBoxLayout(QBoxLayout::LeftToRight); combo = new EComboBox(this); combo->setEditable(true); combo->setLineEdit(new CLineEdit); combo->setInsertPolicy(QComboBox::NoInsert); + butt_apply = new QPushButton(this); butt_add = new QPushButton(this); butt_del = new QPushButton(this); butt_clear = new QPushButton(this); - /*butt_add->setIconSize(QSize(16, 16)); - butt_del->setIconSize(QSize(16, 16)); - butt_clear->setIconSize(QSize(16, 16));*/ + butt_apply->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); butt_add->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); butt_del->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); butt_clear->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); + butt_apply->setIcon(QIcon(":/icons/list-edit-apply.png")); butt_add->setIcon(QIcon(":/icons/list-add.png")); - butt_del->setIcon(QIcon(":/icons/edit-delete.png")); + butt_del->setIcon(QIcon(":/icons/list-remove.png")); butt_clear->setIcon(QIcon(":/icons/edit-clear.png")); + butt_apply->setToolTip(tr("Apply")); butt_add->setToolTip(tr("Add")); butt_del->setToolTip(tr("Remove")); butt_clear->setToolTip(tr("Clear")); - lay.setContentsMargins(0, 0, 0, 0); - lay.setSpacing(2); - lay.addWidget(combo); - lay.addWidget(butt_add); - lay.addWidget(butt_del); - lay.addWidget(butt_clear); + lay->setContentsMargins(0, 0, 0, 0); + lay->setSpacing(2); + lay->addWidget(combo); + lay->addWidget(butt_apply); + lay->addWidget(butt_add); + lay->addWidget(butt_del); + lay->addWidget(butt_clear); + setLayout(lay); connect(combo->lineEdit(), SIGNAL(returnPressed()), this, SLOT(editItem())); + connect(combo, SIGNAL(rowsChanged()), this, SIGNAL(valueChanged())); + connect(butt_apply, SIGNAL(clicked(bool)), this, SLOT(editItem())); connect(butt_add, SIGNAL(clicked(bool)), this, SLOT(addItem())); connect(butt_del, SIGNAL(clicked(bool)), this, SLOT(delItem())); - connect(butt_clear, SIGNAL(clicked(bool)), this, SLOT(clear())); + connect(butt_clear, &QPushButton::clicked, [this](){ + if (QMessageBox::question(this, tr("Clear All"), tr("Clear All?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok) clear(); + }); } @@ -95,6 +101,7 @@ void StringListEdit::editItem() { int ci = combo->currentIndex(); if (ci < 0) return; combo->setItemText(ci, combo->currentText()); + emit valueChanged(); } @@ -104,14 +111,11 @@ PathEdit::PathEdit(QWidget * parent): QWidget(parent), lay(QBoxLayout::LeftToRig is_dir = is_abs = is_save = false; filter = tr("All files(*)"); line = new CLineEdit(this); - //line->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); butt_select = new QPushButton(this); - //butt_select->setIconSize(QSize(16, 16)); butt_select->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); butt_select->setIcon(QIcon(":/icons/document-open.png")); butt_select->setToolTip(tr("Choose") + " ..."); lay.setContentsMargins(0, 0, 0, 0); - //lay.setSpacing(2); lay.addWidget(line); lay.addWidget(butt_select); connect(line, SIGNAL(textChanged(QString)), this, SIGNAL(valueChanged())); @@ -188,7 +192,6 @@ QVariantEdit::~QVariantEdit() { void QVariantEdit::resizeEvent(QResizeEvent * e) { - //_resize(); QWidget::resizeEvent(e); } @@ -275,8 +278,6 @@ void QVariantEdit::_recreate(const QVariant & new_value) { case QMetaType::Double: #endif _espin = new EvalSpinBox(this); - //_spin->setDecimals(5); - //_spin->setRange(-1E+199, 1E+199); _cur_edit = _espin; connect(_espin, SIGNAL(valueChanged(double)), this, SLOT(_changed())); break; @@ -409,10 +410,8 @@ void QVariantEdit::_recreate(const QVariant & new_value) { } } } - //qDebug() << _cur_edit; if (_cur_edit) { _resize(); - //_cur_edit->show(); } _value = new_value; } @@ -610,7 +609,6 @@ void QVariantEdit::_newPath() { _value = _value.toString(); connect(_path, SIGNAL(valueChanged()), this, SLOT(_changed())); _resize(); - //_cur_edit->show(); } diff --git a/libs/widgets/qvariantedit.h b/libs/widgets/qvariantedit.h index 4bd466a..434e1fb 100644 --- a/libs/widgets/qvariantedit.h +++ b/libs/widgets/qvariantedit.h @@ -39,16 +39,15 @@ class QAD_WIDGETS_EXPORT StringListEdit: public QWidget Q_OBJECT public: StringListEdit(QWidget * parent = 0); - ~StringListEdit(); QStringList value() const; private: virtual void changeEvent(QEvent * e); - QBoxLayout lay; + QBoxLayout * lay; EComboBox * combo; - QPushButton * butt_add, * butt_del, * butt_clear; + QPushButton * butt_apply, * butt_add, * butt_del, * butt_clear; public slots: void setValue(const QStringList & v);