//
//     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 NETRootInfo : NET
{
%TypeHeaderCode
#include <netwm.h>
%End


public:

%If ( KDE_3_2_0 -  )

    enum 
    {
        PROTOCOLS, 
        WINDOW_TYPES, 
        STATES, 
        PROTOCOLS2, 
        ACTIONS, 
        PROPERTIES_SIZE
    };

                         NETRootInfo (Window, const char*, SIP_PYLIST, int = -1, bool = 1) [(Display*, Window, const char*, const ulong*, int, int = -1, bool = 1)];
%MethodCode
//takes supportWindow | (Window) | wmName | (a Python string) | properties | (a Python list) |  screen | (int = -1) | doActivate | (bool = True)
    int count   = PyList_Size (a2);
    unsigned long *list = new unsigned long [count];

    for (int i = 0; i < count; i++)
        list [i] = (unsigned long)PyLong_AS_LONG (PyList_GET_ITEM (a2, i));

    Py_BEGIN_ALLOW_THREADS
    Display *d = tqt_xdisplay ();
    sipCpp = new sipNETRootInfo (d, a0, a1, list, count, a3, a4);
    Py_END_ALLOW_THREADS

    delete list;
%End

%End

                         NETRootInfo (Window, const char*, ulong, int = -1, bool = 1) [(Display*, Window, const char*, ulong, int = -1, bool = 1)];
%MethodCode
//takes  supportWindow | (Window) | wmName | (a Python string) | properties | (ulong) | screen | (int = -1) | doActivate | (bool = 1)

    Py_BEGIN_ALLOW_THREADS
    Display *d = tqt_xdisplay ();
    sipCpp = new sipNETRootInfo (d, a0, a1, a2, a3, a4);
    Py_END_ALLOW_THREADS
%End


%If ( KDE_3_2_0 -  )
                         NETRootInfo (SIP_PYLIST, int = -1, bool = 1) [(Display*, const ulong*, int, int = -1, bool = 1)];
%MethodCode
//takes properties | (ulong) | screen | (int = -1) | doActivate | (bool = 1)
    int count   = PyList_Size (a0);
    unsigned long *list = new unsigned long [count];

    for (int i = 0; i < count; i++)
        list [i] = (unsigned long)PyLong_AS_LONG (PyList_GET_ITEM (a2, i));

    Py_BEGIN_ALLOW_THREADS
    Display *d = tqt_xdisplay ();
    sipCpp = new sipNETRootInfo (d, list, count, a1, a2);
    Py_END_ALLOW_THREADS

    delete list;
%End

%End

                         NETRootInfo (ulong, int = -1, bool = 1) [(Display*, ulong, int = -1, bool = 1)];
%MethodCode
//takes  properties | (ulong) | screen | (int = -1) | doActivate | (bool = 1)

    Py_BEGIN_ALLOW_THREADS
    Display *d = tqt_xdisplay ();
    sipCpp = new sipNETRootInfo (d, a0, a1, a2);
    Py_END_ALLOW_THREADS
%End

                         NETRootInfo (const NETRootInfo&);
    Display*             x11Display () const;
    Window               rootWindow () const;
    Window               supportWindow () const;
    const char*          wmName () const;
    int                  screenNumber () const;

%If ( KDE_3_2_0 -  )
    bool                 isSupported (NET::Property) const;
    bool                 isSupported (NET::Property2) const;
    bool                 isSupported (NET::WindowType) const;
    bool                 isSupported (NET::State) const;
    bool                 isSupported (NET::Action) const;
    SIP_PYLIST           supportedProperties () const [ulong* ()];
%MethodCode
//returns a Python list of ulong
    int count = 5;
    const ulong *props;
    Py_BEGIN_ALLOW_THREADS
    props = sipCpp->supportedProperties ();
    Py_END_ALLOW_THREADS

    for (int i = 0; i < count; i++)
        PyList_Append (sipRes, PyLong_FromUnsignedLong (props [i]));
%End

    SIP_PYLIST           passedProperties () const [ulong* ()];
%MethodCode
//returns a Python list of ulong
    int count = 5;
    const ulong *props;
    Py_BEGIN_ALLOW_THREADS
    props = sipCpp->passedProperties ();
    Py_END_ALLOW_THREADS

    for (int i = 0; i < count; i++)
        PyList_Append (sipRes, PyLong_FromUnsignedLong (props [i]));
%End

%End

    ulong                supported () const;
    SIP_PYLIST           clientList () const [Window* ()];
%MethodCode
//returns a Python list of Window
    int count = sipCpp->clientListCount ();
    const Window *props;
    Py_BEGIN_ALLOW_THREADS
    props = sipCpp->clientList ();
    Py_END_ALLOW_THREADS

    for (int i = 0; i < count; i++)
        PyList_Append (sipRes, PyLong_FromUnsignedLong ((unsigned long)props [i]));
%End

    int                  clientListCount () const;
    SIP_PYLIST           clientListStacking () const [Window* ()];
%MethodCode
//returns a Python list of Window
    int count = sipCpp->clientListStackingCount ();
    const Window *props;
    Py_BEGIN_ALLOW_THREADS
    props = sipCpp->clientListStacking ();
    Py_END_ALLOW_THREADS

    for (int i = 0; i < count; i++)
        PyList_Append (sipRes, PyLong_FromUnsignedLong ((unsigned long)props [i]));
%End

    int                  clientListStackingCount () const;
    SIP_PYLIST           kdeSystemTrayWindows () const [Window* ()];
%MethodCode
//returns a Python list of Window
    int count = sipCpp->kdeSystemTrayWindowsCount ();
    const Window *props;
    Py_BEGIN_ALLOW_THREADS
    props = sipCpp->kdeSystemTrayWindows ();
    Py_END_ALLOW_THREADS

    for (int i = 0; i < count; i++)
        PyList_Append (sipRes, PyLong_FromUnsignedLong ((unsigned long)props [i]));
%End

    int                  kdeSystemTrayWindowsCount () const;
    NETSize              desktopGeometry (int) const;
    NETPoint             desktopViewport (int) const;
    NETRect              workArea (int) const;
    const char*          desktopName (int) const;
    SIP_PYLIST           virtualRoots () const [Window* ()];
%MethodCode
//returns a Python list of Window
    int count = sipCpp->virtualRootsCount ();
    const Window *props;
    Py_BEGIN_ALLOW_THREADS
    props = sipCpp->virtualRoots ();
    Py_END_ALLOW_THREADS

    for (int i = 0; i < count; i++)
        PyList_Append (sipRes, PyLong_FromUnsignedLong ((unsigned long)props [i]));
%End

    int                  virtualRootsCount () const;
    int                  numberOfDesktops () const;
    int                  currentDesktop () const;
    Window               activeWindow () const;
    void                 activate ();
    void                 setClientList (SIP_PYLIST) [void (Window*, uint)];
%MethodCode
//takes windows | (a Python list of Window)

    int n = PyList_Size (a0);
    Window array [n];
    PyObject *elem;

    for (int i = 0; i < n; i++)
    {
        elem = PyList_GetItem (a0, i);
        if (!PyLong_Check (elem))
            return NULL;

        array [i] = (Window) PyLong_AsUnsignedLong (elem);
    }

    Py_BEGIN_ALLOW_THREADS
    sipCpp->setClientList (array, n);
    Py_END_ALLOW_THREADS
%End

    void                 setClientListStacking (SIP_PYLIST) [void (Window*, uint)];
%MethodCode
//takes windows | (a Python list of Window)

    int n = PyList_Size (a0);
    Window array [n];
    PyObject *elem;

    for (int i = 0; i < n; i++)
    {
        elem = PyList_GetItem (a0, i);
        if (!PyLong_Check (elem))
            return NULL;

        array [i] = (Window) PyLong_AsUnsignedLong (elem);
    }

    Py_BEGIN_ALLOW_THREADS
    sipCpp->setClientListStacking (array, n);
    Py_END_ALLOW_THREADS
%End

    void                 setKDESystemTrayWindows (SIP_PYLIST) [void (Window*, uint)];
%MethodCode
//takes windows | (a Python list of Window)

    int n = PyList_Size (a0);
    Window array [n];
    PyObject *elem;

    for (int i = 0; i < n; i++)
    {
        elem = PyList_GetItem (a0, i);
        if (!PyLong_Check (elem))
            return NULL;

        array [i] = (Window) PyLong_AsUnsignedLong (elem);
    }

    Py_BEGIN_ALLOW_THREADS
    sipCpp->setKDESystemTrayWindows (array, n);
    Py_END_ALLOW_THREADS
%End

    void                 setCurrentDesktop (int);
    void                 setDesktopGeometry (int, const NETSize&);
    void                 setDesktopViewport (int, const NETPoint&);
    void                 setNumberOfDesktops (int);
    void                 setDesktopName (int, const char*);

%If ( KDE_3_2_0 -  )
    void                 setActiveWindow (Window, NET::RequestSource, Time, Window);
%End

    void                 setActiveWindow (Window);
    void                 setWorkArea (int, const NETRect&);
    void                 setVirtualRoots (SIP_PYLIST) [void (Window*, uint)];
%MethodCode
//takes windows | (a Python list of Window)
    int n = PyList_Size (a0);

    Window array [n];
    PyObject *elem;

    for (int i = 0; i < n; i++)
    {
        elem = PyList_GetItem (a0, i);
        if (!PyLong_Check (elem))
            return NULL;

        array [i] = (Window) PyLong_AsUnsignedLong (elem);
    }

    Py_BEGIN_ALLOW_THREADS
    sipCpp->setVirtualRoots (array, n);
    Py_END_ALLOW_THREADS
%End


%If ( KDE_3_5_0 -  )
    void                 setShowingDesktop (bool);
    bool                 showingDesktop () const;
%End

    void                 closeWindowRequest (Window);
    void                 moveResizeRequest (Window, int, int, Direction);

%If ( KDE_3_2_0 -  )
    void                 moveResizeWindowRequest (Window, int, int, int, int, int);

%If ( KDE_3_3_0 -  )
    void                 restackRequest (Window, RequestSource, Window, int, Time);
%End

    void                 restackRequest (Window, Window, int);
//ig     void                 event (XEvent*, ulong*, int);
%End

//ig     ulong                event (XEvent*);

protected:
    virtual void         addClient (Window);
    virtual void         removeClient (Window);
    virtual void         addSystemTrayWin (Window);
    virtual void         removeSystemTrayWin (Window);
    virtual void         changeNumberOfDesktops (int);
    virtual void         changeDesktopGeometry (int, const NETSize&);
    virtual void         changeDesktopViewport (int, const NETPoint&);
    virtual void         changeCurrentDesktop (int);
    virtual void         changeActiveWindow (Window);
    virtual void         closeWindow (Window);
    virtual void         moveResize (Window, int, int, ulong);

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

};  // class NETRootInfo


%If ( KDE_3_2_0 -  )

class NETRootInfo2 : NETRootInfo
{
%TypeHeaderCode
#include <netwm.h>
%End


public:
                         NETRootInfo2 (Window, const char*, SIP_PYLIST, int = -1, bool = 1) [(Display*, Window, const char*, ulong*, int, int = -1, bool = 1)];
%MethodCode
//takes window | (Window) | rootWindow | (Window) | properties | (ulong) | role | (int) | a3 | (Role = Client)
    int count   = PyList_Size (a2);
    unsigned long *list = new unsigned long [count];

    for (int i = 0; i < count; i++)
        list [i] = (unsigned long)PyLong_AS_LONG (PyList_GET_ITEM (a2, i));

    Py_BEGIN_ALLOW_THREADS
    Display *d = tqt_xdisplay ();
    sipCpp = new sipNETRootInfo2 (d, a0, a1, list, count, a3, a4);
    Py_END_ALLOW_THREADS

    delete list;
%End

//ig                          NETRootInfo2 (Display*, const ulong*, int, int = -1, bool = 1);
    void                 sendPing (Window, Time);

protected:
    virtual void         gotPing (Window, Time);
    virtual void         changeActiveWindow (Window, NET::RequestSource, Time, Window);
    virtual void         restackWindow (Window, Window, int);
    virtual void         moveResizeWindow (Window, int, int, int, int, int);

};  // class NETRootInfo2

%End


%If ( KDE_3_3_0 -  )

class NETRootInfo3 : NETRootInfo2
{
%TypeHeaderCode
#include <netwm.h>
%End


public:
                         NETRootInfo3 (Window, const char*, SIP_PYLIST, int = -1, bool = 1) [(Display*, Window, const char*, ulong*, int, int = -1, bool = 1)];
%MethodCode
//takes window | (Window) | rootWindow | (Window) | properties | (ulong) | role | (int) | a3 | (Role = Client)
    int count   = PyList_Size (a2);
    unsigned long *list = new unsigned long [count];

    for (int i = 0; i < count; i++)
        list [i] = (unsigned long)PyLong_AS_LONG (PyList_GET_ITEM (a2, i));

    Py_BEGIN_ALLOW_THREADS
    Display *d = tqt_xdisplay ();
    sipCpp = new sipNETRootInfo3 (d, a0, a1, list, count, a3, a4);
    Py_END_ALLOW_THREADS

    delete list;
%End

//ig                          NETRootInfo3 (Display*, const ulong*, int, int = -1, bool = 1);
    void                 takeActivity (Window, Time, long);

protected:
    virtual void         restackWindow (Window, RequestSource, Window, int, Time);
    virtual void         gotTakeActivity (Window, Time, long);

};  // class NETRootInfo3

%End


%If ( KDE_3_5_0 -  )

class NETRootInfo4 : NETRootInfo3
{
%TypeHeaderCode
#include <netwm.h>
%End


public:
                         NETRootInfo4 (Window, const char*, SIP_PYLIST, int = -1, bool = 1) [(Display*, Window, const char*, ulong*, int, int = -1, bool = 1)];
%MethodCode
//takes window | (Window) | rootWindow | (Window) | properties | (ulong) | role | (int) | a3 | (Role = Client)
    int count   = PyList_Size (a2);
    unsigned long *list = new unsigned long [count];

    for (int i = 0; i < count; i++)
        list [i] = (unsigned long)PyLong_AS_LONG (PyList_GET_ITEM (a2, i));

    Py_BEGIN_ALLOW_THREADS
    Display *d = tqt_xdisplay ();
    sipCpp = new sipNETRootInfo4 (d, a0, a1, list, count, a3, a4);
    Py_END_ALLOW_THREADS

    delete list;
%End

//ig                          NETRootInfo4 (Display*, const ulong*, int, int = -1, bool = 1);

protected:
    virtual void         changeShowingDesktop (bool);

};  // class NETRootInfo4

%End


class NETWinInfo : NET
{
%TypeHeaderCode
#include <netwm.h>
%End


public:

%If ( KDE_3_2_0 -  )

    enum 
    {
        PROTOCOLS, 
        PROTOCOLS2, 
        PROPERTIES_SIZE
    };

                         NETWinInfo (Window, Window, SIP_PYLIST, Role = Client ) [(Display*, Window, Window, const ulong*, int, Role = Client )];
%MethodCode
//takes window | (Window) | rootWindow | (Window) | properties | (ulong) | role | (int) | a3 | (Role = Client)
    int count   = PyList_Size (a2);
    unsigned long *list = new unsigned long [count];

    for (int i = 0; i < count; i++)
        list [i] = (unsigned long)PyLong_AS_LONG (PyList_GET_ITEM (a2, i));

    Py_BEGIN_ALLOW_THREADS
    Display *d = tqt_xdisplay ();
    sipCpp = new sipNETWinInfo (d, a0, a1, list, count, a3);
    Py_END_ALLOW_THREADS

    delete list;
%End

%End

                         NETWinInfo (Window, Window, ulong, Role = Client ) [(Display*, Window, Window, ulong, Role = Client )];
%MethodCode
//returns ()
//takes window (Window) | rootWindow (Window) | properties (ulong) | role (Role = Client)

    Py_BEGIN_ALLOW_THREADS
    Display *d = tqt_xdisplay ();
    sipCpp = new sipNETWinInfo (d, a0, a1, a2, a3);
    Py_END_ALLOW_THREADS
%End

                         NETWinInfo (const NETWinInfo&);

%If ( KDE_3_2_0 -  )
    bool                 hasNETSupport () const;
    SIP_PYLIST           passedProperties () const [ulong* ()];
%MethodCode
//returns a Python list of ulong
    int count = 2;
    const ulong *props;
    Py_BEGIN_ALLOW_THREADS
    props = sipCpp->passedProperties ();
    Py_END_ALLOW_THREADS

    for (int i = 0; i < count; i++)
        PyList_Append (sipRes, PyLong_FromUnsignedLong (props [i]));
%End

%End

    ulong                properties () const;
    NETRect              iconGeometry () const;
    ulong                state () const;

%If ( KDE_3_3_0 -  )
    NETExtendedStrut     extendedStrut () const;
%End

    NETStrut             strut () const;

%If ( KDE_3_2_0 -  )
    WindowType           windowType (ulong) const;
%End

    WindowType           windowType () const;
    const char*          name () const;
    const char*          visibleName () const;
    const char*          iconName () const;
    const char*          visibleIconName () const;
    int                  desktop () const;
    int                  pid () const;
    Bool                 handledIcons () const;
    Window               kdeSystemTrayWinFor () const;
    MappingState         mappingState () const;
//ig     void                 setIcon (NETIcon, Bool = True);
    void                 setIconGeometry (NETRect);

%If ( KDE_3_3_0 -  )
    void                 setExtendedStrut (const NETExtendedStrut&);
%End

    void                 setStrut (NETStrut);
    void                 setState (ulong, ulong);
    void                 setWindowType (WindowType);
    void                 setName (const char*);
    void                 setVisibleName (const char*);
    void                 setIconName (const char*);
    void                 setVisibleIconName (const char*);
    void                 setDesktop (int);
    void                 setPid (int);
    void                 setHandledIcons (Bool);
    void                 setKDESystemTrayWinFor (Window);

%If ( KDE_3_5_0 -  )
    void                 setFrameExtents (NETStrut);
%End

    void                 setKDEFrameStrut (NETStrut);
//ig     NETIcon              icon (int = -1, int = -1) const;

%If ( KDE_3_2_0 -  )
    void                 setUserTime (Time);
    Time                 userTime () const;
    void                 setStartupId (const char*);
    const char*          startupId () const;
    void                 setAllowedActions (ulong);
    ulong                allowedActions () const;
    Window               transientFor () const;
    Window               groupLeader () const;

%If ( KDE_3_3_0 -  )
    const char*          windowClassClass () const;
    const char*          windowClassName () const;
    const char*          windowRole () const;
    const char*          clientMachine () const;
%End

%End

    void                 kdeGeometry (NETRect&, NETRect&);

%If ( KDE_3_2_0 -  )
//ig     void                 event (XEvent*, ulong*, int);
%End

//ig     ulong                event (XEvent*);
//ig     const int            OnAllDesktops;

protected:
    virtual void         changeDesktop (int);
    virtual void         changeState (ulong, ulong);

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

};  // class NETWinInfo

//force
typedef ulong Time;
//end
