Re: How to stop running a macro through control bar

Wei Xie (xiewei@ceropa.weizmann.ac.il)
Thu, 14 May 1998 11:49:21 +0200 (EET)


Dear Valery,

> > I can activate a macro through a control bar. How can I stop it in
> > the course of its running ?
>
> CTRL-C should break any process (under NT it will cancel ROOT
> though).

It seems not true. I execute the "button.C" first and click with mouse on
the button activate oo.C. But after that I can not stop unless to kill
it through keyboard.

Sincerely yours

Xie

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***********
button.C *
***********

{
gROOT->Reset();
bar = new TControlBar("vertical", "Demos");

bar->AddButton("activate oo.C",".x oo.C", "test for oo.C");
bar->AddButton("Close", "delete bar", "Delete control bar");
bar->Show();
gROOT->SaveContext();
}

*******
oo.C *
*******

{
gROOT->Reset();
test = new TCanvas("test","",0,0,700,500);
pad1 = new TPad("p1","",0.0, 0.0, 0.48, 0.9, 21);
pad2 = new TPad("p2","",0.52, 0.0, 1.0, 0.9, 21);
pad1->GetFrame()->SetFillColor(42);
pad2->GetFrame()->SetFillColor(42);
pad1->SetGrid();
pad2->SetGrid();
pad1->Draw();
pad2->Draw();

hist1 = new TH1F("h1","1st test hist",100, -4,4);
hist2 = new TH1F("h2","2nd test hist",100, -4,4);
ntuple = new TNtuple("ntuple","","x1:x2");

hist1->SetMarkerSize(0.7);
hist1->SetMarkerStyle(20);
ntuple->SetMarkerStyle(21);

hist2->SetFillColor(48);

gRandom->SetSeed();

float x1,x2;

for(int i=0;i<100000;i++)
{
x1 = gRandom->Gaus(-1,1.5);
x2 = gRandom->Gaus(-0.5,0.5);

hist1->Fill(x1);
hist2->Fill(x2);
ntuple->Fill(x1,x2);

if(!i%500)
{
pad1->cd();
hist1->Draw("elp");
hist2->Draw("same");
pad2->cd();
ntuple->Draw("x1:x2","x2>=0");
test->Modified();
test->Update();
}
}

test->Update();

}