00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "TEveBrowser.h"
00013
00014 #include "TEveUtil.h"
00015 #include "TEveElement.h"
00016 #include "TEveManager.h"
00017 #include "TEveSelection.h"
00018 #include "TEveGedEditor.h"
00019 #include "TEveWindow.h"
00020 #include "TEveWindowManager.h"
00021
00022 #include "TGFileBrowser.h"
00023 #include "TBrowser.h"
00024
00025 #include <Riostream.h>
00026
00027 #include "TClass.h"
00028 #include "TROOT.h"
00029 #include "TStyle.h"
00030 #include "TSystem.h"
00031 #include "TRint.h"
00032 #include "TVirtualX.h"
00033 #include "TEnv.h"
00034
00035 #include "TApplication.h"
00036 #include "TFile.h"
00037 #include "TClassMenuItem.h"
00038
00039 #include "TColor.h"
00040
00041 #include "TGCanvas.h"
00042 #include "TGSplitter.h"
00043 #include "TGStatusBar.h"
00044 #include "TGMenu.h"
00045 #include "TGPicture.h"
00046 #include "TGToolBar.h"
00047 #include "TGLabel.h"
00048 #include "TGXYLayout.h"
00049 #include "TGNumberEntry.h"
00050 #include <KeySymbols.h>
00051
00052 #include "TGLSAViewer.h"
00053 #include "TGLSAFrame.h"
00054 #include "TGTab.h"
00055
00056 #include "TGeoVolume.h"
00057 #include "TGeoNode.h"
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075 ClassImp(TEveListTreeItem);
00076
00077
00078 void TEveListTreeItem::NotSupported(const char* func) const
00079 {
00080
00081
00082
00083 Warning(Form("TEveListTreeItem::%s()", func), "not supported.");
00084 }
00085
00086
00087 Pixel_t TEveListTreeItem::GetActiveColor() const
00088 {
00089
00090
00091 switch (fElement->GetSelectedLevel())
00092 {
00093 case 1: return TColor::Number2Pixel(kBlue - 2);
00094 case 2: return TColor::Number2Pixel(kBlue - 6);
00095 case 3: return TColor::Number2Pixel(kCyan - 2);
00096 case 4: return TColor::Number2Pixel(kCyan - 6);
00097 }
00098 return TGFrame::GetDefaultSelectedBackground();
00099 }
00100
00101
00102 void TEveListTreeItem::Toggle()
00103 {
00104
00105
00106
00107 fElement->SetRnrState(!IsChecked());
00108 fElement->ElementChanged(kTRUE, kTRUE);
00109 }
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122 ClassImp(TEveGListTreeEditorFrame);
00123
00124 TString TEveGListTreeEditorFrame::fgEditorClass("TEveGedEditor");
00125
00126
00127 TEveGListTreeEditorFrame::TEveGListTreeEditorFrame(const TGWindow* p, Int_t width, Int_t height) :
00128 TGMainFrame (p ? p : gClient->GetRoot(), width, height),
00129 fFrame (0),
00130 fLTFrame (0),
00131 fListTree (0),
00132 fSplitter (0),
00133 fEditor (0),
00134 fCtxMenu (0),
00135 fSignalsConnected (kFALSE)
00136 {
00137
00138
00139 SetCleanup(kNoCleanup);
00140
00141 fFrame = new TGCompositeFrame(this, width, height, kVerticalFrame);
00142
00143
00144 fLTFrame = new TGCompositeFrame(fFrame, width, 3*height/7, kVerticalFrame);
00145 fLTCanvas = new TGCanvas(fLTFrame, 10, 10, kSunkenFrame | kDoubleBorder);
00146 fListTree = new TGListTree(fLTCanvas->GetViewPort(), 10, 10, kHorizontalFrame);
00147 fListTree->SetCanvas(fLTCanvas);
00148 fListTree->Associate(fFrame);
00149 fListTree->SetColorMode(TGListTree::EColorMarkupMode(TGListTree::kColorUnderline | TGListTree::kColorBox));
00150 fListTree->SetAutoCheckBoxPic(kFALSE);
00151 fListTree->SetUserControl(kTRUE);
00152 fLTCanvas->SetContainer(fListTree);
00153 fLTFrame->AddFrame(fLTCanvas, new TGLayoutHints
00154 (kLHintsNormal | kLHintsExpandX | kLHintsExpandY, 1, 1, 1, 1));
00155 fFrame ->AddFrame(fLTFrame, new TGLayoutHints
00156 (kLHintsNormal | kLHintsExpandX | kLHintsExpandY));
00157
00158
00159 fSplitter = new TGHSplitter(fFrame);
00160 fFrame->AddFrame(fSplitter, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1,1,2,2));
00161
00162
00163 fFrame->SetEditDisabled(kEditEnable);
00164 fFrame->SetEditable();
00165 fEditor = (TEveGedEditor*) gROOT->GetClass(fgEditorClass)->New();
00166 fEditor->SetGlobal(kFALSE);
00167 fEditor->ChangeOptions(fEditor->GetOptions() | kFixedHeight);
00168 fFrame->SetEditable(kEditDisable);
00169 fFrame->SetEditable(kFALSE);
00170 {
00171 TGFrameElement *el = 0;
00172 TIter next(fFrame->GetList());
00173 while ((el = (TGFrameElement *) next())) {
00174 if (el->fFrame == fEditor)
00175 if (el->fLayout) {
00176 el->fLayout->SetLayoutHints(kLHintsTop | kLHintsExpandX);
00177 el->fLayout->SetPadLeft(0); el->fLayout->SetPadRight(1);
00178 el->fLayout->SetPadTop(2); el->fLayout->SetPadBottom(1);
00179 break;
00180 }
00181 }
00182 }
00183 fSplitter->SetFrame(fEditor, kFALSE);
00184
00185 AddFrame(fFrame, new TGLayoutHints(kLHintsNormal | kLHintsExpandX | kLHintsExpandY));
00186
00187 fCtxMenu = new TContextMenu("", "");
00188
00189 Layout();
00190 MapSubwindows();
00191 MapWindow();
00192 }
00193
00194
00195 TEveGListTreeEditorFrame::~TEveGListTreeEditorFrame()
00196 {
00197
00198
00199 DisconnectSignals();
00200
00201 delete fCtxMenu;
00202
00203
00204
00205 delete fEditor;
00206 delete fSplitter;
00207 delete fListTree;
00208 delete fLTCanvas;
00209 delete fLTFrame;
00210 delete fFrame;
00211 }
00212
00213
00214 void TEveGListTreeEditorFrame::SetEditorClass(const char* edclass)
00215 {
00216
00217
00218 fgEditorClass = edclass;
00219 }
00220
00221
00222 void TEveGListTreeEditorFrame::ConnectSignals()
00223 {
00224
00225
00226 fListTree->Connect("MouseOver(TGListTreeItem*, UInt_t)", "TEveGListTreeEditorFrame",
00227 this, "ItemBelowMouse(TGListTreeItem*, UInt_t)");
00228 fListTree->Connect("Clicked(TGListTreeItem*, Int_t, UInt_t, Int_t, Int_t)", "TEveGListTreeEditorFrame",
00229 this, "ItemClicked(TGListTreeItem*, Int_t, UInt_t, Int_t, Int_t)");
00230 fListTree->Connect("DoubleClicked(TGListTreeItem*, Int_t)", "TEveGListTreeEditorFrame",
00231 this, "ItemDblClicked(TGListTreeItem*, Int_t)");
00232 fListTree->Connect("KeyPressed(TGListTreeItem*, ULong_t, ULong_t)", "TEveGListTreeEditorFrame",
00233 this, "ItemKeyPress(TGListTreeItem*, UInt_t, UInt_t)");
00234
00235 fSignalsConnected = kTRUE;
00236 }
00237
00238
00239 void TEveGListTreeEditorFrame::DisconnectSignals()
00240 {
00241
00242
00243 if (!fSignalsConnected) return;
00244
00245 fListTree->Disconnect("MouseOver(TGListTreeItem*, UInt_t)",
00246 this, "ItemBelowMouse(TGListTreeItem*, UInt_t)");
00247 fListTree->Disconnect("Clicked(TGListTreeItem*, Int_t, UInt_t, Int_t, Int_t)",
00248 this, "ItemClicked(TGListTreeItem*, Int_t, UInt_t, Int_t, Int_t)");
00249 fListTree->Disconnect("DoubleClicked(TGListTreeItem*, Int_t)",
00250 this, "ItemDblClicked(TGListTreeItem*, Int_t)");
00251 fListTree->Disconnect("KeyPressed(TGListTreeItem*, ULong_t, ULong_t)",
00252 this, "ItemKeyPress(TGListTreeItem*, UInt_t, UInt_t)");
00253
00254 fSignalsConnected = kFALSE;
00255 }
00256
00257
00258
00259
00260 void TEveGListTreeEditorFrame::ReconfToHorizontal()
00261 {
00262
00263
00264 UnmapWindow();
00265
00266 fFrame->ChangeOptions(kHorizontalFrame);
00267 fLTFrame->ChangeOptions(kHorizontalFrame);
00268 fListTree->ChangeOptions(kVerticalFrame);
00269
00270 TGFrameElement *el = 0;
00271 TIter next(fFrame->GetList());
00272 while ((el = (TGFrameElement *) next()))
00273 {
00274 if (el->fFrame == fSplitter)
00275 {
00276
00277 fSplitter->ReparentWindow(fClient->GetDefaultRoot());
00278 delete fSplitter;
00279 el->fFrame = fSplitter = new TGVSplitter(fFrame);
00280 el->fLayout->SetLayoutHints(kLHintsLeft | kLHintsExpandY);
00281 el->fLayout->SetPadLeft(2); el->fLayout->SetPadRight (2);
00282 el->fLayout->SetPadTop (1); el->fLayout->SetPadBottom(1);
00283 }
00284 else if (el->fFrame == fEditor)
00285 {
00286 fEditor->ChangeOptions(fEditor->GetOptions() & (~kFixedHeight));
00287 fEditor->ChangeOptions(fEditor->GetOptions() | kFixedWidth);
00288 el->fLayout->SetLayoutHints(kLHintsLeft | kLHintsExpandY);
00289 }
00290 }
00291
00292 fEditor->Resize(fEditor->GetWidth() / 2 - 1, fEditor->GetHeight());
00293 fSplitter->SetFrame(fEditor, kFALSE);
00294
00295 Layout();
00296 MapSubwindows();
00297 MapWindow();
00298 }
00299
00300
00301 void TEveGListTreeEditorFrame::ReconfToVertical()
00302 {
00303
00304
00305 UnmapWindow();
00306
00307 fFrame->ChangeOptions(kVerticalFrame);
00308 fLTFrame->ChangeOptions(kVerticalFrame);
00309 fListTree->ChangeOptions(kHorizontalFrame);
00310
00311 TGFrameElement *el = 0;
00312 TIter next(fFrame->GetList());
00313 while ((el = (TGFrameElement *) next()))
00314 {
00315 if (el->fFrame == fSplitter)
00316 {
00317
00318 fSplitter->ReparentWindow(fClient->GetDefaultRoot());
00319 delete fSplitter;
00320 el->fFrame = fSplitter = new TGHSplitter(fFrame);
00321 el->fLayout->SetLayoutHints(kLHintsTop | kLHintsExpandX);
00322 el->fLayout->SetPadLeft(2); el->fLayout->SetPadRight (2);
00323 el->fLayout->SetPadTop (1); el->fLayout->SetPadBottom(1);
00324 }
00325 else if (el->fFrame == fEditor)
00326 {
00327 fEditor->ChangeOptions(fEditor->GetOptions() & (~kFixedWidth));
00328 fEditor->ChangeOptions(fEditor->GetOptions() | kFixedHeight);
00329 el->fLayout->SetLayoutHints(kLHintsTop | kLHintsExpandX);
00330 }
00331 }
00332
00333 fEditor->Resize(fEditor->GetWidth(), fEditor->GetHeight() / 2 - 1);
00334 fSplitter->SetFrame(fEditor, kFALSE);
00335
00336 Layout();
00337 MapSubwindows();
00338 MapWindow();
00339 }
00340
00341
00342
00343
00344 void TEveGListTreeEditorFrame::ItemBelowMouse(TGListTreeItem *entry, UInt_t )
00345 {
00346
00347
00348 TEveElement* el = entry ? (TEveElement*) entry->GetUserData() : 0;
00349 gEve->GetHighlight()->UserPickedElement(el, kFALSE);
00350 }
00351
00352
00353 void TEveGListTreeEditorFrame::ItemClicked(TGListTreeItem *item, Int_t btn, UInt_t mask, Int_t x, Int_t y)
00354 {
00355
00356
00357
00358
00359
00360
00361
00362
00363 static const TEveException eh("TEveGListTreeEditorFrame::ItemClicked ");
00364
00365 TEveElement* el = (TEveElement*) item->GetUserData();
00366 if (el == 0) return;
00367 TObject* obj = el->GetObject(eh);
00368
00369 switch (btn)
00370 {
00371 case 1:
00372 gEve->GetSelection()->UserPickedElement(el, mask & kKeyControlMask);
00373 break;
00374
00375 case 2:
00376 if (gEve->ElementPaste(el))
00377 gEve->Redraw3D();
00378 break;
00379
00380 case 3:
00381
00382
00383
00384
00385 if (obj) fCtxMenu->Popup(x, y, obj);
00386 break;
00387
00388 default:
00389 break;
00390 }
00391 }
00392
00393
00394 void TEveGListTreeEditorFrame::ItemDblClicked(TGListTreeItem* item, Int_t btn)
00395 {
00396
00397
00398 static const TEveException eh("TEveGListTreeEditorFrame::ItemDblClicked ");
00399
00400 if (btn != 1) return;
00401
00402 TEveElement* el = (TEveElement*) item->GetUserData();
00403 if (el == 0) return;
00404
00405 el->ExpandIntoListTree(fListTree, item);
00406
00407 TObject* obj = el->GetObject(eh);
00408 if (obj)
00409 {
00410
00411 if (obj->IsA()->InheritsFrom(TGeoNode::Class()))
00412 {
00413 TGeoNode* n = dynamic_cast<TGeoNode*>(obj);
00414 if (item->GetFirstChild() == 0 && n->GetNdaughters())
00415 {
00416 fListTree->DeleteChildren(item);
00417 for (Int_t i=0; i< n->GetNdaughters(); i++)
00418 {
00419 TString title;
00420 title.Form("%d : %s[%d]", i,
00421 n->GetDaughter(i)->GetVolume()->GetName(),
00422 n->GetDaughter(i)->GetNdaughters());
00423
00424 TGListTreeItem* child = fListTree->AddItem(item, title.Data());
00425 child->SetUserData(n->GetDaughter(i));
00426 }
00427 }
00428 }
00429 }
00430 }
00431
00432
00433 void TEveGListTreeEditorFrame::ItemKeyPress(TGListTreeItem *entry, UInt_t keysym, UInt_t mask)
00434 {
00435
00436
00437
00438
00439
00440 static const TEveException eh("TEveGListTreeEditorFrame::ItemKeyPress ");
00441
00442 entry = fListTree->GetCurrent();
00443 if (entry == 0) return;
00444
00445 TEveElement* el = (TEveElement*) entry->GetUserData();
00446
00447 fListTree->SetEventHandled();
00448
00449 switch (keysym)
00450 {
00451 case kKey_Delete:
00452 {
00453 if (entry->GetParent())
00454 {
00455 if (el->GetDenyDestroy() > 0 && el->GetNItems() == 1)
00456 throw(eh + "DestroyDenied set for this item.");
00457
00458 TEveElement* parent = (TEveElement*) entry->GetParent()->GetUserData();
00459
00460 if (parent)
00461 {
00462 gEve->RemoveElement(el, parent);
00463 gEve->Redraw3D();
00464 }
00465 }
00466 else
00467 {
00468 if (el->GetDenyDestroy() > 0)
00469 throw(eh + "DestroyDenied set for this top-level item.");
00470 gEve->RemoveFromListTree(el, fListTree, entry);
00471 gEve->Redraw3D();
00472 }
00473 break;
00474 }
00475
00476 case kKey_Enter:
00477 case kKey_Return:
00478 {
00479 gEve->GetSelection()->UserPickedElement(el, mask & kKeyControlMask);
00480 break;
00481 }
00482
00483 default:
00484 {
00485 fListTree->SetEventHandled(kFALSE);
00486 break;
00487 }
00488 }
00489 }
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501 ClassImp(TEveBrowser);
00502
00503
00504 void TEveBrowser::SetupCintExport(TClass* cl)
00505 {
00506
00507
00508 TList* l = cl->GetMenuList();
00509 TClassMenuItem* n = new TClassMenuItem(TClassMenuItem::kPopupUserFunction, cl,
00510 "Export to CINT", "ExportToCINT", this, "const char*,TObject*", 1);
00511
00512 l->AddFirst(n);
00513 }
00514
00515
00516 void TEveBrowser::CalculateReparentXY(TGObject* parent, Int_t& x, Int_t& y)
00517 {
00518
00519
00520 UInt_t w, h;
00521 Window_t childdum;
00522 gVirtualX->GetWindowSize(parent->GetId(), x, y, w, h);
00523 gVirtualX->TranslateCoordinates(parent->GetId(),
00524 gClient->GetDefaultRoot()->GetId(),
00525 0, 0, x, y, childdum);
00526 }
00527
00528
00529
00530 namespace
00531 {
00532 enum EEveMenu_e {
00533 kNewMainFrameSlot, kNewTabSlot,
00534 kNewViewer, kNewScene, kNewProjector,
00535 kNewBrowser, kNewCanvas, kNewCanvasExt, kNewTextEditor, kNewHtmlBrowser,
00536 kSel_PS_Ignore, kSel_PS_Element, kSel_PS_Projectable, kSel_PS_Compound,
00537 kSel_PS_PableCompound, kSel_PS_Master, kSel_PS_END,
00538 kHil_PS_Ignore, kHil_PS_Element, kHil_PS_Projectable, kHil_PS_Compound,
00539 kHil_PS_PableCompound, kHil_PS_Master, kHil_PS_END,
00540 kVerticalBrowser,
00541 kWinDecorNormal, kWinDecorHide, kWinDecorTitleBar, kWinDecorMiniBar
00542 };
00543
00544 }
00545
00546
00547 TEveBrowser::TEveBrowser(UInt_t w, UInt_t h) :
00548 TRootBrowser(0, "Eve Main Window", w, h, "", kFALSE),
00549 fFileBrowser(0),
00550 fEvePopup (0),
00551 fSelPopup (0),
00552 fHilPopup (0)
00553 {
00554
00555
00556
00557
00558 fEvePopup = new TGPopupMenu(gClient->GetRoot());
00559 fEvePopup->AddEntry("New &MainFrame Slot", kNewMainFrameSlot);
00560 fEvePopup->AddEntry("New &Tab Slot", kNewTabSlot);
00561 fEvePopup->AddSeparator();
00562 fEvePopup->AddEntry("New &Viewer", kNewViewer);
00563 fEvePopup->AddEntry("New &Scene", kNewScene);
00564 fEvePopup->AddEntry("New &Projector", kNewProjector);
00565 fEvePopup->AddSeparator();
00566 fEvePopup->AddEntry("New &Browser", kNewBrowser);
00567 fEvePopup->AddEntry("New &Canvas", kNewCanvas);
00568 fEvePopup->AddEntry("New Canvas Ext", kNewCanvasExt);
00569 fEvePopup->AddEntry("New Text &Editor", kNewTextEditor);
00570
00571 fEvePopup->AddSeparator();
00572
00573 {
00574 fSelPopup = new TGPopupMenu(gClient->GetRoot());
00575 fSelPopup->AddEntry("Ignore", kSel_PS_Ignore);
00576 fSelPopup->AddEntry("Element", kSel_PS_Element);
00577 fSelPopup->AddEntry("Projectable", kSel_PS_Projectable);
00578 fSelPopup->AddEntry("Compound", kSel_PS_Compound);
00579 fSelPopup->AddEntry("Projectable and Compound",
00580 kSel_PS_PableCompound);
00581 fSelPopup->AddEntry("Master", kSel_PS_Master);
00582 fSelPopup->RCheckEntry(kSel_PS_Ignore + gEve->GetSelection()->GetPickToSelect(),
00583 kSel_PS_Ignore, kSel_PS_END - 1);
00584 fEvePopup->AddPopup("Selection", fSelPopup);
00585 }
00586 {
00587 fHilPopup = new TGPopupMenu(gClient->GetRoot());
00588 fHilPopup->AddEntry("Ignore", kHil_PS_Ignore);
00589 fHilPopup->AddEntry("Element", kHil_PS_Element);
00590 fHilPopup->AddEntry("Projectable", kHil_PS_Projectable);
00591 fHilPopup->AddEntry("Compound", kHil_PS_Compound);
00592 fHilPopup->AddEntry("Projectable and Compound",
00593 kHil_PS_PableCompound);
00594 fHilPopup->AddEntry("Master", kHil_PS_Master);
00595 fHilPopup->RCheckEntry(kHil_PS_Ignore + gEve->GetHighlight()->GetPickToSelect(),
00596 kHil_PS_Ignore, kHil_PS_END - 1);
00597 fEvePopup->AddPopup("Highlight", fHilPopup);
00598 }
00599
00600 fEvePopup->AddSeparator();
00601 fEvePopup->AddEntry("Vertical browser", kVerticalBrowser);
00602 fEvePopup->CheckEntry(kVerticalBrowser);
00603 {
00604 TGPopupMenu *wd = new TGPopupMenu(gClient->GetRoot());
00605 wd->AddEntry("Normal", kWinDecorNormal);
00606 wd->AddEntry("Hide", kWinDecorHide);
00607 wd->AddEntry("Title bars", kWinDecorTitleBar);
00608 wd->AddEntry("Mini bars", kWinDecorMiniBar);
00609 fEvePopup->AddPopup("Window decorations", wd);
00610 }
00611
00612 fEvePopup->Connect("Activated(Int_t)", "TEveBrowser",
00613 this, "EveMenu(Int_t)");
00614
00615 fMenuBar->AddPopup("&Eve", fEvePopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
00616
00617 fPreMenuFrame->ChangeOptions(fPreMenuFrame->GetOptions() | kRaisedFrame);
00618 fTopMenuFrame->Layout();
00619 fTopMenuFrame->MapSubwindows();
00620 }
00621
00622
00623
00624
00625 void TEveBrowser::EveMenu(Int_t id)
00626 {
00627
00628
00629 switch (id)
00630 {
00631 case kNewMainFrameSlot: {
00632 TEveWindowSlot* ew_slot = TEveWindow::CreateWindowMainFrame(0);
00633 gEve->GetWindowManager()->SelectWindow(ew_slot);
00634 break;
00635 }
00636 case kNewTabSlot: {
00637 TEveWindowSlot* ew_slot = TEveWindow::CreateWindowInTab(GetTabRight(), 0);
00638 gEve->GetWindowManager()->SelectWindow(ew_slot);
00639 break;
00640 }
00641 case kNewViewer: {
00642 gEve->SpawnNewViewer("Viewer Pepe");
00643 break;
00644 }
00645 case kNewScene: {
00646 gEve->SpawnNewScene("Scena Mica");
00647 break;
00648 }
00649 case kNewProjector: {
00650 TEveElement* pr = (TEveElement*) (gROOT->GetClass("TEveProjectionManager")->New());
00651 pr->SetElementNameTitle("Projector", "User-created projector.");
00652 gEve->AddToListTree(pr, kTRUE);
00653 break;
00654 }
00655 case kNewBrowser: {
00656 gROOT->ProcessLineFast("new TBrowser");
00657 break;
00658 }
00659 case kNewCanvas: {
00660 StartEmbedding(1);
00661 gROOT->ProcessLineFast("new TCanvas");
00662 StopEmbedding();
00663 SetTabTitle("Canvas", 1);
00664 break;
00665 }
00666 case kNewCanvasExt: {
00667 gROOT->ProcessLineFast("new TCanvas");
00668 break;
00669 }
00670 case kNewTextEditor: {
00671 StartEmbedding(1);
00672 gROOT->ProcessLineFast(Form("new TGTextEditor((const char *)0, (const TGWindow *)0x%lx)", (ULong_t)gClient->GetRoot()));
00673 StopEmbedding();
00674 SetTabTitle("Editor", 1);
00675 break;
00676 }
00677 case kNewHtmlBrowser: {
00678 gSystem->Load("libGuiHtml");
00679 if (gSystem->Load("libRHtml") >= 0)
00680 {
00681 StartEmbedding(1);
00682 gROOT->ProcessLine(Form("new TGHtmlBrowser(\"http://root.cern.ch/root/html/ClassIndex.html\", \
00683 (const TGWindow *)0x%lx)", (ULong_t)gClient->GetRoot()));
00684 StopEmbedding();
00685 SetTabTitle("HTML", 1);
00686 }
00687 break;
00688 }
00689 case kSel_PS_Ignore:
00690 case kSel_PS_Element:
00691 case kSel_PS_Projectable:
00692 case kSel_PS_Compound:
00693 case kSel_PS_PableCompound:
00694 case kSel_PS_Master: {
00695 gEve->GetSelection()->SetPickToSelect(id - kSel_PS_Ignore);
00696 fSelPopup->RCheckEntry(kSel_PS_Ignore + gEve->GetSelection()->GetPickToSelect(),
00697 kSel_PS_Ignore, kSel_PS_END - 1);
00698 break;
00699 }
00700 case kHil_PS_Ignore:
00701 case kHil_PS_Element:
00702 case kHil_PS_Projectable:
00703 case kHil_PS_Compound:
00704 case kHil_PS_PableCompound:
00705 case kHil_PS_Master: {
00706 gEve->GetHighlight()->SetPickToSelect(id - kHil_PS_Ignore);
00707 fHilPopup->RCheckEntry(kHil_PS_Ignore + gEve->GetHighlight()->GetPickToSelect(),
00708 kHil_PS_Ignore, kHil_PS_END - 1);
00709 break;
00710 }
00711 case kVerticalBrowser: {
00712 if (fEvePopup->IsEntryChecked(kVerticalBrowser)) {
00713 gEve->GetLTEFrame()->ReconfToHorizontal();
00714 fEvePopup->UnCheckEntry(kVerticalBrowser);
00715 } else {
00716 gEve->GetLTEFrame()->ReconfToVertical();
00717 fEvePopup->CheckEntry(kVerticalBrowser);
00718 }
00719 break;
00720 }
00721 case kWinDecorNormal: {
00722 gEve->GetWindowManager()->ShowNormalEveDecorations();
00723 break;
00724 }
00725 case kWinDecorHide: {
00726 gEve->GetWindowManager()->HideAllEveDecorations();
00727 break;
00728 }
00729 case kWinDecorTitleBar: {
00730 gEve->GetWindowManager()->SetShowTitleBars(kTRUE);
00731 break;
00732 }
00733 case kWinDecorMiniBar: {
00734 gEve->GetWindowManager()->SetShowTitleBars(kFALSE);
00735 break;
00736 }
00737
00738 default: {
00739 break;
00740 }
00741 }
00742 }
00743
00744
00745
00746
00747 void TEveBrowser::InitPlugins(Option_t *opt)
00748 {
00749
00750
00751 TString o(opt);
00752
00753
00754 if (o.Contains('F'))
00755 {
00756 StartEmbedding(0);
00757 TGFileBrowser *fb = MakeFileBrowser();
00758 fb->BrowseObj(gROOT);
00759 fb->Show();
00760 fFileBrowser = fb;
00761 StopEmbedding("Files");
00762 o.ReplaceAll("F", ".");
00763 }
00764
00765 TRootBrowser::InitPlugins(o);
00766 }
00767
00768
00769 TGFileBrowser* TEveBrowser::MakeFileBrowser()
00770 {
00771
00772
00773
00774 TBrowserImp imp;
00775 TBrowser *tb = new TBrowser("Pipi", "Strel", &imp);
00776 TGFileBrowser *fb = new TGFileBrowser(gClient->GetRoot(), tb, 200, 500);
00777 tb->SetBrowserImp((TBrowserImp *)this);
00778 fb->SetBrowser(tb);
00779 fb->SetNewBrowser(this);
00780 gROOT->GetListOfBrowsers()->Remove(tb);
00781 return fb;
00782 }
00783
00784
00785 void TEveBrowser::ReallyDelete()
00786 {
00787
00788
00789 delete this;
00790 }
00791
00792 void TEveBrowser::HideBottomTab()
00793 {
00794 fV2->HideFrame(fHSplitter);
00795 fV2->HideFrame(fH2);
00796 }