Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
arrow_standalone.C
Go to the documentation of this file.
1 /// \file
2 /// \ingroup tutorial_eve
3 /// How to use EVE without the standard window.
4 /// Type
5 /// `gEve->GetBrowser()->MapWindow()`
6 /// to bring it up for object interaction, debugging, etc.
7 ///
8 /// \image html eve_arrow_standalone.png
9 /// \macro_code
10 ///
11 /// \author Matevz Tadel
12 
13 void arrow_standalone()
14 {
15  TEveManager::Create(kFALSE);
16 
17  // ----------------------------------------------------------------------
18 
19  auto mf = new TGMainFrame(gClient->GetRoot(), 800, 400,
20  kHorizontalFrame);
21  mf->SetWindowName("Arrow Foo");
22 
23  // ----------------------------------------------------------------------
24 
25  auto evf = new TGCompositeFrame(mf, 400, 400);
26  mf->AddFrame(evf, new TGLayoutHints(kLHintsNormal |
27  kLHintsExpandX | kLHintsExpandY));
28 
29  auto ev = new TGLEmbeddedViewer(evf);
30  evf->AddFrame(ev->GetFrame(),
31  new TGLayoutHints(kLHintsNormal |
32  kLHintsExpandX | kLHintsExpandY));
33 
34  auto eve_v = new TEveViewer("YourViewer");
35  eve_v->SetGLViewer(ev, ev->GetFrame());
36  eve_v->IncDenyDestroy();
37  eve_v->AddScene(gEve->GetEventScene());
38  gEve->GetViewers()->AddElement(eve_v);
39 
40  // ----------------------------------------------------------------------
41 
42  // To create embedded canvas ... no menus on top.
43 
44  // TRootEmbeddedCanvas* ec =
45  // new TRootEmbeddedCanvas("EmbeddedCanvas", mf, 400, 400);
46  // mf->AddFrame(ec, new TGLayoutHints(kLHintsNormal |
47  // kLHintsExpandX | kLHintsExpandY));
48 
49  // --------------------------------
50 
51  // This one is tricky - must be after embedded canvas but before std canvas!
52  mf->MapSubwindows();
53 
54  // --------------------------------
55 
56  // To create full canvas with menus.
57 
58  mf->SetEditable();
59  auto c = new TCanvas("Foo", "Bar", 400, 400);
60  mf->SetEditable(kFALSE);
61 
62  // ----------------------------------------------------------------------
63 
64  mf->Layout();
65  mf->MapWindow();
66 
67  // ----------------------------------------------------------------------
68 
69  // Populate the viewer ... here we just call the arrow.C.
70 
71  TEveUtil::Macro("arrow.C");
72 }