Programmable real-time audio signal processing application
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

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