context menu and cleanup

This commit is contained in:
Miodrag Milanovic 2018-06-12 21:29:37 +02:00
parent 7b1c599947
commit 65bc2d3f39
2 changed files with 43 additions and 10 deletions

View File

@ -4,9 +4,6 @@
#include <string> #include <string>
#include "emb.h" #include "emb.h"
#include "pybindings.h" #include "pybindings.h"
#include "qtpropertymanager.h"
#include "qttreepropertybrowser.h"
#include "qtvariantproperty.h"
#include "ui_mainwindow.h" #include "ui_mainwindow.h"
#include <QDate> #include <QDate>
@ -18,6 +15,9 @@ MainWindow::MainWindow(Design *_design, QWidget *parent)
ui->setupUi(this); ui->setupUi(this);
ui->treeWidget->setColumnCount(1); ui->treeWidget->setColumnCount(1);
ui->treeWidget->setHeaderLabel(QString("Items")); ui->treeWidget->setHeaderLabel(QString("Items"));
ui->treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);
connect(ui->treeWidget, &QTreeWidget::customContextMenuRequested, this,
&MainWindow::prepareMenu);
QTreeWidgetItem *bel_root = new QTreeWidgetItem(ui->treeWidget); QTreeWidgetItem *bel_root = new QTreeWidgetItem(ui->treeWidget);
bel_root->setText(0, QString("Bels")); bel_root->setText(0, QString("Bels"));
@ -62,7 +62,8 @@ MainWindow::MainWindow(Design *_design, QWidget *parent)
emb::set_stdout(write); emb::set_stdout(write);
std::string title = "nextpnr-ice40 - " + design->chip.getChipName(); std::string title = "nextpnr-ice40 - " + design->chip.getChipName();
setWindowTitle(title.c_str()); setWindowTitle(title.c_str());
QtVariantPropertyManager *variantManager = new QtVariantPropertyManager();
variantManager = new QtVariantPropertyManager();
int i = 0; int i = 0;
QtProperty *topItem = variantManager->addProperty( QtProperty *topItem = variantManager->addProperty(
@ -221,9 +222,9 @@ MainWindow::MainWindow(Design *_design, QWidget *parent)
QString::number(i++) + QLatin1String(" Color Property")); QString::number(i++) + QLatin1String(" Color Property"));
topItem->addSubProperty(item); topItem->addSubProperty(item);
QtVariantEditorFactory *variantFactory = new QtVariantEditorFactory(); variantFactory = new QtVariantEditorFactory();
QtTreePropertyBrowser *variantEditor = new QtTreePropertyBrowser(); variantEditor = new QtTreePropertyBrowser();
variantEditor->setFactoryForManager(variantManager, variantFactory); variantEditor->setFactoryForManager(variantManager, variantFactory);
variantEditor->addProperty(topItem); variantEditor->addProperty(topItem);
variantEditor->setPropertiesWithoutValueMarked(true); variantEditor->setPropertiesWithoutValueMarked(true);
@ -234,13 +235,37 @@ MainWindow::MainWindow(Design *_design, QWidget *parent)
MainWindow::~MainWindow() MainWindow::~MainWindow()
{ {
delete variantManager;
// delete variantManager; delete variantFactory;
// delete variantFactory; delete variantEditor;
// delete variantEditor;
delete ui; 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); } void handle_system_exit() { exit(-1); }
int MainWindow::executePython(std::string command) int MainWindow::executePython(std::string command)

View File

@ -3,6 +3,9 @@
#include "emb.h" #include "emb.h"
#include "nextpnr.h" #include "nextpnr.h"
#include "qtpropertymanager.h"
#include "qttreepropertybrowser.h"
#include "qtvariantproperty.h"
#include <QMainWindow> #include <QMainWindow>
@ -27,11 +30,16 @@ class MainWindow : public QMainWindow
private Q_SLOTS: private Q_SLOTS:
void on_lineEdit_returnPressed(); void on_lineEdit_returnPressed();
void prepareMenu(const QPoint &pos);
void selectObject(QTreeWidgetItem *item);
private: private:
Ui::MainWindow *ui; Ui::MainWindow *ui;
emb::stdout_write_type write; emb::stdout_write_type write;
Design *design; Design *design;
QtVariantPropertyManager *variantManager;
QtVariantEditorFactory *variantFactory;
QtTreePropertyBrowser *variantEditor;
}; };
#endif // MAINWINDOW_H #endif // MAINWINDOW_H