Hi, GuiBuilder is still in alfa stage, a lot of quick&dirty work was done just before release. A lot of work must be done before ROOT pro-release. If possible try CVS version. .. and please describe reproducable procedure how to crash it (on which paltform, what is an errror mesage etc.) Thanks. Regards. Valeriy > 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