tdemdi
tdemdimainfrm.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef _TDEMDIMAINFRM_H_
00032 #define _TDEMDIMAINFRM_H_
00033
00034 #include <tdeparts/dockmainwindow.h>
00035 #include <tdemenubar.h>
00036 #include <tdepopupmenu.h>
00037
00038 #include <tqptrlist.h>
00039 #include <tqrect.h>
00040 #include <tqapplication.h>
00041 #include <tqdom.h>
00042 #include <tqguardedptr.h>
00043
00044 #include "tdemditaskbar.h"
00045 #include "tdemdichildarea.h"
00046 #include "tdemdichildview.h"
00047 #include "tdemdiiterator.h"
00048 #include "tdemdilistiterator.h"
00049 #include "tdemdinulliterator.h"
00050 #include "tdemditoolviewaccessor.h"
00051
00052 class TQTimer;
00053 class TQPopupMenu;
00054 class TQMenuBar;
00055
00056
00057 class TQToolButton;
00058
00059 namespace KMDIPrivate
00060 {
00061 class KMDIGUIClient;
00062 }
00063
00064 class KMdiDockContainer;
00065 class KMdiMainFrmPrivate;
00066
00072 class KMDI_EXPORT KMdiViewCloseEvent : public TQCustomEvent
00073 {
00074 public:
00075 KMdiViewCloseEvent( KMdiChildView* pWnd ) : TQCustomEvent( TQEvent::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
00247 protected:
00248 KMdi::MdiMode m_mdiMode;
00249 KMdiChildArea *m_pMdi;
00250 KMdiTaskBar *m_pTaskBar;
00251 TQPtrList<KMdiChildView> *m_pDocumentViews;
00252 TQMap<TQWidget*, KMdiToolViewAccessor*> *m_pToolViews;
00253 KMdiChildView *m_pCurrentWindow;
00254 TQPopupMenu *m_pWindowPopup;
00255 TQPopupMenu *m_pTaskBarPopup;
00256 TQPopupMenu *m_pWindowMenu;
00257 TQPopupMenu *m_pDockMenu;
00258 TQPopupMenu *m_pMdiModeMenu;
00259 TQPopupMenu *m_pPlacingMenu;
00260 KMenuBar *m_pMainMenuBar;
00261
00262 TQPixmap *m_pUndockButtonPixmap;
00263 TQPixmap *m_pMinButtonPixmap;
00264 TQPixmap *m_pRestoreButtonPixmap;
00265 TQPixmap *m_pCloseButtonPixmap;
00266
00267 TQToolButton *m_pUndock;
00268 TQToolButton *m_pMinimize;
00269 TQToolButton *m_pRestore;
00270 TQToolButton *m_pClose;
00271 TQPoint 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 TQDomDocument* m_pTempDockSession;
00280 bool m_bClearingOfWindowMenuBlocked;
00281
00282 TQTimer* 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
00298 public:
00299 #ifdef qdoc
00300 KMdiMainFrm( TQWidget* parentWidget, const char* name = "", KMdi::MdiMode mdiMode = KMdi::ChildframeMode, WFlags flags = WType_TopLevel | WDestructiveClose );
00301 #else
00302 KMdiMainFrm( TQWidget* parentWidget, const char* name = "", KMdi::MdiMode mdiMode = KMdi::ChildframeMode, WFlags flags = (WFlags)(WType_TopLevel | WDestructiveClose) );
00303 #endif
00304 virtual ~KMdiMainFrm();
00305
00310 void setStandardMDIMenuEnabled( bool showModeMenu = true );
00311
00312 void setManagedDockPositionModeEnabled( bool enabled );
00313
00317 bool isInMaximizedChildFrmMode() { return m_bMaximizedChildFrmMode; }
00318
00322 KMdi::MdiMode mdiMode() { return m_mdiMode; }
00323
00327 KMdiChildView* activeWindow();
00328
00336 virtual TQPopupMenu * taskBarPopup( KMdiChildView *pWnd, bool bIncludeWindowPopup = false );
00337
00342 virtual TQPopupMenu * windowPopup( KMdiChildView *pWnd, bool bIncludeTaskbarPopup = true );
00343
00347 virtual void applyOptions();
00348
00352 KMdiChildView * findWindow( const TQString& caption );
00353
00354 enum ExistsAs {DocumentView, ToolView, AnyView};
00358 bool windowExists( KMdiChildView *pWnd, ExistsAs as );
00359
00372 virtual bool event( TQEvent* e );
00373
00377 virtual void setSysButtonsAtMenuPosition();
00378
00382 virtual int taskBarHeight() { return m_pTaskBar ? m_pTaskBar->height() : 0; }
00383
00388 virtual void setUndockPositioningOffset( TQPoint offset ) { m_undockPositioningOffset = offset; }
00389
00396
00397 KMdiIterator<KMdiChildView*>* createIterator()
00398 {
00399 if ( m_pDocumentViews == 0L )
00400 {
00401 return new KMdiNullIterator<KMdiChildView*>();
00402 }
00403 else
00404 {
00405 return new KMdiListIterator<KMdiChildView>( *m_pDocumentViews );
00406 }
00407 }
00408
00412 void deleteIterator( KMdiIterator<KMdiChildView*>* pIt )
00413 {
00414 delete pIt;
00415 }
00416
00422 TQPopupMenu* windowMenu() const { return m_pWindowMenu; };
00423
00427 virtual void setBackgroundColor( const TQColor &c ) { m_pMdi->setBackgroundColor( c ); }
00428
00432 virtual void setBackgroundPixmap( const TQPixmap &pm ) { m_pMdi->setBackgroundPixmap( pm ); }
00433
00438 void setDefaultChildFrmSize( const TQSize& sz ) { m_pMdi->m_defaultChildFrmSize = sz; }
00439
00443 TQSize defaultChildFrmSize() { return m_pMdi->m_defaultChildFrmSize; }
00444
00448 virtual void setMinimumSize( int minw, int minh );
00449
00453 int childFrameModeHeight() { return m_oldMainFrmHeight; };
00460 virtual void setMenuForSDIModeSysButtons( KMenuBar* menuBar = 0 );
00461
00465 static int frameDecorOfAttachedViews() { return m_frameDecoration; }
00466
00473 void fakeSDIApplication();
00474
00478 bool isFakingSDIApplication() const { return m_bSDIApplication; }
00479
00480 virtual bool eventFilter( TQObject *obj, TQEvent *e );
00481 void findRootDockWidgets( TQPtrList<KDockWidget>* pRootDockWidgetList, TQValueList<TQRect>* pPositionList );
00482
00484 void setSwitching( const bool switching ) { m_bSwitching = switching; }
00485 bool switching( void ) const { return m_bSwitching; }
00486
00487 public slots:
00492 KMdiChildView* createWrapper( TQWidget *view, const TQString& name, const TQString& shortName );
00493
00503 virtual void addWindow( KMdiChildView* pWnd, int flags = KMdi::StandardAdd );
00504
00505
00521 void addWindow( KMdiChildView* pWnd, int flags, int index );
00522
00534 virtual void addWindow( KMdiChildView* pWnd, TQPoint pos, int flags = KMdi::StandardAdd );
00535
00547 virtual void addWindow( KMdiChildView* pWnd, TQRect rectNormal, int flags = KMdi::StandardAdd );
00548
00553 virtual KMdiToolViewAccessor *addToolWindow( TQWidget* pWnd, KDockWidget::DockPosition pos = KDockWidget::DockNone,
00554 TQWidget* pTargetWnd = 0L, int percent = 50, const TQString& tabToolTip = 0,
00555 const TQString& tabCaption = 0 );
00556
00557 virtual void deleteToolWindow( TQWidget* pWnd );
00558 virtual void deleteToolWindow( KMdiToolViewAccessor *accessor );
00559
00564 KMdiToolViewAccessor *createToolWindow();
00565
00571 virtual void removeWindowFromMdi( KMdiChildView *pWnd );
00572
00577 virtual void closeWindow( KMdiChildView *pWnd, bool layoutTaskBar = true );
00578
00582 virtual void slot_toggleTaskBar();
00583
00589 virtual void attachWindow( KMdiChildView *pWnd, bool bShow = true, bool bAutomaticResize = false );
00590
00595 virtual void detachWindow( KMdiChildView *pWnd, bool bShow = true );
00596
00601 virtual void childWindowCloseRequest( KMdiChildView *pWnd );
00602
00606 virtual void closeAllViews();
00607
00611 virtual void iconifyAllViews();
00612
00616 virtual void closeActiveView();
00617
00621 virtual void switchToToplevelMode();
00622 virtual void finishToplevelMode();
00623
00627 virtual void switchToChildframeMode();
00628 virtual void finishChildframeMode();
00629
00633 virtual void switchToTabPageMode();
00634 virtual void finishTabPageMode();
00635
00639 virtual void switchToIDEAlMode();
00640 virtual void finishIDEAlMode( bool full = true );
00641
00646 void setIDEAlModeStyle( int flags ) KDE_DEPRECATED;
00647
00653 void setToolviewStyle( int flags );
00657 bool isViewTaskBarOn();
00658
00662 virtual void showViewTaskBar();
00663
00667 virtual void hideViewTaskBar();
00668
00672 virtual void fillWindowMenu();
00673
00677 virtual void cascadeWindows() { m_pMdi->cascadeWindows(); }
00678
00682 virtual void cascadeMaximized() { m_pMdi->cascadeMaximized(); }
00683
00687 virtual void expandVertical() { m_pMdi->expandVertical(); }
00688
00692 virtual void expandHorizontal() { m_pMdi->expandHorizontal(); }
00693
00697 virtual void tilePragma() { m_pMdi->tilePragma(); }
00698
00702 virtual void tileAnodine() { m_pMdi->tileAnodine(); }
00703
00707 virtual void tileVertically() { m_pMdi->tileVertically(); }
00708
00713 virtual void setFrameDecorOfAttachedViews( int frameDecor );
00714
00718 virtual void setEnableMaximizedChildFrmMode( bool bEnable );
00719
00723 virtual void activateNextWin();
00724
00728 virtual void activatePrevWin();
00729
00733 virtual void activateFirstWin();
00734
00738 virtual void activateLastWin();
00739
00743 virtual void activateView( int index );
00744
00745 private:
00746 void setupToolViewsForIDEALMode();
00747 void setupTabbedDocumentViewSpace();
00748 class KMdiDocumentViewTabWidget * m_documentTabWidget;
00749
00750 protected:
00751
00752 virtual void resizeEvent( TQResizeEvent * );
00753
00757 virtual void createTaskBar();
00758
00762 virtual void createMdiManager();
00763
00768 void blockClearingOfWindowMenu( bool bBlocked ) { m_bClearingOfWindowMenuBlocked = bBlocked; }
00769
00770 void findToolViewsDockedToMain( TQPtrList<KDockWidget>* list, KDockWidget::DockPosition dprtmw );
00771 void dockToolViewsIntoContainers( TQPtrList<KDockWidget>& widgetsToReparent, KDockWidget *container );
00772 TQStringList prepareIdealToTabs( KDockWidget* container );
00773 void idealToolViewsToStandardTabs( TQStringList widgetNames, KDockWidget::DockPosition pos, int sizee );
00774
00776 KMdi::TabWidgetVisibility tabWidgetVisibility();
00777
00779 void setTabWidgetVisibility( KMdi::TabWidgetVisibility );
00780
00782 class KTabWidget * tabWidget() const;
00783
00784
00785 protected slots:
00790 virtual void activateView( KMdiChildView *pWnd );
00791
00795 virtual void taskbarButtonRightClicked( KMdiChildView *pWnd );
00796
00800 void switchOffMaximizeModeForMenu( KMdiChildFrm* oldChild );
00801
00805 void updateSysButtonConnections( KMdiChildFrm* oldChild, KMdiChildFrm* newChild );
00806
00810 void windowMenuItemActivated( int id );
00811
00815 void dockMenuItemActivated( int id );
00816
00820 void popupWindowMenu( TQPoint p );
00821
00825 void dragEndTimeOut();
00826
00830 void closeViewButtonPressed();
00831
00832 signals:
00836 void lastChildFrmClosed();
00837
00841 void lastChildViewClosed();
00842
00846 void leftTopLevelMode();
00847
00851 void childViewIsDetachedNow( TQWidget* );
00852
00854 void collapseOverlapContainers();
00855
00857 void mdiModeHasBeenChangedTo( KMdi::MdiMode );
00858
00859 void viewActivated( KMdiChildView* );
00860 void viewDeactivated( KMdiChildView* );
00861
00862 public slots:
00863 void prevToolViewInDock();
00864 void nextToolViewInDock();
00865
00866 private slots:
00867 void setActiveToolDock( KMdiDockContainer* );
00868 void removeFromActiveDockList( KMdiDockContainer* );
00869 void slotDocCurrentChanged( TQWidget* );
00870 void verifyToplevelHeight();
00871 #define protected public
00872 signals:
00873 #undef protected
00874
00875 void toggleTop();
00876 void toggleLeft();
00877 void toggleRight();
00878 void toggleBottom();
00879 };
00880
00881 #endif //_TDEMDIMAINFRM_H_
00882
00883
00884