Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 #include "CanvasInTab.hh" 27 28 #include "TGFileDialog.h" 29 #include "TGTab.h" 30 31 #include <TApplication.h> 32 #include <TCanvas.h> 33 #include <TF1.h> 34 #include <TGButton.h> 35 #include <TGClient.h> 36 #include <TRandom.h> 37 #include <TRootEmbeddedCanvas.h> 38 #include <iostream> 39 #include <map> 40 #include <vector> 41 42 //....oooOO0OOooo........oooOO0OOooo........oo 43 44 const char* SaveFileDialog() 45 { 46 // Prompt for file to be saved. Depending on 47 // dialog the current working directory can 48 // The returned file name is always with res 49 // current directory. 50 51 const char* gSaveAsTypes[] = {"Macro files", 52 "*.C", 53 "ROOT files", 54 "*.root", 55 "PostScript", 56 "*.ps", 57 "Encapsulated 58 "*.eps", 59 "PDF files", 60 "*.pdf", 61 "Gif files", 62 "*.gif", 63 "PNG files", 64 "*.png", 65 "All files", 66 "*", 67 0, 68 0}; 69 70 static TGFileInfo fi; 71 fi.fFileTypes = gSaveAsTypes; 72 73 new TGFileDialog(gClient->GetRoot(), gClient 74 75 return fi.fFilename; 76 } 77 78 //....oooOO0OOooo........oooOO0OOooo........oo 79 80 CanvasInTab::CanvasInTab(const TGWindow* p, UI 81 { 82 fpTab = new TGTab(this, 200, 200); 83 84 fHintPlots = new TGLayoutHints(kLHintsExpand 85 86 AddFrame(fpTab, new TGLayoutHints(kLHintsExp 87 88 fpTab->Resize(); 89 90 //----- 91 TGHorizontalFrame* hframe = new TGHorizontal 92 93 TGTextButton* save = new TGTextButton(hframe 94 save->Connect("Clicked()", "CanvasInTab", th 95 hframe->AddFrame(save, new TGLayoutHints(kLH 96 97 TGTextButton* exit = new TGTextButton(hframe 98 hframe->AddFrame(exit, new TGLayoutHints(kLH 99 100 AddFrame(hframe, new TGLayoutHints(kLHintsCe 101 102 //----- 103 // Sets window name and shows the main frame 104 105 SetWindowName("PlotG"); 106 MapSubwindows(); 107 Resize(GetDefaultSize()); 108 MapWindow(); 109 } 110 111 //....oooOO0OOooo........oooOO0OOooo........oo 112 113 CanvasInTab::~CanvasInTab() 114 { 115 Cleanup(); 116 // if(fpTab) 117 // { 118 //// fpTab->Cleanup(); 119 // delete fpTab; 120 // } 121 122 // if(fHintPlots) 123 // delete fHintPlots; 124 } 125 126 //....oooOO0OOooo........oooOO0OOooo........oo 127 128 size_t CanvasInTab::AddCanvas(const char* name 129 { 130 size_t output = fEcanvas.size(); 131 auto compositeFrame = fpTab->AddTab(name); 132 TRootEmbeddedCanvas* embeddedCanvas = new TR 133 embeddedCanvas->SetAutoFit(); 134 fEcanvas.push_back(embeddedCanvas); 135 compositeFrame->AddFrame(embeddedCanvas, fHi 136 embeddedCanvas->SetContainer(compositeFrame) 137 fpTab->Resize(); 138 fpTab->MapSubwindows(); 139 // fpTab->MapWindow(); 140 Resize(); 141 return output; 142 } 143 144 //....oooOO0OOooo........oooOO0OOooo........oo 145 146 TCanvas* CanvasInTab::GetCanvas(int i) 147 { 148 return fEcanvas[i]->GetCanvas(); 149 } 150 151 //....oooOO0OOooo........oooOO0OOooo........oo 152 153 void CanvasInTab::SaveCanvas() 154 { 155 if (fpTab->GetNumberOfTabs() == 0) return; 156 157 const char* name = SaveFileDialog(); 158 159 if (name == 0 || strlen(name) == 0) return; 160 161 int current = fpTab->GetCurrent(); 162 TCanvas* canvas = fEcanvas[current]->GetCanv 163 canvas->SaveAs(name); 164 } 165