#include #include #include struct shutterData_t { const char *pixmap_name; const char *tip_text; Int_t id; TGButton *button; }; shutterData_t histo_data[] = { { "h1_s.xpm", "TH1", 1001, 0 }, { "h2_s.xpm", "TH2", 1002, 0 }, { "h3_s.xpm", "TH3", 1003, 0 }, { "profile_s.xpm", "TProfile", 1004, 0 }, { 0, 0, 0, 0 } }; shutterData_t function_data[] = { { "f1_s.xpm", "TF1", 2001, 0 }, { "f2_s.xpm", "TF2", 2002, 0 }, { 0, 0, 0, 0 } }; shutterData_t tree_data[] = { { "ntuple_s.xpm", "TNtuple", 3001, 0 }, { "tree_s.xpm", "TTree", 3002, 0 }, { "chain_s.xpm", "TChain", 3003, 0 }, { 0, 0, 0, 0 } }; void AddShutterItem(TGShutter *shutter, const char *name, shutterData_t *data) { TGShutterItem *item; TGCompositeFrame *container; TGButton *button; const TGPicture *buttonpic; static int id = 5001; TGLayoutHints *l = new TGLayoutHints(kLHintsTop | kLHintsCenterX, 5, 5, 5, 0); item = new TGShutterItem(shutter, new TGHotString(name), id++); container = (TGCompositeFrame *) item->GetContainer(); for (int i=0; data[i].pixmap_name != 0; i++) { buttonpic = gClient->GetPicture(data[i].pixmap_name); button = new TGPictureButton(container, buttonpic, data[i].id); container->AddFrame(button, l); button->SetToolTipText(data[i].tip_text); data[i].button = button; } shutter->AddItem(item); } void test_shutter() { TGMainFrame *main = new TGMainFrame(gClient->GetRoot(), 100, 350); main->SetCleanup(kDeepCleanup); TGShutter *MainShutter = new TGShutter(main, kSunkenFrame); AddShutterItem(MainShutter, "Histograms", histo_data); AddShutterItem(MainShutter, "Functions", function_data); AddShutterItem(MainShutter, "Trees", tree_data); TGShutterItem *item = new TGShutterItem(MainShutter, new TGHotString("Sub-Shutter"), 5020); TGCompositeFrame *container = (TGCompositeFrame *) item->GetContainer(); TGShutter *shutter = new TGShutter(container, kSunkenFrame); //shutter->AddPage("sub-item 1"); //shutter->AddPage("sub-item 2"); //shutter->AddPage("sub-item 3"); AddShutterItem(shutter, "Sub-Histograms", histo_data); AddShutterItem(shutter, "Sub-Functions", function_data); AddShutterItem(shutter, "Sub-Trees", tree_data); container->AddFrame(shutter, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY)); MainShutter->AddItem(item); main->AddFrame(MainShutter, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY)); main->MapSubwindows(); main->Resize(100, 350); main->SetWindowName("Shutter Test"); main->MapWindow(); }