//---------------------------------------------------------------------------- // filename : tdemdichildarea.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 TQt extension set of // classes and a TQt-based library // 2000-2003 maintained by the KDevelop project // // copyright : (C) 1999-2003 by Falk Brettschneider // and // Szymon Stefanek (stefanek@tin.it) // email : falkbr@kdevelop.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 _TDEMDI_CHILD_AREA_H_ #define _TDEMDI_CHILD_AREA_H_ #include #include #include "tdemdichildfrm.h" #include "tdemdichildview.h" class KMdiChildAreaPrivate; /** * @short Internal class. * * The main frame widget KMdiMainFrm consists of 2 child widgets. One is this class. * It's the widget where the child frames (emulated toplevel MDI views) live in. * This class is the manager for the child frame widgets because it controls the * Z-order widget stack of KMdiChildFrm's. * It provides all placing and positioning algorithms for docked (attached) MDI views. * * KMdiChildArea doesn't know anything about the actual MDI views. It only knows * and manages the frame widgets of attached MDI views. * All actions and stuff concerning only to childframes are handled here. */ class KMDI_EXPORT KMdiChildArea : public TQFrame { friend class KMdiChildFrmCaption; friend class KMdiChildFrm; TQ_OBJECT // attributes public: /** * Z Order stack of KMdiChildFrm childframe windows (top=last) */ TQPtrList *m_pZ; //Auto delete enabled /** * the default size of an newly created childframe */ TQSize m_defaultChildFrmSize; protected: /** * The MDI childframe window caption font */ TQFont m_captionFont; /** * The foreground color of the active MDI childframe window caption */ TQColor m_captionActiveBackColor; /** * The background color of the active MDI childframe window captions */ TQColor m_captionActiveForeColor; /** * The foreground color of inactive MDI childframe window captions */ TQColor m_captionInactiveBackColor; /** * The background color of inactive MDI childframe window captions */ TQColor m_captionInactiveForeColor; int m_captionFontLineSpacing; // methods public: /** * Consruction. Note: This class needn't to know about KMdiMainFrm . */ KMdiChildArea( TQWidget *parent ); /** * Destructor : THERE should be no child windows anymore... * Howewer it simply deletes all the child widgets :) */ ~KMdiChildArea(); /** * Appends a new KMdiChildFrm to this manager. * The child is shown,raised and gets focus if this window has it. */ void manageChild( KMdiChildFrm *lpC, bool bShow = true, bool bCascade = true ); /** * Destroys a managed KMdiChildFrm * Also deletes the client attached to this child. */ void destroyChild( KMdiChildFrm* child, bool focusTopChild = true ); /** * Destroys a managed KMdiChildFrm * Clients attached to the KMdiChildFrm are not deleted. * @param child */ void destroyChildButNotItsView( KMdiChildFrm *lpC, bool bFocusTopChild = true ); /** * Brings the child @p child to the top of the stack * The child is focused if @p setFocus is true. If setFocus is false, the * child is just raised. * @param child */ void setTopChild( KMdiChildFrm* child, bool setFocus = false ); /** * Returns the topmost child (the active one) or 0 if there are no children. * Note that the topmost child may be also hidded , if ALL the windows are minimized. */ inline KMdiChildFrm * topChild() const { return m_pZ->last(); } /** * Returns the number of visible children */ int getVisibleChildCount() const; /** * Calculates the cascade point for the given index. If index is -1 * the cascade point is calculated for the window following the last window * @param indexOfWindow the index of the window in relation the z-ordered window list */ TQPoint getCascadePoint( int indexOfWindow = -1 ); /** * Sets the MDI childframe window caption font * A relayout does not occur when using this function */ void setMdiCaptionFont( const TQFont &fnt ); /** * Sets the foreground color of the active MDI childframe window caption * A relayout does not occur when using this function */ void setMdiCaptionActiveForeColor( const TQColor &clr ); /** * Sets the background color of the active MDI childframe window captions * A relayout does not occur when using this function */ void setMdiCaptionActiveBackColor( const TQColor &clr ); /** * Sets the foreground color of inactive MDI childframe window captions * A relayout does not occur when using this function */ void setMdiCaptionInactiveForeColor( const TQColor &clr ); /** * Sets the background color of inactive MDI childframe window captions * A relayout does not occur when using this function */ void setMdiCaptionInactiveBackColor( const TQColor &clr ); /** * Gets all caption colors, consistent with current WM settings * (or other Desktop settings e.g. system settings for win32) * This method is useful not only for KMDI child windows. * Colors are returned via activeBG, activeFG, inactiveBG, inactiveFG references. * * @deprecated Use TDEGlobalSettings::activeTitleColor(), TDEGlobalSettings::activeTextColor(), * TDEGlobalSettings::inactiveTitleColor() and TDEGlobalSettings::inactiveTextColor() instead. */ static void getCaptionColors( const TQPalette &pal, TQColor &activeBG, TQColor &activeFG, TQColor &inactiveBG, TQColor &inactiveFG ) TDE_DEPRECATED; public slots: /** * Cascades all windows resizing them to the minimum size. */ void cascadeWindows(); /** * Cascades all windows resizing them to the maximum available size. */ void cascadeMaximized(); /** * Maximize all windows but only in vertical direction */ void expandVertical(); /** * Maximize all windows but only in horizontal direction */ void expandHorizontal(); /** * Gives focus to the topmost child if it doesn't get focus * automatically or you want to wait to give it focus */ void focusTopChild(); /** * Tile Pragma */ void tilePragma(); /** * Tile Anodine */ void tileAnodine(); /** * Tile all the windows in the child area vertically */ void tileVertically(); /** * Position and layout the minimized child frames */ void layoutMinimizedChildren(); protected: /** * Internally used for the tile algorithm */ void tileAllInternal( int maxWnds ); /** * Automatically resizes a maximized MDI view and layouts the positions of minimized MDI views. */ virtual void resizeEvent( TQResizeEvent * ); /** * Shows the 'Window' popup menu on right mouse button click */ void mousePressEvent( TQMouseEvent *e ); /** * Internally used. Actions that are necessary when an MDI view gets minimized */ void childMinimized( KMdiChildFrm *lpC, bool bWasMaximized ); signals: /** * Signals that there aren't maximized child frames any more */ void noMaximizedChildFrmLeft( KMdiChildFrm* ); /** * Signals that the child frames are maximized now */ void nowMaximized( bool ); /** * Signals a KMdiMainFrm that the signal/slot connections of the system buttons in the * menubar (only in Maximize mode) must be updated to another MDI view because the focused * MDI view has changed * @internal */ void sysButtonConnectionsMustChange( KMdiChildFrm*, KMdiChildFrm* ); /** * Signals a KMdiMainFrm that the 'Window' popup menu must be shown * @internal */ void popupWindowMenu( TQPoint ); /** * Signals that the last attached (docked) MDI view has been closed. * Note: Detached MDI views can remain. */ void lastChildFrmClosed(); private: KMdiChildAreaPrivate *d; }; #endif // _TDEMDI_CHILDAREA_H_