save_latch_to_patch.cpp (1221B)
1 #include "save_latch_to_patch.hpp" 2 3 #define SAVE_LATCHED_TO_PATCH "save_latched_to_patch" 4 #define LATCHED_STATE "latched_state" 5 6 json_t* SaveLatchToPatchModule::saveToJson(json_t* root) { 7 json_object_set_new(root, SAVE_LATCHED_TO_PATCH, json_boolean(_saveLatchedToPatch)); 8 if (_saveLatchedToPatch && _latch) { 9 json_t* a = json_array(); 10 for (int c = 0; c < maxChannels; ++c) { 11 json_array_append_new(a, json_boolean(_latchedHigh[c])); 12 } 13 json_object_set_new(root, LATCHED_STATE, a); 14 } 15 return root; 16 } 17 18 void SaveLatchToPatchModule::loadFromJson(json_t* root) { 19 json_t* sl = json_object_get(root, SAVE_LATCHED_TO_PATCH); 20 if (sl) { 21 _saveLatchedToPatch = json_is_true(sl); 22 json_t* a = json_object_get(root, LATCHED_STATE); 23 if (_saveLatchedToPatch && a && json_array_size(a) == maxChannels) { 24 for (int c = 0; c < maxChannels; ++c) { 25 json_t* ls = json_array_get(a, c); 26 if (ls && json_is_true(ls)) { 27 _latchedHigh[c] = true; 28 } 29 } 30 } 31 } 32 } 33 34 35 void SaveLatchToPatchModuleWidget::contextMenu(Menu* menu) { 36 auto m = dynamic_cast<SaveLatchToPatchModule*>(module); 37 assert(m); 38 menu->addChild(new BoolOptionMenuItem("Save latched state to patch", [m]() { return &m->_saveLatchedToPatch; })); 39 }