[qet] [2039] Element editor: removed the "circle" tool because it was incompatible with non 1:1 scaling operations.

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


Revision: 2039
Author:   xavier
Date:     2013-02-11 22:45:51 +0100 (Mon, 11 Feb 2013)
Log Message:
-----------
Element editor: removed the "circle" tool because it was incompatible with non 1:1 scaling operations.

Modified Paths:
--------------
    trunk/sources/editor/elementscene.cpp
    trunk/sources/editor/elementscene.h
    trunk/sources/editor/partellipse.cpp
    trunk/sources/editor/qetelementeditor.cpp
    trunk/sources/editor/qetelementeditor.h

Removed Paths:
-------------
    trunk/sources/editor/circleeditor.cpp
    trunk/sources/editor/circleeditor.h
    trunk/sources/editor/partcircle.cpp
    trunk/sources/editor/partcircle.h

Deleted: trunk/sources/editor/circleeditor.cpp
===================================================================
--- trunk/sources/editor/circleeditor.cpp	2013-02-11 21:30:32 UTC (rev 2038)
+++ trunk/sources/editor/circleeditor.cpp	2013-02-11 21:45:51 UTC (rev 2039)
@@ -1,140 +0,0 @@
-/*
-	Copyright 2006-2012 Xavier Guerrin
-	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 "circleeditor.h"
-#include "styleeditor.h"
-#include "partcircle.h"
-
-/**
-	Constructeur
-	@param editor L'editeur d'element concerne
-	@param circle Le cercle a editer
-	@param parent le Widget parent
-*/
-CircleEditor::CircleEditor(QETElementEditor *editor, PartCircle *circle, QWidget *parent) :
-	ElementItemEditor(editor, parent),
-	part(circle)
-{
-	style_ = new StyleEditor(editor);
-	
-	x = new QLineEdit();
-	y = new QLineEdit();
-	r = new QLineEdit();
-	
-	x -> setValidator(new QDoubleValidator(x));
-	y -> setValidator(new QDoubleValidator(y));
-	r -> setValidator(new QDoubleValidator(r));
-	
-	QVBoxLayout *v_layout = new QVBoxLayout(this);
-	
-	QGridLayout *grid = new QGridLayout();
-	grid -> addWidget(new QLabel(tr("Centre : ")),       0, 0);
-	grid -> addWidget(new QLabel("x"),                   1, 0, Qt::AlignRight);
-	grid -> addWidget(x,                                 1, 1);
-	grid -> addWidget(new QLabel("y"),                   1, 2);
-	grid -> addWidget(y,                                 1, 3);
-	grid -> addWidget(new QLabel(tr("Diam\350tre : ")),  2, 0);
-	grid -> addWidget(r,                                 2, 1);
-	
-	v_layout -> addWidget(style_);
-	v_layout -> addLayout(grid);
-	
-	activeConnections(true);
-	updateForm();
-}
-
-/// Destructeur
-CircleEditor::~CircleEditor() {
-}
-
-/**
-	Permet de specifier a cet editeur quelle primitive il doit editer. A noter
-	qu'un editeur peut accepter ou refuser d'editer une primitive.
-	L'editeur de cercle acceptera d'editer la primitive new_part s'il s'agit
-	d'un objet de la classe PartCircle.
-	@param new_part Nouvelle primitive a editer
-	@return true si l'editeur a accepter d'editer la primitive, false sinon
-*/
-bool CircleEditor::setPart(CustomElementPart *new_part) {
-	if (!new_part) {
-		part = 0;
-		style_ -> setPart(0);
-		return(true);
-	}
-	if (PartCircle *part_circle = dynamic_cast<PartCircle *>(new_part)) {
-		part = part_circle;
-		style_ -> setPart(part);
-		updateForm();
-		return(true);
-	} else {
-		return(false);
-	}
-}
-
-/**
-	@return la primitive actuellement editee, ou 0 si ce widget n'en edite pas
-*/
-CustomElementPart *CircleEditor::currentPart() const {
-	return(part);
-}
-
-/**
-	met a jour le cercle a partir des donnees du formulaire
-*/
-void CircleEditor::updateCircle() {
-	if (!part) return;
-	part -> setProperty("x", x -> text().toDouble());
-	part -> setProperty("y", y -> text().toDouble());
-	part -> setProperty("diameter", r -> text().toDouble());
-}
-
-/// Met a jour l'abscisse du cercle et cree un objet d'annulation
-void CircleEditor::updateCircleX() { addChangePartCommand(tr("abscisse"),    part, "x",        x -> text().toDouble()); }
-
-/// Met a jour l'ordonnee du cercle et cree un objet d'annulation
-void CircleEditor::updateCircleY() { addChangePartCommand(tr("ordonn\351e"), part, "y",        y -> text().toDouble()); }
-
-/// Met a jour le diametre du cercle et cree un objet d'annulation
-void CircleEditor::updateCircleD() { addChangePartCommand(tr("diam\350tre"), part, "diameter", r -> text().toDouble()); }
-
-/**
-	Met a jour le formulaire d'edition
-*/
-void CircleEditor::updateForm() {
-	if (!part) return;
-	activeConnections(false);
-	x -> setText(part -> property("x").toString());
-	y -> setText(part -> property("y").toString());
-	r -> setText(part -> property("diameter").toString());
-	activeConnections(true);
-}
-
-/**
-	Active ou desactive les connexionx signaux/slots entre les widgets internes.
-	@param active true pour activer les connexions, false pour les desactiver
-*/
-void CircleEditor::activeConnections(bool active) {
-	if (active) {
-		connect(x, SIGNAL(editingFinished()), this, SLOT(updateCircleX()));
-		connect(y, SIGNAL(editingFinished()), this, SLOT(updateCircleY()));
-		connect(r, SIGNAL(editingFinished()), this, SLOT(updateCircleD()));
-	} else {
-		disconnect(x, SIGNAL(editingFinished()), this, SLOT(updateCircleX()));
-		disconnect(y, SIGNAL(editingFinished()), this, SLOT(updateCircleY()));
-		disconnect(r, SIGNAL(editingFinished()), this, SLOT(updateCircleD()));
-	}
-}

Deleted: trunk/sources/editor/circleeditor.h
===================================================================
--- trunk/sources/editor/circleeditor.h	2013-02-11 21:30:32 UTC (rev 2038)
+++ trunk/sources/editor/circleeditor.h	2013-02-11 21:45:51 UTC (rev 2039)
@@ -1,57 +0,0 @@
-/*
-	Copyright 2006-2012 Xavier Guerrin
-	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 CIRCLE_EDITOR_H
-#define CIRCLE_EDITOR_H
-#include <QtGui>
-#include "elementitemeditor.h"
-class PartCircle;
-class StyleEditor;
-/**
-	This class provides a widget to edit circles within the element editor.
-*/
-class CircleEditor : public ElementItemEditor {
-	Q_OBJECT
-	// Constructeurs, destructeur
-	public:
-	CircleEditor(QETElementEditor *, PartCircle * = 0, QWidget * = 0);
-	virtual ~CircleEditor();
-	private:
-	CircleEditor(const CircleEditor &);
-	
-	// attributes
-	private:
-	PartCircle *part;
-	StyleEditor *style_;
-	QLineEdit *x, *y, *r;
-	
-	// methods
-	public:
-	virtual bool setPart(CustomElementPart *);
-	virtual CustomElementPart *currentPart() const;
-	
-	public slots:
-	void updateCircle();
-	void updateCircleX();
-	void updateCircleY();
-	void updateCircleD();
-	void updateForm();
-	
-	private:
-	void activeConnections(bool);
-};
-#endif

Modified: trunk/sources/editor/elementscene.cpp
===================================================================
--- trunk/sources/editor/elementscene.cpp	2013-02-11 21:30:32 UTC (rev 2038)
+++ trunk/sources/editor/elementscene.cpp	2013-02-11 21:45:51 UTC (rev 2039)
@@ -22,7 +22,6 @@
 #include "partline.h"
 #include "partrectangle.h"
 #include "partellipse.h"
-#include "partcircle.h"
 #include "partpolygon.h"
 #include "partterminal.h"
 #include "parttext.h"
@@ -151,7 +150,6 @@
 	}
 	
 	QRectF temp_rect;
-	qreal radius;
 	QPointF temp_point;
 	QPolygonF temp_polygon;
 	if (e -> buttons() & Qt::LeftButton) {
@@ -174,16 +172,6 @@
 				temp_rect.setBottomRight(event_pos);
 				current_arc -> setRect(temp_rect);
 				break;
-			case Circle:
-				temp_rect = current_circle -> rect();
-				temp_point = event_pos - current_circle -> mapToScene(temp_rect.center());
-				radius = sqrt(pow(temp_point.x(), 2) + pow(temp_point.y(), 2));
-				temp_rect = QRectF(
-					temp_rect.center() - QPointF(radius, radius),
-					QSizeF(2.0 * radius, 2.0 * radius)
-				);
-				current_circle -> setRect(temp_rect);
-				break;
 			case Polygon:
 				if (current_polygon == NULL) break;
 				temp_polygon = current_polygon -> polygon();
@@ -233,11 +221,6 @@
 				current_arc -> setRect(QRectF(event_pos, QSizeF(0.0, 0.0)));
 				current_arc -> setProperty("antialias", true);
 				break;
-			case Circle:
-				current_circle = new PartCircle(element_editor, 0, this);
-				current_circle -> setRect(QRectF(event_pos, QSizeF(0.0, 0.0)));
-				current_circle -> setProperty("antialias", true);
-				break;
 			case Polygon:
 				if (current_polygon == NULL) {
 					current_polygon = new PartPolygon(element_editor, 0, this);
@@ -305,13 +288,6 @@
 				emit(partsAdded());
 				endCurrentBehavior(e);
 				break;
-			case Circle:
-				if (qgiManager().manages(current_circle)) break;
-				current_circle -> setRect(current_circle -> rect().normalized());
-				undo_stack.push(new AddPartCommand(tr("cercle"), this, current_circle));
-				emit(partsAdded());
-				endCurrentBehavior(e);
-				break;
 			case Terminal:
 				terminal = new PartTerminal(element_editor, 0, this);
 				terminal -> setPos(event_pos);
@@ -1167,7 +1143,7 @@
 				if      (qde.tagName() == "line")     cep = new PartLine     (element_editor, 0, 0);
 				else if (qde.tagName() == "rect")     cep = new PartRectangle(element_editor, 0, 0);
 				else if (qde.tagName() == "ellipse")  cep = new PartEllipse  (element_editor, 0, 0);
-				else if (qde.tagName() == "circle")   cep = new PartCircle   (element_editor, 0, 0);
+				else if (qde.tagName() == "circle")   cep = new PartEllipse  (element_editor, 0, 0);
 				else if (qde.tagName() == "polygon")  cep = new PartPolygon  (element_editor, 0, 0);
 				else if (qde.tagName() == "terminal") cep = new PartTerminal (element_editor, 0, 0);
 				else if (qde.tagName() == "text")     cep = new PartText     (element_editor, 0, 0);

Modified: trunk/sources/editor/elementscene.h
===================================================================
--- trunk/sources/editor/elementscene.h	2013-02-11 21:30:32 UTC (rev 2038)
+++ trunk/sources/editor/elementscene.h	2013-02-11 21:45:51 UTC (rev 2039)
@@ -30,7 +30,6 @@
 class PartLine;
 class PartRectangle;
 class PartEllipse;
-class PartCircle;
 class PartPolygon;
 class PartArc;
 /**
@@ -96,7 +95,6 @@
 	PartLine *current_line;
 	PartRectangle *current_rectangle;
 	PartEllipse *current_ellipse;
-	PartCircle *current_circle;
 	PartPolygon *current_polygon;
 	PartArc *current_arc;
 	QETElementEditor *element_editor;

Deleted: trunk/sources/editor/partcircle.cpp
===================================================================
--- trunk/sources/editor/partcircle.cpp	2013-02-11 21:30:32 UTC (rev 2038)
+++ trunk/sources/editor/partcircle.cpp	2013-02-11 21:45:51 UTC (rev 2039)
@@ -1,237 +0,0 @@
-/*
-	Copyright 2006-2012 Xavier Guerrin
-	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 "partcircle.h"
-
-/**
-	Constructeur
-	@param editor L'editeur d'element concerne
-	@param parent Le QGraphicsItem parent de ce cercle
-	@param scene La scene sur laquelle figure ce cercle
-*/
-PartCircle::PartCircle(QETElementEditor *editor, QGraphicsItem *parent, QGraphicsScene *scene) : QGraphicsEllipseItem(parent, scene), CustomElementGraphicPart(editor) {
-	setFlags(QGraphicsItem::ItemIsSelectable);
-#if QT_VERSION >= 0x040600
-	setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
-#endif
-	setAcceptedMouseButtons(Qt::LeftButton);
-}
-
-/// Destructeur
-PartCircle::~PartCircle() {
-}
-
-/**
-	Dessine le cercle
-	@param painter QPainter a utiliser pour rendre le dessin
-	@param options Options pour affiner le rendu
-	@param widget Widget sur lequel le rendu est effectue
-*/
-void PartCircle::paint(QPainter *painter, const QStyleOptionGraphicsItem *options, QWidget *widget) {
-	Q_UNUSED(widget);
-	applyStylesToQPainter(*painter);
-	QPen t = painter -> pen();
-	t.setCosmetic(options && options -> levelOfDetail < 1.0);
-	if (isSelected()) {
-		t.setColor(Qt::red);
-	}
-	painter -> setPen(t);
-	painter -> drawEllipse(rect());
-	if (isSelected()) {
-		painter -> setRenderHint(QPainter::Antialiasing, false);
-		painter -> setPen((painter -> brush().color() == QColor(Qt::black) && painter -> brush().isOpaque()) ? Qt::yellow : Qt::blue);
-		QPointF center = rect().center();
-		painter -> drawLine(QLineF(center.x() - 2.0, center.y(), center.x() + 2.0, center.y()));
-		painter -> drawLine(QLineF(center.x(), center.y() - 2.0, center.x(), center.y() + 2.0));
-	}
-}
-
-/**
-	Exporte le cercle en XML
-	@param xml_document Document XML a utiliser pour creer l'element XML
-	@return un element XML decrivant le cercle
-*/
-const QDomElement PartCircle::toXml(QDomDocument &xml_document) const {
-	QDomElement xml_element = xml_document.createElement("circle");
-	QPointF top_left(sceneTopLeft());
-	xml_element.setAttribute("x", QString("%1").arg(top_left.x()));
-	xml_element.setAttribute("y", QString("%1").arg(top_left.y()));
-	xml_element.setAttribute("diameter",  QString("%1").arg(rect().width()));
-	stylesToXml(xml_element);
-	return(xml_element);
-}
-
-/**
-	Importe les proprietes d'un cercle depuis un element XML
-	@param qde Element XML a lire
-*/
-void PartCircle::fromXml(const QDomElement &qde) {
-	stylesFromXml(qde);
-	qreal diameter = qde.attribute("diameter",  "0").toDouble();
-	setRect(
-		QRectF(
-			mapFromScene(
-				qde.attribute("x", "0").toDouble(),
-				qde.attribute("y", "0").toDouble()
-			),
-			QSizeF(
-				diameter,
-				diameter
-			)
-		)
-	);
-}
-
-/**
-	Specifie la valeur d'une propriete donnee du cercle
-	@param property propriete a modifier. Valeurs acceptees :
-		* x : abscisse du centre du cercle
-		* y : ordonnee du centre du cercle
-		* diameter : diametre du cercle
-	@param value Valeur a attribuer a la propriete
-*/
-void PartCircle::setProperty(const QString &property, const QVariant &value) {
-	CustomElementGraphicPart::setProperty(property, value);
-	if (!value.canConvert(QVariant::Double)) return;
-	if (property == "x") {
-		QRectF current_rect = rect();
-		QPointF current_pos = mapToScene(current_rect.center());
-		setRect(current_rect.translated(value.toDouble() - current_pos.x(), 0.0));
-	} else if (property == "y") {
-		QRectF current_rect = rect();
-		QPointF current_pos = mapToScene(current_rect.center());
-		setRect(current_rect.translated(0.0, value.toDouble() - current_pos.y()));
-	} else if (property == "diameter") {
-		QRectF current_rect = rect();
-		qreal new_diameter = qAbs(value.toDouble());
-		current_rect.translate(
-			(new_diameter - current_rect.width()) / -2.0,
-			(new_diameter - current_rect.height()) / -2.0
-		);
-		current_rect.setSize(QSizeF(new_diameter, new_diameter));
-		setRect(current_rect);
-	}
-	update();
-}
-
-/**
-	Permet d'acceder a la valeur d'une propriete de style donnee.
-	@param property propriete lue. Valeurs acceptees :
-		* x : abscisse du centre du cercle
-		* y : ordonnee du centre du cercle
-		* diameter : diametre du cercle
-	@return La valeur de la propriete property
-*/
-QVariant PartCircle::property(const QString &property) {
-	// appelle la methode property de CustomElementGraphicpart pour les styles
-	QVariant style_property = CustomElementGraphicPart::property(property);
-	if (style_property != QVariant()) return(style_property);
-	
-	if (property == "x") {
-		return(mapToScene(rect().center()).x());
-	} else if (property == "y") {
-		return(mapToScene(rect().center()).y());
-	} else if (property == "diameter") {
-		return(rect().width());
-	}
-	return(QVariant());
-}
-
-/**
-	Gere les changements intervenant sur cette partie
-	@param change Type de changement
-	@param value Valeur numerique relative au changement
-*/
-QVariant PartCircle::itemChange(GraphicsItemChange change, const QVariant &value) {
-	if (scene()) {
-		if (change == QGraphicsItem::ItemPositionChange || change == QGraphicsItem::ItemPositionHasChanged) {
-			updateCurrentPartEditor();
-		}
-	}
-	return(QGraphicsEllipseItem::itemChange(change, value));
-}
-
-/**
-	@return le coin superieur gauche du rectangle dans lequel s'inscrit
-	le cercle, dans les coordonnees de la scene.
-*/
-QPointF PartCircle::sceneTopLeft() const {
-	return(mapToScene(rect().topLeft()));
-}
-
-/**
-	@return le centre du cercle, dans les coordonnees de la scene.
-*/
-QPointF PartCircle::sceneCenter() const {
-	return(mapToScene(rect().center()));
-}
-
-/**
-	@return le rectangle delimitant cette partie.
-*/
-QRectF PartCircle::boundingRect() const {
-	qreal adjust = 1.5;
-	QRectF r(QGraphicsEllipseItem::boundingRect());
-	r.adjust(-adjust, -adjust, adjust, adjust);
-	return(r);
-}
-
-/**
-	@return true si cette partie n'est pas pertinente et ne merite pas d'etre
-	conservee / enregistree.
-	Un cercle est pertinent des lors que son rayon n'est pas nul
-*/
-bool PartCircle::isUseless() const {
-	return(rect().isNull());
-}
-
-/**
-	@return the minimum, margin-less rectangle this part can fit into, in scene
-	coordinates. It is different from boundingRect() because it is not supposed
-	to imply any margin, and it is different from shape because it is a regular
-	rectangle, not a complex shape.
-*/
-QRectF PartCircle::sceneGeometricRect() const {
-	return(mapToScene(rect()).boundingRect());
-}
-
-/**
-	Start the user-induced transformation, provided this primitive is contained
-	within the \a initial_selection_rect bounding rectangle.
-*/
-void PartCircle::startUserTransformation(const QRectF &initial_selection_rect) {
-	Q_UNUSED(initial_selection_rect)
-	saved_center_ = mapToScene(rect().center());
-	saved_diameter_ = rect().width();
-}
-
-/**
-	Handle the user-induced transformation from \a initial_selection_rect to \a new_selection_rect
-*/
-void PartCircle::handleUserTransformation(const QRectF &initial_selection_rect, const QRectF &new_selection_rect) {
-	QPointF new_center = mapPoints(initial_selection_rect, new_selection_rect, QList<QPointF>() << saved_center_).first();
-	
-	qreal sx = new_selection_rect.width() / initial_selection_rect.width();
-	qreal sy = new_selection_rect.height() / initial_selection_rect.height();
-	qreal smallest_scale_factor = sx > sy ? sy : sx;
-	qreal new_diameter = saved_diameter_ * smallest_scale_factor;
-	
-	QRectF new_rect(QPointF(), QSizeF(new_diameter, new_diameter));
-	new_rect.moveCenter(mapFromScene(new_center));
-	
-	setRect(new_rect);
-}

Deleted: trunk/sources/editor/partcircle.h
===================================================================
--- trunk/sources/editor/partcircle.h	2013-02-11 21:30:32 UTC (rev 2038)
+++ trunk/sources/editor/partcircle.h	2013-02-11 21:45:51 UTC (rev 2039)
@@ -1,66 +0,0 @@
-/*
-	Copyright 2006-2012 Xavier Guerrin
-	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 PART_CIRCLE_H
-#define PART_CIRCLE_H
-#include <QtGui>
-#include "customelementgraphicpart.h"
-/**
-	This class represents a circle primitive which may be used to compose the
-	drawing of an electrical element within the element editor.
-*/
-class PartCircle : public QGraphicsEllipseItem, public CustomElementGraphicPart {
-	// constructors, destructor
-	public:
-	PartCircle(QETElementEditor *, QGraphicsItem * = 0, QGraphicsScene * = 0);
-	virtual ~PartCircle();
-	
-	private:
-	PartCircle(const PartCircle &);
-	
-	// methods
-	public:
-	enum { Type = UserType + 1102 };
-	/**
-		Enable the use of qgraphicsitem_cast to safely cast a QGraphicsItem into a
-		PartCircle.
-		@return the QGraphicsItem type
-	*/
-	virtual int type() const { return Type; }
-	virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0);
-	virtual QString name() const { return(QObject::tr("cercle", "element part name")); }
-	virtual QString xmlName() const { return(QString("circle")); }
-	virtual const QDomElement toXml(QDomDocument &) const;
-	virtual void fromXml(const QDomElement &);
-	virtual QPointF sceneTopLeft() const;
-	virtual QRectF boundingRect() const;
-	QPointF sceneCenter() const;
-	virtual void setProperty(const QString &, const QVariant &);
-	virtual QVariant property(const QString &);
-	virtual bool isUseless() const;
-	virtual QRectF sceneGeometricRect() const;
-	virtual void startUserTransformation(const QRectF &);
-	virtual void handleUserTransformation(const QRectF &, const QRectF &);
-	
-	protected:
-	QVariant itemChange(GraphicsItemChange, const QVariant &);
-	
-	private:
-	QPointF saved_center_;
-	qreal saved_diameter_;
-};
-#endif

Modified: trunk/sources/editor/partellipse.cpp
===================================================================
--- trunk/sources/editor/partellipse.cpp	2013-02-11 21:30:32 UTC (rev 2038)
+++ trunk/sources/editor/partellipse.cpp	2013-02-11 21:45:51 UTC (rev 2039)
@@ -66,12 +66,18 @@
 	@return un element XML decrivant l'ellipse
 */
 const QDomElement PartEllipse::toXml(QDomDocument &xml_document) const {
-	QDomElement xml_element = xml_document.createElement("ellipse");
+	QDomElement xml_element;
+	if (qFuzzyCompare(rect().width(), rect().height())) {
+		xml_element = xml_document.createElement("circle");
+		xml_element.setAttribute("diameter", QString("%1").arg(rect().width()));
+	} else {
+		xml_element = xml_document.createElement("ellipse");
+		xml_element.setAttribute("width",  QString("%1").arg(rect().width()));
+		xml_element.setAttribute("height", QString("%1").arg(rect().height()));
+	}
 	QPointF top_left(sceneTopLeft());
 	xml_element.setAttribute("x", QString("%1").arg(top_left.x()));
 	xml_element.setAttribute("y", QString("%1").arg(top_left.y()));
-	xml_element.setAttribute("width",  QString("%1").arg(rect().width()));
-	xml_element.setAttribute("height", QString("%1").arg(rect().height()));
 	stylesToXml(xml_element);
 	return(xml_element);
 }
@@ -82,16 +88,20 @@
 */
 void PartEllipse::fromXml(const QDomElement &qde) {
 	stylesFromXml(qde);
+	qreal width, height;
+	if (qde.tagName() == "ellipse") {
+		width = qde.attribute("width",  "0").toDouble();
+		height = qde.attribute("height", "0").toDouble();
+	} else {
+		width = height = qde.attribute("diameter", "0").toDouble();
+	}
 	setRect(
 		QRectF(
 			mapFromScene(
 				qde.attribute("x", "0").toDouble(),
 				qde.attribute("y", "0").toDouble()
 			),
-			QSizeF(
-				qde.attribute("width",  "0").toDouble(),
-				qde.attribute("height", "0").toDouble()
-			)
+			QSizeF(width, height)
 		)
 	);
 }

Modified: trunk/sources/editor/qetelementeditor.cpp
===================================================================
--- trunk/sources/editor/qetelementeditor.cpp	2013-02-11 21:30:32 UTC (rev 2038)
+++ trunk/sources/editor/qetelementeditor.cpp	2013-02-11 21:45:51 UTC (rev 2039)
@@ -31,7 +31,6 @@
 
 // editeurs de primitives
 #include "arceditor.h"
-#include "circleeditor.h"
 #include "ellipseeditor.h"
 #include "lineeditor.h"
 #include "polygoneditor.h"
@@ -157,7 +156,6 @@
 	add_line        = new QAction(QET::Icons::PartLine,             tr("Ajouter une ligne"),                         this);
 	add_rectangle   = new QAction(QET::Icons::PartRectangle,        tr("Ajouter un rectangle"),                      this);
 	add_ellipse     = new QAction(QET::Icons::PartEllipse,          tr("Ajouter une ellipse"),                       this);
-	add_circle      = new QAction(QET::Icons::PartCircle,           tr("Ajouter un cercle"),                         this);
 	add_polygon     = new QAction(QET::Icons::PartPolygon,          tr("Ajouter un polygone"),                       this);
 	add_text        = new QAction(QET::Icons::PartText,             tr("Ajouter du texte"),                          this);
 	add_arc         = new QAction(QET::Icons::PartArc,              tr("Ajouter un arc de cercle"),                  this);
@@ -168,7 +166,6 @@
 	add_line      -> setStatusTip(add_status_tip);
 	add_rectangle -> setStatusTip(add_status_tip);
 	add_ellipse   -> setStatusTip(add_status_tip);
-	add_circle    -> setStatusTip(add_status_tip);
 	add_text      -> setStatusTip(add_status_tip);
 	add_arc       -> setStatusTip(add_status_tip);
 	add_terminal  -> setStatusTip(add_status_tip);
@@ -251,7 +248,6 @@
 	connect(add_line,        SIGNAL(triggered()), ce_scene, SLOT(slot_addLine()));
 	connect(add_rectangle,   SIGNAL(triggered()), ce_scene, SLOT(slot_addRectangle()));
 	connect(add_ellipse,     SIGNAL(triggered()), ce_scene, SLOT(slot_addEllipse()));
-	connect(add_circle,      SIGNAL(triggered()), ce_scene, SLOT(slot_addCircle()));
 	connect(add_polygon,     SIGNAL(triggered()), ce_scene, SLOT(slot_addPolygon()));
 	connect(add_text,        SIGNAL(triggered()), ce_scene, SLOT(slot_addText()));
 	connect(add_arc,         SIGNAL(triggered()), ce_scene, SLOT(slot_addArc()));
@@ -262,7 +258,6 @@
 	connect(add_line,        SIGNAL(triggered()), this,     SLOT(slot_setNoDragToView()));
 	connect(add_rectangle,   SIGNAL(triggered()), this,     SLOT(slot_setNoDragToView()));
 	connect(add_ellipse,     SIGNAL(triggered()), this,     SLOT(slot_setNoDragToView()));
-	connect(add_circle,      SIGNAL(triggered()), this,     SLOT(slot_setNoDragToView()));
 	connect(add_polygon,     SIGNAL(triggered()), this,     SLOT(slot_setNoDragToView()));
 	connect(add_text,        SIGNAL(triggered()), this,     SLOT(slot_setNoDragToView()));
 	connect(add_arc,         SIGNAL(triggered()), this,     SLOT(slot_setNoDragToView()));
@@ -275,7 +270,6 @@
 	add_line      -> setCheckable(true);
 	add_rectangle -> setCheckable(true);
 	add_ellipse   -> setCheckable(true);
-	add_circle    -> setCheckable(true);
 	add_polygon   -> setCheckable(true);
 	add_text      -> setCheckable(true);
 	add_arc       -> setCheckable(true);
@@ -287,7 +281,6 @@
 	parts -> addAction(add_line);
 	parts -> addAction(add_rectangle);
 	parts -> addAction(add_ellipse);
-	parts -> addAction(add_circle);
 	parts -> addAction(add_polygon);
 	parts -> addAction(add_arc);
 	parts -> addAction(add_text);
@@ -502,7 +495,6 @@
 	
 	// widgets d'editions pour les parties
 	editors_["arc"]       = new ArcEditor(this);
-	editors_["circle"]    = new CircleEditor(this);
 	editors_["ellipse"]   = new EllipseEditor(this);
 	editors_["line"]      = new LineEditor(this);
 	editors_["polygon"]   = new PolygonEditor(this);

Modified: trunk/sources/editor/qetelementeditor.h
===================================================================
--- trunk/sources/editor/qetelementeditor.h	2013-02-11 21:30:32 UTC (rev 2038)
+++ trunk/sources/editor/qetelementeditor.h	2013-02-11 21:45:51 UTC (rev 2039)
@@ -79,7 +79,7 @@
 	QToolBar *parts_toolbar, *main_toolbar, *view_toolbar, *depth_toolbar, *element_toolbar;
 	/// toolbars actions
 	QActionGroup *parts;
-	QAction *move, *add_line, *add_circle, *add_rectangle, *add_ellipse, *add_polygon, *add_text;
+	QAction *move, *add_line, *add_rectangle, *add_ellipse, *add_polygon, *add_text;
 	QAction *add_arc, *add_terminal, *add_textfield;
 	/// minimum window title
 	QString min_title;


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