structure to store set info removed
This commit is contained in:
parent
f5829d6e67
commit
26d05892ae
7 changed files with 78 additions and 104 deletions
|
|
@ -38,8 +38,6 @@
|
|||
ParameterWidget::ParameterWidget(QWidget *parent) : QWidget(parent)
|
||||
{
|
||||
setupUi(this);
|
||||
getParameterSet("save.json");
|
||||
setComboBoxForSet();
|
||||
descriptionShow=true;
|
||||
autoPreviewTimer.setInterval(500);
|
||||
autoPreviewTimer.setSingleShot(true);
|
||||
|
|
@ -48,17 +46,28 @@ ParameterWidget::ParameterWidget(QWidget *parent) : QWidget(parent)
|
|||
connect(checkBoxDetailedDescription,SIGNAL(toggled(bool)),this,SLOT(onDescriptionShow()));
|
||||
}
|
||||
|
||||
void ParameterWidget::setFile(QString jsonFile){
|
||||
|
||||
getParameterSet(jsonFile.replace(".scad",".json").toStdString());
|
||||
setComboBoxForSet();
|
||||
}
|
||||
|
||||
ParameterWidget::~ParameterWidget()
|
||||
{
|
||||
}
|
||||
|
||||
void ParameterWidget::setComboBoxForSet(){
|
||||
|
||||
if(root.empty()){
|
||||
return;
|
||||
}
|
||||
this->comboBox->addItem("No Set Selected",
|
||||
QVariant(QString::fromStdString("")));
|
||||
for(Parameterset::iterator it=parameterSet.begin();it != parameterSet.end();it++){
|
||||
this->comboBox->addItem(QString::fromStdString(it->first),
|
||||
QVariant(QString::fromStdString(it->first)));
|
||||
|
||||
for(pt::ptree::value_type &v : root.get_child("SET")){
|
||||
|
||||
this->comboBox->addItem(QString::fromStdString(v.first),
|
||||
QVariant(QString::fromStdString(v.first)));
|
||||
}
|
||||
this->comboBox->setCurrentText("No Set Selected");
|
||||
connect(comboBox, SIGNAL(currentIndexChanged(int)),this,SLOT(onSetChanged(int)));
|
||||
|
|
@ -226,28 +235,31 @@ if(groupMap.find("Global")!=groupMap.end()){
|
|||
|
||||
void ParameterWidget::applyParameterSet(string setName){
|
||||
|
||||
|
||||
if(root.empty()){
|
||||
return;
|
||||
}
|
||||
string path="SET."+setName;
|
||||
Parameterset::iterator set=parameterSet.find(setName);
|
||||
if(set==parameterSet.end()){
|
||||
qWarning("no set");
|
||||
return ;
|
||||
}
|
||||
SetOfParameter setofparameter=set->second;
|
||||
for(pt::ptree::value_type &v : root.get_child(path)){
|
||||
entry_map_t::iterator entry =entries.find(v.first);
|
||||
try{
|
||||
if(entry!=entries.end()){
|
||||
if(entry->second->dvt == Value::NUMBER){
|
||||
entry->second->value=ValuePtr(v.second.get_value<double>());
|
||||
}else if(entry->second->dvt== Value::BOOL){
|
||||
entry->second->value=ValuePtr(v.second.get_value<bool>());
|
||||
}else if(entry->second->dvt== Value::VECTOR){
|
||||
|
||||
for(SetOfParameter::iterator i = setofparameter.begin();i!=setofparameter.end();i++){
|
||||
//code to written
|
||||
|
||||
entry_map_t::iterator entry =entries.find(i->first);
|
||||
if(entry!=entries.end()){
|
||||
if(entry->second->dvt == Value::STRING){
|
||||
entry->second->value=ValuePtr(i->second);
|
||||
}else if(entry->second->dvt== Value::BOOL){
|
||||
entry->second->value=ValuePtr(i->second=="true");
|
||||
}
|
||||
else{
|
||||
entry->second->value=ValuePtr(QString::fromStdString(i->second).toDouble());
|
||||
}else{
|
||||
entry->second->value=ValuePtr(v.second.data());
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (std::exception const& e){
|
||||
std::cerr << e.what() << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@ private:
|
|||
public:
|
||||
ParameterWidget(QWidget *parent = 0);
|
||||
virtual ~ParameterWidget();
|
||||
void setFile(QString jsonFile);
|
||||
|
||||
protected slots:
|
||||
void onValueChanged();
|
||||
|
|
|
|||
|
|
@ -1,95 +1,50 @@
|
|||
#include "parameterset.h"
|
||||
|
||||
#include "FileModule.h"
|
||||
#include "modcontext.h"
|
||||
|
||||
#include<QDebug>
|
||||
|
||||
#include <boost/property_tree/ptree.hpp>
|
||||
#include <boost/property_tree/json_parser.hpp>
|
||||
|
||||
|
||||
// Short alias for this namespace
|
||||
namespace pt = boost::property_tree;
|
||||
|
||||
ParameterSet::ParameterSet()
|
||||
{
|
||||
}
|
||||
|
||||
void ParameterSet::getParameterSet(string filename){
|
||||
|
||||
try{
|
||||
std::fstream myfile;
|
||||
myfile.open (filename);
|
||||
// send your JSON above to the parser below, but populate ss first
|
||||
|
||||
pt::ptree root;
|
||||
pt::read_json(myfile, root);
|
||||
|
||||
for(pt::ptree::value_type &v : root.get_child("SET")) {
|
||||
|
||||
// The data function is used to access the data stored in a node.
|
||||
SetOfParameter setofparameter;
|
||||
std::cout<<"model name"<<v.first<<std::endl;
|
||||
for(pt::ptree::value_type &vi : v.second){
|
||||
setofparameter[vi.first]=vi.second.data();
|
||||
|
||||
}
|
||||
parameterSet[v.first]=setofparameter;
|
||||
}
|
||||
|
||||
myfile.close();
|
||||
}
|
||||
catch (std::exception const& e)
|
||||
{
|
||||
std::cerr << e.what() << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void ParameterSet::print(){
|
||||
|
||||
for(Parameterset::iterator it=parameterSet.begin();it!=parameterSet.end();it++){
|
||||
SetOfParameter setofparameter=(*it).second;
|
||||
for(SetOfParameter::iterator i=setofparameter.begin();i!=setofparameter.end(); i++){
|
||||
std::cout<<i->first<<" ";
|
||||
}
|
||||
std::fstream myfile;
|
||||
myfile.open (filename);
|
||||
// send your JSON above to the parser below, but populate ss first
|
||||
if(myfile.is_open()){
|
||||
pt::read_json(myfile, this->root);
|
||||
}
|
||||
|
||||
myfile.close();
|
||||
}
|
||||
|
||||
|
||||
void ParameterSet::applyParameterSet(FileModule *fileModule,string setName)
|
||||
{
|
||||
if (fileModule == NULL) {
|
||||
return;
|
||||
}
|
||||
try{
|
||||
if (fileModule == NULL ||root.empty()) {
|
||||
return;
|
||||
}
|
||||
ModuleContext ctx;
|
||||
string path="SET."+setName;
|
||||
for (AssignmentList::iterator it = fileModule->scope.assignments.begin();it != fileModule->scope.assignments.end();it++) {
|
||||
|
||||
Parameterset::iterator set=parameterSet.find(setName);
|
||||
if(set==parameterSet.end()){
|
||||
qWarning("no set");
|
||||
return ;
|
||||
}
|
||||
|
||||
SetOfParameter setofparameter=set->second;
|
||||
ModuleContext ctx;
|
||||
|
||||
for (AssignmentList::iterator it = fileModule->scope.assignments.begin();it != fileModule->scope.assignments.end();it++) {
|
||||
|
||||
for(SetOfParameter::iterator i = setofparameter.begin();i!=setofparameter.end();i++){
|
||||
if(i->first== (*it).name){
|
||||
Assignment *assignment;
|
||||
assignment=&(*it);
|
||||
const ValuePtr defaultValue = assignment->expr.get()->evaluate(&ctx);
|
||||
if(defaultValue->type()== Value::STRING){
|
||||
assignment->expr = shared_ptr<Expression>(new Literal(ValuePtr(i->second)));
|
||||
}else if(defaultValue->type()== Value::BOOL){
|
||||
assignment->expr = shared_ptr<Expression>(new Literal(ValuePtr(i->second=="true")));
|
||||
}else{
|
||||
assignment->expr = shared_ptr<Expression>(new Literal(ValuePtr(QString::fromStdString(i->second).toDouble()))) ;
|
||||
}
|
||||
for(pt::ptree::value_type &v : root.get_child(path)){
|
||||
if(v.first== (*it).name){
|
||||
Assignment *assignment;
|
||||
assignment=&(*it);
|
||||
const ValuePtr defaultValue = assignment->expr.get()->evaluate(&ctx);
|
||||
if(defaultValue->type()== Value::NUMBER){
|
||||
assignment->expr = shared_ptr<Expression>(new Literal(ValuePtr(v.second.get_value<double>()))) ;
|
||||
}else if(defaultValue->type()== Value::BOOL){
|
||||
assignment->expr = shared_ptr<Expression>(new Literal(ValuePtr(v.second.get_value<bool>())));
|
||||
}else{
|
||||
assignment->expr = shared_ptr<Expression>(new Literal(ValuePtr(v.second.data())));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (std::exception const& e)
|
||||
{
|
||||
std::cerr << e.what() << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,23 +3,28 @@
|
|||
|
||||
#include"expression.h"
|
||||
#include "FileModule.h"
|
||||
|
||||
#include<map>
|
||||
|
||||
#include <boost/property_tree/ptree.hpp>
|
||||
#include <boost/property_tree/json_parser.hpp>
|
||||
|
||||
namespace pt = boost::property_tree;
|
||||
|
||||
using namespace std;
|
||||
|
||||
class ParameterSet
|
||||
{
|
||||
|
||||
protected:
|
||||
pt::ptree root;
|
||||
typedef map<string,string >SetOfParameter;
|
||||
typedef map<string,SetOfParameter> Parameterset;
|
||||
Parameterset parameterSet;
|
||||
typedef map<string,pt::ptree::value_type> Parameterset;
|
||||
Parameterset parameterSet;
|
||||
|
||||
public:
|
||||
|
||||
ParameterSet();
|
||||
void getParameterSet(string filename);
|
||||
void print();
|
||||
void applyParameterSet(FileModule *fileModule,string setName);
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ void ParameterText::on_Changed()
|
|||
void ParameterText::setValue()
|
||||
{
|
||||
this->stackedWidget->setCurrentWidget(this->pageText);
|
||||
this->lineEdit->setText(QString::fromStdString(object->defaultValue->toString()));
|
||||
this->lineEdit->setText(QString::fromStdString(object->value->toString()));
|
||||
if(object->values->toDouble()>0){
|
||||
this->lineEdit->setMaxLength(object->values->toDouble());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ void ParameterVector::on_Changed(double)
|
|||
void ParameterVector::setValue()
|
||||
{
|
||||
this->stackedWidget->setCurrentWidget(this->pageVector);
|
||||
Value::VectorType vec = object->defaultValue->toVector();
|
||||
Value::VectorType vec = object->value->toVector();
|
||||
if (vec.size() < 4) {
|
||||
this->doubleSpinBox4->hide();
|
||||
this->doubleSpinBox4->setReadOnly(true);
|
||||
|
|
|
|||
|
|
@ -176,6 +176,7 @@ MainWindow::MainWindow(const QString &filename)
|
|||
{
|
||||
setupUi(this);
|
||||
|
||||
this->parameterWidget->setFile(filename);
|
||||
editorDockTitleWidget = new QWidget();
|
||||
consoleDockTitleWidget = new QWidget();
|
||||
parameterDockTitleWidget = new QWidget();
|
||||
|
|
|
|||
Loading…
Reference in a new issue