123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- //| Copyright: (C) 2019-2020 Kevin Larke <contact AT larke DOT org>
- //| License: GNU GPL version 3.0 or above. See the accompanying LICENSE file.
- #ifndef Fl_DevCfgGroup_h
- #define Fl_DevCfgGroup_h
-
- #include <vector>
-
- class Fl_DevCfgGroup : public Fl_Group
- {
- public:
- Fl_DevCfgGroup(cmDevCfgH_t dcH, int x, int y, int w, int h, const char* label );
- virtual ~Fl_DevCfgGroup();
-
- void onEnableAudio(bool enableFl );
-
- private:
- enum
- {
- kInvalidCId,
- kLocLabelCId,
- kLocMenuCId,
- kLocStringCId,
- kLocStoreBtnCId,
- kLocDeleteBtnCId,
-
- kMidiLabelCId,
- kMidiCfgMenuCId,
- kMidiDeleteBtnCId,
- kMidiCfgStringCId,
- kMidiApplyBtnCId,
- kMidiCfgDescCId,
- kMidiDevMenuCId,
- kMidiDevLabelCId,
- kMidiPortMenuCId,
- kMidiPortLabelCId,
- kMidiInputCheckCId,
-
- kAudioLabelCId,
- kAudioCfgMenuCId,
- kAudioDeleteBtnCId,
- kAudioCfgDescCId,
- kAudioCfgStringCId,
- kAudioApplyBtnCId,
- kAudioInDevMenuCId,
- kAudioInDevLabelCId,
- kAudioOutDevMenuCId,
- kAudioOutDevLabelCId,
- kAudioMsgQueSizeValCId,
- kAudioDevFpCValCId,
- kAudioDspFpCValCId,
- kAudioBufCntValCId,
- kAudioSrateMenuCId,
- kAudioSyncInCheckCId,
- kAudioNetNodeStringCId,
- kAudioBcastAddrStringCId,
- kAudioIpAddrStringCId,
- kAudioIpPortValCId,
- kAudioActiveCheckCId,
-
- /*
- kNetLabelCId,
- kNetCfgMenuCId,
- kNetDeleteBtnCId,
- kNetCfgDescCId,
- kNetCfgStringCId,
- kNetApplyBtnCId,
- kNetSockAddrStringCId,
- kNetPortNumbValCId,
- kNetLocalCheckCId,
- kNetActiveCheckCId
- */
-
- };
-
- typedef struct
- {
- unsigned id;
- Fl_DevCfgGroup* p;
- union
- {
- Fl_Button* btn;
- Fl_Check_Button* chk;
- Fl_Box* box;
- Fl_Menu_Button* mbt;
- Fl_Input* inp;
- Fl_Value_Input* val;
- } u;
-
- } ctl_t;
-
- cmDevCfgH_t _dcH;
- std::vector< ctl_t* > _ctlV;
-
- bool _loadLocBtn();
- void _recallLoc();
- void _storeLoc();
- void _deleteLoc();
-
- void _loadMidiDevBtn();
- void _loadMidiPortBtn();
- void _loadAudioDevBtn( unsigned id, unsigned devIdx );
- void _loadAudioSrateBtn();
- void _loadCfgMenu(cmTypeDcmId_t typeId, unsigned menuCtlId, unsigned deleteCtlId );
- void _syncLoc();
- void _createMidiCfg();
- void _createAudioCfg();
- //void _createNetCfg();
- void _deleteCfg( cmTypeDcmId_t typeId, unsigned menuCtlId, unsigned inpCtlCId, unsigned descCtlId, unsigned storeCtlId, unsigned deleteCtlId );
- void _recallCfg( cmTypeDcmId_t typeId, unsigned menuCtlId, unsigned strCtlId, unsigned descCtlId, unsigned storeCtlId );
-
- // Attempt to set the menu to index 'val' otherwise attempt to set it to 'dfltVal'
- // Finish by updating the label.
- void _restoreMenuValue( unsigned menuCtlId, int val, int dfltVal=0 );
-
- // Get the current string value of the menu btn.
- const char* _menuBtnValueStr( unsigned menuCtlId );
-
- // Copy the menu btn's current string value to the label (and the input control)
- void _setMenuBtnLabel( unsigned menuCtlId, unsigned inpCtlId = cmInvalidId );
-
- // Set the menu buttons value to 'string' and update the menu btn's label
- void _setMenuBtnWithString( unsigned menuCtlId, const char* string );
- void _setCheckCtl( unsigned ctlId, int val );
- void _setValueCtl( unsigned ctlId, double val );
- void _setInputCtl( unsigned ctlId, const cmChar_t* val );
-
- const cmChar_t* _getMenuCtl( unsigned ctlId );
- const cmChar_t* _getInputCtl( unsigned ctlId );
- double _getValueCtl( unsigned ctlId );
- bool _getCheckCtl( unsigned ctlId );
-
- double _getSrate();
- void _setSrate( double srate );
-
- void _enableStoreBtn( unsigned ctlId );
-
- ctl_t* _idToCtl(unsigned id);
-
-
- static void _s_ctl_cb( Fl_Widget* w, void* arg );
-
- };
-
- // Init:
- // 1) Load all menu X btns and set to first entry.
- // 2) set cfg string X to string value of cfg menu
- // 3) update desc and X fields.
- //
- // Cfg:
- // Store:
- // 1) call cmDevCfgNameX( cfg_label ) successfully
- // 2) reload cfg menu
- // 3) set cfg menu label to new cfg_label
- //
- // Recall:
- // 1) set cfg menu X label
- // 2) set cfg string X to string value of cfg menu
- // 3) update desc and X fields
- //
- // Delete:
- // 1) call cmDevDeleteX( cfg_label ) sucessfuly.
- // 2) reload cfg menu and set to first entry
- // 3) set cfg string X to string value of cfg menu
- // 4) update desc and X fields
- //
- //
-
-
-
- #endif
|