2
* This file is a part of QTerminal - http://gitorious.org/qterminal
4
* This file was un-linked from KDE and modified
5
* by Maxim Bourmistrov <maxim@unixconn.com>
10
This file is part of Konsole, KDE's terminal emulator.
12
Copyright 2007-2008 by Robert Knight <robertknight@gmail.com>
13
Copyright 1997,1998 by Lars Doelle <lars.doelle@on-line.de>
15
This program is free software; you can redistribute it and/or modify
16
it under the terms of the GNU General Public License as published by
17
the Free Software Foundation; either version 2 of the License, or
18
(at your option) any later version.
20
This program is distributed in the hope that it will be useful,
21
but WITHOUT ANY WARRANTY; without even the implied warranty of
22
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23
GNU General Public License for more details.
25
You should have received a copy of the GNU General Public License
26
along with this program; if not, write to the Free Software
27
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
35
#include <QtCore/QStringList>
36
#include <QtCore/QVector>
37
#include <QtCore/QList>
38
#include <QtCore/QSize>
41
#include "kptyprocess.h"
45
* The Pty class is used to start the terminal process,
46
* send data to it, receive data from it and manipulate
47
* various properties of the pseudo-teletype interface
48
* used to communicate with the process.
50
* To use this class, construct an instance and connect
51
* to the sendData slot and receivedData signal to
52
* send data to or receive data from the process.
54
* To start the terminal process, call the start() method
55
* with the program name and appropriate arguments.
57
class Pty: public KPtyProcess
64
* Constructs a new Pty.
66
* Connect to the sendData() slot and receivedData() signal to prepare
67
* for sending and receiving data from the terminal process.
69
* To start the terminal process, call the run() method with the
70
* name of the program to start and appropriate arguments.
72
explicit Pty(QObject* parent = 0);
75
* Construct a process using an open pty master.
76
* See KPtyProcess::KPtyProcess()
78
explicit Pty(int ptyMasterFd, QObject* parent = 0);
83
* Starts the terminal process.
85
* Returns 0 if the process was started successfully or non-zero
88
* @param program Path to the program to start
89
* @param arguments Arguments to pass to the program being started
90
* @param environment A list of key=value pairs which will be added
91
* to the environment for the new process. At the very least this
92
* should include an assignment for the TERM environment variable.
93
* @param winid Specifies the value of the WINDOWID environment variable
94
* in the process's environment.
95
* @param addToUtmp Specifies whether a utmp entry should be created for
96
* the pty used. See K3Process::setUsePty()
97
* @param dbusService Specifies the value of the KONSOLE_DBUS_SERVICE
98
* environment variable in the process's environment.
99
* @param dbusSession Specifies the value of the KONSOLE_DBUS_SESSION
100
* environment variable in the process's environment.
102
int start( const QString& program,
103
const QStringList& arguments,
104
const QStringList& environment,
109
/** TODO: Document me */
110
void setWriteable(bool writeable);
113
* Enables or disables Xon/Xoff flow control. The flow control setting
114
* may be changed later by a terminal application, so flowControlEnabled()
115
* may not equal the value of @p on in the previous call to setFlowControlEnabled()
117
void setFlowControlEnabled(bool on);
119
/** Queries the terminal state and returns true if Xon/Xoff flow control is enabled. */
120
bool flowControlEnabled() const;
123
* Sets the size of the window (in lines and columns of characters)
124
* used by this teletype.
126
void setWindowSize(int lines, int cols);
128
/** Returns the size of the window used by this teletype. See setWindowSize() */
129
QSize windowSize() const;
131
/** TODO Document me */
132
void setErase(char erase);
138
* Returns the process id of the teletype's current foreground
139
* process. This is the process which is currently reading
140
* input sent to the terminal via. sendData()
142
* If there is a problem reading the foreground process group,
143
* 0 will be returned.
145
int foregroundProcessGroup() const;
150
* Put the pty into UTF-8 mode on systems which support it.
152
void setUtf8Mode(bool on);
155
* Suspend or resume processing of data from the standard
156
* output of the terminal process.
158
* See K3Process::suspend() and K3Process::resume()
160
* @param lock If true, processing of output is suspended,
161
* otherwise processing is resumed.
163
void lockPty(bool lock);
166
* Sends data to the process currently controlling the
167
* teletype ( whose id is returned by foregroundProcessGroup() )
169
* @param buffer Pointer to the data to send.
170
* @param length Length of @p buffer.
172
void sendData(const char* buffer, int length);
177
* Emitted when a new block of data is received from
180
* @param buffer Pointer to the data received.
181
* @param length Length of @p buffer
183
void receivedData(const char* buffer, int length);
186
void setupChildProcess();
189
// called when data is received from the terminal process
195
// takes a list of key=value pairs and adds them
196
// to the environment for the process
197
void addEnvironmentVariables(const QStringList& environment);