summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/apps/embeddedkonsole/konsole.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/core/apps/embeddedkonsole/konsole.cpp b/core/apps/embeddedkonsole/konsole.cpp
index 275a9a8..eda3135 100644
--- a/core/apps/embeddedkonsole/konsole.cpp
+++ b/core/apps/embeddedkonsole/konsole.cpp
@@ -47,1012 +47,1016 @@
47#include <qpalette.h> 47#include <qpalette.h>
48 48
49#include <sys/wait.h> 49#include <sys/wait.h>
50#include <stdio.h> 50#include <stdio.h>
51#include <stdlib.h> 51#include <stdlib.h>
52#include <assert.h> 52#include <assert.h>
53 53
54#include "konsole.h" 54#include "konsole.h"
55#include "keytrans.h" 55#include "keytrans.h"
56#include "commandeditdialog.h" 56#include "commandeditdialog.h"
57 57
58#ifdef QT_QWS_OPIE 58#ifdef QT_QWS_OPIE
59#include <opie/colorpopupmenu.h> 59#include <opie/colorpopupmenu.h>
60#endif 60#endif
61 61
62class EKNumTabBar : public QTabBar { 62class EKNumTabBar : public QTabBar {
63public: 63public:
64 void numberTabs() 64 void numberTabs()
65 { 65 {
66 // Yes, it really is this messy. QTabWidget needs functions 66 // Yes, it really is this messy. QTabWidget needs functions
67 // that provide acces to tabs in a sequential way. 67 // that provide acces to tabs in a sequential way.
68 int m=INT_MIN; 68 int m=INT_MIN;
69 for (int i=0; i<count(); i++) { 69 for (int i=0; i<count(); i++) {
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 int tx = t->rect().x(); 74 int tx = t->rect().x();
75 if ( tx<x && tx>m ) { 75 if ( tx<x && tx>m ) {
76 x = tx; 76 x = tx;
77 left = t; 77 left = t;
78 } 78 }
79 } 79 }
80 if ( left ) { 80 if ( left ) {
81 left->setText(QString::number(i+1)); 81 left->setText(QString::number(i+1));
82 m = left->rect().x(); 82 m = left->rect().x();
83 } 83 }
84 } 84 }
85 } 85 }
86}; 86};
87 87
88class EKNumTabWidget : public QTabWidget { 88class EKNumTabWidget : public QTabWidget {
89public: 89public:
90 EKNumTabWidget(QWidget* parent) : QTabWidget(parent) 90 EKNumTabWidget(QWidget* parent) : QTabWidget(parent)
91 { 91 {
92 } 92 }
93 93
94 void addTab(QWidget* w) 94 void addTab(QWidget* w)
95 { 95 {
96 QTab* t = new QTab(QString::number(tabBar()->count()+1)); 96 QTab* t = new QTab(QString::number(tabBar()->count()+1));
97 QTabWidget::addTab(w,t); 97 QTabWidget::addTab(w,t);
98 } 98 }
99 99
100 void removeTab(QWidget* w) 100 void removeTab(QWidget* w)
101 { 101 {
102 removePage(w); 102 removePage(w);
103 ((EKNumTabBar*)tabBar())->numberTabs(); 103 ((EKNumTabBar*)tabBar())->numberTabs();
104 } 104 }
105}; 105};
106 106
107// This could be configurable or dynamicly generated from the bash history 107// This could be configurable or dynamicly generated from the bash history
108// file of the user 108// file of the user
109static const char *commonCmds[] = 109static const char *commonCmds[] =
110{ 110{
111 "ls ", // I left this here, cause it looks better than the first alpha 111 "ls ", // I left this here, cause it looks better than the first alpha
112 "cardctl eject", 112 "cardctl eject",
113 "cat ", 113 "cat ",
114 "cd ", 114 "cd ",
115 "chmod ", 115 "chmod ",
116 "clear", 116 "clear",
117 "cp ", 117 "cp ",
118 "dc ", 118 "dc ",
119 "df ", 119 "df ",
120 "dmesg", 120 "dmesg",
121 "echo ", 121 "echo ",
122 "env", 122 "env",
123 "find ", 123 "find ",
124 "free", 124 "free",
125 "grep ", 125 "grep ",
126 "ifconfig ", 126 "ifconfig ",
127 "ipkg ", 127 "ipkg ",
128 "mkdir ", 128 "mkdir ",
129 "mv ", 129 "mv ",
130 "nc localhost 7776", 130 "nc localhost 7776",
131 "nc localhost 7777", 131 "nc localhost 7777",
132 "netstat ", 132 "netstat ",
133 "nslookup ", 133 "nslookup ",
134 "ping ", 134 "ping ",
135 "ps aux", 135 "ps aux",
136 "pwd ", 136 "pwd ",
137 "qcop QPE/System 'linkChanged(QString)' ''", 137 "qcop QPE/System 'linkChanged(QString)' ''",
138 "qcop QPE/System 'restart()'", 138 "qcop QPE/System 'restart()'",
139 "qcop QPE/System 'quit()'", 139 "qcop QPE/System 'quit()'",
140 "rm ", 140 "rm ",
141 "rmdir ", 141 "rmdir ",
142 "route ", 142 "route ",
143 "set ", 143 "set ",
144 "traceroute", 144 "traceroute",
145 145
146/* 146/*
147 "gzip", 147 "gzip",
148 "gunzip", 148 "gunzip",
149 "chgrp", 149 "chgrp",
150 "chown", 150 "chown",
151 "date", 151 "date",
152 "dd", 152 "dd",
153 "df", 153 "df",
154 "dmesg", 154 "dmesg",
155 "fuser", 155 "fuser",
156 "hostname", 156 "hostname",
157 "kill", 157 "kill",
158 "killall", 158 "killall",
159 "ln", 159 "ln",
160 "ping", 160 "ping",
161 "mount", 161 "mount",
162 "more", 162 "more",
163 "sort", 163 "sort",
164 "touch", 164 "touch",
165 "umount", 165 "umount",
166 "mknod", 166 "mknod",
167 "netstat", 167 "netstat",
168*/ 168*/
169 169
170 "exit", 170 "exit",
171 NULL 171 NULL
172}; 172};
173 173
174 174
175Konsole::Konsole(QWidget* parent, const char* name, WFlags fl) : 175Konsole::Konsole(QWidget* parent, const char* name, WFlags fl) :
176 QMainWindow(parent, name, fl) 176 QMainWindow(parent, name, fl)
177{ 177{
178 QStrList args; 178 QStrList args;
179 init("/bin/sh",args); 179 init("/bin/sh",args);
180} 180}
181 181
182Konsole::Konsole(const char* name, const char* _pgm, QStrList & _args, int) 182Konsole::Konsole(const char* name, const char* _pgm, QStrList & _args, int)
183 : QMainWindow(0, name) 183 : QMainWindow(0, name)
184{ 184{
185 init(_pgm,_args); 185 init(_pgm,_args);
186} 186}
187 187
188void Konsole::initCommandList() 188void Konsole::initCommandList()
189{ 189{
190// qDebug("Konsole::initCommandList"); 190// qDebug("Konsole::initCommandList");
191 Config cfg("Konsole"); 191 Config cfg("Konsole");
192 cfg.setGroup("Commands"); 192 cfg.setGroup("Commands");
193 commonCombo->setInsertionPolicy(QComboBox::AtCurrent); 193 commonCombo->setInsertionPolicy(QComboBox::AtCurrent);
194 commonCombo->clear(); 194 commonCombo->clear();
195 if (cfg.readEntry("Commands Set","FALSE") == "FALSE") { 195 if (cfg.readEntry("Commands Set","FALSE") == "FALSE") {
196 for (int i = 0; commonCmds[i] != NULL; i++) { 196 for (int i = 0; commonCmds[i] != NULL; i++) {
197 commonCombo->insertItem(commonCmds[i],i); 197 commonCombo->insertItem(commonCmds[i],i);
198 } 198 }
199 } else { 199 } else {
200 for (int i = 0; i < 100; i++) { 200 for (int i = 0; i < 100; i++) {
201 if (!(cfg.readEntry( QString::number(i),"")).isEmpty()) 201 if (!(cfg.readEntry( QString::number(i),"")).isEmpty())
202 commonCombo->insertItem((cfg.readEntry( QString::number(i),""))); 202 commonCombo->insertItem((cfg.readEntry( QString::number(i),"")));
203 } 203 }
204 } 204 }
205 205
206} 206}
207 207
208void Konsole::init(const char* _pgm, QStrList & _args) 208void Konsole::init(const char* _pgm, QStrList & _args)
209{ 209{
210 b_scroll = TRUE; // histon; 210 b_scroll = TRUE; // histon;
211 n_keytab = 0; 211 n_keytab = 0;
212 n_render = 0; 212 n_render = 0;
213 startUp=0; 213 startUp=0;
214 fromMenu = FALSE; 214 fromMenu = FALSE;
215 215
216 setCaption( tr("Terminal") ); 216 setCaption( tr("Terminal") );
217 setIcon( Resource::loadPixmap( "konsole" ) ); 217 setIcon( Resource::loadPixmap( "konsole" ) );
218 218
219 Config cfg("Konsole"); 219 Config cfg("Konsole");
220 cfg.setGroup("Konsole"); 220 cfg.setGroup("Konsole");
221 QString tmp; 221 QString tmp;
222 // initialize the list of allowed fonts /////////////////////////////////// 222 // initialize the list of allowed fonts ///////////////////////////////////
223 cfont = cfg.readNumEntry("FontID", 1); 223 cfont = cfg.readNumEntry("FontID", 1);
224 QFont f = QFont("Micro", 4, QFont::Normal); 224 QFont f = QFont("Micro", 4, QFont::Normal);
225 f.setFixedPitch(TRUE); 225 f.setFixedPitch(TRUE);
226 fonts.append(new VTFont(tr("Micro"), f)); 226 fonts.append(new VTFont(tr("Micro"), f));
227 227
228 f = QFont("Fixed", 7, QFont::Normal); 228 f = QFont("Fixed", 7, QFont::Normal);
229 f.setFixedPitch(TRUE); 229 f.setFixedPitch(TRUE);
230 fonts.append(new VTFont(tr("Small Fixed"), f)); 230 fonts.append(new VTFont(tr("Small Fixed"), f));
231 231
232 f = QFont("Fixed", 12, QFont::Normal); 232 f = QFont("Fixed", 12, QFont::Normal);
233 f.setFixedPitch(TRUE); 233 f.setFixedPitch(TRUE);
234 fonts.append(new VTFont(tr("Medium Fixed"), f)); 234 fonts.append(new VTFont(tr("Medium Fixed"), f));
235 235
236 // create terminal emulation framework //////////////////////////////////// 236 // create terminal emulation framework ////////////////////////////////////
237 nsessions = 0; 237 nsessions = 0;
238 238
239 tab = new EKNumTabWidget(this); 239 tab = new EKNumTabWidget(this);
240 240
241 connect(tab, SIGNAL(currentChanged(QWidget*)), this, SLOT(switchSession(QWidget*))); 241 connect(tab, SIGNAL(currentChanged(QWidget*)), this, SLOT(switchSession(QWidget*)));
242 242
243 // create terminal toolbar //////////////////////////////////////////////// 243 // create terminal toolbar ////////////////////////////////////////////////
244 setToolBarsMovable( FALSE ); 244 setToolBarsMovable( FALSE );
245 QPEToolBar *menuToolBar = new QPEToolBar( this ); 245 QPEToolBar *menuToolBar = new QPEToolBar( this );
246 menuToolBar->setHorizontalStretchable( TRUE ); 246 menuToolBar->setHorizontalStretchable( TRUE );
247 247
248 QPEMenuBar *menuBar = new QPEMenuBar( menuToolBar ); 248 QPEMenuBar *menuBar = new QPEMenuBar( menuToolBar );
249 249
250 fontList = new QPopupMenu( this ); 250 fontList = new QPopupMenu( this );
251 for(uint i = 0; i < fonts.count(); i++) { 251 for(uint i = 0; i < fonts.count(); i++) {
252 VTFont *fnt = fonts.at(i); 252 VTFont *fnt = fonts.at(i);
253 fontList->insertItem(fnt->getName(), i); 253 fontList->insertItem(fnt->getName(), i);
254 } 254 }
255 fontChanged(cfont); 255 fontChanged(cfont);
256 256
257 configMenu = new QPopupMenu( this); 257 configMenu = new QPopupMenu( this);
258 colorMenu = new QPopupMenu( this); 258 colorMenu = new QPopupMenu( this);
259 scrollMenu = new QPopupMenu( this); 259 scrollMenu = new QPopupMenu( this);
260 editCommandListMenu = new QPopupMenu( this); 260 editCommandListMenu = new QPopupMenu( this);
261 261
262 configMenu->insertItem(tr("Command List"), editCommandListMenu); 262 configMenu->insertItem(tr("Command List"), editCommandListMenu);
263 263
264 bool listHidden; 264 bool listHidden;
265 cfg.setGroup("Menubar"); 265 cfg.setGroup("Menubar");
266 if( cfg.readEntry("Hidden","FALSE") == "TRUE") { 266 if( cfg.readEntry("Hidden","FALSE") == "TRUE") {
267 editCommandListMenu->insertItem( tr( "Show command list" )); 267 editCommandListMenu->insertItem( tr( "Show command list" ));
268 listHidden=TRUE; 268 listHidden=TRUE;
269 } else { 269 } else {
270 editCommandListMenu->insertItem( tr( "Hide command list" )); 270 editCommandListMenu->insertItem( tr( "Hide command list" ));
271 listHidden=FALSE; 271 listHidden=FALSE;
272 } 272 }
273 273
274 cfg.setGroup("Tabs"); 274 cfg.setGroup("Tabs");
275 tmp=cfg.readEntry("Position","Bottom"); 275 tmp=cfg.readEntry("Position","Bottom");
276 if(tmp=="Top") { 276 if(tmp=="Top") {
277 tab->setTabPosition(QTabWidget::Top); 277 tab->setTabPosition(QTabWidget::Top);
278 configMenu->insertItem( tr( "Tabs on Bottom" ) ); 278 configMenu->insertItem( tr( "Tabs on Bottom" ) );
279 } else { 279 } else {
280 tab->setTabPosition(QTabWidget::Bottom); 280 tab->setTabPosition(QTabWidget::Bottom);
281 configMenu->insertItem(tr("Tabs on Top")); 281 configMenu->insertItem(tr("Tabs on Top"));
282 } 282 }
283 configMenu->insertSeparator(2); 283 configMenu->insertSeparator(2);
284 284
285 colorMenu->insertItem(tr( "Green on Black")); 285 colorMenu->insertItem(tr( "Green on Black"));
286 colorMenu->insertItem(tr( "Black on White")); 286 colorMenu->insertItem(tr( "Black on White"));
287 colorMenu->insertItem(tr( "White on Black")); 287 colorMenu->insertItem(tr( "White on Black"));
288 colorMenu->insertItem(tr( "Black on Transparent")); 288 colorMenu->insertItem(tr( "Black on Transparent"));
289 colorMenu->insertItem(tr( "Black on Red")); 289 colorMenu->insertItem(tr( "Black on Red"));
290 colorMenu->insertItem(tr( "Red on Black")); 290 colorMenu->insertItem(tr( "Red on Black"));
291 colorMenu->insertItem(tr( "Green on Yellow")); 291 colorMenu->insertItem(tr( "Green on Yellow"));
292 colorMenu->insertItem(tr( "Blue on Magenta")); 292 colorMenu->insertItem(tr( "Blue on Magenta"));
293 colorMenu->insertItem(tr( "Magenta on Blue")); 293 colorMenu->insertItem(tr( "Magenta on Blue"));
294 colorMenu->insertItem(tr( "Cyan on White")); 294 colorMenu->insertItem(tr( "Cyan on White"));
295 colorMenu->insertItem(tr( "White on Cyan")); 295 colorMenu->insertItem(tr( "White on Cyan"));
296 colorMenu->insertItem(tr( "Blue on Black")); 296 colorMenu->insertItem(tr( "Blue on Black"));
297 colorMenu->insertItem(tr( "Amber on Black")); 297 colorMenu->insertItem(tr( "Amber on Black"));
298 298
299#ifdef QT_QWS_OPIE 299#ifdef QT_QWS_OPIE
300 colorMenu->insertItem(tr( "Custom")); 300 colorMenu->insertItem(tr( "Custom"));
301#endif 301#endif
302 302
303 configMenu->insertItem( tr("Font"), fontList );
303 configMenu->insertItem(tr( "Colors") ,colorMenu); 304 configMenu->insertItem(tr( "Colors") ,colorMenu);
304 305
305 connect( fontList, SIGNAL( activated(int) ), this, SLOT( fontChanged(int) )); 306 connect( fontList, SIGNAL( activated(int) ), this, SLOT( fontChanged(int) ));
306 connect( configMenu, SIGNAL( activated(int) ), this, SLOT( configMenuSelected(int) )); 307 connect( configMenu, SIGNAL( activated(int) ), this, SLOT( configMenuSelected(int) ));
307 connect( colorMenu, SIGNAL( activated(int) ), this, SLOT( colorMenuIsSelected(int) )); 308 connect( colorMenu, SIGNAL( activated(int) ), this, SLOT( colorMenuIsSelected(int) ));
308 connect( scrollMenu, SIGNAL(activated(int)),this,SLOT(scrollMenuSelected(int))); 309 connect( scrollMenu, SIGNAL(activated(int)),this,SLOT(scrollMenuSelected(int)));
309 connect(editCommandListMenu,SIGNAL(activated(int)),this,SLOT(editCommandListMenuSelected(int))); 310 connect(editCommandListMenu,SIGNAL(activated(int)),this,SLOT(editCommandListMenuSelected(int)));
310 menuBar->insertItem( tr("Font"), fontList ); 311
311 menuBar->insertItem( tr("Options"), configMenu ); 312 menuBar->insertItem( tr("Options"), configMenu );
312 313
313 QPEToolBar *toolbar = new QPEToolBar( this ); 314 QPEToolBar *toolbar = new QPEToolBar( this );
314 315
315 QAction *a; 316 QAction *a;
316 317
317 // Button Commands 318 // Button Commands
318 a = new QAction( tr("New"), Resource::loadPixmap( "konsole" ), QString::null, 0, this, 0 ); 319 a = new QAction( tr("New"), Resource::loadPixmap( "konsole" ), QString::null, 0, this, 0 );
319 connect( a, SIGNAL( activated() ), this, SLOT( newSession() ) ); a->addTo( toolbar ); 320 connect( a, SIGNAL( activated() ), this, SLOT( newSession() ) ); a->addTo( toolbar );
320 a = new QAction( tr("Enter"), Resource::loadPixmap( "konsole/enter" ), QString::null, 0, this, 0 ); 321 a = new QAction( tr("Enter"), Resource::loadPixmap( "konsole/enter" ), QString::null, 0, this, 0 );
321 connect( a, SIGNAL( activated() ), this, SLOT( hitEnter() ) ); a->addTo( toolbar ); 322 connect( a, SIGNAL( activated() ), this, SLOT( hitEnter() ) ); a->addTo( toolbar );
322 a = new QAction( tr("Space"), Resource::loadPixmap( "konsole/space" ), QString::null, 0, this, 0 ); 323 a = new QAction( tr("Space"), Resource::loadPixmap( "konsole/space" ), QString::null, 0, this, 0 );
323 connect( a, SIGNAL( activated() ), this, SLOT( hitSpace() ) ); a->addTo( toolbar ); 324 connect( a, SIGNAL( activated() ), this, SLOT( hitSpace() ) ); a->addTo( toolbar );
324 a = new QAction( tr("Tab"), Resource::loadPixmap( "konsole/tab" ), QString::null, 0, this, 0 ); 325 a = new QAction( tr("Tab"), Resource::loadPixmap( "konsole/tab" ), QString::null, 0, this, 0 );
325 connect( a, SIGNAL( activated() ), this, SLOT( hitTab() ) ); a->addTo( toolbar ); 326 connect( a, SIGNAL( activated() ), this, SLOT( hitTab() ) ); a->addTo( toolbar );
326 a = new QAction( tr("Up"), Resource::loadPixmap( "konsole/up" ), QString::null, 0, this, 0 ); 327 a = new QAction( tr("Up"), Resource::loadPixmap( "konsole/up" ), QString::null, 0, this, 0 );
327 connect( a, SIGNAL( activated() ), this, SLOT( hitUp() ) ); a->addTo( toolbar ); 328 connect( a, SIGNAL( activated() ), this, SLOT( hitUp() ) ); a->addTo( toolbar );
328 a = new QAction( tr("Down"), Resource::loadPixmap( "konsole/down" ), QString::null, 0, this, 0 ); 329 a = new QAction( tr("Down"), Resource::loadPixmap( "konsole/down" ), QString::null, 0, this, 0 );
329 connect( a, SIGNAL( activated() ), this, SLOT( hitDown() ) ); a->addTo( toolbar ); 330 connect( a, SIGNAL( activated() ), this, SLOT( hitDown() ) ); a->addTo( toolbar );
330 a = new QAction( tr("Paste"), Resource::loadPixmap( "paste" ), QString::null, 0, this, 0 ); 331 a = new QAction( tr("Paste"), Resource::loadPixmap( "paste" ), QString::null, 0, this, 0 );
331 connect( a, SIGNAL( activated() ), this, SLOT( hitPaste() ) ); a->addTo( toolbar ); 332 connect( a, SIGNAL( activated() ), this, SLOT( hitPaste() ) ); a->addTo( toolbar );
332/* 333/*
333 a = new QAction( tr("Up"), Resource::loadPixmap( "up" ), QString::null, 0, this, 0 ); 334 a = new QAction( tr("Up"), Resource::loadPixmap( "up" ), QString::null, 0, this, 0 );
334 connect( a, SIGNAL( activated() ), this, SLOT( hitUp() ) ); a->addTo( toolbar ); 335 connect( a, SIGNAL( activated() ), this, SLOT( hitUp() ) ); a->addTo( toolbar );
335 a = new QAction( tr("Down"), Resource::loadPixmap( "down" ), QString::null, 0, this, 0 ); 336 a = new QAction( tr("Down"), Resource::loadPixmap( "down" ), QString::null, 0, this, 0 );
336 connect( a, SIGNAL( activated() ), this, SLOT( hitDown() ) ); a->addTo( toolbar ); 337 connect( a, SIGNAL( activated() ), this, SLOT( hitDown() ) ); a->addTo( toolbar );
337*/ 338*/
338 339
339 secondToolBar = new QPEToolBar( this ); 340 secondToolBar = new QPEToolBar( this );
340 secondToolBar->setHorizontalStretchable( TRUE ); 341 secondToolBar->setHorizontalStretchable( TRUE );
341 342
342 commonCombo = new QComboBox( secondToolBar ); 343 commonCombo = new QComboBox( secondToolBar );
343 commonCombo->setMaximumWidth(236); 344 commonCombo->setMaximumWidth(236);
344 345
345 editCommandListMenu->insertItem( tr( "Quick Edit" ) ); 346 editCommandListMenu->insertItem( tr( "Quick Edit" ) );
346 if( listHidden) { 347 if( listHidden) {
347 secondToolBar->hide(); 348 secondToolBar->hide();
348 editCommandListMenu->setItemEnabled(-23 ,FALSE); 349 editCommandListMenu->setItemEnabled(-23 ,FALSE);
349 } 350 }
350 editCommandListMenu->insertItem(tr( "Edit" ) ); 351 editCommandListMenu->insertItem(tr( "Edit" ) );
351 352
352 cfg.setGroup("Commands"); 353 cfg.setGroup("Commands");
353 commonCombo->setInsertionPolicy(QComboBox::AtCurrent); 354 commonCombo->setInsertionPolicy(QComboBox::AtCurrent);
354 355
355 initCommandList(); 356 initCommandList();
356// for (int i = 0; commonCmds[i] != NULL; i++) { 357// for (int i = 0; commonCmds[i] != NULL; i++) {
357// commonCombo->insertItem( commonCmds[i], i ); 358// commonCombo->insertItem( commonCmds[i], i );
358// tmp = cfg.readEntry( QString::number(i),""); 359// tmp = cfg.readEntry( QString::number(i),"");
359// if(tmp != "") 360// if(tmp != "")
360// commonCombo->changeItem( tmp,i ); 361// commonCombo->changeItem( tmp,i );
361// } 362// }
362 363
363 connect( commonCombo, SIGNAL( activated(int) ), this, SLOT( enterCommand(int) )); 364 connect( commonCombo, SIGNAL( activated(int) ), this, SLOT( enterCommand(int) ));
364 365
365 scrollMenu->insertItem(tr( "None" )); 366 scrollMenu->insertItem(tr( "None" ));
366 scrollMenu->insertItem(tr( "Left" )); 367 scrollMenu->insertItem(tr( "Left" ));
367 scrollMenu->insertItem(tr( "Right" )); 368 scrollMenu->insertItem(tr( "Right" ));
368// scrollMenu->insertSeparator(4); 369// scrollMenu->insertSeparator(4);
369// scrollMenu->insertItem(tr( "Horizontal" )); 370// scrollMenu->insertItem(tr( "Horizontal" ));
370 371
371 configMenu->insertItem(tr( "ScrollBar" ),scrollMenu); 372 configMenu->insertItem(tr( "ScrollBar" ),scrollMenu);
372 373
373 int jut = configMenu->insertItem(tr( "Wrap" )); 374 int jut = configMenu->insertItem(tr( "Wrap" ));
374 cfg.setGroup("ScrollBar"); 375 cfg.setGroup("ScrollBar");
375 configMenu->setItemChecked(jut, cfg.readBoolEntry("HorzScroll",0)); 376 configMenu->setItemChecked(jut, cfg.readBoolEntry("HorzScroll",0));
376 377
377 jut = configMenu->insertItem(tr( "Use Beep" )); 378 jut = configMenu->insertItem(tr( "Use Beep" ));
378 cfg.setGroup("Menubar"); 379 cfg.setGroup("Menubar");
379 380
380 configMenu->setItemChecked(jut, cfg.readBoolEntry("useBeep",0)); 381 configMenu->setItemChecked(jut, cfg.readBoolEntry("useBeep",0));
381 382
382 383
383//scrollMenuSelected(-29); 384//scrollMenuSelected(-29);
384// cfg.setGroup("ScrollBar"); 385// cfg.setGroup("ScrollBar");
385// if(cfg.readBoolEntry("HorzScroll",0)) { 386// if(cfg.readBoolEntry("HorzScroll",0)) {
386// if(cfg.readNumEntry("Position",2) == 0) 387// if(cfg.readNumEntry("Position",2) == 0)
387// te->setScrollbarLocation(1); 388// te->setScrollbarLocation(1);
388// else 389// else
389// te->setScrollbarLocation(0); 390// te->setScrollbarLocation(0);
390// te->setScrollbarLocation( cfg.readNumEntry("Position",2)); 391// te->setScrollbarLocation( cfg.readNumEntry("Position",2));
391// te->setWrapAt(120); 392// te->setWrapAt(120);
392// } 393// }
393 // create applications ///////////////////////////////////////////////////// 394 // create applications /////////////////////////////////////////////////////
394 setCentralWidget(tab); 395 setCentralWidget(tab);
395 396
396 // load keymaps //////////////////////////////////////////////////////////// 397 // load keymaps ////////////////////////////////////////////////////////////
397 KeyTrans::loadAll(); 398 KeyTrans::loadAll();
398 for (int i = 0; i < KeyTrans::count(); i++) 399 for (int i = 0; i < KeyTrans::count(); i++)
399 { KeyTrans* s = KeyTrans::find(i); 400 { KeyTrans* s = KeyTrans::find(i);
400 assert( s ); 401 assert( s );
401 } 402 }
402 403
403 se_pgm = _pgm; 404 se_pgm = _pgm;
404 se_args = _args; 405 se_args = _args;
405 se_args.prepend("--login"); 406 se_args.prepend("--login");
406parseCommandLine(); 407parseCommandLine();
407 // read and apply default values /////////////////////////////////////////// 408 // read and apply default values ///////////////////////////////////////////
408 resize(321, 321); // Dummy. 409 resize(321, 321); // Dummy.
409 QSize currentSize = size(); 410 QSize currentSize = size();
410 if (currentSize != size()) 411 if (currentSize != size())
411 defaultSize = size(); 412 defaultSize = size();
412} 413}
413 414
414void Konsole::show() 415void Konsole::show()
415{ 416{
416 if ( !nsessions ) { 417 if ( !nsessions ) {
417 newSession(); 418 newSession();
418 } 419 }
419 QMainWindow::show(); 420 QMainWindow::show();
420 421
421} 422}
422 423
423void Konsole::initSession(const char*, QStrList &) 424void Konsole::initSession(const char*, QStrList &)
424{ 425{
425 QMainWindow::show(); 426 QMainWindow::show();
426} 427}
427 428
428Konsole::~Konsole() 429Konsole::~Konsole()
429{ 430{
430 while (nsessions > 0) { 431 while (nsessions > 0) {
431 doneSession(getTe()->currentSession, 0); 432 doneSession(getTe()->currentSession, 0);
432 } 433 }
433 434
434 Config cfg("Konsole"); 435 Config cfg("Konsole");
435 cfg.setGroup("Konsole"); 436 cfg.setGroup("Konsole");
436 cfg.writeEntry("FontID", cfont); 437 cfg.writeEntry("FontID", cfont);
437} 438}
438 439
439void Konsole::fontChanged(int f) 440void Konsole::fontChanged(int f)
440{ 441{
441 VTFont* font = fonts.at(f); 442 VTFont* font = fonts.at(f);
442 if (font != 0) { 443 if (font != 0) {
443 for(uint i = 0; i < fonts.count(); i++) { 444 for(uint i = 0; i < fonts.count(); i++) {
444 fontList->setItemChecked(i, (i == (uint) f) ? TRUE : FALSE); 445 fontList->setItemChecked(i, (i == (uint) f) ? TRUE : FALSE);
445 } 446 }
446 447
447 cfont = f; 448 cfont = f;
448 449
449 TEWidget* te = getTe(); 450 TEWidget* te = getTe();
450 if (te != 0) { 451 if (te != 0) {
451 te->setVTFont(font->getFont()); 452 te->setVTFont(font->getFont());
452 } 453 }
453 } 454 }
454} 455}
455 456
456 457
457void Konsole::enterCommand(int c) 458void Konsole::enterCommand(int c)
458{ 459{
459 TEWidget* te = getTe(); 460 TEWidget* te = getTe();
460 if (te != 0) { 461 if (te != 0) {
461 if(!commonCombo->editable()) { 462 if(!commonCombo->editable()) {
462 QString text = commonCombo->text(c); //commonCmds[c]; 463 QString text = commonCombo->text(c); //commonCmds[c];
463 te->emitText(text); 464 te->emitText(text);
464 } else { 465 } else {
465 changeCommand( commonCombo->text(c), c); 466 changeCommand( commonCombo->text(c), c);
466 } 467 }
467 } 468 }
468} 469}
469 470
470void Konsole::hitEnter() 471void Konsole::hitEnter()
471{ 472{
472 TEWidget* te = getTe(); 473 TEWidget* te = getTe();
473 if (te != 0) { 474 if (te != 0) {
474 te->emitText(QString("\r")); 475 te->emitText(QString("\r"));
475 } 476 }
476} 477}
477 478
478void Konsole::hitSpace() 479void Konsole::hitSpace()
479{ 480{
480 TEWidget* te = getTe(); 481 TEWidget* te = getTe();
481 if (te != 0) { 482 if (te != 0) {
482 te->emitText(QString(" ")); 483 te->emitText(QString(" "));
483 } 484 }
484} 485}
485 486
486void Konsole::hitTab() 487void Konsole::hitTab()
487{ 488{
488 TEWidget* te = getTe(); 489 TEWidget* te = getTe();
489 if (te != 0) { 490 if (te != 0) {
490 te->emitText(QString("\t")); 491 te->emitText(QString("\t"));
491 } 492 }
492} 493}
493 494
494void Konsole::hitPaste() 495void Konsole::hitPaste()
495{ 496{
496 TEWidget* te = getTe(); 497 TEWidget* te = getTe();
497 if (te != 0) { 498 if (te != 0) {
498 te->pasteClipboard(); 499 te->pasteClipboard();
499 } 500 }
500} 501}
501 502
502void Konsole::hitUp() 503void Konsole::hitUp()
503{ 504{
504 TEWidget* te = getTe(); 505 TEWidget* te = getTe();
505 if (te != 0) { 506 if (te != 0) {
506 QKeyEvent ke( QKeyEvent::KeyPress, Qt::Key_Up, 0, 0); 507 QKeyEvent ke( QKeyEvent::KeyPress, Qt::Key_Up, 0, 0);
507 QApplication::sendEvent( te, &ke ); 508 QApplication::sendEvent( te, &ke );
508 } 509 }
509} 510}
510 511
511void Konsole::hitDown() 512void Konsole::hitDown()
512{ 513{
513 TEWidget* te = getTe(); 514 TEWidget* te = getTe();
514 if (te != 0) { 515 if (te != 0) {
515 QKeyEvent ke( QKeyEvent::KeyPress, Qt::Key_Down, 0, 0); 516 QKeyEvent ke( QKeyEvent::KeyPress, Qt::Key_Down, 0, 0);
516 QApplication::sendEvent( te, &ke ); 517 QApplication::sendEvent( te, &ke );
517 } 518 }
518} 519}
519 520
520/** 521/**
521 This function calculates the size of the external widget 522 This function calculates the size of the external widget
522 needed for the internal widget to be 523 needed for the internal widget to be
523 */ 524 */
524QSize Konsole::calcSize(int columns, int lines) { 525QSize Konsole::calcSize(int columns, int lines) {
525 TEWidget* te = getTe(); 526 TEWidget* te = getTe();
526 if (te != 0) { 527 if (te != 0) {
527 QSize size = te->calcSize(columns, lines); 528 QSize size = te->calcSize(columns, lines);
528 return size; 529 return size;
529 } else { 530 } else {
530 QSize size; 531 QSize size;
531 return size; 532 return size;
532 } 533 }
533} 534}
534 535
535/** 536/**
536 sets application window to a size based on columns X lines of the te 537 sets application window to a size based on columns X lines of the te
537 guest widget. Call with (0,0) for setting default size. 538 guest widget. Call with (0,0) for setting default size.
538*/ 539*/
539 540
540void Konsole::setColLin(int columns, int lines) 541void Konsole::setColLin(int columns, int lines)
541{ 542{
542 qDebug("konsole::setColLin:: Columns %d", columns); 543 qDebug("konsole::setColLin:: Columns %d", columns);
543 544
544 if ((columns==0) || (lines==0)) 545 if ((columns==0) || (lines==0))
545 { 546 {
546 if (defaultSize.isEmpty()) // not in config file : set default value 547 if (defaultSize.isEmpty()) // not in config file : set default value
547 { 548 {
548 defaultSize = calcSize(80,24); 549 defaultSize = calcSize(80,24);
549 // notifySize(24,80); // set menu items (strange arg order !) 550 // notifySize(24,80); // set menu items (strange arg order !)
550 } 551 }
551 resize(defaultSize); 552 resize(defaultSize);
552 } else { 553 } else {
553 resize(calcSize(columns, lines)); 554 resize(calcSize(columns, lines));
554 // notifySize(lines,columns); // set menu items (strange arg order !) 555 // notifySize(lines,columns); // set menu items (strange arg order !)
555 } 556 }
556} 557}
557 558
558/* 559/*
559void Konsole::setFont(int fontno) 560void Konsole::setFont(int fontno)
560{ 561{
561 QFont f; 562 QFont f;
562 if (fontno == 0) 563 if (fontno == 0)
563 f = defaultFont = QFont( "Helvetica", 12 ); 564 f = defaultFont = QFont( "Helvetica", 12 );
564 else 565 else
565 if (fonts[fontno][0] == '-') 566 if (fonts[fontno][0] == '-')
566 f.setRawName( fonts[fontno] ); 567 f.setRawName( fonts[fontno] );
567 else 568 else
568 { 569 {
569 f.setFamily(fonts[fontno]); 570 f.setFamily(fonts[fontno]);
570 f.setRawMode( TRUE ); 571 f.setRawMode( TRUE );
571 } 572 }
572 if ( !f.exactMatch() && fontno != 0) 573 if ( !f.exactMatch() && fontno != 0)
573 { 574 {
574 QString msg = i18n("Font `%1' not found.\nCheck README.linux.console for help.").arg(fonts[fontno]); 575 QString msg = i18n("Font `%1' not found.\nCheck README.linux.console for help.").arg(fonts[fontno]);
575 QMessageBox(this, msg); 576 QMessageBox(this, msg);
576 return; 577 return;
577 } 578 }
578 if (se) se->setFontNo(fontno); 579 if (se) se->setFontNo(fontno);
579 te->setVTFont(f); 580 te->setVTFont(f);
580 n_font = fontno; 581 n_font = fontno;
581} 582}
582*/ 583*/
583 584
584// --| color selection |------------------------------------------------------- 585// --| color selection |-------------------------------------------------------
585 586
586void Konsole::changeColumns(int columns) 587void Konsole::changeColumns(int columns)
587{ 588{
588 qDebug("change columns"); 589 qDebug("change columns");
589 TEWidget* te = getTe(); 590 TEWidget* te = getTe();
590 if (te != 0) { 591 if (te != 0) {
591 setColLin(columns,te->Lines()); 592 setColLin(columns,te->Lines());
592 te->update(); 593 te->update();
593 } 594 }
594} 595}
595 596
596//FIXME: If a child dies during session swap, 597//FIXME: If a child dies during session swap,
597// this routine might be called before 598// this routine might be called before
598// session swap is completed. 599// session swap is completed.
599 600
600void Konsole::doneSession(TESession*, int ) 601void Konsole::doneSession(TESession*, int )
601{ 602{
602 TEWidget *te = getTe(); 603 TEWidget *te = getTe();
603 if (te != 0) { 604 if (te != 0) {
604 te->currentSession->setConnect(FALSE); 605 te->currentSession->setConnect(FALSE);
605 tab->removeTab(te); 606 tab->removeTab(te);
606 delete te->currentSession; 607 delete te->currentSession;
607 delete te; 608 delete te;
608 nsessions--; 609 nsessions--;
609 } 610 }
610 611
611 if (nsessions == 0) { 612 if (nsessions == 0) {
612 close(); 613 close();
613 } 614 }
614} 615}
615 616
616void Konsole::newSession() { 617void Konsole::newSession() {
617 if(nsessions < 15) { // seems to be something weird about 16 tabs on the Zaurus.... memory? 618 if(nsessions < 15) { // seems to be something weird about 16 tabs on the Zaurus.... memory?
618 TEWidget* te = new TEWidget(tab); 619 TEWidget* te = new TEWidget(tab);
619 Config c("Konsole"); 620 Config c("Konsole");
620 c.setGroup("Menubar"); 621 c.setGroup("Menubar");
621 te->useBeep=c.readBoolEntry("useBeep",0); 622 te->useBeep=c.readBoolEntry("useBeep",0);
622 623
623// te->setBackgroundMode(PaletteBase); //we want transparent!! 624// te->setBackgroundMode(PaletteBase); //we want transparent!!
624 te->setVTFont(fonts.at(cfont)->getFont()); 625 te->setVTFont(fonts.at(cfont)->getFont());
625 tab->addTab(te); 626 tab->addTab(te);
626 TESession* se = new TESession(this, te, se_pgm, se_args, "xterm"); 627 TESession* se = new TESession(this, te, se_pgm, se_args, "xterm");
627 te->currentSession = se; 628 te->currentSession = se;
628 connect( se, SIGNAL(done(TESession*,int)), this, SLOT(doneSession(TESession*,int)) ); 629 connect( se, SIGNAL(done(TESession*,int)), this, SLOT(doneSession(TESession*,int)) );
629 se->run(); 630 se->run();
630 se->setConnect(TRUE); 631 se->setConnect(TRUE);
631 se->setHistory(b_scroll); 632 se->setHistory(b_scroll);
632 tab->setCurrentPage(nsessions); 633 tab->setCurrentPage(nsessions);
633 nsessions++; 634 nsessions++;
634 doWrap(); 635 doWrap();
635 setColor(); 636 setColor();
636 } 637 }
637} 638}
638 639
639TEWidget* Konsole::getTe() { 640TEWidget* Konsole::getTe() {
640 if (nsessions) { 641 if (nsessions) {
641 return (TEWidget *) tab->currentPage(); 642 return (TEWidget *) tab->currentPage();
642 } else { 643 } else {
643 return 0; 644 return 0;
644 } 645 }
645} 646}
646 647
647void Konsole::switchSession(QWidget* w) { 648void Konsole::switchSession(QWidget* w) {
648 TEWidget* te = (TEWidget *) w; 649 TEWidget* te = (TEWidget *) w;
649 650
650 QFont teFnt = te->getVTFont(); 651 QFont teFnt = te->getVTFont();
651 for(uint i = 0; i < fonts.count(); i++) { 652 for(uint i = 0; i < fonts.count(); i++) {
652 VTFont *fnt = fonts.at(i); 653 VTFont *fnt = fonts.at(i);
653 bool cf = fnt->getFont() == teFnt; 654 bool cf = fnt->getFont() == teFnt;
654 fontList->setItemChecked(i, cf); 655 fontList->setItemChecked(i, cf);
655 if (cf) { 656 if (cf) {
656 cfont = i; 657 cfont = i;
657 } 658 }
658 } 659 }
659} 660}
660 661
661void Konsole::colorMenuIsSelected(int iD) { 662void Konsole::colorMenuIsSelected(int iD) {
662 fromMenu = TRUE; 663 fromMenu = TRUE;
663 colorMenuSelected(iD); 664 colorMenuSelected(iD);
664} 665}
665 666
666/// ------------------------------- some new stuff by L.J. Potter 667/// ------------------------------- some new stuff by L.J. Potter
667void Konsole::colorMenuSelected(int iD) 668void Konsole::colorMenuSelected(int iD)
668{ // this is NOT pretty, elegant or anything else besides functional 669{ // this is NOT pretty, elegant or anything else besides functional
669// QString temp; 670// QString temp;
670// qDebug( temp.sprintf("colormenu %d", iD)); 671// qDebug( temp.sprintf("colormenu %d", iD));
671 TEWidget* te = getTe(); 672
673 TEWidget* te = getTe();
672 Config cfg("Konsole"); 674 Config cfg("Konsole");
673 cfg.setGroup("Colors"); 675 cfg.setGroup("Colors");
674// QColor foreground; 676// QColor foreground;
675// QColor background; 677// QColor background;
676 colorMenu->setItemChecked(lastSelectedMenu,FALSE); 678 colorMenu->setItemChecked(lastSelectedMenu,FALSE);
677 ColorEntry m_table[TABLE_COLORS]; 679 ColorEntry m_table[TABLE_COLORS];
678 const ColorEntry * defaultCt=te->getdefaultColorTable(); 680 const ColorEntry * defaultCt=te->getdefaultColorTable();
679 /////////// fore back 681 /////////// fore back
680 int i; 682 int i;
681 if(iD==-9) { // default default 683 if(iD==-9) { // default default
682 for (i = 0; i < TABLE_COLORS; i++) { 684 for (i = 0; i < TABLE_COLORS; i++) {
683 m_table[i].color = defaultCt[i].color; 685 m_table[i].color = defaultCt[i].color;
684 if(i==1 || i == 11) 686 if(i==1 || i == 11)
685 m_table[i].transparent=1; 687 m_table[i].transparent=1;
686 cfg.writeEntry("Schema","9"); 688 cfg.writeEntry("Schema","9");
687 colorMenu->setItemChecked(-9,TRUE); 689 colorMenu->setItemChecked(-9,TRUE);
688 } 690 }
689 } else { 691 } else {
690 if(iD==-6) { // green black 692 if(iD==-6) { // green black
691 foreground.setRgb(0x18,255,0x18); 693 foreground.setRgb(0x18,255,0x18);
692 background.setRgb(0x00,0x00,0x00); 694 background.setRgb(0x00,0x00,0x00);
693 cfg.writeEntry("Schema","6"); 695 cfg.writeEntry("Schema","6");
694 colorMenu->setItemChecked(-6,TRUE); 696 colorMenu->setItemChecked(-6,TRUE);
695 } 697 }
696 if(iD==-7) { // black white 698 if(iD==-7) { // black white
697 foreground.setRgb(0x00,0x00,0x00); 699 foreground.setRgb(0x00,0x00,0x00);
698 background.setRgb(0xFF,0xFF,0xFF); 700 background.setRgb(0xFF,0xFF,0xFF);
699 cfg.writeEntry("Schema","7"); 701 cfg.writeEntry("Schema","7");
700 colorMenu->setItemChecked(-7,TRUE); 702 colorMenu->setItemChecked(-7,TRUE);
701 } 703 }
702 if(iD==-8) { // white black 704 if(iD==-8) { // white black
703 foreground.setRgb(0xFF,0xFF,0xFF); 705 foreground.setRgb(0xFF,0xFF,0xFF);
704 background.setRgb(0x00,0x00,0x00); 706 background.setRgb(0x00,0x00,0x00);
705 cfg.writeEntry("Schema","8"); 707 cfg.writeEntry("Schema","8");
706 colorMenu->setItemChecked(-8,TRUE); 708 colorMenu->setItemChecked(-8,TRUE);
707 } 709 }
708 if(iD==-10) {// Black, Red 710 if(iD==-10) {// Black, Red
709 foreground.setRgb(0x00,0x00,0x00); 711 foreground.setRgb(0x00,0x00,0x00);
710 background.setRgb(0xB2,0x18,0x18); 712 background.setRgb(0xB2,0x18,0x18);
711 cfg.writeEntry("Schema","10"); 713 cfg.writeEntry("Schema","10");
712 colorMenu->setItemChecked(-10,TRUE); 714 colorMenu->setItemChecked(-10,TRUE);
713 } 715 }
714 if(iD==-11) {// Red, Black 716 if(iD==-11) {// Red, Black
715 foreground.setRgb(230,31,31); //0xB2,0x18,0x18 717 foreground.setRgb(230,31,31); //0xB2,0x18,0x18
716 background.setRgb(0x00,0x00,0x00); 718 background.setRgb(0x00,0x00,0x00);
717 cfg.writeEntry("Schema","11"); 719 cfg.writeEntry("Schema","11");
718 colorMenu->setItemChecked(-11,TRUE); 720 colorMenu->setItemChecked(-11,TRUE);
719 } 721 }
720 if(iD==-12) {// Green, Yellow - is ugly 722 if(iD==-12) {// Green, Yellow - is ugly
721// foreground.setRgb(0x18,0xB2,0x18); 723// foreground.setRgb(0x18,0xB2,0x18);
722 foreground.setRgb(36,139,10); 724 foreground.setRgb(36,139,10);
723// background.setRgb(0xB2,0x68,0x18); 725// background.setRgb(0xB2,0x68,0x18);
724 background.setRgb(255,255,0); 726 background.setRgb(255,255,0);
725 cfg.writeEntry("Schema","12"); 727 cfg.writeEntry("Schema","12");
726 colorMenu->setItemChecked(-12,TRUE); 728 colorMenu->setItemChecked(-12,TRUE);
727 } 729 }
728 if(iD==-13) {// Blue, Magenta 730 if(iD==-13) {// Blue, Magenta
729 foreground.setRgb(0x18,0xB2,0xB2); 731 foreground.setRgb(0x18,0xB2,0xB2);
730 background.setRgb(0x18,0x18,0xB2); 732 background.setRgb(0x18,0x18,0xB2);
731 cfg.writeEntry("Schema","13"); 733 cfg.writeEntry("Schema","13");
732 colorMenu->setItemChecked(-13,TRUE); 734 colorMenu->setItemChecked(-13,TRUE);
733 } 735 }
734 if(iD==-14) {// Magenta, Blue 736 if(iD==-14) {// Magenta, Blue
735 foreground.setRgb(0x18,0x18,0xB2); 737 foreground.setRgb(0x18,0x18,0xB2);
736 background.setRgb(0x18,0xB2,0xB2); 738 background.setRgb(0x18,0xB2,0xB2);
737 cfg.writeEntry("Schema","14"); 739 cfg.writeEntry("Schema","14");
738 colorMenu->setItemChecked(-14,TRUE); 740 colorMenu->setItemChecked(-14,TRUE);
739 } 741 }
740 if(iD==-15) {// Cyan, White 742 if(iD==-15) {// Cyan, White
741 foreground.setRgb(0x18,0xB2,0xB2); 743 foreground.setRgb(0x18,0xB2,0xB2);
742 background.setRgb(0xFF,0xFF,0xFF); 744 background.setRgb(0xFF,0xFF,0xFF);
743 cfg.writeEntry("Schema","15"); 745 cfg.writeEntry("Schema","15");
744 colorMenu->setItemChecked(-15,TRUE); 746 colorMenu->setItemChecked(-15,TRUE);
745 } 747 }
746 if(iD==-16) {// White, Cyan 748 if(iD==-16) {// White, Cyan
747 background.setRgb(0x18,0xB2,0xB2); 749 background.setRgb(0x18,0xB2,0xB2);
748 foreground.setRgb(0xFF,0xFF,0xFF); 750 foreground.setRgb(0xFF,0xFF,0xFF);
749 cfg.writeEntry("Schema","16"); 751 cfg.writeEntry("Schema","16");
750 colorMenu->setItemChecked(-16,TRUE); 752 colorMenu->setItemChecked(-16,TRUE);
751 } 753 }
752 if(iD==-17) {// Black, Blue 754 if(iD==-17) {// Black, Blue
753 background.setRgb(0x00,0x00,0x00); 755 background.setRgb(0x00,0x00,0x00);
754 foreground.setRgb(0x18,0xB2,0xB2); 756 foreground.setRgb(0x18,0xB2,0xB2);
755 cfg.writeEntry("Schema","17"); 757 cfg.writeEntry("Schema","17");
756 colorMenu->setItemChecked(-17,TRUE); 758 colorMenu->setItemChecked(-17,TRUE);
757 } 759 }
758 if(iD==-18) {// Black, Gold 760 if(iD==-18) {// Black, Gold
759 background.setRgb(0x00,0x00,0x00); 761 background.setRgb(0x00,0x00,0x00);
760 foreground.setRgb(255,215,0); 762 foreground.setRgb(255,215,0);
761 cfg.writeEntry("Schema","18"); 763 cfg.writeEntry("Schema","18");
762 colorMenu->setItemChecked(-18,TRUE); 764 colorMenu->setItemChecked(-18,TRUE);
763 } 765 }
764#ifdef QT_QWS_OPIE 766#ifdef QT_QWS_OPIE
765 if(iD==-19) { 767 if(iD==-19) {
766// Custom 768// Custom
767 qDebug("do custom"); 769 qDebug("do custom");
768 if(fromMenu) { 770 if(fromMenu) {
769 ColorPopupMenu* penColorPopupMenu = new ColorPopupMenu(Qt::black, this, "foreground color"); 771 ColorPopupMenu* penColorPopupMenu = new ColorPopupMenu(Qt::black, this, "foreground color");
770 connect(penColorPopupMenu, SIGNAL(colorSelected(const QColor&)), this, 772 connect(penColorPopupMenu, SIGNAL(colorSelected(const QColor&)), this,
771 SLOT(changeForegroundColor(const QColor&))); 773 SLOT(changeForegroundColor(const QColor&)));
772 penColorPopupMenu->exec(); 774 penColorPopupMenu->exec();
773 } 775 }
774 cfg.writeEntry("Schema","19"); 776 cfg.writeEntry("Schema","19");
775 if(!fromMenu) { 777 if(!fromMenu) {
776 foreground.setNamedColor(cfg.readEntry("foreground","")); 778 foreground.setNamedColor(cfg.readEntry("foreground",""));
777 background.setNamedColor(cfg.readEntry("background","")); 779 background.setNamedColor(cfg.readEntry("background",""));
778 } 780 }
779 fromMenu=FALSE; 781 fromMenu=FALSE;
780 colorMenu->setItemChecked(-19,TRUE); 782 colorMenu->setItemChecked(-19,TRUE);
781 } 783 }
782#endif 784#endif
783 for (i = 0; i < TABLE_COLORS; i++) { 785 for (i = 0; i < TABLE_COLORS; i++) {
784 if(i==0 || i == 10) { 786 if(i==0 || i == 10) {
785 m_table[i].color = foreground; 787 m_table[i].color = foreground;
786 } 788 }
787 else if(i==1 || i == 11) { 789 else if(i==1 || i == 11) {
788 m_table[i].color = background; m_table[i].transparent=0; 790 m_table[i].color = background; m_table[i].transparent=0;
789 } 791 }
790 else 792 else
791 m_table[i].color = defaultCt[i].color; 793 m_table[i].color = defaultCt[i].color;
792 } 794 }
793 } 795 }
794 lastSelectedMenu = iD; 796 lastSelectedMenu = iD;
795 te->setColorTable(m_table); 797 te->setColorTable(m_table);
796 update(); 798 update();
797 799
798} 800}
799 801
800void Konsole::configMenuSelected(int iD) 802void Konsole::configMenuSelected(int iD)
801{ 803{
802// QString temp; 804// QString temp;
803// qDebug( temp.sprintf("configmenu %d",iD)); 805// qDebug( temp.sprintf("configmenu %d",iD));
804 TEWidget* te = getTe(); 806
807 TEWidget* te = getTe();
805 Config cfg("Konsole"); 808 Config cfg("Konsole");
806 cfg.setGroup("Menubar"); 809 cfg.setGroup("Menubar");
807 int i,j; 810 int i,j;
808#ifdef QT_QWS_OPIE 811#ifdef QT_QWS_OPIE
809 i=-29;j=-30; 812 i=-29;j=-30;
810#else 813#else
811 i=-28;j=-29; 814 i=-28;j=-29;
812#endif 815#endif
813 816
814 if(iD == -4) { 817 if(iD == -4) {
815 cfg.setGroup("Tabs"); 818 cfg.setGroup("Tabs");
816 QString tmp=cfg.readEntry("Position","Bottom"); 819 QString tmp=cfg.readEntry("Position","Bottom");
817 820
818 if(tmp=="Top") { 821 if(tmp=="Top") {
819 tab->setTabPosition(QTabWidget::Bottom); 822 tab->setTabPosition(QTabWidget::Bottom);
820 configMenu->changeItem( iD, tr("Tabs on Top")); 823 configMenu->changeItem( iD, tr("Tabs on Top"));
821 cfg.writeEntry("Position","Bottom"); 824 cfg.writeEntry("Position","Bottom");
822 } else { 825 } else {
823 tab->setTabPosition(QTabWidget::Top); 826 tab->setTabPosition(QTabWidget::Top);
824 configMenu->changeItem( iD, tr("Tabs on Bottom")); 827 configMenu->changeItem( iD, tr("Tabs on Bottom"));
825 cfg.writeEntry("Position","Top"); 828 cfg.writeEntry("Position","Top");
826 } 829 }
827 } 830 }
828 if(iD == i) { 831 if(iD == i) {
829 cfg.setGroup("ScrollBar"); 832 cfg.setGroup("ScrollBar");
830 bool b=cfg.readBoolEntry("HorzScroll",0); 833 bool b=cfg.readBoolEntry("HorzScroll",0);
831 b=!b; 834 b=!b;
832 cfg.writeEntry("HorzScroll", b ); 835 cfg.writeEntry("HorzScroll", b );
833 cfg.write(); 836 cfg.write();
834 doWrap(); 837 doWrap();
835 if(cfg.readNumEntry("Position",2) == 0) { 838 if(cfg.readNumEntry("Position",2) == 0) {
836 te->setScrollbarLocation(1); 839 te->setScrollbarLocation(1);
837 } else { 840 } else {
838 te->setScrollbarLocation(0); 841 te->setScrollbarLocation(0);
839 } 842 }
840 te->setScrollbarLocation( cfg.readNumEntry("Position",2)); 843 te->setScrollbarLocation( cfg.readNumEntry("Position",2));
841 } 844 }
842 if(iD == j) { 845 if(iD == j) {
843 cfg.setGroup("Menubar"); 846 cfg.setGroup("Menubar");
844 bool b=cfg.readBoolEntry("useBeep",0); 847 bool b=cfg.readBoolEntry("useBeep",0);
845 b=!b; 848 b=!b;
846 cfg.writeEntry("useBeep", b ); 849 cfg.writeEntry("useBeep", b );
847 cfg.write(); 850 cfg.write();
848 configMenu->setItemChecked(j,b); 851 configMenu->setItemChecked(j,b);
849 te->useBeep=b; 852 te->useBeep=b;
850 } 853 }
851} 854}
852 855
853void Konsole::changeCommand(const QString &text, int c) 856void Konsole::changeCommand(const QString &text, int c)
854{ 857{
855 Config cfg("Konsole"); 858 Config cfg("Konsole");
856 cfg.setGroup("Commands"); 859 cfg.setGroup("Commands");
857 if(commonCmds[c] != text) { 860 if(commonCmds[c] != text) {
858 cfg.writeEntry(QString::number(c),text); 861 cfg.writeEntry(QString::number(c),text);
859 commonCombo->clearEdit(); 862 commonCombo->clearEdit();
860 commonCombo->setCurrentItem(c); 863 commonCombo->setCurrentItem(c);
861 } 864 }
862} 865}
863 866
864void Konsole::setColor() 867void Konsole::setColor()
865{ 868{
866 Config cfg("Konsole"); 869 Config cfg("Konsole");
867 cfg.setGroup("Colors"); 870 cfg.setGroup("Colors");
868 int scheme = cfg.readNumEntry("Schema",1); 871 int scheme = cfg.readNumEntry("Schema",1);
869 if(scheme != 1) colorMenuSelected( -scheme); 872 if(scheme != 1) colorMenuSelected( -scheme);
870} 873}
871 874
872void Konsole::scrollMenuSelected(int index) 875void Konsole::scrollMenuSelected(int index)
873{ 876{
874 qDebug( "scrollbar menu %d",index); 877// qDebug( "scrollbar menu %d",index);
878
875 TEWidget* te = getTe(); 879 TEWidget* te = getTe();
876 Config cfg("Konsole"); 880 Config cfg("Konsole");
877 cfg.setGroup("ScrollBar"); 881 cfg.setGroup("ScrollBar");
878 int i,j,k; 882 int i,j,k;
879#ifdef QT_QWS_OPIE 883#ifdef QT_QWS_OPIE
880i=-25;j=-26;k=-27; 884i=-25;j=-26;k=-27;
881#else 885#else
882i=-24;j=-25;k=-26; 886i=-24;j=-25;k=-26;
883#endif 887#endif
884 if(index == i) { 888 if(index == i) {
885 889
886 te->setScrollbarLocation(0); 890 te->setScrollbarLocation(0);
887 cfg.writeEntry("Position",0); 891 cfg.writeEntry("Position",0);
888 } else if(index == j) { 892 } else if(index == j) {
889 893
890 te->setScrollbarLocation(1); 894 te->setScrollbarLocation(1);
891 cfg.writeEntry("Position",1); 895 cfg.writeEntry("Position",1);
892 } else if(index == k) { 896 } else if(index == k) {
893 897
894 te->setScrollbarLocation(2); 898 te->setScrollbarLocation(2);
895 cfg.writeEntry("Position",2); 899 cfg.writeEntry("Position",2);
896 } 900 }
897 901
898// case -29: { 902// case -29: {
899// bool b=cfg.readBoolEntry("HorzScroll",0); 903// bool b=cfg.readBoolEntry("HorzScroll",0);
900// cfg.writeEntry("HorzScroll", !b ); 904// cfg.writeEntry("HorzScroll", !b );
901// cfg.write(); 905// cfg.write();
902// if(cfg.readNumEntry("Position",2) == 0) { 906// if(cfg.readNumEntry("Position",2) == 0) {
903// te->setScrollbarLocation(1); 907// te->setScrollbarLocation(1);
904// te->setWrapAt(0); 908// te->setWrapAt(0);
905// } else { 909// } else {
906// te->setScrollbarLocation(0); 910// te->setScrollbarLocation(0);
907// te->setWrapAt(120); 911// te->setWrapAt(120);
908// } 912// }
909// te->setScrollbarLocation( cfg.readNumEntry("Position",2)); 913// te->setScrollbarLocation( cfg.readNumEntry("Position",2));
910// } 914// }
911// break; 915// break;
912} 916}
913 917
914void Konsole::editCommandListMenuSelected(int iD) 918void Konsole::editCommandListMenuSelected(int iD)
915{ 919{
916// QString temp; 920// QString temp;
917// qDebug( temp.sprintf("edit command list %d",iD)); 921// qDebug( temp.sprintf("edit command list %d",iD));
918 TEWidget* te = getTe(); 922 TEWidget* te = getTe();
919 Config cfg("Konsole"); 923 Config cfg("Konsole");
920 cfg.setGroup("Menubar"); 924 cfg.setGroup("Menubar");
921 if( iD == -3) { 925 if( iD == -3) {
922 if(!secondToolBar->isHidden()) { 926 if(!secondToolBar->isHidden()) {
923 secondToolBar->hide(); 927 secondToolBar->hide();
924 configMenu->changeItem( iD,tr( "Show Command List" )); 928 configMenu->changeItem( iD,tr( "Show Command List" ));
925 cfg.writeEntry("Hidden","TRUE"); 929 cfg.writeEntry("Hidden","TRUE");
926 configMenu->setItemEnabled(-23 ,FALSE); 930 configMenu->setItemEnabled(-23 ,FALSE);
927 } else { 931 } else {
928 secondToolBar->show(); 932 secondToolBar->show();
929 configMenu->changeItem( iD,tr( "Hide Command List" )); 933 configMenu->changeItem( iD,tr( "Hide Command List" ));
930 cfg.writeEntry("Hidden","FALSE"); 934 cfg.writeEntry("Hidden","FALSE");
931 configMenu->setItemEnabled(-23 ,TRUE); 935 configMenu->setItemEnabled(-23 ,TRUE);
932 936
933 if(cfg.readEntry("EditEnabled","FALSE")=="TRUE") { 937 if(cfg.readEntry("EditEnabled","FALSE")=="TRUE") {
934 configMenu->setItemChecked(-23,TRUE); 938 configMenu->setItemChecked(-23,TRUE);
935 commonCombo->setEditable( TRUE ); 939 commonCombo->setEditable( TRUE );
936 } else { 940 } else {
937 configMenu->setItemChecked(-23,FALSE); 941 configMenu->setItemChecked(-23,FALSE);
938 commonCombo->setEditable( FALSE ); 942 commonCombo->setEditable( FALSE );
939 } 943 }
940 } 944 }
941 } 945 }
942 if( iD == -23) { 946 if( iD == -23) {
943 cfg.setGroup("Commands"); 947 cfg.setGroup("Commands");
944// qDebug("enableCommandEdit"); 948// qDebug("enableCommandEdit");
945 if( !configMenu->isItemChecked(iD) ) { 949 if( !configMenu->isItemChecked(iD) ) {
946 commonCombo->setEditable( TRUE ); 950 commonCombo->setEditable( TRUE );
947 configMenu->setItemChecked(iD,TRUE); 951 configMenu->setItemChecked(iD,TRUE);
948 commonCombo->setCurrentItem(0); 952 commonCombo->setCurrentItem(0);
949 cfg.writeEntry("EditEnabled","TRUE"); 953 cfg.writeEntry("EditEnabled","TRUE");
950 } else { 954 } else {
951 commonCombo->setEditable( FALSE ); 955 commonCombo->setEditable( FALSE );
952 configMenu->setItemChecked(iD,FALSE); 956 configMenu->setItemChecked(iD,FALSE);
953 cfg.writeEntry("EditEnabled","FALSE"); 957 cfg.writeEntry("EditEnabled","FALSE");
954 commonCombo->setFocusPolicy(QWidget::NoFocus); 958 commonCombo->setFocusPolicy(QWidget::NoFocus);
955 te->setFocus(); 959 te->setFocus();
956 } 960 }
957 } 961 }
958 if(iD == -24) { 962 if(iD == -24) {
959 // "edit commands" 963 // "edit commands"
960 CommandEditDialog *m = new CommandEditDialog(this); 964 CommandEditDialog *m = new CommandEditDialog(this);
961 connect(m,SIGNAL(commandsEdited()),this,SLOT(initCommandList())); 965 connect(m,SIGNAL(commandsEdited()),this,SLOT(initCommandList()));
962 m->showMaximized(); 966 m->showMaximized();
963 } 967 }
964 968
965} 969}
966 970
967// $QPEDIR/bin/qcop QPE/Application/embeddedkonsole 'setDocument(QString)' 'ssh -V' 971// $QPEDIR/bin/qcop QPE/Application/embeddedkonsole 'setDocument(QString)' 'ssh -V'
968void Konsole::setDocument( const QString &cmd) { 972void Konsole::setDocument( const QString &cmd) {
969 newSession(); 973 newSession();
970 TEWidget* te = getTe(); 974 TEWidget* te = getTe();
971 if(cmd.find("-e", 0, TRUE) != -1) { 975 if(cmd.find("-e", 0, TRUE) != -1) {
972 QString cmd2; 976 QString cmd2;
973 cmd2=cmd.right(cmd.length()-3)+" &"; 977 cmd2=cmd.right(cmd.length()-3)+" &";
974 system(cmd2.latin1()); 978 system(cmd2.latin1());
975 if(startUp <= 1 && nsessions < 2) { 979 if(startUp <= 1 && nsessions < 2) {
976 doneSession(getTe()->currentSession, 0); 980 doneSession(getTe()->currentSession, 0);
977 exit(0); 981 exit(0);
978 } else 982 } else
979 doneSession(getTe()->currentSession, 0); 983 doneSession(getTe()->currentSession, 0);
980 } else { 984 } else {
981 if (te != 0) { 985 if (te != 0) {
982 te->emitText(cmd+"\r"); 986 te->emitText(cmd+"\r");
983 } 987 }
984 } 988 }
985 startUp++; 989 startUp++;
986} 990}
987 991
988void Konsole::parseCommandLine() { 992void Konsole::parseCommandLine() {
989 QString cmd; 993 QString cmd;
990 // newSession(); 994 // newSession();
991 for (int i=1;i< qApp->argc();i++) { 995 for (int i=1;i< qApp->argc();i++) {
992 if( QString(qApp->argv()[i]) == "-e") { 996 if( QString(qApp->argv()[i]) == "-e") {
993 i++; 997 i++;
994 for ( int j=i;j< qApp->argc();j++) { 998 for ( int j=i;j< qApp->argc();j++) {
995 cmd+=QString(qApp->argv()[j])+" "; 999 cmd+=QString(qApp->argv()[j])+" ";
996 } 1000 }
997 cmd.stripWhiteSpace(); 1001 cmd.stripWhiteSpace();
998 system(cmd.latin1()); 1002 system(cmd.latin1());
999 exit(0);//close(); 1003 exit(0);//close();
1000 } // end -e switch 1004 } // end -e switch
1001 } 1005 }
1002 startUp++; 1006 startUp++;
1003} 1007}
1004 1008
1005void Konsole::changeForegroundColor(const QColor &color) { 1009void Konsole::changeForegroundColor(const QColor &color) {
1006 Config cfg("Konsole"); 1010 Config cfg("Konsole");
1007 cfg.setGroup("Colors"); 1011 cfg.setGroup("Colors");
1008 int r, g, b; 1012 int r, g, b;
1009 color.rgb(&r,&g,&b); 1013 color.rgb(&r,&g,&b);
1010 foreground.setRgb(r,g,b); 1014 foreground.setRgb(r,g,b);
1011 1015
1012 cfg.writeEntry("foreground",color.name()); 1016 cfg.writeEntry("foreground",color.name());
1013 qDebug("foreground "+color.name()); 1017 qDebug("foreground "+color.name());
1014 cfg.write(); 1018 cfg.write();
1015 1019
1016qDebug("do other dialog"); 1020qDebug("do other dialog");
1017#ifdef QT_QWS_OPIE 1021#ifdef QT_QWS_OPIE
1018 1022
1019 ColorPopupMenu* penColorPopupMenu2 = new ColorPopupMenu(Qt::black, this,"background color"); 1023 ColorPopupMenu* penColorPopupMenu2 = new ColorPopupMenu(Qt::black, this,"background color");
1020 connect(penColorPopupMenu2, SIGNAL(colorSelected(const QColor&)), this, 1024 connect(penColorPopupMenu2, SIGNAL(colorSelected(const QColor&)), this,
1021 SLOT(changeBackgroundColor(const QColor&))); 1025 SLOT(changeBackgroundColor(const QColor&)));
1022 penColorPopupMenu2->exec(); 1026 penColorPopupMenu2->exec();
1023#endif 1027#endif
1024} 1028}
1025 1029
1026void Konsole::changeBackgroundColor(const QColor &color) { 1030void Konsole::changeBackgroundColor(const QColor &color) {
1027 1031
1028 qDebug("Change background"); 1032 qDebug("Change background");
1029 Config cfg("Konsole"); 1033 Config cfg("Konsole");
1030 cfg.setGroup("Colors"); 1034 cfg.setGroup("Colors");
1031 int r, g, b; 1035 int r, g, b;
1032 color.rgb(&r,&g,&b); 1036 color.rgb(&r,&g,&b);
1033 background.setRgb(r,g,b); 1037 background.setRgb(r,g,b);
1034 cfg.writeEntry("background",color.name()); 1038 cfg.writeEntry("background",color.name());
1035 qDebug("background "+color.name()); 1039 qDebug("background "+color.name());
1036 cfg.write(); 1040 cfg.write();
1037} 1041}
1038 1042
1039void Konsole::doWrap() { 1043void Konsole::doWrap() {
1040int i; 1044int i;
1041#ifdef QT_QWS_OPIE 1045#ifdef QT_QWS_OPIE
1042i=-29; 1046i=-29;
1043#else 1047#else
1044i=-28; 1048i=-28;
1045#endif 1049#endif
1046 1050
1047 Config cfg("Konsole"); 1051 Config cfg("Konsole");
1048 cfg.setGroup("ScrollBar"); 1052 cfg.setGroup("ScrollBar");
1049 TEWidget* te = getTe(); 1053 TEWidget* te = getTe();
1050 if( !cfg.readBoolEntry("HorzScroll",0)) { 1054 if( !cfg.readBoolEntry("HorzScroll",0)) {
1051 te->setWrapAt(0); 1055 te->setWrapAt(0);
1052 configMenu->setItemChecked( i,TRUE); 1056 configMenu->setItemChecked( i,TRUE);
1053 } else { 1057 } else {
1054// te->setWrapAt(90); 1058// te->setWrapAt(90);
1055 te->setWrapAt(120); 1059 te->setWrapAt(120);
1056 configMenu->setItemChecked( i,FALSE); 1060 configMenu->setItemChecked( i,FALSE);
1057 } 1061 }
1058} 1062}