8 #include <RobotComponents/gui-plugins/RobotIKPlugin/ui_SetDesiredPoseDialog.h>
10 static std::vector<std::string>
11 expectedKeys({
"agent",
"frame",
"qw",
"qx",
"qy",
"qz",
"x",
"y",
"z"});
18 connect(ui->pushButton_formatJSON, SIGNAL(clicked()),
this, SLOT(formatInput()));
19 connect(ui->plainTextEdit, SIGNAL(textChanged()),
this, SLOT(checkJSON()));
20 connect(ui->buttonBox->button(QDialogButtonBox::Ok),
23 SLOT(parseInputAndSetPose()));
40 SetDesiredPoseDialog::checkJSON()
42 std::string text = ui->plainTextEdit->toPlainText().toUtf8().data();
48 std::string errorMsgPart;
52 std::vector<std::string> keys = json->getKeys();
53 for (std::string& k : expectedKeys)
55 if (std::find(keys.begin(), keys.end(), k) == keys.end())
64 for (std::string& k : expectedKeys)
70 if (errorMsgPart.size() >= 2)
72 errorMsgPart = errorMsgPart.substr(0, errorMsgPart.size() - 2);
76 if (!
parser.iserr() && errorMsgPart.empty())
78 ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(
true);
79 ui->label_jsonValid->setStyleSheet(
"QLabel { color : green; }");
80 ui->label_jsonValid->setText(
"JSON-Format: valid");
84 ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(
false);
85 ui->label_jsonValid->setStyleSheet(
"QLabel { color : red; }");
86 if (errorMsgPart.empty())
88 ui->label_jsonValid->setText(
"JSON-Format: not valid, Error at " +
89 QString(
parser.getlongerrposstr().c_str()));
94 ui->label_jsonValid->setText(
"JSON-Format: not valid, Missing following keys: \n{ " +
95 QString(errorMsgPart.c_str()) +
" }");
101 SetDesiredPoseDialog::formatInput()
103 std::string text = ui->plainTextEdit->toPlainText().toUtf8().data();
109 if (stringToJSON(text, json))
111 std::vector<std::string> keys = json->getKeys();
112 for (std::string& k : expectedKeys)
114 if (std::find(keys.begin(), keys.end(), k) == keys.end())
116 if (k ==
"agent" || k ==
"frame")
126 ui->plainTextEdit->setPlainText(QString(json->toJsonString(2).c_str()));
131 msgBox.setText(
"Input cannot be parsed into json and therefore not formated.");
132 msgBox.setIcon(QMessageBox::Warning);
133 msgBox.setStandardButtons(QMessageBox::Ok);
134 msgBox.setDefaultButton(QMessageBox::Ok);
140 SetDesiredPoseDialog::parseInputAndSetPose()
142 std::string text = ui->plainTextEdit->toPlainText().toUtf8().data();
147 armarx::toFloat((std::dynamic_pointer_cast<armarx::JsonValue>(json->get(
"x")))->rawValue());
149 armarx::toFloat((std::dynamic_pointer_cast<armarx::JsonValue>(json->get(
"y")))->rawValue());
151 armarx::toFloat((std::dynamic_pointer_cast<armarx::JsonValue>(json->get(
"z")))->rawValue());
153 (std::dynamic_pointer_cast<armarx::JsonValue>(json->get(
"qw")))->rawValue());
155 (std::dynamic_pointer_cast<armarx::JsonValue>(json->get(
"qx")))->rawValue());
157 (std::dynamic_pointer_cast<armarx::JsonValue>(json->get(
"qy")))->rawValue());
159 (std::dynamic_pointer_cast<armarx::JsonValue>(json->get(
"qz")))->rawValue());
161 (std::dynamic_pointer_cast<armarx::JsonValue>(json->get(
"agent")))->asString();
163 (std::dynamic_pointer_cast<armarx::JsonValue>(json->get(
"frame")))->asString();
180 result = std::dynamic_pointer_cast<armarx::JsonObject>(
parser.parsedJson);