aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Fabio Bas2008-05-10 09:53:11 +0000
committerGravatar Fabio Bas2008-05-10 09:53:11 +0000
commit5fc375f435c2b9c20a8f474cb33e7fd1e83fdfab (patch)
tree6242117819457b6191ee9f64e712bfbcbeab8347
parentmore addon work (diff)
downloadKVIrc-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.cpp5
-rw-r--r--src/modules/objects/class_process.cpp39
-rw-r--r--src/modules/objects/class_process.h10
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);