]> git.saurik.com Git - wxWidgets.git/commitdiff
Added wxProcess_Open and etc.
authorRobin Dunn <robin@alldunn.com>
Fri, 12 Jul 2002 21:30:17 +0000 (21:30 +0000)
committerRobin Dunn <robin@alldunn.com>
Fri, 12 Jul 2002 21:30:17 +0000 (21:30 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16159 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

wxPython/src/misc2.i
wxPython/src/msw/misc2.cpp
wxPython/src/msw/misc2.py

index 22a8d2d7b7cce589e4692b433247b0e5a359611b..c80685a978b07bba312a4da14f93d9e04b873f25 100644 (file)
@@ -769,6 +769,16 @@ enum {
 };
 
 
+enum wxKillError
+{
+    wxKILL_OK,              // no error
+    wxKILL_BAD_SIGNAL,      // no such signal
+    wxKILL_ACCESS_DENIED,   // permission denied
+    wxKILL_NO_PROCESS,      // no such process
+    wxKILL_ERROR            // another, unspecified error
+};
+
+
 class wxProcessEvent : public wxEvent {
 public:
     wxProcessEvent(int id = 0, int pid = 0, int exitcode = 0);
@@ -800,6 +810,23 @@ IMP_PYCALLBACK_VOID_INTINT( wxPyProcess, wxProcess, OnTerminate);
 
 %name(wxProcess)class wxPyProcess : public wxEvtHandler {
 public:
+    // kill the process with the given PID
+    static wxKillError Kill(int pid, wxSignal sig = wxSIGTERM);
+
+    // test if the given process exists
+    static bool Exists(int pid);
+
+    // this function replaces the standard popen() one: it launches a process
+    // asynchronously and allows the caller to get the streams connected to its
+    // std{in|out|err}
+    //
+    // on error NULL is returned, in any case the process object will be
+    // deleted automatically when the process terminates and should *not* be
+    // deleted by the caller
+    static wxPyProcess *Open(const wxString& cmd);
+
+
+
     wxPyProcess(wxEvtHandler *parent = NULL, int id = -1);
     %addmethods { void Destroy() { delete self; } }
 
index eca098bdaf02c524ea0b18de788869c346d3e842..3133bab331e35747deacd2dabc27fbd0cb0a708b 100644 (file)
@@ -6104,6 +6104,89 @@ static void *SwigwxPyProcessTowxObject(void *ptr) {
     return (void *) dest;
 }
 
+static PyObject *_wrap_wxProcess_Kill(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxKillError  _result;
+    int  _arg0;
+    wxSignal * _arg1 = (wxSignal *) &wxSIGTERM;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "pid","sig", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"i|O:wxProcess_Kill",_kwnames,&_arg0,&_argo1)) 
+        return NULL;
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxSignal_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxProcess_Kill. Expected _wxSignal_p.");
+        return NULL;
+        }
+    }
+{
+    PyThreadState* __tstate = wxPyBeginAllowThreads();
+    _result = (wxKillError )wxPyProcess::Kill(_arg0,*_arg1);
+
+    wxPyEndAllowThreads(__tstate);
+    if (PyErr_Occurred()) return NULL;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+static PyObject *_wrap_wxProcess_Exists(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    int  _arg0;
+    char *_kwnames[] = { "pid", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"i:wxProcess_Exists",_kwnames,&_arg0)) 
+        return NULL;
+{
+    PyThreadState* __tstate = wxPyBeginAllowThreads();
+    _result = (bool )wxPyProcess::Exists(_arg0);
+
+    wxPyEndAllowThreads(__tstate);
+    if (PyErr_Occurred()) return NULL;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+static PyObject *_wrap_wxProcess_Open(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyProcess * _result;
+    wxString * _arg0;
+    PyObject * _obj0 = 0;
+    char *_kwnames[] = { "cmd", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxProcess_Open",_kwnames,&_obj0)) 
+        return NULL;
+{
+    _arg0 = wxString_in_helper(_obj0);
+    if (_arg0 == NULL)
+        return NULL;
+}
+{
+    PyThreadState* __tstate = wxPyBeginAllowThreads();
+    _result = (wxPyProcess *)wxPyProcess::Open(*_arg0);
+
+    wxPyEndAllowThreads(__tstate);
+    if (PyErr_Occurred()) return NULL;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxPyProcess_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+{
+    if (_obj0)
+        delete _arg0;
+}
+    return _resultobj;
+}
+
 #define new_wxProcess(_swigarg0,_swigarg1) (new wxPyProcess(_swigarg0,_swigarg1))
 static PyObject *_wrap_new_wxProcess(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
@@ -10380,6 +10463,9 @@ static PyMethodDef misc2cMethods[] = {
         { "wxProcess__setCallbackInfo", (PyCFunction) _wrap_wxProcess__setCallbackInfo, METH_VARARGS | METH_KEYWORDS },
         { "wxProcess_Destroy", (PyCFunction) _wrap_wxProcess_Destroy, METH_VARARGS | METH_KEYWORDS },
         { "new_wxProcess", (PyCFunction) _wrap_new_wxProcess, METH_VARARGS | METH_KEYWORDS },
+        { "wxProcess_Open", (PyCFunction) _wrap_wxProcess_Open, METH_VARARGS | METH_KEYWORDS },
+        { "wxProcess_Exists", (PyCFunction) _wrap_wxProcess_Exists, METH_VARARGS | METH_KEYWORDS },
+        { "wxProcess_Kill", (PyCFunction) _wrap_wxProcess_Kill, METH_VARARGS | METH_KEYWORDS },
         { "wxProcessEvent_m_exitcode_get", (PyCFunction) _wrap_wxProcessEvent_m_exitcode_get, METH_VARARGS | METH_KEYWORDS },
         { "wxProcessEvent_m_exitcode_set", (PyCFunction) _wrap_wxProcessEvent_m_exitcode_set, METH_VARARGS | METH_KEYWORDS },
         { "wxProcessEvent_m_pid_get", (PyCFunction) _wrap_wxProcessEvent_m_pid_get, METH_VARARGS | METH_KEYWORDS },
@@ -10808,6 +10894,11 @@ SWIGEXPORT(void) initmisc2c() {
         PyDict_SetItemString(d,"wxTraceRefCount", PyInt_FromLong((long) wxTraceRefCount));
         PyDict_SetItemString(d,"wxTraceOleCalls", PyInt_FromLong((long) wxTraceOleCalls));
         PyDict_SetItemString(d,"wxEVT_END_PROCESS", PyInt_FromLong((long) wxEVT_END_PROCESS));
+        PyDict_SetItemString(d,"wxKILL_OK", PyInt_FromLong((long) wxKILL_OK));
+        PyDict_SetItemString(d,"wxKILL_BAD_SIGNAL", PyInt_FromLong((long) wxKILL_BAD_SIGNAL));
+        PyDict_SetItemString(d,"wxKILL_ACCESS_DENIED", PyInt_FromLong((long) wxKILL_ACCESS_DENIED));
+        PyDict_SetItemString(d,"wxKILL_NO_PROCESS", PyInt_FromLong((long) wxKILL_NO_PROCESS));
+        PyDict_SetItemString(d,"wxKILL_ERROR", PyInt_FromLong((long) wxKILL_ERROR));
         PyDict_SetItemString(d,"wxEXEC_ASYNC", PyInt_FromLong((long) wxEXEC_ASYNC));
         PyDict_SetItemString(d,"wxEXEC_SYNC", PyInt_FromLong((long) wxEXEC_SYNC));
         PyDict_SetItemString(d,"wxEXEC_NOHIDE", PyInt_FromLong((long) wxEXEC_NOHIDE));
index 26c88e98f2c1357f4341b9e2074864f0534d1db7..2ca80eaf0f585301fe214089beea2d6b93190f7f 100644 (file)
@@ -1198,6 +1198,15 @@ wxLog_GetTraceMask = misc2c.wxLog_GetTraceMask
 
 wxLog_IsAllowedTraceMask = misc2c.wxLog_IsAllowedTraceMask
 
+wxProcess_Kill = misc2c.wxProcess_Kill
+
+wxProcess_Exists = misc2c.wxProcess_Exists
+
+def wxProcess_Open(*_args, **_kwargs):
+    val = apply(misc2c.wxProcess_Open,_args,_kwargs)
+    if val: val = wxProcessPtr(val)
+    return val
+
 wxFileType_ExpandCommand = misc2c.wxFileType_ExpandCommand
 
 wxMimeTypesManager_IsOfType = misc2c.wxMimeTypesManager_IsOfType
@@ -1335,6 +1344,11 @@ wxTraceResAlloc = misc2c.wxTraceResAlloc
 wxTraceRefCount = misc2c.wxTraceRefCount
 wxTraceOleCalls = misc2c.wxTraceOleCalls
 wxEVT_END_PROCESS = misc2c.wxEVT_END_PROCESS
+wxKILL_OK = misc2c.wxKILL_OK
+wxKILL_BAD_SIGNAL = misc2c.wxKILL_BAD_SIGNAL
+wxKILL_ACCESS_DENIED = misc2c.wxKILL_ACCESS_DENIED
+wxKILL_NO_PROCESS = misc2c.wxKILL_NO_PROCESS
+wxKILL_ERROR = misc2c.wxKILL_ERROR
 wxEXEC_ASYNC = misc2c.wxEXEC_ASYNC
 wxEXEC_SYNC = misc2c.wxEXEC_SYNC
 wxEXEC_NOHIDE = misc2c.wxEXEC_NOHIDE