Newly tweeked console.

This commit is contained in:
Ernie Pasveer
2025-09-07 14:47:35 -05:00
parent 248a7d11d1
commit 5c1209a1f3
2 changed files with 38 additions and 8 deletions
+36 -8
View File
@@ -57,9 +57,6 @@ SeerConsoleWidget::SeerConsoleWidget (QWidget* parent) : QWidget(parent) {
wrapTextCheckBox->setCheckState(Qt::Unchecked); // No wrap
// Create psuedo terminal for the console. Don't connect to it yet.
createTerminal();
// Connect things.
QObject::connect(clearButton, &QPushButton::clicked, this, &SeerConsoleWidget::handleClearButton);
QObject::connect(printButton, &QPushButton::clicked, this, &SeerConsoleWidget::handlePrintButton);
@@ -83,7 +80,7 @@ void SeerConsoleWidget::handleText (const char* buffer, int count) {
return;
}
// Write text to stdout on terminal that started Seer..
// Write text to stdout on terminal that started Seer..
if (isStdoutEnabled()) {
write (STDOUT_FILENO, buffer, count);
}
@@ -255,7 +252,7 @@ void SeerConsoleWidget::handleStdinLineEdit () {
std::string s = str.toStdString();
if (_ttyFD < 0) {
if (isTerminalCreated() == false) {
return;
}
@@ -270,7 +267,7 @@ void SeerConsoleWidget::handleStdinLineEdit () {
void SeerConsoleWidget::handleTerminalOutput (int socketfd) {
if (_ttyFD < 0) {
if (isTerminalCreated() == false) {
return;
}
@@ -303,6 +300,12 @@ void SeerConsoleWidget::handleTerminalOutput (int socketfd) {
void SeerConsoleWidget::createTerminal () {
// Is terminal already created?
if (isTerminalCreated()) {
qDebug() << "Terminal already created!";
return;
}
// Create tty and its permissions.
_ttyFD = posix_openpt(O_RDWR | O_NOCTTY);
@@ -358,7 +361,7 @@ void SeerConsoleWidget::deleteTerminal () {
_terminalDeviceName = "";
if (_ttyFD < 0) {
if (isTerminalCreated() == false) {
return;
}
@@ -372,7 +375,7 @@ void SeerConsoleWidget::connectTerminal () {
return;
}
if (_ttyFD < 0) {
if (isTerminalCreated() == false) {
qDebug() << "Can't connect Terminal. No _ttyFD!";
return;
}
@@ -394,6 +397,15 @@ void SeerConsoleWidget::disconnectTerminal () {
delete _ttyListener; _ttyListener = 0;
}
bool SeerConsoleWidget::isTerminalCreated () const {
if (_ttyFD >= 0) {
return true;
}
return false;
}
bool SeerConsoleWidget::isTerminalConnected () const {
if (_ttyListener != nullptr) {
@@ -403,6 +415,19 @@ bool SeerConsoleWidget::isTerminalConnected () const {
return false;
}
void SeerConsoleWidget::resetTerminal () {
if (isTerminalConnected()) {
disconnectTerminal();
}
if (isTerminalCreated() == true) {
deleteTerminal();
}
createTerminal();
}
const QString& SeerConsoleWidget::terminalDeviceName () const {
return _terminalDeviceName;
}
@@ -537,6 +562,9 @@ void SeerConsoleWidget::showEvent (QShowEvent* event) {
// Handle the event as normal.
QWidget::showEvent(event);
// Set focus on the text input.
stdinLineEdit->setFocus();
// Announce we are now visable.
emit newTextViewed();
}