diff options
-rw-r--r-- | gui/infotab.cc | 17 | ||||
-rw-r--r-- | gui/infotab.h | 5 | ||||
-rw-r--r-- | gui/pythontab.cc | 17 | ||||
-rw-r--r-- | gui/pythontab.h | 4 |
4 files changed, 43 insertions, 0 deletions
diff --git a/gui/infotab.cc b/gui/infotab.cc index a5659569..7690b83c 100644 --- a/gui/infotab.cc +++ b/gui/infotab.cc @@ -9,6 +9,16 @@ InfoTab::InfoTab(QWidget *parent) : QWidget(parent) f.setStyleHint(QFont::Monospace);
plainTextEdit->setFont(f);
+ plainTextEdit->setContextMenuPolicy(Qt::CustomContextMenu);
+ QAction *clearAction = new QAction("Clear &buffer", this);
+ clearAction->setStatusTip("Clears display buffer");
+ connect(clearAction, SIGNAL(triggered()), this, SLOT(clearBuffer()));
+ contextMenu = plainTextEdit->createStandardContextMenu();
+ contextMenu->addSeparator();
+ contextMenu->addAction(clearAction);
+ connect(plainTextEdit, SIGNAL(customContextMenuRequested(const QPoint)),
+ this, SLOT(showContextMenu(const QPoint)));
+
QGridLayout *mainLayout = new QGridLayout();
mainLayout->addWidget(plainTextEdit);
setLayout(mainLayout);
@@ -20,3 +30,10 @@ void InfoTab::info(std::string str) plainTextEdit->insertPlainText(str.c_str());
plainTextEdit->moveCursor(QTextCursor::End);
}
+
+void InfoTab::showContextMenu(const QPoint &pt)
+{
+ contextMenu->exec(mapToGlobal(pt));
+}
+
+void InfoTab::clearBuffer() { plainTextEdit->clear(); }
diff --git a/gui/infotab.h b/gui/infotab.h index e3c58ba5..d7f1408c 100644 --- a/gui/infotab.h +++ b/gui/infotab.h @@ -1,6 +1,7 @@ #ifndef INFOTAB_H
#define INFOTAB_H
+#include <QMenu>
#include <QPlainTextEdit>
#include "nextpnr.h"
@@ -14,9 +15,13 @@ class InfoTab : public QWidget public:
explicit InfoTab(QWidget *parent = 0);
void info(std::string str);
+ private Q_SLOTS:
+ void showContextMenu(const QPoint &pt);
+ void clearBuffer();
private:
QPlainTextEdit *plainTextEdit;
+ QMenu *contextMenu;
};
#endif // INFOTAB_H
diff --git a/gui/pythontab.cc b/gui/pythontab.cc index 04db056d..96a6c4b9 100644 --- a/gui/pythontab.cc +++ b/gui/pythontab.cc @@ -15,6 +15,16 @@ PythonTab::PythonTab(QWidget *parent) : QWidget(parent) f.setStyleHint(QFont::Monospace);
plainTextEdit->setFont(f);
+ plainTextEdit->setContextMenuPolicy(Qt::CustomContextMenu);
+ QAction *clearAction = new QAction("Clear &buffer", this);
+ clearAction->setStatusTip("Clears display buffer");
+ connect(clearAction, SIGNAL(triggered()), this, SLOT(clearBuffer()));
+ contextMenu = plainTextEdit->createStandardContextMenu();
+ contextMenu->addSeparator();
+ contextMenu->addAction(clearAction);
+ connect(plainTextEdit, SIGNAL(customContextMenuRequested(const QPoint)),
+ this, SLOT(showContextMenu(const QPoint)));
+
lineEdit = new LineEditor();
lineEdit->setMinimumHeight(30);
lineEdit->setMaximumHeight(30);
@@ -98,3 +108,10 @@ void PythonTab::editLineReturnPressed(QString text) print(std::string(">>> " + input + "\n"));
int error = executePython(input);
}
+
+void PythonTab::showContextMenu(const QPoint &pt)
+{
+ contextMenu->exec(mapToGlobal(pt));
+}
+
+void PythonTab::clearBuffer() { plainTextEdit->clear(); }
\ No newline at end of file diff --git a/gui/pythontab.h b/gui/pythontab.h index 3876b3df..5aed8b0b 100644 --- a/gui/pythontab.h +++ b/gui/pythontab.h @@ -2,6 +2,7 @@ #define PYTHONTAB_H
#include <QLineEdit>
+#include <QMenu>
#include <QPlainTextEdit>
#include "emb.h"
#include "line_editor.h"
@@ -22,10 +23,13 @@ class PythonTab : public QWidget int executePython(std::string &command);
private Q_SLOTS:
void editLineReturnPressed(QString text);
+ void showContextMenu(const QPoint &pt);
+ void clearBuffer();
private:
QPlainTextEdit *plainTextEdit;
LineEditor *lineEdit;
+ QMenu *contextMenu;
emb::stdout_write_type write;
};
|