aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/core/libLumina/ExternalProcess.h
diff options
context:
space:
mode:
Diffstat (limited to 'src-qt5/core/libLumina/ExternalProcess.h')
-rw-r--r--src-qt5/core/libLumina/ExternalProcess.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/src-qt5/core/libLumina/ExternalProcess.h b/src-qt5/core/libLumina/ExternalProcess.h
new file mode 100644
index 00000000..2106f296
--- /dev/null
+++ b/src-qt5/core/libLumina/ExternalProcess.h
@@ -0,0 +1,45 @@
+//===========================================
+// Lumina-desktop source code
+// Copyright (c) 2017, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+// This is a simple class for launching/managing an external process in a non-interactive manner
+// This object will clean itself up when finished and log all output to a particular file if designated
+// otherwise it will suppress all output from the process
+//===========================================
+#ifndef _LUMINA_EXTERNAL_PROCESS_H
+#define _LUMINA_EXTERNAL_PROCESS_H
+
+#include <QProcess>
+#include <QString>
+
+class ExternalProcess : public QProcess{
+ Q_OBJECT
+private slots:
+ void processFinished(){
+ //Clean up this object
+ this->deleteLater();
+ }
+public:
+ ExternalProcess(QString logfile = "") : QProcess(){
+ this->setProcessChannelMode(QProcess::MergedChannels);
+ if(logfile.isEmpty()){
+ this->setStandardOutputFile(QProcess::nullDevice());
+ }else{
+ this->setStandardOutputFile(logfile);
+ }
+ //Setup the connection for automatic cleanup
+ connect(this, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(processFinished()) );
+ }
+ ~ExternalProcess(){
+ }
+
+ static void launch(QString program, QStringList args = QStringList()){
+ //Quick launch of a process with logging disabled and automatic cleanup
+ ExternalProcess *tmp = new ExternalProcess();
+ if(args.isEmpty()){ tmp->start(program); }
+ else{ tmp->start(program, args); }
+ }
+};
+#endif
bgstack15