Files
VoiletXterm/src/session/SessionFactory.cpp
T
liyepan 580abbcadf feat: VoiletXterm - Qt5 terminal workspace for SSH, Telnet and serial
Terminal core (src/core, QtCore only, headless testable):
- VT100/xterm parser: CSI/OSC/DCS, SGR 256/truecolor, scroll regions,
  insert/delete, DEC special graphics, alternate screen
- cell grid with 5000 line scrollback, CJK wide chars, combining marks
- xterm 256 color palette

Terminal widget (src/term):
- QPainter renderer with run batching, wide char clipping, cursor blink
- mouse selection (char/word/line), auto copy, middle click paste
- full key encoding: arrows + DECCKM, F1-F12, modifiers, ctrl/alt
- IME support via inputMethodEvent

Transports (src/session):
- SSH through the system OpenSSH client on a forkpty pseudo terminal,
  so agent, ProxyJump, known_hosts and 2FA keep working
- Telnet with IAC negotiation (NAWS, ECHO, SGA)
- Serial via QSerialPort

UI (src/ui):
- tabbed main window, session dialog with saved profiles
- dark violet theme, CLI targets (user@host:port, telnet://, serial:)

Tests:
- tests/test_core: escape sequence and layout assertions
- tests/test_widget: offscreen render checks and key encoding
2026-10-23 17:38:16 +08:00

24 lines
530 B
C++

#include "SessionFactory.h"
#include "SerialTransport.h"
#include "SshTransport.h"
#include "TelnetTransport.h"
#include "Transport.h"
namespace vx {
Transport *createTransport(const SessionSpec &spec, QObject *parent)
{
switch (spec.type) {
case SessionSpec::Ssh:
return new SshTransport(spec, parent);
case SessionSpec::Telnet:
return new TelnetTransport(spec, parent);
case SessionSpec::Serial:
return new SerialTransport(spec, parent);
}
return nullptr;
}
} // namespace vx