Files
SOM/plugins/TerminalPlugin/TerminalPlugin.cpp

67 lines
1.6 KiB
C++

#include "TerminalPlugin.h"
#include <QVBoxLayout>
#include <QWidget>
#include <QApplication>
#include <QMenu>
#include <QAction>
QString TerminalPlugin::pname()
{
return "Terminal Plugin";
}
QString TerminalPlugin::pdesc()
{
return "Simple Terminal Plugin.";
}
QWidget* TerminalPlugin::pcontent()
{
QWidget *test = new QWidget();
QVBoxLayout *mainLayout = new QVBoxLayout;
console = new QTermWidget(test);
QFont font = QApplication::font();
font.setFamily("Monospace");
font.setPointSize(12);
console->setTerminalFont(font);
console->setScrollBarPosition(QTermWidget::ScrollBarRight);
console->setColorScheme("WhiteOnBlack");
console->setContextMenuPolicy(Qt::CustomContextMenu);
connect(console, &QWidget::customContextMenuRequested, this, [=](const QPoint &pos) {
QMenu menu;
QAction *copyAct = new QAction(tr("Copy"), &menu);
QAction *pasteAct = new QAction(tr("Paste"), &menu);
if (console->selectedText().isEmpty()) {
copyAct->setEnabled(false);
}
connect(copyAct, &QAction::triggered, [=]() {
console->copyClipboard();
});
connect(pasteAct, &QAction::triggered, [=]() {
console->pasteClipboard();
});
menu.addAction(copyAct);
menu.addAction(pasteAct);
QPoint globalPos = console->mapToGlobal(pos);
menu.exec(globalPos);
});
test->setWindowTitle(tr("Terminal Plugin"));
test->resize(600, 400);
mainLayout->addWidget(console);
test->setLayout(mainLayout);
return test;
}