summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2005-02-06 02:49:25 (UTC)
committer llornkcor <llornkcor>2005-02-06 02:49:25 (UTC)
commit6764eece4d63724d55252b2cbfa04e8f2fb5787d (patch) (unidiff)
tree914f5d32d4c353f27e659d246ae0588a18c5d7a4
parentc3892e6c1a4ca15383a7da48f6d72b1d7d26f43d (diff)
downloadopie-6764eece4d63724d55252b2cbfa04e8f2fb5787d.zip
opie-6764eece4d63724d55252b2cbfa04e8f2fb5787d.tar.gz
opie-6764eece4d63724d55252b2cbfa04e8f2fb5787d.tar.bz2
too long
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/apps/embeddedkonsole/konsole.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/core/apps/embeddedkonsole/konsole.cpp b/core/apps/embeddedkonsole/konsole.cpp
index 8b4202d..de00494 100644
--- a/core/apps/embeddedkonsole/konsole.cpp
+++ b/core/apps/embeddedkonsole/konsole.cpp
@@ -1,1909 +1,1909 @@
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#include <sys/types.h> 26#include <sys/types.h>
27#include <pwd.h> 27#include <pwd.h>
28#include <unistd.h> 28#include <unistd.h>
29 29
30#ifdef QT_QWS_OPIE 30#ifdef QT_QWS_OPIE
31#include <opie2/ocolorpopupmenu.h> 31#include <opie2/ocolorpopupmenu.h>
32#include <opie2/odebug.h> 32#include <opie2/odebug.h>
33using namespace Opie; 33using namespace Opie;
34#endif 34#endif
35 35
36#include <qpe/resource.h> 36#include <qpe/resource.h>
37 37
38#include <qmenubar.h> 38#include <qmenubar.h>
39#include <qtabbar.h> 39#include <qtabbar.h>
40#include <qpe/config.h> 40#include <qpe/config.h>
41#include <qfontdatabase.h> 41#include <qfontdatabase.h>
42#include <qfile.h> 42#include <qfile.h>
43#include <qspinbox.h> 43#include <qspinbox.h>
44#include <qlayout.h> 44#include <qlayout.h>
45 45
46#include <sys/wait.h> 46#include <sys/wait.h>
47#include <stdio.h> 47#include <stdio.h>
48#include <stdlib.h> 48#include <stdlib.h>
49#include <assert.h> 49#include <assert.h>
50 50
51#include "konsole.h" 51#include "konsole.h"
52#include "commandeditdialog.h" 52#include "commandeditdialog.h"
53 53
54class EKNumTabBar : public QTabBar 54class EKNumTabBar : public QTabBar
55{ 55{
56public: 56public:
57 EKNumTabBar(QWidget *parent = 0, const char *name = 0) : 57 EKNumTabBar(QWidget *parent = 0, const char *name = 0) :
58 QTabBar(parent, name) 58 QTabBar(parent, name)
59 {} 59 {}
60 60
61 // QList<QTab> *getTabList() { return(tabList()); } 61 // QList<QTab> *getTabList() { return(tabList()); }
62 62
63 void numberTabs() 63 void numberTabs()
64 { 64 {
65 // Yes, it really is this messy. QTabWidget needs functions 65 // Yes, it really is this messy. QTabWidget needs functions
66 // that provide acces to tabs in a sequential way. 66 // that provide acces to tabs in a sequential way.
67 int m=INT_MIN; 67 int m=INT_MIN;
68 for (int i=0; i<count(); i++) 68 for (int i=0; i<count(); i++)
69 { 69 {
70 QTab* left=0; 70 QTab* left=0;
71 QListIterator<QTab> it(*tabList()); 71 QListIterator<QTab> it(*tabList());
72 int x=INT_MAX; 72 int x=INT_MAX;
73 for( QTab* t; (t=it.current()); ++it ) 73 for( QTab* t; (t=it.current()); ++it )
74 { 74 {
75 int tx = t->rect().x(); 75 int tx = t->rect().x();
76 if ( tx<x && tx>m ) 76 if ( tx<x && tx>m )
77 { 77 {
78 x = tx; 78 x = tx;
79 left = t; 79 left = t;
80 } 80 }
81 } 81 }
82 if ( left ) 82 if ( left )
83 { 83 {
84 left->setText(QString::number(i+1)); 84 left->setText(QString::number(i+1));
85 m = left->rect().x(); 85 m = left->rect().x();
86 } 86 }
87 } 87 }
88 } 88 }
89 89
90 virtual QSize sizeHint() const 90 virtual QSize sizeHint() const
91 { 91 {
92 if (isHidden()) 92 if (isHidden())
93 { 93 {
94 return(QSize(0,0)); 94 return(QSize(0,0));
95 } 95 }
96 else 96 else
97 { 97 {
98 QSize size = QTabBar::sizeHint(); 98 QSize size = QTabBar::sizeHint();
99 int shrink = 5; 99 int shrink = 5;
100 if (qApp->desktop()->width() > 600 || qApp->desktop()->height() > 600) 100 if (qApp->desktop()->width() > 600 || qApp->desktop()->height() > 600)
101 { 101 {
102 shrink = 10; 102 shrink = 10;
103 } 103 }
104 size.setHeight(size.height() - shrink); 104 size.setHeight(size.height() - shrink);
105 return(size); 105 return(size);
106 } 106 }
107 } 107 }
108 108
109}; 109};
110 110
111class EKNumTabWidget : public QTabWidget 111class EKNumTabWidget : public QTabWidget
112{ 112{
113public: 113public:
114 EKNumTabWidget(QWidget* parent) : QTabWidget(parent) 114 EKNumTabWidget(QWidget* parent) : QTabWidget(parent)
115 { 115 {
116 setTabBar(new EKNumTabBar(parent,"EKTabBar")); 116 setTabBar(new EKNumTabBar(parent,"EKTabBar"));
117 setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) ); 117 setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) );
118 } 118 }
119 119
120 EKNumTabBar *getTabBar() const 120 EKNumTabBar *getTabBar() const
121 { 121 {
122 return ((EKNumTabBar*)tabBar()); 122 return ((EKNumTabBar*)tabBar());
123 } 123 }
124 124
125 125
126 void addTab(QWidget* w) 126 void addTab(QWidget* w)
127 { 127 {
128 QTab* t = new QTab(QString::number(tabBar()->count()+1)); 128 QTab* t = new QTab(QString::number(tabBar()->count()+1));
129 QTabWidget::addTab(w,t); 129 QTabWidget::addTab(w,t);
130 } 130 }
131 131
132 void removeTab(QWidget* w) 132 void removeTab(QWidget* w)
133 { 133 {
134 removePage(w); 134 removePage(w);
135 ((EKNumTabBar*)tabBar())->numberTabs(); 135 ((EKNumTabBar*)tabBar())->numberTabs();
136 } 136 }
137}; 137};
138 138
139// This could be configurable or dynamicly generated from the bash history 139// This could be configurable or dynamicly generated from the bash history
140// file of the user 140// file of the user
141static const char *commonCmds[] = 141static const char *commonCmds[] =
142 { 142 {
143 "ls ", // I left this here, cause it looks better than the first alpha 143 "ls ", // I left this here, cause it looks better than the first alpha
144 "cardctl eject", 144 "cardctl eject",
145 "cat ", 145 "cat ",
146 "cd ", 146 "cd ",
147 "chmod ", 147 "chmod ",
148 "clear", 148 "clear",
149 "cp ", 149 "cp ",
150 "dc ", 150 "dc ",
151 "df ", 151 "df ",
152 "dmesg", 152 "dmesg",
153 "echo ", 153 "echo ",
154 "env", 154 "env",
155 "find ", 155 "find ",
156 "free", 156 "free",
157 "grep ", 157 "grep ",
158 "ifconfig ", 158 "ifconfig ",
159 "ipkg ", 159 "ipkg ",
160 "mkdir ", 160 "mkdir ",
161 "mv ", 161 "mv ",
162 "nc localhost 7776", 162 "nc localhost 7776",
163 "nc localhost 7777", 163 "nc localhost 7777",
164 "netstat ", 164 "netstat ",
165 "nslookup ", 165 "nslookup ",
166 "ping ", 166 "ping ",
167 "ps aux", 167 "ps aux",
168 "pwd ", 168 "pwd ",
169 "qcop QPE/System 'linkChanged(QString)' ''", 169// "qcop QPE/System 'linkChanged(QString)' ''",
170 "qcop QPE/System 'restart()'", 170// "qcop QPE/System 'restart()'",
171 "qcop QPE/System 'quit()'", 171// "qcop QPE/System 'quit()'",
172 "rm ", 172 "rm ",
173 "rmdir ", 173 "rmdir ",
174 "route ", 174 "route ",
175 "set ", 175 "set ",
176 "traceroute", 176 "traceroute",
177 177
178 /* 178 /*
179 "gzip", 179 "gzip",
180 "gunzip", 180 "gunzip",
181 "chgrp", 181 "chgrp",
182 "chown", 182 "chown",
183 "date", 183 "date",
184 "dd", 184 "dd",
185 "df", 185 "df",
186 "dmesg", 186 "dmesg",
187 "fuser", 187 "fuser",
188 "hostname", 188 "hostname",
189 "kill", 189 "kill",
190 "killall", 190 "killall",
191 "ln", 191 "ln",
192 "ping", 192 "ping",
193 "mount", 193 "mount",
194 "more", 194 "more",
195 "sort", 195 "sort",
196 "touch", 196 "touch",
197 "umount", 197 "umount",
198 "mknod", 198 "mknod",
199 "netstat", 199 "netstat",
200 */ 200 */
201 201
202 "exit", 202 "exit",
203 NULL 203 NULL
204 }; 204 };
205 205
206 206
207static void konsoleInit(const char** shell) { 207static void konsoleInit(const char** shell) {
208 if(setuid(getuid()) !=0) odebug << "setuid failed" << oendl; 208 if(setuid(getuid()) !=0) odebug << "setuid failed" << oendl;
209 if(setgid(getgid()) != 0) odebug << "setgid failed" << oendl; // drop privileges 209 if(setgid(getgid()) != 0) odebug << "setgid failed" << oendl; // drop privileges
210 210
211 211
212// QPEApplication::grabKeyboard(); // for CTRL and ALT 212// QPEApplication::grabKeyboard(); // for CTRL and ALT
213 213
214 odebug << "keyboard grabbed" << oendl; 214 odebug << "keyboard grabbed" << oendl;
215#ifdef FAKE_CTRL_AND_ALT 215#ifdef FAKE_CTRL_AND_ALT
216 odebug << "Fake Ctrl and Alt defined" << oendl; 216 odebug << "Fake Ctrl and Alt defined" << oendl;
217 QPEApplication::grabKeyboard(); // for CTRL and ALT 217 QPEApplication::grabKeyboard(); // for CTRL and ALT
218#endif 218#endif
219 219
220 *shell = getenv("SHELL"); 220 *shell = getenv("SHELL");
221 owarn << "SHell initially is " << *shell << "" << oendl; 221 owarn << "SHell initially is " << *shell << "" << oendl;
222 222
223 if (shell == NULL || *shell == '\0') { 223 if (shell == NULL || *shell == '\0') {
224 struct passwd *ent = 0; 224 struct passwd *ent = 0;
225 uid_t me = getuid(); 225 uid_t me = getuid();
226 *shell = "/bin/sh"; 226 *shell = "/bin/sh";
227 227
228 while ( (ent = getpwent()) != 0 ) { 228 while ( (ent = getpwent()) != 0 ) {
229 if (ent->pw_uid == me) { 229 if (ent->pw_uid == me) {
230 if (ent->pw_shell != "") 230 if (ent->pw_shell != "")
231 *shell = ent->pw_shell; 231 *shell = ent->pw_shell;
232 break; 232 break;
233 } 233 }
234 } 234 }
235 endpwent(); 235 endpwent();
236 } 236 }
237 237
238 if( putenv((char*)"COLORTERM=") !=0) 238 if( putenv((char*)"COLORTERM=") !=0)
239 odebug << "putenv failed" << oendl; // to trigger mc's color detection 239 odebug << "putenv failed" << oendl; // to trigger mc's color detection
240} 240}
241 241
242 242
243Konsole::Konsole(QWidget* parent, const char* name, WFlags fl) : 243Konsole::Konsole(QWidget* parent, const char* name, WFlags fl) :
244 QMainWindow(parent, name, fl) 244 QMainWindow(parent, name, fl)
245{ 245{
246 QStrList tmp; const char* shell; 246 QStrList tmp; const char* shell;
247 247
248 konsoleInit( &shell); 248 konsoleInit( &shell);
249 init(shell,tmp); 249 init(shell,tmp);
250} 250}
251 251
252Konsole::Konsole(const char* name, const char* _pgm, QStrList & _args, int) 252Konsole::Konsole(const char* name, const char* _pgm, QStrList & _args, int)
253 : QMainWindow(0, name) 253 : QMainWindow(0, name)
254{ 254{
255 init(_pgm,_args); 255 init(_pgm,_args);
256} 256}
257 257
258struct HistoryItem 258struct HistoryItem
259{ 259{
260 HistoryItem(int c, const QString &l) 260 HistoryItem(int c, const QString &l)
261 { 261 {
262 count = c; 262 count = c;
263 line = l; 263 line = l;
264 } 264 }
265 int count; 265 int count;
266 QString line; 266 QString line;
267}; 267};
268 268
269class HistoryList : public QList<HistoryItem> 269class HistoryList : public QList<HistoryItem>
270{ 270{
271 virtual int compareItems( QCollection::Item item1, QCollection::Item item2) 271 virtual int compareItems( QCollection::Item item1, QCollection::Item item2)
272 { 272 {
273 int c1 = ((HistoryItem*)item1)->count; 273 int c1 = ((HistoryItem*)item1)->count;
274 int c2 = ((HistoryItem*)item2)->count; 274 int c2 = ((HistoryItem*)item2)->count;
275 if (c1 > c2) 275 if (c1 > c2)
276 return(1); 276 return(1);
277 if (c1 < c2) 277 if (c1 < c2)
278 return(-1); 278 return(-1);
279 return(0); 279 return(0);
280 } 280 }
281}; 281};
282 282
283void Konsole::initCommandList() 283void Konsole::initCommandList()
284{ 284{
285 // odebug << "Konsole::initCommandList" << oendl; 285 // odebug << "Konsole::initCommandList" << oendl;
286 Config cfg( "Konsole" ); 286 Config cfg( "Konsole" );
287 cfg.setGroup("Commands"); 287 cfg.setGroup("Commands");
288 // commonCombo->setInsertionPolicy(QComboBox::AtCurrent); 288 // commonCombo->setInsertionPolicy(QComboBox::AtCurrent);
289 commonCombo->clear(); 289 commonCombo->clear();
290 290
291 if (cfg.readEntry("ShellHistory","TRUE") == "FALSE") { 291 if (cfg.readEntry("ShellHistory","TRUE") == "FALSE") {
292 QString histfilename = QString(getenv("HOME")) + "/.bash_history"; 292 QString histfilename = QString(getenv("HOME")) + "/.bash_history";
293 histfilename = cfg.readEntry("ShellHistoryPath",histfilename); 293 histfilename = cfg.readEntry("ShellHistoryPath",histfilename);
294 QFile histfile(histfilename); 294 QFile histfile(histfilename);
295 // note: compiler barfed on: 295 // note: compiler barfed on:
296 // QFile histfile(QString(getenv("HOME")) + "/.bash_history"); 296 // QFile histfile(QString(getenv("HOME")) + "/.bash_history");
297 if (histfile.open( IO_ReadOnly )) { 297 if (histfile.open( IO_ReadOnly )) {
298 QString line; 298 QString line;
299 uint i; 299 uint i;
300 HistoryList items; 300 HistoryList items;
301 301
302 int lineno = 0; 302 int lineno = 0;
303 while(!histfile.atEnd()) { 303 while(!histfile.atEnd()) {
304 if (histfile.readLine(line, 200) < 0) { 304 if (histfile.readLine(line, 200) < 0) {
305 break; 305 break;
306 } 306 }
307 line = line.left(line.length()-1); 307 line = line.left(line.length()-1);
308 lineno++; 308 lineno++;
309 309
310 for(i=0; i<items.count(); i++) { 310 for(i=0; i<items.count(); i++) {
311 if (line == items.at(i)->line) { 311 if (line == items.at(i)->line) {
312 // weight recent commands & repeated commands more 312 // weight recent commands & repeated commands more
313 // by adding up the index of each command 313 // by adding up the index of each command
314 items.at(i)->count += lineno; 314 items.at(i)->count += lineno;
315 break; 315 break;
316 } 316 }
317 } 317 }
318 if (i >= items.count()) { 318 if (i >= items.count()) {
319 items.append(new HistoryItem(lineno, line)); 319 items.append(new HistoryItem(lineno, line));
320 } 320 }
321 } 321 }
322 items.sort(); 322 items.sort();
323 int n = items.count(); 323 int n = items.count();
324 if (n > 40) { 324 if (n > 40) {
325 n = 40; 325 n = 40;
326 } 326 }
327 for(int i=0; i<n; i++) { 327 for(int i=0; i<n; i++) {
328 // should insert start of command, but keep whole thing 328 // should insert start of command, but keep whole thing
329 if (items.at(items.count()-i-1)->line.length() < 30) { 329 if (items.at(items.count()-i-1)->line.length() < 30) {
330 commonCombo->insertItem(items.at(items.count()-i-1)->line); 330 commonCombo->insertItem(items.at(items.count()-i-1)->line);
331 } 331 }
332 } 332 }
333 histfile.close(); 333 histfile.close();
334 } 334 }
335 } 335 }
336 if (cfg.readEntry("Commands Set","FALSE") == "FALSE") { 336 if (cfg.readEntry("Commands Set","FALSE") == "FALSE") {
337 for (int i = 0; commonCmds[i] != NULL; i++) { 337 for (int i = 0; commonCmds[i] != NULL; i++) {
338 commonCombo->insertItem(commonCmds[i]); 338 commonCombo->insertItem(commonCmds[i]);
339 } 339 }
340 } else { 340 } else {
341 for (int i = 0; i < 100; i++) { 341 for (int i = 0; i < 100; i++) {
342 if (!(cfg.readEntry( QString::number(i),"")).isEmpty()) 342 if (!(cfg.readEntry( QString::number(i),"")).isEmpty())
343 commonCombo->insertItem(cfg.readEntry( QString::number(i),"")); 343 commonCombo->insertItem(cfg.readEntry( QString::number(i),""));
344 } 344 }
345 } 345 }
346 346
347 347
348} 348}
349 349
350static void sig_handler(int x) 350static void sig_handler(int x)
351{ 351{
352 printf("got signal %d\n",x); 352 printf("got signal %d\n",x);
353} 353}
354 354
355void Konsole::init(const char* _pgm, QStrList & _args) 355void Konsole::init(const char* _pgm, QStrList & _args)
356{ 356{
357 357
358#if 0 358#if 0
359 for(int i=1; i<=31; i++) 359 for(int i=1; i<=31; i++)
360 { 360 {
361 if (i != SIGPIPE && i != SIGPROF && i != SIGSEGV 361 if (i != SIGPIPE && i != SIGPROF && i != SIGSEGV
362 && i != SIGINT && i != SIGILL && i != SIGTERM 362 && i != SIGINT && i != SIGILL && i != SIGTERM
363 && i != SIGBUS) 363 && i != SIGBUS)
364 signal(i,sig_handler); 364 signal(i,sig_handler);
365 } 365 }
366#endif 366#endif
367 signal(SIGSTOP, sig_handler); 367 signal(SIGSTOP, sig_handler);
368 signal(SIGCONT, sig_handler); 368 signal(SIGCONT, sig_handler);
369 signal(SIGTSTP, sig_handler); 369 signal(SIGTSTP, sig_handler);
370 370
371 b_scroll = TRUE; // histon; 371 b_scroll = TRUE; // histon;
372 n_keytab = 0; 372 n_keytab = 0;
373 n_render = 0; 373 n_render = 0;
374 startUp=0; 374 startUp=0;
375 fromMenu = FALSE; 375 fromMenu = FALSE;
376 fullscreen = false; 376 fullscreen = false;
377 377
378 setCaption( tr( "Konsole" ) ); 378 setCaption( tr( "Konsole" ) );
379 setIcon( Resource::loadPixmap( "konsole/Terminal" ) ); 379 setIcon( Resource::loadPixmap( "konsole/Terminal" ) );
380 380
381 Config cfg( "Konsole" ); 381 Config cfg( "Konsole" );
382 cfg.setGroup("Font"); 382 cfg.setGroup("Font");
383 QString tmp; 383 QString tmp;
384 384
385 // initialize the list of allowed fonts /////////////////////////////////// 385 // initialize the list of allowed fonts ///////////////////////////////////
386 386
387 QString cfgFontName = cfg.readEntry("FontName","Lcfont"); 387 QString cfgFontName = cfg.readEntry("FontName","Lcfont");
388 int cfgFontSize = cfg.readNumEntry("FontSize",18); 388 int cfgFontSize = cfg.readNumEntry("FontSize",18);
389 389
390 cfont = -1; 390 cfont = -1;
391 391
392 // this code causes repeated access to all the font files 392 // this code causes repeated access to all the font files
393 // which does slow down startup 393 // which does slow down startup
394 QFontDatabase fontDB; 394 QFontDatabase fontDB;
395 QStringList familyNames; 395 QStringList familyNames;
396 familyNames = fontDB.families( FALSE ); 396 familyNames = fontDB.families( FALSE );
397 QString s; 397 QString s;
398 int fontIndex = 0; 398 int fontIndex = 0;
399 int familyNum = 0; 399 int familyNum = 0;
400 fontList = new QPopupMenu( this ); 400 fontList = new QPopupMenu( this );
401 401
402 for(uint j = 0; j < (uint)familyNames.count(); j++) 402 for(uint j = 0; j < (uint)familyNames.count(); j++)
403 { 403 {
404 s = familyNames[j]; 404 s = familyNames[j];
405 if ( s.contains('-') ) 405 if ( s.contains('-') )
406 { 406 {
407 int i = s.find('-'); 407 int i = s.find('-');
408 s = s.right( s.length() - i - 1 ) + " [" + s.left( i ) + "]"; 408 s = s.right( s.length() - i - 1 ) + " [" + s.left( i ) + "]";
409 } 409 }
410 s[0] = s[0].upper(); 410 s[0] = s[0].upper();
411 411
412 QValueList<int> sizes = fontDB.pointSizes( familyNames[j] ); 412 QValueList<int> sizes = fontDB.pointSizes( familyNames[j] );
413 413
414 printf("family[%d] = %s with %d sizes\n", j, familyNames[j].latin1(), 414 printf("family[%d] = %s with %d sizes\n", j, familyNames[j].latin1(),
415 sizes.count()); 415 sizes.count());
416 416
417 if (sizes.count() > 0) 417 if (sizes.count() > 0)
418 { 418 {
419 QPopupMenu *sizeMenu; 419 QPopupMenu *sizeMenu;
420 QFont f; 420 QFont f;
421 int last_width = -1; 421 int last_width = -1;
422 sizeMenu = NULL; 422 sizeMenu = NULL;
423 423
424 for(uint i = 0; i < (uint)sizes.count() + 4; i++) 424 for(uint i = 0; i < (uint)sizes.count() + 4; i++)
425 { 425 {
426 // printf("family %s size %d ", familyNames[j].latin1(), sizes[i]); 426 // printf("family %s size %d ", familyNames[j].latin1(), sizes[i]);
427 // need to divide by 10 on the Z, but not otherwise 427 // need to divide by 10 on the Z, but not otherwise
428 int size; 428 int size;
429 429
430 if (i >= (uint)sizes.count()) 430 if (i >= (uint)sizes.count())
431 { 431 {
432 // try for expandable fonts 432 // try for expandable fonts
433 size = sizes[sizes.count()-1] + 2 * (i - sizes.count() + 1); 433 size = sizes[sizes.count()-1] + 2 * (i - sizes.count() + 1);
434 } 434 }
435 else 435 else
436 { 436 {
437 printf("sizes[%d] = %d\n", i, sizes[i]); 437 printf("sizes[%d] = %d\n", i, sizes[i]);
438 size = sizes[i]; 438 size = sizes[i];
439 } 439 }
440 440
441 f = QFont(familyNames[j], size); 441 f = QFont(familyNames[j], size);
442 f.setFixedPitch(true); 442 f.setFixedPitch(true);
443 QFontMetrics fm(f); 443 QFontMetrics fm(f);
444 // don't trust f.fixedPitch() or f.exactMatch(), they lie!! 444 // don't trust f.fixedPitch() or f.exactMatch(), they lie!!
445 if (fm.width("l") == fm.width("m") 445 if (fm.width("l") == fm.width("m")
446 && (i < (uint)sizes.count() 446 && (i < (uint)sizes.count()
447 || fm.width("m") > last_width)) 447 || fm.width("m") > last_width))
448 { 448 {
449 if (i < (uint)sizes.count()) 449 if (i < (uint)sizes.count())
450 { 450 {
451 last_width = fm.width("m"); 451 last_width = fm.width("m");
452 } 452 }
453 if (sizeMenu == NULL) 453 if (sizeMenu == NULL)
454 { 454 {
455 sizeMenu = new QPopupMenu(); 455 sizeMenu = new QPopupMenu();
456 } 456 }
457 int id = sizeMenu->insertItem(QString("%1").arg(size), fontIndex); 457 int id = sizeMenu->insertItem(QString("%1").arg(size), fontIndex);
458 sizeMenu->setItemParameter(id, fontIndex); 458 sizeMenu->setItemParameter(id, fontIndex);
459 sizeMenu->connectItem(id, this, SLOT(setFont(int))); 459 sizeMenu->connectItem(id, this, SLOT(setFont(int)));
460 QString name = s + " " + QString::number(size); 460 QString name = s + " " + QString::number(size);
461 fonts.append(new VTFont(name, f, familyNames[j], familyNum, size)); 461 fonts.append(new VTFont(name, f, familyNames[j], familyNum, size));
462 if (familyNames[j] == cfgFontName && size == cfgFontSize) 462 if (familyNames[j] == cfgFontName && size == cfgFontSize)
463 { 463 {
464 cfont = fontIndex; 464 cfont = fontIndex;
465 } 465 }
466 printf("FOUND: %s family %s size %d\n", name.latin1(), familyNames[j].latin1(), size); 466 printf("FOUND: %s family %s size %d\n", name.latin1(), familyNames[j].latin1(), size);
467 fontIndex++; 467 fontIndex++;
468 } 468 }
469 } 469 }
470 if (sizeMenu) 470 if (sizeMenu)
471 { 471 {
472 fontList->insertItem(s, sizeMenu, familyNum + 1000); 472 fontList->insertItem(s, sizeMenu, familyNum + 1000);
473 473
474 familyNum++; 474 familyNum++;
475 } 475 }
476 } 476 }
477 477
478 } 478 }
479 479
480 if (cfont < 0 || cfont >= (int)fonts.count()) 480 if (cfont < 0 || cfont >= (int)fonts.count())
481 { 481 {
482 cfont = 0; 482 cfont = 0;
483 } 483 }
484 484
485 // create terminal emulation framework //////////////////////////////////// 485 // create terminal emulation framework ////////////////////////////////////
486 nsessions = 0; 486 nsessions = 0;
487 487
488 tab = new EKNumTabWidget(this); 488 tab = new EKNumTabWidget(this);
489 // tab->setMargin(tab->margin()-5); 489 // tab->setMargin(tab->margin()-5);
490 connect(tab, SIGNAL(currentChanged(QWidget*)), this, SLOT(switchSession(QWidget*))); 490 connect(tab, SIGNAL(currentChanged(QWidget*)), this, SLOT(switchSession(QWidget*)));
491 491
492 // create terminal toolbar //////////////////////////////////////////////// 492 // create terminal toolbar ////////////////////////////////////////////////
493 setToolBarsMovable( FALSE ); 493 setToolBarsMovable( FALSE );
494 menuToolBar = new QToolBar( this ); 494 menuToolBar = new QToolBar( this );
495 menuToolBar->setHorizontalStretchable( TRUE ); 495 menuToolBar->setHorizontalStretchable( TRUE );
496 496
497 QMenuBar *menuBar = new QMenuBar( menuToolBar ); 497 QMenuBar *menuBar = new QMenuBar( menuToolBar );
498 498
499 setFont(cfont); 499 setFont(cfont);
500 500
501 configMenu = new QPopupMenu( this); 501 configMenu = new QPopupMenu( this);
502 colorMenu = new QPopupMenu( this); 502 colorMenu = new QPopupMenu( this);
503 scrollMenu = new QPopupMenu( this); 503 scrollMenu = new QPopupMenu( this);
504 editCommandListMenu = new QPopupMenu( this); 504 editCommandListMenu = new QPopupMenu( this);
505 505
506 configMenu->insertItem(tr("Command List"), editCommandListMenu); 506 configMenu->insertItem(tr("Command List"), editCommandListMenu);
507 507
508 bool listHidden; 508 bool listHidden;
509 cfg.setGroup("Menubar"); 509 cfg.setGroup("Menubar");
510 if( cfg.readEntry("Hidden","FALSE") == "TRUE") 510 if( cfg.readEntry("Hidden","FALSE") == "TRUE")
511 { 511 {
512 ec_cmdlist = editCommandListMenu->insertItem( tr( "Show command list" )); 512 ec_cmdlist = editCommandListMenu->insertItem( tr( "Show command list" ));
513 listHidden=TRUE; 513 listHidden=TRUE;
514 } 514 }
515 else 515 else
516 { 516 {
517 ec_cmdlist = editCommandListMenu->insertItem( tr( "Hide command list" )); 517 ec_cmdlist = editCommandListMenu->insertItem( tr( "Hide command list" ));
518 listHidden=FALSE; 518 listHidden=FALSE;
519 } 519 }
520 520
521 cfg.setGroup("Tabs"); 521 cfg.setGroup("Tabs");
522 522
523 tabMenu = new QPopupMenu(this); 523 tabMenu = new QPopupMenu(this);
524 tm_bottom = tabMenu->insertItem(tr("Bottom" )); 524 tm_bottom = tabMenu->insertItem(tr("Bottom" ));
525 tm_top = tabMenu->insertItem(tr("Top")); 525 tm_top = tabMenu->insertItem(tr("Top"));
526 tm_hidden = tabMenu->insertItem(tr("Hidden")); 526 tm_hidden = tabMenu->insertItem(tr("Hidden"));
527 527
528 configMenu->insertItem(tr("Tabs"), tabMenu); 528 configMenu->insertItem(tr("Tabs"), tabMenu);
529 529
530 tmp=cfg.readEntry("Position","Top"); 530 tmp=cfg.readEntry("Position","Top");
531 if(tmp=="Top") 531 if(tmp=="Top")
532 { 532 {
533 tab->setTabPosition(QTabWidget::Top); 533 tab->setTabPosition(QTabWidget::Top);
534 tab->getTabBar()->show(); 534 tab->getTabBar()->show();
535 tabPos = tm_top; 535 tabPos = tm_top;
536 } 536 }
537 else if (tmp=="Bottom") 537 else if (tmp=="Bottom")
538 { 538 {
539 tab->setTabPosition(QTabWidget::Bottom); 539 tab->setTabPosition(QTabWidget::Bottom);
540 tab->getTabBar()->show(); 540 tab->getTabBar()->show();
541 tabPos = tm_bottom; 541 tabPos = tm_bottom;
542 } 542 }
543 else 543 else
544 { 544 {
545 tab->getTabBar()->hide(); 545 tab->getTabBar()->hide();
546 tab->setMargin(tab->margin()); 546 tab->setMargin(tab->margin());
547 tabPos = tm_hidden; 547 tabPos = tm_hidden;
548 } 548 }
549 549
550 cm_bw = colorMenu->insertItem(tr( "Black on White")); 550 cm_bw = colorMenu->insertItem(tr( "Black on White"));
551 cm_wb = colorMenu->insertItem(tr( "White on Black")); 551 cm_wb = colorMenu->insertItem(tr( "White on Black"));
552 cm_gb = colorMenu->insertItem(tr( "Green on Black")); 552 cm_gb = colorMenu->insertItem(tr( "Green on Black"));
553 // cm_bt = colorMenu->insertItem(tr( "Black on Transparent")); 553 // cm_bt = colorMenu->insertItem(tr( "Black on Transparent"));
554 cm_br = colorMenu->insertItem(tr( "Black on Pink")); 554 cm_br = colorMenu->insertItem(tr( "Black on Pink"));
555 cm_rb = colorMenu->insertItem(tr( "Pink on Black")); 555 cm_rb = colorMenu->insertItem(tr( "Pink on Black"));
556 cm_gy = colorMenu->insertItem(tr( "Green on Yellow")); 556 cm_gy = colorMenu->insertItem(tr( "Green on Yellow"));
557 cm_bm = colorMenu->insertItem(tr( "Blue on Magenta")); 557 cm_bm = colorMenu->insertItem(tr( "Blue on Magenta"));
558 cm_mb = colorMenu->insertItem(tr( "Magenta on Blue")); 558 cm_mb = colorMenu->insertItem(tr( "Magenta on Blue"));
559 cm_cw = colorMenu->insertItem(tr( "Cyan on White")); 559 cm_cw = colorMenu->insertItem(tr( "Cyan on White"));
560 cm_wc = colorMenu->insertItem(tr( "White on Cyan")); 560 cm_wc = colorMenu->insertItem(tr( "White on Cyan"));
561 cm_bb = colorMenu->insertItem(tr( "Blue on Black")); 561 cm_bb = colorMenu->insertItem(tr( "Blue on Black"));
562 cm_ab = colorMenu->insertItem(tr( "Amber on Black")); 562 cm_ab = colorMenu->insertItem(tr( "Amber on Black"));
563 cm_default = colorMenu->insertItem(tr("default")); 563 cm_default = colorMenu->insertItem(tr("default"));
564 564
565#ifdef QT_QWS_OPIE 565#ifdef QT_QWS_OPIE
566 566
567 colorMenu->insertItem(tr( "Custom")); 567 colorMenu->insertItem(tr( "Custom"));
568#endif 568#endif
569 569
570 configMenu->insertItem(tr( "Colors") ,colorMenu); 570 configMenu->insertItem(tr( "Colors") ,colorMenu);
571 571
572 sessionList = new QPopupMenu(this); 572 sessionList = new QPopupMenu(this);
573 sessionList-> insertItem ( Resource::loadPixmap ( "konsole/Terminal" ), tr( "new session" ), this, 573 sessionList-> insertItem ( Resource::loadPixmap ( "konsole/Terminal" ), tr( "new session" ), this,
574 SLOT(newSession()) ); 574 SLOT(newSession()) );
575 575
576 // connect( fontList, SIGNAL( activated(int) ), this, SLOT( fontChanged(int) )); 576 // connect( fontList, SIGNAL( activated(int) ), this, SLOT( fontChanged(int) ));
577 connect( configMenu, SIGNAL( activated(int) ), this, SLOT( configMenuSelected(int) )); 577 connect( configMenu, SIGNAL( activated(int) ), this, SLOT( configMenuSelected(int) ));
578 connect( colorMenu, SIGNAL( activated(int) ), this, SLOT( colorMenuIsSelected(int) )); 578 connect( colorMenu, SIGNAL( activated(int) ), this, SLOT( colorMenuIsSelected(int) ));
579 connect( tabMenu, SIGNAL( activated(int) ), this, SLOT( tabMenuSelected(int) )); 579 connect( tabMenu, SIGNAL( activated(int) ), this, SLOT( tabMenuSelected(int) ));
580 connect( scrollMenu, SIGNAL(activated(int)),this,SLOT(scrollMenuSelected(int))); 580 connect( scrollMenu, SIGNAL(activated(int)),this,SLOT(scrollMenuSelected(int)));
581 connect( editCommandListMenu,SIGNAL(activated(int)),this,SLOT(editCommandListMenuSelected(int))); 581 connect( editCommandListMenu,SIGNAL(activated(int)),this,SLOT(editCommandListMenuSelected(int)));
582 connect( sessionList, SIGNAL(activated(int)), this, SLOT( sessionListSelected(int) ) ); 582 connect( sessionList, SIGNAL(activated(int)), this, SLOT( sessionListSelected(int) ) );
583 583
584 menuBar->insertItem( tr("View"), configMenu ); 584 menuBar->insertItem( tr("View"), configMenu );
585 menuBar->insertItem( tr("Fonts"), fontList ); 585 menuBar->insertItem( tr("Fonts"), fontList );
586 menuBar->insertItem( tr("Sessions"), sessionList ); 586 menuBar->insertItem( tr("Sessions"), sessionList );
587 587
588 toolBar = new QToolBar( this ); 588 toolBar = new QToolBar( this );
589 589
590 QAction *a; 590 QAction *a;
591 591
592 // Button Commands 592 // Button Commands
593 a = new QAction( tr("New"), Resource::loadPixmap( "konsole/konsole" ), QString::null, 0, this, 0 ); 593 a = new QAction( tr("New"), Resource::loadPixmap( "konsole/konsole" ), QString::null, 0, this, 0 );
594 connect( a, SIGNAL( activated() ), this, SLOT( newSession() ) ); 594 connect( a, SIGNAL( activated() ), this, SLOT( newSession() ) );
595 a->addTo( toolBar ); 595 a->addTo( toolBar );
596 596
597 a = new QAction( tr("Full Screen"), Resource::loadPixmap( "fullscreen" ), QString::null, 0, this, 0 ); 597 a = new QAction( tr("Full Screen"), Resource::loadPixmap( "fullscreen" ), QString::null, 0, this, 0 );
598 connect( a, SIGNAL( activated() ), this, SLOT( toggleFullScreen() ) ); 598 connect( a, SIGNAL( activated() ), this, SLOT( toggleFullScreen() ) );
599 a->addTo( toolBar ); 599 a->addTo( toolBar );
600 600
601 a = new QAction( tr("Zoom"), Resource::loadPixmap( "zoom" ), QString::null, 0, this, 0 ); 601 a = new QAction( tr("Zoom"), Resource::loadPixmap( "zoom" ), QString::null, 0, this, 0 );
602 connect( a, SIGNAL( activated() ), this, SLOT( cycleZoom() ) ); 602 connect( a, SIGNAL( activated() ), this, SLOT( cycleZoom() ) );
603 a->addTo( toolBar ); 603 a->addTo( toolBar );
604 604
605 605
606 a = new QAction( tr("Enter"), Resource::loadPixmap( "konsole/enter" ), QString::null, 0, this, 0 ); 606 a = new QAction( tr("Enter"), Resource::loadPixmap( "konsole/enter" ), QString::null, 0, this, 0 );
607 connect( a, SIGNAL( activated() ), this, SLOT( hitEnter() ) ); a->addTo( toolBar ); 607 connect( a, SIGNAL( activated() ), this, SLOT( hitEnter() ) ); a->addTo( toolBar );
608 a = new QAction( tr("Space"), Resource::loadPixmap( "konsole/space" ), QString::null, 0, this, 0 ); 608 a = new QAction( tr("Space"), Resource::loadPixmap( "konsole/space" ), QString::null, 0, this, 0 );
609 connect( a, SIGNAL( activated() ), this, SLOT( hitSpace() ) ); a->addTo( toolBar ); 609 connect( a, SIGNAL( activated() ), this, SLOT( hitSpace() ) ); a->addTo( toolBar );
610 a = new QAction( tr("Tab"), Resource::loadPixmap( "konsole/tab" ), QString::null, 0, this, 0 ); 610 a = new QAction( tr("Tab"), Resource::loadPixmap( "konsole/tab" ), QString::null, 0, this, 0 );
611 connect( a, SIGNAL( activated() ), this, SLOT( hitTab() ) ); a->addTo( toolBar ); 611 connect( a, SIGNAL( activated() ), this, SLOT( hitTab() ) ); a->addTo( toolBar );
612 a = new QAction( tr("Up"), Resource::loadPixmap( "konsole/up" ), QString::null, 0, this, 0 ); 612 a = new QAction( tr("Up"), Resource::loadPixmap( "konsole/up" ), QString::null, 0, this, 0 );
613 connect( a, SIGNAL( activated() ), this, SLOT( hitUp() ) ); a->addTo( toolBar ); 613 connect( a, SIGNAL( activated() ), this, SLOT( hitUp() ) ); a->addTo( toolBar );
614 a = new QAction( tr("Down"), Resource::loadPixmap( "konsole/down" ), QString::null, 0, this, 0 ); 614 a = new QAction( tr("Down"), Resource::loadPixmap( "konsole/down" ), QString::null, 0, this, 0 );
615 connect( a, SIGNAL( activated() ), this, SLOT( hitDown() ) ); a->addTo( toolBar ); 615 connect( a, SIGNAL( activated() ), this, SLOT( hitDown() ) ); a->addTo( toolBar );
616 616
617 a = new QAction( tr("Paste"), Resource::loadPixmap( "paste" ), QString::null, 0, this, 0 ); 617 a = new QAction( tr("Paste"), Resource::loadPixmap( "paste" ), QString::null, 0, this, 0 );
618 connect( a, SIGNAL( activated() ), this, SLOT( hitPaste() ) ); 618 connect( a, SIGNAL( activated() ), this, SLOT( hitPaste() ) );
619 a->addTo( toolBar ); 619 a->addTo( toolBar );
620 620
621 secondToolBar = new QToolBar( this ); 621 secondToolBar = new QToolBar( this );
622 secondToolBar->setHorizontalStretchable( TRUE ); 622 secondToolBar->setHorizontalStretchable( TRUE );
623 623
624 commonCombo = new QComboBox( secondToolBar ); 624 commonCombo = new QComboBox( secondToolBar );
625 // commonCombo->setMaximumWidth(236); 625 // commonCombo->setMaximumWidth(236);
626 626
627 ec_quick = editCommandListMenu->insertItem( tr( "Quick Edit" ) ); 627 ec_quick = editCommandListMenu->insertItem( tr( "Quick Edit" ) );
628 if( listHidden) 628 if( listHidden)
629 { 629 {
630 secondToolBar->hide(); 630 secondToolBar->hide();
631 editCommandListMenu->setItemEnabled(ec_quick ,FALSE); 631 editCommandListMenu->setItemEnabled(ec_quick ,FALSE);
632 } 632 }
633 ec_edit = editCommandListMenu->insertItem(tr( "Edit..." ) ); 633 ec_edit = editCommandListMenu->insertItem(tr( "Edit..." ) );
634 634
635 cfg.setGroup("Commands"); 635 cfg.setGroup("Commands");
636 commonCombo->setInsertionPolicy(QComboBox::AtCurrent); 636 commonCombo->setInsertionPolicy(QComboBox::AtCurrent);
637 637
638 initCommandList(); 638 initCommandList();
639 // for (int i = 0; commonCmds[i] != NULL; i++) { 639 // for (int i = 0; commonCmds[i] != NULL; i++) {
640 // commonCombo->insertItem( commonCmds[i], i ); 640 // commonCombo->insertItem( commonCmds[i], i );
641 // tmp = cfg.readEntry( QString::number(i),""); 641 // tmp = cfg.readEntry( QString::number(i),"");
642 // if(tmp != "") 642 // if(tmp != "")
643 // commonCombo->changeItem( tmp,i ); 643 // commonCombo->changeItem( tmp,i );
644 // } 644 // }
645 645
646 connect( commonCombo, SIGNAL( activated(int) ), this, SLOT( enterCommand(int) )); 646 connect( commonCombo, SIGNAL( activated(int) ), this, SLOT( enterCommand(int) ));
647 647
648 sm_none = scrollMenu->insertItem(tr( "None" )); 648 sm_none = scrollMenu->insertItem(tr( "None" ));
649 sm_left = scrollMenu->insertItem(tr( "Left" )); 649 sm_left = scrollMenu->insertItem(tr( "Left" ));
650 sm_right = scrollMenu->insertItem(tr( "Right" )); 650 sm_right = scrollMenu->insertItem(tr( "Right" ));
651 // scrollMenu->insertSeparator(4); 651 // scrollMenu->insertSeparator(4);
652 // scrollMenu->insertItem(tr( "Horizontal" )); 652 // scrollMenu->insertItem(tr( "Horizontal" ));
653 653
654 configMenu->insertItem(tr( "ScrollBar" ),scrollMenu); 654 configMenu->insertItem(tr( "ScrollBar" ),scrollMenu);
655 655
656 configMenu->insertItem(tr( "History..." ), this, SLOT(historyDialog())); 656 configMenu->insertItem(tr( "History..." ), this, SLOT(historyDialog()));
657 657
658 cm_wrap = configMenu->insertItem(tr( "Wrap" )); 658 cm_wrap = configMenu->insertItem(tr( "Wrap" ));
659 cfg.setGroup("ScrollBar"); 659 cfg.setGroup("ScrollBar");
660 configMenu->setItemChecked(cm_wrap, cfg.readBoolEntry("HorzScroll",0)); 660 configMenu->setItemChecked(cm_wrap, cfg.readBoolEntry("HorzScroll",0));
661 661
662 cm_beep = configMenu->insertItem(tr( "Use Beep" )); 662 cm_beep = configMenu->insertItem(tr( "Use Beep" ));
663 cfg.setGroup("Menubar"); 663 cfg.setGroup("Menubar");
664 configMenu->setItemChecked(cm_beep, cfg.readBoolEntry("useBeep",0)); 664 configMenu->setItemChecked(cm_beep, cfg.readBoolEntry("useBeep",0));
665 665
666 fullscreen_msg = new QLabel(this); 666 fullscreen_msg = new QLabel(this);
667 fullscreen_msg-> setAlignment ( AlignCenter | SingleLine ); 667 fullscreen_msg-> setAlignment ( AlignCenter | SingleLine );
668 fullscreen_msg-> hide(); 668 fullscreen_msg-> hide();
669 fullscreen_msg-> setSizePolicy ( QSizePolicy ( QSizePolicy::Expanding, QSizePolicy::Expanding )); 669 fullscreen_msg-> setSizePolicy ( QSizePolicy ( QSizePolicy::Expanding, QSizePolicy::Expanding ));
670 fullscreen_msg-> setAutoResize(true); 670 fullscreen_msg-> setAutoResize(true);
671 fullscreen_msg-> setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 671 fullscreen_msg-> setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
672 fullscreen_msg-> setText(tr("To exit fullscreen, tap here.")); 672 fullscreen_msg-> setText(tr("To exit fullscreen, tap here."));
673 673
674 fullscreen_timer = new QTimer(this); 674 fullscreen_timer = new QTimer(this);
675 connect(fullscreen_timer, SIGNAL(timeout()), 675 connect(fullscreen_timer, SIGNAL(timeout()),
676 this, SLOT(fullscreenTimeout())); 676 this, SLOT(fullscreenTimeout()));
677 show_fullscreen_msg = true; 677 show_fullscreen_msg = true;
678 678
679 //scrollMenuSelected(-29); 679 //scrollMenuSelected(-29);
680 // cfg.setGroup("ScrollBar"); 680 // cfg.setGroup("ScrollBar");
681 // if(cfg.readBoolEntry("HorzScroll",0)) { 681 // if(cfg.readBoolEntry("HorzScroll",0)) {
682 // if(cfg.readNumEntry("Position",2) == 0) 682 // if(cfg.readNumEntry("Position",2) == 0)
683 // te->setScrollbarLocation(1); 683 // te->setScrollbarLocation(1);
684 // else 684 // else
685 // te->setScrollbarLocation(0); 685 // te->setScrollbarLocation(0);
686 // te->setScrollbarLocation( cfg.readNumEntry("Position",2)); 686 // te->setScrollbarLocation( cfg.readNumEntry("Position",2));
687 // te->setWrapAt(120); 687 // te->setWrapAt(120);
688 // } 688 // }
689 // create applications ///////////////////////////////////////////////////// 689 // create applications /////////////////////////////////////////////////////
690 setCentralWidget(tab); 690 setCentralWidget(tab);
691 691
692 // load keymaps //////////////////////////////////////////////////////////// 692 // load keymaps ////////////////////////////////////////////////////////////
693 KeyTrans::loadAll(); 693 KeyTrans::loadAll();
694 for (int i = 0; i < KeyTrans::count(); i++) 694 for (int i = 0; i < KeyTrans::count(); i++)
695 { 695 {
696 KeyTrans* s = KeyTrans::find(i); 696 KeyTrans* s = KeyTrans::find(i);
697 assert( s ); 697 assert( s );
698 } 698 }
699 699
700 se_pgm = _pgm; 700 se_pgm = _pgm;
701 se_args = _args; 701 se_args = _args;
702 702
703 cfg.setGroup("CommandLine"); 703 cfg.setGroup("CommandLine");
704 704
705 if (cfg.hasKey("shell_args")) 705 if (cfg.hasKey("shell_args"))
706 { 706 {
707 QStringList se_args_list = cfg.readListEntry("shell_args",'|'); 707 QStringList se_args_list = cfg.readListEntry("shell_args",'|');
708 for(uint i = 0; i < se_args_list.count(); i++) 708 for(uint i = 0; i < se_args_list.count(); i++)
709 { 709 {
710 se_args.prepend(se_args_list[se_args_list.count() - i - 1].latin1()); 710 se_args.prepend(se_args_list[se_args_list.count() - i - 1].latin1());
711 } 711 }
712 } 712 }
713 else 713 else
714 { 714 {
715 se_args.prepend("--login"); 715 se_args.prepend("--login");
716 } 716 }
717 717
718 se_pgm = cfg.readEntry("shell_bin", QString(se_pgm)); 718 se_pgm = cfg.readEntry("shell_bin", QString(se_pgm));
719 719
720 // this is the "documentation" for those who know to look 720 // this is the "documentation" for those who know to look
721 if (! cfg.hasKey("shell_args")) 721 if (! cfg.hasKey("shell_args"))
722 { 722 {
723 cfg.writeEntry("shell_args",QStringList::fromStrList(se_args),'|'); 723 cfg.writeEntry("shell_args",QStringList::fromStrList(se_args),'|');
724 } 724 }
725 if (! cfg.hasKey("shell_bin")) 725 if (! cfg.hasKey("shell_bin"))
726 { 726 {
727 cfg.writeEntry("shell_bin",QString(se_pgm)); 727 cfg.writeEntry("shell_bin",QString(se_pgm));
728 } 728 }
729 729
730 parseCommandLine(); 730 parseCommandLine();
731 731
732 // read and apply default values /////////////////////////////////////////// 732 // read and apply default values ///////////////////////////////////////////
733 resize(321, 321); // Dummy. 733 resize(321, 321); // Dummy.
734 QSize currentSize = size(); 734 QSize currentSize = size();
735 if (currentSize != size()) 735 if (currentSize != size())
736 defaultSize = size(); 736 defaultSize = size();
737 737
738 738
739 /* allows us to catch cancel/escape */ 739 /* allows us to catch cancel/escape */
740 reparent ( 0, WStyle_Customize | WStyle_NoBorder, 740 reparent ( 0, WStyle_Customize | WStyle_NoBorder,
741 QPoint ( 0, 0 )); 741 QPoint ( 0, 0 ));
742} 742}
743 743
744void Konsole::show() 744void Konsole::show()
745{ 745{
746 if ( !nsessions ) 746 if ( !nsessions )
747 { 747 {
748 newSession(); 748 newSession();
749 } 749 }
750 QMainWindow::show(); 750 QMainWindow::show();
751 751
752} 752}
753 753
754void Konsole::initSession(const char*, QStrList &) 754void Konsole::initSession(const char*, QStrList &)
755{ 755{
756 QMainWindow::show(); 756 QMainWindow::show();
757} 757}
758 758
759Konsole::~Konsole() 759Konsole::~Konsole()
760{ 760{
761 while (nsessions > 0) 761 while (nsessions > 0)
762 { 762 {
763 doneSession(getTe(), 0); 763 doneSession(getTe(), 0);
764 } 764 }
765} 765}
766 766
767void 767void
768Konsole::historyDialog() 768Konsole::historyDialog()
769{ 769{
770 QDialog *d = new QDialog ( this, "histdlg", true ); 770 QDialog *d = new QDialog ( this, "histdlg", true );
771 // d-> setCaption ( tr( "History" )); 771 // d-> setCaption ( tr( "History" ));
772 772
773 QBoxLayout *lay = new QVBoxLayout ( d, 4, 4 ); 773 QBoxLayout *lay = new QVBoxLayout ( d, 4, 4 );
774 774
775 QLabel *l = new QLabel ( tr( "History Lines:" ), d ); 775 QLabel *l = new QLabel ( tr( "History Lines:" ), d );
776 lay-> addWidget ( l ); 776 lay-> addWidget ( l );
777 777
778 Config cfg( "Konsole" ); 778 Config cfg( "Konsole" );
779 cfg.setGroup("History"); 779 cfg.setGroup("History");
780 int hist = cfg.readNumEntry("history_lines",300); 780 int hist = cfg.readNumEntry("history_lines",300);
781 int avg_line = cfg.readNumEntry("avg_line_length",60); 781 int avg_line = cfg.readNumEntry("avg_line_length",60);
782 782
783 QSpinBox *spin = new QSpinBox ( 1, 100000, 20, d ); 783 QSpinBox *spin = new QSpinBox ( 1, 100000, 20, d );
784 spin-> setValue ( hist ); 784 spin-> setValue ( hist );
785 spin-> setWrapping ( true ); 785 spin-> setWrapping ( true );
786 spin-> setButtonSymbols ( QSpinBox::PlusMinus ); 786 spin-> setButtonSymbols ( QSpinBox::PlusMinus );
787 lay-> addWidget ( spin ); 787 lay-> addWidget ( spin );
788 788
789 if ( d-> exec ( ) == QDialog::Accepted ) 789 if ( d-> exec ( ) == QDialog::Accepted )
790 { 790 {
791 cfg.writeEntry("history_lines", spin->value()); 791 cfg.writeEntry("history_lines", spin->value());
792 cfg.writeEntry("avg_line_length", avg_line); 792 cfg.writeEntry("avg_line_length", avg_line);
793 if (getTe() != NULL) 793 if (getTe() != NULL)
794 { 794 {
795 getTe()->currentSession->setHistory(true); 795 getTe()->currentSession->setHistory(true);
796 } 796 }
797 } 797 }
798 798
799 delete d; 799 delete d;
800} 800}
801 801
802 802
803void Konsole::cycleZoom() 803void Konsole::cycleZoom()
804{ 804{
805 TEWidget* te = getTe(); 805 TEWidget* te = getTe();
806 QFont font = te->getVTFont(); 806 QFont font = te->getVTFont();
807 int size = font.pointSize(); 807 int size = font.pointSize();
808 changeFontSize(1); 808 changeFontSize(1);
809 font = te->getVTFont(); 809 font = te->getVTFont();
810 if (font.pointSize() <= size) 810 if (font.pointSize() <= size)
811 { 811 {
812 do 812 do
813 { 813 {
814 font = te->getVTFont(); 814 font = te->getVTFont();
815 size = font.pointSize(); 815 size = font.pointSize();
816 changeFontSize(-1); 816 changeFontSize(-1);
817 font = te->getVTFont(); 817 font = te->getVTFont();
818 } 818 }
819 while (font.pointSize() < size); 819 while (font.pointSize() < size);
820 } 820 }
821} 821}
822 822
823void Konsole::changeFontSize(int delta) 823void Konsole::changeFontSize(int delta)
824{ 824{
825 // printf("delta font size %d\n", delta); 825 // printf("delta font size %d\n", delta);
826 TEWidget* te = getTe(); 826 TEWidget* te = getTe();
827 QFont font = te->getVTFont(); 827 QFont font = te->getVTFont();
828 int size = font.pointSize(); 828 int size = font.pointSize();
829 int closest = delta > 0? 10000 : -10000; 829 int closest = delta > 0? 10000 : -10000;
830 int closest_font = -1; 830 int closest_font = -1;
831 for(uint i = 0; i < fonts.count(); i++) 831 for(uint i = 0; i < fonts.count(); i++)
832 { 832 {
833 if (fonts.at(i)->getFont() == font) 833 if (fonts.at(i)->getFont() == font)
834 { 834 {
835 if (delta > 0) 835 if (delta > 0)
836 { 836 {
837 if (i+1 < fonts.count() 837 if (i+1 < fonts.count()
838 && fonts.at(i+1)->getFamilyNum() == fonts.at(i)->getFamilyNum()) 838 && fonts.at(i+1)->getFamilyNum() == fonts.at(i)->getFamilyNum())
839 { 839 {
840 setFont(i+1); 840 setFont(i+1);
841 printf("font %d\n", i+1); 841 printf("font %d\n", i+1);
842 return; 842 return;
843 } 843 }
844 } 844 }
845 else if (delta < 0) 845 else if (delta < 0)
846 { 846 {
847 if (i > 0 847 if (i > 0
848 && fonts.at(i-1)->getFamilyNum() == fonts.at(i)->getFamilyNum()) 848 && fonts.at(i-1)->getFamilyNum() == fonts.at(i)->getFamilyNum())
849 { 849 {
850 setFont(i-1); 850 setFont(i-1);
851 printf("font %d\n", i-1); 851 printf("font %d\n", i-1);
852 return; 852 return;
853 } 853 }
854 } 854 }
855 } 855 }
856 int fsize = fonts.at(i)->getSize(); 856 int fsize = fonts.at(i)->getSize();
857 printf("%d size=%d fsize=%d closest=%d\n", i, size, fsize, closest); 857 printf("%d size=%d fsize=%d closest=%d\n", i, size, fsize, closest);
858 if ((delta > 0 && fsize > size && fsize < closest) 858 if ((delta > 0 && fsize > size && fsize < closest)
859 || (delta < 0 && fsize < size && fsize > closest)) 859 || (delta < 0 && fsize < size && fsize > closest))
860 { 860 {
861 closest = fsize; 861 closest = fsize;
862 closest_font = i; 862 closest_font = i;
863 } 863 }
864 } 864 }
865 if (closest_font >= 0) 865 if (closest_font >= 0)
866 { 866 {
867 printf("font closest %d (%d)\n", closest_font, closest); 867 printf("font closest %d (%d)\n", closest_font, closest);
868 setFont(closest_font); 868 setFont(closest_font);
869 } 869 }
870} 870}
871 871
872int Konsole::findFont(const QString& name, int size, bool exactMatch) 872int Konsole::findFont(const QString& name, int size, bool exactMatch)
873{ 873{
874 for(uint i = 0; i < fonts.count(); i++) 874 for(uint i = 0; i < fonts.count(); i++)
875 { 875 {
876 if (fonts.at(i)->getName() == name 876 if (fonts.at(i)->getName() == name
877 && fonts.at(i)->getSize() == size) 877 && fonts.at(i)->getSize() == size)
878 { 878 {
879 return(i); 879 return(i);
880 } 880 }
881 } 881 }
882 if (exactMatch) 882 if (exactMatch)
883 { 883 {
884 return(-1); 884 return(-1);
885 } 885 }
886 for(uint i = 0; i < fonts.count(); i++) 886 for(uint i = 0; i < fonts.count(); i++)
887 { 887 {
888 if (fonts.at(i)->getSize() == size) 888 if (fonts.at(i)->getSize() == size)
889 { 889 {
890 return(i); 890 return(i);
891 } 891 }
892 } 892 }
893 return(-1); 893 return(-1);
894} 894}
895 895
896void Konsole::setFont(int f) 896void Konsole::setFont(int f)
897{ 897{
898 VTFont* font = fonts.at(f); 898 VTFont* font = fonts.at(f);
899 if (font) 899 if (font)
900 { 900 {
901 TEWidget* te = getTe(); 901 TEWidget* te = getTe();
902 if (te != 0) 902 if (te != 0)
903 { 903 {
904 te->setVTFont(font->getFont()); 904 te->setVTFont(font->getFont());
905 } 905 }
906 cfont = f; 906 cfont = f;
907 907
908 int familyNum = font->getFamilyNum(); 908 int familyNum = font->getFamilyNum();
909 int size = font->getSize(); 909 int size = font->getSize();
910 printf("familyNum = %d size = %d count=%d\n", familyNum, size, 910 printf("familyNum = %d size = %d count=%d\n", familyNum, size,
911 fontList->count()); 911 fontList->count());
912 for(int i = 0; i < (int)fontList->count(); i++) 912 for(int i = 0; i < (int)fontList->count(); i++)
913 { 913 {
914 fontList->setItemChecked(i + 1000, i == familyNum); 914 fontList->setItemChecked(i + 1000, i == familyNum);
915 } 915 }
916 for(int i = 0; i < (int)fonts.count(); i++) 916 for(int i = 0; i < (int)fonts.count(); i++)
917 { 917 {
918 fontList->setItemChecked(i, fonts.at(i)->getFamilyNum() == familyNum 918 fontList->setItemChecked(i, fonts.at(i)->getFamilyNum() == familyNum
919 && fonts.at(i)->getSize() == size); 919 && fonts.at(i)->getSize() == size);
920 } 920 }
921 Config cfg( "Konsole" ); 921 Config cfg( "Konsole" );
922 cfg.setGroup("Font"); 922 cfg.setGroup("Font");
923 QString ss = "Session"+ QString::number(tab->currentPageIndex()+1); 923 QString ss = "Session"+ QString::number(tab->currentPageIndex()+1);
924 if (tab->currentPageIndex() == 0) 924 if (tab->currentPageIndex() == 0)
925 { 925 {
926 cfg.writeEntry("FontName", fonts.at(cfont)->getFamily()); 926 cfg.writeEntry("FontName", fonts.at(cfont)->getFamily());
927 cfg.writeEntry("FontSize", fonts.at(cfont)->getSize()); 927 cfg.writeEntry("FontSize", fonts.at(cfont)->getSize());
928 } 928 }
929 cfg.writeEntry("FontName"+ss, fonts.at(cfont)->getFamily()); 929 cfg.writeEntry("FontName"+ss, fonts.at(cfont)->getFamily());
930 cfg.writeEntry("FontSize"+ss, fonts.at(cfont)->getSize()); 930 cfg.writeEntry("FontSize"+ss, fonts.at(cfont)->getSize());
931 } 931 }
932} 932}
933 933
934#if 0 934#if 0
935void Konsole::fontChanged(int f) 935void Konsole::fontChanged(int f)
936{ 936{
937 VTFont* font = fonts.at(f); 937 VTFont* font = fonts.at(f);
938 if (font != 0) 938 if (font != 0)
939 { 939 {
940 for(uint i = 0; i < fonts.count(); i++) 940 for(uint i = 0; i < fonts.count(); i++)
941 { 941 {
942 fontList->setItemChecked(i, (i == (uint) f) ? TRUE : FALSE); 942 fontList->setItemChecked(i, (i == (uint) f) ? TRUE : FALSE);
943 } 943 }
944 944
945 cfont = f; 945 cfont = f;
946 946
947 TEWidget* te = getTe(); 947 TEWidget* te = getTe();
948 if (te != 0) 948 if (te != 0)
949 { 949 {
950 te->setVTFont(font->getFont()); 950 te->setVTFont(font->getFont());
951 } 951 }
952 } 952 }
953} 953}
954#endif 954#endif
955 955
956 956
957void Konsole::enterCommand(int c) 957void Konsole::enterCommand(int c)
958{ 958{
959 TEWidget* te = getTe(); 959 TEWidget* te = getTe();
960 if (te != 0) 960 if (te != 0)
961 { 961 {
962 if(!commonCombo->editable()) 962 if(!commonCombo->editable())
963 { 963 {
964 QString text = commonCombo->text(c); //commonCmds[c]; 964 QString text = commonCombo->text(c); //commonCmds[c];
965 te->emitText(text); 965 te->emitText(text);
966 } 966 }
967 else 967 else
968 { 968 {
969 changeCommand( commonCombo->text(c), c); 969 changeCommand( commonCombo->text(c), c);
970 } 970 }
971 } 971 }
972} 972}
973 973
974void Konsole::hitEnter() 974void Konsole::hitEnter()
975{ 975{
976 TEWidget* te = getTe(); 976 TEWidget* te = getTe();
977 if (te != 0) 977 if (te != 0)
978 { 978 {
979 te->emitText(QString("\r")); 979 te->emitText(QString("\r"));
980 } 980 }
981} 981}
982 982
983void Konsole::hitSpace() 983void Konsole::hitSpace()
984{ 984{
985 TEWidget* te = getTe(); 985 TEWidget* te = getTe();
986 if (te != 0) 986 if (te != 0)
987 { 987 {
988 te->emitText(QString(" ")); 988 te->emitText(QString(" "));
989 } 989 }
990} 990}
991 991
992void Konsole::hitTab() 992void Konsole::hitTab()
993{ 993{
994 TEWidget* te = getTe(); 994 TEWidget* te = getTe();
995 if (te != 0) 995 if (te != 0)
996 { 996 {
997 te->emitText(QString("\t")); 997 te->emitText(QString("\t"));
998 } 998 }
999} 999}
1000 1000
1001void Konsole::hitPaste() 1001void Konsole::hitPaste()
1002{ 1002{
1003 TEWidget* te = getTe(); 1003 TEWidget* te = getTe();
1004 if (te != 0) 1004 if (te != 0)
1005 { 1005 {
1006 te->pasteClipboard(); 1006 te->pasteClipboard();
1007 } 1007 }
1008} 1008}
1009 1009
1010void Konsole::hitUp() 1010void Konsole::hitUp()
1011{ 1011{
1012 TEWidget* te = getTe(); 1012 TEWidget* te = getTe();
1013 if (te != 0) 1013 if (te != 0)
1014 { 1014 {
1015 QKeyEvent ke( QKeyEvent::KeyPress, Qt::Key_Up, 0, 0); 1015 QKeyEvent ke( QKeyEvent::KeyPress, Qt::Key_Up, 0, 0);
1016 QApplication::sendEvent( te, &ke ); 1016 QApplication::sendEvent( te, &ke );
1017 } 1017 }
1018} 1018}
1019 1019
1020void Konsole::hitDown() 1020void Konsole::hitDown()
1021{ 1021{
1022 TEWidget* te = getTe(); 1022 TEWidget* te = getTe();
1023 if (te != 0) 1023 if (te != 0)
1024 { 1024 {
1025 QKeyEvent ke( QKeyEvent::KeyPress, Qt::Key_Down, 0, 0); 1025 QKeyEvent ke( QKeyEvent::KeyPress, Qt::Key_Down, 0, 0);
1026 QApplication::sendEvent( te, &ke ); 1026 QApplication::sendEvent( te, &ke );
1027 } 1027 }
1028} 1028}
1029 1029
1030/** 1030/**
1031 This function calculates the size of the external widget 1031 This function calculates the size of the external widget
1032 needed for the internal widget to be 1032 needed for the internal widget to be
1033 */ 1033 */
1034QSize Konsole::calcSize(int columns, int lines) 1034QSize Konsole::calcSize(int columns, int lines)
1035{ 1035{
1036 TEWidget* te = getTe(); 1036 TEWidget* te = getTe();
1037 if (te != 0) 1037 if (te != 0)
1038 { 1038 {
1039 QSize size = te->calcSize(columns, lines); 1039 QSize size = te->calcSize(columns, lines);
1040 return size; 1040 return size;
1041 } 1041 }
1042 else 1042 else
1043 { 1043 {
1044 QSize size; 1044 QSize size;
1045 return size; 1045 return size;
1046 } 1046 }
1047} 1047}
1048 1048
1049/** 1049/**
1050 sets application window to a size based on columns X lines of the te 1050 sets application window to a size based on columns X lines of the te
1051 guest widget. Call with (0,0) for setting default size. 1051 guest widget. Call with (0,0) for setting default size.
1052*/ 1052*/
1053 1053
1054void Konsole::setColLin(int columns, int lines) 1054void Konsole::setColLin(int columns, int lines)
1055{ 1055{
1056 odebug << "konsole::setColLin:: Columns " << columns << "" << oendl; 1056 odebug << "konsole::setColLin:: Columns " << columns << "" << oendl;
1057 1057
1058 if ((columns==0) || (lines==0)) 1058 if ((columns==0) || (lines==0))
1059 { 1059 {
1060 if (defaultSize.isEmpty()) // not in config file : set default value 1060 if (defaultSize.isEmpty()) // not in config file : set default value
1061 { 1061 {
1062 defaultSize = calcSize(80,24); 1062 defaultSize = calcSize(80,24);
1063 // notifySize(24,80); // set menu items (strange arg order !) 1063 // notifySize(24,80); // set menu items (strange arg order !)
1064 } 1064 }
1065 resize(defaultSize); 1065 resize(defaultSize);
1066 } 1066 }
1067 else 1067 else
1068 { 1068 {
1069 resize(calcSize(columns, lines)); 1069 resize(calcSize(columns, lines));
1070 // notifySize(lines,columns); // set menu items (strange arg order !) 1070 // notifySize(lines,columns); // set menu items (strange arg order !)
1071 } 1071 }
1072} 1072}
1073 1073
1074/* 1074/*
1075void Konsole::setFont(int fontno) 1075void Konsole::setFont(int fontno)
1076{ 1076{
1077 QFont f; 1077 QFont f;
1078 if (fontno == 0) 1078 if (fontno == 0)
1079 f = defaultFont = QFont( "Helvetica", 12 ); 1079 f = defaultFont = QFont( "Helvetica", 12 );
1080 else 1080 else
1081 if (fonts[fontno][0] == '-') 1081 if (fonts[fontno][0] == '-')
1082 f.setRawName( fonts[fontno] ); 1082 f.setRawName( fonts[fontno] );
1083 else 1083 else
1084 { 1084 {
1085 f.setFamily(fonts[fontno]); 1085 f.setFamily(fonts[fontno]);
1086 f.setRawMode( TRUE ); 1086 f.setRawMode( TRUE );
1087 } 1087 }
1088 if ( !f.exactMatch() && fontno != 0) 1088 if ( !f.exactMatch() && fontno != 0)
1089 { 1089 {
1090 QString msg = i18n("Font `%1' not found.\nCheck README.linux.console for help.").arg(fonts[fontno]); 1090 QString msg = i18n("Font `%1' not found.\nCheck README.linux.console for help.").arg(fonts[fontno]);
1091 QMessageBox(this, msg); 1091 QMessageBox(this, msg);
1092 return; 1092 return;
1093 } 1093 }
1094 if (se) se->setFontNo(fontno); 1094 if (se) se->setFontNo(fontno);
1095 te->setVTFont(f); 1095 te->setVTFont(f);
1096 n_font = fontno; 1096 n_font = fontno;
1097} 1097}
1098*/ 1098*/
1099 1099
1100// --| color selection |------------------------------------------------------- 1100// --| color selection |-------------------------------------------------------
1101 1101
1102void Konsole::changeColumns(int /*columns*/) 1102void Konsole::changeColumns(int /*columns*/)
1103{ //FIXME this seems to cause silliness when reset command is executed 1103{ //FIXME this seems to cause silliness when reset command is executed
1104 // odebug << "change columns" << oendl; 1104 // odebug << "change columns" << oendl;
1105 // TEWidget* te = getTe(); 1105 // TEWidget* te = getTe();
1106 // if (te != 0) { 1106 // if (te != 0) {
1107 // setColLin(columns,te->Lines()); 1107 // setColLin(columns,te->Lines());
1108 // te->update(); 1108 // te->update();
1109 // } 1109 // }
1110} 1110}
1111 1111
1112//FIXME: If a child dies during session swap, 1112//FIXME: If a child dies during session swap,
1113// this routine might be called before 1113// this routine might be called before
1114// session swap is completed. 1114// session swap is completed.
1115 1115
1116void Konsole::doneSession(TEWidget* te, int ) 1116void Konsole::doneSession(TEWidget* te, int )
1117{ 1117{
1118 // TEWidget *te = NULL; 1118 // TEWidget *te = NULL;
1119 // if (sess->currentSession == tab->currentPage()) { 1119 // if (sess->currentSession == tab->currentPage()) {
1120 // printf("done current session\n"); 1120 // printf("done current session\n");
1121 // te = getTe(); 1121 // te = getTe();
1122 // } else { 1122 // } else {
1123 // int currentPage = tab->currentPageIndex(); 1123 // int currentPage = tab->currentPageIndex();
1124 // printf("done not current session\n"); 1124 // printf("done not current session\n");
1125 // for(int i = 0; i < nsessions; i++) { 1125 // for(int i = 0; i < nsessions; i++) {
1126 // tab->setCurrentPage(i); 1126 // tab->setCurrentPage(i);
1127 // printf("find session %d tab page %x session %x\n", 1127 // printf("find session %d tab page %x session %x\n",
1128 // i, tab->currentPage(), sess->currentSession); 1128 // i, tab->currentPage(), sess->currentSession);
1129 // if (tab->currentPage() == sess->currentSession) { 1129 // if (tab->currentPage() == sess->currentSession) {
1130 // printf("found session %d\n", i); 1130 // printf("found session %d\n", i);
1131 // te = tab->currentPage(); 1131 // te = tab->currentPage();
1132 // break; 1132 // break;
1133 // } 1133 // }
1134 // } 1134 // }
1135 // tab->setCurrentPage(currentPage); 1135 // tab->setCurrentPage(currentPage);
1136 // } 1136 // }
1137 if (te != 0) 1137 if (te != 0)
1138 { 1138 {
1139 te->currentSession->setConnect(FALSE); 1139 te->currentSession->setConnect(FALSE);
1140 tab->removeTab(te); 1140 tab->removeTab(te);
1141 delete te->currentSession; 1141 delete te->currentSession;
1142 delete te; 1142 delete te;
1143 sessionList->removeItem(nsessions); 1143 sessionList->removeItem(nsessions);
1144 nsessions--; 1144 nsessions--;
1145 } 1145 }
1146 if (nsessions == 0) 1146 if (nsessions == 0)
1147 { 1147 {
1148 close(); 1148 close();
1149 } 1149 }
1150} 1150}
1151 1151
1152void Konsole::changeTitle(TEWidget* te, const QString& newTitle ) 1152void Konsole::changeTitle(TEWidget* te, const QString& newTitle )
1153{ 1153{
1154 if (te == getTe()) 1154 if (te == getTe())
1155 { 1155 {
1156 setCaption( newTitle + " - " + tr( "Konsole " ) ); 1156 setCaption( newTitle + " - " + tr( "Konsole " ) );
1157 } 1157 }
1158} 1158}
1159 1159
1160 1160
1161void Konsole::newSession() 1161void Konsole::newSession()
1162{ 1162{
1163 if(nsessions < 15) 1163 if(nsessions < 15)
1164 { // seems to be something weird about 16 tabs on the Zaurus.... memory? 1164 { // seems to be something weird about 16 tabs on the Zaurus.... memory?
1165 TEWidget* te = new TEWidget(tab); 1165 TEWidget* te = new TEWidget(tab);
1166 Config cfg( "Konsole" ); 1166 Config cfg( "Konsole" );
1167 cfg.setGroup("Menubar"); 1167 cfg.setGroup("Menubar");
1168 1168
1169 // FIXME use more defaults from config file 1169 // FIXME use more defaults from config file
1170 te->useBeep=cfg.readBoolEntry("useBeep",0); 1170 te->useBeep=cfg.readBoolEntry("useBeep",0);
1171 1171
1172 // te->setBackgroundMode(PaletteBase); //we want transparent!! 1172 // te->setBackgroundMode(PaletteBase); //we want transparent!!
1173 1173
1174 cfg.setGroup("Font"); 1174 cfg.setGroup("Font");
1175 QString sn = "Session" + QString::number(nsessions+1); 1175 QString sn = "Session" + QString::number(nsessions+1);
1176 printf("read font session %s\n", sn.latin1()); 1176 printf("read font session %s\n", sn.latin1());
1177 QString fontName = cfg.readEntry("FontName"+sn, 1177 QString fontName = cfg.readEntry("FontName"+sn,
1178 cfg.readEntry("FontName", 1178 cfg.readEntry("FontName",
1179 fonts.at(cfont)->getFamily())); 1179 fonts.at(cfont)->getFamily()));
1180 int fontSize = cfg.readNumEntry("FontSize"+sn, 1180 int fontSize = cfg.readNumEntry("FontSize"+sn,
1181 cfg.readNumEntry("FontSize", 1181 cfg.readNumEntry("FontSize",
1182 fonts.at(cfont)->getSize())); 1182 fonts.at(cfont)->getSize()));
1183 cfont = findFont(fontName, fontSize, false); 1183 cfont = findFont(fontName, fontSize, false);
1184 printf("lookup font %s size %d got %d\n", fontName.latin1(), fontSize, cfont); 1184 printf("lookup font %s size %d got %d\n", fontName.latin1(), fontSize, cfont);
1185 if (cfont < 0) 1185 if (cfont < 0)
1186 cfont = 0; 1186 cfont = 0;
1187 te->setVTFont(fonts.at(cfont)->getFont()); 1187 te->setVTFont(fonts.at(cfont)->getFont());
1188 1188
1189 tab->addTab(te); 1189 tab->addTab(te);
1190 TESession* se = new TESession(this, te, se_pgm, se_args, "xterm"); 1190 TESession* se = new TESession(this, te, se_pgm, se_args, "xterm");
1191 te->currentSession = se; 1191 te->currentSession = se;
1192 connect( se, SIGNAL(done(TEWidget*,int)), this, SLOT(doneSession(TEWidget*,int)) ); 1192 connect( se, SIGNAL(done(TEWidget*,int)), this, SLOT(doneSession(TEWidget*,int)) );
1193 connect( se, SIGNAL(changeTitle(TEWidget*,const QString&)), this, 1193 connect( se, SIGNAL(changeTitle(TEWidget*,const QString&)), this,
1194 SLOT(changeTitle(TEWidget*,const QString&)) ); 1194 SLOT(changeTitle(TEWidget*,const QString&)) );
1195 connect(te, SIGNAL(changeFontSize(int)), this, SLOT(changeFontSize(int))); 1195 connect(te, SIGNAL(changeFontSize(int)), this, SLOT(changeFontSize(int)));
1196 connect(te, SIGNAL(changeSession(int)), this, SLOT(changeSession(int))); 1196 connect(te, SIGNAL(changeSession(int)), this, SLOT(changeSession(int)));
1197 connect(te, SIGNAL(newSession()), this, SLOT(newSession())); 1197 connect(te, SIGNAL(newSession()), this, SLOT(newSession()));
1198 connect(te, SIGNAL(toggleFullScreen()), this, SLOT(toggleFullScreen())); 1198 connect(te, SIGNAL(toggleFullScreen()), this, SLOT(toggleFullScreen()));
1199 connect(te, SIGNAL(setFullScreen(bool)), this, SLOT(setFullScreen(bool))); 1199 connect(te, SIGNAL(setFullScreen(bool)), this, SLOT(setFullScreen(bool)));
1200 se->run(); 1200 se->run();
1201 se->setConnect(TRUE); 1201 se->setConnect(TRUE);
1202 se->setHistory(b_scroll); 1202 se->setHistory(b_scroll);
1203 nsessions++; 1203 nsessions++;
1204 sessionList->insertItem(QString::number(nsessions), nsessions); 1204 sessionList->insertItem(QString::number(nsessions), nsessions);
1205 sessionListSelected(nsessions); 1205 sessionListSelected(nsessions);
1206 doWrap(); 1206 doWrap();
1207 setColor(nsessions-1); 1207 setColor(nsessions-1);
1208 } 1208 }
1209} 1209}
1210 1210
1211TEWidget* Konsole::getTe() 1211TEWidget* Konsole::getTe()
1212{ 1212{
1213 if (nsessions) 1213 if (nsessions)
1214 { 1214 {
1215 return (TEWidget *) tab->currentPage(); 1215 return (TEWidget *) tab->currentPage();
1216 } 1216 }
1217 else 1217 else
1218 { 1218 {
1219 return 0; 1219 return 0;
1220 } 1220 }
1221} 1221}
1222 1222
1223void Konsole::sessionListSelected(int id) 1223void Konsole::sessionListSelected(int id)
1224{ 1224{
1225 if (id < 0) 1225 if (id < 0)
1226 { 1226 {
1227 return; 1227 return;
1228 } 1228 }
1229 QString selected = sessionList->text(id); 1229 QString selected = sessionList->text(id);
1230 EKNumTabBar *tabBar = tab->getTabBar(); 1230 EKNumTabBar *tabBar = tab->getTabBar();
1231 1231
1232 int n = 0; 1232 int n = 0;
1233 for(int i = 0; n < tabBar->count(); i++) 1233 for(int i = 0; n < tabBar->count(); i++)
1234 { 1234 {
1235 if (tabBar->tab(i)) 1235 if (tabBar->tab(i))
1236 { 1236 {
1237 // printf("selected = %s tab %d = %s\n", selected.latin1(), 1237 // printf("selected = %s tab %d = %s\n", selected.latin1(),
1238 // i, tabBar->tab(i)->text().latin1()); 1238 // i, tabBar->tab(i)->text().latin1());
1239 if (tabBar->tab(i)->text() == selected) 1239 if (tabBar->tab(i)->text() == selected)
1240 { 1240 {
1241 tab->setCurrentPage(i); 1241 tab->setCurrentPage(i);
1242 break; 1242 break;
1243 } 1243 }
1244 n++; 1244 n++;
1245 } 1245 }
1246 } 1246 }
1247} 1247}
1248 1248
1249 1249
1250void Konsole::changeSession(int delta) 1250void Konsole::changeSession(int delta)
1251{ 1251{
1252 printf("delta session %d\n", delta); 1252 printf("delta session %d\n", delta);
1253 QTabBar *tabBar = tab->getTabBar(); 1253 QTabBar *tabBar = tab->getTabBar();
1254 int i = tabBar->tab(tabBar->currentTab())->text().toInt() - 1; 1254 int i = tabBar->tab(tabBar->currentTab())->text().toInt() - 1;
1255 i += delta; 1255 i += delta;
1256 if (i < 0) 1256 if (i < 0)
1257 i += tabBar->count(); 1257 i += tabBar->count();
1258 if (i >= tabBar->count()) 1258 if (i >= tabBar->count())
1259 i -= tabBar->count(); 1259 i -= tabBar->count();
1260 1260
1261 QString selected = QString::number(i+1); 1261 QString selected = QString::number(i+1);
1262 int n = 0; 1262 int n = 0;
1263 for(int i = 0; n < tabBar->count(); i++) 1263 for(int i = 0; n < tabBar->count(); i++)
1264 { 1264 {
1265 if (tabBar->tab(i)) 1265 if (tabBar->tab(i))
1266 { 1266 {
1267 printf("selected = %s tab %d = %s\n", selected.latin1(), 1267 printf("selected = %s tab %d = %s\n", selected.latin1(),
1268 i, tabBar->tab(i)->text().latin1()); 1268 i, tabBar->tab(i)->text().latin1());
1269 if (tabBar->tab(i)->text() == selected) 1269 if (tabBar->tab(i)->text() == selected)
1270 { 1270 {
1271 tab->setCurrentPage(i); 1271 tab->setCurrentPage(i);
1272 break; 1272 break;
1273 } 1273 }
1274 n++; 1274 n++;
1275 } 1275 }
1276 } 1276 }
1277} 1277}
1278 1278
1279void Konsole::switchSession(QWidget* w) 1279void Konsole::switchSession(QWidget* w)
1280{ 1280{
1281 TEWidget* te = (TEWidget *) w; 1281 TEWidget* te = (TEWidget *) w;
1282 QFont teFnt = te->getVTFont(); 1282 QFont teFnt = te->getVTFont();
1283 int familyNum = -1; 1283 int familyNum = -1;
1284 1284
1285 for(uint i = 0; i < fonts.count(); i++) 1285 for(uint i = 0; i < fonts.count(); i++)
1286 { 1286 {
1287 VTFont *fnt = fonts.at(i); 1287 VTFont *fnt = fonts.at(i);
1288 bool cf = fnt->getFont() == teFnt; 1288 bool cf = fnt->getFont() == teFnt;
1289 fontList->setItemChecked(i, cf); 1289 fontList->setItemChecked(i, cf);
1290 if (cf) 1290 if (cf)
1291 { 1291 {
1292 cfont = i; 1292 cfont = i;
1293 familyNum = fnt->getFamilyNum(); 1293 familyNum = fnt->getFamilyNum();
1294 } 1294 }
1295 } 1295 }
1296 for(int i = 0; i < (int)fontList->count(); i++) 1296 for(int i = 0; i < (int)fontList->count(); i++)
1297 { 1297 {
1298 fontList->setItemChecked(i + 1000, i == familyNum); 1298 fontList->setItemChecked(i + 1000, i == familyNum);
1299 } 1299 }
1300 if (! te->currentSession->Title().isEmpty() ) 1300 if (! te->currentSession->Title().isEmpty() )
1301 { 1301 {
1302 setCaption( te->currentSession->Title() + " - " + tr( "Konsole" ) ); 1302 setCaption( te->currentSession->Title() + " - " + tr( "Konsole" ) );
1303 } 1303 }
1304 else 1304 else
1305 { 1305 {
1306 setCaption( tr( "Konsole" ) ); 1306 setCaption( tr( "Konsole" ) );
1307 } 1307 }
1308 // colorMenuSelected(te->color_menu_item); 1308 // colorMenuSelected(te->color_menu_item);
1309} 1309}
1310 1310
1311 1311
1312void Konsole::toggleFullScreen() 1312void Konsole::toggleFullScreen()
1313{ 1313{
1314 setFullScreen(! fullscreen); 1314 setFullScreen(! fullscreen);
1315} 1315}
1316 1316
1317void Konsole::setFullScreen ( bool b ) 1317void Konsole::setFullScreen ( bool b )
1318{ 1318{
1319 static QSize normalsize; 1319 static QSize normalsize;
1320 static bool listHidden; 1320 static bool listHidden;
1321 1321
1322 if (b == fullscreen) 1322 if (b == fullscreen)
1323 { 1323 {
1324 return; 1324 return;
1325 } 1325 }
1326 1326
1327 fullscreen = b; 1327 fullscreen = b;
1328 1328
1329 if ( b ) 1329 if ( b )
1330 { 1330 {
1331 if ( !normalsize. isValid ( )) 1331 if ( !normalsize. isValid ( ))
1332 { 1332 {
1333 normalsize = size ( ); 1333 normalsize = size ( );
1334 } 1334 }
1335 1335
1336 setFixedSize ( qApp-> desktop ( )-> size ( )); 1336 setFixedSize ( qApp-> desktop ( )-> size ( ));
1337 showNormal ( ); 1337 showNormal ( );
1338 reparent ( 0, WStyle_Customize | WStyle_NoBorder, 1338 reparent ( 0, WStyle_Customize | WStyle_NoBorder,
1339 QPoint ( 0, 0 )); 1339 QPoint ( 0, 0 ));
1340 showFullScreen ( ); 1340 showFullScreen ( );
1341 1341
1342 menuToolBar->hide(); 1342 menuToolBar->hide();
1343 toolBar->hide(); 1343 toolBar->hide();
1344 listHidden = secondToolBar->isHidden(); 1344 listHidden = secondToolBar->isHidden();
1345 secondToolBar->hide(); 1345 secondToolBar->hide();
1346 // commonCombo->hide(); 1346 // commonCombo->hide();
1347 tab->getTabBar()->hide(); 1347 tab->getTabBar()->hide();
1348 tab->setMargin(tab->margin()); 1348 tab->setMargin(tab->margin());
1349 1349
1350 if (show_fullscreen_msg) 1350 if (show_fullscreen_msg)
1351 { 1351 {
1352 fullscreen_msg-> move(tab->x() + tab->width()/2 - fullscreen_msg->width()/2, 1352 fullscreen_msg-> move(tab->x() + tab->width()/2 - fullscreen_msg->width()/2,
1353 qApp->desktop()->height()/16 - fullscreen_msg->height()/2); 1353 qApp->desktop()->height()/16 - fullscreen_msg->height()/2);
1354 fullscreen_msg->show(); 1354 fullscreen_msg->show();
1355 fullscreen_timer->start(3000, true); 1355 fullscreen_timer->start(3000, true);
1356 show_fullscreen_msg = false; 1356 show_fullscreen_msg = false;
1357 } 1357 }
1358 } 1358 }
1359 else 1359 else
1360 { 1360 {
1361 showNormal ( ); 1361 showNormal ( );
1362 reparent ( 0, WStyle_Customize, QPoint ( 0, 0 )); 1362 reparent ( 0, WStyle_Customize, QPoint ( 0, 0 ));
1363 resize ( normalsize ); 1363 resize ( normalsize );
1364 showMaximized ( ); 1364 showMaximized ( );
1365 normalsize = QSize ( ); 1365 normalsize = QSize ( );
1366 1366
1367 menuToolBar->show(); 1367 menuToolBar->show();
1368 toolBar->show(); 1368 toolBar->show();
1369 if(! listHidden) 1369 if(! listHidden)
1370 { 1370 {
1371 secondToolBar->show(); 1371 secondToolBar->show();
1372 } 1372 }
1373 // commonCombo->show(); 1373 // commonCombo->show();
1374 menuToolBar->show(); 1374 menuToolBar->show();
1375 if (tabPos != tm_hidden) 1375 if (tabPos != tm_hidden)
1376 { 1376 {
1377 tab->getTabBar()->show(); 1377 tab->getTabBar()->show();
1378 } 1378 }
1379 } 1379 }
1380 tab->setMargin(tab->margin()); // cause setup to run 1380 tab->setMargin(tab->margin()); // cause setup to run
1381} 1381}
1382 1382
1383 1383
1384void Konsole::fullscreenTimeout() 1384void Konsole::fullscreenTimeout()
1385{ 1385{
1386 fullscreen_msg->hide(); 1386 fullscreen_msg->hide();
1387} 1387}
1388 1388
1389void Konsole::colorMenuIsSelected(int iD) 1389void Konsole::colorMenuIsSelected(int iD)
1390{ 1390{
1391 fromMenu = TRUE; 1391 fromMenu = TRUE;
1392 colorMenuSelected(iD); 1392 colorMenuSelected(iD);
1393} 1393}
1394 1394
1395/// ------------------------------- some new stuff by L.J. Potter 1395/// ------------------------------- some new stuff by L.J. Potter
1396 1396
1397 1397
1398void Konsole::colorMenuSelected(int iD) 1398void Konsole::colorMenuSelected(int iD)
1399{ 1399{
1400 // this is NOT pretty, elegant or anything else besides functional 1400 // this is NOT pretty, elegant or anything else besides functional
1401 // QString temp; 1401 // QString temp;
1402 // odebug << temp.sprintf("colormenu " << iD) << "" << oendl; 1402 // odebug << temp.sprintf("colormenu " << iD) << "" << oendl;
1403 1403
1404 TEWidget* te = getTe(); 1404 TEWidget* te = getTe();
1405 Config cfg( "Konsole" ); 1405 Config cfg( "Konsole" );
1406 cfg.setGroup("Colors"); 1406 cfg.setGroup("Colors");
1407 1407
1408 ColorEntry m_table[TABLE_COLORS]; 1408 ColorEntry m_table[TABLE_COLORS];
1409 const ColorEntry * defaultCt=te->getdefaultColorTable(); 1409 const ColorEntry * defaultCt=te->getdefaultColorTable();
1410 1410
1411 int i; 1411 int i;
1412 1412
1413 // te->color_menu_item = iD; 1413 // te->color_menu_item = iD;
1414 1414
1415 colorMenu->setItemChecked(cm_ab,FALSE); 1415 colorMenu->setItemChecked(cm_ab,FALSE);
1416 colorMenu->setItemChecked(cm_bb,FALSE); 1416 colorMenu->setItemChecked(cm_bb,FALSE);
1417 colorMenu->setItemChecked(cm_wc,FALSE); 1417 colorMenu->setItemChecked(cm_wc,FALSE);
1418 colorMenu->setItemChecked(cm_cw,FALSE); 1418 colorMenu->setItemChecked(cm_cw,FALSE);
1419 colorMenu->setItemChecked(cm_mb,FALSE); 1419 colorMenu->setItemChecked(cm_mb,FALSE);
1420 colorMenu->setItemChecked(cm_bm,FALSE); 1420 colorMenu->setItemChecked(cm_bm,FALSE);
1421 colorMenu->setItemChecked(cm_gy,FALSE); 1421 colorMenu->setItemChecked(cm_gy,FALSE);
1422 colorMenu->setItemChecked(cm_rb,FALSE); 1422 colorMenu->setItemChecked(cm_rb,FALSE);
1423 colorMenu->setItemChecked(cm_br,FALSE); 1423 colorMenu->setItemChecked(cm_br,FALSE);
1424 colorMenu->setItemChecked(cm_wb,FALSE); 1424 colorMenu->setItemChecked(cm_wb,FALSE);
1425 colorMenu->setItemChecked(cm_bw,FALSE); 1425 colorMenu->setItemChecked(cm_bw,FALSE);
1426 colorMenu->setItemChecked(cm_gb,FALSE); 1426 colorMenu->setItemChecked(cm_gb,FALSE);
1427 1427
1428 if(iD==cm_default) 1428 if(iD==cm_default)
1429 { // default default 1429 { // default default
1430 printf("default colors\n"); 1430 printf("default colors\n");
1431 for (i = 0; i < TABLE_COLORS; i++) 1431 for (i = 0; i < TABLE_COLORS; i++)
1432 { 1432 {
1433 m_table[i].color = defaultCt[i].color; 1433 m_table[i].color = defaultCt[i].color;
1434 if(i==1 || i == 11) 1434 if(i==1 || i == 11)
1435 m_table[i].transparent=1; 1435 m_table[i].transparent=1;
1436 colorMenu->setItemChecked(cm_default,TRUE); 1436 colorMenu->setItemChecked(cm_default,TRUE);
1437 } 1437 }
1438 te->setColorTable(m_table); 1438 te->setColorTable(m_table);
1439 } 1439 }
1440 if(iD==cm_gb) 1440 if(iD==cm_gb)
1441 { // green black 1441 { // green black
1442 foreground.setRgb(100,255,100); // (0x18,255,0x18); 1442 foreground.setRgb(100,255,100); // (0x18,255,0x18);
1443 background.setRgb(0x00,0x00,0x00); 1443 background.setRgb(0x00,0x00,0x00);
1444 colorMenu->setItemChecked(cm_gb,TRUE); 1444 colorMenu->setItemChecked(cm_gb,TRUE);
1445 } 1445 }
1446 if(iD==cm_bw) 1446 if(iD==cm_bw)
1447 { // black white 1447 { // black white
1448 foreground.setRgb(0x00,0x00,0x00); 1448 foreground.setRgb(0x00,0x00,0x00);
1449 background.setRgb(0xFF,0xFF,0xFF); 1449 background.setRgb(0xFF,0xFF,0xFF);
1450 colorMenu->setItemChecked(cm_bw,TRUE); 1450 colorMenu->setItemChecked(cm_bw,TRUE);
1451 } 1451 }
1452 if(iD==cm_wb) 1452 if(iD==cm_wb)
1453 { // white black 1453 { // white black
1454 foreground.setRgb(0xFF,0xFF,0xFF); 1454 foreground.setRgb(0xFF,0xFF,0xFF);
1455 background.setRgb(0x00,0x00,0x00); 1455 background.setRgb(0x00,0x00,0x00);
1456 colorMenu->setItemChecked(cm_wb,TRUE); 1456 colorMenu->setItemChecked(cm_wb,TRUE);
1457 } 1457 }
1458 if(iD==cm_br) 1458 if(iD==cm_br)
1459 {// Black, Red 1459 {// Black, Red
1460 foreground.setRgb(0x00,0x00,0x00); 1460 foreground.setRgb(0x00,0x00,0x00);
1461 background.setRgb(255,85,85); //(0xB2,0x18,0x18); 1461 background.setRgb(255,85,85); //(0xB2,0x18,0x18);
1462 colorMenu->setItemChecked(cm_br,TRUE); 1462 colorMenu->setItemChecked(cm_br,TRUE);
1463 } 1463 }
1464 if(iD==cm_rb) 1464 if(iD==cm_rb)
1465 {// Red, Black 1465 {// Red, Black
1466 foreground.setRgb(255,85,85); 1466 foreground.setRgb(255,85,85);
1467 background.setRgb(0x00,0x00,0x00); 1467 background.setRgb(0x00,0x00,0x00);
1468 colorMenu->setItemChecked(cm_rb,TRUE); 1468 colorMenu->setItemChecked(cm_rb,TRUE);
1469 } 1469 }
1470 if(iD==cm_gy) 1470 if(iD==cm_gy)
1471 {// Green, Yellow - is ugly 1471 {// Green, Yellow - is ugly
1472 // foreground.setRgb(0x18,0xB2,0x18); 1472 // foreground.setRgb(0x18,0xB2,0x18);
1473 foreground.setRgb(15,115,0); 1473 foreground.setRgb(15,115,0);
1474 // background.setRgb(0xB2,0x68,0x18); 1474 // background.setRgb(0xB2,0x68,0x18);
1475 background.setRgb(255,255,0); 1475 background.setRgb(255,255,0);
1476 colorMenu->setItemChecked(cm_gy,TRUE); 1476 colorMenu->setItemChecked(cm_gy,TRUE);
1477 } 1477 }
1478 if(iD==cm_bm) 1478 if(iD==cm_bm)
1479 {// Blue, Magenta 1479 {// Blue, Magenta
1480 foreground.setRgb(3,24,132); 1480 foreground.setRgb(3,24,132);
1481 background.setRgb(225,2,255); 1481 background.setRgb(225,2,255);
1482 colorMenu->setItemChecked(cm_bm,TRUE); 1482 colorMenu->setItemChecked(cm_bm,TRUE);
1483 } 1483 }
1484 if(iD==cm_mb) 1484 if(iD==cm_mb)
1485 {// Magenta, Blue 1485 {// Magenta, Blue
1486 foreground.setRgb(225,2,255); 1486 foreground.setRgb(225,2,255);
1487 background.setRgb(3,24,132); 1487 background.setRgb(3,24,132);
1488 colorMenu->setItemChecked(cm_mb,TRUE); 1488 colorMenu->setItemChecked(cm_mb,TRUE);
1489 } 1489 }
1490 if(iD==cm_cw) 1490 if(iD==cm_cw)
1491 {// Cyan, White 1491 {// Cyan, White
1492 foreground.setRgb(8,91,129); 1492 foreground.setRgb(8,91,129);
1493 background.setRgb(0xFF,0xFF,0xFF); 1493 background.setRgb(0xFF,0xFF,0xFF);
1494 colorMenu->setItemChecked(cm_cw,TRUE); 1494 colorMenu->setItemChecked(cm_cw,TRUE);
1495 } 1495 }
1496 if(iD==cm_wc) 1496 if(iD==cm_wc)
1497 {// White, Cyan 1497 {// White, Cyan
1498 background.setRgb(8,91,129); 1498 background.setRgb(8,91,129);
1499 foreground.setRgb(0xFF,0xFF,0xFF); 1499 foreground.setRgb(0xFF,0xFF,0xFF);
1500 colorMenu->setItemChecked(cm_wc,TRUE); 1500 colorMenu->setItemChecked(cm_wc,TRUE);
1501 } 1501 }
1502 if(iD==cm_bb) 1502 if(iD==cm_bb)
1503 {// Black, Blue 1503 {// Black, Blue
1504 background.setRgb(0x00,0x00,0x00); 1504 background.setRgb(0x00,0x00,0x00);
1505 foreground.setRgb(127,147,225); 1505 foreground.setRgb(127,147,225);
1506 colorMenu->setItemChecked(cm_bb,TRUE); 1506 colorMenu->setItemChecked(cm_bb,TRUE);
1507 } 1507 }
1508 if(iD==cm_ab) 1508 if(iD==cm_ab)
1509 {// Black, Gold 1509 {// Black, Gold
1510 background.setRgb(0x00,0x00,0x00); 1510 background.setRgb(0x00,0x00,0x00);
1511 foreground.setRgb(255,215,105); 1511 foreground.setRgb(255,215,105);
1512 colorMenu->setItemChecked(cm_ab,TRUE); 1512 colorMenu->setItemChecked(cm_ab,TRUE);
1513 } 1513 }
1514#ifdef QT_QWS_OPIE 1514#ifdef QT_QWS_OPIE
1515 if(iD==-19) 1515 if(iD==-19)
1516 { 1516 {
1517 // Custom 1517 // Custom
1518 odebug << "do custom" << oendl; 1518 odebug << "do custom" << oendl;
1519 if(fromMenu) 1519 if(fromMenu)
1520 { 1520 {
1521 Opie::OColorPopupMenu* penColorPopupMenu = new Opie::OColorPopupMenu(Qt::black, this, "foreground color"); 1521 Opie::OColorPopupMenu* penColorPopupMenu = new Opie::OColorPopupMenu(Qt::black, this, "foreground color");
1522 connect(penColorPopupMenu, SIGNAL(colorSelected(const QColor&)), this, 1522 connect(penColorPopupMenu, SIGNAL(colorSelected(const QColor&)), this,
1523 SLOT(changeForegroundColor(const QColor&))); 1523 SLOT(changeForegroundColor(const QColor&)));
1524 penColorPopupMenu->exec(); 1524 penColorPopupMenu->exec();
1525 } 1525 }
1526 if(!fromMenu) 1526 if(!fromMenu)
1527 { 1527 {
1528 foreground.setNamedColor(cfg.readEntry("foreground","")); 1528 foreground.setNamedColor(cfg.readEntry("foreground",""));
1529 background.setNamedColor(cfg.readEntry("background","")); 1529 background.setNamedColor(cfg.readEntry("background",""));
1530 } 1530 }
1531 fromMenu=FALSE; 1531 fromMenu=FALSE;
1532 colorMenu->setItemChecked(-19,TRUE); 1532 colorMenu->setItemChecked(-19,TRUE);
1533 } 1533 }
1534#endif 1534#endif
1535 1535
1536 lastSelectedMenu = iD; 1536 lastSelectedMenu = iD;
1537 1537
1538 setColors(foreground, background); 1538 setColors(foreground, background);
1539 1539
1540 QTabBar *tabBar = tab->getTabBar(); 1540 QTabBar *tabBar = tab->getTabBar();
1541 QString ss = QString("Session%1").arg(tabBar->currentTab()); 1541 QString ss = QString("Session%1").arg(tabBar->currentTab());
1542 // printf("current tab = %d\n", tabBar->currentTab()); 1542 // printf("current tab = %d\n", tabBar->currentTab());
1543 1543
1544 if (tabBar->currentTab() == 0) 1544 if (tabBar->currentTab() == 0)
1545 { 1545 {
1546 cfg.writeEntry("foregroundRed",QString::number(foreground.red())); 1546 cfg.writeEntry("foregroundRed",QString::number(foreground.red()));
1547 cfg.writeEntry("foregroundGreen",QString::number(foreground.green())); 1547 cfg.writeEntry("foregroundGreen",QString::number(foreground.green()));
1548 cfg.writeEntry("foregroundBlue",QString::number(foreground.blue())); 1548 cfg.writeEntry("foregroundBlue",QString::number(foreground.blue()));
1549 cfg.writeEntry("backgroundRed",QString::number(background.red())); 1549 cfg.writeEntry("backgroundRed",QString::number(background.red()));
1550 cfg.writeEntry("backgroundGreen",QString::number(background.green())); 1550 cfg.writeEntry("backgroundGreen",QString::number(background.green()));
1551 cfg.writeEntry("backgroundBlue",QString::number(background.blue())); 1551 cfg.writeEntry("backgroundBlue",QString::number(background.blue()));
1552 } 1552 }
1553 cfg.writeEntry("foregroundRed"+ss,QString::number(foreground.red())); 1553 cfg.writeEntry("foregroundRed"+ss,QString::number(foreground.red()));
1554 cfg.writeEntry("foregroundGreen"+ss,QString::number(foreground.green())); 1554 cfg.writeEntry("foregroundGreen"+ss,QString::number(foreground.green()));
1555 cfg.writeEntry("foregroundBlue"+ss,QString::number(foreground.blue())); 1555 cfg.writeEntry("foregroundBlue"+ss,QString::number(foreground.blue()));
1556 cfg.writeEntry("backgroundRed"+ss,QString::number(background.red())); 1556 cfg.writeEntry("backgroundRed"+ss,QString::number(background.red()));
1557 cfg.writeEntry("backgroundGreen"+ss,QString::number(background.green())); 1557 cfg.writeEntry("backgroundGreen"+ss,QString::number(background.green()));
1558 cfg.writeEntry("backgroundBlue"+ss,QString::number(background.blue())); 1558 cfg.writeEntry("backgroundBlue"+ss,QString::number(background.blue()));
1559 1559
1560 update(); 1560 update();
1561} 1561}
1562 1562
1563void Konsole::setColors(QColor foreground, QColor background) 1563void Konsole::setColors(QColor foreground, QColor background)
1564{ 1564{
1565 int i; 1565 int i;
1566 ColorEntry m_table[TABLE_COLORS]; 1566 ColorEntry m_table[TABLE_COLORS];
1567 TEWidget* te = getTe(); 1567 TEWidget* te = getTe();
1568 const ColorEntry * defaultCt=te->getdefaultColorTable(); 1568 const ColorEntry * defaultCt=te->getdefaultColorTable();
1569 1569
1570 for (i = 0; i < TABLE_COLORS; i++) 1570 for (i = 0; i < TABLE_COLORS; i++)
1571 { 1571 {
1572 if(i==0 || i == 10) 1572 if(i==0 || i == 10)
1573 { 1573 {
1574 m_table[i].color = foreground; 1574 m_table[i].color = foreground;
1575 } 1575 }
1576 else if(i==1 || i == 11) 1576 else if(i==1 || i == 11)
1577 { 1577 {
1578 m_table[i].color = background; 1578 m_table[i].color = background;
1579 m_table[i].transparent=0; 1579 m_table[i].transparent=0;
1580 } 1580 }
1581 else 1581 else
1582 m_table[i].color = defaultCt[i].color; 1582 m_table[i].color = defaultCt[i].color;
1583 } 1583 }
1584 te->setColorTable(m_table); 1584 te->setColorTable(m_table);
1585} 1585}
1586 1586
1587void Konsole::tabMenuSelected(int id) 1587void Konsole::tabMenuSelected(int id)
1588{ 1588{
1589 Config cfg( "Konsole" ); 1589 Config cfg( "Konsole" );
1590 cfg.setGroup("Tabs"); 1590 cfg.setGroup("Tabs");
1591 tabMenu->setItemChecked(tabPos, false); 1591 tabMenu->setItemChecked(tabPos, false);
1592 if (id == tm_bottom) 1592 if (id == tm_bottom)
1593 { 1593 {
1594 printf("set bottom tab\n"); 1594 printf("set bottom tab\n");
1595 tab->getTabBar()->show(); 1595 tab->getTabBar()->show();
1596 tab->setTabPosition(QTabWidget::Bottom); 1596 tab->setTabPosition(QTabWidget::Bottom);
1597 tab->getTabBar()->show(); 1597 tab->getTabBar()->show();
1598 cfg.writeEntry("Position","Bottom"); 1598 cfg.writeEntry("Position","Bottom");
1599 } 1599 }
1600 else if (id == tm_top) 1600 else if (id == tm_top)
1601 { 1601 {
1602 printf("set top tab\n"); 1602 printf("set top tab\n");
1603 tab->getTabBar()->show(); 1603 tab->getTabBar()->show();
1604 tab->setTabPosition(QTabWidget::Bottom); 1604 tab->setTabPosition(QTabWidget::Bottom);
1605 tab->setTabPosition(QTabWidget::Top); 1605 tab->setTabPosition(QTabWidget::Top);
1606 tab->getTabBar()->show(); 1606 tab->getTabBar()->show();
1607 cfg.writeEntry("Position","Top"); 1607 cfg.writeEntry("Position","Top");
1608 } 1608 }
1609 else if (id == tm_hidden) 1609 else if (id == tm_hidden)
1610 { 1610 {
1611 tab->getTabBar()->hide(); 1611 tab->getTabBar()->hide();
1612 tab->setMargin(tab->margin()); 1612 tab->setMargin(tab->margin());
1613 cfg.writeEntry("Position","Hidden"); 1613 cfg.writeEntry("Position","Hidden");
1614 } 1614 }
1615 tabMenu->setItemChecked(id, true); 1615 tabMenu->setItemChecked(id, true);
1616 tabPos = id; 1616 tabPos = id;
1617} 1617}
1618 1618
1619 1619
1620void Konsole::configMenuSelected(int iD) 1620void Konsole::configMenuSelected(int iD)
1621{ 1621{
1622 // QString temp; 1622 // QString temp;
1623 // odebug << temp.sprintf("configmenu " << iD) << "" << oendl; 1623 // odebug << temp.sprintf("configmenu " << iD) << "" << oendl;
1624 1624
1625 TEWidget* te = getTe(); 1625 TEWidget* te = getTe();
1626 Config cfg( "Konsole" ); 1626 Config cfg( "Konsole" );
1627 cfg.setGroup("Menubar"); 1627 cfg.setGroup("Menubar");
1628 if(iD == cm_wrap) 1628 if(iD == cm_wrap)
1629 { 1629 {
1630 cfg.setGroup("ScrollBar"); 1630 cfg.setGroup("ScrollBar");
1631 bool b=cfg.readBoolEntry("HorzScroll",0); 1631 bool b=cfg.readBoolEntry("HorzScroll",0);
1632 b=!b; 1632 b=!b;
1633 cfg.writeEntry("HorzScroll", b ); 1633 cfg.writeEntry("HorzScroll", b );
1634 cfg.write(); 1634 cfg.write();
1635 doWrap(); 1635 doWrap();
1636 if(cfg.readNumEntry("Position",2) == 0) 1636 if(cfg.readNumEntry("Position",2) == 0)
1637 { 1637 {
1638 te->setScrollbarLocation(1); 1638 te->setScrollbarLocation(1);
1639 } 1639 }
1640 else 1640 else
1641 { 1641 {
1642 te->setScrollbarLocation(0); 1642 te->setScrollbarLocation(0);
1643 } 1643 }
1644 te->setScrollbarLocation( cfg.readNumEntry("Position",2)); 1644 te->setScrollbarLocation( cfg.readNumEntry("Position",2));
1645 } 1645 }
1646 if(iD == cm_beep) 1646 if(iD == cm_beep)
1647 { 1647 {
1648 cfg.setGroup("Menubar"); 1648 cfg.setGroup("Menubar");
1649 bool b=cfg.readBoolEntry("useBeep",0); 1649 bool b=cfg.readBoolEntry("useBeep",0);
1650 b=!b; 1650 b=!b;
1651 cfg.writeEntry("useBeep", b ); 1651 cfg.writeEntry("useBeep", b );
1652 cfg.write(); 1652 cfg.write();
1653 configMenu->setItemChecked(cm_beep,b); 1653 configMenu->setItemChecked(cm_beep,b);
1654 te->useBeep=b; 1654 te->useBeep=b;
1655 } 1655 }
1656} 1656}
1657 1657
1658void Konsole::changeCommand(const QString &text, int c) 1658void Konsole::changeCommand(const QString &text, int c)
1659{ 1659{
1660 Config cfg( "Konsole" ); 1660 Config cfg( "Konsole" );
1661 cfg.setGroup("Commands"); 1661 cfg.setGroup("Commands");
1662 if(commonCmds[c] != text) 1662 if(commonCmds[c] != text)
1663 { 1663 {
1664 cfg.writeEntry(QString::number(c),text); 1664 cfg.writeEntry(QString::number(c),text);
1665 commonCombo->clearEdit(); 1665 commonCombo->clearEdit();
1666 commonCombo->setCurrentItem(c); 1666 commonCombo->setCurrentItem(c);
1667 } 1667 }
1668} 1668}
1669 1669
1670void Konsole::setColor(int sess) 1670void Konsole::setColor(int sess)
1671{ 1671{
1672 Config cfg( "Konsole" ); 1672 Config cfg( "Konsole" );
1673 cfg.setGroup("Colors"); 1673 cfg.setGroup("Colors");
1674 QColor foreground, background; 1674 QColor foreground, background;
1675 QString ss = QString("Session") + QString::number(sess); 1675 QString ss = QString("Session") + QString::number(sess);
1676 foreground.setRgb(cfg.readNumEntry("foregroundRed"+ss, 1676 foreground.setRgb(cfg.readNumEntry("foregroundRed"+ss,
1677 cfg.readNumEntry("foregroundRed",0xff)), 1677 cfg.readNumEntry("foregroundRed",0xff)),
1678 cfg.readNumEntry("foregroundGreen"+ss, 1678 cfg.readNumEntry("foregroundGreen"+ss,
1679 cfg.readNumEntry("foregroundGreen",0xff)), 1679 cfg.readNumEntry("foregroundGreen",0xff)),
1680 cfg.readNumEntry("foregroundBlue"+ss, 1680 cfg.readNumEntry("foregroundBlue"+ss,
1681 cfg.readNumEntry("foregroundBlue",0xff))); 1681 cfg.readNumEntry("foregroundBlue",0xff)));
1682 background.setRgb(cfg.readNumEntry("backgroundRed"+ss, 1682 background.setRgb(cfg.readNumEntry("backgroundRed"+ss,
1683 cfg.readNumEntry("backgroundRed",0)), 1683 cfg.readNumEntry("backgroundRed",0)),
1684 cfg.readNumEntry("backgroundGreen"+ss, 1684 cfg.readNumEntry("backgroundGreen"+ss,
1685 cfg.readNumEntry("backgroundGreen",0)), 1685 cfg.readNumEntry("backgroundGreen",0)),
1686 cfg.readNumEntry("backgroundBlue"+ss, 1686 cfg.readNumEntry("backgroundBlue"+ss,
1687 cfg.readNumEntry("backgroundBlue",0))); 1687 cfg.readNumEntry("backgroundBlue",0)));
1688 setColors(foreground, background); 1688 setColors(foreground, background);
1689} 1689}
1690 1690
1691void Konsole::scrollMenuSelected(int index) 1691void Konsole::scrollMenuSelected(int index)
1692{ 1692{
1693 // odebug << "scrollbar menu " << index << "" << oendl; 1693 // odebug << "scrollbar menu " << index << "" << oendl;
1694 1694
1695 TEWidget* te = getTe(); 1695 TEWidget* te = getTe();
1696 Config cfg( "Konsole" ); 1696 Config cfg( "Konsole" );
1697 cfg.setGroup("ScrollBar"); 1697 cfg.setGroup("ScrollBar");
1698 1698
1699 if(index == sm_none) 1699 if(index == sm_none)
1700 { 1700 {
1701 te->setScrollbarLocation(0); 1701 te->setScrollbarLocation(0);
1702 cfg.writeEntry("Position",0); 1702 cfg.writeEntry("Position",0);
1703 } 1703 }
1704 else if(index == sm_left) 1704 else if(index == sm_left)
1705 { 1705 {
1706 te->setScrollbarLocation(1); 1706 te->setScrollbarLocation(1);
1707 cfg.writeEntry("Position",1); 1707 cfg.writeEntry("Position",1);
1708 } 1708 }
1709 else if(index == sm_right) 1709 else if(index == sm_right)
1710 { 1710 {
1711 te->setScrollbarLocation(2); 1711 te->setScrollbarLocation(2);
1712 cfg.writeEntry("Position",2); 1712 cfg.writeEntry("Position",2);
1713 } 1713 }
1714 scrollMenu->setItemChecked(sm_none, index == sm_none); 1714 scrollMenu->setItemChecked(sm_none, index == sm_none);
1715 scrollMenu->setItemChecked(sm_left, index == sm_left); 1715 scrollMenu->setItemChecked(sm_left, index == sm_left);
1716 scrollMenu->setItemChecked(sm_right, index == sm_right); 1716 scrollMenu->setItemChecked(sm_right, index == sm_right);
1717} 1717}
1718 1718
1719// case -29: { 1719// case -29: {
1720// bool b=cfg.readBoolEntry("HorzScroll",0); 1720// bool b=cfg.readBoolEntry("HorzScroll",0);
1721// cfg.writeEntry("HorzScroll", !b ); 1721// cfg.writeEntry("HorzScroll", !b );
1722// cfg.write(); 1722// cfg.write();
1723// if(cfg.readNumEntry("Position",2) == 0) { 1723// if(cfg.readNumEntry("Position",2) == 0) {
1724// te->setScrollbarLocation(1); 1724// te->setScrollbarLocation(1);
1725// te->setWrapAt(0); 1725// te->setWrapAt(0);
1726// } else { 1726// } else {
1727// te->setScrollbarLocation(0); 1727// te->setScrollbarLocation(0);
1728// te->setWrapAt(120); 1728// te->setWrapAt(120);
1729// } 1729// }
1730// te->setScrollbarLocation( cfg.readNumEntry("Position",2)); 1730// te->setScrollbarLocation( cfg.readNumEntry("Position",2));
1731// } 1731// }
1732// break; 1732// break;
1733 1733
1734void Konsole::editCommandListMenuSelected(int iD) 1734void Konsole::editCommandListMenuSelected(int iD)
1735{ 1735{
1736 // QString temp; 1736 // QString temp;
1737 // odebug << temp.sprintf("edit command list " << iD) << "" << oendl; 1737 // odebug << temp.sprintf("edit command list " << iD) << "" << oendl;
1738 1738
1739 // FIXME: more cleanup needed here 1739 // FIXME: more cleanup needed here
1740 1740
1741 1741
1742 TEWidget* te = getTe(); 1742 TEWidget* te = getTe();
1743 Config cfg( "Konsole" ); 1743 Config cfg( "Konsole" );
1744 cfg.setGroup("Menubar"); 1744 cfg.setGroup("Menubar");
1745 if( iD == ec_cmdlist) 1745 if( iD == ec_cmdlist)
1746 { 1746 {
1747 if(!secondToolBar->isHidden()) 1747 if(!secondToolBar->isHidden())
1748 { 1748 {
1749 secondToolBar->hide(); 1749 secondToolBar->hide();
1750 configMenu->changeItem( iD,tr( "Show Command List" )); 1750 configMenu->changeItem( iD,tr( "Show Command List" ));
1751 cfg.writeEntry("Hidden","TRUE"); 1751 cfg.writeEntry("Hidden","TRUE");
1752 configMenu->setItemEnabled(ec_edit ,FALSE); 1752 configMenu->setItemEnabled(ec_edit ,FALSE);
1753 configMenu->setItemEnabled(ec_quick ,FALSE); 1753 configMenu->setItemEnabled(ec_quick ,FALSE);
1754 } 1754 }
1755 else 1755 else
1756 { 1756 {
1757 secondToolBar->show(); 1757 secondToolBar->show();
1758 configMenu->changeItem( iD,tr( "Hide Command List" )); 1758 configMenu->changeItem( iD,tr( "Hide Command List" ));
1759 cfg.writeEntry("Hidden","FALSE"); 1759 cfg.writeEntry("Hidden","FALSE");
1760 configMenu->setItemEnabled(ec_edit ,TRUE); 1760 configMenu->setItemEnabled(ec_edit ,TRUE);
1761 configMenu->setItemEnabled(ec_quick ,TRUE); 1761 configMenu->setItemEnabled(ec_quick ,TRUE);
1762 1762
1763 if(cfg.readEntry("EditEnabled","FALSE")=="TRUE") 1763 if(cfg.readEntry("EditEnabled","FALSE")=="TRUE")
1764 { 1764 {
1765 configMenu->setItemChecked(ec_edit,TRUE); 1765 configMenu->setItemChecked(ec_edit,TRUE);
1766 commonCombo->setEditable( TRUE ); 1766 commonCombo->setEditable( TRUE );
1767 } 1767 }
1768 else 1768 else
1769 { 1769 {
1770 configMenu->setItemChecked(ec_edit,FALSE); 1770 configMenu->setItemChecked(ec_edit,FALSE);
1771 commonCombo->setEditable( FALSE ); 1771 commonCombo->setEditable( FALSE );
1772 } 1772 }
1773 } 1773 }
1774 } 1774 }
1775 if( iD == ec_quick) 1775 if( iD == ec_quick)
1776 { 1776 {
1777 cfg.setGroup("Commands"); 1777 cfg.setGroup("Commands");
1778 // odebug << "enableCommandEdit" << oendl; 1778 // odebug << "enableCommandEdit" << oendl;
1779 if( !configMenu->isItemChecked(iD) ) 1779 if( !configMenu->isItemChecked(iD) )
1780 { 1780 {
1781 commonCombo->setEditable( TRUE ); 1781 commonCombo->setEditable( TRUE );
1782 configMenu->setItemChecked(iD,TRUE); 1782 configMenu->setItemChecked(iD,TRUE);
1783 commonCombo->setCurrentItem(0); 1783 commonCombo->setCurrentItem(0);
1784 cfg.writeEntry("EditEnabled","TRUE"); 1784 cfg.writeEntry("EditEnabled","TRUE");
1785 } 1785 }
1786 else 1786 else
1787 { 1787 {
1788 commonCombo->setEditable( FALSE ); 1788 commonCombo->setEditable( FALSE );
1789 configMenu->setItemChecked(iD,FALSE); 1789 configMenu->setItemChecked(iD,FALSE);
1790 cfg.writeEntry("EditEnabled","FALSE"); 1790 cfg.writeEntry("EditEnabled","FALSE");
1791 commonCombo->setFocusPolicy(QWidget::NoFocus); 1791 commonCombo->setFocusPolicy(QWidget::NoFocus);
1792 te->setFocus(); 1792 te->setFocus();
1793 } 1793 }
1794 } 1794 }
1795 if(iD == ec_edit) 1795 if(iD == ec_edit)
1796 { 1796 {
1797 // "edit commands" 1797 // "edit commands"
1798 CommandEditDialog *m = new CommandEditDialog(this); 1798 CommandEditDialog *m = new CommandEditDialog(this);
1799 connect(m,SIGNAL(commandsEdited()),this,SLOT(initCommandList())); 1799 connect(m,SIGNAL(commandsEdited()),this,SLOT(initCommandList()));
1800 m->showMaximized(); 1800 m->showMaximized();
1801 } 1801 }
1802 1802
1803} 1803}
1804 1804
1805// $QPEDIR/bin/qcop QPE/Application/embeddedkonsole 'setDocument(QString)' 'ssh -V' 1805// $QPEDIR/bin/qcop QPE/Application/embeddedkonsole 'setDocument(QString)' 'ssh -V'
1806void Konsole::setDocument( const QString &cmd) 1806void Konsole::setDocument( const QString &cmd)
1807{ 1807{
1808 newSession(); 1808 newSession();
1809 TEWidget* te = getTe(); 1809 TEWidget* te = getTe();
1810 if(cmd.find("-e", 0, TRUE) != -1) 1810 if(cmd.find("-e", 0, TRUE) != -1)
1811 { 1811 {
1812 QString cmd2; 1812 QString cmd2;
1813 cmd2=cmd.right(cmd.length()-3)+" &"; 1813 cmd2=cmd.right(cmd.length()-3)+" &";
1814 system(cmd2.latin1()); 1814 system(cmd2.latin1());
1815 if(startUp <= 1 && nsessions < 2) 1815 if(startUp <= 1 && nsessions < 2)
1816 { 1816 {
1817 doneSession(getTe(), 0); 1817 doneSession(getTe(), 0);
1818 exit(0); 1818 exit(0);
1819 } 1819 }
1820 else 1820 else
1821 doneSession(getTe(), 0); 1821 doneSession(getTe(), 0);
1822 } 1822 }
1823 else 1823 else
1824 { 1824 {
1825 if (te != 0) 1825 if (te != 0)
1826 { 1826 {
1827 te->emitText(cmd+"\r"); 1827 te->emitText(cmd+"\r");
1828 } 1828 }
1829 } 1829 }
1830 startUp++; 1830 startUp++;
1831} 1831}
1832 1832
1833 1833
1834// what is the point of this when you can just 1834// what is the point of this when you can just
1835// run commands by using the shell directly?? 1835// run commands by using the shell directly??
1836void Konsole::parseCommandLine() 1836void Konsole::parseCommandLine()
1837{ 1837{
1838 QString cmd; 1838 QString cmd;
1839 // newSession(); 1839 // newSession();
1840 for (int i=1;i< qApp->argc();i++) 1840 for (int i=1;i< qApp->argc();i++)
1841 { 1841 {
1842 if( QString(qApp->argv()[i]) == "-e") 1842 if( QString(qApp->argv()[i]) == "-e")
1843 { 1843 {
1844 i++; 1844 i++;
1845 for ( int j=i;j< qApp->argc();j++) 1845 for ( int j=i;j< qApp->argc();j++)
1846 { 1846 {
1847 cmd+=QString(qApp->argv()[j])+" "; 1847 cmd+=QString(qApp->argv()[j])+" ";
1848 } 1848 }
1849 cmd.stripWhiteSpace(); 1849 cmd.stripWhiteSpace();
1850 system(cmd.latin1()); 1850 system(cmd.latin1());
1851 exit(0);//close(); 1851 exit(0);//close();
1852 } // end -e switch 1852 } // end -e switch
1853 } 1853 }
1854 startUp++; 1854 startUp++;
1855} 1855}
1856 1856
1857void Konsole::changeForegroundColor(const QColor &color) 1857void Konsole::changeForegroundColor(const QColor &color)
1858{ 1858{
1859 Config cfg( "Konsole" ); 1859 Config cfg( "Konsole" );
1860 cfg.setGroup("Colors"); 1860 cfg.setGroup("Colors");
1861 int r, g, b; 1861 int r, g, b;
1862 color.rgb(&r,&g,&b); 1862 color.rgb(&r,&g,&b);
1863 foreground.setRgb(r,g,b); 1863 foreground.setRgb(r,g,b);
1864 1864
1865 cfg.writeEntry("foreground",color.name()); 1865 cfg.writeEntry("foreground",color.name());
1866 odebug << "foreground "+color.name() << oendl; 1866 odebug << "foreground "+color.name() << oendl;
1867 cfg.write(); 1867 cfg.write();
1868 1868
1869 odebug << "do other dialog" << oendl; 1869 odebug << "do other dialog" << oendl;
1870#ifdef QT_QWS_OPIE 1870#ifdef QT_QWS_OPIE
1871 1871
1872 Opie::OColorPopupMenu* penColorPopupMenu2 = new Opie::OColorPopupMenu(Qt::black, this,"background color"); 1872 Opie::OColorPopupMenu* penColorPopupMenu2 = new Opie::OColorPopupMenu(Qt::black, this,"background color");
1873 connect(penColorPopupMenu2, SIGNAL(colorSelected(const QColor&)), this, 1873 connect(penColorPopupMenu2, SIGNAL(colorSelected(const QColor&)), this,
1874 SLOT(changeBackgroundColor(const QColor&))); 1874 SLOT(changeBackgroundColor(const QColor&)));
1875 penColorPopupMenu2->exec(); 1875 penColorPopupMenu2->exec();
1876#endif 1876#endif
1877} 1877}
1878 1878
1879void Konsole::changeBackgroundColor(const QColor &color) 1879void Konsole::changeBackgroundColor(const QColor &color)
1880{ 1880{
1881 1881
1882 odebug << "Change background" << oendl; 1882 odebug << "Change background" << oendl;
1883 Config cfg( "Konsole" ); 1883 Config cfg( "Konsole" );
1884 cfg.setGroup("Colors"); 1884 cfg.setGroup("Colors");
1885 int r, g, b; 1885 int r, g, b;
1886 color.rgb(&r,&g,&b); 1886 color.rgb(&r,&g,&b);
1887 background.setRgb(r,g,b); 1887 background.setRgb(r,g,b);
1888 cfg.writeEntry("background",color.name()); 1888 cfg.writeEntry("background",color.name());
1889 odebug << "background "+color.name() << oendl; 1889 odebug << "background "+color.name() << oendl;
1890 cfg.write(); 1890 cfg.write();
1891} 1891}
1892 1892
1893void Konsole::doWrap() 1893void Konsole::doWrap()
1894{ 1894{
1895 Config cfg( "Konsole" ); 1895 Config cfg( "Konsole" );
1896 cfg.setGroup("ScrollBar"); 1896 cfg.setGroup("ScrollBar");
1897 TEWidget* te = getTe(); 1897 TEWidget* te = getTe();
1898 if( !cfg.readBoolEntry("HorzScroll",0)) 1898 if( !cfg.readBoolEntry("HorzScroll",0))
1899 { 1899 {
1900 te->setWrapAt(0); 1900 te->setWrapAt(0);
1901 configMenu->setItemChecked( cm_wrap,TRUE); 1901 configMenu->setItemChecked( cm_wrap,TRUE);
1902 } 1902 }
1903 else 1903 else
1904 { 1904 {
1905 // te->setWrapAt(90); 1905 // te->setWrapAt(90);
1906 te->setWrapAt(120); 1906 te->setWrapAt(120);
1907 configMenu->setItemChecked( cm_wrap,FALSE); 1907 configMenu->setItemChecked( cm_wrap,FALSE);
1908 } 1908 }
1909} 1909}