From 0bd73c19778c9bdbc8e6d85c120715e239a9bc0d Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Tue, 26 Jun 2018 15:47:22 +0200 Subject: Make GUI use recreated context --- gui/designwidget.cc | 83 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 49 insertions(+), 34 deletions(-) (limited to 'gui/designwidget.cc') diff --git a/gui/designwidget.cc b/gui/designwidget.cc index 326c2649..a989080e 100644 --- a/gui/designwidget.cc +++ b/gui/designwidget.cc @@ -82,7 +82,7 @@ class PipTreeItem : public ElementTreeItem IdString data; }; -DesignWidget::DesignWidget(Context *_ctx, QWidget *parent) : QWidget(parent), ctx(_ctx) +DesignWidget::DesignWidget(QWidget *parent) : QWidget(parent), ctx(nullptr) { treeWidget = new QTreeWidget(); @@ -92,39 +92,6 @@ DesignWidget::DesignWidget(Context *_ctx, QWidget *parent) : QWidget(parent), ct treeWidget->setHeaderLabel(QString("Items")); treeWidget->setContextMenuPolicy(Qt::CustomContextMenu); - // Add bels to tree - QTreeWidgetItem *bel_root = new QTreeWidgetItem(treeWidget); - bel_root->setText(0, QString("Bels")); - treeWidget->insertTopLevelItem(0, bel_root); - QList bel_items; - for (auto bel : ctx->getBels()) { - auto name = ctx->getBelName(bel); - bel_items.append(new BelTreeItem(name, ElementType::BEL, QString(name.c_str(ctx)))); - } - bel_root->addChildren(bel_items); - - // Add wires to tree - QTreeWidgetItem *wire_root = new QTreeWidgetItem(treeWidget); - QList wire_items; - wire_root->setText(0, QString("Wires")); - treeWidget->insertTopLevelItem(0, wire_root); - for (auto wire : ctx->getWires()) { - auto name = ctx->getWireName(wire); - wire_items.append(new WireTreeItem(name, ElementType::WIRE, QString(name.c_str(ctx)))); - } - wire_root->addChildren(wire_items); - - // Add pips to tree - QTreeWidgetItem *pip_root = new QTreeWidgetItem(treeWidget); - QList pip_items; - pip_root->setText(0, QString("Pips")); - treeWidget->insertTopLevelItem(0, pip_root); - for (auto pip : ctx->getPips()) { - auto name = ctx->getPipName(pip); - pip_items.append(new PipTreeItem(name, ElementType::PIP, QString(name.c_str(ctx)))); - } - pip_root->addChildren(pip_items); - // Add property view variantManager = new QtVariantPropertyManager(); variantFactory = new QtVariantEditorFactory(); @@ -158,6 +125,54 @@ DesignWidget::~DesignWidget() delete propertyEditor; } +void DesignWidget::newContext(Context *ctx) +{ + treeWidget->clear(); + this->ctx = ctx; + + // Add bels to tree + QTreeWidgetItem *bel_root = new QTreeWidgetItem(treeWidget); + bel_root->setText(0, QString("Bels")); + treeWidget->insertTopLevelItem(0, bel_root); + QList bel_items; + if (ctx) + { + for (auto bel : ctx->getBels()) { + auto name = ctx->getBelName(bel); + bel_items.append(new BelTreeItem(name, ElementType::BEL, QString(name.c_str(ctx)))); + } + } + bel_root->addChildren(bel_items); + + // Add wires to tree + QTreeWidgetItem *wire_root = new QTreeWidgetItem(treeWidget); + QList wire_items; + wire_root->setText(0, QString("Wires")); + treeWidget->insertTopLevelItem(0, wire_root); + if (ctx) + { + for (auto wire : ctx->getWires()) { + auto name = ctx->getWireName(wire); + wire_items.append(new WireTreeItem(name, ElementType::WIRE, QString(name.c_str(ctx)))); + } + } + wire_root->addChildren(wire_items); + + // Add pips to tree + QTreeWidgetItem *pip_root = new QTreeWidgetItem(treeWidget); + QList pip_items; + pip_root->setText(0, QString("Pips")); + treeWidget->insertTopLevelItem(0, pip_root); + if (ctx) + { + for (auto pip : ctx->getPips()) { + auto name = ctx->getPipName(pip); + pip_items.append(new PipTreeItem(name, ElementType::PIP, QString(name.c_str(ctx)))); + } + } + pip_root->addChildren(pip_items); +} + void DesignWidget::addProperty(QtVariantProperty *property, const QString &id) { propertyToId[property] = id; -- cgit v1.2.3