Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members

/home/jeroen/FOX/fox/fox-1.7.33/include/FXMDIClient.h
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,2012 by Jeroen van der Zijp.   All Rights Reserved.        *
00007 *********************************************************************************
00008 * This library is free software; you can redistribute it and/or modify          *
00009 * it under the terms of the GNU Lesser General Public License as published by   *
00010 * the Free Software Foundation; either version 3 of the License, or             *
00011 * (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                 *
00016 * GNU Lesser General Public License for more details.                           *
00017 *                                                                               *
00018 * You should have received a copy of the GNU Lesser General Public License      *
00019 * along with this program.  If not, see <http://www.gnu.org/licenses/>          *
00020 ********************************************************************************/
00021 #ifndef FXMDICLIENT_H
00022 #define FXMDICLIENT_H
00023 
00024 #ifndef FXCOMPOSITE_H
00025 #include "FXComposite.h"
00026 #endif
00027 
00028 namespace FX {
00029 
00030 
00031 class FXMDIChild;
00032 
00033 
00053 class FXAPI FXMDIClient : public FXComposite {
00054   FXDECLARE(FXMDIClient)
00055   friend class FXMDIChild;
00056 protected:
00057   FXMDIChild *active;           // Active child
00058   FXImage    *backImage;        // Optional background image
00059   FXint       cascadex;         // Cascade offset X
00060   FXint       cascadey;         // Cascade offset Y
00061 protected:
00062   FXMDIClient();
00063 private:
00064   FXMDIClient(const FXMDIClient&);
00065   FXMDIClient &operator=(const FXMDIClient&);
00066 public:
00067   long onPaint(FXObject*,FXSelector,void*);
00068   long onCmdActivateNext(FXObject*,FXSelector,void*);
00069   long onCmdActivatePrev(FXObject*,FXSelector,void*);
00070   long onCmdTileHorizontal(FXObject*,FXSelector,void*);
00071   long onCmdTileVertical(FXObject*,FXSelector,void*);
00072   long onCmdCascade(FXObject*,FXSelector,void*);
00073   long onUpdActivateNext(FXObject*,FXSelector,void*);
00074   long onUpdActivatePrev(FXObject*,FXSelector,void*);
00075   long onUpdTileVertical(FXObject*,FXSelector,void*);
00076   long onUpdTileHorizontal(FXObject*,FXSelector,void*);
00077   long onUpdCascade(FXObject*,FXSelector,void*);
00078   long onUpdClose(FXObject*,FXSelector,void*);
00079   long onUpdMenuClose(FXObject*,FXSelector,void*);
00080   long onUpdRestore(FXObject*,FXSelector,void*);
00081   long onUpdMenuRestore(FXObject*,FXSelector,void*);
00082   long onUpdMinimize(FXObject*,FXSelector,void*);
00083   long onUpdMenuMinimize(FXObject*,FXSelector,void*);
00084   long onUpdMaximize(FXObject*,FXSelector,void*);
00085   long onUpdMenuWindow(FXObject*,FXSelector,void*);
00086   long onCmdWindowSelect(FXObject*,FXSelector,void*);
00087   long onUpdWindowSelect(FXObject*,FXSelector,void*);
00088   long onCmdOthersWindows(FXObject*,FXSelector,void*);
00089   long onUpdOthersWindows(FXObject*,FXSelector,void*);
00090   long onUpdAnyWindows(FXObject*,FXSelector,void*);
00091   virtual long onDefault(FXObject*,FXSelector,void*);
00092 public:
00093   enum {
00094     ID_MDI_ANY=65400,
00095     ID_MDI_1,           // Select MDI child 1
00096     ID_MDI_2,
00097     ID_MDI_3,
00098     ID_MDI_4,
00099     ID_MDI_5,
00100     ID_MDI_6,
00101     ID_MDI_7,
00102     ID_MDI_8,
00103     ID_MDI_9,
00104     ID_MDI_10,
00105     ID_MDI_OVER_1,      // Sensitize MDI menu when 1 or more children
00106     ID_MDI_OVER_2,
00107     ID_MDI_OVER_3,
00108     ID_MDI_OVER_4,
00109     ID_MDI_OVER_5,
00110     ID_MDI_OVER_6,
00111     ID_MDI_OVER_7,
00112     ID_MDI_OVER_8,
00113     ID_MDI_OVER_9,
00114     ID_MDI_OVER_10,
00115     ID_LAST
00116     };
00117 public:
00118 
00120   FXMDIClient(FXComposite* p,FXuint opts=0,FXint x=0,FXint y=0,FXint w=0,FXint h=0);
00121 
00123   virtual void create();
00124 
00126   virtual FXint getDefaultWidth();
00127 
00129   virtual FXint getDefaultHeight();
00130 
00132   virtual void layout();
00133 
00138   long forallWindows(FXObject* sender,FXSelector sel,void* ptr);
00139 
00144   long forallDocuments(FXObject* sender,FXSelector sel,void* ptr);
00145 
00150   long forallDocWindows(FXObject* document,FXObject* sender,FXSelector sel,void* ptr);
00151 
00153   virtual FXbool setActiveChild(FXMDIChild* child=NULL,FXbool notify=true);
00154 
00156   FXMDIChild* getActiveChild() const { return active; }
00157 
00159   FXObject* getActiveDocument() const;
00160 
00162   void setBackImage(FXImage* img);
00163 
00165   FXImage* getBackImage() const { return backImage; }
00166 
00168   virtual void cascade(FXbool notify=false);
00169 
00171   virtual void horizontal(FXbool notify=false);
00172 
00174   virtual void vertical(FXbool notify=false);
00175 
00177   void setCascadeX(FXint off){ cascadex=off; }
00178 
00180   void setCascadeY(FXint off){ cascadey=off; }
00181 
00183   FXint getCascadeX() const { return cascadex; }
00184 
00186   FXint getCascadeY() const { return cascadey; }
00187 
00189   virtual void save(FXStream& store) const;
00190 
00192   virtual void load(FXStream& store);
00193 
00195   virtual ~FXMDIClient();
00196   };
00197 
00198 }
00199 
00200 #endif

Copyright © 1997-2011 Jeroen van der Zijp