summaryrefslogtreecommitdiff
authorharlekin <harlekin>2004-02-01 12:52:08 (UTC)
committer harlekin <harlekin>2004-02-01 12:52:08 (UTC)
commit29220ef88ff2f93cef17695e3733da62c16d89ca (patch) (unidiff)
treec98007f673dfcf3480ac7e1a61746ce7d68c5b45
parentda02269f0d59e4cc932b9dbc7294374e3398ecad (diff)
downloadopie-29220ef88ff2f93cef17695e3733da62c16d89ca.zip
opie-29220ef88ff2f93cef17695e3733da62c16d89ca.tar.gz
opie-29220ef88ff2f93cef17695e3733da62c16d89ca.tar.bz2
less includes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-console/MyPty.cpp2
-rw-r--r--noncore/apps/opie-console/TEWidget.cpp8
-rw-r--r--noncore/apps/opie-console/TEmuVt102.cpp5
-rw-r--r--noncore/apps/opie-console/TEmulation.cpp3
-rw-r--r--noncore/apps/opie-console/configdialog.cpp3
-rw-r--r--noncore/apps/opie-console/consoleconfigwidget.cpp2
-rw-r--r--noncore/apps/opie-console/default.cpp1
-rw-r--r--noncore/apps/opie-console/dialdialog.cpp3
-rw-r--r--noncore/apps/opie-console/emulation_handler.cpp3
-rw-r--r--noncore/apps/opie-console/emulation_layer.cpp3
-rw-r--r--noncore/apps/opie-console/emulation_widget.cpp8
-rw-r--r--noncore/apps/opie-console/file_layer.cpp1
-rw-r--r--noncore/apps/opie-console/filetransfer.cpp1
-rw-r--r--noncore/apps/opie-console/function_keyboard.cpp8
-rw-r--r--noncore/apps/opie-console/iolayerbase.cpp2
-rw-r--r--noncore/apps/opie-console/main.cpp1
-rw-r--r--noncore/apps/opie-console/mainwindow.cpp10
-rw-r--r--noncore/apps/opie-console/metafactory.cpp1
-rw-r--r--noncore/apps/opie-console/modemconfigwidget.cpp2
-rw-r--r--noncore/apps/opie-console/profileeditordialog.cpp1
-rw-r--r--noncore/apps/opie-console/profilemanager.cpp5
-rw-r--r--noncore/apps/opie-console/receive_layer.cpp3
-rw-r--r--noncore/apps/opie-console/script.cpp1
-rw-r--r--noncore/apps/opie-console/session.cpp2
-rw-r--r--noncore/apps/opie-console/terminalwidget.cpp4
-rw-r--r--noncore/apps/opie-console/transferdialog.cpp2
-rw-r--r--noncore/apps/opie-console/vt102emulation.cpp5
-rw-r--r--noncore/apps/opie-console/widget.cpp8
-rw-r--r--noncore/apps/opie-console/widget_layer.cpp4
29 files changed, 0 insertions, 102 deletions
diff --git a/noncore/apps/opie-console/MyPty.cpp b/noncore/apps/opie-console/MyPty.cpp
index b2f6a74..a37f980 100644
--- a/noncore/apps/opie-console/MyPty.cpp
+++ b/noncore/apps/opie-console/MyPty.cpp
@@ -1,197 +1,195 @@
1/* -------------------------------------------------------------------------- */ 1/* -------------------------------------------------------------------------- */
2/* */ 2/* */
3/* [MyPty.C] Pseudo Terminal Device */ 3/* [MyPty.C] Pseudo Terminal Device */
4/* */ 4/* */
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>
68#include <qsocketnotifier.h> 67#include <qsocketnotifier.h>
69#include <qstring.h>
70#include <qfile.h> 68#include <qfile.h>
71 69
72#include <stdlib.h> 70#include <stdlib.h>
73#include <stdio.h> 71#include <stdio.h>
74#include <signal.h> 72#include <signal.h>
75#include <fcntl.h> 73#include <fcntl.h>
76#include <unistd.h> 74#include <unistd.h>
77#include <termios.h> 75#include <termios.h>
78#include <sys/types.h> 76#include <sys/types.h>
79#include <sys/ioctl.h> 77#include <sys/ioctl.h>
80#include <sys/wait.h> 78#include <sys/wait.h>
81 79
82#ifdef HAVE_OPENPTY 80#ifdef HAVE_OPENPTY
83#include <pty.h> 81#include <pty.h>
84#endif 82#endif
85 83
86#include "procctl.h" 84#include "procctl.h"
87#include "MyPty.h" 85#include "MyPty.h"
88 86
89 87
90#undef VERBOSE_DEBUG 88#undef VERBOSE_DEBUG
91 89
92 90
93/* -------------------------------------------------------------------------- */ 91/* -------------------------------------------------------------------------- */
94 92
95/*! 93/*!
96 Informs the client program about the 94 Informs the client program about the
97 actual size of the window. 95 actual size of the window.
98*/ 96*/
99 97
100void MyPty::setSize(int lines, int columns) 98void MyPty::setSize(int lines, int columns)
101{ 99{
102 qWarning("setting size"); 100 qWarning("setting size");
103 struct winsize wsize; 101 struct winsize wsize;
104 wsize.ws_row = (unsigned short)lines; 102 wsize.ws_row = (unsigned short)lines;
105 wsize.ws_col = (unsigned short)columns; 103 wsize.ws_col = (unsigned short)columns;
106 if(m_fd < 0) return; 104 if(m_fd < 0) return;
107 ioctl(m_fd,TIOCSWINSZ,(char *)&wsize); 105 ioctl(m_fd,TIOCSWINSZ,(char *)&wsize);
108} 106}
109 107
110 108
111void MyPty::donePty() 109void MyPty::donePty()
112{ 110{
113 // This is code from the Qt DumbTerminal example 111 // This is code from the Qt DumbTerminal example
114 112
115 ::close(m_fd); 113 ::close(m_fd);
116 114
117 if (m_cpid) { 115 if (m_cpid) {
118 kill(m_cpid, SIGHUP); 116 kill(m_cpid, SIGHUP);
119 //waitpid(m_cpid, &status, 0); 117 //waitpid(m_cpid, &status, 0);
120 delete m_sn_e; 118 delete m_sn_e;
121 delete m_sn_r; 119 delete m_sn_r;
122 m_sn_e = 0l; 120 m_sn_e = 0l;
123 m_sn_r = 0l; 121 m_sn_r = 0l;
124 } 122 }
125 123
126 m_cpid = 0; 124 m_cpid = 0;
127 m_fd = -1; 125 m_fd = -1;
128// emit done(status); 126// emit done(status);
129} 127}
130 128
131 129
132const char* MyPty::deviceName() 130const char* MyPty::deviceName()
133{ 131{
134 return m_ttynam; 132 return m_ttynam;
135} 133}
136 134
137 135
138void MyPty::error() 136void MyPty::error()
139{ 137{
140 // This is code from the Qt DumbTerminal example 138 // This is code from the Qt DumbTerminal example
141 donePty(); 139 donePty();
142} 140}
143 141
144void MyPty::start() { 142void MyPty::start() {
145 QStrList lis; 143 QStrList lis;
146 int r =run(m_cmd.latin1(), lis, 0, 0); 144 int r =run(m_cmd.latin1(), lis, 0, 0);
147 r = r; 145 r = r;
148} 146}
149/*! 147/*!
150 start the client program. 148 start the client program.
151*/ 149*/
152int MyPty::run(const char* cmd, QStrList &, const char*, int) 150int MyPty::run(const char* cmd, QStrList &, const char*, int)
153{ 151{
154 // This is code from the Qt DumbTerminal example 152 // This is code from the Qt DumbTerminal example
155 m_cpid = fork(); 153 m_cpid = fork();
156 154
157 if ( !m_cpid ) { 155 if ( !m_cpid ) {
158 // child - exec shell on tty 156 // child - exec shell on tty
159 for (int sig = 1; sig < NSIG; sig++) signal(sig,SIG_DFL); 157 for (int sig = 1; sig < NSIG; sig++) signal(sig,SIG_DFL);
160 int ttyfd = ::open(m_ttynam, O_RDWR); 158 int ttyfd = ::open(m_ttynam, O_RDWR);
161 dup2(ttyfd, STDIN_FILENO); 159 dup2(ttyfd, STDIN_FILENO);
162 dup2(ttyfd, STDOUT_FILENO); 160 dup2(ttyfd, STDOUT_FILENO);
163 dup2(ttyfd, STDERR_FILENO); 161 dup2(ttyfd, STDERR_FILENO);
164 // should be done with tty, so close it 162 // should be done with tty, so close it
165 ::close(ttyfd); 163 ::close(ttyfd);
166 static struct termios ttmode; 164 static struct termios ttmode;
167 if ( setsid() < 0 ) 165 if ( setsid() < 0 )
168 perror( "failed to set process group" ); 166 perror( "failed to set process group" );
169#if defined (TIOCSCTTY) 167#if defined (TIOCSCTTY)
170 // grabbed from APUE by Stevens 168 // grabbed from APUE by Stevens
171 ioctl(STDIN_FILENO, TIOCSCTTY, 0); 169 ioctl(STDIN_FILENO, TIOCSCTTY, 0);
172#endif 170#endif
173 tcgetattr( STDIN_FILENO, &ttmode ); 171 tcgetattr( STDIN_FILENO, &ttmode );
174 ttmode.c_cc[VINTR] = 3; 172 ttmode.c_cc[VINTR] = 3;
175 ttmode.c_cc[VERASE] = 8; 173 ttmode.c_cc[VERASE] = 8;
176 tcsetattr( STDIN_FILENO, TCSANOW, &ttmode ); 174 tcsetattr( STDIN_FILENO, TCSANOW, &ttmode );
177 setenv("TERM",m_term,1); 175 setenv("TERM",m_term,1);
178 setenv("COLORTERM","0",1); 176 setenv("COLORTERM","0",1);
179 EnvironmentMap::Iterator it; 177 EnvironmentMap::Iterator it;
180 for (it = m_env.begin(); it != m_env.end(); it++) { 178 for (it = m_env.begin(); it != m_env.end(); it++) {
181 setenv(it.key().latin1(), it.data().latin1(), 1); 179 setenv(it.key().latin1(), it.data().latin1(), 1);
182 } 180 }
183 if (getuid() == 0) { 181 if (getuid() == 0) {
184 char msg[] = "WARNING: You are running this shell as root!\n"; 182 char msg[] = "WARNING: You are running this shell as root!\n";
185 write(ttyfd, msg, sizeof(msg)); 183 write(ttyfd, msg, sizeof(msg));
186 } 184 }
187 execl(cmd, cmd, 0); 185 execl(cmd, cmd, 0);
188 186
189 donePty(); 187 donePty();
190 exit(-1); 188 exit(-1);
191 } 189 }
192 190
193 // parent - continue as a widget 191 // parent - continue as a widget
194 delete m_sn_r; 192 delete m_sn_r;
195 m_sn_r = new QSocketNotifier(m_fd,QSocketNotifier::Read,this); 193 m_sn_r = new QSocketNotifier(m_fd,QSocketNotifier::Read,this);
196 delete m_sn_e; 194 delete m_sn_e;
197 m_sn_e = new QSocketNotifier(m_fd,QSocketNotifier::Exception,this); 195 m_sn_e = new QSocketNotifier(m_fd,QSocketNotifier::Exception,this);
diff --git a/noncore/apps/opie-console/TEWidget.cpp b/noncore/apps/opie-console/TEWidget.cpp
index 444924b..e535296 100644
--- a/noncore/apps/opie-console/TEWidget.cpp
+++ b/noncore/apps/opie-console/TEWidget.cpp
@@ -1,191 +1,183 @@
1/* ------------------------------------------------------------------------ */ 1/* ------------------------------------------------------------------------ */
2/* */ 2/* */
3/* [TEWidget.C] Terminal Emulation Widget */ 3/* [TEWidget.C] Terminal Emulation Widget */
4/* */ 4/* */
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/* */ 12/* */
13/* Ported Konsole to Qt/Embedded */ 13/* Ported Konsole to Qt/Embedded */
14/* */ 14/* */
15/* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */ 15/* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */
16/* */ 16/* */
17/* -------------------------------------------------------------------------- */ 17/* -------------------------------------------------------------------------- */
18/*! \class TEWidget 18/*! \class TEWidget
19 19
20 \brief Visible screen contents 20 \brief Visible screen contents
21 21
22 This class is responsible to map the `image' of a terminal emulation to the 22 This class is responsible to map the `image' of a terminal emulation to the
23 display. All the dependency of the emulation to a specific GUI or toolkit is 23 display. All the dependency of the emulation to a specific GUI or toolkit is
24 localized here. Further, this widget has no knowledge about being part of an 24 localized here. Further, this widget has no knowledge about being part of an
25 emulation, it simply work within the terminal emulation framework by exposing 25 emulation, it simply work within the terminal emulation framework by exposing
26 size and key events and by being ordered to show a new image. 26 size and key events and by being ordered to show a new image.
27 27
28 <ul> 28 <ul>
29 <li> The internal image has the size of the widget (evtl. rounded up) 29 <li> The internal image has the size of the widget (evtl. rounded up)
30 <li> The external image used in setImage can have any size. 30 <li> The external image used in setImage can have any size.
31 <li> (internally) the external image is simply copied to the internal 31 <li> (internally) the external image is simply copied to the internal
32 when a setImage happens. During a resizeEvent no painting is done 32 when a setImage happens. During a resizeEvent no painting is done
33 a paintEvent is expected to follow anyway. 33 a paintEvent is expected to follow anyway.
34 </ul> 34 </ul>
35 35
36 \sa TEScreen \sa Emulation 36 \sa TEScreen \sa Emulation
37*/ 37*/
38 38
39/* FIXME: 39/* FIXME:
40 - 'image' may also be used uninitialized (it isn't in fact) in resizeEvent 40 - 'image' may also be used uninitialized (it isn't in fact) in resizeEvent
41 - 'font_a' not used in mouse events 41 - 'font_a' not used in mouse events
42 - add destructor 42 - add destructor
43*/ 43*/
44 44
45/* TODO 45/* TODO
46 - evtl. be sensitive to `paletteChange' while using default colors. 46 - evtl. be sensitive to `paletteChange' while using default colors.
47 - set different 'rounding' styles? I.e. have a mode to show clipped chars? 47 - set different 'rounding' styles? I.e. have a mode to show clipped chars?
48*/ 48*/
49 49
50// #include "config.h" 50// #include "config.h"
51#include "TEWidget.h" 51#include "TEWidget.h"
52#include "session.h"
53#include <qpe/config.h> 52#include <qpe/config.h>
54 53
55#include <qapplication.h> 54#include <qapplication.h>
56#include <qcursor.h>
57#include <qregexp.h>
58#include <qpainter.h>
59#include <qclipboard.h> 55#include <qclipboard.h>
60#include <qstyle.h>
61#include <qfile.h>
62#include <qdragobject.h>
63#include <qvbox.h>
64 56
65#include <stdio.h> 57#include <stdio.h>
66#include <stdlib.h> 58#include <stdlib.h>
67#include <unistd.h> 59#include <unistd.h>
68#include <ctype.h> 60#include <ctype.h>
69#include <sys/stat.h> 61#include <sys/stat.h>
70#include <sys/types.h> 62#include <sys/types.h>
71#include <signal.h> 63#include <signal.h>
72 64
73#include <assert.h> 65#include <assert.h>
74 66
75 67
76 68
77// #include "TEWidget.moc" 69// #include "TEWidget.moc"
78//#include <kapp.h> 70//#include <kapp.h>
79//#include <kcursor.h> 71//#include <kcursor.h>
80//#include <kurl.h> 72//#include <kurl.h>
81//#include <kdebug.h> 73//#include <kdebug.h>
82//#include <klocale.h> 74//#include <klocale.h>
83 75
84#define HERE printf("%s(%d): %s\n",__FILE__,__LINE__,__FUNCTION__) 76#define HERE printf("%s(%d): %s\n",__FILE__,__LINE__,__FUNCTION__)
85#define HCNT(Name) // { static int cnt = 1; printf("%s(%d): %s %d\n",__FILE__,__LINE__,Name,cnt++); } 77#define HCNT(Name) // { static int cnt = 1; printf("%s(%d): %s %d\n",__FILE__,__LINE__,Name,cnt++); }
86 78
87#define loc(X,Y) ((Y)*columns+(X)) 79#define loc(X,Y) ((Y)*columns+(X))
88 80
89//FIXME: the rim should normally be 1, 0 only when running in full screen mode. 81//FIXME: the rim should normally be 1, 0 only when running in full screen mode.
90#define rimX 0 // left/right rim width 82#define rimX 0 // left/right rim width
91#define rimY 0 // top/bottom rim high 83#define rimY 0 // top/bottom rim high
92 84
93#define yMouseScroll 1 85#define yMouseScroll 1
94// scroll increment used when dragging selection at top/bottom of window. 86// scroll increment used when dragging selection at top/bottom of window.
95 87
96/* Button XPM */ 88/* Button XPM */
97namespace { 89namespace {
98static char * menu_xpm[] = { 90static char * menu_xpm[] = {
99"12 12 5 1", 91"12 12 5 1",
100 " c None", 92 " c None",
101 ".c #000000", 93 ".c #000000",
102 "+c #FFFDAD", 94 "+c #FFFDAD",
103 "@c #FFFF00", 95 "@c #FFFF00",
104 "#c #E5E100", 96 "#c #E5E100",
105" ", 97" ",
106" ", 98" ",
107" ......... ", 99" ......... ",
108" .+++++++. ", 100" .+++++++. ",
109" .+@@@@#. ", 101" .+@@@@#. ",
110" .+@@@#. ", 102" .+@@@#. ",
111" .+@@#. ", 103" .+@@#. ",
112" .+@#. ", 104" .+@#. ",
113" .+#. ", 105" .+#. ",
114" .+. ", 106" .+. ",
115" .. ", 107" .. ",
116" "}; 108" "};
117 109
118} 110}
119 111
120 112
121/* ------------------------------------------------------------------------- */ 113/* ------------------------------------------------------------------------- */
122/* */ 114/* */
123/* Colors */ 115/* Colors */
124/* */ 116/* */
125/* ------------------------------------------------------------------------- */ 117/* ------------------------------------------------------------------------- */
126 118
127//FIXME: the default color table is in session.C now. 119//FIXME: the default color table is in session.C now.
128// We need a way to get rid of this one, here. 120// We need a way to get rid of this one, here.
129static const ColorEntry base_color_table[TABLE_COLORS] = 121static const ColorEntry base_color_table[TABLE_COLORS] =
130// The following are almost IBM standard color codes, with some slight 122// The following are almost IBM standard color codes, with some slight
131// gamma correction for the dim colors to compensate for bright X screens. 123// gamma correction for the dim colors to compensate for bright X screens.
132// It contains the 8 ansiterm/xterm colors in 2 intensities. 124// It contains the 8 ansiterm/xterm colors in 2 intensities.
133{ 125{
134 // Fixme: could add faint colors here, also. 126 // Fixme: could add faint colors here, also.
135 // normal 127 // normal
136 ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 1, 0 ), // Dfore, Dback 128 ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 1, 0 ), // Dfore, Dback
137 ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0x18), 0, 0 ), // Black, Red 129 ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0x18), 0, 0 ), // Black, Red
138 ColorEntry(QColor(0x18,0xB2,0x18), 0, 0 ), ColorEntry( QColor(0xB2,0x68,0x18), 0, 0 ), // Green, Yellow 130 ColorEntry(QColor(0x18,0xB2,0x18), 0, 0 ), ColorEntry( QColor(0xB2,0x68,0x18), 0, 0 ), // Green, Yellow
139 ColorEntry(QColor(0x18,0x18,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ), // Blue, Magenta 131 ColorEntry(QColor(0x18,0x18,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ), // Blue, Magenta
140 ColorEntry(QColor(0x18,0xB2,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 0, 0 ), // Cyan, White 132 ColorEntry(QColor(0x18,0xB2,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 0, 0 ), // Cyan, White
141 // intensiv 133 // intensiv
142 ColorEntry(QColor(0x00,0x00,0x00), 0, 1 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 1, 0 ), 134 ColorEntry(QColor(0x00,0x00,0x00), 0, 1 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 1, 0 ),
143 ColorEntry(QColor(0x68,0x68,0x68), 0, 0 ), ColorEntry( QColor(0xFF,0x54,0x54), 0, 0 ), 135 ColorEntry(QColor(0x68,0x68,0x68), 0, 0 ), ColorEntry( QColor(0xFF,0x54,0x54), 0, 0 ),
144 ColorEntry(QColor(0x54,0xFF,0x54), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0x54), 0, 0 ), 136 ColorEntry(QColor(0x54,0xFF,0x54), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0x54), 0, 0 ),
145 ColorEntry(QColor(0x54,0x54,0xFF), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ), 137 ColorEntry(QColor(0x54,0x54,0xFF), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ),
146 ColorEntry(QColor(0x54,0xFF,0xFF), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 0, 0 ) 138 ColorEntry(QColor(0x54,0xFF,0xFF), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 0, 0 )
147}; 139};
148 140
149/* Note that we use ANSI color order (bgr), while IBMPC color order is (rgb) 141/* Note that we use ANSI color order (bgr), while IBMPC color order is (rgb)
150 142
151 Code 0 1 2 3 4 5 6 7 143 Code 0 1 2 3 4 5 6 7
152 ----------- ------- ------- ------- ------- ------- ------- ------- ------- 144 ----------- ------- ------- ------- ------- ------- ------- ------- -------
153 ANSI (bgr) Black Red Green Yellow Blue Magenta Cyan White 145 ANSI (bgr) Black Red Green Yellow Blue Magenta Cyan White
154 IBMPC (rgb) Black Blue Green Cyan Red Magenta Yellow White 146 IBMPC (rgb) Black Blue Green Cyan Red Magenta Yellow White
155*/ 147*/
156 148
157QColor TEWidget::getDefaultBackColor() 149QColor TEWidget::getDefaultBackColor()
158{ 150{
159 return color_table[DEFAULT_BACK_COLOR].color; 151 return color_table[DEFAULT_BACK_COLOR].color;
160} 152}
161 153
162const ColorEntry* TEWidget::getColorTable() const 154const ColorEntry* TEWidget::getColorTable() const
163{ 155{
164 return color_table; 156 return color_table;
165} 157}
166 158
167const ColorEntry* TEWidget::getdefaultColorTable() const 159const ColorEntry* TEWidget::getdefaultColorTable() const
168{ 160{
169 return base_color_table; 161 return base_color_table;
170} 162}
171 163
172 164
173const QPixmap *TEWidget::backgroundPixmap() 165const QPixmap *TEWidget::backgroundPixmap()
174{ 166{
175 static QPixmap *bg = new QPixmap("~/qpim/main/pics/faded_bg.xpm"); 167 static QPixmap *bg = new QPixmap("~/qpim/main/pics/faded_bg.xpm");
176 const QPixmap *pm = bg; 168 const QPixmap *pm = bg;
177 return pm; 169 return pm;
178} 170}
179 171
180void TEWidget::setColorTable(const ColorEntry table[]) 172void TEWidget::setColorTable(const ColorEntry table[])
181{ 173{
182 for (int i = 0; i < TABLE_COLORS; i++) color_table[i] = table[i]; 174 for (int i = 0; i < TABLE_COLORS; i++) color_table[i] = table[i];
183 175
184 const QPixmap* pm = backgroundPixmap(); 176 const QPixmap* pm = backgroundPixmap();
185 if (!pm) setBackgroundColor(color_table[DEFAULT_BACK_COLOR].color); 177 if (!pm) setBackgroundColor(color_table[DEFAULT_BACK_COLOR].color);
186 update(); 178 update();
187} 179}
188 180
189//FIXME: add backgroundPixmapChanged. 181//FIXME: add backgroundPixmapChanged.
190 182
191/* ------------------------------------------------------------------------- */ 183/* ------------------------------------------------------------------------- */
diff --git a/noncore/apps/opie-console/TEmuVt102.cpp b/noncore/apps/opie-console/TEmuVt102.cpp
index 275c18d..0d6aef5 100644
--- a/noncore/apps/opie-console/TEmuVt102.cpp
+++ b/noncore/apps/opie-console/TEmuVt102.cpp
@@ -1,162 +1,157 @@
1/* ------------------------------------------------------------------------- */ 1/* ------------------------------------------------------------------------- */
2/* */ 2/* */
3/* [TEmuVt102.C] VT102 Terminal Emulation */ 3/* [TEmuVt102.C] VT102 Terminal Emulation */
4/* */ 4/* */
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/* */ 12/* */
13/* Ported Konsole to Qt/Embedded */ 13/* Ported Konsole to Qt/Embedded */
14/* */ 14/* */
15/* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */ 15/* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */
16/* */ 16/* */
17/* -------------------------------------------------------------------------- */ 17/* -------------------------------------------------------------------------- */
18 18
19/*! \class TEmuVt102 19/*! \class TEmuVt102
20 20
21 \brief Actual Emulation for Konsole 21 \brief Actual Emulation for Konsole
22 22
23 \sa TEWidget \sa TEScreen 23 \sa TEWidget \sa TEScreen
24*/ 24*/
25 25
26#include "TEmuVt102.h" 26#include "TEmuVt102.h"
27#include "TEWidget.h"
28#include "TEScreen.h"
29#include "keytrans.h"
30 27
31#include <stdio.h> 28#include <stdio.h>
32#include <unistd.h> 29#include <unistd.h>
33#include <qkeycode.h>
34#include <qtextcodec.h>
35 30
36 31
37/* VT102 Terminal Emulation 32/* VT102 Terminal Emulation
38 33
39 This class puts together the screens, the pty and the widget to a 34 This class puts together the screens, the pty and the widget to a
40 complete terminal emulation. Beside combining it's componentes, it 35 complete terminal emulation. Beside combining it's componentes, it
41 handles the emulations's protocol. 36 handles the emulations's protocol.
42 37
43 This module consists of the following sections: 38 This module consists of the following sections:
44 39
45 - Constructor/Destructor 40 - Constructor/Destructor
46 - Incoming Bytes Event pipeline 41 - Incoming Bytes Event pipeline
47 - Outgoing Bytes 42 - Outgoing Bytes
48 - Mouse Events 43 - Mouse Events
49 - Keyboard Events 44 - Keyboard Events
50 - Modes and Charset State 45 - Modes and Charset State
51 - Diagnostics 46 - Diagnostics
52*/ 47*/
53 48
54 49
55/* ------------------------------------------------------------------------- */ 50/* ------------------------------------------------------------------------- */
56/* */ 51/* */
57/* Constructor / Destructor */ 52/* Constructor / Destructor */
58/* */ 53/* */
59/* ------------------------------------------------------------------------- */ 54/* ------------------------------------------------------------------------- */
60 55
61/* 56/*
62 Nothing really intesting happens here. 57 Nothing really intesting happens here.
63*/ 58*/
64 59
65/*! 60/*!
66*/ 61*/
67 62
68TEmuVt102::TEmuVt102(TEWidget* gui) : TEmulation(gui) 63TEmuVt102::TEmuVt102(TEWidget* gui) : TEmulation(gui)
69{ 64{
70 QObject::connect(gui,SIGNAL(mouseSignal(int,int,int)), 65 QObject::connect(gui,SIGNAL(mouseSignal(int,int,int)),
71 this,SLOT(onMouse(int,int,int))); 66 this,SLOT(onMouse(int,int,int)));
72 initTokenizer(); 67 initTokenizer();
73 reset(); 68 reset();
74} 69}
75 70
76/*! 71/*!
77*/ 72*/
78 73
79TEmuVt102::~TEmuVt102() 74TEmuVt102::~TEmuVt102()
80{ 75{
81} 76}
82 77
83/*! 78/*!
84*/ 79*/
85 80
86void TEmuVt102::reset() 81void TEmuVt102::reset()
87{ 82{
88 resetToken(); 83 resetToken();
89 resetModes(); 84 resetModes();
90 resetCharset(0); screen[0]->reset(); 85 resetCharset(0); screen[0]->reset();
91 resetCharset(1); screen[0]->reset(); 86 resetCharset(1); screen[0]->reset();
92 setCodec(0); 87 setCodec(0);
93 setKeytrans("linux.keytab"); 88 setKeytrans("linux.keytab");
94} 89}
95 90
96/* ------------------------------------------------------------------------- */ 91/* ------------------------------------------------------------------------- */
97/* */ 92/* */
98/* Processing the incoming byte stream */ 93/* Processing the incoming byte stream */
99/* */ 94/* */
100/* ------------------------------------------------------------------------- */ 95/* ------------------------------------------------------------------------- */
101 96
102/* Incoming Bytes Event pipeline 97/* Incoming Bytes Event pipeline
103 98
104 This section deals with decoding the incoming character stream. 99 This section deals with decoding the incoming character stream.
105 Decoding means here, that the stream is first seperated into `tokens' 100 Decoding means here, that the stream is first seperated into `tokens'
106 which are then mapped to a `meaning' provided as operations by the 101 which are then mapped to a `meaning' provided as operations by the
107 `TEScreen' class or by the emulation class itself. 102 `TEScreen' class or by the emulation class itself.
108 103
109 The pipeline proceeds as follows: 104 The pipeline proceeds as follows:
110 105
111 - Tokenizing the ESC codes (onRcvChar) 106 - Tokenizing the ESC codes (onRcvChar)
112 - VT100 code page translation of plain characters (applyCharset) 107 - VT100 code page translation of plain characters (applyCharset)
113 - Interpretation of ESC codes (tau) 108 - Interpretation of ESC codes (tau)
114 109
115 The escape codes and their meaning are described in the 110 The escape codes and their meaning are described in the
116 technical reference of this program. 111 technical reference of this program.
117*/ 112*/
118 113
119// Tokens ------------------------------------------------------------------ -- 114// Tokens ------------------------------------------------------------------ --
120 115
121/* 116/*
122 Since the tokens are the central notion if this section, we've put them 117 Since the tokens are the central notion if this section, we've put them
123 in front. They provide the syntactical elements used to represent the 118 in front. They provide the syntactical elements used to represent the
124 terminals operations as byte sequences. 119 terminals operations as byte sequences.
125 120
126 They are encodes here into a single machine word, so that we can later 121 They are encodes here into a single machine word, so that we can later
127 switch over them easily. Depending on the token itself, additional 122 switch over them easily. Depending on the token itself, additional
128 argument variables are filled with parameter values. 123 argument variables are filled with parameter values.
129 124
130 The tokens are defined below: 125 The tokens are defined below:
131 126
132 - CHR - Printable characters (32..255 but DEL (=127)) 127 - CHR - Printable characters (32..255 but DEL (=127))
133 - CTL - Control characters (0..31 but ESC (= 27), DEL) 128 - CTL - Control characters (0..31 but ESC (= 27), DEL)
134 - ESC - Escape codes of the form <ESC><CHR but `[]()+*#'> 129 - ESC - Escape codes of the form <ESC><CHR but `[]()+*#'>
135 - ESC_DE - Escape codes of the form <ESC><any of `()+*#%'> C 130 - ESC_DE - Escape codes of the form <ESC><any of `()+*#%'> C
136 - CSI_PN - Escape codes of the form <ESC>'[' {Pn} ';' {Pn} C 131 - CSI_PN - Escape codes of the form <ESC>'[' {Pn} ';' {Pn} C
137 - CSI_PS - Escape codes of the form <ESC>'[' {Pn} ';' ... C 132 - CSI_PS - Escape codes of the form <ESC>'[' {Pn} ';' ... C
138 - CSI_PR - Escape codes of the form <ESC>'[' '?' {Pn} ';' ... C 133 - CSI_PR - Escape codes of the form <ESC>'[' '?' {Pn} ';' ... C
139 - VT52 - VT52 escape codes 134 - VT52 - VT52 escape codes
140 - <ESC><Chr> 135 - <ESC><Chr>
141 - <ESC>'Y'{Pc}{Pc} 136 - <ESC>'Y'{Pc}{Pc}
142 - XTE_HA - Xterm hacks <ESC>`]' {Pn} `;' {Text} <BEL> 137 - XTE_HA - Xterm hacks <ESC>`]' {Pn} `;' {Text} <BEL>
143 note that this is handled differently 138 note that this is handled differently
144 139
145 The last two forms allow list of arguments. Since the elements of 140 The last two forms allow list of arguments. Since the elements of
146 the lists are treated individually the same way, they are passed 141 the lists are treated individually the same way, they are passed
147 as individual tokens to the interpretation. Further, because the 142 as individual tokens to the interpretation. Further, because the
148 meaning of the parameters are names (althought represented as numbers), 143 meaning of the parameters are names (althought represented as numbers),
149 they are includes within the token ('N'). 144 they are includes within the token ('N').
150 145
151*/ 146*/
152 147
153#define TY_CONSTR(T,A,N) ( ((((int)N) & 0xffff) << 16) | ((((int)A) & 0xff) << 8) | (((int)T) & 0xff) ) 148#define TY_CONSTR(T,A,N) ( ((((int)N) & 0xffff) << 16) | ((((int)A) & 0xff) << 8) | (((int)T) & 0xff) )
154 149
155#define TY_CHR___( ) TY_CONSTR(0,0,0) 150#define TY_CHR___( ) TY_CONSTR(0,0,0)
156#define TY_CTL___(A ) TY_CONSTR(1,A,0) 151#define TY_CTL___(A ) TY_CONSTR(1,A,0)
157#define TY_ESC___(A ) TY_CONSTR(2,A,0) 152#define TY_ESC___(A ) TY_CONSTR(2,A,0)
158#define TY_ESC_CS(A,B) TY_CONSTR(3,A,B) 153#define TY_ESC_CS(A,B) TY_CONSTR(3,A,B)
159#define TY_ESC_DE(A ) TY_CONSTR(4,A,0) 154#define TY_ESC_DE(A ) TY_CONSTR(4,A,0)
160#define TY_CSI_PS(A,N) TY_CONSTR(5,A,N) 155#define TY_CSI_PS(A,N) TY_CONSTR(5,A,N)
161#define TY_CSI_PN(A ) TY_CONSTR(6,A,0) 156#define TY_CSI_PN(A ) TY_CONSTR(6,A,0)
162#define TY_CSI_PR(A,N) TY_CONSTR(7,A,N) 157#define TY_CSI_PR(A,N) TY_CONSTR(7,A,N)
diff --git a/noncore/apps/opie-console/TEmulation.cpp b/noncore/apps/opie-console/TEmulation.cpp
index 3b1b9e1..d0169d7 100644
--- a/noncore/apps/opie-console/TEmulation.cpp
+++ b/noncore/apps/opie-console/TEmulation.cpp
@@ -1,206 +1,203 @@
1/* -------------------------------------------------------------------------- */ 1/* -------------------------------------------------------------------------- */
2/* */ 2/* */
3/* [TEmulation.cpp] Terminal Emulation Decoder */ 3/* [TEmulation.cpp] Terminal Emulation Decoder */
4/* */ 4/* */
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 /* */ 12 /* */
13/* Ported Konsole to Qt/Embedded */ 13/* Ported Konsole to Qt/Embedded */
14 /* */ 14 /* */
15/* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */ 15/* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */
16 /* */ 16 /* */
17/* -------------------------------------------------------------------------- */ 17/* -------------------------------------------------------------------------- */
18 18
19/*! \class TEmulation 19/*! \class TEmulation
20 20
21 \brief Mediator between TEWidget and TEScreen. 21 \brief Mediator between TEWidget and TEScreen.
22 22
23 This class is responsible to scan the escapes sequences of the terminal 23 This class is responsible to scan the escapes sequences of the terminal
24 emulation and to map it to their corresponding semantic complements. 24 emulation and to map it to their corresponding semantic complements.
25 Thus this module knows mainly about decoding escapes sequences and 25 Thus this module knows mainly about decoding escapes sequences and
26 is a stateless device w.r.t. the semantics. 26 is a stateless device w.r.t. the semantics.
27 27
28 It is also responsible to refresh the TEWidget by certain rules. 28 It is also responsible to refresh the TEWidget by certain rules.
29 29
30 \sa TEWidget \sa TEScreen 30 \sa TEWidget \sa TEScreen
31 31
32 \par A note on refreshing 32 \par A note on refreshing
33 33
34 Although the modifications to the current screen image could immediately 34 Although the modifications to the current screen image could immediately
35 be propagated via `TEWidget' to the graphical surface, we have chosen 35 be propagated via `TEWidget' to the graphical surface, we have chosen
36 another way here. 36 another way here.
37 37
38 The reason for doing so is twofold. 38 The reason for doing so is twofold.
39 39
40 First, experiments show that directly displaying the operation results 40 First, experiments show that directly displaying the operation results
41 in slowing down the overall performance of emulations. Displaying 41 in slowing down the overall performance of emulations. Displaying
42 individual characters using X11 creates a lot of overhead. 42 individual characters using X11 creates a lot of overhead.
43 43
44 Second, by using the following refreshing method, the screen operations 44 Second, by using the following refreshing method, the screen operations
45 can be completely separated from the displaying. This greatly simplifies 45 can be completely separated from the displaying. This greatly simplifies
46 the programmer's task of coding and maintaining the screen operations, 46 the programmer's task of coding and maintaining the screen operations,
47 since one need not worry about differential modifications on the 47 since one need not worry about differential modifications on the
48 display affecting the operation of concern. 48 display affecting the operation of concern.
49 49
50 We use a refreshing algorithm here that has been adoped from rxvt/kvt. 50 We use a refreshing algorithm here that has been adoped from rxvt/kvt.
51 51
52 By this, refreshing is driven by a timer, which is (re)started whenever 52 By this, refreshing is driven by a timer, which is (re)started whenever
53 a new bunch of data to be interpreted by the emulation arives at `onRcvBlock'. 53 a new bunch of data to be interpreted by the emulation arives at `onRcvBlock'.
54 As soon as no more data arrive for `BULK_TIMEOUT' milliseconds, we trigger 54 As soon as no more data arrive for `BULK_TIMEOUT' milliseconds, we trigger
55 refresh. This rule suits both bulk display operation as done by curses as 55 refresh. This rule suits both bulk display operation as done by curses as
56 well as individual characters typed. 56 well as individual characters typed.
57 (BULK_TIMEOUT < 1000 / max characters received from keyboard per second). 57 (BULK_TIMEOUT < 1000 / max characters received from keyboard per second).
58 58
59 Additionally, we trigger refreshing by newlines comming in to make visual 59 Additionally, we trigger refreshing by newlines comming in to make visual
60 snapshots of lists as produced by `cat', `ls' and likely programs, thereby 60 snapshots of lists as produced by `cat', `ls' and likely programs, thereby
61 producing the illusion of a permanent and immediate display operation. 61 producing the illusion of a permanent and immediate display operation.
62 62
63 As a sort of catch-all needed for cases where none of the above 63 As a sort of catch-all needed for cases where none of the above
64 conditions catch, the screen refresh is also triggered by a count 64 conditions catch, the screen refresh is also triggered by a count
65 of incoming bulks (`bulk_incnt'). 65 of incoming bulks (`bulk_incnt').
66*/ 66*/
67 67
68/* FIXME 68/* FIXME
69 - evtl. the bulk operations could be made more transparent. 69 - evtl. the bulk operations could be made more transparent.
70*/ 70*/
71 71
72#include "TEmulation.h" 72#include "TEmulation.h"
73#include "TEWidget.h"
74#include "TEScreen.h"
75#include <stdio.h> 73#include <stdio.h>
76#include <stdlib.h> 74#include <stdlib.h>
77#include <unistd.h> 75#include <unistd.h>
78#include <qkeycode.h>
79 76
80 77
81/* ------------------------------------------------------------------------- */ 78/* ------------------------------------------------------------------------- */
82/* */ 79/* */
83/* TEmulation */ 80/* TEmulation */
84/* */ 81/* */
85/* ------------------------------------------------------------------------- */ 82/* ------------------------------------------------------------------------- */
86 83
87#define CNTL(c) ((c)-'@') 84#define CNTL(c) ((c)-'@')
88 85
89/*! 86/*!
90*/ 87*/
91 88
92TEmulation::TEmulation(TEWidget* gui) 89TEmulation::TEmulation(TEWidget* gui)
93: decoder((QTextDecoder*)NULL) 90: decoder((QTextDecoder*)NULL)
94{ 91{
95 this->gui = gui; 92 this->gui = gui;
96 93
97 screen[0] = new TEScreen(gui->Lines(),gui->Columns()); 94 screen[0] = new TEScreen(gui->Lines(),gui->Columns());
98 screen[1] = new TEScreen(gui->Lines(),gui->Columns()); 95 screen[1] = new TEScreen(gui->Lines(),gui->Columns());
99 scr = screen[0]; 96 scr = screen[0];
100 97
101 bulk_nlcnt = 0; // reset bulk newline counter 98 bulk_nlcnt = 0; // reset bulk newline counter
102 bulk_incnt = 0; // reset bulk counter 99 bulk_incnt = 0; // reset bulk counter
103 connected = FALSE; 100 connected = FALSE;
104 101
105 QObject::connect(&bulk_timer, SIGNAL(timeout()), this, SLOT(showBulk()) ); 102 QObject::connect(&bulk_timer, SIGNAL(timeout()), this, SLOT(showBulk()) );
106 QObject::connect(gui,SIGNAL(changedImageSizeSignal(int,int)), 103 QObject::connect(gui,SIGNAL(changedImageSizeSignal(int,int)),
107 this,SLOT(onImageSizeChange(int,int))); 104 this,SLOT(onImageSizeChange(int,int)));
108 QObject::connect(gui,SIGNAL(changedHistoryCursor(int)), 105 QObject::connect(gui,SIGNAL(changedHistoryCursor(int)),
109 this,SLOT(onHistoryCursorChange(int))); 106 this,SLOT(onHistoryCursorChange(int)));
110 QObject::connect(gui,SIGNAL(keyPressedSignal(QKeyEvent*)), 107 QObject::connect(gui,SIGNAL(keyPressedSignal(QKeyEvent*)),
111 this,SLOT(onKeyPress(QKeyEvent*))); 108 this,SLOT(onKeyPress(QKeyEvent*)));
112 QObject::connect(gui,SIGNAL(beginSelectionSignal(const int,const int)), 109 QObject::connect(gui,SIGNAL(beginSelectionSignal(const int,const int)),
113 this,SLOT(onSelectionBegin(const int,const int)) ); 110 this,SLOT(onSelectionBegin(const int,const int)) );
114 QObject::connect(gui,SIGNAL(extendSelectionSignal(const int,const int)), 111 QObject::connect(gui,SIGNAL(extendSelectionSignal(const int,const int)),
115 this,SLOT(onSelectionExtend(const int,const int)) ); 112 this,SLOT(onSelectionExtend(const int,const int)) );
116 QObject::connect(gui,SIGNAL(endSelectionSignal(const BOOL)), 113 QObject::connect(gui,SIGNAL(endSelectionSignal(const BOOL)),
117 this,SLOT(setSelection(const BOOL)) ); 114 this,SLOT(setSelection(const BOOL)) );
118 QObject::connect(gui,SIGNAL(clearSelectionSignal()), 115 QObject::connect(gui,SIGNAL(clearSelectionSignal()),
119 this,SLOT(clearSelection()) ); 116 this,SLOT(clearSelection()) );
120} 117}
121 118
122/*! 119/*!
123*/ 120*/
124 121
125TEmulation::~TEmulation() 122TEmulation::~TEmulation()
126{ 123{
127 delete screen[0]; 124 delete screen[0];
128 delete screen[1]; 125 delete screen[1];
129 bulk_timer.stop(); 126 bulk_timer.stop();
130} 127}
131 128
132/*! change between primary and alternate screen 129/*! change between primary and alternate screen
133*/ 130*/
134 131
135void TEmulation::setScreen(int n) 132void TEmulation::setScreen(int n)
136{ 133{
137 scr = screen[n&1]; 134 scr = screen[n&1];
138} 135}
139 136
140void TEmulation::setHistory(bool on) 137void TEmulation::setHistory(bool on)
141{ 138{
142 screen[0]->setScroll(on); 139 screen[0]->setScroll(on);
143 if (!connected) return; 140 if (!connected) return;
144 showBulk(); 141 showBulk();
145} 142}
146 143
147bool TEmulation::history() 144bool TEmulation::history()
148{ 145{
149 return screen[0]->hasScroll(); 146 return screen[0]->hasScroll();
150} 147}
151 148
152void TEmulation::setCodec(int c) 149void TEmulation::setCodec(int c)
153{ 150{
154 //FIXME: check whether we have to free codec 151 //FIXME: check whether we have to free codec
155 codec = c ? QTextCodec::codecForName("utf8") 152 codec = c ? QTextCodec::codecForName("utf8")
156 : QTextCodec::codecForLocale(); 153 : QTextCodec::codecForLocale();
157 if (decoder) delete decoder; 154 if (decoder) delete decoder;
158 decoder = codec->makeDecoder(); 155 decoder = codec->makeDecoder();
159} 156}
160 157
161void TEmulation::setKeytrans(int no) 158void TEmulation::setKeytrans(int no)
162{ 159{
163 keytrans = KeyTrans::find(no); 160 keytrans = KeyTrans::find(no);
164} 161}
165 162
166void TEmulation::setKeytrans(const char * no) 163void TEmulation::setKeytrans(const char * no)
167{ 164{
168 keytrans = KeyTrans::find(no); 165 keytrans = KeyTrans::find(no);
169} 166}
170 167
171// Interpreting Codes --------------------------------------------------------- 168// Interpreting Codes ---------------------------------------------------------
172 169
173/* 170/*
174 This section deals with decoding the incoming character stream. 171 This section deals with decoding the incoming character stream.
175 Decoding means here, that the stream is first seperated into `tokens' 172 Decoding means here, that the stream is first seperated into `tokens'
176 which are then mapped to a `meaning' provided as operations by the 173 which are then mapped to a `meaning' provided as operations by the
177 `Screen' class. 174 `Screen' class.
178*/ 175*/
179 176
180/*! 177/*!
181*/ 178*/
182 179
183void TEmulation::onRcvChar(int c) 180void TEmulation::onRcvChar(int c)
184// process application unicode input to terminal 181// process application unicode input to terminal
185// this is a trivial scanner 182// this is a trivial scanner
186{ 183{
187 c &= 0xff; 184 c &= 0xff;
188 switch (c) 185 switch (c)
189 { 186 {
190 case '\b' : scr->BackSpace(); break; 187 case '\b' : scr->BackSpace(); break;
191 case '\t' : scr->Tabulate(); break; 188 case '\t' : scr->Tabulate(); break;
192 case '\n' : scr->NewLine(); break; 189 case '\n' : scr->NewLine(); break;
193 case '\r' : scr->Return(); break; 190 case '\r' : scr->Return(); break;
194 case 0x07 : gui->Bell(); break; 191 case 0x07 : gui->Bell(); break;
195 default : scr->ShowCharacter(c); break; 192 default : scr->ShowCharacter(c); break;
196 }; 193 };
197} 194}
198 195
199/* ------------------------------------------------------------------------- */ 196/* ------------------------------------------------------------------------- */
200/* */ 197/* */
201/* Keyboard Handling */ 198/* Keyboard Handling */
202/* */ 199/* */
203/* ------------------------------------------------------------------------- */ 200/* ------------------------------------------------------------------------- */
204 201
205/*! 202/*!
206*/ 203*/
diff --git a/noncore/apps/opie-console/configdialog.cpp b/noncore/apps/opie-console/configdialog.cpp
index 53b3853..b23f4d0 100644
--- a/noncore/apps/opie-console/configdialog.cpp
+++ b/noncore/apps/opie-console/configdialog.cpp
@@ -1,114 +1,111 @@
1#include <qdialog.h>
2#include <qlistview.h> 1#include <qlistview.h>
3 2
4 3
5#include "profile.h"
6#include "configdialog.h" 4#include "configdialog.h"
7#include "metafactory.h"
8#include "profileeditordialog.h" 5#include "profileeditordialog.h"
9 6
10class ConfigListItem : public QListViewItem { 7class ConfigListItem : public QListViewItem {
11public: 8public:
12 ConfigListItem( QListView* item, const Profile& ); 9 ConfigListItem( QListView* item, const Profile& );
13 ~ConfigListItem(); 10 ~ConfigListItem();
14 Profile profile()const; 11 Profile profile()const;
15 12
16private: 13private:
17 Profile m_prof; 14 Profile m_prof;
18}; 15};
19ConfigListItem::ConfigListItem( QListView* item, const Profile& prof ) 16ConfigListItem::ConfigListItem( QListView* item, const Profile& prof )
20 : QListViewItem( item ), m_prof( prof ) 17 : QListViewItem( item ), m_prof( prof )
21{ 18{
22 setText(0, prof.name() ); 19 setText(0, prof.name() );
23} 20}
24ConfigListItem::~ConfigListItem() { 21ConfigListItem::~ConfigListItem() {
25 22
26} 23}
27Profile ConfigListItem::profile()const { 24Profile ConfigListItem::profile()const {
28 return m_prof; 25 return m_prof;
29} 26}
30 27
31/* Dialog */ 28/* Dialog */
32 29
33ConfigDialog::ConfigDialog( const Profile::ValueList& lis, MetaFactory* fa, 30ConfigDialog::ConfigDialog( const Profile::ValueList& lis, MetaFactory* fa,
34 QWidget* parent ) 31 QWidget* parent )
35 : ConfigureBase( parent, 0, TRUE ), m_fact( fa ) 32 : ConfigureBase( parent, 0, TRUE ), m_fact( fa )
36{ 33{
37 //init(); 34 //init();
38 { 35 {
39 Profile::ValueList::ConstIterator it; 36 Profile::ValueList::ConstIterator it;
40 for (it = lis.begin(); it != lis.end(); ++it ) { 37 for (it = lis.begin(); it != lis.end(); ++it ) {
41 new ConfigListItem( lstView, (*it) ); 38 new ConfigListItem( lstView, (*it) );
42 } 39 }
43 } 40 }
44} 41}
45ConfigDialog::~ConfigDialog() { 42ConfigDialog::~ConfigDialog() {
46 43
47} 44}
48Profile::ValueList ConfigDialog::list()const { 45Profile::ValueList ConfigDialog::list()const {
49/* iterate over the list */ 46/* iterate over the list */
50 Profile::ValueList lst; 47 Profile::ValueList lst;
51 QListViewItemIterator it(lstView); 48 QListViewItemIterator it(lstView);
52 for ( ; it.current(); ++it ) { 49 for ( ; it.current(); ++it ) {
53 ConfigListItem* item = (ConfigListItem*)it.current(); 50 ConfigListItem* item = (ConfigListItem*)it.current();
54 lst.append( item->profile() ); 51 lst.append( item->profile() );
55 } 52 }
56 return lst; 53 return lst;
57} 54}
58/* our slots */ 55/* our slots */
59void ConfigDialog::slotRemove() { 56void ConfigDialog::slotRemove() {
60 ConfigListItem* item = (ConfigListItem*)lstView->currentItem(); 57 ConfigListItem* item = (ConfigListItem*)lstView->currentItem();
61 if (!item ) 58 if (!item )
62 return; 59 return;
63 60
64 lstView->takeItem( item ); 61 lstView->takeItem( item );
65 delete item; 62 delete item;
66} 63}
67 64
68void ConfigDialog::slotEdit() { 65void ConfigDialog::slotEdit() {
69 Profile p; 66 Profile p;
70 67
71 if(!lstView->currentItem()) return; 68 if(!lstView->currentItem()) return;
72 69
73 // Load profile 70 // Load profile
74 p = ((ConfigListItem*)lstView->currentItem())->profile(); 71 p = ((ConfigListItem*)lstView->currentItem())->profile();
75 72
76 ProfileEditorDialog dlg(m_fact, p); 73 ProfileEditorDialog dlg(m_fact, p);
77 74
78 dlg.setCaption(tr("Edit Connection Profile")); 75 dlg.setCaption(tr("Edit Connection Profile"));
79 dlg.showMaximized(); 76 dlg.showMaximized();
80 int ret = dlg.exec(); 77 int ret = dlg.exec();
81 78
82 if(ret == QDialog::Accepted) 79 if(ret == QDialog::Accepted)
83 { 80 {
84 if(lstView->currentItem()) delete lstView->currentItem(); 81 if(lstView->currentItem()) delete lstView->currentItem();
85 82
86 // use dlg.terminal()! 83 // use dlg.terminal()!
87 Profile p = dlg.profile(); 84 Profile p = dlg.profile();
88 85
89 new ConfigListItem(lstView, p); 86 new ConfigListItem(lstView, p);
90 } 87 }
91} 88}
92 89
93 90
94void ConfigDialog::slotAdd() { 91void ConfigDialog::slotAdd() {
95 ProfileEditorDialog dlg(m_fact); 92 ProfileEditorDialog dlg(m_fact);
96 93
97 dlg.setCaption(tr("New Connection")); 94 dlg.setCaption(tr("New Connection"));
98 dlg.showMaximized(); 95 dlg.showMaximized();
99 int ret = dlg.exec(); 96 int ret = dlg.exec();
100 97
101 if(ret == QDialog::Accepted) 98 if(ret == QDialog::Accepted)
102 { 99 {
103 // TODO: Move into general profile save part 100 // TODO: Move into general profile save part
104 // assignments 101 // assignments
105 //QString type = dlg.term_type(); 102 //QString type = dlg.term_type();
106 //if(type == "VT102") profile = Profile::VT102; 103 //if(type == "VT102") profile = Profile::VT102;
107 104
108 // get profile from editor 105 // get profile from editor
109 Profile p = dlg.profile(); 106 Profile p = dlg.profile();
110 107
111 new ConfigListItem(lstView, p); 108 new ConfigListItem(lstView, p);
112 } 109 }
113} 110}
114 111
diff --git a/noncore/apps/opie-console/consoleconfigwidget.cpp b/noncore/apps/opie-console/consoleconfigwidget.cpp
index faedc58..a6ad8d2 100644
--- a/noncore/apps/opie-console/consoleconfigwidget.cpp
+++ b/noncore/apps/opie-console/consoleconfigwidget.cpp
@@ -1,111 +1,109 @@
1#include <qlabel.h> 1#include <qlabel.h>
2#include <qlayout.h> 2#include <qlayout.h>
3#include <qcombobox.h>
4#include <qlineedit.h> 3#include <qlineedit.h>
5#include <qpushbutton.h> 4#include <qpushbutton.h>
6#include <qlistview.h> 5#include <qlistview.h>
7#include <qhbox.h> 6#include <qhbox.h>
8#include <qregexp.h>
9#include <stdio.h> 7#include <stdio.h>
10 8
11#include <pwd.h> 9#include <pwd.h>
12#include <sys/types.h> 10#include <sys/types.h>
13 11
14 12
15#include "consoleconfigwidget.h" 13#include "consoleconfigwidget.h"
16 14
17ConsoleConfigWidget::ConsoleConfigWidget( const QString& name, QWidget* parent, 15ConsoleConfigWidget::ConsoleConfigWidget( const QString& name, QWidget* parent,
18 const char* na ) 16 const char* na )
19 : ProfileDialogConnectionWidget( name, parent, na ) { 17 : ProfileDialogConnectionWidget( name, parent, na ) {
20 m_lay = new QVBoxLayout( this ); 18 m_lay = new QVBoxLayout( this );
21 QLabel *label = new QLabel(tr("Command to execute"), this); 19 QLabel *label = new QLabel(tr("Command to execute"), this);
22 m_lay->addWidget(label); 20 m_lay->addWidget(label);
23 m_cmd = new QLineEdit(this); 21 m_cmd = new QLineEdit(this);
24 m_lay->addWidget(m_cmd); 22 m_lay->addWidget(m_cmd);
25 label = new QLabel(tr("Environment Variables"), this); 23 label = new QLabel(tr("Environment Variables"), this);
26 m_lay->addWidget(label); 24 m_lay->addWidget(label);
27 m_env = new QListView(this); 25 m_env = new QListView(this);
28 m_env->addColumn(tr("Name")); 26 m_env->addColumn(tr("Name"));
29 m_env->addColumn(tr("Value")); 27 m_env->addColumn(tr("Value"));
30 m_lay->addWidget(m_env); 28 m_lay->addWidget(m_env);
31 29
32 QHBox *hbox = new QHBox(this); 30 QHBox *hbox = new QHBox(this);
33 label = new QLabel(tr("Name :"), hbox); 31 label = new QLabel(tr("Name :"), hbox);
34 m_name = new QLineEdit(hbox); 32 m_name = new QLineEdit(hbox);
35 m_lay->addWidget(hbox); 33 m_lay->addWidget(hbox);
36 34
37 hbox = new QHBox(this); 35 hbox = new QHBox(this);
38 label = new QLabel(tr("Value :"), hbox); 36 label = new QLabel(tr("Value :"), hbox);
39 m_value = new QLineEdit(hbox); 37 m_value = new QLineEdit(hbox);
40 m_lay->addWidget(hbox); 38 m_lay->addWidget(hbox);
41 39
42 hbox = new QHBox(this); 40 hbox = new QHBox(this);
43 hbox->setSpacing(10); 41 hbox->setSpacing(10);
44 m_remove = new QPushButton(tr("Remove"), hbox); 42 m_remove = new QPushButton(tr("Remove"), hbox);
45 connect(m_remove, SIGNAL(clicked()), this, SLOT(slotRemove())); 43 connect(m_remove, SIGNAL(clicked()), this, SLOT(slotRemove()));
46 m_add = new QPushButton(tr("Add"), hbox); 44 m_add = new QPushButton(tr("Add"), hbox);
47 connect(m_add, SIGNAL(clicked()), this, SLOT(slotAdd())); 45 connect(m_add, SIGNAL(clicked()), this, SLOT(slotAdd()));
48 m_lay->addWidget(hbox); 46 m_lay->addWidget(hbox);
49} 47}
50 48
51void ConsoleConfigWidget::slotAdd() { 49void ConsoleConfigWidget::slotAdd() {
52 if (!(m_name->text().isEmpty() || m_value->text().isEmpty())) { 50 if (!(m_name->text().isEmpty() || m_value->text().isEmpty())) {
53 QListViewItem *item = new QListViewItem(m_env); 51 QListViewItem *item = new QListViewItem(m_env);
54 item->setText(0, m_name->text()); 52 item->setText(0, m_name->text());
55 item->setText(1, m_value->text()); 53 item->setText(1, m_value->text());
56 m_env->insertItem(item); 54 m_env->insertItem(item);
57 } 55 }
58} 56}
59 57
60void ConsoleConfigWidget::slotRemove() { 58void ConsoleConfigWidget::slotRemove() {
61 QListViewItem *item = m_env->currentItem(); 59 QListViewItem *item = m_env->currentItem();
62 if (item) { 60 if (item) {
63 m_env->takeItem(item); 61 m_env->takeItem(item);
64 } 62 }
65} 63}
66 64
67ConsoleConfigWidget::~ConsoleConfigWidget() { 65ConsoleConfigWidget::~ConsoleConfigWidget() {
68} 66}
69 67
70void ConsoleConfigWidget::load( const Profile& prof ) { 68void ConsoleConfigWidget::load( const Profile& prof ) {
71 /* 69 /*
72 * default to the users default shell 70 * default to the users default shell
73 */ 71 */
74 struct passwd *ent = 0; 72 struct passwd *ent = 0;
75 char *shell = "/bin/sh"; 73 char *shell = "/bin/sh";
76 74
77 while ( (ent = getpwent()) != 0 ) { 75 while ( (ent = getpwent()) != 0 ) {
78 if (ent->pw_shell != "") { 76 if (ent->pw_shell != "") {
79 shell = ent->pw_shell; 77 shell = ent->pw_shell;
80 } 78 }
81 } 79 }
82 80
83 m_cmd->setText(prof.readEntry("Command", shell )); 81 m_cmd->setText(prof.readEntry("Command", shell ));
84 int envcount = prof.readNumEntry("EnvVars", 0); 82 int envcount = prof.readNumEntry("EnvVars", 0);
85 for (int i=0; i<envcount; i++) { 83 for (int i=0; i<envcount; i++) {
86 QString name = prof.readEntry("Env_Name_" + QString::number(i), ""); 84 QString name = prof.readEntry("Env_Name_" + QString::number(i), "");
87 QString value = prof.readEntry("Env_Value_" + QString::number(i), ""); 85 QString value = prof.readEntry("Env_Value_" + QString::number(i), "");
88 if (!(name.isEmpty() || value.isEmpty())) { 86 if (!(name.isEmpty() || value.isEmpty())) {
89 QListViewItem *item = new QListViewItem(m_env); 87 QListViewItem *item = new QListViewItem(m_env);
90 item->setText(0, name); 88 item->setText(0, name);
91 item->setText(1, value); 89 item->setText(1, value);
92 m_env->insertItem(item); 90 m_env->insertItem(item);
93 } 91 }
94 } 92 }
95} 93}
96 94
97void ConsoleConfigWidget::save( Profile& prof ) { 95void ConsoleConfigWidget::save( Profile& prof ) {
98 prof.writeEntry( "Command", m_cmd->text()); 96 prof.writeEntry( "Command", m_cmd->text());
99 QListViewItem *item = m_env->firstChild(); 97 QListViewItem *item = m_env->firstChild();
100 int counter = 0; 98 int counter = 0;
101 while (item) { 99 while (item) {
102 QString name = item->text(0); 100 QString name = item->text(0);
103 QString value = item->text(1); 101 QString value = item->text(1);
104 prof.writeEntry("Env_Name_" + QString::number(counter), name); 102 prof.writeEntry("Env_Name_" + QString::number(counter), name);
105 prof.writeEntry("Env_Value_" + QString::number(counter), value); 103 prof.writeEntry("Env_Value_" + QString::number(counter), value);
106 item = item->nextSibling(); 104 item = item->nextSibling();
107 counter++; 105 counter++;
108 } 106 }
109 prof.writeEntry("EnvVars", QString::number(counter)); 107 prof.writeEntry("EnvVars", QString::number(counter));
110} 108}
111 109
diff --git a/noncore/apps/opie-console/default.cpp b/noncore/apps/opie-console/default.cpp
index b060139..c237575 100644
--- a/noncore/apps/opie-console/default.cpp
+++ b/noncore/apps/opie-console/default.cpp
@@ -1,122 +1,121 @@
1#include "io_serial.h"
2#include "io_irda.h" 1#include "io_irda.h"
3#include "io_bt.h" 2#include "io_bt.h"
4#include "io_modem.h" 3#include "io_modem.h"
5#include "filetransfer.h" 4#include "filetransfer.h"
6#include "filereceive.h" 5#include "filereceive.h"
7#include "serialconfigwidget.h" 6#include "serialconfigwidget.h"
8#include "irdaconfigwidget.h" 7#include "irdaconfigwidget.h"
9#include "btconfigwidget.h" 8#include "btconfigwidget.h"
10#include "modemconfigwidget.h" 9#include "modemconfigwidget.h"
11#include "terminalwidget.h" 10#include "terminalwidget.h"
12#include "function_keyboard.h" 11#include "function_keyboard.h"
13#include "consoleconfigwidget.h" 12#include "consoleconfigwidget.h"
14#include "MyPty.h" 13#include "MyPty.h"
15 14
16#include "default.h" 15#include "default.h"
17 16
18extern "C" { 17extern "C" {
19 // FILE Transfer Stuff 18 // FILE Transfer Stuff
20 FileTransferLayer* newSZTransfer(IOLayer* lay) { 19 FileTransferLayer* newSZTransfer(IOLayer* lay) {
21 return new FileTransfer( FileTransfer::SZ, lay ); 20 return new FileTransfer( FileTransfer::SZ, lay );
22 } 21 }
23 FileTransferLayer* newSYTransfer(IOLayer* lay) { 22 FileTransferLayer* newSYTransfer(IOLayer* lay) {
24 return new FileTransfer( FileTransfer::SY, lay ); 23 return new FileTransfer( FileTransfer::SY, lay );
25 } 24 }
26 FileTransferLayer* newSXTransfer(IOLayer* lay) { 25 FileTransferLayer* newSXTransfer(IOLayer* lay) {
27 return new FileTransfer(FileTransfer ::SX, lay ); 26 return new FileTransfer(FileTransfer ::SX, lay );
28 } 27 }
29 28
30 // FILE Transfer Receive Stuff 29 // FILE Transfer Receive Stuff
31 ReceiveLayer* newSZReceive(IOLayer* lay) { 30 ReceiveLayer* newSZReceive(IOLayer* lay) {
32 return new FileReceive( FileReceive::SZ, lay ); 31 return new FileReceive( FileReceive::SZ, lay );
33 } 32 }
34 ReceiveLayer* newSYReceive(IOLayer* lay) { 33 ReceiveLayer* newSYReceive(IOLayer* lay) {
35 return new FileReceive( FileReceive::SY, lay ); 34 return new FileReceive( FileReceive::SY, lay );
36 } 35 }
37 ReceiveLayer* newSXReceive(IOLayer* lay) { 36 ReceiveLayer* newSXReceive(IOLayer* lay) {
38 return new FileReceive(FileReceive::SX, lay ); 37 return new FileReceive(FileReceive::SX, lay );
39 } 38 }
40 39
41 // Layer stuff 40 // Layer stuff
42 IOLayer* newSerialLayer( const Profile& prof) { 41 IOLayer* newSerialLayer( const Profile& prof) {
43 return new IOSerial( prof ); 42 return new IOSerial( prof );
44 } 43 }
45 IOLayer* newBTLayer( const Profile& prof ) { 44 IOLayer* newBTLayer( const Profile& prof ) {
46 return new IOBt( prof ); 45 return new IOBt( prof );
47 } 46 }
48 IOLayer* newIrDaLayer( const Profile& prof ) { 47 IOLayer* newIrDaLayer( const Profile& prof ) {
49 return new IOIrda( prof ); 48 return new IOIrda( prof );
50 } 49 }
51 IOLayer* newModemLayer( const Profile& prof ) { 50 IOLayer* newModemLayer( const Profile& prof ) {
52 return new IOModem( prof ); 51 return new IOModem( prof );
53 } 52 }
54 IOLayer* newConsole( const Profile& prof ) { 53 IOLayer* newConsole( const Profile& prof ) {
55 return new MyPty( prof ); 54 return new MyPty( prof );
56 } 55 }
57 56
58 // Connection Widgets 57 // Connection Widgets
59 ProfileDialogWidget* newSerialWidget( const QString& str, QWidget* wid ) { 58 ProfileDialogWidget* newSerialWidget( const QString& str, QWidget* wid ) {
60 return new SerialConfigWidget( str, wid ); 59 return new SerialConfigWidget( str, wid );
61 } 60 }
62 ProfileDialogWidget* newIrDaWidget( const QString& str, QWidget* wid ) { 61 ProfileDialogWidget* newIrDaWidget( const QString& str, QWidget* wid ) {
63 return new IrdaConfigWidget( str, wid ); 62 return new IrdaConfigWidget( str, wid );
64 } 63 }
65 ProfileDialogWidget* newModemWidget( const QString& str, QWidget* wid ) { 64 ProfileDialogWidget* newModemWidget( const QString& str, QWidget* wid ) {
66 return new ModemConfigWidget(str, wid ); 65 return new ModemConfigWidget(str, wid );
67 } 66 }
68 ProfileDialogWidget* newBTWidget( const QString& str, QWidget* wid ) { 67 ProfileDialogWidget* newBTWidget( const QString& str, QWidget* wid ) {
69 return new BTConfigWidget(str, wid ); 68 return new BTConfigWidget(str, wid );
70 } 69 }
71 ProfileDialogWidget* newConsoleWid( const QString& str, QWidget* wid ) { 70 ProfileDialogWidget* newConsoleWid( const QString& str, QWidget* wid ) {
72 return new ConsoleConfigWidget(str, wid ); 71 return new ConsoleConfigWidget(str, wid );
73 } 72 }
74 73
75 74
76 // Terminal Widget(s) 75 // Terminal Widget(s)
77 ProfileDialogWidget* newTerminalWidget(const QString& na, QWidget* wid) { 76 ProfileDialogWidget* newTerminalWidget(const QString& na, QWidget* wid) {
78 return new TerminalWidget(na, wid,0 ); 77 return new TerminalWidget(na, wid,0 );
79 } 78 }
80 79
81 // Function Keyboard Widget 80 // Function Keyboard Widget
82 ProfileDialogWidget* newKeyboardWidget(const QString& na, QWidget *wid) { 81 ProfileDialogWidget* newKeyboardWidget(const QString& na, QWidget *wid) {
83 return new FunctionKeyboardConfig(na, wid); 82 return new FunctionKeyboardConfig(na, wid);
84 } 83 }
85 84
86/* // VT Emulations 85/* // VT Emulations
87 EmulationLayer* newVT102( WidgetLayer* wid ) { 86 EmulationLayer* newVT102( WidgetLayer* wid ) {
88 return new Vt102Emulation( wid ); 87 return new Vt102Emulation( wid );
89 } 88 }
90*/ 89*/
91}; 90};
92 91
93Default::Default( MetaFactory* fact ) { 92Default::Default( MetaFactory* fact ) {
94 fact->addFileTransferLayer( "SZ", QObject::tr("Z-Modem"), newSZTransfer ); 93 fact->addFileTransferLayer( "SZ", QObject::tr("Z-Modem"), newSZTransfer );
95 fact->addFileTransferLayer( "SY", QObject::tr("Y-Modem"), newSYTransfer ); 94 fact->addFileTransferLayer( "SY", QObject::tr("Y-Modem"), newSYTransfer );
96 fact->addFileTransferLayer( "SX", QObject::tr("X-Modem"), newSXTransfer ); 95 fact->addFileTransferLayer( "SX", QObject::tr("X-Modem"), newSXTransfer );
97 96
98 fact->addReceiveLayer( "SZ", QObject::tr("Z-Modem"), newSZReceive ); 97 fact->addReceiveLayer( "SZ", QObject::tr("Z-Modem"), newSZReceive );
99 fact->addReceiveLayer( "SY", QObject::tr("Y-Modem"), newSYReceive ); 98 fact->addReceiveLayer( "SY", QObject::tr("Y-Modem"), newSYReceive );
100 fact->addReceiveLayer( "SX", QObject::tr("X-Modem"), newSXReceive ); 99 fact->addReceiveLayer( "SX", QObject::tr("X-Modem"), newSXReceive );
101 100
102 fact->addIOLayerFactory( "serial", QObject::tr("Serial"), newSerialLayer ); 101 fact->addIOLayerFactory( "serial", QObject::tr("Serial"), newSerialLayer );
103// fact->addIOLayerFactory( "irda", QObject::tr("Infrared"), newIrDaLayer ); 102// fact->addIOLayerFactory( "irda", QObject::tr("Infrared"), newIrDaLayer );
104// fact->addIOLayerFactory( "bt", QObject::tr("Bluetooth"), newBTLayer ); 103// fact->addIOLayerFactory( "bt", QObject::tr("Bluetooth"), newBTLayer );
105 fact->addIOLayerFactory( "modem", QObject::tr("Modem"), newModemLayer ); 104 fact->addIOLayerFactory( "modem", QObject::tr("Modem"), newModemLayer );
106 fact->addIOLayerFactory( "console", QObject::tr("Local Console"), newConsole ); 105 fact->addIOLayerFactory( "console", QObject::tr("Local Console"), newConsole );
107 106
108 fact->addConnectionWidgetFactory( "serial", QObject::tr("Serial"), newSerialWidget ); 107 fact->addConnectionWidgetFactory( "serial", QObject::tr("Serial"), newSerialWidget );
109// fact->addConnectionWidgetFactory( "irda", QObject::tr("Infrared"), newIrDaWidget ); 108// fact->addConnectionWidgetFactory( "irda", QObject::tr("Infrared"), newIrDaWidget );
110 fact->addConnectionWidgetFactory( "modem", QObject::tr("Modem"), newModemWidget ); 109 fact->addConnectionWidgetFactory( "modem", QObject::tr("Modem"), newModemWidget );
111// fact->addConnectionWidgetFactory( "bt", QObject::tr("Bluetooth"), newBTWidget ); 110// fact->addConnectionWidgetFactory( "bt", QObject::tr("Bluetooth"), newBTWidget );
112 fact->addConnectionWidgetFactory( "console", QObject::tr("Local Console"), newConsoleWid ); 111 fact->addConnectionWidgetFactory( "console", QObject::tr("Local Console"), newConsoleWid );
113 112
114 fact->addTerminalWidgetFactory( "default", QObject::tr("Default Terminal"), newTerminalWidget ); 113 fact->addTerminalWidgetFactory( "default", QObject::tr("Default Terminal"), newTerminalWidget );
115 fact->addKeyboardWidgetFactory( "defaultKeys", QObject::tr("Default Keyboard"), 114 fact->addKeyboardWidgetFactory( "defaultKeys", QObject::tr("Default Keyboard"),
116 newKeyboardWidget ); 115 newKeyboardWidget );
117 116
118// fact->addEmulationLayer( "default", QObject::tr("Default Terminal"), newVT102 ); 117// fact->addEmulationLayer( "default", QObject::tr("Default Terminal"), newVT102 );
119} 118}
120Default::~Default() { 119Default::~Default() {
121 120
122} 121}
diff --git a/noncore/apps/opie-console/dialdialog.cpp b/noncore/apps/opie-console/dialdialog.cpp
index b91727b..6bc1240 100644
--- a/noncore/apps/opie-console/dialdialog.cpp
+++ b/noncore/apps/opie-console/dialdialog.cpp
@@ -1,101 +1,98 @@
1 1
2 2
3#include <qlayout.h> 3#include <qlayout.h>
4#include <qlabel.h> 4#include <qlabel.h>
5#include <qcombobox.h>
6#include <qscrollview.h>
7#include <qpushbutton.h> 5#include <qpushbutton.h>
8#include <qfont.h>
9#include <qbuttongroup.h> 6#include <qbuttongroup.h>
10 7
11#include "dialdialog.h" 8#include "dialdialog.h"
12 9
13 10
14 11
15DialDialog::DialDialog( QWidget* parent, const char* name, bool modal, WFlags fl ) 12DialDialog::DialDialog( QWidget* parent, const char* name, bool modal, WFlags fl )
16 : QDialog( parent, name, modal, fl ) { 13 : QDialog( parent, name, modal, fl ) {
17 14
18 setCaption( tr( "Enter number" ) ); 15 setCaption( tr( "Enter number" ) );
19 16
20 QVBoxLayout *mainLayout = new QVBoxLayout( this ); 17 QVBoxLayout *mainLayout = new QVBoxLayout( this );
21 18
22 QLabel *textLabel = new QLabel( this ); 19 QLabel *textLabel = new QLabel( this );
23 textLabel->setTextFormat( QLabel::RichText ); 20 textLabel->setTextFormat( QLabel::RichText );
24 textLabel->setText( tr("Enter the number you want to dial. When finished, press ok") ); 21 textLabel->setText( tr("Enter the number you want to dial. When finished, press ok") );
25 22
26 m_dialLine = new QLineEdit( this ); 23 m_dialLine = new QLineEdit( this );
27 m_dialLine->setReadOnly( true ); 24 m_dialLine->setReadOnly( true );
28 m_dialLine->setFrame( false ); 25 m_dialLine->setFrame( false );
29 m_dialLine->setAlignment( Qt::AlignLeft ); 26 m_dialLine->setAlignment( Qt::AlignLeft );
30 QFont dialLine_font( m_dialLine->font() ); 27 QFont dialLine_font( m_dialLine->font() );
31 dialLine_font.setBold( TRUE ); 28 dialLine_font.setBold( TRUE );
32 dialLine_font.setPointSize( 18 ); 29 dialLine_font.setPointSize( 18 );
33 m_dialLine->setFont( dialLine_font ); 30 m_dialLine->setFont( dialLine_font );
34 31
35 QWidget* dialWidget = new QWidget( this ); 32 QWidget* dialWidget = new QWidget( this );
36 QGridLayout *layout = new QGridLayout( dialWidget , 4, 3 ); 33 QGridLayout *layout = new QGridLayout( dialWidget , 4, 3 );
37 34
38 QButtonGroup *dialButtons = new QButtonGroup( ); 35 QButtonGroup *dialButtons = new QButtonGroup( );
39 36
40 QPushButton *number0 = new QPushButton( dialWidget ); 37 QPushButton *number0 = new QPushButton( dialWidget );
41 number0->setText( QString( "0" ) ); 38 number0->setText( QString( "0" ) );
42 QFont number0_font( number0->font() ); 39 QFont number0_font( number0->font() );
43 number0_font.setBold( TRUE ); 40 number0_font.setBold( TRUE );
44 number0->setFont( number0_font ); 41 number0->setFont( number0_font );
45 layout->addWidget( number0, 4, 1 ); 42 layout->addWidget( number0, 4, 1 );
46 dialButtons->insert( number0 ); 43 dialButtons->insert( number0 );
47 44
48 int x = 0, y = 0; 45 int x = 0, y = 0;
49 for ( int i = 0 ; i < 9; i++ ) { 46 for ( int i = 0 ; i < 9; i++ ) {
50 QPushButton *number = new QPushButton( dialWidget ); 47 QPushButton *number = new QPushButton( dialWidget );
51 number->setText( QString( "%1" ).arg( i + 1 ) ); 48 number->setText( QString( "%1" ).arg( i + 1 ) );
52 QFont number_font( number->font() ); 49 QFont number_font( number->font() );
53 number_font.setBold( TRUE ); 50 number_font.setBold( TRUE );
54 number->setFont( number_font ); 51 number->setFont( number_font );
55 52
56 dialButtons->insert( number ); 53 dialButtons->insert( number );
57 54
58 layout->addWidget( number, x, y ); 55 layout->addWidget( number, x, y );
59 56
60 if ( y < 2 ) { 57 if ( y < 2 ) {
61 y++; 58 y++;
62 } else { 59 } else {
63 x++; 60 x++;
64 y = 0; 61 y = 0;
65 } 62 }
66 } 63 }
67 64
68 connect( dialButtons, SIGNAL( clicked( int ) ), this, SLOT( slotEnterNumber( int ) ) ); 65 connect( dialButtons, SIGNAL( clicked( int ) ), this, SLOT( slotEnterNumber( int ) ) );
69 66
70 mainLayout->addStretch( 2 ); 67 mainLayout->addStretch( 2 );
71 mainLayout->addWidget( textLabel ); 68 mainLayout->addWidget( textLabel );
72 mainLayout->addStretch( 1 ); 69 mainLayout->addStretch( 1 );
73 mainLayout->addWidget( m_dialLine ); 70 mainLayout->addWidget( m_dialLine );
74 mainLayout->addStretch( 2 ); 71 mainLayout->addStretch( 2 );
75 mainLayout->addWidget( dialWidget ); 72 mainLayout->addWidget( dialWidget );
76 mainLayout->addStretch( 4 ); 73 mainLayout->addStretch( 4 );
77} 74}
78 75
79 76
80void DialDialog::slotEnterNumber( int number ) { 77void DialDialog::slotEnterNumber( int number ) {
81 78
82 // pretty stupid, just for testing .-) 79 // pretty stupid, just for testing .-)
83 80
84 m_number.append(QString("%1").arg(number)); 81 m_number.append(QString("%1").arg(number));
85 82
86 setNumber(m_number); 83 setNumber(m_number);
87} 84}
88 85
89DialDialog::~DialDialog() { 86DialDialog::~DialDialog() {
90} 87}
91 88
92QString DialDialog::number() { 89QString DialDialog::number() {
93 return m_number; 90 return m_number;
94 91
95} 92}
96 93
97void DialDialog::setNumber( QString number ) 94void DialDialog::setNumber( QString number )
98{ 95{
99 m_dialLine->setText( QString("%1").arg( number ) ); 96 m_dialLine->setText( QString("%1").arg( number ) );
100} 97}
101 98
diff --git a/noncore/apps/opie-console/emulation_handler.cpp b/noncore/apps/opie-console/emulation_handler.cpp
index 235facb..2c1d888 100644
--- a/noncore/apps/opie-console/emulation_handler.cpp
+++ b/noncore/apps/opie-console/emulation_handler.cpp
@@ -1,132 +1,129 @@
1#include <qwidget.h>
2#include <qpushbutton.h>
3 1
4#include "TEWidget.h"
5#include "TEmuVt102.h" 2#include "TEmuVt102.h"
6 3
7#include "profile.h" 4#include "profile.h"
8#include "emulation_handler.h" 5#include "emulation_handler.h"
9#include "script.h" 6#include "script.h"
10 7
11EmulationHandler::EmulationHandler( const Profile& prof, QWidget* parent,const char* name ) 8EmulationHandler::EmulationHandler( const Profile& prof, QWidget* parent,const char* name )
12 : QObject(0, name ) 9 : QObject(0, name )
13{ 10{
14 m_teWid = new TEWidget( parent, "TerminalMain"); 11 m_teWid = new TEWidget( parent, "TerminalMain");
15 // use setWrapAt(0) for classic behaviour (wrap at screen width, no scrollbar) 12 // use setWrapAt(0) for classic behaviour (wrap at screen width, no scrollbar)
16 // use setWrapAt(80) for normal console with scrollbar 13 // use setWrapAt(80) for normal console with scrollbar
17 setWrap(prof.readNumEntry("Wrap", 0) ? 0 : 80); 14 setWrap(prof.readNumEntry("Wrap", 0) ? 0 : 80);
18 m_teWid->setMinimumSize(150, 70 ); 15 m_teWid->setMinimumSize(150, 70 );
19 m_script = 0; 16 m_script = 0;
20 parent->resize( m_teWid->calcSize(80, 24 ) ); 17 parent->resize( m_teWid->calcSize(80, 24 ) );
21 m_teEmu = new TEmuVt102(m_teWid ); 18 m_teEmu = new TEmuVt102(m_teWid );
22 19
23 connect(m_teEmu,SIGNAL(ImageSizeChanged(int, int) ), 20 connect(m_teEmu,SIGNAL(ImageSizeChanged(int, int) ),
24 this, SIGNAL(changeSize(int, int) ) ); 21 this, SIGNAL(changeSize(int, int) ) );
25 connect(m_teEmu, SIGNAL(sndBlock(const char*, int) ), 22 connect(m_teEmu, SIGNAL(sndBlock(const char*, int) ),
26 this, SLOT(recvEmulation(const char*, int) ) ); 23 this, SLOT(recvEmulation(const char*, int) ) );
27 m_teEmu->setConnect( true ); 24 m_teEmu->setConnect( true );
28 m_teEmu->setHistory( TRUE ); 25 m_teEmu->setHistory( TRUE );
29 load( prof ); 26 load( prof );
30 27
31 28
32 29
33} 30}
34TEmulation* EmulationHandler::emulation() { 31TEmulation* EmulationHandler::emulation() {
35 return m_teEmu; 32 return m_teEmu;
36} 33}
37EmulationHandler::~EmulationHandler() { 34EmulationHandler::~EmulationHandler() {
38 if (isRecording()) 35 if (isRecording())
39 clearScript(); 36 clearScript();
40 delete m_teEmu; 37 delete m_teEmu;
41 delete m_teWid; 38 delete m_teWid;
42} 39}
43 40
44void EmulationHandler::load( const Profile& prof) { 41void EmulationHandler::load( const Profile& prof) {
45 m_teWid->setVTFont( font( prof.readNumEntry("Font") ) ); 42 m_teWid->setVTFont( font( prof.readNumEntry("Font") ) );
46 int num = prof.readNumEntry("Color"); 43 int num = prof.readNumEntry("Color");
47 setColor( foreColor(num), backColor(num) ); 44 setColor( foreColor(num), backColor(num) );
48 m_teWid->setBackgroundColor(backColor(num) ); 45 m_teWid->setBackgroundColor(backColor(num) );
49 46
50 int term = prof.readNumEntry("Terminal", 0) ; 47 int term = prof.readNumEntry("Terminal", 0) ;
51 switch(term) { 48 switch(term) {
52 default: 49 default:
53 case Profile::VT102: 50 case Profile::VT102:
54 case Profile::VT100: 51 case Profile::VT100:
55 m_teEmu->setKeytrans("vt100.keytab"); 52 m_teEmu->setKeytrans("vt100.keytab");
56 break; 53 break;
57 case Profile::Linux: 54 case Profile::Linux:
58 m_teEmu->setKeytrans("linux.keytab"); 55 m_teEmu->setKeytrans("linux.keytab");
59 break; 56 break;
60 case Profile::XTerm: 57 case Profile::XTerm:
61 m_teEmu->setKeytrans("default.Keytab"); 58 m_teEmu->setKeytrans("default.Keytab");
62 break; 59 break;
63 } 60 }
64} 61}
65void EmulationHandler::recv( const QByteArray& ar) { 62void EmulationHandler::recv( const QByteArray& ar) {
66 m_teEmu->onRcvBlock(ar.data(), ar.count() ); 63 m_teEmu->onRcvBlock(ar.data(), ar.count() );
67} 64}
68void EmulationHandler::recvEmulation(const char* src, int len ) { 65void EmulationHandler::recvEmulation(const char* src, int len ) {
69 QByteArray ar(len); 66 QByteArray ar(len);
70 67
71 memcpy(ar.data(), src, sizeof(char) * len ); 68 memcpy(ar.data(), src, sizeof(char) * len );
72 if (isRecording()) 69 if (isRecording())
73 m_script->append(ar); 70 m_script->append(ar);
74 emit send(ar); 71 emit send(ar);
75} 72}
76QWidget* EmulationHandler::widget() { 73QWidget* EmulationHandler::widget() {
77 return m_teWid; 74 return m_teWid;
78} 75}
79/* 76/*
80 * allocate a new table of colors 77 * allocate a new table of colors
81 */ 78 */
82void EmulationHandler::setColor( const QColor& fore, const QColor& back ) { 79void EmulationHandler::setColor( const QColor& fore, const QColor& back ) {
83 ColorEntry table[TABLE_COLORS]; 80 ColorEntry table[TABLE_COLORS];
84 const ColorEntry *defaultCt = m_teWid->getdefaultColorTable(); 81 const ColorEntry *defaultCt = m_teWid->getdefaultColorTable();
85 82
86 for (int i = 0; i < TABLE_COLORS; i++ ) { 83 for (int i = 0; i < TABLE_COLORS; i++ ) {
87 if ( i == 0 || i == 10 ) { 84 if ( i == 0 || i == 10 ) {
88 table[i].color = fore; 85 table[i].color = fore;
89 }else if ( i == 1 || i == 11 ) { 86 }else if ( i == 1 || i == 11 ) {
90 table[i].color = back; 87 table[i].color = back;
91 table[i].transparent = 0; 88 table[i].transparent = 0;
92 }else { 89 }else {
93 table[i].color = defaultCt[i].color; 90 table[i].color = defaultCt[i].color;
94 } 91 }
95 } 92 }
96 m_teWid->setColorTable(table ); 93 m_teWid->setColorTable(table );
97 m_teWid->update(); 94 m_teWid->update();
98} 95}
99QFont EmulationHandler::font( int id ) { 96QFont EmulationHandler::font( int id ) {
100 QString name; 97 QString name;
101 int size = 0; 98 int size = 0;
102 switch(id ) { 99 switch(id ) {
103 default: // fall through 100 default: // fall through
104 case 0: 101 case 0:
105 name = QString::fromLatin1("Micro"); 102 name = QString::fromLatin1("Micro");
106 size = 4; 103 size = 4;
107 break; 104 break;
108 case 1: 105 case 1:
109 name = QString::fromLatin1("Fixed"); 106 name = QString::fromLatin1("Fixed");
110 size = 7; 107 size = 7;
111 break; 108 break;
112 case 2: 109 case 2:
113 name = QString::fromLatin1("Fixed"); 110 name = QString::fromLatin1("Fixed");
114 size = 12; 111 size = 12;
115 break; 112 break;
116 } 113 }
117 QFont font(name, size, QFont::Normal ); 114 QFont font(name, size, QFont::Normal );
118 font.setFixedPitch(TRUE ); 115 font.setFixedPitch(TRUE );
119 return font; 116 return font;
120} 117}
121QColor EmulationHandler::foreColor(int col) { 118QColor EmulationHandler::foreColor(int col) {
122 QColor co; 119 QColor co;
123 /* we need to switch it */ 120 /* we need to switch it */
124 switch( col ) { 121 switch( col ) {
125 default: 122 default:
126 case Profile::White: 123 case Profile::White:
127 /* color is black */ 124 /* color is black */
128 co = Qt::white; 125 co = Qt::white;
129 break; 126 break;
130 case Profile::Black: 127 case Profile::Black:
131 co = Qt::black; 128 co = Qt::black;
132 break; 129 break;
diff --git a/noncore/apps/opie-console/emulation_layer.cpp b/noncore/apps/opie-console/emulation_layer.cpp
index 6a2679e..2bef801 100644
--- a/noncore/apps/opie-console/emulation_layer.cpp
+++ b/noncore/apps/opie-console/emulation_layer.cpp
@@ -1,212 +1,209 @@
1/* -------------------------------------------------------------------------- */ 1/* -------------------------------------------------------------------------- */
2/* */ 2/* */
3/* [emulation_layer.cpp] Terminal Emulation Decoder */ 3/* [emulation_layer.cpp] Terminal Emulation Decoder */
4/* */ 4/* */
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 /* */ 12 /* */
13/* Ported Konsole to Qt/Embedded */ 13/* Ported Konsole to Qt/Embedded */
14 /* */ 14 /* */
15/* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */ 15/* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */
16 /* */ 16 /* */
17/* -------------------------------------------------------------------------- */ 17/* -------------------------------------------------------------------------- */
18 /* */ 18 /* */
19/* Modified to suit opie-console */ 19/* Modified to suit opie-console */
20 /* */ 20 /* */
21/* Copyright (C) 2002 by opie developers <opie@handhelds.org> */ 21/* Copyright (C) 2002 by opie developers <opie@handhelds.org> */
22 /* */ 22 /* */
23/* -------------------------------------------------------------------------- */ 23/* -------------------------------------------------------------------------- */
24 24
25/*! \class EmulationLayer 25/*! \class EmulationLayer
26 26
27 \brief Mediator between Widget and Screen. 27 \brief Mediator between Widget and Screen.
28 28
29 This class is responsible to scan the escapes sequences of the terminal 29 This class is responsible to scan the escapes sequences of the terminal
30 emulation and to map it to their corresponding semantic complements. 30 emulation and to map it to their corresponding semantic complements.
31 Thus this module knows mainly about decoding escapes sequences and 31 Thus this module knows mainly about decoding escapes sequences and
32 is a stateless device w.r.t. the semantics. 32 is a stateless device w.r.t. the semantics.
33 33
34 It is also responsible to refresh the Widget by certain rules. 34 It is also responsible to refresh the Widget by certain rules.
35 35
36 \sa Widget \sa Screen 36 \sa Widget \sa Screen
37 37
38 \par A note on refreshing 38 \par A note on refreshing
39 39
40 Although the modifications to the current screen image could immediately 40 Although the modifications to the current screen image could immediately
41 be propagated via `Widget' to the graphical surface, we have chosen 41 be propagated via `Widget' to the graphical surface, we have chosen
42 another way here. 42 another way here.
43 43
44 The reason for doing so is twofold. 44 The reason for doing so is twofold.
45 45
46 First, experiments show that directly displaying the operation results 46 First, experiments show that directly displaying the operation results
47 in slowing down the overall performance of emulations. Displaying 47 in slowing down the overall performance of emulations. Displaying
48 individual characters using X11 creates a lot of overhead. 48 individual characters using X11 creates a lot of overhead.
49 49
50 Second, by using the following refreshing method, the screen operations 50 Second, by using the following refreshing method, the screen operations
51 can be completely separated from the displaying. This greatly simplifies 51 can be completely separated from the displaying. This greatly simplifies
52 the programmer's task of coding and maintaining the screen operations, 52 the programmer's task of coding and maintaining the screen operations,
53 since one need not worry about differential modifications on the 53 since one need not worry about differential modifications on the
54 display affecting the operation of concern. 54 display affecting the operation of concern.
55 55
56 We use a refreshing algorithm here that has been adoped from rxvt/kvt. 56 We use a refreshing algorithm here that has been adoped from rxvt/kvt.
57 57
58 By this, refreshing is driven by a timer, which is (re)started whenever 58 By this, refreshing is driven by a timer, which is (re)started whenever
59 a new bunch of data to be interpreted by the emulation arives at `onRcvBlock'. 59 a new bunch of data to be interpreted by the emulation arives at `onRcvBlock'.
60 As soon as no more data arrive for `BULK_TIMEOUT' milliseconds, we trigger 60 As soon as no more data arrive for `BULK_TIMEOUT' milliseconds, we trigger
61 refresh. This rule suits both bulk display operation as done by curses as 61 refresh. This rule suits both bulk display operation as done by curses as
62 well as individual characters typed. 62 well as individual characters typed.
63 (BULK_TIMEOUT < 1000 / max characters received from keyboard per second). 63 (BULK_TIMEOUT < 1000 / max characters received from keyboard per second).
64 64
65 Additionally, we trigger refreshing by newlines comming in to make visual 65 Additionally, we trigger refreshing by newlines comming in to make visual
66 snapshots of lists as produced by `cat', `ls' and likely programs, thereby 66 snapshots of lists as produced by `cat', `ls' and likely programs, thereby
67 producing the illusion of a permanent and immediate display operation. 67 producing the illusion of a permanent and immediate display operation.
68 68
69 As a sort of catch-all needed for cases where none of the above 69 As a sort of catch-all needed for cases where none of the above
70 conditions catch, the screen refresh is also triggered by a count 70 conditions catch, the screen refresh is also triggered by a count
71 of incoming bulks (`bulk_incnt'). 71 of incoming bulks (`bulk_incnt').
72*/ 72*/
73 73
74/* FIXME 74/* FIXME
75 - evtl. the bulk operations could be made more transparent. 75 - evtl. the bulk operations could be made more transparent.
76*/ 76*/
77 77
78#include "emulation_layer.h" 78#include "emulation_layer.h"
79#include "widget_layer.h"
80#include "screen.h"
81#include <stdio.h> 79#include <stdio.h>
82#include <stdlib.h> 80#include <stdlib.h>
83#include <unistd.h> 81#include <unistd.h>
84#include <qkeycode.h>
85 82
86 83
87/* ------------------------------------------------------------------------- */ 84/* ------------------------------------------------------------------------- */
88/* */ 85/* */
89/* EmulationLayer */ 86/* EmulationLayer */
90/* */ 87/* */
91/* ------------------------------------------------------------------------- */ 88/* ------------------------------------------------------------------------- */
92 89
93#define CNTL(c) ((c)-'@') 90#define CNTL(c) ((c)-'@')
94 91
95/*! 92/*!
96*/ 93*/
97 94
98EmulationLayer::EmulationLayer( WidgetLayer* gui ) 95EmulationLayer::EmulationLayer( WidgetLayer* gui )
99: decoder((QTextDecoder*)NULL) 96: decoder((QTextDecoder*)NULL)
100{ 97{
101 this->gui = gui; 98 this->gui = gui;
102 99
103 screen[0] = new Screen(gui->lines(),gui->columns()); 100 screen[0] = new Screen(gui->lines(),gui->columns());
104 screen[1] = new Screen(gui->lines(),gui->columns()); 101 screen[1] = new Screen(gui->lines(),gui->columns());
105 scr = screen[0]; 102 scr = screen[0];
106 103
107 bulk_nlcnt = 0; // reset bulk newline counter 104 bulk_nlcnt = 0; // reset bulk newline counter
108 bulk_incnt = 0; // reset bulk counter 105 bulk_incnt = 0; // reset bulk counter
109 connected = FALSE; 106 connected = FALSE;
110 107
111 QObject::connect(&bulk_timer, SIGNAL( timeout() ), this, SLOT( showBulk() ) ); 108 QObject::connect(&bulk_timer, SIGNAL( timeout() ), this, SLOT( showBulk() ) );
112 QObject::connect(gui,SIGNAL( imageSizeChanged( int, int ) ), 109 QObject::connect(gui,SIGNAL( imageSizeChanged( int, int ) ),
113 this,SLOT( onImageSizeChange( int, int ) ) ); 110 this,SLOT( onImageSizeChange( int, int ) ) );
114 QObject::connect(gui,SIGNAL( changedHistoryCursor( int ) ), 111 QObject::connect(gui,SIGNAL( changedHistoryCursor( int ) ),
115 this,SLOT( historyCursorChange( int ) ) ); 112 this,SLOT( historyCursorChange( int ) ) );
116 QObject::connect(gui,SIGNAL( keyPressed( QKeyEvent* ) ), 113 QObject::connect(gui,SIGNAL( keyPressed( QKeyEvent* ) ),
117 this,SLOT( onKeyPress( QKeyEvent* ) ) ); 114 this,SLOT( onKeyPress( QKeyEvent* ) ) );
118 QObject::connect(gui,SIGNAL( selectionBegin( const int, const int) ), 115 QObject::connect(gui,SIGNAL( selectionBegin( const int, const int) ),
119 this,SLOT( onSelectionBegin( const int, const int ) ) ); 116 this,SLOT( onSelectionBegin( const int, const int ) ) );
120 QObject::connect(gui,SIGNAL( selectionExtended( const int, const int ) ), 117 QObject::connect(gui,SIGNAL( selectionExtended( const int, const int ) ),
121 this,SLOT( onSelectionExtend( const int,const int ) ) ); 118 this,SLOT( onSelectionExtend( const int,const int ) ) );
122 QObject::connect(gui,SIGNAL( selectionEnd( const bool ) ), 119 QObject::connect(gui,SIGNAL( selectionEnd( const bool ) ),
123 this,SLOT( setSelection( const bool ) ) ); 120 this,SLOT( setSelection( const bool ) ) );
124 QObject::connect(gui,SIGNAL( selectionCleared() ), 121 QObject::connect(gui,SIGNAL( selectionCleared() ),
125 this,SLOT( clearSelection() ) ); 122 this,SLOT( clearSelection() ) );
126} 123}
127 124
128/*! 125/*!
129*/ 126*/
130 127
131EmulationLayer::~EmulationLayer() 128EmulationLayer::~EmulationLayer()
132{ 129{
133 delete screen[0]; 130 delete screen[0];
134 delete screen[1]; 131 delete screen[1];
135 bulk_timer.stop(); 132 bulk_timer.stop();
136} 133}
137 134
138/*! change between primary and alternate screen 135/*! change between primary and alternate screen
139*/ 136*/
140 137
141void EmulationLayer::setScreen(int n) 138void EmulationLayer::setScreen(int n)
142{ 139{
143 scr = screen[n&1]; 140 scr = screen[n&1];
144} 141}
145 142
146void EmulationLayer::setHistory(bool on) 143void EmulationLayer::setHistory(bool on)
147{ 144{
148 screen[0]->setScroll(on); 145 screen[0]->setScroll(on);
149 if (!connected) return; 146 if (!connected) return;
150 showBulk(); 147 showBulk();
151} 148}
152 149
153bool EmulationLayer::history() 150bool EmulationLayer::history()
154{ 151{
155 return screen[0]->hasScroll(); 152 return screen[0]->hasScroll();
156} 153}
157 154
158void EmulationLayer::setCodec(int c) 155void EmulationLayer::setCodec(int c)
159{ 156{
160 //FIXME: check whether we have to free codec 157 //FIXME: check whether we have to free codec
161 codec = c ? QTextCodec::codecForName("utf8") 158 codec = c ? QTextCodec::codecForName("utf8")
162 : QTextCodec::codecForLocale(); 159 : QTextCodec::codecForLocale();
163 if (decoder) delete decoder; 160 if (decoder) delete decoder;
164 decoder = codec->makeDecoder(); 161 decoder = codec->makeDecoder();
165} 162}
166 163
167void EmulationLayer::setKeytrans(int no) 164void EmulationLayer::setKeytrans(int no)
168{ 165{
169 keytrans = KeyTrans::find(no); 166 keytrans = KeyTrans::find(no);
170} 167}
171 168
172void EmulationLayer::setKeytrans(const char * no) 169void EmulationLayer::setKeytrans(const char * no)
173{ 170{
174 keytrans = KeyTrans::find(no); 171 keytrans = KeyTrans::find(no);
175} 172}
176 173
177// Interpreting Codes --------------------------------------------------------- 174// Interpreting Codes ---------------------------------------------------------
178 175
179/* 176/*
180 This section deals with decoding the incoming character stream. 177 This section deals with decoding the incoming character stream.
181 Decoding means here, that the stream is first seperated into `tokens' 178 Decoding means here, that the stream is first seperated into `tokens'
182 which are then mapped to a `meaning' provided as operations by the 179 which are then mapped to a `meaning' provided as operations by the
183 `Screen' class. 180 `Screen' class.
184*/ 181*/
185 182
186/*! 183/*!
187*/ 184*/
188 185
189void EmulationLayer::onRcvChar(int c) 186void EmulationLayer::onRcvChar(int c)
190// process application unicode input to terminal 187// process application unicode input to terminal
191// this is a trivial scanner 188// this is a trivial scanner
192{ 189{
193 c &= 0xff; 190 c &= 0xff;
194 switch (c) 191 switch (c)
195 { 192 {
196 case '\b' : scr->BackSpace(); break; 193 case '\b' : scr->BackSpace(); break;
197 case '\t' : scr->Tabulate(); break; 194 case '\t' : scr->Tabulate(); break;
198 case '\n' : scr->NewLine(); break; 195 case '\n' : scr->NewLine(); break;
199 case '\r' : scr->Return(); break; 196 case '\r' : scr->Return(); break;
200 case 0x07 : gui->bell(); break; 197 case 0x07 : gui->bell(); break;
201 default : scr->ShowCharacter(c); break; 198 default : scr->ShowCharacter(c); break;
202 }; 199 };
203} 200}
204 201
205/* ------------------------------------------------------------------------- */ 202/* ------------------------------------------------------------------------- */
206/* */ 203/* */
207/* Keyboard Handling */ 204/* Keyboard Handling */
208/* */ 205/* */
209/* ------------------------------------------------------------------------- */ 206/* ------------------------------------------------------------------------- */
210 207
211/*! 208/*!
212*/ 209*/
diff --git a/noncore/apps/opie-console/emulation_widget.cpp b/noncore/apps/opie-console/emulation_widget.cpp
index 9f95c72..ad8ecba 100644
--- a/noncore/apps/opie-console/emulation_widget.cpp
+++ b/noncore/apps/opie-console/emulation_widget.cpp
@@ -1,140 +1,132 @@
1// opie-console includes 1// opie-console includes
2#include "emulation_widget.h" 2#include "emulation_widget.h"
3#include "common.h"
4#include "widget_layer.h"
5#include "profile.h"
6 3
7// qt includes 4// qt includes
8#include <qwidget.h>
9#include <qarray.h>
10#include <qstring.h>
11#include <qpainter.h>
12#include <qrect.h>
13#include <qscrollbar.h> 5#include <qscrollbar.h>
14 6
15#define rimX 0 // left/right rim width 7#define rimX 0 // left/right rim width
16#define rimY 0 // top/bottom rim high 8#define rimY 0 // top/bottom rim high
17 9
18static const ColorEntry color_table[TABLE_COLORS] = 10static const ColorEntry color_table[TABLE_COLORS] =
19{ 11{
20 ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 1, 0 ), // Dfore, Dback 12 ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 1, 0 ), // Dfore, Dback
21 ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0x18), 0, 0 ), // Black, Red 13 ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0x18), 0, 0 ), // Black, Red
22 ColorEntry(QColor(0x18,0xB2,0x18), 0, 0 ), ColorEntry( QColor(0xB2,0x68,0x18), 0, 0 ), // Green, Yellow 14 ColorEntry(QColor(0x18,0xB2,0x18), 0, 0 ), ColorEntry( QColor(0xB2,0x68,0x18), 0, 0 ), // Green, Yellow
23 ColorEntry(QColor(0x18,0x18,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ), // Blue, Magenta 15 ColorEntry(QColor(0x18,0x18,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ), // Blue, Magenta
24 ColorEntry(QColor(0x18,0xB2,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 0, 0 ), // Cyan, White 16 ColorEntry(QColor(0x18,0xB2,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 0, 0 ), // Cyan, White
25 // intensiv 17 // intensiv
26 ColorEntry(QColor(0x00,0x00,0x00), 0, 1 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 1, 0 ), 18 ColorEntry(QColor(0x00,0x00,0x00), 0, 1 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 1, 0 ),
27 ColorEntry(QColor(0x68,0x68,0x68), 0, 0 ), ColorEntry( QColor(0xFF,0x54,0x54), 0, 0 ), 19 ColorEntry(QColor(0x68,0x68,0x68), 0, 0 ), ColorEntry( QColor(0xFF,0x54,0x54), 0, 0 ),
28 ColorEntry(QColor(0x54,0xFF,0x54), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0x54), 0, 0 ), 20 ColorEntry(QColor(0x54,0xFF,0x54), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0x54), 0, 0 ),
29 ColorEntry(QColor(0x54,0x54,0xFF), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ), 21 ColorEntry(QColor(0x54,0x54,0xFF), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ),
30 ColorEntry(QColor(0x54,0xFF,0xFF), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 0, 0 ) 22 ColorEntry(QColor(0x54,0xFF,0xFF), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 0, 0 )
31}; 23};
32 24
33EmulationWidget::EmulationWidget( const Profile& config, QWidget *parent, const char* name ) : WidgetLayer( config, parent, name ) 25EmulationWidget::EmulationWidget( const Profile& config, QWidget *parent, const char* name ) : WidgetLayer( config, parent, name )
34{ 26{
35 27
36 // initialize font attributes 28 // initialize font attributes
37 QFontMetrics fm( font() ); 29 QFontMetrics fm( font() );
38 f_height = fm.height(); 30 f_height = fm.height();
39 f_width = fm.maxWidth(); 31 f_width = fm.maxWidth();
40 f_ascent = fm.ascent(); 32 f_ascent = fm.ascent();
41 33
42 34
43 // initialize scrollbar related vars 35 // initialize scrollbar related vars
44 m_scrollbar = new QScrollBar( this ); 36 m_scrollbar = new QScrollBar( this );
45 m_scrollbar->setCursor( arrowCursor ); 37 m_scrollbar->setCursor( arrowCursor );
46 38
47 // give reasonable defaults to m_columns, m_lines 39 // give reasonable defaults to m_columns, m_lines
48 calcGeometry(); 40 calcGeometry();
49 41
50 // load config 42 // load config
51 reloadConfig( config ); 43 reloadConfig( config );
52 44
53 m_resizing = false; 45 m_resizing = false;
54} 46}
55 47
56void EmulationWidget::reloadConfig( const Profile& config ) 48void EmulationWidget::reloadConfig( const Profile& config )
57{ 49{
58 50
59 // nothing yet 51 // nothing yet
60} 52}
61 53
62EmulationWidget::~EmulationWidget() 54EmulationWidget::~EmulationWidget()
63{ 55{
64 //clean up 56 //clean up
65} 57}
66 58
67static QChar vt100extended(QChar c) 59static QChar vt100extended(QChar c)
68{ 60{
69 switch (c.unicode()) 61 switch (c.unicode())
70 { 62 {
71 case 0x25c6 : return 1; 63 case 0x25c6 : return 1;
72 case 0x2592 : return 2; 64 case 0x2592 : return 2;
73 case 0x2409 : return 3; 65 case 0x2409 : return 3;
74 case 0x240c : return 4; 66 case 0x240c : return 4;
75 case 0x240d : return 5; 67 case 0x240d : return 5;
76 case 0x240a : return 6; 68 case 0x240a : return 6;
77 case 0x00b0 : return 7; 69 case 0x00b0 : return 7;
78 case 0x00b1 : return 8; 70 case 0x00b1 : return 8;
79 case 0x2424 : return 9; 71 case 0x2424 : return 9;
80 case 0x240b : return 10; 72 case 0x240b : return 10;
81 case 0x2518 : return 11; 73 case 0x2518 : return 11;
82 case 0x2510 : return 12; 74 case 0x2510 : return 12;
83 case 0x250c : return 13; 75 case 0x250c : return 13;
84 case 0x2514 : return 14; 76 case 0x2514 : return 14;
85 case 0x253c : return 15; 77 case 0x253c : return 15;
86 case 0xf800 : return 16; 78 case 0xf800 : return 16;
87 case 0xf801 : return 17; 79 case 0xf801 : return 17;
88 case 0x2500 : return 18; 80 case 0x2500 : return 18;
89 case 0xf803 : return 19; 81 case 0xf803 : return 19;
90 case 0xf804 : return 20; 82 case 0xf804 : return 20;
91 case 0x251c : return 21; 83 case 0x251c : return 21;
92 case 0x2524 : return 22; 84 case 0x2524 : return 22;
93 case 0x2534 : return 23; 85 case 0x2534 : return 23;
94 case 0x252c : return 24; 86 case 0x252c : return 24;
95 case 0x2502 : return 25; 87 case 0x2502 : return 25;
96 case 0x2264 : return 26; 88 case 0x2264 : return 26;
97 case 0x2265 : return 27; 89 case 0x2265 : return 27;
98 case 0x03c0 : return 28; 90 case 0x03c0 : return 28;
99 case 0x2260 : return 29; 91 case 0x2260 : return 29;
100 case 0x00a3 : return 30; 92 case 0x00a3 : return 30;
101 case 0x00b7 : return 31; 93 case 0x00b7 : return 31;
102 } 94 }
103 return c; 95 return c;
104} 96}
105 97
106 98
107QSize EmulationWidget::calcSize( int cols, int lins ) const 99QSize EmulationWidget::calcSize( int cols, int lins ) const
108{ 100{
109 int frw = width() - contentsRect().width(); 101 int frw = width() - contentsRect().width();
110 102
111 int frh = height() - contentsRect().height(); 103 int frh = height() - contentsRect().height();
112 int scw = (scrollLoc == SCRNONE? 0 : m_scrollbar->width() ); 104 int scw = (scrollLoc == SCRNONE? 0 : m_scrollbar->width() );
113 return QSize( f_width * cols + 2 * rimX + frw + scw, f_height * lins + 2 * rimY + frh ); 105 return QSize( f_width * cols + 2 * rimX + frw + scw, f_height * lins + 2 * rimY + frh );
114} 106}
115 107
116void EmulationWidget::setImage( QArray<Character> const newimg, int lines, int columns ) 108void EmulationWidget::setImage( QArray<Character> const newimg, int lines, int columns )
117{ 109{
118 const QPixmap* pm = backgroundPixmap(); 110 const QPixmap* pm = backgroundPixmap();
119 QPainter paint; 111 QPainter paint;
120 112
121 // dont allow updates, while drawing 113 // dont allow updates, while drawing
122 setUpdatesEnabled( false ); 114 setUpdatesEnabled( false );
123 115
124 paint.begin( this ); 116 paint.begin( this );
125 117
126 QPoint tL = contentsRect().topLeft(); 118 QPoint tL = contentsRect().topLeft();
127 int tLx = tL.x(); 119 int tLx = tL.x();
128 int tLy = tL.y(); 120 int tLy = tL.y();
129 //hasBlinker = false; 121 //hasBlinker = false;
130 122
131 int cf = -1; 123 int cf = -1;
132 int cb = -1; 124 int cb = -1;
133 int cr = -1; 125 int cr = -1;
134 126
135 int lins = QMIN( m_lines, QMAX( 0, lines ) ); 127 int lins = QMIN( m_lines, QMAX( 0, lines ) );
136 int cols = QMIN( m_columns, QMAX( 0, columns ) ); 128 int cols = QMIN( m_columns, QMAX( 0, columns ) );
137 QArray<QChar> disstrU = QArray<QChar>( cols ); 129 QArray<QChar> disstrU = QArray<QChar>( cols );
138 130
139 for ( int y = 0; y < lins; ++y ) 131 for ( int y = 0; y < lins; ++y )
140 {int len; 132 {int len;
diff --git a/noncore/apps/opie-console/file_layer.cpp b/noncore/apps/opie-console/file_layer.cpp
index 0c83700..9ddef80 100644
--- a/noncore/apps/opie-console/file_layer.cpp
+++ b/noncore/apps/opie-console/file_layer.cpp
@@ -1,23 +1,22 @@
1#include <qfile.h>
2#include <opie/oprocess.h> 1#include <opie/oprocess.h>
3 2
4#include "file_layer.h" 3#include "file_layer.h"
5 4
6FileTransferLayer::FileTransferLayer(IOLayer *layer) 5FileTransferLayer::FileTransferLayer(IOLayer *layer)
7 : QObject(), m_layer( layer ) 6 : QObject(), m_layer( layer )
8{ 7{
9} 8}
10 9
11FileTransferLayer::~FileTransferLayer() { 10FileTransferLayer::~FileTransferLayer() {
12} 11}
13 12
14void FileTransferLayer::sendFile(const QFile&) { 13void FileTransferLayer::sendFile(const QFile&) {
15 14
16} 15}
17 16
18void FileTransferLayer::sendFile(const QString&) { 17void FileTransferLayer::sendFile(const QString&) {
19} 18}
20 19
21IOLayer* FileTransferLayer::layer() { 20IOLayer* FileTransferLayer::layer() {
22 return m_layer; 21 return m_layer;
23} 22}
diff --git a/noncore/apps/opie-console/filetransfer.cpp b/noncore/apps/opie-console/filetransfer.cpp
index 5144941..347d6e0 100644
--- a/noncore/apps/opie-console/filetransfer.cpp
+++ b/noncore/apps/opie-console/filetransfer.cpp
@@ -1,135 +1,134 @@
1#include <stdio.h> 1#include <stdio.h>
2#include <stdlib.h> 2#include <stdlib.h>
3#include <errno.h> 3#include <errno.h>
4#include <fcntl.h> 4#include <fcntl.h>
5#include <unistd.h> 5#include <unistd.h>
6 6
7#include <qcstring.h>
8#include <qsocketnotifier.h> 7#include <qsocketnotifier.h>
9 8
10#include <opie/oprocess.h> 9#include <opie/oprocess.h>
11 10
12#include "procctl.h" 11#include "procctl.h"
13#include "filetransfer.h" 12#include "filetransfer.h"
14 13
15 14
16FileTransfer::FileTransfer( Type t, IOLayer* lay ) 15FileTransfer::FileTransfer( Type t, IOLayer* lay )
17 : FileTransferLayer( lay ), m_type( t ), m_pid ( 0 ) { 16 : FileTransferLayer( lay ), m_type( t ), m_pid ( 0 ) {
18 signal(SIGPIPE, SIG_IGN ); 17 signal(SIGPIPE, SIG_IGN );
19 18
20 m_pid = 0; 19 m_pid = 0;
21 m_not = 0l; 20 m_not = 0l;
22 m_proc = 0l; 21 m_proc = 0l;
23} 22}
24FileTransfer::~FileTransfer() { 23FileTransfer::~FileTransfer() {
25} 24}
26 25
27/** 26/**
28 * now we will send the file. 27 * now we will send the file.
29 * 28 *
30 * we request an fd. The IOLayer should be closed 29 * we request an fd. The IOLayer should be closed
31 * then we will setup a pipe for progress communication 30 * then we will setup a pipe for progress communication
32 * then we will dup2 the m_fd in the forked process 31 * then we will dup2 the m_fd in the forked process
33 * to do direct IO from and to the fd 32 * to do direct IO from and to the fd
34 */ 33 */
35void FileTransfer::sendFile( const QString& file ) { 34void FileTransfer::sendFile( const QString& file ) {
36 m_prog =-1; 35 m_prog =-1;
37 m_fd = layer()->rawIO(); 36 m_fd = layer()->rawIO();
38// 37//
39// m_fd = ::open("/dev/ttyS0", O_RDWR); 38// m_fd = ::open("/dev/ttyS0", O_RDWR);
40 39
41 m_file = file; 40 m_file = file;
42 if ( pipe( m_comm ) < 0 ) 41 if ( pipe( m_comm ) < 0 )
43 m_comm[0] = m_comm[1] = 0; 42 m_comm[0] = m_comm[1] = 0;
44 if ( pipe( m_info ) < 0 ) 43 if ( pipe( m_info ) < 0 )
45 m_info[0] = m_info[1] = 0; 44 m_info[0] = m_info[1] = 0;
46 45
47 46
48 m_pid = fork(); 47 m_pid = fork();
49 switch( m_pid ) { 48 switch( m_pid ) {
50 case -1: 49 case -1:
51 emit error( StartError, tr("Was not able to fork") ); 50 emit error( StartError, tr("Was not able to fork") );
52 slotExec(); 51 slotExec();
53 break; 52 break;
54 case 0:{ 53 case 0:{
55 setupChild(); 54 setupChild();
56 /* exec */ 55 /* exec */
57 char* verbose = "-vv"; 56 char* verbose = "-vv";
58 char* binray = "-b"; 57 char* binray = "-b";
59 58
60 59
61 char* typus; 60 char* typus;
62 switch(m_type ) { 61 switch(m_type ) {
63 default: 62 default:
64 case SZ: 63 case SZ:
65 typus = ""; 64 typus = "";
66 break; 65 break;
67 case SX: 66 case SX:
68 typus = "-X"; 67 typus = "-X";
69 break; 68 break;
70 case SY: 69 case SY:
71 typus = "--ymodem"; 70 typus = "--ymodem";
72 break; 71 break;
73 } 72 }
74 73
75 /* we should never return from here */ 74 /* we should never return from here */
76 execlp("sz", "sz", verbose, binray, file.latin1(), typus, NULL ); 75 execlp("sz", "sz", verbose, binray, file.latin1(), typus, NULL );
77 76
78 /* communication for error!*/ 77 /* communication for error!*/
79 char resultByte =1; 78 char resultByte =1;
80 if (m_info[1] ) 79 if (m_info[1] )
81 write(m_info[1], &resultByte, 1 ); 80 write(m_info[1], &resultByte, 1 );
82 _exit( -1 ); 81 _exit( -1 );
83 break; 82 break;
84 } 83 }
85 default:{ 84 default:{
86 if ( m_info[1] ) 85 if ( m_info[1] )
87 close( m_info[1] ); 86 close( m_info[1] );
88 if ( m_info[0] ) for (;;) { 87 if ( m_info[0] ) for (;;) {
89 char resultByte; int len; 88 char resultByte; int len;
90 len = read(m_info[0], &resultByte, 1 ); 89 len = read(m_info[0], &resultByte, 1 );
91 /* len == 1 start up failed */ 90 /* len == 1 start up failed */
92 if ( len == 1 ) { 91 if ( len == 1 ) {
93 emit error( StartError, tr("Could not start") ); 92 emit error( StartError, tr("Could not start") );
94 return; 93 return;
95 } 94 }
96 if ( len == -1 ) 95 if ( len == -1 )
97 if ( (errno == ECHILD ) || (errno == EINTR ) ) 96 if ( (errno == ECHILD ) || (errno == EINTR ) )
98 continue; 97 continue;
99 98
100 // len == 0 or something like this 99 // len == 0 or something like this
101 break; 100 break;
102 } 101 }
103 if ( m_info[0] ) 102 if ( m_info[0] )
104 close( m_info[0] ); 103 close( m_info[0] );
105 104
106 105
107 106
108 /* replace by QSocketNotifier!!! */ 107 /* replace by QSocketNotifier!!! */
109 m_not = new QSocketNotifier(m_comm[0], QSocketNotifier::Read ); 108 m_not = new QSocketNotifier(m_comm[0], QSocketNotifier::Read );
110 connect(m_not, SIGNAL(activated(int) ), 109 connect(m_not, SIGNAL(activated(int) ),
111 this, SLOT(slotRead() ) ); 110 this, SLOT(slotRead() ) );
112 if ( pipe(m_term) < 0 ) 111 if ( pipe(m_term) < 0 )
113 m_term[0] = m_term[1] = 0; 112 m_term[0] = m_term[1] = 0;
114 113
115 ProcCtl::self()->add(m_pid, m_term[1] ); 114 ProcCtl::self()->add(m_pid, m_term[1] );
116 m_proc = new QSocketNotifier(m_term[0], QSocketNotifier::Read ); 115 m_proc = new QSocketNotifier(m_term[0], QSocketNotifier::Read );
117 connect(m_proc, SIGNAL(activated(int) ), 116 connect(m_proc, SIGNAL(activated(int) ),
118 this, SLOT(slotExec() ) ); 117 this, SLOT(slotExec() ) );
119 118
120 } 119 }
121 break; 120 break;
122 } 121 }
123} 122}
124/* 123/*
125 * let's call the one with the filename 124 * let's call the one with the filename
126 */ 125 */
127void FileTransfer::sendFile( const QFile& file ) { 126void FileTransfer::sendFile( const QFile& file ) {
128 sendFile( file.name() ); 127 sendFile( file.name() );
129} 128}
130 129
131/* 130/*
132 * setting up communication 131 * setting up communication
133 * between parent child and ioLayer 132 * between parent child and ioLayer
134 */ 133 */
135void FileTransfer::setupChild() { 134void FileTransfer::setupChild() {
diff --git a/noncore/apps/opie-console/function_keyboard.cpp b/noncore/apps/opie-console/function_keyboard.cpp
index 0191915..c232d89 100644
--- a/noncore/apps/opie-console/function_keyboard.cpp
+++ b/noncore/apps/opie-console/function_keyboard.cpp
@@ -1,141 +1,133 @@
1#include "function_keyboard.h" 1#include "function_keyboard.h"
2 2
3#include <qpe/resource.h>
4#include <qpe/qpeapplication.h>
5#include <qsizepolicy.h>
6#include <qevent.h>
7#include <qwindowsystem_qws.h>
8#include <qapplication.h>
9#include <qlayout.h> 3#include <qlayout.h>
10#include <qspinbox.h>
11#include <qlistbox.h> 4#include <qlistbox.h>
12#include <qlabel.h> 5#include <qlabel.h>
13#include <qcombobox.h>
14#include <qdir.h> 6#include <qdir.h>
15 7
16#define DEFAULT_ROWS 2 8#define DEFAULT_ROWS 2
17#define DEFAULT_COLS 12 9#define DEFAULT_COLS 12
18 10
19/* FunctionKeyboard {{{1 */ 11/* FunctionKeyboard {{{1 */
20 12
21FunctionKeyboard::FunctionKeyboard(QWidget *parent) : 13FunctionKeyboard::FunctionKeyboard(QWidget *parent) :
22 QFrame(parent), numRows(DEFAULT_ROWS), numCols(DEFAULT_COLS), 14 QFrame(parent), numRows(DEFAULT_ROWS), numCols(DEFAULT_COLS),
23 pressedRow(0), pressedCol(0) { 15 pressedRow(0), pressedCol(0) {
24 16
25 setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed)); 17 setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed));
26 18
27 /* 19 /*
28 * all the saving/loading is now done in a profile. downside is that you cant modify 20 * all the saving/loading is now done in a profile. downside is that you cant modify
29 * the keyboard for all profiles, but must do it on a profile-basis 21 * the keyboard for all profiles, but must do it on a profile-basis
30 * 22 *
31 23
32 Config conf("opie-console-keys"); 24 Config conf("opie-console-keys");
33 conf.setGroup("keys"); 25 conf.setGroup("keys");
34 for (uint r = 0; r < numRows; r++) 26 for (uint r = 0; r < numRows; r++)
35 for (uint c = 0; c < numCols; c++) { 27 for (uint c = 0; c < numCols; c++) {
36 28
37 QString handle = "r" + QString::number(r) + "c" + QString::number(c); 29 QString handle = "r" + QString::number(r) + "c" + QString::number(c);
38 QStringList value_list = conf.readListEntry( handle, '|'); 30 QStringList value_list = conf.readListEntry( handle, '|');
39 31
40 if (value_list.isEmpty()) continue; 32 if (value_list.isEmpty()) continue;
41 33
42 keys.insert( 34 keys.insert(
43 35
44 handle, 36 handle,
45 FKey (value_list[0], value_list[1], value_list[2].toUShort(), value_list[3].toUShort()) 37 FKey (value_list[0], value_list[1], value_list[2].toUShort(), value_list[3].toUShort())
46 ); 38 );
47 } 39 }
48 //qWarning("loaded %d keys", keys.count()); 40 //qWarning("loaded %d keys", keys.count());
49 */ 41 */
50 if (keys.isEmpty()) loadDefaults(); 42 if (keys.isEmpty()) loadDefaults();
51 43
52 44
53 45
54} 46}
55 47
56FunctionKeyboard::~FunctionKeyboard() {} 48FunctionKeyboard::~FunctionKeyboard() {}
57 49
58void FunctionKeyboard::changeRows(int r) { 50void FunctionKeyboard::changeRows(int r) {
59 51
60 numRows = r; 52 numRows = r;
61 53
62 // have to do this so the whole thing gets redrawn 54 // have to do this so the whole thing gets redrawn
63 hide(); show(); 55 hide(); show();
64} 56}
65void FunctionKeyboard::changeCols(int c) { 57void FunctionKeyboard::changeCols(int c) {
66 58
67 numCols = c; 59 numCols = c;
68 keyWidth = (double)width()/numCols; // have to reset this thing too 60 keyWidth = (double)width()/numCols; // have to reset this thing too
69 repaint(false); 61 repaint(false);
70} 62}
71void FunctionKeyboard::load (const Profile& prof) { 63void FunctionKeyboard::load (const Profile& prof) {
72 64
73 keys.clear(); 65 keys.clear();
74 66
75 numRows = prof.readNumEntry("keb_rows", 2); 67 numRows = prof.readNumEntry("keb_rows", 2);
76 numCols = prof.readNumEntry("keb_cols", 10); 68 numCols = prof.readNumEntry("keb_cols", 10);
77 keyWidth = (double)width()/numCols; // have to reset this thing too 69 keyWidth = (double)width()/numCols; // have to reset this thing too
78 70
79 /* load all the keys to the keyboard */ 71 /* load all the keys to the keyboard */
80 for (ushort i = 0; i <= numRows - 1; i++) 72 for (ushort i = 0; i <= numRows - 1; i++)
81 for (ushort j = 0; j <= numCols - 1; j++) { 73 for (ushort j = 0; j <= numCols - 1; j++) {
82 74
83 QString h = "r" + QString::number(i) + "c" + QString::number(j); 75 QString h = "r" + QString::number(i) + "c" + QString::number(j);
84 QString values = prof.readEntry("keb_" + h); 76 QString values = prof.readEntry("keb_" + h);
85 77
86 if (!values.isEmpty()) { 78 if (!values.isEmpty()) {
87 79
88 QStringList l = QStringList::split(QChar('|'), values, TRUE); 80 QStringList l = QStringList::split(QChar('|'), values, TRUE);
89 keys[h] = FKey(l[0], l[1], l[2].toInt(), l[3].toInt()); 81 keys[h] = FKey(l[0], l[1], l[2].toInt(), l[3].toInt());
90 82
91 // load pixmap if used 83 // load pixmap if used
92 if (!l[1].isEmpty()) { 84 if (!l[1].isEmpty()) {
93 85
94 keys[h].pix = new QPixmap( Resource::loadPixmap( "console/keys/" + l[1] ) ); 86 keys[h].pix = new QPixmap( Resource::loadPixmap( "console/keys/" + l[1] ) );
95 } 87 }
96 } 88 }
97 } 89 }
98 90
99 if (keys.isEmpty()) loadDefaults(); 91 if (keys.isEmpty()) loadDefaults();
100 92
101 hide(); 93 hide();
102 show(); 94 show();
103 95
104} 96}
105 97
106void FunctionKeyboard::paintEvent(QPaintEvent *e) { 98void FunctionKeyboard::paintEvent(QPaintEvent *e) {
107 99
108 QPainter p(this); 100 QPainter p(this);
109 p.setClipRect(e->rect()); 101 p.setClipRect(e->rect());
110 p.fillRect(0, 0, width(), height(), QColor(255,255,255)); 102 p.fillRect(0, 0, width(), height(), QColor(255,255,255));
111 103
112 p.setPen(QColor(0,0,0)); 104 p.setPen(QColor(0,0,0));
113 105
114 /* those decimals do count! becomes short if use plain int */ 106 /* those decimals do count! becomes short if use plain int */
115 for (double i = 0; i <= width(); i += keyWidth) { 107 for (double i = 0; i <= width(); i += keyWidth) {
116 108
117 p.drawLine((int)i, 0, (int)i, height()); 109 p.drawLine((int)i, 0, (int)i, height());
118 } 110 }
119 111
120 // sometimes the last line doesnt get drawn 112 // sometimes the last line doesnt get drawn
121 p.drawLine(width() -1, 0, width() -1, height()); 113 p.drawLine(width() -1, 0, width() -1, height());
122 114
123 for (int i = 0; i <= height(); i += keyHeight) { 115 for (int i = 0; i <= height(); i += keyHeight) {
124 116
125 p.drawLine(0, i, width(), i); 117 p.drawLine(0, i, width(), i);
126 } 118 }
127 119
128 for (uint r = 0; r < numRows; r++) { 120 for (uint r = 0; r < numRows; r++) {
129 for (uint c = 0; c < numCols; c++) { 121 for (uint c = 0; c < numCols; c++) {
130 122
131 QString handle = "r" + QString::number(r) + "c" + QString::number(c); 123 QString handle = "r" + QString::number(r) + "c" + QString::number(c);
132 if (keys.contains(handle)) { 124 if (keys.contains(handle)) {
133 125
134 if (keys[handle].pixFile.isEmpty()) 126 if (keys[handle].pixFile.isEmpty())
135 p.drawText( c * keyWidth + 1, r * keyHeight + 1, 127 p.drawText( c * keyWidth + 1, r * keyHeight + 1,
136 keyWidth, keyHeight, 128 keyWidth, keyHeight,
137 Qt::AlignHCenter | Qt::AlignVCenter, 129 Qt::AlignHCenter | Qt::AlignVCenter,
138 keys[handle].label 130 keys[handle].label
139 ); 131 );
140 else { 132 else {
141 133
diff --git a/noncore/apps/opie-console/iolayerbase.cpp b/noncore/apps/opie-console/iolayerbase.cpp
index ba7c86e..b434e66 100644
--- a/noncore/apps/opie-console/iolayerbase.cpp
+++ b/noncore/apps/opie-console/iolayerbase.cpp
@@ -1,135 +1,133 @@
1#include <qlabel.h> 1#include <qlabel.h>
2#include <qlayout.h> 2#include <qlayout.h>
3#include <qcombobox.h> 3#include <qcombobox.h>
4#include <qbuttongroup.h>
5#include <qhbuttongroup.h> 4#include <qhbuttongroup.h>
6#include <qradiobutton.h> 5#include <qradiobutton.h>
7#include <qhbox.h>
8 6
9#include "iolayerbase.h" 7#include "iolayerbase.h"
10 8
11namespace { 9namespace {
12 enum ParityIds { 10 enum ParityIds {
13 id_parity_none, 11 id_parity_none,
14 id_parity_odd, 12 id_parity_odd,
15 id_parity_even 13 id_parity_even
16 }; 14 };
17 15
18 enum FlowIds { 16 enum FlowIds {
19 id_flow_hw, 17 id_flow_hw,
20 id_flow_sw, 18 id_flow_sw,
21 id_flow_none, 19 id_flow_none,
22 }; 20 };
23 21
24 enum SpeedIds { 22 enum SpeedIds {
25 id_baud_115200, 23 id_baud_115200,
26 id_baud_57600, 24 id_baud_57600,
27 id_baud_38400, 25 id_baud_38400,
28 id_baud_19200, 26 id_baud_19200,
29 id_baud_9600 27 id_baud_9600
30 }; 28 };
31 29
32 enum DataIds { 30 enum DataIds {
33 id_data_5, 31 id_data_5,
34 id_data_6, 32 id_data_6,
35 id_data_7, 33 id_data_7,
36 id_data_8 34 id_data_8
37 }; 35 };
38 36
39 enum StopIds { 37 enum StopIds {
40 id_stop_1, 38 id_stop_1,
41 id_stop_1_5, 39 id_stop_1_5,
42 id_stop_2 40 id_stop_2
43 }; 41 };
44 42
45} 43}
46 44
47 45
48IOLayerBase::IOLayerBase( QWidget* par, const char* name ) 46IOLayerBase::IOLayerBase( QWidget* par, const char* name )
49 : QWidget( par, name ) 47 : QWidget( par, name )
50{ 48{
51 m_speedLabel = new QLabel(tr("Speed"), this ); 49 m_speedLabel = new QLabel(tr("Speed"), this );
52 m_speedBox = new QComboBox(this ); 50 m_speedBox = new QComboBox(this );
53 51
54 m_groupFlow = new QHButtonGroup(tr("Flow control"),this ); 52 m_groupFlow = new QHButtonGroup(tr("Flow control"),this );
55 m_flowHw = new QRadioButton(tr("Hardware"), m_groupFlow ); 53 m_flowHw = new QRadioButton(tr("Hardware"), m_groupFlow );
56 m_flowSw = new QRadioButton(tr("Software"), m_groupFlow ); 54 m_flowSw = new QRadioButton(tr("Software"), m_groupFlow );
57 m_flowNone = new QRadioButton( tr("None"), m_groupFlow ); 55 m_flowNone = new QRadioButton( tr("None"), m_groupFlow );
58 56
59 m_groupParity = new QHButtonGroup(tr("Parity"), this ); 57 m_groupParity = new QHButtonGroup(tr("Parity"), this );
60 m_parityNone = new QRadioButton(tr("None"), m_groupParity ); 58 m_parityNone = new QRadioButton(tr("None"), m_groupParity );
61 m_parityOdd = new QRadioButton(tr("Odd"), m_groupParity ); 59 m_parityOdd = new QRadioButton(tr("Odd"), m_groupParity );
62 m_parityEven = new QRadioButton(tr("Even"), m_groupParity ); 60 m_parityEven = new QRadioButton(tr("Even"), m_groupParity );
63 61
64 m_groupData = new QHButtonGroup(tr("Data Bits"), this); 62 m_groupData = new QHButtonGroup(tr("Data Bits"), this);
65 m_data5 = new QRadioButton(tr("5"), m_groupData ); 63 m_data5 = new QRadioButton(tr("5"), m_groupData );
66 m_data6 = new QRadioButton(tr("6"), m_groupData ); 64 m_data6 = new QRadioButton(tr("6"), m_groupData );
67 m_data7 = new QRadioButton(tr("7"), m_groupData ); 65 m_data7 = new QRadioButton(tr("7"), m_groupData );
68 m_data8 = new QRadioButton(tr("8"), m_groupData ); 66 m_data8 = new QRadioButton(tr("8"), m_groupData );
69 67
70 m_groupStop = new QHButtonGroup(tr("Stop Bits"), this ); 68 m_groupStop = new QHButtonGroup(tr("Stop Bits"), this );
71 m_stop1 = new QRadioButton(tr("1"), m_groupStop ); 69 m_stop1 = new QRadioButton(tr("1"), m_groupStop );
72 m_stop15 = new QRadioButton(tr("1.5"), m_groupStop ); 70 m_stop15 = new QRadioButton(tr("1.5"), m_groupStop );
73 m_stop2 = new QRadioButton(tr("2"), m_groupStop ); 71 m_stop2 = new QRadioButton(tr("2"), m_groupStop );
74 72
75 73
76 m_lroot = new QVBoxLayout( this ); 74 m_lroot = new QVBoxLayout( this );
77 m_lroot->add(m_speedLabel ); 75 m_lroot->add(m_speedLabel );
78 m_lroot->add(m_speedBox ); 76 m_lroot->add(m_speedBox );
79 m_lroot->add(m_groupFlow ); 77 m_lroot->add(m_groupFlow );
80 m_lroot->add(m_groupParity ); 78 m_lroot->add(m_groupParity );
81 m_lroot->add( m_groupData ); 79 m_lroot->add( m_groupData );
82 m_lroot->add( m_groupStop ); 80 m_lroot->add( m_groupStop );
83 m_lroot->addStretch(2); 81 m_lroot->addStretch(2);
84 82
85 // profiles 83 // profiles
86 m_speedBox->insertItem(tr("115200 baud"), id_baud_115200 ); 84 m_speedBox->insertItem(tr("115200 baud"), id_baud_115200 );
87 m_speedBox->insertItem(tr("57600 baud"), id_baud_57600 ); 85 m_speedBox->insertItem(tr("57600 baud"), id_baud_57600 );
88 m_speedBox->insertItem(tr("38400 baud"), id_baud_38400 ); 86 m_speedBox->insertItem(tr("38400 baud"), id_baud_38400 );
89 m_speedBox->insertItem(tr("19200 baud"), id_baud_19200 ); 87 m_speedBox->insertItem(tr("19200 baud"), id_baud_19200 );
90 m_speedBox->insertItem(tr("9600 baud"), id_baud_9600 ); 88 m_speedBox->insertItem(tr("9600 baud"), id_baud_9600 );
91 89
92}; 90};
93IOLayerBase::~IOLayerBase() { 91IOLayerBase::~IOLayerBase() {
94 92
95} 93}
96void IOLayerBase::setFlow( Flow flo ) { 94void IOLayerBase::setFlow( Flow flo ) {
97 switch ( flo ) { 95 switch ( flo ) {
98 case Software: 96 case Software:
99 m_flowSw->setChecked( true ); 97 m_flowSw->setChecked( true );
100 break; 98 break;
101 case Hardware: 99 case Hardware:
102 m_flowHw->setChecked( true ); 100 m_flowHw->setChecked( true );
103 break; 101 break;
104 case None: 102 case None:
105 m_flowNone->setChecked( true ); 103 m_flowNone->setChecked( true );
106 break; 104 break;
107 } 105 }
108} 106}
109 107
110void IOLayerBase::setParity( Parity par ) { 108void IOLayerBase::setParity( Parity par ) {
111 switch( par ) { 109 switch( par ) {
112 case NonePar: 110 case NonePar:
113 m_parityNone->setChecked( true ); 111 m_parityNone->setChecked( true );
114 break; 112 break;
115 case Odd: 113 case Odd:
116 m_parityOdd->setChecked( true ); 114 m_parityOdd->setChecked( true );
117 break; 115 break;
118 case Even: 116 case Even:
119 m_parityEven->setChecked( true ); 117 m_parityEven->setChecked( true );
120 break; 118 break;
121 } 119 }
122} 120}
123void IOLayerBase::setSpeed( Speed sp ) { 121void IOLayerBase::setSpeed( Speed sp ) {
124 int index = -1; 122 int index = -1;
125 switch( sp ) { 123 switch( sp ) {
126 case Baud_115200: 124 case Baud_115200:
127 index = id_baud_115200; 125 index = id_baud_115200;
128 break; 126 break;
129 case Baud_57600: 127 case Baud_57600:
130 index = id_baud_57600; 128 index = id_baud_57600;
131 break; 129 break;
132 case Baud_38400: 130 case Baud_38400:
133 index = id_baud_38400; 131 index = id_baud_38400;
134 break; 132 break;
135 case Baud_19200: 133 case Baud_19200:
diff --git a/noncore/apps/opie-console/main.cpp b/noncore/apps/opie-console/main.cpp
index 228db57..dfb2f83 100644
--- a/noncore/apps/opie-console/main.cpp
+++ b/noncore/apps/opie-console/main.cpp
@@ -1,111 +1,110 @@
1#include <sys/types.h> 1#include <sys/types.h>
2 2
3#include <stdio.h> 3#include <stdio.h>
4#include <stdlib.h> 4#include <stdlib.h>
5#include <signal.h> 5#include <signal.h>
6 6
7#include <qfile.h>
8 7
9#include <qpe/qpeapplication.h> 8#include <qpe/qpeapplication.h>
10 9
11#include "mainwindow.h" 10#include "mainwindow.h"
12 11
13//#define FSCKED_DISTRIBUTION 1 12//#define FSCKED_DISTRIBUTION 1
14#ifdef FSCKED_DISTRIBUTION 13#ifdef FSCKED_DISTRIBUTION
15/* 14/*
16 * The Zaurus rom 15 * The Zaurus rom
17 */ 16 */
18class FixIt { 17class FixIt {
19public: 18public:
20 FixIt(); 19 FixIt();
21 ~FixIt(); 20 ~FixIt();
22 void fixIt(); 21 void fixIt();
23 /* no real interested in implementing it */ 22 /* no real interested in implementing it */
24 void breakIt() { 23 void breakIt() {
25 24
26 }; 25 };
27 char* m_file; 26 char* m_file;
28}; 27};
29 28
30FixIt::FixIt() { 29FixIt::FixIt() {
31 /* the new inittab */ 30 /* the new inittab */
32 m_file = "#\n# /etc/inittab" 31 m_file = "#\n# /etc/inittab"
33"#" 32"#"
34"" 33""
35"# 0 - halt (Do NOT set initdefault to this)" 34"# 0 - halt (Do NOT set initdefault to this)"
36"# 1 - Single user mode" 35"# 1 - Single user mode"
37"# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)" 36"# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)"
38"# 3 - Full multiuser mode" 37"# 3 - Full multiuser mode"
39"# 4 - JavaVM(Intent) developer mode" 38"# 4 - JavaVM(Intent) developer mode"
40"# 5 - JavaVM(Intent)" 39"# 5 - JavaVM(Intent)"
41"# 6 - reboot (Do NOT set initdefault to this)" 40"# 6 - reboot (Do NOT set initdefault to this)"
42"#" 41"#"
43"id:5:initdefault:" 42"id:5:initdefault:"
44"" 43""
45"# Specify things to do when starting" 44"# Specify things to do when starting"
46"si::sysinit:/etc/rc.d/rc.sysinit" 45"si::sysinit:/etc/rc.d/rc.sysinit"
47"" 46""
48"l0:0:wait:/root/etc/rc.d/rc 0" 47"l0:0:wait:/root/etc/rc.d/rc 0"
49"l1:1:wait:/etc/rc.d/rc 1" 48"l1:1:wait:/etc/rc.d/rc 1"
50"l2:2:wait:/etc/rc.d/rc 2" 49"l2:2:wait:/etc/rc.d/rc 2"
51"l3:3:wait:/etc/rc.d/rc 3" 50"l3:3:wait:/etc/rc.d/rc 3"
52"l4:4:wait:/etc/rc.d/rc 4" 51"l4:4:wait:/etc/rc.d/rc 4"
53"l5:5:wait:/etc/rc.d/rc 5" 52"l5:5:wait:/etc/rc.d/rc 5"
54"l6:6:wait:/root/etc/rc.d/rc 6" 53"l6:6:wait:/root/etc/rc.d/rc 6"
55"" 54""
56"# Specify things to do before rebooting" 55"# Specify things to do before rebooting"
57"um::ctrlaltdel:/bin/umount -a -r > /dev/null 2>&1" 56"um::ctrlaltdel:/bin/umount -a -r > /dev/null 2>&1"
58"sw::ctrlaltdel:/sbin/swapoff -a > /dev/null 2>&1" 57"sw::ctrlaltdel:/sbin/swapoff -a > /dev/null 2>&1"
59"" 58""
60"# Specify program to run on ttyS0" 59"# Specify program to run on ttyS0"
61"s0:24:respawn:/sbin/getty 9600 ttyS0" 60"s0:24:respawn:/sbin/getty 9600 ttyS0"
62"#pd:5:respawn:/etc/sync/serialctl" 61"#pd:5:respawn:/etc/sync/serialctl"
63"" 62""
64"# Specify program to run on tty1" 63"# Specify program to run on tty1"
65"1:2:respawn:/sbin/getty 9600 tty1" 64"1:2:respawn:/sbin/getty 9600 tty1"
66"ln:345:respawn:survive -l 6 /sbin/launch" 65"ln:345:respawn:survive -l 6 /sbin/launch"
67"#qt:5:respawn:/sbin/qt" 66"#qt:5:respawn:/sbin/qt"
68"" 67""
69"# collie sp." 68"# collie sp."
70"sy::respawn:/sbin/shsync\n"; 69"sy::respawn:/sbin/shsync\n";
71} 70}
72FixIt::~FixIt() { 71FixIt::~FixIt() {
73} 72}
74/* 73/*
75 * the retail Zaurus is broken in many ways 74 * the retail Zaurus is broken in many ways
76 * one is that pppd is listening on our port... 75 * one is that pppd is listening on our port...
77 * we've to stop it from that and then do kill(SIGHUP,1); 76 * we've to stop it from that and then do kill(SIGHUP,1);
78 */ 77 */
79void FixIt::fixIt() { 78void FixIt::fixIt() {
80 ::rename("/etc/inittab", QPEApplication::qpeDir() + "/etc/inittab" ); 79 ::rename("/etc/inittab", QPEApplication::qpeDir() + "/etc/inittab" );
81 QFile file( "/etc/inittab" ); 80 QFile file( "/etc/inittab" );
82 if ( file.open(IO_WriteOnly | IO_Raw ) ) { 81 if ( file.open(IO_WriteOnly | IO_Raw ) ) {
83 file.writeBlock(m_file,strlen(m_file) ); 82 file.writeBlock(m_file,strlen(m_file) );
84 } 83 }
85 file.close(); 84 file.close();
86 ::kill( SIGHUP, 1 ); 85 ::kill( SIGHUP, 1 );
87} 86}
88#endif 87#endif
89 88
90int main(int argc, char **argv) { 89int main(int argc, char **argv) {
91// too bad this gives us trouble the taskbar... argv[0]="embeddedkonsole"; 90// too bad this gives us trouble the taskbar... argv[0]="embeddedkonsole";
92 QPEApplication app( argc, argv ); 91 QPEApplication app( argc, argv );
93 92
94#ifdef FSCKED_DISTRIBUTION 93#ifdef FSCKED_DISTRIBUTION
95 qWarning("fscked"); 94 qWarning("fscked");
96 FixIt it; 95 FixIt it;
97 it.fixIt(); 96 it.fixIt();
98#endif 97#endif
99 98
100 MainWindow mw; 99 MainWindow mw;
101 mw.setCaption(QObject::tr("Opie Console") ); 100 mw.setCaption(QObject::tr("Opie Console") );
102 app.showMainWidget( &mw ); 101 app.showMainWidget( &mw );
103 102
104 int ap = app.exec(); 103 int ap = app.exec();
105 104
106#ifdef FSCKED_DISTRIBUTION 105#ifdef FSCKED_DISTRIBUTION
107 /* should add a signal handler too */ 106 /* should add a signal handler too */
108 it.breakIt(); 107 it.breakIt();
109#endif 108#endif
110 return ap; 109 return ap;
111} 110}
diff --git a/noncore/apps/opie-console/mainwindow.cpp b/noncore/apps/opie-console/mainwindow.cpp
index 3c9603c..2673335 100644
--- a/noncore/apps/opie-console/mainwindow.cpp
+++ b/noncore/apps/opie-console/mainwindow.cpp
@@ -1,155 +1,145 @@
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>
6#include <qpopupmenu.h>
7#include <qtoolbar.h> 5#include <qtoolbar.h>
8#include <qmessagebox.h> 6#include <qmessagebox.h>
9#include <qpushbutton.h>
10#include <qwhatsthis.h> 7#include <qwhatsthis.h>
11#include <qfileinfo.h> 8#include <qfileinfo.h>
12#include <qtextstream.h>
13 9
14#include <qpe/resource.h>
15#include <qpe/qpeapplication.h>
16#include <qpe/filemanager.h> 10#include <qpe/filemanager.h>
17#include <qpe/mimetype.h>
18 11
19#include <opie/ofiledialog.h> 12#include <opie/ofiledialog.h>
20 13
21#include "TEmulation.h" 14#include "TEmulation.h"
22#include "keytrans.h"
23#include "profileeditordialog.h" 15#include "profileeditordialog.h"
24#include "configdialog.h" 16#include "configdialog.h"
25#include "default.h" 17#include "default.h"
26#include "metafactory.h"
27#include "profile.h"
28#include "profilemanager.h" 18#include "profilemanager.h"
29#include "mainwindow.h" 19#include "mainwindow.h"
30#include "tabwidget.h" 20#include "tabwidget.h"
31#include "transferdialog.h" 21#include "transferdialog.h"
32#include "function_keyboard.h" 22#include "function_keyboard.h"
33#include "emulation_handler.h" 23#include "emulation_handler.h"
34#include "script.h" 24#include "script.h"
35 25
36 26
37MainWindow::MainWindow(QWidget *parent, const char *name, WFlags) : QMainWindow(parent, name, WStyle_ContextHelp) { 27MainWindow::MainWindow(QWidget *parent, const char *name, WFlags) : QMainWindow(parent, name, WStyle_ContextHelp) {
38 KeyTrans::loadAll(); 28 KeyTrans::loadAll();
39 for (int i = 0; i < KeyTrans::count(); i++ ) { 29 for (int i = 0; i < KeyTrans::count(); i++ ) {
40 KeyTrans* s = KeyTrans::find(i ); 30 KeyTrans* s = KeyTrans::find(i );
41 assert( s ); 31 assert( s );
42 } 32 }
43 m_factory = new MetaFactory(); 33 m_factory = new MetaFactory();
44 Default def(m_factory); 34 Default def(m_factory);
45 m_sessions.setAutoDelete( TRUE ); 35 m_sessions.setAutoDelete( TRUE );
46 m_curSession = 0; 36 m_curSession = 0;
47 m_manager = new ProfileManager( m_factory ); 37 m_manager = new ProfileManager( m_factory );
48 m_manager->load(); 38 m_manager->load();
49 m_scriptsData.setAutoDelete(TRUE); 39 m_scriptsData.setAutoDelete(TRUE);
50 40
51 initUI(); 41 initUI();
52 populateProfiles(); 42 populateProfiles();
53 populateScripts(); 43 populateScripts();
54} 44}
55 45
56void MainWindow::initUI() { 46void MainWindow::initUI() {
57 47
58 setToolBarsMovable( FALSE ); 48 setToolBarsMovable( FALSE );
59 49
60 /* tool bar for the menu */ 50 /* tool bar for the menu */
61 m_tool = new QToolBar( this ); 51 m_tool = new QToolBar( this );
62 m_tool->setHorizontalStretchable( TRUE ); 52 m_tool->setHorizontalStretchable( TRUE );
63 53
64 m_bar = new QMenuBar( m_tool ); 54 m_bar = new QMenuBar( m_tool );
65 m_console = new QPopupMenu( this ); 55 m_console = new QPopupMenu( this );
66 m_scripts = new QPopupMenu( this ); 56 m_scripts = new QPopupMenu( this );
67 m_sessionsPop= new QPopupMenu( this ); 57 m_sessionsPop= new QPopupMenu( this );
68 m_scriptsPop = new QPopupMenu( this ); 58 m_scriptsPop = new QPopupMenu( this );
69 59
70 /* add a toolbar for icons */ 60 /* add a toolbar for icons */
71 m_icons = new QToolBar(this); 61 m_icons = new QToolBar(this);
72 62
73 /* 63 /*
74 * the settings action 64 * the settings action
75 */ 65 */
76 m_setProfiles = new QAction(tr("Configure Profiles"), 66 m_setProfiles = new QAction(tr("Configure Profiles"),
77 Resource::loadPixmap( "SettingsIcon" ), 67 Resource::loadPixmap( "SettingsIcon" ),
78 QString::null, 0, this, 0); 68 QString::null, 0, this, 0);
79 m_setProfiles->addTo( m_console ); 69 m_setProfiles->addTo( m_console );
80 connect( m_setProfiles, SIGNAL(activated() ), 70 connect( m_setProfiles, SIGNAL(activated() ),
81 this, SLOT(slotConfigure() ) ); 71 this, SLOT(slotConfigure() ) );
82 72
83 m_console->insertSeparator(); 73 m_console->insertSeparator();
84 /* 74 /*
85 * new Action for new sessions 75 * new Action for new sessions
86 */ 76 */
87 QAction* newCon = new QAction(tr("New Profile"), 77 QAction* newCon = new QAction(tr("New Profile"),
88 Resource::loadPixmap( "new" ), 78 Resource::loadPixmap( "new" ),
89 QString::null, 0, this, 0); 79 QString::null, 0, this, 0);
90 newCon->addTo( m_console ); 80 newCon->addTo( m_console );
91 connect( newCon, SIGNAL(activated() ), 81 connect( newCon, SIGNAL(activated() ),
92 this, SLOT(slotNew() ) ); 82 this, SLOT(slotNew() ) );
93 83
94 m_console->insertSeparator(); 84 m_console->insertSeparator();
95 85
96 QAction *saveCon = new QAction( tr("Save Profile" ), 86 QAction *saveCon = new QAction( tr("Save Profile" ),
97 Resource::loadPixmap( "save" ), QString::null, 87 Resource::loadPixmap( "save" ), QString::null,
98 0, this, 0 ); 88 0, this, 0 );
99 saveCon->addTo( m_console ); 89 saveCon->addTo( m_console );
100 connect( saveCon, SIGNAL(activated() ), 90 connect( saveCon, SIGNAL(activated() ),
101 this, SLOT(slotSaveSession() ) ); 91 this, SLOT(slotSaveSession() ) );
102 m_console->insertSeparator(); 92 m_console->insertSeparator();
103 93
104 /* 94 /*
105 * connect action 95 * connect action
106 */ 96 */
107 m_connect = new QAction( tr("Connect"), Resource::loadPixmap("console/connected"), 97 m_connect = new QAction( tr("Connect"), Resource::loadPixmap("console/connected"),
108 QString::null, 0, this, 0 ); 98 QString::null, 0, this, 0 );
109 m_connect->addTo( m_console ); 99 m_connect->addTo( m_console );
110 connect(m_connect, SIGNAL(activated() ), 100 connect(m_connect, SIGNAL(activated() ),
111 this, SLOT(slotConnect() ) ); 101 this, SLOT(slotConnect() ) );
112 102
113 /* 103 /*
114 * disconnect action 104 * disconnect action
115 */ 105 */
116 m_disconnect = new QAction( tr("Disconnect"), Resource::loadPixmap("console/notconnected"), 106 m_disconnect = new QAction( tr("Disconnect"), Resource::loadPixmap("console/notconnected"),
117 QString::null, 0, this, 0 ); 107 QString::null, 0, this, 0 );
118 m_disconnect->addTo( m_console ); 108 m_disconnect->addTo( m_console );
119 connect(m_disconnect, SIGNAL(activated() ), 109 connect(m_disconnect, SIGNAL(activated() ),
120 this, SLOT(slotDisconnect() ) ); 110 this, SLOT(slotDisconnect() ) );
121 111
122 m_console->insertSeparator(); 112 m_console->insertSeparator();
123 113
124 114
125 m_quickLaunch = new QAction( tr("QuickLaunch"), Resource::loadPixmap("console/konsole_mini"), QString::null, 0, this, 0 ); 115 m_quickLaunch = new QAction( tr("QuickLaunch"), Resource::loadPixmap("console/konsole_mini"), QString::null, 0, this, 0 );
126 m_quickLaunch->addTo( m_icons ); 116 m_quickLaunch->addTo( m_icons );
127 connect( m_quickLaunch, SIGNAL( activated() ), 117 connect( m_quickLaunch, SIGNAL( activated() ),
128 this, SLOT( slotQuickLaunch() ) ); 118 this, SLOT( slotQuickLaunch() ) );
129 119
130 QWhatsThis::add( m_icons, tr( "The shell button launches the \"default\" profile. If there is none default values are taken" ) ); 120 QWhatsThis::add( m_icons, tr( "The shell button launches the \"default\" profile. If there is none default values are taken" ) );
131 121
132 m_transfer = new QAction( tr("Transfer file..."), Resource::loadPixmap("pass") , QString::null, 122 m_transfer = new QAction( tr("Transfer file..."), Resource::loadPixmap("pass") , QString::null,
133 0, this, 0 ); 123 0, this, 0 );
134 m_transfer->addTo( m_console ); 124 m_transfer->addTo( m_console );
135 connect(m_transfer, SIGNAL(activated() ), 125 connect(m_transfer, SIGNAL(activated() ),
136 this, SLOT(slotTransfer() ) ); 126 this, SLOT(slotTransfer() ) );
137 127
138 128
139 129
140 /* 130 /*
141 * immediate change of line wrap policy 131 * immediate change of line wrap policy
142 */ 132 */
143 m_isWrapped = false; 133 m_isWrapped = false;
144 m_wrap = new QAction( tr("Line wrap"), Resource::loadPixmap( "linewrap" ), QString::null, 0, this, 0 ); 134 m_wrap = new QAction( tr("Line wrap"), Resource::loadPixmap( "linewrap" ), QString::null, 0, this, 0 );
145 m_wrap->addTo( m_console ); 135 m_wrap->addTo( m_console );
146 connect( m_wrap, SIGNAL( activated() ), SLOT( slotWrap() ) ); 136 connect( m_wrap, SIGNAL( activated() ), SLOT( slotWrap() ) );
147 137
148 /* 138 /*
149 * fullscreen 139 * fullscreen
150 */ 140 */
151 m_isFullscreen = false; 141 m_isFullscreen = false;
152 142
153 m_fullscreen = new QAction( tr("Full screen"), Resource::loadPixmap( "fullscreen" ) 143 m_fullscreen = new QAction( tr("Full screen"), Resource::loadPixmap( "fullscreen" )
154 , QString::null, 0, this, 0); 144 , QString::null, 0, this, 0);
155 m_fullscreen->addTo( m_console ); 145 m_fullscreen->addTo( m_console );
diff --git a/noncore/apps/opie-console/metafactory.cpp b/noncore/apps/opie-console/metafactory.cpp
index 24928e7..32e93ce 100644
--- a/noncore/apps/opie-console/metafactory.cpp
+++ b/noncore/apps/opie-console/metafactory.cpp
@@ -1,129 +1,128 @@
1#include <qpe/config.h>
2#include "metafactory.h" 1#include "metafactory.h"
3 2
4MetaFactory::MetaFactory() { 3MetaFactory::MetaFactory() {
5} 4}
6MetaFactory::~MetaFactory() { 5MetaFactory::~MetaFactory() {
7 6
8} 7}
9void MetaFactory::addConnectionWidgetFactory( const QCString& name, 8void MetaFactory::addConnectionWidgetFactory( const QCString& name,
10 const QString& str, 9 const QString& str,
11 configWidget wid) { 10 configWidget wid) {
12 m_strings.insert( str, name ); 11 m_strings.insert( str, name );
13 m_conFact.insert( str, wid ); 12 m_conFact.insert( str, wid );
14} 13}
15void MetaFactory::addTerminalWidgetFactory( const QCString& name, 14void MetaFactory::addTerminalWidgetFactory( const QCString& name,
16 const QString& str, 15 const QString& str,
17 configWidget wid ) { 16 configWidget wid ) {
18 m_strings.insert( str, name ); 17 m_strings.insert( str, name );
19 m_termFact.insert( str, wid ); 18 m_termFact.insert( str, wid );
20} 19}
21void MetaFactory::addKeyboardWidgetFactory( const QCString& name, 20void MetaFactory::addKeyboardWidgetFactory( const QCString& name,
22 const QString & str, 21 const QString & str,
23 configWidget wid) { 22 configWidget wid) {
24 m_strings.insert( str, name ); 23 m_strings.insert( str, name );
25 m_keyFact.insert( str, wid ); 24 m_keyFact.insert( str, wid );
26 25
27} 26}
28void MetaFactory::addIOLayerFactory( const QCString& name, 27void MetaFactory::addIOLayerFactory( const QCString& name,
29 const QString& str, 28 const QString& str,
30 iolayer lay) { 29 iolayer lay) {
31 m_strings.insert( str, name ); 30 m_strings.insert( str, name );
32 m_layerFact.insert( str, lay ); 31 m_layerFact.insert( str, lay );
33} 32}
34void MetaFactory::addFileTransferLayer( const QCString& name, 33void MetaFactory::addFileTransferLayer( const QCString& name,
35 const QString& str, 34 const QString& str,
36 filelayer lay) { 35 filelayer lay) {
37 m_strings.insert(str, name ); 36 m_strings.insert(str, name );
38 m_fileFact.insert( str, lay ); 37 m_fileFact.insert( str, lay );
39} 38}
40void MetaFactory::addReceiveLayer( const QCString& name, 39void MetaFactory::addReceiveLayer( const QCString& name,
41 const QString& str, 40 const QString& str,
42 receivelayer lay) { 41 receivelayer lay) {
43 m_strings.insert(str, name ); 42 m_strings.insert(str, name );
44 m_receiveFact.insert( str, lay ); 43 m_receiveFact.insert( str, lay );
45} 44}
46QStringList MetaFactory::ioLayers()const { 45QStringList MetaFactory::ioLayers()const {
47 QStringList list; 46 QStringList list;
48 QMap<QString, iolayer>::ConstIterator it; 47 QMap<QString, iolayer>::ConstIterator it;
49 for (it = m_layerFact.begin(); it != m_layerFact.end(); ++it ) { 48 for (it = m_layerFact.begin(); it != m_layerFact.end(); ++it ) {
50 list << it.key(); 49 list << it.key();
51 } 50 }
52 return list; 51 return list;
53} 52}
54QStringList MetaFactory::connectionWidgets()const { 53QStringList MetaFactory::connectionWidgets()const {
55 QStringList list; 54 QStringList list;
56 QMap<QString, configWidget>::ConstIterator it; 55 QMap<QString, configWidget>::ConstIterator it;
57 for ( it = m_conFact.begin(); it != m_conFact.end(); ++it ) { 56 for ( it = m_conFact.begin(); it != m_conFact.end(); ++it ) {
58 list << it.key(); 57 list << it.key();
59 } 58 }
60 return list; 59 return list;
61} 60}
62QStringList MetaFactory::terminalWidgets()const { 61QStringList MetaFactory::terminalWidgets()const {
63 QStringList list; 62 QStringList list;
64 QMap<QString, configWidget>::ConstIterator it; 63 QMap<QString, configWidget>::ConstIterator it;
65 for ( it = m_termFact.begin(); it != m_termFact.end(); ++it ) { 64 for ( it = m_termFact.begin(); it != m_termFact.end(); ++it ) {
66 list << it.key(); 65 list << it.key();
67 } 66 }
68 return list; 67 return list;
69} 68}
70QStringList MetaFactory::fileTransferLayers()const { 69QStringList MetaFactory::fileTransferLayers()const {
71 QStringList list; 70 QStringList list;
72 QMap<QString, filelayer>::ConstIterator it; 71 QMap<QString, filelayer>::ConstIterator it;
73 for ( it = m_fileFact.begin(); it != m_fileFact.end(); ++it ) { 72 for ( it = m_fileFact.begin(); it != m_fileFact.end(); ++it ) {
74 list << it.key(); 73 list << it.key();
75 } 74 }
76 return list; 75 return list;
77} 76}
78QStringList MetaFactory::receiveLayers()const { 77QStringList MetaFactory::receiveLayers()const {
79 QStringList list; 78 QStringList list;
80 QMap<QString, receivelayer>::ConstIterator it; 79 QMap<QString, receivelayer>::ConstIterator it;
81 for ( it = m_receiveFact.begin(); it != m_receiveFact.end(); ++it ) { 80 for ( it = m_receiveFact.begin(); it != m_receiveFact.end(); ++it ) {
82 list << it.key(); 81 list << it.key();
83 } 82 }
84 return list; 83 return list;
85} 84}
86 85
87IOLayer* MetaFactory::newIOLayer( const QString& str,const Profile& prof ) { 86IOLayer* MetaFactory::newIOLayer( const QString& str,const Profile& prof ) {
88 IOLayer* lay = 0l; 87 IOLayer* lay = 0l;
89 88
90 QMap<QString, iolayer>::Iterator it; 89 QMap<QString, iolayer>::Iterator it;
91 it = m_layerFact.find( str ); 90 it = m_layerFact.find( str );
92 if ( it != m_layerFact.end() ) { 91 if ( it != m_layerFact.end() ) {
93 lay = (*(it.data()))(prof); 92 lay = (*(it.data()))(prof);
94 /* 93 /*
95 iolayer laye = it.data(); 94 iolayer laye = it.data();
96 lay = (*laye )(conf);*/ 95 lay = (*laye )(conf);*/
97 } 96 }
98 97
99 return lay; 98 return lay;
100} 99}
101 100
102ProfileDialogWidget *MetaFactory::newConnectionPlugin ( const QString& str, QWidget *parent) { 101ProfileDialogWidget *MetaFactory::newConnectionPlugin ( const QString& str, QWidget *parent) {
103 ProfileDialogWidget* wid = 0l; 102 ProfileDialogWidget* wid = 0l;
104 103
105 QMap<QString, configWidget>::Iterator it; 104 QMap<QString, configWidget>::Iterator it;
106 it = m_conFact.find( str ); 105 it = m_conFact.find( str );
107 if ( it != m_conFact.end() ) { 106 if ( it != m_conFact.end() ) {
108 wid = (*(it.data() ) )(str,parent); 107 wid = (*(it.data() ) )(str,parent);
109 } 108 }
110 return wid; 109 return wid;
111} 110}
112ProfileDialogWidget *MetaFactory::newTerminalPlugin( const QString& str, QWidget *parent) { 111ProfileDialogWidget *MetaFactory::newTerminalPlugin( const QString& str, QWidget *parent) {
113 if (str.isEmpty() ) 112 if (str.isEmpty() )
114 return 0l; 113 return 0l;
115 ProfileDialogWidget* wid = 0l; 114 ProfileDialogWidget* wid = 0l;
116 115
117 QMap<QString, configWidget>::Iterator it; 116 QMap<QString, configWidget>::Iterator it;
118 it = m_termFact.find( str ); 117 it = m_termFact.find( str );
119 if ( it != m_termFact.end() ) { 118 if ( it != m_termFact.end() ) {
120 wid = (*(it.data() ) )(str,parent); 119 wid = (*(it.data() ) )(str,parent);
121 } 120 }
122 return wid; 121 return wid;
123} 122}
124ProfileDialogWidget *MetaFactory::newKeyboardPlugin( const QString& str, QWidget *parent) { 123ProfileDialogWidget *MetaFactory::newKeyboardPlugin( const QString& str, QWidget *parent) {
125 124
126 if (str.isEmpty() ) 125 if (str.isEmpty() )
127 return 0l; 126 return 0l;
128 ProfileDialogWidget* wid = 0l; 127 ProfileDialogWidget* wid = 0l;
129 128
diff --git a/noncore/apps/opie-console/modemconfigwidget.cpp b/noncore/apps/opie-console/modemconfigwidget.cpp
index f7fb6f3..e552990 100644
--- a/noncore/apps/opie-console/modemconfigwidget.cpp
+++ b/noncore/apps/opie-console/modemconfigwidget.cpp
@@ -1,135 +1,133 @@
1#include <qlabel.h> 1#include <qlabel.h>
2#include <qlayout.h> 2#include <qlayout.h>
3#include <qcombobox.h> 3#include <qcombobox.h>
4#include <qlineedit.h>
5#include <qpushbutton.h> 4#include <qpushbutton.h>
6#include <qhbox.h> 5#include <qhbox.h>
7#include <qregexp.h>
8 6
9#include "modemconfigwidget.h" 7#include "modemconfigwidget.h"
10#include "dialdialog.h" 8#include "dialdialog.h"
11 9
12namespace { 10namespace {
13 void setCurrent( const QString& str, QComboBox* bo ) { 11 void setCurrent( const QString& str, QComboBox* bo ) {
14 uint b = bo->count(); 12 uint b = bo->count();
15 for (int i = 0; i < bo->count(); i++ ) { 13 for (int i = 0; i < bo->count(); i++ ) {
16 if ( bo->text(i) == str ) { 14 if ( bo->text(i) == str ) {
17 bo->setCurrentItem( i ); 15 bo->setCurrentItem( i );
18 return; 16 return;
19 } 17 }
20 } 18 }
21 bo->insertItem( str ); 19 bo->insertItem( str );
22 bo->setCurrentItem( b ); 20 bo->setCurrentItem( b );
23 } 21 }
24} 22}
25 23
26ModemConfigWidget::ModemConfigWidget( const QString& name, QWidget* parent, 24ModemConfigWidget::ModemConfigWidget( const QString& name, QWidget* parent,
27 const char* na ) 25 const char* na )
28 : ProfileDialogConnectionWidget( name, parent, na ) { 26 : ProfileDialogConnectionWidget( name, parent, na ) {
29 27
30 m_lay = new QVBoxLayout( this ); 28 m_lay = new QVBoxLayout( this );
31 m_device = new QLabel(tr( "Modem is attached to:" ), this ); 29 m_device = new QLabel(tr( "Modem is attached to:" ), this );
32 m_deviceCmb = new QComboBox(this ); 30 m_deviceCmb = new QComboBox(this );
33 m_deviceCmb->setEditable( TRUE ); 31 m_deviceCmb->setEditable( TRUE );
34 32
35 QLabel* telLabel = new QLabel( this ); 33 QLabel* telLabel = new QLabel( this );
36 telLabel->setText( tr( "Enter telefon number here:" ) ); 34 telLabel->setText( tr( "Enter telefon number here:" ) );
37 QHBox *buttonBox = new QHBox( this ); 35 QHBox *buttonBox = new QHBox( this );
38 m_telNumber = new QLineEdit( buttonBox ); 36 m_telNumber = new QLineEdit( buttonBox );
39 QPushButton *atButton = new QPushButton( buttonBox ); 37 QPushButton *atButton = new QPushButton( buttonBox );
40 atButton->setText( tr( "AT commands" ) ); 38 atButton->setText( tr( "AT commands" ) );
41 connect( atButton, SIGNAL( clicked() ), this, SLOT( slotAT() ) ); 39 connect( atButton, SIGNAL( clicked() ), this, SLOT( slotAT() ) );
42 40
43 QPushButton *dialButton = new QPushButton( buttonBox ); 41 QPushButton *dialButton = new QPushButton( buttonBox );
44 dialButton->setText( tr( "Enter number" ) ); 42 dialButton->setText( tr( "Enter number" ) );
45 connect( dialButton, SIGNAL( clicked() ), this, SLOT( slotDial() ) ); 43 connect( dialButton, SIGNAL( clicked() ), this, SLOT( slotDial() ) );
46 44
47 m_base = new IOLayerBase( this, "base" ); 45 m_base = new IOLayerBase( this, "base" );
48 46
49 m_lay->addWidget( m_device ); 47 m_lay->addWidget( m_device );
50 m_lay->addWidget( m_deviceCmb ); 48 m_lay->addWidget( m_deviceCmb );
51 m_lay->addWidget( telLabel ); 49 m_lay->addWidget( telLabel );
52 m_lay->addWidget( buttonBox ); 50 m_lay->addWidget( buttonBox );
53 m_lay->addWidget( m_base ); 51 m_lay->addWidget( m_base );
54 m_lay->addStretch( 0 ); 52 m_lay->addStretch( 0 );
55 53
56 m_deviceCmb->insertItem( "/dev/ttyS0" ); 54 m_deviceCmb->insertItem( "/dev/ttyS0" );
57 m_deviceCmb->insertItem( "/dev/ttyS1" ); 55 m_deviceCmb->insertItem( "/dev/ttyS1" );
58 m_deviceCmb->insertItem( "/dev/ttyS2" ); 56 m_deviceCmb->insertItem( "/dev/ttyS2" );
59 57
60 atConf = new ATConfigDialog( this, "ATConfig", true ); 58 atConf = new ATConfigDialog( this, "ATConfig", true );
61} 59}
62 60
63ModemConfigWidget::~ModemConfigWidget() { 61ModemConfigWidget::~ModemConfigWidget() {
64 62
65} 63}
66void ModemConfigWidget::load( const Profile& prof ) { 64void ModemConfigWidget::load( const Profile& prof ) {
67 65
68 int rad_flow = prof.readNumEntry( "Flow" ); 66 int rad_flow = prof.readNumEntry( "Flow" );
69 int rad_parity = prof.readNumEntry( "Parity" ); 67 int rad_parity = prof.readNumEntry( "Parity" );
70 int speed = prof.readNumEntry( "Speed" ); 68 int speed = prof.readNumEntry( "Speed" );
71 int dbits = prof.readNumEntry("DataBits"); 69 int dbits = prof.readNumEntry("DataBits");
72 int sbits = prof.readNumEntry("StopBits"); 70 int sbits = prof.readNumEntry("StopBits");
73 QString number = prof.readEntry( "Number" ); 71 QString number = prof.readEntry( "Number" );
74 72
75 if ( !number.isEmpty() ) { 73 if ( !number.isEmpty() ) {
76 m_telNumber->setText( number ); 74 m_telNumber->setText( number );
77 } 75 }
78 76
79 if ( rad_flow == 1 ) { 77 if ( rad_flow == 1 ) {
80 m_base->setFlow( IOLayerBase::Hardware ); 78 m_base->setFlow( IOLayerBase::Hardware );
81 } else if (rad_flow == 2) { 79 } else if (rad_flow == 2) {
82 m_base->setFlow( IOLayerBase::Software ); 80 m_base->setFlow( IOLayerBase::Software );
83 } else if (rad_flow == 0) { 81 } else if (rad_flow == 0) {
84 m_base->setFlow( IOLayerBase::None ); 82 m_base->setFlow( IOLayerBase::None );
85 } 83 }
86 84
87 85
88 if ( rad_parity == 1 ) { 86 if ( rad_parity == 1 ) {
89 m_base->setParity( IOLayerBase::Even ); 87 m_base->setParity( IOLayerBase::Even );
90 } else if ( rad_parity == 2 ){ 88 } else if ( rad_parity == 2 ){
91 m_base->setParity( IOLayerBase::Odd ); 89 m_base->setParity( IOLayerBase::Odd );
92 } else { 90 } else {
93 m_base->setParity( IOLayerBase::NonePar ); 91 m_base->setParity( IOLayerBase::NonePar );
94 } 92 }
95 93
96 switch( speed ) { 94 switch( speed ) {
97 case 115200: 95 case 115200:
98 m_base->setSpeed( IOLayerBase::Baud_115200 ); 96 m_base->setSpeed( IOLayerBase::Baud_115200 );
99 break; 97 break;
100 case 57600: 98 case 57600:
101 m_base->setSpeed( IOLayerBase::Baud_57600 ); 99 m_base->setSpeed( IOLayerBase::Baud_57600 );
102 break; 100 break;
103 case 38400: 101 case 38400:
104 m_base->setSpeed( IOLayerBase::Baud_38400 ); 102 m_base->setSpeed( IOLayerBase::Baud_38400 );
105 break; 103 break;
106 case 19200: 104 case 19200:
107 m_base->setSpeed( IOLayerBase::Baud_19200 ); 105 m_base->setSpeed( IOLayerBase::Baud_19200 );
108 break; 106 break;
109 case 9600: 107 case 9600:
110 default: 108 default:
111 m_base->setSpeed( IOLayerBase::Baud_9600 ); 109 m_base->setSpeed( IOLayerBase::Baud_9600 );
112 break; 110 break;
113 } 111 }
114 112
115 113
116 if ( dbits == 5) { 114 if ( dbits == 5) {
117 m_base->setData( IOLayerBase::Data_Five ); 115 m_base->setData( IOLayerBase::Data_Five );
118 } else if (rad_flow == 6) { 116 } else if (rad_flow == 6) {
119 m_base->setData( IOLayerBase::Data_Six ); 117 m_base->setData( IOLayerBase::Data_Six );
120 } else if (rad_flow == 7) { 118 } else if (rad_flow == 7) {
121 m_base->setData( IOLayerBase::Data_Seven ); 119 m_base->setData( IOLayerBase::Data_Seven );
122 } else { 120 } else {
123 m_base->setData( IOLayerBase::Data_Eight ); 121 m_base->setData( IOLayerBase::Data_Eight );
124 } 122 }
125 123
126 if ( sbits == 2) { 124 if ( sbits == 2) {
127 m_base->setStop( IOLayerBase::Stop_Two ); 125 m_base->setStop( IOLayerBase::Stop_Two );
128 } else if ( sbits == 15 ) { 126 } else if ( sbits == 15 ) {
129 m_base->setStop( IOLayerBase::Stop_OnePointFive ); 127 m_base->setStop( IOLayerBase::Stop_OnePointFive );
130 } else { 128 } else {
131 m_base->setStop( IOLayerBase::Stop_One ); 129 m_base->setStop( IOLayerBase::Stop_One );
132 } 130 }
133 131
134 132
135 atConf->readConfig( prof ); 133 atConf->readConfig( prof );
diff --git a/noncore/apps/opie-console/profileeditordialog.cpp b/noncore/apps/opie-console/profileeditordialog.cpp
index e2501a6..979e89d 100644
--- a/noncore/apps/opie-console/profileeditordialog.cpp
+++ b/noncore/apps/opie-console/profileeditordialog.cpp
@@ -1,133 +1,132 @@
1#include <qlayout.h> 1#include <qlayout.h>
2#include <qlineedit.h> 2#include <qlineedit.h>
3#include <qlabel.h> 3#include <qlabel.h>
4#include <qmessagebox.h> 4#include <qmessagebox.h>
5#include <qstringlist.h>
6#include <qcombobox.h> 5#include <qcombobox.h>
7#include <qcheckbox.h> 6#include <qcheckbox.h>
8#include <qscrollview.h> 7#include <qscrollview.h>
9 8
10#include "metafactory.h" 9#include "metafactory.h"
11#include "profileeditordialog.h" 10#include "profileeditordialog.h"
12 11
13namespace { 12namespace {
14 void setCurrent( const QString& str, QComboBox* bo ) { 13 void setCurrent( const QString& str, QComboBox* bo ) {
15 for (int i = 0; i < bo->count(); i++ ) { 14 for (int i = 0; i < bo->count(); i++ ) {
16 if ( bo->text(i) == str ) { 15 if ( bo->text(i) == str ) {
17 bo->setCurrentItem( i ); 16 bo->setCurrentItem( i );
18 } 17 }
19 } 18 }
20 }; 19 };
21} 20}
22 21
23ProfileEditorDialog::ProfileEditorDialog( MetaFactory* fact, 22ProfileEditorDialog::ProfileEditorDialog( MetaFactory* fact,
24 const Profile& prof ) 23 const Profile& prof )
25 : QDialog(0, 0, TRUE), m_fact( fact ), m_prof( prof ) 24 : QDialog(0, 0, TRUE), m_fact( fact ), m_prof( prof )
26{ 25{
27 initUI(); 26 initUI();
28 27
29 // Apply current profile 28 // Apply current profile
30 // plugin_plugin->load(profile); 29 // plugin_plugin->load(profile);
31 // ... (reset profile name line edit etc.) 30 // ... (reset profile name line edit etc.)
32} 31}
33 32
34ProfileEditorDialog::ProfileEditorDialog( MetaFactory* fact ) 33ProfileEditorDialog::ProfileEditorDialog( MetaFactory* fact )
35 : QDialog(0, 0, TRUE), m_fact( fact ) 34 : QDialog(0, 0, TRUE), m_fact( fact )
36{ 35{
37 // Default profile 36 // Default profile
38 m_prof = Profile(tr("New Profile"), "serial", "default", Profile::Black, Profile::White, Profile::VT102); 37 m_prof = Profile(tr("New Profile"), "serial", "default", Profile::Black, Profile::White, Profile::VT102);
39 38
40 initUI(); 39 initUI();
41 40
42 // Apply current profile 41 // Apply current profile
43 // plugin_plugin->load(profile); 42 // plugin_plugin->load(profile);
44} 43}
45 44
46Profile ProfileEditorDialog::profile() const 45Profile ProfileEditorDialog::profile() const
47{ 46{
48 return m_prof; 47 return m_prof;
49} 48}
50 49
51void ProfileEditorDialog::initUI() 50void ProfileEditorDialog::initUI()
52{ 51{
53 m_con = m_term = m_key = 0l; 52 m_con = m_term = m_key = 0l;
54 53
55 54
56 QVBoxLayout *mainLayout = new QVBoxLayout( this ); 55 QVBoxLayout *mainLayout = new QVBoxLayout( this );
57 tabWidget = new OTabWidget( this ); 56 tabWidget = new OTabWidget( this );
58 tabWidget->setTabStyle(OTabWidget::TextTab); 57 tabWidget->setTabStyle(OTabWidget::TextTab);
59 mainLayout->add(tabWidget); 58 mainLayout->add(tabWidget);
60 59
61 /* base tabs */ 60 /* base tabs */
62 tabprof = new QWidget(this); 61 tabprof = new QWidget(this);
63 m_tabTerm = new QWidget(this); 62 m_tabTerm = new QWidget(this);
64 m_tabCon = new QWidget(this); 63 m_tabCon = new QWidget(this);
65 m_tabKey = new QWidget(this); 64 m_tabKey = new QWidget(this);
66 65
67 m_svCon = new QScrollView( m_tabCon ); 66 m_svCon = new QScrollView( m_tabCon );
68 m_svCon->setResizePolicy( QScrollView::AutoOneFit ); 67 m_svCon->setResizePolicy( QScrollView::AutoOneFit );
69 //m_svCon->setHScrollBarMode( QScrollView::AlwaysOff ); 68 //m_svCon->setHScrollBarMode( QScrollView::AlwaysOff );
70 m_svCon->setFrameShape( QFrame::NoFrame ); 69 m_svCon->setFrameShape( QFrame::NoFrame );
71 m_svTerm = new QScrollView( m_tabTerm ); 70 m_svTerm = new QScrollView( m_tabTerm );
72 m_svTerm->setResizePolicy( QScrollView::AutoOneFit ); 71 m_svTerm->setResizePolicy( QScrollView::AutoOneFit );
73 //m_svTerm->setHScrollBarMode( QScrollView::AlwaysOff ); 72 //m_svTerm->setHScrollBarMode( QScrollView::AlwaysOff );
74 m_svTerm->setFrameShape( QFrame::NoFrame ); 73 m_svTerm->setFrameShape( QFrame::NoFrame );
75 74
76 /* base layout for tabs */ 75 /* base layout for tabs */
77 m_layCon = new QHBoxLayout( m_tabCon , 2 ); 76 m_layCon = new QHBoxLayout( m_tabCon , 2 );
78 m_layTerm = new QHBoxLayout( m_tabTerm, 2 ); 77 m_layTerm = new QHBoxLayout( m_tabTerm, 2 );
79 m_layKey = new QHBoxLayout( m_tabKey, 2 ); 78 m_layKey = new QHBoxLayout( m_tabKey, 2 );
80 79
81 m_layCon->addWidget( m_svCon ); 80 m_layCon->addWidget( m_svCon );
82 m_layTerm->addWidget( m_svTerm ); 81 m_layTerm->addWidget( m_svTerm );
83 82
84 // profile tab 83 // profile tab
85 84
86 QLabel *name = new QLabel(QObject::tr("Profile name"), tabprof); 85 QLabel *name = new QLabel(QObject::tr("Profile name"), tabprof);
87 m_name = new QLineEdit(tabprof); 86 m_name = new QLineEdit(tabprof);
88 QLabel *con = new QLabel(tr("Connection"), tabprof ); 87 QLabel *con = new QLabel(tr("Connection"), tabprof );
89 QLabel *term = new QLabel(tr("Terminal"), tabprof ); 88 QLabel *term = new QLabel(tr("Terminal"), tabprof );
90 m_conCmb = new QComboBox( tabprof ); 89 m_conCmb = new QComboBox( tabprof );
91 m_termCmb = new QComboBox( tabprof ); 90 m_termCmb = new QComboBox( tabprof );
92 m_autoConnect = new QCheckBox(tr("Auto connect after load"), tabprof); 91 m_autoConnect = new QCheckBox(tr("Auto connect after load"), tabprof);
93 92
94 // layouting 93 // layouting
95 QVBoxLayout *vbox3 = new QVBoxLayout(tabprof, 2); 94 QVBoxLayout *vbox3 = new QVBoxLayout(tabprof, 2);
96 vbox3->add(name); 95 vbox3->add(name);
97 vbox3->add(m_name); 96 vbox3->add(m_name);
98 vbox3->add(con ); 97 vbox3->add(con );
99 vbox3->add(m_conCmb ); 98 vbox3->add(m_conCmb );
100 vbox3->add(term ); 99 vbox3->add(term );
101 vbox3->add(m_termCmb ); 100 vbox3->add(m_termCmb );
102 vbox3->add(m_autoConnect); 101 vbox3->add(m_autoConnect);
103 vbox3->addStretch(1); 102 vbox3->addStretch(1);
104 103
105 m_showconntab = 0; 104 m_showconntab = 0;
106 tabWidget->addTab(tabprof, "", QObject::tr("Profile")); 105 tabWidget->addTab(tabprof, "", QObject::tr("Profile"));
107 tabWidget->addTab(m_tabCon, "", QObject::tr("Connection")); 106 tabWidget->addTab(m_tabCon, "", QObject::tr("Connection"));
108 tabWidget->addTab(m_tabTerm, "", QObject::tr("Terminal")); 107 tabWidget->addTab(m_tabTerm, "", QObject::tr("Terminal"));
109 tabWidget->addTab(m_tabKey, "", QObject::tr("Special Keys")); 108 tabWidget->addTab(m_tabKey, "", QObject::tr("Special Keys"));
110 tabWidget->setCurrentTab( tabprof ); 109 tabWidget->setCurrentTab( tabprof );
111 110
112 111
113 // fill the comboboxes 112 // fill the comboboxes
114 QStringList list = m_fact->connectionWidgets(); 113 QStringList list = m_fact->connectionWidgets();
115 QStringList::Iterator it; 114 QStringList::Iterator it;
116 for (it =list.begin(); it != list.end(); ++it ) { 115 for (it =list.begin(); it != list.end(); ++it ) {
117 m_conCmb->insertItem( (*it) ); 116 m_conCmb->insertItem( (*it) );
118 } 117 }
119 list = m_fact->terminalWidgets(); 118 list = m_fact->terminalWidgets();
120 for (it =list.begin(); it != list.end(); ++it ) { 119 for (it =list.begin(); it != list.end(); ++it ) {
121 m_termCmb->insertItem( (*it) ); 120 m_termCmb->insertItem( (*it) );
122 } 121 }
123 122
124 // load profile values 123 // load profile values
125 m_name->setText(m_prof.name()); 124 m_name->setText(m_prof.name());
126 slotKeyActivated( "Default Keyboard" ); 125 slotKeyActivated( "Default Keyboard" );
127 setCurrent( m_fact->external(m_prof.ioLayerName() ), m_conCmb ); 126 setCurrent( m_fact->external(m_prof.ioLayerName() ), m_conCmb );
128 setCurrent( m_fact->external(m_prof.terminalName() ), m_termCmb ); 127 setCurrent( m_fact->external(m_prof.terminalName() ), m_termCmb );
129 slotConActivated( m_fact->external(m_prof.ioLayerName() ) ); 128 slotConActivated( m_fact->external(m_prof.ioLayerName() ) );
130 slotTermActivated( m_fact->external(m_prof.terminalName() ) ); 129 slotTermActivated( m_fact->external(m_prof.terminalName() ) );
131 m_autoConnect->setChecked(m_prof.autoConnect()); 130 m_autoConnect->setChecked(m_prof.autoConnect());
132 131
133 132
diff --git a/noncore/apps/opie-console/profilemanager.cpp b/noncore/apps/opie-console/profilemanager.cpp
index cad2567..71188d1 100644
--- a/noncore/apps/opie-console/profilemanager.cpp
+++ b/noncore/apps/opie-console/profilemanager.cpp
@@ -1,141 +1,136 @@
1#include <stdio.h> 1#include <stdio.h>
2#include <stdlib.h> 2#include <stdlib.h>
3 3
4#include <qfile.h> 4#include <qfile.h>
5#include <qhbox.h> 5#include <qhbox.h>
6#include <qlayout.h>
7#include <qwidgetstack.h>
8 6
9#include <qpe/config.h>
10 7
11#include "emulation_handler.h" 8#include "emulation_handler.h"
12#include "widget_layer.h"
13#include "emulation_widget.h"
14#include "metafactory.h" 9#include "metafactory.h"
15#include "profileconfig.h" 10#include "profileconfig.h"
16#include "profilemanager.h" 11#include "profilemanager.h"
17 12
18ProfileManager::ProfileManager( MetaFactory* fact ) 13ProfileManager::ProfileManager( MetaFactory* fact )
19 : m_fact( fact ) 14 : m_fact( fact )
20{ 15{
21 16
22} 17}
23ProfileManager::~ProfileManager() { 18ProfileManager::~ProfileManager() {
24 19
25} 20}
26void ProfileManager::load() { 21void ProfileManager::load() {
27 m_list.clear(); 22 m_list.clear();
28 ProfileConfig conf("opie-console-profiles"); 23 ProfileConfig conf("opie-console-profiles");
29 QStringList groups = conf.groups(); 24 QStringList groups = conf.groups();
30 QStringList::Iterator it; 25 QStringList::Iterator it;
31 26
32 /* 27 /*
33 * for each profile 28 * for each profile
34 */ 29 */
35 for ( it = groups.begin(); it != groups.end(); ++it ) { 30 for ( it = groups.begin(); it != groups.end(); ++it ) {
36 conf.setGroup( (*it) ); 31 conf.setGroup( (*it) );
37 Profile prof; 32 Profile prof;
38 prof.setName( conf.readEntry("name") ); 33 prof.setName( conf.readEntry("name") );
39 prof.setIOLayer( conf.readEntry("iolayer").utf8() ); 34 prof.setIOLayer( conf.readEntry("iolayer").utf8() );
40 prof.setTerminalName( conf.readEntry("term").utf8() ); 35 prof.setTerminalName( conf.readEntry("term").utf8() );
41 prof.setAutoConnect( conf.readBoolEntry("autoConnect") ); 36 prof.setAutoConnect( conf.readBoolEntry("autoConnect") );
42 prof.setBackground( conf.readNumEntry("back") ); 37 prof.setBackground( conf.readNumEntry("back") );
43 prof.setForeground( conf.readNumEntry("fore") ); 38 prof.setForeground( conf.readNumEntry("fore") );
44 prof.setTerminal( conf.readNumEntry("terminal") ); 39 prof.setTerminal( conf.readNumEntry("terminal") );
45 40
46 // THIS is evil because all data get's reset 41 // THIS is evil because all data get's reset
47 prof.setConf( conf.items( (*it) ) ); 42 prof.setConf( conf.items( (*it) ) );
48 43
49 /* now add it */ 44 /* now add it */
50 m_list.append( prof ); 45 m_list.append( prof );
51 } 46 }
52 47
53} 48}
54void ProfileManager::clear() { 49void ProfileManager::clear() {
55 m_list.clear(); 50 m_list.clear();
56} 51}
57Profile::ValueList ProfileManager::all()const { 52Profile::ValueList ProfileManager::all()const {
58 return m_list; 53 return m_list;
59} 54}
60/* 55/*
61 * Our goal is to create a Session 56 * Our goal is to create a Session
62 * We will load the the IOLayer and EmulationLayer 57 * We will load the the IOLayer and EmulationLayer
63 * from the factory 58 * from the factory
64 * we will generate a QWidgetStack 59 * we will generate a QWidgetStack
65 * add a dummy widget with layout 60 * add a dummy widget with layout
66 * add "Widget" to the layout 61 * add "Widget" to the layout
67 * add the dummy to the stack 62 * add the dummy to the stack
68 * raise the dummy 63 * raise the dummy
69 * call session->connect(= 64 * call session->connect(=
70 * this way we only need to reparent 65 * this way we only need to reparent
71 * in TabWidget 66 * in TabWidget
72 */ 67 */
73Session* ProfileManager::fromProfile( const Profile& prof, QWidget* parent) { 68Session* ProfileManager::fromProfile( const Profile& prof, QWidget* parent) {
74/* TEST PROFILE!!! 69/* TEST PROFILE!!!
75 Profile prof; 70 Profile prof;
76 QString str = "/dev/ttyS0"; 71 QString str = "/dev/ttyS0";
77 prof.writeEntry("Device",str ); 72 prof.writeEntry("Device",str );
78 prof.writeEntry("Baud", 115200 ); 73 prof.writeEntry("Baud", 115200 );
79 prof.setIOLayer("serial"); 74 prof.setIOLayer("serial");
80 prof.setName( "test"); 75 prof.setName( "test");
81*/ 76*/
82 Session* session = new Session(); 77 Session* session = new Session();
83 session->setName( prof.name() ); 78 session->setName( prof.name() );
84 /* translate the internal name to the external */ 79 /* translate the internal name to the external */
85 session->setIOLayer(m_fact->newIOLayer( m_fact->external(prof.ioLayerName()) , 80 session->setIOLayer(m_fact->newIOLayer( m_fact->external(prof.ioLayerName()) ,
86 prof) ); 81 prof) );
87 82
88 QWidgetStack *stack = new QWidgetStack( parent ); 83 QWidgetStack *stack = new QWidgetStack( parent );
89 session->setWidgetStack( stack ); 84 session->setWidgetStack( stack );
90 QWidget* dummy = new QHBox( stack ); 85 QWidget* dummy = new QHBox( stack );
91 stack->raiseWidget( dummy ); 86 stack->raiseWidget( dummy );
92 87
93 EmulationHandler* handler = new EmulationHandler(prof,dummy ); 88 EmulationHandler* handler = new EmulationHandler(prof,dummy );
94 session->setEmulationHandler( handler ); 89 session->setEmulationHandler( handler );
95 session->connect(); 90 session->connect();
96 session->setProfile( prof ); 91 session->setProfile( prof );
97 92
98 return session; 93 return session;
99} 94}
100void ProfileManager::save( ) { 95void ProfileManager::save( ) {
101 QFile::remove( (QString(getenv("HOME") )+ "/Settings/opie-console-profiles.conf" ) ); 96 QFile::remove( (QString(getenv("HOME") )+ "/Settings/opie-console-profiles.conf" ) );
102 ProfileConfig conf("opie-console-profiles"); 97 ProfileConfig conf("opie-console-profiles");
103 Profile::ValueList::Iterator it2; 98 Profile::ValueList::Iterator it2;
104 for (it2 = m_list.begin(); it2 != m_list.end(); ++it2 ) { 99 for (it2 = m_list.begin(); it2 != m_list.end(); ++it2 ) {
105 conf.setGroup( (*it2).name() ); 100 conf.setGroup( (*it2).name() );
106 101
107 /* now the config stuff */ 102 /* now the config stuff */
108 QMap<QString, QString> map = (*it2).conf(); 103 QMap<QString, QString> map = (*it2).conf();
109 QMap<QString, QString>::Iterator confIt; 104 QMap<QString, QString>::Iterator confIt;
110 for ( confIt = map.begin(); confIt != map.end(); ++confIt ) { 105 for ( confIt = map.begin(); confIt != map.end(); ++confIt ) {
111 conf.writeEntry( confIt.key(), confIt.data() ); 106 conf.writeEntry( confIt.key(), confIt.data() );
112 } 107 }
113 108
114 conf.writeEntry( "name", (*it2).name() ); 109 conf.writeEntry( "name", (*it2).name() );
115 QString str = QString::fromUtf8( (*it2).ioLayerName() ); 110 QString str = QString::fromUtf8( (*it2).ioLayerName() );
116 111
117 conf.writeEntry( "iolayer", str ); 112 conf.writeEntry( "iolayer", str );
118 conf.writeEntry( "term", QString::fromUtf8( (*it2).terminalName() ) ); 113 conf.writeEntry( "term", QString::fromUtf8( (*it2).terminalName() ) );
119 conf.writeEntry( "autoConnect", (*it2).autoConnect()); 114 conf.writeEntry( "autoConnect", (*it2).autoConnect());
120 conf.writeEntry( "back", (*it2).background() ); 115 conf.writeEntry( "back", (*it2).background() );
121 conf.writeEntry( "fore", (*it2).foreground() ); 116 conf.writeEntry( "fore", (*it2).foreground() );
122 conf.writeEntry( "terminal", (*it2).terminal() ); 117 conf.writeEntry( "terminal", (*it2).terminal() );
123 } 118 }
124} 119}
125void ProfileManager::add( const Profile& prof) { 120void ProfileManager::add( const Profile& prof) {
126 m_list.append( prof ); 121 m_list.append( prof );
127} 122}
128void ProfileManager::setProfiles( const Profile::ValueList& list ) { 123void ProfileManager::setProfiles( const Profile::ValueList& list ) {
129 m_list = list; 124 m_list = list;
130}; 125};
131Profile ProfileManager::profile( const QString& name )const { 126Profile ProfileManager::profile( const QString& name )const {
132 Profile prof; 127 Profile prof;
133 Profile::ValueList::ConstIterator it; 128 Profile::ValueList::ConstIterator it;
134 for ( it = m_list.begin(); it != m_list.end(); ++it ) { 129 for ( it = m_list.begin(); it != m_list.end(); ++it ) {
135 if ( name == (*it).name() ) { 130 if ( name == (*it).name() ) {
136 prof = (*it); 131 prof = (*it);
137 break; 132 break;
138 } 133 }
139 } 134 }
140 return prof; 135 return prof;
141} 136}
diff --git a/noncore/apps/opie-console/receive_layer.cpp b/noncore/apps/opie-console/receive_layer.cpp
index bbde339..b255452 100644
--- a/noncore/apps/opie-console/receive_layer.cpp
+++ b/noncore/apps/opie-console/receive_layer.cpp
@@ -1,34 +1,31 @@
1#include <unistd.h> 1#include <unistd.h>
2 2
3#include <qdir.h> 3#include <qdir.h>
4#include <qstring.h>
5#include <qfile.h>
6 4
7#include "io_layer.h"
8#include "receive_layer.h" 5#include "receive_layer.h"
9 6
10ReceiveLayer::ReceiveLayer( IOLayer* lay, const QString& startDir ) 7ReceiveLayer::ReceiveLayer( IOLayer* lay, const QString& startDir )
11 : QObject(), m_curDir( startDir ), m_layer(lay ) 8 : QObject(), m_curDir( startDir ), m_layer(lay )
12{ 9{
13 10
14} 11}
15ReceiveLayer::~ReceiveLayer() { 12ReceiveLayer::~ReceiveLayer() {
16 13
17} 14}
18IOLayer* ReceiveLayer::layer() { 15IOLayer* ReceiveLayer::layer() {
19 return m_layer; 16 return m_layer;
20} 17}
21QString ReceiveLayer::currentDir()const{ 18QString ReceiveLayer::currentDir()const{
22 if (m_curDir.isEmpty() ) 19 if (m_curDir.isEmpty() )
23 return QDir::currentDirPath(); 20 return QDir::currentDirPath();
24 return m_curDir; 21 return m_curDir;
25} 22}
26void ReceiveLayer::changeDir( const QString& str) { 23void ReceiveLayer::changeDir( const QString& str) {
27 ::chdir( str.latin1() ); 24 ::chdir( str.latin1() );
28} 25}
29void ReceiveLayer::receive( const QString& dir, Mode, Features ) { 26void ReceiveLayer::receive( const QString& dir, Mode, Features ) {
30 receive( dir ); 27 receive( dir );
31} 28}
32void ReceiveLayer::cancel() { 29void ReceiveLayer::cancel() {
33 30
34} 31}
diff --git a/noncore/apps/opie-console/script.cpp b/noncore/apps/opie-console/script.cpp
index e6e9d6d..faea412 100644
--- a/noncore/apps/opie-console/script.cpp
+++ b/noncore/apps/opie-console/script.cpp
@@ -1,30 +1,29 @@
1#include <qfile.h> 1#include <qfile.h>
2#include <qtextstream.h>
3#include "script.h" 2#include "script.h"
4 3
5Script::Script() { 4Script::Script() {
6} 5}
7 6
8Script::Script(const QString fileName) { 7Script::Script(const QString fileName) {
9 QFile file(fileName); 8 QFile file(fileName);
10 file.open(IO_ReadOnly ); 9 file.open(IO_ReadOnly );
11 m_script = file.readAll(); 10 m_script = file.readAll();
12} 11}
13 12
14void Script::saveTo(const QString fileName) const { 13void Script::saveTo(const QString fileName) const {
15 QFile file(fileName); 14 QFile file(fileName);
16 file.open(IO_WriteOnly); 15 file.open(IO_WriteOnly);
17 file.writeBlock(m_script); 16 file.writeBlock(m_script);
18 file.close(); 17 file.close();
19} 18}
20 19
21 20
22void Script::append(const QByteArray &data) { 21void Script::append(const QByteArray &data) {
23 int size = m_script.size(); 22 int size = m_script.size();
24 m_script.resize(size + data.size()); 23 m_script.resize(size + data.size());
25 memcpy(m_script.data() + size, data.data(), data.size()); 24 memcpy(m_script.data() + size, data.data(), data.size());
26} 25}
27 26
28QByteArray Script::script() const { 27QByteArray Script::script() const {
29 return m_script; 28 return m_script;
30} 29}
diff --git a/noncore/apps/opie-console/session.cpp b/noncore/apps/opie-console/session.cpp
index 4f52584..1034ede 100644
--- a/noncore/apps/opie-console/session.cpp
+++ b/noncore/apps/opie-console/session.cpp
@@ -1,117 +1,115 @@
1 1
2 2
3#include "profile.h"
4#include "io_layer.h"
5#include "file_layer.h" 3#include "file_layer.h"
6#include "emulation_handler.h" 4#include "emulation_handler.h"
7#include "session.h" 5#include "session.h"
8 6
9 7
10Session::Session() { 8Session::Session() {
11 m_widget = 0l; 9 m_widget = 0l;
12 m_layer = 0l; 10 m_layer = 0l;
13 m_emu = 0l; 11 m_emu = 0l;
14 m_transfer = 0l; 12 m_transfer = 0l;
15} 13}
16Session::Session( const QString& na, QWidgetStack* widget, IOLayer* lay) 14Session::Session( const QString& na, QWidgetStack* widget, IOLayer* lay)
17 : m_name( na ), m_widget( widget ), m_layer( lay ) 15 : m_name( na ), m_widget( widget ), m_layer( lay )
18{ 16{
19// m_widLay = 0l; 17// m_widLay = 0l;
20// m_emLay = 0l; 18// m_emLay = 0l;
21 m_emu = 0l; 19 m_emu = 0l;
22} 20}
23Session::~Session() { 21Session::~Session() {
24 delete m_layer; 22 delete m_layer;
25 delete m_emu; 23 delete m_emu;
26 delete m_widget; 24 delete m_widget;
27 /* the widget layer should be deleted by the m_widget */ 25 /* the widget layer should be deleted by the m_widget */
28} 26}
29QString Session::name()const { 27QString Session::name()const {
30 return m_name; 28 return m_name;
31} 29}
32QWidgetStack* Session::widgetStack() { 30QWidgetStack* Session::widgetStack() {
33 return m_widget; 31 return m_widget;
34} 32}
35IOLayer* Session::layer() { 33IOLayer* Session::layer() {
36 return m_layer; 34 return m_layer;
37} 35}
38EmulationHandler* Session::emulationHandler() { 36EmulationHandler* Session::emulationHandler() {
39 return m_emu; 37 return m_emu;
40} 38}
41QWidget* Session::widget() { 39QWidget* Session::widget() {
42 if (!m_emu ) 40 if (!m_emu )
43 return 0l; 41 return 0l;
44 42
45 return m_emu->widget(); 43 return m_emu->widget();
46} 44}
47Profile Session::profile()const { 45Profile Session::profile()const {
48 return m_prof; 46 return m_prof;
49} 47}
50/* 48/*
51WidgetLayer* Session::emulationWidget() { 49WidgetLayer* Session::emulationWidget() {
52 return m_widLay; 50 return m_widLay;
53} 51}
54*/ 52*/
55void Session::connect() { 53void Session::connect() {
56 if ( !m_layer || !m_emu ) 54 if ( !m_layer || !m_emu )
57 return; 55 return;
58 56
59 QObject::connect(m_layer, SIGNAL(received(const QByteArray&) ), 57 QObject::connect(m_layer, SIGNAL(received(const QByteArray&) ),
60 m_emu, SLOT(recv(const QByteArray&) ) ); 58 m_emu, SLOT(recv(const QByteArray&) ) );
61 QObject::connect(m_emu, SIGNAL(send(const QByteArray&) ), 59 QObject::connect(m_emu, SIGNAL(send(const QByteArray&) ),
62 m_layer, SLOT(send(const QByteArray&) ) ); 60 m_layer, SLOT(send(const QByteArray&) ) );
63 QObject::connect(m_emu, SIGNAL(changeSize(int, int) ), 61 QObject::connect(m_emu, SIGNAL(changeSize(int, int) ),
64 m_layer, SLOT(setSize(int, int) ) ); 62 m_layer, SLOT(setSize(int, int) ) );
65} 63}
66 64
67void Session::disconnect() { 65void Session::disconnect() {
68 66
69 if ( !m_layer || !m_emu ) 67 if ( !m_layer || !m_emu )
70 return; 68 return;
71 69
72 QObject::disconnect(m_layer, SIGNAL(received(const QByteArray&) ), 70 QObject::disconnect(m_layer, SIGNAL(received(const QByteArray&) ),
73 m_emu, SLOT(recv(const QByteArray&) ) ); 71 m_emu, SLOT(recv(const QByteArray&) ) );
74 QObject::disconnect(m_emu, SIGNAL(send(const QByteArray&) ), 72 QObject::disconnect(m_emu, SIGNAL(send(const QByteArray&) ),
75 m_layer, SLOT(send(const QByteArray&) ) ); 73 m_layer, SLOT(send(const QByteArray&) ) );
76} 74}
77 75
78void Session::setName( const QString& na){ 76void Session::setName( const QString& na){
79 m_name = na; 77 m_name = na;
80} 78}
81 79
82void Session::setWidgetStack( QWidgetStack* wid ) { 80void Session::setWidgetStack( QWidgetStack* wid ) {
83 delete m_emu; 81 delete m_emu;
84 m_emu = 0l; 82 m_emu = 0l;
85 delete m_widget; 83 delete m_widget;
86 /* the EmulationLayer was destroyed... */ 84 /* the EmulationLayer was destroyed... */
87 85
88 m_widget = wid; 86 m_widget = wid;
89} 87}
90void Session::setIOLayer( IOLayer* lay ) { 88void Session::setIOLayer( IOLayer* lay ) {
91 delete m_layer; 89 delete m_layer;
92 m_layer = lay; 90 m_layer = lay;
93} 91}
94 92
95void Session::setEmulationHandler( EmulationHandler* lay ) { 93void Session::setEmulationHandler( EmulationHandler* lay ) {
96 delete m_emu; 94 delete m_emu;
97 m_emu = lay; 95 m_emu = lay;
98} 96}
99void Session::setProfile( const Profile& prof ) { 97void Session::setProfile( const Profile& prof ) {
100 m_prof = prof; 98 m_prof = prof;
101} 99}
102/* 100/*
103void Session::setEmulationWidget( WidgetLayer* lay ) { 101void Session::setEmulationWidget( WidgetLayer* lay ) {
104 delete m_widLay; 102 delete m_widLay;
105 m_widLay = lay; 103 m_widLay = lay;
106} 104}
107*/ 105*/
108void Session::setTransferDialog(QWidget *d) 106void Session::setTransferDialog(QWidget *d)
109{ 107{
110 m_transfer = d; 108 m_transfer = d;
111} 109}
112 110
113QWidget *Session::transferDialog() 111QWidget *Session::transferDialog()
114{ 112{
115 return m_transfer; 113 return m_transfer;
116} 114}
117 115
diff --git a/noncore/apps/opie-console/terminalwidget.cpp b/noncore/apps/opie-console/terminalwidget.cpp
index 70f7c9b..6870487 100644
--- a/noncore/apps/opie-console/terminalwidget.cpp
+++ b/noncore/apps/opie-console/terminalwidget.cpp
@@ -1,139 +1,135 @@
1#include <qbuttongroup.h>
2#include <qlabel.h> 1#include <qlabel.h>
3#include <qcheckbox.h> 2#include <qcheckbox.h>
4#include <qcombobox.h> 3#include <qcombobox.h>
5#include <qradiobutton.h> 4#include <qradiobutton.h>
6#include <qgroupbox.h>
7#include <qvbox.h>
8#include <qhgroupbox.h> 5#include <qhgroupbox.h>
9#include <qhbuttongroup.h> 6#include <qhbuttongroup.h>
10#include <qlayout.h> 7#include <qlayout.h>
11#include <qhbox.h>
12 8
13#include "terminalwidget.h" 9#include "terminalwidget.h"
14 10
15namespace { 11namespace {
16 enum TermIds { 12 enum TermIds {
17 id_term_vt100 = 0, 13 id_term_vt100 = 0,
18 id_term_vt102, 14 id_term_vt102,
19 id_term_linux, 15 id_term_linux,
20 id_term_xterm 16 id_term_xterm
21 }; 17 };
22 18
23 enum ColourIds { 19 enum ColourIds {
24 id_term_black, 20 id_term_black,
25 id_term_white, 21 id_term_white,
26 id_term_green, 22 id_term_green,
27 id_term_orange 23 id_term_orange
28 }; 24 };
29 25
30 enum FontIds { 26 enum FontIds {
31 id_size_small, 27 id_size_small,
32 id_size_medium, 28 id_size_medium,
33 id_size_large 29 id_size_large
34 }; 30 };
35}; 31};
36 32
37TerminalWidget::TerminalWidget( const QString& name, QWidget* parent, 33TerminalWidget::TerminalWidget( const QString& name, QWidget* parent,
38 const char* na ) 34 const char* na )
39 : ProfileDialogTerminalWidget( name, parent, na ) { 35 : ProfileDialogTerminalWidget( name, parent, na ) {
40 36
41 m_terminal = new QLabel(tr("Terminal Type"), this ); 37 m_terminal = new QLabel(tr("Terminal Type"), this );
42 m_terminalBox = new QComboBox(this); 38 m_terminalBox = new QComboBox(this);
43 m_colorLabel = new QLabel(tr("Color scheme"), this); 39 m_colorLabel = new QLabel(tr("Color scheme"), this);
44 m_colorCmb = new QComboBox(this ); 40 m_colorCmb = new QComboBox(this );
45 41
46 m_groupSize = new QHButtonGroup(tr("Font size"), this ); 42 m_groupSize = new QHButtonGroup(tr("Font size"), this );
47 m_sizeSmall = new QRadioButton(tr("small"), m_groupSize ); 43 m_sizeSmall = new QRadioButton(tr("small"), m_groupSize );
48 m_sizeMedium = new QRadioButton(tr("medium"), m_groupSize ); 44 m_sizeMedium = new QRadioButton(tr("medium"), m_groupSize );
49 m_sizeLarge = new QRadioButton(tr("large"), m_groupSize ); 45 m_sizeLarge = new QRadioButton(tr("large"), m_groupSize );
50 46
51 m_groupConv = new QHGroupBox( tr("Line-break conversions"), this ); 47 m_groupConv = new QHGroupBox( tr("Line-break conversions"), this );
52 m_convInbound = new QCheckBox( tr("Inbound"), m_groupConv ); 48 m_convInbound = new QCheckBox( tr("Inbound"), m_groupConv );
53 m_convOutbound = new QCheckBox( tr("Outbound"), m_groupConv ); 49 m_convOutbound = new QCheckBox( tr("Outbound"), m_groupConv );
54 50
55 m_groupOptions = new QHGroupBox( tr("Options"), this ); 51 m_groupOptions = new QHGroupBox( tr("Options"), this );
56 m_optionEcho = new QCheckBox( tr("Local echo"), m_groupOptions ); 52 m_optionEcho = new QCheckBox( tr("Local echo"), m_groupOptions );
57 m_optionWrap = new QCheckBox( tr("Line wrap"), m_groupOptions ); 53 m_optionWrap = new QCheckBox( tr("Line wrap"), m_groupOptions );
58 54
59 m_lroot = new QVBoxLayout( this ); 55 m_lroot = new QVBoxLayout( this );
60 m_typeBox = new QVBoxLayout( m_lroot ); 56 m_typeBox = new QVBoxLayout( m_lroot );
61 m_colorBox = new QVBoxLayout( m_lroot ); 57 m_colorBox = new QVBoxLayout( m_lroot );
62 58
63 // Layout 59 // Layout
64 m_typeBox->add( m_terminal ); 60 m_typeBox->add( m_terminal );
65 m_typeBox->add( m_terminalBox ); 61 m_typeBox->add( m_terminalBox );
66 m_lroot->add( m_groupSize ); 62 m_lroot->add( m_groupSize );
67 63
68 m_colorBox->add( m_colorLabel ); 64 m_colorBox->add( m_colorLabel );
69 m_colorBox->add( m_colorCmb ); 65 m_colorBox->add( m_colorCmb );
70 66
71 m_lroot->add( m_groupConv ); 67 m_lroot->add( m_groupConv );
72 m_lroot->add( m_groupOptions ); 68 m_lroot->add( m_groupOptions );
73 m_lroot->addStretch( 0 ); 69 m_lroot->addStretch( 0 );
74 70
75 // Fill in some options 71 // Fill in some options
76 qWarning("Options for terminal box"); 72 qWarning("Options for terminal box");
77 m_terminalBox->insertItem( tr("VT 100"), 0 ); // /*, id_term_vt100*/ ); 73 m_terminalBox->insertItem( tr("VT 100"), 0 ); // /*, id_term_vt100*/ );
78 m_terminalBox->insertItem( tr("VT 102"), 1 ); // /* , id_term_vt102 */); 74 m_terminalBox->insertItem( tr("VT 102"), 1 ); // /* , id_term_vt102 */);
79 m_terminalBox->insertItem( tr("Linux Console"), 2 ); //, id_term_linux ); 75 m_terminalBox->insertItem( tr("Linux Console"), 2 ); //, id_term_linux );
80 m_terminalBox->insertItem( tr("X-Terminal"), 3 ); //, id_term_xterm ); 76 m_terminalBox->insertItem( tr("X-Terminal"), 3 ); //, id_term_xterm );
81 //m_terminalBox->insertItem( tr("ANSI"), id_term_ansi ); 77 //m_terminalBox->insertItem( tr("ANSI"), id_term_ansi );
82 78
83 m_colorCmb->insertItem( tr("black on white"), id_term_black ); 79 m_colorCmb->insertItem( tr("black on white"), id_term_black );
84 m_colorCmb->insertItem( tr("white on black"), id_term_white ); 80 m_colorCmb->insertItem( tr("white on black"), id_term_white );
85 m_colorCmb->insertItem( tr("green on black"), id_term_green ); 81 m_colorCmb->insertItem( tr("green on black"), id_term_green );
86 m_colorCmb->insertItem( tr("orange on black"), id_term_orange ); 82 m_colorCmb->insertItem( tr("orange on black"), id_term_orange );
87 83
88 // signals + slots 84 // signals + slots
89 /* 85 /*
90 connect(m_terminalBox, SIGNAL(activated(int) ), 86 connect(m_terminalBox, SIGNAL(activated(int) ),
91 this, SLOT(slotTermTerm(int) ) ); 87 this, SLOT(slotTermTerm(int) ) );
92 connect(m_colorBox, SIGNAL(activated(int) ), 88 connect(m_colorBox, SIGNAL(activated(int) ),
93 tis, SLOT(slotTermColor(int) ) ); 89 tis, SLOT(slotTermColor(int) ) );
94 connect(m_groupSize, SIGNAL(activated(int) ), 90 connect(m_groupSize, SIGNAL(activated(int) ),
95 this, SLOT(slotTermFont(int) ) ); 91 this, SLOT(slotTermFont(int) ) );
96 92
97 connect(m_optionEcho, SIGNAL(toggled(bool) ), 93 connect(m_optionEcho, SIGNAL(toggled(bool) ),
98 this, SLOT(slotTermEcho(bool) ) ); 94 this, SLOT(slotTermEcho(bool) ) );
99 connect(m_optionWrap, SIGNAL(toggled(bool) ), 95 connect(m_optionWrap, SIGNAL(toggled(bool) ),
100 this, SLOT(slotTermWrap(bool) ) ); 96 this, SLOT(slotTermWrap(bool) ) );
101 connect(m_convInbound, SIGNAL(toggled(bool) ), 97 connect(m_convInbound, SIGNAL(toggled(bool) ),
102 this, SLOT(slotTermInbound(bool) ) ); 98 this, SLOT(slotTermInbound(bool) ) );
103 connect(m_convOutbound, SIGNAL(toggled(bool) ), 99 connect(m_convOutbound, SIGNAL(toggled(bool) ),
104 this, SLOT(slotTermOutbound(bool) ) ); 100 this, SLOT(slotTermOutbound(bool) ) );
105*/ 101*/
106} 102}
107TerminalWidget::~TerminalWidget() { 103TerminalWidget::~TerminalWidget() {
108} 104}
109void TerminalWidget::load( const Profile& prof ) { 105void TerminalWidget::load( const Profile& prof ) {
110 int term = prof.readNumEntry("Terminal"); 106 int term = prof.readNumEntry("Terminal");
111 int color = prof.readNumEntry("Color"); 107 int color = prof.readNumEntry("Color");
112 int fontsize = prof.readNumEntry("Font"); 108 int fontsize = prof.readNumEntry("Font");
113 int opt_echo = prof.readNumEntry("Echo"); 109 int opt_echo = prof.readNumEntry("Echo");
114 int opt_wrap = prof.readNumEntry("Wrap"); 110 int opt_wrap = prof.readNumEntry("Wrap");
115 int opt_inbound = prof.readNumEntry("Inbound"); 111 int opt_inbound = prof.readNumEntry("Inbound");
116 int opt_outbound = prof.readNumEntry("Outbound"); 112 int opt_outbound = prof.readNumEntry("Outbound");
117 113
118 switch( term ) { 114 switch( term ) {
119 case Profile::VT100: 115 case Profile::VT100:
120 m_terminalBox->setCurrentItem(id_term_vt100 ); 116 m_terminalBox->setCurrentItem(id_term_vt100 );
121 break; 117 break;
122 case Profile::VT102: 118 case Profile::VT102:
123 m_terminalBox->setCurrentItem(id_term_vt102 ); 119 m_terminalBox->setCurrentItem(id_term_vt102 );
124 break; 120 break;
125 case Profile::Linux: 121 case Profile::Linux:
126 m_terminalBox->setCurrentItem(id_term_linux ); 122 m_terminalBox->setCurrentItem(id_term_linux );
127 break; 123 break;
128 case Profile::XTerm: 124 case Profile::XTerm:
129 m_terminalBox->setCurrentItem(id_term_xterm ); 125 m_terminalBox->setCurrentItem(id_term_xterm );
130 break; 126 break;
131 default: 127 default:
132 m_terminalBox->setCurrentItem(id_term_vt102 ); 128 m_terminalBox->setCurrentItem(id_term_vt102 );
133 break; 129 break;
134 }; 130 };
135 131
136 switch( color ) { 132 switch( color ) {
137 case Profile::Black: 133 case Profile::Black:
138 m_colorCmb->setCurrentItem(id_term_black ); 134 m_colorCmb->setCurrentItem(id_term_black );
139 break; 135 break;
diff --git a/noncore/apps/opie-console/transferdialog.cpp b/noncore/apps/opie-console/transferdialog.cpp
index 0af1911..55dd748 100644
--- a/noncore/apps/opie-console/transferdialog.cpp
+++ b/noncore/apps/opie-console/transferdialog.cpp
@@ -1,142 +1,140 @@
1#include <qlayout.h> 1#include <qlayout.h>
2#include <qcombobox.h> 2#include <qcombobox.h>
3#include <qlabel.h> 3#include <qlabel.h>
4#include <qlineedit.h> 4#include <qlineedit.h>
5#include <qpushbutton.h> 5#include <qpushbutton.h>
6#include <qmessagebox.h> 6#include <qmessagebox.h>
7#include <qprogressbar.h> 7#include <qprogressbar.h>
8#include <qradiobutton.h> 8#include <qradiobutton.h>
9#include <qbuttongroup.h> 9#include <qbuttongroup.h>
10 10
11#include <opie/ofiledialog.h> 11#include <opie/ofiledialog.h>
12 12
13#include "file_layer.h"
14#include "receive_layer.h"
15#include "metafactory.h" 13#include "metafactory.h"
16#include "mainwindow.h" 14#include "mainwindow.h"
17 15
18#include "transferdialog.h" 16#include "transferdialog.h"
19 17
20TransferDialog::TransferDialog(QWidget *parent, MainWindow *mainwindow, const char *) 18TransferDialog::TransferDialog(QWidget *parent, MainWindow *mainwindow, const char *)
21: QDialog(parent, 0l, false), m_win(mainwindow) 19: QDialog(parent, 0l, false), m_win(mainwindow)
22{ 20{
23 m_lay = 0l; 21 m_lay = 0l;
24 m_recvlay = 0l; 22 m_recvlay = 0l;
25 QVBoxLayout *vbox, *vbox2; 23 QVBoxLayout *vbox, *vbox2;
26 QHBoxLayout *hbox, *hbox2, *hbox3; 24 QHBoxLayout *hbox, *hbox2, *hbox3;
27 QLabel *file, *mode, *progress, *status; 25 QLabel *file, *mode, *progress, *status;
28 QButtonGroup *group; 26 QButtonGroup *group;
29 QRadioButton *mode_send, *mode_receive; 27 QRadioButton *mode_send, *mode_receive;
30 28
31 m_autocleanup = 0; 29 m_autocleanup = 0;
32 m_running = true; 30 m_running = true;
33 31
34 group = new QButtonGroup(QObject::tr("Transfer mode"), this); 32 group = new QButtonGroup(QObject::tr("Transfer mode"), this);
35 mode_send = new QRadioButton(QObject::tr("Send"), group); 33 mode_send = new QRadioButton(QObject::tr("Send"), group);
36 mode_receive = new QRadioButton(QObject::tr("Receive"), group); 34 mode_receive = new QRadioButton(QObject::tr("Receive"), group);
37 group->insert(mode_send, id_send); 35 group->insert(mode_send, id_send);
38 group->insert(mode_receive, id_receive); 36 group->insert(mode_receive, id_receive);
39 vbox2 = new QVBoxLayout(group, 2); 37 vbox2 = new QVBoxLayout(group, 2);
40 vbox2->addSpacing(10); 38 vbox2->addSpacing(10);
41 hbox3 = new QHBoxLayout(vbox2, 2); 39 hbox3 = new QHBoxLayout(vbox2, 2);
42 hbox3->add(mode_send); 40 hbox3->add(mode_send);
43 hbox3->add(mode_receive); 41 hbox3->add(mode_receive);
44 mode_send->setChecked(true); 42 mode_send->setChecked(true);
45 m_transfermode = id_send; 43 m_transfermode = id_send;
46 44
47 file = new QLabel(QObject::tr("Send file"), this); 45 file = new QLabel(QObject::tr("Send file"), this);
48 mode = new QLabel(QObject::tr("Transfer protocol"), this); 46 mode = new QLabel(QObject::tr("Transfer protocol"), this);
49 progress = new QLabel(QObject::tr("Progress"), this); 47 progress = new QLabel(QObject::tr("Progress"), this);
50 status = new QLabel(QObject::tr("Status"), this); 48 status = new QLabel(QObject::tr("Status"), this);
51 49
52 statusbar = new QLabel(QObject::tr("Ready"), this); 50 statusbar = new QLabel(QObject::tr("Ready"), this);
53 statusbar->setFrameStyle(QFrame::Panel | QFrame::Sunken); 51 statusbar->setFrameStyle(QFrame::Panel | QFrame::Sunken);
54 52
55 protocol = new QComboBox(this); 53 protocol = new QComboBox(this);
56 QStringList list = m_win->factory()->fileTransferLayers(); 54 QStringList list = m_win->factory()->fileTransferLayers();
57 for (QStringList::Iterator it = list.begin(); it != list.end(); ++it) 55 for (QStringList::Iterator it = list.begin(); it != list.end(); ++it)
58 protocol->insertItem((*it)); 56 protocol->insertItem((*it));
59 57
60 filename = new QLineEdit(this); 58 filename = new QLineEdit(this);
61 59
62 progressbar = new QProgressBar(this); 60 progressbar = new QProgressBar(this);
63 progressbar->setProgress(0); 61 progressbar->setProgress(0);
64 62
65 selector = new QPushButton("...", this); 63 selector = new QPushButton("...", this);
66 ok = new QPushButton(QObject::tr("Start transfer"), this); 64 ok = new QPushButton(QObject::tr("Start transfer"), this);
67 cancel = new QPushButton(QObject::tr("Cancel"), this); 65 cancel = new QPushButton(QObject::tr("Cancel"), this);
68 66
69 vbox = new QVBoxLayout(this, 2); 67 vbox = new QVBoxLayout(this, 2);
70 vbox->add(group); 68 vbox->add(group);
71 vbox->add(file); 69 vbox->add(file);
72 hbox = new QHBoxLayout(vbox, 0); 70 hbox = new QHBoxLayout(vbox, 0);
73 hbox->add(filename); 71 hbox->add(filename);
74 hbox->add(selector); 72 hbox->add(selector);
75 vbox->add(mode); 73 vbox->add(mode);
76 vbox->add(protocol); 74 vbox->add(protocol);
77 vbox->add(progress); 75 vbox->add(progress);
78 vbox->add(progressbar); 76 vbox->add(progressbar);
79 vbox->add(status); 77 vbox->add(status);
80 vbox->add(statusbar); 78 vbox->add(statusbar);
81 vbox->addStretch(1); 79 vbox->addStretch(1);
82 hbox2 = new QHBoxLayout(vbox, 2); 80 hbox2 = new QHBoxLayout(vbox, 2);
83 hbox2->add(ok); 81 hbox2->add(ok);
84 hbox2->add(cancel); 82 hbox2->add(cancel);
85 83
86 setCaption(QObject::tr("File transfer")); 84 setCaption(QObject::tr("File transfer"));
87 show(); 85 show();
88 86
89 connect(selector, SIGNAL(clicked()), SLOT(slotFilename())); 87 connect(selector, SIGNAL(clicked()), SLOT(slotFilename()));
90 connect(ok, SIGNAL(clicked()), SLOT(slotTransfer())); 88 connect(ok, SIGNAL(clicked()), SLOT(slotTransfer()));
91 connect(cancel, SIGNAL(clicked()), SLOT(slotCancel())); 89 connect(cancel, SIGNAL(clicked()), SLOT(slotCancel()));
92 connect(group, SIGNAL(clicked(int)), SLOT(slotMode(int))); 90 connect(group, SIGNAL(clicked(int)), SLOT(slotMode(int)));
93} 91}
94 92
95TransferDialog::~TransferDialog() 93TransferDialog::~TransferDialog()
96{ 94{
97} 95}
98 96
99void TransferDialog::slotFilename() 97void TransferDialog::slotFilename()
100{ 98{
101 QString f; 99 QString f;
102 100
103 f = OFileDialog::getOpenFileName(0); 101 f = OFileDialog::getOpenFileName(0);
104 if(!f.isNull()) filename->setText(f); 102 if(!f.isNull()) filename->setText(f);
105} 103}
106 104
107void TransferDialog::slotTransfer() 105void TransferDialog::slotTransfer()
108{ 106{
109 if((m_transfermode == id_send) && (filename->text().isEmpty())) 107 if((m_transfermode == id_send) && (filename->text().isEmpty()))
110 { 108 {
111 QMessageBox::information(this, 109 QMessageBox::information(this,
112 QObject::tr("Attention"), 110 QObject::tr("Attention"),
113 QObject::tr("No file has been specified.")); 111 QObject::tr("No file has been specified."));
114 return; 112 return;
115 } 113 }
116 114
117 ok->setEnabled(false); 115 ok->setEnabled(false);
118 116
119 cleanup(); 117 cleanup();
120 m_autocleanup = 0; 118 m_autocleanup = 0;
121 119
122 if(m_transfermode == id_send) statusbar->setText(QObject::tr("Sending...")); 120 if(m_transfermode == id_send) statusbar->setText(QObject::tr("Sending..."));
123 else statusbar->setText(QObject::tr("Receiving...")); 121 else statusbar->setText(QObject::tr("Receiving..."));
124 122
125 if(m_transfermode == id_send) 123 if(m_transfermode == id_send)
126 { 124 {
127 m_lay = m_win->factory()->newFileTransfer(protocol->currentText(), m_win->currentSession()->layer()); 125 m_lay = m_win->factory()->newFileTransfer(protocol->currentText(), m_win->currentSession()->layer());
128 m_lay->sendFile(filename->text()); 126 m_lay->sendFile(filename->text());
129 127
130 connect(m_lay, SIGNAL(progress(const QString&, int, int, int, int, int)), 128 connect(m_lay, SIGNAL(progress(const QString&, int, int, int, int, int)),
131 SLOT(slotProgress(const QString&, int, int, int, int, int))); 129 SLOT(slotProgress(const QString&, int, int, int, int, int)));
132 connect(m_lay, SIGNAL(error(int, const QString&)), SLOT(slotError(int, const QString&))); 130 connect(m_lay, SIGNAL(error(int, const QString&)), SLOT(slotError(int, const QString&)));
133 connect(m_lay, SIGNAL(sent()), SLOT(slotSent())); 131 connect(m_lay, SIGNAL(sent()), SLOT(slotSent()));
134 } 132 }
135 else 133 else
136 { 134 {
137 m_recvlay = m_win->factory()->newReceive(protocol->currentText(), m_win->currentSession()->layer()); 135 m_recvlay = m_win->factory()->newReceive(protocol->currentText(), m_win->currentSession()->layer());
138 m_recvlay->receive(); 136 m_recvlay->receive();
139 137
140 connect(m_recvlay, SIGNAL(progress(const QString&, int, int, int, int, int)), 138 connect(m_recvlay, SIGNAL(progress(const QString&, int, int, int, int, int)),
141 SLOT(slotProgress(const QString&, int, int, int, int, int))); 139 SLOT(slotProgress(const QString&, int, int, int, int, int)));
142 connect(m_recvlay, SIGNAL(error(int, const QString&)), SLOT(slotError(int, const QString&))); 140 connect(m_recvlay, SIGNAL(error(int, const QString&)), SLOT(slotError(int, const QString&)));
diff --git a/noncore/apps/opie-console/vt102emulation.cpp b/noncore/apps/opie-console/vt102emulation.cpp
index 0ebefa0..35b789c 100644
--- a/noncore/apps/opie-console/vt102emulation.cpp
+++ b/noncore/apps/opie-console/vt102emulation.cpp
@@ -1,162 +1,157 @@
1/* ------------------------------------------------------------------------- */ 1/* ------------------------------------------------------------------------- */
2/* */ 2/* */
3/* [vt102emulation.cpp] VT102 Terminal Emulation */ 3/* [vt102emulation.cpp] VT102 Terminal Emulation */
4/* */ 4/* */
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/* */ 12/* */
13/* Ported Konsole to Qt/Embedded */ 13/* Ported Konsole to Qt/Embedded */
14/* */ 14/* */
15/* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */ 15/* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */
16/* */ 16/* */
17/* -------------------------------------------------------------------------- */ 17/* -------------------------------------------------------------------------- */
18 18
19/*! \class Vt102Emulation 19/*! \class Vt102Emulation
20 20
21 \brief Actual Emulation for Konsole 21 \brief Actual Emulation for Konsole
22 22
23 \sa Widget \sa Screen \sa EmulationLayer 23 \sa Widget \sa Screen \sa EmulationLayer
24*/ 24*/
25 25
26#include "vt102emulation.h" 26#include "vt102emulation.h"
27#include "widget_layer.h"
28#include "screen.h"
29#include "keytrans.h"
30 27
31#include <stdio.h> 28#include <stdio.h>
32#include <unistd.h> 29#include <unistd.h>
33#include <qkeycode.h>
34#include <qtextcodec.h>
35 30
36 31
37/* VT102 Terminal Emulation 32/* VT102 Terminal Emulation
38 33
39 This class puts together the screens, the pty and the widget to a 34 This class puts together the screens, the pty and the widget to a
40 complete terminal emulation. Beside combining it's componentes, it 35 complete terminal emulation. Beside combining it's componentes, it
41 handles the emulations's protocol. 36 handles the emulations's protocol.
42 37
43 This module consists of the following sections: 38 This module consists of the following sections:
44 39
45 - Constructor/Destructor 40 - Constructor/Destructor
46 - Incoming Bytes Event pipeline 41 - Incoming Bytes Event pipeline
47 - Outgoing Bytes 42 - Outgoing Bytes
48 - Mouse Events 43 - Mouse Events
49 - Keyboard Events 44 - Keyboard Events
50 - Modes and Charset State 45 - Modes and Charset State
51 - Diagnostics 46 - Diagnostics
52*/ 47*/
53 48
54 49
55/* ------------------------------------------------------------------------- */ 50/* ------------------------------------------------------------------------- */
56/* */ 51/* */
57/* Constructor / Destructor */ 52/* Constructor / Destructor */
58/* */ 53/* */
59/* ------------------------------------------------------------------------- */ 54/* ------------------------------------------------------------------------- */
60 55
61/* 56/*
62 Nothing really intesting happens here. 57 Nothing really intesting happens here.
63*/ 58*/
64 59
65/*! 60/*!
66*/ 61*/
67 62
68Vt102Emulation::Vt102Emulation(WidgetLayer* gui) : EmulationLayer(gui) 63Vt102Emulation::Vt102Emulation(WidgetLayer* gui) : EmulationLayer(gui)
69{ 64{
70 QObject::connect(gui,SIGNAL(mouseSignal(int,int,int)), 65 QObject::connect(gui,SIGNAL(mouseSignal(int,int,int)),
71 this,SLOT(onMouse(int,int,int))); 66 this,SLOT(onMouse(int,int,int)));
72 initTokenizer(); 67 initTokenizer();
73 reset(); 68 reset();
74} 69}
75 70
76/*! 71/*!
77*/ 72*/
78 73
79Vt102Emulation::~Vt102Emulation() 74Vt102Emulation::~Vt102Emulation()
80{ 75{
81} 76}
82 77
83/*! 78/*!
84*/ 79*/
85 80
86void Vt102Emulation::reset() 81void Vt102Emulation::reset()
87{ 82{
88 resetToken(); 83 resetToken();
89 resetModes(); 84 resetModes();
90 resetCharset(0); screen[0]->reset(); 85 resetCharset(0); screen[0]->reset();
91 resetCharset(1); screen[0]->reset(); 86 resetCharset(1); screen[0]->reset();
92 setCodec(0); 87 setCodec(0);
93 setKeytrans("linux.keytab"); 88 setKeytrans("linux.keytab");
94} 89}
95 90
96/* ------------------------------------------------------------------------- */ 91/* ------------------------------------------------------------------------- */
97/* */ 92/* */
98/* Processing the incoming byte stream */ 93/* Processing the incoming byte stream */
99/* */ 94/* */
100/* ------------------------------------------------------------------------- */ 95/* ------------------------------------------------------------------------- */
101 96
102/* Incoming Bytes Event pipeline 97/* Incoming Bytes Event pipeline
103 98
104 This section deals with decoding the incoming character stream. 99 This section deals with decoding the incoming character stream.
105 Decoding means here, that the stream is first seperated into `tokens' 100 Decoding means here, that the stream is first seperated into `tokens'
106 which are then mapped to a `meaning' provided as operations by the 101 which are then mapped to a `meaning' provided as operations by the
107 `TEScreen' class or by the emulation class itself. 102 `TEScreen' class or by the emulation class itself.
108 103
109 The pipeline proceeds as follows: 104 The pipeline proceeds as follows:
110 105
111 - Tokenizing the ESC codes (onRcvChar) 106 - Tokenizing the ESC codes (onRcvChar)
112 - VT100 code page translation of plain characters (applyCharset) 107 - VT100 code page translation of plain characters (applyCharset)
113 - Interpretation of ESC codes (tau) 108 - Interpretation of ESC codes (tau)
114 109
115 The escape codes and their meaning are described in the 110 The escape codes and their meaning are described in the
116 technical reference of this program. 111 technical reference of this program.
117*/ 112*/
118 113
119// Tokens ------------------------------------------------------------------ -- 114// Tokens ------------------------------------------------------------------ --
120 115
121/* 116/*
122 Since the tokens are the central notion if this section, we've put them 117 Since the tokens are the central notion if this section, we've put them
123 in front. They provide the syntactical elements used to represent the 118 in front. They provide the syntactical elements used to represent the
124 terminals operations as byte sequences. 119 terminals operations as byte sequences.
125 120
126 They are encodes here into a single machine word, so that we can later 121 They are encodes here into a single machine word, so that we can later
127 switch over them easily. Depending on the token itself, additional 122 switch over them easily. Depending on the token itself, additional
128 argument variables are filled with parameter values. 123 argument variables are filled with parameter values.
129 124
130 The tokens are defined below: 125 The tokens are defined below:
131 126
132 - CHR - Printable characters (32..255 but DEL (=127)) 127 - CHR - Printable characters (32..255 but DEL (=127))
133 - CTL - Control characters (0..31 but ESC (= 27), DEL) 128 - CTL - Control characters (0..31 but ESC (= 27), DEL)
134 - ESC - Escape codes of the form <ESC><CHR but `[]()+*#'> 129 - ESC - Escape codes of the form <ESC><CHR but `[]()+*#'>
135 - ESC_DE - Escape codes of the form <ESC><any of `()+*#%'> C 130 - ESC_DE - Escape codes of the form <ESC><any of `()+*#%'> C
136 - CSI_PN - Escape codes of the form <ESC>'[' {Pn} ';' {Pn} C 131 - CSI_PN - Escape codes of the form <ESC>'[' {Pn} ';' {Pn} C
137 - CSI_PS - Escape codes of the form <ESC>'[' {Pn} ';' ... C 132 - CSI_PS - Escape codes of the form <ESC>'[' {Pn} ';' ... C
138 - CSI_PR - Escape codes of the form <ESC>'[' '?' {Pn} ';' ... C 133 - CSI_PR - Escape codes of the form <ESC>'[' '?' {Pn} ';' ... C
139 - VT52 - VT52 escape codes 134 - VT52 - VT52 escape codes
140 - <ESC><Chr> 135 - <ESC><Chr>
141 - <ESC>'Y'{Pc}{Pc} 136 - <ESC>'Y'{Pc}{Pc}
142 - XTE_HA - Xterm hacks <ESC>`]' {Pn} `;' {Text} <BEL> 137 - XTE_HA - Xterm hacks <ESC>`]' {Pn} `;' {Text} <BEL>
143 note that this is handled differently 138 note that this is handled differently
144 139
145 The last two forms allow list of arguments. Since the elements of 140 The last two forms allow list of arguments. Since the elements of
146 the lists are treated individually the same way, they are passed 141 the lists are treated individually the same way, they are passed
147 as individual tokens to the interpretation. Further, because the 142 as individual tokens to the interpretation. Further, because the
148 meaning of the parameters are names (althought represented as numbers), 143 meaning of the parameters are names (althought represented as numbers),
149 they are includes within the token ('N'). 144 they are includes within the token ('N').
150 145
151*/ 146*/
152 147
153#define TY_CONSTR(T,A,N) ( ((((int)N) & 0xffff) << 16) | ((((int)A) & 0xff) << 8) | (((int)T) & 0xff) ) 148#define TY_CONSTR(T,A,N) ( ((((int)N) & 0xffff) << 16) | ((((int)A) & 0xff) << 8) | (((int)T) & 0xff) )
154 149
155#define TY_CHR___( ) TY_CONSTR(0,0,0) 150#define TY_CHR___( ) TY_CONSTR(0,0,0)
156#define TY_CTL___(A ) TY_CONSTR(1,A,0) 151#define TY_CTL___(A ) TY_CONSTR(1,A,0)
157#define TY_ESC___(A ) TY_CONSTR(2,A,0) 152#define TY_ESC___(A ) TY_CONSTR(2,A,0)
158#define TY_ESC_CS(A,B) TY_CONSTR(3,A,B) 153#define TY_ESC_CS(A,B) TY_CONSTR(3,A,B)
159#define TY_ESC_DE(A ) TY_CONSTR(4,A,0) 154#define TY_ESC_DE(A ) TY_CONSTR(4,A,0)
160#define TY_CSI_PS(A,N) TY_CONSTR(5,A,N) 155#define TY_CSI_PS(A,N) TY_CONSTR(5,A,N)
161#define TY_CSI_PN(A ) TY_CONSTR(6,A,0) 156#define TY_CSI_PN(A ) TY_CONSTR(6,A,0)
162#define TY_CSI_PR(A,N) TY_CONSTR(7,A,N) 157#define TY_CSI_PR(A,N) TY_CONSTR(7,A,N)
diff --git a/noncore/apps/opie-console/widget.cpp b/noncore/apps/opie-console/widget.cpp
index 10045c6..e17dfd4 100644
--- a/noncore/apps/opie-console/widget.cpp
+++ b/noncore/apps/opie-console/widget.cpp
@@ -1,205 +1,197 @@
1/* ------------------------------------------------------------------------ */ 1/* ------------------------------------------------------------------------ */
2/* */ 2/* */
3/* [TEWidget.C] Terminal Emulation Widget */ 3/* [TEWidget.C] Terminal Emulation Widget */
4/* */ 4/* */
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/* */ 12/* */
13/* Ported Konsole to Qt/Embedded */ 13/* Ported Konsole to Qt/Embedded */
14/* */ 14/* */
15/* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */ 15/* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */
16/* */ 16/* */
17/* -------------------------------------------------------------------------- */ 17/* -------------------------------------------------------------------------- */
18 18
19/* ibot: 19/* ibot:
20 i changed 20 i changed
21 "currentSession->getEmulation()->sendString()" to 21 "currentSession->getEmulation()->sendString()" to
22 "currentSession->layer()->send()" 22 "currentSession->layer()->send()"
23 # this is not right! EmulationLayer should send it... 23 # this is not right! EmulationLayer should send it...
24 i changed all those to use emulationLayer()->send() instead 24 i changed all those to use emulationLayer()->send() instead
25 i had to create a QByteArray before... 25 i had to create a QByteArray before...
26 26
27TODO: 27TODO:
28alter Widget to use only QByteArray, where applicable. 28alter Widget to use only QByteArray, where applicable.
29*/ 29*/
30 30
31 31
32 32
33/*! \class Widget 33/*! \class Widget
34 34
35 \brief Visible screen contents 35 \brief Visible screen contents
36 36
37 This class is responsible to map the `image' of a terminal emulation to the 37 This class is responsible to map the `image' of a terminal emulation to the
38 display. All the dependency of the emulation to a specific GUI or toolkit is 38 display. All the dependency of the emulation to a specific GUI or toolkit is
39 localized here. Further, this widget has no knowledge about being part of an 39 localized here. Further, this widget has no knowledge about being part of an
40 emulation, it simply work within the terminal emulation framework by exposing 40 emulation, it simply work within the terminal emulation framework by exposing
41 size and key events and by being ordered to show a new image. 41 size and key events and by being ordered to show a new image.
42 42
43 <ul> 43 <ul>
44 <li> The internal image has the size of the widget (evtl. rounded up) 44 <li> The internal image has the size of the widget (evtl. rounded up)
45 <li> The external image used in setImage can have any size. 45 <li> The external image used in setImage can have any size.
46 <li> (internally) the external image is simply copied to the internal 46 <li> (internally) the external image is simply copied to the internal
47 when a setImage happens. During a resizeEvent no painting is done 47 when a setImage happens. During a resizeEvent no painting is done
48 a paintEvent is expected to follow anyway. 48 a paintEvent is expected to follow anyway.
49 </ul> 49 </ul>
50 50
51 \sa TEScreen \sa Emulation 51 \sa TEScreen \sa Emulation
52*/ 52*/
53 53
54/* FIXME: 54/* FIXME:
55 - 'image' may also be used uninitialized (it isn't in fact) in resizeEvent 55 - 'image' may also be used uninitialized (it isn't in fact) in resizeEvent
56 - 'font_a' not used in mouse events 56 - 'font_a' not used in mouse events
57 - add destructor 57 - add destructor
58*/ 58*/
59 59
60/* TODO 60/* TODO
61 - evtl. be sensitive to `paletteChange' while using default colors. 61 - evtl. be sensitive to `paletteChange' while using default colors.
62 - set different 'rounding' styles? I.e. have a mode to show clipped chars? 62 - set different 'rounding' styles? I.e. have a mode to show clipped chars?
63*/ 63*/
64 64
65// #include "config.h" 65// #include "config.h"
66#include "widget.h" 66#include "widget.h"
67#include "session.h"
68#include <qpe/config.h> 67#include <qpe/config.h>
69#include <qapplication.h>
70 68
71#include <qcursor.h>
72#include <qregexp.h>
73#include <qpainter.h>
74#include <qclipboard.h> 69#include <qclipboard.h>
75#include <qstyle.h>
76#include <qfile.h>
77#include <qdragobject.h>
78 70
79#include <stdio.h> 71#include <stdio.h>
80#include <stdlib.h> 72#include <stdlib.h>
81#include <unistd.h> 73#include <unistd.h>
82#include <ctype.h> 74#include <ctype.h>
83#include <sys/stat.h> 75#include <sys/stat.h>
84#include <sys/types.h> 76#include <sys/types.h>
85#include <signal.h> 77#include <signal.h>
86 78
87#include <assert.h> 79#include <assert.h>
88 80
89// #include "widget.moc" 81// #include "widget.moc"
90//#include <kapp.h> 82//#include <kapp.h>
91//#include <kcursor.h> 83//#include <kcursor.h>
92//#include <kurl.h> 84//#include <kurl.h>
93//#include <kdebug.h> 85//#include <kdebug.h>
94//#include <klocale.h> 86//#include <klocale.h>
95 87
96#define HERE printf("%s(%d): %s\n",__FILE__,__LINE__,__FUNCTION__) 88#define HERE printf("%s(%d): %s\n",__FILE__,__LINE__,__FUNCTION__)
97#define HCNT(Name) // { static int cnt = 1; printf("%s(%d): %s %d\n",__FILE__,__LINE__,Name,cnt++); } 89#define HCNT(Name) // { static int cnt = 1; printf("%s(%d): %s %d\n",__FILE__,__LINE__,Name,cnt++); }
98 90
99#define loc(X,Y) ((Y)*columns+(X)) 91#define loc(X,Y) ((Y)*columns+(X))
100 92
101//FIXME: the rim should normally be 1, 0 only when running in full screen mode. 93//FIXME: the rim should normally be 1, 0 only when running in full screen mode.
102#define rimX 0 // left/right rim width 94#define rimX 0 // left/right rim width
103#define rimY 0 // top/bottom rim high 95#define rimY 0 // top/bottom rim high
104 96
105#define yMouseScroll 1 97#define yMouseScroll 1
106// scroll increment used when dragging selection at top/bottom of window. 98// scroll increment used when dragging selection at top/bottom of window.
107 99
108/* ------------------------------------------------------------------------- */ 100/* ------------------------------------------------------------------------- */
109/* */ 101/* */
110/* Colors */ 102/* Colors */
111/* */ 103/* */
112/* ------------------------------------------------------------------------- */ 104/* ------------------------------------------------------------------------- */
113 105
114//FIXME: the default color table is in session.C now. 106//FIXME: the default color table is in session.C now.
115// We need a way to get rid of this one, here. 107// We need a way to get rid of this one, here.
116static const ColorEntry base_color_table[TABLE_COLORS] = 108static const ColorEntry base_color_table[TABLE_COLORS] =
117// The following are almost IBM standard color codes, with some slight 109// The following are almost IBM standard color codes, with some slight
118// gamma correction for the dim colors to compensate for bright X screens. 110// gamma correction for the dim colors to compensate for bright X screens.
119// It contains the 8 ansiterm/xterm colors in 2 intensities. 111// It contains the 8 ansiterm/xterm colors in 2 intensities.
120{ 112{
121 // Fixme: could add faint colors here, also. 113 // Fixme: could add faint colors here, also.
122 // normal 114 // normal
123 ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 1, 0 ), // Dfore, Dback 115 ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 1, 0 ), // Dfore, Dback
124 ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0x18), 0, 0 ), // Black, Red 116 ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0x18), 0, 0 ), // Black, Red
125 ColorEntry(QColor(0x18,0xB2,0x18), 0, 0 ), ColorEntry( QColor(0xB2,0x68,0x18), 0, 0 ), // Green, Yellow 117 ColorEntry(QColor(0x18,0xB2,0x18), 0, 0 ), ColorEntry( QColor(0xB2,0x68,0x18), 0, 0 ), // Green, Yellow
126 ColorEntry(QColor(0x18,0x18,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ), // Blue, Magenta 118 ColorEntry(QColor(0x18,0x18,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ), // Blue, Magenta
127 ColorEntry(QColor(0x18,0xB2,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 0, 0 ), // Cyan, White 119 ColorEntry(QColor(0x18,0xB2,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 0, 0 ), // Cyan, White
128 // intensiv 120 // intensiv
129 ColorEntry(QColor(0x00,0x00,0x00), 0, 1 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 1, 0 ), 121 ColorEntry(QColor(0x00,0x00,0x00), 0, 1 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 1, 0 ),
130 ColorEntry(QColor(0x68,0x68,0x68), 0, 0 ), ColorEntry( QColor(0xFF,0x54,0x54), 0, 0 ), 122 ColorEntry(QColor(0x68,0x68,0x68), 0, 0 ), ColorEntry( QColor(0xFF,0x54,0x54), 0, 0 ),
131 ColorEntry(QColor(0x54,0xFF,0x54), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0x54), 0, 0 ), 123 ColorEntry(QColor(0x54,0xFF,0x54), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0x54), 0, 0 ),
132 ColorEntry(QColor(0x54,0x54,0xFF), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ), 124 ColorEntry(QColor(0x54,0x54,0xFF), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ),
133 ColorEntry(QColor(0x54,0xFF,0xFF), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 0, 0 ) 125 ColorEntry(QColor(0x54,0xFF,0xFF), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 0, 0 )
134}; 126};
135 127
136/* Note that we use ANSI color order (bgr), while IBMPC color order is (rgb) 128/* Note that we use ANSI color order (bgr), while IBMPC color order is (rgb)
137 129
138 Code 0 1 2 3 4 5 6 7 130 Code 0 1 2 3 4 5 6 7
139 ----------- ------- ------- ------- ------- ------- ------- ------- ------- 131 ----------- ------- ------- ------- ------- ------- ------- ------- -------
140 ANSI (bgr) Black Red Green Yellow Blue Magenta Cyan White 132 ANSI (bgr) Black Red Green Yellow Blue Magenta Cyan White
141 IBMPC (rgb) Black Blue Green Cyan Red Magenta Yellow White 133 IBMPC (rgb) Black Blue Green Cyan Red Magenta Yellow White
142*/ 134*/
143 135
144QColor Widget::getDefaultBackColor() 136QColor Widget::getDefaultBackColor()
145{ 137{
146 return color_table[DEFAULT_BACK_COLOR].color; 138 return color_table[DEFAULT_BACK_COLOR].color;
147} 139}
148 140
149const ColorEntry* Widget::getColorTable() const 141const ColorEntry* Widget::getColorTable() const
150{ 142{
151 return color_table; 143 return color_table;
152} 144}
153 145
154const ColorEntry* Widget::getdefaultColorTable() const 146const ColorEntry* Widget::getdefaultColorTable() const
155{ 147{
156 return base_color_table; 148 return base_color_table;
157} 149}
158 150
159 151
160const QPixmap *Widget::backgroundPixmap() 152const QPixmap *Widget::backgroundPixmap()
161{ 153{
162 static QPixmap *bg = new QPixmap("~/qpim/main/pics/faded_bg.xpm"); 154 static QPixmap *bg = new QPixmap("~/qpim/main/pics/faded_bg.xpm");
163 const QPixmap *pm = bg; 155 const QPixmap *pm = bg;
164 return pm; 156 return pm;
165} 157}
166 158
167void Widget::setColorTable(const ColorEntry table[]) 159void Widget::setColorTable(const ColorEntry table[])
168{ 160{
169 for (int i = 0; i < TABLE_COLORS; i++) color_table[i] = table[i]; 161 for (int i = 0; i < TABLE_COLORS; i++) color_table[i] = table[i];
170 162
171 const QPixmap* pm = backgroundPixmap(); 163 const QPixmap* pm = backgroundPixmap();
172 if (!pm) setBackgroundColor(color_table[DEFAULT_BACK_COLOR].color); 164 if (!pm) setBackgroundColor(color_table[DEFAULT_BACK_COLOR].color);
173 update(); 165 update();
174} 166}
175 167
176//FIXME: add backgroundPixmapChanged. 168//FIXME: add backgroundPixmapChanged.
177 169
178/* ------------------------------------------------------------------------- */ 170/* ------------------------------------------------------------------------- */
179/* */ 171/* */
180/* Font */ 172/* Font */
181/* */ 173/* */
182/* ------------------------------------------------------------------------- */ 174/* ------------------------------------------------------------------------- */
183 175
184/* 176/*
185 The VT100 has 32 special graphical characters. The usual vt100 extended 177 The VT100 has 32 special graphical characters. The usual vt100 extended
186 xterm fonts have these at 0x00..0x1f. 178 xterm fonts have these at 0x00..0x1f.
187 179
188 QT's iso mapping leaves 0x00..0x7f without any changes. But the graphicals 180 QT's iso mapping leaves 0x00..0x7f without any changes. But the graphicals
189 come in here as proper unicode characters. 181 come in here as proper unicode characters.
190 182
191 We treat non-iso10646 fonts as VT100 extended and do the requiered mapping 183 We treat non-iso10646 fonts as VT100 extended and do the requiered mapping
192 from unicode to 0x00..0x1f. The remaining translation is then left to the 184 from unicode to 0x00..0x1f. The remaining translation is then left to the
193 QCodec. 185 QCodec.
194*/ 186*/
195 187
196// assert for i in [0..31] : vt100extended(vt100_graphics[i]) == i. 188// assert for i in [0..31] : vt100extended(vt100_graphics[i]) == i.
197 189
198unsigned short vt100_graphics[32] = 190unsigned short vt100_graphics[32] =
199{ // 0/8 1/9 2/10 3/11 4/12 5/13 6/14 7/15 191{ // 0/8 1/9 2/10 3/11 4/12 5/13 6/14 7/15
200 0x0020, 0x25C6, 0x2592, 0x2409, 0x240c, 0x240d, 0x240a, 0x00b0, 192 0x0020, 0x25C6, 0x2592, 0x2409, 0x240c, 0x240d, 0x240a, 0x00b0,
201 0x00b1, 0x2424, 0x240b, 0x2518, 0x2510, 0x250c, 0x2514, 0x253c, 193 0x00b1, 0x2424, 0x240b, 0x2518, 0x2510, 0x250c, 0x2514, 0x253c,
202 0xF800, 0xF801, 0x2500, 0xF803, 0xF804, 0x251c, 0x2524, 0x2534, 194 0xF800, 0xF801, 0x2500, 0xF803, 0xF804, 0x251c, 0x2524, 0x2534,
203 0x252c, 0x2502, 0x2264, 0x2265, 0x03C0, 0x2260, 0x00A3, 0x00b7 195 0x252c, 0x2502, 0x2264, 0x2265, 0x03C0, 0x2260, 0x00A3, 0x00b7
204}; 196};
205 197
diff --git a/noncore/apps/opie-console/widget_layer.cpp b/noncore/apps/opie-console/widget_layer.cpp
index ac84f8b..96dda1c 100644
--- a/noncore/apps/opie-console/widget_layer.cpp
+++ b/noncore/apps/opie-console/widget_layer.cpp
@@ -1,148 +1,144 @@
1/* ------------------------------------------------------------------------- */ 1/* ------------------------------------------------------------------------- */
2/* */ 2/* */
3/* widget_layer.cpp Widget Layer */ 3/* widget_layer.cpp Widget Layer */
4/* */ 4/* */
5/* opie developers <opie@handhelds.org> */ 5/* opie developers <opie@handhelds.org> */
6/* */ 6/* */
7/* ------------------------------------------------------------------------- */ 7/* ------------------------------------------------------------------------- */
8 8
9 9
10 10
11#include "widget_layer.h" 11#include "widget_layer.h"
12 12
13#include <qclipboard.h>
14#include <qregexp.h>
15#include <qglobal.h>
16 13
17#include <string.h> 14#include <string.h>
18//#include < 15//#include <
19 16
20#include "common.h"
21 17
22 18
23 19
24WidgetLayer::WidgetLayer( const Profile &config, QWidget *parent, const char *name ) : QFrame( parent, name ) 20WidgetLayer::WidgetLayer( const Profile &config, QWidget *parent, const char *name ) : QFrame( parent, name )
25{ 21{
26 // get the clipboard 22 // get the clipboard
27 m_clipboard = QApplication::clipboard(); 23 m_clipboard = QApplication::clipboard();
28 24
29 // when data on clipboard changes, clear selection 25 // when data on clipboard changes, clear selection
30 QObject::connect( (QObject*) m_clipboard, SIGNAL( dataChanged() ), 26 QObject::connect( (QObject*) m_clipboard, SIGNAL( dataChanged() ),
31 (QObject*)this, SLOT( onClearSelection() ) ); 27 (QObject*)this, SLOT( onClearSelection() ) );
32 28
33 // initialize vars: 29 // initialize vars:
34 m_lines = 1; 30 m_lines = 1;
35 m_columns = 1; 31 m_columns = 1;
36 m_resizing = false; 32 m_resizing = false;
37 33
38 // just for demonstrating 34 // just for demonstrating
39 //m_image = QArray<Character>( m_lines * m_columns ); 35 //m_image = QArray<Character>( m_lines * m_columns );
40 m_image = QArray<Character>( 1 ); 36 m_image = QArray<Character>( 1 );
41 37
42 // we need to install an event filter, 38 // we need to install an event filter,
43 // to emit keypresses. 39 // to emit keypresses.
44 qApp->installEventFilter( this ); 40 qApp->installEventFilter( this );
45 41
46} 42}
47 43
48 44
49WidgetLayer::~WidgetLayer() 45WidgetLayer::~WidgetLayer()
50{ 46{
51 // clean up 47 // clean up
52 delete m_image; 48 delete m_image;
53} 49}
54 50
55 51
56QSize WidgetLayer::sizeHint() 52QSize WidgetLayer::sizeHint()
57{ 53{
58 return size(); 54 return size();
59} 55}
60 56
61 57
62/* --------------------------------- audio ---------------------------------- */ 58/* --------------------------------- audio ---------------------------------- */
63 59
64void WidgetLayer::bell() 60void WidgetLayer::bell()
65{ 61{
66 QApplication::beep(); 62 QApplication::beep();
67} 63}
68 64
69bool WidgetLayer::eventFilter( QObject *obj, QEvent *e ) 65bool WidgetLayer::eventFilter( QObject *obj, QEvent *e )
70{ 66{
71 if ( (e->type() == QEvent::Accel || 67 if ( (e->type() == QEvent::Accel ||
72 e->type() == QEvent::AccelAvailable ) && qApp->focusWidget() == this ) { 68 e->type() == QEvent::AccelAvailable ) && qApp->focusWidget() == this ) {
73 static_cast<QKeyEvent *>( e )->ignore(); 69 static_cast<QKeyEvent *>( e )->ignore();
74 return true; 70 return true;
75 } 71 }
76 if ( obj != this /* when embedded */ && obj != parent() /* when standalone */ ) 72 if ( obj != this /* when embedded */ && obj != parent() /* when standalone */ )
77 return false; // not us 73 return false; // not us
78 74
79#ifdef FAKE_CTRL_AND_ALT 75#ifdef FAKE_CTRL_AND_ALT
80 static bool control = false; 76 static bool control = false;
81 static bool alt = false; 77 static bool alt = false;
82// qDebug(" Has a keyboard with no CTRL and ALT keys, but we fake it:"); 78// qDebug(" Has a keyboard with no CTRL and ALT keys, but we fake it:");
83 bool dele = false; 79 bool dele = false;
84 if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) { 80 if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) {
85 QKeyEvent* ke = (QKeyEvent*)e; 81 QKeyEvent* ke = (QKeyEvent*)e;
86 bool keydown = e->type() == QEvent::KeyPress || ke->isAutoRepeat(); 82 bool keydown = e->type() == QEvent::KeyPress || ke->isAutoRepeat();
87 switch (ke->key()) { 83 switch (ke->key()) {
88 case Key_F9: // let this be "Control" 84 case Key_F9: // let this be "Control"
89 control = keydown; 85 control = keydown;
90 e = new QKeyEvent(QEvent::KeyPress, Key_Control, 0, ke->state()); 86 e = new QKeyEvent(QEvent::KeyPress, Key_Control, 0, ke->state());
91 dele=TRUE; 87 dele=TRUE;
92 break; 88 break;
93 case Key_F13: // let this be "Alt" 89 case Key_F13: // let this be "Alt"
94 alt = keydown; 90 alt = keydown;
95 e = new QKeyEvent(QEvent::KeyPress, Key_Alt, 0, ke->state()); 91 e = new QKeyEvent(QEvent::KeyPress, Key_Alt, 0, ke->state());
96 dele=TRUE; 92 dele=TRUE;
97 break; 93 break;
98 default: 94 default:
99 if ( control ) { 95 if ( control ) {
100 int a = toupper(ke->ascii())-64; 96 int a = toupper(ke->ascii())-64;
101 if ( a >= 0 && a < ' ' ) { 97 if ( a >= 0 && a < ' ' ) {
102 e = new QKeyEvent(e->type(), ke->key(), 98 e = new QKeyEvent(e->type(), ke->key(),
103 a, ke->state()|ControlButton, 99 a, ke->state()|ControlButton,
104QChar(a,0)); 100QChar(a,0));
105 dele=TRUE; 101 dele=TRUE;
106 } 102 }
107 } 103 }
108 if ( alt ) { 104 if ( alt ) {
109 e = new QKeyEvent(e->type(), ke->key(), 105 e = new QKeyEvent(e->type(), ke->key(),
110 ke->ascii(), ke->state()|AltButton, ke->text()); 106 ke->ascii(), ke->state()|AltButton, ke->text());
111 dele=TRUE; 107 dele=TRUE;
112 } 108 }
113 } 109 }
114 } 110 }
115#endif 111#endif
116 112
117 if ( e->type() == QEvent::KeyPress ) { 113 if ( e->type() == QEvent::KeyPress ) {
118 QKeyEvent* ke = (QKeyEvent*)e; 114 QKeyEvent* ke = (QKeyEvent*)e;
119 //actSel=0; // Key stroke implies a screen update, so Widget won't 115 //actSel=0; // Key stroke implies a screen update, so Widget won't
120 // know where the current selection is. 116 // know where the current selection is.
121 117
122// qDebug("key pressed is 0x%x",ke->key()); 118// qDebug("key pressed is 0x%x",ke->key());
123 119
124 if( ke->state() == ShiftButton && ke->key() == Key_Tab) { //lets hardcode this sucker 120 if( ke->state() == ShiftButton && ke->key() == Key_Tab) { //lets hardcode this sucker
125 insertText("\\"); // expose 121 insertText("\\"); // expose
126 } else 122 } else
127 emit keyPressed( ke ); // expose 123 emit keyPressed( ke ); // expose
128 ke->accept(); 124 ke->accept();
129#ifdef FAKE_CTRL_AND_ALT 125#ifdef FAKE_CTRL_AND_ALT
130 if ( dele ) delete e; 126 if ( dele ) delete e;
131#endif 127#endif
132 return true; // stop the event 128 return true; // stop the event
133 } 129 }
134 return QFrame::eventFilter( obj, e ); 130 return QFrame::eventFilter( obj, e );
135} 131}
136 132
137 133
138/* --------------------------------- screen --------------------------------- */ 134/* --------------------------------- screen --------------------------------- */
139 135
140 136
141void WidgetLayer::propagateSize() 137void WidgetLayer::propagateSize()
142{ 138{
143 QArray<Character> oldimage = m_image.copy(); 139 QArray<Character> oldimage = m_image.copy();
144 int oldlines = m_lines; 140 int oldlines = m_lines;
145 int oldcolumns = m_columns; 141 int oldcolumns = m_columns;
146 142
147 makeImage(); 143 makeImage();
148 144