[qet] [3251] conductor autonum. |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/qet Archives
]
Revision: 3251
Author: blacksun
Date: 2014-08-04 16:39:57 +0200 (Mon, 04 Aug 2014)
Log Message:
-----------
conductor autonum. Diagram save current selected autonum.
Readd dialog to select texts, when potential have different texts
Modified Paths:
--------------
trunk/sources/conductorautonumerotation.cpp
trunk/sources/diagram.cpp
Added Paths:
-----------
trunk/sources/ui/potentialtextsdialog.cpp
trunk/sources/ui/potentialtextsdialog.h
trunk/sources/ui/potentialtextsdialog.ui
Removed Paths:
-------------
trunk/sources/conductorautonumerotationwidget.cpp
trunk/sources/conductorautonumerotationwidget.h
Modified: trunk/sources/conductorautonumerotation.cpp
===================================================================
--- trunk/sources/conductorautonumerotation.cpp 2014-08-03 23:36:45 UTC (rev 3250)
+++ trunk/sources/conductorautonumerotation.cpp 2014-08-04 14:39:57 UTC (rev 3251)
@@ -16,12 +16,12 @@
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#include "conductorautonumerotation.h"
-#include "conductorautonumerotationwidget.h"
#include "diagramcommands.h"
#include "numerotationcontextcommands.h"
#include "qetdiagrameditor.h"
#include "conductor.h"
#include "diagram.h"
+#include "potentialtextsdialog.h"
/**
*Constructor
@@ -45,10 +45,10 @@
/**
* @brief ConductorAutoNumerotation::checkPotential
- * Check if text of this potential is identical.
+ * Check if eah texts of this potential is identical.
* If not, ask user how to numerate
* @param conductor
- * One conductor of this potential.
+ * A conductor of the potential to check.
*/
void ConductorAutoNumerotation::checkPotential(Conductor *conductor) {
//fill list of potential
@@ -60,10 +60,11 @@
//check text list, isn't same in potential, ask user what to do
if (!eachIsEqual(strl)) {
- ConductorAutoNumerotationWidget canw(c_list, conductor -> diagramEditor());
- ConductorAutoNumerotation can(conductor);
- //connect(&canw, SIGNAL(textIsSelected(QString)), &can, SLOT(applyText(QString)));
- canw.exec();
+ PotentialTextsDialog ptd(conductor, conductor->diagramEditor());
+ if ( ptd.exec() == QDialog::Accepted ) {
+ ConductorAutoNumerotation can(conductor);
+ can.applyText(ptd.selectedText());
+ }
}
}
@@ -118,10 +119,10 @@
}
//the texts isn't identicals
else {
- ConductorAutoNumerotationWidget *canw = new ConductorAutoNumerotationWidget(conductor_list, conductor_ -> diagramEditor());
- /*connect(canw, SIGNAL(textIsSelected(QString)),
- this, SLOT(applyText(QString)));*/
- canw -> exec();
+ PotentialTextsDialog ptd (conductor_, conductor_ -> diagramEditor());
+ if (ptd.exec() == QDialog::Accepted) {
+ applyText(ptd.selectedText());
+ }
}
}
Deleted: trunk/sources/conductorautonumerotationwidget.cpp
===================================================================
--- trunk/sources/conductorautonumerotationwidget.cpp 2014-08-03 23:36:45 UTC (rev 3250)
+++ trunk/sources/conductorautonumerotationwidget.cpp 2014-08-04 14:39:57 UTC (rev 3251)
@@ -1,135 +0,0 @@
-/*
- Copyright 2006-2014 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 "conductorautonumerotationwidget.h"
-
-/**
- * constructor
- */
-ConductorAutoNumerotationWidget::ConductorAutoNumerotationWidget(QSet<Conductor *> cl, QWidget *parent) :
- QDialog (parent),
- c_list(cl)
-{
-#ifdef Q_WS_MAC
- setWindowFlags(Qt::Sheet);
-#endif
- buildInterface();
-}
-
-/**
- * @brief ConductorAutoNumerotationWidget::buildInterface
- */
-void ConductorAutoNumerotationWidget::buildInterface() {
- QVBoxLayout *mainlayout = new QVBoxLayout;
- QGroupBox *potential_groupbox = new QGroupBox(tr("Textes de potentiel"), this);
- QVBoxLayout *vlayout = new QVBoxLayout;
-
- QLabel *label= new QLabel(tr("Les textes de ce potentiel \351lectrique ne sont pas identiques.\n"
- "Appliquer un texte \340 l'ensemble de ces conducteurs?"), this);
- vlayout -> addWidget(label);
-
- //map the signal for each radio button create in buildRadioList
- sm_ = new QSignalMapper(this);
- connect(sm_, SIGNAL(mapped(QString)), this, SLOT(setText(QString)));
- vlayout -> addLayout(buildRadioList());
-
- potential_groupbox -> setLayout(vlayout);
- mainlayout -> addWidget(potential_groupbox);
-
- QDialogButtonBox *dbb = new QDialogButtonBox(QDialogButtonBox::Cancel | QDialogButtonBox::Yes, Qt::Horizontal, this);
- connect(dbb, SIGNAL(rejected()),
- this, SLOT(reject()));
- connect(dbb, SIGNAL(accepted()),
- this, SLOT(accept()));
-
- mainlayout->addWidget(dbb);
- setLayout(mainlayout);
-}
-
-/**
- * @brief ConductorAutoNumerotationWidget::buildRadioList
- *construit toute la partie de l'interface contenant les boutons radio permetant le choix du texte a appliquer
- * @return un layout contenant les boutons radio
- */
-QVBoxLayout* ConductorAutoNumerotationWidget::buildRadioList() {
- QVBoxLayout *radioLayout = new QVBoxLayout;
- QHBoxLayout *otherLayout = new QHBoxLayout;
-
- //create a new radio button for each text of @conductorList
- QMultiMap<int, QString> conductorlist = conductorsTextToMap(c_list);
- for (QMultiMap<int, QString>::ConstIterator it = conductorlist.constEnd()-1; it != conductorlist.constBegin()-1; --it) {
- QRadioButton *rb= new QRadioButton(it.value() + tr(" : est pr\351sent ") + QString::number(it.key()) + tr(" fois."), this);
- if (it == conductorlist.constEnd()-1) {
- rb -> setChecked(true);
- text_ = it.value();
- }
- //connect the button to mapper @sm_
- connect(rb, SIGNAL(clicked()),
- sm_, SLOT(map()));
- sm_ -> setMapping(rb, it.value());
- radioLayout -> addWidget(rb);
- }
-
- //create the "other" radio button and is text field
- QRadioButton *other= new QRadioButton(tr("Autre"), this);
- text_field = new QLineEdit(this);
- text_field -> setEnabled(false);
- connect(other, SIGNAL(toggled(bool)), text_field, SLOT(setEnabled(bool)));
- otherLayout -> addWidget(other);
- otherLayout -> addWidget(text_field);
- radioLayout -> addLayout(otherLayout);
- return radioLayout;
-}
-
-/**
- * @param csl liste des conducteurs a analyser
- * @return QMultiMap avec le nombre de conducteurs possedant le même texte en clee et le texte en question comme valeur
- */
-QMultiMap <int, QString> ConductorAutoNumerotationWidget::conductorsTextToMap(QSet<Conductor *> csl) {
- QStringList textList;
- foreach(Conductor *c, csl) textList << c -> text();
-
- QMultiMap<int, QString> conductorlist;
- while (!textList.size() == 0) {
- QString t = textList.at(0);
- int n = textList.count(t);
- textList.removeAll(t);
- conductorlist.insert(n, t);
- }
- return conductorlist;
-}
-
-/**
- * @brief ConductorAutoNumerotationWidget::setText
- * enregistre le texte @t passé en parametre
- */
-void ConductorAutoNumerotationWidget::setText(QString t) {
- text_ = t;
-}
-
-/**
- * @brief ConductorAutoNumerotationWidget::accept
- *action executé lors de l'appuis sur le bouton 'oui'
- */
-void ConductorAutoNumerotationWidget::accept() {
- if (text_field -> isEnabled()) {
- emit textIsSelected(text_field -> text());
- }
- else
- emit textIsSelected(text_);
- close();
-}
Deleted: trunk/sources/conductorautonumerotationwidget.h
===================================================================
--- trunk/sources/conductorautonumerotationwidget.h 2014-08-03 23:36:45 UTC (rev 3250)
+++ trunk/sources/conductorautonumerotationwidget.h 2014-08-04 14:39:57 UTC (rev 3251)
@@ -1,38 +0,0 @@
-#ifndef CONDUCTORAUTONUMEROTATIONWIDGET_H
-#define CONDUCTORAUTONUMEROTATIONWIDGET_H
-
-#include <QtGui>
-#include <QSet>
-#include <QMultiMap>
-#include <QString>
-#include "qetgraphicsitem/conductor.h"
-#include "diagram.h"
-
-class ConductorAutoNumerotationWidget : public QDialog
-{
- Q_OBJECT
- public:
- explicit ConductorAutoNumerotationWidget(QSet <Conductor *>, QWidget *parent = 0);
- QMultiMap <int, QString> conductorsTextToMap (QSet <Conductor *>);
-
- public slots:
- void setText (QString);
- void accept();
-
- signals:
- void textIsSelected (QString);
-
- private:
- //methods
- void buildInterface();
- QVBoxLayout* buildRadioList();
-
- //attributes
- QSet<Conductor *> c_list; //liste des conducteurs au même potentiel
- QLineEdit *text_field;
- QString text_;
- QSignalMapper *sm_;
-
-};
-
-#endif // CONDUCTORAUTONUMEROTATIONWIDGET_H
Modified: trunk/sources/diagram.cpp
===================================================================
--- trunk/sources/diagram.cpp 2014-08-03 23:36:45 UTC (rev 3250)
+++ trunk/sources/diagram.cpp 2014-08-04 14:39:57 UTC (rev 3251)
@@ -339,10 +339,15 @@
border_and_titleblock.titleBlockToXml(racine);
border_and_titleblock.borderToXml(racine);
- // type de conducteur par defaut
+ // Default conductor properties
QDomElement default_conductor = document.createElement("defaultconductor");
defaultConductorProperties.toXml(default_conductor);
racine.appendChild(default_conductor);
+
+ // Conductor autonum
+ if (!m_conductors_autonum_name.isEmpty()) {
+ racine.setAttribute("conductorAutonum", m_conductors_autonum_name);
+ }
}
document.appendChild(racine);
@@ -494,28 +499,34 @@
*/
bool Diagram::fromXml(QDomElement &document, QPointF position, bool consider_informations, DiagramContent *content_ptr) {
QDomElement root = document;
- // le premier element doit etre un schema
+ // The first element must be a diagram
if (root.tagName() != "diagram") return(false);
- // lecture des attributs de ce schema
+ // Read attributes of this diagram
if (consider_informations) {
+ // Version of diagram
bool conv_ok;
qreal version_value = root.attribute("version").toDouble(&conv_ok);
if (conv_ok) {
diagram_qet_version_ = version_value;
}
+ // Load border and titleblock
border_and_titleblock.titleBlockFromXml(root);
border_and_titleblock.borderFromXml(root);
- // repere le permier element "defaultconductor"
+ // Find the element "defaultconductor".
+ // If found, load default conductor properties.
QDomElement default_conductor_elmt = root.firstChildElement("defaultconductor");
if (!default_conductor_elmt.isNull()) {
defaultConductorProperties.fromXml(default_conductor_elmt);
}
+
+ // Load the autonum
+ m_conductors_autonum_name = root.attribute("conductorAutonum");
}
- // si la racine n'a pas d'enfant : le chargement est fini (schema vide)
+ // if child haven't got a child, loading is finish (diagram is empty)
if (root.firstChild().isNull()) {
write(document);
return(true);
Added: trunk/sources/ui/potentialtextsdialog.cpp
===================================================================
--- trunk/sources/ui/potentialtextsdialog.cpp (rev 0)
+++ trunk/sources/ui/potentialtextsdialog.cpp 2014-08-04 14:39:57 UTC (rev 3251)
@@ -0,0 +1,104 @@
+/*
+ Copyright 2006-2014 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>
+
+/**
+ * @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\351sent ") + 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;
+}
Added: trunk/sources/ui/potentialtextsdialog.h
===================================================================
--- trunk/sources/ui/potentialtextsdialog.h (rev 0)
+++ trunk/sources/ui/potentialtextsdialog.h 2014-08-04 14:39:57 UTC (rev 3251)
@@ -0,0 +1,61 @@
+/*
+ Copyright 2006-2014 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
Added: trunk/sources/ui/potentialtextsdialog.ui
===================================================================
--- trunk/sources/ui/potentialtextsdialog.ui (rev 0)
+++ trunk/sources/ui/potentialtextsdialog.ui 2014-08-04 14:39:57 UTC (rev 3251)
@@ -0,0 +1,92 @@
+<?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>400</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::Cancel|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>