Hey, I’m having difficulty learning how to send/receive JSON objects,
Only one text field communicating with JSON.
struct MpMapperWidget : ModuleWidget {
TextField* textField;
json_t* toJson() override {
json_t* rootJ = ModuleWidget::toJson();
json_object_set_new(rootJ, "text", json_string(textField->text.c_str()));
return rootJ;
}
void fromJson(json_t* rootJ) override {
ModuleWidget::fromJson(rootJ);
json_t* textJ = json_object_get(rootJ, "text");
if (textJ)
textField->text = json_string_value(textJ);
}
textField = createWidget<LedDisplayTextField>(Vec(10.2,81));
textField->box.size = mm2px(Vec(84.5, 12));
textField->multiline = true;
addChild(textField);
textField = createWidget<LedDisplayTextField>(Vec(10.2,177));
textField->box.size = mm2px(Vec(84.5, 12));
textField->multiline = true;
addChild(textField);
textField = createWidget<LedDisplayTextField>(Vec(10.2,273));
textField->box.size = mm2px(Vec(84.5, 12));
textField->multiline = true;
addChild(textField);
1.how I define each textField by a name?
2. best way to send and receive all TextField?
I hope you understand what I’m asking,
Thank you.
Vortico
(VCV - Andrew)
September 5, 2020, 11:33am
2
ModuleWidget::toJson()
and fromJson()
are deprecated. Use Module::dataToJson()
and dataToJson()
.
of curse I forgot to mention I need a further help,
struct MpMapperWidget : ModuleWidget {
TextField* textField;
json_t* toJson() override {
json_t* rootJ = Module::dataToJson();
json_object_set_new(rootJ, "text", json_string(textField->text.c_str()));
return rootJ;
}
void fromJson(json_t* rootJ) override {
Module::dataFromJson(rootJ);
json_t* textJ = json_object_get(rootJ, "text");
if (textJ)
textField->text = json_string_value(textJ);
}```
error: call to non-static member function without an
object argument
Module::dataFromJson();
Just override the virtual dataToJson() and dataFromJson() in your module, instead of trying to call them from other functions. The calling is done by Rack, you just provide the functions
json_t* dataToJson() override {
json_t *rootJ = json_object();
json_object_set_new(rootJ, "text", json_string(textField->text));
return rootJ;
}
void dataFromJson(json_t* rootJ) override {
json_t* textJ = json_object_get(rootJ, "text");
if (textJ)
textField->text = json_string_value(textJ);
}
2 Likes
Ok,thanks.
2 errors
I know that might be funny on annoying, but because im just getting started with code Im spending too much time or silly things, really thanks for everyone who help and helped me:)
something I do wrong?
src/MpMapper.cpp:88:26: error: only virtual member functions can be marked
'override'
json_t* dataToJson() override {
^~~~~~~~~
src/MpMapper.cpp:98:38: error: only virtual member functions can be marked
'override'
void dataFromJson(json_t* rootJ) override {
^~~~~~~~~
Vortico
(VCV - Andrew)
September 5, 2020, 1:30pm
6
You’re probably trying to override methods in your ModuleWidget
subclass. You need to override those methods in your Module
subclass.
1 Like
alright thanks,
after all attempts, now the most stupid error, src/MpMapper.cpp:92:1: error: expected unqualified-id
{
^
so I uploaded to GitHub my first repository,
I hope someone can review MpMapper.cpp and fix this stupid error, so we can push this to the library:)
Oh my, this is no code for easy reading…
outputs[mod_333_OUTPUT].setVoltage ( kno_326_PARAM_output);
outputs[mod_339_OUTPUT].setVoltage ( kno_309_PARAM_output);
outputs[mod_341_OUTPUT].setVoltage ( kno_310_PARAM_output);
outputs[mod_342_OUTPUT].setVoltage ( kno_311_PARAM_output);
outputs[mod_343_OUTPUT].setVoltage ( kno_312_PARAM_output);
outputs[mod_320_OUTPUT].setVoltage ( kno_323_PARAM_output);
};
// Needs review
{
json_t* dataToJson() override {
json_t* rootJ = json_object();
json_object_set_new(rootJ, "text", json_string(textField->text.c_str()));
return rootJ;
};
void dataFromJson(json_t* rootJ) override {
json_t* textJ = json_object_get(rootJ, "text");
if (textJ)
These two functions must be placed in the scope of struct MpMapper
. It still won’t compile afterwards as you can’t access textField
from MpMapper
.
1 Like