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); 00447 virtual void addWindow( KMdiChildView* pView, QPoint pos, int flags = KMdi::StandardAdd); 00451 virtual void addWindow( KMdiChildView* pView, QRect rectNormal, int flags = KMdi::StandardAdd); 00456 virtual KMdiToolViewAccessor *addToolWindow( QWidget* pWnd, KDockWidget::DockPosition pos = KDockWidget::DockNone, QWidget* pTargetWnd = 0L, int percent = 50, const QString& tabToolTip = 0, const QString& tabCaption = 0); 00457 virtual void deleteToolWindow( QWidget* pWnd); 00458 virtual void deleteToolWindow( KMdiToolViewAccessor *accessor); 00463 KMdiToolViewAccessor *createToolWindow(); 00468 virtual void removeWindowFromMdi(KMdiChildView *pWnd); 00473 virtual void closeWindow(KMdiChildView *pWnd, bool layoutTaskBar = true); 00477 virtual void slot_toggleTaskBar(); 00483 virtual void attachWindow(KMdiChildView *pWnd,bool bShow=true,bool bAutomaticResize=false); 00488 virtual void detachWindow(KMdiChildView *pWnd,bool bShow=true); 00493 virtual void childWindowCloseRequest(KMdiChildView *pWnd); 00497 virtual void closeAllViews(); 00501 virtual void iconifyAllViews(); 00505 virtual void closeActiveView(); 00509 virtual void switchToToplevelMode(); 00510 virtual void finishToplevelMode(); 00514 virtual void switchToChildframeMode(); 00515 virtual void finishChildframeMode(); 00519 virtual void switchToTabPageMode(); 00520 virtual void finishTabPageMode(); 00524 virtual void switchToIDEAlMode(); 00525 virtual void finishIDEAlMode(bool full=true); 00529 void setIDEAlModeStyle(int flags); 00530 /* 00531 * @return if the view taskbar should be shown if there are MDI views 00532 */ 00533 bool isViewTaskBarOn(); 00537 virtual void showViewTaskBar(); 00541 virtual void hideViewTaskBar(); 00545 virtual void fillWindowMenu(); 00546 00550 virtual void cascadeWindows() { m_pMdi->cascadeWindows(); } 00554 virtual void cascadeMaximized() { m_pMdi->cascadeMaximized(); }; 00558 virtual void expandVertical() { m_pMdi->expandVertical(); }; 00562 virtual void expandHorizontal() { m_pMdi->expandHorizontal(); }; 00566 virtual void tilePragma() { m_pMdi->tilePragma(); }; 00570 virtual void tileAnodine() { m_pMdi->tileAnodine(); }; 00574 virtual void tileVertically() { m_pMdi->tileVertically(); }; 00578 virtual void setFrameDecorOfAttachedViews( int frameDecor); 00582 virtual void setEnableMaximizedChildFrmMode(bool bEnable); 00586 virtual void activateNextWin(); 00590 virtual void activatePrevWin(); 00594 virtual void activateFirstWin(); 00598 virtual void activateLastWin(); 00602 virtual void activateView(int index); 00603 00604 private: 00605 void setupToolViewsForIDEALMode(); 00606 void setupTabbedDocumentViewSpace(); 00607 class KMdiDocumentViewTabWidget * m_documentTabWidget; 00608 00609 protected: 00613 virtual void resizeEvent(QResizeEvent * ); 00617 virtual void createTaskBar(); 00621 virtual void createMdiManager(); 00626 void blockClearingOfWindowMenu( bool bBlocked) { m_bClearingOfWindowMenuBlocked = bBlocked; }; 00627 00628 void findToolViewsDockedToMain(QPtrList<KDockWidget>* list,KDockWidget::DockPosition dprtmw); 00629 void dockToolViewsIntoContainers(QPtrList<KDockWidget>& widgetsToReparent,KDockWidget *container); 00630 QStringList prepareIdealToTabs(KDockWidget* container); 00631 void idealToolViewsToStandardTabs(QStringList widgetNames,KDockWidget::DockPosition pos,int sizee); 00632 00636 class KTabWidget * tabWidget() const; 00637 00638 00639 protected slots: // Protected slots 00644 virtual void activateView(KMdiChildView *pWnd); 00648 virtual void taskbarButtonRightClicked(KMdiChildView *pWnd); 00652 void switchOffMaximizeModeForMenu(KMdiChildFrm* oldChild); 00656 void updateSysButtonConnections( KMdiChildFrm* oldChild, KMdiChildFrm* newChild); 00660 void windowMenuItemActivated(int id); 00664 void dockMenuItemActivated(int id); 00668 void popupWindowMenu(QPoint p); 00672 void dragEndTimeOut(); 00676 void closeViewButtonPressed(); 00677 signals: 00681 void lastChildFrmClosed(); 00685 void lastChildViewClosed(); 00689 void leftTopLevelMode(); 00693 void childViewIsDetachedNow(QWidget*); 00694 00695 void collapseOverlapContainers(); 00696 00697 void mdiModeHasBeenChangedTo(KMdi::MdiMode); 00698 00699 void viewActivated(KMdiChildView*); 00700 void viewDeactivated(KMdiChildView*); 00701 00702 public slots: 00703 void prevToolViewInDock(); 00704 void nextToolViewInDock(); 00705 00706 private slots: 00707 void setActiveToolDock(KMdiDockContainer*); 00708 void removeFromActiveDockList(KMdiDockContainer*); 00709 void slotDocCurrentChanged(QWidget*); 00710 #define protected public 00711 signals: 00712 #undef protected 00713 void toggleTop(); 00714 void toggleLeft(); 00715 void toggleRight(); 00716 void toggleBottom(); 00717 00718 }; 00719 00720 #endif //_KMDIMAINFRM_H_ 00721 00722 // kate: space-indent on; indent-width 2; replace-tabs on;
KDE Logo
This file is part of the documentation for kmdi Library Version 3.2.3.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat Jun 12 15:09:45 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003