kmdi Library API Documentation

kmdimainfrm.h

00001 //----------------------------------------------------------------------------
00002 //    filename             : kmdimainfrm.h
00003 //----------------------------------------------------------------------------
00004 //    Project              : KDE MDI extension
00005 //
00006 //    begin                : 07/1999       by Szymon Stefanek as part of kvirc
00007 //                                         (an IRC application)
00008 //    changes              : 09/1999       by Falk Brettschneider to create an
00009 //                           - 06/2000     stand-alone Qt extension set of
00010 //                                         classes and a Qt-based library
00011 //                         : 02/2000       by Massimo Morin (mmorin@schedsys.com)
00012 //                           2000-2003     maintained by the KDevelop project
00013 //    patches              : */2000        by Lars Beikirch (Lars.Beikirch@gmx.net)
00014 //                         : 01/2003       by Jens Zurheide (jens.zurheide@gmx.de)
00015 //
00016 //    copyright            : (C) 1999-2003 by Falk Brettschneider
00017 //                                         and
00018 //                                         Szymon Stefanek (stefanek@tin.it)
00019 //    email                :  falkbr@kdevelop.org (Falk Brettschneider)
00020 //----------------------------------------------------------------------------
00021 //
00022 //----------------------------------------------------------------------------
00023 //
00024 //    This program is free software; you can redistribute it and/or modify
00025 //    it under the terms of the GNU Library General Public License as
00026 //    published by the Free Software Foundation; either version 2 of the
00027 //    License, or (at your option) any later version.
00028 //
00029 //----------------------------------------------------------------------------
00030 
00031 #ifndef _KMDIMAINFRM_H_
00032 #define _KMDIMAINFRM_H_
00033 
00034 #include <kparts/dockmainwindow.h>
00035 #include <kmenubar.h>
00036 #include <kpopupmenu.h>
00037 
00038 #include <qptrlist.h>
00039 #include <qrect.h>
00040 #include <qapplication.h>
00041 #include <qdom.h>
00042 #include <qguardedptr.h>
00043 
00044 #include "kmditaskbar.h"
00045 #include "kmdichildarea.h"
00046 #include "kmdichildview.h"
00047 #include "kmdiiterator.h"
00048 #include "kmdilistiterator.h"
00049 #include "kmdinulliterator.h"
00050 
00051 class QTimer;
00052 class QPopupMenu;
00053 class QMenuBar;
00054 #include "kmditoolviewaccessor.h"
00055 
00056 class QToolButton;
00057 
00058 namespace KMDIPrivate {
00059   class KMDIGUIClient;
00060 }
00061 
00062 class KMdiDockContainer;
00063 class KMdiMainFrmPrivate;
00064 
00070 class KMdiViewCloseEvent : public QCustomEvent
00071 {
00072 public:
00073    KMdiViewCloseEvent( KMdiChildView* pWnd) : QCustomEvent(QEvent::User,pWnd) {}
00074 };
00075 
00204 class KMdiMainFrm : public KParts::DockMainWindow
00205 {
00206    friend class KMdiChildView;
00207    friend class KMdiTaskBar;
00208    Q_OBJECT
00209 
00210    friend class KMdiToolViewAccessor;
00211 // attributes
00212 protected:
00213    KMdi::MdiMode           m_mdiMode;
00214    KMdiChildArea           *m_pMdi;
00215    KMdiTaskBar             *m_pTaskBar;
00216    QPtrList<KMdiChildView> *m_pDocumentViews;
00217    QMap<QWidget*,KMdiToolViewAccessor*> *m_pToolViews;
00218    KMdiChildView           *m_pCurrentWindow;
00219    QPopupMenu              *m_pWindowPopup;
00220    QPopupMenu              *m_pTaskBarPopup;
00221    QPopupMenu              *m_pWindowMenu;
00222    QPopupMenu              *m_pDockMenu;
00223    QPopupMenu              *m_pMdiModeMenu;
00224    QPopupMenu              *m_pPlacingMenu;
00225    KMenuBar                *m_pMainMenuBar;
00226 
00227    QPixmap                 *m_pUndockButtonPixmap;
00228    QPixmap                 *m_pMinButtonPixmap;
00229    QPixmap                 *m_pRestoreButtonPixmap;
00230    QPixmap                 *m_pCloseButtonPixmap;
00231 
00232    QToolButton             *m_pUndock;
00233    QToolButton             *m_pMinimize;
00234    QToolButton             *m_pRestore;
00235    QToolButton             *m_pClose;
00236    QPoint                  m_undockPositioningOffset;
00237    bool                    m_bMaximizedChildFrmMode;
00238    int                     m_oldMainFrmHeight;
00239    int                     m_oldMainFrmMinHeight;
00240    int                     m_oldMainFrmMaxHeight;
00241    static KMdi::FrameDecor m_frameDecoration;
00242    bool                    m_bSDIApplication;
00243    KDockWidget*         m_pDockbaseAreaOfDocumentViews;
00244    QDomDocument*           m_pTempDockSession;
00245    bool                    m_bClearingOfWindowMenuBlocked;
00246 
00247    QTimer*                 m_pDragEndTimer;
00248 
00249    bool                    m_bSwitching;
00250 
00251    KDockWidget*         m_leftContainer;
00252    KDockWidget*         m_rightContainer;
00253    KDockWidget*         m_topContainer;
00254    KDockWidget*         m_bottomContainer;
00255 
00256 
00257 private:
00258    KMdiMainFrmPrivate*     d;
00259    KMDIPrivate::KMDIGUIClient*     m_mdiGUIClient;
00260    bool m_managedDockPositionMode;
00261 
00262 // methods
00263 public:
00267    KMdiMainFrm( QWidget* parentWidget, const char* name = "", KMdi::MdiMode mdiMode=KMdi::ChildframeMode,WFlags flags = WType_TopLevel | WDestructiveClose);
00271    virtual ~KMdiMainFrm();
00272 
00273    void setStandardMDIMenuEnabled(bool showModeMenu=true);
00274 
00275    void setManagedDockPositionModeEnabled(bool enabled);
00276 
00280    bool isInMaximizedChildFrmMode() { return m_bMaximizedChildFrmMode; };
00284    KMdi::MdiMode mdiMode() { return m_mdiMode; };
00288    KMdiChildView * activeWindow();
00296    virtual QPopupMenu * taskBarPopup(KMdiChildView *pWnd,bool bIncludeWindowPopup = false);
00301    virtual QPopupMenu * windowPopup(KMdiChildView *pWnd,bool bIncludeTaskbarPopup = true);
00305    virtual void applyOptions();
00306 
00307 
00311    KMdiChildView * findWindow(const QString& caption);
00315    enum ExistsAs {DocumentView,ToolView,AnyView};
00316    bool windowExists(KMdiChildView *pWnd,ExistsAs as);
00329    virtual bool event(QEvent* e);
00333    virtual void setSysButtonsAtMenuPosition();
00337    virtual int taskBarHeight() { return m_pTaskBar ? m_pTaskBar->height() : 0; };
00342    virtual void setUndockPositioningOffset( QPoint offset) { m_undockPositioningOffset = offset; };
00348    // FIXME
00349    KMdiIterator<KMdiChildView*>* createIterator() {
00350       if ( m_pDocumentViews == 0L) {
00351          return new KMdiNullIterator<KMdiChildView*>();
00352       } else {
00353          return new KMdiListIterator<KMdiChildView>( *m_pDocumentViews);
00354       }
00355    }
00359    void deleteIterator(KMdiIterator<KMdiChildView*>* pIt) { delete pIt; }
00365    QPopupMenu* windowMenu() const { return m_pWindowMenu; };
00369    virtual void setBackgroundColor( const QColor &c) { m_pMdi->setBackgroundColor( c); };
00373    virtual void setBackgroundPixmap( const QPixmap &pm) { m_pMdi->setBackgroundPixmap( pm); };
00378    void setDefaultChildFrmSize( const QSize& sz)
00379       { m_pMdi->m_defaultChildFrmSize = sz; };
00383    QSize defaultChildFrmSize()
00384       { return m_pMdi->m_defaultChildFrmSize; };
00388    virtual void setMinimumSize( int minw, int minh);
00392    int childFrameModeHeight() { return m_oldMainFrmHeight; };
00399    virtual void setMenuForSDIModeSysButtons( KMenuBar* = 0);
00400 
00404    static int frameDecorOfAttachedViews() { return m_frameDecoration; };
00411    void fakeSDIApplication();
00415    bool isFakingSDIApplication() const { return m_bSDIApplication; };
00419    virtual bool eventFilter(QObject *obj, QEvent *e );
00423    void findRootDockWidgets(QPtrList<KDockWidget>* pRootDockWidgetList, QValueList<QRect>* pPositionList);
00424 
00425    void setSwitching( const bool switching ) { m_bSwitching = switching; }
00426    bool switching(void) const { return m_bSwitching; }
00427 
00428 public slots:
00432    KMdiChildView* createWrapper(QWidget *view, const QString& name, const QString& shortName);
00443    virtual void addWindow( KMdiChildView* pView, int flags = KMdi::StandardAdd);
00444    //KDE4: merge the two methods
00457    void addWindow( KMdiChildView* pView, int flags, int index);
00461    virtual void addWindow( KMdiChildView* pView, QPoint pos, int flags = KMdi::StandardAdd);
00465    virtual void addWindow( KMdiChildView* pView, QRect rectNormal, int flags = KMdi::StandardAdd);
00470    virtual KMdiToolViewAccessor *addToolWindow( QWidget* pWnd, KDockWidget::DockPosition pos = KDockWidget::DockNone, QWidget* pTargetWnd = 0L, int percent = 50, const QString& tabToolTip = 0, const QString& tabCaption = 0);
00471    virtual void deleteToolWindow( QWidget* pWnd);
00472    virtual void deleteToolWindow( KMdiToolViewAccessor *accessor);
00477    KMdiToolViewAccessor *createToolWindow();
00482    virtual void removeWindowFromMdi(KMdiChildView *pWnd);
00487    virtual void closeWindow(KMdiChildView *pWnd, bool layoutTaskBar = true);
00491    virtual void slot_toggleTaskBar();
00497    virtual void attachWindow(KMdiChildView *pWnd,bool bShow=true,bool bAutomaticResize=false);
00502    virtual void detachWindow(KMdiChildView *pWnd,bool bShow=true);
00507    virtual void childWindowCloseRequest(KMdiChildView *pWnd);
00511    virtual void closeAllViews();
00515    virtual void iconifyAllViews();
00519    virtual void closeActiveView();
00523    virtual void switchToToplevelMode();
00524    virtual void finishToplevelMode();
00528    virtual void switchToChildframeMode();
00529    virtual void finishChildframeMode();
00533    virtual void switchToTabPageMode();
00534    virtual void finishTabPageMode();
00538    virtual void switchToIDEAlMode();
00539    virtual void finishIDEAlMode(bool full=true);
00544    void setIDEAlModeStyle(int flags) KDE_DEPRECATED;
00545    //KDE4: Get rid of the above.
00551    void setToolviewStyle(int flags);
00552    /*
00553    * @return if the view taskbar should be shown if there are MDI views
00554    */
00555    bool isViewTaskBarOn();
00559    virtual void showViewTaskBar();
00563    virtual void hideViewTaskBar();
00567    virtual void fillWindowMenu();
00568 
00572    virtual void cascadeWindows() { m_pMdi->cascadeWindows(); }
00576    virtual void cascadeMaximized() { m_pMdi->cascadeMaximized(); };
00580    virtual void expandVertical() { m_pMdi->expandVertical(); };
00584    virtual void expandHorizontal() { m_pMdi->expandHorizontal(); };
00588    virtual void tilePragma() { m_pMdi->tilePragma(); };
00592    virtual void tileAnodine() { m_pMdi->tileAnodine(); };
00596    virtual void tileVertically() { m_pMdi->tileVertically(); };
00600    virtual void setFrameDecorOfAttachedViews( int frameDecor);
00604    virtual void setEnableMaximizedChildFrmMode(bool bEnable);
00608    virtual void activateNextWin();
00612    virtual void activatePrevWin();
00616    virtual void activateFirstWin();
00620    virtual void activateLastWin();
00624    virtual void activateView(int index);
00625 
00626 private:
00627    void setupToolViewsForIDEALMode();
00628    void setupTabbedDocumentViewSpace();
00629    class KMdiDocumentViewTabWidget * m_documentTabWidget;
00630 
00631 protected:
00635    virtual void resizeEvent(QResizeEvent * );
00639    virtual void createTaskBar();
00643    virtual void createMdiManager();
00648    void blockClearingOfWindowMenu( bool bBlocked) { m_bClearingOfWindowMenuBlocked = bBlocked; };
00649 
00650    void findToolViewsDockedToMain(QPtrList<KDockWidget>* list,KDockWidget::DockPosition dprtmw);
00651    void dockToolViewsIntoContainers(QPtrList<KDockWidget>& widgetsToReparent,KDockWidget *container);
00652    QStringList prepareIdealToTabs(KDockWidget* container);
00653    void idealToolViewsToStandardTabs(QStringList widgetNames,KDockWidget::DockPosition pos,int sizee);
00654 
00658    KMdi::TabWidgetVisibility tabWidgetVisibility();
00662    void setTabWidgetVisibility( KMdi::TabWidgetVisibility );
00666    class KTabWidget * tabWidget() const;
00667 
00668 
00669 protected slots: // Protected slots
00674    virtual void activateView(KMdiChildView *pWnd);
00678    virtual void taskbarButtonRightClicked(KMdiChildView *pWnd);
00682    void switchOffMaximizeModeForMenu(KMdiChildFrm* oldChild);
00686    void updateSysButtonConnections( KMdiChildFrm* oldChild, KMdiChildFrm* newChild);
00690    void windowMenuItemActivated(int id);
00694    void dockMenuItemActivated(int id);
00698    void popupWindowMenu(QPoint p);
00702    void dragEndTimeOut();
00706    void closeViewButtonPressed();
00707 
00708    signals:
00712    void lastChildFrmClosed();
00716    void lastChildViewClosed();
00720    void leftTopLevelMode();
00724    void childViewIsDetachedNow(QWidget*);
00725 
00726    void collapseOverlapContainers();
00727 
00728    void mdiModeHasBeenChangedTo(KMdi::MdiMode);
00729 
00730    void viewActivated(KMdiChildView*);
00731    void viewDeactivated(KMdiChildView*);
00732 
00733 public slots:
00734    void prevToolViewInDock();
00735    void nextToolViewInDock();
00736 
00737 private slots:
00738    void setActiveToolDock(KMdiDockContainer*);
00739    void removeFromActiveDockList(KMdiDockContainer*);
00740    void slotDocCurrentChanged(QWidget*);
00741 #define protected public
00742 signals:
00743 #undef protected
00744     void toggleTop();
00745     void toggleLeft();
00746     void toggleRight();
00747     void toggleBottom();
00748 };
00749 
00750 #endif //_KMDIMAINFRM_H_
00751 
00752 // kate: space-indent on; indent-width 2; replace-tabs on;
KDE Logo
This file is part of the documentation for kmdi Library Version 3.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Sep 23 17:13:04 2004 by doxygen 1.3.8-20040913 written by Dimitri van Heesch, © 1997-2003