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


//                 Generated by preSip
//            module tdemdi  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 KMdiViewCloseEvent : TQCustomEvent
{
%TypeHeaderCode
#include <tdemdimainfrm.h>
%End


public:
                         KMdiViewCloseEvent (KMdiChildView*);

};  // class KMdiViewCloseEvent


class KMdiMainFrm : KParts::DockMainWindow
{
%TypeHeaderCode
#include <tdemdimainfrm.h>
%End


protected:

public:
                         KMdiMainFrm (TQWidget*, const char* = "", KMdi::MdiMode = KMdi ::ChildframeMode , WFlags = WType_TopLevel |WDestructiveClose );
    void                 setStandardMDIMenuEnabled (bool = 1);
    void                 setManagedDockPositionModeEnabled (bool);
    bool                 isInMaximizedChildFrmMode ();
    KMdi::MdiMode        mdiMode ();
    KMdiChildView*       activeWindow ();
    virtual TQPopupMenu*  taskBarPopup (KMdiChildView*, bool = 0);
    virtual TQPopupMenu*  windowPopup (KMdiChildView*, bool = 1);
    virtual void         applyOptions ();
    KMdiChildView*       findWindow (const TQString&);

    enum ExistsAs
    {
        DocumentView, 
        ToolView, 
        AnyView
    };

    bool                 windowExists (KMdiChildView*, KMdiMainFrm::ExistsAs);
    virtual bool         event (TQEvent*);
    virtual void         setSysButtonsAtMenuPosition ();
    virtual int          taskBarHeight ();
    virtual void         setUndockPositioningOffset (TQPoint);
//ig     KMdiIterator<KMdiChildView*>* createIterator ();
//ig     void                 deleteIterator (KMdiIterator<KMdiChildView*>*);
    TQPopupMenu*          windowMenu () const;
    virtual void         setBackgroundColor (const TQColor&);
    virtual void         setBackgroundPixmap (const TQPixmap&);
    void                 setDefaultChildFrmSize (const TQSize&);
    TQSize                defaultChildFrmSize ();
    virtual void         setMinimumSize (int, int);
    int                  childFrameModeHeight ();
    virtual void         setMenuForSDIModeSysButtons (KMenuBar* = 0);
    static int           frameDecorOfAttachedViews ();
    void                 fakeSDIApplication ();
    bool                 isFakingSDIApplication () const;
    virtual bool         eventFilter (TQObject*, TQEvent*);
    void                 findRootDockWidgets (TQPtrList<KDockWidget>*, TQValueList<TQRect>*);
    void                 setSwitching (const bool);
    bool                 switching () const;

public slots:
    KMdiChildView*       createWrapper (TQWidget*, const TQString&, const TQString&);
    virtual void         addWindow (KMdiChildView*, int = KMdi ::StandardAdd );

%If ( KDE_3_3_0 -  )
    void                 addWindow (KMdiChildView*, int, int);
%End

    virtual void         addWindow (KMdiChildView*, TQPoint, int = KMdi ::StandardAdd );
    virtual void         addWindow (KMdiChildView*, TQRect, int = KMdi ::StandardAdd );
    virtual KMdiToolViewAccessor* addToolWindow (TQWidget*, KDockWidget::DockPosition = KDockWidget ::DockNone , TQWidget* = 0, int = 50, const TQString& = 0, const TQString& = 0);
    virtual void         deleteToolWindow (TQWidget*);
    virtual void         deleteToolWindow (KMdiToolViewAccessor*);
    KMdiToolViewAccessor* createToolWindow ();
    virtual void         removeWindowFromMdi (KMdiChildView*);
    virtual void         closeWindow (KMdiChildView*, bool = 1);
    virtual void         slot_toggleTaskBar ();
    virtual void         attachWindow (KMdiChildView*, bool = 1, bool = 0);
    virtual void         detachWindow (KMdiChildView*, bool = 1);
    virtual void         childWindowCloseRequest (KMdiChildView*);
    virtual void         closeAllViews ();
    virtual void         iconifyAllViews ();
    virtual void         closeActiveView ();
    virtual void         switchToToplevelMode ();
    virtual void         finishToplevelMode ();
    virtual void         switchToChildframeMode ();
    virtual void         finishChildframeMode ();
    virtual void         switchToTabPageMode ();
    virtual void         finishTabPageMode ();
    virtual void         switchToIDEAlMode ();
    virtual void         finishIDEAlMode (bool = 1);
    void                 setIDEAlModeStyle (int);

%If ( KDE_3_3_0 -  )
    void                 setToolviewStyle (int);
%End

    bool                 isViewTaskBarOn ();
    virtual void         showViewTaskBar ();
    virtual void         hideViewTaskBar ();
    virtual void         fillWindowMenu ();
    virtual void         cascadeWindows ();
    virtual void         cascadeMaximized ();
    virtual void         expandVertical ();
    virtual void         expandHorizontal ();
    virtual void         tilePragma ();
    virtual void         tileAnodine ();
    virtual void         tileVertically ();
    virtual void         setFrameDecorOfAttachedViews (int);
    virtual void         setEnableMaximizedChildFrmMode (bool);
    virtual void         activateNextWin ();
    virtual void         activatePrevWin ();
    virtual void         activateFirstWin ();
    virtual void         activateLastWin ();
    virtual void         activateView (int);

protected:
    virtual void         resizeEvent (TQResizeEvent*);
    virtual void         createTaskBar ();
    virtual void         createMdiManager ();
    void                 blockClearingOfWindowMenu (bool);
    void                 findToolViewsDockedToMain (TQPtrList<KDockWidget>*, KDockWidget::DockPosition);
    void                 dockToolViewsIntoContainers (TQPtrList<KDockWidget>&, KDockWidget*);
    TQStringList          prepareIdealToTabs (KDockWidget*);
    void                 idealToolViewsToStandardTabs (TQStringList, KDockWidget::DockPosition, int);
//force
%If ( KDE_3_4_0 - )
    KTabWidget*          tabWidget() const;
%End
//end

%If ( KDE_3_3_0 -  )
    KMdi::TabWidgetVisibility tabWidgetVisibility ();
    void                 setTabWidgetVisibility (KMdi::TabWidgetVisibility);
%End


protected slots:
    virtual void         activateView (KMdiChildView*);
    virtual void         taskbarButtonRightClicked (KMdiChildView*);
    void                 switchOffMaximizeModeForMenu (KMdiChildFrm*);
    void                 updateSysButtonConnections (KMdiChildFrm*, KMdiChildFrm*);
    void                 windowMenuItemActivated (int);
    void                 dockMenuItemActivated (int);
    void                 popupWindowMenu (TQPoint);
    void                 dragEndTimeOut ();
    void                 closeViewButtonPressed ();

signals:
    void                 lastChildFrmClosed ();
    void                 lastChildViewClosed ();
    void                 leftTopLevelMode ();
    void                 childViewIsDetachedNow (TQWidget*);
    void                 collapseOverlapContainers ();
    void                 mdiModeHasBeenChangedTo (KMdi::MdiMode);
    void                 viewActivated (KMdiChildView*);
    void                 viewDeactivated (KMdiChildView*);

public slots:
    void                 prevToolViewInDock ();
    void                 nextToolViewInDock ();

signals:
    void                 toggleTop ();
    void                 toggleLeft ();
    void                 toggleRight ();
    void                 toggleBottom ();

};  // class KMdiMainFrm



%MappedType TQPtrList<KDockWidget>
//converts a Python list of KDockWidget
{
%TypeHeaderCode
#include <tqptrlist.h>
%End

%ConvertFromTypeCode
    if (!sipCpp)
        return PyList_New (0);

    PyObject *pylist;

    // Create the list

    if ((pylist = PyList_New(0)) == NULL)
        return NULL;

    // Get it.

    TQPtrList<KDockWidget> *cpplist = (TQPtrList<KDockWidget> *)sipCpp;
    KDockWidget *cpp;
    PyObject *inst;

    // the loop depends on the type of iterator the  tmeplate makes available
    for(cpp = cpplist->first (); cpp != 0; cpp = cpplist->next () )
    {
        if (((inst = sipConvertFromInstance (cpp, sipClass_KDockWidget, sipTransferObj)) == NULL)
            || PyList_Append (pylist, inst) < 0)
        {
            Py_DECREF (pylist);
            return NULL;
        }
    }

    return pylist;
%End

%ConvertToTypeCode
    if (sipIsErr == NULL)
        return PyList_Check(sipPy);

    TQPtrList<KDockWidget> *cpplist = new TQPtrList<KDockWidget>;

    PyObject *elem;
    KDockWidget *cpp;
    int iserr = 0;

    for (int i = 0; i < PyList_Size (sipPy); i++)
    {
        elem = PyList_GET_ITEM (sipPy, i);
        cpp = (KDockWidget *)sipForceConvertToType(elem, sipType_KDockWidget, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);

        if (iserr)
        {
            *sipIsErr = 1;
            delete cpplist;
            return 0;
        }

        cpplist->append (cpp);
    }

    *sipCppPtr = cpplist;

    return 1;
%End
};


%MappedType TQValueList<TQRect>
//converts a Python list of TQRect
{
%TypeHeaderCode
#include <tqvaluelist.h>
%End

%ConvertFromTypeCode
    if (!sipCpp)
        return PyList_New(0);

    // Create the list
    PyObject *pylist;
    if ((pylist = PyList_New(0)) == NULL)
        return NULL;

    TQValueList<TQRect> *cpplist = (TQValueList<TQRect> *)sipCpp;
    PyObject *inst;

    // Get it.
    TQValueList<TQRect>::Iterator it;
    for( it = cpplist->begin(); it != cpplist->end(); ++it )
    {
        if (((inst = sipConvertFromNewType(new TQRect(*it), sipType_TQRect, NULL)) == NULL)
            || PyList_Append (pylist, inst) < 0)
        {
            Py_DECREF (pylist);
            return NULL;
        }
    }

    return pylist;
%End


%ConvertToTypeCode
    if (sipIsErr == NULL)
        return PyList_Check(sipPy);

    TQValueList<TQRect> *cpplist = new TQValueList<TQRect>;

    PyObject *elem;
    TQRect *cpp;
    int iserr = 0;

    for (int i = 0; i < PyList_Size (sipPy); i++)
    {
        elem = PyList_GET_ITEM (sipPy, i);
        cpp = (TQRect *)sipForceConvertToType(elem, sipType_TQRect, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);

        if (iserr)
        {
            *sipIsErr = 1;
            delete cpplist;
            return 0;
        }

        cpplist->append (*cpp);
    }

    *sipCppPtr = cpplist;

    return 1;
%End
};


