28 TString pwd(gSystem->pwd());
29 if(!gSystem->cd(gSystem->DirName(script))) {
30 return kScriptDirNotFound;
34 cmd += gSystem->BaseName(script);
38 if(!gROOT->IsBatch()) {
44 gInterpreter->SaveContext();
45 gInterpreter->SaveGlobalsContext();
47 gROOT->ProcessLine(cmd, &err);
48 if(err != TInterpreter::kNoError) {
49 return kCannotRunScript;
53 if(!gSystem->cd(outdir)) {
54 return kOutDirNotFound;
59 auto clRootCanvas = TClass::GetClass(
"TRootCanvas");
60 auto clGMainFrame = TClass::GetClass(
"TGMainFrame");
61 TGWindow* win =
nullptr;
62 TIter iWin(gClient->GetListOfWindows());
63 while((win = (TGWindow*)iWin())) {
64 const TObject* winGetParent = win->GetParent();
65 Bool_t winIsMapped = kFALSE;
66 if(winGetParent == gClient->GetDefaultRoot()) {
67 winIsMapped = win->IsMapped();
69 if(winIsMapped && win->InheritsFrom(clGMainFrame)) {
71 Bool_t isRootCanvas = win->InheritsFrom(clRootCanvas);
72 Bool_t hasEditor =
false;
74 hasEditor = ((TRootCanvas*)win)->HasEditor();
76 if(isRootCanvas && !hasEditor) {
77 TVirtualPad* pad = ((TRootCanvas*)win)->Canvas();
78 if(!pad->HasViewer3D() || pad->GetViewer3D()->InheritsFrom(
"TViewer3DPad")) {
79 pad->SaveAs(TString::Format(
"%s_%d.png", gSystem->BaseName(script), nCanvases++));
82 win->SaveAs(TString::Format(
"%s_%d.png", gSystem->BaseName(script), nCanvases++));
88 TIter iCanvas(gROOT->GetListOfCanvases());
89 while((pad = (TVirtualPad*)iCanvas())) {
90 pad->SaveAs(TString::Format(
"%s_%d.png", gSystem->BaseName(script), nCanvases++));
93 if(!gROOT->IsBatch() && !gEnv->GetValue(
"X11.Sync", 0)) {