summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/apps/embeddedkonsole/TEWidget.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/core/apps/embeddedkonsole/TEWidget.cpp b/core/apps/embeddedkonsole/TEWidget.cpp
index 8206e4b..cc88555 100644
--- a/core/apps/embeddedkonsole/TEWidget.cpp
+++ b/core/apps/embeddedkonsole/TEWidget.cpp
@@ -1,317 +1,322 @@
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" 52#include "session.h"
53#include <qpe/config.h> 53#include <qpe/config.h>
54 54
55 55
56#if !(QT_NO_COP) 56#if !(QT_NO_COP)
57#include <qpe/qcopenvelope_qws.h> 57#include <qpe/qcopenvelope_qws.h>
58#endif 58#endif
59 59
60#include <qclipboard.h> 60#include <qclipboard.h>
61 61
62#ifndef QT_NO_DRAGANDDROP
63#include <qdragobject.h>
64#include <qfile.h>
65#endif
66
62#include <stdio.h> 67#include <stdio.h>
63#include <stdlib.h> 68#include <stdlib.h>
64#include <unistd.h> 69#include <unistd.h>
65#include <ctype.h> 70#include <ctype.h>
66#include <sys/stat.h> 71#include <sys/stat.h>
67#include <sys/types.h> 72#include <sys/types.h>
68#include <signal.h> 73#include <signal.h>
69 74
70#include <assert.h> 75#include <assert.h>
71 76
72// #include "TEWidget.moc" 77// #include "TEWidget.moc"
73//#include <kapp.h> 78//#include <kapp.h>
74//#include <kcursor.h> 79//#include <kcursor.h>
75//#include <kurl.h> 80//#include <kurl.h>
76//#include <kdebug.h> 81//#include <kdebug.h>
77//#include <klocale.h> 82//#include <klocale.h>
78 83
79#define HERE printf("%s(%d): %s\n",__FILE__,__LINE__,__FUNCTION__) 84#define HERE printf("%s(%d): %s\n",__FILE__,__LINE__,__FUNCTION__)
80#define HCNT(Name) // { static int cnt = 1; printf("%s(%d): %s %d\n",__FILE__,__LINE__,Name,cnt++); } 85#define HCNT(Name) // { static int cnt = 1; printf("%s(%d): %s %d\n",__FILE__,__LINE__,Name,cnt++); }
81 86
82#define loc(X,Y) ((Y)*columns+(X)) 87#define loc(X,Y) ((Y)*columns+(X))
83 88
84//FIXME: the rim should normally be 1, 0 only when running in full screen mode. 89//FIXME: the rim should normally be 1, 0 only when running in full screen mode.
85#define rimX 0 // left/right rim width 90#define rimX 0 // left/right rim width
86#define rimY 0 // top/bottom rim high 91#define rimY 0 // top/bottom rim high
87 92
88#define SCRWIDTH 16 // width of the scrollbar 93#define SCRWIDTH 16 // width of the scrollbar
89 94
90#define yMouseScroll 1 95#define yMouseScroll 1
91// scroll increment used when dragging selection at top/bottom of window. 96// scroll increment used when dragging selection at top/bottom of window.
92 97
93/* ------------------------------------------------------------------------- */ 98/* ------------------------------------------------------------------------- */
94/* */ 99/* */
95/* Colors */ 100/* Colors */
96/* */ 101/* */
97/* ------------------------------------------------------------------------- */ 102/* ------------------------------------------------------------------------- */
98 103
99//FIXME: the default color table is in session.C now. 104//FIXME: the default color table is in session.C now.
100// We need a way to get rid of this one, here. 105// We need a way to get rid of this one, here.
101static const ColorEntry base_color_table[TABLE_COLORS] = 106static const ColorEntry base_color_table[TABLE_COLORS] =
102// The following are almost IBM standard color codes, with some slight 107// The following are almost IBM standard color codes, with some slight
103// gamma correction for the dim colors to compensate for bright X screens. 108// gamma correction for the dim colors to compensate for bright X screens.
104// It contains the 8 ansiterm/xterm colors in 2 intensities. 109// It contains the 8 ansiterm/xterm colors in 2 intensities.
105{ 110{
106 // Fixme: could add faint colors here, also. 111 // Fixme: could add faint colors here, also.
107 // normal 112 // normal
108 ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 1, 0 ), // Dfore, Dback 113 ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 1, 0 ), // Dfore, Dback
109 ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0x18), 0, 0 ), // Black, Red 114 ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0x18), 0, 0 ), // Black, Red
110 ColorEntry(QColor(0x18,0xB2,0x18), 0, 0 ), ColorEntry( QColor(0xB2,0x68,0x18), 0, 0 ), // Green, Yellow 115 ColorEntry(QColor(0x18,0xB2,0x18), 0, 0 ), ColorEntry( QColor(0xB2,0x68,0x18), 0, 0 ), // Green, Yellow
111 ColorEntry(QColor(0x18,0x18,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ), // Blue, Magenta 116 ColorEntry(QColor(0x18,0x18,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ), // Blue, Magenta
112 ColorEntry(QColor(0x18,0xB2,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 0, 0 ), // Cyan, White 117 ColorEntry(QColor(0x18,0xB2,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 0, 0 ), // Cyan, White
113 // intensiv 118 // intensiv
114 ColorEntry(QColor(0x00,0x00,0x00), 0, 1 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 1, 0 ), 119 ColorEntry(QColor(0x00,0x00,0x00), 0, 1 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 1, 0 ),
115 ColorEntry(QColor(0x68,0x68,0x68), 0, 0 ), ColorEntry( QColor(0xFF,0x54,0x54), 0, 0 ), 120 ColorEntry(QColor(0x68,0x68,0x68), 0, 0 ), ColorEntry( QColor(0xFF,0x54,0x54), 0, 0 ),
116 ColorEntry(QColor(0x54,0xFF,0x54), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0x54), 0, 0 ), 121 ColorEntry(QColor(0x54,0xFF,0x54), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0x54), 0, 0 ),
117 ColorEntry(QColor(0x54,0x54,0xFF), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ), 122 ColorEntry(QColor(0x54,0x54,0xFF), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ),
118 ColorEntry(QColor(0x54,0xFF,0xFF), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 0, 0 ) 123 ColorEntry(QColor(0x54,0xFF,0xFF), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 0, 0 )
119}; 124};
120 125
121/* Note that we use ANSI color order (bgr), while IBMPC color order is (rgb) 126/* Note that we use ANSI color order (bgr), while IBMPC color order is (rgb)
122 127
123 Code 0 1 2 3 4 5 6 7 128 Code 0 1 2 3 4 5 6 7
124 ----------- ------- ------- ------- ------- ------- ------- ------- ------- 129 ----------- ------- ------- ------- ------- ------- ------- ------- -------
125 ANSI (bgr) Black Red Green Yellow Blue Magenta Cyan White 130 ANSI (bgr) Black Red Green Yellow Blue Magenta Cyan White
126 IBMPC (rgb) Black Blue Green Cyan Red Magenta Yellow White 131 IBMPC (rgb) Black Blue Green Cyan Red Magenta Yellow White
127*/ 132*/
128 133
129QColor TEWidget::getDefaultBackColor() 134QColor TEWidget::getDefaultBackColor()
130{ 135{
131 return color_table[DEFAULT_BACK_COLOR].color; 136 return color_table[DEFAULT_BACK_COLOR].color;
132} 137}
133 138
134const ColorEntry* TEWidget::getColorTable() const 139const ColorEntry* TEWidget::getColorTable() const
135{ 140{
136 return color_table; 141 return color_table;
137} 142}
138 143
139const ColorEntry* TEWidget::getdefaultColorTable() const 144const ColorEntry* TEWidget::getdefaultColorTable() const
140{ 145{
141 return base_color_table; 146 return base_color_table;
142} 147}
143 148
144 149
145const QPixmap *TEWidget::backgroundPixmap() 150const QPixmap *TEWidget::backgroundPixmap()
146{ 151{
147 static QPixmap *bg = new QPixmap("~/qpim/main/pics/faded_bg.xpm"); 152 static QPixmap *bg = new QPixmap("~/qpim/main/pics/faded_bg.xpm");
148 const QPixmap *pm = bg; 153 const QPixmap *pm = bg;
149 return pm; 154 return pm;
150} 155}
151 156
152void TEWidget::setColorTable(const ColorEntry table[]) 157void TEWidget::setColorTable(const ColorEntry table[])
153{ 158{
154 for (int i = 0; i < TABLE_COLORS; i++) color_table[i] = table[i]; 159 for (int i = 0; i < TABLE_COLORS; i++) color_table[i] = table[i];
155 160
156 const QPixmap* pm = backgroundPixmap(); 161 const QPixmap* pm = backgroundPixmap();
157 if (!pm) setBackgroundColor(color_table[DEFAULT_BACK_COLOR].color); 162 if (!pm) setBackgroundColor(color_table[DEFAULT_BACK_COLOR].color);
158 update(); 163 update();
159} 164}
160 165
161//FIXME: add backgroundPixmapChanged. 166//FIXME: add backgroundPixmapChanged.
162 167
163/* ------------------------------------------------------------------------- */ 168/* ------------------------------------------------------------------------- */
164/* */ 169/* */
165/* Font */ 170/* Font */
166/* */ 171/* */
167/* ------------------------------------------------------------------------- */ 172/* ------------------------------------------------------------------------- */
168 173
169/* 174/*
170 The VT100 has 32 special graphical characters. The usual vt100 extended 175 The VT100 has 32 special graphical characters. The usual vt100 extended
171 xterm fonts have these at 0x00..0x1f. 176 xterm fonts have these at 0x00..0x1f.
172 177
173 QT's iso mapping leaves 0x00..0x7f without any changes. But the graphicals 178 QT's iso mapping leaves 0x00..0x7f without any changes. But the graphicals
174 come in here as proper unicode characters. 179 come in here as proper unicode characters.
175 180
176 We treat non-iso10646 fonts as VT100 extended and do the requiered mapping 181 We treat non-iso10646 fonts as VT100 extended and do the requiered mapping
177 from unicode to 0x00..0x1f. The remaining translation is then left to the 182 from unicode to 0x00..0x1f. The remaining translation is then left to the
178 QCodec. 183 QCodec.
179*/ 184*/
180 185
181// assert for i in [0..31] : vt100extended(vt100_graphics[i]) == i. 186// assert for i in [0..31] : vt100extended(vt100_graphics[i]) == i.
182 187
183unsigned short vt100_graphics[32] = 188unsigned short vt100_graphics[32] =
184{ // 0/8 1/9 2/10 3/11 4/12 5/13 6/14 7/15 189{ // 0/8 1/9 2/10 3/11 4/12 5/13 6/14 7/15
185 0x0020, 0x25C6, 0x2592, 0x2409, 0x240c, 0x240d, 0x240a, 0x00b0, 190 0x0020, 0x25C6, 0x2592, 0x2409, 0x240c, 0x240d, 0x240a, 0x00b0,
186 0x00b1, 0x2424, 0x240b, 0x2518, 0x2510, 0x250c, 0x2514, 0x253c, 191 0x00b1, 0x2424, 0x240b, 0x2518, 0x2510, 0x250c, 0x2514, 0x253c,
187 0xF800, 0xF801, 0x2500, 0xF803, 0xF804, 0x251c, 0x2524, 0x2534, 192 0xF800, 0xF801, 0x2500, 0xF803, 0xF804, 0x251c, 0x2524, 0x2534,
188 0x252c, 0x2502, 0x2264, 0x2265, 0x03C0, 0x2260, 0x00A3, 0x00b7 193 0x252c, 0x2502, 0x2264, 0x2265, 0x03C0, 0x2260, 0x00A3, 0x00b7
189}; 194};
190 195
191static QChar vt100extended(QChar c) 196static QChar vt100extended(QChar c)
192{ 197{
193 switch (c.unicode()) 198 switch (c.unicode())
194 { 199 {
195 case 0x25c6 : return 1; 200 case 0x25c6 : return 1;
196 case 0x2592 : return 2; 201 case 0x2592 : return 2;
197 case 0x2409 : return 3; 202 case 0x2409 : return 3;
198 case 0x240c : return 4; 203 case 0x240c : return 4;
199 case 0x240d : return 5; 204 case 0x240d : return 5;
200 case 0x240a : return 6; 205 case 0x240a : return 6;
201 case 0x00b0 : return 7; 206 case 0x00b0 : return 7;
202 case 0x00b1 : return 8; 207 case 0x00b1 : return 8;
203 case 0x2424 : return 9; 208 case 0x2424 : return 9;
204 case 0x240b : return 10; 209 case 0x240b : return 10;
205 case 0x2518 : return 11; 210 case 0x2518 : return 11;
206 case 0x2510 : return 12; 211 case 0x2510 : return 12;
207 case 0x250c : return 13; 212 case 0x250c : return 13;
208 case 0x2514 : return 14; 213 case 0x2514 : return 14;
209 case 0x253c : return 15; 214 case 0x253c : return 15;
210 case 0xf800 : return 16; 215 case 0xf800 : return 16;
211 case 0xf801 : return 17; 216 case 0xf801 : return 17;
212 case 0x2500 : return 18; 217 case 0x2500 : return 18;
213 case 0xf803 : return 19; 218 case 0xf803 : return 19;
214 case 0xf804 : return 20; 219 case 0xf804 : return 20;
215 case 0x251c : return 21; 220 case 0x251c : return 21;
216 case 0x2524 : return 22; 221 case 0x2524 : return 22;
217 case 0x2534 : return 23; 222 case 0x2534 : return 23;
218 case 0x252c : return 24; 223 case 0x252c : return 24;
219 case 0x2502 : return 25; 224 case 0x2502 : return 25;
220 case 0x2264 : return 26; 225 case 0x2264 : return 26;
221 case 0x2265 : return 27; 226 case 0x2265 : return 27;
222 case 0x03c0 : return 28; 227 case 0x03c0 : return 28;
223 case 0x2260 : return 29; 228 case 0x2260 : return 29;
224 case 0x00a3 : return 30; 229 case 0x00a3 : return 30;
225 case 0x00b7 : return 31; 230 case 0x00b7 : return 31;
226 } 231 }
227 return c; 232 return c;
228} 233}
229 234
230static QChar identicalMap(QChar c) 235static QChar identicalMap(QChar c)
231{ 236{
232 return c; 237 return c;
233} 238}
234 239
235void TEWidget::fontChange(const QFont &) 240void TEWidget::fontChange(const QFont &)
236{ 241{
237 QFontMetrics fm(font()); 242 QFontMetrics fm(font());
238 font_h = fm.height(); 243 font_h = fm.height();
239 // font_w = fm.maxWidth(); 244 // font_w = fm.maxWidth();
240 font_w = fm.width("m"); 245 font_w = fm.width("m");
241 font_a = fm.ascent(); 246 font_a = fm.ascent();
242 printf("font h=%d max_width=%d width_m=%d assent=%d\n", font_h, 247 printf("font h=%d max_width=%d width_m=%d assent=%d\n", font_h,
243 fm.maxWidth(), font_w, font_a); 248 fm.maxWidth(), font_w, font_a);
244 249
245 //printf("font_h: %d\n",font_h); 250 //printf("font_h: %d\n",font_h);
246 //printf("font_w: %d\n",font_w); 251 //printf("font_w: %d\n",font_w);
247 //printf("font_a: %d\n",font_a); 252 //printf("font_a: %d\n",font_a);
248 //printf("charset: %s\n",QFont::encodingName(font().charSet()).ascii()); 253 //printf("charset: %s\n",QFont::encodingName(font().charSet()).ascii());
249 //printf("rawname: %s\n",font().rawName().ascii()); 254 //printf("rawname: %s\n",font().rawName().ascii());
250 fontMap = 255 fontMap =
251#if QT_VERSION < 300 256#if QT_VERSION < 300
252 strcmp(QFont::encodingName(font().charSet()).ascii(),"iso10646") 257 strcmp(QFont::encodingName(font().charSet()).ascii(),"iso10646")
253 ? vt100extended 258 ? vt100extended
254 : 259 :
255#endif 260#endif
256 identicalMap; 261 identicalMap;
257 propagateSize(); 262 propagateSize();
258 update(); 263 update();
259} 264}
260 265
261void TEWidget::setVTFont(const QFont& f) 266void TEWidget::setVTFont(const QFont& f)
262{ 267{
263 QFrame::setFont(f); 268 QFrame::setFont(f);
264} 269}
265 270
266QFont TEWidget::getVTFont() { 271QFont TEWidget::getVTFont() {
267 return font(); 272 return font();
268} 273}
269 274
270void TEWidget::setFont(const QFont &) 275void TEWidget::setFont(const QFont &)
271{ 276{
272 // ignore font change request if not coming from konsole itself 277 // ignore font change request if not coming from konsole itself
273} 278}
274 279
275/* ------------------------------------------------------------------------- */ 280/* ------------------------------------------------------------------------- */
276/* */ 281/* */
277/* Constructor / Destructor */ 282/* Constructor / Destructor */
278/* */ 283/* */
279/* ------------------------------------------------------------------------- */ 284/* ------------------------------------------------------------------------- */
280 285
281TEWidget::TEWidget(QWidget *parent, const char *name) : QFrame(parent,name) 286TEWidget::TEWidget(QWidget *parent, const char *name) : QFrame(parent,name)
282{ 287{
283#ifndef QT_NO_CLIPBOARD 288#ifndef QT_NO_CLIPBOARD
284 cb = QApplication::clipboard(); 289 cb = QApplication::clipboard();
285 QObject::connect( (QObject*)cb, SIGNAL(dataChanged()), 290 QObject::connect( (QObject*)cb, SIGNAL(dataChanged()),
286 this, SLOT(onClearSelection()) ); 291 this, SLOT(onClearSelection()) );
287#endif 292#endif
288 293
289 scrollbar = new QScrollBar(this); 294 scrollbar = new QScrollBar(this);
290 scrollbar->setCursor( arrowCursor ); 295 scrollbar->setCursor( arrowCursor );
291 connect(scrollbar, SIGNAL(valueChanged(int)), this, SLOT(scrollChanged(int))); 296 connect(scrollbar, SIGNAL(valueChanged(int)), this, SLOT(scrollChanged(int)));
292 297
293 hScrollbar = new QScrollBar(this); 298 hScrollbar = new QScrollBar(this);
294 hScrollbar->setCursor( arrowCursor ); 299 hScrollbar->setCursor( arrowCursor );
295 hScrollbar->setOrientation(QScrollBar::Horizontal); 300 hScrollbar->setOrientation(QScrollBar::Horizontal);
296 // hScrollbar->setMaximumHeight(16); 301 // hScrollbar->setMaximumHeight(16);
297 302
298 connect( hScrollbar, SIGNAL(valueChanged(int)), this, SLOT( hScrollChanged(int))); 303 connect( hScrollbar, SIGNAL(valueChanged(int)), this, SLOT( hScrollChanged(int)));
299 304
300 Config cfg( "Konsole" ); 305 Config cfg( "Konsole" );
301 cfg.setGroup("ScrollBar"); 306 cfg.setGroup("ScrollBar");
302 switch( cfg.readNumEntry("Position",2)){ 307 switch( cfg.readNumEntry("Position",2)){
303 case 0: 308 case 0:
304 scrollLoc = SCRNONE; 309 scrollLoc = SCRNONE;
305 break; 310 break;
306 case 1: 311 case 1:
307 scrollLoc = SCRLEFT; 312 scrollLoc = SCRLEFT;
308 break; 313 break;
309 case 2: 314 case 2:
310 scrollLoc = SCRRIGHT; 315 scrollLoc = SCRRIGHT;
311 break; 316 break;
312 }; 317 };
313 318
314 useHorzScroll=cfg.readBoolEntry("HorzScroll",0); 319 useHorzScroll=cfg.readBoolEntry("HorzScroll",0);
315 320
316 blinkT = new QTimer(this); 321 blinkT = new QTimer(this);
317 connect(blinkT, SIGNAL(timeout()), this, SLOT(blinkEvent())); 322 connect(blinkT, SIGNAL(timeout()), this, SLOT(blinkEvent()));