mirror of
https://github.com/epasveer/seer.git
synced 2026-08-30 09:00:42 +08:00
Create console once per Seer session.
This commit is contained in:
+37
-26
@@ -53,9 +53,8 @@ SeerConsoleWidget::SeerConsoleWidget (QWidget* parent) : QWidget(parent) {
|
||||
|
||||
wrapTextCheckBox->setCheckState(Qt::Unchecked); // No wrap
|
||||
|
||||
// Create psuedo terminal for console.
|
||||
// Create psuedo terminal for console. Don't connect to it yet.
|
||||
createConsole();
|
||||
connectConsole();
|
||||
|
||||
// Connect things.
|
||||
QObject::connect(clearButton, &QPushButton::clicked, this, &SeerConsoleWidget::handleClearButton);
|
||||
@@ -71,12 +70,7 @@ SeerConsoleWidget::SeerConsoleWidget (QWidget* parent) : QWidget(parent) {
|
||||
}
|
||||
|
||||
SeerConsoleWidget::~SeerConsoleWidget () {
|
||||
disconnectConsole();
|
||||
deleteConsole();
|
||||
}
|
||||
|
||||
const QString& SeerConsoleWidget::ttyDeviceName () const {
|
||||
return _ttyDeviceName;
|
||||
deleteConsole(); // Will disconnect console first befor deleting.
|
||||
}
|
||||
|
||||
void SeerConsoleWidget::handleText (const char* buffer, int count) {
|
||||
@@ -246,10 +240,6 @@ void SeerConsoleWidget::handleStdinLineEdit () {
|
||||
|
||||
QString str = stdinLineEdit->text();
|
||||
|
||||
if (str == "") {
|
||||
return;
|
||||
}
|
||||
|
||||
stdinLineEdit->clear();
|
||||
|
||||
str += '\n';
|
||||
@@ -353,14 +343,31 @@ void SeerConsoleWidget::createConsole () {
|
||||
setScrollLines(0);
|
||||
}
|
||||
|
||||
void SeerConsoleWidget::connectConsole () {
|
||||
void SeerConsoleWidget::deleteConsole () {
|
||||
|
||||
disconnectConsole();
|
||||
|
||||
_ttyDeviceName = "";
|
||||
|
||||
if (_ptsFD < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
::close(_ptsFD); _ptsFD = -1;
|
||||
}
|
||||
|
||||
void SeerConsoleWidget::connectConsole () {
|
||||
|
||||
if (isConsoleConnected()) {
|
||||
qDebug() << "Console is already connected!";
|
||||
return;
|
||||
}
|
||||
|
||||
if (_ptsFD < 0) {
|
||||
qDebug() << "Can't connect Console. No _ptsFD!";
|
||||
return;
|
||||
}
|
||||
|
||||
_ptsListener = new QSocketNotifier(_ptsFD, QSocketNotifier::Read);
|
||||
|
||||
QObject::connect(_ptsListener, &QSocketNotifier::activated, this, &SeerConsoleWidget::handleConsoleOutput);
|
||||
@@ -368,23 +375,27 @@ void SeerConsoleWidget::connectConsole () {
|
||||
|
||||
void SeerConsoleWidget::disconnectConsole () {
|
||||
|
||||
if (_ptsListener) {
|
||||
|
||||
QObject::disconnect(_ptsListener, &QSocketNotifier::activated, this, &SeerConsoleWidget::handleConsoleOutput);
|
||||
|
||||
delete _ptsListener; _ptsListener = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void SeerConsoleWidget::deleteConsole () {
|
||||
|
||||
if (_ptsFD < 0) {
|
||||
if (isConsoleConnected() == false) {
|
||||
qDebug() << "Console is already disconnected!";
|
||||
return;
|
||||
}
|
||||
|
||||
_ttyDeviceName = "";
|
||||
QObject::disconnect(_ptsListener, &QSocketNotifier::activated, this, &SeerConsoleWidget::handleConsoleOutput);
|
||||
|
||||
::close(_ptsFD); _ptsFD = -1;
|
||||
delete _ptsListener; _ptsListener = 0;
|
||||
}
|
||||
|
||||
bool SeerConsoleWidget::isConsoleConnected () const {
|
||||
|
||||
if (_ptsListener != nullptr) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
const QString& SeerConsoleWidget::ttyDeviceName () const {
|
||||
return _ttyDeviceName;
|
||||
}
|
||||
|
||||
void SeerConsoleWidget::setScrollLines (int count) {
|
||||
|
||||
Reference in New Issue
Block a user