diff options
author | Clifford Wolf <clifford@clifford.at> | 2018-06-13 12:38:28 +0200 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2018-06-13 12:38:28 +0200 |
commit | 145c849596bdcd24f3b4e617eeb4ee06e1b93452 (patch) | |
tree | 243d63251d31498f4e92bfdae3ae0d0f087f9957 /gui | |
parent | 4d7f18dd98a7ef9540a279a8e27cb9dbef355af7 (diff) | |
parent | de0918c28758b09f638e02ffc04fad989321da1b (diff) | |
download | nextpnr-145c849596bdcd24f3b4e617eeb4ee06e1b93452.tar.gz nextpnr-145c849596bdcd24f3b4e617eeb4ee06e1b93452.tar.bz2 nextpnr-145c849596bdcd24f3b4e617eeb4ee06e1b93452.zip |
Merge branch 'master' of gitlab.com:SymbioticEDA/nextpnr
Diffstat (limited to 'gui')
-rw-r--r-- | gui/mainwindow.cc | 83 | ||||
-rw-r--r-- | gui/mainwindow.h | 8 |
2 files changed, 74 insertions, 17 deletions
diff --git a/gui/mainwindow.cc b/gui/mainwindow.cc index c436fd6c..5f62ecec 100644 --- a/gui/mainwindow.cc +++ b/gui/mainwindow.cc @@ -4,9 +4,6 @@ #include <string> #include "emb.h" #include "pybindings.h" -#include "qtpropertymanager.h" -#include "qttreepropertybrowser.h" -#include "qtvariantproperty.h" #include "ui_mainwindow.h" #include <QDate> @@ -18,16 +15,43 @@ MainWindow::MainWindow(Design *_design, QWidget *parent) ui->setupUi(this); ui->treeWidget->setColumnCount(1); ui->treeWidget->setHeaderLabel(QString("Items")); - QTreeWidgetItem *belroot = new QTreeWidgetItem(ui->treeWidget); - belroot->setText(0, QString("Bels")); - ui->treeWidget->insertTopLevelItem(0, belroot); - QList<QTreeWidgetItem *> items; + ui->treeWidget->setContextMenuPolicy(Qt::CustomContextMenu); + connect(ui->treeWidget, &QTreeWidget::customContextMenuRequested, this, + &MainWindow::prepareMenu); + + QTreeWidgetItem *bel_root = new QTreeWidgetItem(ui->treeWidget); + bel_root->setText(0, QString("Bels")); + ui->treeWidget->insertTopLevelItem(0, bel_root); + QList<QTreeWidgetItem *> bel_items; for (auto bel : design->chip.getBels()) { auto name = design->chip.getBelName(bel); - items.append(new QTreeWidgetItem((QTreeWidget *)nullptr, - QStringList(QString(name.c_str())))); + bel_items.append(new QTreeWidgetItem( + (QTreeWidget *)nullptr, QStringList(QString(name.c_str())))); } - belroot->addChildren(items); + bel_root->addChildren(bel_items); + + QTreeWidgetItem *wire_root = new QTreeWidgetItem(ui->treeWidget); + QList<QTreeWidgetItem *> wire_items; + wire_root->setText(0, QString("Wires")); + ui->treeWidget->insertTopLevelItem(0, wire_root); + for (auto wire : design->chip.getWires()) { + auto name = design->chip.getWireName(wire); + wire_items.append(new QTreeWidgetItem( + (QTreeWidget *)nullptr, QStringList(QString(name.c_str())))); + } + wire_root->addChildren(wire_items); + + QTreeWidgetItem *pip_root = new QTreeWidgetItem(ui->treeWidget); + QList<QTreeWidgetItem *> pip_items; + pip_root->setText(0, QString("Pips")); + ui->treeWidget->insertTopLevelItem(0, pip_root); + for (auto pip : design->chip.getPips()) { + auto name = design->chip.getPipName(pip); + pip_items.append(new QTreeWidgetItem( + (QTreeWidget *)nullptr, QStringList(QString(name.c_str())))); + } + pip_root->addChildren(pip_items); + PyImport_ImportModule("emb"); write = [this](std::string s) { @@ -38,7 +62,8 @@ MainWindow::MainWindow(Design *_design, QWidget *parent) emb::set_stdout(write); std::string title = "nextpnr-ice40 - " + design->chip.getChipName(); setWindowTitle(title.c_str()); - QtVariantPropertyManager *variantManager = new QtVariantPropertyManager(); + + variantManager = new QtVariantPropertyManager(); int i = 0; QtProperty *topItem = variantManager->addProperty( @@ -197,9 +222,9 @@ MainWindow::MainWindow(Design *_design, QWidget *parent) QString::number(i++) + QLatin1String(" Color Property")); topItem->addSubProperty(item); - QtVariantEditorFactory *variantFactory = new QtVariantEditorFactory(); + variantFactory = new QtVariantEditorFactory(); - QtTreePropertyBrowser *variantEditor = new QtTreePropertyBrowser(); + variantEditor = new QtTreePropertyBrowser(); variantEditor->setFactoryForManager(variantManager, variantFactory); variantEditor->addProperty(topItem); variantEditor->setPropertiesWithoutValueMarked(true); @@ -210,13 +235,37 @@ MainWindow::MainWindow(Design *_design, QWidget *parent) MainWindow::~MainWindow() { - - // delete variantManager; - // delete variantFactory; - // delete variantEditor; + delete variantManager; + delete variantFactory; + delete variantEditor; delete ui; } +void MainWindow::prepareMenu(const QPoint &pos) +{ + QTreeWidget *tree = ui->treeWidget; + + QTreeWidgetItem *item = tree->itemAt(pos); + + QAction *selectAction = new QAction("&Select", this); + selectAction->setStatusTip("Select item on view"); + connect(selectAction, SIGNAL(triggered()), this, SLOT(selectObject(item))); + + QMenu menu(this); + menu.addAction(selectAction); + + QPoint pt(pos); + menu.exec(tree->mapToGlobal(pos)); +} + +void MainWindow::selectObject(QTreeWidgetItem *item) +{ + ui->plainTextEdit->moveCursor(QTextCursor::End); + ui->plainTextEdit->insertPlainText( + std::string("selected " + item->text(0).toStdString() + "\n").c_str()); + ui->plainTextEdit->moveCursor(QTextCursor::End); +} + void handle_system_exit() { exit(-1); } int MainWindow::executePython(std::string command) diff --git a/gui/mainwindow.h b/gui/mainwindow.h index 6f3e515f..27918486 100644 --- a/gui/mainwindow.h +++ b/gui/mainwindow.h @@ -3,6 +3,9 @@ #include "emb.h" #include "nextpnr.h" +#include "qtpropertymanager.h" +#include "qttreepropertybrowser.h" +#include "qtvariantproperty.h" #include <QMainWindow> @@ -27,11 +30,16 @@ class MainWindow : public QMainWindow private Q_SLOTS: void on_lineEdit_returnPressed(); + void prepareMenu(const QPoint &pos); + void selectObject(QTreeWidgetItem *item); private: Ui::MainWindow *ui; emb::stdout_write_type write; Design *design; + QtVariantPropertyManager *variantManager; + QtVariantEditorFactory *variantFactory; + QtTreePropertyBrowser *variantEditor; }; #endif // MAINWINDOW_H |