[qet] qet/qet: [5641] Search and replace : conductors properties can now be replaced

[ Thread Index | Date Index | More lists.tuxfamily.org/qet Archives ]


Revision: 5641
Author:   blacksun
Date:     2018-12-09 12:50:07 +0100 (Sun, 09 Dec 2018)
Log Message:
-----------
Search and replace : conductors properties can now be replaced

Modified Paths:
--------------
    trunk/sources/SearchAndReplace/searchandreplaceworker.cpp
    trunk/sources/SearchAndReplace/searchandreplaceworker.h
    trunk/sources/SearchAndReplace/ui/searchandreplacewidget.cpp
    trunk/sources/SearchAndReplace/ui/searchandreplacewidget.h
    trunk/sources/SearchAndReplace/ui/searchandreplacewidget.ui

Added Paths:
-----------
    trunk/sources/SearchAndReplace/ui/replaceconductordialog.cpp
    trunk/sources/SearchAndReplace/ui/replaceconductordialog.h
    trunk/sources/SearchAndReplace/ui/replaceconductordialog.ui

Modified: trunk/sources/SearchAndReplace/searchandreplaceworker.cpp
===================================================================
--- trunk/sources/SearchAndReplace/searchandreplaceworker.cpp	2018-12-08 19:36:58 UTC (rev 5640)
+++ trunk/sources/SearchAndReplace/searchandreplaceworker.cpp	2018-12-09 11:50:07 UTC (rev 5641)
@@ -1,4 +1,4 @@
-/*
+/*
 	Copyright 2006-2018 The QElectroTech Team
 	This file is part of QElectroTech.
 	
@@ -23,18 +23,12 @@
 #include "qetapp.h"
 #include "independenttextitem.h"
 #include "diagramcommands.h"
+#include "QPropertyUndoCommand/qpropertyundocommand.h"
 
 
 SearchAndReplaceWorker::SearchAndReplaceWorker()
-{}
-
-/**
- * @brief SearchAndReplaceWorker::clear
- * All registred properties
- */
-void SearchAndReplaceWorker::clear()
 {
-	m_titleblock_properties = TitleBlockProperties();
+	m_conductor_properties = invalidConductorProperties();
 }
 
 /**
@@ -168,7 +162,7 @@
 		}
 	}
 	
-	project_->undoStack()->beginMacro(QObject::tr("Chercher/remplacer les propriétés d'éléments"));
+	project_->undoStack()->beginMacro(QObject::tr("Chercher/remplacer les propriétés d'éléments."));
 	for (Element *elmt : list)
 	{
 			//We apply change only for master, slave, and terminal element.
@@ -244,3 +238,134 @@
 	list.append(text);
 	replaceIndiText(list);
 }
+
+/**
+ * @brief SearchAndReplaceWorker::replaceConductor
+ * Replace all properties of each conductor in @list
+ * All conductor must belong to the same project, if not this function do nothing.
+ * All change are made through a undo command append to undo list of the project.
+ * @param list
+ */
+void SearchAndReplaceWorker::replaceConductor(QList<Conductor *> list)
+{
+	if (list.isEmpty() || !list.first()->diagram()) {
+		return;
+	}
+	
+	QETProject *project_ = list.first()->diagram()->project();
+	for (Conductor *c : list) {
+		if (!c->diagram() ||
+			c->diagram()->project() != project_) {
+			return;
+		}
+	}
+	
+	project_->undoStack()->beginMacro(QObject::tr("Chercher/remplacer les propriétés de conducteurs."));
+	for (Conductor *c : list)
+	{
+		ConductorProperties cp = applyChange(c->properties(), m_conductor_properties);
+		
+		if (cp != c->properties())
+		{
+			QSet <Conductor *> conductors_list = c->relatedPotentialConductors(true);
+			conductors_list << c;
+			for (Conductor *cc : conductors_list)
+			{
+				QVariant old_value, new_value;
+				old_value.setValue(cc->properties());
+				new_value.setValue(cp);
+				project_->undoStack()->push(new QPropertyUndoCommand(cc, "properties", old_value, new_value));
+			}
+		}
+	}
+	project_->undoStack()->endMacro();
+}
+
+void SearchAndReplaceWorker::replaceConductor(Conductor *conductor)
+{
+	QList<Conductor *>list;
+	list.append(conductor);
+	replaceConductor(list);
+}
+
+/**
+ * @brief SearchAndReplaceWorker::setupLineEdit
+ * With search and replace, when the variable to edit is a text,
+ * the editor is always the same no matter if it is for a folio, element or conductor.
+ * The editor is a QLineEdit to edit the text and checkbox to erase the text if checked.
+ * This function fill the editor
+ * @param l
+ * @param cb
+ * @param str
+ */
+void SearchAndReplaceWorker::setupLineEdit(QLineEdit *l, QCheckBox *cb, QString str)
+{
+	l->setText(str);
+	cb->setChecked(str == eraseText() ? true : false);
+}
+
+ConductorProperties SearchAndReplaceWorker::invalidConductorProperties()
+{
+	ConductorProperties cp;
+	
+		//init with invalid value the conductor properties
+	cp.text_size = 0;
+	cp.text.clear();
+	cp.m_vertical_alignment = Qt::AlignAbsolute;
+	cp.m_horizontal_alignment = Qt::AlignAbsolute;
+	cp.verti_rotate_text = -1;
+	cp.horiz_rotate_text = -1;
+	cp.color = QColor();
+	cp.style = Qt::NoPen;
+	cp.cond_size = 0;
+	cp.m_color_2 = QColor();
+	cp.m_dash_size = 0;
+	
+	return cp;
+}
+
+/**
+ * @brief SearchAndReplaceWorker::applyChange
+ * @param original : the original properties
+ * @param change : the change properties, to be merged with @original
+ * @return a new conductor properties with the change applyed.
+ */
+ConductorProperties SearchAndReplaceWorker::applyChange(const ConductorProperties &original, const ConductorProperties &change)
+{
+	ConductorProperties new_properties = original;
+	
+	if (change.text_size > 2) {new_properties.text_size = change.text_size;}
+	new_properties.m_formula = applyChange(new_properties.m_formula, change.m_formula);
+	new_properties.text = applyChange(new_properties.text, change.text);
+	new_properties.m_show_text = change.m_show_text;
+	new_properties.m_function = applyChange(new_properties.m_function, change.m_function);
+	new_properties.m_tension_protocol = applyChange(new_properties.m_tension_protocol, change.m_tension_protocol);
+	if(change.m_vertical_alignment == Qt::AlignLeft ||
+	   change.m_vertical_alignment == Qt::AlignRight) {new_properties.m_vertical_alignment = change.m_vertical_alignment;}
+	if(change.m_horizontal_alignment == Qt::AlignTop ||
+	   change.m_horizontal_alignment == Qt::AlignBottom) {new_properties.m_horizontal_alignment = change.m_horizontal_alignment;}
+	if (change.verti_rotate_text >= 0) {new_properties.verti_rotate_text = change.verti_rotate_text;}
+	if (change.horiz_rotate_text >= 0) {new_properties.horiz_rotate_text = change.horiz_rotate_text;}
+	if (change.color.isValid()) {new_properties.color = change.color;}
+	if (change.style != Qt::NoPen) {new_properties.style = change.style;}
+	if (change.cond_size >= 0.4) {new_properties.cond_size = change.cond_size;}
+	new_properties.m_bicolor = change.m_bicolor;
+	if (change.m_color_2.isValid()) {new_properties.m_color_2 = change.m_color_2;}
+	if (change.m_dash_size >= 2) {new_properties.m_dash_size = change.m_dash_size;}
+	new_properties.singleLineProperties = change.singleLineProperties;
+	
+	return new_properties;
+}
+
+/**
+ * @brief SearchAndReplaceWorker::applyChange
+ * @param original : the original string
+ * @param change : the changed string:
+ * @return the string to be use in the properties
+ */
+QString SearchAndReplaceWorker::applyChange(const QString &original, const QString &change)
+{
+	if (change.isEmpty())           {return original;}
+	else if (change == eraseText()) {return QString();}
+	else                            {return change;}
+}

Modified: trunk/sources/SearchAndReplace/searchandreplaceworker.h
===================================================================
--- trunk/sources/SearchAndReplace/searchandreplaceworker.h	2018-12-08 19:36:58 UTC (rev 5640)
+++ trunk/sources/SearchAndReplace/searchandreplaceworker.h	2018-12-09 11:50:07 UTC (rev 5641)
@@ -21,10 +21,14 @@
 #include <QDate>
 
 #include "titleblockproperties.h"
+#include "conductorproperties.h"
 
 class Diagram;
 class Element;
 class IndependentTextItem;
+class Conductor;
+class QLineEdit;
+class QCheckBox;
 
 /**
  * @brief The SearchAndReplaceWorker class
@@ -35,7 +39,6 @@
 	public:
 		SearchAndReplaceWorker();
 		
-		void clear();
 		void replaceDiagram(QList <Diagram *> diagram_list);
 		void replaceDiagram(Diagram *diagram);
 		void replaceElement(QList <Element *> list);
@@ -42,14 +45,22 @@
 		void replaceElement(Element *element);
 		void replaceIndiText(QList<IndependentTextItem *> list);
 		void replaceIndiText(IndependentTextItem *text);
+		void replaceConductor(QList <Conductor *> list);
+		void replaceConductor(Conductor *conductor);
 		
 		static QString eraseText() {return QString("XXXXXXXXXXXXXXXXXXX");}
 		static QDate eraseDate() {return QDate(1900, 1, 1);}
+		static void setupLineEdit(QLineEdit *l, QCheckBox *cb, QString str);
+		static ConductorProperties invalidConductorProperties();
 		
+		static ConductorProperties applyChange(const ConductorProperties &original, const ConductorProperties &change);
+		static QString applyChange(const QString &original, const QString &change);
+		
 	private:
 		TitleBlockProperties m_titleblock_properties;
 		DiagramContext m_element_context;
 		QString m_indi_text;
+		ConductorProperties m_conductor_properties;
 		
 		friend class SearchAndReplaceWidget;
 };

Added: trunk/sources/SearchAndReplace/ui/replaceconductordialog.cpp
===================================================================
--- trunk/sources/SearchAndReplace/ui/replaceconductordialog.cpp	                        (rev 0)
+++ trunk/sources/SearchAndReplace/ui/replaceconductordialog.cpp	2018-12-09 11:50:07 UTC (rev 5641)
@@ -0,0 +1,266 @@
+/*
+	Copyright 2006-2018 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 "replaceconductordialog.h"
+#include "ui_replaceconductordialog.h"
+#include "searchandreplaceworker.h"
+
+#include <QPainter>
+#include <QColorDialog>
+
+typedef SearchAndReplaceWorker sarw;
+
+/**
+ * @brief ReplaceConductorDialog::ReplaceConductorDialog
+ * @param parent
+ */
+ReplaceConductorDialog::ReplaceConductorDialog(const ConductorProperties &properties, QWidget *parent) :
+	QDialog(parent),
+	ui(new Ui::ReplaceConductorDialog)
+{
+	ui->setupUi(this);
+	initWidget();
+	setProperties(properties);
+}
+
+ReplaceConductorDialog::~ReplaceConductorDialog()
+{
+	delete ui;
+}
+
+/**
+ * @brief ReplaceConductorDialog::updatePreview
+ * Update the preview for single line
+ * @param b true: update from the value displayed by this widget
+ *          false: update from the properties given at the constructor of this widget
+ */
+void ReplaceConductorDialog::updatePreview(bool b)
+{
+	const QRect pixmap_rect(0, 0, 96, 96);
+	QPixmap pixmap(pixmap_rect.width(), pixmap_rect.height());
+	QPainter painter;
+	painter.begin(&pixmap);
+	painter.eraseRect(pixmap_rect);
+	painter.drawRect(pixmap_rect.adjusted(0,0,-1,-1));
+	painter.drawLine(QLineF(0, pixmap_rect.height() / 2, pixmap_rect.width(), pixmap_rect.height() / 2));
+
+	if (b) {
+		properties().singleLineProperties.draw(&painter, QET::Horizontal, pixmap_rect);
+	} else {
+		m_properties.singleLineProperties.draw(&painter, QET::Horizontal, pixmap_rect);
+	}
+
+	painter.end();
+	ui -> m_preview_label -> setPixmap(pixmap);
+}
+
+void ReplaceConductorDialog::setProperties(const ConductorProperties &properties)
+{
+	m_properties = properties;
+	
+	if (m_properties.type == ConductorProperties::Single) {
+		ui->m_singlewire_gb->setChecked(true);
+	} else {
+		ui->m_multi_gb->setChecked(true);
+	}
+	ui->m_text_size_sb->setValue(m_properties.text_size);
+	ui->m_show_text->setChecked(m_properties.m_show_text);
+	sarw::setupLineEdit(ui->m_formula_le, ui->m_erase_formula_cb, m_properties.m_formula);
+	sarw::setupLineEdit(ui->m_text_le, ui->m_erase_text_cb, m_properties.text);
+	sarw::setupLineEdit(ui->m_function_le, ui->m_erase_function_cb, m_properties.m_function);
+	sarw::setupLineEdit(ui->m_tension_protocol_le, ui->m_erase_tension_protocol_cb, m_properties.m_tension_protocol);
+	switch (m_properties.m_vertical_alignment) {
+		case Qt::AlignLeft: ui->m_vertical_align_cb->setCurrentIndex(1);break;
+		case Qt::AlignRight: ui->m_vertical_align_cb->setCurrentIndex(2);break;
+		default: ui->m_vertical_align_cb->setCurrentIndex(0); break;
+	}
+	switch (m_properties.m_horizontal_alignment) {
+		case Qt::AlignTop: ui->m_horizontal_align_cb->setCurrentIndex(1); break;
+		case Qt::AlignBottom: ui->m_horizontal_align_cb->setCurrentIndex(2); break;
+		default: ui->m_horizontal_align_cb->setCurrentIndex(0); break;
+	}
+	ui->m_vertical_angle_sb->setValue(m_properties.verti_rotate_text);
+	ui->m_horizontal_angle_sb->setValue(m_properties.horiz_rotate_text);
+	if (m_properties.color.isValid())
+	{
+		setColorButton(m_properties.color);
+		ui->m_mod_color_cb->setChecked(true);
+	}
+	int index = ui->m_line_style_cb->findData(QPen(m_properties.style));
+	if (index != -1) {
+		ui->m_line_style_cb->setCurrentIndex(index);
+	}
+	ui->m_second_color_gb->setChecked(m_properties.m_bicolor);
+	if (m_properties.m_color_2.isValid())
+	{
+		setColorButton2(m_properties.m_color_2);
+		ui->m_mod_color_2_cb->setChecked(true);
+	}
+	ui->m_color_2_dash_size_sb->setValue(m_properties.m_dash_size);
+	
+	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());
+	
+	updatePreview(false);
+}
+
+/**
+ * @brief ReplaceConductorDialog::properties
+ * @return the properties edited by this widget
+ */
+ConductorProperties ReplaceConductorDialog::properties() const
+{
+	ConductorProperties properties_;
+	if (ui->m_multi_gb->isChecked()) {
+		properties_.type = ConductorProperties::Multi;
+	} else {
+		properties_.type = ConductorProperties::Single;
+	}
+	
+	properties_.text_size = ui->m_text_size_sb->value();
+	properties_.m_formula = ui->m_formula_le->text();
+	properties_.text = ui->m_text_le->text();
+	properties_.m_show_text = ui->m_show_text->isChecked();
+	properties_.m_function = ui->m_function_le->text();
+	properties_.m_tension_protocol = ui->m_tension_protocol_le->text();
+	switch (ui->m_vertical_align_cb->currentIndex()) {
+		case 0: properties_.m_vertical_alignment = Qt::AlignAbsolute; break;
+		case 1: properties_.m_vertical_alignment = Qt::AlignLeft;     break;
+		case 2: properties_.m_vertical_alignment = Qt::AlignRight;    break;
+		default:break;
+	}
+	switch (ui->m_horizontal_align_cb->currentIndex()) {
+		case 0: properties_.m_horizontal_alignment = Qt::AlignAbsolute; break;
+		case 1: properties_.m_horizontal_alignment = Qt::AlignTop; break;
+		case 2: properties_.m_horizontal_alignment = Qt::AlignBottom; break;
+		default: break;
+	}
+	properties_.verti_rotate_text = ui->m_vertical_angle_sb->value();
+	properties_.horiz_rotate_text = ui->m_horizontal_angle_sb->value();
+	properties_.color = ui->m_mod_color_cb->isChecked() ? ui->m_color_pb->palette().color(QPalette::Button) : QColor();
+	properties_.style = ui->m_line_style_cb->itemData(ui->m_line_style_cb->currentIndex()).value<QPen>().style();
+	properties_.cond_size = ui->m_cond_size_sb->value();
+	properties_.m_bicolor = ui->m_second_color_gb->isChecked();
+	properties_.m_color_2 = ui->m_mod_color_2_cb->isChecked() ? ui->m_color_2_pb->palette().color(QPalette::Button) : QColor();
+	properties_.m_dash_size = ui->m_color_2_dash_size_sb->value();
+	
+	properties_.singleLineProperties.hasGround  = ui->m_earth_cb->isChecked();
+	properties_.singleLineProperties.hasNeutral = ui->m_neutral_cb->isChecked();
+	properties_.singleLineProperties.is_pen     = ui->m_pen_cb->isChecked();
+	properties_.singleLineProperties.setPhasesCount(ui->m_phase_cb->isChecked() ? ui->m_phase_sb->value() : 0);
+	
+	return properties_;
+}
+
+void ReplaceConductorDialog::initWidget()
+{
+	connect(ui->m_button_box, &QDialogButtonBox::clicked, [this](QAbstractButton *button_) {
+		this->done(ui->m_button_box->buttonRole(button_));
+	});
+	
+	ui->m_update_preview_pb->setHidden(true);
+	
+	ui->m_line_style_cb->addItem(tr("Inchanger"), QPen(Qt::NoPen));
+	ui->m_line_style_cb->addItem(tr("Trait plein", "conductor style: solid line"), QPen(Qt::SolidLine));
+	ui->m_line_style_cb->addItem(tr("Trait en pointillés", "conductor style: dashed line"), QPen(Qt::DashLine));
+	ui->m_line_style_cb->addItem(tr("Traits et points", "conductor style: dashed and dotted line"), QPen(Qt::DashDotLine));
+	
+	connect(ui->m_multi_gb,      &QGroupBox::toggled,     [this](bool toggle)  {this->ui->m_singlewire_gb->setChecked(!toggle);});
+	connect(ui->m_singlewire_gb, &QGroupBox::toggled,     [this](bool toggle)  {this->ui->m_multi_gb->setChecked(!toggle);});
+	connect(ui->m_formula_le,    &QLineEdit::textChanged, [this](QString text) {this->ui->m_text_le->setEnabled(text.isEmpty());});
+	ui->m_multi_gb->setChecked(true);
+	ui->m_singlewire_gb->setChecked(true);
+}
+
+void ReplaceConductorDialog::setColorButton(const QColor &color)
+{
+	QPalette palette;
+	palette.setColor(QPalette::Button, color);
+	ui->m_color_pb->setStyleSheet(QString("background-color: %1; min-height: 1.5em; border-style: outset; border-width: 2px; border-color: gray; border-radius: 4px;").arg(color.name()));
+}
+
+void ReplaceConductorDialog::setColorButton2(const QColor &color)
+{
+	QPalette palette;
+	palette.setColor(QPalette::Button, color);
+	ui->m_color_2_pb->setStyleSheet(QString("background-color: %1; min-height: 1.5em; border-style: outset; border-width: 2px; border-color: gray; border-radius: 4px;").arg(color.name()));
+}
+
+void ReplaceConductorDialog::on_m_erase_formula_cb_clicked()
+{
+    ui->m_formula_le->setText(ui->m_erase_formula_cb->isChecked() ? SearchAndReplaceWorker::eraseText() : QString());
+	ui->m_formula_le->setDisabled(ui->m_erase_formula_cb->isChecked());
+}
+
+void ReplaceConductorDialog::on_m_erase_text_cb_clicked()
+{
+	ui->m_text_le->setText(ui->m_erase_text_cb->isChecked() ? SearchAndReplaceWorker::eraseText() : QString());
+	ui->m_text_le->setDisabled(ui->m_erase_text_cb->isChecked());
+}
+
+void ReplaceConductorDialog::on_m_erase_function_cb_clicked()
+{
+	ui->m_function_le->setText(ui->m_erase_function_cb->isChecked() ? SearchAndReplaceWorker::eraseText() : QString());
+	ui->m_function_le->setDisabled(ui->m_erase_function_cb->isChecked());
+}
+
+void ReplaceConductorDialog::on_m_erase_tension_protocol_cb_clicked()
+{
+	ui->m_tension_protocol_le->setText(ui->m_erase_tension_protocol_cb->isChecked() ? SearchAndReplaceWorker::eraseText() : QString());
+	ui->m_tension_protocol_le->setDisabled(ui->m_erase_tension_protocol_cb->isChecked());
+}
+
+void ReplaceConductorDialog::on_m_earth_cb_toggled(bool checked)
+{
+	if (checked && ui->m_neutral_cb -> isChecked()) {
+		 ui -> m_pen_cb -> setEnabled(true);
+	} else {
+		ui -> m_pen_cb -> setDisabled(true);
+	}
+}
+
+void ReplaceConductorDialog::on_m_neutral_cb_toggled(bool checked)
+{
+	if (checked && ui->m_earth_cb->isChecked()) {
+		ui->m_pen_cb->setEnabled(true);
+	} else {
+		ui->m_pen_cb->setDisabled(true);
+	}
+}
+
+void ReplaceConductorDialog::on_m_update_preview_pb_clicked() {
+    updatePreview();
+}
+
+void ReplaceConductorDialog::on_m_color_pb_clicked()
+{
+	QColor color = QColorDialog::getColor(m_properties.color, this);
+	if (color.isValid()) {
+		setColorButton(color);
+	}
+}
+
+void ReplaceConductorDialog::on_m_color_2_pb_clicked()
+{
+	QColor color = QColorDialog::getColor(m_properties.m_color_2, this);
+	if (color.isValid()) {
+		setColorButton2(color);
+	}
+}

Added: trunk/sources/SearchAndReplace/ui/replaceconductordialog.h
===================================================================
--- trunk/sources/SearchAndReplace/ui/replaceconductordialog.h	                        (rev 0)
+++ trunk/sources/SearchAndReplace/ui/replaceconductordialog.h	2018-12-09 11:50:07 UTC (rev 5641)
@@ -0,0 +1,65 @@
+/*
+	Copyright 2006-2018 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 REPLACECONDUCTORDIALOG_H
+#define REPLACECONDUCTORDIALOG_H
+
+#include "conductorproperties.h"
+
+#include <QDialog>
+
+namespace Ui {
+	class ReplaceConductorDialog;
+}
+
+/**
+ * @brief The ReplaceConductorDialog class
+ * A Qdialog to edit a conductor properties, use for the search and replace feature of QElectrotech.
+ */
+class ReplaceConductorDialog : public QDialog
+{
+	Q_OBJECT
+	
+	public:
+		explicit ReplaceConductorDialog(const ConductorProperties &properties, QWidget *parent = 0);
+		~ReplaceConductorDialog();
+		void updatePreview(bool b=true);
+		void setProperties(const ConductorProperties &properties);
+		ConductorProperties properties() const;
+		
+	private:
+		void initWidget();
+		void setColorButton(const QColor &color);
+		void setColorButton2(const QColor &color);
+	
+	private slots:
+		void on_m_erase_formula_cb_clicked();
+		void on_m_erase_text_cb_clicked();
+		void on_m_erase_function_cb_clicked();
+		void on_m_erase_tension_protocol_cb_clicked();
+		void on_m_earth_cb_toggled(bool checked);
+		void on_m_neutral_cb_toggled(bool checked);
+		void on_m_update_preview_pb_clicked();
+		void on_m_color_pb_clicked();
+		void on_m_color_2_pb_clicked();
+		
+		private:
+		Ui::ReplaceConductorDialog *ui;
+		ConductorProperties m_properties;
+};
+
+#endif // REPLACECONDUCTORDIALOG_H

Added: trunk/sources/SearchAndReplace/ui/replaceconductordialog.ui
===================================================================
--- trunk/sources/SearchAndReplace/ui/replaceconductordialog.ui	                        (rev 0)
+++ trunk/sources/SearchAndReplace/ui/replaceconductordialog.ui	2018-12-09 11:50:07 UTC (rev 5641)
@@ -0,0 +1,753 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ReplaceConductorDialog</class>
+ <widget class="QDialog" name="ReplaceConductorDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>636</width>
+    <height>523</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QTabWidget" name="tabWidget">
+     <property name="currentIndex">
+      <number>0</number>
+     </property>
+     <widget class="QWidget" name="tab">
+      <attribute name="title">
+       <string>Type</string>
+      </attribute>
+      <layout class="QVBoxLayout" name="verticalLayout_2">
+       <item>
+        <widget class="QGroupBox" name="m_multi_gb">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="title">
+          <string>&amp;Multifilaire</string>
+         </property>
+         <property name="checkable">
+          <bool>true</bool>
+         </property>
+         <property name="checked">
+          <bool>false</bool>
+         </property>
+         <layout class="QGridLayout" name="gridLayout" columnstretch="0,1,0,0,0,0">
+          <item row="7" column="1">
+           <widget class="QComboBox" name="m_horizontal_align_cb">
+            <item>
+             <property name="text">
+              <string>Inchanger</string>
+             </property>
+            </item>
+            <item>
+             <property name="text">
+              <string>En haut</string>
+             </property>
+            </item>
+            <item>
+             <property name="text">
+              <string>En bas</string>
+             </property>
+            </item>
+           </widget>
+          </item>
+          <item row="7" column="0">
+           <widget class="QLabel" name="label_8">
+            <property name="text">
+             <string>Texte sur conducteur horizontal :</string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="1" colspan="4">
+           <widget class="QLineEdit" name="m_formula_le">
+            <property name="placeholderText">
+             <string>Non modifier</string>
+            </property>
+            <property name="clearButtonEnabled">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="0">
+           <widget class="QLabel" name="label_5">
+            <property name="text">
+             <string>Tension / protocol :</string>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="1" colspan="4">
+           <widget class="QLineEdit" name="m_function_le">
+            <property name="placeholderText">
+             <string>Non modifier</string>
+            </property>
+            <property name="clearButtonEnabled">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="5">
+           <widget class="QCheckBox" name="m_erase_text_cb">
+            <property name="toolTip">
+             <string>Supprimer ce texte</string>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="0">
+           <widget class="QLabel" name="label_4">
+            <property name="text">
+             <string>Fonction :</string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="0">
+           <widget class="QLabel" name="label_2">
+            <property name="text">
+             <string>Formule du texte :</string>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="4">
+           <widget class="QCheckBox" name="m_show_text">
+            <property name="toolTip">
+             <string>Texte visible</string>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="7" column="2">
+           <widget class="QLabel" name="label_9">
+            <property name="text">
+             <string>Angle :</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="1" colspan="4">
+           <widget class="QLineEdit" name="m_tension_protocol_le">
+            <property name="placeholderText">
+             <string>Non modifier</string>
+            </property>
+            <property name="clearButtonEnabled">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1" colspan="4">
+           <widget class="QSpinBox" name="m_text_size_sb">
+            <property name="specialValueText">
+             <string>Inchanger</string>
+            </property>
+            <property name="accelerated">
+             <bool>false</bool>
+            </property>
+            <property name="minimum">
+             <number>2</number>
+            </property>
+            <property name="value">
+             <number>2</number>
+            </property>
+           </widget>
+          </item>
+          <item row="6" column="0">
+           <widget class="QLabel" name="label_6">
+            <property name="text">
+             <string>Texte sur conducteur vertical :</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0">
+           <widget class="QLabel" name="label">
+            <property name="text">
+             <string>Taille du texte :</string>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="0">
+           <widget class="QLabel" name="label_3">
+            <property name="text">
+             <string>Texte :</string>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="5">
+           <widget class="QCheckBox" name="m_erase_tension_protocol_cb">
+            <property name="toolTip">
+             <string>Supprimer ce texte</string>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="5">
+           <widget class="QCheckBox" name="m_erase_function_cb">
+            <property name="toolTip">
+             <string>Supprimer ce texte</string>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="6" column="1">
+           <widget class="QComboBox" name="m_vertical_align_cb">
+            <item>
+             <property name="text">
+              <string>Inchanger</string>
+             </property>
+            </item>
+            <item>
+             <property name="text">
+              <string>À gauche</string>
+             </property>
+            </item>
+            <item>
+             <property name="text">
+              <string>À droite</string>
+             </property>
+            </item>
+           </widget>
+          </item>
+          <item row="2" column="5">
+           <widget class="QCheckBox" name="m_erase_formula_cb">
+            <property name="toolTip">
+             <string>Supprimer ce texte</string>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="6" column="2">
+           <widget class="QLabel" name="label_7">
+            <property name="text">
+             <string>Angle :</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item row="6" column="3" colspan="2">
+           <widget class="QSpinBox" name="m_vertical_angle_sb">
+            <property name="wrapping">
+             <bool>true</bool>
+            </property>
+            <property name="specialValueText">
+             <string>Inchanger</string>
+            </property>
+            <property name="suffix">
+             <string>°</string>
+            </property>
+            <property name="prefix">
+             <string/>
+            </property>
+            <property name="minimum">
+             <number>-1</number>
+            </property>
+            <property name="maximum">
+             <number>359</number>
+            </property>
+            <property name="value">
+             <number>-1</number>
+            </property>
+           </widget>
+          </item>
+          <item row="7" column="3" colspan="2">
+           <widget class="QSpinBox" name="m_horizontal_angle_sb">
+            <property name="wrapping">
+             <bool>true</bool>
+            </property>
+            <property name="specialValueText">
+             <string>Inchanger</string>
+            </property>
+            <property name="suffix">
+             <string>°</string>
+            </property>
+            <property name="minimum">
+             <number>-1</number>
+            </property>
+            <property name="maximum">
+             <number>359</number>
+            </property>
+            <property name="value">
+             <number>-1</number>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="1" colspan="3">
+           <widget class="QLineEdit" name="m_text_le">
+            <property name="placeholderText">
+             <string>Non modifier</string>
+            </property>
+            <property name="clearButtonEnabled">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QGroupBox" name="m_singlewire_gb">
+         <property name="title">
+          <string>Unifilaire</string>
+         </property>
+         <property name="flat">
+          <bool>false</bool>
+         </property>
+         <property name="checkable">
+          <bool>true</bool>
+         </property>
+         <property name="checked">
+          <bool>false</bool>
+         </property>
+         <layout class="QGridLayout" name="gridLayout_5">
+          <item row="1" column="2">
+           <widget class="QCheckBox" name="m_pen_cb">
+            <property name="toolTip">
+             <string>Protective Earth Neutral</string>
+            </property>
+            <property name="text">
+             <string>PEN</string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="1">
+           <widget class="QCheckBox" name="m_phase_cb">
+            <property name="toolTip">
+             <string>Phase</string>
+            </property>
+            <property name="text">
+             <string>phase</string>
+            </property>
+            <property name="icon">
+             <iconset resource="../../../qelectrotech.qrc">
+              <normaloff>:/ico/16x16/phase.png</normaloff>:/ico/16x16/phase.png</iconset>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="3">
+           <widget class="QSpinBox" name="m_phase_sb">
+            <property name="toolTip">
+             <string>Nombre de phase</string>
+            </property>
+            <property name="minimum">
+             <number>1</number>
+            </property>
+            <property name="maximum">
+             <number>3</number>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1">
+           <widget class="QCheckBox" name="m_neutral_cb">
+            <property name="toolTip">
+             <string>Neutre</string>
+            </property>
+            <property name="text">
+             <string>neutre</string>
+            </property>
+            <property name="icon">
+             <iconset resource="../../../qelectrotech.qrc">
+              <normaloff>:/ico/16x16/neutral.png</normaloff>:/ico/16x16/neutral.png</iconset>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="2">
+           <widget class="QSlider" name="m_phase_slider">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="toolTip">
+             <string>Nombre de phase</string>
+            </property>
+            <property name="minimum">
+             <number>1</number>
+            </property>
+            <property name="maximum">
+             <number>3</number>
+            </property>
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1">
+           <widget class="QCheckBox" name="m_earth_cb">
+            <property name="toolTip">
+             <string>Terre</string>
+            </property>
+            <property name="text">
+             <string>terre</string>
+            </property>
+            <property name="icon">
+             <iconset resource="../../../qelectrotech.qrc">
+              <normaloff>:/ico/16x16/ground.png</normaloff>:/ico/16x16/ground.png</iconset>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="0" rowspan="3">
+           <widget class="QLabel" name="m_preview_label">
+            <property name="text">
+             <string>TextLabel</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="2">
+           <widget class="QPushButton" name="m_update_preview_pb">
+            <property name="text">
+             <string>PushButton</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="widget">
+      <attribute name="title">
+       <string>Apparence</string>
+      </attribute>
+      <layout class="QGridLayout" name="gridLayout_2" columnstretch="0,0,1,0">
+       <item row="2" column="1">
+        <widget class="QLabel" name="label_13">
+         <property name="text">
+          <string>Taille :</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="1">
+        <widget class="QLabel" name="label_10">
+         <property name="text">
+          <string>Couleur :</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="2">
+        <widget class="QPushButton" name="m_color_pb">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="1">
+        <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 row="1" column="1">
+        <widget class="QLabel" name="label_11">
+         <property name="text">
+          <string>Style :</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="3">
+        <widget class="QCheckBox" name="m_mod_color_cb">
+         <property name="toolTip">
+          <string>Modifier</string>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="1" colspan="3">
+        <widget class="QGroupBox" name="m_second_color_gb">
+         <property name="title">
+          <string>Couleur secondaire :</string>
+         </property>
+         <property name="checkable">
+          <bool>true</bool>
+         </property>
+         <property name="checked">
+          <bool>false</bool>
+         </property>
+         <layout class="QGridLayout" name="gridLayout_3" columnstretch="0,1,0">
+          <item row="0" column="1">
+           <widget class="QPushButton" name="m_color_2_pb">
+            <property name="enabled">
+             <bool>false</bool>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0">
+           <widget class="QLabel" name="label_14">
+            <property name="text">
+             <string>Taille de trait :</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="0">
+           <widget class="QLabel" name="label_12">
+            <property name="text">
+             <string>Couleur :</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="2">
+           <widget class="QCheckBox" name="m_mod_color_2_cb">
+            <property name="toolTip">
+             <string>Modifier</string>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1" colspan="2">
+           <widget class="QSpinBox" name="m_color_2_dash_size_sb">
+            <property name="specialValueText">
+             <string>Inchanger</string>
+            </property>
+            <property name="suffix">
+             <string>px</string>
+            </property>
+            <property name="minimum">
+             <number>1</number>
+            </property>
+            <property name="value">
+             <number>1</number>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item row="2" column="2" colspan="2">
+        <widget class="QDoubleSpinBox" name="m_cond_size_sb">
+         <property name="specialValueText">
+          <string>Inchanger</string>
+         </property>
+         <property name="minimum">
+          <double>0.200000000000000</double>
+         </property>
+         <property name="singleStep">
+          <double>0.200000000000000</double>
+         </property>
+         <property name="value">
+          <double>0.200000000000000</double>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="2" colspan="2">
+        <widget class="QComboBox" name="m_line_style_cb"/>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="m_button_box">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources>
+  <include location="../../../qelectrotech.qrc"/>
+ </resources>
+ <connections>
+  <connection>
+   <sender>m_mod_color_cb</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>m_color_pb</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>605</x>
+     <y>57</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>328</x>
+     <y>58</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>m_earth_cb</sender>
+   <signal>clicked()</signal>
+   <receiver>m_update_preview_pb</receiver>
+   <slot>click()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>243</x>
+     <y>372</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>392</x>
+     <y>373</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>m_neutral_cb</sender>
+   <signal>clicked()</signal>
+   <receiver>m_update_preview_pb</receiver>
+   <slot>click()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>243</x>
+     <y>404</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>392</x>
+     <y>373</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>m_phase_cb</sender>
+   <signal>clicked()</signal>
+   <receiver>m_update_preview_pb</receiver>
+   <slot>click()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>243</x>
+     <y>434</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>392</x>
+     <y>373</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>m_pen_cb</sender>
+   <signal>clicked()</signal>
+   <receiver>m_update_preview_pb</receiver>
+   <slot>click()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>392</x>
+     <y>404</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>392</x>
+     <y>373</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>m_phase_slider</sender>
+   <signal>valueChanged(int)</signal>
+   <receiver>m_update_preview_pb</receiver>
+   <slot>click()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>392</x>
+     <y>434</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>392</x>
+     <y>373</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>m_phase_sb</sender>
+   <signal>valueChanged(int)</signal>
+   <receiver>m_update_preview_pb</receiver>
+   <slot>click()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>540</x>
+     <y>435</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>392</x>
+     <y>373</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>m_phase_slider</sender>
+   <signal>sliderMoved(int)</signal>
+   <receiver>m_phase_sb</receiver>
+   <slot>setValue(int)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>392</x>
+     <y>434</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>540</x>
+     <y>435</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>m_phase_sb</sender>
+   <signal>valueChanged(int)</signal>
+   <receiver>m_phase_slider</receiver>
+   <slot>setValue(int)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>540</x>
+     <y>435</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>392</x>
+     <y>434</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>m_mod_color_2_cb</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>m_color_2_pb</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>597</x>
+     <y>200</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>341</x>
+     <y>201</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>

Modified: trunk/sources/SearchAndReplace/ui/searchandreplacewidget.cpp
===================================================================
--- trunk/sources/SearchAndReplace/ui/searchandreplacewidget.cpp	2018-12-08 19:36:58 UTC (rev 5640)
+++ trunk/sources/SearchAndReplace/ui/searchandreplacewidget.cpp	2018-12-09 11:50:07 UTC (rev 5641)
@@ -27,6 +27,7 @@
 #include "replacefoliowidget.h"
 #include "replaceelementdialog.h"
 #include "qetapp.h"
+#include "replaceconductordialog.h"
 
 #include <QSettings>
 
@@ -911,6 +912,14 @@
 			}
 			
 		}
+		else if (ui->m_conductor_pb->text().endsWith(tr(" [édité]")) &&
+				 m_conductor_hash.keys().contains(qtwi))
+		{
+			QPointer<Conductor> c = m_conductor_hash.value(qtwi);
+			if (c) {
+				m_worker.replaceConductor(c.data());
+			}
+		}
 	}
 	activateNextChecked();
 	ui->m_replace_pb->setEnabled(ui->m_next_pb->isEnabled());
@@ -972,6 +981,23 @@
 		m_worker.replaceIndiText(text_list );
 	}
 	
+		//Replace conductor
+	if (ui->m_conductor_pb->text().endsWith(tr(" [édité]")))
+	{
+		QList <Conductor *> conductor_list;
+		for (QTreeWidgetItem *qtwi : m_conductor_hash.keys())
+		{
+			if (!qtwi->isHidden() && qtwi->checkState(0) == Qt::Checked)
+			{
+				QPointer <Conductor> c = m_conductor_hash.value(qtwi);
+				if (c) {
+					conductor_list.append(c.data());
+				}
+			}
+		}
+		m_worker.replaceConductor(conductor_list);
+	}
+	
 		//Change was made, we reload the panel
 		//and search again to keep up to date the tree widget
 		//and the match item of search
@@ -1027,3 +1053,32 @@
 	Q_UNUSED(arg1);
 	search();
 }
+
+/**
+ * @brief SearchAndReplaceWidget::on_m_conductor_pb_clicked
+ * Open a dialog to edit the condutor properties
+ */
+void SearchAndReplaceWidget::on_m_conductor_pb_clicked()
+{
+    ReplaceConductorDialog *dialog = new ReplaceConductorDialog(m_worker.m_conductor_properties, this);
+	int result = dialog->exec();
+	
+	if (result == QDialogButtonBox::AcceptRole)
+	{
+		QString text = ui->m_conductor_pb->text();
+		if (!text.endsWith(tr(" [édité]"))) {
+			text.append(tr(" [édité]"));
+		}
+		ui->m_conductor_pb->setText(text);
+		m_worker.m_conductor_properties = dialog->properties();
+	}
+	else if (result == QDialogButtonBox::ResetRole)
+	{
+		QString text = ui->m_conductor_pb->text();
+		if (text.endsWith(tr(" [édité]"))) {
+			text.remove(tr(" [édité]"));
+		}
+		ui->m_conductor_pb->setText(text);
+		m_worker.m_conductor_properties = m_worker.invalidConductorProperties();
+	}
+}

Modified: trunk/sources/SearchAndReplace/ui/searchandreplacewidget.h
===================================================================
--- trunk/sources/SearchAndReplace/ui/searchandreplacewidget.h	2018-12-08 19:36:58 UTC (rev 5640)
+++ trunk/sources/SearchAndReplace/ui/searchandreplacewidget.h	2018-12-09 11:50:07 UTC (rev 5641)
@@ -77,6 +77,7 @@
 		void on_m_element_pb_clicked();
 		void on_m_mode_cb_currentIndexChanged(int index);
 		void on_m_case_sensitive_cb_stateChanged(int arg1);
+		void on_m_conductor_pb_clicked();
 		
 		private:
 		Ui::SearchAndReplaceWidget *ui;

Modified: trunk/sources/SearchAndReplace/ui/searchandreplacewidget.ui
===================================================================
--- trunk/sources/SearchAndReplace/ui/searchandreplacewidget.ui	2018-12-08 19:36:58 UTC (rev 5640)
+++ trunk/sources/SearchAndReplace/ui/searchandreplacewidget.ui	2018-12-09 11:50:07 UTC (rev 5641)
@@ -35,7 +35,7 @@
       <string/>
      </property>
      <property name="icon">
-      <iconset resource="../../../qelectrotech.qrc">
+      <iconset>
        <normaloff>:/ico/16x16/view-refresh.png</normaloff>:/ico/16x16/view-refresh.png</iconset>
      </property>
     </widget>
@@ -49,7 +49,7 @@
       <string/>
      </property>
      <property name="icon">
-      <iconset resource="../../../qelectrotech.qrc">
+      <iconset>
        <normaloff>:/ico/16x16/go-bottom.png</normaloff>:/ico/16x16/go-bottom.png</iconset>
      </property>
      <property name="flat">
@@ -66,7 +66,7 @@
       <string/>
      </property>
      <property name="icon">
-      <iconset resource="../../../qelectrotech.qrc">
+      <iconset>
        <normaloff>:/ico/16x16/configure-toolbars.png</normaloff>:/ico/16x16/configure-toolbars.png</iconset>
      </property>
      <property name="checkable">
@@ -110,7 +110,7 @@
       <string/>
      </property>
      <property name="icon">
-      <iconset resource="../../../qelectrotech.qrc">
+      <iconset>
        <normaloff>:/ico/16x16/go-top.png</normaloff>:/ico/16x16/go-top.png</iconset>
      </property>
      <property name="flat">
@@ -140,7 +140,7 @@
       <string/>
      </property>
      <property name="icon">
-      <iconset resource="../../../qelectrotech.qrc">
+      <iconset>
        <normaloff>:/ico/16x16/window-close.svg</normaloff>:/ico/16x16/window-close.svg</iconset>
      </property>
      <property name="flat">
@@ -196,9 +196,6 @@
      </item>
      <item row="1" column="6">
       <widget class="QPushButton" name="m_conductor_pb">
-       <property name="enabled">
-        <bool>false</bool>
-       </property>
        <property name="toolTip">
         <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Définir les propriétés à remplacer dans les conducteurs&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
        </property>
@@ -291,8 +288,6 @@
    </item>
   </layout>
  </widget>
- <resources>
-  <include location="../../../qelectrotech.qrc"/>
- </resources>
+ <resources/>
  <connections/>
 </ui>


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/