X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cd6ce4a90c11b54cc00799d0e4611d858739a749..71499aafed86032f0e8ed874a9007f19b921d206:/include/wx/process.h diff --git a/include/wx/process.h b/include/wx/process.h index f88b6a85c7..d0bff5c627 100644 --- a/include/wx/process.h +++ b/include/wx/process.h @@ -19,9 +19,15 @@ #include "wx/defs.h" #include "wx/object.h" #include "wx/event.h" + +#if wxUSE_STREAMS #include "wx/stream.h" +#endif + +// ---------------------------------------------------------------------------- +// wxProcessEvent: event used with wxProcess +// ---------------------------------------------------------------------------- -// Process Event handling class WXDLLEXPORT wxProcessEvent : public wxEvent { DECLARE_DYNAMIC_CLASS(wxProcessEvent) @@ -45,8 +51,11 @@ public: int m_pid, m_exitcode; }; +// ---------------------------------------------------------------------------- // A wxProcess object should be passed to wxExecute - than its OnTerminate() // function will be called when the process terminates. +// ---------------------------------------------------------------------------- + class WXDLLEXPORT wxProcess : public wxEvtHandler { DECLARE_DYNAMIC_CLASS(wxProcess) @@ -72,27 +81,47 @@ public: // before the process it started terminates void Detach(); +#if wxUSE_STREAMS // Pipe handling wxInputStream *GetInputStream() const { return m_inputStream; } + wxInputStream *GetErrorStream() const { return m_errorStream; } wxOutputStream *GetOutputStream() const { return m_outputStream; } + // close the output stream indicating that nothing more will be written + void CloseOutput() { delete m_outputStream; m_outputStream = NULL; } + // implementation only (for wxExecute) - void SetPipeStreams(wxInputStream *inStream, wxOutputStream *outStream); + void SetPipeStreams(wxInputStream *inStream, + wxOutputStream *outStream, + wxInputStream *errStream); +#endif // wxUSE_STREAMS protected: void Init(wxEvtHandler *parent, int id, bool redirect); int m_id; - wxInputStream *m_inputStream; +#if wxUSE_STREAMS + wxInputStream *m_inputStream, + *m_errorStream; wxOutputStream *m_outputStream; +#endif // wxUSE_STREAMS bool m_redirect; }; +// ---------------------------------------------------------------------------- +// wxProcess events +// ---------------------------------------------------------------------------- + +BEGIN_DECLARE_EVENT_TYPES() + DECLARE_EVENT_TYPE(wxEVT_END_PROCESS, 440) +END_DECLARE_EVENT_TYPES() + typedef void (wxObject::*wxProcessEventFunction)(wxProcessEvent&); -#define EVT_END_PROCESS(id, func) { wxEVT_END_PROCESS, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxProcessEventFunction) & func, NULL}, +#define EVT_END_PROCESS(id, func) \ + DECLARE_EVENT_TABLE_ENTRY( wxEVT_END_PROCESS, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxProcessEventFunction) & func, NULL), #endif // _WX_PROCESSH__