00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
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
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 class FXAPI FXMDIClient : public FXComposite {
00051 FXDECLARE(FXMDIClient)
00052 friend class FXMDIChild;
00053 protected:
00054 FXMDIChild *active;
00055 FXint cascadex;
00056 FXint cascadey;
00057 protected:
00058 FXMDIClient();
00059 private:
00060 FXMDIClient(const FXMDIClient&);
00061 FXMDIClient &operator=(const FXMDIClient&);
00062 public:
00063 long onCmdActivateNext(FXObject*,FXSelector,void*);
00064 long onCmdActivatePrev(FXObject*,FXSelector,void*);
00065 long onCmdTileHorizontal(FXObject*,FXSelector,void*);
00066 long onCmdTileVertical(FXObject*,FXSelector,void*);
00067 long onCmdCascade(FXObject*,FXSelector,void*);
00068 long onUpdActivateNext(FXObject*,FXSelector,void*);
00069 long onUpdActivatePrev(FXObject*,FXSelector,void*);
00070 long onUpdTileVertical(FXObject*,FXSelector,void*);
00071 long onUpdTileHorizontal(FXObject*,FXSelector,void*);
00072 long onUpdCascade(FXObject*,FXSelector,void*);
00073 long onUpdClose(FXObject*,FXSelector,void*);
00074 long onUpdMenuClose(FXObject*,FXSelector,void*);
00075 long onUpdRestore(FXObject*,FXSelector,void*);
00076 long onUpdMenuRestore(FXObject*,FXSelector,void*);
00077 long onUpdMinimize(FXObject*,FXSelector,void*);
00078 long onUpdMenuMinimize(FXObject*,FXSelector,void*);
00079 long onUpdMaximize(FXObject*,FXSelector,void*);
00080 long onUpdMenuWindow(FXObject*,FXSelector,void*);
00081 long onCmdWindowSelect(FXObject*,FXSelector,void*);
00082 long onUpdWindowSelect(FXObject*,FXSelector,void*);
00083 long onCmdOthersWindows(FXObject*,FXSelector,void*);
00084 long onUpdOthersWindows(FXObject*,FXSelector,void*);
00085 long onUpdAnyWindows(FXObject*,FXSelector,void*);
00086 virtual long onDefault(FXObject*,FXSelector,void*);
00087 public:
00088 enum {
00089 ID_MDI_ANY=65400,
00090 ID_MDI_1,
00091 ID_MDI_2,
00092 ID_MDI_3,
00093 ID_MDI_4,
00094 ID_MDI_5,
00095 ID_MDI_6,
00096 ID_MDI_7,
00097 ID_MDI_8,
00098 ID_MDI_9,
00099 ID_MDI_10,
00100 ID_MDI_OVER_1,
00101 ID_MDI_OVER_2,
00102 ID_MDI_OVER_3,
00103 ID_MDI_OVER_4,
00104 ID_MDI_OVER_5,
00105 ID_MDI_OVER_6,
00106 ID_MDI_OVER_7,
00107 ID_MDI_OVER_8,
00108 ID_MDI_OVER_9,
00109 ID_MDI_OVER_10,
00110 ID_LAST
00111 };
00112 public:
00113
00114
00115 FXMDIClient(FXComposite* p,FXuint opts=0,FXint x=0,FXint y=0,FXint w=0,FXint h=0);
00116
00117
00118 virtual FXint getDefaultWidth();
00119
00120
00121 virtual FXint getDefaultHeight();
00122
00123
00124 virtual void layout();
00125
00126
00127
00128
00129
00130 long forallWindows(FXObject* sender,FXSelector sel,void* ptr);
00131
00132
00133
00134
00135
00136 long forallDocuments(FXObject* sender,FXSelector sel,void* ptr);
00137
00138
00139
00140
00141
00142 long forallDocWindows(FXObject* document,FXObject* sender,FXSelector sel,void* ptr);
00143
00144
00145 virtual FXbool setActiveChild(FXMDIChild* child=NULL,FXbool notify=TRUE);
00146
00147
00148 FXMDIChild* getActiveChild() const { return active; }
00149
00150
00151 virtual void cascade(FXbool notify=FALSE);
00152
00153
00154 virtual void horizontal(FXbool notify=FALSE);
00155
00156
00157 virtual void vertical(FXbool notify=FALSE);
00158
00159
00160 void setCascadeX(FXint off){ cascadex=off; }
00161
00162
00163 void setCascadeY(FXint off){ cascadey=off; }
00164
00165
00166 FXint getCascadeX() const { return cascadex; }
00167
00168
00169 FXint getCascadeY() const { return cascadey; }
00170
00171
00172 virtual void save(FXStream& store) const;
00173
00174
00175 virtual void load(FXStream& store);
00176
00177
00178 virtual ~FXMDIClient();
00179 };
00180
00181 }
00182
00183 #endif