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 <QStringList>
41
#include "kptyprocess.h"
46
* The Pty class is used to start the terminal process,
47
* send data to it, receive data from it and manipulate
48
* various properties of the pseudo-teletype interface
49
* used to communicate with the process.
51
* To use this class, construct an instance and connect
52
* to the sendData slot and receivedData signal to
53
* send data to or receive data from the process.
55
* To start the terminal process, call the start() method
56
* with the program name and appropriate arguments.
58
class Pty: public KPtyProcess
65
* Constructs a new Pty.
67
* Connect to the sendData() slot and receivedData() signal to prepare
68
* for sending and receiving data from the terminal process.
70
* To start the terminal process, call the run() method with the
71
* name of the program to start and appropriate arguments.
73
explicit Pty(QObject* parent = 0);
76
* Construct a process using an open pty master.
77
* See KPtyProcess::KPtyProcess()
79
explicit Pty(int ptyMasterFd, QObject* parent = 0);
84
* Starts the terminal process.
86
* Returns 0 if the process was started successfully or non-zero
89
* @param program Path to the program to start
90
* @param arguments Arguments to pass to the program being started
91
* @param environment A list of key=value pairs which will be added
92
* to the environment for the new process. At the very least this
93
* should include an assignment for the TERM environment variable.
94
* @param winid Specifies the value of the WINDOWID environment variable
95
* in the process's environment.
96
* @param addToUtmp Specifies whether a utmp entry should be created for
97
* the pty used. See K3Process::setUsePty()
98
* @param dbusService Specifies the value of the KONSOLE_DBUS_SERVICE
99
* environment variable in the process's environment.
100
* @param dbusSession Specifies the value of the KONSOLE_DBUS_SESSION
101
* environment variable in the process's environment.
103
int start( const QString& program,
104
const QStringList& arguments,
105
const QStringList& environment,
110
/** TODO: Document me */
111
void setWriteable(bool writeable);
114
* Enables or disables Xon/Xoff flow control. The flow control setting
115
* may be changed later by a terminal application, so flowControlEnabled()
116
* may not equal the value of @p on in the previous call to setFlowControlEnabled()
118
void setFlowControlEnabled(bool on);
120
/** Queries the terminal state and returns true if Xon/Xoff flow control is enabled. */
121
bool flowControlEnabled() const;
124
* Sets the size of the window (in lines and columns of characters)
125
* used by this teletype.
127
void setWindowSize(int lines, int cols);
129
/** Returns the size of the window used by this teletype. See setWindowSize() */
130
QSize windowSize() const;
132
/** TODO Document me */
133
void setErase(char erase);
139
* Returns the process id of the teletype's current foreground
140
* process. This is the process which is currently reading
141
* input sent to the terminal via. sendData()
143
* If there is a problem reading the foreground process group,
144
* 0 will be returned.
146
int foregroundProcessGroup() const;
151
* Put the pty into UTF-8 mode on systems which support it.
153
void setUtf8Mode(bool on);
156
* Suspend or resume processing of data from the standard
157
* output of the terminal process.
159
* See K3Process::suspend() and K3Process::resume()
161
* @param lock If true, processing of output is suspended,
162
* otherwise processing is resumed.
164
void lockPty(bool lock);
167
* Sends data to the process currently controlling the
168
* teletype ( whose id is returned by foregroundProcessGroup() )
170
* @param buffer Pointer to the data to send.
171
* @param length Length of @p buffer.
173
void sendData(const char* buffer, int length);
178
* Emitted when a new block of data is received from
181
* @param buffer Pointer to the data received.
182
* @param length Length of @p buffer
184
void receivedData(const char* buffer, int length);
187
void setupChildProcess();
190
// called when data is received from the terminal process
196
// takes a list of key=value pairs and adds them
197
// to the environment for the process
198
void addEnvironmentVariables(const QStringList& environment);