12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #include <FL/Fl.H>
- #include <FL/Fl_Widget.H>
- #include <FL/Fl_Button.H>
- #include <FL/Fl_Scrollbar.H>
- #include <FL/Fl_Menu_Button.H>
- #include <FL/Fl_Menu_Item.H>
-
- #include <vector>
- #include <assert.h>
- #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<ctl_t*>(arg);
-
- unsigned i;
- for(i=0; i<r->thisPtr->_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); }
- }
- }
- }
|