feature to add,update,delete set of parameter
This commit is contained in:
parent
04ab645841
commit
5c74c591c4
6 changed files with 81 additions and 21 deletions
|
|
@ -252,8 +252,8 @@ FORMS += src/MainWindow.ui \
|
|||
src/AboutDialog.ui \
|
||||
src/FontListDialog.ui \
|
||||
src/ProgressWidget.ui \
|
||||
src/Parameter/parameterWidget.ui \
|
||||
src/Parameter/parameterEntryWidget.ui \
|
||||
src/Parameter/ParameterWidget.ui \
|
||||
src/Parameter/ParameterEntryWidget.ui \
|
||||
src/launchingscreen.ui \
|
||||
src/LibraryInfoDialog.ui \
|
||||
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
#include "parametercheckbox.h"
|
||||
#include "parametertext.h"
|
||||
#include "parametervector.h"
|
||||
|
||||
#include <QInputDialog>
|
||||
|
||||
ParameterWidget::ParameterWidget(QWidget *parent) : QWidget(parent)
|
||||
{
|
||||
|
|
@ -46,10 +46,37 @@ ParameterWidget::ParameterWidget(QWidget *parent) : QWidget(parent)
|
|||
connect(checkBoxDetailedDescription,SIGNAL(toggled(bool)),this,SLOT(onDescriptionShow()));
|
||||
}
|
||||
|
||||
void ParameterWidget::onSetDelete(){
|
||||
if(root.empty()){
|
||||
return;
|
||||
}
|
||||
string setName=comboBox->itemData(this->comboBox->currentIndex()).toString().toStdString();
|
||||
root.get_child("SET").erase(setName);
|
||||
std::fstream myfile;
|
||||
myfile.open (this->jsonFile,ios::out);
|
||||
pt::write_json(myfile,root);
|
||||
myfile.close();
|
||||
this->comboBox->clear();
|
||||
setComboBoxForSet();
|
||||
}
|
||||
|
||||
void ParameterWidget::onSetAdd(){
|
||||
|
||||
if(root.empty()){
|
||||
return;
|
||||
}
|
||||
updateParameterSet(comboBox->itemData(this->comboBox->currentIndex()).toString().toStdString());
|
||||
}
|
||||
|
||||
void ParameterWidget::setFile(QString jsonFile){
|
||||
|
||||
getParameterSet(jsonFile.replace(".scad",".json").toStdString());
|
||||
setComboBoxForSet();
|
||||
this->jsonFile=jsonFile.replace(".scad",".json").toStdString();
|
||||
getParameterSet(this->jsonFile);
|
||||
if(myfile.is_open()){
|
||||
connect(addButton,SIGNAL(clicked()),this,SLOT(onSetAdd()));
|
||||
connect(deleteButton,SIGNAL(clicked()),this,SLOT(onSetDelete()));
|
||||
setComboBoxForSet();
|
||||
}
|
||||
}
|
||||
|
||||
ParameterWidget::~ParameterWidget()
|
||||
|
|
@ -69,7 +96,6 @@ void ParameterWidget::setComboBoxForSet(){
|
|||
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)));
|
||||
}
|
||||
|
||||
|
|
@ -242,7 +268,6 @@ void ParameterWidget::applyParameterSet(string setName){
|
|||
Parameterset::iterator set=parameterSet.find(setName);
|
||||
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>());
|
||||
|
|
@ -256,10 +281,32 @@ void ParameterWidget::applyParameterSet(string setName){
|
|||
entry->second->value=ValuePtr(v.second.data());
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (std::exception const& e){
|
||||
std::cerr << e.what() << std::endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ParameterWidget::updateParameterSet(string setName){
|
||||
|
||||
if(setName==""){
|
||||
QInputDialog *a=new QInputDialog();
|
||||
a->setLabelText("Name of new set");
|
||||
setName=a->getText(NULL,"Create new Set of parameter","Enter name of set name").toStdString();
|
||||
if(setName.empty()){
|
||||
return;
|
||||
}
|
||||
if(this->comboBox->findText(QString::fromStdString(setName))==-1){
|
||||
this->comboBox->addItem(QString::fromStdString(setName),
|
||||
QVariant(QString::fromStdString(setName)));
|
||||
}
|
||||
}
|
||||
pt::ptree iroot;
|
||||
for(entry_map_t::iterator it = entries.begin(); it != entries.end(); it++) {
|
||||
iroot.put(it->first,it->second->value->toString());
|
||||
}
|
||||
root.get_child("SET").erase(setName);
|
||||
root.add_child("SET."+setName,iroot);
|
||||
std::fstream myfile;
|
||||
myfile.open (this->jsonFile,ios::out);
|
||||
pt::write_json(myfile,root);
|
||||
myfile.close();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ private:
|
|||
QTimer autoPreviewTimer;
|
||||
bool descriptionShow;
|
||||
QVBoxLayout * anyLayout;
|
||||
string jsonFile;
|
||||
|
||||
public:
|
||||
ParameterWidget(QWidget *parent = 0);
|
||||
|
|
@ -54,6 +55,8 @@ protected slots:
|
|||
void onPreviewTimerElapsed();
|
||||
void onDescriptionShow();
|
||||
void onSetChanged(int idx);
|
||||
void onSetAdd();
|
||||
void onSetDelete();
|
||||
|
||||
|
||||
signals:
|
||||
|
|
@ -65,6 +68,7 @@ protected:
|
|||
void addEntry(class ParameterVirtualWidget *entry);
|
||||
void end();
|
||||
void setComboBoxForSet();
|
||||
void applyParameterSet(string setName);
|
||||
void applyParameterSet(string setName);
|
||||
void updateParameterSet(string setName);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<widget class="QPushButton" name="pushButton">
|
||||
<widget class="QPushButton" name="addButton">
|
||||
<property name="text">
|
||||
<string>+</string>
|
||||
</property>
|
||||
|
|
@ -83,7 +83,7 @@
|
|||
</widget>
|
||||
</item>
|
||||
<item row="6" column="2">
|
||||
<widget class="QPushButton" name="pushButton_2">
|
||||
<widget class="QPushButton" name="deleteButton">
|
||||
<property name="text">
|
||||
<string>-</string>
|
||||
</property>
|
||||
|
|
|
|||
|
|
@ -4,16 +4,24 @@
|
|||
ParameterSet::ParameterSet()
|
||||
{
|
||||
}
|
||||
ParameterSet::~ParameterSet()
|
||||
{
|
||||
myfile.close();
|
||||
}
|
||||
|
||||
void ParameterSet::getParameterSet(string filename){
|
||||
|
||||
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);
|
||||
try{
|
||||
pt::read_json(myfile, this->root);
|
||||
}
|
||||
catch (std::exception const& e){
|
||||
|
||||
std::cerr << e.what() << std::endl;
|
||||
}
|
||||
}
|
||||
myfile.close();
|
||||
}
|
||||
|
||||
void ParameterSet::applyParameterSet(FileModule *fileModule,string setName)
|
||||
|
|
|
|||
|
|
@ -18,14 +18,15 @@ class ParameterSet
|
|||
|
||||
protected:
|
||||
pt::ptree root;
|
||||
typedef map<string,string >SetOfParameter;
|
||||
fstream myfile;
|
||||
typedef map<string,pt::ptree::value_type> Parameterset;
|
||||
Parameterset parameterSet;
|
||||
|
||||
public:
|
||||
ParameterSet();
|
||||
void getParameterSet(string filename);
|
||||
void applyParameterSet(FileModule *fileModule,string setName);
|
||||
ParameterSet();
|
||||
~ParameterSet();
|
||||
void getParameterSet(string filename);
|
||||
void applyParameterSet(FileModule *fileModule,string setName);
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue