OpenMS
|
A wrapper around QProcess to conveniently start an external program and forward its outputs. More...
#include <OpenMS/SYSTEM/ExternalProcess.h>
Public Types | |
enum class | RETURNSTATE { SUCCESS , NONZERO_EXIT , CRASH , FAILED_TO_START } |
result of calling an external executable More... | |
enum class | IO_MODE { NO_IO , READ_ONLY , WRITE_ONLY , READ_WRITE } |
Open mode for the process. More... | |
Public Member Functions | |
ExternalProcess () | |
default Ctor; callbacks for stdout/stderr are empty More... | |
ExternalProcess (std::function< void(const String &)> callbackStdOut, std::function< void(const String &)> callbackStdErr) | |
set the callback functions to process stdout and stderr output when the external process generates it More... | |
~ExternalProcess () override | |
D'tor. More... | |
void | setCallbacks (std::function< void(const String &)> callbackStdOut, std::function< void(const String &)> callbackStdErr) |
re-wire the callbacks used during run() More... | |
RETURNSTATE | run (const QString &exe, const QStringList &args, const QString &working_dir, const bool verbose, String &error_msg, IO_MODE io_mode=IO_MODE::READ_WRITE) |
Runs a program and calls the callback functions from time to time if output from the external program is available. More... | |
ExternalProcess::RETURNSTATE | run (const QString &exe, const QStringList &args, const QString &working_dir, const bool verbose, IO_MODE io_mode=IO_MODE::READ_WRITE) |
Same as other overload, just without a returned error message. More... | |
Private Slots | |
void | processStdOut_ () |
void | processStdErr_ () |
Private Attributes | |
QProcess * | qp_ |
pointer to avoid including the QProcess header here (it's huge) More... | |
std::function< void(const String &)> | callbackStdOut_ |
std::function< void(const String &)> | callbackStdErr_ |
A wrapper around QProcess to conveniently start an external program and forward its outputs.
Use the custom Ctor to provide callback functions for stdout/stderr output or set them via setCallbacks().
Running an external program blocks the caller, so do not use this in a main GUI thread (unless you have some other means to tell the user that no interaction is possible at the moment).
If you want QMessageBoxes to be shown if something went wrong, use ExternalProcessMBox as a convenient wrapper instead.
|
strong |
|
strong |
ExternalProcess | ( | ) |
default Ctor; callbacks for stdout/stderr are empty
ExternalProcess | ( | std::function< void(const String &)> | callbackStdOut, |
std::function< void(const String &)> | callbackStdErr | ||
) |
set the callback functions to process stdout and stderr output when the external process generates it
|
override |
D'tor.
|
privateslot |
|
privateslot |
ExternalProcess::RETURNSTATE run | ( | const QString & | exe, |
const QStringList & | args, | ||
const QString & | working_dir, | ||
const bool | verbose, | ||
IO_MODE | io_mode = IO_MODE::READ_WRITE |
||
) |
Same as other overload, just without a returned error message.
RETURNSTATE run | ( | const QString & | exe, |
const QStringList & | args, | ||
const QString & | working_dir, | ||
const bool | verbose, | ||
String & | error_msg, | ||
IO_MODE | io_mode = IO_MODE::READ_WRITE |
||
) |
Runs a program and calls the callback functions from time to time if output from the external program is available.
exe | The program to call (can contain spaces in path, no problem) | |
args | A list of extra arguments (can be empty) | |
working_dir | Execute the external process in the given directory (relevant when relative input/output paths are given). Leave empty to use the current working directory. | |
verbose | Report the call command and errors via the callbacks (default: false) | |
[out] | error_msg | Message to display to the user if something went wrong (if return != SUCCESS) |
io_mode | Open mode for the process (read access, write access, ...) |
void setCallbacks | ( | std::function< void(const String &)> | callbackStdOut, |
std::function< void(const String &)> | callbackStdErr | ||
) |
re-wire the callbacks used during run()
|
private |
|
private |