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


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


class KMdiWin32IconButton : QLabel
{
%TypeHeaderCode
#include <kmdichildfrm.h>
%End


public:
                         KMdiWin32IconButton (QWidget*, const char* = 0);
    virtual void         mousePressEvent (QMouseEvent*);

signals:
    void                 pressed ();

};  // class KMdiWin32IconButton


class KMdiChildFrmMoveEvent : QCustomEvent
{
%TypeHeaderCode
#include <kmdichildfrm.h>
%End


public:
                         KMdiChildFrmMoveEvent (QMoveEvent*);

};  // class KMdiChildFrmMoveEvent


class KMdiChildFrmDragBeginEvent : QCustomEvent
{
%TypeHeaderCode
#include <kmdichildfrm.h>
%End


public:
                         KMdiChildFrmDragBeginEvent (QMouseEvent*);

};  // class KMdiChildFrmDragBeginEvent


class KMdiChildFrmDragEndEvent : QCustomEvent
{
%TypeHeaderCode
#include <kmdichildfrm.h>
%End


public:
                         KMdiChildFrmDragEndEvent (QMouseEvent*);

};  // class KMdiChildFrmDragEndEvent


class KMdiChildFrmResizeBeginEvent : QCustomEvent
{
%TypeHeaderCode
#include <kmdichildfrm.h>
%End


public:
                         KMdiChildFrmResizeBeginEvent (QMouseEvent*);

};  // class KMdiChildFrmResizeBeginEvent


class KMdiChildFrmResizeEndEvent : QCustomEvent
{
%TypeHeaderCode
#include <kmdichildfrm.h>
%End


public:
                         KMdiChildFrmResizeEndEvent (QMouseEvent*);

};  // class KMdiChildFrmResizeEndEvent


class KMdiChildFrm : QFrame
{
%TypeHeaderCode
#include <kmdichildfrm.h>
%End


public:

    enum MdiWindowState
    {
        Normal, 
        Maximized, 
        Minimized
    };

    KMdiChildView*       m_pClient;

protected:

public:
                         KMdiChildFrm (KMdiChildArea*);
    void                 setClient (KMdiChildView*, bool = 0);
    void                 unsetClient (QPoint = QPoint (0 ,0 ));
    void                 setIcon (const QPixmap&);
    QPixmap*             icon () const;
    void                 enableClose (bool);
    void                 setCaption (const QString&);
    const QString&       caption ();
    void                 setState (KMdiChildFrm::MdiWindowState, bool = 1);
    KMdiChildFrm::MdiWindowState state () const;
    QRect                mdiAreaContentsRect () const;
    QRect                restoreGeometry () const;
    void                 setRestoreGeometry (const QRect&);
    void                 updateRects ();
    QPopupMenu*          systemMenu () const;
    int                  captionHeight () const;
    void                 redecorateButtons ();
    bool                 isInDrag () const;
    bool                 isInResize () const;
    void                 raiseAndActivate ();
    virtual void         setMinimumSize (int, int);

public slots:
    void                 slot_resizeViaSystemMenu ();

protected:
    virtual void         resizeEvent (QResizeEvent*);
    virtual void         mouseMoveEvent (QMouseEvent*);
    virtual void         mousePressEvent (QMouseEvent*);
    virtual void         mouseReleaseEvent (QMouseEvent*);
    virtual void         moveEvent (QMoveEvent*);
    virtual void         leaveEvent (QEvent*);
    virtual bool         eventFilter (QObject*, QEvent*);
    void                 resizeWindow (int, int, int);
    void                 setResizeCursor (int);
    void                 unsetResizeCursor ();
    virtual void         switchToMinimizeLayout ();
    void                 doResize ();
    void                 doResize (bool);

protected slots:
    void                 maximizePressed ();
    void                 restorePressed ();
    void                 minimizePressed ();
    void                 closePressed ();
    void                 undockPressed ();
    void                 showSystemMenu ();

protected:
//ig     void                 linkChildren (QDict<FocusPolicy>*);
    QDict<QWidget::FocusPolicy>* unlinkChildren ();
    int                  getResizeCorner (int, int);

protected:

%If (  - KDE_3_2_2 )
    void                 linkChildren (QDict<QWidget::FocusPolicy>*);
%End


};  // class KMdiChildFrm



%MappedType QDict<QWidget::FocusPolicy>
//converts a Python dict of QWidget::FocusPolicy
{
%TypeHeaderCode
#include <qdict.h>
#include <sipqtQWidget.h>
#include <sipqtQString.h>
%End

%ConvertFromTypeCode
// Convert to a Python dictionary

    if (!sipCpp)
    return PyDict_New();

    PyObject *dict;

    // Create the dictionary.

    if ((dict = PyDict_New()) == NULL)
        return NULL;

    // Get it.

    QDict<QWidget::FocusPolicy> qdict = *sipCpp;
    QDictIterator<QWidget::FocusPolicy> it (qdict);

    while (it.current ())
    {
        PyObject *a0 = sipConvertFromInstance (&it.currentKey (), sipClass_QString, sipTransferObj);
        PyObject *a1 = PyInt_FromLong ((long) it.current ());

        if ((a0 == NULL) || (a1 == NULL) || (PyDict_SetItem (dict, a0, a1) < 0))
        {
            Py_XDECREF (a0);
            Py_XDECREF (a1);
            Py_DECREF (dict);
            return NULL;
        }
    }

    return dict;
%End


%ConvertToTypeCode
    // Convert a Python dictionary to a QDict<int> on the heap.

    if (sipIsErr == NULL)
        return PyDict_Check(sipPy);

    QDict<QWidget::FocusPolicy>* qdict = new QDict<QWidget::FocusPolicy>;

    PyObject *key, *value;
    SIP_SSIZE_T pos = 0;
    QString *a0;
    QWidget::FocusPolicy a1;

    while (PyDict_Next(sipPy, &pos, &key, &value))
    {
        int iserr = 0;

        a0 = (QString *)sipForceConvertTo_QString (key, &iserr);

        if ((iserr) || (!PyInt_Check (value)))
        {
            *sipIsErr = 1;
            delete qdict;
            return 0;
        }

        a1 = (QWidget::FocusPolicy) PyInt_AS_LONG (value);

        qdict->insert (*a0, &a1);
    }

    *sipCppPtr = qdict;

    return 1;
%End
};


