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.

Fl_DevCfgGroup.h 4.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. #ifndef Fl_DevCfgGroup_h
  2. #define Fl_DevCfgGroup_h
  3. #include <vector>
  4. class Fl_DevCfgGroup : public Fl_Group
  5. {
  6. public:
  7. Fl_DevCfgGroup(cmDevCfgH_t dcH, int x, int y, int w, int h, const char* label );
  8. virtual ~Fl_DevCfgGroup();
  9. void onEnableAudio(bool enableFl );
  10. private:
  11. enum
  12. {
  13. kInvalidCId,
  14. kLocLabelCId,
  15. kLocMenuCId,
  16. kLocStringCId,
  17. kLocStoreBtnCId,
  18. kLocDeleteBtnCId,
  19. kMidiLabelCId,
  20. kMidiCfgMenuCId,
  21. kMidiDeleteBtnCId,
  22. kMidiCfgStringCId,
  23. kMidiApplyBtnCId,
  24. kMidiCfgDescCId,
  25. kMidiDevMenuCId,
  26. kMidiDevLabelCId,
  27. kMidiPortMenuCId,
  28. kMidiPortLabelCId,
  29. kMidiInputCheckCId,
  30. kAudioLabelCId,
  31. kAudioCfgMenuCId,
  32. kAudioDeleteBtnCId,
  33. kAudioCfgDescCId,
  34. kAudioCfgStringCId,
  35. kAudioApplyBtnCId,
  36. kAudioInDevMenuCId,
  37. kAudioInDevLabelCId,
  38. kAudioOutDevMenuCId,
  39. kAudioOutDevLabelCId,
  40. kAudioMsgQueSizeValCId,
  41. kAudioDevFpCValCId,
  42. kAudioDspFpCValCId,
  43. kAudioBufCntValCId,
  44. kAudioSrateMenuCId,
  45. kAudioSyncInCheckCId,
  46. kAudioNetNodeStringCId,
  47. kAudioBcastAddrStringCId,
  48. kAudioIpAddrStringCId,
  49. kAudioIpPortValCId,
  50. kAudioActiveCheckCId,
  51. /*
  52. kNetLabelCId,
  53. kNetCfgMenuCId,
  54. kNetDeleteBtnCId,
  55. kNetCfgDescCId,
  56. kNetCfgStringCId,
  57. kNetApplyBtnCId,
  58. kNetSockAddrStringCId,
  59. kNetPortNumbValCId,
  60. kNetLocalCheckCId,
  61. kNetActiveCheckCId
  62. */
  63. };
  64. typedef struct
  65. {
  66. unsigned id;
  67. Fl_DevCfgGroup* p;
  68. union
  69. {
  70. Fl_Button* btn;
  71. Fl_Check_Button* chk;
  72. Fl_Box* box;
  73. Fl_Menu_Button* mbt;
  74. Fl_Input* inp;
  75. Fl_Value_Input* val;
  76. } u;
  77. } ctl_t;
  78. cmDevCfgH_t _dcH;
  79. std::vector< ctl_t* > _ctlV;
  80. bool _loadLocBtn();
  81. void _recallLoc();
  82. void _storeLoc();
  83. void _deleteLoc();
  84. void _loadMidiDevBtn();
  85. void _loadMidiPortBtn();
  86. void _loadAudioDevBtn( unsigned id, unsigned devIdx );
  87. void _loadAudioSrateBtn();
  88. void _loadCfgMenu(cmTypeDcmId_t typeId, unsigned menuCtlId, unsigned deleteCtlId );
  89. void _syncLoc();
  90. void _createMidiCfg();
  91. void _createAudioCfg();
  92. //void _createNetCfg();
  93. void _deleteCfg( cmTypeDcmId_t typeId, unsigned menuCtlId, unsigned inpCtlCId, unsigned descCtlId, unsigned storeCtlId, unsigned deleteCtlId );
  94. void _recallCfg( cmTypeDcmId_t typeId, unsigned menuCtlId, unsigned strCtlId, unsigned descCtlId, unsigned storeCtlId );
  95. // Attempt to set the menu to index 'val' otherwise attempt to set it to 'dfltVal'
  96. // Finish by updating the label.
  97. void _restoreMenuValue( unsigned menuCtlId, int val, int dfltVal=0 );
  98. // Get the current string value of the menu btn.
  99. const char* _menuBtnValueStr( unsigned menuCtlId );
  100. // Copy the menu btn's current string value to the label (and the input control)
  101. void _setMenuBtnLabel( unsigned menuCtlId, unsigned inpCtlId = cmInvalidId );
  102. // Set the menu buttons value to 'string' and update the menu btn's label
  103. void _setMenuBtnWithString( unsigned menuCtlId, const char* string );
  104. void _setCheckCtl( unsigned ctlId, int val );
  105. void _setValueCtl( unsigned ctlId, double val );
  106. void _setInputCtl( unsigned ctlId, const cmChar_t* val );
  107. const cmChar_t* _getMenuCtl( unsigned ctlId );
  108. const cmChar_t* _getInputCtl( unsigned ctlId );
  109. double _getValueCtl( unsigned ctlId );
  110. bool _getCheckCtl( unsigned ctlId );
  111. double _getSrate();
  112. void _setSrate( double srate );
  113. void _enableStoreBtn( unsigned ctlId );
  114. ctl_t* _idToCtl(unsigned id);
  115. static void _s_ctl_cb( Fl_Widget* w, void* arg );
  116. };
  117. // Init:
  118. // 1) Load all menu X btns and set to first entry.
  119. // 2) set cfg string X to string value of cfg menu
  120. // 3) update desc and X fields.
  121. //
  122. // Cfg:
  123. // Store:
  124. // 1) call cmDevCfgNameX( cfg_label ) successfully
  125. // 2) reload cfg menu
  126. // 3) set cfg menu label to new cfg_label
  127. //
  128. // Recall:
  129. // 1) set cfg menu X label
  130. // 2) set cfg string X to string value of cfg menu
  131. // 3) update desc and X fields
  132. //
  133. // Delete:
  134. // 1) call cmDevDeleteX( cfg_label ) sucessfuly.
  135. // 2) reload cfg menu and set to first entry
  136. // 3) set cfg string X to string value of cfg menu
  137. // 4) update desc and X fields
  138. //
  139. //
  140. #endif