Browse Source

Started reworking the cmd line future implementation.

Sascha Zelzer 13 years ago
parent
commit
227e417934

+ 5 - 4
Applications/ctkCommandLineModuleExplorer/ctkCLModuleExplorerMainWindow.cpp

@@ -26,8 +26,9 @@
 #include <ctkCmdLineModuleManager.h>
 #include <ctkCmdLineModuleInstance.h>
 #include <ctkCmdLineModuleInstanceFactoryQtGui.h>
-#include <ctkCmdLineModuleProcessFuture.h>
+//#include <ctkCmdLineModuleFuture.h>
 
+#include <QDebug>
 
 ctkCLModuleExplorerMainWindow::ctkCLModuleExplorerMainWindow(QWidget *parent) :
   QMainWindow(parent),
@@ -77,7 +78,7 @@ void ctkCLModuleExplorerMainWindow::on_actionRun_triggered()
     return;
   }
 
-  ctkCmdLineModuleProcessFuture future = moduleInstance->run();
+  //ctkCmdLineModuleProcessFuture future = moduleInstance->run();
   //future.waitForFinished();
   //qDebug() << future.standardOutput();
 
@@ -89,8 +90,8 @@ void ctkCLModuleExplorerMainWindow::on_actionRun_triggered()
 void ctkCLModuleExplorerMainWindow::futureFinished()
 {
   qDebug() << "*** Future finished";
-  qDebug() << "stdout:" << futureWatcher.future().standardOutput();
-  qDebug() << "stderr:" << futureWatcher.future().standardError();
+  //qDebug() << "stdout:" << futureWatcher.future().standardOutput();
+  //qDebug() << "stderr:" << futureWatcher.future().standardError();
 }
 
 //ctkCmdLineModuleReference ctkCLModuleExplorerMainWindow::moduleReference(int tabIndex)

+ 2 - 2
Applications/ctkCommandLineModuleExplorer/ctkCLModuleExplorerMainWindow.h

@@ -24,7 +24,7 @@
 
 #include <ctkCmdLineModuleManager.h>
 #include <ctkCmdLineModuleReference.h>
-#include <ctkCmdLineModuleProcessFuture.h>
+//#include <ctkCmdLineModuleFuture.h>
 
 #include <QMainWindow>
 #include <QHash>
@@ -65,7 +65,7 @@ private:
 
   QHash<int, ctkCmdLineModuleInstance*> mapTabToModuleRef;
 
-  ctkCmdLineModuleProcessFutureWatcher futureWatcher;
+  //ctkCmdLineModuleProcessFutureWatcher futureWatcher;
 };
 
 #endif // CTKCLIPLUGINEXPLORERMAINWINDOW_H

+ 3 - 0
Applications/ctkCommandLineModuleExplorer/ctkCommandLineModuleExplorerMain.cpp

@@ -25,6 +25,9 @@
 #include <QFile>
 #include <QBuffer>
 #include <QWidget>
+#include <QProcess>
+
+#include <QDebug>
 
 #include <QtXmlPatterns/QXmlQuery>
 #include <QtUiTools/QUiLoader>

+ 5 - 5
Libs/CommandLineModules/Core/CMakeLists.txt

@@ -16,6 +16,8 @@ set(KIT_export_directive "CTK_CMDLINEMODULECORE_EXPORT")
 set(KIT_SRCS
   ctkCmdLineModuleDescription.cpp
   ctkCmdLineModuleDescriptionPrivate.h
+  ctkCmdLineModuleFuture.h
+  #ctkCmdLineModuleFuture.cpp
   ctkCmdLineModuleInstance.cpp
   ctkCmdLineModuleInstanceFactory.cpp
   ctkCmdLineModuleManager.cpp
@@ -25,10 +27,8 @@ set(KIT_SRCS
   ctkCmdLineModuleParameterGroup.cpp
   ctkCmdLineModuleParameterGroupPrivate.h
   ctkCmdLineModuleParameterParsers_p.h
-  ctkCmdLineModuleProcessException.cpp
-  ctkCmdLineModuleProcessFuture.cpp
-  ctkCmdLineModuleProcessRunner.cpp
-  ctkCmdLineModuleProcessRunner_p.h
+  #ctkCmdLineModuleProcess.cpp
+  ctkCmdLineModuleProcess_p.h
   ctkCmdLineModuleReference.cpp
   ctkCmdLineModuleReferencePrivate.cpp
   ctkCmdLineModuleXmlException.cpp
@@ -43,7 +43,7 @@ set(KIT_SRCS
 # Headers that should run through moc
 set(KIT_MOC_SRCS
   ctkCmdLineModuleInstance.h
-  ctkCmdLineModuleProcessRunner_p.h
+  #ctkCmdLineModuleProcess_p.h
 )
 
 # UI files

+ 21 - 21
Libs/CommandLineModules/Core/ctkCmdLineModuleProcessFuture.cpp

@@ -19,11 +19,11 @@
   
 =============================================================================*/
 
-#include "ctkCmdLineModuleProcessFuture.h"
+#include "ctkCmdLineModuleFuture.h"
 
-struct ctkCmdLineModuleProcessFutureInterfacePrivate
+struct ctkCmdLineModuleFutureInterfacePrivate
 {
-  ctkCmdLineModuleProcessFutureInterfacePrivate()
+  ctkCmdLineModuleFutureInterfacePrivate()
     : refCount(1), _exitCode(0), _exitStatus(QProcess::NormalExit),
       _processError(QProcess::UnknownError)
   {}
@@ -38,20 +38,20 @@ struct ctkCmdLineModuleProcessFutureInterfacePrivate
   QString _stdErr;
 };
 
-ctkCmdLineModuleProcessFutureInterface::QFutureInterface(State initialState)
-  : QFutureInterfaceBase(initialState), d(new ctkCmdLineModuleProcessFutureInterfacePrivate)
+ctkCmdLineModuleFutureInterface::QFutureInterface(State initialState)
+  : QFutureInterfaceBase(initialState), d(new ctkCmdLineModuleFutureInterfacePrivate)
 { }
 
-ctkCmdLineModuleProcessFutureInterface::QFutureInterface(const ctkCmdLineModuleProcessFutureInterface& other)
+ctkCmdLineModuleFutureInterface::QFutureInterface(const ctkCmdLineModuleFutureInterface& other)
   : QFutureInterfaceBase(other), d(other.d)
 {
   d->refCount.ref();
 }
 
-ctkCmdLineModuleProcessFutureInterface ctkCmdLineModuleProcessFutureInterface::canceledResult()
-{ return ctkCmdLineModuleProcessFutureInterface(State(Started | Finished | Canceled)); }
+ctkCmdLineModuleFutureInterface ctkCmdLineModuleFutureInterface::canceledResult()
+{ return ctkCmdLineModuleFutureInterface(State(Started | Finished | Canceled)); }
 
-ctkCmdLineModuleProcessFutureInterface& ctkCmdLineModuleProcessFutureInterface::operator=(const ctkCmdLineModuleProcessFutureInterface& other)
+ctkCmdLineModuleFutureInterface& ctkCmdLineModuleFutureInterface::operator=(const ctkCmdLineModuleFutureInterface& other)
 {
   QFutureInterfaceBase::operator=(other);
   other.d->refCount.ref();
@@ -60,38 +60,38 @@ ctkCmdLineModuleProcessFutureInterface& ctkCmdLineModuleProcessFutureInterface::
   return *this;
 }
 
-int ctkCmdLineModuleProcessFutureInterface::exitCode() const
+int ctkCmdLineModuleFutureInterface::exitCode() const
 { QMutexLocker lock(this->mutex()); return d->_exitCode; }
 
-void ctkCmdLineModuleProcessFutureInterface::reportExitCode(int code)
+void ctkCmdLineModuleFutureInterface::reportExitCode(int code)
 { QMutexLocker lock(this->mutex()); d->_exitCode = code; }
 
-QProcess::ExitStatus ctkCmdLineModuleProcessFutureInterface::exitStatus() const
+QProcess::ExitStatus ctkCmdLineModuleFutureInterface::exitStatus() const
 { QMutexLocker lock(this->mutex()); return d->_exitStatus; }
 
-void ctkCmdLineModuleProcessFutureInterface::reportExitStatus(QProcess::ExitStatus status)
+void ctkCmdLineModuleFutureInterface::reportExitStatus(QProcess::ExitStatus status)
 { QMutexLocker lock(this->mutex()); d->_exitStatus = status; }
 
-QProcess::ProcessError ctkCmdLineModuleProcessFutureInterface::error() const
+QProcess::ProcessError ctkCmdLineModuleFutureInterface::error() const
 { QMutexLocker lock(this->mutex()); return d->_processError; }
 
-void ctkCmdLineModuleProcessFutureInterface::reportProcessError(QProcess::ProcessError procErr)
+void ctkCmdLineModuleFutureInterface::reportProcessError(QProcess::ProcessError procErr)
 { QMutexLocker lock(this->mutex()); d->_processError = procErr; }
 
-QString ctkCmdLineModuleProcessFutureInterface::errorString() const
+QString ctkCmdLineModuleFutureInterface::errorString() const
 { QMutexLocker lock(this->mutex()); return d->_errorString; }
 
-void ctkCmdLineModuleProcessFutureInterface::reportErrorString(const QString& errorStr)
+void ctkCmdLineModuleFutureInterface::reportErrorString(const QString& errorStr)
 { QMutexLocker lock(this->mutex()); d->_errorString = errorStr; }
 
-QString ctkCmdLineModuleProcessFutureInterface::standardOutput() const
+QString ctkCmdLineModuleFutureInterface::standardOutput() const
 { QMutexLocker lock(this->mutex()); return d->_stdOut; }
 
-void ctkCmdLineModuleProcessFutureInterface::reportStandardOutput(const QString& stdOut)
+void ctkCmdLineModuleFutureInterface::reportStandardOutput(const QString& stdOut)
 { QMutexLocker lock(this->mutex()); d->_stdOut = stdOut; }
 
-QString ctkCmdLineModuleProcessFutureInterface::standardError() const
+QString ctkCmdLineModuleFutureInterface::standardError() const
 { QMutexLocker lock(this->mutex()); return d->_stdErr; }
 
-void ctkCmdLineModuleProcessFutureInterface::reportStandardError(const QString& stdErr)
+void ctkCmdLineModuleFutureInterface::reportStandardError(const QString& stdErr)
 { QMutexLocker lock(this->mutex()); d->_stdErr = stdErr; }

+ 93 - 0
Libs/CommandLineModules/Core/ctkCmdLineModuleFuture.h

@@ -0,0 +1,93 @@
+/*=============================================================================
+  
+  Library: CTK
+  
+  Copyright (c) German Cancer Research Center,
+    Division of Medical and Biological Informatics
+    
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+    http://www.apache.org/licenses/LICENSE-2.0
+    
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  
+=============================================================================*/
+
+#ifndef CTKCMDLINEMODULEFUTURE_H
+#define CTKCMDLINEMODULEFUTURE_H
+
+#include <ctkCommandLineModulesCoreExport.h>
+
+//#include <QFutureInterface>
+//#include <QFutureWatcher>
+#include <QProcess>
+
+/**
+ * \ingroup CommandLineModulesCore
+ */
+class ctkCmdLineModuleFuture
+{
+
+public:
+
+  ctkCmdLineModuleFuture()
+    : d(ctkCmdLineModuleFutureInterface::canceledResult())
+  { }
+
+  explicit ctkCmdLineModuleFuture(const ctkCmdLineModuleProcess& p) // internal
+    : d(*p)
+  { }
+
+  ctkCmdLineModuleFuture(const ctkCmdLineModuleFuture &other)
+    : d(other.d)
+  { }
+
+  ~ctkCmdLineModuleFuture()
+  { }
+
+  ctkCmdLineModuleFuture& operator=(const ctkCmdLineModuleFuture& other);
+  bool operator==(const ctkCmdLineModuleFuture& other) const { return (d == other.d); }
+  bool operator!=(const ctkCmdLineModuleFuture& other) const { return (d != other.d); }
+
+  void cancel() { d.cancel(); }
+  bool isCanceled() const { return d.isCanceled(); }
+
+  bool isStarted() const { return d.isStarted(); }
+  bool isFinished() const { return d.isFinished(); }
+  bool isRunning() const { return d.isRunning(); }
+
+  int exitCode() const { return d.exitCode(); }
+  int exitStatus() const { return d.exitStatus(); }
+  QProcess::ProcessError error() const { return d.error(); }
+  QString errorString() const { return d.errorString(); }
+
+  QString standardOutput() const { return d.standardOutput(); }
+  QString standardError() const { return d.standardError(); }
+
+  int progressValue() const { return d.progressValue(); }
+  int progressMinimum() const { return d.progressMinimum(); }
+  int progressMaximum() const { return d.progressMaximum(); }
+  QString progressText() const { return d.progressText(); }
+  void waitForFinished() { d.waitForFinished(); }
+
+private:
+
+  friend class ctkCmdLineModuleFutureWatcher;
+
+  mutable ctkCmdLineModuleProcess d;
+};
+
+
+inline ctkCmdLineModuleFuture& ctkCmdLineModuleFuture::operator=(const ctkCmdLineModuleFuture& other)
+{
+  d = other.d;
+  return *this;
+}
+
+#endif // CTKCMDLINEMODULEFUTURE_H

+ 10 - 8
Libs/CommandLineModules/Core/ctkCmdLineModuleInstance.cpp

@@ -23,7 +23,7 @@
 #include "ctkCmdLineModuleReference.h"
 #include "ctkCmdLineModuleObjectHierarchyReader.h"
 #include "ctkCmdLineModuleObjectHierarchyReader.h"
-#include "ctkCmdLineModuleProcessRunner_p.h"
+#include "ctkCmdLineModuleProcess_p.h"
 
 #include "ctkException.h"
 
@@ -145,12 +145,14 @@ ctkCmdLineModuleReference ctkCmdLineModuleInstance::moduleReference() const
   return d->ModuleReference;
 }
 
-ctkCmdLineModuleProcessFuture ctkCmdLineModuleInstance::run() const
+struct ctkCmdLineModuleFuture {};
+
+ctkCmdLineModuleFuture ctkCmdLineModuleInstance::run() const
 {
-  // TODO: manage memory
-  QStringList args = d->createCommandLineArgs();
-  qDebug() << args;
-  ctkCmdLineModuleProcessRunner* moduleProcess =
-      new ctkCmdLineModuleProcessRunner(d->ModuleReference.location(), args);
-  return moduleProcess->start();
+//  // TODO: manage memory
+//  QStringList args = d->createCommandLineArgs();
+//  qDebug() << args;
+//  ctkCmdLineModuleProcessRunner* moduleProcess =
+//      new ctkCmdLineModuleProcessRunner(d->ModuleReference.location(), args);
+//  return moduleProcess->start();
 }

+ 2 - 2
Libs/CommandLineModules/Core/ctkCmdLineModuleInstance.h

@@ -23,10 +23,10 @@
 #define CTKCMDLINEMODULEINSTANCE_H
 
 #include "ctkCommandLineModulesCoreExport.h"
-#include "ctkCmdLineModuleProcessFuture.h"
 
 #include <QObject>
 
+class ctkCmdLineModuleFuture;
 class ctkCmdLineModuleReference;
 class ctkCmdLineModuleInstancePrivate;
 
@@ -48,7 +48,7 @@ public:
 
   ctkCmdLineModuleReference moduleReference() const;
 
-  ctkCmdLineModuleProcessFuture run() const;
+  ctkCmdLineModuleFuture run() const;
 
   Q_SIGNAL void valueChanged(const QString& parameter, const QVariant& value);
 

+ 0 - 1
Libs/CommandLineModules/Core/ctkCmdLineModuleManager.cpp

@@ -23,7 +23,6 @@
 
 #include "ctkCmdLineModuleXmlValidator.h"
 #include "ctkCmdLineModuleObjectHierarchyReader.h"
-#include "ctkCmdLineModuleProcessRunner_p.h"
 #include "ctkCmdLineModuleReference.h"
 #include "ctkCmdLineModuleReferencePrivate.h"
 #include "ctkCmdLineModuleInstanceFactory.h"

+ 11 - 18
Libs/CommandLineModules/Core/ctkCmdLineModuleProcessRunner.cpp

@@ -19,40 +19,33 @@
   
 =============================================================================*/
 
-#include "ctkCmdLineModuleProcessRunner_p.h"
+#include "ctkCmdLineModuleProcess_p.h"
 
-#include "ctkCmdLineModuleProcessException.h"
 
-
-ctkCmdLineModuleProcessRunner::ctkCmdLineModuleProcessRunner(const QString& location, const QStringList& args)
+ctkCmdLineModuleProcess::ctkCmdLineModuleProcess(const QString& location, const QStringList& args)
   : process(), location(location), args(args)
 {
 }
 
-ctkCmdLineModuleProcessFuture ctkCmdLineModuleProcessRunner::start()
+ctkCmdLineModuleFuture ctkCmdLineModuleProcess::start()
 {
   this->reportStarted();
-  ctkCmdLineModuleProcessFuture future(this);
-  run();
-  return future;
-}
-
-void ctkCmdLineModuleProcessRunner::run()
-{
+  ctkCmdLineModuleFuture future(this);
   connect(&process, SIGNAL(started()), this, SLOT(processStarted()));
   connect(&process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(processError(QProcess::ProcessError)));
   connect(&process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processFinished(int,QProcess::ExitStatus)));
 
   process.start(location, args);
+  return future;
 }
 
-void ctkCmdLineModuleProcessRunner::processStarted()
+void ctkCmdLineModuleProcess::processStarted()
 {
   qDebug() << "Reporting process started";
   this->reportStarted();
 }
 
-void ctkCmdLineModuleProcessRunner::processFinished(int exitCode, QProcess::ExitStatus status)
+void ctkCmdLineModuleProcess::processFinished(int exitCode, QProcess::ExitStatus status)
 {
   Q_UNUSED(exitCode)
   Q_UNUSED(status)
@@ -66,9 +59,9 @@ void ctkCmdLineModuleProcessRunner::processFinished(int exitCode, QProcess::Exit
   this->reportFinished();
 }
 
-void ctkCmdLineModuleProcessRunner::processError(QProcess::ProcessError)
+void ctkCmdLineModuleProcess::processError(QProcess::ProcessError)
 {
-  qDebug() << "Reporting process error";
-  this->reportException(ctkCmdLineModuleProcessException(process.errorString(), process.exitCode(),
-                                                  process.exitStatus()));
+  //qDebug() << "Reporting process error";
+  //this->reportException(ctkCmdLineModuleProcessException(process.errorString(), process.exitCode(),
+  //                                                process.exitStatus()));
 }

+ 0 - 59
Libs/CommandLineModules/Core/ctkCmdLineModuleProcessException.cpp

@@ -1,59 +0,0 @@
-/*=============================================================================
-  
-  Library: CTK
-  
-  Copyright (c) German Cancer Research Center,
-    Division of Medical and Biological Informatics
-    
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-    http://www.apache.org/licenses/LICENSE-2.0
-    
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  
-=============================================================================*/
-
-#include "ctkCmdLineModuleProcessException.h"
-
-ctkCmdLineModuleProcessException::ctkCmdLineModuleProcessException(const QString& msg, int code,
-                                                     QProcess::ExitStatus status)
-  : msg(msg), code(code), status(status)
-{}
-
-int ctkCmdLineModuleProcessException::exitCode() const
-{
-  return code;
-}
-
-QProcess::ExitStatus ctkCmdLineModuleProcessException::exitStatus() const
-{
-  return status;
-}
-
-QString ctkCmdLineModuleProcessException::message() const
-{
-  return msg;
-}
-
-const char* ctkCmdLineModuleProcessException::what() const throw()
-{
-  static std::string strMsg;
-  strMsg = msg.toStdString();
-  return strMsg.c_str();
-}
-
-void ctkCmdLineModuleProcessException::raise() const
-{
-  throw *this;
-}
-
-ctkCmdLineModuleProcessException* ctkCmdLineModuleProcessException::clone() const
-{
-  return new ctkCmdLineModuleProcessException(*this);
-}

+ 0 - 56
Libs/CommandLineModules/Core/ctkCmdLineModuleProcessException.h

@@ -1,56 +0,0 @@
-/*=============================================================================
-  
-  Library: CTK
-  
-  Copyright (c) German Cancer Research Center,
-    Division of Medical and Biological Informatics
-    
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-    http://www.apache.org/licenses/LICENSE-2.0
-    
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  
-=============================================================================*/
-
-#ifndef CTKCMDLINEMODULEPROCESSEXCEPTION_H
-#define CTKCMDLINEMODULEPROCESSEXCEPTION_H
-
-#include <qtconcurrentexception.h>
-
-#include <QProcess>
-
-class ctkCmdLineModuleProcessException : public QtConcurrent::Exception
-{
-public:
-
-  ctkCmdLineModuleProcessException(const QString& msg, int code = 0,
-                            QProcess::ExitStatus status = QProcess::NormalExit);
-
-  ~ctkCmdLineModuleProcessException() throw() {}
-
-  int exitCode() const;
-
-  QProcess::ExitStatus exitStatus() const;
-
-  QString message() const;
-
-  const char* what() const throw();
-
-  void raise() const;
-  ctkCmdLineModuleProcessException* clone() const;
-
-private:
-
-  QString msg;
-  int code;
-  QProcess::ExitStatus status;
-};
-
-#endif // CTKCMDLINEMODULEPROCESSEXCEPTION_H

+ 0 - 138
Libs/CommandLineModules/Core/ctkCmdLineModuleProcessFuture.h

@@ -1,138 +0,0 @@
-/*=============================================================================
-  
-  Library: CTK
-  
-  Copyright (c) German Cancer Research Center,
-    Division of Medical and Biological Informatics
-    
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-    http://www.apache.org/licenses/LICENSE-2.0
-    
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  
-=============================================================================*/
-
-#ifndef CTKCMDLINEMODULEPROCESSFUTURE_H
-#define CTKCMDLINEMODULEPROCESSFUTURE_H
-
-#include <ctkCommandLineModulesCoreExport.h>
-
-#include <QFutureInterface>
-#include <QFutureWatcher>
-#include <QProcess>
-
-class ctkCmdLineModuleProcessFutureInterfacePrivate;
-
-struct ctkCmdLineModuleProcessDummy {};
-typedef QFutureWatcher<ctkCmdLineModuleProcessDummy> ctkCmdLineModuleProcessFutureWatcher;
-
-
-template<>
-class CTK_CMDLINEMODULECORE_EXPORT QFutureInterface<ctkCmdLineModuleProcessDummy> : public QFutureInterfaceBase
-{
-
-public:
-
-  QFutureInterface(State initialState = NoState);
-  QFutureInterface(const QFutureInterface& other);
-
-  static QFutureInterface canceledResult();
-
-  QFutureInterface& operator=(const QFutureInterface& other);
-
-  int exitCode() const;
-  void reportExitCode(int code);
-
-  QProcess::ExitStatus exitStatus() const;
-  void reportExitStatus(QProcess::ExitStatus status);
-
-  QProcess::ProcessError error() const;
-  void reportProcessError(QProcess::ProcessError procErr);
-
-  QString errorString() const;
-  void reportErrorString(const QString& errorStr);
-
-  QString standardOutput() const;
-  void reportStandardOutput(const QString& stdOut);
-
-  QString standardError() const;
-  void reportStandardError(const QString& stdErr);
-
-private:
-
-  ctkCmdLineModuleProcessFutureInterfacePrivate* d;
-};
-
-typedef QFutureInterface<ctkCmdLineModuleProcessDummy> ctkCmdLineModuleProcessFutureInterface;
-
-
-template<>
-class QFuture<ctkCmdLineModuleProcessDummy>
-{
-
-public:
-
-  QFuture()
-    : d(ctkCmdLineModuleProcessFutureInterface::canceledResult())
-  { }
-
-  explicit QFuture(ctkCmdLineModuleProcessFutureInterface *p) // internal
-    : d(*p)
-  { }
-
-  QFuture(const QFuture &other)
-    : d(other.d)
-  { }
-
-  ~QFuture()
-  { }
-
-  QFuture& operator=(const QFuture& other);
-  bool operator==(const QFuture& other) const { return (d == other.d); }
-  bool operator!=(const QFuture& other) const { return (d != other.d); }
-
-  void cancel() { d.cancel(); }
-  bool isCanceled() const { return d.isCanceled(); }
-
-  bool isStarted() const { return d.isStarted(); }
-  bool isFinished() const { return d.isFinished(); }
-  bool isRunning() const { return d.isRunning(); }
-
-  int exitCode() const { return d.exitCode(); }
-  int exitStatus() const { return d.exitStatus(); }
-  QProcess::ProcessError error() const { return d.error(); }
-  QString errorString() const { return d.errorString(); }
-
-  QString standardOutput() const { return d.standardOutput(); }
-  QString standardError() const { return d.standardError(); }
-
-  int progressValue() const { return d.progressValue(); }
-  int progressMinimum() const { return d.progressMinimum(); }
-  int progressMaximum() const { return d.progressMaximum(); }
-  QString progressText() const { return d.progressText(); }
-  void waitForFinished() { d.waitForFinished(); }
-
-private:
-
-  friend class QFutureWatcher<ctkCmdLineModuleProcessDummy>;
-
-  mutable ctkCmdLineModuleProcessFutureInterface d;
-};
-
-typedef QFuture<ctkCmdLineModuleProcessDummy> ctkCmdLineModuleProcessFuture;
-
-
-inline ctkCmdLineModuleProcessFuture& ctkCmdLineModuleProcessFuture::operator=(const ctkCmdLineModuleProcessFuture& other)
-{
-  d = other.d;
-  return *this;
-}
-
-#endif // CTKCMDLINEMODULEPROCESSFUTURE_H

+ 6 - 8
Libs/CommandLineModules/Core/ctkCmdLineModuleProcessRunner_p.h

@@ -19,25 +19,23 @@
   
 =============================================================================*/
 
-#ifndef CTKCMDLINEMODULEPROCESSRUNNER_P_H
-#define CTKCMDLINEMODULEPROCESSRUNNER_P_H
+#ifndef CTKCMDLINEMODULEPROCESS_P_H
+#define CTKCMDLINEMODULEPROCESS_P_H
 
 #include <QObject>
 #include <QProcess>
 
-#include "ctkCmdLineModuleProcessFuture.h"
+class ctkCmdLineModuleFuture;
 
-class ctkCmdLineModuleProcessRunner : public QObject, public QRunnable, public ctkCmdLineModuleProcessFutureInterface
+class ctkCmdLineModuleProcess : public QObject
 {
   Q_OBJECT
 
 public:
 
-  ctkCmdLineModuleProcessRunner(const QString& location, const QStringList& args);
+  ctkCmdLineModuleProcess(const QString& location, const QStringList& args);
 
-  ctkCmdLineModuleProcessFuture start();
-
-  void run();
+  ctkCmdLineModuleFuture start();
 
 protected Q_SLOTS: