summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/apps/embeddedkonsole/TECommon.h0
-rw-r--r--core/apps/embeddedkonsole/TEWidget.cpp12
-rw-r--r--core/apps/embeddedkonsole/TEWidget.h2
-rw-r--r--core/apps/embeddedkonsole/konsole.cpp322
-rw-r--r--core/apps/embeddedkonsole/konsole.h14
5 files changed, 305 insertions, 45 deletions
diff --git a/core/apps/embeddedkonsole/TECommon.h b/core/apps/embeddedkonsole/TECommon.h
index 261d51b..5db41ad 100644
--- a/core/apps/embeddedkonsole/TECommon.h
+++ b/core/apps/embeddedkonsole/TECommon.h
diff --git a/core/apps/embeddedkonsole/TEWidget.cpp b/core/apps/embeddedkonsole/TEWidget.cpp
index dc83998..f10bfb2 100644
--- a/core/apps/embeddedkonsole/TEWidget.cpp
+++ b/core/apps/embeddedkonsole/TEWidget.cpp
@@ -14,9 +14,8 @@
/* */
/* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */
/* */
/* -------------------------------------------------------------------------- */
-
/*! \class TEWidget
\brief Visible screen contents
@@ -114,9 +113,9 @@ static const ColorEntry base_color_table[TABLE_COLORS] =
// intensiv
ColorEntry(QColor(0x00,0x00,0x00), 0, 1 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 1, 0 ),
ColorEntry(QColor(0x68,0x68,0x68), 0, 0 ), ColorEntry( QColor(0xFF,0x54,0x54), 0, 0 ),
ColorEntry(QColor(0x54,0xFF,0x54), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0x54), 0, 0 ),
- ColorEntry(QColor(0x54,0x54,0xFF), 0, 0 ), ColorEntry( QColor(0xFF,0x54,0xFF), 0, 0 ),
+ ColorEntry(QColor(0x54,0x54,0xFF), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ),
ColorEntry(QColor(0x54,0xFF,0xFF), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 0, 0 )
};
/* Note that we use ANSI color order (bgr), while IBMPC color order is (rgb)
@@ -136,8 +135,14 @@ const ColorEntry* TEWidget::getColorTable() const
{
return color_table;
}
+const ColorEntry* TEWidget::getdefaultColorTable() const
+{
+ return base_color_table;
+}
+
+
const QPixmap *TEWidget::backgroundPixmap()
{
static QPixmap *bg = new QPixmap("~/qpim/main/pics/faded_bg.xpm");
const QPixmap *pm = bg;
@@ -253,10 +258,9 @@ void TEWidget::setVTFont(const QFont& f)
{
QFrame::setFont(f);
}
-QFont TEWidget::getVTFont()
-{
+QFont TEWidget::getVTFont() {
return font();
}
void TEWidget::setFont(const QFont &)
diff --git a/core/apps/embeddedkonsole/TEWidget.h b/core/apps/embeddedkonsole/TEWidget.h
index 3f9f4ae..40e1aea 100644
--- a/core/apps/embeddedkonsole/TEWidget.h
+++ b/core/apps/embeddedkonsole/TEWidget.h
@@ -14,9 +14,8 @@
/* */
/* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */
/* */
/* -------------------------------------------------------------------------- */
-
#ifndef TE_WIDGET_H
#define TE_WIDGET_H
#include <qwidget.h>
@@ -51,8 +50,9 @@ public:
QColor getDefaultBackColor();
const ColorEntry* getColorTable() const;
+ const ColorEntry* getdefaultColorTable() const;
void setColorTable(const ColorEntry table[]);
void setScrollbarLocation(int loc);
enum { SCRNONE=0, SCRLEFT=1, SCRRIGHT=2 };
diff --git a/core/apps/embeddedkonsole/konsole.cpp b/core/apps/embeddedkonsole/konsole.cpp
index 7253baf..1102ef3 100644
--- a/core/apps/embeddedkonsole/konsole.cpp
+++ b/core/apps/embeddedkonsole/konsole.cpp
@@ -40,8 +40,10 @@
#include <qevent.h>
#include <qtabwidget.h>
#include <qtabbar.h>
#include <qpe/config.h>
+#include <qstringlist.h>
+#include <qpalette.h>
#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>
@@ -98,41 +100,36 @@ public:
// This could be configurable or dynamicly generated from the bash history
// file of the user
static const char *commonCmds[] =
{
- "ls ",
- //"ls -la ",
+ "ls ", // I left this here, cause it looks better than the first alpha
+ "cardctl eject",
+ "cat ",
"cd ",
- "pwd",
- //"cat",
- //"less ",
- //"vi ",
- //"man ",
+ "chmod ",
+ "cp ",
+ "dc ",
+ "df ",
+ "dmesg",
"echo ",
- "set ",
- //"ps",
- "ps aux",
- //"tar",
- //"tar -zxf",
+ "find ",
+ "free",
"grep ",
- //"grep -i",
- //"mkdir",
- "cp ",
+ "ifconfig ",
+ "ipkg ",
+ "mkdir ",
"mv ",
+ "nc localhost 7776",
+ "nc localhost 7777",
+ "nslookup ",
+ "ping ",
+ "ps aux",
+ "pwd ",
"rm ",
"rmdir ",
- //"chmod",
- //"su",
-// "top",
- //"find",
- //"make",
- //"tail",
- "cardctl eject",
- "ifconfig ",
-// "iwconfig eth0 ",
- "nc localhost 7777",
- "nc localhost 7776",
- //"mount /dev/hda1",
+ "route ",
+ "set ",
+ "traceroute",
/*
"gzip",
"gunzip",
@@ -185,9 +182,9 @@ void Konsole::init(const char* _pgm, QStrList & _args)
setIcon( Resource::loadPixmap( "konsole" ) );
Config cfg("Konsole");
cfg.setGroup("Konsole");
-
+ QString tmp;
// initialize the list of allowed fonts ///////////////////////////////////
cfont = cfg.readNumEntry("FontID", 1);
QFont f = QFont("Micro", 4, QFont::Normal);
f.setFixedPitch(TRUE);
@@ -202,10 +199,11 @@ void Konsole::init(const char* _pgm, QStrList & _args)
fonts.append(new VTFont(tr("Medium Fixed"), f));
// create terminal emulation framework ////////////////////////////////////
nsessions = 0;
+
tab = new EKNumTabWidget(this);
- tab->setTabPosition(QTabWidget::Bottom);
+
connect(tab, SIGNAL(currentChanged(QWidget*)), this, SLOT(switchSession(QWidget*)));
// create terminal toolbar ////////////////////////////////////////////////
setToolBarsMovable( FALSE );
@@ -220,11 +218,52 @@ void Konsole::init(const char* _pgm, QStrList & _args)
fontList->insertItem(fnt->getName(), i);
}
fontChanged(cfont);
+ configMenu = new QPopupMenu( this);
+ colorMenu = new QPopupMenu( this);
+
+ bool listHidden;
+ cfg.setGroup("Menubar");
+ if( cfg.readEntry("Hidden","FALSE") == "TRUE") {
+ configMenu->insertItem("Show command list");
+ listHidden=TRUE;
+ } else {
+ configMenu->insertItem("Hide command list");
+ listHidden=FALSE;
+ }
+
+ cfg.setGroup("Tabs");
+ tmp=cfg.readEntry("Position","Bottom");
+ if(tmp=="Top") {
+ tab->setTabPosition(QTabWidget::Top);
+ configMenu->insertItem("Tabs on Bottom");
+ } else {
+ tab->setTabPosition(QTabWidget::Bottom);
+ configMenu->insertItem("Tabs on Top");
+ }
+ configMenu->insertSeparator(2);
+
+ colorMenu->insertItem("Green on Black");
+ colorMenu->insertItem("Black on White");
+ colorMenu->insertItem("White on Black");
+ colorMenu->insertItem("Black on Transparent");
+ colorMenu->insertItem("Black on Red");
+ colorMenu->insertItem("Red on Black");
+ colorMenu->insertItem("Green on Yellow");
+ colorMenu->insertItem("Blue on Magenta");
+ colorMenu->insertItem("Magenta on Blue");
+ colorMenu->insertItem("Cyan on White");
+ colorMenu->insertItem("White on Cyan");
+ colorMenu->insertItem("Blue on Black");
+ configMenu->insertItem("Colors",colorMenu);
+
connect( fontList, SIGNAL( activated(int) ), this, SLOT( fontChanged(int) ));
+ connect( configMenu, SIGNAL( activated(int) ), this, SLOT( configMenuSelected(int) ));
+ connect( colorMenu, SIGNAL( activated(int) ), this, SLOT( colorMenuSelected(int) ));
menuBar->insertItem( tr("Font"), fontList );
+ menuBar->insertItem( tr("Options"), configMenu );
QPEToolBar *toolbar = new QPEToolBar( this );
QAction *a;
@@ -250,15 +289,27 @@ void Konsole::init(const char* _pgm, QStrList & _args)
a = new QAction( tr("Down"), Resource::loadPixmap( "down" ), QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( hitDown() ) ); a->addTo( toolbar );
*/
- QPEToolBar *secondToolBar = new QPEToolBar( this );
+ secondToolBar = new QPEToolBar( this );
secondToolBar->setHorizontalStretchable( TRUE );
- QComboBox *commonCombo = new QComboBox( secondToolBar );
-// commonCombo->setEditable( TRUE );
- for (int i = 0; commonCmds[i] != NULL; i++)
+ commonCombo = new QComboBox( secondToolBar );
+
+ if( listHidden)
+ secondToolBar->hide();
+ configMenu->insertItem( "Edit Command List");
+
+ cfg.setGroup("Commands");
+ commonCombo->setInsertionPolicy(QComboBox::AtCurrent);
+
+ for (int i = 0; commonCmds[i] != NULL; i++) {
commonCombo->insertItem( commonCmds[i], i );
+ tmp = cfg.readEntry( QString::number(i),"");
+ if(tmp != "")
+ commonCombo->changeItem( tmp,i );
+ }
+
connect( commonCombo, SIGNAL( activated(int) ), this, SLOT( enterCommand(int) ));
// create applications /////////////////////////////////////////////////////
setCentralWidget(tab);
@@ -277,8 +328,9 @@ void Konsole::init(const char* _pgm, QStrList & _args)
resize(321, 321); // Dummy.
QSize currentSize = size();
if (currentSize != size())
defaultSize = size();
+
}
void Konsole::show()
{
@@ -320,14 +372,19 @@ void Konsole::fontChanged(int f)
}
}
}
+
void Konsole::enterCommand(int c)
{
TEWidget* te = getTe();
if (te != 0) {
- QString text = commonCmds[c];
+ if(!commonCombo->editable()) {
+ QString text = commonCombo->text(c); //commonCmds[c];
te->emitText(text);
+ } else {
+ changeCommand( commonCombo->text(c), c);
+ }
}
}
void Konsole::hitEnter()
@@ -472,12 +529,12 @@ void Konsole::doneSession(TESession*, int )
close();
}
}
-
void Konsole::newSession() {
+ if(nsessions < 15) { // seems to be something weird about 16 tabs on the Zaurus.... memory?
TEWidget* te = new TEWidget(tab);
- te->setBackgroundMode(PaletteBase);
+// te->setBackgroundMode(PaletteBase); //we want transparent!!
te->setVTFont(fonts.at(cfont)->getFont());
tab->addTab(te);
TESession* se = new TESession(this, te, se_pgm, se_args, "xterm");
te->currentSession = se;
@@ -486,8 +543,10 @@ void Konsole::newSession() {
se->setConnect(TRUE);
se->setHistory(b_scroll);
tab->setCurrentPage(nsessions);
nsessions++;
+ setColor();
+ }
}
TEWidget* Konsole::getTe() {
if (nsessions) {
@@ -509,4 +568,195 @@ void Konsole::switchSession(QWidget* w) {
cfont = i;
}
}
}
+
+/// ------------------------------- some new stuff by L.J. Potter
+void Konsole::colorMenuSelected(int iD)
+{ // this is NOT pretty, elegant or anything else besides functional
+// QString temp;
+// temp.sprintf("%d", iD);
+// qDebug(temp);
+ TEWidget* te = getTe();
+ Config cfg("Konsole");
+ cfg.setGroup("Colors");
+ QColor foreground;
+ QColor background;
+ colorMenu->setItemChecked(lastSelectedMenu,FALSE);
+ ColorEntry m_table[TABLE_COLORS];
+ const ColorEntry * defaultCt=te->getdefaultColorTable();
+ /////////// fore back
+ int i;
+ if(iD==-8) { // default default
+ for (i = 0; i < TABLE_COLORS; i++) {
+ m_table[i].color = defaultCt[i].color;
+ if(i==1 || i == 11)
+ m_table[i].transparent=1;
+ cfg.writeEntry("Schema","8");
+ colorMenu->setItemChecked(-8,TRUE);
+ }
+ } else {
+ if(iD==-5) { // green black
+ foreground.setRgb(0x18,255,0x18);
+ background.setRgb(0x00,0x00,0x00);
+ cfg.writeEntry("Schema","5");
+ colorMenu->setItemChecked(-5,TRUE);
+ }
+ if(iD==-6) { // black white
+ foreground.setRgb(0x00,0x00,0x00);
+ background.setRgb(0xFF,0xFF,0xFF);
+ cfg.writeEntry("Schema","6");
+ colorMenu->setItemChecked(-6,TRUE);
+ }
+ if(iD==-7) { // white black
+ foreground.setRgb(0xFF,0xFF,0xFF);
+ background.setRgb(0x00,0x00,0x00);
+ cfg.writeEntry("Schema","7");
+ colorMenu->setItemChecked(-7,TRUE);
+ }
+ if(iD==-9) {// Black, Red
+ foreground.setRgb(0x00,0x00,0x00);
+ background.setRgb(0xB2,0x18,0x18);
+ cfg.writeEntry("Schema","9");
+ colorMenu->setItemChecked(-9,TRUE);
+ }
+ if(iD==-10) {// Red, Black
+ foreground.setRgb(230,31,31); //0xB2,0x18,0x18
+ background.setRgb(0x00,0x00,0x00);
+ cfg.writeEntry("Schema","10");
+ colorMenu->setItemChecked(-10,TRUE);
+ }
+ if(iD==-11) {// Green, Yellow - is ugly
+// foreground.setRgb(0x18,0xB2,0x18);
+ foreground.setRgb(36,139,10);
+// background.setRgb(0xB2,0x68,0x18);
+ background.setRgb(255,255,0);
+ cfg.writeEntry("Schema","11");
+ colorMenu->setItemChecked(-11,TRUE);
+ }
+ if(iD==-12) {// Blue, Magenta
+ foreground.setRgb(0x18,0xB2,0xB2);
+ background.setRgb(0x18,0x18,0xB2);
+ cfg.writeEntry("Schema","12");
+ colorMenu->setItemChecked(-12,TRUE);
+ }
+ if(iD==-13) {// Magenta, Blue
+ foreground.setRgb(0x18,0x18,0xB2);
+ background.setRgb(0x18,0xB2,0xB2);
+ cfg.writeEntry("Schema","13");
+ colorMenu->setItemChecked(-13,TRUE);
+ }
+ if(iD==-14) {// Cyan, White
+ foreground.setRgb(0x18,0xB2,0xB2);
+ background.setRgb(0xFF,0xFF,0xFF);
+ cfg.writeEntry("Schema","14");
+ colorMenu->setItemChecked(-14,TRUE);
+ }
+ if(iD==-15) {// White, Cyan
+ background.setRgb(0x18,0xB2,0xB2);
+ foreground.setRgb(0xFF,0xFF,0xFF);
+ cfg.writeEntry("Schema","15");
+ colorMenu->setItemChecked(-15,TRUE);
+ }
+ if(iD==-16) {// Black, Blue
+ background.setRgb(0x00,0x00,0x00);
+ foreground.setRgb(0x18,0xB2,0xB2);
+ cfg.writeEntry("Schema","16");
+ colorMenu->setItemChecked(-16,TRUE);
+ }
+
+ for (i = 0; i < TABLE_COLORS; i++) {
+ if(i==0 || i == 10) {
+ m_table[i].color = foreground;
+ }
+ else if(i==1 || i == 11) {
+ m_table[i].color = background; m_table[i].transparent=0;
+ }
+ else
+ m_table[i].color = defaultCt[i].color;
+ }
+ }
+ lastSelectedMenu = iD;
+ te->setColorTable(m_table);
+// update();
+}
+
+void Konsole::configMenuSelected(int iD)
+{
+// QString temp;
+// temp.sprintf("%d",iD);
+// qDebug(temp);
+ TEWidget* te = getTe();
+ Config cfg("Konsole");
+ cfg.setGroup("Menubar");
+ if( iD == -2) {
+ if(!secondToolBar->isHidden()) {
+ secondToolBar->hide();
+ configMenu->changeItem( iD,"Show Command List");
+ cfg.writeEntry("Hidden","TRUE");
+ configMenu->setItemEnabled(-20 ,FALSE);
+ } else {
+ secondToolBar->show();
+ configMenu->changeItem( iD,"Hide Command List");
+ cfg.writeEntry("Hidden","FALSE");
+ configMenu->setItemEnabled(-20 ,TRUE);
+
+ if(cfg.readEntry("EditEnabled","FALSE")=="TRUE") {
+ configMenu->setItemChecked(-16,TRUE);
+ commonCombo->setEditable( TRUE );
+ } else {
+ configMenu->setItemChecked(-20,FALSE);
+ commonCombo->setEditable( FALSE );
+ }
+ }
+ }
+ if( iD == -3) {
+ cfg.setGroup("Tabs");
+ QString tmp=cfg.readEntry("Position","Top");
+
+ if(tmp=="Top") {
+ tab->setTabPosition(QTabWidget::Bottom);
+ configMenu->changeItem( iD,"Tabs on Top");
+ cfg.writeEntry("Position","Bottom");
+ } else {
+ tab->setTabPosition(QTabWidget::Top);
+ configMenu->changeItem( iD,"Tabs on Bottom");
+ cfg.writeEntry("Position","Top");
+ }
+ }
+ if( iD == -20) {
+ cfg.setGroup("Commands");
+// qDebug("enableCommandEdit");
+ if( !configMenu->isItemChecked(iD) ) {
+ commonCombo->setEditable( TRUE );
+ configMenu->setItemChecked(iD,TRUE);
+ commonCombo->setCurrentItem(0);
+ cfg.writeEntry("EditEnabled","TRUE");
+ } else {
+ commonCombo->setEditable( FALSE );
+ configMenu->setItemChecked(iD,FALSE);
+ cfg.writeEntry("EditEnabled","FALSE");
+ commonCombo->setFocusPolicy(QWidget::NoFocus);
+ te->setFocus();
+ }
+ }
+}
+
+void Konsole::changeCommand(const QString &text, int c)
+{
+ Config cfg("Konsole");
+ cfg.setGroup("Commands");
+ if(commonCmds[c] != text) {
+ cfg.writeEntry(QString::number(c),text);
+ commonCombo->clearEdit();
+ commonCombo->setCurrentItem(c);
+ }
+}
+
+void Konsole::setColor()
+{
+ Config cfg("Konsole");
+ cfg.setGroup("Colors");
+ int scheme = cfg.readNumEntry("Schema",1);
+ if(scheme != 1) colorMenuSelected( -scheme);
+
+}
diff --git a/core/apps/embeddedkonsole/konsole.h b/core/apps/embeddedkonsole/konsole.h
index 819ea5d..40003d4 100644
--- a/core/apps/embeddedkonsole/konsole.h
+++ b/core/apps/embeddedkonsole/konsole.h
@@ -29,8 +29,10 @@
#include <qstrlist.h>
#include <qintdict.h>
#include <qptrdict.h>
#include <qtabwidget.h>
+#include <qpe/qpetoolbar.h>
+#include <qcombobox.h>
#include "MyPty.h"
#include "TEWidget.h"
#include "TEmuVt102.h"
@@ -47,15 +49,18 @@ public:
Konsole(QWidget* parent = 0, const char* name = 0, WFlags fl = 0);
Konsole(const char * name, const char* pgm, QStrList & _args, int histon);
~Konsole();
void setColLin(int columns, int lines);
-
+ QPEToolBar *secondToolBar;
void show();
-
+ void setColor();
+ int lastSelectedMenu;
private slots:
void doneSession(TESession*,int);
void changeColumns(int);
void fontChanged(int);
+ void configMenuSelected(int );
+ void colorMenuSelected(int);
void enterCommand(int);
void hitEnter();
void hitSpace();
void hitTab();
@@ -63,8 +68,9 @@ private slots:
void hitUp();
void hitDown();
void switchSession(QWidget *);
void newSession();
+ void changeCommand(const QString &, int);
private:
void init(const char* _pgm, QStrList & _args);
void initSession(const char* _pgm, QStrList & _args);
@@ -105,10 +111,10 @@ private:
int cfont;
QCString se_pgm;
QStrList se_args;
- QPopupMenu* fontList;
-
+ QPopupMenu* fontList,*configMenu,*colorMenu;
+ QComboBox *commonCombo;
// history scrolling I think
bool b_scroll;
int n_keytab;