Hi, I have a question about GuiBuilder . I've tried it both on Linux Redhat 9 and windows and it crashes or hangs when I try to add more than one/two button. Could it be related to my environment or is it just the current status of the GuiBuilder? By the way, great idea. I was really looking for something like that. Thanks, Alessandro Valeriy Onuchin wrote: >Hi, >just a little bit of self advertisment ;-) >Varun, you can use GuiBuilder to create such design in 5 min. >TRootEmbeddedCanvas is not yet in GuiBuilder widget pallete >but you can copy&paste it from guitest.C. >An alternative to "divide your canvas" create several TRootEmbeddedCanvases. > >Regards. Valeriy > > > >>Varun, >> >>Your problem has nothing to do with the GUI. Simply divide your canvas >>into multiple pads. See examples in the tutorials. >> >>Rene Brun >> >>Varun Gopalakrishna wrote: >> >> >>>Hello rooters, >>> >>>I am having a lot of problems with the ROOT GUI..I had a couple of >>>questions. >>>My requirements are that I need to view multiple plots/histogram at the >>>same time in the same window. what do i need to? >>> >>>I have tried my hand at the code below which just helps me to create a >>>single frame and add my histogram to it. How do I add more child frames? >>> >>>Thanks >>> >>>Varun >>> >>>//------------------------------------------------------------------------- >>> >>>#include <TGClient.h> >>> #include <TCanvas.h> >>>#include <TF1.h> >>>#include <TRandom.h> >>> #include <TGButton.h> >>>#include <TGFrame.h> >>>#include <TRootEmbeddedCanvas.h> >>>#include <RQ_OBJECT.h> >>> >>>class MyMainFrame >>>{ >>>RQ_OBJECT("MyMainFrame") >>> >>>private: TGMainFrame *fMain; >>> TRootEmbeddedCanvas *fEcanvas; >>> >>>public: >>> >>>MyMainFrame(const TGWindow *p,UInt_t w,UInt_t h); >>> >>>virtual ~MyMainFrame(); >>> >>>void DoDraw(); >>>void drawthis();//*SIGNAL* >>>}; >>> >>>MyMainFrame::MyMainFrame(const TGWindow *p,UInt_t w,UInt_t h) >>> { >>> >>>// Create a main frame >>> >>> fMain = new TGMainFrame(p,w,h); >>>// Create canvas widjet >>> >>> fEcanvas = new TRootEmbeddedCanvas("Ecanvas",fMain,750,750); >>>fMain->AddFrame(fEcanvas, new TGLayoutHints(kLHintsExpandX | >>>kLHintsExpandY,10,10,10,1)); >>>// Create a horizontal frame widget with buttons >>>TGHorizontalFrame *hframe = new TGHorizontalFrame(fMain,200,40); >>>TGTextButton *draw = new TGTextButton(hframe,"&Last 5 Hours"); >>>draw->Connect("Clicked()","MyMainFrame",this,"drawthis()"); >>>hframe->AddFrame(draw, new TGLayoutHints(kLHintsCenterX,5,5,3,4)); >>>TGTextButton *exit = new TGTextButton(hframe,"&Stop", >>>"gApplication->Terminate(0)"); >>>hframe->AddFrame(exit, new TGLayoutHints(kLHintsCenterX,5,5,3,4)); >>>fMain->AddFrame(hframe, new TGLayoutHints(kLHintsCenterX,2,2,2,2)); >>> >>>TGTextButton *b1 = new TGTextButton(hframe,"&Last 10 Hours"); >>>b1->Connect("Clicked()","MyMainFrame",this,"drawthis()"); >>>hframe->AddFrame(b1, new TGLayoutHints(kLHintsCenterX,6,6,4,5)); >>>TGTextButton *stop = new TGTextButton(hframe,"&Exit", >>>"gApplication->Terminate(0)"); >>>hframe->AddFrame(stop, new TGLayoutHints(kLHintsCenterX,6,6,4,5)); >>>fMain->AddFrame(hframe, new TGLayoutHints(kLHintsCenterX,2,2,2,2)); >>> >>>//TGTextButton *exit = new TGTextButton(hframe,"&Exit"); >>>//exit->SetCommand("gApplication->Terminate()"); >>>/*fMain->AddFrame(hFrame1,fLayout1); >>>fMain->AddFrame(hFrame2,fLayout2); >>>fMain->Resize(frame->GetDefaultSize()); >>>// lays out frames >>>fMain->MapSubwindows(); >>>// maps subwindows >>>fMain->HideFrame(hFrame2); >>>// hides frame hFrame2 >>>fMain->MapWindow(); // maps main frame >>> >>>// Set a name to the main frame >>> >>>fMain->SetWindowName("Simple Example"); >>>// Map all subwindows of main frame >>>fMain->MapSubwindows(); >>>// Initialize the layout algorithm >>>fMain->Resize(fMain->GetDefaultSize()); >>>// Map main frame >>>fMain->MapWindow(); >>>} >>> >>>void MyMainFrame::DoDraw() >>>{ >>>// Draws function graphics in randomly choosen interval >>>TF1 *f1 = new TF1("f1","sin(x)/x",0,gRandom->Rndm()*10); >>>f1->SetFillColor(19); >>> f1->SetFillStyle(1); >>>f1->SetLineWidth(3); >>> f1->Draw(); >>>TCanvas *fCanvas = fEcanvas->GetCanvas(); >>> fCanvas->cd(); >>> fCanvas->Update(); >>> //printf("in draw this"); >>> //drawthis(); >>>} >>> >>>MyMainFrame::~MyMainFrame() >>>{ >>>// Clean up used widgets: frames, buttons, layouthints >>>fMain->Cleanup(); >>>delete fMain; >>>} >>> >>>void example() >>>{ >>>// Popup the GUI... >>> new MyMainFrame(gClient->GetRoot(),200,200); >>>} >>> >>>void MyMainFrame::drawthis(){ >>> >>>{ >>> printf(" really inside the method!!!"); >>> >>>Int_t i =0,pos=8; >>>Double_t j=0.0; >>>Char_t ch; >>>Float_t max=0.0,min=0.0; >>>// Create a new canvas. >>>/*c1 = new TCanvas("c1","Dynamic Filling Example",200,10,700,500); >>> c1->SetFillColor(42); >>> c1->GetFrame()->SetFillColor(21); >>> c1->GetFrame()->SetBorderSize(6); >>> c1->GetFrame()->SetBorderMode(-1);*/ >>> >>>// Create a new ROOT binary machine independent file. >>>// Note that this file may contain any kind of ROOT objects, histograms, >>>// pictures, graphics objects, detector geometries, tracks, events, etc.. >>>// This file is now becoming the current directory. >>> FILE *fp=fopen("data.dat","r+"); >>> if (fp == NULL) >>> printf("Cannot open file\n"); >>> TFile *hfile = gROOT->FindObject("hsimple.root"); if (hfile) >>>hfile->Close(); >>> hfile = new TFile("hsimple.root","RECREATE","Demo ROOT file with >>>histograms"); >>> >>>// Create some histograms, a profile histogram and an ntuple >>>hpx = new TH1F("hpx","This is the px distribution",100,-1,1); >>> >>>// Set canvas/frame attributes (save old attributes) >>> hpx->SetFillColor(48); >>> >>> gBenchmark->Start("hsimple"); >>> >>>// Fill histograms randomly >>>//while(true) { >>> TCanvas *fCanvas = fEcanvas->GetCanvas(); >>> fCanvas->cd(); >>> while((fscanf(fp,"%lf",&j)!=EOF)){ >>> >>> printf("the value read is %lf\n",j); >>> hpx->Fill(j); >>> hpx->Draw(); >>> //fCanvas->cd(); >>> fCanvas->Modified(); >>> fCanvas->Update(); >>> // c1->Modified(); >>> //c1->Update(); >>> gBenchmark->Show("hsimple"); >>> gSystem->ProcessEvents(); >>> } >>> //gBenchmark->Show("hsimple"); >>> pos=ftell(fp); >>> fseek(fp,0,SEEK_END); >>> if (pos!=ftell(fp))break; >>> fseek(fp,pos,SEEK_SET); >>>} >>>//} >>> fclose(fp); >>>//gBenchmark->Show("hsimple"); >>> >>>// Save all objects in this file >>> hpx->SetFillColor(0); >>> hfile->Write(); >>> hpx->SetFillColor(48); >>> >>>// Note that the file is automatically close when application terminates >>>// or when the file destructor is called. >>>} >>> >>> >> >> > > > -- __________________________________________________________________________ Alessandro Thea Ph.D. Student Dipartimento di Fisica dell'Universita' di Genova and Istituto Nazionale di Fisica Nucleare, Sezione di Genova, Via Dodecaneso 33, I-16146, Genova, Italia. Tel: +39 010 3536468 E-Mail: Alessandro.Thea@ge.infn.it __________________________________________________________________________
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:09 MET