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.

cmUiDrvrFltk.h 3.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #ifndef cmUiDrvrFltk_h
  2. #define cmUiDrvrFltk_h
  3. class Fl_Tabs;
  4. class Fl_Widget;
  5. class Fl_Button;
  6. class Fl_Check_Button;
  7. class Fl_Menu_Button;
  8. class Fl_Select_Browser;
  9. class Fl_Box;
  10. class Fl_Input;
  11. class Fl_Value_Input;
  12. class Fl_Value_Slider;
  13. class Fl_Progress;
  14. class Fl_Vert_Progress;
  15. class Fl_File_Btn;
  16. class Fl_Text_Display;
  17. class cmUiDrvrFltk
  18. {
  19. public:
  20. cmUiDrvrFltk(cmCtx_t* ctx, Fl_Tabs* tabs, cmUiDriverFunc_t cbFunc, void* cbArg);
  21. virtual ~cmUiDrvrFltk();
  22. void setBaseWindow( Fl_Tabs* tabs );
  23. void setCallback( cmUiDriverFunc_t cbFunc, void* cbArg );
  24. static cmUiRC_t cmUiDriverFunc( void* arg, const cmUiDriverArg_t* a );
  25. private:
  26. struct panel_str;
  27. typedef struct ctl_str
  28. {
  29. cmUiCId_t cId; // control type id
  30. unsigned usrId; // user id
  31. unsigned flags; // flags from this controls create call.
  32. struct panel_str* pnl; // parent panel
  33. Fl_Widget* wdgt; // this controls FLTK wdgt ptr
  34. cmUiDriverArg_t cbArg; // cached callback arg. recd used by this ctl
  35. struct ctl_str* link; // panel.ctls list link
  36. union
  37. {
  38. Fl_Button* btn;
  39. Fl_Check_Button* chk;
  40. Fl_Menu_Button* mbt;
  41. Fl_Select_Browser* lst;
  42. Fl_Box* lbl;
  43. Fl_Input* str;
  44. Fl_Text_Display* con;
  45. Fl_Value_Input* num;
  46. Fl_Value_Slider* sld;
  47. Fl_Progress* prg;
  48. Fl_Progress* mtr;
  49. Fl_File_Btn* fnb;
  50. } u;
  51. } ctl_t;
  52. typedef struct panel_str
  53. {
  54. cmUiDrvrFltk* drvr; // parent driver object
  55. Fl_Group* grp; // panel Widget
  56. unsigned appId; // id of the app. this panel serves
  57. unsigned usrId; // panels id
  58. int x_offs; // left control border
  59. int y_offs; // top control border
  60. ctl_t* ctls; // this panels control list
  61. cmUiDriverArg_t cbArg; // cached callback arg recd used by this ctl
  62. struct panel_str* link; // links used by _panels
  63. } panel_t;
  64. cmErr_t _err; //
  65. Fl_Tabs* _tabs; // Fl_Tabs Widget containing the panels
  66. cmUiDriverFunc_t _cbFunc; // application event callback function
  67. void* _cbArgs; //
  68. panel_t* _panels; // panel list
  69. ctl_t _dummy; //
  70. void _insertNewCtl( panel_t* pp, ctl_t* ctl, Fl_Widget* wp, unsigned flags );
  71. bool _hasNoAlignFlags( unsigned flags ) const;
  72. cmUiRC_t _createCtl( const cmUiDriverArg_t* a );
  73. cmUiRC_t _destroyCtl( unsigned appId, unsigned panelId, unsigned usrId, bool deleteWindowEleFlag );
  74. cmUiRC_t _destroyCtl( panel_t* pp, unsigned usrId, bool deleteWindowEleFlag );
  75. cmUiRC_t _createPanel( const cmUiDriverArg_t* a );
  76. cmUiRC_t _setValueCtl( const cmUiDriverArg_t* a );
  77. cmUiRC_t _enableCtl( const cmUiDriverArg_t* a );
  78. cmUiRC_t _destroyAllPanels( bool deleteWindowEleFl );
  79. cmUiRC_t _destroyPanel(panel_t* pp, bool deleteWindowEleFl );
  80. cmUiRC_t _findPanel( unsigned appId, unsigned usrId, panel_t*& ppRef, panel_t*& prvPnlRef, bool errFl=true );
  81. cmUiRC_t _findCtl( panel_t* pp, unsigned usrId, ctl_t*& ctlRef, ctl_t*& prvCtlRef, bool errFl=true );
  82. void _doCb( ctl_t* ctl, cmUiDId_t dId, unsigned flags );
  83. static void _s_ctl_cb(Fl_Widget* wp, void* data );
  84. static void _s_tab_cb(Fl_Widget* wp, void* data );
  85. };
  86. #endif