Programmable real-time audio signal processing application
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Fl_CbLinker.cpp 1.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #include <FL/Fl.H>
  2. #include <FL/Fl_Widget.H>
  3. #include <FL/Fl_Button.H>
  4. #include <FL/Fl_Scrollbar.H>
  5. #include <FL/Fl_Menu_Button.H>
  6. #include <FL/Fl_Menu_Item.H>
  7. #include <vector>
  8. #include <assert.h>
  9. #include "Fl_CbLinker.h"
  10. Fl_CbLinker::Fl_CbLinker()
  11. {}
  12. Fl_CbLinker::~Fl_CbLinker()
  13. {
  14. unsigned i;
  15. for(i=0; i<_ctlV.size(); ++i)
  16. delete _ctlV[i];
  17. }
  18. void Fl_CbLinker::registerCtl( Fl_Button* c, unsigned id )
  19. {
  20. ctl_t* r;
  21. _ctlV.push_back( r = new ctl_t(this,c,id) );
  22. c->callback(_s_callback,r);
  23. }
  24. void Fl_CbLinker::registerCtl( Fl_Scrollbar* c, unsigned id )
  25. {
  26. ctl_t* r;
  27. _ctlV.push_back( r = new ctl_t(this,c,id) );
  28. c->callback(_s_callback,r);
  29. }
  30. void Fl_CbLinker::registerCtl( Fl_Menu_Button* c, unsigned id )
  31. {
  32. ctl_t* r;
  33. _ctlV.push_back( r = new ctl_t(this,c,id) );
  34. c->callback(_s_callback,r);
  35. }
  36. void Fl_CbLinker::registerCtl( Fl_Menu_Item* c, unsigned id )
  37. {
  38. ctl_t* r;
  39. _ctlV.push_back( r = new ctl_t(this,c,id) );
  40. c->callback(_s_callback,r);
  41. }
  42. void Fl_CbLinker::onButton( Fl_Button* c, unsigned id )
  43. {}
  44. void Fl_CbLinker::onScrollbar( Fl_Scrollbar* c, unsigned id )
  45. {}
  46. void Fl_CbLinker::onMenuBtn( Fl_Menu_Button* c, unsigned id )
  47. {}
  48. void Fl_CbLinker::onMenuItem( Fl_Menu_Item* c, unsigned id )
  49. {}
  50. void Fl_CbLinker::_s_callback( Fl_Widget* w, void* arg )
  51. {
  52. ctl_t* r = static_cast<ctl_t*>(arg);
  53. unsigned i;
  54. for(i=0; i<r->thisPtr->_ctlV.size(); ++i)
  55. if( r->thisPtr->_ctlV[i] == arg )
  56. {
  57. switch( r->typeId )
  58. {
  59. case kButtonTId: r->thisPtr->onButton( r->u.btn, r->ctlId); break;
  60. case kScrollbarTId: r->thisPtr->onScrollbar( r->u.sb, r->ctlId); break;
  61. case kMenuBtnTId: r->thisPtr->onMenuBtn( r->u.mbtn, r->ctlId); break;
  62. case kMenuItemTId: r->thisPtr->onMenuItem( r->u.mitem, r->ctlId); break;
  63. default:
  64. { assert(0); }
  65. }
  66. }
  67. }