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,165 +1,163 @@
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);
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,159 +1,151 @@
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;
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,130 +1,125 @@
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:
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,174 +1,171 @@
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.
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,103 +1,100 @@
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
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,104 +1,102 @@
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);
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,97 +1,96 @@
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
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,100 +1,97 @@
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;
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,180 +1,177 @@
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.
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,108 +1,100 @@
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{
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,103 +1,102 @@
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] )
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,109 +1,101 @@
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());
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,103 +1,101 @@
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;
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,103 +1,102 @@
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
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,123 +1,113 @@
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
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,97 +1,96 @@
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 }
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,103 +1,101 @@
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:
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,101 +1,100 @@
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 );
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,109 +1,104 @@
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;
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,100 +1,98 @@
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;
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,107 +1,103 @@
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() {
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,110 +1,108 @@
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 {
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,130 +1,125 @@
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:
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,173 +1,165 @@
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();
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,116 +1,112 @@
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