Programmable real-time audio signal processing application
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

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