//
//     Copyright 2008 Jim Bublitz <jbublitz@nwinternet.com>
//     Earlier copyrights 1998 - 2007 Jim Bublitz also apply

//                 Generated by twine

// This file is part of PyKDE4.

// PyKDE4 is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; either version 2.1 of
// the License, or (at your option) any later version.

// PyKDE4 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 program.  If not, see <http://www.gnu.org/licenses/>.

//end


//end


class NETPoint
{
%TypeHeaderCode
#include <netwm_def.h>
%End


public:
                            NETPoint ();
    int x;
    int y;
};   // NETPoint


class NETSize
{
%TypeHeaderCode
#include <netwm_def.h>
%End


public:
                            NETSize ();
    int width;
    int height;
};   // NETSize


class NETRect
{
%TypeHeaderCode
#include <netwm_def.h>
%End


public:
    NETPoint pos;
    NETSize size;
};   // NETRect


class NETIcon
{
%TypeHeaderCode
#include <netwm_def.h>
%End


public:
                            NETIcon ();
    NETSize size;
    unsigned char* data;
};   // NETIcon


class NETExtendedStrut
{
%TypeHeaderCode
#include <netwm_def.h>
%End


public:
                            NETExtendedStrut ();
    int left_width;
    int left_start;
    int left_end;
    int right_width;
    int right_start;
    int right_end;
    int top_width;
    int top_start;
    int top_end;
    int bottom_width;
    int bottom_start;
    int bottom_end;
};   // NETExtendedStrut


class NETStrut
{
%TypeHeaderCode
#include <netwm_def.h>
%End


public:
                            NETStrut ();
    int left;
    int right;
    int top;
    int bottom;
};   // NETStrut


class NETFullscreenMonitors
{
%TypeHeaderCode
#include <netwm_def.h>
%End

public:
                            NETFullscreenMonitors ();
    int top;
    int bottom;
    int left;
    int right;
    bool                    isSet () const;
};   // NETFullscreenMonitors


class NET
{
%TypeHeaderCode
#include <netwm_def.h>
%End


public:

    enum Role
    {
        Client,
        WindowManager
    };


    enum WindowType
    {
        Unknown,
        Normal,
        Desktop,
        Dock,
        Toolbar,
        Menu,
        Dialog,
        Override,
        TopMenu,
        Utility,
        Splash,
        DropdownMenu,
        PopupMenu,
        Tooltip,
        Notification,
        ComboBox,
        DNDIcon
    };


    enum WindowTypeMask
    {
        NormalMask,
        DesktopMask,
        DockMask,
        ToolbarMask,
        MenuMask,
        DialogMask,
        OverrideMask,
        TopMenuMask,
        UtilityMask,
        SplashMask,
        DropdownMenuMask,
        PopupMenuMask,
        TooltipMask,
        NotificationMask,
        ComboBoxMask,
        DNDIconMask,
        AllTypesMask
    };

    static bool             typeMatchesMask (NET::WindowType type, unsigned long mask);

    enum State
    {
        Modal,
        Sticky,
        MaxVert,
        MaxHoriz,
        Max,
        Shaded,
        SkipTaskbar,
        KeepAbove,
        StaysOnTop,
        SkipPager,
        Hidden,
        FullScreen,
        KeepBelow,
        DemandsAttention
    };


    enum Direction
    {
        TopLeft,
        Top,
        TopRight,
        Right,
        BottomRight,
        Bottom,
        BottomLeft,
        Left,
        Move,
        KeyboardSize,
        KeyboardMove,
        MoveResizeCancel
    };


    enum MappingState
    {
        Visible,
        Withdrawn,
        Iconic
    };


    enum Action
    {
        ActionMove,
        ActionResize,
        ActionMinimize,
        ActionShade,
        ActionStick,
        ActionMaxVert,
        ActionMaxHoriz,
        ActionMax,
        ActionFullScreen,
        ActionChangeDesktop,
        ActionClose
    };


    enum Property
    {
        Supported,
        ClientList,
        ClientListStacking,
        NumberOfDesktops,
        DesktopGeometry,
        DesktopViewport,
        CurrentDesktop,
        DesktopNames,
        ActiveWindow,
        WorkArea,
        SupportingWMCheck,
        VirtualRoots,
        CloseWindow,
        WMMoveResize,
        WMName,
        WMVisibleName,
        WMDesktop,
        WMWindowType,
        WMState,
        WMStrut,
        WMIconGeometry,
        WMIcon,
        WMPid,
        WMHandledIcons,
        WMPing,
        XAWMState,
        WMFrameExtents,
        WMIconName,
        WMVisibleIconName,
        WMGeometry
    };


    enum Property2
    {
        WM2UserTime,
        WM2StartupId,
        WM2TransientFor,
        WM2GroupLeader,
        WM2AllowedActions,
        WM2RestackWindow,
        WM2MoveResizeWindow,
        WM2ExtendedStrut,
        WM2TakeActivity,
        WM2KDETemporaryRules,
        WM2WindowClass,
        WM2WindowRole,
        WM2ClientMachine,
        WM2ShowingDesktop,
        WM2Opacity,
        WM2DesktopLayout,
        WM2FullPlacement,
        WM2FullscreenMonitors
    };


    enum 
    {
        OnAllDesktops
    };


    enum RequestSource
    {
        FromUnknown,
        FromApplication,
        FromTool
    };


    enum Orientation
    {
        OrientationHorizontal,
        OrientationVertical
    };


    enum DesktopLayoutCorner
    {
        DesktopLayoutCornerTopLeft,
        DesktopLayoutCornerTopRight,
        DesktopLayoutCornerBottomLeft,
        DesktopLayoutCornerBottomRight
    };

    static int              timestampCompare (unsigned long time1, unsigned long time2);
    static int              timestampDiff (unsigned long time1, unsigned long time2);

};   // NET


