Add ability for multiple selection, enable for select only items that make sense
This commit is contained in:
parent
790d7159bb
commit
2596b9fe17
@ -54,7 +54,7 @@ QT_BEGIN_NAMESPACE
|
|||||||
class QtPropertyPrivate
|
class QtPropertyPrivate
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
QtPropertyPrivate(QtAbstractPropertyManager *manager) : m_enabled(true), m_modified(false), m_manager(manager) {}
|
QtPropertyPrivate(QtAbstractPropertyManager *manager) : m_enabled(true), m_selectable(true), m_modified(false), m_manager(manager) {}
|
||||||
QtProperty *q_ptr;
|
QtProperty *q_ptr;
|
||||||
|
|
||||||
QSet<QtProperty *> m_parentItems;
|
QSet<QtProperty *> m_parentItems;
|
||||||
@ -66,6 +66,7 @@ public:
|
|||||||
QString m_name;
|
QString m_name;
|
||||||
QString m_id;
|
QString m_id;
|
||||||
bool m_enabled;
|
bool m_enabled;
|
||||||
|
bool m_selectable;
|
||||||
bool m_modified;
|
bool m_modified;
|
||||||
|
|
||||||
QtAbstractPropertyManager * const m_manager;
|
QtAbstractPropertyManager * const m_manager;
|
||||||
@ -260,6 +261,11 @@ bool QtProperty::isEnabled() const
|
|||||||
return d_ptr->m_enabled;
|
return d_ptr->m_enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool QtProperty::isSelectable() const
|
||||||
|
{
|
||||||
|
return d_ptr->m_selectable;
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns whether the property is modified.
|
Returns whether the property is modified.
|
||||||
|
|
||||||
@ -409,6 +415,15 @@ void QtProperty::setEnabled(bool enable)
|
|||||||
propertyChanged();
|
propertyChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QtProperty::setSelectable(bool selectable)
|
||||||
|
{
|
||||||
|
if (d_ptr->m_selectable == selectable)
|
||||||
|
return;
|
||||||
|
|
||||||
|
d_ptr->m_selectable = selectable;
|
||||||
|
propertyChanged();
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Sets the property's modified state according to the passed \a modified value.
|
Sets the property's modified state according to the passed \a modified value.
|
||||||
|
|
||||||
|
@ -83,6 +83,7 @@ public:
|
|||||||
QString propertyName() const;
|
QString propertyName() const;
|
||||||
QString propertyId() const;
|
QString propertyId() const;
|
||||||
bool isEnabled() const;
|
bool isEnabled() const;
|
||||||
|
bool isSelectable() const;
|
||||||
bool isModified() const;
|
bool isModified() const;
|
||||||
|
|
||||||
bool hasValue() const;
|
bool hasValue() const;
|
||||||
@ -97,6 +98,7 @@ public:
|
|||||||
void setPropertyName(const QString &text);
|
void setPropertyName(const QString &text);
|
||||||
void setPropertyId(const QString &text);
|
void setPropertyId(const QString &text);
|
||||||
void setEnabled(bool enable);
|
void setEnabled(bool enable);
|
||||||
|
void setSelectable(bool selectable);
|
||||||
void setModified(bool modified);
|
void setModified(bool modified);
|
||||||
|
|
||||||
bool isSubProperty()const;
|
bool isSubProperty()const;
|
||||||
|
@ -651,6 +651,11 @@ void QtTreePropertyBrowserPrivate::updateItem(QTreeWidgetItem *item)
|
|||||||
else
|
else
|
||||||
disableItem(item);
|
disableItem(item);
|
||||||
}
|
}
|
||||||
|
if (property->isSelectable()) {
|
||||||
|
item->setFlags(item->flags() | Qt::ItemIsSelectable);
|
||||||
|
} else {
|
||||||
|
item->setFlags(item->flags() & ~Qt::ItemIsSelectable);
|
||||||
|
}
|
||||||
m_treeWidget->viewport()->update();
|
m_treeWidget->viewport()->update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1339,6 +1339,7 @@ void addPropertyRecusively(QtVariantPropertyManager * manager,
|
|||||||
newProp->setWhatsThis(prop->whatsThis());
|
newProp->setWhatsThis(prop->whatsThis());
|
||||||
newProp->setModified(prop->isModified());
|
newProp->setModified(prop->isModified());
|
||||||
newProp->setEnabled(prop->isEnabled());
|
newProp->setEnabled(prop->isEnabled());
|
||||||
|
newProp->setSelectable(prop->isSelectable());
|
||||||
newProp->setValue(prop->value());
|
newProp->setValue(prop->value());
|
||||||
|
|
||||||
foreach(QtProperty * subProp, prop->subProperties())
|
foreach(QtProperty * subProp, prop->subProperties())
|
||||||
|
@ -35,6 +35,7 @@ class ElementTreeItem : public QTreeWidgetItem
|
|||||||
ElementTreeItem(ElementType t, QString str, QTreeWidgetItem *parent)
|
ElementTreeItem(ElementType t, QString str, QTreeWidgetItem *parent)
|
||||||
: QTreeWidgetItem(parent, QStringList(str)), type(t)
|
: QTreeWidgetItem(parent, QStringList(str)), type(t)
|
||||||
{
|
{
|
||||||
|
this->setFlags(this->flags() & ~Qt::ItemIsSelectable);
|
||||||
}
|
}
|
||||||
virtual ~ElementTreeItem(){};
|
virtual ~ElementTreeItem(){};
|
||||||
|
|
||||||
@ -49,6 +50,7 @@ class IdStringTreeItem : public ElementTreeItem
|
|||||||
public:
|
public:
|
||||||
IdStringTreeItem(IdString d, ElementType t, QString str, QTreeWidgetItem *parent) : ElementTreeItem(t, str, parent)
|
IdStringTreeItem(IdString d, ElementType t, QString str, QTreeWidgetItem *parent) : ElementTreeItem(t, str, parent)
|
||||||
{
|
{
|
||||||
|
this->setFlags(this->flags() | Qt::ItemIsSelectable);
|
||||||
this->data = d;
|
this->data = d;
|
||||||
}
|
}
|
||||||
virtual ~IdStringTreeItem(){};
|
virtual ~IdStringTreeItem(){};
|
||||||
@ -68,6 +70,7 @@ DesignWidget::DesignWidget(QWidget *parent) : QWidget(parent), ctx(nullptr), net
|
|||||||
treeWidget->setColumnCount(1);
|
treeWidget->setColumnCount(1);
|
||||||
treeWidget->setHeaderLabel("Items");
|
treeWidget->setHeaderLabel("Items");
|
||||||
treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);
|
treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
|
treeWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
|
||||||
|
|
||||||
// Add property view
|
// Add property view
|
||||||
variantManager = new QtVariantPropertyManager(this);
|
variantManager = new QtVariantPropertyManager(this);
|
||||||
@ -79,6 +82,7 @@ DesignWidget::DesignWidget(QWidget *parent) : QWidget(parent), ctx(nullptr), net
|
|||||||
propertyEditor->setPropertiesWithoutValueMarked(true);
|
propertyEditor->setPropertiesWithoutValueMarked(true);
|
||||||
propertyEditor->show();
|
propertyEditor->show();
|
||||||
propertyEditor->treeWidget()->setContextMenuPolicy(Qt::CustomContextMenu);
|
propertyEditor->treeWidget()->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
|
propertyEditor->treeWidget()->setSelectionMode(QAbstractItemView::ExtendedSelection);
|
||||||
|
|
||||||
QLineEdit *lineEdit = new QLineEdit();
|
QLineEdit *lineEdit = new QLineEdit();
|
||||||
lineEdit->setClearButtonEnabled(true);
|
lineEdit->setClearButtonEnabled(true);
|
||||||
@ -248,6 +252,7 @@ void DesignWidget::newContext(Context *ctx)
|
|||||||
QTreeWidgetItem *bel_root = new QTreeWidgetItem(treeWidget);
|
QTreeWidgetItem *bel_root = new QTreeWidgetItem(treeWidget);
|
||||||
QMap<QString, QTreeWidgetItem *> bel_items;
|
QMap<QString, QTreeWidgetItem *> bel_items;
|
||||||
bel_root->setText(0, "Bels");
|
bel_root->setText(0, "Bels");
|
||||||
|
bel_root->setFlags(bel_root->flags() & ~Qt::ItemIsSelectable);
|
||||||
treeWidget->insertTopLevelItem(0, bel_root);
|
treeWidget->insertTopLevelItem(0, bel_root);
|
||||||
if (ctx) {
|
if (ctx) {
|
||||||
for (auto bel : ctx->getBels()) {
|
for (auto bel : ctx->getBels()) {
|
||||||
@ -280,6 +285,7 @@ void DesignWidget::newContext(Context *ctx)
|
|||||||
QTreeWidgetItem *wire_root = new QTreeWidgetItem(treeWidget);
|
QTreeWidgetItem *wire_root = new QTreeWidgetItem(treeWidget);
|
||||||
QMap<QString, QTreeWidgetItem *> wire_items;
|
QMap<QString, QTreeWidgetItem *> wire_items;
|
||||||
wire_root->setText(0, "Wires");
|
wire_root->setText(0, "Wires");
|
||||||
|
wire_root->setFlags(wire_root->flags() & ~Qt::ItemIsSelectable);
|
||||||
treeWidget->insertTopLevelItem(0, wire_root);
|
treeWidget->insertTopLevelItem(0, wire_root);
|
||||||
if (ctx) {
|
if (ctx) {
|
||||||
for (auto wire : ctx->getWires()) {
|
for (auto wire : ctx->getWires()) {
|
||||||
@ -311,6 +317,7 @@ void DesignWidget::newContext(Context *ctx)
|
|||||||
QTreeWidgetItem *pip_root = new QTreeWidgetItem(treeWidget);
|
QTreeWidgetItem *pip_root = new QTreeWidgetItem(treeWidget);
|
||||||
QMap<QString, QTreeWidgetItem *> pip_items;
|
QMap<QString, QTreeWidgetItem *> pip_items;
|
||||||
pip_root->setText(0, "Pips");
|
pip_root->setText(0, "Pips");
|
||||||
|
pip_root->setFlags(pip_root->flags() & ~Qt::ItemIsSelectable);
|
||||||
treeWidget->insertTopLevelItem(0, pip_root);
|
treeWidget->insertTopLevelItem(0, pip_root);
|
||||||
#ifndef ARCH_ECP5
|
#ifndef ARCH_ECP5
|
||||||
if (ctx) {
|
if (ctx) {
|
||||||
@ -343,10 +350,12 @@ void DesignWidget::newContext(Context *ctx)
|
|||||||
|
|
||||||
nets_root = new QTreeWidgetItem(treeWidget);
|
nets_root = new QTreeWidgetItem(treeWidget);
|
||||||
nets_root->setText(0, "Nets");
|
nets_root->setText(0, "Nets");
|
||||||
|
nets_root->setFlags(nets_root->flags() & ~Qt::ItemIsSelectable);
|
||||||
treeWidget->insertTopLevelItem(0, nets_root);
|
treeWidget->insertTopLevelItem(0, nets_root);
|
||||||
|
|
||||||
cells_root = new QTreeWidgetItem(treeWidget);
|
cells_root = new QTreeWidgetItem(treeWidget);
|
||||||
cells_root->setText(0, "Cells");
|
cells_root->setText(0, "Cells");
|
||||||
|
cells_root->setFlags(cells_root->flags() & ~Qt::ItemIsSelectable);
|
||||||
treeWidget->insertTopLevelItem(0, cells_root);
|
treeWidget->insertTopLevelItem(0, cells_root);
|
||||||
|
|
||||||
updateTree();
|
updateTree();
|
||||||
@ -418,6 +427,7 @@ QtProperty *DesignWidget::addTopLevelProperty(const QString &id)
|
|||||||
QtProperty *topItem = groupManager->addProperty(id);
|
QtProperty *topItem = groupManager->addProperty(id);
|
||||||
propertyToId[topItem] = id;
|
propertyToId[topItem] = id;
|
||||||
idToProperty[id] = topItem;
|
idToProperty[id] = topItem;
|
||||||
|
topItem->setSelectable(false);
|
||||||
propertyEditor->addProperty(topItem);
|
propertyEditor->addProperty(topItem);
|
||||||
return topItem;
|
return topItem;
|
||||||
}
|
}
|
||||||
@ -485,12 +495,14 @@ void DesignWidget::addProperty(QtProperty *topItem, int propertyType, const QStr
|
|||||||
QtVariantProperty *item = readOnlyManager->addProperty(propertyType, name);
|
QtVariantProperty *item = readOnlyManager->addProperty(propertyType, name);
|
||||||
item->setValue(value);
|
item->setValue(value);
|
||||||
item->setPropertyId(getElementTypeName(type));
|
item->setPropertyId(getElementTypeName(type));
|
||||||
|
item->setSelectable(type != ElementType::NONE);
|
||||||
topItem->addSubProperty(item);
|
topItem->addSubProperty(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
QtProperty *DesignWidget::addSubGroup(QtProperty *topItem, const QString &name)
|
QtProperty *DesignWidget::addSubGroup(QtProperty *topItem, const QString &name)
|
||||||
{
|
{
|
||||||
QtProperty *item = groupManager->addProperty(name);
|
QtProperty *item = groupManager->addProperty(name);
|
||||||
|
item->setSelectable(false);
|
||||||
topItem->addSubProperty(item);
|
topItem->addSubProperty(item);
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user