diff options
| author | 2008-05-10 09:53:11 +0000 | |
|---|---|---|
| committer | 2008-05-10 09:53:11 +0000 | |
| commit | 5fc375f435c2b9c20a8f474cb33e7fd1e83fdfab (patch) | |
| tree | 6242117819457b6191ee9f64e712bfbcbeab8347 | |
| parent | more addon work (diff) | |
| download | KVIrc-5fc375f435c2b9c20a8f474cb33e7fd1e83fdfab.tar.gz KVIrc-5fc375f435c2b9c20a8f474cb33e7fd1e83fdfab.tar.bz2 KVIrc-5fc375f435c2b9c20a8f474cb33e7fd1e83fdfab.zip | |
ported kvs_process class in object module;
processmanager: use utf8 for process communication
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@1729 17fca916-40b9-46aa-a4ea-0a15b648b75c
| -rw-r--r-- | src/kvirc/kvs/kvi_kvs_processmanager.cpp | 5 | ||||
| -rw-r--r-- | src/modules/objects/class_process.cpp | 39 | ||||
| -rw-r--r-- | src/modules/objects/class_process.h | 10 |
3 files changed, 29 insertions, 25 deletions
diff --git a/src/kvirc/kvs/kvi_kvs_processmanager.cpp b/src/kvirc/kvs/kvi_kvs_processmanager.cpp index f12e75c2b..22d46c1fc 100644 --- a/src/kvirc/kvs/kvi_kvs_processmanager.cpp +++ b/src/kvirc/kvs/kvi_kvs_processmanager.cpp @@ -111,10 +111,9 @@ bool KviKvsProcessAsyncOperation::start() if(m_pData->iFlags & KVI_KVS_PROCESSDESCRIPTOR_TRIGGERSTARTED) { - qDebug("CONNESSO STARTED\n"); connect(m_pProcess,SIGNAL(started()),this,SLOT(processStarted())); } - + szcmd = args.takeFirst(); m_pProcess->start(szcmd, args); @@ -223,7 +222,7 @@ bool KviKvsProcessAsyncOperation::trigger(CallbackEvent e,const QString &szData) { QString sz; retVal.asString(sz); - m_pProcess->write(sz.toAscii()); + m_pProcess->write(sz.toUtf8().data()); } if(iRet & KviKvsScript::HaltEncountered) diff --git a/src/modules/objects/class_process.cpp b/src/modules/objects/class_process.cpp index 0de09750c..b9716f422 100644 --- a/src/modules/objects/class_process.cpp +++ b/src/modules/objects/class_process.cpp @@ -25,9 +25,7 @@ #include "kvi_debug.h" #include "kvi_settings.h" #include "kvi_locale.h" -#include <qtimer.h> -#include <q3process.h> - +#include "kvi_process.h" /* @doc: process @@ -181,9 +179,9 @@ KVSO_BEGIN_REGISTERCLASS(KviKvsObject_process,"process","object") KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_process,KviKvsObject) - m_pProcess = new Q3Process(); - connect(m_pProcess,SIGNAL(readyReadStdout()),this,SLOT(slotReadStdout())); - connect(m_pProcess,SIGNAL(readyReadStderr()),this,SLOT(slotReadStderr())); + m_pProcess = new KviProcess(); + connect(m_pProcess,SIGNAL(readyReadStandardOutput()),this,SLOT(slotReadStdout())); + connect(m_pProcess,SIGNAL(readyReadStandardError()),this,SLOT(slotReadStderr())); KVSO_END_CONSTRUCTOR(KviKvsObject_process) @@ -202,22 +200,28 @@ bool KviKvsObject_process::functionaddArgument(KviKvsObjectFunctionCall *c) KVSO_PARAMETERS_BEGIN(c) KVSO_PARAMETER("argument",KVS_PT_NONEMPTYSTRING,0,szArgument) KVSO_PARAMETERS_END(c) - if (m_pProcess) m_pProcess->addArgument(szArgument); + args.append(szArgument); return true; } //->Start the process. bool KviKvsObject_process::functionstartProcess(KviKvsObjectFunctionCall *c) { + QString szcmd; + + szcmd = args.takeFirst(); + m_pProcess->start(szcmd, args); - if(!(m_pProcess->start())) - c->warning( __tr2qs("Process could not be starded.")); + if(m_pProcess->state()==KviProcess::NotRunning) + { + c->warning( __tr2qs("Process could not be starded.")); + } return true; } //-->Read the standard output. bool KviKvsObject_process::functionreadStderr(KviKvsObjectFunctionCall *c) { - QString ng_Process =m_pProcess->readStderr(); + QString ng_Process = m_pProcess->readAllStandardError(); c->returnValue()->setString(ng_Process); return true; } @@ -225,7 +229,7 @@ bool KviKvsObject_process::functionreadStderr(KviKvsObjectFunctionCall *c) //-->Read the standard error. bool KviKvsObject_process::functionreadStdout(KviKvsObjectFunctionCall *c) { - QString ng_Process =m_pProcess->readStdout(); + QString ng_Process =m_pProcess->readAllStandardOutput(); c->returnValue()->setString(ng_Process); return true; } @@ -252,15 +256,14 @@ bool KviKvsObject_process::functionwriteToStdin(KviKvsObjectFunctionCall *c) KVSO_PARAMETERS_BEGIN(c) KVSO_PARAMETER("command",KVS_PT_STRING,0,szCommand) KVSO_PARAMETERS_END(c) - if (m_pProcess) m_pProcess->writeToStdin(szCommand); - + if (m_pProcess) m_pProcess->write(szCommand.toUtf8().data()); return true; } //-->The 3 Closing process functions bool KviKvsObject_process::functionclosekill(KviKvsObjectFunctionCall *c) { //I try to to terminate the process the nice way.... - m_pProcess->tryTerminate(); + m_pProcess->terminate(); //If the process is still running after 5 seconds, I'll terminate the process in the hard way. QTimer::singleShot( 5000, m_pProcess, SLOT( kill() ) ); return true; @@ -272,26 +275,26 @@ bool KviKvsObject_process::functionkill(KviKvsObjectFunctionCall *c) } bool KviKvsObject_process::functiontryTerminate(KviKvsObjectFunctionCall *c) { - m_pProcess->tryTerminate(); + m_pProcess->terminate(); return true; } //-->Close the standard input. bool KviKvsObject_process::functioncloseStdin(KviKvsObjectFunctionCall *c) { - m_pProcess->closeStdin(); + m_pProcess->closeReadChannel(KviProcess::StandardOutput); return true; } //->Returns if the process still runnig bool KviKvsObject_process::functionisRunning(KviKvsObjectFunctionCall *c) { - c->returnValue()->setBoolean(m_pProcess->isRunning()); + c->returnValue()->setBoolean(m_pProcess->state()==KviProcess::Running); return true; } //->Returns if the process exited. bool KviKvsObject_process::functionnormalExit(KviKvsObjectFunctionCall *c) { - c->returnValue()->setBoolean(m_pProcess->normalExit()); + c->returnValue()->setBoolean(m_pProcess->state()==KviProcess::NotRunning && m_pProcess->exitStatus()==KviProcess::NormalExit); return true; } diff --git a/src/modules/objects/class_process.h b/src/modules/objects/class_process.h index 09a584adb..06f427e7e 100644 --- a/src/modules/objects/class_process.h +++ b/src/modules/objects/class_process.h @@ -2,7 +2,7 @@ #define _CLASS_PROCESS_H_ //mdm: // File : class_process.h -// Creation date : Thu Feb 1 14:39:48 CEST 2005 +// Creation date : Thu Feb 1 14:39:48 CEST 2005 // by Tonino Imbesi(Grifisx) and Alessandro Carbone(Noldor) // // This file is part of the KVirc irc client distribution @@ -23,12 +23,12 @@ // Inc. ,59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -#include <qtimer.h> +#include <QTimer> #include "class_widget.h" #include "object_macros.h" -#include <q3process.h> +#include "kvi_process.h" class KviKvsObject_process : public KviKvsObject @@ -37,7 +37,9 @@ class KviKvsObject_process : public KviKvsObject public: KVSO_DECLARE_OBJECT(KviKvsObject_process) protected: - Q3Process * m_pProcess; + KviProcess * m_pProcess; +private: + QStringList args; public: bool functionaddArgument(KviKvsObjectFunctionCall *c); |
