Logo ROOT   6.10/09
Reference Guide
TEveWindow.h
Go to the documentation of this file.
1 // @(#)root/eve:$Id$
2 // Author: Matevz Tadel 2007
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TEveWindow
13 #define ROOT_TEveWindow
14 
15 #include "TEveElement.h"
16 
17 #include "TGFrame.h"
18 #include "TContextMenu.h"
19 
20 class TEveWindow;
21 class TEveWindowSlot;
22 class TEveWindowFrame;
23 class TEveWindowMainFrame;
24 class TEveWindowPack;
25 class TEveWindowTab;
26 class TEveContextMenu;
27 
28 class TGButton;
29 class TGSplitButton;
30 class TGTextButton;
31 
32 class TGPack;
33 class TGTab;
34 
35 //==============================================================================
36 // TEveCompositeFrame
37 //==============================================================================
38 
40 {
41  friend class TEveWindow;
42  friend class TEveWindowManager;
43 
44 public:
45  typedef TGFrame* (*IconBarCreator_foo)(TEveCompositeFrame*, TGCompositeFrame*, Int_t);
46 
47 private:
48  TEveCompositeFrame(const TEveCompositeFrame&); // Not implemented
49  TEveCompositeFrame& operator=(const TEveCompositeFrame&); // Not implemented
50 
55 
56 protected:
57  TGCompositeFrame *fTopFrame;
62 
64 
67 
69 
71  static const TString fgkEmptyFrameName;
72 
73  static TList *fgFrameList;
74 
75 public:
76  TEveCompositeFrame(TGCompositeFrame* gui_parent, TEveWindow* eve_parent);
77  virtual ~TEveCompositeFrame();
78 
79  virtual void WindowNameChanged(const TString& name);
80 
81  virtual void Destroy() = 0;
82 
83  virtual void AcquireEveWindow(TEveWindow* ew);
84  virtual TEveWindow* RelinquishEveWindow(Bool_t reparent=kTRUE);
85 
86  TEveWindow* GetEveWindow() const { return fEveWindow; }
88 
89  virtual void SetCurrent(Bool_t curr);
90  virtual void SetShowTitleBar(Bool_t show);
91  virtual void HideAllDecorations();
92  virtual void ShowNormalDecorations();
93 
94  void ActionPressed();
95  void FlipTitleBarState();
96  void TitleBarClicked();
97 
98  static void SetupFrameMarkup(IconBarCreator_foo creator,
99  UInt_t top_frame_height = 14,
100  UInt_t mini_bar_height = 4,
101  Bool_t allow_top_collapse = kTRUE);
102 
103  ClassDef(TEveCompositeFrame, 0); // Composite frame containing eve-window-controls and eve-windows.
104 };
105 
106 
107 //==============================================================================
108 // TEveCompositeFrameInMainFrame
109 //==============================================================================
110 
112 {
113 private:
116 
117 protected:
121 
122 public:
124  TGMainFrame* mf);
126 
127  virtual void WindowNameChanged(const TString& name);
128 
129  virtual void Destroy();
130 
131  void SetOriginalSlotAndContainer(TEveWindow* slot, TEveWindow* container);
132 
133  void SomeWindowClosed(TEveWindow* w);
134  void MainFrameClosed();
135 
136  TEveWindow* GetOriginalSlot() const { return fOriginalSlot; }
137  TEveWindow* GetOriginalContainer() const { return fOriginalContainer; }
138 
139  ClassDef(TEveCompositeFrameInMainFrame, 0); // Eve-composite-frame that is contained in one tab of a TGTab.
140 };
141 
142 
143 //==============================================================================
144 // TEveCompositeFrameInPack
145 //==============================================================================
146 
148 {
149 private:
150  TEveCompositeFrameInPack(const TEveCompositeFrameInPack&); // Not implemented
151  TEveCompositeFrameInPack& operator=(const TEveCompositeFrameInPack&); // Not implemented
152 
153 protected:
155 
156 public:
158  TGPack* pack);
159  virtual ~TEveCompositeFrameInPack();
160 
161  virtual void Destroy();
162 
163  ClassDef(TEveCompositeFrameInPack, 0); // Eve-composite-frame that is contained in a TGPack.
164 };
165 
166 
167 //==============================================================================
168 // TEveCompositeFrameInTab
169 //==============================================================================
170 
172 {
173 private:
174  TEveCompositeFrameInTab(const TEveCompositeFrameInTab&); // Not implemented
175  TEveCompositeFrameInTab& operator=(const TEveCompositeFrameInTab&); // Not implemented
176 
177 protected:
180 
181  Int_t FindTabIndex();
182 
183 public:
185  TGTab* tab);
186  virtual ~TEveCompositeFrameInTab();
187 
188  virtual void WindowNameChanged(const TString& name);
189 
190  virtual void Destroy();
191 
192  virtual void SetCurrent(Bool_t curr);
193 
194  ClassDef(TEveCompositeFrameInTab, 0); // Eve-composite-frame that is contained in one tab of a TGTab.
195 };
196 
197 
198 //==============================================================================
199 //==============================================================================
200 // TEveWindow classes
201 //==============================================================================
202 //==============================================================================
203 
204 
205 //==============================================================================
206 // TEveWindow
207 //==============================================================================
208 
210 {
211  friend class TEveWindowManager;
212 
213 private:
214  TEveWindow(const TEveWindow&); // Not implemented
215  TEveWindow& operator=(const TEveWindow&); // Not implemented
216 
217 protected:
220 
221  virtual void SetCurrent(Bool_t curr);
222 
225 
228 
229  virtual void PreDeleteElement();
230 
231 public:
232  TEveWindow(const char* n="TEveWindow", const char* t="");
233  virtual ~TEveWindow();
234 
235  virtual void NameTitleChanged();
236 
237  virtual TGFrame* GetGUIFrame() = 0;
238  virtual void PreUndock();
239  virtual void PostDock();
240 
241  virtual Bool_t CanMakeNewSlots() const { return kFALSE; }
242  virtual TEveWindowSlot* NewSlot() { return 0; }
243 
244  void PopulateEmptyFrame(TEveCompositeFrame* ef);
245 
246  void SwapWindow(TEveWindow* w);
247  void SwapWindowWithCurrent(); // *MENU*
248 
249  void UndockWindow(); // *MENU*
250  void UndockWindowDestroySlot(); // *MENU*
251 
252  void ReplaceWindow(TEveWindow* w);
253 
254  virtual void DestroyWindow(); // *MENU*
255  virtual void DestroyWindowAndSlot(); // *MENU*
256 
257  TEveCompositeFrame* GetEveFrame() { return fEveFrame; }
258  void ClearEveFrame();
259 
260  void FlipShowTitleBar() { SetShowTitleBar(!fShowTitleBar); }
261  Bool_t GetShowTitleBar() const { return fShowTitleBar; }
262  void SetShowTitleBar(Bool_t x);
263 
264  Bool_t IsCurrent() const;
265  void MakeCurrent();
266 
267 
268  Bool_t IsAncestorOf(TEveWindow* win);
269 
270  void TitleBarClicked();
271 
272 
273  // Static helper functions for common window management scenarios.
274 
275  static TEveWindowSlot* CreateDefaultWindowSlot();
276  static TEveWindowSlot* CreateWindowMainFrame(TEveWindow* eve_parent=0);
277  static TEveWindowSlot* CreateWindowInTab(TGTab* tab, TEveWindow* eve_parent=0);
278 
279  static void SwapWindows(TEveWindow* w1, TEveWindow* w2);
280 
281  // Access to static data-members.
282 
283  static UInt_t GetMainFrameDefWidth();
284  static UInt_t GetMainFrameDefHeight();
285  static void SetMainFrameDefWidth (UInt_t x);
286  static void SetMainFrameDefHeight(UInt_t x);
287 
288  static Pixel_t GetCurrentBackgroundColor();
289  static Pixel_t GetMiniBarBackgroundColor();
290  static void SetCurrentBackgroundColor(Pixel_t p);
291  static void SetMiniBarBackgroundColor(Pixel_t p);
292 
293  ClassDef(TEveWindow, 0); // Abstract base-class for eve-windows.
294 };
295 
296 
297 //==============================================================================
298 // TEveWindowSlot
299 //==============================================================================
300 
302 {
303 private:
304  TEveWindowSlot(const TEveWindowSlot&); // Not implemented
305  TEveWindowSlot& operator=(const TEveWindowSlot&); // Not implemented
306 
307 protected:
310 
311  virtual void SetCurrent(Bool_t curr);
312 
313 public:
314  TEveWindowSlot(const char* n="TEveWindowSlot", const char* t="");
315  virtual ~TEveWindowSlot();
316 
317  virtual TGFrame* GetGUIFrame();
318 
319  TEveWindowPack* MakePack(); // *MENU*
320  TEveWindowTab* MakeTab(); // *MENU*
321 
322  TEveWindowFrame* MakeFrame(TGFrame* frame=0);
323 
324  TGCompositeFrame* StartEmbedding();
325  TEveWindowFrame* StopEmbedding(const char* name=0);
326 
327  ClassDef(TEveWindowSlot, 0); // An unoccupied eve-window slot.
328 };
329 
330 
331 //==============================================================================
332 // TEveWindowFrame
333 //==============================================================================
334 
336 {
337 private:
338  TEveWindowFrame(const TEveWindowFrame&); // Not implemented
339  TEveWindowFrame& operator=(const TEveWindowFrame&); // Not implemented
340 
341 protected:
343 
344 public:
345  TEveWindowFrame(TGFrame* frame, const char* n="TEveWindowFrame", const char* t="");
346  virtual ~TEveWindowFrame();
347 
348  virtual TGFrame* GetGUIFrame() { return fGUIFrame; }
349 
350  TGCompositeFrame* GetGUICompositeFrame();
351 
352  ClassDef(TEveWindowFrame, 0); // Eve-window containing any TGFrame.
353 };
354 
355 
356 //==============================================================================
357 // TEveWindowPack
358 //==============================================================================
359 
361 {
362 private:
363  TEveWindowPack(const TEveWindowPack&); // Not implemented
364  TEveWindowPack& operator=(const TEveWindowPack&); // Not implemented
365 
366 protected:
368 
369 public:
370  TEveWindowPack(TGPack* p, const char* n="TEveWindowPack", const char* t="");
371  virtual ~TEveWindowPack();
372 
373  virtual TGFrame* GetGUIFrame();
374 
375  virtual Bool_t CanMakeNewSlots() const { return kTRUE; }
376  virtual TEveWindowSlot* NewSlotWithWeight(Float_t w);
377  virtual TEveWindowSlot* NewSlot(); // *MENU*
378 
379  void FlipOrientation(); // *MENU*
380  void SetVertical(Bool_t x=kTRUE);
381  void SetHorizontal() { SetVertical(kFALSE); }
382 
383  void EqualizeFrames(); // *MENU*
384 
385  TGPack* GetPack() const { return fPack; }
386 
387  ClassDef(TEveWindowPack, 0); // Eve-window containing a TGPack.
388 };
389 
390 
391 //==============================================================================
392 // TEveWindowTab
393 //==============================================================================
394 
395 class TEveWindowTab : public TEveWindow
396 {
397 private:
398  TEveWindowTab(const TEveWindowTab&); // Not implemented
399  TEveWindowTab& operator=(const TEveWindowTab&); // Not implemented
400 
401 protected:
403 
404 public:
405  TEveWindowTab(TGTab* tab, const char* n="TEveWindowTab", const char* t="");
406  virtual ~TEveWindowTab();
407 
408  virtual TGFrame* GetGUIFrame();
409 
410  virtual Bool_t CanMakeNewSlots() const { return kTRUE; }
411  virtual TEveWindowSlot* NewSlot(); // *MENU*
412 
413  TGTab* GetTab() const { return fTab; }
414 
415  ClassDef(TEveWindowTab, 0); // Eve-window containing a TGTab.
416 };
417 
418 
419 //==============================================================================
420 //==============================================================================
421 // Helper classes
422 //==============================================================================
423 //==============================================================================
424 
425 
426 //==============================================================================
427 // TEveContextMenu
428 //==============================================================================
429 
431 {
432 public:
433  TEveContextMenu(const char *name, const char *title = "Eve context menu");
434 
435  void SetupAndPopup(TGWindow* button, TObject* obj);
436 
437  ClassDef(TEveContextMenu, 0) // Specialization of TContextMenu for Eve.
438 };
439 
440 #endif
virtual void HideAllDecorations()
Hide title-bar and mini-bar.
Definition: TEveWindow.cxx:301
virtual TEveWindowSlot * NewSlot()
Definition: TEveWindow.h:242
Encapsulates TGPack into an eve-window.
Definition: TEveWindow.h:360
Specialization of TContext menu.
Definition: TEveWindow.h:430
TEveCompositeFrame * fEveFrame
Definition: TEveWindow.h:218
static TEveContextMenu * fgCtxMenu
Definition: TEveWindow.h:70
Definition: TGTab.h:62
TEveCompositeFrame & operator=(const TEveCompositeFrame &)
float Float_t
Definition: RtypesCore.h:53
TEveWindow * GetOriginalContainer() const
Definition: TEveWindow.h:137
TGFrame * fGUIFrame
Definition: TEveWindow.h:342
static TList * fgFrameList
Definition: TEveWindow.h:73
virtual void NameTitleChanged()
Virtual function called when a name or title of the element has been changed.
static UInt_t fgMainFrameDefHeight
Definition: TEveWindow.h:224
Abstract base-class for representing eve-windows.
Definition: TEveWindow.h:209
An EVE window-slot contained within a TGMainFrame.
Definition: TEveWindow.h:111
TGCompositeFrame * fTopFrame
Definition: TEveWindow.h:57
virtual Bool_t CanMakeNewSlots() const
Definition: TEveWindow.h:410
TEveCompositeFrame * GetEveFrame()
Definition: TEveWindow.h:257
Basic string class.
Definition: TString.h:129
Description of TEveWindowSlot.
Definition: TEveWindow.h:301
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
virtual TGFrame * GetGUIFrame()
Definition: TEveWindow.h:348
static Pixel_t fgCurrentBackgroundColor
Definition: TEveWindow.h:226
TEveElement * fEveParent
Definition: TEveWindow.h:65
virtual Bool_t CanMakeNewSlots() const
Definition: TEveWindow.h:241
TEveWindow * GetEveParentAsWindow() const
Returns eve-parent dynamic-casted to TEveWindow.
Definition: TEveWindow.cxx:262
A list of TEveElements.
Definition: TEveElement.h:459
friend class TEveWindow
Definition: TEveWindow.h:41
TGFrame * fMiniBar
Definition: TEveWindow.h:63
void ActionPressed()
The action-button of the title-bar was pressed.
Definition: TEveWindow.cxx:321
TEveWindow * GetEveWindow() const
Definition: TEveWindow.h:86
TEveWindow * GetOriginalSlot() const
Definition: TEveWindow.h:136
static const TString fgkEmptyFrameName
Definition: TEveWindow.h:71
virtual void SetCurrent(Bool_t curr)
Set current state of this frame.
Definition: TEveWindow.cxx:271
Double_t x[n]
Definition: legend1.C:17
#define ClassDef(name, id)
Definition: Rtypes.h:297
ULong_t Pixel_t
Definition: GuiTypes.h:39
Definition: TGPack.h:39
Abstract base-class for frame-slots that encompass EVE-windows (sub-classes of TEveWindow).
Definition: TEveWindow.h:39
static void SetupFrameMarkup(IconBarCreator_foo creator, UInt_t top_frame_height=14, UInt_t mini_bar_height=4, Bool_t allow_top_collapse=kTRUE)
Set properties of the EVE frame.
Definition: TEveWindow.cxx:71
virtual ~TEveCompositeFrame()
If fEveWindow != 0 we are being deleted from the ROOT GUI side.
Definition: TEveWindow.cxx:171
Bool_t GetShowTitleBar() const
Definition: TEveWindow.h:261
A doubly linked list.
Definition: TList.h:43
static UInt_t fgMainFrameDefWidth
Definition: TEveWindow.h:223
virtual void PreDeleteElement()
Externally assigned and controlled user data.
virtual void SetShowTitleBar(Bool_t show)
Set state of title-bar.
Definition: TEveWindow.cxx:285
TGFrame *(* IconBarCreator_foo)(TEveCompositeFrame *, TGCompositeFrame *, Int_t)
Definition: TEveWindow.h:45
void FlipShowTitleBar()
Definition: TEveWindow.h:260
TGTextButton * fToggleBar
Definition: TEveWindow.h:58
An EVE window-slot contained within one tab of a TGTab.
Definition: TEveWindow.h:171
static UInt_t fgTopFrameHeight
Definition: TEveWindow.h:52
TGCompositeFrame * fEmbedBuffer
Definition: TEveWindow.h:309
This class provides an interface to context sensitive popup menus.
Definition: TContextMenu.h:40
unsigned int UInt_t
Definition: RtypesCore.h:42
TGTextButton * fEmptyButt
Definition: TEveWindow.h:308
virtual void ShowNormalDecorations()
Show title-bar or mini-bar, as dictated by the window.
Definition: TEveWindow.cxx:312
TGTab * fTab
Definition: TEveWindow.h:402
TEveCompositeFrame(const TEveCompositeFrame &)
Encapsulates TGTab into an eve-window.
Definition: TEveWindow.h:395
TEveWindow * fEveWindow
Definition: TEveWindow.h:66
TGTextButton * fTitleBar
Definition: TEveWindow.h:59
const Bool_t kFALSE
Definition: RtypesCore.h:92
TGPack * GetPack() const
Definition: TEveWindow.h:385
Bool_t fShowTitleBar
Definition: TEveWindow.h:219
static IconBarCreator_foo fgIconBarCreator
Definition: TEveWindow.h:51
virtual Bool_t CanMakeNewSlots() const
Definition: TEveWindow.h:375
virtual void AcquireEveWindow(TEveWindow *ew)
Accept window and increase its deny-destroy count.
Definition: TEveWindow.cxx:205
TGPack * fPack
Definition: TEveWindow.h:367
void SetHorizontal()
Definition: TEveWindow.h:381
Mother of all ROOT objects.
Definition: TObject.h:37
TGFrame * fIconBar
Definition: TEveWindow.h:60
void FlipTitleBarState()
Change display-state of the title-bar / mini-bar.
Definition: TEveWindow.cxx:334
Manager for EVE windows.
TGLayoutHints * fEveWindowLH
Definition: TEveWindow.h:61
virtual void WindowNameChanged(const TString &name)
Update widgets using window's name or title.
Definition: TEveWindow.cxx:192
void TitleBarClicked()
Slot for mouse-click on the central part of the title-bar.
Definition: TEveWindow.cxx:346
TGCompositeFrame * fParentInTab
Definition: TEveWindow.h:179
const Bool_t kTRUE
Definition: RtypesCore.h:91
Base class for TEveUtil visualization elements, providing hierarchy management, rendering control and...
Definition: TEveElement.h:33
static UInt_t fgMiniBarHeight
Definition: TEveWindow.h:53
An EVE window-slot contained within one frame of a TGPack.
Definition: TEveWindow.h:147
static Pixel_t fgMiniBarBackgroundColor
Definition: TEveWindow.h:227
virtual TEveWindow * RelinquishEveWindow(Bool_t reparent=kTRUE)
Remove window and decrease its deny-destroy count.
Definition: TEveWindow.cxx:238
const Int_t n
Definition: legend1.C:16
TGTab * GetTab() const
Definition: TEveWindow.h:413
Encapsulates TGFrame into an eve-window.
Definition: TEveWindow.h:335
virtual void DestroyWindow()
Definition: TGWindow.h:88
virtual void Destroy()=0
static Bool_t fgAllowTopFrameCollapse
Definition: TEveWindow.h:54