diff --git a/sources/autoNum/ui/autonumberingmanagementw.cpp b/sources/autoNum/ui/autonumberingmanagementw.cpp index 11d0bbd2d..f247a1b3f 100644 --- a/sources/autoNum/ui/autonumberingmanagementw.cpp +++ b/sources/autoNum/ui/autonumberingmanagementw.cpp @@ -41,7 +41,7 @@ AutoNumberingManagementW::AutoNumberingManagementW(QETProject *project, QWidget ui->m_selected_folios_widget->setDisabled(true); ui->m_selected_folios_le->setDisabled(true); ui->m_selected_folios_le->setReadOnly(true); - applyEnable(false); + ui->m_apply_project_rb->setChecked(true); setProjectContext(); } diff --git a/sources/diagram.cpp b/sources/diagram.cpp index b53dc64bc..14cd063d0 100644 --- a/sources/diagram.cpp +++ b/sources/diagram.cpp @@ -60,7 +60,7 @@ Diagram::Diagram(QETProject *project) : draw_terminals_ (true), draw_colored_conductors_ (true), m_event_interface (nullptr), - m_freeze_new_elements_ (false), + m_freeze_new_elements (false), m_freeze_new_conductors_ (false) { setProject(project); @@ -477,7 +477,7 @@ QDomDocument Diagram::toXml(bool whole_content) { } //Default New Element - racine.setAttribute("freezeNewElement", m_freeze_new_elements_ ? "true" : "false"); + racine.setAttribute("freezeNewElement", m_freeze_new_elements ? "true" : "false"); //Default New Conductor racine.setAttribute("freezeNewConductor", m_freeze_new_conductors_ ? "true" : "false"); @@ -726,7 +726,7 @@ bool Diagram::fromXml(QDomElement &document, QPointF position, bool consider_inf m_conductors_autonum_name = root.attribute("conductorAutonum"); // Load Freeze New Element - m_freeze_new_elements_ = root.attribute("freezeNewElement").toInt(); + m_freeze_new_elements = root.attribute("freezeNewElement").toInt(); // Load Freeze New Conductor m_freeze_new_conductors_ = root.attribute("freezeNewConductor").toInt(); @@ -1453,9 +1453,9 @@ bool Diagram::usesTitleBlockTemplate(const QString &name) { * @brief Diagram::freezeElements * Freeze every existent element label. */ -void Diagram::freezeElements() { +void Diagram::freezeElements(bool freeze) { foreach (Element *elmt, elements()) { - elmt->freezeLabel(); + elmt->freezeLabel(freeze); } } @@ -1465,7 +1465,7 @@ void Diagram::freezeElements() { */ void Diagram::unfreezeElements() { foreach (Element *elmt, elements()) { - elmt->unfreezeLabel(); + elmt->freezeLabel(false); } } @@ -1474,7 +1474,7 @@ void Diagram::unfreezeElements() { * Set new element label to be frozen. */ void Diagram::setFreezeNewElements(bool b) { - m_freeze_new_elements_ = b; + m_freeze_new_elements = b; } /** @@ -1482,7 +1482,7 @@ void Diagram::setFreezeNewElements(bool b) { * @return current freeze new element status . */ bool Diagram::freezeNewElements() { - return m_freeze_new_elements_; + return m_freeze_new_elements; } /** diff --git a/sources/diagram.h b/sources/diagram.h index a81104ad4..c37d32218 100644 --- a/sources/diagram.h +++ b/sources/diagram.h @@ -112,7 +112,7 @@ class Diagram : public QGraphicsScene QString m_conductors_autonum_name; DiagramEventInterface *m_event_interface; - bool m_freeze_new_elements_; + bool m_freeze_new_elements; bool m_freeze_new_conductors_; // METHODS @@ -217,7 +217,7 @@ class Diagram : public QGraphicsScene QGIManager &qgiManager(); //methods related to element label Update Policy - void freezeElements(); + void freezeElements(bool freeze); void unfreezeElements(); void setFreezeNewElements(bool); bool freezeNewElements(); diff --git a/sources/projectconfigpages.cpp b/sources/projectconfigpages.cpp index 6bbeca1e8..5dcd28f46 100644 --- a/sources/projectconfigpages.cpp +++ b/sources/projectconfigpages.cpp @@ -653,29 +653,29 @@ void ProjectAutoNumConfigPage::applyManagement() { //Allow Both Existent and New Elements if (m_amw->ui->m_both_element_rb->isChecked()) { //Unfreeze Existent and New Elements - project()->unfreezeExistentElementLabel(from,to); - project()->unfreezeNewElementLabel(from,to); + project()->freezeExistentElementLabel(false, from,to); + project()->freezeNewElementLabel(false, from,to); project()->setFreezeNewElements(false); } //Allow Only New else if (m_amw->ui->m_new_element_rb->isChecked()) { //Freeze Existent and Unfreeze New Elements - project()->freezeExistentElementLabel(from,to); - project()->unfreezeNewElementLabel(from,to); + project()->freezeExistentElementLabel(true, from,to); + project()->freezeNewElementLabel(false, from,to); project()->setFreezeNewElements(false); } //Allow Only Existent else if (m_amw->ui->m_existent_element_rb->isChecked()) { //Freeze New and Unfreeze Existent Elements, Set Freeze Element Project Wide - project()->unfreezeExistentElementLabel(from,to); - project()->freezeNewElementLabel(from,to); + project()->freezeExistentElementLabel(false, from,to); + project()->freezeNewElementLabel(true, from,to); project()->setFreezeNewElements(true); } //Disable else if (m_amw->ui->m_disable_element_rb->isChecked()) { //Freeze Existent and New Elements, Set Freeze Element Project Wide - project()->freezeExistentElementLabel(from,to); - project()->freezeNewElementLabel(from,to); + project()->freezeExistentElementLabel(true, from,to); + project()->freezeNewElementLabel(true, from,to); project()->setFreezeNewElements(true); } diff --git a/sources/qetgraphicsitem/element.cpp b/sources/qetgraphicsitem/element.cpp index 6721ec657..0d8df6983 100644 --- a/sources/qetgraphicsitem/element.cpp +++ b/sources/qetgraphicsitem/element.cpp @@ -462,6 +462,9 @@ bool Element::fromXml(QDomElement &e, QHash &table_id_adr, bool //load prefix m_prefix = e.attribute("prefix"); + QString fl = e.attribute("freezeLabel", "false"); + m_freeze_label = fl == "false"? false : true; + //Load Sequential Values if (e.hasAttribute("sequ_1") || e.hasAttribute("sequf_1") || e.hasAttribute("seqt_1") || e.hasAttribute("seqtf_1") || e.hasAttribute("seqh_1") || e.hasAttribute("sequf_1")) ElementXmlRetroCompatibility::loadSequential(e, this); @@ -519,6 +522,9 @@ QDomElement Element::toXml(QDomDocument &document, QHash &table // prefix element.setAttribute("prefix", m_prefix); + //frozen label + element.setAttribute("freezeLabel", m_freeze_label? "true" : "false"); + // sequential num QDomElement seq = m_autoNum_seq.toXml(document); if (seq.hasChildNodes()) @@ -836,35 +842,17 @@ void Element::setPrefix(QString prefix) { * @brief Element::freezeLabel * Freeze this element label */ -void Element::freezeLabel() +void Element::freezeLabel(bool freeze) { - DiagramContext &dc = this->rElementInformations(); - QString freezelabel = dc["label"].toString(); - QString label = autonum::AssignVariables::formulaToLabel(freezelabel, m_autoNum_seq, diagram(),this ); - - if (!(label == freezelabel)) + if (m_freeze_label != freeze) { - dc.addValue("frozenlabel", freezelabel); - dc.addValue("label",label); - this->setTaggedText("label", label); - this->setElementInformations(dc); - } -} + m_freeze_label = freeze; + QString f = m_element_informations["formula"].toString(); + setUpConnectionForFormula(f,f); -/** - * @brief Element::unfreezeLabel - * Unfreeze this element label - */ -void Element::unfreezeLabel() -{ - DiagramContext &dc = this->rElementInformations(); - QString frozenlabel = dc["frozenlabel"].toString(); - if (frozenlabel == "") return; - dc.addValue("frozenlabel", ""); - dc.addValue("label",frozenlabel); - frozenlabel = autonum::AssignVariables::formulaToLabel(frozenlabel, m_autoNum_seq, diagram(),this ); - this->setTaggedText("label", frozenlabel); - this->setElementInformations(dc); + if (m_freeze_label == true) + updateLabel(); + } } /** @@ -873,7 +861,7 @@ void Element::unfreezeLabel() */ void Element::freezeNewAddedElement() { if (this->diagram()->freezeNewElements() || this->diagram()->project()->freezeNewElements()) { - freezeLabel(); + freezeLabel(true); } else return; } @@ -893,6 +881,10 @@ void Element::setUpConnectionForFormula(QString old_formula, QString new_formula if (old_formula.contains("%c")) disconnect(this, &Element::xChanged, this, &Element::updateLabel); + //Label is frozen, so we don't update it. + if (m_freeze_label == true) + return; + if (diagram() && (new_formula.contains("%f") || new_formula.contains("%id"))) connect(diagram()->project(), &QETProject::projectDiagramsOrderChanged, this, &Element::updateLabel); if (new_formula.contains("%l")) diff --git a/sources/qetgraphicsitem/element.h b/sources/qetgraphicsitem/element.h index 088c08e1f..b2fcddd7e 100644 --- a/sources/qetgraphicsitem/element.h +++ b/sources/qetgraphicsitem/element.h @@ -144,8 +144,7 @@ class Element : public QetGraphicsItem void setUpFormula(bool code_letter = true); void setPrefix(QString); QString getPrefix() const; - void freezeLabel(); - void unfreezeLabel(); + void freezeLabel(bool freeze); void freezeNewAddedElement(); protected: @@ -155,6 +154,7 @@ class Element : public QetGraphicsItem protected: DiagramContext m_element_informations, kind_informations_; autonum::sequentialNumbers m_autoNum_seq; + bool m_freeze_label = false; /** Draw this element diff --git a/sources/qetproject.cpp b/sources/qetproject.cpp index c0c58a32e..73080f326 100644 --- a/sources/qetproject.cpp +++ b/sources/qetproject.cpp @@ -660,21 +660,9 @@ void QETProject::setFreezeNewConductors(bool set) { * @param from - first folio index to apply freeze * @param to - last folio index to apply freeze */ -void QETProject::freezeExistentElementLabel(int from, int to) { +void QETProject::freezeExistentElementLabel(bool freeze, int from, int to) { for (int i = from; i <= to; i++) { - diagrams_.at(i)->freezeElements(); - } -} - -/** - * @brief QETProject::unfreezeExistentElementLabel - * Unfreeze Existent Elements in the selected folios - * @param from - first folio index to apply unfreeze - * @param to - last folio index to apply unfreeze - */ -void QETProject::unfreezeExistentElementLabel(int from, int to) { - for (int i = from; i <= to; i++) { - diagrams_.at(i)->unfreezeElements(); + diagrams_.at(i)->freezeElements(freeze); } } @@ -684,21 +672,9 @@ void QETProject::unfreezeExistentElementLabel(int from, int to) { * @param from - first folio index to apply freeze * @param to - last folio index to apply freeze */ -void QETProject::freezeNewElementLabel(int from, int to) { +void QETProject::freezeNewElementLabel(bool freeze, int from, int to) { for (int i = from; i <= to; i++) { - diagrams_.at(i)->setFreezeNewElements(true); - } -} - -/** - * @brief QETProject::unfreezeNewElementLabel - * Unfreeze New Elements in the selected folios - * @param from - first folio index to apply unfreeze - * @param to - last folio index to apply unfreeze - */ -void QETProject::unfreezeNewElementLabel(int from, int to) { - for (int i = from; i <= to; i++) { - diagrams_.at(i)->setFreezeNewElements(false); + diagrams_.at(i)->setFreezeNewElements(freeze); } } diff --git a/sources/qetproject.h b/sources/qetproject.h index 9e6b6f028..e298240d7 100644 --- a/sources/qetproject.h +++ b/sources/qetproject.h @@ -128,15 +128,13 @@ class QETProject : public QObject QString elementCurrentAutoNum() const; void setCurrrentElementAutonum(QString autoNum); - //Element - void freezeExistentElementLabel(int,int); - void freezeNewElementLabel(int,int); - void unfreezeExistentElementLabel(int,int); - void unfreezeNewElementLabel(int,int); + //Element + void freezeExistentElementLabel(bool freeze, int from, int to); + void freezeNewElementLabel(bool freeze, int from, int to); bool freezeNewElements(); void setFreezeNewElements(bool); - //Conductor + //Conductor void freezeExistentConductorLabel(int,int); void unfreezeExistentConductorLabel(int,int); void freezeNewConductorLabel(int,int);