feature to add,update,delete set of parameter

This commit is contained in:
amarjeetkapoor1 2016-07-17 22:47:35 +05:30
parent 04ab645841
commit 5c74c591c4
6 changed files with 81 additions and 21 deletions

View file

@ -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 \

View file

@ -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();
}

View file

@ -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);
};

View file

@ -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>

View file

@ -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)

View file

@ -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);
};