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


//                 Generated by preSip
//            module kdecore  version KDE_3_3_2


// 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.,
// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.


class KWin
{
%TypeHeaderCode
#include <kwin.h>
%End


public:

%If ( KDE_3_2_0 -  )
    static void          activateWindow (WId, long = 0);
    static void          forceActiveWindow (WId, long = 0);
%End

    static void          setActiveWindow (WId);

%If ( KDE_3_2_0 -  )
    static void          demandAttention (WId, bool = 1);
    static void          setUserTime (WId, long);
%End

    static void          invokeContextHelp ();
    static void          setSystemTrayWindowFor (WId, WId);

%If ( KDE_3_2_0 -  )

    class WindowInfo
    {

    public:
                             WindowInfo (WId, ulong, ulong);
                             WindowInfo ();
        bool                 valid (bool = 0) const;
        WId                  win () const;
        ulong                state () const;

%If ( KDE_3_2_1 -  )
        bool                 hasState (ulong) const;
%End

        bool                 isMinimized () const;
        NET::MappingState    mappingState () const;

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

        NETStrut             strut () const;
        NET::WindowType      windowType (int) const;
        QString              visibleName () const;
        QString              visibleNameWithState () const;
        QString              name () const;
        QString              visibleIconName () const;
        QString              visibleIconNameWithState () const;
        QString              iconName () const;
        bool                 isOnCurrentDesktop () const;
        bool                 isOnDesktop (int) const;
        bool                 onAllDesktops () const;
        int                  desktop () const;
        QRect                geometry () const;
        QRect                frameGeometry () const;
        WId                  transientFor () const;
        WId                  groupLeader () const;

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

        bool                 actionSupported (NET::Action) const;
                             WindowInfo (const KWin::WindowInfo&);

    };  // class WindowInfo


public:
%End


%If ( KDE_3_2_0 -  )
    static KWin::WindowInfo windowInfo (WId, ulong = 0, ulong = 0);
    static WId           transientFor (WId);
    static WId           groupLeader (WId);
%End

    static QPixmap       icon (WId, int = -1, int = -1, bool = 0);

%If ( KDE_3_2_0 -  )

    enum IconSource
    {
        NETWM, 
        WMHints, 
        ClassHint, 
        XApp
    };

    static QPixmap       icon (WId, int, int, bool, int);
%End

    static void          setIcons (WId, const QPixmap&, const QPixmap&);
    static void          setType (WId, NET::WindowType);
    static void          setState (WId, ulong);
    static void          clearState (WId, ulong);
    static void          setOnAllDesktops (WId, bool);
    static void          setOnDesktop (WId, int);

%If ( KDE_3_3_0 -  )
    static void          setExtendedStrut (WId, int, int, int, int, int, int, int, int, int, int, int, int);
%End

    static void          setStrut (WId, int, int, int, int);
    static int           currentDesktop ();
    static int           numberOfDesktops ();
    static void          setCurrentDesktop (int);
    static void          iconifyWindow (WId, bool = 1);
    static void          deIconifyWindow (WId, bool = 1);

%If ( KDE_3_2_0 -  )
    static void          raiseWindow (WId);
    static void          lowerWindow (WId);
    static bool          icccmCompliantMappingState ();
    static bool          allowedActionsSupported ();
    static QString       readNameProperty (WId, ulong);
%End


    class Info
    {

    public:
        WId                  win;
        ulong                state;

%If ( KDE_3_2_0 -  )
        bool                 isMinimized () const;
%End

        bool                 isIconified () const;
        NET::MappingState    mappingState;
        NETStrut             strut;
        NET::WindowType      windowType;
        QString              visibleName;
        QString              name;
        int                  desktop;
        bool                 onAllDesktops;
        pid_t                pid;
        QRect                geometry;
        QRect                frameGeometry;
        QString              visibleNameWithState () const;

    };  // class Info


public:
    static KWin::Info    info (WId);
    static void          appStarted ();

};  // class KWin

