#include #include #include #include class ListTree { protected: TGMainFrame *fMain; // main frame TGListTree *fList; TGListTreeItem *fTop; Int_t fCounter; public: ListTree(); virtual ~ListTree() { delete fMain; } void Add(); void Sort(); ClassDef(ListTree, 0); }; ListTree::ListTree() : fCounter(10) { // Main test window. fMain = new TGMainFrame(gClient->GetRoot(), 10, 10, kVerticalFrame); // recusively delete all subframes on exit fMain->SetCleanup(kDeepCleanup); // terminate ROOT session when window is closed fMain->Connect("CloseWindow()", "TApplication", gApplication, "Terminate()"); fMain->DontCallClose(); fCanvas = new TGCanvas(fMain, 500, 300); fList = new TGListTree(fCanvas, kVerticalFrame); TGLayoutHints *lo = new TGLayoutHints(kLHintsExpandX | kLHintsExpandY | kLHintsTop); fMain->AddFrame(fCanvas,lo); TGTextButton *add = new TGTextButton(fMain,"Add"); lo = new TGLayoutHints(kLHintsExpandX | kLHintsBottom); fMain->AddFrame(add,lo); add->Connect("Clicked()","ListTree",this,"Add()"); TGTextButton *sort = new TGTextButton(fMain,"Sort"); lo = new TGLayoutHints(kLHintsExpandX | kLHintsBottom); fMain->AddFrame(sort,lo); sort->Connect("Clicked()","ListTree",this,"Sort()"); fTop = fList->AddItem(0,"Top"); fList->OpenItem(fTop); fMain->MapSubwindows(); fMain->Resize(); // set minimum width, height fMain->SetWMSizeHints(fMain->GetDefaultWidth(), fMain->GetDefaultHeight(), 1000, 1000, 0, 0); fMain->SetWindowName("Text Entries"); fMain->MapRaised(); } void ListTree::Add() { fList->AddItem(fTop,Form("%d",fCounter--)); gClient->NeedRedraw(fList,kTRUE); fList->ClearViewPort(); } void ListTree::Sort() { fList->SortChildren(fTop); gClient->NeedRedraw(fList,kTRUE); fList->ClearViewPort(); } void listTree() { // Main program. new ListTree(); }