3#include "TApplication.h"
10#include "TGSplitter.h"
11#include "TGStatusBar.h"
13#include "TInterpreter.h"
14#include "TGFileDialog.h"
15#include "TObjString.h"
16#include "TVirtualPad.h"
19#include <KeySymbols.h>
21#include "RConfigure.h"
24#include "TGFileBrowser.h"
25#include "TGInputDialog.h"
26#include "TRootHelpDialog.h"
27#include "TVirtualPadEditor.h"
35#include <TWin32SplashThread.h>
38static std::array<const char*, 6>
gOpenFileTypes = {
"ROOT files",
"*.root",
"All files",
"*",
nullptr,
nullptr};
40static std::array<const char*, 6>
gPluginFileTypes = {
"ROOT files",
"*.C",
"All files",
"*",
nullptr,
nullptr};
44 : TGMainFrame(gClient->GetDefaultRoot(), width, height), TBrowserImp(b)
49 Resize(width, height);
54 TQObject::Connect(
"TCanvas",
"ProcessedEvent(Int_t,Int_t,Int_t,TObject*)",
"GRootBrowser",
this,
"EventInfo(Int_t, Int_t, Int_t, TObject*)");
55 gVirtualX->SetInputFocus(GetId());
60 : TGMainFrame(gClient->GetDefaultRoot(), width, height), TBrowserImp(b)
65 MoveResize(x, y, width, height);
71 TQObject::Connect(
"TCanvas",
"ProcessedEvent(Int_t,Int_t,Int_t,TObject*)",
"GRootBrowser",
this,
"EventInfo(Int_t, Int_t, Int_t, TObject*)");
72 gVirtualX->SetInputFocus(GetId());
81 fVf =
new TGVerticalFrame(
this, 100, 100);
83 fLH0 =
new TGLayoutHints(kLHintsNormal);
84 fLH1 =
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0);
85 fLH2 =
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0, 0, 1, 1);
86 fLH3 =
new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX);
87 fLH4 =
new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX | kLHintsExpandY, 2, 2, 2, 2);
88 fLH5 =
new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX | kLHintsExpandY);
89 fLH6 =
new TGLayoutHints(kLHintsBottom | kLHintsExpandX);
90 fLH7 =
new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandY);
97 fMenuFile =
new TGPopupMenu(gClient->GetDefaultRoot());
102 fMenuHelp =
new TGPopupMenu(fClient->GetRoot());
131 fMenuFile->Connect(
"Activated(Int_t)",
"GRootBrowser",
this,
"HandleMenu(Int_t)");
142 fToolbarFrame =
new TGHorizontalFrame(
fVf, 100, 20, kHorizontalFrame | kRaisedFrame);
145 fHf =
new TGHorizontalFrame(
fVf, 100, 100);
147#if defined(R__HAS_COCOA)
148 fV1 =
new TGVerticalFrame(
fHf, 252, 100, kFixedWidth);
150 fV1 =
new TGVerticalFrame(
fHf, 250, 100, kFixedWidth);
152 fV2 =
new TGVerticalFrame(
fHf, 600, 100);
153 fH1 =
new TGHorizontalFrame(
fV2, 100, 100);
154 fH2 =
new TGHorizontalFrame(
fV2, 100, 100, kFixedHeight);
173 fTabRight->Connect(
"Selected(Int_t)",
"GRootBrowser",
this,
"DoTab(Int_t)");
174 fTabRight->Connect(
"CloseTab(Int_t)",
"GRootBrowser",
this,
"CloseTab(Int_t)");
194 std::array<int, 4> parts = {33, 10, 10, 47};
209 fIconPic = SetIconPixmap(
"rootdb_s.xpm");
210 SetClassHints(
"ROOT",
"Browser");
212 if(strcmp(gROOT->GetDefCanvasName(),
"c1") == 0) {
213 gROOT->SetDefCanvasName(
"Canvas_1");
216 SetWMSizeHints(600, 350, 10000, 10000, 2, 2);
218 Resize(GetDefaultSize());
219 AddInput(kKeyPressMask | kKeyReleaseMask);
228 std::cout << __PRETTY_FUNCTION__ << std::endl;
272 if(obj->InheritsFrom(
"TObjectSpy")) {
275 if(obj->InheritsFrom(
"TKey")) {
276 if(strcmp((
static_cast<TKey*
>(obj))->GetClassName(),
"TChannel") == 0) {
277 (
static_cast<TKey*
>(obj))->ReadObj();
295 Emit(
"BrowseObj(TObject*)",
reinterpret_cast<Long_t
>(obj));
306 auto* browser =
new TBrowser();
308 while((plugin =
static_cast<GBrowserPlugin*
>(next())) !=
nullptr) {
310 browser->ExecPlugin(plugin->GetName(),
"", plugin->
fCommand.Data(), plugin->
fTab, plugin->
fSubTab);
329 Disconnect(
fMenuFile,
"Activated(Int_t)",
this,
"HandleMenu(Int_t)");
330 Disconnect(
fTabRight,
"Selected(Int_t)",
this,
"DoTab(Int_t)");
335 for(Int_t i = 0; i <
fTabLeft->GetNumberOfTabs(); i++) {
336 TGCompositeFrame* container =
fTabLeft->GetTabContainer(i);
337 if(container ==
nullptr) {
340 auto* element =
static_cast<TGFrameElement*
>(container->GetList()->First());
341 if((element !=
nullptr) && (element->fFrame !=
nullptr)) {
342 element->fFrame->SetFrameElement(
nullptr);
343 if(element->fFrame->InheritsFrom(
"TVirtualPadEditor")) {
344 TVirtualPadEditor::Terminate();
345 }
else if(element->fFrame->InheritsFrom(
"TGMainFrame")) {
346 (
static_cast<TGMainFrame*
>(element->fFrame))->
CloseWindow();
347 gSystem->ProcessEvents();
349 delete element->fFrame;
351 element->fFrame =
nullptr;
352 if((element->fLayout !=
nullptr) && (element->fLayout != fgDefaultHints) && (element->fLayout->References() > 0)) {
353 element->fLayout->RemoveReference();
354 if(element->fLayout->References() == 0u) {
355 delete element->fLayout;
358 container->GetList()->Remove(element);
362 for(Int_t i = 0; i <
fTabRight->GetNumberOfTabs(); i++) {
363 TGCompositeFrame* container =
fTabRight->GetTabContainer(i);
364 if(container ==
nullptr) {
367 auto* element =
static_cast<TGFrameElement*
>(container->GetList()->First());
368 if((element !=
nullptr) && (element->fFrame !=
nullptr)) {
369 element->fFrame->SetFrameElement(
nullptr);
370 if(element->fFrame->InheritsFrom(
"TGMainFrame")) {
371 Bool_t sleep = (element->fFrame->InheritsFrom(
"GRootCanvas")) ? kTRUE : kFALSE;
372 static_cast<TGMainFrame*
>(element->fFrame)->
CloseWindow();
376 gSystem->ProcessEvents();
378 delete element->fFrame;
380 element->fFrame =
nullptr;
381 if((element->fLayout !=
nullptr) && (element->fLayout != fgDefaultHints) && (element->fLayout->References() > 0)) {
382 element->fLayout->RemoveReference();
383 if(element->fLayout->References() == 0u) {
384 delete element->fLayout;
387 container->GetList()->Remove(element);
391 for(Int_t i = 0; i <
fTabBottom->GetNumberOfTabs(); i++) {
392 TGCompositeFrame* container =
fTabBottom->GetTabContainer(i);
393 if(container ==
nullptr) {
396 auto* element =
static_cast<TGFrameElement*
>(container->GetList()->First());
397 if((element !=
nullptr) && (element->fFrame !=
nullptr)) {
398 element->fFrame->SetFrameElement(
nullptr);
399 if(element->fFrame->InheritsFrom(
"TGMainFrame")) {
400 (
static_cast<TGMainFrame*
>(element->fFrame))->
CloseWindow();
401 gSystem->ProcessEvents();
403 delete element->fFrame;
405 element->fFrame =
nullptr;
406 if((element->fLayout !=
nullptr) && (element->fLayout != fgDefaultHints) && (element->fLayout->References() > 0)) {
407 element->fLayout->RemoveReference();
408 if(element->fLayout->References() == 0u) {
409 delete element->fLayout;
412 container->GetList()->Remove(element);
417 Emit(
"CloseWindow()");
425 TQObject::Disconnect(
"TCanvas",
"ProcessedEvent(Int_t,Int_t,Int_t,TObject*)",
this,
426 "EventInfo(Int_t, Int_t, Int_t, TObject*)");
436 auto* sender =
reinterpret_cast<TGTab*
>(gTQSender);
437 if(sender !=
nullptr && sender ==
fTabRight) {
447 const Int_t kTMAX = 256;
448 static std::array<char, kTMAX> atext;
449 if(selected ==
nullptr || event == kMouseLeave) {
458 if(event == kKeyPress) {
459 snprintf(atext.data(), atext.size(),
"%c",
static_cast<char>(px));
461 snprintf(atext.data(), atext.size(),
"%d,%d", px, py);
477 if(cmd !=
nullptr && strlen(cmd) != 0u) {
479 if(name !=
nullptr) {
482 pname = TString::Format(
"Plugin %d",
fPlugins.GetSize());
484 }
else if(fname !=
nullptr && strlen(fname) != 0u) {
485 pname = name !=
nullptr ? name : gSystem->BaseName(fname);
486 Ssiz_t lastDot = pname.Last(
'.');
488 pname.Remove(lastDot);
490 command.Form(R
"(gROOT->Macro("%s");)", gSystem->UnixPathName(fname));
494 auto* plugin =
new GBrowserPlugin(pname.Data(), command.Data(), pos, subpos);
496 retval = gROOT->ProcessLine(command.Data());
497 if(command.Contains(
"new TCanvas")) {
498 pname = gPad->GetName();
499 plugin->SetName(pname.Data());
526 default:
return nullptr;
535 std::array<char, 10> input{};
537 if(event->fType == kGKeyPress) {
539 gVirtualX->LookupString(event, input.data(), input.size(), keysym);
541 if((event->fState == 0u) &&
static_cast<EKeySym
>(keysym) == kKey_F5) {
545 switch(
static_cast<EKeySym
>(keysym)) {
552 case kKey_ScrollLock:
return kTRUE;
555 if((event->fState & kKeyControlMask) != 0u) {
556 switch(
static_cast<EKeySym
>(keysym) & ~0x20) {
570 return TGMainFrame::HandleKey(event);
578 TRootHelpDialog* helperDialog =
nullptr;
580 static Int_t eNr = 1;
581 auto* sender =
reinterpret_cast<TGPopupMenu*
>(gTQSender);
588 Bool_t newfile = kFALSE;
589 static TString dir(
".");
592 fileInfo.fIniDir = StrDup(dir);
593 new TGFileDialog(gClient->GetDefaultRoot(),
this, kFDOpen, &fileInfo);
594 dir = fileInfo.fIniDir;
595 if(fileInfo.fMultipleSelection && (fileInfo.fFileNamesList !=
nullptr)) {
596 TObjString* element =
nullptr;
597 TIter next(fileInfo.fFileNamesList);
598 while((element =
static_cast<TObjString*
>(next())) !=
nullptr) {
599 gROOT->ProcessLine(Form(R
"(new TFile("%s");)", gSystem->UnixPathName(element->GetString())));
602 } else if(fileInfo.fFilename !=
nullptr) {
603 gROOT->ProcessLine(Form(R
"(new TFile("%s");)", gSystem->UnixPathName(fileInfo.fFilename)));
607 auto* fileBrowser =
static_cast<TGFileBrowser*
>(
fActBrowser);
608 if(fileBrowser !=
nullptr) {
609 fileBrowser->Selected(
nullptr);
620 rootx = gSystem->Getenv(
"ROOTSYS");
621 if(!rootx.IsNull()) {
625 rootx +=
"/root -a &";
626 gSystem->Exec(rootx);
629 new TWin32SplashThread(kTRUE);
631 std::ostringstream str;
632 str <<
"About ROOT " << gROOT->GetVersion() <<
"...";
633 helperDialog =
new TRootHelpDialog(
this, str.str(), 600, 400);
634 helperDialog->SetText(gHelpAbout);
635 helperDialog->Popup();
640 helperDialog =
new TRootHelpDialog(
this,
"Help on Canvas...", 600, 400);
641 helperDialog->SetText(gHelpCanvas);
642 helperDialog->Popup();
645 helperDialog =
new TRootHelpDialog(
this,
"Help on Menus...", 600, 400);
646 helperDialog->SetText(gHelpPullDownMenus);
647 helperDialog->Popup();
650 helperDialog =
new TRootHelpDialog(
this,
"Help on Graphics Editor...", 600, 400);
651 helperDialog->SetText(gHelpGraphicsEditor);
652 helperDialog->Popup();
655 helperDialog =
new TRootHelpDialog(
this,
"Help on Browser...", 600, 400);
656 helperDialog->SetText(gHelpBrowser);
657 helperDialog->Popup();
660 helperDialog =
new TRootHelpDialog(
this,
"Help on Objects...", 600, 400);
661 helperDialog->SetText(gHelpObjects);
662 helperDialog->Popup();
665 helperDialog =
new TRootHelpDialog(
this,
"Help on PostScript...", 600, 400);
666 helperDialog->SetText(gHelpPostscript);
667 helperDialog->Popup();
670 helperDialog =
new TRootHelpDialog(
this,
"Help on Browser...", 600, 400);
671 helperDialog->SetText(gHelpRemote);
672 helperDialog->Popup();
676 cmd.Form(
"new TGTextEditor((const char *)0, gClient->GetRoot())");
678 ExecPlugin(Form(
"Editor %d", eNr),
"", cmd.Data(), 1);
682 cmd.Form(R
"(new TGHtmlBrowser("%s", gClient->GetRoot()))",
683 gEnv->GetValue("Browser.StartUrl",
"http://root.cern.ch"));
687 static TString dir(
".");
690 fileInfo.fIniDir = StrDup(dir);
691 new TGFileDialog(gClient->GetDefaultRoot(),
this, kFDOpen, &fileInfo);
692 dir = fileInfo.fIniDir;
693 if(fileInfo.fFilename !=
nullptr) {
698 std::array<char, 1024> command{};
699 strlcpy(command.data(),
"new TGLSAViewer(gClient->GetRoot(), 0);", command.size());
700 new TGInputDialog(gClient->GetRoot(),
this,
"Enter plugin command line:", command.data(), command.data());
701 if(strcmp(command.data(),
"") != 0) {
709 gApplication->Terminate(0);
731 if((opt ==
nullptr) || (strlen(opt) == 0)) {
737 if(strchr(opt,
'F') !=
nullptr) {
738 cmd.Form(
"new TGFileBrowser(gClient->GetRoot(), (TBrowser *)0x%lx, 200, 500);",
reinterpret_cast<ULong_t
>(fBrowser));
745 unsigned int len = strlen(opt);
746 for(
unsigned int i = 0; i < len; ++i) {
749 cmd.Form(
"new TGTextEditor((const char *)0, gClient->GetRoot());");
750 ExecPlugin(
"Editor 1",
nullptr, cmd.Data(), 1);
756 if(gSystem->Load(
"libGuiHtml") >= 0) {
757 cmd.Form(R
"(new TGHtmlBrowser("%s", gClient->GetRoot());)",
758 gEnv->GetValue("Browser.StartUrl",
"http://root.cern.ch/root/html/ClassIndex.html"));
767 cmd.Form(
"new TCanvas();");
774 cmd.Form(
"new TGLSAViewer(gClient->GetRoot(), 0);");
781 cmd.Form(
"new TSessionViewer();");
789 if(strchr(opt,
'I') !=
nullptr) {
790 cmd.Form(
"new TGCommandPlugin(gClient->GetRoot(), 700, 300);");
791 ExecPlugin(
"Command",
nullptr, cmd.Data(), 2);
806 gInterpreter->DeleteGlobal(fBrowser);
825 TGMenuEntry* entry =
nullptr;
826 TIter next(popup->GetListOfEntries());
827 while((entry =
static_cast<TGMenuEntry*
>(next())) !=
nullptr) {
828 if(entry->GetPopup() !=
nullptr) {
832 popup->ReparentWindow(gClient->GetDefaultRoot());
850 TGTab* edit =
nullptr;
865 if((edit ==
nullptr) || (edit->GetTabTab(subpos) ==
nullptr)) {
868 const char* tabName = edit->GetTabTab(subpos)->GetString();
869 TObject* obj =
nullptr;
870 if((obj =
fPlugins.FindObject(tabName)) !=
nullptr) {
873 TGFrameElement* element =
nullptr;
874 if(edit->GetTabContainer(subpos) !=
nullptr) {
875 element =
static_cast<TGFrameElement*
>(edit->GetTabContainer(subpos)->GetList()->First());
877 if(element !=
nullptr && element->fFrame !=
nullptr) {
878 element->fFrame->Disconnect(
"ProcessedConfigure(Event_t*)");
879 element->fFrame->SetFrameElement(
nullptr);
880 if(element->fFrame->InheritsFrom(
"TGMainFrame")) {
881 Bool_t sleep = (element->fFrame->InheritsFrom(
"GRootCanvas")) ? kTRUE : kFALSE;
882 static_cast<TGMainFrame*
>(element->fFrame)->
CloseWindow();
886 gSystem->ProcessEvents();
888 delete element->fFrame;
890 element->fFrame =
nullptr;
891 if(element->fLayout !=
nullptr && element->fLayout != fgDefaultHints && element->fLayout->References() > 0) {
892 element->fLayout->RemoveReference();
893 if(element->fLayout->References() == 0u) {
894 delete element->fLayout;
897 edit->GetTabContainer(subpos)->GetList()->Remove(element);
901 edit->RemoveTab(subpos);
902 SwitchMenus(edit->GetTabContainer(edit->GetCurrent()));
915 if((tab !=
nullptr) && tab->SetTab(subpos, kFALSE)) {
928 TGTab* edit =
GetTab(pos);
929 if(edit ==
nullptr) {
936 TGTabElement* element = edit->GetTabTab(subpos);
937 if(element !=
nullptr) {
938 element->SetText(
new TGString(title));
942 plugin->SetName(title);
960 TGFrameElement* element =
nullptr;
965 while((element =
static_cast<TGFrameElement*
>(nextm())) !=
nullptr) {
966 auto* title =
static_cast<TGMenuTitle*
>(element->fFrame);
967 Int_t code = title->GetHotKeyCode();
968 BindKey(
fMenuBar, code, kKeyMod1Mask);
969 BindKey(
fMenuBar, code, kKeyMod1Mask | kKeyShiftMask);
970 BindKey(
fMenuBar, code, kKeyMod1Mask | kKeyLockMask);
971 BindKey(
fMenuBar, code, kKeyMod1Mask | kKeyShiftMask | kKeyLockMask);
972 BindKey(
fMenuBar, code, kKeyMod1Mask | kKeyMod2Mask);
973 BindKey(
fMenuBar, code, kKeyMod1Mask | kKeyShiftMask | kKeyMod2Mask);
974 BindKey(
fMenuBar, code, kKeyMod1Mask | kKeyMod2Mask | kKeyLockMask);
975 BindKey(
fMenuBar, code, kKeyMod1Mask | kKeyShiftMask | kKeyMod2Mask | kKeyLockMask);
1003 if(tabel !=
nullptr) {
1029 auto* element =
static_cast<TGFrameElement*
>(
fEditFrame->GetList()->First());
1030 if((element !=
nullptr) && (element->fFrame !=
nullptr)) {
1033 element->fFrame->Connect(
"ProcessedConfigure(Event_t*)",
"TGCompositeFrame",
fEditFrame,
"Layout()");
1035 if(layout !=
nullptr) {
1036 element =
static_cast<TGFrameElement*
>(
fEditFrame->GetList()->Last());
1038 if(element !=
nullptr) {
1039 element->fLayout = layout;
1047 if((name !=
nullptr) && (strlen(name) != 0u)) {
1061 if(from ==
nullptr) {
1064 auto* frameElement =
static_cast<TGFrameElement*
>(from->GetList()->First());
1065 if(frameElement ==
nullptr) {
1071 auto* embed =
static_cast<TGCompositeFrame*
>(frameElement->fFrame);
1072 TGFrameElement* element =
nullptr;
1073 if(embed !=
nullptr && embed->GetList() !=
nullptr) {
1074 TIter next(embed->GetList());
1075 while((element =
static_cast<TGFrameElement*
>(next())) !=
nullptr) {
1076 if(element->fFrame->InheritsFrom(
"TGMenuBar")) {
1077 auto* menu =
static_cast<TGMenuBar*
>(element->fFrame);
1081 TGFrameElement* nw =
nullptr;
1083 while((nw =
static_cast<TGFrameElement*
>(nel())) !=
nullptr) {
1084 if(nw->fFrame == menu) {
1089 const_cast<TGCompositeFrame*
>(
static_cast<const TGCompositeFrame*
>(menu->GetParent()))->HideFrame(menu);
1090 const_cast<TGCompositeFrame*
>(
static_cast<const TGCompositeFrame*
>(menu->GetParent()))->SetCleanup(kNoCleanup);
1093 TGFrameElement* mel =
nullptr;
1094 TIter mnext(menu->GetList());
1095 while((mel =
static_cast<TGFrameElement*
>(mnext())) !=
nullptr) {
1096 auto* title =
static_cast<TGMenuTitle*
>(mel->fFrame);
1097 TGPopupMenu* popup = menu->GetPopup(title->GetName());
1098 if(popup !=
nullptr) {
1100 if(popup->GetEntry(
"Close Canvas") !=
nullptr) {
1101 TGMenuEntry* exit = popup->GetEntry(
"Close Canvas");
1102 popup->HideEntry(exit->GetEntryId());
1104 if(popup->GetEntry(
"Close Viewer") !=
nullptr) {
1105 TGMenuEntry* exit = popup->GetEntry(
"Close Viewer");
1106 popup->HideEntry(exit->GetEntryId());
1108 if(popup->GetEntry(
"Quit ROOT") !=
nullptr) {
1109 TGMenuEntry* exit = popup->GetEntry(
"Quit ROOT");
1110 popup->HideEntry(exit->GetEntryId());
1112 if(popup->GetEntry(
"Exit") !=
nullptr) {
1113 TGMenuEntry* exit = popup->GetEntry(
"Exit");
1114 popup->HideEntry(exit->GetEntryId());
1132 Emit(
"DoubleClicked(TObject*)",
reinterpret_cast<Long_t
>(obj));
1140 std::array<Long_t, 2> args = {
reinterpret_cast<Long_t
>(obj),
static_cast<Long_t
>(checked)};
1142 Emit(
"Checked(TObject*,Bool_t)", args.data());
1149 Emit(
"ExecuteDefaultAction(TObject*)",
reinterpret_cast<Long_t
>(obj));
1158 auto* browser =
new GRootBrowser(b, title, width, height, opt);
1159 return static_cast<TBrowserImp*
>(browser);
1168 auto* browser =
new GRootBrowser(b, title, x, y, width, height, opt);
1169 return static_cast<TBrowserImp*
>(browser);
static std::array< const char *, 6 > gPluginFileTypes
static std::array< const char *, 6 > gOpenFileTypes
Int_t fSubTab
Tab element number.
TString fCommand
Command to be executed.
TBrowserImp * fActBrowser
Actual (active) browser imp.
void ReallyDelete() override
void InitPlugins(Option_t *opt="")
Int_t fEditSubPos
Id of subtab in "Edit" mode.
TGVerticalFrame * fVf
Vertical frame.
void CloseWindow() override
void CreateBrowser(const char *name)
void HandleMenu(Int_t id)
Long_t ExecPlugin(const char *name=nullptr, const char *fname=nullptr, const char *cmd=nullptr, Int_t pos=static_cast< Int_t >(EInsertPosition::kRight), Int_t subpos=-1) override
TGMenuBar * fMenuBar
Main (owned) menu bar.
TGLayoutHints * fLH3
Layout hints, part 4.
void SetStatusText(const char *txt, Int_t col) override
void RecursiveRemove(TObject *obj) override
TGVerticalFrame * fV1
Vertical frame.
TGPopupMenu * fMenuFile
"File" popup menu
TGHorizontalFrame * fHf
Horizontal frame.
void SwitchMenus(TGCompositeFrame *from)
std::array< Int_t, 3 > fCrTab
Actual (active) tab elements (for each Tab)
TGHorizontalFrame * fToolbarFrame
Toolbar frame.
Int_t fNbInitPlugins
Number of initial plugins (from .rootrc)
TGStatusBar * fStatusBar
Status bar.
void StartEmbedding(Int_t pos=static_cast< Int_t >(EInsertPosition::kRight), Int_t subpos=-1) override
void SetTab(Int_t pos=static_cast< Int_t >(EInsertPosition::kRight), Int_t subpos=-1)
virtual void CloseTab(Int_t id)
void SetTabTitle(const char *title, Int_t pos=static_cast< Int_t >(EInsertPosition::kRight), Int_t subpos=-1)
void Add(TObject *obj, const char *name=nullptr, Int_t check=-1) override
TGHSplitter * fHSplitter
Horizontal splitter.
TGTab * fEditTab
Tab in "Edit" mode.
void CloseTabs() override
TGLayoutHints * fLH1
Layout hints, part 2.
TGPopupMenu * fMenuExecPlugin
"Exec Plugin" popup menu
TGCompositeFrame * fEditFrame
Frame in "Edit" mode.
TGTab * fTabRight
Right Tab.
Bool_t fShowCloseTab
kTRUE to show close icon on tab elements
TGHorizontalFrame * fH2
Horizontal frame.
static TBrowserImp * NewBrowser(TBrowser *b=nullptr, const char *title="ROOT Browser", UInt_t width=800, UInt_t height=500, Option_t *opt="")
const TGPicture * fIconPic
icon picture
TGLayoutHints * fLH6
Layout hints, part 7.
TGTab * fTabBottom
Bottom Tab.
void ExecuteDefaultAction(TObject *obj) override
TGHorizontalFrame * fH1
Horizontal frame.
TGVerticalFrame * fV2
Vertical frame.
TGHorizontalFrame * fMenuFrame
Shared menu frame.
Option_t * GetDrawOption() const override
TGCompositeFrame * fActMenuBar
Actual (active) menu bar.
void Refresh(Bool_t force=kFALSE) override
TGVSplitter * fVSplitter
Vertical splitter.
TGLayoutHints * fLH5
Layout hints, part 6.
void BrowseObj(TObject *obj) override
void RemoveTab(Int_t pos, Int_t subpos)
Int_t fEditPos
Id of tab in "Edit" mode.
TGTab * fTabLeft
Left Tab.
GRootBrowser(const GRootBrowser &)
TGHorizontalFrame * fTopMenuFrame
Top menu frame.
void StopEmbedding(const char *name=nullptr) override
TGLayoutHints * fLH0
Layout hints, part 1.
TGPopupMenu * fMenuHelp
"Browser Help" popup menu
TGLayoutHints * fLH2
Layout hints, part 3.
TGTab * GetTab(Int_t pos) const
void ShowMenu(TGCompositeFrame *menu)
virtual void DoubleClicked(TObject *obj)
void EventInfo(Int_t event, Int_t px, Int_t py, TObject *selected)
Bool_t HandleKey(Event_t *event) override
TList fPlugins
List of plugins.
TGHorizontalFrame * fPreMenuFrame
First (owned) menu frame.
virtual void Checked(TObject *obj, Bool_t checked)
void RecursiveReparent(TGPopupMenu *popup)
TGLayoutHints * fLH7
Layout hints, part 8.
std::array< Int_t, 3 > fNbTab
Number of tab elements (for each Tab)
TGLayoutHints * fLH4
Layout hints, part 5.