Using TControlBar to show event by event

Hi, I am using TControlBar to show event by event (entry by entry if you like). I already have a function called “show_entry” and I am trying to call that function inside control bar to make an interactive session. For example:

	show_entry(0);	
	TControlBar *menu = new TControlBar("vertical","viewer",600,500);
	menu->AddButton("First entry","show_entry(0)","First entry"); // show_entry is a defined function
	menu->AddButton("Next","how?","Type down entry number");
       menu->AddButton("Select entry","hiw?","insert an entry");
	menu->AddButton("Exit",".q","Exit ROOT");
	
	gROOT->SaveContext();
	menu->Show();
	

“First” works fine because it is just show_entry(0), but what is more complicated is to show next entry (Next) and to choose an entry (Select an entry). Not sure how to do it.

Maybe something like this:

static int curr_entry = 0;

void show_entry(int entry)
{
   curr_entry = entry;
   std::cout << "Entry: " << curr_entry << std::endl;
}

void test_controlbar()
{
   TString macrodir = gROOT->GetMacroDir();
   gROOT->LoadMacro(macrodir+"/Dialogs.C");
   show_entry(0);
   TControlBar *menu = new TControlBar("vertical","viewer",600,500);
   menu->AddButton("First entry","show_entry(0)","First entry"); // show_entry is a defined function
   menu->AddButton("Next entry","show_entry(++curr_entry);","select next entry");
   menu->AddButton("Previous entry","show_entry(--curr_entry);","select previous entry");
   menu->AddButton("Select entry","show_entry(GetIntegerDialog(\"Please type the entry number\", curr_entry));","Type down entry number");
   menu->AddButton("Exit",".q","Exit ROOT");

   gROOT->SaveContext();
   menu->Show();
}
1 Like

It works fine. Thank you :slight_smile:

1 Like