Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

GuiTree.cxx

Go to the documentation of this file.
00001 #include "GuiTree.h"
00002 
00003 #include <iostream>
00004 using namespace std;
00005 
00006 GuiTreeEntry::GuiTreeEntry(TGClient* client, const char* name,
00007                            const TGPicture* opened,const TGPicture* closed)
00008 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,19,01)
00009     : TGListTreeItemStd(client,name,opened,closed)
00010 #else
00011     : TGListTreeItem(client,name,opened,closed)
00012 #endif
00013 {
00014 }
00015 
00016 GuiTreeEntry::~GuiTreeEntry()
00017 {
00018 }
00019 
00020 GuiTree::GuiTree(TGWindow& parent, UInt_t options)
00021     : TGListTree(&parent,10,10,options)
00022 {
00023     this->SetLayoutHints(kLHintsExpandX|kLHintsExpandY);
00024     this->Associate(&parent);
00025 }
00026 GuiTree::~GuiTree()
00027 {
00028 }
00029 
00030 GuiTreeEntry* GuiTree::AddEntry(GuiTreeEntry* parent, const char* label)
00031 {
00032 
00033     GuiTreeEntry *entry;
00034 
00035     const TGPicture* open   = fClient->GetPicture("ofolder_t.xpm");
00036     const TGPicture* closed = fClient->GetPicture("folder_t.xpm");
00037 
00038     entry = new GuiTreeEntry(fClient, label, open, closed);
00039     this->TGListTree::InsertChild(parent, entry);
00040 
00041     return entry;
00042 }
00043 
00044 
00045 void GuiTree::Clicked(TGListTreeItem* item, Int_t btn)
00046 {
00047     this->TGListTree::Clicked(item,btn);
00048 
00049     GuiTreeEntry* entry = dynamic_cast<GuiTreeEntry*>(item);
00050     if (!entry) return;
00051     entry->clicked.emit();
00052 }
00053 void GuiTree::DoubleClicked(TGListTreeItem* item, Int_t btn)
00054 {
00055     this->TGListTree::DoubleClicked(item,btn);
00056 
00057     cerr << "Double clicked, item is " 
00058          << (item->IsOpen() ? "open" : "closed") << endl;
00059 
00060     fClient->NeedRedraw(this);
00061     return;
00062 
00063     if (item->IsOpen()) {
00064         this->TGListTree::CloseItem(item);
00065     }
00066     else {
00067         this->TGListTree::OpenItem(item);
00068     }
00069     cerr << "           now item is " 
00070          << (item->IsOpen() ? "open" : "closed") << endl;
00071 
00072 }
00073 void GuiTree::OnMouseOver(TGListTreeItem* item)
00074 {
00075 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,19,01)
00076     this->TGListTree::MouseOver(item);
00077 #else
00078     this->TGListTree::OnMouseOver(item);
00079 #endif
00080 
00081     GuiTreeEntry* entry = dynamic_cast<GuiTreeEntry*>(item);
00082     if (!entry) return;
00083     entry->on_mouse_over.emit();
00084 }
00085 
00086 void GuiTree::DeleteAllItems()
00087 {
00088     TGListTreeItem* item;
00089     while ( (item = this->GetFirstItem()) ) {
00090         this->DeleteChildren(item);
00091         this->DeleteItem(item);
00092         
00093     }
00094     fClient->NeedRedraw(this);
00095 }

Generated on Mon Feb 15 11:06:47 2010 for loon by  doxygen 1.3.9.1