summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-console/MyPty.cpp1
-rw-r--r--noncore/apps/opie-console/TEmulation.cpp1
-rw-r--r--noncore/apps/opie-console/io_layer.h2
-rw-r--r--noncore/apps/opie-console/mainwindow.cpp5
-rw-r--r--noncore/apps/opie-console/session.cpp2
5 files changed, 9 insertions, 2 deletions
diff --git a/noncore/apps/opie-console/MyPty.cpp b/noncore/apps/opie-console/MyPty.cpp
index a2373bf..6b0d6f2 100644
--- a/noncore/apps/opie-console/MyPty.cpp
+++ b/noncore/apps/opie-console/MyPty.cpp
@@ -5,192 +5,193 @@
5/* -------------------------------------------------------------------------- */ 5/* -------------------------------------------------------------------------- */
6/* */ 6/* */
7/* Copyright (c) 1997,1998 by Lars Doelle <lars.doelle@on-line.de> */ 7/* Copyright (c) 1997,1998 by Lars Doelle <lars.doelle@on-line.de> */
8/* */ 8/* */
9/* This file is part of Konsole - an X terminal for KDE */ 9/* This file is part of Konsole - an X terminal for KDE */
10/* -------------------------------------------------------------------------- */ 10/* -------------------------------------------------------------------------- */
11 /* */ 11 /* */
12/* Ported Konsole to Qt/Embedded */ 12/* Ported Konsole to Qt/Embedded */
13 /* */ 13 /* */
14/* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */ 14/* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */
15 /* */ 15 /* */
16/* -------------------------------------------------------------------------- */ 16/* -------------------------------------------------------------------------- */
17 17
18/* If you're compiling konsole on non-Linux platforms and find 18/* If you're compiling konsole on non-Linux platforms and find
19 problems that you can track down to this file, please have 19 problems that you can track down to this file, please have
20 a look into ../README.ports, too. 20 a look into ../README.ports, too.
21*/ 21*/
22 22
23/*! \file 23/*! \file
24*/ 24*/
25 25
26/*! \class TEPty 26/*! \class TEPty
27 27
28 \brief Ptys provide a pseudo terminal connection to a program. 28 \brief Ptys provide a pseudo terminal connection to a program.
29 29
30 Although closely related to pipes, these pseudo terminal connections have 30 Although closely related to pipes, these pseudo terminal connections have
31 some ability, that makes it nessesary to uses them. Most importent, they 31 some ability, that makes it nessesary to uses them. Most importent, they
32 know about changing screen sizes and UNIX job control. 32 know about changing screen sizes and UNIX job control.
33 33
34 Within the terminal emulation framework, this class represents the 34 Within the terminal emulation framework, this class represents the
35 host side of the terminal together with the connecting serial line. 35 host side of the terminal together with the connecting serial line.
36 36
37 One can create many instances of this class within a program. 37 One can create many instances of this class within a program.
38 As a side effect of using this class, a signal(2) handler is 38 As a side effect of using this class, a signal(2) handler is
39 installed on SIGCHLD. 39 installed on SIGCHLD.
40 40
41 \par FIXME 41 \par FIXME
42 42
43 [NOTE: much of the technical stuff below will be replaced by forkpty.] 43 [NOTE: much of the technical stuff below will be replaced by forkpty.]
44 44
45 publish the SIGCHLD signal if not related to an instance. 45 publish the SIGCHLD signal if not related to an instance.
46 46
47 clearify TEPty::done vs. TEPty::~TEPty semantics. 47 clearify TEPty::done vs. TEPty::~TEPty semantics.
48 check if pty is restartable via run after done. 48 check if pty is restartable via run after done.
49 49
50 \par Pseudo terminals 50 \par Pseudo terminals
51 51
52 Pseudo terminals are a unique feature of UNIX, and always come in form of 52 Pseudo terminals are a unique feature of UNIX, and always come in form of
53 pairs of devices (/dev/ptyXX and /dev/ttyXX), which are connected to each 53 pairs of devices (/dev/ptyXX and /dev/ttyXX), which are connected to each
54 other by the operating system. One may think of them as two serial devices 54 other by the operating system. One may think of them as two serial devices
55 linked by a null-modem cable. Being based on devices the number of 55 linked by a null-modem cable. Being based on devices the number of
56 simultanous instances of this class is (globally) limited by the number of 56 simultanous instances of this class is (globally) limited by the number of
57 those device pairs, which is 256. 57 those device pairs, which is 256.
58 58
59 Another technic are UNIX 98 PTY's. These are supported also, and prefered 59 Another technic are UNIX 98 PTY's. These are supported also, and prefered
60 over the (obsolete) predecessor. 60 over the (obsolete) predecessor.
61 61
62 There's a sinister ioctl(2), signal(2) and job control stuff 62 There's a sinister ioctl(2), signal(2) and job control stuff
63 nessesary to make everything work as it should. 63 nessesary to make everything work as it should.
64*/ 64*/
65 65
66 66
67#include <qapplication.h> 67#include <qapplication.h>
68#include <qsocketnotifier.h> 68#include <qsocketnotifier.h>
69#include <qstring.h> 69#include <qstring.h>
70 70
71#include <stdlib.h> 71#include <stdlib.h>
72#include <stdio.h> 72#include <stdio.h>
73#include <signal.h> 73#include <signal.h>
74#include <fcntl.h> 74#include <fcntl.h>
75#include <unistd.h> 75#include <unistd.h>
76#include <termios.h> 76#include <termios.h>
77#include <sys/types.h> 77#include <sys/types.h>
78#include <sys/ioctl.h> 78#include <sys/ioctl.h>
79#include <sys/wait.h> 79#include <sys/wait.h>
80 80
81#ifdef HAVE_OPENPTY 81#ifdef HAVE_OPENPTY
82#include <pty.h> 82#include <pty.h>
83#endif 83#endif
84 84
85#include "procctl.h" 85#include "procctl.h"
86#include "MyPty.h" 86#include "MyPty.h"
87 87
88 88
89#undef VERBOSE_DEBUG 89#undef VERBOSE_DEBUG
90 90
91 91
92/* -------------------------------------------------------------------------- */ 92/* -------------------------------------------------------------------------- */
93 93
94/*! 94/*!
95 Informs the client program about the 95 Informs the client program about the
96 actual size of the window. 96 actual size of the window.
97*/ 97*/
98 98
99void MyPty::setSize(int lines, int columns) 99void MyPty::setSize(int lines, int columns)
100{ 100{
101 qWarning("setting size");
101 struct winsize wsize; 102 struct winsize wsize;
102 wsize.ws_row = (unsigned short)lines; 103 wsize.ws_row = (unsigned short)lines;
103 wsize.ws_col = (unsigned short)columns; 104 wsize.ws_col = (unsigned short)columns;
104 if(m_fd < 0) return; 105 if(m_fd < 0) return;
105 ioctl(m_fd,TIOCSWINSZ,(char *)&wsize); 106 ioctl(m_fd,TIOCSWINSZ,(char *)&wsize);
106} 107}
107 108
108 109
109void MyPty::donePty() 110void MyPty::donePty()
110{ 111{
111 // This is code from the Qt DumbTerminal example 112 // This is code from the Qt DumbTerminal example
112 int status = 0; 113 int status = 0;
113 114
114 ::close(m_fd); 115 ::close(m_fd);
115 116
116 if (m_cpid) { 117 if (m_cpid) {
117 kill(m_cpid, SIGHUP); 118 kill(m_cpid, SIGHUP);
118 //waitpid(m_cpid, &status, 0); 119 //waitpid(m_cpid, &status, 0);
119 delete m_sn_e; 120 delete m_sn_e;
120 delete m_sn_r; 121 delete m_sn_r;
121 m_sn_e = 0l; 122 m_sn_e = 0l;
122 m_sn_r = 0l; 123 m_sn_r = 0l;
123 } 124 }
124 125
125 m_cpid = 0; 126 m_cpid = 0;
126 m_fd = -1; 127 m_fd = -1;
127// emit done(status); 128// emit done(status);
128} 129}
129 130
130 131
131const char* MyPty::deviceName() 132const char* MyPty::deviceName()
132{ 133{
133 return m_ttynam; 134 return m_ttynam;
134} 135}
135 136
136 137
137void MyPty::error() 138void MyPty::error()
138{ 139{
139 // This is code from the Qt DumbTerminal example 140 // This is code from the Qt DumbTerminal example
140 donePty(); 141 donePty();
141} 142}
142 143
143void MyPty::start() { 144void MyPty::start() {
144 char* cmd = "/bin/sh"; 145 char* cmd = "/bin/sh";
145 QStrList lis; 146 QStrList lis;
146 int r =run(cmd, lis, 0, 0); 147 int r =run(cmd, lis, 0, 0);
147 r = r; 148 r = r;
148} 149}
149/*! 150/*!
150 start the client program. 151 start the client program.
151*/ 152*/
152int MyPty::run(const char* cmd, QStrList &, const char*, int) 153int MyPty::run(const char* cmd, QStrList &, const char*, int)
153{ 154{
154 // This is code from the Qt DumbTerminal example 155 // This is code from the Qt DumbTerminal example
155 m_cpid = fork(); 156 m_cpid = fork();
156 157
157 if ( !m_cpid ) { 158 if ( !m_cpid ) {
158 // child - exec shell on tty 159 // child - exec shell on tty
159 for (int sig = 1; sig < NSIG; sig++) signal(sig,SIG_DFL); 160 for (int sig = 1; sig < NSIG; sig++) signal(sig,SIG_DFL);
160 int ttyfd = ::open(m_ttynam, O_RDWR); 161 int ttyfd = ::open(m_ttynam, O_RDWR);
161 dup2(ttyfd, STDIN_FILENO); 162 dup2(ttyfd, STDIN_FILENO);
162 dup2(ttyfd, STDOUT_FILENO); 163 dup2(ttyfd, STDOUT_FILENO);
163 dup2(ttyfd, STDERR_FILENO); 164 dup2(ttyfd, STDERR_FILENO);
164 // should be done with tty, so close it 165 // should be done with tty, so close it
165 ::close(ttyfd); 166 ::close(ttyfd);
166 static struct termios ttmode; 167 static struct termios ttmode;
167 if ( setsid() < 0 ) 168 if ( setsid() < 0 )
168 perror( "failed to set process group" ); 169 perror( "failed to set process group" );
169#if defined (TIOCSCTTY) 170#if defined (TIOCSCTTY)
170 // grabbed from APUE by Stevens 171 // grabbed from APUE by Stevens
171 ioctl(STDIN_FILENO, TIOCSCTTY, 0); 172 ioctl(STDIN_FILENO, TIOCSCTTY, 0);
172#endif 173#endif
173 tcgetattr( STDIN_FILENO, &ttmode ); 174 tcgetattr( STDIN_FILENO, &ttmode );
174 ttmode.c_cc[VINTR] = 3; 175 ttmode.c_cc[VINTR] = 3;
175 ttmode.c_cc[VERASE] = 8; 176 ttmode.c_cc[VERASE] = 8;
176 tcsetattr( STDIN_FILENO, TCSANOW, &ttmode ); 177 tcsetattr( STDIN_FILENO, TCSANOW, &ttmode );
177 setenv("TERM","vt100",1); 178 setenv("TERM","vt100",1);
178 setenv("COLORTERM","0",1); 179 setenv("COLORTERM","0",1);
179 180
180 if (getuid() == 0) { 181 if (getuid() == 0) {
181 char msg[] = "WARNING: You are running this shell as root!\n"; 182 char msg[] = "WARNING: You are running this shell as root!\n";
182 write(ttyfd, msg, sizeof(msg)); 183 write(ttyfd, msg, sizeof(msg));
183 } 184 }
184 execl(cmd, cmd, 0); 185 execl(cmd, cmd, 0);
185 186
186 donePty(); 187 donePty();
187 exit(-1); 188 exit(-1);
188 } 189 }
189 190
190 // parent - continue as a widget 191 // parent - continue as a widget
191 delete m_sn_r; 192 delete m_sn_r;
192 m_sn_r = new QSocketNotifier(m_fd,QSocketNotifier::Read,this); 193 m_sn_r = new QSocketNotifier(m_fd,QSocketNotifier::Read,this);
193 delete m_sn_e; 194 delete m_sn_e;
194 m_sn_e = new QSocketNotifier(m_fd,QSocketNotifier::Exception,this); 195 m_sn_e = new QSocketNotifier(m_fd,QSocketNotifier::Exception,this);
195 connect(m_sn_r,SIGNAL(activated(int)),this,SLOT(readPty())); 196 connect(m_sn_r,SIGNAL(activated(int)),this,SLOT(readPty()));
196 connect(m_sn_e,SIGNAL(activated(int)),this,SLOT(error())); 197 connect(m_sn_e,SIGNAL(activated(int)),this,SLOT(error()));
diff --git a/noncore/apps/opie-console/TEmulation.cpp b/noncore/apps/opie-console/TEmulation.cpp
index 6f3ad32..7a0c624 100644
--- a/noncore/apps/opie-console/TEmulation.cpp
+++ b/noncore/apps/opie-console/TEmulation.cpp
@@ -114,192 +114,193 @@ TEmulation::TEmulation(TEWidget* gui)
114 QObject::connect(gui,SIGNAL(extendSelectionSignal(const int,const int)), 114 QObject::connect(gui,SIGNAL(extendSelectionSignal(const int,const int)),
115 this,SLOT(onSelectionExtend(const int,const int)) ); 115 this,SLOT(onSelectionExtend(const int,const int)) );
116 QObject::connect(gui,SIGNAL(endSelectionSignal(const BOOL)), 116 QObject::connect(gui,SIGNAL(endSelectionSignal(const BOOL)),
117 this,SLOT(setSelection(const BOOL)) ); 117 this,SLOT(setSelection(const BOOL)) );
118 QObject::connect(gui,SIGNAL(clearSelectionSignal()), 118 QObject::connect(gui,SIGNAL(clearSelectionSignal()),
119 this,SLOT(clearSelection()) ); 119 this,SLOT(clearSelection()) );
120} 120}
121 121
122/*! 122/*!
123*/ 123*/
124 124
125TEmulation::~TEmulation() 125TEmulation::~TEmulation()
126{ 126{
127 delete screen[0]; 127 delete screen[0];
128 delete screen[1]; 128 delete screen[1];
129 bulk_timer.stop(); 129 bulk_timer.stop();
130} 130}
131 131
132/*! change between primary and alternate screen 132/*! change between primary and alternate screen
133*/ 133*/
134 134
135void TEmulation::setScreen(int n) 135void TEmulation::setScreen(int n)
136{ 136{
137 scr = screen[n&1]; 137 scr = screen[n&1];
138} 138}
139 139
140void TEmulation::setHistory(bool on) 140void TEmulation::setHistory(bool on)
141{ 141{
142 screen[0]->setScroll(on); 142 screen[0]->setScroll(on);
143 if (!connected) return; 143 if (!connected) return;
144 showBulk(); 144 showBulk();
145} 145}
146 146
147bool TEmulation::history() 147bool TEmulation::history()
148{ 148{
149 return screen[0]->hasScroll(); 149 return screen[0]->hasScroll();
150} 150}
151 151
152void TEmulation::setCodec(int c) 152void TEmulation::setCodec(int c)
153{ 153{
154 //FIXME: check whether we have to free codec 154 //FIXME: check whether we have to free codec
155 codec = c ? QTextCodec::codecForName("utf8") 155 codec = c ? QTextCodec::codecForName("utf8")
156 : QTextCodec::codecForLocale(); 156 : QTextCodec::codecForLocale();
157 if (decoder) delete decoder; 157 if (decoder) delete decoder;
158 decoder = codec->makeDecoder(); 158 decoder = codec->makeDecoder();
159} 159}
160 160
161void TEmulation::setKeytrans(int no) 161void TEmulation::setKeytrans(int no)
162{ 162{
163 keytrans = KeyTrans::find(no); 163 keytrans = KeyTrans::find(no);
164} 164}
165 165
166void TEmulation::setKeytrans(const char * no) 166void TEmulation::setKeytrans(const char * no)
167{ 167{
168 keytrans = KeyTrans::find(no); 168 keytrans = KeyTrans::find(no);
169} 169}
170 170
171// Interpreting Codes --------------------------------------------------------- 171// Interpreting Codes ---------------------------------------------------------
172 172
173/* 173/*
174 This section deals with decoding the incoming character stream. 174 This section deals with decoding the incoming character stream.
175 Decoding means here, that the stream is first seperated into `tokens' 175 Decoding means here, that the stream is first seperated into `tokens'
176 which are then mapped to a `meaning' provided as operations by the 176 which are then mapped to a `meaning' provided as operations by the
177 `Screen' class. 177 `Screen' class.
178*/ 178*/
179 179
180/*! 180/*!
181*/ 181*/
182 182
183void TEmulation::onRcvChar(int c) 183void TEmulation::onRcvChar(int c)
184// process application unicode input to terminal 184// process application unicode input to terminal
185// this is a trivial scanner 185// this is a trivial scanner
186{ 186{
187 c &= 0xff; 187 c &= 0xff;
188 switch (c) 188 switch (c)
189 { 189 {
190 case '\b' : scr->BackSpace(); break; 190 case '\b' : scr->BackSpace(); break;
191 case '\t' : scr->Tabulate(); break; 191 case '\t' : scr->Tabulate(); break;
192 case '\n' : scr->NewLine(); break; 192 case '\n' : scr->NewLine(); break;
193 case '\r' : scr->Return(); break; 193 case '\r' : scr->Return(); break;
194 case 0x07 : gui->Bell(); break; 194 case 0x07 : gui->Bell(); break;
195 default : scr->ShowCharacter(c); break; 195 default : scr->ShowCharacter(c); break;
196 }; 196 };
197} 197}
198 198
199/* ------------------------------------------------------------------------- */ 199/* ------------------------------------------------------------------------- */
200/* */ 200/* */
201/* Keyboard Handling */ 201/* Keyboard Handling */
202/* */ 202/* */
203/* ------------------------------------------------------------------------- */ 203/* ------------------------------------------------------------------------- */
204 204
205/*! 205/*!
206*/ 206*/
207 207
208void TEmulation::onKeyPress( QKeyEvent* ev ) 208void TEmulation::onKeyPress( QKeyEvent* ev )
209{ 209{
210 qWarning("onKeyPress,....");
210 if (!connected) return; // someone else gets the keys 211 if (!connected) return; // someone else gets the keys
211 if (scr->getHistCursor() != scr->getHistLines()); 212 if (scr->getHistCursor() != scr->getHistLines());
212 scr->setHistCursor(scr->getHistLines()); 213 scr->setHistCursor(scr->getHistLines());
213 if (!ev->text().isEmpty()) 214 if (!ev->text().isEmpty())
214 { // A block of text 215 { // A block of text
215 // Note that the text is proper unicode. 216 // Note that the text is proper unicode.
216 // We should do a conversion here, but since this 217 // We should do a conversion here, but since this
217 // routine will never be used, we simply emit plain ascii. 218 // routine will never be used, we simply emit plain ascii.
218 emit sndBlock(ev->text().ascii(),ev->text().length()); 219 emit sndBlock(ev->text().ascii(),ev->text().length());
219 } 220 }
220 else if (ev->ascii()>0) 221 else if (ev->ascii()>0)
221 { unsigned char c[1]; 222 { unsigned char c[1];
222 c[0] = ev->ascii(); 223 c[0] = ev->ascii();
223 emit sndBlock((char*)c,1); 224 emit sndBlock((char*)c,1);
224 } 225 }
225} 226}
226 227
227// Unblocking, Byte to Unicode translation --------------------------------- -- 228// Unblocking, Byte to Unicode translation --------------------------------- --
228 229
229/* 230/*
230 We are doing code conversion from locale to unicode first. 231 We are doing code conversion from locale to unicode first.
231*/ 232*/
232 233
233void TEmulation::onRcvBlock(const char *s, int len) 234void TEmulation::onRcvBlock(const char *s, int len)
234{ 235{
235 bulkStart(); 236 bulkStart();
236 bulk_incnt += 1; 237 bulk_incnt += 1;
237 for (int i = 0; i < len; i++) 238 for (int i = 0; i < len; i++)
238 { 239 {
239 QString result = decoder->toUnicode(&s[i],1); 240 QString result = decoder->toUnicode(&s[i],1);
240 int reslen = result.length(); 241 int reslen = result.length();
241 for (int j = 0; j < reslen; j++) 242 for (int j = 0; j < reslen; j++)
242 onRcvChar(result[j].unicode()); 243 onRcvChar(result[j].unicode());
243 if (s[i] == '\n') bulkNewline(); 244 if (s[i] == '\n') bulkNewline();
244 } 245 }
245 bulkEnd(); 246 bulkEnd();
246} 247}
247 248
248// Selection --------------------------------------------------------------- -- 249// Selection --------------------------------------------------------------- --
249 250
250void TEmulation::onSelectionBegin(const int x, const int y) { 251void TEmulation::onSelectionBegin(const int x, const int y) {
251 if (!connected) return; 252 if (!connected) return;
252 scr->setSelBeginXY(x,y); 253 scr->setSelBeginXY(x,y);
253 showBulk(); 254 showBulk();
254} 255}
255 256
256void TEmulation::onSelectionExtend(const int x, const int y) { 257void TEmulation::onSelectionExtend(const int x, const int y) {
257 if (!connected) return; 258 if (!connected) return;
258 scr->setSelExtentXY(x,y); 259 scr->setSelExtentXY(x,y);
259 showBulk(); 260 showBulk();
260} 261}
261 262
262void TEmulation::setSelection(const BOOL preserve_line_breaks) { 263void TEmulation::setSelection(const BOOL preserve_line_breaks) {
263 if (!connected) return; 264 if (!connected) return;
264 QString t = scr->getSelText(preserve_line_breaks); 265 QString t = scr->getSelText(preserve_line_breaks);
265 if (!t.isNull()) gui->setSelection(t); 266 if (!t.isNull()) gui->setSelection(t);
266} 267}
267 268
268void TEmulation::clearSelection() { 269void TEmulation::clearSelection() {
269 if (!connected) return; 270 if (!connected) return;
270 scr->clearSelection(); 271 scr->clearSelection();
271 showBulk(); 272 showBulk();
272} 273}
273 274
274// Refreshing -------------------------------------------------------------- -- 275// Refreshing -------------------------------------------------------------- --
275 276
276#define BULK_TIMEOUT 20 277#define BULK_TIMEOUT 20
277 278
278/*! 279/*!
279 called when \n comes in. Evtl. triggers showBulk at endBulk 280 called when \n comes in. Evtl. triggers showBulk at endBulk
280*/ 281*/
281 282
282void TEmulation::bulkNewline() 283void TEmulation::bulkNewline()
283{ 284{
284 bulk_nlcnt += 1; 285 bulk_nlcnt += 1;
285 bulk_incnt = 0; // reset bulk counter since `nl' rule applies 286 bulk_incnt = 0; // reset bulk counter since `nl' rule applies
286} 287}
287 288
288/*! 289/*!
289*/ 290*/
290 291
291void TEmulation::showBulk() 292void TEmulation::showBulk()
292{ 293{
293 bulk_nlcnt = 0; // reset bulk newline counter 294 bulk_nlcnt = 0; // reset bulk newline counter
294 bulk_incnt = 0; // reset bulk counter 295 bulk_incnt = 0; // reset bulk counter
295 if (connected) 296 if (connected)
296 { 297 {
297 ca* image = scr->getCookedImage(); // get the image 298 ca* image = scr->getCookedImage(); // get the image
298 gui->setImage(image, 299 gui->setImage(image,
299 scr->getLines(), 300 scr->getLines(),
300 scr->getColumns()); // actual refresh 301 scr->getColumns()); // actual refresh
301 free(image); 302 free(image);
302 //FIXME: check that we do not trigger other draw event here. 303 //FIXME: check that we do not trigger other draw event here.
303 gui->setScroll(scr->getHistCursor(),scr->getHistLines()); 304 gui->setScroll(scr->getHistCursor(),scr->getHistLines());
304 } 305 }
305} 306}
diff --git a/noncore/apps/opie-console/io_layer.h b/noncore/apps/opie-console/io_layer.h
index d5f7eab..97a1e1c 100644
--- a/noncore/apps/opie-console/io_layer.h
+++ b/noncore/apps/opie-console/io_layer.h
@@ -27,100 +27,100 @@ public:
27 /* add more errors here */ 27 /* add more errors here */
28 }; 28 };
29 enum Feature { 29 enum Feature {
30 AutoConnect = 0, 30 AutoConnect = 0,
31 TransferFile =1, 31 TransferFile =1,
32 Close =2 32 Close =2
33 }; 33 };
34 /** 34 /**
35 * a small c'tor 35 * a small c'tor
36 */ 36 */
37 IOLayer(); 37 IOLayer();
38 38
39 /** 39 /**
40 * create an IOLayer instance from a config file 40 * create an IOLayer instance from a config file
41 * the currently set group stores the profile/session 41 * the currently set group stores the profile/session
42 * information 42 * information
43 */ 43 */
44 IOLayer( const Profile& ); 44 IOLayer( const Profile& );
45 45
46 /** 46 /**
47 * destructor 47 * destructor
48 */ 48 */
49 virtual ~IOLayer(); 49 virtual ~IOLayer();
50 50
51 /** 51 /**
52 * a small internal identifier 52 * a small internal identifier
53 */ 53 */
54 virtual QString identifier() const = 0; 54 virtual QString identifier() const = 0;
55 55
56 /** 56 /**
57 * a short name 57 * a short name
58 */ 58 */
59 virtual QString name() const = 0; 59 virtual QString name() const = 0;
60 60
61 /** 61 /**
62 * a file descriptor which opens 62 * a file descriptor which opens
63 * the device for io but does not 63 * the device for io but does not
64 * do any ioctling on it... 64 * do any ioctling on it...
65 * and it'll stop listening to the before opened 65 * and it'll stop listening to the before opened
66 * device 66 * device
67 */ 67 */
68 virtual int rawIO()const; 68 virtual int rawIO()const;
69 69
70 /** 70 /**
71 * will close the rawIO stuff 71 * will close the rawIO stuff
72 * and will listen to it's data again... 72 * and will listen to it's data again...
73 */ 73 */
74 virtual void closeRawIO(int); 74 virtual void closeRawIO(int);
75 75
76 /** 76 /**
77 * What does the IOLayer support? 77 * What does the IOLayer support?
78 * Bits are related to features 78 * Bits are related to features
79 */ 79 */
80 virtual QBitArray supports()const = 0; 80 virtual QBitArray supports()const = 0;
81 81
82 virtual bool isConnected() = 0; 82 virtual bool isConnected() = 0;
83 83
84signals: 84signals:
85 /** 85 /**
86 * received input as QCString 86 * received input as QCString
87 */ 87 */
88 virtual void received( const QByteArray& ); 88 virtual void received( const QByteArray& );
89 89
90 /** 90 /**
91 * an error occured 91 * an error occured
92 * int for the error number 92 * int for the error number
93 * and QString for a text 93 * and QString for a text
94 */ 94 */
95 virtual void error( int, const QString& ); 95 virtual void error( int, const QString& );
96 96
97 virtual void closed(); 97 virtual void closed();
98public slots: 98public slots:
99 /** 99 /**
100 * send a QCString to the device 100 * send a QCString to the device
101 */ 101 */
102 virtual void send( const QByteArray& ) = 0; 102 virtual void send( const QByteArray& ) = 0;
103 103
104 /** 104 /**
105 * bool open 105 * bool open
106 */ 106 */
107 virtual bool open() = 0; 107 virtual bool open() = 0;
108 108
109 /** 109 /**
110 * close the io 110 * close the io
111 */ 111 */
112 virtual void close() = 0; 112 virtual void close() = 0;
113 113
114 /** 114 /**
115 * closes and reloads the settings 115 * closes and reloads the settings
116 */ 116 */
117 virtual void reload( const Profile& ) = 0; 117 virtual void reload( const Profile& ) = 0;
118 118
119 /** 119 /**
120 * set the size 120 * set the size
121 * needed for pty 121 * needed for pty
122 */ 122 */
123 virtual void setSize(int rows, int cols ); 123 virtual void setSize(int lines, int cols );
124}; 124};
125 125
126#endif 126#endif
diff --git a/noncore/apps/opie-console/mainwindow.cpp b/noncore/apps/opie-console/mainwindow.cpp
index 0c89620..a7541f0 100644
--- a/noncore/apps/opie-console/mainwindow.cpp
+++ b/noncore/apps/opie-console/mainwindow.cpp
@@ -1,224 +1,227 @@
1#include <assert.h> 1#include <assert.h>
2 2
3#include <qaction.h> 3#include <qaction.h>
4#include <qmenubar.h> 4#include <qmenubar.h>
5#include <qlabel.h> 5#include <qlabel.h>
6#include <qpopupmenu.h> 6#include <qpopupmenu.h>
7#include <qtoolbar.h> 7#include <qtoolbar.h>
8#include <qmessagebox.h> 8#include <qmessagebox.h>
9#include <qpushbutton.h> 9#include <qpushbutton.h>
10#include <qwhatsthis.h> 10#include <qwhatsthis.h>
11 11
12#include <qpe/resource.h> 12#include <qpe/resource.h>
13 13
14#include <opie/ofiledialog.h> 14#include <opie/ofiledialog.h>
15 15
16#include "keytrans.h" 16#include "keytrans.h"
17#include "profileeditordialog.h" 17#include "profileeditordialog.h"
18#include "configdialog.h" 18#include "configdialog.h"
19#include "default.h" 19#include "default.h"
20#include "metafactory.h" 20#include "metafactory.h"
21#include "profile.h" 21#include "profile.h"
22#include "profilemanager.h" 22#include "profilemanager.h"
23#include "mainwindow.h" 23#include "mainwindow.h"
24#include "tabwidget.h" 24#include "tabwidget.h"
25#include "transferdialog.h" 25#include "transferdialog.h"
26#include "function_keyboard.h" 26#include "function_keyboard.h"
27#include "emulation_handler.h" 27#include "emulation_handler.h"
28#include "script.h" 28#include "script.h"
29#include "quick_button.h" 29#include "quick_button.h"
30 30
31 31
32 32
33MainWindow::MainWindow(QWidget *parent, const char *name, WFlags) : QMainWindow(parent, name, WStyle_ContextHelp) { 33MainWindow::MainWindow(QWidget *parent, const char *name, WFlags) : QMainWindow(parent, name, WStyle_ContextHelp) {
34 KeyTrans::loadAll(); 34 KeyTrans::loadAll();
35 for (int i = 0; i < KeyTrans::count(); i++ ) { 35 for (int i = 0; i < KeyTrans::count(); i++ ) {
36 KeyTrans* s = KeyTrans::find(i ); 36 KeyTrans* s = KeyTrans::find(i );
37 assert( s ); 37 assert( s );
38 } 38 }
39 m_factory = new MetaFactory(); 39 m_factory = new MetaFactory();
40 Default def(m_factory); 40 Default def(m_factory);
41 m_sessions.setAutoDelete( TRUE ); 41 m_sessions.setAutoDelete( TRUE );
42 m_curSession = 0; 42 m_curSession = 0;
43 m_manager = new ProfileManager( m_factory ); 43 m_manager = new ProfileManager( m_factory );
44 m_manager->load(); 44 m_manager->load();
45 45
46 initUI(); 46 initUI();
47 populateProfiles(); 47 populateProfiles();
48} 48}
49void MainWindow::initUI() { 49void MainWindow::initUI() {
50 setToolBarsMovable( FALSE ); 50 setToolBarsMovable( FALSE );
51 51
52 /* tool bar for the menu */ 52 /* tool bar for the menu */
53 m_tool = new QToolBar( this ); 53 m_tool = new QToolBar( this );
54 m_tool->setHorizontalStretchable( TRUE ); 54 m_tool->setHorizontalStretchable( TRUE );
55 55
56 m_bar = new QMenuBar( m_tool ); 56 m_bar = new QMenuBar( m_tool );
57 m_console = new QPopupMenu( this ); 57 m_console = new QPopupMenu( this );
58 m_scripts = new QPopupMenu( this ); 58 m_scripts = new QPopupMenu( this );
59 m_sessionsPop= new QPopupMenu( this ); 59 m_sessionsPop= new QPopupMenu( this );
60 //m_settings = new QPopupMenu( this ); 60 //m_settings = new QPopupMenu( this );
61 61
62 /* add a toolbar for icons */ 62 /* add a toolbar for icons */
63 m_icons = new QToolBar(this); 63 m_icons = new QToolBar(this);
64 64
65 65
66 66
67 67
68 /* 68 /*
69 * the settings action 69 * the settings action
70 */ 70 */
71 m_setProfiles = new QAction(tr("Configure Profiles"), 71 m_setProfiles = new QAction(tr("Configure Profiles"),
72 Resource::loadPixmap( "SettingsIcon" ), 72 Resource::loadPixmap( "SettingsIcon" ),
73 QString::null, 0, this, 0); 73 QString::null, 0, this, 0);
74 // m_setProfiles->addTo( m_settings ); 74 // m_setProfiles->addTo( m_settings );
75 m_setProfiles->addTo( m_icons ); 75 m_setProfiles->addTo( m_icons );
76 m_setProfiles->addTo( m_console ); 76 m_setProfiles->addTo( m_console );
77 connect( m_setProfiles, SIGNAL(activated() ), 77 connect( m_setProfiles, SIGNAL(activated() ),
78 this, SLOT(slotConfigure() ) ); 78 this, SLOT(slotConfigure() ) );
79 79
80 80 m_console->insertSeparator();
81 /* 81 /*
82 * new Action for new sessions 82 * new Action for new sessions
83 */ 83 */
84 QAction* a = new QAction(tr("New Connection"), 84 QAction* a = new QAction(tr("New Connection"),
85 Resource::loadPixmap( "new" ), 85 Resource::loadPixmap( "new" ),
86 QString::null, 0, this, 0); 86 QString::null, 0, this, 0);
87 a->addTo( m_console ); 87 a->addTo( m_console );
88 a->addTo( m_icons ); 88 a->addTo( m_icons );
89 connect(a, SIGNAL(activated() ), 89 connect(a, SIGNAL(activated() ),
90 this, SLOT(slotNew() ) ); 90 this, SLOT(slotNew() ) );
91 91
92 /* 92 /*
93 * connect action 93 * connect action
94 */ 94 */
95 m_connect = new QAction(); 95 m_connect = new QAction();
96 m_connect->setText( tr("Connect") ); 96 m_connect->setText( tr("Connect") );
97 m_connect->addTo( m_console ); 97 m_connect->addTo( m_console );
98 connect(m_connect, SIGNAL(activated() ), 98 connect(m_connect, SIGNAL(activated() ),
99 this, SLOT(slotConnect() ) ); 99 this, SLOT(slotConnect() ) );
100 100
101 /* 101 /*
102 * disconnect action 102 * disconnect action
103 */ 103 */
104 m_disconnect = new QAction(); 104 m_disconnect = new QAction();
105 m_disconnect->setText( tr("Disconnect") ); 105 m_disconnect->setText( tr("Disconnect") );
106 m_disconnect->addTo( m_console ); 106 m_disconnect->addTo( m_console );
107 connect(m_disconnect, SIGNAL(activated() ), 107 connect(m_disconnect, SIGNAL(activated() ),
108 this, SLOT(slotDisconnect() ) ); 108 this, SLOT(slotDisconnect() ) );
109 109
110 m_console->insertSeparator();
111
110 m_transfer = new QAction(); 112 m_transfer = new QAction();
111 m_transfer->setText( tr("Transfer file...") ); 113 m_transfer->setText( tr("Transfer file...") );
112 m_transfer->addTo( m_console ); 114 m_transfer->addTo( m_console );
113 connect(m_transfer, SIGNAL(activated() ), 115 connect(m_transfer, SIGNAL(activated() ),
114 this, SLOT(slotTransfer() ) ); 116 this, SLOT(slotTransfer() ) );
115 117
116 118
117 /* 119 /*
118 * fullscreen 120 * fullscreen
119 */ 121 */
120 m_isFullscreen = false; 122 m_isFullscreen = false;
121 123
122 m_fullscreen = new QAction( tr("Full screen"), Resource::loadPixmap( "fullscreen" ) 124 m_fullscreen = new QAction( tr("Full screen"), Resource::loadPixmap( "fullscreen" )
123 , QString::null, 0, this, 0); 125 , QString::null, 0, this, 0);
124 m_fullscreen->addTo( m_console ); 126 m_fullscreen->addTo( m_console );
125 m_fullscreen->addTo( m_icons ); 127 m_fullscreen->addTo( m_icons );
126 connect( m_fullscreen, SIGNAL( activated() ), 128 connect( m_fullscreen, SIGNAL( activated() ),
127 this, SLOT( slotFullscreen() ) ); 129 this, SLOT( slotFullscreen() ) );
128 130
131 m_console->insertSeparator();
129 /* 132 /*
130 * terminate action 133 * terminate action
131 */ 134 */
132 m_terminate = new QAction(); 135 m_terminate = new QAction();
133 m_terminate->setText( tr("Terminate") ); 136 m_terminate->setText( tr("Terminate") );
134 m_terminate->addTo( m_console ); 137 m_terminate->addTo( m_console );
135 connect(m_terminate, SIGNAL(activated() ), 138 connect(m_terminate, SIGNAL(activated() ),
136 this, SLOT(slotTerminate() ) ); 139 this, SLOT(slotTerminate() ) );
137 140
138 m_closewindow = new QAction(); 141 m_closewindow = new QAction();
139 m_closewindow->setText( tr("Close Window") ); 142 m_closewindow->setText( tr("Close Window") );
140 m_closewindow->addTo( m_console ); 143 m_closewindow->addTo( m_console );
141 connect( m_closewindow, SIGNAL(activated() ), 144 connect( m_closewindow, SIGNAL(activated() ),
142 this, SLOT(slotClose() ) ); 145 this, SLOT(slotClose() ) );
143 146
144 147
145 /* 148 /*
146 * script actions 149 * script actions
147 */ 150 */
148 m_recordScript = new QAction(tr("Record Script"), QString::null, 0, this, 0); 151 m_recordScript = new QAction(tr("Record Script"), QString::null, 0, this, 0);
149 m_recordScript->addTo(m_scripts); 152 m_recordScript->addTo(m_scripts);
150 connect(m_recordScript, SIGNAL(activated()), this, SLOT(slotRecordScript())); 153 connect(m_recordScript, SIGNAL(activated()), this, SLOT(slotRecordScript()));
151 154
152 m_saveScript = new QAction(tr("Save Script"), QString::null, 0, this, 0); 155 m_saveScript = new QAction(tr("Save Script"), QString::null, 0, this, 0);
153 m_saveScript->addTo(m_scripts); 156 m_saveScript->addTo(m_scripts);
154 connect(m_saveScript, SIGNAL(activated()), this, SLOT(slotSaveScript())); 157 connect(m_saveScript, SIGNAL(activated()), this, SLOT(slotSaveScript()));
155 158
156 m_runScript = new QAction(tr("Run Script"), QString::null, 0, this, 0); 159 m_runScript = new QAction(tr("Run Script"), QString::null, 0, this, 0);
157 m_runScript->addTo(m_scripts); 160 m_runScript->addTo(m_scripts);
158 connect(m_runScript, SIGNAL(activated()), this, SLOT(slotRunScript())); 161 connect(m_runScript, SIGNAL(activated()), this, SLOT(slotRunScript()));
159 162
160 /* 163 /*
161 * action that open/closes the keyboard 164 * action that open/closes the keyboard
162 */ 165 */
163 m_openKeys = new QAction (tr("Open Keyboard..."), 166 m_openKeys = new QAction (tr("Open Keyboard..."),
164 Resource::loadPixmap( "console/keyboard_icon.png" ), 167 Resource::loadPixmap( "console/keyboard_icon.png" ),
165 QString::null, 0, this, 0); 168 QString::null, 0, this, 0);
166 169
167 m_openKeys->setToggleAction(true); 170 m_openKeys->setToggleAction(true);
168 171
169 connect (m_openKeys, SIGNAL(toggled(bool)), 172 connect (m_openKeys, SIGNAL(toggled(bool)),
170 this, SLOT(slotOpenKeb(bool))); 173 this, SLOT(slotOpenKeb(bool)));
171 m_openKeys->addTo(m_icons); 174 m_openKeys->addTo(m_icons);
172 175
173 176
174 /* 177 /*
175 * action that open/closes the keyboard 178 * action that open/closes the keyboard
176 */ 179 */
177 m_openButtons = new QAction ( tr( "Open Buttons..." ), 180 m_openButtons = new QAction ( tr( "Open Buttons..." ),
178 Resource::loadPixmap( "down" ), 181 Resource::loadPixmap( "down" ),
179 QString::null, 0, this, 0 ); 182 QString::null, 0, this, 0 );
180 183
181 m_openButtons->setToggleAction( true ); 184 m_openButtons->setToggleAction( true );
182 185
183 connect ( m_openButtons, SIGNAL( toggled( bool ) ), 186 connect ( m_openButtons, SIGNAL( toggled( bool ) ),
184 this, SLOT( slotOpenButtons( bool ) ) ); 187 this, SLOT( slotOpenButtons( bool ) ) );
185 m_openButtons->addTo( m_icons ); 188 m_openButtons->addTo( m_icons );
186 189
187 190
188 /* insert the submenu */ 191 /* insert the submenu */
189 m_console->insertItem(tr("New from Profile"), m_sessionsPop, 192 m_console->insertItem(tr("New from Profile"), m_sessionsPop,
190 -1, 0); 193 -1, 0);
191 194
192 /* insert the connection menu */ 195 /* insert the connection menu */
193 m_bar->insertItem( tr("Connection"), m_console ); 196 m_bar->insertItem( tr("Connection"), m_console );
194 197
195 /* the scripts menu */ 198 /* the scripts menu */
196 m_bar->insertItem( tr("Scripts"), m_scripts ); 199 m_bar->insertItem( tr("Scripts"), m_scripts );
197 200
198 /* the settings menu */ 201 /* the settings menu */
199 // m_bar->insertItem( tr("Settings"), m_settings ); 202 // m_bar->insertItem( tr("Settings"), m_settings );
200 203
201 /* and the keyboard */ 204 /* and the keyboard */
202 m_keyBar = new QToolBar(this); 205 m_keyBar = new QToolBar(this);
203 addToolBar( m_keyBar, "Keyboard", QMainWindow::Top, TRUE ); 206 addToolBar( m_keyBar, "Keyboard", QMainWindow::Top, TRUE );
204 m_keyBar->setHorizontalStretchable( TRUE ); 207 m_keyBar->setHorizontalStretchable( TRUE );
205 m_keyBar->hide(); 208 m_keyBar->hide();
206 209
207 m_kb = new FunctionKeyboard(m_keyBar); 210 m_kb = new FunctionKeyboard(m_keyBar);
208 connect(m_kb, SIGNAL(keyPressed(ushort, ushort, bool, bool, bool)), 211 connect(m_kb, SIGNAL(keyPressed(ushort, ushort, bool, bool, bool)),
209 this, SLOT(slotKeyReceived(ushort, ushort, bool, bool, bool))); 212 this, SLOT(slotKeyReceived(ushort, ushort, bool, bool, bool)));
210 213
211 m_buttonBar = new QToolBar( this ); 214 m_buttonBar = new QToolBar( this );
212 addToolBar( m_buttonBar, "Buttons", QMainWindow::Top, TRUE ); 215 addToolBar( m_buttonBar, "Buttons", QMainWindow::Top, TRUE );
213 m_buttonBar->setHorizontalStretchable( TRUE ); 216 m_buttonBar->setHorizontalStretchable( TRUE );
214 m_buttonBar->hide(); 217 m_buttonBar->hide();
215 218
216 m_qb = new QuickButton( m_buttonBar ); 219 m_qb = new QuickButton( m_buttonBar );
217 connect( m_qb, SIGNAL( keyPressed( ushort, ushort, bool, bool, bool) ), 220 connect( m_qb, SIGNAL( keyPressed( ushort, ushort, bool, bool, bool) ),
218 this, SLOT( slotKeyReceived( ushort, ushort, bool, bool, bool) ) ); 221 this, SLOT( slotKeyReceived( ushort, ushort, bool, bool, bool) ) );
219 222
220 223
221 m_connect->setEnabled( false ); 224 m_connect->setEnabled( false );
222 m_disconnect->setEnabled( false ); 225 m_disconnect->setEnabled( false );
223 m_terminate->setEnabled( false ); 226 m_terminate->setEnabled( false );
224 m_transfer->setEnabled( false ); 227 m_transfer->setEnabled( false );
diff --git a/noncore/apps/opie-console/session.cpp b/noncore/apps/opie-console/session.cpp
index 2ce6872..03d0fcd 100644
--- a/noncore/apps/opie-console/session.cpp
+++ b/noncore/apps/opie-console/session.cpp
@@ -1,98 +1,100 @@
1 1
2 2
3#include "io_layer.h" 3#include "io_layer.h"
4#include "file_layer.h" 4#include "file_layer.h"
5#include "emulation_handler.h" 5#include "emulation_handler.h"
6#include "session.h" 6#include "session.h"
7 7
8 8
9Session::Session() { 9Session::Session() {
10 m_widget = 0l; 10 m_widget = 0l;
11 m_layer = 0l; 11 m_layer = 0l;
12 m_emu = 0l; 12 m_emu = 0l;
13} 13}
14Session::Session( const QString& na, QWidgetStack* widget, IOLayer* lay) 14Session::Session( const QString& na, QWidgetStack* widget, IOLayer* lay)
15 : m_name( na ), m_widget( widget ), m_layer( lay ) 15 : m_name( na ), m_widget( widget ), m_layer( lay )
16{ 16{
17// m_widLay = 0l; 17// m_widLay = 0l;
18// m_emLay = 0l; 18// m_emLay = 0l;
19 m_emu = 0l; 19 m_emu = 0l;
20} 20}
21Session::~Session() { 21Session::~Session() {
22 delete m_layer; 22 delete m_layer;
23 delete m_emu; 23 delete m_emu;
24 delete m_widget; 24 delete m_widget;
25 /* the widget layer should be deleted by the m_widget */ 25 /* the widget layer should be deleted by the m_widget */
26} 26}
27QString Session::name()const { 27QString Session::name()const {
28 return m_name; 28 return m_name;
29} 29}
30QWidgetStack* Session::widgetStack() { 30QWidgetStack* Session::widgetStack() {
31 return m_widget; 31 return m_widget;
32} 32}
33IOLayer* Session::layer() { 33IOLayer* Session::layer() {
34 return m_layer; 34 return m_layer;
35} 35}
36EmulationHandler* Session::emulationHandler() { 36EmulationHandler* Session::emulationHandler() {
37 return m_emu; 37 return m_emu;
38} 38}
39QWidget* Session::widget() { 39QWidget* Session::widget() {
40 if (!m_emu ) 40 if (!m_emu )
41 return 0l; 41 return 0l;
42 42
43 return m_emu->widget(); 43 return m_emu->widget();
44} 44}
45/* 45/*
46WidgetLayer* Session::emulationWidget() { 46WidgetLayer* Session::emulationWidget() {
47 return m_widLay; 47 return m_widLay;
48} 48}
49*/ 49*/
50void Session::connect() { 50void Session::connect() {
51 if ( !m_layer || !m_emu ) 51 if ( !m_layer || !m_emu )
52 return; 52 return;
53 53
54 QObject::connect(m_layer, SIGNAL(received(const QByteArray&) ), 54 QObject::connect(m_layer, SIGNAL(received(const QByteArray&) ),
55 m_emu, SLOT(recv(const QByteArray&) ) ); 55 m_emu, SLOT(recv(const QByteArray&) ) );
56 QObject::connect(m_emu, SIGNAL(send(const QByteArray&) ), 56 QObject::connect(m_emu, SIGNAL(send(const QByteArray&) ),
57 m_layer, SLOT(send(const QByteArray&) ) ); 57 m_layer, SLOT(send(const QByteArray&) ) );
58 QObject::connect(m_emu, SIGNAL(changeSize(int, int) ),
59 m_layer, SLOT(setSize(int, int) ) );
58} 60}
59 61
60void Session::disconnect() { 62void Session::disconnect() {
61 63
62 if ( !m_layer || !m_emu ) 64 if ( !m_layer || !m_emu )
63 return; 65 return;
64 66
65 QObject::disconnect(m_layer, SIGNAL(received(const QByteArray&) ), 67 QObject::disconnect(m_layer, SIGNAL(received(const QByteArray&) ),
66 m_emu, SLOT(recv(const QByteArray&) ) ); 68 m_emu, SLOT(recv(const QByteArray&) ) );
67 QObject::disconnect(m_emu, SIGNAL(send(const QByteArray&) ), 69 QObject::disconnect(m_emu, SIGNAL(send(const QByteArray&) ),
68 m_layer, SLOT(send(const QByteArray&) ) ); 70 m_layer, SLOT(send(const QByteArray&) ) );
69} 71}
70 72
71void Session::setName( const QString& na){ 73void Session::setName( const QString& na){
72 m_name = na; 74 m_name = na;
73} 75}
74 76
75void Session::setWidgetStack( QWidgetStack* wid ) { 77void Session::setWidgetStack( QWidgetStack* wid ) {
76 delete m_emu; 78 delete m_emu;
77 m_emu = 0l; 79 m_emu = 0l;
78 delete m_widget; 80 delete m_widget;
79 /* the EmulationLayer was destroyed... */ 81 /* the EmulationLayer was destroyed... */
80 82
81 m_widget = wid; 83 m_widget = wid;
82} 84}
83void Session::setIOLayer( IOLayer* lay ) { 85void Session::setIOLayer( IOLayer* lay ) {
84 delete m_layer; 86 delete m_layer;
85 m_layer = lay; 87 m_layer = lay;
86} 88}
87 89
88void Session::setEmulationHandler( EmulationHandler* lay ) { 90void Session::setEmulationHandler( EmulationHandler* lay ) {
89 delete m_emu; 91 delete m_emu;
90 m_emu = lay; 92 m_emu = lay;
91} 93}
92/* 94/*
93void Session::setEmulationWidget( WidgetLayer* lay ) { 95void Session::setEmulationWidget( WidgetLayer* lay ) {
94 delete m_widLay; 96 delete m_widLay;
95 m_widLay = lay; 97 m_widLay = lay;
96} 98}
97*/ 99*/
98 100