00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
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;
00058 FXImage *backImage;
00059 FXint cascadex;
00060 FXint cascadey;
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,
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,
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