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 #include "kmditoolviewaccessor.h" 00051 00052 class QTimer; 00053 class QPopupMenu; 00054 class QMenuBar; 00055 00056 00057 class QToolButton; 00058 00059 namespace KMDIPrivate 00060 { 00061 class KMDIGUIClient; 00062 } 00063 00064 class KMdiDockContainer; 00065 class KMdiMainFrmPrivate; 00066 00072 class KMDI_EXPORT KMdiViewCloseEvent : public QCustomEvent 00073 { 00074 public: 00075 KMdiViewCloseEvent( KMdiChildView* pWnd ) : QCustomEvent( QEvent::User, pWnd ) {} 00076 }; 00077 00239 class KMDI_EXPORT KMdiMainFrm : public KParts::DockMainWindow 00240 { 00241 friend class KMdiChildView; 00242 friend class KMdiTaskBar; 00243 Q_OBJECT 00244 00245 friend class KMdiToolViewAccessor; 00246 // attributes 00247 protected: 00248 KMdi::MdiMode m_mdiMode; 00249 KMdiChildArea *m_pMdi; 00250 KMdiTaskBar *m_pTaskBar; 00251 QPtrList<KMdiChildView> *m_pDocumentViews; 00252 QMap<QWidget*, KMdiToolViewAccessor*> *m_pToolViews; 00253 KMdiChildView *m_pCurrentWindow; 00254 QPopupMenu *m_pWindowPopup; 00255 QPopupMenu *m_pTaskBarPopup; 00256 QPopupMenu *m_pWindowMenu; 00257 QPopupMenu *m_pDockMenu; 00258 QPopupMenu *m_pMdiModeMenu; 00259 QPopupMenu *m_pPlacingMenu; 00260 KMenuBar *m_pMainMenuBar; 00261 00262 QPixmap *m_pUndockButtonPixmap; 00263 QPixmap *m_pMinButtonPixmap; 00264 QPixmap *m_pRestoreButtonPixmap; 00265 QPixmap *m_pCloseButtonPixmap; 00266 00267 QToolButton *m_pUndock; 00268 QToolButton *m_pMinimize; 00269 QToolButton *m_pRestore; 00270 QToolButton *m_pClose; 00271 QPoint m_undockPositioningOffset; 00272 bool m_bMaximizedChildFrmMode; 00273 int m_oldMainFrmHeight; 00274 int m_oldMainFrmMinHeight; 00275 int m_oldMainFrmMaxHeight; 00276 static KMdi::FrameDecor m_frameDecoration; 00277 bool m_bSDIApplication; 00278 KDockWidget* m_pDockbaseAreaOfDocumentViews; 00279 QDomDocument* m_pTempDockSession; 00280 bool m_bClearingOfWindowMenuBlocked; 00281 00282 QTimer* m_pDragEndTimer; 00283 00284 bool m_bSwitching; 00285 00286 KDockWidget* m_leftContainer; 00287 KDockWidget* m_rightContainer; 00288 KDockWidget* m_topContainer; 00289 KDockWidget* m_bottomContainer; 00290 00291 00292 private: 00293 KMdiMainFrmPrivate* d; 00294 KMDIPrivate::KMDIGUIClient* m_mdiGUIClient; 00295 bool m_managedDockPositionMode; 00296 00297 // methods 00298 public: 00299 KMdiMainFrm( QWidget* parentWidget, const char* name = "", KMdi::MdiMode mdiMode = KMdi::ChildframeMode, WFlags flags = WType_TopLevel | WDestructiveClose ); 00300 virtual ~KMdiMainFrm(); 00301 00306 void setStandardMDIMenuEnabled( bool showModeMenu = true ); 00307 00308 void setManagedDockPositionModeEnabled( bool enabled ); 00309 00313 bool isInMaximizedChildFrmMode() { return m_bMaximizedChildFrmMode; } 00314 00318 KMdi::MdiMode mdiMode() { return m_mdiMode; } 00319 00323 KMdiChildView* activeWindow(); 00324 00332 virtual QPopupMenu * taskBarPopup( KMdiChildView *pWnd, bool bIncludeWindowPopup = false ); 00333 00338 virtual QPopupMenu * windowPopup( KMdiChildView *pWnd, bool bIncludeTaskbarPopup = true ); 00339 00343 virtual void applyOptions(); 00344 00348 KMdiChildView * findWindow( const QString& caption ); 00349 00350 enum ExistsAs {DocumentView, ToolView, AnyView}; 00354 bool windowExists( KMdiChildView *pWnd, ExistsAs as ); 00355 00368 virtual bool event( QEvent* e ); 00369 00373 virtual void setSysButtonsAtMenuPosition(); 00374 00378 virtual int taskBarHeight() { return m_pTaskBar ? m_pTaskBar->height() : 0; } 00379 00384 virtual void setUndockPositioningOffset( QPoint offset ) { m_undockPositioningOffset = offset; } 00385 00391 // FIXME And what exactly are we supposed to fix? -mattr 00392 KMdiIterator<KMdiChildView*>* createIterator() 00393 { 00394 if ( m_pDocumentViews == 0L ) 00395 { 00396 return new KMdiNullIterator<KMdiChildView*>(); 00397 } 00398 else 00399 { 00400 return new KMdiListIterator<KMdiChildView>( *m_pDocumentViews ); 00401 } 00402 } 00403 00407 void deleteIterator( KMdiIterator<KMdiChildView*>* pIt ) 00408 { 00409 delete pIt; 00410 } 00411 00417 QPopupMenu* windowMenu() const { return m_pWindowMenu; }; 00418 00422 virtual void setBackgroundColor( const QColor &c ) { m_pMdi->setBackgroundColor( c ); } 00423 00427 virtual void setBackgroundPixmap( const QPixmap &pm ) { m_pMdi->setBackgroundPixmap( pm ); } 00428 00433 void setDefaultChildFrmSize( const QSize& sz ) { m_pMdi->m_defaultChildFrmSize = sz; } 00434 00438 QSize defaultChildFrmSize() { return m_pMdi->m_defaultChildFrmSize; } 00439 00443 virtual void setMinimumSize( int minw, int minh ); 00444 00448 int childFrameModeHeight() { return m_oldMainFrmHeight; }; 00455 virtual void setMenuForSDIModeSysButtons( KMenuBar* menuBar = 0 ); 00456 00460 static int frameDecorOfAttachedViews() { return m_frameDecoration; } 00461 00468 void fakeSDIApplication(); 00469 00473 bool isFakingSDIApplication() const { return m_bSDIApplication; } 00474 00475 virtual bool eventFilter( QObject *obj, QEvent *e ); 00476 void findRootDockWidgets( QPtrList<KDockWidget>* pRootDockWidgetList, QValueList<QRect>* pPositionList ); 00477 00479 void setSwitching( const bool switching ) { m_bSwitching = switching; } 00480 bool switching( void ) const { return m_bSwitching; } 00481 00482 public slots: 00487 KMdiChildView* createWrapper( QWidget *view, const QString& name, const QString& shortName ); 00488 00497 virtual void addWindow( KMdiChildView* pView, int flags = KMdi::StandardAdd ); 00498 00499 //KDE4: merge the two methods 00512 void addWindow( KMdiChildView* pView, int flags, int index ); 00513 00524 virtual void addWindow( KMdiChildView* pView, QPoint pos, int flags = KMdi::StandardAdd ); 00525 00536 virtual void addWindow( KMdiChildView* pView, QRect rectNormal, int flags = KMdi::StandardAdd ); 00537 00542 virtual KMdiToolViewAccessor *addToolWindow( QWidget* pWnd, KDockWidget::DockPosition pos = KDockWidget::DockNone, 00543 QWidget* pTargetWnd = 0L, int percent = 50, const QString& tabToolTip = 0, 00544 const QString& tabCaption = 0 ); 00545 00546 virtual void deleteToolWindow( QWidget* pWnd ); 00547 virtual void deleteToolWindow( KMdiToolViewAccessor *accessor ); 00548 00553 KMdiToolViewAccessor *createToolWindow(); 00554 00560 virtual void removeWindowFromMdi( KMdiChildView *pWnd ); 00561 00566 virtual void closeWindow( KMdiChildView *pWnd, bool layoutTaskBar = true ); 00567 00571 virtual void slot_toggleTaskBar(); 00572 00578 virtual void attachWindow( KMdiChildView *pWnd, bool bShow = true, bool bAutomaticResize = false ); 00579 00584 virtual void detachWindow( KMdiChildView *pWnd, bool bShow = true ); 00585 00590 virtual void childWindowCloseRequest( KMdiChildView *pWnd ); 00591 00595 virtual void closeAllViews(); 00596 00600 virtual void iconifyAllViews(); 00601 00605 virtual void closeActiveView(); 00606 00610 virtual void switchToToplevelMode(); 00611 virtual void finishToplevelMode(); 00612 00616 virtual void switchToChildframeMode(); 00617 virtual void finishChildframeMode(); 00618 00622 virtual void switchToTabPageMode(); 00623 virtual void finishTabPageMode(); 00624 00628 virtual void switchToIDEAlMode(); 00629 virtual void finishIDEAlMode( bool full = true ); 00630 00635 void setIDEAlModeStyle( int flags ) KDE_DEPRECATED; 00636 //KDE4: Get rid of the above. 00642 void setToolviewStyle( int flags ); 00646 bool isViewTaskBarOn(); 00647 00651 virtual void showViewTaskBar(); 00652 00656 virtual void hideViewTaskBar(); 00657 00661 virtual void fillWindowMenu(); 00662 00666 virtual void cascadeWindows() { m_pMdi->cascadeWindows(); } 00667 00671 virtual void cascadeMaximized() { m_pMdi->cascadeMaximized(); } 00672 00676 virtual void expandVertical() { m_pMdi->expandVertical(); } 00677 00681 virtual void expandHorizontal() { m_pMdi->expandHorizontal(); } 00682 00686 virtual void tilePragma() { m_pMdi->tilePragma(); } 00687 00691 virtual void tileAnodine() { m_pMdi->tileAnodine(); } 00692 00696 virtual void tileVertically() { m_pMdi->tileVertically(); } 00697 00702 virtual void setFrameDecorOfAttachedViews( int frameDecor ); 00703 00707 virtual void setEnableMaximizedChildFrmMode( bool bEnable ); 00708 00712 virtual void activateNextWin(); 00713 00717 virtual void activatePrevWin(); 00718 00722 virtual void activateFirstWin(); 00723 00727 virtual void activateLastWin(); 00728 00732 virtual void activateView( int index ); 00733 00734 private: 00735 void setupToolViewsForIDEALMode(); 00736 void setupTabbedDocumentViewSpace(); 00737 class KMdiDocumentViewTabWidget * m_documentTabWidget; 00738 00739 protected: 00740 00741 virtual void resizeEvent( QResizeEvent * ); 00742 00746 virtual void createTaskBar(); 00747 00751 virtual void createMdiManager(); 00752 00757 void blockClearingOfWindowMenu( bool bBlocked ) { m_bClearingOfWindowMenuBlocked = bBlocked; } 00758 00759 void findToolViewsDockedToMain( QPtrList<KDockWidget>* list, KDockWidget::DockPosition dprtmw ); 00760 void dockToolViewsIntoContainers( QPtrList<KDockWidget>& widgetsToReparent, KDockWidget *container ); 00761 QStringList prepareIdealToTabs( KDockWidget* container ); 00762 void idealToolViewsToStandardTabs( QStringList widgetNames, KDockWidget::DockPosition pos, int sizee ); 00763 00765 KMdi::TabWidgetVisibility tabWidgetVisibility(); 00766 00768 void setTabWidgetVisibility( KMdi::TabWidgetVisibility ); 00769 00771 class KTabWidget * tabWidget() const; 00772 00773 00774 protected slots: // Protected slots 00779 virtual void activateView( KMdiChildView *pWnd ); 00780 00784 virtual void taskbarButtonRightClicked( KMdiChildView *pWnd ); 00785 00789 void switchOffMaximizeModeForMenu( KMdiChildFrm* oldChild ); 00790 00794 void updateSysButtonConnections( KMdiChildFrm* oldChild, KMdiChildFrm* newChild ); 00795 00799 void windowMenuItemActivated( int id ); 00800 00804 void dockMenuItemActivated( int id ); 00805 00809 void popupWindowMenu( QPoint p ); 00810 00814 void dragEndTimeOut(); 00815 00819 void closeViewButtonPressed(); 00820 00821 signals: 00825 void lastChildFrmClosed(); 00826 00830 void lastChildViewClosed(); 00831 00835 void leftTopLevelMode(); 00836 00840 void childViewIsDetachedNow( QWidget* ); 00841 00843 void collapseOverlapContainers(); 00844 00846 void mdiModeHasBeenChangedTo( KMdi::MdiMode ); 00847 00848 void viewActivated( KMdiChildView* ); 00849 void viewDeactivated( KMdiChildView* ); 00850 00851 public slots: 00852 void prevToolViewInDock(); 00853 void nextToolViewInDock(); 00854 00855 private slots: 00856 void setActiveToolDock( KMdiDockContainer* ); 00857 void removeFromActiveDockList( KMdiDockContainer* ); 00858 void slotDocCurrentChanged( QWidget* ); 00859 void verifyToplevelHeight(); 00860 #define protected public 00861 signals: 00862 #undef protected 00863 00864 void toggleTop(); 00865 void toggleLeft(); 00866 void toggleRight(); 00867 void toggleBottom(); 00868 }; 00869 00870 #endif //_KMDIMAINFRM_H_ 00871 00872 // kate: space-indent off; tab-width 4; replace-tabs off; indent-mode csands;
KDE Logo
This file is part of the documentation for kmdi Library Version 3.4.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Apr 14 00:37:13 2005 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003