/* Copyright 2006-2017 The QElectroTech Team This file is part of QElectroTech. QElectroTech is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. QElectroTech is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with QElectroTech. If not, see . */ #include "terminalelement.h" #include "commentitem.h" #include "elementtextitem.h" /** * @brief TerminalElement::TerminalElement * Default constructor * @param location location of xml definition * @param qgi parent QGraphicItem * @param s parent diagram * @param state int used to know if the creation of element have error */ TerminalElement::TerminalElement(const ElementsLocation &location, QGraphicsItem *qgi, int *state) : CustomElement(location, qgi, state), m_comment_item (nullptr), m_location_item (nullptr) { m_link_type = Terminale; connect(this, SIGNAL(elementInfoChange(DiagramContext, DiagramContext)), this, SLOT(updateLabel(DiagramContext, DiagramContext))); connect(this, &Element::updateLabel, [this]() {this->updateLabel(this->elementInformations(), this->elementInformations());}); } TerminalElement::~TerminalElement() { if (m_comment_item) delete m_comment_item; } /** * @brief TerminalElement::initLink * @param project */ void TerminalElement::initLink(QETProject *project) { CustomElement::initLink(project); updateLabel(DiagramContext(), elementInformations()); } /** * @brief SimpleElement::updateLabel * update label of this element */ void TerminalElement::updateLabel(DiagramContext old_info, DiagramContext new_info) { QString old_formula = old_info["formula"].toString(); QString new_formula = new_info["formula"].toString(); setUpConnectionForFormula(old_formula, new_formula); QString label = autonum::AssignVariables::formulaToLabel(new_formula, m_autoNum_seq, diagram(), this); if (label.isEmpty()) { setTaggedText("label", new_info["label"].toString()); } else { bool visible = m_element_informations.contains("label") ? m_element_informations.keyMustShow("label") : true; m_element_informations.addValue("label", label, visible); setTaggedText("label", label); } if (ElementTextItem *eti = taggedText("label")) { new_info["label"].toString().isEmpty() ? eti->setVisible(true) : eti -> setVisible(new_info.keyMustShow("label")); } // //Comment and Location of element // QString comment = new_info["comment"].toString(); // bool must_show = new_info.keyMustShow("comment"); // QString location = new_info["location"].toString(); // bool must_show_location = new_info.keyMustShow("location"); // if ((!(comment.isEmpty() || !must_show) && !m_comment_item)||(!(location.isEmpty() || !must_show_location) && !m_comment_item)) { // m_comment_item = new CommentItem(this); // } // else if (((comment.isEmpty() || !must_show) && m_comment_item) && ((location.isEmpty() || !must_show_location) && m_comment_item)) { // delete m_comment_item; // m_comment_item = nullptr; // } }