diff --git a/sources/nomenclature.cpp b/sources/nomenclature.cpp index d466d18c9..27c1546eb 100644 --- a/sources/nomenclature.cpp +++ b/sources/nomenclature.cpp @@ -18,6 +18,7 @@ #include #include "nomenclature.h" +#include "elementprovider.h" #define PR(x) qDebug() << #x " = " << x; /** @@ -29,10 +30,8 @@ nomenclature::nomenclature(QETProject *project, QWidget *parent): m_project(project) { m_parent = parent; - if(!m_project->isEmpty()){ - //get list of schema present in project - m_list_diagram = m_project -> diagrams(); - } + //get list of schema present in project + m_list_diagram = m_project -> diagrams(); } /** @@ -46,21 +45,11 @@ nomenclature::~nomenclature() { @param true if success */ bool nomenclature::saveToCSVFile() { - if(m_list_diagram.isEmpty()) return false; - - //Process... - QString data = tr("NOMENCLATURE : ") + m_project -> title() + "\n\n"; - data += tr("Folio") +";"+ tr("Sch\351ma") +";"+ tr("D\351signation")+";"+ tr("Label") +";"+ tr("Commententaire") +";"+ tr("Fabriquant") +";"+ tr("Reference") +";"+ tr("Machine-reference\n"); - QStringList rows; - for(int i=0; i title()); + if (!name.endsWith(".csv")) { + name += ".csv"; + } QString filename = QFileDialog::getSaveFileName(this->m_parent, tr("Enregister sous... "), name, tr("Fichiers csv (*.csv)")); QFile file(filename); if( !filename.isEmpty() ) { @@ -75,7 +64,7 @@ bool nomenclature::saveToCSVFile() { } if (file.open(QIODevice::WriteOnly | QIODevice::Text)){ QTextStream stream(&file); - stream << data << endl; + stream << getNomenclature() << endl; } else return false; } @@ -85,27 +74,51 @@ bool nomenclature::saveToCSVFile() { } /** - gets rows of nomenclature - @return the list of rows -*/ -QStringList nomenclature::getRows(Diagram *schema) { - QString row; - QStringList list; - QList elements_list; + * @brief nomenclature::getNomenclature + * Create and formated a nomenclature to csv file. + * @return The QString of nomenclature + */ +QString nomenclature::getNomenclature() { + //Process... + QString data = tr("NOMENCLATURE : ") + m_project -> title() + "\n\n"; + data += tr("Folio") +";"+ tr("Sch\351ma") +";"+ tr("D\351signation")+";"+ tr("Label") +";"+ tr("Commententaire") +";"+ tr("Fabriquant") +";"+ tr("Reference") +";"+ tr("Machine-reference\n"); - //elements_list = schema->customElements(); - elements_list = schema->content().elements.toList(); - for(int j=0;jfolioIndex()+1) + ";"; - row += schema->title() + ";"; - row += elements_list.at(j)->name() + ";"; - row += elements_list.at(j)->elementInformations()["label"].toString() + ";"; - row += elements_list.at(j)->elementInformations()["comment"].toString() + ";"; - row += elements_list.at(j)->elementInformations()["manufacturer"].toString() + ";"; - row += elements_list.at(j)->elementInformations()["manufacturer-reference"].toString() + ";"; - row += elements_list.at(j)->elementInformations()["machine-manufacturer-reference"].toString() + "\n"; - list << row; + if(m_list_diagram.isEmpty()) return data; + + foreach (Diagram *d, m_list_diagram) { + //Get only simple, master and unlinked slave element. + ElementProvider ep(d); + QList list_elements; + list_elements << ep.find(Element::Simple | Element::Master); + list_elements << ep.freeElement(Element::Slave); + + foreach (Element *elmt, list_elements) { + data += getElementInfo(elmt); + } } - return list; + + return data; } +/** + * @brief nomenclature::getElementInfo + * @param elmt : the element to getinfo + * @return : QString with information about element formated to csv file + */ +QString nomenclature::getElementInfo(const Element *elmt) { + QString info; + + Diagram *diagram = elmt -> diagram(); + DiagramContext elmt_info = elmt -> elementInformations(); + + info += QString::number(diagram -> folioIndex()+1) + ";"; + info += diagram -> title() + ";"; + info += elmt -> name() + ";"; + info += elmt_info["label"].toString() + ";"; + info += elmt_info["comment"].toString() + ";"; + info += elmt_info["manufacturer"].toString() + ";"; + info += elmt_info["manufacturer-reference"].toString() + ";"; + info += elmt_info["machine-manufacturer-reference"].toString() + "\n"; + + return info; +} diff --git a/sources/nomenclature.h b/sources/nomenclature.h index c51a7367e..c23cb3a83 100644 --- a/sources/nomenclature.h +++ b/sources/nomenclature.h @@ -45,7 +45,7 @@ class nomenclature : public QObject { // constructors, destructor public: - nomenclature(QETProject *project =0, QWidget *parent =0); + nomenclature(QETProject *project, QWidget *parent =0); virtual ~nomenclature(); // attributes @@ -57,7 +57,8 @@ class nomenclature : public QObject { private: - QStringList getRows(Diagram *schema); + QString getNomenclature (); + QString getElementInfo (const Element *elmt); }; diff --git a/sources/qetdiagrameditor.cpp b/sources/qetdiagrameditor.cpp index 737f02d51..f457be44c 100644 --- a/sources/qetdiagrameditor.cpp +++ b/sources/qetdiagrameditor.cpp @@ -1806,10 +1806,8 @@ void QETDiagramEditor::cleanCurrentProject() { */ void QETDiagramEditor::nomenclatureProject() { //TODO: Test nomenclature CYRIL F. - nomenclature *nomencl= new nomenclature(currentProject()->project() ,this); - nomencl->saveToCSVFile(); - - delete nomencl; + nomenclature nomencl(currentProject()->project() ,this); + nomencl.saveToCSVFile(); } /**