Q3270
A Qt-based 3270 Terminal Emulator
Loading...
Searching...
No Matches
Terminal.h
1/*
2 * Q3270 Terminal Emulator
3 *
4 * Copyright (c) 2020–2025 Andy Styles
5 * SPDX-License-Identifier: BSD-3-Clause
6 *
7 * This file is part of Q3270.
8 * See the LICENSE file in the project root for full license information.
9 */
10
11#ifndef TERMINAL_H
12#define TERMINAL_H
13
14#include <QSettings>
15#include <QHostInfo>
16#include <QGraphicsSimpleTextItem>
17#include <QMenuBar>
18
19#include "ProcessDataStream.h"
20#include "SocketConnection.h"
21#include "Keyboard.h"
22#include "CodePage.h"
23#include "ActiveSettings.h"
24#include "Display/StatusBar.h"
25
26class Terminal : public QWidget
27{
28 Q_OBJECT
29
30 public:
31
32 Terminal(QGraphicsView *screen, ActiveSettings &activeSettings, CodePage &cp, Keyboard &kb, const Colours &cs);
33 ~Terminal();
34
35 void connectSession();
36
37 // int terminalWidth(bool alternate) { return(!alternate ? primaryScreen->width() : alternateScreen->width()); }
38 // int terminalHeight(bool alternate) { return(!alternate ? primaryScreen->height() : alternateScreen->height()); };
39 // int gridWidth(bool alternate) { return(!alternate ? primaryScreen->gridWidth() : alternateScreen->gridWidth()); };
40 // int gridHeight(bool alternate) { return(!alternate ? primaryScreen->gridHeight() : alternateScreen->gridHeight()); };
41 int terminalWidth(bool alternate) { return(!alternate ? 80 : activeSettings.getTerminalX()); };
42 int terminalHeight(bool alternate) { return(!alternate ? 24 : activeSettings.getTerminalY()); };
43 int gridWidth(bool alternate) { return(!alternate ? 80 * 12 : activeSettings.getTerminalX() * 12); };
44 int gridHeight(bool alternate) { return(!alternate ? 24 * 22 : activeSettings.getTerminalY() * 22); };
45
46 void setBlink(bool blink);
47 void setBlinkSpeed(int speed);
48
49 void setScreenStretch(bool scale);
50
52
53 void fit();
54
55 inline bool isConnected() { return sessionConnected; };
56
57 QList<QSslCertificate> getCertDetails() { return socket->getCertDetails(); };
58
59 signals:
60
61 void connectionEstablished();
62 void disconnected();
63 void windowClosed(Terminal *t);
64
65 public slots:
66
67 void closeConnection(QString message = "");
68 void closeEvent(QCloseEvent *closeEvent) override;
69 void setCurrentFont(QFont f);
70 void rulerStyle(Q3270::RulerStyle r);
71 void rulerChanged(bool on);
72 void changeCodePage(QString codepage);
73 void setFont(QFont font);
74 void setFontTweak(Q3270::FontTweak f);
75
76 void toggleRuler();
77
78 void resetStatusXSystem();
79 void setStatusInsert(const bool insert);
80 void setTWait();
81 void clearTWait();
82
83 // Set themes by name
84 void setColourTheme(const Colours &colours);
85
86 void copyText() { current->copyText(); };
87
88 void blinkText();
89 void blinkCursor();
90
91 bool eventFilter(QObject* obj, QEvent* event);
92
93 private:
94
95 void connectKeyboard();
96 void disconnectKeyboard();
97 void updateLockState();
98
99 void startTimers();
100 void stopTimers();
101
102 Keyboard &kbd;
103 CodePage &cp;
104
105 Colours palette;
106
107 ActiveSettings &activeSettings;
108
109 QGraphicsView *screen;
110
111 QGraphicsRectItem *notConnected;
112 QGraphicsSimpleTextItem *ncReason;
113
114 DisplayScreen *current;
115
116 StatusBar *statusBar;
117
118 ProcessDataStream *datastream;
119 SocketConnection *socket;
120
121 bool sessionConnected;
122
123 Qt::AspectRatioMode stretchScreen;
124
125 int blinkSpeed;
126 bool blink;
127
128 // Lock conditions
129 bool xClock;
130 bool xSystem;
131
132 // Whether the timer for a blink operation is short (blink timers when the
133 // thing being blinked is hidden are short so the 'off' phase is brief)
134 bool shortCursorBlink;
135 bool shortCharacterBlink;
136
137 QTimer *blinker;
138 QTimer *cursorBlinker;
139};
140
141#endif // TERMINAL_H
Definition ActiveSettings.h:20
The CodePage class.
Definition CodePage.h:27
Definition DisplayScreen.h:30
void copyText()
DisplayScreen::copyText - copy the text within the rubberband to the clipboard.
Definition DisplayScreen_Mouse.cpp:131
Keyboard::Keyboard - Keyboard input processing.
Definition Keyboard.h:25
Definition ProcessDataStream.h:27
Definition SocketConnection.h:35
QList< QSslCertificate > getCertDetails()
SocketConnection::getCertDetails()
Definition SocketConnection.cpp:225
Definition StatusBar.h:24
Definition Terminal.h:27
void setFont(QFont font)
Terminal::setFont - change the font on the primary and alternate screens.
Definition Terminal.cpp:133
void closeConnection(QString message="")
Terminal::closeConnection - terminate a connection.
Definition Terminal.cpp:313
void rulerChanged(bool on)
Terminal::rulerChanged - toggle the ruler.
Definition Terminal.cpp:200
void setStatusInsert(const bool insert)
Terminal::setStatusInsert - update the status bar with insert mode.
Definition Terminal.cpp:619
bool eventFilter(QObject *obj, QEvent *event)
Terminal::eventFilter - handle a change of internal geometry.
Definition Terminal.cpp:729
void setColourTheme(const Colours &colours)
Terminal::setColourTheme - switch the colour theme.
Definition Terminal.cpp:185
DisplayScreen * setAlternateScreen(bool alt)
Terminal::setAlternateScreen - switch screens.
Definition Terminal.cpp:587
void blinkCursor()
Terminal::blinkCursor - blink the cursor.
Definition Terminal.cpp:562
void closeEvent(QCloseEvent *closeEvent) override
Terminal::closeEvent - close the window.
Definition Terminal.cpp:442
void toggleRuler()
Terminal::toggleRuler - toggle the ruler.
Definition Terminal.cpp:215
void rulerStyle(Q3270::RulerStyle r)
Terminal::rulerStyle - change the ruler style.
Definition Terminal.cpp:230
void fit()
Terminal::fit - fit the window content according to user preference.
Definition Terminal.cpp:708
void connectSession()
Terminal::connectSession - connect to a host.
Definition Terminal.cpp:247
void resetStatusXSystem()
Terminal::resetStatusXSystem - Clear X System condition if possible.
Definition Terminal.cpp:668
void clearTWait()
Terminal::clearTWait - Clear the TWAIT condition.
Definition Terminal.cpp:649
void setTWait()
Terminal::setTWait - Set the TWAIT condition.
Definition Terminal.cpp:633
void setScreenStretch(bool scale)
Terminal::setScreenStretch - toggle the screen stretch and fit the content.
Definition Terminal.cpp:173
void changeCodePage(QString codepage)
Terminal::changeCodePage - change the code page.
Definition Terminal.cpp:497
void setBlinkSpeed(int speed)
Terminal::setBlinkSpeed - change the blink speed of the cursor.
Definition Terminal.cpp:482
~Terminal()
Terminal::~Terminal - destructor.
Definition Terminal.cpp:122
void setCurrentFont(QFont f)
Terminal::setCurrentFont - temporarily change the font on the current screen.
Definition Terminal.cpp:157
void blinkText()
Terminal::blinkText - blink any text.
Definition Terminal.cpp:538
void setBlink(bool blink)
Terminal::setBlink - turn cursor blinking on or off.
Definition Terminal.cpp:459
Definition Colours.h:19