Re: [ROOT] opening file in GUI

From: Rene Brun (Rene.Brun@cern.ch)
Date: Tue Jul 18 2000 - 12:47:45 MEST


Hi Munir,

I do not understand what is your point? 
At your second level, you can check if a file is already connected with
a statement like:

  TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject("filename");
  if (file) {
    // file already connected
  } else {
    // file not yet connected
    // open file
    file = new TFile("filename");
  }

Rene Brun

Munir uzzaman wrote:
> 
> hi rooters!
> 
> i am using root gui to display events in PHENIX TEC. I am fatching a
> problem regarding files to keep in memory. I have three layers in the gui.
> I open a file in the top level. then i click on the second layer enable
> button. it works fine until i close the second layer. then if i want to
> run another disply in the second layer, i need to open the file again in
> the top layer. but it is troublesome and not a very good option. I was
> wondering if i am missing something. let me give the part of the macro:
> 
> ********************************************
> file open in the top layer:
> 
> case M_EVENT_FILE_OPEN:
> {
>   gSystem->WorkingDirectory();
>   gSystem->ChangeDirectory("/export/bigdisk/dcm_data/rc");
>   new TGFileDialog(fClient->GetRoot(), this, kFDOpen,fEventFileInfo);
>   gSystem->WorkingDirectory();
>   gSystem->ChangeDirectory("/home/phnxtec/munir/gui/work");
>   if(fEventFileInfo->fFilename&&strlen(fEventFileInfo->fFilename)>2) {
>     displayMessage(MFMessage,fMessageFrame,"Event File :",fEventFileInfo->fFilename);
>     if(fEventFileInfo->fFilename) {
>       if(EventIt) delete EventIt;
>       Int_t Status;
>       EventIt=new fileEventiterator(fEventFileInfo->fFilename,Status);
>       if(Status){
>         displayMessage(MFMessage,fMessageFrame,"Event File:",fEventFileInfo->fFilename,"does not exist");
>         delete EventIt;
>         EventIt = NULL;
>         EventsReadFromFile = 0;
>         break;
>       }
>     }
>   } else {
>     displayMessage(MFMessage,fMessageFrame,"EventFile not yet opened ");
>     return kFALSE;
>   }
> }
> break;
> *********************************************
> 
> in the second layer (which is called TecGlobal.cxx)
> ------------------------------
> void TecGlobal::CloseWindow()
> {
>   TecDialog->setGlobalClosed(GlobalID); // default is NULL
>   TecDialog ->removeFromGlobalBooked(this);
>   delete this;
> }
> -----------------------------
> case M_GLOBAL_CLOSE:
> printf("\nTerminating dialog: %s pressed\n",
>        (parm1 == 1) ? "OK" : "Cancel");
> CloseWindow();
> break;
> default:
> break;
> ----------------------------
> 
> your response will be truely appreciated.
> 
> -munir
> 
> ------------------------------------------------------------------------------
>                            MUNIR uzzaman
> ------------------------------------------------------------------------------
> Graduate Student         | Brookhaven National Lab     |Phone:
> Department of Physics    | PO Box 686, Upton, NY 11973 |(516)-344-7266
> University of California |-----------------------------|(516)-924-9533(Home)
> Riverside, CA 92521      |email: munir@phyun0.ucr.edu  |
> USA                      |       munir@bnl.gov         |
> ------------------------------------------------------------------------------
> 
> ------------------------------------------------------------------------------
>                            MUNIR uzzaman
> ------------------------------------------------------------------------------
> Graduate Student         | Brookhaven National Lab     |Phone:
> Department of Physics    | PO Box 686, Upton, NY 11973 |(516)-344-7266
> University of California |-----------------------------|(516)-924-9533(Home)
> Riverside, CA 92521      |email: munir@phyun0.ucr.edu  |
> USA                      |       munir@bnl.gov         |
> ------------------------------------------------------------------------------



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:30 MET