summaryrefslogtreecommitdiff
authorzecke <zecke>2002-10-22 14:25:05 (UTC)
committer zecke <zecke>2002-10-22 14:25:05 (UTC)
commit53a21f61d99d62e62412e1b5ca9bde085b25bde5 (patch) (unidiff)
tree894a1162468586710213945647d835dd94a3f5f1
parente006ea7655b455974ae64c30098eeecb7304508b (diff)
downloadopie-53a21f61d99d62e62412e1b5ca9bde085b25bde5.zip
opie-53a21f61d99d62e62412e1b5ca9bde085b25bde5.tar.gz
opie-53a21f61d99d62e62412e1b5ca9bde085b25bde5.tar.bz2
set $TERM in MyPty according to the terminal type
emulation_handler set the keyfilter right for the right terminal filetransfer fix warnings profile add Linux, XTerm as Emulation options TerminalWidget add Linux,XTerm
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-console/MyPty.cpp19
-rw-r--r--noncore/apps/opie-console/MyPty.h1
-rw-r--r--noncore/apps/opie-console/emulation_handler.cpp17
-rw-r--r--noncore/apps/opie-console/filetransfer.cpp3
-rw-r--r--noncore/apps/opie-console/filetransfer.h8
-rw-r--r--noncore/apps/opie-console/profile.h5
-rw-r--r--noncore/apps/opie-console/terminalwidget.cpp24
7 files changed, 61 insertions, 16 deletions
diff --git a/noncore/apps/opie-console/MyPty.cpp b/noncore/apps/opie-console/MyPty.cpp
index 6b0d6f2..16bb5ff 100644
--- a/noncore/apps/opie-console/MyPty.cpp
+++ b/noncore/apps/opie-console/MyPty.cpp
@@ -154,49 +154,49 @@ int MyPty::run(const char* cmd, QStrList &, const char*, int)
154{ 154{
155 // This is code from the Qt DumbTerminal example 155 // This is code from the Qt DumbTerminal example
156 m_cpid = fork(); 156 m_cpid = fork();
157 157
158 if ( !m_cpid ) { 158 if ( !m_cpid ) {
159 // child - exec shell on tty 159 // child - exec shell on tty
160 for (int sig = 1; sig < NSIG; sig++) signal(sig,SIG_DFL); 160 for (int sig = 1; sig < NSIG; sig++) signal(sig,SIG_DFL);
161 int ttyfd = ::open(m_ttynam, O_RDWR); 161 int ttyfd = ::open(m_ttynam, O_RDWR);
162 dup2(ttyfd, STDIN_FILENO); 162 dup2(ttyfd, STDIN_FILENO);
163 dup2(ttyfd, STDOUT_FILENO); 163 dup2(ttyfd, STDOUT_FILENO);
164 dup2(ttyfd, STDERR_FILENO); 164 dup2(ttyfd, STDERR_FILENO);
165 // should be done with tty, so close it 165 // should be done with tty, so close it
166 ::close(ttyfd); 166 ::close(ttyfd);
167 static struct termios ttmode; 167 static struct termios ttmode;
168 if ( setsid() < 0 ) 168 if ( setsid() < 0 )
169 perror( "failed to set process group" ); 169 perror( "failed to set process group" );
170#if defined (TIOCSCTTY) 170#if defined (TIOCSCTTY)
171 // grabbed from APUE by Stevens 171 // grabbed from APUE by Stevens
172 ioctl(STDIN_FILENO, TIOCSCTTY, 0); 172 ioctl(STDIN_FILENO, TIOCSCTTY, 0);
173#endif 173#endif
174 tcgetattr( STDIN_FILENO, &ttmode ); 174 tcgetattr( STDIN_FILENO, &ttmode );
175 ttmode.c_cc[VINTR] = 3; 175 ttmode.c_cc[VINTR] = 3;
176 ttmode.c_cc[VERASE] = 8; 176 ttmode.c_cc[VERASE] = 8;
177 tcsetattr( STDIN_FILENO, TCSANOW, &ttmode ); 177 tcsetattr( STDIN_FILENO, TCSANOW, &ttmode );
178 setenv("TERM","vt100",1); 178 setenv("TERM",m_term,1);
179 setenv("COLORTERM","0",1); 179 setenv("COLORTERM","0",1);
180 180
181 if (getuid() == 0) { 181 if (getuid() == 0) {
182 char msg[] = "WARNING: You are running this shell as root!\n"; 182 char msg[] = "WARNING: You are running this shell as root!\n";
183 write(ttyfd, msg, sizeof(msg)); 183 write(ttyfd, msg, sizeof(msg));
184 } 184 }
185 execl(cmd, cmd, 0); 185 execl(cmd, cmd, 0);
186 186
187 donePty(); 187 donePty();
188 exit(-1); 188 exit(-1);
189 } 189 }
190 190
191 // parent - continue as a widget 191 // parent - continue as a widget
192 delete m_sn_r; 192 delete m_sn_r;
193 m_sn_r = new QSocketNotifier(m_fd,QSocketNotifier::Read,this); 193 m_sn_r = new QSocketNotifier(m_fd,QSocketNotifier::Read,this);
194 delete m_sn_e; 194 delete m_sn_e;
195 m_sn_e = new QSocketNotifier(m_fd,QSocketNotifier::Exception,this); 195 m_sn_e = new QSocketNotifier(m_fd,QSocketNotifier::Exception,this);
196 connect(m_sn_r,SIGNAL(activated(int)),this,SLOT(readPty())); 196 connect(m_sn_r,SIGNAL(activated(int)),this,SLOT(readPty()));
197 connect(m_sn_e,SIGNAL(activated(int)),this,SLOT(error())); 197 connect(m_sn_e,SIGNAL(activated(int)),this,SLOT(error()));
198 198
199 return 0; 199 return 0;
200} 200}
201 201
202int MyPty::openPty() 202int MyPty::openPty()
@@ -215,50 +215,65 @@ int MyPty::openPty()
215 for (const char* c1 = "0123456789abcdef"; ptyfd < 0 && *c1 != 0; c1++) { 215 for (const char* c1 = "0123456789abcdef"; ptyfd < 0 && *c1 != 0; c1++) {
216 sprintf(m_ptynam,"/dev/pty%c%c",*c0,*c1); 216 sprintf(m_ptynam,"/dev/pty%c%c",*c0,*c1);
217 sprintf(m_ttynam,"/dev/tty%c%c",*c0,*c1); 217 sprintf(m_ttynam,"/dev/tty%c%c",*c0,*c1);
218 if ((ptyfd = ::open(m_ptynam,O_RDWR)) >= 0) { 218 if ((ptyfd = ::open(m_ptynam,O_RDWR)) >= 0) {
219 if (geteuid() != 0 && !access(m_ttynam,R_OK|W_OK) == 0) { 219 if (geteuid() != 0 && !access(m_ttynam,R_OK|W_OK) == 0) {
220 ::close(ptyfd); 220 ::close(ptyfd);
221 ptyfd = -1; 221 ptyfd = -1;
222 } 222 }
223 } 223 }
224 } 224 }
225 } 225 }
226#endif 226#endif
227 227
228 if ( ptyfd < 0 ) { 228 if ( ptyfd < 0 ) {
229 //qApp->exit(1); 229 //qApp->exit(1);
230 return -1; 230 return -1;
231 } 231 }
232 232
233 return ptyfd; 233 return ptyfd;
234} 234}
235 235
236/*! 236/*!
237 Create an instance. 237 Create an instance.
238*/ 238*/
239MyPty::MyPty(const Profile&) : m_cpid(0) 239MyPty::MyPty(const Profile& prof) : m_cpid(0)
240{ 240{
241
242 int term = prof.readNumEntry("Terminal", Profile::VT100 );
243 switch( term ) {
244 default:
245 case Profile::VT100:
246 case Profile::VT102:
247 m_term = "vt100";
248 break;
249 case Profile::Linux:
250 m_term = "linux";
251 break;
252 case Profile::XTerm:
253 m_term = "xterm";
254 break;
255 }
241 m_sn_e = 0l; 256 m_sn_e = 0l;
242 m_sn_r = 0l; 257 m_sn_r = 0l;
243 m_fd = openPty(); 258 m_fd = openPty();
244 ProcCtl* ctl = ProcCtl::self(); 259 ProcCtl* ctl = ProcCtl::self();
245} 260}
246 261
247/*! 262/*!
248 Destructor. 263 Destructor.
249 Note that the related client program is not killed 264 Note that the related client program is not killed
250 (yet) when a instance is deleted. 265 (yet) when a instance is deleted.
251*/ 266*/
252MyPty::~MyPty() 267MyPty::~MyPty()
253{ 268{
254 donePty(); 269 donePty();
255} 270}
256QString MyPty::identifier()const { 271QString MyPty::identifier()const {
257 return QString::fromLatin1("term"); 272 return QString::fromLatin1("term");
258} 273}
259QString MyPty::name()const{ 274QString MyPty::name()const{
260 return identifier(); 275 return identifier();
261} 276}
262bool MyPty::open() { 277bool MyPty::open() {
263 if (m_fd < 0) 278 if (m_fd < 0)
264 m_fd = openPty(); 279 m_fd = openPty();
diff --git a/noncore/apps/opie-console/MyPty.h b/noncore/apps/opie-console/MyPty.h
index 81abad5..7561ca3 100644
--- a/noncore/apps/opie-console/MyPty.h
+++ b/noncore/apps/opie-console/MyPty.h
@@ -73,27 +73,28 @@ public:
73 void received(const QByteArray&); 73 void received(const QByteArray&);
74 74
75 public slots: 75 public slots:
76 76
77 void send(const QByteArray& ); 77 void send(const QByteArray& );
78 78
79private: 79private:
80 const char* deviceName(); 80 const char* deviceName();
81 81
82protected slots: 82protected slots:
83 void readPty(); 83 void readPty();
84 void donePty(); 84 void donePty();
85 85
86private: 86private:
87 int openPty(); 87 int openPty();
88 88
89private: 89private:
90 90
91 char m_ptynam[16]; // "/dev/ptyxx" | "/dev/ptmx" 91 char m_ptynam[16]; // "/dev/ptyxx" | "/dev/ptmx"
92 char m_ttynam[16]; // "/dev/ttyxx" | "/dev/pts/########..." 92 char m_ttynam[16]; // "/dev/ttyxx" | "/dev/pts/########..."
93 int m_fd; 93 int m_fd;
94 int m_cpid; 94 int m_cpid;
95 QSocketNotifier* m_sn_e; 95 QSocketNotifier* m_sn_e;
96 QSocketNotifier* m_sn_r; 96 QSocketNotifier* m_sn_r;
97 char* m_term;
97}; 98};
98 99
99#endif 100#endif
diff --git a/noncore/apps/opie-console/emulation_handler.cpp b/noncore/apps/opie-console/emulation_handler.cpp
index df8e573..bdc8b43 100644
--- a/noncore/apps/opie-console/emulation_handler.cpp
+++ b/noncore/apps/opie-console/emulation_handler.cpp
@@ -18,49 +18,64 @@ EmulationHandler::EmulationHandler( const Profile& prof, QWidget* parent,const c
18 m_teEmu = new TEmuVt102(m_teWid ); 18 m_teEmu = new TEmuVt102(m_teWid );
19 19
20 connect(m_teEmu,SIGNAL(ImageSizeChanged(int, int) ), 20 connect(m_teEmu,SIGNAL(ImageSizeChanged(int, int) ),
21 this, SIGNAL(changeSize(int, int) ) ); 21 this, SIGNAL(changeSize(int, int) ) );
22 connect(m_teEmu, SIGNAL(sndBlock(const char*, int) ), 22 connect(m_teEmu, SIGNAL(sndBlock(const char*, int) ),
23 this, SLOT(recvEmulation(const char*, int) ) ); 23 this, SLOT(recvEmulation(const char*, int) ) );
24 m_teEmu->setConnect( true ); 24 m_teEmu->setConnect( true );
25 m_teEmu->setHistory( TRUE ); 25 m_teEmu->setHistory( TRUE );
26 load( prof ); 26 load( prof );
27 27
28 28
29 29
30} 30}
31EmulationHandler::~EmulationHandler() { 31EmulationHandler::~EmulationHandler() {
32 if (isRecording()) 32 if (isRecording())
33 clearScript(); 33 clearScript();
34 delete m_teEmu; 34 delete m_teEmu;
35 delete m_teWid; 35 delete m_teWid;
36} 36}
37 37
38void EmulationHandler::load( const Profile& prof) { 38void EmulationHandler::load( const Profile& prof) {
39 m_teWid->setVTFont( font( prof.readNumEntry("Font") ) ); 39 m_teWid->setVTFont( font( prof.readNumEntry("Font") ) );
40 int num = prof.readNumEntry("Color"); 40 int num = prof.readNumEntry("Color");
41 setColor( foreColor(num), backColor(num) ); 41 setColor( foreColor(num), backColor(num) );
42 m_teWid->setBackgroundColor(backColor(num) ); 42 m_teWid->setBackgroundColor(backColor(num) );
43
44 int term = prof.readNumEntry("Terminal", 0) ;
45 switch(term) {
46 default:
47 case Profile::VT102:
48 case Profile::VT100:
49 m_teEmu->setKeytrans("vt100.keytab");
50 break;
51 case Profile::Linux:
52 m_teEmu->setKeytrans("linux.keytab");
53 break;
54 case Profile::XTerm:
55 m_teEmu->setKeytrans("default.Keytab");
56 break;
57 }
43} 58}
44void EmulationHandler::recv( const QByteArray& ar) { 59void EmulationHandler::recv( const QByteArray& ar) {
45 m_teEmu->onRcvBlock(ar.data(), ar.count() ); 60 m_teEmu->onRcvBlock(ar.data(), ar.count() );
46} 61}
47void EmulationHandler::recvEmulation(const char* src, int len ) { 62void EmulationHandler::recvEmulation(const char* src, int len ) {
48 QByteArray ar(len); 63 QByteArray ar(len);
49 64
50 memcpy(ar.data(), src, sizeof(char) * len ); 65 memcpy(ar.data(), src, sizeof(char) * len );
51 66
52 if (isRecording()) 67 if (isRecording())
53 m_script->append(ar); 68 m_script->append(ar);
54 emit send(ar); 69 emit send(ar);
55} 70}
56QWidget* EmulationHandler::widget() { 71QWidget* EmulationHandler::widget() {
57 return m_teWid; 72 return m_teWid;
58} 73}
59/* 74/*
60 * allocate a new table of colors 75 * allocate a new table of colors
61 */ 76 */
62void EmulationHandler::setColor( const QColor& fore, const QColor& back ) { 77void EmulationHandler::setColor( const QColor& fore, const QColor& back ) {
63 ColorEntry table[TABLE_COLORS]; 78 ColorEntry table[TABLE_COLORS];
64 const ColorEntry *defaultCt = m_teWid->getdefaultColorTable(); 79 const ColorEntry *defaultCt = m_teWid->getdefaultColorTable();
65 80
66 for (int i = 0; i < TABLE_COLORS; i++ ) { 81 for (int i = 0; i < TABLE_COLORS; i++ ) {
diff --git a/noncore/apps/opie-console/filetransfer.cpp b/noncore/apps/opie-console/filetransfer.cpp
index b81c2a2..221838c 100644
--- a/noncore/apps/opie-console/filetransfer.cpp
+++ b/noncore/apps/opie-console/filetransfer.cpp
@@ -39,48 +39,49 @@ void FileTransfer::sendFile( const QString& file ) {
39// m_fd = ::open("/dev/ttyS0", O_RDWR); 39// m_fd = ::open("/dev/ttyS0", O_RDWR);
40 40
41 m_file = file; 41 m_file = file;
42 if ( pipe( m_comm ) < 0 ) 42 if ( pipe( m_comm ) < 0 )
43 m_comm[0] = m_comm[1] = 0; 43 m_comm[0] = m_comm[1] = 0;
44 if ( pipe( m_info ) < 0 ) 44 if ( pipe( m_info ) < 0 )
45 m_info[0] = m_info[1] = 0; 45 m_info[0] = m_info[1] = 0;
46 46
47 47
48 m_pid = fork(); 48 m_pid = fork();
49 switch( m_pid ) { 49 switch( m_pid ) {
50 case -1: 50 case -1:
51 emit error( StartError, tr("Was not able to fork") ); 51 emit error( StartError, tr("Was not able to fork") );
52 slotExec(); 52 slotExec();
53 break; 53 break;
54 case 0:{ 54 case 0:{
55 setupChild(); 55 setupChild();
56 /* exec */ 56 /* exec */
57 char* verbose = "-vv"; 57 char* verbose = "-vv";
58 char* binray = "-b"; 58 char* binray = "-b";
59 59
60 60
61 char* typus; 61 char* typus;
62 switch(m_type ) { 62 switch(m_type ) {
63 default:
63 case SZ: 64 case SZ:
64 typus = ""; 65 typus = "";
65 break; 66 break;
66 case SX: 67 case SX:
67 typus = "-X"; 68 typus = "-X";
68 break; 69 break;
69 case SY: 70 case SY:
70 typus = "--ymodem"; 71 typus = "--ymodem";
71 break; 72 break;
72 } 73 }
73 74
74 /* we should never return from here */ 75 /* we should never return from here */
75 execlp("sz", "sz", verbose, binray, file.latin1(), typus, NULL ); 76 execlp("sz", "sz", verbose, binray, file.latin1(), typus, NULL );
76 77
77 /* communication for error!*/ 78 /* communication for error!*/
78 char resultByte =1; 79 char resultByte =1;
79 if (m_info[1] ) 80 if (m_info[1] )
80 write(m_info[1], &resultByte, 1 ); 81 write(m_info[1], &resultByte, 1 );
81 _exit( -1 ); 82 _exit( -1 );
82 break; 83 break;
83 } 84 }
84 default:{ 85 default:{
85 if ( m_info[1] ) 86 if ( m_info[1] )
86 close( m_info[1] ); 87 close( m_info[1] );
@@ -211,40 +212,40 @@ void FileTransfer::slotProgress( const QStringList& list ) {
211 } 212 }
212 213
213 214
214 double pro = (double)sent/total; 215 double pro = (double)sent/total;
215 int prog = pro * 100; 216 int prog = pro * 100;
216 217
217 // speed 218 // speed
218 progi = QStringList::split(':', list[3].simplifyWhiteSpace() ); 219 progi = QStringList::split(':', list[3].simplifyWhiteSpace() );
219 bps = progi[1].toInt(); 220 bps = progi[1].toInt();
220 221
221 // time 222 // time
222 progi = QStringList::split(':', list[5].simplifyWhiteSpace() ); 223 progi = QStringList::split(':', list[5].simplifyWhiteSpace() );
223 min = progi[0].toInt(); 224 min = progi[0].toInt();
224 sec = progi[1].toInt(); 225 sec = progi[1].toInt();
225 226
226 227
227 if ( prog > m_prog ) { 228 if ( prog > m_prog ) {
228 m_prog = prog; 229 m_prog = prog;
229 emit progress(m_file, m_prog, bps, -1, min , sec ); 230 emit progress(m_file, m_prog, bps, -1, min , sec );
230 } 231 }
231 232
232} 233}
233void FileTransfer::cancel() { 234void FileTransfer::cancel() {
234 if(m_pid > 0) ::kill(m_pid,9 ); 235 if(m_pid > 0) ::kill(m_pid,9 );
235 236
236} 237}
237void FileTransfer::slotExec() { 238void FileTransfer::slotExec() {
238 char buf[2]; 239 char buf[2];
239 ::read(m_term[0], buf, 1 ); 240 ::read(m_term[0], buf, 1 );
240 delete m_proc; 241 delete m_proc;
241 delete m_not; 242 delete m_not;
242 m_proc = m_not = 0l; 243 m_proc = m_not = 0l;
243 close( m_term[0] ); 244 close( m_term[0] );
244 close( m_term[1] ); 245 close( m_term[1] );
245 close( m_comm[0] ); 246 close( m_comm[0] );
246 close( m_comm[1] ); 247 close( m_comm[1] );
247 layer()->closeRawIO( m_fd ); 248 layer()->closeRawIO( m_fd );
248 emit sent(); 249 emit sent();
249 m_pid = 0; 250 m_pid = 0;
250} 251}
diff --git a/noncore/apps/opie-console/filetransfer.h b/noncore/apps/opie-console/filetransfer.h
index 9cc1e8d..8f55041 100644
--- a/noncore/apps/opie-console/filetransfer.h
+++ b/noncore/apps/opie-console/filetransfer.h
@@ -12,43 +12,37 @@ class QSocketNotifier;
12class OProcess; 12class OProcess;
13class FileTransferControl; 13class FileTransferControl;
14class FileTransfer : public FileTransferLayer{ 14class FileTransfer : public FileTransferLayer{
15 Q_OBJECT 15 Q_OBJECT
16 friend class FileTransferControl; 16 friend class FileTransferControl;
17public: 17public:
18 enum Type { 18 enum Type {
19 SZ = 0, 19 SZ = 0,
20 SX, 20 SX,
21 SY 21 SY
22 }; 22 };
23 FileTransfer( Type t, IOLayer* ); 23 FileTransfer( Type t, IOLayer* );
24 ~FileTransfer(); 24 ~FileTransfer();
25 25
26 void sendFile( const QString& file ); 26 void sendFile( const QString& file );
27 void sendFile( const QFile& ); 27 void sendFile( const QFile& );
28 void cancel(); 28 void cancel();
29 29
30private slots: 30private slots:
31 void setupChild(); 31 void setupChild();
32 void slotRead(); 32 void slotRead();
33 void slotProgress( const QStringList& ); 33 void slotProgress( const QStringList& );
34 void slotExec(); 34 void slotExec();
35private: 35private:
36 /* 36 Type m_type;
37 * FIXME? What does happen if we've
38 * two FileTransfers at a time?
39 * Have a procctl which does listen
40 * for termination and then send a signal
41 */
42 pid_t m_pid; 37 pid_t m_pid;
43 int m_fd; 38 int m_fd;
44 int m_prog; 39 int m_prog;
45 int m_info[2]; 40 int m_info[2];
46 int m_comm[2]; 41 int m_comm[2];
47 int m_term[2]; 42 int m_term[2];
48 QString m_file; 43 QString m_file;
49 Type m_type;
50 QSocketNotifier *m_not; 44 QSocketNotifier *m_not;
51 QSocketNotifier* m_proc; 45 QSocketNotifier* m_proc;
52}; 46};
53 47
54#endif 48#endif
diff --git a/noncore/apps/opie-console/profile.h b/noncore/apps/opie-console/profile.h
index 4f9e9c2..eeda1b6 100644
--- a/noncore/apps/opie-console/profile.h
+++ b/noncore/apps/opie-console/profile.h
@@ -1,47 +1,50 @@
1#ifndef OPIE_PROFILE_H 1#ifndef OPIE_PROFILE_H
2#define OPIE_PROFILE_H 2#define OPIE_PROFILE_H
3 3
4#include <qmap.h> 4#include <qmap.h>
5#include <qstring.h> 5#include <qstring.h>
6#include <qstringlist.h> 6#include <qstringlist.h>
7#include <qvaluelist.h> 7#include <qvaluelist.h>
8/** 8/**
9 * A session will be generated from a saved 9 * A session will be generated from a saved
10 * profile. A profile contains the iolayername 10 * profile. A profile contains the iolayername
11 * a name. 11 * a name.
12 * We can generate a Session from a Profile 12 * We can generate a Session from a Profile
13 * Configuration is contained here too 13 * Configuration is contained here too
14 */ 14 */
15class Profile { 15class Profile {
16public: 16public:
17 typedef QValueList<Profile> ValueList; 17 typedef QValueList<Profile> ValueList;
18 enum Color { Black = 0, 18 enum Color { Black = 0,
19 White, 19 White,
20 Gray, 20 Gray,
21 Green, 21 Green,
22 Orange}; 22 Orange};
23 enum Terminal {VT102 = 0, VT100 }; 23 enum Terminal {VT102 = 0, VT100,
24 Ansi,
25 Linux,
26 XTerm };
24 enum Font { Micro = 0, Small, Medium }; 27 enum Font { Micro = 0, Small, Medium };
25 Profile(); 28 Profile();
26 Profile( const QString& name, 29 Profile( const QString& name,
27 const QCString& iolayerName, 30 const QCString& iolayerName,
28 const QCString& termName, 31 const QCString& termName,
29 int background, 32 int background,
30 int foreground, 33 int foreground,
31 int terminal); 34 int terminal);
32 Profile( const Profile& ); 35 Profile( const Profile& );
33 Profile &operator=( const Profile& ); 36 Profile &operator=( const Profile& );
34 bool operator==( const Profile& prof ); 37 bool operator==( const Profile& prof );
35 38
36 ~Profile(); 39 ~Profile();
37 QString name()const; 40 QString name()const;
38 QCString ioLayerName()const; 41 QCString ioLayerName()const;
39 QCString terminalName()const; 42 QCString terminalName()const;
40 bool autoConnect()const; 43 bool autoConnect()const;
41 int foreground()const; 44 int foreground()const;
42 int background()const; 45 int background()const;
43 int terminal()const; 46 int terminal()const;
44 47
45 /* 48 /*
46 * config stuff 49 * config stuff
47 */ 50 */
diff --git a/noncore/apps/opie-console/terminalwidget.cpp b/noncore/apps/opie-console/terminalwidget.cpp
index 8badf96..eae94c3 100644
--- a/noncore/apps/opie-console/terminalwidget.cpp
+++ b/noncore/apps/opie-console/terminalwidget.cpp
@@ -1,41 +1,42 @@
1#include <qbuttongroup.h> 1#include <qbuttongroup.h>
2#include <qlabel.h> 2#include <qlabel.h>
3#include <qcheckbox.h> 3#include <qcheckbox.h>
4#include <qcombobox.h> 4#include <qcombobox.h>
5#include <qradiobutton.h> 5#include <qradiobutton.h>
6#include <qgroupbox.h> 6#include <qgroupbox.h>
7#include <qvbox.h> 7#include <qvbox.h>
8#include <qhgroupbox.h> 8#include <qhgroupbox.h>
9#include <qlayout.h> 9#include <qlayout.h>
10 10
11#include "terminalwidget.h" 11#include "terminalwidget.h"
12 12
13namespace { 13namespace {
14 enum TermIds { 14 enum TermIds {
15 id_term_vt100, 15 id_term_vt100 = 0,
16 id_term_vt102, 16 id_term_vt102,
17 id_term_ansi 17 id_term_linux,
18 id_term_xterm
18 }; 19 };
19 20
20 enum ColourIds { 21 enum ColourIds {
21 id_term_black, 22 id_term_black,
22 id_term_white, 23 id_term_white,
23 id_term_green, 24 id_term_green,
24 id_term_orange 25 id_term_orange
25 }; 26 };
26 27
27 enum FontIds { 28 enum FontIds {
28 id_size_small, 29 id_size_small,
29 id_size_medium, 30 id_size_medium,
30 id_size_large 31 id_size_large
31 }; 32 };
32}; 33};
33 34
34TerminalWidget::TerminalWidget( const QString& name, QWidget* parent, 35TerminalWidget::TerminalWidget( const QString& name, QWidget* parent,
35 const char* na ) 36 const char* na )
36 : ProfileDialogTerminalWidget( name, parent, na ) { 37 : ProfileDialogTerminalWidget( name, parent, na ) {
37 38
38 m_terminal = new QLabel(tr("Terminal Type"), this ); 39 m_terminal = new QLabel(tr("Terminal Type"), this );
39 m_terminalBox = new QComboBox(this); 40 m_terminalBox = new QComboBox(this);
40 m_colorLabel = new QLabel(tr("Color scheme"), this); 41 m_colorLabel = new QLabel(tr("Color scheme"), this);
41 m_colorCmb = new QComboBox(this ); 42 m_colorCmb = new QComboBox(this );
@@ -53,94 +54,103 @@ TerminalWidget::TerminalWidget( const QString& name, QWidget* parent,
53 m_optionEcho = new QCheckBox(tr("Local echo"), m_groupOptions ); 54 m_optionEcho = new QCheckBox(tr("Local echo"), m_groupOptions );
54 m_optionWrap = new QCheckBox(tr("Line wrap"), m_groupOptions ); 55 m_optionWrap = new QCheckBox(tr("Line wrap"), m_groupOptions );
55 56
56 m_lroot = new QVBoxLayout(this, 2 ); 57 m_lroot = new QVBoxLayout(this, 2 );
57 m_typeBox = new QVBoxLayout( m_lroot ); 58 m_typeBox = new QVBoxLayout( m_lroot );
58 m_hbox = new QHBoxLayout( m_groupSize, 2 ); 59 m_hbox = new QHBoxLayout( m_groupSize, 2 );
59 m_colorBox = new QVBoxLayout( m_lroot ); 60 m_colorBox = new QVBoxLayout( m_lroot );
60 61
61 // Layout 62 // Layout
62 m_typeBox->add(m_terminal ); 63 m_typeBox->add(m_terminal );
63 m_typeBox->add(m_terminalBox ); 64 m_typeBox->add(m_terminalBox );
64 65
65 m_hbox->add(m_sizeSmall ); 66 m_hbox->add(m_sizeSmall );
66 m_hbox->add(m_sizeMedium ); 67 m_hbox->add(m_sizeMedium );
67 m_hbox->add(m_sizeLarge ); 68 m_hbox->add(m_sizeLarge );
68 m_lroot->add(m_groupSize ); 69 m_lroot->add(m_groupSize );
69 70
70 m_colorBox->add( m_colorLabel ); 71 m_colorBox->add( m_colorLabel );
71 m_colorBox->add( m_colorCmb ); 72 m_colorBox->add( m_colorCmb );
72 73
73 m_lroot->add(m_groupConv ); 74 m_lroot->add(m_groupConv );
74 m_lroot->add(m_groupOptions ); 75 m_lroot->add(m_groupOptions );
75 76
76 // Fill in some options 77 // Fill in some options
77 m_terminalBox->insertItem( tr("VT 100"), id_term_vt100 ); 78 qWarning("Options for terminal box");
78 m_terminalBox->insertItem( tr("VT 102"), id_term_vt102 ); 79 m_terminalBox->insertItem( tr("VT 100"), 0 ); // /*, id_term_vt100*/ );
80 m_terminalBox->insertItem( tr("VT 102"), 1 ); // /* , id_term_vt102 */);
81 m_terminalBox->insertItem( tr("Linux Console"), 2 ); //, id_term_linux );
82 m_terminalBox->insertItem( tr("X-Terminal"), 3 ); //, id_term_xterm );
79 //m_terminalBox->insertItem( tr("ANSI"), id_term_ansi ); 83 //m_terminalBox->insertItem( tr("ANSI"), id_term_ansi );
80 84
81 m_colorCmb->insertItem( tr("black on white"), id_term_black ); 85 m_colorCmb->insertItem( tr("black on white"), id_term_black );
82 m_colorCmb->insertItem( tr("white on black"), id_term_white ); 86 m_colorCmb->insertItem( tr("white on black"), id_term_white );
83 m_colorCmb->insertItem( tr("green on black"), id_term_green ); 87 m_colorCmb->insertItem( tr("green on black"), id_term_green );
84 m_colorCmb->insertItem( tr("orange on black"), id_term_orange ); 88 m_colorCmb->insertItem( tr("orange on black"), id_term_orange );
85 89
86 // signals + slots 90 // signals + slots
87 /* 91 /*
88 connect(m_terminalBox, SIGNAL(activated(int) ), 92 connect(m_terminalBox, SIGNAL(activated(int) ),
89 this, SLOT(slotTermTerm(int) ) ); 93 this, SLOT(slotTermTerm(int) ) );
90 connect(m_colorBox, SIGNAL(activated(int) ), 94 connect(m_colorBox, SIGNAL(activated(int) ),
91 tis, SLOT(slotTermColor(int) ) ); 95 tis, SLOT(slotTermColor(int) ) );
92 connect(m_groupSize, SIGNAL(activated(int) ), 96 connect(m_groupSize, SIGNAL(activated(int) ),
93 this, SLOT(slotTermFont(int) ) ); 97 this, SLOT(slotTermFont(int) ) );
94 98
95 connect(m_optionEcho, SIGNAL(toggled(bool) ), 99 connect(m_optionEcho, SIGNAL(toggled(bool) ),
96 this, SLOT(slotTermEcho(bool) ) ); 100 this, SLOT(slotTermEcho(bool) ) );
97 connect(m_optionWrap, SIGNAL(toggled(bool) ), 101 connect(m_optionWrap, SIGNAL(toggled(bool) ),
98 this, SLOT(slotTermWrap(bool) ) ); 102 this, SLOT(slotTermWrap(bool) ) );
99 connect(m_convInbound, SIGNAL(toggled(bool) ), 103 connect(m_convInbound, SIGNAL(toggled(bool) ),
100 this, SLOT(slotTermInbound(bool) ) ); 104 this, SLOT(slotTermInbound(bool) ) );
101 connect(m_convOutbound, SIGNAL(toggled(bool) ), 105 connect(m_convOutbound, SIGNAL(toggled(bool) ),
102 this, SLOT(slotTermOutbound(bool) ) ); 106 this, SLOT(slotTermOutbound(bool) ) );
103*/ 107*/
104} 108}
105TerminalWidget::~TerminalWidget() { 109TerminalWidget::~TerminalWidget() {
106} 110}
107void TerminalWidget::load( const Profile& prof ) { 111void TerminalWidget::load( const Profile& prof ) {
108 int term = prof.readNumEntry("Terminal"); 112 int term = prof.readNumEntry("Terminal");
109 int color = prof.readNumEntry("Color"); 113 int color = prof.readNumEntry("Color");
110 int fontsize = prof.readNumEntry("Font"); 114 int fontsize = prof.readNumEntry("Font");
111 int opt_echo = prof.readNumEntry("Echo"); 115 int opt_echo = prof.readNumEntry("Echo");
112 int opt_wrap = prof.readNumEntry("Wrap"); 116 int opt_wrap = prof.readNumEntry("Wrap");
113 int opt_inbound = prof.readNumEntry("Inbound"); 117 int opt_inbound = prof.readNumEntry("Inbound");
114 int opt_outbound = prof.readNumEntry("Outbound"); 118 int opt_outbound = prof.readNumEntry("Outbound");
115 119
116 switch( term ) { 120 switch( term ) {
117 case Profile::VT100: 121 case Profile::VT100:
118 m_terminalBox->setCurrentItem(id_term_vt100 ); 122 m_terminalBox->setCurrentItem(id_term_vt100 );
119 break; 123 break;
120 case Profile::VT102: 124 case Profile::VT102:
121 m_terminalBox->setCurrentItem(id_term_vt102 ); 125 m_terminalBox->setCurrentItem(id_term_vt102 );
122 break; 126 break;
127 case Profile::Linux:
128 m_terminalBox->setCurrentItem(id_term_linux );
129 break;
130 case Profile::XTerm:
131 m_terminalBox->setCurrentItem(id_term_xterm );
132 break;
123 default: 133 default:
124 break; 134 break;
125 }; 135 };
126 136
127 switch( color ) { 137 switch( color ) {
128 case Profile::Black: 138 case Profile::Black:
129 m_colorCmb->setCurrentItem(id_term_black ); 139 m_colorCmb->setCurrentItem(id_term_black );
130 break; 140 break;
131 case Profile::White: 141 case Profile::White:
132 m_colorCmb->setCurrentItem(id_term_white ); 142 m_colorCmb->setCurrentItem(id_term_white );
133 break; 143 break;
134 case Profile::Green: 144 case Profile::Green:
135 m_colorCmb->setCurrentItem(id_term_green ); 145 m_colorCmb->setCurrentItem(id_term_green );
136 break; 146 break;
137 case Profile::Orange: 147 case Profile::Orange:
138 m_colorCmb->setCurrentItem(id_term_orange ); 148 m_colorCmb->setCurrentItem(id_term_orange );
139 break; 149 break;
140 default: 150 default:
141 break; 151 break;
142 }; 152 };
143 153
144 switch( fontsize ) { 154 switch( fontsize ) {
145 case Profile::Micro: 155 case Profile::Micro:
146 m_sizeSmall->setChecked(true ); 156 m_sizeSmall->setChecked(true );
@@ -149,48 +159,54 @@ void TerminalWidget::load( const Profile& prof ) {
149 m_sizeMedium->setChecked(true ); 159 m_sizeMedium->setChecked(true );
150 break; 160 break;
151 case Profile::Medium: 161 case Profile::Medium:
152 m_sizeLarge->setChecked( true ); 162 m_sizeLarge->setChecked( true );
153 break; 163 break;
154 m_sizeSmall->setChecked(true); 164 m_sizeSmall->setChecked(true);
155 default: 165 default:
156 break; 166 break;
157 }; 167 };
158 168
159 if (opt_echo) m_optionEcho->setChecked( true ); 169 if (opt_echo) m_optionEcho->setChecked( true );
160 if (opt_wrap) m_optionWrap->setChecked( true ); 170 if (opt_wrap) m_optionWrap->setChecked( true );
161 if (opt_inbound) m_convInbound->setChecked( true ); 171 if (opt_inbound) m_convInbound->setChecked( true );
162 if (opt_outbound) m_convOutbound->setChecked( true ); 172 if (opt_outbound) m_convOutbound->setChecked( true );
163 173
164} 174}
165void TerminalWidget::save( Profile& profile ) { 175void TerminalWidget::save( Profile& profile ) {
166 switch(m_terminalBox->currentItem() ) { 176 switch(m_terminalBox->currentItem() ) {
167 case id_term_vt100: 177 case id_term_vt100:
168 profile.writeEntry("Terminal", Profile::VT100 ); 178 profile.writeEntry("Terminal", Profile::VT100 );
169 break; 179 break;
170 case id_term_vt102: 180 case id_term_vt102:
171 profile.writeEntry("Terminal", Profile::VT102 ); 181 profile.writeEntry("Terminal", Profile::VT102 );
172 break; 182 break;
183 case id_term_linux:
184 profile.writeEntry("Terminal", Profile::Linux );
185 break;
186 case id_term_xterm:
187 profile.writeEntry("Terminal", Profile::XTerm );
188 break;
173 //case id_term_ansi: 189 //case id_term_ansi:
174 // profile.writeEntry("Terminal", Profile::VT102 ); 190 // profile.writeEntry("Terminal", Profile::VT102 );
175 // break; 191 // break;
176 default: 192 default:
177 break; 193 break;
178 }; 194 };
179 195
180 // color 196 // color
181 switch(m_colorCmb->currentItem() ) { 197 switch(m_colorCmb->currentItem() ) {
182 case id_term_black: 198 case id_term_black:
183 profile.writeEntry("Color", Profile::Black ); 199 profile.writeEntry("Color", Profile::Black );
184 break; 200 break;
185 case id_term_white: 201 case id_term_white:
186 profile.writeEntry("Color", Profile::White ); 202 profile.writeEntry("Color", Profile::White );
187 break; 203 break;
188 case id_term_green: 204 case id_term_green:
189 profile.writeEntry("Color", Profile::Green ); 205 profile.writeEntry("Color", Profile::Green );
190 break; 206 break;
191 case id_term_orange: 207 case id_term_orange:
192 profile.writeEntry("Color", Profile::Orange ); 208 profile.writeEntry("Color", Profile::Orange );
193 break; 209 break;
194 default: 210 default:
195 break; 211 break;
196 }; 212 };