/// \file /// \ingroup tutorial_eve /// Test signals from TEveSelection class. /// /// \macro_code /// /// \author Matevz Tadel #include "TEveSelection.h" // To enforce auto-loading of libEve. class SigTestSpitter { TEveSelection *fSel; TString fPrefix; public: SigTestSpitter(TEveSelection* sel, const TString& prefix) : fSel(sel), fPrefix(prefix) { fSel->Connect("SelectionAdded(TEveElement*)", "SigTestSpitter", this, "Added(TEveElement*)"); fSel->Connect("SelectionRemoved(TEveElement*)", "SigTestSpitter", this, "Removed(TEveElement*)"); fSel->Connect("SelectionCleared()", "SigTestSpitter", this, "Cleared()"); } ~SigTestSpitter() { fSel->Disconnect("SelectionAdded(TEveElement*)", this, "Added(TEveElement*)"); fSel->Disconnect("SelectionRemoved(TEveElement*)", this, "Removed(TEveElement*)"); fSel->Disconnect("SelectionCleared()", this, "Cleared()"); } // ---------------------------------------------------------------- void Added(TEveElement* el) { printf("%s Added 0x%lx '%s'\n", fPrefix.Data(), (ULong_t)el, el ? el->GetElementName() : ""); } void Removed(TEveElement* el) { printf("%s Removed 0x%lx '%s'\n", fPrefix.Data(), (ULong_t)el, el ? el->GetElementName() : ""); } void Cleared() { printf("%s Cleared'\n", fPrefix.Data()); } }; void selection_sigs() { TEveManager::Create(); new SigTestSpitter(gEve->GetSelection(), "Selection"); new SigTestSpitter(gEve->GetHighlight(), "Highlight"); }