Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
window_manager.C
Go to the documentation of this file.
1 /// \file
2 /// \ingroup tutorial_eve
3 /// Demonstrates usage of EVE window-manager.
4 ///
5 /// \image html eve_window_manager.png
6 /// \macro_code
7 ///
8 /// \author Matevz Tadel
9 
10 #include "TEveWindow.h"
11 #include "TEveViewer.h"
12 #include "TEveManager.h"
13 #include "TEveBrowser.h"
14 #include "TEveGedEditor.h"
15 #include "TGLEmbeddedViewer.h"
16 #include "TCanvas.h"
17 #include "TGTab.h"
18 
19 void PackTest();
20 void DetailTest();
21 void TabsTest();
22 
23 void window_manager()
24 {
25  TEveManager::Create();
26 
27  TEveUtil::Macro("pointset.C");
28 
29  PackTest();
30  DetailTest();
31  TabsTest();
32 
33  gEve->GetBrowser()->GetTabRight()->SetTab(1);
34  gDebug = 1;
35 }
36 
37 void PackTest()
38 {
39  TEveWindowSlot *slot = 0;
40  TEveWindowFrame *frame = 0;
41  TEveViewer *v = 0;
42 
43  slot = TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight());
44  TEveWindowPack* pack1 = slot->MakePack();
45  pack1->SetShowTitleBar(kFALSE);
46  pack1->SetHorizontal();
47 
48  // Embedded viewer.
49  slot = pack1->NewSlot();
50  v = new TEveViewer("BarViewer");
51  v->SpawnGLEmbeddedViewer(gEve->GetEditor());
52  slot->ReplaceWindow(v);
53  v->SetElementName("Bar Embedded Viewer");
54 
55  gEve->GetViewers()->AddElement(v);
56  v->AddScene(gEve->GetEventScene());
57 
58  slot = pack1->NewSlot();
59  TEveWindowPack* pack2 = slot->MakePack();
60  pack2->SetShowTitleBar(kFALSE);
61 
62  slot = pack2->NewSlot();
63  slot->StartEmbedding();
64  TCanvas* can = new TCanvas("Root Canvas");
65  can->ToggleEditor();
66  slot->StopEmbedding();
67 
68  // SA viewer.
69  slot = pack2->NewSlot();
70  v = new TEveViewer("FooViewer");
71  v->SpawnGLViewer(gEve->GetEditor());
72  slot->ReplaceWindow(v);
73  gEve->GetViewers()->AddElement(v);
74  v->AddScene(gEve->GetEventScene());
75 }
76 
77 
78 void DetailTest()
79 {
80  TEveWindowFrame *frame = 0;
81 
82  TEveWindowSlot* slot =
83  TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight());
84  TEveWindowPack* pack1 = slot->MakePack();
85  pack1->SetShowTitleBar(kFALSE);
86  pack1->SetElementName("Detail");
87  pack1->SetHorizontal();
88 
89  // left slot
90  slot = pack1->NewSlot();
91  frame = slot->MakeFrame();
92  frame->SetElementName("Latex Frame");
93  frame->SetShowTitleBar(kFALSE);
94  TGCompositeFrame* cf = frame->GetGUICompositeFrame();
95  TGCompositeFrame* hf = new TGVerticalFrame(cf);
96  hf->SetCleanup(kLocalCleanup);
97  cf->AddFrame(hf, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
98  {
99  TGVerticalFrame* guiFrame = new TGVerticalFrame(hf);
100  hf->AddFrame(guiFrame, new TGLayoutHints(kLHintsExpandX));
101  guiFrame->SetCleanup(kDeepCleanup);
102 
103  guiFrame->AddFrame(new TGLabel(guiFrame, "Press Button:"),
104  new TGLayoutHints(kLHintsLeft, 2, 2, 0, 0));
105  TGTextButton *b = new TGTextButton(guiFrame, "TestButton");
106  guiFrame->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
107  TRootEmbeddedCanvas* ec =
108  new TRootEmbeddedCanvas("Embeddedcanvas", hf, 220);
109  hf->AddFrame(ec, new TGLayoutHints(kLHintsExpandY|kLHintsExpandX));
110  double fontsize = 0.07;
111  double x = 0.02;
112  double y = 1 -1*fontsize;
113  TLatex* latex = new TLatex(x, y, "Legend:");
114  latex->SetTextSize(fontsize);
115  latex->Draw();
116  y -= 2*fontsize;
117  // legend
118  latex->DrawLatex(x, y, "greek letter #Delta#eta_{out}");
119  y -= fontsize;
120  latex->DrawLatex(x, y, "#color[5]{+} marker");
121  y -= fontsize;
122  latex->DrawLatex(x, y, "#color[5]{+} marker");
123  y -= fontsize;
124  latex->DrawLatex(x, y, "#color[4]{+} marker");
125  y -= fontsize;
126  latex->DrawLatex(x, y, "#color[5]{#bullet} marker");
127  y -= fontsize;
128  latex->DrawLatex(x, y, "#color[4]{#bullet} marker some text");
129  y -= fontsize;
130  latex->DrawLatex(x, y, "#color[2]{#Box} square");
131  y -= fontsize;
132  latex->DrawLatex(x, y, "#color[5]{#Box} color");
133  }
134 
135  cf->MapSubwindows();
136  cf->Layout();
137  cf->MapWindow();
138 
139  // viewer slot
140  TEveWindowSlot* slot2 = pack1->NewSlotWithWeight(3);
141  TEveViewer* viewer = new TEveViewer("DetailView", "DetailView");
142  TGLEmbeddedViewer* embeddedViewer = viewer->SpawnGLEmbeddedViewer();
143  slot2->ReplaceWindow(viewer);
144  gEve->GetViewers()->AddElement(viewer);
145  viewer->AddScene(gEve->GetEventScene());
146 }
147 
148 void TabsTest()
149 {
150  TRandom r(0);
151  TEveWindowSlot *slot = 0;
152  TEveWindowFrame *frame = 0;
153  TEveViewer *v = 0;
154 
155  slot = TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight());
156  TEveWindowTab* tab1 = slot->MakeTab();
157  tab1->SetElementName("Tabs");
158  tab1->SetShowTitleBar(kFALSE);
159 
160  // horizontal text views
161  slot = tab1->NewSlot();
162  TEveWindowPack* pack1 = slot->MakePack();
163  for(int i = 0; i<4;++i)
164  {
165  Int_t weight = r.Uniform(3, 7);
166  slot = pack1->NewSlotWithWeight(weight);
167  frame = slot->MakeFrame();
168  frame->SetElementName(Form("FrameInPack %d", i));
169  TGCompositeFrame* cf = frame->GetGUICompositeFrame();
170  TGTextView* text_view = new TGTextView(cf, 200, 400);
171  cf->AddFrame(text_view, new TGLayoutHints(kLHintsLeft |
172  kLHintsExpandX |
173  kLHintsExpandY));
174 
175  for(Int_t l =0; l<weight; l++)
176  {
177  text_view->AddLine(Form("slot[%d] add line %d here ", i, l));
178  }
179  text_view->Update();
180  text_view->SetWidth(text_view->ReturnLongestLineWidth()+20);
181  text_view->Layout();
182 
183  cf->MapSubwindows();
184  cf->Layout();
185  cf->MapWindow();
186  }
187 
188  // canvas tab
189  slot = tab1->NewSlot();
190  frame = slot->MakeFrame(new TRootEmbeddedCanvas());
191  frame->SetElementName("Embedded Canvas");
192 
193  // neseted 2nd leveltabs
194  slot = tab1->NewSlot();
195  slot->SetShowTitleBar(kFALSE);
196  TEveWindowTab* tab2 = slot->MakeTab();
197  tab2->SetElementName("Nested");
198  tab2->SetShowTitleBar(kFALSE);
199  slot = tab2->NewSlot();
200  slot->SetShowTitleBar(kFALSE);
201  slot = tab2->NewSlot();
202  slot->SetShowTitleBar(kFALSE);
203 }