summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2002-04-05 13:17:19 (UTC)
committer llornkcor <llornkcor>2002-04-05 13:17:19 (UTC)
commit1896c5fa43e465567595feb442013d75c476f090 (patch) (side-by-side diff)
treee8ea13fd45277f0b8d7af52f4938f411fd9ed4af
parentdd5bc1f9d61cdd8cfde4c7a7fbba3b53b77b2670 (diff)
downloadopie-1896c5fa43e465567595feb442013d75c476f090.zip
opie-1896c5fa43e465567595feb442013d75c476f090.tar.gz
opie-1896c5fa43e465567595feb442013d75c476f090.tar.bz2
Folded in changes I forgot about. Added -e argument to execute a command and leave the konsole,
and also setDocument to exec command in new session if open. so a command run like $OPIEDIR/bin/qcop QPE/Application/embeddedkonsole 'setDocument(QString)' 'ssh -V' will run that command in a new session (tab). So now scripts can be run from an icon, and such.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/apps/embeddedkonsole/konsole.cpp45
-rw-r--r--core/apps/embeddedkonsole/konsole.h3
2 files changed, 45 insertions, 3 deletions
diff --git a/core/apps/embeddedkonsole/konsole.cpp b/core/apps/embeddedkonsole/konsole.cpp
index 217d8d8..16ff4df 100644
--- a/core/apps/embeddedkonsole/konsole.cpp
+++ b/core/apps/embeddedkonsole/konsole.cpp
@@ -17,8 +17,9 @@
/* */
/* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */
/* */
/* -------------------------------------------------------------------------- */
+// enhancements added by L.J. Potter <ljp@llornkcor.com>
#include <qpe/resource.h>
#include <qdir.h>
@@ -200,9 +201,9 @@ void Konsole::init(const char* _pgm, QStrList & _args)
{
b_scroll = TRUE; // histon;
n_keytab = 0;
n_render = 0;
-
+ startUp=0;
setCaption( tr("Terminal") );
setIcon( Resource::loadPixmap( "konsole" ) );
Config cfg("Konsole");
@@ -363,14 +364,14 @@ void Konsole::init(const char* _pgm, QStrList & _args)
se_pgm = _pgm;
se_args = _args;
+parseCommandLine();
// read and apply default values ///////////////////////////////////////////
resize(321, 321); // Dummy.
QSize currentSize = size();
if (currentSize != size())
defaultSize = size();
-
}
void Konsole::show()
{
@@ -388,9 +389,9 @@ void Konsole::initSession(const char*, QStrList &)
Konsole::~Konsole()
{
while (nsessions > 0) {
doneSession(getTe()->currentSession, 0);
- }
+ }
Config cfg("Konsole");
cfg.setGroup("Konsole");
cfg.writeEntry("FontID", cfont);
@@ -842,4 +843,42 @@ void Konsole::editCommandListMenuSelected(int iD)
m->showMaximized();
}
}
+
+// $QPEDIR/bin/qcop QPE/Application/embeddedkonsole 'setDocument(QString)' 'ssh -V'
+void Konsole::setDocument( const QString &cmd) {
+ newSession();
+ TEWidget* te = getTe();
+ if(cmd.find("-e", 0, TRUE) != -1) {
+ QString cmd2;
+ cmd2=cmd.right(cmd.length()-3)+" &";
+ system(cmd2.latin1());
+ if(startUp <= 1 && nsessions < 2) {
+ doneSession(getTe()->currentSession, 0);
+ exit(0);
+ } else
+ doneSession(getTe()->currentSession, 0);
+ } else {
+ if (te != 0) {
+ te->emitText(cmd+"\r");
+ }
+ }
+ startUp++;
+}
+
+void Konsole::parseCommandLine() {
+ QString cmd;
+ // newSession();
+ for (int i=1;i< qApp->argc();i++) {
+ if( QString(qApp->argv()[i]) == "-e") {
+ i++;
+ for ( int j=i;j< qApp->argc();j++) {
+ cmd+=QString(qApp->argv()[j])+" ";
+ }
+ cmd.stripWhiteSpace();
+ system(cmd.latin1());
+ exit(0);//close();
+ } // end -e switch
+ }
+ startUp++;
+}
diff --git a/core/apps/embeddedkonsole/konsole.h b/core/apps/embeddedkonsole/konsole.h
index b508cf8..40edaec 100644
--- a/core/apps/embeddedkonsole/konsole.h
+++ b/core/apps/embeddedkonsole/konsole.h
@@ -53,9 +53,11 @@ public:
QPEToolBar *secondToolBar;
void show();
void setColor();
int lastSelectedMenu;
+ int startUp;
private slots:
+ void setDocument(const QString &);
void doneSession(TESession*,int);
void changeColumns(int);
void fontChanged(int);
void configMenuSelected(int );
@@ -72,8 +74,9 @@ private slots:
void changeCommand(const QString &, int);
void initCommandList();
void scrollMenuSelected(int);
void editCommandListMenuSelected(int);
+ void parseCommandLine();
private:
void init(const char* _pgm, QStrList & _args);
void initSession(const char* _pgm, QStrList & _args);
void runSession(TESession* s);