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

GuiMenuThings.cxx

Go to the documentation of this file.
00001 #include "GuiMenuThings.h"
00002 // SigC:
00003 #include <sigc++/sigc++.h>
00004 #include <sigc++/class_slot.h>
00005 
00006 using namespace std;
00007 
00008 GuiToggledMenuItem::GuiToggledMenuItem( Bool_t state ) :
00009  fState(state)
00010 {
00011 }
00012 
00013 GuiMenu::GuiMenuList::iterator 
00014 GuiToggledMenuItem::AddToMenu( GuiMenu* menu , const char* name)
00015 {
00016   GuiMenuItr mit = menu->Add(name);
00017   (*mit)->Connect(bind(bind(slot_class(*this,&GuiToggledMenuItem::CallBack),
00018                             mit) , menu));
00019   menu->CheckEntry(mit, (fState));
00020   return mit;
00021 }
00022 
00023 void GuiToggledMenuItem::CallBack(GuiMenu* menu,  GuiMenu::GuiMenuList::iterator mit)
00024 {
00025   fState = !(fState);
00026   menu->CheckEntry(mit, (fState));
00027   fSig.emit();
00028 }
00029 
00030 void GuiToggledMenuItem::SetState(Bool_t set)
00031 {
00032   fState = set;
00033   fSig.emit();
00034 }
00035 
00036 
00037 
00039 // Menu groups
00040 
00041 GuiToggledSubMenu::GuiToggledSubMenu( Int_t state ) :
00042   fState(state),
00043   fMenu(0)
00044 {
00045 }
00046 
00047 GuiMenu* GuiToggledSubMenu::CreateMenu(GuiMenu* parent, const char* menuname ) 
00048 {
00049   fMenu = manage(new GuiMenu);
00050   parent->Add(menuname,*fMenu);
00051   return fMenu.get();
00052 }
00053 
00054 GuiMenuItr GuiToggledSubMenu::AddItem(const char* name, Int_t value )
00055 {
00056   GuiMenuItr mit = fMenu->Add(name);
00057   (*mit)->Connect(bind(bind(bind(slot_class(*this,&GuiToggledSubMenu::CallBack),
00058                                  value ) ,mit) , fMenu));
00059   fMenu->CheckEntry(mit, (value==fState));
00060   
00061   return mit;
00062 }
00063 
00064 void GuiToggledSubMenu::CallBack(GuiMenu* menu,  
00065                                    GuiMenu::GuiMenuList::iterator mit, 
00066                                    Int_t value)
00067 {
00068   fState = value;
00069   // Set checkmarks appropriately.
00070   GuiMenu::GuiMenuList& mlist = menu->GetMenuList();
00071   GuiMenu::GuiMenuList::iterator it, done = mlist.end();
00072   for (it = mlist.begin(); it != done; ++it)
00073     menu->CheckEntry(it,false);
00074   menu->CheckEntry(mit,true);
00075   
00076   // Actually do the command.
00077   fSig0.emit(); 
00078   fSig1.emit(fState); 
00079 }

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