[qet] [4172] Conductor properties : Add two value, function and tension/ protocol. |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/qet Archives
]
Revision: 4172
Author: blacksun
Date: 2015-08-29 16:18:30 +0200 (Sat, 29 Aug 2015)
Log Message:
-----------
Conductor properties : Add two value, function and tension/protocol.
Revamp some widget to edit it.
Modified Paths:
--------------
trunk/sources/conductorautonumerotation.cpp
trunk/sources/conductorautonumerotation.h
trunk/sources/conductorproperties.cpp
trunk/sources/conductorproperties.h
trunk/sources/qetgraphicsitem/conductor.cpp
trunk/sources/qetgraphicsitem/conductor.h
trunk/sources/qetgraphicsitem/terminal.cpp
trunk/sources/ui/conductorpropertiesdialog.cpp
trunk/sources/ui/conductorpropertieswidget.cpp
trunk/sources/ui/conductorpropertieswidget.ui
trunk/sources/undocommand/linkelementcommand.cpp
Added Paths:
-----------
trunk/sources/ui/potentialselectordialog.cpp
trunk/sources/ui/potentialselectordialog.h
trunk/sources/ui/potentialselectordialog.ui
Removed Paths:
-------------
trunk/sources/ui/potentialtextsdialog.cpp
trunk/sources/ui/potentialtextsdialog.h
trunk/sources/ui/potentialtextsdialog.ui
Modified: trunk/sources/conductorautonumerotation.cpp
===================================================================
--- trunk/sources/conductorautonumerotation.cpp 2015-08-27 18:52:59 UTC (rev 4171)
+++ trunk/sources/conductorautonumerotation.cpp 2015-08-29 14:18:30 UTC (rev 4172)
@@ -20,9 +20,9 @@
#include "qetdiagrameditor.h"
#include "conductor.h"
#include "diagram.h"
-#include "potentialtextsdialog.h"
#include "qet.h"
#include "QPropertyUndoCommand/qpropertyundocommand.h"
+#include "potentialselectordialog.h"
/**
* @brief ConductorAutoNumerotation::ConductorAutoNumerotation
@@ -52,31 +52,6 @@
}
/**
- * @brief ConductorAutoNumerotation::checkPotential
- * Check if eah texts of this potential is identical.
- * If not, ask user how to numerate
- * @param conductor
- * A conductor of the potential to check.
- */
-void ConductorAutoNumerotation::checkPotential(Conductor *conductor, QUndoCommand *parent) {
- //fill list of potential
- QSet <Conductor *> c_list = conductor->relatedPotentialConductors();
- c_list << conductor;
- //fill list of text
- QStringList strl;
- foreach (const Conductor *c, c_list) strl<<(c->text());
-
- //check text list, isn't same in potential, ask user what to do
- if (!QET::eachStrIsEqual(strl)) {
- PotentialTextsDialog ptd(conductor, conductor->diagramEditor());
- if ( ptd.exec() == QDialog::Accepted ) {
- ConductorAutoNumerotation can(conductor, conductor -> diagram(), parent);
- can.applyText(ptd.selectedText());
- }
- }
-}
-
-/**
* @brief ConductorAutoNumerotation::applyText
* apply the text @t to @conductor_ and all conductors at the same potential
*/
@@ -130,9 +105,8 @@
//the texts isn't identicals
else
{
- PotentialTextsDialog ptd (conductor_, conductor_ -> diagramEditor());
- ptd.exec();
- applyText(ptd.selectedText());
+ PotentialSelectorDialog psd(conductor_, m_parent_undo, conductor_->diagramEditor());
+ psd.exec();
}
}
Modified: trunk/sources/conductorautonumerotation.h
===================================================================
--- trunk/sources/conductorautonumerotation.h 2015-08-27 18:52:59 UTC (rev 4171)
+++ trunk/sources/conductorautonumerotation.h 2015-08-29 14:18:30 UTC (rev 4172)
@@ -32,7 +32,6 @@
//methods
void numerate ();
- static void checkPotential (Conductor *conductor, QUndoCommand *parent = nullptr);
void applyText (QString);
private:
Modified: trunk/sources/conductorproperties.cpp
===================================================================
--- trunk/sources/conductorproperties.cpp 2015-08-27 18:52:59 UTC (rev 4171)
+++ trunk/sources/conductorproperties.cpp 2015-08-29 14:18:30 UTC (rev 4172)
@@ -241,18 +241,19 @@
* Export conductor propertie, in the XML element 'e'
* @param e the xml element
*/
-void ConductorProperties::toXml(QDomElement &e) const {
+void ConductorProperties::toXml(QDomElement &e) const
+{
e.setAttribute("type", typeToString(type));
-
- if (color != QColor(Qt::black)) {
+ if (color != QColor(Qt::black))
e.setAttribute("color", color.name());
- }
- if (type == Single) {
+ if (type == Single)
singleLineProperties.toXml(e);
- }
+
e.setAttribute("num", text);
+ e.setAttribute("function", m_function);
+ e.setAttribute("tension-protocol", m_tension_protocol);
e.setAttribute("numsize", text_size);
e.setAttribute("displaytext", m_show_text);
e.setAttribute("onetextperfolio", m_one_text_per_folio);
@@ -260,9 +261,8 @@
e.setAttribute("horizrotatetext", horiz_rotate_text);
QString conductor_style = writeStyle();
- if (!conductor_style.isEmpty()) {
+ if (!conductor_style.isEmpty())
e.setAttribute("style", conductor_style);
- }
}
@@ -271,35 +271,36 @@
* Import conductor propertie, from the attribute of the xml element 'e'
* @param e the xml document
*/
-void ConductorProperties::fromXml(QDomElement &e) {
- // get conductor color
+void ConductorProperties::fromXml(QDomElement &e)
+{
+ // get conductor color
QColor xml_color= QColor(e.attribute("color"));
- if (xml_color.isValid()) {
- color = xml_color;
- } else {
- color = QColor(Qt::black);
- }
+ color = (xml_color.isValid()? xml_color : QColor(Qt::black));
- // read style of conductor
+ // read style of conductor
readStyle(e.attribute("style"));
- if (e.attribute("type") == typeToString(Single)) {
- // get specific properties for single conductor
+ if (e.attribute("type") == typeToString(Single))
+ {
+ // get specific properties for single conductor
singleLineProperties.fromXml(e);
type = Single;
- } else {
+ }
+ else
type = Multi;
- }
- // get text field
- text = e.attribute("num");
- text_size = e.attribute("numsize", QString::number(9)).toInt();
- m_show_text = e.attribute("displaytext", QString::number(1)).toInt();
+
+ text = e.attribute("num");
+ m_function = e.attribute("function");
+ m_tension_protocol = e.attribute("tension-protocol");
+ text_size = e.attribute("numsize", QString::number(9)).toInt();
+ m_show_text = e.attribute("displaytext", QString::number(1)).toInt();
m_one_text_per_folio = e.attribute("onetextperfolio", QString::number(0)).toInt();
- verti_rotate_text = e.attribute("vertirotatetext").toDouble();
- horiz_rotate_text = e.attribute("horizrotatetext").toDouble();
+ verti_rotate_text = e.attribute("vertirotatetext").toDouble();
+ horiz_rotate_text = e.attribute("horizrotatetext").toDouble();
- //Keep retrocompatible with version older than 0,4
- //If the propertie @type is simple (removed since QET 0,4), we set text no visible.
+ //Keep retrocompatible with version older than 0,4
+ //If the propertie @type is simple (removed since QET 0,4), we set text no visible.
+ //@TODO remove this code for qet 0.6 or later
if (e.attribute("type") == "simple") m_show_text = false;
}
@@ -307,11 +308,14 @@
@param settings Parametres a ecrire
@param prefix prefixe a ajouter devant les noms des parametres
*/
-void ConductorProperties::toSettings(QSettings &settings, const QString &prefix) const {
+void ConductorProperties::toSettings(QSettings &settings, const QString &prefix) const
+{
settings.setValue(prefix + "color", color.name());
settings.setValue(prefix + "style", writeStyle());
settings.setValue(prefix + "type", typeToString(type));
settings.setValue(prefix + "text", text);
+ settings.setValue(prefix + "function", m_function);
+ settings.setValue(prefix + "tension-protocol", m_tension_protocol);
settings.setValue(prefix + "textsize", QString::number(text_size));
settings.setValue(prefix + "displaytext", m_show_text);
settings.setValue(prefix + "onetextperfolio", m_one_text_per_folio);
@@ -324,30 +328,25 @@
@param settings Parametres a lire
@param prefix prefixe a ajouter devant les noms des parametres
*/
-void ConductorProperties::fromSettings(QSettings &settings, const QString &prefix) {
- // recupere la couleur dans les parametres
+void ConductorProperties::fromSettings(QSettings &settings, const QString &prefix)
+{
QColor settings_color = QColor(settings.value(prefix + "color").toString());
- if (settings_color.isValid()) {
- color = settings_color;
- } else {
- color = QColor(Qt::black);
- }
+ color = (settings_color.isValid()? settings_color : QColor(Qt::black));
QString setting_type = settings.value(prefix + "type", typeToString(Multi)).toString();
- if (setting_type == typeToString(Single)) {
- type = Single;
- } else {
- type = Multi;
- }
+ type = (setting_type == typeToString(Single)? Single : Multi);
+
singleLineProperties.fromSettings(settings, prefix);
- text = settings.value(prefix + "text", "_").toString();
- text_size = settings.value(prefix + "textsize", "7").toInt();
- m_show_text = settings.value(prefix + "displaytext", true).toBool();
+
+ text = settings.value(prefix + "text", "_").toString();
+ m_function = settings.value(prefix + "function", "").toString();
+ m_tension_protocol = settings.value(prefix + "tension-protocol", "").toString();
+ text_size = settings.value(prefix + "textsize", "7").toInt();
+ m_show_text = settings.value(prefix + "displaytext", true).toBool();
m_one_text_per_folio = settings.value(prefix + "onetextperfolio", false).toBool();
- verti_rotate_text = settings.value((prefix + "vertirotatetext"), "270").toDouble();
- horiz_rotate_text = settings.value((prefix + "horizrotatetext"), "0").toDouble();
+ verti_rotate_text = settings.value((prefix + "vertirotatetext"), "270").toDouble();
+ horiz_rotate_text = settings.value((prefix + "horizrotatetext"), "0").toDouble();
- // lit le style du conducteur
readStyle(settings.value(prefix + "style").toString());
}
@@ -385,6 +384,8 @@
other.color == color &&\
other.style == style &&\
other.text == text &&\
+ other.m_function == m_function &&\
+ other.m_tension_protocol == m_tension_protocol &&\
other.m_show_text == m_show_text &&\
other.text_size == text_size &&\
other.verti_rotate_text == verti_rotate_text &&\
Modified: trunk/sources/conductorproperties.h
===================================================================
--- trunk/sources/conductorproperties.h 2015-08-27 18:52:59 UTC (rev 4171)
+++ trunk/sources/conductorproperties.h 2015-08-29 14:18:30 UTC (rev 4172)
@@ -61,56 +61,50 @@
This class represents the functional properties of a particular conductor,
i.e. properties other than path and terminals.
*/
-class ConductorProperties {
- // constructors, destructor
+class ConductorProperties
+{
public:
- ConductorProperties();
- virtual ~ConductorProperties();
+ ConductorProperties();
+ virtual ~ConductorProperties();
- /**
- Represents the kind of a particular conductor:
- * Simple: no symbols, no text input
- * Single: singleline symbols, no text input
- * Multi: text input, no symbol
- */
- enum ConductorType { Single, Multi };
+ /**
+ * @brief The ConductorType enum Represents the kind of a particular conductor:
+ * Single: singleline symbols, no text input
+ * Multi: text input, no symbol
+ */
+ enum ConductorType { Single, Multi };
+
+
+ //Attributes
+ ConductorType type;
+ QColor color;
+ QString text,
+ m_function,
+ m_tension_protocol;
+ int text_size;
+ double verti_rotate_text;
+ double horiz_rotate_text;
+ bool m_show_text;
+ bool m_one_text_per_folio;
+ Qt::PenStyle style;
+ SingleLineProperties singleLineProperties;
- // attributes
- /// Conductor type
- ConductorType type;
- /// Conductor color
- QColor color;
- /// Texte displayed for multiline conductors
- QString text;
- /// size of text
- int text_size;
- /// rotation angle texte
- double verti_rotate_text;
- double horiz_rotate_text;
- bool m_show_text;
- bool m_one_text_per_folio;
- /// conducteur style (Qt::SolidLine or Qt::DashLine)
- Qt::PenStyle style;
-
- /// properties for singleline conductors
- SingleLineProperties singleLineProperties;
-
- // methods
- void toXml(QDomElement &) const;
- void fromXml(QDomElement &);
- void toSettings(QSettings &, const QString & = QString()) const;
- void fromSettings(QSettings &, const QString & = QString());
- static QString typeToString(ConductorType);
+ // methods
+ void toXml(QDomElement &) const;
+ void fromXml(QDomElement &);
+ void toSettings(QSettings &, const QString & = QString()) const;
+ void fromSettings(QSettings &, const QString & = QString());
+ static QString typeToString(ConductorType);
- static ConductorProperties defaultProperties();
+ static ConductorProperties defaultProperties();
- // operators
- bool operator==(const ConductorProperties &) const;
- bool operator!=(const ConductorProperties &) const;
+ // operators
+ bool operator==(const ConductorProperties &) const;
+ bool operator!=(const ConductorProperties &) const;
private:
- void readStyle(const QString &);
- QString writeStyle() const;
+ void readStyle(const QString &);
+ QString writeStyle() const;
};
Q_DECLARE_METATYPE(ConductorProperties)
Modified: trunk/sources/qetgraphicsitem/conductor.cpp
===================================================================
--- trunk/sources/qetgraphicsitem/conductor.cpp 2015-08-27 18:52:59 UTC (rev 4171)
+++ trunk/sources/qetgraphicsitem/conductor.cpp 2015-08-29 14:18:30 UTC (rev 4172)
@@ -35,12 +35,13 @@
QPen Conductor::conductor_pen = QPen();
QBrush Conductor::conductor_brush = QBrush();
QBrush Conductor::square_brush = QBrush(Qt::darkGreen);
+
/**
- Constructeur
- @param p1 Premiere Borne a laquelle le conducteur est lie
- @param p2 Seconde Borne a laquelle le conducteur est lie
- @param parent_diagram QGraphicsScene a laquelle appartient le conducteur
-*/
+ * @brief Conductor::Conductor
+ * Default constructor.
+ * @param p1 : first terminal of this conductor.
+ * @param p2 : second terminal of this conductor.
+ */
Conductor::Conductor(Terminal *p1, Terminal* p2) :
QObject(),
QGraphicsPathItem(0),
@@ -57,7 +58,13 @@
segments_squares_scale_(1.0),
must_highlight_(Conductor::None)
{
- //set Zvalue at 9 to be upper than the DiagramImageItem and bottom of element(10)
+ //Set the default conductor properties.
+ if (p1->diagram())
+ properties_ = p1->diagram()->defaultConductorProperties;
+ else if (p2->diagram())
+ properties_ = p2->diagram()->defaultConductorProperties;
+
+ //set Zvalue at 9 to be upper than the DiagramImageItem and bottom of element(10)
setZValue(9);
previous_z_value = zValue();
@@ -67,8 +74,9 @@
//m_valid become false if the conductor can't be added to terminal (conductor already exist)
m_valid = (!ajout_p1 || !ajout_p2) ? false : true;
- // attributs de dessin par defaut (communs a tous les conducteurs)
- if (!pen_and_brush_initialized) {
+ //Default attribut for paint a conductor
+ if (!pen_and_brush_initialized)
+ {
conductor_pen.setJoinStyle(Qt::MiterJoin);
conductor_pen.setCapStyle(Qt::SquareCap);
conductor_pen.setColor(Qt::black);
@@ -79,13 +87,13 @@
pen_and_brush_initialized = true;
}
- // par defaut, les 4 profils sont des profils nuls = il faut utiliser priv_calculeConductor
+ //By default, the 4 profils are nuls -> we must to use priv_calculeConductor
conductor_profiles.insert(Qt::TopLeftCorner, ConductorProfile());
conductor_profiles.insert(Qt::TopRightCorner, ConductorProfile());
conductor_profiles.insert(Qt::BottomLeftCorner, ConductorProfile());
conductor_profiles.insert(Qt::BottomRightCorner, ConductorProfile());
- // calcul du rendu du conducteur
+ //Generate the path of this conductor.
generateConductorPath(terminal1 -> dockConductor(), terminal1 -> orientation(), terminal2 -> dockConductor(), terminal2 -> orientation());
setFlags(QGraphicsItem::ItemIsSelectable);
setAcceptHoverEvents(true);
@@ -1338,14 +1346,26 @@
/**
* @brief Conductor::setProperties
* Set new properties for this conductor
- * @param p : properties
+ * Also change the common properties for every conductors at the same potential.
+ * (text, function and tension/protocol) other value of properties isn't changed.
+ * @param properties : properties
*/
-void Conductor::setProperties(const ConductorProperties &p) {
- if (properties_ != p)
+void Conductor::setProperties(const ConductorProperties &properties)
+{
+ if (properties_ == properties) return;
+
+ properties_ = properties;
+
+ foreach(Conductor *other_conductor, relatedPotentialConductors())
{
- properties_ = p;
- readProperties();
+ ConductorProperties other_properties = other_conductor->properties();
+ other_properties.text = properties_.text;
+ other_properties.m_function = properties_.m_function;
+ other_properties.m_tension_protocol = properties_.m_tension_protocol;
+ other_conductor->setProperties(other_properties);
}
+
+ readProperties();
}
/**
Modified: trunk/sources/qetgraphicsitem/conductor.h
===================================================================
--- trunk/sources/qetgraphicsitem/conductor.h 2015-08-27 18:52:59 UTC (rev 4171)
+++ trunk/sources/qetgraphicsitem/conductor.h 2015-08-29 14:18:30 UTC (rev 4172)
@@ -105,20 +105,20 @@
bool pathFromXml(const QDomElement &);
public:
- const QList<ConductorSegment *> segmentsList() const;
- void setProperties(const ConductorProperties &);
- ConductorProperties properties() const;
- void setProfile(const ConductorProfile &, Qt::Corner);
- ConductorProfile profile(Qt::Corner) const;
- void setProfiles(const ConductorProfilesGroup &);
- ConductorProfilesGroup profiles() const;
- void readProperties();
- void calculateTextItemPosition();
- virtual Highlight highlight() const;
- virtual void setHighlighted(Highlight);
- QSet<Conductor *> relatedPotentialConductors(const bool all_diagram = true, QList <Terminal *> *t_list=0);
- QETDiagramEditor* diagramEditor() const;
- void editProperty ();
+ const QList<ConductorSegment *> segmentsList() const;
+ void setProperties(const ConductorProperties &properties);
+ ConductorProperties properties() const;
+ void setProfile(const ConductorProfile &, Qt::Corner);
+ ConductorProfile profile(Qt::Corner) const;
+ void setProfiles(const ConductorProfilesGroup &);
+ ConductorProfilesGroup profiles() const;
+ void readProperties();
+ void calculateTextItemPosition();
+ virtual Highlight highlight() const;
+ virtual void setHighlighted(Highlight);
+ QSet<Conductor *> relatedPotentialConductors(const bool all_diagram = true, QList <Terminal *> *t_list=0);
+ QETDiagramEditor* diagramEditor() const;
+ void editProperty ();
public slots:
void displayedTextChanged();
Modified: trunk/sources/qetgraphicsitem/terminal.cpp
===================================================================
--- trunk/sources/qetgraphicsitem/terminal.cpp 2015-08-27 18:52:59 UTC (rev 4171)
+++ trunk/sources/qetgraphicsitem/terminal.cpp 2015-08-29 14:18:30 UTC (rev 4172)
@@ -627,7 +627,6 @@
new_conductor->setProperties(others_properties);
else
{
- new_conductor -> setProperties(diagram() -> defaultConductorProperties);
//Autonum it
ConductorAutoNumerotation can (new_conductor, diagram(), undo);
can.numerate();
Modified: trunk/sources/ui/conductorpropertiesdialog.cpp
===================================================================
--- trunk/sources/ui/conductorpropertiesdialog.cpp 2015-08-27 18:52:59 UTC (rev 4171)
+++ trunk/sources/ui/conductorpropertiesdialog.cpp 2015-08-29 14:18:30 UTC (rev 4172)
@@ -70,31 +70,14 @@
QPropertyUndoCommand *undo = new QPropertyUndoCommand(conductor, "properties", old_value, new_value);
undo->setText(tr("Modifier les propriétés d'un conducteur", "undo caption"));
- if (!conductor->relatedPotentialConductors().isEmpty())
+ if (!conductor->relatedPotentialConductors().isEmpty() && cpd.applyAll())
{
undo->setText(tr("Modifier les propriétés de plusieurs conducteurs", "undo caption"));
- QString old_text = conductor->properties().text;
- QString new_text = cpd.properties().text;
foreach (Conductor *potential_conductor, conductor->relatedPotentialConductors())
{
- //"Apply to all conductors of potential" is checked,
- //we apply the new properties for every conductors in the same potential.
- if (cpd.applyAll())
- {
- old_value.setValue(potential_conductor->properties());
- new QPropertyUndoCommand (potential_conductor, "properties", old_value, new_value, undo);
- }
- //The num of conductor isn't affected by "Apply to all conductors of potential"
- //we always apply it to the potential if he change.
- else if(old_text != new_text)
- {
- old_value.setValue(potential_conductor->properties());
- ConductorProperties new_properties = potential_conductor->properties();
- new_properties.text = new_text;
- new_value.setValue(new_properties);
- new QPropertyUndoCommand (potential_conductor, "properties", old_value, new_value, undo);
- }
+ old_value.setValue(potential_conductor->properties());
+ new QPropertyUndoCommand (potential_conductor, "properties", old_value, new_value, undo);
}
}
Modified: trunk/sources/ui/conductorpropertieswidget.cpp
===================================================================
--- trunk/sources/ui/conductorpropertieswidget.cpp 2015-08-27 18:52:59 UTC (rev 4171)
+++ trunk/sources/ui/conductorpropertieswidget.cpp 2015-08-29 14:18:30 UTC (rev 4172)
@@ -66,7 +66,8 @@
* Set the properties
* @param properties
*/
-void ConductorPropertiesWidget::setProperties(const ConductorProperties &properties) {
+void ConductorPropertiesWidget::setProperties(const ConductorProperties &properties)
+{
if (m_properties == properties) return;
m_properties = properties;
@@ -74,18 +75,20 @@
int index = ui -> m_line_style_cb -> findData(QPen(m_properties.style));
if (index != -1) ui -> m_line_style_cb -> setCurrentIndex(index);
- ui -> m_text_le -> setText (m_properties.text);
- ui -> m_text_size_sb -> setValue (m_properties.text_size);
- ui -> m_show_text_cb -> setChecked (m_properties.m_show_text);
- ui -> m_one_text_per_folio_cb -> setChecked (m_properties.m_one_text_per_folio);
- ui -> m_earth_cb -> setChecked (m_properties.singleLineProperties.hasGround);
- ui -> m_neutral_cb -> setChecked (m_properties.singleLineProperties.hasNeutral);
- ui -> m_pen_cb -> setChecked (m_properties.singleLineProperties.isPen());
- ui -> m_phase_cb -> setChecked (m_properties.singleLineProperties.phasesCount());
- ui -> m_phase_slider -> setValue (m_properties.singleLineProperties.phasesCount());
+ ui->m_text_le -> setText (m_properties.text);
+ ui->m_function_le ->setText (m_properties.m_function);
+ ui->m_tension_protocol_le ->setText (m_properties.m_tension_protocol);
+ ui->m_text_size_sb -> setValue (m_properties.text_size);
+ ui->m_show_text_cb -> setChecked (m_properties.m_show_text);
+ ui->m_one_text_per_folio_cb -> setChecked (m_properties.m_one_text_per_folio);
+ ui->m_earth_cb -> setChecked (m_properties.singleLineProperties.hasGround);
+ ui->m_neutral_cb -> setChecked (m_properties.singleLineProperties.hasNeutral);
+ ui->m_pen_cb -> setChecked (m_properties.singleLineProperties.isPen());
+ ui->m_phase_cb -> setChecked (m_properties.singleLineProperties.phasesCount());
+ ui->m_phase_slider -> setValue (m_properties.singleLineProperties.phasesCount());
- m_verti_select -> setValue (m_properties.verti_rotate_text);
- m_horiz_select -> setValue (m_properties.horiz_rotate_text);
+ m_verti_select -> setValue (m_properties.verti_rotate_text);
+ m_horiz_select -> setValue (m_properties.horiz_rotate_text);
setConductorType(m_properties.type);
updatePreview(false);
@@ -95,7 +98,8 @@
* @brief ConductorPropertiesWidget::properties
* @return the edited properties
*/
-ConductorProperties ConductorPropertiesWidget::properties() const {
+ConductorProperties ConductorPropertiesWidget::properties() const
+{
ConductorProperties properties_;
if (ui -> m_multiwires_gb -> isChecked()) properties_.type = ConductorProperties::Multi;
else if (ui -> m_singlewire_gb -> isChecked()) properties_.type = ConductorProperties::Single;
@@ -103,6 +107,8 @@
properties_.color = ui -> m_color_pb->palette().color(QPalette::Button);
properties_.style = ui -> m_line_style_cb->itemData(ui->m_line_style_cb->currentIndex()).value<QPen>().style();
properties_.text = ui -> m_text_le -> text();
+ properties_.m_function = ui -> m_function_le->text();
+ properties_.m_tension_protocol = ui -> m_tension_protocol_le->text();
properties_.text_size = ui -> m_text_size_sb -> value();
properties_.m_show_text = ui -> m_show_text_cb -> isChecked();
properties_.m_one_text_per_folio = ui -> m_one_text_per_folio_cb -> isChecked();
Modified: trunk/sources/ui/conductorpropertieswidget.ui
===================================================================
--- trunk/sources/ui/conductorpropertieswidget.ui 2015-08-27 18:52:59 UTC (rev 4171)
+++ trunk/sources/ui/conductorpropertieswidget.ui 2015-08-29 14:18:30 UTC (rev 4172)
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>354</width>
- <height>329</height>
+ <width>504</width>
+ <height>420</height>
</rect>
</property>
<property name="windowTitle">
@@ -33,23 +33,35 @@
<bool>true</bool>
</property>
<property name="checked">
- <bool>false</bool>
+ <bool>true</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
- <widget class="QLabel" name="label">
+ <widget class="QLabel" name="label_2">
<property name="text">
- <string>Texte :</string>
+ <string>Taille du texte :</string>
</property>
</widget>
</item>
- <item row="0" column="3">
+ <item row="2" column="2">
+ <widget class="QLineEdit" name="m_function_le"/>
+ </item>
+ <item row="0" column="2">
<widget class="QSpinBox" name="m_text_size_sb">
<property name="toolTip">
<string>Taille du texte</string>
</property>
+ <property name="wrapping">
+ <bool>false</bool>
+ </property>
+ <property name="buttonSymbols">
+ <enum>QAbstractSpinBox::UpDownArrows</enum>
+ </property>
+ <property name="prefix">
+ <string/>
+ </property>
<property name="minimum">
<number>5</number>
</property>
@@ -58,14 +70,31 @@
</property>
</widget>
</item>
- <item row="0" column="2">
- <widget class="QLabel" name="label_2">
+ <item row="3" column="2">
+ <widget class="QLineEdit" name="m_tension_protocol_le"/>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_9">
<property name="text">
- <string>Taille :</string>
+ <string>Tension / Protocole :</string>
</property>
</widget>
</item>
- <item row="0" column="1">
+ <item row="1" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Texte :</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string>Fonction :</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
<widget class="QLineEdit" name="m_text_le">
<property name="toolTip">
<string>Texte</string>
@@ -75,13 +104,13 @@
</property>
</widget>
</item>
- <item row="0" column="4">
+ <item row="1" column="3">
<widget class="QCheckBox" name="m_show_text_cb">
<property name="toolTip">
<string>Texte visible</string>
</property>
<property name="text">
- <string>Visible</string>
+ <string/>
</property>
<property name="checked">
<bool>true</bool>
Added: trunk/sources/ui/potentialselectordialog.cpp
===================================================================
--- trunk/sources/ui/potentialselectordialog.cpp (rev 0)
+++ trunk/sources/ui/potentialselectordialog.cpp 2015-08-29 14:18:30 UTC (rev 4172)
@@ -0,0 +1,224 @@
+/*
+ Copyright 2006-2015 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 <http://www.gnu.org/licenses/>.
+*/
+#include "potentialselectordialog.h"
+#include "ui_potentialselectordialog.h"
+#include "conductor.h"
+#include "terminal.h"
+#include <QRadioButton>
+#include "QPropertyUndoCommand/qpropertyundocommand.h"
+#include "diagram.h"
+#include "element.h"
+#include "reportelement.h"
+
+//### PRIVATE CLASS ###//
+
+/**
+ * @brief The NewConductorPotentialSelector class
+ * Use for get the conductor propertie when two potentials is linked by a conductor
+ */
+class NewConductorPotentialSelector : public AbstractPotentialSelector
+{
+ public:
+ NewConductorPotentialSelector(Conductor *conductor) :
+ m_is_valid(false)
+ {
+ Terminal *terminal_1 = conductor->terminal1;
+ Terminal *terminal_2 = conductor->terminal2;
+ //We temporarily remove the conductor of his two terminals, to get the two existing potential
+ terminal_1->removeConductor(conductor);
+ terminal_2->removeConductor(conductor);
+
+ if (terminal_1->conductors().isEmpty() || terminal_2->conductors().isEmpty()) return;
+
+ m_properties_1 = terminal_1->conductors().first()->properties();
+ m_conductor_number_1 = terminal_1->conductors().first()->relatedPotentialConductors().size() + 1;
+ m_properties_2 = terminal_2->conductors().first()->properties();
+ m_conductor_number_2 = terminal_2->conductors().first()->relatedPotentialConductors().size() + 1;
+
+ //Re-add conductor to his terminals.
+ terminal_1->addConductor(conductor);
+ terminal_2->addConductor(conductor);
+ m_is_valid = true;
+ }
+
+ bool isValid() const {return m_is_valid;}
+
+ ~NewConductorPotentialSelector() {}
+
+ private :
+ bool m_is_valid;
+};
+
+/**
+ * @brief The LinkReportPotentialSelector class
+ * Use for get the conductor propertie when two potentials is linked with a folio report
+ */
+class LinkReportPotentialSelector : public AbstractPotentialSelector
+{
+ public:
+ LinkReportPotentialSelector(Element *report) :
+ m_is_valid(false)
+ {
+ if (report->linkType() & Element::AllReport)
+ {
+ //We temporarily unlink report to get the two existing potential
+ Element *other_report = report->linkedElements().first();
+ report->unlinkAllElements();
+
+ if (report->conductors().isEmpty() || other_report->conductors().isEmpty()) return;
+
+ m_properties_1 = report->conductors().first()->properties();
+ m_conductor_number_1 = report->conductors().first()->relatedPotentialConductors().size() + 1;
+ m_properties_2 = other_report->conductors().first()->properties();
+ m_conductor_number_2 = other_report->conductors().first()->relatedPotentialConductors().size() + 1;
+
+ //We relink the report
+ report->linkToElement(other_report);
+ m_is_valid = true;
+ }
+ }
+
+ ~LinkReportPotentialSelector() {}
+
+ bool isValid() const {return m_is_valid;}
+
+ private:
+ bool m_is_valid;
+};
+
+//### PRIVATE CLASS ###//
+
+/**
+ * @brief PotentialSelectorDialog::PotentialSelectorDialog
+ * Constructor when we link two potentiels together, with a conductor
+ * @param conductor : the new conductor who connect to existing potential
+ * @param parent_undo : undo parent to use.
+ * @param parent : parent widget.
+ */
+PotentialSelectorDialog::PotentialSelectorDialog(Conductor *conductor, QUndoCommand *parent_undo, QWidget *parent) :
+ QDialog(parent),
+ ui(new Ui::PotentialSelectorDialog),
+ m_conductor(conductor),
+ m_report(nullptr),
+ m_parent_undo(parent_undo)
+{
+ ui->setupUi(this);
+ m_potential_selector = new NewConductorPotentialSelector(conductor);
+ buildWidget();
+}
+
+/**
+ * @brief PotentialSelectorDialog::PotentialSelectorDialog
+ * 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
+ */
+PotentialSelectorDialog::PotentialSelectorDialog(Element *report, QUndoCommand *parent_undo, QWidget *parent) :
+ QDialog(parent),
+ ui(new Ui::PotentialSelectorDialog),
+ m_conductor(nullptr),
+ m_report(report),
+ m_parent_undo(parent_undo)
+{
+ ui->setupUi(this);
+ m_potential_selector = new LinkReportPotentialSelector(report);
+ buildWidget();
+}
+
+PotentialSelectorDialog::~PotentialSelectorDialog()
+{
+ delete ui;
+ delete m_potential_selector;
+}
+
+/**
+ * @brief PotentialSelectorDialog::buildWidget
+ * Build the dialog
+ */
+void PotentialSelectorDialog::buildWidget()
+{
+ 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;});
+
+ //Set the radio button of potential with the bigger number of conductors,
+ //at first position, and check it
+ if (m_potential_selector->m_conductor_number_1 >= m_potential_selector->m_conductor_number_2)
+ {
+ ui->verticalLayout->insertWidget(1, rb1);
+ ui->verticalLayout->insertWidget(2, rb2);
+ rb1->setChecked(true);
+ }
+ else
+ {
+ ui->verticalLayout->insertWidget(1, rb2);
+ ui->verticalLayout->insertWidget(2, rb1);
+ rb2->setChecked(true);
+ }
+}
+
+/**
+ * @brief PotentialSelectorDialog::on_buttonBox_accepted
+ * Action when user click on OK button
+ */
+void PotentialSelectorDialog::on_buttonBox_accepted()
+{
+ if (!m_potential_selector->isValid()) return;
+
+ if (!m_conductor)
+ m_conductor = m_report->conductors().first();
+
+ ConductorProperties new_properties = m_conductor->properties();
+ new_properties.text = m_selected_properties.text;
+ new_properties.m_function = m_selected_properties.m_function;
+ new_properties.m_tension_protocol = m_selected_properties.m_tension_protocol;
+
+ QVariant old_value, new_value;
+ old_value.setValue(m_conductor->properties());
+ new_value.setValue(new_properties);
+
+ //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"));
+
+ //Set the new properties for each conductors of the new potential
+ foreach(Conductor *cond, m_conductor->relatedPotentialConductors())
+ {
+ new_properties = cond->properties();
+ new_properties.text = m_selected_properties.text;
+ 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);
+ new QPropertyUndoCommand(cond, "properties", old_value, new_value, undo);
+ }
+
+ //There is an undo parent, we stop here, the owner of m_parent_undo will push it to an undo stack
+ if (m_parent_undo) return;
+ //There isn't a parent, we push the undo command to diagram undo stack.
+ if (m_conductor->diagram()) m_conductor->diagram()->undoStack().push(undo);
+ //We apply the change without undo command
+ else
+ {
+ delete undo;
+ m_conductor->setProperties(new_properties);
+ }
+}
Added: trunk/sources/ui/potentialselectordialog.h
===================================================================
--- trunk/sources/ui/potentialselectordialog.h (rev 0)
+++ trunk/sources/ui/potentialselectordialog.h 2015-08-29 14:18:30 UTC (rev 4172)
@@ -0,0 +1,76 @@
+/*
+ Copyright 2006-2015 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 <http://www.gnu.org/licenses/>.
+*/
+#ifndef POTENTIALSELECTORDIALOG_H
+#define POTENTIALSELECTORDIALOG_H
+
+#include <QDialog>
+#include "conductorproperties.h"
+class Conductor;
+class QUndoCommand;
+class Element;
+
+class AbstractPotentialSelector
+{
+ public:
+ virtual ~AbstractPotentialSelector() {}
+ virtual bool isValid() const = 0;
+
+ ConductorProperties m_properties_1, m_properties_2;
+ int m_conductor_number_1, m_conductor_number_2;
+};
+
+namespace Ui {
+ class PotentialSelectorDialog;
+}
+
+/**
+ * @brief The PotentialSelectorDialog class
+ * This dialog is used when user try to connect two existing potential together.
+ * The dialog ask to user to make a choice between the properties of the two existing potential,
+ * to apply it for the new potential.
+ *
+ * Each constructor have a QUndoCommand @parent_undo for parameter
+ * If @parent_undo isn't null, when user click on OK button, the dialog will use the parent-undo
+ * as parent of the undo command that describe the changes.
+ * If @parent_undo is null, the created undo-command is push to the undo stack of the parent diagram of a conductor in potential.
+ * else we apply the change without a QUndoCommand.
+ */
+class PotentialSelectorDialog : public QDialog
+{
+ Q_OBJECT
+
+ public:
+ explicit PotentialSelectorDialog(Conductor *conductor, QUndoCommand *parent_undo = nullptr, QWidget *parent = nullptr);
+ explicit PotentialSelectorDialog(Element *report, QUndoCommand *parent_undo = nullptr, QWidget *parent = nullptr);
+ ~PotentialSelectorDialog();
+
+ private slots:
+ void on_buttonBox_accepted();
+
+ private:
+ void buildWidget();
+
+ private:
+ Ui::PotentialSelectorDialog *ui;
+ Conductor *m_conductor;
+ Element *m_report;
+ QUndoCommand *m_parent_undo;
+ ConductorProperties m_selected_properties;
+ AbstractPotentialSelector *m_potential_selector;
+};
+#endif // POTENTIALSELECTORDIALOG_H
Added: trunk/sources/ui/potentialselectordialog.ui
===================================================================
--- trunk/sources/ui/potentialselectordialog.ui (rev 0)
+++ trunk/sources/ui/potentialselectordialog.ui 2015-08-29 14:18:30 UTC (rev 4172)
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>PotentialSelectorDialog</class>
+ <widget class="QDialog" name="PotentialSelectorDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>425</width>
+ <height>74</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Sélectionner le potentiel éléctrique</string>
+ </property>
+ <property name="sizeGripEnabled">
+ <bool>false</bool>
+ </property>
+ <property name="modal">
+ <bool>true</bool>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="sizeConstraint">
+ <enum>QLayout::SetDefaultConstraint</enum>
+ </property>
+ <property name="topMargin">
+ <number>9</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Plain</enum>
+ </property>
+ <property name="text">
+ <string>Vous tentez de lier deux potentiels différents ensemble.
+Veuillez choisir les propriétées à appliquer au nouveau potentiel.</string>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::PlainText</enum>
+ </property>
+ <property name="scaledContents">
+ <bool>false</bool>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>PotentialSelectorDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>PotentialSelectorDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
Deleted: trunk/sources/ui/potentialtextsdialog.cpp
===================================================================
--- trunk/sources/ui/potentialtextsdialog.cpp 2015-08-27 18:52:59 UTC (rev 4171)
+++ trunk/sources/ui/potentialtextsdialog.cpp 2015-08-29 14:18:30 UTC (rev 4172)
@@ -1,105 +0,0 @@
-/*
- Copyright 2006-2015 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 <http://www.gnu.org/licenses/>.
-*/
-#include "conductor.h"
-#include "potentialtextsdialog.h"
-#include "ui_potentialtextsdialog.h"
-#include <QSignalMapper>
-#include <QRadioButton>
-
-/**
- * @brief PotentialTextsDialog::PotentialTextsDialog
- * Constructor
- * @param conductor : A Conductor of the potential to check
- * @param parent : parent widget
- */
-PotentialTextsDialog::PotentialTextsDialog(Conductor *conductor, QWidget *parent) :
- QDialog(parent),
- ui(new Ui::PotentialTextsDialog),
- m_conductor (conductor)
-{
- ui->setupUi(this);
- conductorsTextToMap();
- buildRadioList();
-}
-
-/**
- * @brief PotentialTextsDialog::~PotentialTextsDialog
- * Destructor
- */
-PotentialTextsDialog::~PotentialTextsDialog()
-{
- delete ui;
-}
-
-/**
- * @brief PotentialTextsDialog::selectedText
- * @return the selected text
- */
-QString PotentialTextsDialog::selectedText() const {
- return m_selected_text;
-}
-
-/**
- * @brief PotentialTextsDialog::buildRadioList
- * Build the radio list of this dialog, for selected a text
- */
-void PotentialTextsDialog::buildRadioList() {
- //map the signal for each radio button create in buildRadioList
- m_signal_mapper = new QSignalMapper(this);
- connect(m_signal_mapper, SIGNAL(mapped(QString)), this, SLOT(setSelectedText(QString)));
-
- //create a new radio button for each text of @conductorList
- for (QMultiMap<int, QString>::ConstIterator it = m_texts.constEnd()-1; it != m_texts.constBegin()-1; --it) {
- QRadioButton *rb= new QRadioButton(it.value() + tr(" : est présent ") + QString::number(it.key()) + tr(" fois."), this);
- if (it == m_texts.constEnd()-1) {
- rb -> setChecked(true);
- m_selected_text = it.value();
- }
- //connect the button to mapper @m_signal_mapper
- connect(rb, SIGNAL(clicked()), m_signal_mapper, SLOT(map()));
- m_signal_mapper -> setMapping(rb, it.value());
- ui -> m_buttons_layout -> addWidget(rb);
- }
-}
-
-/**
- * @brief PotentialTextsDialog::conductorsTextToMap
- * Fill the multimap @m_text with all different text found in the same potentil of @m_conductor
- * The key "int" of multimap is the number of conductors with the same text.
- * The value "QString" of multimap is the text.
- */
-void PotentialTextsDialog::conductorsTextToMap() {
- QStringList textList;
- textList << m_conductor -> text();
- foreach(Conductor *c, m_conductor->relatedPotentialConductors()) textList << c -> text();
-
- while (!textList.size() == 0) {
- QString t = textList.at(0);
- int n = textList.count(t);
- textList.removeAll(t);
- m_texts.insert(n, t);
- }
-}
-
-/**
- * @brief PotentialTextsDialog::setSelectedText
- * @param text
- */
-void PotentialTextsDialog::setSelectedText(QString text) {
- m_selected_text = text;
-}
Deleted: trunk/sources/ui/potentialtextsdialog.h
===================================================================
--- trunk/sources/ui/potentialtextsdialog.h 2015-08-27 18:52:59 UTC (rev 4171)
+++ trunk/sources/ui/potentialtextsdialog.h 2015-08-29 14:18:30 UTC (rev 4172)
@@ -1,61 +0,0 @@
-/*
- Copyright 2006-2015 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 <http://www.gnu.org/licenses/>.
-*/
-#ifndef POTENTIALTEXTSDIALOG_H
-#define POTENTIALTEXTSDIALOG_H
-
-#include <QDialog>
-#include <QMultiMap>
-class Conductor;
-class QSignalMapper;
-
-namespace Ui {
- class PotentialTextsDialog;
-}
-
-/**
- * @brief The PotentialTextsDialog class
- * This dialog show all differents conductors texts at the same
- * potential of @conductor.
- * The user can select a text in the list.
- */
-class PotentialTextsDialog : public QDialog
-{
- Q_OBJECT
-
- public:
- explicit PotentialTextsDialog(Conductor *conductor, QWidget *parent = 0);
- ~PotentialTextsDialog();
-
- QString selectedText () const;
-
- private:
- void buildRadioList();
- void conductorsTextToMap();
-
- private slots:
- void setSelectedText (QString text);
-
- private:
- Ui::PotentialTextsDialog *ui;
- Conductor *m_conductor;
- QSignalMapper *m_signal_mapper;
- QString m_selected_text;
- QMultiMap <int, QString> m_texts;
-};
-
-#endif // POTENTIALTEXTSDIALOG_H
Deleted: trunk/sources/ui/potentialtextsdialog.ui
===================================================================
--- trunk/sources/ui/potentialtextsdialog.ui 2015-08-27 18:52:59 UTC (rev 4171)
+++ trunk/sources/ui/potentialtextsdialog.ui 2015-08-29 14:18:30 UTC (rev 4172)
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>PotentialTextsDialog</class>
- <widget class="QDialog" name="PotentialTextsDialog">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>403</width>
- <height>94</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>Textes de potentiel</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <layout class="QVBoxLayout" name="verticalLayout_3">
- <item>
- <widget class="QLabel" name="label">
- <property name="text">
- <string>Les textes de ce potentiel électrique ne sont pas identiques.
-Appliquer un texte à l'ensemble de ces conducteurs.</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QVBoxLayout" name="m_buttons_layout"/>
- </item>
- <item>
- <spacer name="verticalSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QDialogButtonBox" name="buttonBox">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="standardButtons">
- <set>QDialogButtonBox::Ok</set>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections>
- <connection>
- <sender>buttonBox</sender>
- <signal>accepted()</signal>
- <receiver>PotentialTextsDialog</receiver>
- <slot>accept()</slot>
- <hints>
- <hint type="sourcelabel">
- <x>248</x>
- <y>254</y>
- </hint>
- <hint type="destinationlabel">
- <x>157</x>
- <y>274</y>
- </hint>
- </hints>
- </connection>
- <connection>
- <sender>buttonBox</sender>
- <signal>rejected()</signal>
- <receiver>PotentialTextsDialog</receiver>
- <slot>reject()</slot>
- <hints>
- <hint type="sourcelabel">
- <x>316</x>
- <y>260</y>
- </hint>
- <hint type="destinationlabel">
- <x>286</x>
- <y>274</y>
- </hint>
- </hints>
- </connection>
- </connections>
-</ui>
Modified: trunk/sources/undocommand/linkelementcommand.cpp
===================================================================
--- trunk/sources/undocommand/linkelementcommand.cpp 2015-08-27 18:52:59 UTC (rev 4171)
+++ trunk/sources/undocommand/linkelementcommand.cpp 2015-08-29 14:18:30 UTC (rev 4172)
@@ -19,6 +19,8 @@
#include "element.h"
#include "diagram.h"
#include "conductorautonumerotation.h"
+#include "conductor.h"
+#include "potentialselectordialog.h"
/**
* @brief LinkElementCommand::LinkElementCommand
@@ -211,7 +213,19 @@
&& m_element->conductors().size() \
&& m_linked_after.size() && m_linked_after.first()->conductors().size())
{
- ConductorAutoNumerotation::checkPotential(m_element->conductors().first(), this);
+ //fill list of potential
+ QSet <Conductor *> c_list = m_element->conductors().first()->relatedPotentialConductors();
+ c_list << m_element->conductors().first();
+ //fill list of text
+ QStringList strl;
+ foreach (const Conductor *c, c_list) strl<<(c->properties().text);
+
+ //check text list, isn't same in potential, ask user what to do
+ if (!QET::eachStrIsEqual(strl))
+ {
+ PotentialSelectorDialog psd(m_element, this);
+ psd.exec();
+ }
m_first_redo = false;
}
QUndoCommand::redo();