#include #include #include #include #include #include #include #include #include "Fl_CbLinker.h" Fl_CbLinker::Fl_CbLinker() {} Fl_CbLinker::~Fl_CbLinker() { unsigned i; for(i=0; i<_ctlV.size(); ++i) delete _ctlV[i]; } void Fl_CbLinker::registerCtl( Fl_Button* c, unsigned id ) { ctl_t* r; _ctlV.push_back( r = new ctl_t(this,c,id) ); c->callback(_s_callback,r); } void Fl_CbLinker::registerCtl( Fl_Scrollbar* c, unsigned id ) { ctl_t* r; _ctlV.push_back( r = new ctl_t(this,c,id) ); c->callback(_s_callback,r); } void Fl_CbLinker::registerCtl( Fl_Menu_Button* c, unsigned id ) { ctl_t* r; _ctlV.push_back( r = new ctl_t(this,c,id) ); c->callback(_s_callback,r); } void Fl_CbLinker::registerCtl( Fl_Menu_Item* c, unsigned id ) { ctl_t* r; _ctlV.push_back( r = new ctl_t(this,c,id) ); c->callback(_s_callback,r); } void Fl_CbLinker::onButton( Fl_Button* c, unsigned id ) {} void Fl_CbLinker::onScrollbar( Fl_Scrollbar* c, unsigned id ) {} void Fl_CbLinker::onMenuBtn( Fl_Menu_Button* c, unsigned id ) {} void Fl_CbLinker::onMenuItem( Fl_Menu_Item* c, unsigned id ) {} void Fl_CbLinker::_s_callback( Fl_Widget* w, void* arg ) { ctl_t* r = static_cast(arg); unsigned i; for(i=0; ithisPtr->_ctlV.size(); ++i) if( r->thisPtr->_ctlV[i] == arg ) { switch( r->typeId ) { case kButtonTId: r->thisPtr->onButton( r->u.btn, r->ctlId); break; case kScrollbarTId: r->thisPtr->onScrollbar( r->u.sb, r->ctlId); break; case kMenuBtnTId: r->thisPtr->onMenuBtn( r->u.mbtn, r->ctlId); break; case kMenuItemTId: r->thisPtr->onMenuItem( r->u.mitem, r->ctlId); break; default: { assert(0); } } } }