diff --git a/graf2d/gpad/src/TCanvas.cxx b/graf2d/gpad/src/TCanvas.cxx index 9baf71658026b1b6e377d529019fae362d7c73e5..3816d16a5a906a2095dbb81f1100bffa8195bf5a 100644 --- a/graf2d/gpad/src/TCanvas.cxx +++ b/graf2d/gpad/src/TCanvas.cxx @@ -1926,7 +1926,8 @@ void TCanvas::SaveSource(const char *filename, Option_t *option) // Now recursively scan all pads of this canvas cd(); if (invalid) SetName("c1"); - TPad::SavePrimitive(out,option); + TPad::SavePrimitive(out,"toplevel"); + // Write canvas options related to pad editor out<<" "<<GetName()<<"->SetSelected("<<GetName()<<");"<<std::endl; if (GetShowToolBar()) { diff --git a/graf2d/gpad/src/TPad.cxx b/graf2d/gpad/src/TPad.cxx index af20f25da512009e829d1d292814068b9a8ea540..b234214e1ba084e596a4fa681273bf38f0b6d465 100644 --- a/graf2d/gpad/src/TPad.cxx +++ b/graf2d/gpad/src/TPad.cxx @@ -5691,13 +5691,27 @@ void TPad::SaveAs(const char *filename, Option_t * /*option*/) const //////////////////////////////////////////////////////////////////////////////// /// Save primitives in this pad on the C++ source file out. -void TPad::SavePrimitive(std::ostream &out, Option_t * /*= ""*/) +void TPad::SavePrimitive(std::ostream &out, Option_t * option /*= ""*/) { TContext ctxt(this, kFALSE); // not interactive char quote = '"'; + + static Int_t pcounter = 0; + TString padName = GetName(); + + TString opt = option; + if (!opt.Contains("toplevel")) { + pcounter++; + padName += "__"; + padName += pcounter; + padName = gInterpreter-> MapCppName(padName); + } + const char *pname = padName.Data(); + if (!strlen(pname)) pname = "unnamed"; + char lcname[100]; - const char *cname = GetName(); + const char *cname = padName.Data(); size_t nch = strlen(cname); if (nch < sizeof(lcname)) { strlcpy(lcname, cname, sizeof(lcname)); @@ -5717,7 +5731,7 @@ void TPad::SavePrimitive(std::ostream &out, Option_t * /*= ""*/) out <<" "<<std::endl; out <<"// ------------>Primitives in pad: "<<GetName()<<std::endl; - out<<" TPad *"<<cname<<" = new TPad("<<quote<<GetName()<<quote<<", "<<quote<<GetTitle() + out<<" TPad *"<<cname<<" = new TPad("<<quote<<pname<<quote<<", "<<quote<<GetTitle() <<quote <<","<<fXlowNDC <<","<<fYlowNDC @@ -5854,9 +5868,10 @@ void TPad::SavePrimitive(std::ostream &out, Option_t * /*= ""*/) if (!strcmp(obj->GetName(),"Graph")) ((TGraph*)obj)->SetName(TString::Format("Graph%d",grnum++).Data()); obj->SavePrimitive(out, (Option_t *)next.GetOption()); + if (obj->InheritsFrom(TPad::Class()) and !opt.Contains("toplevel")) + out<<" "<<pname<<"->cd();"<<std::endl; } out<<" "<<cname<<"->Modified();"<<std::endl; - out<<" "<<GetMother()->GetName()<<"->cd();"<<std::endl; } ////////////////////////////////////////////////////////////////////////////////