00001 #include "GfxTrackListMenu.h" 00002 #include "GfxTrackList.h" 00003 #include "GfxProxy.h" 00004 00005 #include "EVD.h" 00006 00007 #include <sigc++/sigc++.h> 00008 #include <sigc++/class_slot.h> 00009 using namespace SigC; 00010 00011 #include <list> 00012 #include <iostream> 00013 using namespace std; 00014 00015 extern GfxProxy<GfxTrackList> gsGfxTrackListProxy; 00016 00020 GuiMenu* GfxTrackListMenu::MakeMenu(EVD* /*mp*/) 00021 { 00022 GuiMenu::GuiMenuList::iterator mit; 00023 00024 GuiMenu* gfx_menu = new GuiMenu; 00025 mit = gfx_menu->Add("Hide all"); 00026 (*mit)->Connect(bind(slot_class(*this,&GfxTrackListMenu::HideAll),gfx_menu,mit)); 00027 00028 return gfx_menu; 00029 } 00030 00031 void GfxTrackListMenu::HideAll(GuiMenu* menu, GuiMenu::GuiMenuList::iterator mit) 00032 { 00033 NamedFactory& nf = NamedFactory::Instance("Gfx"); 00034 NamedProxy* np = nf.GetProxy("TrackList"); 00035 00036 GfxProxy<GfxTrackList>* gp = dynamic_cast<GfxProxy<GfxTrackList>*>(np); 00037 if (!gp) { 00038 cerr << "Can't get GfxTrackList proxy\n"; 00039 return; 00040 } 00041 00042 list<GfxTrackList*> dls = gp->GetInstances(); 00043 list<GfxTrackList*>::iterator lit, done = dls.end(); 00044 00045 bool tf = ! menu->IsEntryChecked(mit); 00046 00047 menu->CheckEntry(mit,tf); 00048 for (lit = dls.begin(); lit != done; ++lit) 00049 (*lit)->HideTracks(tf); 00050 }
1.3.9.1