diff options
Diffstat (limited to 'kmdi/kmdimainfrm.h')
-rw-r--r-- | kmdi/kmdimainfrm.h | 884 |
1 files changed, 0 insertions, 884 deletions
diff --git a/kmdi/kmdimainfrm.h b/kmdi/kmdimainfrm.h deleted file mode 100644 index af2134a39..000000000 --- a/kmdi/kmdimainfrm.h +++ /dev/null @@ -1,884 +0,0 @@ -//---------------------------------------------------------------------------- -// filename : kmdimainfrm.h -//---------------------------------------------------------------------------- -// Project : KDE MDI extension -// -// begin : 07/1999 by Szymon Stefanek as part of kvirc -// (an IRC application) -// changes : 09/1999 by Falk Brettschneider to create an -// - 06/2000 stand-alone Qt extension set of -// classes and a Qt-based library -// : 02/2000 by Massimo Morin (mmorin@schedsys.com) -// 2000-2003 maintained by the KDevelop project -// patches : */2000 by Lars Beikirch (Lars.Beikirch@gmx.net) -// : 01/2003 by Jens Zurheide (jens.zurheide@gmx.de) -// -// copyright : (C) 1999-2003 by Falk Brettschneider -// and -// Szymon Stefanek (stefanek@tin.it) -// email : falkbr@tdevelop.org (Falk Brettschneider) -//---------------------------------------------------------------------------- -// -//---------------------------------------------------------------------------- -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU Library General Public License as -// published by the Free Software Foundation; either version 2 of the -// License, or (at your option) any later version. -// -//---------------------------------------------------------------------------- - -#ifndef _KMDIMAINFRM_H_ -#define _KMDIMAINFRM_H_ - -#include <kparts/dockmainwindow.h> -#include <kmenubar.h> -#include <kpopupmenu.h> - -#include <tqptrlist.h> -#include <tqrect.h> -#include <tqapplication.h> -#include <tqdom.h> -#include <tqguardedptr.h> - -#include "kmditaskbar.h" -#include "kmdichildarea.h" -#include "kmdichildview.h" -#include "kmdiiterator.h" -#include "kmdilistiterator.h" -#include "kmdinulliterator.h" -#include "kmditoolviewaccessor.h" - -class TQTimer; -class TQPopupMenu; -class TQMenuBar; - - -class TQToolButton; - -namespace KMDIPrivate -{ -class KMDIGUIClient; -} - -class KMdiDockContainer; -class KMdiMainFrmPrivate; - -/** - * @short Internal class - * - * This special event is needed because the view has to inform the main frame that it`s being closed. - */ -class KMDI_EXPORT KMdiViewCloseEvent : public TQCustomEvent -{ -public: - KMdiViewCloseEvent( KMdiChildView* pWnd ) : TQCustomEvent( TQEvent::User, pWnd ) {} -}; - -/** - * \short Base class for all your special main frames. - * - * It contains the child frame area (QMainWindow's central widget) and a child view taskbar - * for switching the MDI views. Most methods are virtual functions for later overriding. - * - * Basically, this class provides functionality for docking/undocking view windows and - * manages the taskbar. Usually a developer will only need to know about this class and - * \ref KMdiChildView. - * - * \par General usage - * - * Your program mainwidget should inherit KMdiMainFrm. Then usually you'll just need - * addWindow() and removeWindowFromMdi() to control the views. - * \code - * class MyMainWindow : public KMdiMainFrm - * { .... }; - * \endcode - * - * to define your main window class and - * - * \code - * MyMainWindow mainframe; - * tqApp->setMainWidget(&mainframe); - * mainframe->addWindow(view1); // put it under MDI control - * mainframe->addWindow(view2); - * \endcode - * - * when you wish to use your main window class. The above example also adds a few windows - * to the frame. - * - * KMdiMainFrm will provide the "Window" menu needed in common MDI applications. Just - * insert it in your main menu: - * - * \code - * if ( !isFakingSDIApplication() ) - * { - * menuBar()->insertItem( i18n( "&Window" ), windowMenu() ); - * } - * \endcode - * - * To synchronize the positions of the MDI control buttons inserted in your mainmenu: - * \code - * void B_MainModuleWidget::initMenuBar() - * { - * setMenuForSDIModeSysButtons( menuBar() ); - * } - * ... - * void B_MainModuleWidget::resizeEvent ( TQResizeEvent *e ) - * { - * KMdiMainFrm::resizeEvent( e ); - * setSysButtonsAtMenuPosition(); - * } - * \endcode - * - * \par Dynamic mode switching - * - * Dynamic switching of the MDI mode can be done via the following functions: - * - switchToChildframeMode() - * - switchToToplevelMode() - * - switchToTabPageMode() - * - switchToIDEAlMode() - * - * The MDI mode can be gotten using mdiMode(). If you need to fake the look of an SDI application - * use fakeSDIApplication() to fake it and isFakingSDIApplication() to query whether or not an SDI - * interface is being faked. - * - * You can dynamically change the shape of the attached MDI views using setFrameDecorOfAttachedViews(). - * - * Additionally, here's a hint how to restore the mainframe's settings from config file: - * \code - * - * // restore MDI mode (toplevel, childframe, tabpage) - * int mdiMode = config->readIntEntry( "mainmodule session", "MDI mode", KMdi::ChildframeMode); - * switch (mdiMode) { - * case KMdi::ToplevelMode: - * { - * int childFrmModeHt = config->readIntEntry( "mainmodule session", "Childframe mode height", desktop()->height() - 50); - * mainframe->resize( m_pMdiMainFrm->width(), childFrmModeHt); - * mainframe->switchToToplevelMode(); - * } - * break; - * case KMdi::ChildframeMode: - * break; - * case KMdi::TabPageMode: - * { - * int childFrmModeHt = m_pCfgFileManager->readIntEntry( "mainmodule session", "Childframe mode height", desktop()->height() - 50); - * mainframe->resize( m_pMdiMainFrm->width(), childFrmModeHt); - * mainframe->switchToTabPageMode(); - * } - * break; - * default: - * break; - * } - * - * // restore a possible maximized Childframe mode - * bool maxChildFrmMode = config->readBoolEntry( "mainmodule session", "maximized childframes", true); - * mainframe->setEnableMaximizedChildFrmMode(maxChildFrmMode); - * \endcode - * The maximized-Childframe mode means that currently all views are maximized in Childframe mode's application desktop. - * - * \par Managing views - * - * This class provides placing algorithms in Childframe mode. The following is a list of the window placement functions - * - tilePragma() - Tile the windows and allow them to overlap - * - tileAnodine() - Tile the windows but don't allow them to overlap - * - tileVertically() - Tile the windows vertically - * - cascadeWindows() - cascade windows - * - cascadeMaximized() - cascade windows and maximize their viewing area - * - expandVertical() - expand all the windows to use the most amount of vertical space - * - expandHorizontal() - expand all the windows to use the most amount of horizontal space - * - * activateView(KMdiChildView*) and activateView(int index) set the appropriate MDI child view as the active - * one. It will be raised, will get an active MDI frame and will get the focus. Call activeView() to find out what the - * current MDI view is. - * - * Use detachWindow() and attachWindow() for docking the MDI views to desktop and back. - * - * Connect accels of your program with activatePrevWin(), activateNextWin() and activateView(int index). - * - * Note: KMdiChildViews can be added in 2 meanings: Either as a normal child view (usually containing - * user document views) or as a tool-view (usually containing status, info or control widgets). - * The tool-views can be added as floating dockwidgets or as stay-on-top desktop windows in tool style. - * - * Also, pay attention to the fact that when you click on the close button of MDI views that their - * close event should be redirected to closeWindow(). Otherwise the mainframe class will - * not get noticed about the deleted view and a dangling pointer will remain in the MDI control. The - * closeWindow() or the removeWindowFromMdi() method is for that issue. The difference is closeWindow() - * deletes the view object. So if your application wants to control that by itself, call removeWindowFromMdi() - * and call delete by yourself. See also KMdiChildView::closeEvent() for that issue. - * - * Here's an example how you can suggest things for the adding of views to the MDI control via flags: - * \code - * m_mapOfMdiWidgets.insert( pWnd, mh ); - * unsigned int mdiFlags = KMdi::StandardAdd; - * - * if ( !show ) - * mdiFlags |= KMdi::Hide; - * - * if ( !attach ) - * mdiFlags |= KMdi::Detach; - * - * if ( minimize ) - * mdiFlags |= KMdi::Minimize; - * - * if ( bToolWindow) - * mdiFlags |= KMdi::ToolWindow; - * - * if ( m_pMdiMainFrm->isFakingSDIApplication() ) - * { - * if ( attach ) //fake an SDI app - * mdiFlags |= KMdi::Maximize; - * } - * else - * { - * m_pMdiMainFrm->addWindow( pWnd, TQPoint(20, 20), KMdi::AddWindowFlags(mdiFlags)); - * return; - * } - * m_pMdiMainFrm->addWindow( pWnd, KMdi::AddWindowFlags(mdiFlags)); - * \endcode - */ -class KMDI_EXPORT KMdiMainFrm : public KParts::DockMainWindow -{ - friend class KMdiChildView; - friend class KMdiTaskBar; - Q_OBJECT - - friend class KMdiToolViewAccessor; - // attributes -protected: - KMdi::MdiMode m_mdiMode; - KMdiChildArea *m_pMdi; - KMdiTaskBar *m_pTaskBar; - TQPtrList<KMdiChildView> *m_pDocumentViews; - TQMap<TQWidget*, KMdiToolViewAccessor*> *m_pToolViews; - KMdiChildView *m_pCurrentWindow; - TQPopupMenu *m_pWindowPopup; - TQPopupMenu *m_pTaskBarPopup; - TQPopupMenu *m_pWindowMenu; - TQPopupMenu *m_pDockMenu; - TQPopupMenu *m_pMdiModeMenu; - TQPopupMenu *m_pPlacingMenu; - KMenuBar *m_pMainMenuBar; - - TQPixmap *m_pUndockButtonPixmap; - TQPixmap *m_pMinButtonPixmap; - TQPixmap *m_pRestoreButtonPixmap; - TQPixmap *m_pCloseButtonPixmap; - - TQToolButton *m_pUndock; - TQToolButton *m_pMinimize; - TQToolButton *m_pRestore; - TQToolButton *m_pClose; - TQPoint m_undockPositioningOffset; - bool m_bMaximizedChildFrmMode; - int m_oldMainFrmHeight; - int m_oldMainFrmMinHeight; - int m_oldMainFrmMaxHeight; - static KMdi::FrameDecor m_frameDecoration; - bool m_bSDIApplication; - KDockWidget* m_pDockbaseAreaOfDocumentViews; - TQDomDocument* m_pTempDockSession; - bool m_bClearingOfWindowMenuBlocked; - - TQTimer* m_pDragEndTimer; - - bool m_bSwitching; - - KDockWidget* m_leftContainer; - KDockWidget* m_rightContainer; - KDockWidget* m_topContainer; - KDockWidget* m_bottomContainer; - - -private: - KMdiMainFrmPrivate* d; - KMDIPrivate::KMDIGUIClient* m_mdiGUIClient; - bool m_managedDockPositionMode; - - // methods -public: -#ifdef qdoc - KMdiMainFrm( TQWidget* parentWidget, const char* name = "", KMdi::MdiMode mdiMode = KMdi::ChildframeMode, WFlags flags = WType_TopLevel | WDestructiveClose ); -#else - KMdiMainFrm( TQWidget* parentWidget, const char* name = "", KMdi::MdiMode mdiMode = KMdi::ChildframeMode, WFlags flags = (WFlags)(WType_TopLevel | WDestructiveClose) ); -#endif - virtual ~KMdiMainFrm(); - - /** - * Control whether or not the standard MDI menu is displayed - * when a context menu is displayed - */ - void setStandardMDIMenuEnabled( bool showModeMenu = true ); - - void setManagedDockPositionModeEnabled( bool enabled ); - - /** - * Returns whether the application's MDI views are in maximized state or not. - */ - bool isInMaximizedChildFrmMode() { return m_bMaximizedChildFrmMode; } - - /** - * Returns the MDI mode. This can be one of the enumerations KMdi::MdiMode. - */ - KMdi::MdiMode mdiMode() { return m_mdiMode; } - - /** - * Returns the focused attached MDI view. - */ - KMdiChildView* activeWindow(); - - /** - * Returns a popup menu filled according to the MDI view state. You can override this - * method to insert additional entries there. The popup menu is usually popuped when the user - * clicks with the right mouse button on a taskbar entry. The default entries are: - * Undock/Dock, Restore/Maximize/Minimize, Close and an empty sub-popup ( windowPopup() ) - * menu called Operations. - */ - virtual TQPopupMenu * taskBarPopup( KMdiChildView *pWnd, bool bIncludeWindowPopup = false ); - - /** - * Returns a popup menu with only a title "Window". You can fill it with own operations entries - * on the MDI view. This popup menu is inserted as last menu item in taskBarPopup() . - */ - virtual TQPopupMenu * windowPopup( KMdiChildView *pWnd, bool bIncludeTaskbarPopup = true ); - - /** - * Called in the constructor (forces a resize of all MDI views) - */ - virtual void applyOptions(); - - /** - * Returns the KMdiChildView belonging to the given caption string. - */ - KMdiChildView * findWindow( const TQString& caption ); - - enum ExistsAs {DocumentView, ToolView, AnyView}; - /** - * Returns whether this MDI child view is under MDI control (using addWindow() ) or not. - */ - bool windowExists( KMdiChildView *pWnd, ExistsAs as ); - - /** - * Catches certain Qt events and processes it here. - * Currently, here this catches only the KMdiViewCloseEvent (a KMdi user event) which is sent - * from itself in childWindowCloseRequest() right after a KMdiChildView::closeEvent() . - * The reason for this event to itself is simple: It just wants to break the function call stack. - * It continues the processing with calling closeWindow() . - * You see, a close() is translated to a closeWindow() . - * It is necessary that the main frame has to start an MDI view close action because it must - * remove the MDI view from MDI control, additionally. - * - * This method calls TQMainWindow::event , additionally. - */ - virtual bool event( TQEvent* e ); - - /** - * If there's a main menubar given, it will create the 4 maximize mode buttons there (undock, minimize, restore, close). - */ - virtual void setSysButtonsAtMenuPosition(); - - /** - * Returns the height of the taskbar. - */ - virtual int taskBarHeight() { return m_pTaskBar ? m_pTaskBar->height() : 0; } - - /** - * Sets an offset value that is used on detachWindow() . The undocked window - * is visually moved on the desktop by this offset. - */ - virtual void setUndockPositioningOffset( TQPoint offset ) { m_undockPositioningOffset = offset; } - - /** - * If you don't want to know about the inner structure of the KMdi system, you can use - * this iterator to handle with the MDI view list in a more abstract way. - * The iterator hides what special data structure is used in KMdi. - * The caller must delete the iterator once he does not need it anymore. - */ - // FIXME And what exactly are we supposed to fix? -mattr - KMdiIterator<KMdiChildView*>* createIterator() - { - if ( m_pDocumentViews == 0L ) - { - return new KMdiNullIterator<KMdiChildView*>(); - } - else - { - return new KMdiListIterator<KMdiChildView>( *m_pDocumentViews ); - } - } - - /** - * Deletes an KMdiIterator created in the KMdi library (needed for the windows dll problem). - */ - void deleteIterator( KMdiIterator<KMdiChildView*>* pIt ) - { - delete pIt; - } - - /** - * Returns a popup menu that contains the MDI controlled view list. - * Additionally, this menu provides some placing actions for these views. - * Usually, you insert this popup menu in your main menubar as "Window" menu. - */ - TQPopupMenu* windowMenu() const { return m_pWindowMenu; }; - - /** - * Sets a background color for the MDI view area widget. - */ - virtual void setBackgroundColor( const TQColor &c ) { m_pMdi->setBackgroundColor( c ); } - - /** - * Sets a background pixmap for the MDI view area widget. - */ - virtual void setBackgroundPixmap( const TQPixmap &pm ) { m_pMdi->setBackgroundPixmap( pm ); } - - /** - * Sets a size that is used as the default size for a newly to the MDI system added KMdiChildView . - * By default this size is 600x400. So all non-resized added MDI views appear in that size. - */ - void setDefaultChildFrmSize( const TQSize& sz ) { m_pMdi->m_defaultChildFrmSize = sz; } - - /** - * Returns the default size for a newly added KMdiChildView. See setDefaultChildFrmSize() . - */ - TQSize defaultChildFrmSize() { return m_pMdi->m_defaultChildFrmSize; } - - /** - * Do nothing when in Toplevel mode - */ - virtual void setMinimumSize( int minw, int minh ); - - /** - * Returns the Childframe mode height of this. Makes only sense when in Toplevel mode. - */ - int childFrameModeHeight() { return m_oldMainFrmHeight; }; - /** - * Tells the MDI system a QMenu where it can insert buttons for - * the system menu, undock, minimize, restore actions. - * If no such menu is given, KMdi simply overlays the buttons - * at the upper right-hand side of the main widget. - */ - virtual void setMenuForSDIModeSysButtons( KMenuBar* menuBar = 0 ); - - /** - * @return the decoration of the window frame of docked (attached) MDI views - */ - static int frameDecorOfAttachedViews() { return m_frameDecoration; } - - /** - * An SDI application user interface is faked: - * @li an opened view is always maximized - * @li buttons for maximized childframe mode aren't inserted in the main menubar - * @li taskbar and windowmenu are not created/updated - */ - void fakeSDIApplication(); - - /** - * @returns if we are faking an SDI application (fakeSDIApplication()) - */ - bool isFakingSDIApplication() const { return m_bSDIApplication; } - - virtual bool eventFilter( TQObject *obj, TQEvent *e ); - void findRootDockWidgets( TQPtrList<KDockWidget>* pRootDockWidgetList, TQValueList<TQRect>* pPositionList ); - - /** We're switching something.*/ - void setSwitching( const bool switching ) { m_bSwitching = switching; } - bool switching( void ) const { return m_bSwitching; } - -public slots: - /** - * addWindow demands a KMdiChildView. This method wraps every TQWidget in such an object and - * this way you can put every widget under MDI control. - */ - KMdiChildView* createWrapper( TQWidget *view, const TQString& name, const TQString& shortName ); - - /** - * Adds a KMdiChildView to the MDI system. The main frame takes control of it. - * \param pWnd the parent view. - * \param flags the flags for the view such as: - * \li whether the view should be attached or detached. - * \li whether the view should be shown or hidden - * \li whether the view should be maximized, minimized or restored (normalized) - * \li whether the view should be added as tool view (stay-on-top and toplevel) or added as document-type view. - */ - virtual void addWindow( KMdiChildView* pWnd, int flags = KMdi::StandardAdd ); - - //KDE4: merge the two methods - /** - * Adds a KMdiChildView to the MDI system. The main frame takes control of it. - * \param pWnd the parent view. - * \param flags - * You can specify here whether: - * \li the view should be attached or detached. - * \li shown or hidden - * \li maximized, minimized or restored (normalized) - * \li added as tool view (stay-on-top and toplevel) or added as - * document-type view. - * \param index the index of the tab we should insert the new tab after. - * If index == -1 then the tab will just be appended to the end. - * Using this parameter in childview mode has no effect. - * \since 3.3 - */ - void addWindow( KMdiChildView* pWnd, int flags, int index ); - - /** - * Adds a KMdiChildView to the MDI system. The main frame takes control of it. - * \param pWnd the parent view. - * \param pos move the child view to the specified position - * \param flags the flags for the view such as: - * \li whether the view should be attached or detached. - * \li whether the view should be shown or hidden - * \li whether the view should be maximized, minimized or restored (normalized) - * \li whether the view should be added as tool view (stay-on-top and toplevel) or - * added as document-type view. - */ - virtual void addWindow( KMdiChildView* pWnd, TQPoint pos, int flags = KMdi::StandardAdd ); - - /** - * Adds a KMdiChildView to the MDI system. The main frame takes control of it. - * \param pWnd the parent view. - * \param rectNormal Sets the geometry for this child view - * \param flags the flags for the view such as: - * \li whether the view should be attached or detached. - * \li whether the view should be shown or hidden - * \li whether the view should be maximized, minimized or restored (normalized) - * \li whether the view should be added as tool view (stay-on-top and toplevel) or - * added as document-type view. - */ - virtual void addWindow( KMdiChildView* pWnd, TQRect rectNormal, int flags = KMdi::StandardAdd ); - - /** - * Usually called from addWindow() when adding a tool view window. It reparents the given widget - * as toplevel and stay-on-top on the application's main widget. - */ - virtual KMdiToolViewAccessor *addToolWindow( TQWidget* pWnd, KDockWidget::DockPosition pos = KDockWidget::DockNone, - TQWidget* pTargetWnd = 0L, int percent = 50, const TQString& tabToolTip = 0, - const TQString& tabCaption = 0 ); - - virtual void deleteToolWindow( TQWidget* pWnd ); - virtual void deleteToolWindow( KMdiToolViewAccessor *accessor ); - - /** - * Using this method you have to use the setWidget method of the access object, and it is very recommendet, that you use - * the widgetContainer() method for the parent of your newly created widget - */ - KMdiToolViewAccessor *createToolWindow(); - - /** - * Removes a KMdiChildView from the MDI system and from the main frame`s control. - * The caller is responsible for deleting the view. If the view is not deleted it will - * be reparented to 0 - */ - virtual void removeWindowFromMdi( KMdiChildView *pWnd ); - - /** - * Removes a KMdiChildView from the MDI system and from the main frame`s control. - * Note: The view will be deleted! - */ - virtual void closeWindow( KMdiChildView *pWnd, bool layoutTaskBar = true ); - - /** - * Switches the KMdiTaskBar on and off. - */ - virtual void slot_toggleTaskBar(); - - /** - * Makes a main frame controlled undocked KMdiChildView docked. - * Doesn't work on KMdiChildView which aren't added to the MDI system. - * Use addWindow() for that. - */ - virtual void attachWindow( KMdiChildView *pWnd, bool bShow = true, bool bAutomaticResize = false ); - - /** - * Makes a docked KMdiChildView undocked. - * The view window still remains under the main frame's MDI control. - */ - virtual void detachWindow( KMdiChildView *pWnd, bool bShow = true ); - - /** - * Someone wants that the MDI view to be closed. This method sends a KMdiViewCloseEvent to itself - * to break the function call stack. See also event() . - */ - virtual void childWindowCloseRequest( KMdiChildView *pWnd ); - - /** - * Close all views - */ - virtual void closeAllViews(); - - /** - * Iconfiy all views - */ - virtual void iconifyAllViews(); - - /** - * Closes the view of the active (topchild) window - */ - virtual void closeActiveView(); - - /** - * Undocks all view windows (unix-like) - */ - virtual void switchToToplevelMode(); - virtual void finishToplevelMode(); - - /** - * Docks all view windows (Windows-like) - */ - virtual void switchToChildframeMode(); - virtual void finishChildframeMode(); - - /** - * Docks all view windows (Windows-like) - */ - virtual void switchToTabPageMode(); - virtual void finishTabPageMode(); - - /** - * Docks all view windows. Toolviews use dockcontainers - */ - virtual void switchToIDEAlMode(); - virtual void finishIDEAlMode( bool full = true ); - - /** - * Sets the appearance of the IDEAl mode. See KMultiTabBar styles for the first 3 bits. - * @deprecated use setToolviewStyle(int flags) instead - */ - void setIDEAlModeStyle( int flags ) KDE_DEPRECATED; - //KDE4: Get rid of the above. - /** - * Sets the appearance of the toolview tabs. - * @param flags See KMdi::ToolviewStyle. - * @since 3.3 - */ - void setToolviewStyle( int flags ); - /** - * @return if the view taskbar should be shown if there are MDI views - */ - bool isViewTaskBarOn(); - - /** - * Shows the view taskbar. This should be connected with your "View" menu. - */ - virtual void showViewTaskBar(); - - /** - * Hides the view taskbar. This should be connected with your "View" menu. - */ - virtual void hideViewTaskBar(); - - /** - * Update of the window menu contents. - */ - virtual void fillWindowMenu(); - - /** - * Cascades the windows without resizing them. - */ - virtual void cascadeWindows() { m_pMdi->cascadeWindows(); } - - /** - * Cascades the windows resizing them to the maximum available size. - */ - virtual void cascadeMaximized() { m_pMdi->cascadeMaximized(); } - - /** - * Maximizes only in vertical direction. - */ - virtual void expandVertical() { m_pMdi->expandVertical(); } - - /** - * Maximizes only in horizontal direction. - */ - virtual void expandHorizontal() { m_pMdi->expandHorizontal(); } - - /** - * Tile Pragma - */ - virtual void tilePragma() { m_pMdi->tilePragma(); } - - /** - * Tile Anodine - */ - virtual void tileAnodine() { m_pMdi->tileAnodine(); } - - /** - * Tile Vertically - */ - virtual void tileVertically() { m_pMdi->tileVertically(); } - - /** - * Sets the decoration of the window frame of docked (attached) MDI views - * @deprecated Will be removed in KDE 4 - */ - virtual void setFrameDecorOfAttachedViews( int frameDecor ); - - /** - * If in Childframe mode, we can switch between maximized or restored shown MDI views - */ - virtual void setEnableMaximizedChildFrmMode( bool bEnable ); - - /** - * Activates the next open view - */ - virtual void activateNextWin(); - - /** - * Activates the previous open view - */ - virtual void activatePrevWin(); - - /** - * Activates the view first viewed concerning to the access time. - */ - virtual void activateFirstWin(); - - /** - * Activates the view last viewed concerning to the access time. - */ - virtual void activateLastWin(); - - /** - * Activates the view with the tab page index (TabPage mode only) - */ - virtual void activateView( int index ); - -private: - void setupToolViewsForIDEALMode(); - void setupTabbedDocumentViewSpace(); - class KMdiDocumentViewTabWidget * m_documentTabWidget; - -protected: - - virtual void resizeEvent( TQResizeEvent * ); - - /** - * Creates a new MDI taskbar (showing the MDI views as taskbar entries) and shows it. - */ - virtual void createTaskBar(); - - /** - * Creates the MDI view area and connects some signals and slots with the KMdiMainFrm widget. - */ - virtual void createMdiManager(); - - /** - * prevents fillWindowMenu() from m_pWindowMenu->clear(). You have to care for it by yourself. - * This is useful if you want to add some actions in your overridden fillWindowMenu() method. - */ - void blockClearingOfWindowMenu( bool bBlocked ) { m_bClearingOfWindowMenuBlocked = bBlocked; } - - void findToolViewsDockedToMain( TQPtrList<KDockWidget>* list, KDockWidget::DockPosition dprtmw ); - void dockToolViewsIntoContainers( TQPtrList<KDockWidget>& widgetsToReparent, KDockWidget *container ); - TQStringList prepareIdealToTabs( KDockWidget* container ); - void idealToolViewsToStandardTabs( TQStringList widgetNames, KDockWidget::DockPosition pos, int sizee ); - - /** Get tabwidget visibility */ - KMdi::TabWidgetVisibility tabWidgetVisibility(); - - /** Set tabwidget visibility */ - void setTabWidgetVisibility( KMdi::TabWidgetVisibility ); - - /** Returns the tabwidget used in IDEAl and Tabbed modes. Returns 0 in other modes. */ - class KTabWidget * tabWidget() const; - - -protected slots: // Protected slots - /** - * Sets the focus to this MDI view, raises it, activates its taskbar button and updates - * the system buttons in the main menubar when in maximized (Maximize mode). - */ - virtual void activateView( KMdiChildView *pWnd ); - - /** - * Activates the MDI view (see activateView() ) and popups the taskBar popup menu (see taskBarPopup() ). - */ - virtual void taskbarButtonRightClicked( KMdiChildView *pWnd ); - - /** - * Turns the system buttons for maximize mode (SDI mode) off, and disconnects them - */ - void switchOffMaximizeModeForMenu( KMdiChildFrm* oldChild ); - - /** - * Reconnects the system buttons form maximize mode (SDI mode) with the new child frame - */ - void updateSysButtonConnections( KMdiChildFrm* oldChild, KMdiChildFrm* newChild ); - - /** - * Usually called when the user clicks an MDI view item in the "Window" menu. - */ - void windowMenuItemActivated( int id ); - - /** - * Usually called when the user clicks an MDI view item in the sub-popup menu "Docking" of the "Window" menu. - */ - void dockMenuItemActivated( int id ); - - /** - * Popups the "Window" menu. See also windowPopup() . - */ - void popupWindowMenu( TQPoint p ); - - /** - * The timer for main widget moving has elapsed -> send drag end to all concerned views. - */ - void dragEndTimeOut(); - - /** - * internally used to handle click on view close button (TabPage mode, only) - */ - void closeViewButtonPressed(); - -signals: - /** - * Signals the last attached KMdiChildView has been closed - */ - void lastChildFrmClosed(); - - /** - * Signals the last KMdiChildView (that is under MDI control) has been closed - */ - void lastChildViewClosed(); - - /** - * Signals that the Toplevel mode has been left - */ - void leftTopLevelMode(); - - /** - * Signals that a child view has been detached (undocked to desktop) - */ - void childViewIsDetachedNow( TQWidget* ); - - /** Signals we need to collapse the overlapped containers */ - void collapseOverlapContainers(); - - /** Signals the MDI mode has been changed */ - void mdiModeHasBeenChangedTo( KMdi::MdiMode ); - - void viewActivated( KMdiChildView* ); - void viewDeactivated( KMdiChildView* ); - -public slots: - void prevToolViewInDock(); - void nextToolViewInDock(); - -private slots: - void setActiveToolDock( KMdiDockContainer* ); - void removeFromActiveDockList( KMdiDockContainer* ); - void slotDocCurrentChanged( TQWidget* ); - void verifyToplevelHeight(); -#define protected public -signals: -#undef protected - - void toggleTop(); - void toggleLeft(); - void toggleRight(); - void toggleBottom(); -}; - -#endif //_KMDIMAINFRM_H_ - -// kate: space-indent off; tab-width 4; replace-tabs off; indent-mode csands; - |