window_manager.C

Go to the documentation of this file.
00001 // @(#)root/eve:$Id: window_manager.C 37560 2010-12-13 12:28:23Z matevz $
00002 // Author: Matevz Tadel
00003 
00004 // Demonstrates usage of EVE window-manager.
00005 
00006 #include "TEveWindow.h"
00007 #include "TEveViewer.h"
00008 #include "TEveManager.h"
00009 #include "TEveBrowser.h"
00010 #include "TEveGedEditor.h"
00011 #include "TGLEmbeddedViewer.h"
00012 #include "TCanvas.h"
00013 #include "TGTab.h"
00014 
00015 void window_manager()
00016 {
00017    TEveManager::Create();
00018 
00019    TEveUtil::Macro("pointset.C");
00020 
00021    PackTest();
00022    DetailTest();
00023    TabsTest();
00024 
00025    gEve->GetBrowser()->GetTabRight()->SetTab(1);
00026    gDebug = 1;
00027 }
00028 
00029 void PackTest()
00030 {
00031    TEveWindowSlot  *slot  = 0;
00032    TEveWindowFrame *frame = 0;
00033    TEveViewer *v = 0;
00034 
00035    slot = TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight());
00036    TEveWindowPack* pack1 = slot->MakePack();
00037    pack1->SetShowTitleBar(kFALSE);
00038    pack1->SetHorizontal();
00039 
00040    // Embedded viewer.
00041    slot = pack1->NewSlot();
00042    v = new TEveViewer("BarViewer");
00043    v->SpawnGLEmbeddedViewer(gEve->GetEditor());
00044    slot->ReplaceWindow(v);
00045    v->SetElementName("Bar Embedded Viewer");
00046 
00047    gEve->GetViewers()->AddElement(v);
00048    v->AddScene(gEve->GetEventScene());
00049 
00050    slot = pack1->NewSlot();   
00051    TEveWindowPack* pack2 = slot->MakePack();
00052    pack2->SetShowTitleBar(kFALSE);
00053 
00054    slot = pack2->NewSlot();
00055    slot->StartEmbedding();
00056    TCanvas* can = new TCanvas("Root Canvas");
00057    can->ToggleEditor();
00058    slot->StopEmbedding();
00059 
00060    // SA viewer.
00061    slot = pack2->NewSlot();
00062    v = new TEveViewer("FooViewer");
00063    v->SpawnGLViewer(gEve->GetEditor());
00064    slot->ReplaceWindow(v);
00065    gEve->GetViewers()->AddElement(v);
00066    v->AddScene(gEve->GetEventScene());   
00067 }
00068 
00069 
00070 void DetailTest()
00071 {
00072    TEveWindowSlot* slot =
00073       TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight());
00074    pack1 = slot->MakePack();
00075    pack1->SetShowTitleBar(kFALSE);
00076    pack1->SetElementName("Detail");
00077    pack1->SetHorizontal();
00078 
00079    // left slot
00080    slot = pack1->NewSlot();
00081    frame = slot->MakeFrame();
00082    frame->SetElementName("Latex Frame");
00083    frame->SetShowTitleBar(kFALSE);
00084    TGCompositeFrame* cf = frame->GetGUICompositeFrame();
00085    TGCompositeFrame* hf = new TGVerticalFrame(cf);
00086    hf->SetCleanup(kLocalCleanup);
00087    cf->AddFrame(hf, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
00088    {
00089       TGVerticalFrame* guiFrame = new TGVerticalFrame(hf);
00090       hf->AddFrame(guiFrame, new TGLayoutHints(kLHintsExpandX));
00091       guiFrame->SetCleanup(kDeepCleanup);
00092 
00093       guiFrame->AddFrame(new TGLabel(guiFrame, "Press Button:"),
00094                          new TGLayoutHints(kLHintsLeft, 2, 2, 0, 0));
00095       TGTextButton *b = new TGTextButton(guiFrame, "TestButton");
00096       guiFrame->AddFrame(b, new TGLayoutHints(kLHintsExpandX));     
00097       TRootEmbeddedCanvas* ec =
00098          new TRootEmbeddedCanvas("Embeddedcanvas", hf, 220);
00099       hf->AddFrame(ec, new TGLayoutHints(kLHintsExpandY|kLHintsExpandX));
00100       double fontsize = 0.07;
00101       double x = 0.02;
00102       double y = 1 -1*fontsize;
00103       TLatex* latex = new TLatex(x, y, "Legend:");
00104       latex->SetTextSize(fontsize);
00105       latex->Draw();
00106       y -= 2*fontsize;
00107       // legend
00108       latex->DrawLatex(x, y, "greek letter #Delta#eta_{out}");
00109       y -= fontsize;
00110       latex->DrawLatex(x, y, "#color[5]{+} marker");
00111       y -= fontsize;
00112       latex->DrawLatex(x, y, "#color[5]{+} marker");
00113       y -= fontsize;
00114       latex->DrawLatex(x, y, "#color[4]{+} marker");
00115       y -= fontsize;
00116       latex->DrawLatex(x, y, "#color[5]{#bullet} marker");
00117       y -= fontsize;
00118       latex->DrawLatex(x, y, "#color[4]{#bullet} marker some text");
00119       y -= fontsize;
00120       latex->DrawLatex(x, y, "#color[2]{#Box} square");
00121       y -= fontsize;
00122       latex->DrawLatex(x, y, "#color[5]{#Box} color");
00123    }
00124  
00125    cf->MapSubwindows();
00126    cf->Layout();
00127    cf->MapWindow();
00128 
00129    // viewer slot 
00130    TEveWindowSlot* slot2 = pack1->NewSlotWithWeight(3);
00131    TEveViewer*  viewer = new TEveViewer("DetailView", "DetailView");
00132    TGLEmbeddedViewer*  embeddedViewer =  viewer->SpawnGLEmbeddedViewer();
00133    slot2->ReplaceWindow(viewer);
00134    gEve->GetViewers()->AddElement(viewer);
00135    viewer->AddScene(gEve->GetEventScene());
00136 }
00137 
00138 void TabsTest()
00139 {
00140    TRandom r(0);
00141    TEveWindowSlot  *slot  = 0;
00142    TEveWindowFrame *frame = 0;
00143    TEveViewer *v = 0;
00144 
00145    slot = TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight());
00146    TEveWindowTab* tab1 = slot->MakeTab();
00147    tab1->SetElementName("Tabs");
00148    tab1->SetShowTitleBar(kFALSE);
00149 
00150    // horizontal text views
00151    slot = tab1->NewSlot();
00152    TEveWindowPack* pack1 = slot->MakePack();
00153    for(int i = 0; i<4;++i)
00154    {
00155       Int_t weight = r.Uniform(3, 7);
00156       slot = pack1->NewSlotWithWeight(weight);
00157       frame = slot->MakeFrame();
00158       frame->SetElementName(Form("FrameInPack %d", i));
00159       TGCompositeFrame* cf = frame->GetGUICompositeFrame();
00160       TGTextView* text_view = new TGTextView(cf, 200, 400);
00161       cf->AddFrame(text_view, new TGLayoutHints(kLHintsLeft    |
00162                                                 kLHintsExpandX |
00163                                                 kLHintsExpandY));
00164 
00165       for(Int_t l =0; l<weight; l++)
00166       {
00167          text_view->AddLine(Form("slot[%d] add line %d here ", i, l));
00168       }
00169       text_view->Update();
00170       text_view->SetWidth(text_view->ReturnLongestLineWidth()+20);
00171       text_view->Layout();
00172      
00173       cf->MapSubwindows();
00174       cf->Layout();
00175       cf->MapWindow();
00176    }
00177 
00178    // canvas tab
00179    slot = tab1->NewSlot();
00180    frame = slot->MakeFrame(new TRootEmbeddedCanvas());
00181    frame->SetElementName("Embedded Canvas");
00182 
00183    // neseted 2nd leveltabs
00184    slot = tab1->NewSlot();
00185    slot->SetShowTitleBar(kFALSE);
00186    TEveWindowTab* tab2 = slot->MakeTab();
00187    tab2->SetElementName("Nested");
00188    tab2->SetShowTitleBar(kFALSE);
00189    slot =  tab2->NewSlot();
00190    slot->SetShowTitleBar(kFALSE);
00191    slot =    tab2->NewSlot();
00192    slot->SetShowTitleBar(kFALSE);
00193 }

Generated on Tue Jul 5 15:44:06 2011 for ROOT_528-00b_version by  doxygen 1.5.1