[qet] qet/qet: [4814] Modifie the text item of a conductor directly on a diagram also change the value of formula and label of the conductor property. |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/qet Archives
]
- To: qet@xxxxxxxxxxxxxxxxxxx
- Subject: [qet] qet/qet: [4814] Modifie the text item of a conductor directly on a diagram also change the value of formula and label of the conductor property.
- From: subversion@xxxxxxxxxxxxx
- Date: Mon, 19 Dec 2016 16:57:21 +0100
Revision: 4814
Author: blacksun
Date: 2016-12-19 16:57:20 +0100 (Mon, 19 Dec 2016)
Log Message:
-----------
Modifie the text item of a conductor directly on a diagram also change the value of formula and label of the conductor property.
The change is apply for every conductors in the same potential
Modified Paths:
--------------
trunk/sources/autoNum/assignvariables.cpp
trunk/sources/autoNum/assignvariables.h
trunk/sources/conductorautonumerotation.cpp
trunk/sources/diagram.cpp
trunk/sources/qetgraphicsitem/conductor.cpp
trunk/sources/qetgraphicsitem/conductor.h
trunk/sources/qetgraphicsitem/terminal.cpp
trunk/sources/ui/potentialselectordialog.cpp
trunk/sources/ui/potentialselectordialog.h
Modified: trunk/sources/autoNum/assignvariables.cpp
===================================================================
--- trunk/sources/autoNum/assignvariables.cpp 2016-12-19 01:14:36 UTC (rev 4813)
+++ trunk/sources/autoNum/assignvariables.cpp 2016-12-19 15:57:20 UTC (rev 4814)
@@ -27,7 +27,6 @@
namespace autonum
{
-
/**
* @brief sequentialNumbers::sequentialNumbers
*/
@@ -34,6 +33,18 @@
sequentialNumbers::sequentialNumbers()
{}
+ sequentialNumbers::sequentialNumbers(const sequentialNumbers &other)
+ {
+ unit = other.unit;
+ unit_folio = other.unit_folio;
+ ten = other.ten;
+ ten_folio = other.ten_folio;
+ hundred = other.hundred;
+ hundred_folio = other.hundred_folio;
+ }
+
+ sequentialNumbers::~sequentialNumbers() {}
+
sequentialNumbers &sequentialNumbers::operator=(const sequentialNumbers &other)
{
if (&other == this || other == *this)
@@ -216,22 +227,22 @@
for (int i=1; i<=max ; i++)
{
- if (m_assigned_label.contains("%sequ_" + QString::number(i)) && !m_seq_struct.unit.isEmpty()) {
+ if (m_assigned_label.contains("%sequ_" + QString::number(i)) && m_seq_struct.unit.size() >= i) {
m_assigned_label.replace("%sequ_" + QString::number(i),m_seq_struct.unit.at(i-1));
}
- if (m_assigned_label.contains("%seqt_" + QString::number(i)) && !m_seq_struct.ten.isEmpty()) {
+ if (m_assigned_label.contains("%seqt_" + QString::number(i)) && m_seq_struct.ten.size() >= i) {
m_assigned_label.replace("%seqt_" + QString::number(i),m_seq_struct.ten.at(i-1));
}
- if (m_assigned_label.contains("%seqh_" + QString::number(i)) && !m_seq_struct.hundred.isEmpty()) {
+ if (m_assigned_label.contains("%seqh_" + QString::number(i)) && m_seq_struct.hundred.size() >= i) {
m_assigned_label.replace("%seqh_" + QString::number(i),m_seq_struct.hundred.at(i-1));
}
- if (m_assigned_label.contains("%sequf_" + QString::number(i)) && !m_seq_struct.unit_folio.isEmpty()) {
+ if (m_assigned_label.contains("%sequf_" + QString::number(i)) && m_seq_struct.unit_folio.size() >= i) {
m_assigned_label.replace("%sequf_" + QString::number(i),m_seq_struct.unit_folio.at(i-1));
}
- if (m_assigned_label.contains("%seqtf_" + QString::number(i)) && !m_seq_struct.ten_folio.isEmpty()) {
+ if (m_assigned_label.contains("%seqtf_" + QString::number(i)) && m_seq_struct.ten_folio.size() >= i) {
m_assigned_label.replace("%seqtf_" + QString::number(i),m_seq_struct.ten_folio.at(i-1));
}
- if (m_assigned_label.contains("%seqhf_" + QString::number(i)) && !m_seq_struct.hundred_folio.isEmpty()) {
+ if (m_assigned_label.contains("%seqhf_" + QString::number(i)) && m_seq_struct.hundred_folio.size() >= i) {
m_assigned_label.replace("%seqhf_" + QString::number(i),m_seq_struct.hundred_folio.at(i-1));
}
}
Modified: trunk/sources/autoNum/assignvariables.h
===================================================================
--- trunk/sources/autoNum/assignvariables.h 2016-12-19 01:14:36 UTC (rev 4813)
+++ trunk/sources/autoNum/assignvariables.h 2016-12-19 15:57:20 UTC (rev 4814)
@@ -34,6 +34,8 @@
{
public:
sequentialNumbers();
+ sequentialNumbers(const sequentialNumbers &other);
+ ~sequentialNumbers();
sequentialNumbers &operator= (const sequentialNumbers &other);
bool operator== (const sequentialNumbers &other) const;
@@ -80,4 +82,6 @@
QString elementPrefixForLocation(const ElementsLocation &location);
}
+Q_DECLARE_METATYPE(autonum::sequentialNumbers)
+
#endif // ASSIGNVARIABLES_H
Modified: trunk/sources/conductorautonumerotation.cpp
===================================================================
--- trunk/sources/conductorautonumerotation.cpp 2016-12-19 01:14:36 UTC (rev 4813)
+++ trunk/sources/conductorautonumerotation.cpp 2016-12-19 15:57:20 UTC (rev 4814)
@@ -121,9 +121,8 @@
ConductorProperties cp = m_conductor -> properties();
cp.text = text_list.first();
cp.m_formula = formula_list.first();
+ m_conductor->rSequenceNum() = conductor_list.first()->sequenceNum();
m_conductor->setProperties(cp);
- m_conductor->rSequenceNum() = conductor_list.first()->sequenceNum();
- m_conductor->setText(text_list.first());
}
//the texts isn't identicals
else
Modified: trunk/sources/diagram.cpp
===================================================================
--- trunk/sources/diagram.cpp 2016-12-19 01:14:36 UTC (rev 4813)
+++ trunk/sources/diagram.cpp 2016-12-19 15:57:20 UTC (rev 4814)
@@ -1158,8 +1158,7 @@
elmt->updateLabel();
}
foreach (Conductor *cnd, content().conductors()) {
- if (cnd->properties().text.contains("%F"))
- cnd->setText(cnd->properties().text);
+ cnd->refreshText();
}
}
Modified: trunk/sources/qetgraphicsitem/conductor.cpp
===================================================================
--- trunk/sources/qetgraphicsitem/conductor.cpp 2016-12-19 01:14:36 UTC (rev 4813)
+++ trunk/sources/qetgraphicsitem/conductor.cpp 2016-12-19 15:57:20 UTC (rev 4814)
@@ -79,7 +79,7 @@
terminal2(p2),
m_mouse_over(false),
m_handler(10),
- text_item(0),
+ m_text_item(0),
segments(NULL),
moving_segment(false),
modified_path(false),
@@ -127,8 +127,8 @@
setAcceptHoverEvents(true);
// Add the text field
- text_item = new ConductorTextItem(m_properties.text, this);
- connect(text_item, &ConductorTextItem::diagramTextChanged, this, &Conductor::displayedTextChanged);
+ m_text_item = new ConductorTextItem(m_properties.text, this);
+ connect(m_text_item, &ConductorTextItem::diagramTextChanged, this, &Conductor::displayedTextChanged);
}
/**
@@ -543,7 +543,7 @@
@return le champ de texte associe a ce conducteur
*/
ConductorTextItem *Conductor::textItem() const {
- return(text_item);
+ return(m_text_item);
}
/**
@@ -597,7 +597,7 @@
{
moving_segment = true;
moved_segment = segmentsList().at(index+1);
- before_mov_text_pos_ = text_item -> pos();
+ before_mov_text_pos_ = m_text_item -> pos();
}
}
@@ -855,7 +855,7 @@
bool return_ = pathFromXml(dom_element);
- text_item -> fromXml(dom_element);
+ m_text_item -> fromXml(dom_element);
ConductorProperties pr;
pr.fromXml(dom_element);
@@ -909,7 +909,7 @@
// Export the properties and text
m_properties. toXml(dom_element);
- text_item -> toXml(dom_element);
+ m_text_item -> toXml(dom_element);
return(dom_element);
}
@@ -1130,7 +1130,7 @@
* If text was moved by user, this function do nothing, except check if text is near conductor.
*/
void Conductor::calculateTextItemPosition() {
- if (!text_item || !diagram() || m_properties.type != ConductorProperties::Multi) return;
+ if (!m_text_item || !diagram() || m_properties.type != ConductorProperties::Multi) return;
if (diagram() -> defaultConductorProperties.m_one_text_per_folio == true &&
relatedPotentialConductors(false).size() > 0) {
@@ -1149,17 +1149,17 @@
c -> textItem() -> setVisible(false);
}
//Make sure text item is visible
- text_item -> setVisible(true);
+ m_text_item -> setVisible(true);
}
//position
- if (text_item -> wasMovedByUser()) {
+ if (m_text_item -> wasMovedByUser()) {
//Text field was moved by user :
//we check if text field is yet near the conductor
- QPointF text_item_pos = text_item -> pos();
+ QPointF text_item_pos = m_text_item -> pos();
QPainterPath near_shape = nearShape();
if (!near_shape.contains(text_item_pos)) {
- text_item -> setPos(movePointIntoPolygon(text_item_pos, near_shape));
+ m_text_item -> setPos(movePointIntoPolygon(text_item_pos, near_shape));
}
} else {
//Position and rotation of text is calculated.
@@ -1166,20 +1166,20 @@
Qt::Orientations rotation;
QPointF text_pos = posForText(rotation);
- if (!text_item -> wasRotateByUser()) {
- rotation == Qt::Vertical ? text_item -> setRotationAngle(m_properties.verti_rotate_text):
- text_item -> setRotationAngle(m_properties.horiz_rotate_text);
+ if (!m_text_item -> wasRotateByUser()) {
+ rotation == Qt::Vertical ? m_text_item -> setRotationAngle(m_properties.verti_rotate_text):
+ m_text_item -> setRotationAngle(m_properties.horiz_rotate_text);
}
//Adjust the position of text if his rotation
//is 0° or 270°, to be exactly centered to the conductor
- if (text_item -> rotation() == 0)
- text_pos.rx() -= text_item -> boundingRect().width()/2;
- else if (text_item -> rotation() == 270)
- text_pos.ry() += text_item -> boundingRect().width()/2;
+ if (m_text_item -> rotation() == 0)
+ text_pos.rx() -= m_text_item -> boundingRect().width()/2;
+ else if (m_text_item -> rotation() == 270)
+ text_pos.ry() += m_text_item -> boundingRect().width()/2;
//Finaly set the position of text
- text_item -> setPos(text_pos);
+ m_text_item -> setPos(text_pos);
}
}
@@ -1199,7 +1199,7 @@
conductor_profiles[current_path_type],
current_path_type
);
- undo_object -> setConductorTextItemMove(before_mov_text_pos_, text_item -> pos());
+ undo_object -> setConductorTextItemMove(before_mov_text_pos_, m_text_item -> pos());
dia -> undoStack().push(undo_object);
}
}
@@ -1248,61 +1248,81 @@
return(conductor_profiles[path_type]);
}
-/// @return le texte du conducteur
-QString Conductor::text() const {
- QString label = text_item->toPlainText();
- return(label);
-}
-
/**
- * @brief Conductor::setText
- * The text of this conductor
- * @param t
+ * @brief Conductor::refreshText
+ * Refresh the text of this conductor.
+ * recalcule and set the text according to the formula.
*/
-void Conductor::setText(const QString &t)
+void Conductor::refreshText()
{
- text_item->setPlainText(t);
+ if (!m_freeze_label && diagram())
+ {
+ QString text = autonum::AssignVariables::formulaToLabel(m_properties.m_formula, m_autoNum_seq, diagram());
+ m_properties.text = text;
+ m_text_item->setPlainText(text);
+ }
}
/**
- * @brief Conductor::refreshText
- * Refresh the text of this conductor.
- * recalcule and set the text according to the formula.
+ * @brief Conductor::setPropertiesToPotential
+ * @param properties
+ * @param only_text
+ * Set @propertie to conductor and every conductors in the same potential of @conductor.
+ * If @only_text is true only formula, text, function and tension/protocol is set
+ * to other conductor in the same potential, the other values of property stay unmodified
*/
-void Conductor::refreshText() {
- setText(m_freeze_label? text_item->toPlainText() : properties().text);
+void Conductor::setPropertyToPotential(const ConductorProperties &property, bool only_text)
+{
+ setProperties(property);
+ QSet <Conductor *> potential_list = relatedPotentialConductors();
+
+ foreach(Conductor *other_conductor, potential_list)
+ {
+ if (only_text)
+ {
+ ConductorProperties other_properties = other_conductor->properties();
+ other_properties.m_formula = m_properties.m_formula;
+ other_properties.text = m_properties.text;
+ other_properties.m_function = m_properties.m_function;
+ other_properties.m_tension_protocol = m_properties.m_tension_protocol;
+ other_conductor->setProperties(other_properties);
+ }
+ else
+ {
+ other_conductor->setProperties(property);
+ }
+ }
}
/**
* @brief Conductor::setProperties
- * Set new properties for this conductor
- * Also change the common properties for every conductors at the same potential.
- * (text, function and tension/protocol) other value of properties isn't changed.
+ * Set @property as current property of conductor
* @param properties : properties
*/
-void Conductor::setProperties(const ConductorProperties &properties)
+void Conductor::setProperties(const ConductorProperties &property)
{
- if (m_properties == properties) return;
+ if (m_properties == property) return;
- m_properties = properties;
+ m_properties = property;
- foreach(Conductor *other_conductor, relatedPotentialConductors())
+ if (!m_properties.m_formula.isEmpty())
{
- ConductorProperties other_properties = other_conductor->properties();
- other_properties.text = m_properties.text;
- other_properties.color = m_properties.color;
- other_properties.cond_size = m_properties.cond_size;
- other_properties.m_function = m_properties.m_function;
- other_properties.m_tension_protocol = m_properties.m_tension_protocol;
- other_conductor->setProperties(other_properties);
+ if (diagram()) {
+ QString text = autonum::AssignVariables::formulaToLabel(m_properties.m_formula, m_autoNum_seq, diagram());
+ m_properties.text = text;
+ }
+ else {
+ m_properties.text = m_properties.m_formula;
+ }
}
- setText(m_properties.text);
- text_item -> setFontSize(m_properties.text_size);
+ m_text_item->setPlainText(m_properties.text);
+ m_text_item->setFontSize(m_properties.text_size);
+
if (m_properties.type != ConductorProperties::Multi)
- text_item -> setVisible(false);
+ m_text_item->setVisible(false);
else
- text_item -> setVisible(m_properties.m_show_text);
+ m_text_item->setVisible(m_properties.m_show_text);
calculateTextItemPosition();
update();
@@ -1341,17 +1361,17 @@
*/
void Conductor::displayedTextChanged()
{
- if ((text_item->toPlainText() == autonum::AssignVariables::formulaToLabel(m_properties.text, m_autoNum_seq, diagram())) || !diagram()) return;
-
QVariant old_value, new_value;
old_value.setValue(m_properties);
ConductorProperties new_properties(m_properties);
- new_properties.text = text_item -> toPlainText();
+ new_properties.m_formula = m_text_item->toPlainText();
+ new_properties.text = m_text_item->toPlainText();
new_value.setValue(new_properties);
- QPropertyUndoCommand *undo = new QPropertyUndoCommand(this, "properties", old_value, new_value);
- undo->setText(tr("Modifier les propriétés d'un conducteur", "undo caption"));
+ QUndoCommand *undo = new QUndoCommand(tr("Modifier les propriétés d'un conducteur", "undo caption"));
+ new QPropertyUndoCommand(this, "properties", old_value, new_value, undo);
+
if (!relatedPotentialConductors().isEmpty())
{
undo->setText(tr("Modifier les propriétés de plusieurs conducteurs", "undo caption"));
@@ -1360,7 +1380,8 @@
{
old_value.setValue(potential_conductor->properties());
ConductorProperties new_properties = potential_conductor->properties();
- new_properties.text = text_item->toPlainText();
+ new_properties.m_formula = m_text_item->toPlainText();
+ new_properties.text = m_text_item->toPlainText();
new_value.setValue(new_properties);
new QPropertyUndoCommand (potential_conductor, "properties", old_value, new_value, undo);
}
@@ -1440,6 +1461,12 @@
ConductorPropertiesDialog::PropertiesDialog(this, diagramEditor());
}
+void Conductor::setSequenceNum(autonum::sequentialNumbers sn)
+{
+ m_autoNum_seq = sn;
+ refreshText();
+}
+
/**
@param a point
@param b point
Modified: trunk/sources/qetgraphicsitem/conductor.h
===================================================================
--- trunk/sources/qetgraphicsitem/conductor.h 2016-12-19 01:14:36 UTC (rev 4813)
+++ trunk/sources/qetgraphicsitem/conductor.h 2016-12-19 15:57:20 UTC (rev 4814)
@@ -45,6 +45,7 @@
Q_PROPERTY(QPointF pos READ pos WRITE setPos)
Q_PROPERTY(int animPath READ fakePath WRITE updatePathAnimate)
Q_PROPERTY(ConductorProperties properties READ properties WRITE setProperties)
+ Q_PROPERTY(autonum::sequentialNumbers sequenceNum READ sequenceNum WRITE setSequenceNum)
signals:
void propertiesChange();
@@ -62,9 +63,7 @@
enum { Type = UserType + 1001 };
enum Highlight { None, Normal, Alert };
- /// First terminal the wire is attached to
Terminal *terminal1;
- /// Second terminal the wire is attached to
Terminal *terminal2;
public:
@@ -89,8 +88,6 @@
qreal length() const;
ConductorSegment *middleSegment();
QPointF posForText(Qt::Orientations &flag);
- QString text() const;
- void setText(const QString &);
void refreshText();
public:
@@ -103,8 +100,11 @@
public:
QVector <QPointF> handlerPoints() const;
const QList<ConductorSegment *> segmentsList() const;
- void setProperties(const ConductorProperties &properties);
+
+ void setPropertyToPotential(const ConductorProperties &property, bool only_text = false);
+ void setProperties(const ConductorProperties &property);
ConductorProperties properties() const;
+
void setProfile(const ConductorProfile &, Qt::Corner);
ConductorProfile profile(Qt::Corner) const;
void setProfiles(const ConductorProfilesGroup &);
@@ -118,6 +118,7 @@
autonum::sequentialNumbers sequenceNum () const {return m_autoNum_seq;}
autonum::sequentialNumbers& rSequenceNum() {return m_autoNum_seq;}
+ void setSequenceNum(autonum::sequentialNumbers sn);
private:
autonum::sequentialNumbers m_autoNum_seq;
@@ -143,7 +144,7 @@
/// Functional properties
ConductorProperties m_properties;
/// Text input for non simple, non-singleline conductors
- ConductorTextItem *text_item;
+ ConductorTextItem *m_text_item;
/// Segments composing the conductor
ConductorSegment *segments;
/// Attributs related to mouse interaction
@@ -159,14 +160,15 @@
/// conductor profile: "photography" of what the conductor is supposed to look
/// like - there is one profile per kind of traject
ConductorProfilesGroup conductor_profiles;
- /// QPen et QBrush objects used to draw conductors
- static QPen conductor_pen;
- static QBrush conductor_brush;
- static bool pen_and_brush_initialized;
/// Define whether and how the conductor should be highlighted
Highlight must_highlight_;
bool m_valid;
bool m_freeze_label = false;
+
+ /// QPen et QBrush objects used to draw conductors
+ static QPen conductor_pen;
+ static QBrush conductor_brush;
+ static bool pen_and_brush_initialized;
private:
void segmentsToPath();
Modified: trunk/sources/qetgraphicsitem/terminal.cpp
===================================================================
--- trunk/sources/qetgraphicsitem/terminal.cpp 2016-12-19 01:14:36 UTC (rev 4813)
+++ trunk/sources/qetgraphicsitem/terminal.cpp 2016-12-19 15:57:20 UTC (rev 4814)
@@ -623,8 +623,7 @@
if (use_properties)
{
Conductor *other = conductors_list.toList().first();
- new_conductor->setText("");
- new_conductor->setText(other->properties().text);
+ new_conductor->setProperties(other->properties());
}
}
Modified: trunk/sources/ui/potentialselectordialog.cpp
===================================================================
--- trunk/sources/ui/potentialselectordialog.cpp 2016-12-19 01:14:36 UTC (rev 4813)
+++ trunk/sources/ui/potentialselectordialog.cpp 2016-12-19 15:57:20 UTC (rev 4814)
@@ -24,6 +24,7 @@
#include "diagram.h"
#include "element.h"
#include "reportelement.h"
+#include "assignvariables.h"
//### BEGIN PRIVATE CLASS ###//
@@ -43,8 +44,8 @@
terminal_1->removeConductor(conductor);
terminal_2->removeConductor(conductor);
- getPotential(terminal_1, m_properties_1, m_conductor_number_1);
- getPotential(terminal_2, m_properties_2, m_conductor_number_2);
+ getPotential(terminal_1, m_properties_1, m_seq_num_1, m_conductor_number_1);
+ getPotential(terminal_2, m_properties_2, m_seq_num_2, m_conductor_number_2);
//There isn't a potential at terminal 1 or 2.
if (m_conductor_number_1 == 0 && m_conductor_number_2 == 0) return;
@@ -64,7 +65,7 @@
* @param properties
* @param number
*/
- void getPotential(Terminal *terminal, ConductorProperties &properties, int &number)
+ void getPotential(Terminal *terminal, ConductorProperties &properties, autonum::sequentialNumbers &seq_num , int &number)
{
Conductor *conductor_in_potential = nullptr;
@@ -99,6 +100,7 @@
if (!conductor_in_potential) return;
properties = conductor_in_potential->properties();
+ seq_num = conductor_in_potential->sequenceNum();
number = conductor_in_potential->relatedPotentialConductors().size()+1; //We add +1 because conductor_in_potential isn't count by relatedPotentialConductors
}
@@ -171,7 +173,7 @@
* Constructor when we link two potentiels together, with a folio report.
* @param report : one of the report used to link the potentials (report must be linked to another report)
* @param parent_undo : undo parent to use
- * @param parent : paren widget
+ * @param parent : parent widget
*/
PotentialSelectorDialog::PotentialSelectorDialog(Element *report, QUndoCommand *parent_undo, QWidget *parent) :
QDialog(parent),
@@ -200,8 +202,22 @@
QRadioButton *rb1 = new QRadioButton(tr("Le potentiel avec numero de fil %1 est présent %2 fois").arg(m_potential_selector->m_properties_1.text).arg(m_potential_selector->m_conductor_number_1), this);
QRadioButton *rb2 = new QRadioButton(tr("Le potentiel avec numero de fil %1 est présent %2 fois").arg(m_potential_selector->m_properties_2.text).arg(m_potential_selector->m_conductor_number_2), this);
- connect(rb1, &QRadioButton::toggled, [this](bool t){if(t) this->m_selected_properties = this->m_potential_selector->m_properties_1;});
- connect(rb2, &QRadioButton::toggled, [this](bool t){if(t) this->m_selected_properties = this->m_potential_selector->m_properties_2;});
+ connect(rb1, &QRadioButton::toggled, [this](bool t)
+ {
+ if(t)
+ {
+ this->m_selected_properties = this->m_potential_selector->m_properties_1;
+ this->m_sequential_num = this->m_potential_selector->m_seq_num_1;
+ }
+ });
+ connect(rb2, &QRadioButton::toggled, [this](bool t)
+ {
+ if(t)
+ {
+ this->m_selected_properties = this->m_potential_selector->m_properties_2;
+ this->m_sequential_num = this->m_potential_selector->m_seq_num_2;
+ }
+ });
//Set the radio button of potential with the bigger number of conductors,
//at first position, and check it
@@ -232,6 +248,7 @@
ConductorProperties new_properties = m_conductor->properties();
new_properties.text = m_selected_properties.text;
+ new_properties.m_formula = m_selected_properties.m_formula;
new_properties.m_function = m_selected_properties.m_function;
new_properties.m_tension_protocol = m_selected_properties.m_tension_protocol;
@@ -239,9 +256,19 @@
old_value.setValue(m_conductor->properties());
new_value.setValue(new_properties);
+
+ QUndoCommand *undo = nullptr;
+ if (m_parent_undo)
+ undo = m_parent_undo;
+ else
+ undo = new QUndoCommand(tr("Modifier les propriétés de plusieurs conducteurs", "undo caption"));
+
//Set the properties for the new conductor
- QPropertyUndoCommand *undo = new QPropertyUndoCommand(m_conductor, "properties", old_value, new_value, m_parent_undo);
- undo->setText(tr("Modifier les propriétés de plusieurs conducteurs", "undo caption"));
+ QVariant old_seq, new_seq;
+ old_seq.setValue(m_conductor->sequenceNum());
+ new_seq.setValue(m_sequential_num);
+ new QPropertyUndoCommand(m_conductor, "sequenceNum", old_seq, new_seq, undo);
+ new QPropertyUndoCommand(m_conductor, "properties", old_value, new_value, undo);
//Set the new properties for each conductors of the new potential
foreach(Conductor *cond, m_conductor->relatedPotentialConductors())
@@ -248,10 +275,13 @@
{
new_properties = cond->properties();
new_properties.text = m_selected_properties.text;
+ new_properties.m_formula = m_selected_properties.m_formula;
new_properties.m_function = m_selected_properties.m_function;
new_properties.m_tension_protocol = m_selected_properties.m_tension_protocol;
old_value.setValue(cond->properties());
new_value.setValue(new_properties);
+ old_seq.setValue(cond->sequenceNum());
+ new QPropertyUndoCommand(cond, "sequenceNum", old_seq, new_seq, undo);
new QPropertyUndoCommand(cond, "properties", old_value, new_value, undo);
}
@@ -263,6 +293,7 @@
else
{
delete undo;
+ m_conductor->setSequenceNum(m_sequential_num);
m_conductor->setProperties(new_properties);
}
}
Modified: trunk/sources/ui/potentialselectordialog.h
===================================================================
--- trunk/sources/ui/potentialselectordialog.h 2016-12-19 01:14:36 UTC (rev 4813)
+++ trunk/sources/ui/potentialselectordialog.h 2016-12-19 15:57:20 UTC (rev 4814)
@@ -20,6 +20,7 @@
#include <QDialog>
#include "conductorproperties.h"
+#include "assignvariables.h"
class Conductor;
class QUndoCommand;
class Element;
@@ -32,6 +33,7 @@
virtual bool isValid() const = 0;
ConductorProperties m_properties_1, m_properties_2;
+ autonum::sequentialNumbers m_seq_num_1, m_seq_num_2;
int m_conductor_number_1, m_conductor_number_2;
};
@@ -72,6 +74,7 @@
Element *m_report;
QUndoCommand *m_parent_undo;
ConductorProperties m_selected_properties;
+ autonum::sequentialNumbers m_sequential_num;
AbstractPotentialSelector *m_potential_selector;
};
#endif // POTENTIALSELECTORDIALOG_H