summaryrefslogtreecommitdiff
authorzecke <zecke>2004-02-29 15:40:12 (UTC)
committer zecke <zecke>2004-02-29 15:40:12 (UTC)
commitf8e1f2c5201f7e86abaa7365040d919e2afcd2ae (patch) (unidiff)
treea0ef1ee60b28c4918d31d947c303103fc2a447b3
parenta731ace5bdbef2354209c655805ebac5298dc2df (diff)
downloadopie-f8e1f2c5201f7e86abaa7365040d919e2afcd2ae.zip
opie-f8e1f2c5201f7e86abaa7365040d919e2afcd2ae.tar.gz
opie-f8e1f2c5201f7e86abaa7365040d919e2afcd2ae.tar.bz2
Hehe Fix the #ifdef properly.... gives me my fonts back
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/apps/embeddedkonsole/konsole.cpp2
1 files changed, 0 insertions, 2 deletions
diff --git a/core/apps/embeddedkonsole/konsole.cpp b/core/apps/embeddedkonsole/konsole.cpp
index 2c0001f..eafc12e 100644
--- a/core/apps/embeddedkonsole/konsole.cpp
+++ b/core/apps/embeddedkonsole/konsole.cpp
@@ -1,1202 +1,1200 @@
1 1
2/* ---------------------------------------------------------------------- */ 2/* ---------------------------------------------------------------------- */
3/* */ 3/* */
4/* [main.C] Konsole */ 4/* [main.C] Konsole */
5/* */ 5/* */
6/* ---------------------------------------------------------------------- */ 6/* ---------------------------------------------------------------------- */
7/* */ 7/* */
8/* Copyright (c) 1997,1998 by Lars Doelle <lars.doelle@on-line.de> */ 8/* Copyright (c) 1997,1998 by Lars Doelle <lars.doelle@on-line.de> */
9/* */ 9/* */
10/* This file is part of Konsole, an X terminal. */ 10/* This file is part of Konsole, an X terminal. */
11/* */ 11/* */
12/* The material contained in here more or less directly orginates from */ 12/* The material contained in here more or less directly orginates from */
13/* kvt, which is copyright (c) 1996 by Matthias Ettrich <ettrich@kde.org> */ 13/* kvt, which is copyright (c) 1996 by Matthias Ettrich <ettrich@kde.org> */
14/* */ 14/* */
15/* ---------------------------------------------------------------------- */ 15/* ---------------------------------------------------------------------- */
16/* */ 16/* */
17/* Ported Konsole to Qt/Embedded */ 17/* Ported Konsole to Qt/Embedded */
18/* */ 18/* */
19/* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */ 19/* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */
20/* */ 20/* */
21/* -------------------------------------------------------------------------- */ 21/* -------------------------------------------------------------------------- */
22// enhancements added by L.J. Potter <ljp@llornkcor.com> 22// enhancements added by L.J. Potter <ljp@llornkcor.com>
23// enhancements added by Phillip Kuhn 23// enhancements added by Phillip Kuhn
24 24
25#include <stdlib.h> 25#include <stdlib.h>
26 26
27#ifdef QT_QWS_OPIE 27#ifdef QT_QWS_OPIE
28#include <opie2/ocolorpopupmenu.h> 28#include <opie2/ocolorpopupmenu.h>
29#endif 29#endif
30 30
31#include <qpe/resource.h> 31#include <qpe/resource.h>
32 32
33#include <qdir.h> 33#include <qdir.h>
34#include <qevent.h> 34#include <qevent.h>
35#include <qdragobject.h> 35#include <qdragobject.h>
36#include <qobjectlist.h> 36#include <qobjectlist.h>
37#include <qtoolbutton.h> 37#include <qtoolbutton.h>
38#include <qtoolbar.h> 38#include <qtoolbar.h>
39#include <qpushbutton.h> 39#include <qpushbutton.h>
40#include <qfontdialog.h> 40#include <qfontdialog.h>
41#include <qglobal.h> 41#include <qglobal.h>
42#include <qpainter.h> 42#include <qpainter.h>
43#include <qmenubar.h> 43#include <qmenubar.h>
44#include <qmessagebox.h> 44#include <qmessagebox.h>
45#include <qaction.h> 45#include <qaction.h>
46#include <qapplication.h> 46#include <qapplication.h>
47#include <qfontmetrics.h> 47#include <qfontmetrics.h>
48#include <qcombobox.h> 48#include <qcombobox.h>
49#include <qevent.h> 49#include <qevent.h>
50#include <qtabwidget.h> 50#include <qtabwidget.h>
51#include <qtabbar.h> 51#include <qtabbar.h>
52#include <qpe/config.h> 52#include <qpe/config.h>
53#include <qstringlist.h> 53#include <qstringlist.h>
54#include <qpalette.h> 54#include <qpalette.h>
55#include <qfontdatabase.h> 55#include <qfontdatabase.h>
56#include <qfile.h> 56#include <qfile.h>
57#include <qspinbox.h> 57#include <qspinbox.h>
58#include <qlayout.h> 58#include <qlayout.h>
59#include <qvbox.h> 59#include <qvbox.h>
60 60
61#include <sys/wait.h> 61#include <sys/wait.h>
62#include <stdio.h> 62#include <stdio.h>
63#include <stdlib.h> 63#include <stdlib.h>
64#include <assert.h> 64#include <assert.h>
65 65
66#include "konsole.h" 66#include "konsole.h"
67#include "keytrans.h" 67#include "keytrans.h"
68#include "commandeditdialog.h" 68#include "commandeditdialog.h"
69 69
70class EKNumTabBar : public QTabBar 70class EKNumTabBar : public QTabBar
71{ 71{
72public: 72public:
73 EKNumTabBar(QWidget *parent = 0, const char *name = 0) : 73 EKNumTabBar(QWidget *parent = 0, const char *name = 0) :
74 QTabBar(parent, name) 74 QTabBar(parent, name)
75 {} 75 {}
76 76
77 // QList<QTab> *getTabList() { return(tabList()); } 77 // QList<QTab> *getTabList() { return(tabList()); }
78 78
79 void numberTabs() 79 void numberTabs()
80 { 80 {
81 // Yes, it really is this messy. QTabWidget needs functions 81 // Yes, it really is this messy. QTabWidget needs functions
82 // that provide acces to tabs in a sequential way. 82 // that provide acces to tabs in a sequential way.
83 int m=INT_MIN; 83 int m=INT_MIN;
84 for (int i=0; i<count(); i++) 84 for (int i=0; i<count(); i++)
85 { 85 {
86 QTab* left=0; 86 QTab* left=0;
87 QListIterator<QTab> it(*tabList()); 87 QListIterator<QTab> it(*tabList());
88 int x=INT_MAX; 88 int x=INT_MAX;
89 for( QTab* t; (t=it.current()); ++it ) 89 for( QTab* t; (t=it.current()); ++it )
90 { 90 {
91 int tx = t->rect().x(); 91 int tx = t->rect().x();
92 if ( tx<x && tx>m ) 92 if ( tx<x && tx>m )
93 { 93 {
94 x = tx; 94 x = tx;
95 left = t; 95 left = t;
96 } 96 }
97 } 97 }
98 if ( left ) 98 if ( left )
99 { 99 {
100 left->setText(QString::number(i+1)); 100 left->setText(QString::number(i+1));
101 m = left->rect().x(); 101 m = left->rect().x();
102 } 102 }
103 } 103 }
104 } 104 }
105 105
106 virtual QSize sizeHint() const 106 virtual QSize sizeHint() const
107 { 107 {
108 if (isHidden()) 108 if (isHidden())
109 { 109 {
110 return(QSize(0,0)); 110 return(QSize(0,0));
111 } 111 }
112 else 112 else
113 { 113 {
114 QSize size = QTabBar::sizeHint(); 114 QSize size = QTabBar::sizeHint();
115 int shrink = 5; 115 int shrink = 5;
116 if (qApp->desktop()->width() > 600 || qApp->desktop()->height() > 600) 116 if (qApp->desktop()->width() > 600 || qApp->desktop()->height() > 600)
117 { 117 {
118 shrink = 10; 118 shrink = 10;
119 } 119 }
120 size.setHeight(size.height() - shrink); 120 size.setHeight(size.height() - shrink);
121 return(size); 121 return(size);
122 } 122 }
123 } 123 }
124 124
125}; 125};
126 126
127class EKNumTabWidget : public QTabWidget 127class EKNumTabWidget : public QTabWidget
128{ 128{
129public: 129public:
130 EKNumTabWidget(QWidget* parent) : QTabWidget(parent) 130 EKNumTabWidget(QWidget* parent) : QTabWidget(parent)
131 { 131 {
132 setTabBar(new EKNumTabBar(parent,"EKTabBar")); 132 setTabBar(new EKNumTabBar(parent,"EKTabBar"));
133 setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) ); 133 setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) );
134 } 134 }
135 135
136 EKNumTabBar *getTabBar() const 136 EKNumTabBar *getTabBar() const
137 { 137 {
138 return ((EKNumTabBar*)tabBar()); 138 return ((EKNumTabBar*)tabBar());
139 } 139 }
140 140
141 141
142 void addTab(QWidget* w) 142 void addTab(QWidget* w)
143 { 143 {
144 QTab* t = new QTab(QString::number(tabBar()->count()+1)); 144 QTab* t = new QTab(QString::number(tabBar()->count()+1));
145 QTabWidget::addTab(w,t); 145 QTabWidget::addTab(w,t);
146 } 146 }
147 147
148 void removeTab(QWidget* w) 148 void removeTab(QWidget* w)
149 { 149 {
150 removePage(w); 150 removePage(w);
151 ((EKNumTabBar*)tabBar())->numberTabs(); 151 ((EKNumTabBar*)tabBar())->numberTabs();
152 } 152 }
153}; 153};
154 154
155// This could be configurable or dynamicly generated from the bash history 155// This could be configurable or dynamicly generated from the bash history
156// file of the user 156// file of the user
157static const char *commonCmds[] = 157static const char *commonCmds[] =
158 { 158 {
159 "ls ", // I left this here, cause it looks better than the first alpha 159 "ls ", // I left this here, cause it looks better than the first alpha
160 "cardctl eject", 160 "cardctl eject",
161 "cat ", 161 "cat ",
162 "cd ", 162 "cd ",
163 "chmod ", 163 "chmod ",
164 "clear", 164 "clear",
165 "cp ", 165 "cp ",
166 "dc ", 166 "dc ",
167 "df ", 167 "df ",
168 "dmesg", 168 "dmesg",
169 "echo ", 169 "echo ",
170 "env", 170 "env",
171 "find ", 171 "find ",
172 "free", 172 "free",
173 "grep ", 173 "grep ",
174 "ifconfig ", 174 "ifconfig ",
175 "ipkg ", 175 "ipkg ",
176 "mkdir ", 176 "mkdir ",
177 "mv ", 177 "mv ",
178 "nc localhost 7776", 178 "nc localhost 7776",
179 "nc localhost 7777", 179 "nc localhost 7777",
180 "netstat ", 180 "netstat ",
181 "nslookup ", 181 "nslookup ",
182 "ping ", 182 "ping ",
183 "ps aux", 183 "ps aux",
184 "pwd ", 184 "pwd ",
185 "qcop QPE/System 'linkChanged(QString)' ''", 185 "qcop QPE/System 'linkChanged(QString)' ''",
186 "qcop QPE/System 'restart()'", 186 "qcop QPE/System 'restart()'",
187 "qcop QPE/System 'quit()'", 187 "qcop QPE/System 'quit()'",
188 "rm ", 188 "rm ",
189 "rmdir ", 189 "rmdir ",
190 "route ", 190 "route ",
191 "set ", 191 "set ",
192 "traceroute", 192 "traceroute",
193 193
194 /* 194 /*
195 "gzip", 195 "gzip",
196 "gunzip", 196 "gunzip",
197 "chgrp", 197 "chgrp",
198 "chown", 198 "chown",
199 "date", 199 "date",
200 "dd", 200 "dd",
201 "df", 201 "df",
202 "dmesg", 202 "dmesg",
203 "fuser", 203 "fuser",
204 "hostname", 204 "hostname",
205 "kill", 205 "kill",
206 "killall", 206 "killall",
207 "ln", 207 "ln",
208 "ping", 208 "ping",
209 "mount", 209 "mount",
210 "more", 210 "more",
211 "sort", 211 "sort",
212 "touch", 212 "touch",
213 "umount", 213 "umount",
214 "mknod", 214 "mknod",
215 "netstat", 215 "netstat",
216 */ 216 */
217 217
218 "exit", 218 "exit",
219 NULL 219 NULL
220 }; 220 };
221 221
222 222
223Konsole::Konsole(QWidget* parent, const char* name, WFlags fl) : 223Konsole::Konsole(QWidget* parent, const char* name, WFlags fl) :
224 QMainWindow(parent, name, fl) 224 QMainWindow(parent, name, fl)
225{ 225{
226 QStrList args; 226 QStrList args;
227 init("/bin/bash",args); 227 init("/bin/bash",args);
228} 228}
229 229
230Konsole::Konsole(const char* name, const char* _pgm, QStrList & _args, int) 230Konsole::Konsole(const char* name, const char* _pgm, QStrList & _args, int)
231 : QMainWindow(0, name) 231 : QMainWindow(0, name)
232{ 232{
233 init(_pgm,_args); 233 init(_pgm,_args);
234} 234}
235 235
236struct HistoryItem 236struct HistoryItem
237{ 237{
238 HistoryItem(int c, const QString &l) 238 HistoryItem(int c, const QString &l)
239 { 239 {
240 count = c; 240 count = c;
241 line = l; 241 line = l;
242 } 242 }
243 int count; 243 int count;
244 QString line; 244 QString line;
245}; 245};
246 246
247class HistoryList : public QList<HistoryItem> 247class HistoryList : public QList<HistoryItem>
248{ 248{
249 virtual int compareItems( QCollection::Item item1, QCollection::Item item2) 249 virtual int compareItems( QCollection::Item item1, QCollection::Item item2)
250 { 250 {
251 int c1 = ((HistoryItem*)item1)->count; 251 int c1 = ((HistoryItem*)item1)->count;
252 int c2 = ((HistoryItem*)item2)->count; 252 int c2 = ((HistoryItem*)item2)->count;
253 if (c1 > c2) 253 if (c1 > c2)
254 return(1); 254 return(1);
255 if (c1 < c2) 255 if (c1 < c2)
256 return(-1); 256 return(-1);
257 return(0); 257 return(0);
258 } 258 }
259}; 259};
260 260
261void Konsole::initCommandList() 261void Konsole::initCommandList()
262{ 262{
263 // qDebug("Konsole::initCommandList"); 263 // qDebug("Konsole::initCommandList");
264 Config cfg( "Konsole" ); 264 Config cfg( "Konsole" );
265 cfg.setGroup("Commands"); 265 cfg.setGroup("Commands");
266 // commonCombo->setInsertionPolicy(QComboBox::AtCurrent); 266 // commonCombo->setInsertionPolicy(QComboBox::AtCurrent);
267 commonCombo->clear(); 267 commonCombo->clear();
268 268
269 if (cfg.readEntry("ShellHistory","TRUE") == "TRUE") 269 if (cfg.readEntry("ShellHistory","TRUE") == "TRUE")
270 { 270 {
271 QString histfilename = QString(getenv("HOME")) + "/.bash_history"; 271 QString histfilename = QString(getenv("HOME")) + "/.bash_history";
272 histfilename = cfg.readEntry("ShellHistoryPath",histfilename); 272 histfilename = cfg.readEntry("ShellHistoryPath",histfilename);
273 QFile histfile(histfilename); 273 QFile histfile(histfilename);
274 // note: compiler barfed on: 274 // note: compiler barfed on:
275 // QFile histfile(QString(getenv("HOME")) + "/.bash_history"); 275 // QFile histfile(QString(getenv("HOME")) + "/.bash_history");
276 if (histfile.open( IO_ReadOnly )) 276 if (histfile.open( IO_ReadOnly ))
277 { 277 {
278 QString line; 278 QString line;
279 uint i; 279 uint i;
280 HistoryList items; 280 HistoryList items;
281 281
282 int lineno = 0; 282 int lineno = 0;
283 while(!histfile.atEnd()) 283 while(!histfile.atEnd())
284 { 284 {
285 if (histfile.readLine(line, 200) < 0) 285 if (histfile.readLine(line, 200) < 0)
286 { 286 {
287 break; 287 break;
288 } 288 }
289 line = line.left(line.length()-1); 289 line = line.left(line.length()-1);
290 lineno++; 290 lineno++;
291 291
292 for(i=0; i<items.count(); i++) 292 for(i=0; i<items.count(); i++)
293 { 293 {
294 if (line == items.at(i)->line) 294 if (line == items.at(i)->line)
295 { 295 {
296 // weight recent commands & repeated commands more 296 // weight recent commands & repeated commands more
297 // by adding up the index of each command 297 // by adding up the index of each command
298 items.at(i)->count += lineno; 298 items.at(i)->count += lineno;
299 break; 299 break;
300 } 300 }
301 } 301 }
302 if (i >= items.count()) 302 if (i >= items.count())
303 { 303 {
304 items.append(new HistoryItem(lineno, line)); 304 items.append(new HistoryItem(lineno, line));
305 } 305 }
306 } 306 }
307 items.sort(); 307 items.sort();
308 int n = items.count(); 308 int n = items.count();
309 if (n > 40) 309 if (n > 40)
310 { 310 {
311 n = 40; 311 n = 40;
312 } 312 }
313 for(int i=0; i<n; i++) 313 for(int i=0; i<n; i++)
314 { 314 {
315 // should insert start of command, but keep whole thing 315 // should insert start of command, but keep whole thing
316 if (items.at(items.count()-i-1)->line.length() < 30) 316 if (items.at(items.count()-i-1)->line.length() < 30)
317 { 317 {
318 commonCombo->insertItem(items.at(items.count()-i-1)->line); 318 commonCombo->insertItem(items.at(items.count()-i-1)->line);
319 } 319 }
320 } 320 }
321 histfile.close(); 321 histfile.close();
322 } 322 }
323 } 323 }
324 if (cfg.readEntry("Commands Set","FALSE") == "FALSE") 324 if (cfg.readEntry("Commands Set","FALSE") == "FALSE")
325 { 325 {
326 for (int i = 0; commonCmds[i] != NULL; i++) 326 for (int i = 0; commonCmds[i] != NULL; i++)
327 { 327 {
328 commonCombo->insertItem(commonCmds[i]); 328 commonCombo->insertItem(commonCmds[i]);
329 } 329 }
330 } 330 }
331 else 331 else
332 { 332 {
333 for (int i = 0; i < 100; i++) 333 for (int i = 0; i < 100; i++)
334 { 334 {
335 if (!(cfg.readEntry( QString::number(i),"")).isEmpty()) 335 if (!(cfg.readEntry( QString::number(i),"")).isEmpty())
336 commonCombo->insertItem(cfg.readEntry( QString::number(i),"")); 336 commonCombo->insertItem(cfg.readEntry( QString::number(i),""));
337 } 337 }
338 } 338 }
339 339
340 340
341} 341}
342 342
343static void sig_handler(int x) 343static void sig_handler(int x)
344{ 344{
345 printf("got signal %d\n",x); 345 printf("got signal %d\n",x);
346} 346}
347 347
348void Konsole::init(const char* _pgm, QStrList & _args) 348void Konsole::init(const char* _pgm, QStrList & _args)
349{ 349{
350 350
351#if 0 351#if 0
352 for(int i=1; i<=31; i++) 352 for(int i=1; i<=31; i++)
353 { 353 {
354 if (i != SIGPIPE && i != SIGPROF && i != SIGSEGV 354 if (i != SIGPIPE && i != SIGPROF && i != SIGSEGV
355 && i != SIGINT && i != SIGILL && i != SIGTERM 355 && i != SIGINT && i != SIGILL && i != SIGTERM
356 && i != SIGBUS) 356 && i != SIGBUS)
357 signal(i,sig_handler); 357 signal(i,sig_handler);
358 } 358 }
359#endif 359#endif
360 signal(SIGSTOP, sig_handler); 360 signal(SIGSTOP, sig_handler);
361 signal(SIGCONT, sig_handler); 361 signal(SIGCONT, sig_handler);
362 signal(SIGTSTP, sig_handler); 362 signal(SIGTSTP, sig_handler);
363 363
364 b_scroll = TRUE; // histon; 364 b_scroll = TRUE; // histon;
365 n_keytab = 0; 365 n_keytab = 0;
366 n_render = 0; 366 n_render = 0;
367 startUp=0; 367 startUp=0;
368 fromMenu = FALSE; 368 fromMenu = FALSE;
369 fullscreen = false; 369 fullscreen = false;
370 370
371 setCaption( tr( "Konsole" ) ); 371 setCaption( tr( "Konsole" ) );
372 setIcon( Resource::loadPixmap( "konsole/Terminal" ) ); 372 setIcon( Resource::loadPixmap( "konsole/Terminal" ) );
373 373
374 Config cfg( "Konsole" ); 374 Config cfg( "Konsole" );
375 cfg.setGroup("Font"); 375 cfg.setGroup("Font");
376 QString tmp; 376 QString tmp;
377 377
378 // initialize the list of allowed fonts /////////////////////////////////// 378 // initialize the list of allowed fonts ///////////////////////////////////
379 379
380 QString cfgFontName = cfg.readEntry("FontName","Lcfont"); 380 QString cfgFontName = cfg.readEntry("FontName","Lcfont");
381 int cfgFontSize = cfg.readNumEntry("FontSize",18); 381 int cfgFontSize = cfg.readNumEntry("FontSize",18);
382 382
383 cfont = -1; 383 cfont = -1;
384 384
385 // this code causes repeated access to all the font files 385 // this code causes repeated access to all the font files
386 // which does slow down startup 386 // which does slow down startup
387 QFontDatabase fontDB; 387 QFontDatabase fontDB;
388 QStringList familyNames; 388 QStringList familyNames;
389 familyNames = fontDB.families( FALSE ); 389 familyNames = fontDB.families( FALSE );
390 QString s; 390 QString s;
391 int fontIndex = 0; 391 int fontIndex = 0;
392 int familyNum = 0; 392 int familyNum = 0;
393 fontList = new QPopupMenu( this ); 393 fontList = new QPopupMenu( this );
394 394
395 for(uint j = 0; j < (uint)familyNames.count(); j++) 395 for(uint j = 0; j < (uint)familyNames.count(); j++)
396 { 396 {
397 s = familyNames[j]; 397 s = familyNames[j];
398 if ( s.contains('-') ) 398 if ( s.contains('-') )
399 { 399 {
400 int i = s.find('-'); 400 int i = s.find('-');
401 s = s.right( s.length() - i - 1 ) + " [" + s.left( i ) + "]"; 401 s = s.right( s.length() - i - 1 ) + " [" + s.left( i ) + "]";
402 } 402 }
403 s[0] = s[0].upper(); 403 s[0] = s[0].upper();
404 404
405 QValueList<int> sizes = fontDB.pointSizes( familyNames[j] ); 405 QValueList<int> sizes = fontDB.pointSizes( familyNames[j] );
406 406
407 printf("family[%d] = %s with %d sizes\n", j, familyNames[j].latin1(), 407 printf("family[%d] = %s with %d sizes\n", j, familyNames[j].latin1(),
408 sizes.count()); 408 sizes.count());
409 409
410 if (sizes.count() > 0) 410 if (sizes.count() > 0)
411 { 411 {
412 QPopupMenu *sizeMenu; 412 QPopupMenu *sizeMenu;
413 QFont f; 413 QFont f;
414 int last_width = -1; 414 int last_width = -1;
415 sizeMenu = NULL; 415 sizeMenu = NULL;
416 416
417 for(uint i = 0; i < (uint)sizes.count() + 4; i++) 417 for(uint i = 0; i < (uint)sizes.count() + 4; i++)
418 { 418 {
419 // printf("family %s size %d ", familyNames[j].latin1(), sizes[i]); 419 // printf("family %s size %d ", familyNames[j].latin1(), sizes[i]);
420 // need to divide by 10 on the Z, but not otherwise 420 // need to divide by 10 on the Z, but not otherwise
421 int size; 421 int size;
422 422
423 if (i >= (uint)sizes.count()) 423 if (i >= (uint)sizes.count())
424 { 424 {
425 // try for expandable fonts 425 // try for expandable fonts
426 size = sizes[sizes.count()-1] + 2 * (i - sizes.count() + 1); 426 size = sizes[sizes.count()-1] + 2 * (i - sizes.count() + 1);
427 } 427 }
428 else 428 else
429 { 429 {
430 printf("sizes[%d] = %d\n", i, sizes[i]); 430 printf("sizes[%d] = %d\n", i, sizes[i]);
431 size = sizes[i]; 431 size = sizes[i];
432 } 432 }
433 // a hack, sizes on Z seem to be points*10
434 size /= 10;
435 433
436 f = QFont(familyNames[j], size); 434 f = QFont(familyNames[j], size);
437 f.setFixedPitch(true); 435 f.setFixedPitch(true);
438 QFontMetrics fm(f); 436 QFontMetrics fm(f);
439 // don't trust f.fixedPitch() or f.exactMatch(), they lie!! 437 // don't trust f.fixedPitch() or f.exactMatch(), they lie!!
440 if (fm.width("l") == fm.width("m") 438 if (fm.width("l") == fm.width("m")
441 && (i < (uint)sizes.count() 439 && (i < (uint)sizes.count()
442 || fm.width("m") > last_width)) 440 || fm.width("m") > last_width))
443 { 441 {
444 if (i < (uint)sizes.count()) 442 if (i < (uint)sizes.count())
445 { 443 {
446 last_width = fm.width("m"); 444 last_width = fm.width("m");
447 } 445 }
448 if (sizeMenu == NULL) 446 if (sizeMenu == NULL)
449 { 447 {
450 sizeMenu = new QPopupMenu(); 448 sizeMenu = new QPopupMenu();
451 } 449 }
452 int id = sizeMenu->insertItem(QString("%1").arg(size), fontIndex); 450 int id = sizeMenu->insertItem(QString("%1").arg(size), fontIndex);
453 sizeMenu->setItemParameter(id, fontIndex); 451 sizeMenu->setItemParameter(id, fontIndex);
454 sizeMenu->connectItem(id, this, SLOT(setFont(int))); 452 sizeMenu->connectItem(id, this, SLOT(setFont(int)));
455 QString name = s + " " + QString::number(size); 453 QString name = s + " " + QString::number(size);
456 fonts.append(new VTFont(name, f, familyNames[j], familyNum, size)); 454 fonts.append(new VTFont(name, f, familyNames[j], familyNum, size));
457 if (familyNames[j] == cfgFontName && size == cfgFontSize) 455 if (familyNames[j] == cfgFontName && size == cfgFontSize)
458 { 456 {
459 cfont = fontIndex; 457 cfont = fontIndex;
460 } 458 }
461 printf("FOUND: %s family %s size %d\n", name.latin1(), familyNames[j].latin1(), size); 459 printf("FOUND: %s family %s size %d\n", name.latin1(), familyNames[j].latin1(), size);
462 fontIndex++; 460 fontIndex++;
463 } 461 }
464 } 462 }
465 if (sizeMenu) 463 if (sizeMenu)
466 { 464 {
467 fontList->insertItem(s, sizeMenu, familyNum + 1000); 465 fontList->insertItem(s, sizeMenu, familyNum + 1000);
468 466
469 familyNum++; 467 familyNum++;
470 } 468 }
471 } 469 }
472 470
473 } 471 }
474 472
475 if (cfont < 0 || cfont >= (int)fonts.count()) 473 if (cfont < 0 || cfont >= (int)fonts.count())
476 { 474 {
477 cfont = 0; 475 cfont = 0;
478 } 476 }
479 477
480 // create terminal emulation framework //////////////////////////////////// 478 // create terminal emulation framework ////////////////////////////////////
481 nsessions = 0; 479 nsessions = 0;
482 480
483 tab = new EKNumTabWidget(this); 481 tab = new EKNumTabWidget(this);
484 // tab->setMargin(tab->margin()-5); 482 // tab->setMargin(tab->margin()-5);
485 connect(tab, SIGNAL(currentChanged(QWidget*)), this, SLOT(switchSession(QWidget*))); 483 connect(tab, SIGNAL(currentChanged(QWidget*)), this, SLOT(switchSession(QWidget*)));
486 484
487 // create terminal toolbar //////////////////////////////////////////////// 485 // create terminal toolbar ////////////////////////////////////////////////
488 setToolBarsMovable( FALSE ); 486 setToolBarsMovable( FALSE );
489 menuToolBar = new QToolBar( this ); 487 menuToolBar = new QToolBar( this );
490 menuToolBar->setHorizontalStretchable( TRUE ); 488 menuToolBar->setHorizontalStretchable( TRUE );
491 489
492 QMenuBar *menuBar = new QMenuBar( menuToolBar ); 490 QMenuBar *menuBar = new QMenuBar( menuToolBar );
493 491
494 bool c7xx = false; 492 bool c7xx = false;
495 if (qApp->desktop()->width() > 600 || qApp->desktop()->height() > 600) 493 if (qApp->desktop()->width() > 600 || qApp->desktop()->height() > 600)
496 { 494 {
497 c7xx = true; 495 c7xx = true;
498 } 496 }
499 QFont menuFont; 497 QFont menuFont;
500 menuFont.setPointSize(c7xx? 18 : 10); 498 menuFont.setPointSize(c7xx? 18 : 10);
501 qApp->setFont(menuFont, true); 499 qApp->setFont(menuFont, true);
502 500
503 setFont(cfont); 501 setFont(cfont);
504 502
505 configMenu = new QPopupMenu( this); 503 configMenu = new QPopupMenu( this);
506 colorMenu = new QPopupMenu( this); 504 colorMenu = new QPopupMenu( this);
507 scrollMenu = new QPopupMenu( this); 505 scrollMenu = new QPopupMenu( this);
508 editCommandListMenu = new QPopupMenu( this); 506 editCommandListMenu = new QPopupMenu( this);
509 507
510 configMenu->insertItem(tr("Command List"), editCommandListMenu); 508 configMenu->insertItem(tr("Command List"), editCommandListMenu);
511 509
512 bool listHidden; 510 bool listHidden;
513 cfg.setGroup("Menubar"); 511 cfg.setGroup("Menubar");
514 if( cfg.readEntry("Hidden","FALSE") == "TRUE") 512 if( cfg.readEntry("Hidden","FALSE") == "TRUE")
515 { 513 {
516 ec_cmdlist = editCommandListMenu->insertItem( tr( "Show command list" )); 514 ec_cmdlist = editCommandListMenu->insertItem( tr( "Show command list" ));
517 listHidden=TRUE; 515 listHidden=TRUE;
518 } 516 }
519 else 517 else
520 { 518 {
521 ec_cmdlist = editCommandListMenu->insertItem( tr( "Hide command list" )); 519 ec_cmdlist = editCommandListMenu->insertItem( tr( "Hide command list" ));
522 listHidden=FALSE; 520 listHidden=FALSE;
523 } 521 }
524 522
525 cfg.setGroup("Tabs"); 523 cfg.setGroup("Tabs");
526 524
527 tabMenu = new QPopupMenu(this); 525 tabMenu = new QPopupMenu(this);
528 tm_bottom = tabMenu->insertItem(tr("Bottom" )); 526 tm_bottom = tabMenu->insertItem(tr("Bottom" ));
529 tm_top = tabMenu->insertItem(tr("Top")); 527 tm_top = tabMenu->insertItem(tr("Top"));
530 tm_hidden = tabMenu->insertItem(tr("Hidden")); 528 tm_hidden = tabMenu->insertItem(tr("Hidden"));
531 529
532 configMenu->insertItem(tr("Tabs"), tabMenu); 530 configMenu->insertItem(tr("Tabs"), tabMenu);
533 531
534 tmp=cfg.readEntry("Position","Top"); 532 tmp=cfg.readEntry("Position","Top");
535 if(tmp=="Top") 533 if(tmp=="Top")
536 { 534 {
537 tab->setTabPosition(QTabWidget::Top); 535 tab->setTabPosition(QTabWidget::Top);
538 tab->getTabBar()->show(); 536 tab->getTabBar()->show();
539 tabPos = tm_top; 537 tabPos = tm_top;
540 } 538 }
541 else if (tmp=="Bottom") 539 else if (tmp=="Bottom")
542 { 540 {
543 tab->setTabPosition(QTabWidget::Bottom); 541 tab->setTabPosition(QTabWidget::Bottom);
544 tab->getTabBar()->show(); 542 tab->getTabBar()->show();
545 tabPos = tm_bottom; 543 tabPos = tm_bottom;
546 } 544 }
547 else 545 else
548 { 546 {
549 tab->getTabBar()->hide(); 547 tab->getTabBar()->hide();
550 tab->setMargin(tab->margin()); 548 tab->setMargin(tab->margin());
551 tabPos = tm_hidden; 549 tabPos = tm_hidden;
552 } 550 }
553 551
554 cm_bw = colorMenu->insertItem(tr( "Black on White")); 552 cm_bw = colorMenu->insertItem(tr( "Black on White"));
555 cm_wb = colorMenu->insertItem(tr( "White on Black")); 553 cm_wb = colorMenu->insertItem(tr( "White on Black"));
556 cm_gb = colorMenu->insertItem(tr( "Green on Black")); 554 cm_gb = colorMenu->insertItem(tr( "Green on Black"));
557 // cm_bt = colorMenu->insertItem(tr( "Black on Transparent")); 555 // cm_bt = colorMenu->insertItem(tr( "Black on Transparent"));
558 cm_br = colorMenu->insertItem(tr( "Black on Pink")); 556 cm_br = colorMenu->insertItem(tr( "Black on Pink"));
559 cm_rb = colorMenu->insertItem(tr( "Pink on Black")); 557 cm_rb = colorMenu->insertItem(tr( "Pink on Black"));
560 cm_gy = colorMenu->insertItem(tr( "Green on Yellow")); 558 cm_gy = colorMenu->insertItem(tr( "Green on Yellow"));
561 cm_bm = colorMenu->insertItem(tr( "Blue on Magenta")); 559 cm_bm = colorMenu->insertItem(tr( "Blue on Magenta"));
562 cm_mb = colorMenu->insertItem(tr( "Magenta on Blue")); 560 cm_mb = colorMenu->insertItem(tr( "Magenta on Blue"));
563 cm_cw = colorMenu->insertItem(tr( "Cyan on White")); 561 cm_cw = colorMenu->insertItem(tr( "Cyan on White"));
564 cm_wc = colorMenu->insertItem(tr( "White on Cyan")); 562 cm_wc = colorMenu->insertItem(tr( "White on Cyan"));
565 cm_bb = colorMenu->insertItem(tr( "Blue on Black")); 563 cm_bb = colorMenu->insertItem(tr( "Blue on Black"));
566 cm_ab = colorMenu->insertItem(tr( "Amber on Black")); 564 cm_ab = colorMenu->insertItem(tr( "Amber on Black"));
567 cm_default = colorMenu->insertItem(tr("default")); 565 cm_default = colorMenu->insertItem(tr("default"));
568 566
569#ifdef QT_QWS_OPIE 567#ifdef QT_QWS_OPIE
570 568
571 colorMenu->insertItem(tr( "Custom")); 569 colorMenu->insertItem(tr( "Custom"));
572#endif 570#endif
573 571
574 configMenu->insertItem(tr( "Colors") ,colorMenu); 572 configMenu->insertItem(tr( "Colors") ,colorMenu);
575 573
576 sessionList = new QPopupMenu(this); 574 sessionList = new QPopupMenu(this);
577 sessionList-> insertItem ( Resource::loadPixmap ( "konsole/Terminal" ), tr( "new session" ), this, 575 sessionList-> insertItem ( Resource::loadPixmap ( "konsole/Terminal" ), tr( "new session" ), this,
578 SLOT(newSession()) ); 576 SLOT(newSession()) );
579 577
580 // connect( fontList, SIGNAL( activated(int) ), this, SLOT( fontChanged(int) )); 578 // connect( fontList, SIGNAL( activated(int) ), this, SLOT( fontChanged(int) ));
581 connect( configMenu, SIGNAL( activated(int) ), this, SLOT( configMenuSelected(int) )); 579 connect( configMenu, SIGNAL( activated(int) ), this, SLOT( configMenuSelected(int) ));
582 connect( colorMenu, SIGNAL( activated(int) ), this, SLOT( colorMenuIsSelected(int) )); 580 connect( colorMenu, SIGNAL( activated(int) ), this, SLOT( colorMenuIsSelected(int) ));
583 connect( tabMenu, SIGNAL( activated(int) ), this, SLOT( tabMenuSelected(int) )); 581 connect( tabMenu, SIGNAL( activated(int) ), this, SLOT( tabMenuSelected(int) ));
584 connect( scrollMenu, SIGNAL(activated(int)),this,SLOT(scrollMenuSelected(int))); 582 connect( scrollMenu, SIGNAL(activated(int)),this,SLOT(scrollMenuSelected(int)));
585 connect( editCommandListMenu,SIGNAL(activated(int)),this,SLOT(editCommandListMenuSelected(int))); 583 connect( editCommandListMenu,SIGNAL(activated(int)),this,SLOT(editCommandListMenuSelected(int)));
586 connect( sessionList, SIGNAL(activated(int)), this, SLOT( sessionListSelected(int) ) ); 584 connect( sessionList, SIGNAL(activated(int)), this, SLOT( sessionListSelected(int) ) );
587 585
588 menuBar->insertItem( tr("View"), configMenu ); 586 menuBar->insertItem( tr("View"), configMenu );
589 menuBar->insertItem( tr("Fonts"), fontList ); 587 menuBar->insertItem( tr("Fonts"), fontList );
590 menuBar->insertItem( tr("Sessions"), sessionList ); 588 menuBar->insertItem( tr("Sessions"), sessionList );
591 589
592 toolBar = new QToolBar( this ); 590 toolBar = new QToolBar( this );
593 591
594 QAction *a; 592 QAction *a;
595 593
596 // Button Commands 594 // Button Commands
597 a = new QAction( tr("New"), Resource::loadPixmap( "konsole/Terminal" ), QString::null, 0, this, 0 ); 595 a = new QAction( tr("New"), Resource::loadPixmap( "konsole/Terminal" ), QString::null, 0, this, 0 );
598 connect( a, SIGNAL( activated() ), this, SLOT( newSession() ) ); 596 connect( a, SIGNAL( activated() ), this, SLOT( newSession() ) );
599 a->addTo( toolBar ); 597 a->addTo( toolBar );
600 598
601 a = new QAction( tr("Full Screen"), Resource::loadPixmap( "fullscreen" ), QString::null, 0, this, 0 ); 599 a = new QAction( tr("Full Screen"), Resource::loadPixmap( "fullscreen" ), QString::null, 0, this, 0 );
602 connect( a, SIGNAL( activated() ), this, SLOT( toggleFullScreen() ) ); 600 connect( a, SIGNAL( activated() ), this, SLOT( toggleFullScreen() ) );
603 a->addTo( toolBar ); 601 a->addTo( toolBar );
604 602
605 a = new QAction( tr("Zoom"), Resource::loadPixmap( "zoom" ), QString::null, 0, this, 0 ); 603 a = new QAction( tr("Zoom"), Resource::loadPixmap( "zoom" ), QString::null, 0, this, 0 );
606 connect( a, SIGNAL( activated() ), this, SLOT( cycleZoom() ) ); 604 connect( a, SIGNAL( activated() ), this, SLOT( cycleZoom() ) );
607 a->addTo( toolBar ); 605 a->addTo( toolBar );
608 606
609 607
610 /* 608 /*
611 a = new QAction( tr("Enter"), Resource::loadPixmap( "konsole/enter" ), QString::null, 0, this, 0 ); 609 a = new QAction( tr("Enter"), Resource::loadPixmap( "konsole/enter" ), QString::null, 0, this, 0 );
612 connect( a, SIGNAL( activated() ), this, SLOT( hitEnter() ) ); a->addTo( toolBar ); 610 connect( a, SIGNAL( activated() ), this, SLOT( hitEnter() ) ); a->addTo( toolBar );
613 a = new QAction( tr("Space"), Resource::loadPixmap( "konsole/space" ), QString::null, 0, this, 0 ); 611 a = new QAction( tr("Space"), Resource::loadPixmap( "konsole/space" ), QString::null, 0, this, 0 );
614 connect( a, SIGNAL( activated() ), this, SLOT( hitSpace() ) ); a->addTo( toolBar ); 612 connect( a, SIGNAL( activated() ), this, SLOT( hitSpace() ) ); a->addTo( toolBar );
615 a = new QAction( tr("Tab"), Resource::loadPixmap( "konsole/tab" ), QString::null, 0, this, 0 ); 613 a = new QAction( tr("Tab"), Resource::loadPixmap( "konsole/tab" ), QString::null, 0, this, 0 );
616 connect( a, SIGNAL( activated() ), this, SLOT( hitTab() ) ); a->addTo( toolBar ); 614 connect( a, SIGNAL( activated() ), this, SLOT( hitTab() ) ); a->addTo( toolBar );
617 */ 615 */
618 /* 616 /*
619 a = new QAction( tr("Up"), Resource::loadPixmap( "konsole/up" ), QString::null, 0, this, 0 ); 617 a = new QAction( tr("Up"), Resource::loadPixmap( "konsole/up" ), QString::null, 0, this, 0 );
620 connect( a, SIGNAL( activated() ), this, SLOT( hitUp() ) ); a->addTo( toolBar ); 618 connect( a, SIGNAL( activated() ), this, SLOT( hitUp() ) ); a->addTo( toolBar );
621 a = new QAction( tr("Down"), Resource::loadPixmap( "konsole/down" ), QString::null, 0, this, 0 ); 619 a = new QAction( tr("Down"), Resource::loadPixmap( "konsole/down" ), QString::null, 0, this, 0 );
622 connect( a, SIGNAL( activated() ), this, SLOT( hitDown() ) ); a->addTo( toolBar ); 620 connect( a, SIGNAL( activated() ), this, SLOT( hitDown() ) ); a->addTo( toolBar );
623 */ 621 */
624 a = new QAction( tr("Paste"), Resource::loadPixmap( "paste" ), QString::null, 0, this, 0 ); 622 a = new QAction( tr("Paste"), Resource::loadPixmap( "paste" ), QString::null, 0, this, 0 );
625 connect( a, SIGNAL( activated() ), this, SLOT( hitPaste() ) ); 623 connect( a, SIGNAL( activated() ), this, SLOT( hitPaste() ) );
626 a->addTo( toolBar ); 624 a->addTo( toolBar );
627 625
628 secondToolBar = new QToolBar( this ); 626 secondToolBar = new QToolBar( this );
629 secondToolBar->setHorizontalStretchable( TRUE ); 627 secondToolBar->setHorizontalStretchable( TRUE );
630 628
631 commonCombo = new QComboBox( secondToolBar ); 629 commonCombo = new QComboBox( secondToolBar );
632 // commonCombo->setMaximumWidth(236); 630 // commonCombo->setMaximumWidth(236);
633 631
634 ec_quick = editCommandListMenu->insertItem( tr( "Quick Edit" ) ); 632 ec_quick = editCommandListMenu->insertItem( tr( "Quick Edit" ) );
635 if( listHidden) 633 if( listHidden)
636 { 634 {
637 secondToolBar->hide(); 635 secondToolBar->hide();
638 editCommandListMenu->setItemEnabled(ec_quick ,FALSE); 636 editCommandListMenu->setItemEnabled(ec_quick ,FALSE);
639 } 637 }
640 ec_edit = editCommandListMenu->insertItem(tr( "Edit..." ) ); 638 ec_edit = editCommandListMenu->insertItem(tr( "Edit..." ) );
641 639
642 cfg.setGroup("Commands"); 640 cfg.setGroup("Commands");
643 commonCombo->setInsertionPolicy(QComboBox::AtCurrent); 641 commonCombo->setInsertionPolicy(QComboBox::AtCurrent);
644 642
645 initCommandList(); 643 initCommandList();
646 // for (int i = 0; commonCmds[i] != NULL; i++) { 644 // for (int i = 0; commonCmds[i] != NULL; i++) {
647 // commonCombo->insertItem( commonCmds[i], i ); 645 // commonCombo->insertItem( commonCmds[i], i );
648 // tmp = cfg.readEntry( QString::number(i),""); 646 // tmp = cfg.readEntry( QString::number(i),"");
649 // if(tmp != "") 647 // if(tmp != "")
650 // commonCombo->changeItem( tmp,i ); 648 // commonCombo->changeItem( tmp,i );
651 // } 649 // }
652 650
653 connect( commonCombo, SIGNAL( activated(int) ), this, SLOT( enterCommand(int) )); 651 connect( commonCombo, SIGNAL( activated(int) ), this, SLOT( enterCommand(int) ));
654 652
655 sm_none = scrollMenu->insertItem(tr( "None" )); 653 sm_none = scrollMenu->insertItem(tr( "None" ));
656 sm_left = scrollMenu->insertItem(tr( "Left" )); 654 sm_left = scrollMenu->insertItem(tr( "Left" ));
657 sm_right = scrollMenu->insertItem(tr( "Right" )); 655 sm_right = scrollMenu->insertItem(tr( "Right" ));
658 // scrollMenu->insertSeparator(4); 656 // scrollMenu->insertSeparator(4);
659 // scrollMenu->insertItem(tr( "Horizontal" )); 657 // scrollMenu->insertItem(tr( "Horizontal" ));
660 658
661 configMenu->insertItem(tr( "ScrollBar" ),scrollMenu); 659 configMenu->insertItem(tr( "ScrollBar" ),scrollMenu);
662 660
663 configMenu->insertItem(tr( "History..." ), this, SLOT(historyDialog())); 661 configMenu->insertItem(tr( "History..." ), this, SLOT(historyDialog()));
664 662
665 cm_wrap = configMenu->insertItem(tr( "Wrap" )); 663 cm_wrap = configMenu->insertItem(tr( "Wrap" ));
666 cfg.setGroup("ScrollBar"); 664 cfg.setGroup("ScrollBar");
667 configMenu->setItemChecked(cm_wrap, cfg.readBoolEntry("HorzScroll",0)); 665 configMenu->setItemChecked(cm_wrap, cfg.readBoolEntry("HorzScroll",0));
668 666
669 cm_beep = configMenu->insertItem(tr( "Use Beep" )); 667 cm_beep = configMenu->insertItem(tr( "Use Beep" ));
670 cfg.setGroup("Menubar"); 668 cfg.setGroup("Menubar");
671 configMenu->setItemChecked(cm_beep, cfg.readBoolEntry("useBeep",0)); 669 configMenu->setItemChecked(cm_beep, cfg.readBoolEntry("useBeep",0));
672 670
673 fullscreen_msg = new QLabel(this); 671 fullscreen_msg = new QLabel(this);
674 fullscreen_msg-> setAlignment ( AlignCenter | SingleLine ); 672 fullscreen_msg-> setAlignment ( AlignCenter | SingleLine );
675 fullscreen_msg-> hide(); 673 fullscreen_msg-> hide();
676 fullscreen_msg-> setSizePolicy ( QSizePolicy ( QSizePolicy::Expanding, QSizePolicy::Expanding )); 674 fullscreen_msg-> setSizePolicy ( QSizePolicy ( QSizePolicy::Expanding, QSizePolicy::Expanding ));
677 fullscreen_msg-> setAutoResize(true); 675 fullscreen_msg-> setAutoResize(true);
678 fullscreen_msg-> setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 676 fullscreen_msg-> setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
679 fullscreen_msg-> setText(tr("To exit fullscreen, tap here.")); 677 fullscreen_msg-> setText(tr("To exit fullscreen, tap here."));
680 678
681 fullscreen_timer = new QTimer(this); 679 fullscreen_timer = new QTimer(this);
682 connect(fullscreen_timer, SIGNAL(timeout()), 680 connect(fullscreen_timer, SIGNAL(timeout()),
683 this, SLOT(fullscreenTimeout())); 681 this, SLOT(fullscreenTimeout()));
684 show_fullscreen_msg = true; 682 show_fullscreen_msg = true;
685 683
686 //scrollMenuSelected(-29); 684 //scrollMenuSelected(-29);
687 // cfg.setGroup("ScrollBar"); 685 // cfg.setGroup("ScrollBar");
688 // if(cfg.readBoolEntry("HorzScroll",0)) { 686 // if(cfg.readBoolEntry("HorzScroll",0)) {
689 // if(cfg.readNumEntry("Position",2) == 0) 687 // if(cfg.readNumEntry("Position",2) == 0)
690 // te->setScrollbarLocation(1); 688 // te->setScrollbarLocation(1);
691 // else 689 // else
692 // te->setScrollbarLocation(0); 690 // te->setScrollbarLocation(0);
693 // te->setScrollbarLocation( cfg.readNumEntry("Position",2)); 691 // te->setScrollbarLocation( cfg.readNumEntry("Position",2));
694 // te->setWrapAt(120); 692 // te->setWrapAt(120);
695 // } 693 // }
696 // create applications ///////////////////////////////////////////////////// 694 // create applications /////////////////////////////////////////////////////
697 setCentralWidget(tab); 695 setCentralWidget(tab);
698 696
699 // load keymaps //////////////////////////////////////////////////////////// 697 // load keymaps ////////////////////////////////////////////////////////////
700 KeyTrans::loadAll(); 698 KeyTrans::loadAll();
701 for (int i = 0; i < KeyTrans::count(); i++) 699 for (int i = 0; i < KeyTrans::count(); i++)
702 { 700 {
703 KeyTrans* s = KeyTrans::find(i); 701 KeyTrans* s = KeyTrans::find(i);
704 assert( s ); 702 assert( s );
705 } 703 }
706 704
707 se_pgm = _pgm; 705 se_pgm = _pgm;
708 se_args = _args; 706 se_args = _args;
709 707
710 cfg.setGroup("CommandLine"); 708 cfg.setGroup("CommandLine");
711 709
712 if (cfg.hasKey("shell_args")) 710 if (cfg.hasKey("shell_args"))
713 { 711 {
714 QStringList se_args_list = cfg.readListEntry("shell_args",'|'); 712 QStringList se_args_list = cfg.readListEntry("shell_args",'|');
715 for(uint i = 0; i < se_args_list.count(); i++) 713 for(uint i = 0; i < se_args_list.count(); i++)
716 { 714 {
717 se_args.prepend(se_args_list[se_args_list.count() - i - 1].latin1()); 715 se_args.prepend(se_args_list[se_args_list.count() - i - 1].latin1());
718 } 716 }
719 } 717 }
720 else 718 else
721 { 719 {
722 se_args.prepend("--login"); 720 se_args.prepend("--login");
723 } 721 }
724 722
725 se_pgm = cfg.readEntry("shell_bin", QString(se_pgm)); 723 se_pgm = cfg.readEntry("shell_bin", QString(se_pgm));
726 724
727 // this is the "documentation" for those who know to look 725 // this is the "documentation" for those who know to look
728 if (! cfg.hasKey("shell_args")) 726 if (! cfg.hasKey("shell_args"))
729 { 727 {
730 cfg.writeEntry("shell_args",QStringList::fromStrList(se_args),'|'); 728 cfg.writeEntry("shell_args",QStringList::fromStrList(se_args),'|');
731 } 729 }
732 if (! cfg.hasKey("shell_bin")) 730 if (! cfg.hasKey("shell_bin"))
733 { 731 {
734 cfg.writeEntry("shell_bin",QString(se_pgm)); 732 cfg.writeEntry("shell_bin",QString(se_pgm));
735 } 733 }
736 734
737 parseCommandLine(); 735 parseCommandLine();
738 736
739 // read and apply default values /////////////////////////////////////////// 737 // read and apply default values ///////////////////////////////////////////
740 resize(321, 321); // Dummy. 738 resize(321, 321); // Dummy.
741 QSize currentSize = size(); 739 QSize currentSize = size();
742 if (currentSize != size()) 740 if (currentSize != size())
743 defaultSize = size(); 741 defaultSize = size();
744 742
745 743
746 /* allows us to catch cancel/escape */ 744 /* allows us to catch cancel/escape */
747 reparent ( 0, WStyle_Customize | WStyle_NoBorder, 745 reparent ( 0, WStyle_Customize | WStyle_NoBorder,
748 QPoint ( 0, 0 )); 746 QPoint ( 0, 0 ));
749} 747}
750 748
751void Konsole::show() 749void Konsole::show()
752{ 750{
753 if ( !nsessions ) 751 if ( !nsessions )
754 { 752 {
755 newSession(); 753 newSession();
756 } 754 }
757 QMainWindow::show(); 755 QMainWindow::show();
758 756
759} 757}
760 758
761void Konsole::initSession(const char*, QStrList &) 759void Konsole::initSession(const char*, QStrList &)
762{ 760{
763 QMainWindow::show(); 761 QMainWindow::show();
764} 762}
765 763
766Konsole::~Konsole() 764Konsole::~Konsole()
767{ 765{
768 while (nsessions > 0) 766 while (nsessions > 0)
769 { 767 {
770 doneSession(getTe(), 0); 768 doneSession(getTe(), 0);
771 } 769 }
772} 770}
773 771
774void 772void
775Konsole::historyDialog() 773Konsole::historyDialog()
776{ 774{
777 QDialog *d = new QDialog ( this, "histdlg", true ); 775 QDialog *d = new QDialog ( this, "histdlg", true );
778 // d-> setCaption ( tr( "History" )); 776 // d-> setCaption ( tr( "History" ));
779 777
780 QBoxLayout *lay = new QVBoxLayout ( d, 4, 4 ); 778 QBoxLayout *lay = new QVBoxLayout ( d, 4, 4 );
781 779
782 QLabel *l = new QLabel ( tr( "History Lines:" ), d ); 780 QLabel *l = new QLabel ( tr( "History Lines:" ), d );
783 lay-> addWidget ( l ); 781 lay-> addWidget ( l );
784 782
785 Config cfg( "Konsole" ); 783 Config cfg( "Konsole" );
786 cfg.setGroup("History"); 784 cfg.setGroup("History");
787 int hist = cfg.readNumEntry("history_lines",300); 785 int hist = cfg.readNumEntry("history_lines",300);
788 int avg_line = cfg.readNumEntry("avg_line_length",60); 786 int avg_line = cfg.readNumEntry("avg_line_length",60);
789 787
790 QSpinBox *spin = new QSpinBox ( 1, 100000, 20, d ); 788 QSpinBox *spin = new QSpinBox ( 1, 100000, 20, d );
791 spin-> setValue ( hist ); 789 spin-> setValue ( hist );
792 spin-> setWrapping ( true ); 790 spin-> setWrapping ( true );
793 spin-> setButtonSymbols ( QSpinBox::PlusMinus ); 791 spin-> setButtonSymbols ( QSpinBox::PlusMinus );
794 lay-> addWidget ( spin ); 792 lay-> addWidget ( spin );
795 793
796 if ( d-> exec ( ) == QDialog::Accepted ) 794 if ( d-> exec ( ) == QDialog::Accepted )
797 { 795 {
798 cfg.writeEntry("history_lines", spin->value()); 796 cfg.writeEntry("history_lines", spin->value());
799 cfg.writeEntry("avg_line_length", avg_line); 797 cfg.writeEntry("avg_line_length", avg_line);
800 if (getTe() != NULL) 798 if (getTe() != NULL)
801 { 799 {
802 getTe()->currentSession->setHistory(true); 800 getTe()->currentSession->setHistory(true);
803 } 801 }
804 } 802 }
805 803
806 delete d; 804 delete d;
807} 805}
808 806
809 807
810void Konsole::cycleZoom() 808void Konsole::cycleZoom()
811{ 809{
812 TEWidget* te = getTe(); 810 TEWidget* te = getTe();
813 QFont font = te->getVTFont(); 811 QFont font = te->getVTFont();
814 int size = font.pointSize(); 812 int size = font.pointSize();
815 changeFontSize(1); 813 changeFontSize(1);
816 font = te->getVTFont(); 814 font = te->getVTFont();
817 if (font.pointSize() <= size) 815 if (font.pointSize() <= size)
818 { 816 {
819 do 817 do
820 { 818 {
821 font = te->getVTFont(); 819 font = te->getVTFont();
822 size = font.pointSize(); 820 size = font.pointSize();
823 changeFontSize(-1); 821 changeFontSize(-1);
824 font = te->getVTFont(); 822 font = te->getVTFont();
825 } 823 }
826 while (font.pointSize() < size); 824 while (font.pointSize() < size);
827 } 825 }
828} 826}
829 827
830void Konsole::changeFontSize(int delta) 828void Konsole::changeFontSize(int delta)
831{ 829{
832 // printf("delta font size %d\n", delta); 830 // printf("delta font size %d\n", delta);
833 TEWidget* te = getTe(); 831 TEWidget* te = getTe();
834 QFont font = te->getVTFont(); 832 QFont font = te->getVTFont();
835 int size = font.pointSize(); 833 int size = font.pointSize();
836 int closest = delta > 0? 10000 : -10000; 834 int closest = delta > 0? 10000 : -10000;
837 int closest_font = -1; 835 int closest_font = -1;
838 for(uint i = 0; i < fonts.count(); i++) 836 for(uint i = 0; i < fonts.count(); i++)
839 { 837 {
840 if (fonts.at(i)->getFont() == font) 838 if (fonts.at(i)->getFont() == font)
841 { 839 {
842 if (delta > 0) 840 if (delta > 0)
843 { 841 {
844 if (i+1 < fonts.count() 842 if (i+1 < fonts.count()
845 && fonts.at(i+1)->getFamilyNum() == fonts.at(i)->getFamilyNum()) 843 && fonts.at(i+1)->getFamilyNum() == fonts.at(i)->getFamilyNum())
846 { 844 {
847 setFont(i+1); 845 setFont(i+1);
848 printf("font %d\n", i+1); 846 printf("font %d\n", i+1);
849 return; 847 return;
850 } 848 }
851 } 849 }
852 else if (delta < 0) 850 else if (delta < 0)
853 { 851 {
854 if (i > 0 852 if (i > 0
855 && fonts.at(i-1)->getFamilyNum() == fonts.at(i)->getFamilyNum()) 853 && fonts.at(i-1)->getFamilyNum() == fonts.at(i)->getFamilyNum())
856 { 854 {
857 setFont(i-1); 855 setFont(i-1);
858 printf("font %d\n", i-1); 856 printf("font %d\n", i-1);
859 return; 857 return;
860 } 858 }
861 } 859 }
862 } 860 }
863 int fsize = fonts.at(i)->getSize(); 861 int fsize = fonts.at(i)->getSize();
864 printf("%d size=%d fsize=%d closest=%d\n", i, size, fsize, closest); 862 printf("%d size=%d fsize=%d closest=%d\n", i, size, fsize, closest);
865 if ((delta > 0 && fsize > size && fsize < closest) 863 if ((delta > 0 && fsize > size && fsize < closest)
866 || (delta < 0 && fsize < size && fsize > closest)) 864 || (delta < 0 && fsize < size && fsize > closest))
867 { 865 {
868 closest = fsize; 866 closest = fsize;
869 closest_font = i; 867 closest_font = i;
870 } 868 }
871 } 869 }
872 if (closest_font >= 0) 870 if (closest_font >= 0)
873 { 871 {
874 printf("font closest %d (%d)\n", closest_font, closest); 872 printf("font closest %d (%d)\n", closest_font, closest);
875 setFont(closest_font); 873 setFont(closest_font);
876 } 874 }
877} 875}
878 876
879int Konsole::findFont(const QString& name, int size, bool exactMatch) 877int Konsole::findFont(const QString& name, int size, bool exactMatch)
880{ 878{
881 for(uint i = 0; i < fonts.count(); i++) 879 for(uint i = 0; i < fonts.count(); i++)
882 { 880 {
883 if (fonts.at(i)->getName() == name 881 if (fonts.at(i)->getName() == name
884 && fonts.at(i)->getSize() == size) 882 && fonts.at(i)->getSize() == size)
885 { 883 {
886 return(i); 884 return(i);
887 } 885 }
888 } 886 }
889 if (exactMatch) 887 if (exactMatch)
890 { 888 {
891 return(-1); 889 return(-1);
892 } 890 }
893 for(uint i = 0; i < fonts.count(); i++) 891 for(uint i = 0; i < fonts.count(); i++)
894 { 892 {
895 if (fonts.at(i)->getSize() == size) 893 if (fonts.at(i)->getSize() == size)
896 { 894 {
897 return(i); 895 return(i);
898 } 896 }
899 } 897 }
900 return(-1); 898 return(-1);
901} 899}
902 900
903void Konsole::setFont(int f) 901void Konsole::setFont(int f)
904{ 902{
905 VTFont* font = fonts.at(f); 903 VTFont* font = fonts.at(f);
906 if (font) 904 if (font)
907 { 905 {
908 TEWidget* te = getTe(); 906 TEWidget* te = getTe();
909 if (te != 0) 907 if (te != 0)
910 { 908 {
911 te->setVTFont(font->getFont()); 909 te->setVTFont(font->getFont());
912 } 910 }
913 cfont = f; 911 cfont = f;
914 912
915 int familyNum = font->getFamilyNum(); 913 int familyNum = font->getFamilyNum();
916 int size = font->getSize(); 914 int size = font->getSize();
917 printf("familyNum = %d size = %d count=%d\n", familyNum, size, 915 printf("familyNum = %d size = %d count=%d\n", familyNum, size,
918 fontList->count()); 916 fontList->count());
919 for(int i = 0; i < (int)fontList->count(); i++) 917 for(int i = 0; i < (int)fontList->count(); i++)
920 { 918 {
921 fontList->setItemChecked(i + 1000, i == familyNum); 919 fontList->setItemChecked(i + 1000, i == familyNum);
922 } 920 }
923 for(int i = 0; i < (int)fonts.count(); i++) 921 for(int i = 0; i < (int)fonts.count(); i++)
924 { 922 {
925 fontList->setItemChecked(i, fonts.at(i)->getFamilyNum() == familyNum 923 fontList->setItemChecked(i, fonts.at(i)->getFamilyNum() == familyNum
926 && fonts.at(i)->getSize() == size); 924 && fonts.at(i)->getSize() == size);
927 } 925 }
928 Config cfg( "Konsole" ); 926 Config cfg( "Konsole" );
929 cfg.setGroup("Font"); 927 cfg.setGroup("Font");
930 QString ss = "Session"+ QString::number(tab->currentPageIndex()+1); 928 QString ss = "Session"+ QString::number(tab->currentPageIndex()+1);
931 if (tab->currentPageIndex() == 0) 929 if (tab->currentPageIndex() == 0)
932 { 930 {
933 cfg.writeEntry("FontName", fonts.at(cfont)->getFamily()); 931 cfg.writeEntry("FontName", fonts.at(cfont)->getFamily());
934 cfg.writeEntry("FontSize", fonts.at(cfont)->getSize()); 932 cfg.writeEntry("FontSize", fonts.at(cfont)->getSize());
935 } 933 }
936 cfg.writeEntry("FontName"+ss, fonts.at(cfont)->getFamily()); 934 cfg.writeEntry("FontName"+ss, fonts.at(cfont)->getFamily());
937 cfg.writeEntry("FontSize"+ss, fonts.at(cfont)->getSize()); 935 cfg.writeEntry("FontSize"+ss, fonts.at(cfont)->getSize());
938 } 936 }
939} 937}
940 938
941#if 0 939#if 0
942void Konsole::fontChanged(int f) 940void Konsole::fontChanged(int f)
943{ 941{
944 VTFont* font = fonts.at(f); 942 VTFont* font = fonts.at(f);
945 if (font != 0) 943 if (font != 0)
946 { 944 {
947 for(uint i = 0; i < fonts.count(); i++) 945 for(uint i = 0; i < fonts.count(); i++)
948 { 946 {
949 fontList->setItemChecked(i, (i == (uint) f) ? TRUE : FALSE); 947 fontList->setItemChecked(i, (i == (uint) f) ? TRUE : FALSE);
950 } 948 }
951 949
952 cfont = f; 950 cfont = f;
953 951
954 TEWidget* te = getTe(); 952 TEWidget* te = getTe();
955 if (te != 0) 953 if (te != 0)
956 { 954 {
957 te->setVTFont(font->getFont()); 955 te->setVTFont(font->getFont());
958 } 956 }
959 } 957 }
960} 958}
961#endif 959#endif
962 960
963 961
964void Konsole::enterCommand(int c) 962void Konsole::enterCommand(int c)
965{ 963{
966 TEWidget* te = getTe(); 964 TEWidget* te = getTe();
967 if (te != 0) 965 if (te != 0)
968 { 966 {
969 if(!commonCombo->editable()) 967 if(!commonCombo->editable())
970 { 968 {
971 QString text = commonCombo->text(c); //commonCmds[c]; 969 QString text = commonCombo->text(c); //commonCmds[c];
972 te->emitText(text); 970 te->emitText(text);
973 } 971 }
974 else 972 else
975 { 973 {
976 changeCommand( commonCombo->text(c), c); 974 changeCommand( commonCombo->text(c), c);
977 } 975 }
978 } 976 }
979} 977}
980 978
981void Konsole::hitEnter() 979void Konsole::hitEnter()
982{ 980{
983 TEWidget* te = getTe(); 981 TEWidget* te = getTe();
984 if (te != 0) 982 if (te != 0)
985 { 983 {
986 te->emitText(QString("\r")); 984 te->emitText(QString("\r"));
987 } 985 }
988} 986}
989 987
990void Konsole::hitSpace() 988void Konsole::hitSpace()
991{ 989{
992 TEWidget* te = getTe(); 990 TEWidget* te = getTe();
993 if (te != 0) 991 if (te != 0)
994 { 992 {
995 te->emitText(QString(" ")); 993 te->emitText(QString(" "));
996 } 994 }
997} 995}
998 996
999void Konsole::hitTab() 997void Konsole::hitTab()
1000{ 998{
1001 TEWidget* te = getTe(); 999 TEWidget* te = getTe();
1002 if (te != 0) 1000 if (te != 0)
1003 { 1001 {
1004 te->emitText(QString("\t")); 1002 te->emitText(QString("\t"));
1005 } 1003 }
1006} 1004}
1007 1005
1008void Konsole::hitPaste() 1006void Konsole::hitPaste()
1009{ 1007{
1010 TEWidget* te = getTe(); 1008 TEWidget* te = getTe();
1011 if (te != 0) 1009 if (te != 0)
1012 { 1010 {
1013 te->pasteClipboard(); 1011 te->pasteClipboard();
1014 } 1012 }
1015} 1013}
1016 1014
1017void Konsole::hitUp() 1015void Konsole::hitUp()
1018{ 1016{
1019 TEWidget* te = getTe(); 1017 TEWidget* te = getTe();
1020 if (te != 0) 1018 if (te != 0)
1021 { 1019 {
1022 QKeyEvent ke( QKeyEvent::KeyPress, Qt::Key_Up, 0, 0); 1020 QKeyEvent ke( QKeyEvent::KeyPress, Qt::Key_Up, 0, 0);
1023 QApplication::sendEvent( te, &ke ); 1021 QApplication::sendEvent( te, &ke );
1024 } 1022 }
1025} 1023}
1026 1024
1027void Konsole::hitDown() 1025void Konsole::hitDown()
1028{ 1026{
1029 TEWidget* te = getTe(); 1027 TEWidget* te = getTe();
1030 if (te != 0) 1028 if (te != 0)
1031 { 1029 {
1032 QKeyEvent ke( QKeyEvent::KeyPress, Qt::Key_Down, 0, 0); 1030 QKeyEvent ke( QKeyEvent::KeyPress, Qt::Key_Down, 0, 0);
1033 QApplication::sendEvent( te, &ke ); 1031 QApplication::sendEvent( te, &ke );
1034 } 1032 }
1035} 1033}
1036 1034
1037/** 1035/**
1038 This function calculates the size of the external widget 1036 This function calculates the size of the external widget
1039 needed for the internal widget to be 1037 needed for the internal widget to be
1040 */ 1038 */
1041QSize Konsole::calcSize(int columns, int lines) 1039QSize Konsole::calcSize(int columns, int lines)
1042{ 1040{
1043 TEWidget* te = getTe(); 1041 TEWidget* te = getTe();
1044 if (te != 0) 1042 if (te != 0)
1045 { 1043 {
1046 QSize size = te->calcSize(columns, lines); 1044 QSize size = te->calcSize(columns, lines);
1047 return size; 1045 return size;
1048 } 1046 }
1049 else 1047 else
1050 { 1048 {
1051 QSize size; 1049 QSize size;
1052 return size; 1050 return size;
1053 } 1051 }
1054} 1052}
1055 1053
1056/** 1054/**
1057 sets application window to a size based on columns X lines of the te 1055 sets application window to a size based on columns X lines of the te
1058 guest widget. Call with (0,0) for setting default size. 1056 guest widget. Call with (0,0) for setting default size.
1059*/ 1057*/
1060 1058
1061void Konsole::setColLin(int columns, int lines) 1059void Konsole::setColLin(int columns, int lines)
1062{ 1060{
1063 qDebug("konsole::setColLin:: Columns %d", columns); 1061 qDebug("konsole::setColLin:: Columns %d", columns);
1064 1062
1065 if ((columns==0) || (lines==0)) 1063 if ((columns==0) || (lines==0))
1066 { 1064 {
1067 if (defaultSize.isEmpty()) // not in config file : set default value 1065 if (defaultSize.isEmpty()) // not in config file : set default value
1068 { 1066 {
1069 defaultSize = calcSize(80,24); 1067 defaultSize = calcSize(80,24);
1070 // notifySize(24,80); // set menu items (strange arg order !) 1068 // notifySize(24,80); // set menu items (strange arg order !)
1071 } 1069 }
1072 resize(defaultSize); 1070 resize(defaultSize);
1073 } 1071 }
1074 else 1072 else
1075 { 1073 {
1076 resize(calcSize(columns, lines)); 1074 resize(calcSize(columns, lines));
1077 // notifySize(lines,columns); // set menu items (strange arg order !) 1075 // notifySize(lines,columns); // set menu items (strange arg order !)
1078 } 1076 }
1079} 1077}
1080 1078
1081/* 1079/*
1082void Konsole::setFont(int fontno) 1080void Konsole::setFont(int fontno)
1083{ 1081{
1084 QFont f; 1082 QFont f;
1085 if (fontno == 0) 1083 if (fontno == 0)
1086 f = defaultFont = QFont( "Helvetica", 12 ); 1084 f = defaultFont = QFont( "Helvetica", 12 );
1087 else 1085 else
1088 if (fonts[fontno][0] == '-') 1086 if (fonts[fontno][0] == '-')
1089 f.setRawName( fonts[fontno] ); 1087 f.setRawName( fonts[fontno] );
1090 else 1088 else
1091 { 1089 {
1092 f.setFamily(fonts[fontno]); 1090 f.setFamily(fonts[fontno]);
1093 f.setRawMode( TRUE ); 1091 f.setRawMode( TRUE );
1094 } 1092 }
1095 if ( !f.exactMatch() && fontno != 0) 1093 if ( !f.exactMatch() && fontno != 0)
1096 { 1094 {
1097 QString msg = i18n("Font `%1' not found.\nCheck README.linux.console for help.").arg(fonts[fontno]); 1095 QString msg = i18n("Font `%1' not found.\nCheck README.linux.console for help.").arg(fonts[fontno]);
1098 QMessageBox(this, msg); 1096 QMessageBox(this, msg);
1099 return; 1097 return;
1100 } 1098 }
1101 if (se) se->setFontNo(fontno); 1099 if (se) se->setFontNo(fontno);
1102 te->setVTFont(f); 1100 te->setVTFont(f);
1103 n_font = fontno; 1101 n_font = fontno;
1104} 1102}
1105*/ 1103*/
1106 1104
1107// --| color selection |------------------------------------------------------- 1105// --| color selection |-------------------------------------------------------
1108 1106
1109void Konsole::changeColumns(int /*columns*/) 1107void Konsole::changeColumns(int /*columns*/)
1110{ //FIXME this seems to cause silliness when reset command is executed 1108{ //FIXME this seems to cause silliness when reset command is executed
1111 // qDebug("change columns"); 1109 // qDebug("change columns");
1112 // TEWidget* te = getTe(); 1110 // TEWidget* te = getTe();
1113 // if (te != 0) { 1111 // if (te != 0) {
1114 // setColLin(columns,te->Lines()); 1112 // setColLin(columns,te->Lines());
1115 // te->update(); 1113 // te->update();
1116 // } 1114 // }
1117} 1115}
1118 1116
1119//FIXME: If a child dies during session swap, 1117//FIXME: If a child dies during session swap,
1120// this routine might be called before 1118// this routine might be called before
1121// session swap is completed. 1119// session swap is completed.
1122 1120
1123void Konsole::doneSession(TEWidget* te, int ) 1121void Konsole::doneSession(TEWidget* te, int )
1124{ 1122{
1125 // TEWidget *te = NULL; 1123 // TEWidget *te = NULL;
1126 // if (sess->currentSession == tab->currentPage()) { 1124 // if (sess->currentSession == tab->currentPage()) {
1127 // printf("done current session\n"); 1125 // printf("done current session\n");
1128 // te = getTe(); 1126 // te = getTe();
1129 // } else { 1127 // } else {
1130 // int currentPage = tab->currentPageIndex(); 1128 // int currentPage = tab->currentPageIndex();
1131 // printf("done not current session\n"); 1129 // printf("done not current session\n");
1132 // for(int i = 0; i < nsessions; i++) { 1130 // for(int i = 0; i < nsessions; i++) {
1133 // tab->setCurrentPage(i); 1131 // tab->setCurrentPage(i);
1134 // printf("find session %d tab page %x session %x\n", 1132 // printf("find session %d tab page %x session %x\n",
1135 // i, tab->currentPage(), sess->currentSession); 1133 // i, tab->currentPage(), sess->currentSession);
1136 // if (tab->currentPage() == sess->currentSession) { 1134 // if (tab->currentPage() == sess->currentSession) {
1137 // printf("found session %d\n", i); 1135 // printf("found session %d\n", i);
1138 // te = tab->currentPage(); 1136 // te = tab->currentPage();
1139 // break; 1137 // break;
1140 // } 1138 // }
1141 // } 1139 // }
1142 // tab->setCurrentPage(currentPage); 1140 // tab->setCurrentPage(currentPage);
1143 // } 1141 // }
1144 if (te != 0) 1142 if (te != 0)
1145 { 1143 {
1146 te->currentSession->setConnect(FALSE); 1144 te->currentSession->setConnect(FALSE);
1147 tab->removeTab(te); 1145 tab->removeTab(te);
1148 delete te->currentSession; 1146 delete te->currentSession;
1149 delete te; 1147 delete te;
1150 sessionList->removeItem(nsessions); 1148 sessionList->removeItem(nsessions);
1151 nsessions--; 1149 nsessions--;
1152 } 1150 }
1153 if (nsessions == 0) 1151 if (nsessions == 0)
1154 { 1152 {
1155 close(); 1153 close();
1156 } 1154 }
1157} 1155}
1158 1156
1159void Konsole::changeTitle(TEWidget* te, const QString& newTitle ) 1157void Konsole::changeTitle(TEWidget* te, const QString& newTitle )
1160{ 1158{
1161 if (te == getTe()) 1159 if (te == getTe())
1162 { 1160 {
1163 setCaption( newTitle + " - " + tr( "Konsole " ) ); 1161 setCaption( newTitle + " - " + tr( "Konsole " ) );
1164 } 1162 }
1165} 1163}
1166 1164
1167 1165
1168void Konsole::newSession() 1166void Konsole::newSession()
1169{ 1167{
1170 if(nsessions < 15) 1168 if(nsessions < 15)
1171 { // seems to be something weird about 16 tabs on the Zaurus.... memory? 1169 { // seems to be something weird about 16 tabs on the Zaurus.... memory?
1172 TEWidget* te = new TEWidget(tab); 1170 TEWidget* te = new TEWidget(tab);
1173 Config cfg( "Konsole" ); 1171 Config cfg( "Konsole" );
1174 cfg.setGroup("Menubar"); 1172 cfg.setGroup("Menubar");
1175 1173
1176 // FIXME use more defaults from config file 1174 // FIXME use more defaults from config file
1177 te->useBeep=cfg.readBoolEntry("useBeep",0); 1175 te->useBeep=cfg.readBoolEntry("useBeep",0);
1178 1176
1179 // te->setBackgroundMode(PaletteBase); //we want transparent!! 1177 // te->setBackgroundMode(PaletteBase); //we want transparent!!
1180 1178
1181 cfg.setGroup("Font"); 1179 cfg.setGroup("Font");
1182 QString sn = "Session" + QString::number(nsessions+1); 1180 QString sn = "Session" + QString::number(nsessions+1);
1183 printf("read font session %s\n", sn.latin1()); 1181 printf("read font session %s\n", sn.latin1());
1184 QString fontName = cfg.readEntry("FontName"+sn, 1182 QString fontName = cfg.readEntry("FontName"+sn,
1185 cfg.readEntry("FontName", 1183 cfg.readEntry("FontName",
1186 fonts.at(cfont)->getFamily())); 1184 fonts.at(cfont)->getFamily()));
1187 int fontSize = cfg.readNumEntry("FontSize"+sn, 1185 int fontSize = cfg.readNumEntry("FontSize"+sn,
1188 cfg.readNumEntry("FontSize", 1186 cfg.readNumEntry("FontSize",
1189 fonts.at(cfont)->getSize())); 1187 fonts.at(cfont)->getSize()));
1190 cfont = findFont(fontName, fontSize, false); 1188 cfont = findFont(fontName, fontSize, false);
1191 printf("lookup font %s size %d got %d\n", fontName.latin1(), fontSize, cfont); 1189 printf("lookup font %s size %d got %d\n", fontName.latin1(), fontSize, cfont);
1192 if (cfont < 0) 1190 if (cfont < 0)
1193 cfont = 0; 1191 cfont = 0;
1194 te->setVTFont(fonts.at(cfont)->getFont()); 1192 te->setVTFont(fonts.at(cfont)->getFont());
1195 1193
1196 tab->addTab(te); 1194 tab->addTab(te);
1197 TESession* se = new TESession(this, te, se_pgm, se_args, "xterm"); 1195 TESession* se = new TESession(this, te, se_pgm, se_args, "xterm");
1198 te->currentSession = se; 1196 te->currentSession = se;
1199 connect( se, SIGNAL(done(TEWidget*,int)), this, SLOT(doneSession(TEWidget*,int)) ); 1197 connect( se, SIGNAL(done(TEWidget*,int)), this, SLOT(doneSession(TEWidget*,int)) );
1200 connect( se, SIGNAL(changeTitle(TEWidget*,const QString&)), this, 1198 connect( se, SIGNAL(changeTitle(TEWidget*,const QString&)), this,
1201 SLOT(changeTitle(TEWidget*,const QString&)) ); 1199 SLOT(changeTitle(TEWidget*,const QString&)) );
1202 connect(te, SIGNAL(changeFontSize(int)), this, SLOT(changeFontSize(int))); 1200 connect(te, SIGNAL(changeFontSize(int)), this, SLOT(changeFontSize(int)));