5#include "TApplication.h"
12#include "TGSplitter.h"
13#include "TGStatusBar.h"
14#include "TInterpreter.h"
15#include "TGFileDialog.h"
16#include "TObjString.h"
17#include "TVirtualPad.h"
20#include <KeySymbols.h>
23#include "TGFileBrowser.h"
24#include "TGInputDialog.h"
25#include "TRootHelpDialog.h"
26#include "TVirtualPadEditor.h"
32#include <TWin32SplashThread.h>
35static std::array<const char*, 6>
gOpenFileTypes = {
"ROOT files",
"*.root",
"All files",
"*",
nullptr,
nullptr};
37static std::array<const char*, 6>
gPluginFileTypes = {
"ROOT files",
"*.C",
"All files",
"*",
nullptr,
nullptr};
41 : TGMainFrame(gClient->GetDefaultRoot(), width, height), TBrowserImp(b)
46 Resize(width, height);
51 TQObject::Connect(
"TCanvas",
"ProcessedEvent(Int_t,Int_t,Int_t,TObject*)",
"GRootBrowser",
this,
"EventInfo(Int_t, Int_t, Int_t, TObject*)");
52 gVirtualX->SetInputFocus(GetId());
57 : TGMainFrame(gClient->GetDefaultRoot(), width, height), TBrowserImp(b)
62 MoveResize(x, y, width, height);
68 TQObject::Connect(
"TCanvas",
"ProcessedEvent(Int_t,Int_t,Int_t,TObject*)",
"GRootBrowser",
this,
"EventInfo(Int_t, Int_t, Int_t, TObject*)");
69 gVirtualX->SetInputFocus(GetId());
78 fVf =
new TGVerticalFrame(
this, 100, 100);
80 fLH0 =
new TGLayoutHints(kLHintsNormal);
81 fLH1 =
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0);
82 fLH2 =
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0, 0, 1, 1);
83 fLH3 =
new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX);
84 fLH4 =
new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX | kLHintsExpandY, 2, 2, 2, 2);
85 fLH5 =
new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX | kLHintsExpandY);
86 fLH6 =
new TGLayoutHints(kLHintsBottom | kLHintsExpandX);
87 fLH7 =
new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandY);
94 fMenuFile =
new TGPopupMenu(gClient->GetDefaultRoot());
99 fMenuHelp =
new TGPopupMenu(fClient->GetRoot());
128 fMenuFile->Connect(
"Activated(Int_t)",
"GRootBrowser",
this,
"HandleMenu(Int_t)");
139 fToolbarFrame =
new TGHorizontalFrame(
fVf, 100, 20, kHorizontalFrame | kRaisedFrame);
142 fHf =
new TGHorizontalFrame(
fVf, 100, 100);
144#if defined(R__HAS_COCOA)
145 fV1 =
new TGVerticalFrame(
fHf, 252, 100, kFixedWidth);
147 fV1 =
new TGVerticalFrame(
fHf, 250, 100, kFixedWidth);
149 fV2 =
new TGVerticalFrame(
fHf, 600, 100);
150 fH1 =
new TGHorizontalFrame(
fV2, 100, 100);
151 fH2 =
new TGHorizontalFrame(
fV2, 100, 100, kFixedHeight);
170 fTabRight->Connect(
"Selected(Int_t)",
"GRootBrowser",
this,
"DoTab(Int_t)");
171 fTabRight->Connect(
"CloseTab(Int_t)",
"GRootBrowser",
this,
"CloseTab(Int_t)");
191 std::array<int, 4> parts = {33, 10, 10, 47};
206 fIconPic = SetIconPixmap(
"rootdb_s.xpm");
207 SetClassHints(
"ROOT",
"Browser");
209 if(strcmp(gROOT->GetDefCanvasName(),
"c1") == 0) {
210 gROOT->SetDefCanvasName(
"Canvas_1");
213 SetWMSizeHints(600, 350, 10000, 10000, 2, 2);
215 Resize(GetDefaultSize());
216 AddInput(kKeyPressMask | kKeyReleaseMask);
225 std::cout << __PRETTY_FUNCTION__ << std::endl;
269 if(obj->InheritsFrom(
"TObjectSpy")) {
272 if(obj->InheritsFrom(
"TKey")) {
273 if(strcmp((
static_cast<TKey*
>(obj))->GetClassName(),
"TChannel") == 0) {
274 (
static_cast<TKey*
>(obj))->ReadObj();
292 Emit(
"BrowseObj(TObject*)",
reinterpret_cast<Long_t
>(obj));
303 auto* browser =
new TBrowser();
305 while((plugin =
static_cast<GBrowserPlugin*
>(next())) !=
nullptr) {
307 browser->ExecPlugin(plugin->GetName(),
"", plugin->
fCommand.Data(), plugin->
fTab, plugin->
fSubTab);
326 Disconnect(
fMenuFile,
"Activated(Int_t)",
this,
"HandleMenu(Int_t)");
327 Disconnect(
fTabRight,
"Selected(Int_t)",
this,
"DoTab(Int_t)");
332 for(Int_t i = 0; i <
fTabLeft->GetNumberOfTabs(); i++) {
333 TGCompositeFrame* container =
fTabLeft->GetTabContainer(i);
334 if(container ==
nullptr) {
337 auto* element =
static_cast<TGFrameElement*
>(container->GetList()->First());
338 if((element !=
nullptr) && (element->fFrame !=
nullptr)) {
339 element->fFrame->SetFrameElement(
nullptr);
340 if(element->fFrame->InheritsFrom(
"TVirtualPadEditor")) {
341 TVirtualPadEditor::Terminate();
342 }
else if(element->fFrame->InheritsFrom(
"TGMainFrame")) {
343 (
static_cast<TGMainFrame*
>(element->fFrame))->
CloseWindow();
344 gSystem->ProcessEvents();
346 delete element->fFrame;
348 element->fFrame =
nullptr;
349 if((element->fLayout !=
nullptr) && (element->fLayout != fgDefaultHints) && (element->fLayout->References() > 0)) {
350 element->fLayout->RemoveReference();
351 if(element->fLayout->References() == 0u) {
352 delete element->fLayout;
355 container->GetList()->Remove(element);
359 for(Int_t i = 0; i <
fTabRight->GetNumberOfTabs(); i++) {
360 TGCompositeFrame* container =
fTabRight->GetTabContainer(i);
361 if(container ==
nullptr) {
364 auto* element =
static_cast<TGFrameElement*
>(container->GetList()->First());
365 if((element !=
nullptr) && (element->fFrame !=
nullptr)) {
366 element->fFrame->SetFrameElement(
nullptr);
367 if(element->fFrame->InheritsFrom(
"TGMainFrame")) {
368 Bool_t sleep = (element->fFrame->InheritsFrom(
"GRootCanvas")) ? kTRUE : kFALSE;
369 static_cast<TGMainFrame*
>(element->fFrame)->
CloseWindow();
373 gSystem->ProcessEvents();
375 delete element->fFrame;
377 element->fFrame =
nullptr;
378 if((element->fLayout !=
nullptr) && (element->fLayout != fgDefaultHints) && (element->fLayout->References() > 0)) {
379 element->fLayout->RemoveReference();
380 if(element->fLayout->References() == 0u) {
381 delete element->fLayout;
384 container->GetList()->Remove(element);
388 for(Int_t i = 0; i <
fTabBottom->GetNumberOfTabs(); i++) {
389 TGCompositeFrame* container =
fTabBottom->GetTabContainer(i);
390 if(container ==
nullptr) {
393 auto* element =
static_cast<TGFrameElement*
>(container->GetList()->First());
394 if((element !=
nullptr) && (element->fFrame !=
nullptr)) {
395 element->fFrame->SetFrameElement(
nullptr);
396 if(element->fFrame->InheritsFrom(
"TGMainFrame")) {
397 (
static_cast<TGMainFrame*
>(element->fFrame))->
CloseWindow();
398 gSystem->ProcessEvents();
400 delete element->fFrame;
402 element->fFrame =
nullptr;
403 if((element->fLayout !=
nullptr) && (element->fLayout != fgDefaultHints) && (element->fLayout->References() > 0)) {
404 element->fLayout->RemoveReference();
405 if(element->fLayout->References() == 0u) {
406 delete element->fLayout;
409 container->GetList()->Remove(element);
414 Emit(
"CloseWindow()");
422 TQObject::Disconnect(
"TCanvas",
"ProcessedEvent(Int_t,Int_t,Int_t,TObject*)",
this,
423 "EventInfo(Int_t, Int_t, Int_t, TObject*)");
433 auto* sender =
reinterpret_cast<TGTab*
>(gTQSender);
434 if(sender !=
nullptr && sender ==
fTabRight) {
444 const Int_t kTMAX = 256;
445 static std::array<char, kTMAX> atext;
446 if(selected ==
nullptr || event == kMouseLeave) {
455 if(event == kKeyPress) {
456 snprintf(atext.data(), atext.size(),
"%c",
static_cast<char>(px));
458 snprintf(atext.data(), atext.size(),
"%d,%d", px, py);
474 if(cmd !=
nullptr && strlen(cmd) != 0u) {
476 if(name !=
nullptr) {
479 pname = TString::Format(
"Plugin %d",
fPlugins.GetSize());
481 }
else if(fname !=
nullptr && strlen(fname) != 0u) {
482 pname = name !=
nullptr ? name : gSystem->BaseName(fname);
483 Ssiz_t lastDot = pname.Last(
'.');
485 pname.Remove(lastDot);
487 command.Form(R
"(gROOT->Macro("%s");)", gSystem->UnixPathName(fname));
491 auto* plugin =
new GBrowserPlugin(pname.Data(), command.Data(), pos, subpos);
493 retval = gROOT->ProcessLine(command.Data());
494 if(command.Contains(
"new TCanvas")) {
495 pname = gPad->GetName();
496 plugin->SetName(pname.Data());
523 default:
return nullptr;
532 std::array<char, 10> input{};
534 if(event->fType == kGKeyPress) {
536 gVirtualX->LookupString(event, input.data(), input.size(), keysym);
538 if((event->fState == 0u) &&
static_cast<EKeySym
>(keysym) == kKey_F5) {
542 switch(
static_cast<EKeySym
>(keysym)) {
549 case kKey_ScrollLock:
return kTRUE;
552 if((event->fState & kKeyControlMask) != 0u) {
553 switch(
static_cast<EKeySym
>(keysym) & ~0x20) {
567 return TGMainFrame::HandleKey(event);
575 TRootHelpDialog* helperDialog =
nullptr;
577 static Int_t eNr = 1;
578 auto* sender =
reinterpret_cast<TGPopupMenu*
>(gTQSender);
585 Bool_t newfile = kFALSE;
586 static TString dir(
".");
589 fileInfo.fIniDir = StrDup(dir);
590 new TGFileDialog(gClient->GetDefaultRoot(),
this, kFDOpen, &fileInfo);
591 dir = fileInfo.fIniDir;
592 if(fileInfo.fMultipleSelection && (fileInfo.fFileNamesList !=
nullptr)) {
593 TObjString* element =
nullptr;
594 TIter next(fileInfo.fFileNamesList);
595 while((element =
static_cast<TObjString*
>(next())) !=
nullptr) {
596 gROOT->ProcessLine(Form(R
"(new TFile("%s");)", gSystem->UnixPathName(element->GetString())));
599 } else if(fileInfo.fFilename !=
nullptr) {
600 gROOT->ProcessLine(Form(R
"(new TFile("%s");)", gSystem->UnixPathName(fileInfo.fFilename)));
604 auto* fileBrowser =
static_cast<TGFileBrowser*
>(
fActBrowser);
605 if(fileBrowser !=
nullptr) {
606 fileBrowser->Selected(
nullptr);
617 rootx = gSystem->Getenv(
"ROOTSYS");
618 if(!rootx.IsNull()) {
622 rootx +=
"/root -a &";
623 gSystem->Exec(rootx);
626 new TWin32SplashThread(kTRUE);
628 std::ostringstream str;
629 str <<
"About ROOT " << gROOT->GetVersion() <<
"...";
630 helperDialog =
new TRootHelpDialog(
this, str.str(), 600, 400);
631 helperDialog->SetText(gHelpAbout);
632 helperDialog->Popup();
637 helperDialog =
new TRootHelpDialog(
this,
"Help on Canvas...", 600, 400);
638 helperDialog->SetText(gHelpCanvas);
639 helperDialog->Popup();
642 helperDialog =
new TRootHelpDialog(
this,
"Help on Menus...", 600, 400);
643 helperDialog->SetText(gHelpPullDownMenus);
644 helperDialog->Popup();
647 helperDialog =
new TRootHelpDialog(
this,
"Help on Graphics Editor...", 600, 400);
648 helperDialog->SetText(gHelpGraphicsEditor);
649 helperDialog->Popup();
652 helperDialog =
new TRootHelpDialog(
this,
"Help on Browser...", 600, 400);
653 helperDialog->SetText(gHelpBrowser);
654 helperDialog->Popup();
657 helperDialog =
new TRootHelpDialog(
this,
"Help on Objects...", 600, 400);
658 helperDialog->SetText(gHelpObjects);
659 helperDialog->Popup();
662 helperDialog =
new TRootHelpDialog(
this,
"Help on PostScript...", 600, 400);
663 helperDialog->SetText(gHelpPostscript);
664 helperDialog->Popup();
667 helperDialog =
new TRootHelpDialog(
this,
"Help on Browser...", 600, 400);
668 helperDialog->SetText(gHelpRemote);
669 helperDialog->Popup();
673 cmd.Form(
"new TGTextEditor((const char *)0, gClient->GetRoot())");
675 ExecPlugin(Form(
"Editor %d", eNr),
"", cmd.Data(), 1);
679 cmd.Form(R
"(new TGHtmlBrowser("%s", gClient->GetRoot()))",
680 gEnv->GetValue("Browser.StartUrl",
"http://root.cern.ch"));
684 static TString dir(
".");
687 fileInfo.fIniDir = StrDup(dir);
688 new TGFileDialog(gClient->GetDefaultRoot(),
this, kFDOpen, &fileInfo);
689 dir = fileInfo.fIniDir;
690 if(fileInfo.fFilename !=
nullptr) {
695 std::array<char, 1024> command{};
696 strlcpy(command.data(),
"new TGLSAViewer(gClient->GetRoot(), 0);", command.size());
697 new TGInputDialog(gClient->GetRoot(),
this,
"Enter plugin command line:", command.data(), command.data());
698 if(strcmp(command.data(),
"") != 0) {
706 gApplication->Terminate(0);
728 if((opt ==
nullptr) || (strlen(opt) == 0)) {
734 if(strchr(opt,
'F') !=
nullptr) {
735 cmd.Form(
"new TGFileBrowser(gClient->GetRoot(), (TBrowser *)0x%lx, 200, 500);",
reinterpret_cast<ULong_t
>(fBrowser));
742 unsigned int len = strlen(opt);
743 for(
unsigned int i = 0; i < len; ++i) {
746 cmd.Form(
"new TGTextEditor((const char *)0, gClient->GetRoot());");
747 ExecPlugin(
"Editor 1",
nullptr, cmd.Data(), 1);
753 if(gSystem->Load(
"libGuiHtml") >= 0) {
754 cmd.Form(R
"(new TGHtmlBrowser("%s", gClient->GetRoot());)",
755 gEnv->GetValue("Browser.StartUrl",
"http://root.cern.ch/root/html/ClassIndex.html"));
764 cmd.Form(
"new TCanvas();");
771 cmd.Form(
"new TGLSAViewer(gClient->GetRoot(), 0);");
778 cmd.Form(
"new TSessionViewer();");
786 if(strchr(opt,
'I') !=
nullptr) {
787 cmd.Form(
"new TGCommandPlugin(gClient->GetRoot(), 700, 300);");
788 ExecPlugin(
"Command",
nullptr, cmd.Data(), 2);
803 gInterpreter->DeleteGlobal(fBrowser);
822 TGMenuEntry* entry =
nullptr;
823 TIter next(popup->GetListOfEntries());
824 while((entry =
static_cast<TGMenuEntry*
>(next())) !=
nullptr) {
825 if(entry->GetPopup() !=
nullptr) {
829 popup->ReparentWindow(gClient->GetDefaultRoot());
847 TGTab* edit =
nullptr;
862 if((edit ==
nullptr) || (edit->GetTabTab(subpos) ==
nullptr)) {
865 const char* tabName = edit->GetTabTab(subpos)->GetString();
866 TObject* obj =
nullptr;
867 if((obj =
fPlugins.FindObject(tabName)) !=
nullptr) {
870 TGFrameElement* element =
nullptr;
871 if(edit->GetTabContainer(subpos) !=
nullptr) {
872 element =
static_cast<TGFrameElement*
>(edit->GetTabContainer(subpos)->GetList()->First());
874 if(element !=
nullptr && element->fFrame !=
nullptr) {
875 element->fFrame->Disconnect(
"ProcessedConfigure(Event_t*)");
876 element->fFrame->SetFrameElement(
nullptr);
877 if(element->fFrame->InheritsFrom(
"TGMainFrame")) {
878 Bool_t sleep = (element->fFrame->InheritsFrom(
"GRootCanvas")) ? kTRUE : kFALSE;
879 static_cast<TGMainFrame*
>(element->fFrame)->
CloseWindow();
883 gSystem->ProcessEvents();
885 delete element->fFrame;
887 element->fFrame =
nullptr;
888 if(element->fLayout !=
nullptr && element->fLayout != fgDefaultHints && element->fLayout->References() > 0) {
889 element->fLayout->RemoveReference();
890 if(element->fLayout->References() == 0u) {
891 delete element->fLayout;
894 edit->GetTabContainer(subpos)->GetList()->Remove(element);
898 edit->RemoveTab(subpos);
899 SwitchMenus(edit->GetTabContainer(edit->GetCurrent()));
912 if((tab !=
nullptr) && tab->SetTab(subpos, kFALSE)) {
925 TGTab* edit =
GetTab(pos);
926 if(edit ==
nullptr) {
933 TGTabElement* element = edit->GetTabTab(subpos);
934 if(element !=
nullptr) {
935 element->SetText(
new TGString(title));
939 plugin->SetName(title);
957 TGFrameElement* element =
nullptr;
962 while((element =
static_cast<TGFrameElement*
>(nextm())) !=
nullptr) {
963 auto* title =
static_cast<TGMenuTitle*
>(element->fFrame);
964 Int_t code = title->GetHotKeyCode();
965 BindKey(
fMenuBar, code, kKeyMod1Mask);
966 BindKey(
fMenuBar, code, kKeyMod1Mask | kKeyShiftMask);
967 BindKey(
fMenuBar, code, kKeyMod1Mask | kKeyLockMask);
968 BindKey(
fMenuBar, code, kKeyMod1Mask | kKeyShiftMask | kKeyLockMask);
969 BindKey(
fMenuBar, code, kKeyMod1Mask | kKeyMod2Mask);
970 BindKey(
fMenuBar, code, kKeyMod1Mask | kKeyShiftMask | kKeyMod2Mask);
971 BindKey(
fMenuBar, code, kKeyMod1Mask | kKeyMod2Mask | kKeyLockMask);
972 BindKey(
fMenuBar, code, kKeyMod1Mask | kKeyShiftMask | kKeyMod2Mask | kKeyLockMask);
1000 if(tabel !=
nullptr) {
1026 auto* element =
static_cast<TGFrameElement*
>(
fEditFrame->GetList()->First());
1027 if((element !=
nullptr) && (element->fFrame !=
nullptr)) {
1030 element->fFrame->Connect(
"ProcessedConfigure(Event_t*)",
"TGCompositeFrame",
fEditFrame,
"Layout()");
1032 if(layout !=
nullptr) {
1033 element =
static_cast<TGFrameElement*
>(
fEditFrame->GetList()->Last());
1035 if(element !=
nullptr) {
1036 element->fLayout = layout;
1044 if((name !=
nullptr) && (strlen(name) != 0u)) {
1058 if(from ==
nullptr) {
1061 auto* frameElement =
static_cast<TGFrameElement*
>(from->GetList()->First());
1062 if(frameElement ==
nullptr) {
1068 auto* embed =
static_cast<TGCompositeFrame*
>(frameElement->fFrame);
1069 TGFrameElement* element =
nullptr;
1070 if(embed !=
nullptr && embed->GetList() !=
nullptr) {
1071 TIter next(embed->GetList());
1072 while((element =
static_cast<TGFrameElement*
>(next())) !=
nullptr) {
1073 if(element->fFrame->InheritsFrom(
"TGMenuBar")) {
1074 auto* menu =
static_cast<TGMenuBar*
>(element->fFrame);
1078 TGFrameElement* nw =
nullptr;
1080 while((nw =
static_cast<TGFrameElement*
>(nel())) !=
nullptr) {
1081 if(nw->fFrame == menu) {
1086 const_cast<TGCompositeFrame*
>(
static_cast<const TGCompositeFrame*
>(menu->GetParent()))->HideFrame(menu);
1087 const_cast<TGCompositeFrame*
>(
static_cast<const TGCompositeFrame*
>(menu->GetParent()))->SetCleanup(kNoCleanup);
1090 TGFrameElement* mel =
nullptr;
1091 TIter mnext(menu->GetList());
1092 while((mel =
static_cast<TGFrameElement*
>(mnext())) !=
nullptr) {
1093 auto* title =
static_cast<TGMenuTitle*
>(mel->fFrame);
1094 TGPopupMenu* popup = menu->GetPopup(title->GetName());
1095 if(popup !=
nullptr) {
1097 if(popup->GetEntry(
"Close Canvas") !=
nullptr) {
1098 TGMenuEntry* exit = popup->GetEntry(
"Close Canvas");
1099 popup->HideEntry(exit->GetEntryId());
1101 if(popup->GetEntry(
"Close Viewer") !=
nullptr) {
1102 TGMenuEntry* exit = popup->GetEntry(
"Close Viewer");
1103 popup->HideEntry(exit->GetEntryId());
1105 if(popup->GetEntry(
"Quit ROOT") !=
nullptr) {
1106 TGMenuEntry* exit = popup->GetEntry(
"Quit ROOT");
1107 popup->HideEntry(exit->GetEntryId());
1109 if(popup->GetEntry(
"Exit") !=
nullptr) {
1110 TGMenuEntry* exit = popup->GetEntry(
"Exit");
1111 popup->HideEntry(exit->GetEntryId());
1129 Emit(
"DoubleClicked(TObject*)",
reinterpret_cast<Long_t
>(obj));
1137 std::array<Long_t, 2> args = {
reinterpret_cast<Long_t
>(obj),
static_cast<Long_t
>(checked)};
1139 Emit(
"Checked(TObject*,Bool_t)", args.data());
1146 Emit(
"ExecuteDefaultAction(TObject*)",
reinterpret_cast<Long_t
>(obj));
1155 auto* browser =
new GRootBrowser(b, title, width, height, opt);
1156 return static_cast<TBrowserImp*
>(browser);
1165 auto* browser =
new GRootBrowser(b, title, x, y, width, height, opt);
1166 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.