123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- //| Copyright: (C) 2019-2020 Kevin Larke <contact AT larke DOT org>
- //| License: GNU GPL version 3.0 or above. See the accompanying LICENSE file.
- #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); }
- }
- }
- }
|