//
//     Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
//     Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
//     may also apply


//                 Generated by preSip
//            module tdecore  version KDE 3.5.3


// This software is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of
// the License, or (at your option) any later version.
//
// This software is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public
// License along with this library; see the file COPYING.
// If not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.


class TDEProcess : TQObject
{
%TypeHeaderCode
#include <kprocess.h>
%End


public:

%If ( KDE_3_5_2 -  )

    enum Communication
    {
        NoCommunication, 
        Stdin, 
        Stdout, 
        Stderr, 
        AllOutput, 
        All, 
        NoRead, 
        CTtyOnly, 
        MergedStderr
    };

%End


%If ( KDE_3_2_0 -  )

    enum RunMode
    {
        DontCare, 
        NotifyOnExit, 
        Block, 
        OwnGroup
    };

                         TDEProcess (TQObject* /TransferThis/, const char* = 0);
%End

                         TDEProcess ();
    bool                 setExecutable (const TQString&);

%If ( KDE_3_1_4 -  )
    TDEProcess&            operator << (const TQString&);
    TDEProcess&            operator << (const char*);
    TDEProcess&            operator << (const TQCString&);
    TDEProcess&            operator << (const TQStringList&);
%End

    void                 clearArguments ();
    virtual bool         start (TDEProcess::RunMode = NotifyOnExit , TDEProcess::Communication = NoCommunication );
    virtual bool         kill (int = SIGTERM );
    bool                 isRunning () const;
    pid_t                pid () const;
    pid_t                getPid () const;
    void                 suspend ();
    void                 resume ();

%If ( KDE_3_2_0 -  )
    bool                 wait (int = -1);
%End

    bool                 normalExit () const;

%If ( KDE_3_2_0 -  )
    bool                 signalled () const;
    bool                 coreDumped () const;
%End

    int                  exitStatus () const;

%If ( KDE_3_2_0 -  )
    int                  exitSignal () const;
%End

    bool                 writeStdin (const char*, int);
    bool                 closeStdin ();
    bool                 closeStdout ();
    bool                 closeStderr ();

%If ( KDE_3_2_0 -  )
    bool                 closePty ();
    void                 closeAll ();
%End

    const TQValueList<TQCString>& args ();
    void                 setRunPrivileged (bool);
    bool                 runPrivileged () const;
    void                 setEnvironment (const TQString&, const TQString&);
    void                 setWorkingDirectory (const TQString&);

%If ( KDE_3_1_0 -  )
    void                 setUseShell (bool, const char* = 0);
    static TQString       quote (const TQString&);
%End

    void                 detach ();

%If ( KDE_3_2_0 -  )

    enum 
    {
        PrioLowest, 
        PrioLow, 
        PrioLower, 
        PrioNormal, 
        PrioHigher, 
        PrioHigh, 
        PrioHighest
    };

    bool                 setPriority (int);
%End


signals:
    void                 processExited (TDEProcess*);
    void                 receivedStdout (TDEProcess*, char*, int);
//ig     void                 receivedStdout (int, int&);
    void                 receivedStderr (TDEProcess*, char*, int);
    void                 wroteStdin (TDEProcess*);

protected slots:
    void                 slotChildOutput (int);
    void                 slotChildError (int);
    void                 slotSendData (int);

protected:
    void                 setupEnvironment ();
    virtual int          setupCommunication (TDEProcess::Communication);
    virtual int          commSetupDoneP ();
    virtual int          commSetupDoneC ();
    virtual void         processHasExited (int);
    virtual void         commClose ();

%If ( KDE_3_2_0 -  )
    void                 setBinaryExecutable (const char*);
%End

    int                  childOutput (int);
    int                  childError (int);

protected:
//igx     virtual void         virtual_hook (int, void*);

public:

%If (  - KDE_3_5_2 )

    enum Communication
    {
        NoCommunication, 
        Stdin, 
        Stdout, 
        Stderr, 
        AllOutput, 
        All, 
        NoRead
    };

%End


public:

%If ( KDE_3_2_0 - KDE_3_4_0 )
    void                 setUsePty (TDEProcess::Communication, bool);
    KPty*                pty () const;
%End


public:

%If (  - KDE_3_2_0 )

    enum RunMode
    {
        DontCare, 
        NotifyOnExit, 
        Block
    };

%End


%If (  - KDE_3_2_0 )

private:
                         TDEProcess (const TDEProcess&);
%End


public:
//force
    void                 setArguments (SIP_PYLIST) [void (char**)];
%MethodCode
//takes arglist | (a Python list of strings)
//doc
// setArguments is the PyKDE equivalent of the stream operator methods (<<)
// in KDE's TDEProcess class - provide with a list of strings representing
// the arguments to the executable program set with setExecutable (PyKDE
// will continue to provide setExecutable even though it's deprecated in
// KDE (to also be replaced with stream operators)
//end

    PyObject *elem;

    for (int i = 0; i < PyList_Size (a0); i++)
    {
        elem = PyList_GET_ITEM (a0, i);
        *sipCpp << PyString_AsString (elem);
    }


%End

//end

};  // class TDEProcess


class KShellProcess : TDEProcess
{
%TypeHeaderCode
#include <kprocess.h>
%End


public:
                         KShellProcess (const char* = 0);
    virtual bool         start (RunMode = NotifyOnExit , Communication = NoCommunication );
    static TQString       quote (const TQString&);

protected:
//igx     virtual void         virtual_hook (int, void*);

%If (  - KDE_3_2_0 )

private:
                         KShellProcess (const KShellProcess&);
%End


};  // class KShellProcess

