#include "TGClient.h" #include "TGButton.h" #include "TGFrame.h" #include "TGeoManager.h" #include "TEveManager.h" #include "TEveGeoNode.h" #include "TEveBrowser.h" class LauncherMainFrame : public TGMainFrame { private: TGCompositeFrame *fCframe; TGTextButton *fStart, *fClose, *fExit; Bool_t fStarted; public: LauncherMainFrame(const TGWindow *p, UInt_t w, UInt_t h); virtual ~LauncherMainFrame(); // slots void StartEve(); void CloseEve(); ClassDef(LauncherMainFrame, 0) }; void LauncherMainFrame::StartEve() { // Slot connected to the Clicked() signal. if (!fStarted || !gEve || !gEve->GetBrowser()) { TEveManager::Create(); gGeoManager = gEve->GetGeometry("http://root.cern.ch/files/alice.root"); TGeoNode* node = gGeoManager->GetTopVolume()->FindNode("ITSV_1"); TEveGeoTopNode* its = new TEveGeoTopNode(gGeoManager, node); gEve->AddGlobalElement(its); gEve->Redraw3D(kTRUE); fStarted = kTRUE; } } void LauncherMainFrame::CloseEve() { // Slot connected to the Clicked() signal. if (fStarted) { if (gEve && gEve->GetBrowser()) gEve->GetBrowser()->GetMainFrame()->CloseWindow(); fStarted = kFALSE; } } LauncherMainFrame::LauncherMainFrame(const TGWindow *p, UInt_t w, UInt_t h) : TGMainFrame(p, w, h), fStart(0), fClose(0), fExit(0), fStarted(0) { // Create a horizontal frame containing buttons fCframe = new TGCompositeFrame(this, 170, 20, kHorizontalFrame|kFixedWidth); fStart = new TGTextButton(fCframe, "&Start Eve"); fStart->Connect("Clicked()", "LauncherMainFrame", this, "StartEve()"); fCframe->AddFrame(fStart, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 3, 2, 2, 2)); fStart->SetToolTipText("Click to Start Eve"); fClose = new TGTextButton(fCframe, "&Close Eve"); fClose->Connect("Clicked()", "LauncherMainFrame", this, "CloseEve()"); fClose->SetToolTipText("Click to close Eve Window"); fCframe->AddFrame(fClose, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 3, 2, 2, 2)); AddFrame(fCframe, new TGLayoutHints(kLHintsCenterX, 2, 2, 5, 1)); fExit = new TGTextButton(this, "&Exit ","gApplication->Terminate(0)"); AddFrame(fExit, new TGLayoutHints(kLHintsTop | kLHintsExpandX,5,5,2,2)); SetWindowName("Launcher Demo"); MapSubwindows(); Resize(GetDefaultSize()); MapWindow(); } LauncherMainFrame::~LauncherMainFrame() { // Clean up all widgets, frames and layouthints that were used fCframe->Cleanup(); Cleanup(); } void launcher() { // Popup the GUI... new LauncherMainFrame(gClient->GetRoot(), 350, 80); }