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.4KB

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