![]() |
Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members
![]() |
00001 /******************************************************************************** 00002 * * 00003 * M u l t i p l e D o c u m e n t C l i e n t W i n d o w * 00004 * * 00005 ********************************************************************************* 00006 * Copyright (C) 1998,2002 by Jeroen van der Zijp. All Rights Reserved. * 00007 ********************************************************************************* 00008 * This library is free software; you can redistribute it and/or * 00009 * modify it under the terms of the GNU Lesser General Public * 00010 * License as published by the Free Software Foundation; either * 00011 * version 2.1 of the License, or (at your option) any later version. * 00012 * * 00013 * This library is distributed in the hope that it will be useful, * 00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 00016 * Lesser General Public License for more details. * 00017 * * 00018 * You should have received a copy of the GNU Lesser General Public * 00019 * License along with this library; if not, write to the Free Software * 00020 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * 00021 ********************************************************************************* 00022 * $Id: FXMDIClient.h,v 1.23 2002/07/13 06:26:23 fox Exp $ * 00023 ********************************************************************************/ 00024 #ifndef FXMDICLIENT_H 00025 #define FXMDICLIENT_H 00026 00027 #ifndef FXCOMPOSITE_H 00028 #include "FXComposite.h" 00029 #endif 00030 00031 namespace FX { 00032 00033 00034 class FXMDIChild; 00035 00036 00037 /** 00038 * The MDI client window manages a number of MDI child windows in 00039 * a multiple-document interface (MDI) application. 00040 * MDI child windows usually receive messages from the GUI through 00041 * delegation via the MDI client, i.e. the MDI client window is set as 00042 * the target for most GUI commands; the MDI client filters out a few messages 00043 * and forwards all other messages to the active MDI child. 00044 * MDI client can arrange the MDI child windows in various ways:- 00045 * it may maximize one of the MDI child windows, arrange them side-by-side, 00046 * cascade them, or iconify them. 00047 * MDI child windows are notified about changes in the active MDI child 00048 * window by the MDI client. 00049 */ 00050 class FXAPI FXMDIClient : public FXComposite { 00051 FXDECLARE(FXMDIClient) 00052 friend class FXMDIChild; 00053 protected: 00054 FXMDIChild *active; // Active child 00055 FXint cascadex; // Cascade offset X 00056 FXint cascadey; // Cascade offset Y 00057 protected: 00058 FXMDIClient(); 00059 virtual void layout(); 00060 private: 00061 FXMDIClient(const FXMDIClient&); 00062 FXMDIClient &operator=(const FXMDIClient&); 00063 public: 00064 long onChanged(FXObject*,FXSelector,void*); 00065 long onCmdActivateNext(FXObject*,FXSelector,void*); 00066 long onCmdActivatePrev(FXObject*,FXSelector,void*); 00067 long onCmdTileHorizontal(FXObject*,FXSelector,void*); 00068 long onCmdTileVertical(FXObject*,FXSelector,void*); 00069 long onCmdCascade(FXObject*,FXSelector,void*); 00070 long onUpdActivateNext(FXObject*,FXSelector,void*); 00071 long onUpdActivatePrev(FXObject*,FXSelector,void*); 00072 long onUpdTileVertical(FXObject*,FXSelector,void*); 00073 long onUpdTileHorizontal(FXObject*,FXSelector,void*); 00074 long onUpdCascade(FXObject*,FXSelector,void*); 00075 long onUpdClose(FXObject*,FXSelector,void*); 00076 long onUpdMenuClose(FXObject*,FXSelector,void*); 00077 long onUpdRestore(FXObject*,FXSelector,void*); 00078 long onUpdMenuRestore(FXObject*,FXSelector,void*); 00079 long onUpdMinimize(FXObject*,FXSelector,void*); 00080 long onUpdMenuMinimize(FXObject*,FXSelector,void*); 00081 long onUpdMaximize(FXObject*,FXSelector,void*); 00082 long onUpdMenuWindow(FXObject*,FXSelector,void*); 00083 long onCmdCloseDocument(FXObject*,FXSelector,void*); 00084 long onCmdCloseAllDocuments(FXObject*,FXSelector,void*); 00085 long onUpdCloseDocument(FXObject*,FXSelector,void*); 00086 long onUpdCloseAllDocuments(FXObject*,FXSelector,void*); 00087 long onCmdWindowSelect(FXObject*,FXSelector,void*); 00088 long onUpdWindowSelect(FXObject*,FXSelector,void*); 00089 long onUpdAnyWindows(FXObject*,FXSelector,void*); 00090 virtual long onDefault(FXObject*,FXSelector,void*); 00091 public: 00092 enum { 00093 ID_MDI_ANY=65400, 00094 ID_MDI_1, 00095 ID_MDI_2, 00096 ID_MDI_3, 00097 ID_MDI_4, 00098 ID_MDI_5, 00099 ID_MDI_6, 00100 ID_MDI_7, 00101 ID_MDI_8, 00102 ID_MDI_9, 00103 ID_MDI_10, 00104 ID_LAST 00105 }; 00106 public: 00107 00108 /// Construct MDI Client window 00109 FXMDIClient(FXComposite* p,FXuint opts=0,FXint x=0,FXint y=0,FXint w=0,FXint h=0); 00110 00111 /// Return default width 00112 virtual FXint getDefaultWidth(); 00113 00114 /// Return default height 00115 virtual FXint getDefaultHeight(); 00116 00117 /// Pass message to all MDI Child windows 00118 long forallWindows(FXObject* sender,FXSelector sel,void* ptr); 00119 00120 /// Pass message to all MDI Child windows whose target is document 00121 long forallDocWindows(FXObject* document,FXObject* sender,FXSelector sel,void* ptr); 00122 00123 /// Set active MDI Child 00124 virtual FXbool setActiveChild(FXMDIChild* child=NULL,FXbool notify=TRUE); 00125 00126 /// Get current active child; may be NULL! 00127 FXMDIChild* getActiveChild() const { return active; } 00128 00129 // Cascade windows 00130 virtual void cascade(FXbool notify=FALSE); 00131 00132 // Layout horizontally 00133 virtual void horizontal(FXbool notify=FALSE); 00134 00135 // Layout vertically 00136 virtual void vertical(FXbool notify=FALSE); 00137 00138 /// Change cascade offset X 00139 void setCascadeX(FXint off){ cascadex=off; } 00140 00141 /// Change cascade offset Y 00142 void setCascadeY(FXint off){ cascadey=off; } 00143 00144 /// Get cascade offset X 00145 FXint getCascadeX() const { return cascadex; } 00146 00147 /// Get cascade offset Y 00148 FXint getCascadeY() const { return cascadey; } 00149 00150 /// Save object to a stream 00151 virtual void save(FXStream& store) const; 00152 00153 /// Load object from a stream 00154 virtual void load(FXStream& store); 00155 00156 /// Destructor 00157 virtual ~FXMDIClient(); 00158 }; 00159 00160 } 00161 00162 #endif