From 73d78ea6231ccea4bfef4a55cc683f65c8f0790d Mon Sep 17 00:00:00 2001 From: blacksun Date: Fri, 19 Apr 2013 14:59:20 +0000 Subject: [PATCH] add method for get each potentials in a diagram and revamp method for reset all conductors text in a diagram git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@2121 bfdf4180-ca20-0410-9c96-a3a8aa849046 --- sources/conductorautonumerotation.cpp | 26 +++++++++++++++++++------- sources/conductorautonumerotation.h | 5 +++-- sources/diagram.cpp | 20 ++++++++++++++++++++ sources/diagram.h | 1 + sources/ui/dialogconductorautonum.cpp | 4 ++-- 5 files changed, 45 insertions(+), 11 deletions(-) diff --git a/sources/conductorautonumerotation.cpp b/sources/conductorautonumerotation.cpp index b11b9431f..0c43ba268 100644 --- a/sources/conductorautonumerotation.cpp +++ b/sources/conductorautonumerotation.cpp @@ -26,6 +26,16 @@ ConductorAutoNumerotation::ConductorAutoNumerotation(Conductor *c) : strategy_ (0) {} +/** + * Constructor + * @param d a diagram to apply automatic numerotation + */ +ConductorAutoNumerotation::ConductorAutoNumerotation(Diagram *d) : + conductor_ (0), + diagram_ (d), + strategy_ (0) +{} + /** *destructor */ @@ -120,15 +130,17 @@ void ConductorAutoNumerotation::setNumStrategy() {} /** - * @brief Set the default text to all conductors of the diagram + * @brief Set the default text to all potentials of the diagram * @param dg the diagram */ -void ConductorAutoNumerotation::removeNum_ofDiagram(Diagram *dg) { - // Get all conductors presents in diagram - QList Conductors = dg -> content().conductors(); - // Browse all conductors and set the default value - for (int i=0; i setText( dg ->defaultConductorProperties.text ); +void ConductorAutoNumerotation::removeNum_ofDiagram() { + if (!diagram_) return; + //Get all potentials presents in diagram + QList > potential_list = diagram_ -> potentials(); + //Browse all potentials and set the default text + for (int i=0; i < potential_list.size(); i++) { + ConductorAutoNumerotation can (potential_list.at(i).toList().first()); + can.applyText(diagram_ -> defaultConductorProperties.text); } } diff --git a/sources/conductorautonumerotation.h b/sources/conductorautonumerotation.h index 33136a9ba..ae7011ad3 100644 --- a/sources/conductorautonumerotation.h +++ b/sources/conductorautonumerotation.h @@ -14,13 +14,14 @@ class ConductorAutoNumerotation: public QObject public: //constructors & destructor ConductorAutoNumerotation (); - ConductorAutoNumerotation(Conductor *); + ConductorAutoNumerotation (Conductor *); + ConductorAutoNumerotation (Diagram *); ~ConductorAutoNumerotation(); //methods void setConductor(Conductor *); void numerate(); - void removeNum_ofDiagram(Diagram *); + void removeNum_ofDiagram(); public slots: void applyText(QString); diff --git a/sources/diagram.cpp b/sources/diagram.cpp index aa9dc7e01..0a8a395c1 100644 --- a/sources/diagram.cpp +++ b/sources/diagram.cpp @@ -272,6 +272,26 @@ bool Diagram::isEmpty() const { return(!items().count()); } +/** + * @brief Diagram::potential + * @return all potential in the diagram + *each potential are in the QList and each conductors of one potential are in the QSet + */ +QList < QSet > Diagram::potentials() { + QList < QSet > potential_List; + if (content().conductors().size() == 0) return (potential_List); //return an empty potential + QList conductors_list = content().conductors(); + + do { + QSet one_potential = conductors_list.first() -> relatedPotentialConductors(); + one_potential << conductors_list.takeFirst(); + foreach (Conductor *c, one_potential) conductors_list.removeOne(c); + potential_List << one_potential; + } while (!conductors_list.empty()); + + return (potential_List); +} + /** Exporte tout ou partie du schema @param whole_content Booleen (a vrai par defaut) indiquant si le XML genere doit diff --git a/sources/diagram.h b/sources/diagram.h index 32088ea3a..5fbd41dd0 100644 --- a/sources/diagram.h +++ b/sources/diagram.h @@ -109,6 +109,7 @@ class Diagram : public QGraphicsScene { void setConductor(bool); void setConductorStart (QPointF); void setConductorStop(QPointF); + QList < QSet > potentials(); // methods related to XML import/export QDomDocument toXml(bool = true); diff --git a/sources/ui/dialogconductorautonum.cpp b/sources/ui/dialogconductorautonum.cpp index e5872d2ee..696fd140d 100644 --- a/sources/ui/dialogconductorautonum.cpp +++ b/sources/ui/dialogconductorautonum.cpp @@ -36,8 +36,8 @@ void DialogConductorAutoNum::on_pushButton_delete_clicked() { // if yes remove all if( answer == QMessageBox::Yes) { - ConductorAutoNumerotation ConductorNum; - ConductorNum.removeNum_ofDiagram( dg_ ); + ConductorAutoNumerotation can(dg_); + can.removeNum_ofDiagram(); } }