//
//     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/>.

namespace DOM
{

class EventListener : DOM::DomShared
{
%TypeHeaderCode
#include <dom2_events.h>
%End


public:
                            EventListener ();
    virtual void            handleEvent (DOM::Event& evt);
    virtual DOM::DOMString  eventListenerType ();
};   // EventListener


class Event
{
%TypeHeaderCode
#include <dom2_events.h>
%End


public:
                            Event ();
                            Event (const DOM::Event& other);

    enum PhaseType
    {
        CAPTURING_PHASE,
        AT_TARGET,
        BUBBLING_PHASE
    };

    DOM::DOMString          type () const;
    DOM::Node               target () const;
    DOM::Node               currentTarget () const;
    unsigned short          eventPhase () const;
    bool                    bubbles () const;
    bool                    cancelable () const;
    DOM::DOMTimeStamp            timeStamp () const;
    void                    stopPropagation ();
    void                    preventDefault ();
    void                    initEvent (const DOM::DOMString& eventTypeArg, bool canBubbleArg, bool cancelableArg);
//ig     EventImpl*         handle () const;
    bool                    isNull () const;

protected:
//ig                        Event (EventImpl* i);

//force
    typedef qlonglong DOMTimeStamp;

//end

};   // Event


class EventException
{
%TypeHeaderCode
#include <dom2_events.h>
%End


public:
                            EventException (unsigned short _code);
                            EventException (const DOM::EventException& other);

    enum EventExceptionCode
    {
        UNSPECIFIED_EVENT_TYPE_ERR,
        _EXCEPTION_OFFSET,
        _EXCEPTION_MAX
    };

    unsigned short code;
};   // EventException


class UIEvent : DOM::Event
{
%TypeHeaderCode
#include <dom2_events.h>
%End


public:
                            UIEvent ();
                            UIEvent (const DOM::UIEvent& other);
                            UIEvent (const DOM::Event& other);
    DOM::AbstractView       view () const;
    long                    detail () const;
    int                     keyCode () const;
    int                     charCode () const;
    int                     pageX () const;
    int                     pageY () const;
    int                     layerX () const;
    int                     layerY () const;
    int                     which () const;
    void                    initUIEvent (const DOM::DOMString& typeArg, bool canBubbleArg, bool cancelableArg, const DOM::AbstractView& viewArg, long detailArg);

protected:
//ig                        UIEvent (UIEventImpl* impl);
};   // UIEvent


class MouseEvent : DOM::UIEvent
{
%TypeHeaderCode
#include <dom2_events.h>
%End


public:
                            MouseEvent ();
                            MouseEvent (const DOM::MouseEvent& other);
                            MouseEvent (const DOM::Event& other);
    long                    screenX () const;
    long                    screenY () const;
    long                    clientX () const;
    long                    clientY () const;
    bool                    ctrlKey () const;
    bool                    shiftKey () const;
    bool                    altKey () const;
    bool                    metaKey () const;
    unsigned short          button () const;
    DOM::Node               relatedTarget () const;
    void                    initMouseEvent (const DOM::DOMString& typeArg, bool canBubbleArg, bool cancelableArg, const DOM::AbstractView& viewArg, long detailArg, long screenXArg, long screenYArg, long clientXArg, long clientYArg, bool ctrlKeyArg, bool altKeyArg, bool shiftKeyArg, bool metaKeyArg, unsigned short buttonArg, const DOM::Node& relatedTargetArg);

protected:
//ig                        MouseEvent (MouseEventImpl* impl);
};   // MouseEvent


class TextEvent : DOM::UIEvent
{
%TypeHeaderCode
#include <dom2_events.h>
%End


public:
                            TextEvent ();
                            TextEvent (const DOM::TextEvent& other);
                            TextEvent (const DOM::Event& other);
    void                    initTextEvent (const DOM::DOMString& typeArg, bool canBubbleArg, bool cancelableArg, const DOM::AbstractView& viewArg, const DOM::DOMString& dataArg);
//ig     DOM::DOMString     data () const;
};   // TextEvent


class KeyboardEvent : DOM::UIEvent
{
%TypeHeaderCode
#include <dom2_events.h>
%End


public:
                            KeyboardEvent ();
                            KeyboardEvent (const DOM::KeyboardEvent& other);
                            KeyboardEvent (const DOM::Event& other);

    enum KeyLocation
    {
        DOM_KEY_LOCATION_STANDARD,
        DOM_KEY_LOCATION_LEFT,
        DOM_KEY_LOCATION_RIGHT,
        DOM_KEY_LOCATION_NUMPAD
    };

    DOM::DOMString          keyIdentifier () const;
    unsigned long           keyLocation () const;
    bool                    ctrlKey () const;
    bool                    shiftKey () const;
    bool                    altKey () const;
    bool                    metaKey () const;
    bool                    getModifierState (DOM::DOMString keyIdentifierArg) const;
    void                    initKeyboardEvent (DOM::DOMString typeArg, bool canBubbleArg, bool cancelableArg, DOM::AbstractView viewArg, DOM::DOMString keyIdentifierArg, unsigned long keyLocationArg, DOM::DOMString modifiersList);
};   // KeyboardEvent


class MutationEvent : DOM::Event
{
%TypeHeaderCode
#include <dom2_events.h>
%End


public:
                            MutationEvent ();
                            MutationEvent (const DOM::MutationEvent& other);
                            MutationEvent (const DOM::Event& other);

    enum attrChangeType
    {
        MODIFICATION,
        ADDITION,
        REMOVAL
    };

    DOM::Node               relatedNode () const;
    DOM::DOMString          prevValue () const;
    DOM::DOMString          newValue () const;
    DOM::DOMString          attrName () const;
    unsigned short          attrChange () const;
    void                    initMutationEvent (const DOM::DOMString& typeArg, bool canBubbleArg, bool cancelableArg, const DOM::Node& relatedNodeArg, const DOM::DOMString& prevValueArg, const DOM::DOMString& newValueArg, const DOM::DOMString& attrNameArg, unsigned short attrChangeArg);

protected:
//ig                        MutationEvent (MutationEventImpl* impl);

public:

//  Subclasses of DOM::Event

%ConvertToSubClassCode

    sipClass = NULL;

    if (dynamic_cast<DOM::MutationEvent*>(sipCpp))
        sipClass = sipClass_DOM_MutationEvent;
    else if (dynamic_cast<DOM::UIEvent*>(sipCpp))
        {
            sipClass = sipClass_DOM_UIEvent;
            if (dynamic_cast<DOM::KeyboardEvent*>(sipCpp))
                sipClass = sipClass_DOM_KeyboardEvent;
            else if (dynamic_cast<DOM::MouseEvent*>(sipCpp))
                sipClass = sipClass_DOM_MouseEvent;
            else if (dynamic_cast<DOM::TextEvent*>(sipCpp))
                sipClass = sipClass_DOM_TextEvent;
        }
%End

};   // MutationEvent

};   // DOM


