33 #ifndef ROOT_TGMdiMainFrame
34 #define ROOT_TGMdiMainFrame
50 enum EMdiResizingModes {
53 kMdiDefaultResizeMode = kMdiOpaque
66 kMdiDefaultHints = kMdiMenu | kMdiMinimize | kMdiRestore |
67 kMdiMaximize | kMdiSize | kMdiClose
71 enum EMdiArrangementModes {
72 kMdiTileHorizontal = 1,
78 enum EMdiGeometryMask {
79 kMdiClientGeometry = BIT(0),
80 kMdiDecorGeometry = BIT(1),
81 kMdiIconGeometry = BIT(2)
88 class TGMdiDecorFrame;
93 class TGMdiFrameList {
95 friend class TGMdiMainFrame;
99 TGMdiDecorFrame *fDecor;
100 TGMdiFrameList *fPrev, *fNext;
101 TGMdiFrameList *fCyclePrev, *fCycleNext;
104 virtual ~TGMdiFrameList() { }
106 UInt_t GetFrameId()
const {
return fFrameId; }
107 TGMdiDecorFrame *GetDecorFrame()
const {
return fDecor; }
108 TGMdiFrameList *GetPrev()
const {
return fPrev; }
109 TGMdiFrameList *GetNext()
const {
return fNext; }
110 TGMdiFrameList *GetCyclePrev()
const {
return fCyclePrev; }
111 TGMdiFrameList *GetCycleNext()
const {
return fCycleNext; }
113 void SetFrameId(UInt_t
id) { fFrameId = id; }
114 void SetDecorFrame(TGMdiDecorFrame *decor) { fDecor = decor; }
115 void SetPrev(TGMdiFrameList *prev) { fPrev = prev; }
116 void SetNext(TGMdiFrameList *next) { fNext = next; }
117 void SetCyclePrev(TGMdiFrameList *prev) { fCyclePrev = prev; }
118 void SetCycleNext(TGMdiFrameList *next) { fCycleNext = next; }
120 ClassDef(TGMdiFrameList, 0)
124 class TGMdiGeometry {
128 TGRectangle fClient, fDecoration, fIcon;
130 virtual ~TGMdiGeometry() { }
132 ClassDef(TGMdiGeometry, 0)
138 class TGMdiMainFrame :
public TGCanvas {
140 friend class TGMdiFrame;
148 Int_t fCurrentX, fCurrentY, fResizeMode;
149 Int_t fArrangementMode;
150 TGFont *fFontCurrent, *fFontNotCurrent;
151 Pixel_t fBackCurrent, fForeCurrent;
152 Pixel_t fBackNotCurrent, fForeNotCurrent;
156 Long_t fNumberOfFrames;
157 TGMdiMenuBar *fMenuBar;
159 TGPopupMenu *fWinListMenu;
160 TGMdiFrameList *fChildren;
161 TGMdiFrameList *fCurrent;
163 void AddMdiFrame(TGMdiFrame *f);
164 Bool_t RemoveMdiFrame(TGMdiFrame *f);
166 Bool_t SetCurrent(TGMdiFrameList *newcurrent);
167 TGMdiDecorFrame *GetDecorFrame(UInt_t
id)
const;
168 TGMdiDecorFrame *GetDecorFrame(TGMdiFrame *frame)
const;
170 void UpdateWinListMenu();
173 TGMdiMainFrame(
const TGWindow *p, TGMdiMenuBar *menu, Int_t w, Int_t h,
175 Pixel_t back = GetDefaultFrameBackground());
176 virtual ~TGMdiMainFrame();
178 virtual Bool_t HandleKey(Event_t *event);
179 virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2);
181 virtual void Layout();
183 virtual void FreeMove(TGMdiFrame *frame);
184 virtual void FreeSize(TGMdiFrame *frame);
185 virtual void Restore(TGMdiFrame *frame);
186 virtual void Maximize(TGMdiFrame *frame);
187 virtual void Minimize(TGMdiFrame *frame);
188 virtual Int_t Close(TGMdiFrame *frame);
189 virtual Int_t ContextHelp(TGMdiFrame *frame);
190 virtual void CloseAll();
192 virtual void Cascade() { ArrangeFrames(kMdiCascade); }
193 virtual void TileHorizontal() { ArrangeFrames(kMdiTileHorizontal); }
194 virtual void TileVertical() { ArrangeFrames(kMdiTileVertical); }
196 virtual void ArrangeFrames(Int_t mode);
197 virtual void ArrangeMinimized();
199 virtual void CirculateUp();
200 virtual void CirculateDown();
202 TGMdiFrame *GetCurrent()
const;
203 TGMdiFrame *GetMdiFrame(UInt_t
id)
const;
204 TGFrame *GetContainer()
const {
return fContainer; }
205 Bool_t SetCurrent(UInt_t newcurrent);
206 Bool_t SetCurrent(TGMdiFrame *f);
208 TGPopupMenu *GetWinListMenu()
const {
return fWinListMenu; }
209 TGMdiMenuBar *GetMenu()
const {
return fMenuBar; }
211 TGMdiFrameList *GetWindowList(Int_t current = kFALSE)
const
212 {
return current ? fCurrent : fChildren; }
213 Long_t GetNumberOfFrames()
const {
return fNumberOfFrames; }
215 void SetResizeMode(Int_t mode = kMdiDefaultResizeMode);
216 void UpdateMdiButtons();
218 TGRectangle GetBBox()
const;
219 TGRectangle GetMinimizedBBox()
const;
221 TGMdiGeometry GetWindowGeometry(TGMdiFrame *f)
const;
222 void ConfigureWindow(TGMdiFrame *f, TGMdiGeometry &geom);
224 Bool_t IsMaximized(TGMdiFrame *f);
225 Bool_t IsMinimized(TGMdiFrame *f);
227 virtual void FrameCreated(Int_t
id) { Emit(
"FrameCreated(Int_t)",
id); }
228 virtual void FrameClosed(Int_t
id) { Emit(
"FrameClosed(Int_t)",
id); }
229 virtual void FrameMaximized(Int_t
id) { Emit(
"FrameMaximized(Int_t)",
id); }
230 virtual void FrameMinimized(Int_t
id) { Emit(
"FrameMinimized(Int_t)",
id); }
231 virtual void FrameRestored(Int_t
id) { Emit(
"FrameRestored(Int_t)",
id); }
232 virtual void FramesArranged(Int_t mode) { Emit(
"FramesArranged(Int_t)", mode); }
234 virtual void SavePrimitive(std::ostream &out, Option_t *option =
"");
236 ClassDef(TGMdiMainFrame, 0)
242 class TGMdiContainer :
public TGFrame {
245 const TGMdiMainFrame *fMain;
248 TGMdiContainer(
const TGMdiMainFrame *p, Int_t w, Int_t h,
250 ULong_t back = GetDefaultFrameBackground());
252 virtual Bool_t HandleConfigureNotify(Event_t *event);
253 virtual TGDimension GetDefaultSize()
const;
255 ClassDef(TGMdiContainer, 0)