rename libs/piqt_widgtes to libs/piqt_utils
add PIVariantEdit for PIGeoPosition
This commit is contained in:
74
libs/piqt_utils/pivariant_edit_enum.cpp
Normal file
74
libs/piqt_utils/pivariant_edit_enum.cpp
Normal file
@@ -0,0 +1,74 @@
|
||||
#include "pivariant_edit_enum.h"
|
||||
|
||||
#include "piqt.h"
|
||||
|
||||
|
||||
PIValueTreeEditEnum::PIValueTreeEditEnum(QWidget * parent): QDialog(parent) {
|
||||
setupUi(this);
|
||||
}
|
||||
|
||||
|
||||
PIValueTreeEditEnum::~PIValueTreeEditEnum() {}
|
||||
|
||||
|
||||
bool PIValueTreeEditEnum::showFor(const PIVariantTypes::Enum & v) {
|
||||
ret = PIVariantTypes::Enum();
|
||||
|
||||
treeWidget->clear();
|
||||
for (auto e: v.enum_list)
|
||||
addItem(PI2QString(e.name), e.value);
|
||||
|
||||
if (exec() != QDialog::Accepted) return false;
|
||||
|
||||
for (int i = 0; i < treeWidget->topLevelItemCount(); ++i) {
|
||||
auto * ti = treeWidget->topLevelItem(i);
|
||||
ret << PIVariantTypes::Enumerator(ti->text(1).toInt(), Q2PIString(ti->text(0)));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
QTreeWidgetItem * PIValueTreeEditEnum::addItem(QString n, int v) {
|
||||
auto * ti = new QTreeWidgetItem({n, QString::number(v)});
|
||||
treeWidget->addTopLevelItem(ti);
|
||||
auto f = ti->flags();
|
||||
f.setFlag(Qt::ItemIsEditable);
|
||||
ti->setFlags(f);
|
||||
return ti;
|
||||
}
|
||||
|
||||
|
||||
void PIValueTreeEditEnum::on_buttonAdd_clicked() {
|
||||
bool is_edit = false;
|
||||
for (int i = 0; i < treeWidget->topLevelItemCount(); ++i) {
|
||||
auto * ti = treeWidget->topLevelItem(i);
|
||||
for (int c = 0; c < treeWidget->columnCount(); ++c) {
|
||||
if (treeWidget->isPersistentEditorOpen(ti, c)) {
|
||||
is_edit = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (is_edit) break;
|
||||
}
|
||||
if (is_edit) {
|
||||
buttonAdd->setFocus();
|
||||
treeWidget->setFocus();
|
||||
}
|
||||
int max = -1;
|
||||
for (int i = 0; i < treeWidget->topLevelItemCount(); ++i)
|
||||
max = piMaxi(max, treeWidget->topLevelItem(i)->text(1).toInt());
|
||||
|
||||
auto * ti = addItem("name", max + 1);
|
||||
treeWidget->editItem(ti, 0);
|
||||
}
|
||||
|
||||
|
||||
void PIValueTreeEditEnum::on_buttonRemove_clicked() {
|
||||
qDeleteAll(treeWidget->selectedItems());
|
||||
}
|
||||
|
||||
|
||||
void PIValueTreeEditEnum::on_buttonClear_clicked() {
|
||||
treeWidget->clear();
|
||||
}
|
||||
Reference in New Issue
Block a user