fix select multiple, and reinit model
This commit is contained in:
parent
0d3d149c4f
commit
9a30b6330b
@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
NEXTPNR_NAMESPACE_BEGIN
|
NEXTPNR_NAMESPACE_BEGIN
|
||||||
|
|
||||||
DesignWidget::DesignWidget(QWidget *parent) : QWidget(parent), ctx(nullptr)
|
DesignWidget::DesignWidget(QWidget *parent) : QWidget(parent), ctx(nullptr), selectionModel(nullptr)
|
||||||
{
|
{
|
||||||
// Add tree view
|
// Add tree view
|
||||||
treeView = new QTreeView();
|
treeView = new QTreeView();
|
||||||
@ -158,9 +158,6 @@ DesignWidget::DesignWidget(QWidget *parent) : QWidget(parent), ctx(nullptr)
|
|||||||
&DesignWidget::prepareMenuProperty);
|
&DesignWidget::prepareMenuProperty);
|
||||||
connect(propertyEditor->treeWidget(), &QTreeWidget::itemDoubleClicked, this, &DesignWidget::onItemDoubleClicked);
|
connect(propertyEditor->treeWidget(), &QTreeWidget::itemDoubleClicked, this, &DesignWidget::onItemDoubleClicked);
|
||||||
|
|
||||||
selectionModel = treeView->selectionModel();
|
|
||||||
connect(selectionModel, SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
|
|
||||||
SLOT(onSelectionChanged(const QItemSelection &, const QItemSelection &)));
|
|
||||||
connect(treeView, &QTreeWidget::customContextMenuRequested, this, &DesignWidget::prepareMenuTree);
|
connect(treeView, &QTreeWidget::customContextMenuRequested, this, &DesignWidget::prepareMenuTree);
|
||||||
|
|
||||||
history_index = -1;
|
history_index = -1;
|
||||||
@ -202,6 +199,8 @@ void DesignWidget::addToHistory(QModelIndex item)
|
|||||||
|
|
||||||
void DesignWidget::newContext(Context *ctx)
|
void DesignWidget::newContext(Context *ctx)
|
||||||
{
|
{
|
||||||
|
if (!ctx)
|
||||||
|
return;
|
||||||
|
|
||||||
highlightSelected.clear();
|
highlightSelected.clear();
|
||||||
history_ignore = false;
|
history_ignore = false;
|
||||||
@ -211,16 +210,13 @@ void DesignWidget::newContext(Context *ctx)
|
|||||||
|
|
||||||
highlightSelected.clear();
|
highlightSelected.clear();
|
||||||
this->ctx = ctx;
|
this->ctx = ctx;
|
||||||
|
treeView->setModel(nullptr);
|
||||||
treeModel->loadData(ctx);
|
treeModel->loadData(ctx);
|
||||||
|
|
||||||
updateTree();
|
updateTree();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignWidget::updateTree()
|
void DesignWidget::updateTree()
|
||||||
{
|
{
|
||||||
if (!ctx)
|
|
||||||
return;
|
|
||||||
|
|
||||||
clearProperties();
|
clearProperties();
|
||||||
|
|
||||||
QMap<ContextTreeItem *, int>::iterator i = highlightSelected.begin();
|
QMap<ContextTreeItem *, int>::iterator i = highlightSelected.begin();
|
||||||
@ -236,6 +232,10 @@ void DesignWidget::updateTree()
|
|||||||
}
|
}
|
||||||
|
|
||||||
treeModel->updateData(ctx);
|
treeModel->updateData(ctx);
|
||||||
|
treeView->setModel(treeModel);
|
||||||
|
selectionModel = treeView->selectionModel();
|
||||||
|
connect(selectionModel, SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
|
||||||
|
SLOT(onSelectionChanged(const QItemSelection &, const QItemSelection &)));
|
||||||
}
|
}
|
||||||
QtProperty *DesignWidget::addTopLevelProperty(const QString &id)
|
QtProperty *DesignWidget::addTopLevelProperty(const QString &id)
|
||||||
{
|
{
|
||||||
@ -310,21 +310,21 @@ QtProperty *DesignWidget::addSubGroup(QtProperty *topItem, const QString &name)
|
|||||||
void DesignWidget::onClickedBel(BelId bel, bool keep)
|
void DesignWidget::onClickedBel(BelId bel, bool keep)
|
||||||
{
|
{
|
||||||
ContextTreeItem *item = treeModel->nodeForIdType(ElementType::BEL, ctx->getBelName(bel).c_str(ctx));
|
ContextTreeItem *item = treeModel->nodeForIdType(ElementType::BEL, ctx->getBelName(bel).c_str(ctx));
|
||||||
selectionModel->setCurrentIndex(treeModel->indexFromNode(item), QItemSelectionModel::ClearAndSelect);
|
selectionModel->setCurrentIndex(treeModel->indexFromNode(item), keep ? QItemSelectionModel::Select : QItemSelectionModel::ClearAndSelect);
|
||||||
Q_EMIT selected(getDecals(ElementType::BEL, ctx->getBelName(bel)), keep);
|
Q_EMIT selected(getDecals(ElementType::BEL, ctx->getBelName(bel)), keep);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignWidget::onClickedWire(WireId wire, bool keep)
|
void DesignWidget::onClickedWire(WireId wire, bool keep)
|
||||||
{
|
{
|
||||||
ContextTreeItem *item = treeModel->nodeForIdType(ElementType::WIRE, ctx->getWireName(wire).c_str(ctx));
|
ContextTreeItem *item = treeModel->nodeForIdType(ElementType::WIRE, ctx->getWireName(wire).c_str(ctx));
|
||||||
selectionModel->setCurrentIndex(treeModel->indexFromNode(item), QItemSelectionModel::ClearAndSelect);
|
selectionModel->setCurrentIndex(treeModel->indexFromNode(item), keep ? QItemSelectionModel::Select : QItemSelectionModel::ClearAndSelect);
|
||||||
Q_EMIT selected(getDecals(ElementType::WIRE, ctx->getWireName(wire)), keep);
|
Q_EMIT selected(getDecals(ElementType::WIRE, ctx->getWireName(wire)), keep);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignWidget::onClickedPip(PipId pip, bool keep)
|
void DesignWidget::onClickedPip(PipId pip, bool keep)
|
||||||
{
|
{
|
||||||
ContextTreeItem *item = treeModel->nodeForIdType(ElementType::PIP, ctx->getPipName(pip).c_str(ctx));
|
ContextTreeItem *item = treeModel->nodeForIdType(ElementType::PIP, ctx->getPipName(pip).c_str(ctx));
|
||||||
selectionModel->setCurrentIndex(treeModel->indexFromNode(item), QItemSelectionModel::ClearAndSelect);
|
selectionModel->setCurrentIndex(treeModel->indexFromNode(item), keep ? QItemSelectionModel::Select : QItemSelectionModel::ClearAndSelect);
|
||||||
Q_EMIT selected(getDecals(ElementType::PIP, ctx->getPipName(pip)), keep);
|
Q_EMIT selected(getDecals(ElementType::PIP, ctx->getPipName(pip)), keep);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user