mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-18 13:30:34 +01:00
Rapatriement dans la branche 0.3 de la revision 855.
Optimisation de l'editeur d'element. L'organisation interne de l'editeur d'element a ete completement revue. Auparavant, chaque primitive instanciait son propre widget d'edition et le gardait durant toute sa duree de vie, entrainant ainsi une consommation memoire et un temps de chargement importants. Desormais, l'editeur instancie des son demarrage 9 widgets d'edition qu'il conserve durant toute sa duree de vie. Il choisit alors lequel afficher en fonction des primitives selectionnees. git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.3@856 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -16,6 +16,7 @@
|
|||||||
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include "arceditor.h"
|
#include "arceditor.h"
|
||||||
|
#include "styleeditor.h"
|
||||||
#include "partarc.h"
|
#include "partarc.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -24,10 +25,11 @@
|
|||||||
@param arc L'arc a editer
|
@param arc L'arc a editer
|
||||||
@param parent le Widget parent
|
@param parent le Widget parent
|
||||||
*/
|
*/
|
||||||
ArcEditor::ArcEditor(QETElementEditor *editor, PartArc *arc, QWidget *parent) : ElementItemEditor(editor, parent) {
|
ArcEditor::ArcEditor(QETElementEditor *editor, PartArc *arc, QWidget *parent) :
|
||||||
|
ElementItemEditor(editor, parent),
|
||||||
part = arc;
|
part(arc)
|
||||||
|
{
|
||||||
|
style_ = new StyleEditor(editor);
|
||||||
x = new QLineEdit();
|
x = new QLineEdit();
|
||||||
y = new QLineEdit();
|
y = new QLineEdit();
|
||||||
h = new QLineEdit();
|
h = new QLineEdit();
|
||||||
@@ -42,7 +44,9 @@ ArcEditor::ArcEditor(QETElementEditor *editor, PartArc *arc, QWidget *parent) :
|
|||||||
h -> setValidator(new QDoubleValidator(h));
|
h -> setValidator(new QDoubleValidator(h));
|
||||||
v -> setValidator(new QDoubleValidator(v));
|
v -> setValidator(new QDoubleValidator(v));
|
||||||
|
|
||||||
QGridLayout *grid = new QGridLayout(this);
|
QVBoxLayout *v_layout = new QVBoxLayout(this);
|
||||||
|
|
||||||
|
QGridLayout *grid = new QGridLayout();
|
||||||
grid -> addWidget(new QLabel(tr("Centre : ")), 0, 0);
|
grid -> addWidget(new QLabel(tr("Centre : ")), 0, 0);
|
||||||
grid -> addWidget(new QLabel("x"), 1, 0);
|
grid -> addWidget(new QLabel("x"), 1, 0);
|
||||||
grid -> addWidget(x, 1, 1);
|
grid -> addWidget(x, 1, 1);
|
||||||
@@ -57,6 +61,10 @@ ArcEditor::ArcEditor(QETElementEditor *editor, PartArc *arc, QWidget *parent) :
|
|||||||
grid -> addWidget(start_angle, 5, 1);
|
grid -> addWidget(start_angle, 5, 1);
|
||||||
grid -> addWidget(new QLabel(tr("Angle :")), 6, 0);
|
grid -> addWidget(new QLabel(tr("Angle :")), 6, 0);
|
||||||
grid -> addWidget(angle, 6, 1);
|
grid -> addWidget(angle, 6, 1);
|
||||||
|
|
||||||
|
v_layout -> addWidget(style_);
|
||||||
|
v_layout -> addLayout(grid);
|
||||||
|
|
||||||
updateForm();
|
updateForm();
|
||||||
|
|
||||||
activeConnections(true);
|
activeConnections(true);
|
||||||
@@ -66,16 +74,48 @@ ArcEditor::ArcEditor(QETElementEditor *editor, PartArc *arc, QWidget *parent) :
|
|||||||
ArcEditor::~ArcEditor() {
|
ArcEditor::~ArcEditor() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
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 d'arc acceptera d'editer la primitive new_part s'il s'agit d'un
|
||||||
|
objet de la classe PartArc.
|
||||||
|
@param new_part Nouvelle primitive a editer
|
||||||
|
@return true si l'editeur a accepter d'editer la primitive, false sinon
|
||||||
|
*/
|
||||||
|
bool ArcEditor::setPart(CustomElementPart *new_part) {
|
||||||
|
if (!new_part) {
|
||||||
|
part = 0;
|
||||||
|
style_ -> setPart(0);
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
if (PartArc *part_arc = dynamic_cast<PartArc *>(new_part)) {
|
||||||
|
part = part_arc;
|
||||||
|
style_ -> setPart(part);
|
||||||
|
updateForm();
|
||||||
|
return(true);
|
||||||
|
} else {
|
||||||
|
return(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return la primitive actuellement editee, ou 0 si ce widget n'en edite pas
|
||||||
|
*/
|
||||||
|
CustomElementPart *ArcEditor::currentPart() const {
|
||||||
|
return(part);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Met a jour l'arc a partir a partir des donnees du formulaire
|
Met a jour l'arc a partir a partir des donnees du formulaire
|
||||||
*/
|
*/
|
||||||
void ArcEditor::updateArc() {
|
void ArcEditor::updateArc() {
|
||||||
part -> setProperty("x", x -> text().toDouble());
|
if (!part) return;
|
||||||
part -> setProperty("y", y -> text().toDouble());
|
part -> setProperty("x", x -> text().toDouble());
|
||||||
part -> setProperty("diameter_h", h -> text().toDouble());
|
part -> setProperty("y", y -> text().toDouble());
|
||||||
part -> setProperty("diameter_v", v -> text().toDouble());
|
part -> setProperty("diameter_h", h -> text().toDouble());
|
||||||
part -> setStartAngle(-start_angle -> value() + 90);
|
part -> setProperty("diameter_v", v -> text().toDouble());
|
||||||
part -> setAngle(-angle -> value());
|
part -> setProperty("start_angle", -start_angle -> value() + 90);
|
||||||
|
part -> setProperty("angle", -angle -> value());
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Met a jour l'abscisse du centre de l'arc et cree un objet d'annulation
|
/// Met a jour l'abscisse du centre de l'arc et cree un objet d'annulation
|
||||||
@@ -95,6 +135,7 @@ void ArcEditor::updateArcA() { addChangePartCommand(tr("angle"),
|
|||||||
Met a jour le formulaire d'edition
|
Met a jour le formulaire d'edition
|
||||||
*/
|
*/
|
||||||
void ArcEditor::updateForm() {
|
void ArcEditor::updateForm() {
|
||||||
|
if (!part) return;
|
||||||
activeConnections(false);
|
activeConnections(false);
|
||||||
x -> setText(part -> property("x").toString());
|
x -> setText(part -> property("x").toString());
|
||||||
y -> setText(part -> property("y").toString());
|
y -> setText(part -> property("y").toString());
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
#include "elementitemeditor.h"
|
#include "elementitemeditor.h"
|
||||||
class PartArc;
|
class PartArc;
|
||||||
|
class StyleEditor;
|
||||||
/**
|
/**
|
||||||
Cette classe represente le widget d'edition d'un arc dans l'editeur
|
Cette classe represente le widget d'edition d'un arc dans l'editeur
|
||||||
d'element.
|
d'element.
|
||||||
@@ -28,18 +29,23 @@ class ArcEditor : public ElementItemEditor {
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
//constructeurs, destructeur
|
//constructeurs, destructeur
|
||||||
public:
|
public:
|
||||||
ArcEditor(QETElementEditor *, PartArc *, QWidget * = 0);
|
ArcEditor(QETElementEditor *, PartArc * = 0, QWidget * = 0);
|
||||||
~ArcEditor();
|
virtual ~ArcEditor();
|
||||||
private:
|
private:
|
||||||
ArcEditor(const ArcEditor &);
|
ArcEditor(const ArcEditor &);
|
||||||
|
|
||||||
// attributs
|
// attributs
|
||||||
private:
|
private:
|
||||||
PartArc *part;
|
PartArc *part;
|
||||||
|
StyleEditor *style_;
|
||||||
QLineEdit *x, *y, *h, *v;
|
QLineEdit *x, *y, *h, *v;
|
||||||
QSpinBox *angle, *start_angle;
|
QSpinBox *angle, *start_angle;
|
||||||
|
|
||||||
// methodes
|
// methodes
|
||||||
|
public:
|
||||||
|
virtual bool setPart(CustomElementPart *);
|
||||||
|
virtual CustomElementPart *currentPart() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void updateArc();
|
void updateArc();
|
||||||
void updateArcX();
|
void updateArcX();
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include "circleeditor.h"
|
#include "circleeditor.h"
|
||||||
|
#include "styleeditor.h"
|
||||||
#include "partcircle.h"
|
#include "partcircle.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -24,9 +25,11 @@
|
|||||||
@param circle Le cercle a editer
|
@param circle Le cercle a editer
|
||||||
@param parent le Widget parent
|
@param parent le Widget parent
|
||||||
*/
|
*/
|
||||||
CircleEditor::CircleEditor(QETElementEditor *editor, PartCircle *circle, QWidget *parent) : ElementItemEditor(editor, parent) {
|
CircleEditor::CircleEditor(QETElementEditor *editor, PartCircle *circle, QWidget *parent) :
|
||||||
|
ElementItemEditor(editor, parent),
|
||||||
part = circle;
|
part(circle)
|
||||||
|
{
|
||||||
|
style_ = new StyleEditor(editor);
|
||||||
|
|
||||||
x = new QLineEdit();
|
x = new QLineEdit();
|
||||||
y = new QLineEdit();
|
y = new QLineEdit();
|
||||||
@@ -36,7 +39,9 @@ CircleEditor::CircleEditor(QETElementEditor *editor, PartCircle *circle, QWidget
|
|||||||
y -> setValidator(new QDoubleValidator(y));
|
y -> setValidator(new QDoubleValidator(y));
|
||||||
r -> setValidator(new QDoubleValidator(r));
|
r -> setValidator(new QDoubleValidator(r));
|
||||||
|
|
||||||
QGridLayout *grid = new QGridLayout(this);
|
QVBoxLayout *v_layout = new QVBoxLayout(this);
|
||||||
|
|
||||||
|
QGridLayout *grid = new QGridLayout();
|
||||||
grid -> addWidget(new QLabel(tr("Centre : ")), 0, 0);
|
grid -> addWidget(new QLabel(tr("Centre : ")), 0, 0);
|
||||||
grid -> addWidget(new QLabel("x"), 1, 0);
|
grid -> addWidget(new QLabel("x"), 1, 0);
|
||||||
grid -> addWidget(x, 1, 1);
|
grid -> addWidget(x, 1, 1);
|
||||||
@@ -45,6 +50,9 @@ CircleEditor::CircleEditor(QETElementEditor *editor, PartCircle *circle, QWidget
|
|||||||
grid -> addWidget(new QLabel(tr("Diam\350tre : ")), 2, 0);
|
grid -> addWidget(new QLabel(tr("Diam\350tre : ")), 2, 0);
|
||||||
grid -> addWidget(r, 2, 1);
|
grid -> addWidget(r, 2, 1);
|
||||||
|
|
||||||
|
v_layout -> addWidget(style_);
|
||||||
|
v_layout -> addLayout(grid);
|
||||||
|
|
||||||
activeConnections(true);
|
activeConnections(true);
|
||||||
updateForm();
|
updateForm();
|
||||||
}
|
}
|
||||||
@@ -53,10 +61,42 @@ CircleEditor::CircleEditor(QETElementEditor *editor, PartCircle *circle, QWidget
|
|||||||
CircleEditor::~CircleEditor() {
|
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
|
met a jour le cercle a partir des donnees du formulaire
|
||||||
*/
|
*/
|
||||||
void CircleEditor::updateCircle() {
|
void CircleEditor::updateCircle() {
|
||||||
|
if (!part) return;
|
||||||
part -> setProperty("x", x -> text().toDouble());
|
part -> setProperty("x", x -> text().toDouble());
|
||||||
part -> setProperty("y", y -> text().toDouble());
|
part -> setProperty("y", y -> text().toDouble());
|
||||||
part -> setProperty("diameter", r -> text().toDouble());
|
part -> setProperty("diameter", r -> text().toDouble());
|
||||||
@@ -75,6 +115,7 @@ void CircleEditor::updateCircleD() { addChangePartCommand(tr("diam\350tre"), par
|
|||||||
Met a jour le formulaire d'edition
|
Met a jour le formulaire d'edition
|
||||||
*/
|
*/
|
||||||
void CircleEditor::updateForm() {
|
void CircleEditor::updateForm() {
|
||||||
|
if (!part) return;
|
||||||
activeConnections(false);
|
activeConnections(false);
|
||||||
x -> setText(part -> property("x").toString());
|
x -> setText(part -> property("x").toString());
|
||||||
y -> setText(part -> property("y").toString());
|
y -> setText(part -> property("y").toString());
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
#include "elementitemeditor.h"
|
#include "elementitemeditor.h"
|
||||||
class PartCircle;
|
class PartCircle;
|
||||||
|
class StyleEditor;
|
||||||
/**
|
/**
|
||||||
Cette classe represente un editeur de cercle.
|
Cette classe represente un editeur de cercle.
|
||||||
Elle permet d'editer a travers une interface graphique les
|
Elle permet d'editer a travers une interface graphique les
|
||||||
@@ -29,7 +30,7 @@ class CircleEditor : public ElementItemEditor {
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
// Constructeurs, destructeur
|
// Constructeurs, destructeur
|
||||||
public:
|
public:
|
||||||
CircleEditor(QETElementEditor *, PartCircle *, QWidget * = 0);
|
CircleEditor(QETElementEditor *, PartCircle * = 0, QWidget * = 0);
|
||||||
virtual ~CircleEditor();
|
virtual ~CircleEditor();
|
||||||
private:
|
private:
|
||||||
CircleEditor(const CircleEditor &);
|
CircleEditor(const CircleEditor &);
|
||||||
@@ -37,9 +38,14 @@ class CircleEditor : public ElementItemEditor {
|
|||||||
// attributs
|
// attributs
|
||||||
private:
|
private:
|
||||||
PartCircle *part;
|
PartCircle *part;
|
||||||
|
StyleEditor *style_;
|
||||||
QLineEdit *x, *y, *r;
|
QLineEdit *x, *y, *r;
|
||||||
|
|
||||||
// methodes
|
// methodes
|
||||||
|
public:
|
||||||
|
virtual bool setPart(CustomElementPart *);
|
||||||
|
virtual CustomElementPart *currentPart() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void updateCircle();
|
void updateCircle();
|
||||||
void updateCircleX();
|
void updateCircleX();
|
||||||
|
|||||||
@@ -83,9 +83,6 @@ void CustomElementGraphicPart::stylesFromXml(const QDomElement &qde) {
|
|||||||
|
|
||||||
// recupere l'antialiasing
|
// recupere l'antialiasing
|
||||||
_antialiased = qde.attribute("antialias") == "true";
|
_antialiased = qde.attribute("antialias") == "true";
|
||||||
|
|
||||||
// met a jour l'editeur de style
|
|
||||||
style_editor -> updateForm();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -142,13 +139,6 @@ void CustomElementGraphicPart::applyStylesToQPainter(QPainter &painter) const {
|
|||||||
painter.setBrush(brush);
|
painter.setBrush(brush);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
@return Le widget permettant d'editer les styles
|
|
||||||
*/
|
|
||||||
QWidget *CustomElementGraphicPart::elementInformations() {
|
|
||||||
return(style_editor);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Specifie la valeur d'une propriete de style donnee.
|
Specifie la valeur d'une propriete de style donnee.
|
||||||
@param property propriete a modifier. Valeurs acceptees :
|
@param property propriete a modifier. Valeurs acceptees :
|
||||||
@@ -177,9 +167,6 @@ void CustomElementGraphicPart::setProperty(const QString &property, const QVaria
|
|||||||
setAntialiased(value.toBool());
|
setAntialiased(value.toBool());
|
||||||
change_made = true;
|
change_made = true;
|
||||||
}
|
}
|
||||||
if (change_made) {
|
|
||||||
style_editor -> updateForm();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -69,13 +69,10 @@ class CustomElementGraphicPart : public CustomElementPart {
|
|||||||
_color(BlackColor),
|
_color(BlackColor),
|
||||||
_antialiased(false)
|
_antialiased(false)
|
||||||
{
|
{
|
||||||
style_editor = new StyleEditor(elementEditor(), this);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Destructeur
|
/// Destructeur
|
||||||
virtual ~CustomElementGraphicPart() {
|
virtual ~CustomElementGraphicPart() {
|
||||||
if (style_editor -> parentWidget()) return; // l'editeur de style sera supprime par son parent
|
|
||||||
delete style_editor;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// attributs
|
// attributs
|
||||||
@@ -86,10 +83,6 @@ class CustomElementGraphicPart : public CustomElementPart {
|
|||||||
Color _color;
|
Color _color;
|
||||||
bool _antialiased;
|
bool _antialiased;
|
||||||
|
|
||||||
protected:
|
|
||||||
/// Widget d'edition des styles de cette partie graphique
|
|
||||||
StyleEditor *style_editor;
|
|
||||||
|
|
||||||
//methodes
|
//methodes
|
||||||
public:
|
public:
|
||||||
void setLineStyle(LineStyle);
|
void setLineStyle(LineStyle);
|
||||||
@@ -104,7 +97,6 @@ class CustomElementGraphicPart : public CustomElementPart {
|
|||||||
Color color() const;
|
Color color() const;
|
||||||
bool antialiased() const;
|
bool antialiased() const;
|
||||||
|
|
||||||
QWidget *elementInformations();
|
|
||||||
void setProperty(const QString &, const QVariant &);
|
void setProperty(const QString &, const QVariant &);
|
||||||
QVariant property(const QString &);
|
QVariant property(const QString &);
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,16 @@ QETElementEditor *CustomElementPart::elementEditor() const {
|
|||||||
return(element_editor);
|
return(element_editor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Appelle le slot updateCurrentPartEditor de l'editeur
|
||||||
|
@see QETElementEditor::updateCurrentPartEditor()
|
||||||
|
*/
|
||||||
|
void CustomElementPart::updateCurrentPartEditor() const {
|
||||||
|
if (element_editor) {
|
||||||
|
element_editor -> updateCurrentPartEditor();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// @return l'ElementScene contenant les parties editees par cet editeur
|
/// @return l'ElementScene contenant les parties editees par cet editeur
|
||||||
ElementScene *CustomElementPart::elementScene() const {
|
ElementScene *CustomElementPart::elementScene() const {
|
||||||
return(element_editor -> elementScene());
|
return(element_editor -> elementScene());
|
||||||
|
|||||||
@@ -59,8 +59,6 @@ class CustomElementPart {
|
|||||||
Enregistre la partie dans un document XML
|
Enregistre la partie dans un document XML
|
||||||
*/
|
*/
|
||||||
virtual const QDomElement toXml(QDomDocument &) const = 0;
|
virtual const QDomElement toXml(QDomDocument &) const = 0;
|
||||||
/// @return un widget suppose decrire et/ou permettre de modifier la partie
|
|
||||||
virtual QWidget *elementInformations() = 0;
|
|
||||||
/**
|
/**
|
||||||
Permet de modifier une des proprietes de la partie
|
Permet de modifier une des proprietes de la partie
|
||||||
*/
|
*/
|
||||||
@@ -77,11 +75,18 @@ class CustomElementPart {
|
|||||||
virtual bool isUseless() const = 0;
|
virtual bool isUseless() const = 0;
|
||||||
/// @return un pointeur vers l'editeur d'element parent
|
/// @return un pointeur vers l'editeur d'element parent
|
||||||
virtual QETElementEditor *elementEditor() const;
|
virtual QETElementEditor *elementEditor() const;
|
||||||
|
/**
|
||||||
|
Appelle le slot updateCurrentPartEditor de l'editeur
|
||||||
|
@see QETElementEditor::updateCurrentPartEditor()
|
||||||
|
*/
|
||||||
|
virtual void updateCurrentPartEditor() const;
|
||||||
/// @return un pointeur vers la scene d'edition parente
|
/// @return un pointeur vers la scene d'edition parente
|
||||||
virtual ElementScene *elementScene() const;
|
virtual ElementScene *elementScene() const;
|
||||||
/// @return la pile d'annulations a utiliser
|
/// @return la pile d'annulations a utiliser
|
||||||
virtual QUndoStack &undoStack() const;
|
virtual QUndoStack &undoStack() const;
|
||||||
/// @return le nom de la partie
|
/// @return le nom de la partie
|
||||||
virtual QString name() const = 0;
|
virtual QString name() const = 0;
|
||||||
|
/// @return le nom qui sera utilise pour nommer l'element XML lors de l'export
|
||||||
|
virtual QString xmlName() const = 0;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -47,15 +47,23 @@ QUndoStack &ElementItemEditor::undoStack() const {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
Ajoute une ChangePartCommand a l'UndoStack. L'ancienne valeur sera
|
Ajoute une ChangePartCommand a l'UndoStack. L'ancienne valeur sera
|
||||||
automatiquement recuperee.
|
automatiquement recuperee. A noter que cette methode ne fait rien si
|
||||||
|
l'ancienne valeur et la nouvelle sont egales ou encore si part vaut 0
|
||||||
@param desc nom de la propriete modifiee
|
@param desc nom de la propriete modifiee
|
||||||
@param part partie modifiee
|
@param part partie modifiee
|
||||||
@param prop propriete modifiee
|
@param prop propriete modifiee
|
||||||
@param new_v nouvelle valeur
|
@param new_v nouvelle valeur
|
||||||
*/
|
*/
|
||||||
void ElementItemEditor::addChangePartCommand(const QString &desc, CustomElementPart *part, const QString &prop, const QVariant &new_v) {
|
void ElementItemEditor::addChangePartCommand(const QString &desc, CustomElementPart *part, const QString &prop, const QVariant &new_v) {
|
||||||
|
// ne fait rien si part vaut 0
|
||||||
|
if (!part) return;
|
||||||
|
|
||||||
|
// recupere l'ancienne valeur
|
||||||
QVariant old_v = part -> property(prop);
|
QVariant old_v = part -> property(prop);
|
||||||
|
|
||||||
|
// ne fait rien si l'ancienne valeur et la nouvelle sont egales
|
||||||
if (old_v == new_v) return;
|
if (old_v == new_v) return;
|
||||||
|
|
||||||
undoStack().push(
|
undoStack().push(
|
||||||
new ChangePartCommand(
|
new ChangePartCommand(
|
||||||
desc + " " + element_type_name,
|
desc + " " + element_type_name,
|
||||||
@@ -76,3 +84,12 @@ QString ElementItemEditor::elementTypeName() const {
|
|||||||
void ElementItemEditor::setElementTypeName(const QString &name) {
|
void ElementItemEditor::setElementTypeName(const QString &name) {
|
||||||
element_type_name = name;
|
element_type_name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Detache l'editeur de la primitive qu'il edite.
|
||||||
|
Equivaut a setPart(0)
|
||||||
|
@see setPart
|
||||||
|
*/
|
||||||
|
void ElementItemEditor::detach() {
|
||||||
|
setPart(0);
|
||||||
|
}
|
||||||
|
|||||||
@@ -44,6 +44,10 @@ class ElementItemEditor : public QWidget {
|
|||||||
virtual void addChangePartCommand(const QString &, CustomElementPart *, const QString &, const QVariant &);
|
virtual void addChangePartCommand(const QString &, CustomElementPart *, const QString &, const QVariant &);
|
||||||
virtual QString elementTypeName() const;
|
virtual QString elementTypeName() const;
|
||||||
virtual void setElementTypeName(const QString &);
|
virtual void setElementTypeName(const QString &);
|
||||||
|
virtual void detach();
|
||||||
|
virtual bool setPart(CustomElementPart *) = 0;
|
||||||
|
virtual CustomElementPart *currentPart() const = 0;
|
||||||
|
virtual void updateForm() = 0;
|
||||||
|
|
||||||
// attributs
|
// attributs
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include "ellipseeditor.h"
|
#include "ellipseeditor.h"
|
||||||
|
#include "styleeditor.h"
|
||||||
#include "partellipse.h"
|
#include "partellipse.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -24,9 +25,11 @@
|
|||||||
@param ellipse L'ellipse a editer
|
@param ellipse L'ellipse a editer
|
||||||
@param parent le Widget parent
|
@param parent le Widget parent
|
||||||
*/
|
*/
|
||||||
EllipseEditor::EllipseEditor(QETElementEditor *editor, PartEllipse *ellipse, QWidget *parent) : ElementItemEditor(editor, parent) {
|
EllipseEditor::EllipseEditor(QETElementEditor *editor, PartEllipse *ellipse, QWidget *parent) :
|
||||||
|
ElementItemEditor(editor, parent),
|
||||||
part = ellipse;
|
part(ellipse)
|
||||||
|
{
|
||||||
|
style_ = new StyleEditor(editor);
|
||||||
|
|
||||||
x = new QLineEdit();
|
x = new QLineEdit();
|
||||||
y = new QLineEdit();
|
y = new QLineEdit();
|
||||||
@@ -38,7 +41,9 @@ EllipseEditor::EllipseEditor(QETElementEditor *editor, PartEllipse *ellipse, QWi
|
|||||||
h -> setValidator(new QDoubleValidator(h));
|
h -> setValidator(new QDoubleValidator(h));
|
||||||
v -> setValidator(new QDoubleValidator(v));
|
v -> setValidator(new QDoubleValidator(v));
|
||||||
|
|
||||||
QGridLayout *grid = new QGridLayout(this);
|
QVBoxLayout *v_layout = new QVBoxLayout(this);
|
||||||
|
|
||||||
|
QGridLayout *grid = new QGridLayout();
|
||||||
grid -> addWidget(new QLabel(tr("Centre : ")), 0, 0);
|
grid -> addWidget(new QLabel(tr("Centre : ")), 0, 0);
|
||||||
grid -> addWidget(new QLabel("x"), 1, 0);
|
grid -> addWidget(new QLabel("x"), 1, 0);
|
||||||
grid -> addWidget(x, 1, 1);
|
grid -> addWidget(x, 1, 1);
|
||||||
@@ -50,6 +55,9 @@ EllipseEditor::EllipseEditor(QETElementEditor *editor, PartEllipse *ellipse, QWi
|
|||||||
grid -> addWidget(new QLabel(tr("vertical :")), 4, 0);
|
grid -> addWidget(new QLabel(tr("vertical :")), 4, 0);
|
||||||
grid -> addWidget(v, 4, 1);
|
grid -> addWidget(v, 4, 1);
|
||||||
|
|
||||||
|
v_layout -> addWidget(style_);
|
||||||
|
v_layout -> addLayout(grid);
|
||||||
|
|
||||||
activeConnections(true);
|
activeConnections(true);
|
||||||
updateForm();
|
updateForm();
|
||||||
}
|
}
|
||||||
@@ -58,10 +66,42 @@ EllipseEditor::EllipseEditor(QETElementEditor *editor, PartEllipse *ellipse, QWi
|
|||||||
EllipseEditor::~EllipseEditor() {
|
EllipseEditor::~EllipseEditor() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
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 d'ellipse acceptera d'editer la primitive new_part s'il s'agit
|
||||||
|
d'un objet de la classe PartEllipse.
|
||||||
|
@param new_part Nouvelle primitive a editer
|
||||||
|
@return true si l'editeur a accepter d'editer la primitive, false sinon
|
||||||
|
*/
|
||||||
|
bool EllipseEditor::setPart(CustomElementPart *new_part) {
|
||||||
|
if (!new_part) {
|
||||||
|
part = 0;
|
||||||
|
style_ -> setPart(0);
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
if (PartEllipse *part_ellipse = dynamic_cast<PartEllipse *>(new_part)) {
|
||||||
|
part = part_ellipse;
|
||||||
|
style_ -> setPart(part);
|
||||||
|
updateForm();
|
||||||
|
return(true);
|
||||||
|
} else {
|
||||||
|
return(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return la primitive actuellement editee, ou 0 si ce widget n'en edite pas
|
||||||
|
*/
|
||||||
|
CustomElementPart *EllipseEditor::currentPart() const {
|
||||||
|
return(part);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Met a jour l'ellipse a partir des donnees du formulaire
|
Met a jour l'ellipse a partir des donnees du formulaire
|
||||||
*/
|
*/
|
||||||
void EllipseEditor::updateEllipse() {
|
void EllipseEditor::updateEllipse() {
|
||||||
|
if (!part) return;
|
||||||
part -> setProperty("x", x -> text().toDouble());
|
part -> setProperty("x", x -> text().toDouble());
|
||||||
part -> setProperty("y", y -> text().toDouble());
|
part -> setProperty("y", y -> text().toDouble());
|
||||||
part -> setProperty("diameter_h", h -> text().toDouble());
|
part -> setProperty("diameter_h", h -> text().toDouble());
|
||||||
@@ -81,6 +121,7 @@ void EllipseEditor::updateEllipseV() { addChangePartCommand(tr("diam\350tre vert
|
|||||||
Met a jour le formulaire d'edition
|
Met a jour le formulaire d'edition
|
||||||
*/
|
*/
|
||||||
void EllipseEditor::updateForm() {
|
void EllipseEditor::updateForm() {
|
||||||
|
if (!part) return;
|
||||||
activeConnections(false);
|
activeConnections(false);
|
||||||
x -> setText(part -> property("x").toString());
|
x -> setText(part -> property("x").toString());
|
||||||
y -> setText(part -> property("y").toString());
|
y -> setText(part -> property("y").toString());
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
#include "elementitemeditor.h"
|
#include "elementitemeditor.h"
|
||||||
class PartEllipse;
|
class PartEllipse;
|
||||||
|
class StyleEditor;
|
||||||
/**
|
/**
|
||||||
Cette classe represente le widget d'edition d'une ellipse dans l'editeur
|
Cette classe represente le widget d'edition d'une ellipse dans l'editeur
|
||||||
d'element.
|
d'element.
|
||||||
@@ -28,17 +29,22 @@ class EllipseEditor : public ElementItemEditor {
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
//constructeurs, destructeur
|
//constructeurs, destructeur
|
||||||
public:
|
public:
|
||||||
EllipseEditor(QETElementEditor *, PartEllipse *, QWidget * = 0);
|
EllipseEditor(QETElementEditor *, PartEllipse * = 0, QWidget * = 0);
|
||||||
~EllipseEditor();
|
virtual ~EllipseEditor();
|
||||||
private:
|
private:
|
||||||
EllipseEditor(const EllipseEditor &);
|
EllipseEditor(const EllipseEditor &);
|
||||||
|
|
||||||
// attributs
|
// attributs
|
||||||
private:
|
private:
|
||||||
PartEllipse *part;
|
PartEllipse *part;
|
||||||
|
StyleEditor *style_;
|
||||||
QLineEdit *x, *y, *h, *v;
|
QLineEdit *x, *y, *h, *v;
|
||||||
|
|
||||||
// methodes
|
// methodes
|
||||||
|
public:
|
||||||
|
virtual bool setPart(CustomElementPart *);
|
||||||
|
virtual CustomElementPart *currentPart() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void updateEllipse();
|
void updateEllipse();
|
||||||
void updateEllipseX();
|
void updateEllipseX();
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include "lineeditor.h"
|
#include "lineeditor.h"
|
||||||
|
#include "styleeditor.h"
|
||||||
#include "partline.h"
|
#include "partline.h"
|
||||||
#include "qet.h"
|
#include "qet.h"
|
||||||
#include "qeticons.h"
|
#include "qeticons.h"
|
||||||
@@ -26,9 +27,11 @@
|
|||||||
@param line La ligne a editer
|
@param line La ligne a editer
|
||||||
@param parent le Widget parent
|
@param parent le Widget parent
|
||||||
*/
|
*/
|
||||||
LineEditor::LineEditor(QETElementEditor *editor, PartLine *line, QWidget *parent) : ElementItemEditor(editor, parent) {
|
LineEditor::LineEditor(QETElementEditor *editor, PartLine *line, QWidget *parent) :
|
||||||
|
ElementItemEditor(editor, parent),
|
||||||
part = line;
|
part(line)
|
||||||
|
{
|
||||||
|
style_ = new StyleEditor(editor);
|
||||||
|
|
||||||
x1 = new QLineEdit();
|
x1 = new QLineEdit();
|
||||||
y1 = new QLineEdit();
|
y1 = new QLineEdit();
|
||||||
@@ -78,6 +81,7 @@ LineEditor::LineEditor(QETElementEditor *editor, PartLine *line, QWidget *parent
|
|||||||
grid2 -> addWidget(end2_length, 1, 2);
|
grid2 -> addWidget(end2_length, 1, 2);
|
||||||
|
|
||||||
QVBoxLayout *v_layout = new QVBoxLayout(this);
|
QVBoxLayout *v_layout = new QVBoxLayout(this);
|
||||||
|
v_layout -> addWidget(style_);
|
||||||
v_layout -> addLayout(grid);
|
v_layout -> addLayout(grid);
|
||||||
v_layout -> addLayout(grid2);
|
v_layout -> addLayout(grid2);
|
||||||
updateForm();
|
updateForm();
|
||||||
@@ -87,10 +91,42 @@ LineEditor::LineEditor(QETElementEditor *editor, PartLine *line, QWidget *parent
|
|||||||
LineEditor::~LineEditor() {
|
LineEditor::~LineEditor() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
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 ligne acceptera d'editer la primitive new_part s'il s'agit d'un
|
||||||
|
objet de la classe PartLine.
|
||||||
|
@param new_part Nouvelle primitive a editer
|
||||||
|
@return true si l'editeur a accepter d'editer la primitive, false sinon
|
||||||
|
*/
|
||||||
|
bool LineEditor::setPart(CustomElementPart *new_part) {
|
||||||
|
if (!new_part) {
|
||||||
|
part = 0;
|
||||||
|
style_ -> setPart(0);
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
if (PartLine *part_line = dynamic_cast<PartLine *>(new_part)) {
|
||||||
|
part = part_line;
|
||||||
|
style_ -> setPart(part);
|
||||||
|
updateForm();
|
||||||
|
return(true);
|
||||||
|
} else {
|
||||||
|
return(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return la primitive actuellement editee, ou 0 si ce widget n'en edite pas
|
||||||
|
*/
|
||||||
|
CustomElementPart *LineEditor::currentPart() const {
|
||||||
|
return(part);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Met a jour la ligne a partir des donnees du formulaire
|
Met a jour la ligne a partir des donnees du formulaire
|
||||||
*/
|
*/
|
||||||
void LineEditor::updateLine() {
|
void LineEditor::updateLine() {
|
||||||
|
if (!part) return;
|
||||||
part -> setFirstEndType(static_cast<QET::EndType>(end1_type -> currentIndex()));
|
part -> setFirstEndType(static_cast<QET::EndType>(end1_type -> currentIndex()));
|
||||||
part -> setFirstEndLength(end1_length -> text().toDouble());
|
part -> setFirstEndLength(end1_length -> text().toDouble());
|
||||||
part -> setSecondEndType(static_cast<QET::EndType>(end2_type -> currentIndex()));
|
part -> setSecondEndType(static_cast<QET::EndType>(end2_type -> currentIndex()));
|
||||||
@@ -130,6 +166,7 @@ void LineEditor::updateLineEndLength2() { addChangePartCommand(tr("longueur fin
|
|||||||
Met a jour le formulaire d'edition
|
Met a jour le formulaire d'edition
|
||||||
*/
|
*/
|
||||||
void LineEditor::updateForm() {
|
void LineEditor::updateForm() {
|
||||||
|
if (!part) return;
|
||||||
activeConnections(false);
|
activeConnections(false);
|
||||||
QPointF p1(part -> sceneP1());
|
QPointF p1(part -> sceneP1());
|
||||||
QPointF p2(part -> sceneP2());
|
QPointF p2(part -> sceneP2());
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
#include "elementitemeditor.h"
|
#include "elementitemeditor.h"
|
||||||
class PartLine;
|
class PartLine;
|
||||||
|
class StyleEditor;
|
||||||
/**
|
/**
|
||||||
Cette classe represente le widget d'edition d'une ligne dans l'editeur
|
Cette classe represente le widget d'edition d'une ligne dans l'editeur
|
||||||
d'element.
|
d'element.
|
||||||
@@ -28,19 +29,24 @@ class LineEditor : public ElementItemEditor {
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
//constructeurs, destructeur
|
//constructeurs, destructeur
|
||||||
public:
|
public:
|
||||||
LineEditor(QETElementEditor *, PartLine *, QWidget * = 0);
|
LineEditor(QETElementEditor *, PartLine * = 0, QWidget * = 0);
|
||||||
~LineEditor();
|
virtual ~LineEditor();
|
||||||
private:
|
private:
|
||||||
LineEditor(const LineEditor &);
|
LineEditor(const LineEditor &);
|
||||||
|
|
||||||
// attributs
|
// attributs
|
||||||
private:
|
private:
|
||||||
PartLine *part;
|
PartLine *part;
|
||||||
|
StyleEditor *style_;
|
||||||
QLineEdit *x1, *y1, *x2, *y2;
|
QLineEdit *x1, *y1, *x2, *y2;
|
||||||
QComboBox *end1_type, *end2_type;
|
QComboBox *end1_type, *end2_type;
|
||||||
QLineEdit *end1_length, *end2_length;
|
QLineEdit *end1_length, *end2_length;
|
||||||
|
|
||||||
// methodes
|
// methodes
|
||||||
|
public:
|
||||||
|
virtual bool setPart(CustomElementPart *);
|
||||||
|
virtual CustomElementPart *currentPart() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void updateLine();
|
void updateLine();
|
||||||
void updateLineX1();
|
void updateLineX1();
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include "partarc.h"
|
#include "partarc.h"
|
||||||
#include "arceditor.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@@ -35,10 +34,6 @@ PartArc::PartArc(QETElementEditor *editor, QGraphicsItem *parent, QGraphicsScene
|
|||||||
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
||||||
#endif
|
#endif
|
||||||
setAcceptedMouseButtons(Qt::LeftButton);
|
setAcceptedMouseButtons(Qt::LeftButton);
|
||||||
informations = new ArcEditor(elementEditor(), this);
|
|
||||||
informations -> setElementTypeName(name());
|
|
||||||
style_editor -> appendWidget(informations);
|
|
||||||
style_editor -> setElementTypeName(name());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Destructeur
|
/// Destructeur
|
||||||
@@ -209,8 +204,8 @@ QVariant PartArc::property(const QString &property) {
|
|||||||
*/
|
*/
|
||||||
QVariant PartArc::itemChange(GraphicsItemChange change, const QVariant &value) {
|
QVariant PartArc::itemChange(GraphicsItemChange change, const QVariant &value) {
|
||||||
if (scene()) {
|
if (scene()) {
|
||||||
if (change == QGraphicsItem::ItemPositionChange || change == QGraphicsItem::ItemSelectedChange) {
|
if (change == QGraphicsItem::ItemPositionChange || change == QGraphicsItem::ItemPositionHasChanged) {
|
||||||
informations -> updateForm();
|
updateCurrentPartEditor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return(QGraphicsEllipseItem::itemChange(change, value));
|
return(QGraphicsEllipseItem::itemChange(change, value));
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
#define PART_ARC_H
|
#define PART_ARC_H
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
#include "customelementgraphicpart.h"
|
#include "customelementgraphicpart.h"
|
||||||
class ArcEditor;
|
|
||||||
/**
|
/**
|
||||||
Cette classe represente un arc pouvant etre utilise pour composer le
|
Cette classe represente un arc pouvant etre utilise pour composer le
|
||||||
dessin d'un element dans l'editeur d'element.
|
dessin d'un element dans l'editeur d'element.
|
||||||
@@ -35,7 +34,6 @@ class PartArc : public QGraphicsEllipseItem, public CustomElementGraphicPart {
|
|||||||
|
|
||||||
// attributs
|
// attributs
|
||||||
private:
|
private:
|
||||||
ArcEditor *informations;
|
|
||||||
int _angle;
|
int _angle;
|
||||||
int start_angle;
|
int start_angle;
|
||||||
|
|
||||||
@@ -49,6 +47,7 @@ class PartArc : public QGraphicsEllipseItem, public CustomElementGraphicPart {
|
|||||||
virtual int type() const { return Type; }
|
virtual int type() const { return Type; }
|
||||||
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0);
|
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0);
|
||||||
virtual QString name() const { return(QObject::tr("arc", "element part name")); }
|
virtual QString name() const { return(QObject::tr("arc", "element part name")); }
|
||||||
|
virtual QString xmlName() const { return(QString("arc")); }
|
||||||
virtual const QDomElement toXml(QDomDocument &) const;
|
virtual const QDomElement toXml(QDomDocument &) const;
|
||||||
virtual void fromXml(const QDomElement &);
|
virtual void fromXml(const QDomElement &);
|
||||||
virtual QPointF sceneTopLeft() const;
|
virtual QPointF sceneTopLeft() const;
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include "partcircle.h"
|
#include "partcircle.h"
|
||||||
#include "circleeditor.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@@ -30,10 +29,6 @@ PartCircle::PartCircle(QETElementEditor *editor, QGraphicsItem *parent, QGraphic
|
|||||||
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
||||||
#endif
|
#endif
|
||||||
setAcceptedMouseButtons(Qt::LeftButton);
|
setAcceptedMouseButtons(Qt::LeftButton);
|
||||||
informations = new CircleEditor(elementEditor(), this);
|
|
||||||
informations -> setElementTypeName(name());
|
|
||||||
style_editor -> appendWidget(informations);
|
|
||||||
style_editor -> setElementTypeName(name());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Destructeur
|
/// Destructeur
|
||||||
@@ -163,8 +158,8 @@ QVariant PartCircle::property(const QString &property) {
|
|||||||
*/
|
*/
|
||||||
QVariant PartCircle::itemChange(GraphicsItemChange change, const QVariant &value) {
|
QVariant PartCircle::itemChange(GraphicsItemChange change, const QVariant &value) {
|
||||||
if (scene()) {
|
if (scene()) {
|
||||||
if (change == QGraphicsItem::ItemPositionChange || change == QGraphicsItem::ItemSelectedChange) {
|
if (change == QGraphicsItem::ItemPositionChange || change == QGraphicsItem::ItemPositionHasChanged) {
|
||||||
informations -> updateForm();
|
updateCurrentPartEditor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return(QGraphicsEllipseItem::itemChange(change, value));
|
return(QGraphicsEllipseItem::itemChange(change, value));
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
#define PART_CIRCLE_H
|
#define PART_CIRCLE_H
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
#include "customelementgraphicpart.h"
|
#include "customelementgraphicpart.h"
|
||||||
class CircleEditor;
|
|
||||||
/**
|
/**
|
||||||
Cette classe represente un cercle pouvant etre utilise pour composer le
|
Cette classe represente un cercle pouvant etre utilise pour composer le
|
||||||
dessin d'un element dans l'editeur d'element.
|
dessin d'un element dans l'editeur d'element.
|
||||||
@@ -33,10 +32,6 @@ class PartCircle : public QGraphicsEllipseItem, public CustomElementGraphicPart
|
|||||||
private:
|
private:
|
||||||
PartCircle(const PartCircle &);
|
PartCircle(const PartCircle &);
|
||||||
|
|
||||||
// attributs
|
|
||||||
private:
|
|
||||||
CircleEditor *informations;
|
|
||||||
|
|
||||||
// methodes
|
// methodes
|
||||||
public:
|
public:
|
||||||
enum { Type = UserType + 1102 };
|
enum { Type = UserType + 1102 };
|
||||||
@@ -47,6 +42,7 @@ class PartCircle : public QGraphicsEllipseItem, public CustomElementGraphicPart
|
|||||||
virtual int type() const { return Type; }
|
virtual int type() const { return Type; }
|
||||||
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0);
|
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0);
|
||||||
virtual QString name() const { return(QObject::tr("cercle", "element part name")); }
|
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 const QDomElement toXml(QDomDocument &) const;
|
||||||
virtual void fromXml(const QDomElement &);
|
virtual void fromXml(const QDomElement &);
|
||||||
virtual QPointF sceneTopLeft() const;
|
virtual QPointF sceneTopLeft() const;
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include "partellipse.h"
|
#include "partellipse.h"
|
||||||
#include "ellipseeditor.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@@ -30,10 +29,6 @@ PartEllipse::PartEllipse(QETElementEditor *editor, QGraphicsItem *parent, QGraph
|
|||||||
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
||||||
#endif
|
#endif
|
||||||
setAcceptedMouseButtons(Qt::LeftButton);
|
setAcceptedMouseButtons(Qt::LeftButton);
|
||||||
informations = new EllipseEditor(elementEditor(), this);
|
|
||||||
informations -> setElementTypeName(name());
|
|
||||||
style_editor -> appendWidget(informations);
|
|
||||||
style_editor -> setElementTypeName(name());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Destructeur
|
/// Destructeur
|
||||||
@@ -170,8 +165,8 @@ QVariant PartEllipse::property(const QString &property) {
|
|||||||
*/
|
*/
|
||||||
QVariant PartEllipse::itemChange(GraphicsItemChange change, const QVariant &value) {
|
QVariant PartEllipse::itemChange(GraphicsItemChange change, const QVariant &value) {
|
||||||
if (scene()) {
|
if (scene()) {
|
||||||
if (change == QGraphicsItem::ItemPositionChange || change == QGraphicsItem::ItemSelectedChange) {
|
if (change == QGraphicsItem::ItemPositionChange || change == QGraphicsItem::ItemPositionHasChanged) {
|
||||||
informations -> updateForm();
|
updateCurrentPartEditor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return(QGraphicsEllipseItem::itemChange(change, value));
|
return(QGraphicsEllipseItem::itemChange(change, value));
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
#define PART_ELLIPSE_H
|
#define PART_ELLIPSE_H
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
#include "customelementgraphicpart.h"
|
#include "customelementgraphicpart.h"
|
||||||
class EllipseEditor;
|
|
||||||
/**
|
/**
|
||||||
Cette classe represente une ellipse pouvant etre utilisee pour composer le
|
Cette classe represente une ellipse pouvant etre utilisee pour composer le
|
||||||
dessin d'un element dans l'editeur d'element.
|
dessin d'un element dans l'editeur d'element.
|
||||||
@@ -33,10 +32,6 @@ class PartEllipse : public QGraphicsEllipseItem, public CustomElementGraphicPart
|
|||||||
private:
|
private:
|
||||||
PartEllipse(const PartEllipse &);
|
PartEllipse(const PartEllipse &);
|
||||||
|
|
||||||
// attributs
|
|
||||||
private:
|
|
||||||
EllipseEditor *informations;
|
|
||||||
|
|
||||||
// methodes
|
// methodes
|
||||||
public:
|
public:
|
||||||
enum { Type = UserType + 1103 };
|
enum { Type = UserType + 1103 };
|
||||||
@@ -47,6 +42,7 @@ class PartEllipse : public QGraphicsEllipseItem, public CustomElementGraphicPart
|
|||||||
virtual int type() const { return Type; }
|
virtual int type() const { return Type; }
|
||||||
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0);
|
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0);
|
||||||
virtual QString name() const { return(QObject::tr("ellipse", "element part name")); }
|
virtual QString name() const { return(QObject::tr("ellipse", "element part name")); }
|
||||||
|
virtual QString xmlName() const { return(QString("ellipse")); }
|
||||||
virtual const QDomElement toXml(QDomDocument &) const;
|
virtual const QDomElement toXml(QDomDocument &) const;
|
||||||
virtual void fromXml(const QDomElement &);
|
virtual void fromXml(const QDomElement &);
|
||||||
virtual QPointF sceneTopLeft() const;
|
virtual QPointF sceneTopLeft() const;
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include "partline.h"
|
#include "partline.h"
|
||||||
#include "lineeditor.h"
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -38,10 +37,6 @@ PartLine::PartLine(QETElementEditor *editor, QGraphicsItem *parent, QGraphicsSce
|
|||||||
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
||||||
#endif
|
#endif
|
||||||
setAcceptedMouseButtons(Qt::LeftButton);
|
setAcceptedMouseButtons(Qt::LeftButton);
|
||||||
informations = new LineEditor(elementEditor(), this);
|
|
||||||
informations -> setElementTypeName(name());
|
|
||||||
style_editor -> appendWidget(informations);
|
|
||||||
style_editor -> setElementTypeName(name());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Destructeur
|
/// Destructeur
|
||||||
@@ -287,8 +282,8 @@ QVariant PartLine::property(const QString &property) {
|
|||||||
*/
|
*/
|
||||||
QVariant PartLine::itemChange(GraphicsItemChange change, const QVariant &value) {
|
QVariant PartLine::itemChange(GraphicsItemChange change, const QVariant &value) {
|
||||||
if (scene()) {
|
if (scene()) {
|
||||||
if (change == QGraphicsItem::ItemPositionChange || change == QGraphicsItem::ItemSelectedChange) {
|
if (change == QGraphicsItem::ItemPositionChange || change == QGraphicsItem::ItemPositionHasChanged) {
|
||||||
informations -> updateForm();
|
updateCurrentPartEditor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return(QGraphicsLineItem::itemChange(change, value));
|
return(QGraphicsLineItem::itemChange(change, value));
|
||||||
|
|||||||
@@ -20,7 +20,6 @@
|
|||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
#include "customelementgraphicpart.h"
|
#include "customelementgraphicpart.h"
|
||||||
#include "qet.h"
|
#include "qet.h"
|
||||||
class LineEditor;
|
|
||||||
/**
|
/**
|
||||||
Cette classe represente une ligne pouvant etre utilisee pour composer le
|
Cette classe represente une ligne pouvant etre utilisee pour composer le
|
||||||
dessin d'un element dans l'editeur d'element.
|
dessin d'un element dans l'editeur d'element.
|
||||||
@@ -43,7 +42,6 @@ class PartLine : public QGraphicsLineItem, public CustomElementGraphicPart {
|
|||||||
|
|
||||||
// attributs
|
// attributs
|
||||||
private:
|
private:
|
||||||
LineEditor *informations;
|
|
||||||
QET::EndType first_end;
|
QET::EndType first_end;
|
||||||
qreal first_length;
|
qreal first_length;
|
||||||
QET::EndType second_end;
|
QET::EndType second_end;
|
||||||
@@ -60,6 +58,7 @@ class PartLine : public QGraphicsLineItem, public CustomElementGraphicPart {
|
|||||||
virtual int type() const { return Type; }
|
virtual int type() const { return Type; }
|
||||||
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0);
|
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0);
|
||||||
virtual QString name() const { return(QObject::tr("ligne", "element part name")); }
|
virtual QString name() const { return(QObject::tr("ligne", "element part name")); }
|
||||||
|
virtual QString xmlName() const { return(QString("line")); }
|
||||||
virtual const QDomElement toXml(QDomDocument &) const;
|
virtual const QDomElement toXml(QDomDocument &) const;
|
||||||
virtual void fromXml(const QDomElement &);
|
virtual void fromXml(const QDomElement &);
|
||||||
virtual QPointF sceneP1() const;
|
virtual QPointF sceneP1() const;
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
#include "partpolygon.h"
|
#include "partpolygon.h"
|
||||||
#include "qet.h"
|
#include "qet.h"
|
||||||
#include "polygoneditor.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@@ -35,10 +34,6 @@ PartPolygon::PartPolygon(QETElementEditor *editor, QGraphicsItem *parent, QGraph
|
|||||||
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
||||||
#endif
|
#endif
|
||||||
setAcceptedMouseButtons(Qt::LeftButton);
|
setAcceptedMouseButtons(Qt::LeftButton);
|
||||||
informations = new PolygonEditor(elementEditor(), this);
|
|
||||||
informations -> setElementTypeName(name());
|
|
||||||
style_editor -> appendWidget(informations);
|
|
||||||
style_editor -> setElementTypeName(name());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Destructeur
|
/// Destructeur
|
||||||
@@ -142,8 +137,8 @@ QVariant PartPolygon::property(const QString &property) {
|
|||||||
*/
|
*/
|
||||||
QVariant PartPolygon::itemChange(GraphicsItemChange change, const QVariant &value) {
|
QVariant PartPolygon::itemChange(GraphicsItemChange change, const QVariant &value) {
|
||||||
if (scene()) {
|
if (scene()) {
|
||||||
if (change == QGraphicsItem::ItemPositionChange || change == QGraphicsItem::ItemSelectedChange) {
|
if (change == QGraphicsItem::ItemPositionChange || change == QGraphicsItem::ItemPositionHasChanged) {
|
||||||
informations -> updateForm();
|
updateCurrentPartEditor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return(QGraphicsPolygonItem::itemChange(change, value));
|
return(QGraphicsPolygonItem::itemChange(change, value));
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
#define PART_POLYGON_H
|
#define PART_POLYGON_H
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
#include "customelementgraphicpart.h"
|
#include "customelementgraphicpart.h"
|
||||||
class PolygonEditor;
|
|
||||||
/**
|
/**
|
||||||
Cette classe represente un polygone pouvant etre utilise pour composer le
|
Cette classe represente un polygone pouvant etre utilise pour composer le
|
||||||
dessin d'un element dans l'editeur d'element.
|
dessin d'un element dans l'editeur d'element.
|
||||||
@@ -36,20 +35,7 @@ class PartPolygon : public QGraphicsPolygonItem, public CustomElementGraphicPart
|
|||||||
// attributs
|
// attributs
|
||||||
private:
|
private:
|
||||||
bool closed;
|
bool closed;
|
||||||
PolygonEditor *informations;
|
|
||||||
|
|
||||||
/**
|
|
||||||
constructeur
|
|
||||||
paint()
|
|
||||||
widget bidon pour l'edition
|
|
||||||
methode pour poser le polygone :
|
|
||||||
-mousePressEvent = pose un nouveau point
|
|
||||||
-mouseMoveEvent = deplace ce point
|
|
||||||
-mouveReleaseEvent = finalise ce point
|
|
||||||
utiliser QPolygonF ; memoriser le point en cours (tout comme le
|
|
||||||
partploygon en cours) et ne l'ajouter au qpolygonf que lors du
|
|
||||||
mouseReleaseEvent
|
|
||||||
*/
|
|
||||||
// methodes
|
// methodes
|
||||||
public:
|
public:
|
||||||
enum { Type = UserType + 1105 };
|
enum { Type = UserType + 1105 };
|
||||||
@@ -59,6 +45,7 @@ class PartPolygon : public QGraphicsPolygonItem, public CustomElementGraphicPart
|
|||||||
*/
|
*/
|
||||||
virtual int type() const { return Type; }
|
virtual int type() const { return Type; }
|
||||||
virtual QString name() const { return(QObject::tr("polygone", "element part name")); }
|
virtual QString name() const { return(QObject::tr("polygone", "element part name")); }
|
||||||
|
virtual QString xmlName() const { return(QString("polygon")); }
|
||||||
void fromXml(const QDomElement &);
|
void fromXml(const QDomElement &);
|
||||||
const QDomElement toXml(QDomDocument &) const;
|
const QDomElement toXml(QDomDocument &) const;
|
||||||
virtual QRectF boundingRect() const;
|
virtual QRectF boundingRect() const;
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include "partrectangle.h"
|
#include "partrectangle.h"
|
||||||
#include "rectangleeditor.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@@ -30,10 +29,6 @@ PartRectangle::PartRectangle(QETElementEditor *editor, QGraphicsItem *parent, QG
|
|||||||
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
||||||
#endif
|
#endif
|
||||||
setAcceptedMouseButtons(Qt::LeftButton);
|
setAcceptedMouseButtons(Qt::LeftButton);
|
||||||
informations = new RectangleEditor(elementEditor(), this);
|
|
||||||
informations -> setElementTypeName(name());
|
|
||||||
style_editor -> appendWidget(informations);
|
|
||||||
style_editor -> setElementTypeName(name());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Destructeur
|
/// Destructeur
|
||||||
@@ -177,8 +172,8 @@ QVariant PartRectangle::property(const QString &property) {
|
|||||||
*/
|
*/
|
||||||
QVariant PartRectangle::itemChange(GraphicsItemChange change, const QVariant &value) {
|
QVariant PartRectangle::itemChange(GraphicsItemChange change, const QVariant &value) {
|
||||||
if (scene()) {
|
if (scene()) {
|
||||||
if (change == QGraphicsItem::ItemPositionChange || change == QGraphicsItem::ItemSelectedChange) {
|
if (change == QGraphicsItem::ItemPositionChange || change == QGraphicsItem::ItemPositionHasChanged) {
|
||||||
informations -> updateForm();
|
updateCurrentPartEditor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return(QGraphicsRectItem::itemChange(change, value));
|
return(QGraphicsRectItem::itemChange(change, value));
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
#define PART_RECTANGLE_H
|
#define PART_RECTANGLE_H
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
#include "customelementgraphicpart.h"
|
#include "customelementgraphicpart.h"
|
||||||
class RectangleEditor;
|
|
||||||
/**
|
/**
|
||||||
Cette classe represente un rectangle pouvant etre utilise pour composer le
|
Cette classe represente un rectangle pouvant etre utilise pour composer le
|
||||||
dessin d'un element dans l'editeur d'element.
|
dessin d'un element dans l'editeur d'element.
|
||||||
@@ -33,10 +32,6 @@ class PartRectangle : public QGraphicsRectItem, public CustomElementGraphicPart
|
|||||||
private:
|
private:
|
||||||
PartRectangle(const PartRectangle &);
|
PartRectangle(const PartRectangle &);
|
||||||
|
|
||||||
// attributs
|
|
||||||
private:
|
|
||||||
RectangleEditor *informations;
|
|
||||||
|
|
||||||
// methodes
|
// methodes
|
||||||
public:
|
public:
|
||||||
enum { Type = UserType + 1109 };
|
enum { Type = UserType + 1109 };
|
||||||
@@ -47,6 +42,7 @@ class PartRectangle : public QGraphicsRectItem, public CustomElementGraphicPart
|
|||||||
virtual int type() const { return Type; }
|
virtual int type() const { return Type; }
|
||||||
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0);
|
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0);
|
||||||
virtual QString name() const { return(QObject::tr("rectangle", "element part name")); }
|
virtual QString name() const { return(QObject::tr("rectangle", "element part name")); }
|
||||||
|
virtual QString xmlName() const { return(QString("rect")); }
|
||||||
virtual const QDomElement toXml(QDomDocument &) const;
|
virtual const QDomElement toXml(QDomDocument &) const;
|
||||||
virtual void fromXml(const QDomElement &);
|
virtual void fromXml(const QDomElement &);
|
||||||
virtual QPointF sceneTopLeft() const;
|
virtual QPointF sceneTopLeft() const;
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
#include "partterminal.h"
|
#include "partterminal.h"
|
||||||
#include "terminal.h"
|
#include "terminal.h"
|
||||||
#include "terminaleditor.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@@ -30,8 +29,6 @@ PartTerminal::PartTerminal(QETElementEditor *editor, QGraphicsItem *parent, QGra
|
|||||||
QGraphicsItem(parent, scene),
|
QGraphicsItem(parent, scene),
|
||||||
_orientation(QET::North)
|
_orientation(QET::North)
|
||||||
{
|
{
|
||||||
informations = new TerminalEditor(elementEditor(), this);
|
|
||||||
informations -> setElementTypeName(name());
|
|
||||||
updateSecondPoint();
|
updateSecondPoint();
|
||||||
setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
|
setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
|
||||||
#if QT_VERSION >= 0x040600
|
#if QT_VERSION >= 0x040600
|
||||||
@@ -42,9 +39,7 @@ PartTerminal::PartTerminal(QETElementEditor *editor, QGraphicsItem *parent, QGra
|
|||||||
|
|
||||||
/// Destructeur
|
/// Destructeur
|
||||||
PartTerminal::~PartTerminal() {
|
PartTerminal::~PartTerminal() {
|
||||||
if (informations -> parentWidget()) return; // le widget sera supprime par son parent
|
}
|
||||||
delete informations;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Importe les proprietes d'une borne depuis un element XML
|
Importe les proprietes d'une borne depuis un element XML
|
||||||
@@ -80,13 +75,6 @@ const QDomElement PartTerminal::toXml(QDomDocument &xml_document) const {
|
|||||||
return(xml_element);
|
return(xml_element);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
@return Le widget permettant d'editer cette borne
|
|
||||||
*/
|
|
||||||
QWidget *PartTerminal::elementInformations() {
|
|
||||||
return(informations);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Dessine la borne
|
Dessine la borne
|
||||||
@param p QPainter a utiliser pour rendre le dessin
|
@param p QPainter a utiliser pour rendre le dessin
|
||||||
@@ -152,7 +140,6 @@ void PartTerminal::setOrientation(QET::Orientation ori) {
|
|||||||
prepareGeometryChange();
|
prepareGeometryChange();
|
||||||
_orientation = ori;
|
_orientation = ori;
|
||||||
updateSecondPoint();
|
updateSecondPoint();
|
||||||
informations -> updateForm();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -202,8 +189,8 @@ QVariant PartTerminal::property(const QString &property) {
|
|||||||
*/
|
*/
|
||||||
QVariant PartTerminal::itemChange(GraphicsItemChange change, const QVariant &value) {
|
QVariant PartTerminal::itemChange(GraphicsItemChange change, const QVariant &value) {
|
||||||
if (scene()) {
|
if (scene()) {
|
||||||
if (change == QGraphicsItem::ItemPositionChange || change == QGraphicsItem::ItemSelectedChange) {
|
if (change == QGraphicsItem::ItemPositionChange || change == QGraphicsItem::ItemPositionHasChanged) {
|
||||||
informations -> updateForm();
|
updateCurrentPartEditor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return(QGraphicsItem::itemChange(change, value));
|
return(QGraphicsItem::itemChange(change, value));
|
||||||
|
|||||||
@@ -20,8 +20,6 @@
|
|||||||
#include "customelementpart.h"
|
#include "customelementpart.h"
|
||||||
#include "qet.h"
|
#include "qet.h"
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
class TerminalEditor;
|
|
||||||
class QETElementEditor;
|
|
||||||
/**
|
/**
|
||||||
Cette classe represente une borne pouvant etre utilisee pour composer le
|
Cette classe represente une borne pouvant etre utilisee pour composer le
|
||||||
dessin d'un element dans l'editeur d'element.
|
dessin d'un element dans l'editeur d'element.
|
||||||
@@ -38,7 +36,6 @@ class PartTerminal : public CustomElementPart, public QGraphicsItem {
|
|||||||
private:
|
private:
|
||||||
QET::Orientation _orientation;
|
QET::Orientation _orientation;
|
||||||
QPointF second_point;
|
QPointF second_point;
|
||||||
TerminalEditor *informations;
|
|
||||||
|
|
||||||
// methodes
|
// methodes
|
||||||
public:
|
public:
|
||||||
@@ -49,9 +46,9 @@ class PartTerminal : public CustomElementPart, public QGraphicsItem {
|
|||||||
*/
|
*/
|
||||||
virtual int type() const { return Type; }
|
virtual int type() const { return Type; }
|
||||||
virtual QString name() const { return(QObject::tr("borne", "element part name")); }
|
virtual QString name() const { return(QObject::tr("borne", "element part name")); }
|
||||||
|
virtual QString xmlName() const { return(QString("terminal")); }
|
||||||
virtual void fromXml(const QDomElement &);
|
virtual void fromXml(const QDomElement &);
|
||||||
virtual const QDomElement toXml(QDomDocument &) const;
|
virtual const QDomElement toXml(QDomDocument &) const;
|
||||||
virtual QWidget *elementInformations();
|
|
||||||
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *);
|
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *);
|
||||||
virtual QRectF boundingRect() const;
|
virtual QRectF boundingRect() const;
|
||||||
QET::Orientation orientation() const;
|
QET::Orientation orientation() const;
|
||||||
|
|||||||
@@ -41,14 +41,10 @@ PartText::PartText(QETElementEditor *editor, QGraphicsItem *parent, ElementScene
|
|||||||
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
||||||
#endif
|
#endif
|
||||||
setPlainText(QObject::tr("T", "default text when adding a text in the element editor"));
|
setPlainText(QObject::tr("T", "default text when adding a text in the element editor"));
|
||||||
infos = new TextEditor(elementEditor(), this);
|
|
||||||
infos -> setElementTypeName(name());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Destructeur
|
/// Destructeur
|
||||||
PartText::~PartText() {
|
PartText::~PartText() {
|
||||||
if (infos -> parentWidget()) return; // le widget sera supprime par son parent
|
|
||||||
delete infos;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -83,13 +79,6 @@ const QDomElement PartText::toXml(QDomDocument &xml_document) const {
|
|||||||
return(xml_element);
|
return(xml_element);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
@return Le widget permettant d'editer ce texte statique
|
|
||||||
*/
|
|
||||||
QWidget *PartText::elementInformations() {
|
|
||||||
return(infos);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Retourne la position du texte, l'origine etant le point a gauche du texte,
|
Retourne la position du texte, l'origine etant le point a gauche du texte,
|
||||||
sur la baseline de la premiere ligne
|
sur la baseline de la premiere ligne
|
||||||
@@ -238,10 +227,10 @@ QVariant PartText::itemChange(GraphicsItemChange change, const QVariant &value)
|
|||||||
// memorise la nouvelle position "officielle" du champ de texte
|
// memorise la nouvelle position "officielle" du champ de texte
|
||||||
// cette information servira a le recentrer en cas d'ajout / retrait de lignes
|
// cette information servira a le recentrer en cas d'ajout / retrait de lignes
|
||||||
known_position_ = pos();
|
known_position_ = pos();
|
||||||
infos -> updateForm();
|
updateCurrentPartEditor();
|
||||||
} else if (change == QGraphicsItem::ItemSelectedHasChanged) {
|
} else if (change == QGraphicsItem::ItemSelectedHasChanged) {
|
||||||
if (value.toBool() == true) {
|
if (value.toBool() == true) {
|
||||||
infos -> updateForm();
|
updateCurrentPartEditor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return(QGraphicsTextItem::itemChange(change, value));
|
return(QGraphicsTextItem::itemChange(change, value));
|
||||||
|
|||||||
@@ -33,9 +33,6 @@ class PartText : public QGraphicsTextItem, public CustomElementPart {
|
|||||||
private:
|
private:
|
||||||
PartText(const PartText &);
|
PartText(const PartText &);
|
||||||
|
|
||||||
// attributs
|
|
||||||
TextEditor *infos;
|
|
||||||
|
|
||||||
// methodes
|
// methodes
|
||||||
public:
|
public:
|
||||||
enum { Type = UserType + 1107 };
|
enum { Type = UserType + 1107 };
|
||||||
@@ -45,9 +42,9 @@ class PartText : public QGraphicsTextItem, public CustomElementPart {
|
|||||||
*/
|
*/
|
||||||
virtual int type() const { return Type; }
|
virtual int type() const { return Type; }
|
||||||
virtual QString name() const { return(QObject::tr("texte", "element part name")); }
|
virtual QString name() const { return(QObject::tr("texte", "element part name")); }
|
||||||
|
virtual QString xmlName() const { return(QString("text")); }
|
||||||
void fromXml(const QDomElement &);
|
void fromXml(const QDomElement &);
|
||||||
const QDomElement toXml(QDomDocument &) const;
|
const QDomElement toXml(QDomDocument &) const;
|
||||||
QWidget *elementInformations();
|
|
||||||
QPointF pos() const;
|
QPointF pos() const;
|
||||||
void setPos(const QPointF &);
|
void setPos(const QPointF &);
|
||||||
void setPos(qreal, qreal);
|
void setPos(qreal, qreal);
|
||||||
|
|||||||
@@ -39,8 +39,6 @@ PartTextField::PartTextField(QETElementEditor *editor, QGraphicsItem *parent, QG
|
|||||||
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
||||||
#endif
|
#endif
|
||||||
setPlainText(QObject::tr("_", "default text when adding a textfield in the element editor"));
|
setPlainText(QObject::tr("_", "default text when adding a textfield in the element editor"));
|
||||||
infos = new TextFieldEditor(elementEditor(), this);
|
|
||||||
infos -> setElementTypeName(name());
|
|
||||||
|
|
||||||
// ajuste la position du champ de texte lorsqu'on lui ajoute/retire des lignes
|
// ajuste la position du champ de texte lorsqu'on lui ajoute/retire des lignes
|
||||||
connect(document(), SIGNAL(blockCountChanged(int)), this, SLOT(adjustItemPosition(int)));
|
connect(document(), SIGNAL(blockCountChanged(int)), this, SLOT(adjustItemPosition(int)));
|
||||||
@@ -48,8 +46,6 @@ PartTextField::PartTextField(QETElementEditor *editor, QGraphicsItem *parent, QG
|
|||||||
|
|
||||||
/// Destructeur
|
/// Destructeur
|
||||||
PartTextField::~PartTextField() {
|
PartTextField::~PartTextField() {
|
||||||
if (infos -> parentWidget()) return; // le widget sera supprime par son parent
|
|
||||||
delete infos;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -100,13 +96,6 @@ const QDomElement PartTextField::toXml(QDomDocument &xml_document) const {
|
|||||||
return(xml_element);
|
return(xml_element);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
@return Le widget permettant d'editer ce champ de texte
|
|
||||||
*/
|
|
||||||
QWidget *PartTextField::elementInformations() {
|
|
||||||
return(infos);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Retourne la position du texte, l'origine etant le milieu du bord gauche du
|
Retourne la position du texte, l'origine etant le milieu du bord gauche du
|
||||||
champ
|
champ
|
||||||
@@ -293,10 +282,10 @@ QVariant PartTextField::itemChange(GraphicsItemChange change, const QVariant &va
|
|||||||
// memorise la nouvelle position "officielle" du champ de texte
|
// memorise la nouvelle position "officielle" du champ de texte
|
||||||
// cette information servira a le recentrer en cas d'ajout / retrait de lignes
|
// cette information servira a le recentrer en cas d'ajout / retrait de lignes
|
||||||
known_position_ = pos();
|
known_position_ = pos();
|
||||||
infos -> updateForm();
|
updateCurrentPartEditor();
|
||||||
} else if (change == QGraphicsItem::ItemSelectedHasChanged) {
|
} else if (change == QGraphicsItem::ItemSelectedHasChanged) {
|
||||||
if (value.toBool() == true) {
|
if (value.toBool() == true) {
|
||||||
infos -> updateForm();
|
updateCurrentPartEditor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return(QGraphicsTextItem::itemChange(change, value));
|
return(QGraphicsTextItem::itemChange(change, value));
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ class PartTextField : public QGraphicsTextItem, public CustomElementPart {
|
|||||||
PartTextField(const PartTextField &);
|
PartTextField(const PartTextField &);
|
||||||
|
|
||||||
// attributs
|
// attributs
|
||||||
TextFieldEditor *infos;
|
|
||||||
bool follow_parent_rotations;
|
bool follow_parent_rotations;
|
||||||
qreal rotation_angle_;
|
qreal rotation_angle_;
|
||||||
|
|
||||||
@@ -52,9 +51,9 @@ class PartTextField : public QGraphicsTextItem, public CustomElementPart {
|
|||||||
*/
|
*/
|
||||||
virtual int type() const { return Type; }
|
virtual int type() const { return Type; }
|
||||||
virtual QString name() const { return(QObject::tr("champ de texte", "element part name")); }
|
virtual QString name() const { return(QObject::tr("champ de texte", "element part name")); }
|
||||||
|
virtual QString xmlName() const { return(QString("input")); }
|
||||||
void fromXml(const QDomElement &);
|
void fromXml(const QDomElement &);
|
||||||
const QDomElement toXml(QDomDocument &) const;
|
const QDomElement toXml(QDomDocument &) const;
|
||||||
QWidget *elementInformations();
|
|
||||||
QPointF pos() const;
|
QPointF pos() const;
|
||||||
void setPos(const QPointF &);
|
void setPos(const QPointF &);
|
||||||
void setPos(qreal, qreal);
|
void setPos(qreal, qreal);
|
||||||
|
|||||||
@@ -29,10 +29,12 @@
|
|||||||
*/
|
*/
|
||||||
PolygonEditor::PolygonEditor(QETElementEditor *editor, PartPolygon *p, QWidget *parent) :
|
PolygonEditor::PolygonEditor(QETElementEditor *editor, PartPolygon *p, QWidget *parent) :
|
||||||
ElementItemEditor(editor, parent),
|
ElementItemEditor(editor, parent),
|
||||||
|
part(p),
|
||||||
points_list(this),
|
points_list(this),
|
||||||
close_polygon(tr("Polygone ferm\351"), this)
|
close_polygon(tr("Polygone ferm\351"), this)
|
||||||
{
|
{
|
||||||
part = p;
|
style_ = new StyleEditor(editor);
|
||||||
|
|
||||||
// prepare la liste de points
|
// prepare la liste de points
|
||||||
points_list.setColumnCount(2);
|
points_list.setColumnCount(2);
|
||||||
QStringList headers;
|
QStringList headers;
|
||||||
@@ -43,6 +45,7 @@ PolygonEditor::PolygonEditor(QETElementEditor *editor, PartPolygon *p, QWidget *
|
|||||||
|
|
||||||
// layout
|
// layout
|
||||||
QVBoxLayout *layout = new QVBoxLayout(this);
|
QVBoxLayout *layout = new QVBoxLayout(this);
|
||||||
|
layout -> addWidget(style_);
|
||||||
layout -> addWidget(new QLabel(tr("Points du polygone :")));
|
layout -> addWidget(new QLabel(tr("Points du polygone :")));
|
||||||
layout -> addWidget(&points_list);
|
layout -> addWidget(&points_list);
|
||||||
layout -> addWidget(&close_polygon);
|
layout -> addWidget(&close_polygon);
|
||||||
@@ -66,6 +69,7 @@ void PolygonEditor::updatePolygon() {
|
|||||||
Met a jour les points du polygone et cree un objet d'annulation
|
Met a jour les points du polygone et cree un objet d'annulation
|
||||||
*/
|
*/
|
||||||
void PolygonEditor::updatePolygonPoints() {
|
void PolygonEditor::updatePolygonPoints() {
|
||||||
|
if (!part) return;
|
||||||
QVector<QPointF> points = getPointsFromTree();
|
QVector<QPointF> points = getPointsFromTree();
|
||||||
if (points.count() < 2) {
|
if (points.count() < 2) {
|
||||||
QET::MessageBox::warning(
|
QET::MessageBox::warning(
|
||||||
@@ -82,6 +86,7 @@ void PolygonEditor::updatePolygonPoints() {
|
|||||||
Met a jour l'etat ferme ou non du polygone
|
Met a jour l'etat ferme ou non du polygone
|
||||||
*/
|
*/
|
||||||
void PolygonEditor::updatePolygonClosedState() {
|
void PolygonEditor::updatePolygonClosedState() {
|
||||||
|
if (!part) return;
|
||||||
undoStack().push(
|
undoStack().push(
|
||||||
new ChangePartCommand(
|
new ChangePartCommand(
|
||||||
tr("fermeture du polygone"),
|
tr("fermeture du polygone"),
|
||||||
@@ -97,6 +102,7 @@ void PolygonEditor::updatePolygonClosedState() {
|
|||||||
Met a jour le formulaire d'edition
|
Met a jour le formulaire d'edition
|
||||||
*/
|
*/
|
||||||
void PolygonEditor::updateForm() {
|
void PolygonEditor::updateForm() {
|
||||||
|
if (!part) return;
|
||||||
activeConnections(false);
|
activeConnections(false);
|
||||||
while(points_list.takeTopLevelItem(0)) {}
|
while(points_list.takeTopLevelItem(0)) {}
|
||||||
foreach(QPointF point, part -> polygon()) {
|
foreach(QPointF point, part -> polygon()) {
|
||||||
@@ -111,11 +117,43 @@ void PolygonEditor::updateForm() {
|
|||||||
activeConnections(true);
|
activeConnections(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
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 polygone acceptera d'editer la primitive new_part s'il s'agit
|
||||||
|
d'un objet de la classe PartPolygon.
|
||||||
|
@param new_part Nouvelle primitive a editer
|
||||||
|
@return true si l'editeur a accepter d'editer la primitive, false sinon
|
||||||
|
*/
|
||||||
|
bool PolygonEditor::setPart(CustomElementPart *new_part) {
|
||||||
|
if (!new_part) {
|
||||||
|
part = 0;
|
||||||
|
style_ -> setPart(0);
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
if (PartPolygon *part_polygon = dynamic_cast<PartPolygon *>(new_part)) {
|
||||||
|
part = part_polygon;
|
||||||
|
style_ -> setPart(part);
|
||||||
|
updateForm();
|
||||||
|
return(true);
|
||||||
|
} else {
|
||||||
|
return(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return la primitive actuellement editee, ou 0 si ce widget n'en edite pas
|
||||||
|
*/
|
||||||
|
CustomElementPart *PolygonEditor::currentPart() const {
|
||||||
|
return(part);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@return Un vecteur contenant les points composant le polygone a partir du
|
@return Un vecteur contenant les points composant le polygone a partir du
|
||||||
formulaire d'edition
|
formulaire d'edition
|
||||||
*/
|
*/
|
||||||
QVector<QPointF> PolygonEditor::getPointsFromTree() {
|
QVector<QPointF> PolygonEditor::getPointsFromTree() {
|
||||||
|
if (!part) return(QVector<QPointF>());
|
||||||
QVector<QPointF> points;
|
QVector<QPointF> points;
|
||||||
for(int i = 0 ; i < points_list.topLevelItemCount() ; ++ i) {
|
for(int i = 0 ; i < points_list.topLevelItemCount() ; ++ i) {
|
||||||
QTreeWidgetItem *qtwi = points_list.topLevelItem(i);
|
QTreeWidgetItem *qtwi = points_list.topLevelItem(i);
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
#define POLYGON_EDITOR_H
|
#define POLYGON_EDITOR_H
|
||||||
#include "elementitemeditor.h"
|
#include "elementitemeditor.h"
|
||||||
class PartPolygon;
|
class PartPolygon;
|
||||||
|
class StyleEditor;
|
||||||
/**
|
/**
|
||||||
Cette classe represente le widget d'edition d'un polygone dans l'editeur
|
Cette classe represente le widget d'edition d'un polygone dans l'editeur
|
||||||
d'element.
|
d'element.
|
||||||
@@ -29,7 +30,7 @@ class PolygonEditor : public ElementItemEditor {
|
|||||||
|
|
||||||
// constructeurs, destructeur
|
// constructeurs, destructeur
|
||||||
public:
|
public:
|
||||||
PolygonEditor(QETElementEditor *, PartPolygon *, QWidget * = 0);
|
PolygonEditor(QETElementEditor *, PartPolygon * = 0, QWidget * = 0);
|
||||||
virtual ~PolygonEditor();
|
virtual ~PolygonEditor();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -38,10 +39,15 @@ class PolygonEditor : public ElementItemEditor {
|
|||||||
// attributs
|
// attributs
|
||||||
private:
|
private:
|
||||||
PartPolygon *part;
|
PartPolygon *part;
|
||||||
|
StyleEditor *style_;
|
||||||
QTreeWidget points_list;
|
QTreeWidget points_list;
|
||||||
QCheckBox close_polygon;
|
QCheckBox close_polygon;
|
||||||
|
|
||||||
// methodes
|
// methodes
|
||||||
|
public:
|
||||||
|
virtual bool setPart(CustomElementPart *);
|
||||||
|
virtual CustomElementPart *currentPart() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QVector<QPointF> getPointsFromTree();
|
QVector<QPointF> getPointsFromTree();
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,17 @@
|
|||||||
#include "qeticons.h"
|
#include "qeticons.h"
|
||||||
#include "qetmessagebox.h"
|
#include "qetmessagebox.h"
|
||||||
|
|
||||||
|
// editeurs de primitives
|
||||||
|
#include "arceditor.h"
|
||||||
|
#include "circleeditor.h"
|
||||||
|
#include "ellipseeditor.h"
|
||||||
|
#include "lineeditor.h"
|
||||||
|
#include "polygoneditor.h"
|
||||||
|
#include "rectangleeditor.h"
|
||||||
|
#include "terminaleditor.h"
|
||||||
|
#include "texteditor.h"
|
||||||
|
#include "textfieldeditor.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@param parent QWidget parent
|
@param parent QWidget parent
|
||||||
@@ -60,11 +71,14 @@ QETElementEditor::QETElementEditor(QWidget *parent) :
|
|||||||
/// Destructeur
|
/// Destructeur
|
||||||
QETElementEditor::~QETElementEditor() {
|
QETElementEditor::~QETElementEditor() {
|
||||||
/*
|
/*
|
||||||
retire le widget d'edition de partie affiche par le dock
|
retire le widget d'edition de primitives affiche par le dock
|
||||||
cela evite qu'il ne soit supprime avant que la partie a laquelle il est
|
cela evite qu'il ne soit supprime par son widget parent
|
||||||
rattache ne le supprime une fois de trop
|
|
||||||
*/
|
*/
|
||||||
clearToolsDock();
|
clearToolsDock();
|
||||||
|
|
||||||
|
// supprime les editeurs de primitives
|
||||||
|
qDeleteAll(editors_.begin(), editors_.end());
|
||||||
|
editors_.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -314,7 +328,14 @@ void QETElementEditor::setupActions() {
|
|||||||
connect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SLOT(slot_updateMenus()));
|
connect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SLOT(slot_updateMenus()));
|
||||||
connect(&(ce_scene -> undoStack()), SIGNAL(cleanChanged(bool)), this, SLOT(slot_updateMenus()));
|
connect(&(ce_scene -> undoStack()), SIGNAL(cleanChanged(bool)), this, SLOT(slot_updateMenus()));
|
||||||
connect(&(ce_scene -> undoStack()), SIGNAL(cleanChanged(bool)), this, SLOT(slot_updateTitle()));
|
connect(&(ce_scene -> undoStack()), SIGNAL(cleanChanged(bool)), this, SLOT(slot_updateTitle()));
|
||||||
|
|
||||||
|
// Annuler ou refaire une action met a jour la liste des primitives ; cela sert notamment pour les
|
||||||
|
// ajouts et suppressions de primitives ainsi que pour les actions entrainant un change
|
||||||
connect(&(ce_scene -> undoStack()), SIGNAL(indexChanged(int)), this, SLOT(slot_updatePartsList()));
|
connect(&(ce_scene -> undoStack()), SIGNAL(indexChanged(int)), this, SLOT(slot_updatePartsList()));
|
||||||
|
|
||||||
|
// Annuler ou refaire une action met a jour les informations affichees sur les primitives selectionnees,
|
||||||
|
// celles-ci etant potentiellement impactees
|
||||||
|
connect(&(ce_scene -> undoStack()), SIGNAL(indexChanged(int)), this, SLOT(slot_updateInformations()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -496,6 +517,17 @@ void QETElementEditor::setupInterface() {
|
|||||||
tools_dock_stack_ -> insertWidget(0, default_informations);
|
tools_dock_stack_ -> insertWidget(0, default_informations);
|
||||||
tools_dock_stack_ -> insertWidget(1, tools_dock_scroll_area_);
|
tools_dock_stack_ -> insertWidget(1, tools_dock_scroll_area_);
|
||||||
|
|
||||||
|
// 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);
|
||||||
|
editors_["rect"] = new RectangleEditor(this);
|
||||||
|
editors_["terminal"] = new TerminalEditor(this);
|
||||||
|
editors_["text"] = new TextEditor(this);
|
||||||
|
editors_["input"] = new TextFieldEditor(this);
|
||||||
|
|
||||||
// panel sur le cote pour editer les parties
|
// panel sur le cote pour editer les parties
|
||||||
tools_dock = new QDockWidget(tr("Informations", "dock title"), this);
|
tools_dock = new QDockWidget(tr("Informations", "dock title"), this);
|
||||||
tools_dock -> setObjectName("informations");
|
tools_dock -> setObjectName("informations");
|
||||||
@@ -564,33 +596,37 @@ void QETElementEditor::slot_setNormalMode() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Met a jour la zone d'information et d'edition.
|
Met a jour la zone d'information et d'edition des primitives.
|
||||||
Si plusieurs parties sont selectionnees, seul leur nombre est affiche.
|
Si plusieurs primitives sont selectionnees, seule leur quantite est
|
||||||
Sinon, le widget d'edition de la partie est insere.
|
affichee. Sinon, un widget d'edition approprie est mis en place.
|
||||||
@see CustomElementPart::elementInformations()
|
|
||||||
*/
|
*/
|
||||||
void QETElementEditor::slot_updateInformations() {
|
void QETElementEditor::slot_updateInformations() {
|
||||||
QList<QGraphicsItem *> selected_qgis = ce_scene -> selectedItems();
|
QList<QGraphicsItem *> selected_qgis = ce_scene -> selectedItems();
|
||||||
QList<CustomElementPart *> selected_parts;
|
|
||||||
foreach(QGraphicsItem *qgi, selected_qgis) {
|
|
||||||
if (CustomElementPart *cep = dynamic_cast<CustomElementPart *>(qgi)) {
|
|
||||||
selected_parts.append(cep);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
clearToolsDock();
|
clearToolsDock();
|
||||||
|
|
||||||
if (selected_parts.size() == 1) {
|
// s'il n'y a qu'une seule primitive selectionnee
|
||||||
// recupere le premier CustomElementPart et en ajoute le widget d'edition
|
if (selected_qgis.size() == 1) {
|
||||||
QWidget *edit_widget = selected_parts.first() -> elementInformations();
|
QGraphicsItem *qgi = selected_qgis.first();
|
||||||
tools_dock_scroll_area_ -> setWidget(edit_widget);
|
if (CustomElementPart *selection = dynamic_cast<CustomElementPart *>(qgi)) {
|
||||||
tools_dock_stack_ -> setCurrentIndex(1);
|
// on en ajoute le widget d'edition
|
||||||
|
QString selection_xml_name = selection -> xmlName();
|
||||||
|
ElementItemEditor *selection_editor = editors_[selection_xml_name];
|
||||||
|
if (selection_editor) {
|
||||||
|
if (selection_editor -> setPart(selection)) {
|
||||||
|
tools_dock_scroll_area_ -> setWidget(selection_editor);
|
||||||
|
tools_dock_stack_ -> setCurrentIndex(1);
|
||||||
|
} else {
|
||||||
|
qDebug() << "Editor refused part.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
default_informations -> setText(
|
default_informations -> setText(
|
||||||
tr(
|
tr(
|
||||||
"%n partie(s) s\351lectionn\351e(s).",
|
"%n partie(s) s\351lectionn\351e(s).",
|
||||||
"",
|
"",
|
||||||
selected_parts.size()
|
selected_qgis.size()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
default_informations -> setAlignment(Qt::AlignHCenter | Qt::AlignTop);
|
default_informations -> setAlignment(Qt::AlignHCenter | Qt::AlignTop);
|
||||||
@@ -1326,3 +1362,17 @@ void QETElementEditor::pasteFromElement() {
|
|||||||
|
|
||||||
copyAndPasteXml(document_xml);
|
copyAndPasteXml(document_xml);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Met a jour l'editeur de primitive actuellement visible.
|
||||||
|
Si aucun editeur de primitive n'est visible, ce slot ne fait rien.
|
||||||
|
*/
|
||||||
|
void QETElementEditor::updateCurrentPartEditor() {
|
||||||
|
// si aucun widget d'edition n'est affiche, on ne fait rien
|
||||||
|
if (!tools_dock_stack_ -> currentIndex()) return;
|
||||||
|
|
||||||
|
// s'il y a un widget d'edition affiche, on le met a jour
|
||||||
|
if (ElementItemEditor *current_editor = dynamic_cast<ElementItemEditor *>(tools_dock_scroll_area_ -> widget())) {
|
||||||
|
current_editor -> updateForm();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
#include "elementscene.h"
|
#include "elementscene.h"
|
||||||
#include "orientationset.h"
|
#include "orientationset.h"
|
||||||
#include "elementslocation.h"
|
#include "elementslocation.h"
|
||||||
|
class ElementItemEditor;
|
||||||
class ElementView;
|
class ElementView;
|
||||||
/**
|
/**
|
||||||
Cette classe represente un editeur d'element. Elle permet a l'utilisateur
|
Cette classe represente un editeur d'element. Elle permet a l'utilisateur
|
||||||
@@ -54,6 +55,8 @@ class QETElementEditor : public QMainWindow {
|
|||||||
QStackedWidget *tools_dock_stack_;
|
QStackedWidget *tools_dock_stack_;
|
||||||
/// label affiche lors de la selection de plusieurs elements
|
/// label affiche lors de la selection de plusieurs elements
|
||||||
QLabel *default_informations;
|
QLabel *default_informations;
|
||||||
|
/// Hash permettant d'acceder aux widgets d'editions disponibles
|
||||||
|
QHash<QString, ElementItemEditor *> editors_;
|
||||||
/// ScrollArea pour le DockWidget affichant des infos sur la partie selectionnee
|
/// ScrollArea pour le DockWidget affichant des infos sur la partie selectionnee
|
||||||
QScrollArea *tools_dock_scroll_area_;
|
QScrollArea *tools_dock_scroll_area_;
|
||||||
/// container pour la liste des annulations
|
/// container pour la liste des annulations
|
||||||
@@ -156,6 +159,7 @@ class QETElementEditor : public QMainWindow {
|
|||||||
bool checkElement();
|
bool checkElement();
|
||||||
void pasteFromFile();
|
void pasteFromFile();
|
||||||
void pasteFromElement();
|
void pasteFromElement();
|
||||||
|
void updateCurrentPartEditor();
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -24,9 +24,11 @@
|
|||||||
@param rect Le rectangle a editer
|
@param rect Le rectangle a editer
|
||||||
@param parent le Widget parent
|
@param parent le Widget parent
|
||||||
*/
|
*/
|
||||||
RectangleEditor::RectangleEditor(QETElementEditor *editor, PartRectangle *rect, QWidget *parent) : ElementItemEditor(editor, parent) {
|
RectangleEditor::RectangleEditor(QETElementEditor *editor, PartRectangle *rect, QWidget *parent) :
|
||||||
|
ElementItemEditor(editor, parent),
|
||||||
part = rect;
|
part(rect)
|
||||||
|
{
|
||||||
|
style_ = new StyleEditor(editor);
|
||||||
|
|
||||||
x = new QLineEdit();
|
x = new QLineEdit();
|
||||||
y = new QLineEdit();
|
y = new QLineEdit();
|
||||||
@@ -38,7 +40,9 @@ RectangleEditor::RectangleEditor(QETElementEditor *editor, PartRectangle *rect,
|
|||||||
w -> setValidator(new QDoubleValidator(w));
|
w -> setValidator(new QDoubleValidator(w));
|
||||||
h -> setValidator(new QDoubleValidator(h));
|
h -> setValidator(new QDoubleValidator(h));
|
||||||
|
|
||||||
QGridLayout *grid = new QGridLayout(this);
|
QVBoxLayout *v_layout = new QVBoxLayout(this);
|
||||||
|
|
||||||
|
QGridLayout *grid = new QGridLayout();
|
||||||
grid -> addWidget(new QLabel(tr("Coin sup\351rieur gauche\240: ")), 0, 0);
|
grid -> addWidget(new QLabel(tr("Coin sup\351rieur gauche\240: ")), 0, 0);
|
||||||
grid -> addWidget(new QLabel("x"), 1, 0);
|
grid -> addWidget(new QLabel("x"), 1, 0);
|
||||||
grid -> addWidget(x, 1, 1);
|
grid -> addWidget(x, 1, 1);
|
||||||
@@ -50,6 +54,9 @@ RectangleEditor::RectangleEditor(QETElementEditor *editor, PartRectangle *rect,
|
|||||||
grid -> addWidget(new QLabel(tr("Hauteur\240:")), 4, 0);
|
grid -> addWidget(new QLabel(tr("Hauteur\240:")), 4, 0);
|
||||||
grid -> addWidget(h, 4, 1);
|
grid -> addWidget(h, 4, 1);
|
||||||
|
|
||||||
|
v_layout -> addWidget(style_);
|
||||||
|
v_layout -> addLayout(grid);
|
||||||
|
|
||||||
activeConnections(true);
|
activeConnections(true);
|
||||||
updateForm();
|
updateForm();
|
||||||
}
|
}
|
||||||
@@ -58,10 +65,42 @@ RectangleEditor::RectangleEditor(QETElementEditor *editor, PartRectangle *rect,
|
|||||||
RectangleEditor::~RectangleEditor() {
|
RectangleEditor::~RectangleEditor() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
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 rectangle acceptera d'editer la primitive new_part s'il s'agit
|
||||||
|
d'un objet de la classe PartRectangle.
|
||||||
|
@param new_part Nouvelle primitive a editer
|
||||||
|
@return true si l'editeur a accepter d'editer la primitive, false sinon
|
||||||
|
*/
|
||||||
|
bool RectangleEditor::setPart(CustomElementPart *new_part) {
|
||||||
|
if (!new_part) {
|
||||||
|
part = 0;
|
||||||
|
style_ -> setPart(0);
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
if (PartRectangle *part_rectangle = dynamic_cast<PartRectangle *>(new_part)) {
|
||||||
|
part = part_rectangle;
|
||||||
|
style_ -> setPart(part);
|
||||||
|
updateForm();
|
||||||
|
return(true);
|
||||||
|
} else {
|
||||||
|
return(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return la primitive actuellement editee, ou 0 si ce widget n'en edite pas
|
||||||
|
*/
|
||||||
|
CustomElementPart *RectangleEditor::currentPart() const {
|
||||||
|
return(part);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Met a jour le rectangle a partir des donnees du formulaire
|
Met a jour le rectangle a partir des donnees du formulaire
|
||||||
*/
|
*/
|
||||||
void RectangleEditor::updateRectangle() {
|
void RectangleEditor::updateRectangle() {
|
||||||
|
if (!part) return;
|
||||||
part -> setProperty("x", x -> text().toDouble());
|
part -> setProperty("x", x -> text().toDouble());
|
||||||
part -> setProperty("y", y -> text().toDouble());
|
part -> setProperty("y", y -> text().toDouble());
|
||||||
part -> setProperty("width", w -> text().toDouble());
|
part -> setProperty("width", w -> text().toDouble());
|
||||||
@@ -81,6 +120,7 @@ void RectangleEditor::updateRectangleH() { addChangePartCommand(tr("hauteur"),
|
|||||||
Met a jour le formulaire d'edition
|
Met a jour le formulaire d'edition
|
||||||
*/
|
*/
|
||||||
void RectangleEditor::updateForm() {
|
void RectangleEditor::updateForm() {
|
||||||
|
if (!part) return;
|
||||||
activeConnections(false);
|
activeConnections(false);
|
||||||
x -> setText(part -> property("x").toString());
|
x -> setText(part -> property("x").toString());
|
||||||
y -> setText(part -> property("y").toString());
|
y -> setText(part -> property("y").toString());
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
#include "elementitemeditor.h"
|
#include "elementitemeditor.h"
|
||||||
class PartRectangle;
|
class PartRectangle;
|
||||||
|
class StyleEditor;
|
||||||
/**
|
/**
|
||||||
Cette classe represente le widget d'edition d'un rectangle dans l'editeur
|
Cette classe represente le widget d'edition d'un rectangle dans l'editeur
|
||||||
d'element.
|
d'element.
|
||||||
@@ -28,17 +29,22 @@ class RectangleEditor : public ElementItemEditor {
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
//constructeurs, destructeur
|
//constructeurs, destructeur
|
||||||
public:
|
public:
|
||||||
RectangleEditor(QETElementEditor *, PartRectangle *, QWidget * = 0);
|
RectangleEditor(QETElementEditor *, PartRectangle * = 0, QWidget * = 0);
|
||||||
~RectangleEditor();
|
virtual ~RectangleEditor();
|
||||||
private:
|
private:
|
||||||
RectangleEditor(const RectangleEditor &);
|
RectangleEditor(const RectangleEditor &);
|
||||||
|
|
||||||
// attributs
|
// attributs
|
||||||
private:
|
private:
|
||||||
PartRectangle *part;
|
PartRectangle *part;
|
||||||
|
StyleEditor *style_;
|
||||||
QLineEdit *x, *y, *w, *h;
|
QLineEdit *x, *y, *w, *h;
|
||||||
|
|
||||||
// methodes
|
// methodes
|
||||||
|
public:
|
||||||
|
virtual bool setPart(CustomElementPart *);
|
||||||
|
virtual CustomElementPart *currentPart() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void updateRectangle();
|
void updateRectangle();
|
||||||
void updateRectangleX();
|
void updateRectangleX();
|
||||||
|
|||||||
@@ -24,7 +24,10 @@
|
|||||||
@param p La partie a editer
|
@param p La partie a editer
|
||||||
@param parent le Widget parent
|
@param parent le Widget parent
|
||||||
*/
|
*/
|
||||||
StyleEditor::StyleEditor(QETElementEditor *editor, CustomElementGraphicPart *p, QWidget *parent) : ElementItemEditor(editor, parent), part(p) {
|
StyleEditor::StyleEditor(QETElementEditor *editor, CustomElementGraphicPart *p, QWidget *parent) :
|
||||||
|
ElementItemEditor(editor, parent),
|
||||||
|
part(p)
|
||||||
|
{
|
||||||
// couleur
|
// couleur
|
||||||
color = new QButtonGroup(this);
|
color = new QButtonGroup(this);
|
||||||
color -> addButton(black_color = new QRadioButton(tr("Noir", "element part color")), CustomElementGraphicPart::BlackColor);
|
color -> addButton(black_color = new QRadioButton(tr("Noir", "element part color")), CustomElementGraphicPart::BlackColor);
|
||||||
@@ -34,7 +37,7 @@ StyleEditor::StyleEditor(QETElementEditor *editor, CustomElementGraphicPart *p,
|
|||||||
style = new QButtonGroup(this);
|
style = new QButtonGroup(this);
|
||||||
style -> addButton(normal_style = new QRadioButton(tr("Normal", "element part line style")), CustomElementGraphicPart::NormalStyle);
|
style -> addButton(normal_style = new QRadioButton(tr("Normal", "element part line style")), CustomElementGraphicPart::NormalStyle);
|
||||||
style -> addButton(dashed_style = new QRadioButton(tr("Pointill\351", "element part line style")), CustomElementGraphicPart::DashedStyle);
|
style -> addButton(dashed_style = new QRadioButton(tr("Pointill\351", "element part line style")), CustomElementGraphicPart::DashedStyle);
|
||||||
style -> button(part -> lineStyle()) -> setChecked(true);
|
normal_style -> setChecked(true);
|
||||||
|
|
||||||
// epaisseur
|
// epaisseur
|
||||||
weight = new QButtonGroup(this);
|
weight = new QButtonGroup(this);
|
||||||
@@ -102,6 +105,7 @@ StyleEditor::~StyleEditor() {
|
|||||||
Met a jour le style de la partie a partir des donnees du formulaire
|
Met a jour le style de la partie a partir des donnees du formulaire
|
||||||
*/
|
*/
|
||||||
void StyleEditor::updatePart() {
|
void StyleEditor::updatePart() {
|
||||||
|
if (!part) return;
|
||||||
// applique l'antialiasing
|
// applique l'antialiasing
|
||||||
part -> setAntialiased(antialiasing -> isChecked());
|
part -> setAntialiased(antialiasing -> isChecked());
|
||||||
|
|
||||||
@@ -133,6 +137,7 @@ void StyleEditor::updatePartFilling() { addChangePartCommand("style rempl
|
|||||||
Met a jour le formulaire d'edition
|
Met a jour le formulaire d'edition
|
||||||
*/
|
*/
|
||||||
void StyleEditor::updateForm() {
|
void StyleEditor::updateForm() {
|
||||||
|
if (!part) return;
|
||||||
activeConnections(false);
|
activeConnections(false);
|
||||||
// lit l'antialiasing
|
// lit l'antialiasing
|
||||||
antialiasing -> setChecked(part -> antialiased());
|
antialiasing -> setChecked(part -> antialiased());
|
||||||
@@ -152,11 +157,32 @@ void StyleEditor::updateForm() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Ajoute un widget en bas de l'editeur de style
|
Permet de specifier a cet editeur quelle primitive il doit editer. A noter
|
||||||
@param w Widget a inserer
|
qu'un editeur peut accepter ou refuser d'editer une primitive.
|
||||||
|
L'editeur de ligne acceptera d'editer la primitive new_part s'il s'agit d'un
|
||||||
|
objet de la classe CustomElementGraphicPart.
|
||||||
|
@param new_part Nouvelle primitive a editer
|
||||||
|
@return true si l'editeur a accepter d'editer la primitive, false sinon
|
||||||
*/
|
*/
|
||||||
void StyleEditor::appendWidget(QWidget *w) {
|
bool StyleEditor::setPart(CustomElementPart *new_part) {
|
||||||
main_layout -> insertWidget(7, w);
|
if (!new_part) {
|
||||||
|
part = 0;
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
if (CustomElementGraphicPart *part_graphic = dynamic_cast<CustomElementGraphicPart *>(new_part)) {
|
||||||
|
part = part_graphic;
|
||||||
|
updateForm();
|
||||||
|
return(true);
|
||||||
|
} else {
|
||||||
|
return(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return la primitive actuellement editee, ou 0 si ce widget n'en edite pas
|
||||||
|
*/
|
||||||
|
CustomElementPart *StyleEditor::currentPart() const {
|
||||||
|
return(part);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ class StyleEditor : public ElementItemEditor {
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
// constructeurs, destructeur
|
// constructeurs, destructeur
|
||||||
public:
|
public:
|
||||||
StyleEditor(QETElementEditor *, CustomElementGraphicPart *, QWidget * = 0);
|
StyleEditor(QETElementEditor *, CustomElementGraphicPart * = 0, QWidget * = 0);
|
||||||
virtual ~StyleEditor();
|
virtual ~StyleEditor();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -46,9 +46,10 @@ class StyleEditor : public ElementItemEditor {
|
|||||||
QRadioButton *black_filling, *white_filling;
|
QRadioButton *black_filling, *white_filling;
|
||||||
QCheckBox *antialiasing;
|
QCheckBox *antialiasing;
|
||||||
|
|
||||||
//methodes
|
// methodes
|
||||||
public:
|
public:
|
||||||
void appendWidget(QWidget *w);
|
virtual bool setPart(CustomElementPart *);
|
||||||
|
virtual CustomElementPart *currentPart() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void updatePart();
|
void updatePart();
|
||||||
|
|||||||
@@ -25,9 +25,10 @@
|
|||||||
@param term La borne a editer
|
@param term La borne a editer
|
||||||
@param parent QWidget parent de ce widget
|
@param parent QWidget parent de ce widget
|
||||||
*/
|
*/
|
||||||
TerminalEditor::TerminalEditor(QETElementEditor *editor, PartTerminal *term, QWidget *parent) : ElementItemEditor(editor, parent) {
|
TerminalEditor::TerminalEditor(QETElementEditor *editor, PartTerminal *term, QWidget *parent) :
|
||||||
part = term;
|
ElementItemEditor(editor, parent),
|
||||||
|
part(term)
|
||||||
|
{
|
||||||
qle_x = new QLineEdit();
|
qle_x = new QLineEdit();
|
||||||
qle_y = new QLineEdit();
|
qle_y = new QLineEdit();
|
||||||
|
|
||||||
@@ -65,10 +66,40 @@ TerminalEditor::TerminalEditor(QETElementEditor *editor, PartTerminal *term, QWi
|
|||||||
TerminalEditor::~TerminalEditor() {
|
TerminalEditor::~TerminalEditor() {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
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 borne acceptera d'editer la primitive new_part s'il s'agit d'un
|
||||||
|
objet de la classe PartTerminal.
|
||||||
|
@param new_part Nouvelle primitive a editer
|
||||||
|
@return true si l'editeur a accepter d'editer la primitive, false sinon
|
||||||
|
*/
|
||||||
|
bool TerminalEditor::setPart(CustomElementPart *new_part) {
|
||||||
|
if (!new_part) {
|
||||||
|
part = 0;
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
if (PartTerminal *part_terminal = dynamic_cast<PartTerminal *>(new_part)) {
|
||||||
|
part = part_terminal;
|
||||||
|
updateForm();
|
||||||
|
return(true);
|
||||||
|
} else {
|
||||||
|
return(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return la primitive actuellement editee, ou 0 si ce widget n'en edite pas
|
||||||
|
*/
|
||||||
|
CustomElementPart *TerminalEditor::currentPart() const {
|
||||||
|
return(part);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Met a jour la borne a partir des donnees du formulaire
|
Met a jour la borne a partir des donnees du formulaire
|
||||||
*/
|
*/
|
||||||
void TerminalEditor::updateTerminal() {
|
void TerminalEditor::updateTerminal() {
|
||||||
|
if (!part) return;
|
||||||
part -> setPos(qle_x -> text().toDouble(), qle_y -> text().toDouble());
|
part -> setPos(qle_x -> text().toDouble(), qle_y -> text().toDouble());
|
||||||
part -> setOrientation(
|
part -> setOrientation(
|
||||||
static_cast<QET::Orientation>(
|
static_cast<QET::Orientation>(
|
||||||
@@ -90,6 +121,7 @@ void TerminalEditor::updateTerminalO() { addChangePartCommand(tr("orientation"),
|
|||||||
Met a jour le formulaire d'edition
|
Met a jour le formulaire d'edition
|
||||||
*/
|
*/
|
||||||
void TerminalEditor::updateForm() {
|
void TerminalEditor::updateForm() {
|
||||||
|
if (!part) return;
|
||||||
activeConnections(false);
|
activeConnections(false);
|
||||||
qle_x -> setText(part -> property("x").toString());
|
qle_x -> setText(part -> property("x").toString());
|
||||||
qle_y -> setText(part -> property("y").toString());
|
qle_y -> setText(part -> property("y").toString());
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ class TerminalEditor : public ElementItemEditor {
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
// Constructeurs, destructeur
|
// Constructeurs, destructeur
|
||||||
public:
|
public:
|
||||||
TerminalEditor(QETElementEditor *, PartTerminal *, QWidget * = 0);
|
TerminalEditor(QETElementEditor *, PartTerminal * = 0, QWidget * = 0);
|
||||||
virtual ~TerminalEditor();
|
virtual ~TerminalEditor();
|
||||||
private:
|
private:
|
||||||
TerminalEditor(const TerminalEditor &);
|
TerminalEditor(const TerminalEditor &);
|
||||||
@@ -41,6 +41,10 @@ class TerminalEditor : public ElementItemEditor {
|
|||||||
QComboBox *orientation;
|
QComboBox *orientation;
|
||||||
|
|
||||||
// methodes
|
// methodes
|
||||||
|
public:
|
||||||
|
virtual bool setPart(CustomElementPart *);
|
||||||
|
virtual CustomElementPart *currentPart() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void updateTerminal();
|
void updateTerminal();
|
||||||
void updateTerminalX();
|
void updateTerminalX();
|
||||||
|
|||||||
@@ -24,9 +24,10 @@
|
|||||||
@param text Champ de texte a editer
|
@param text Champ de texte a editer
|
||||||
@param parent QWidget parent de ce widget
|
@param parent QWidget parent de ce widget
|
||||||
*/
|
*/
|
||||||
TextEditor::TextEditor(QETElementEditor *editor, PartText *text, QWidget *parent) : ElementItemEditor(editor, parent) {
|
TextEditor::TextEditor(QETElementEditor *editor, PartText *text, QWidget *parent) :
|
||||||
part = text;
|
ElementItemEditor(editor, parent),
|
||||||
|
part(text)
|
||||||
|
{
|
||||||
qle_x = new QLineEdit();
|
qle_x = new QLineEdit();
|
||||||
qle_y = new QLineEdit();
|
qle_y = new QLineEdit();
|
||||||
qle_text = new QLineEdit();
|
qle_text = new QLineEdit();
|
||||||
@@ -67,10 +68,40 @@ TextEditor::TextEditor(QETElementEditor *editor, PartText *text, QWidget *parent
|
|||||||
TextEditor::~TextEditor() {
|
TextEditor::~TextEditor() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
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 texte statique acceptera d'editer la primitive new_part s'il
|
||||||
|
s'agit d'un objet de la classe PartText.
|
||||||
|
@param new_part Nouvelle primitive a editer
|
||||||
|
@return true si l'editeur a accepter d'editer la primitive, false sinon
|
||||||
|
*/
|
||||||
|
bool TextEditor::setPart(CustomElementPart *new_part) {
|
||||||
|
if (!new_part) {
|
||||||
|
part = 0;
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
if (PartText *part_text = dynamic_cast<PartText *>(new_part)) {
|
||||||
|
part = part_text;
|
||||||
|
updateForm();
|
||||||
|
return(true);
|
||||||
|
} else {
|
||||||
|
return(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return la primitive actuellement editee, ou 0 si ce widget n'en edite pas
|
||||||
|
*/
|
||||||
|
CustomElementPart *TextEditor::currentPart() const {
|
||||||
|
return(part);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Met a jour le champ de texte a partir des donnees du formulaire
|
Met a jour le champ de texte a partir des donnees du formulaire
|
||||||
*/
|
*/
|
||||||
void TextEditor::updateText() {
|
void TextEditor::updateText() {
|
||||||
|
if (!part) return;
|
||||||
part -> setProperty("size", font_size -> value());
|
part -> setProperty("size", font_size -> value());
|
||||||
part -> setPlainText(qle_text -> text());
|
part -> setPlainText(qle_text -> text());
|
||||||
part -> setPos(qle_x -> text().toDouble(), qle_y -> text().toDouble());
|
part -> setPos(qle_x -> text().toDouble(), qle_y -> text().toDouble());
|
||||||
@@ -89,6 +120,7 @@ void TextEditor::updateTextS() { addChangePartCommand(tr("taille"), part, "
|
|||||||
Met a jour le formulaire a partir du champ de texte
|
Met a jour le formulaire a partir du champ de texte
|
||||||
*/
|
*/
|
||||||
void TextEditor::updateForm() {
|
void TextEditor::updateForm() {
|
||||||
|
if (!part) return;
|
||||||
activeConnections(false);
|
activeConnections(false);
|
||||||
qle_x -> setText(part -> property("x").toString());
|
qle_x -> setText(part -> property("x").toString());
|
||||||
qle_y -> setText(part -> property("y").toString());
|
qle_y -> setText(part -> property("y").toString());
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ class TextEditor : public ElementItemEditor {
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
// Constructeurs, destructeur
|
// Constructeurs, destructeur
|
||||||
public:
|
public:
|
||||||
TextEditor(QETElementEditor *, PartText *, QWidget * = 0);
|
TextEditor(QETElementEditor *, PartText * = 0, QWidget * = 0);
|
||||||
virtual ~TextEditor();
|
virtual ~TextEditor();
|
||||||
private:
|
private:
|
||||||
TextEditor(const TextEditor &);
|
TextEditor(const TextEditor &);
|
||||||
@@ -41,6 +41,10 @@ class TextEditor : public ElementItemEditor {
|
|||||||
QSpinBox *font_size;
|
QSpinBox *font_size;
|
||||||
|
|
||||||
// methodes
|
// methodes
|
||||||
|
public:
|
||||||
|
virtual bool setPart(CustomElementPart *);
|
||||||
|
virtual CustomElementPart *currentPart() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void updateText();
|
void updateText();
|
||||||
void updateTextX();
|
void updateTextX();
|
||||||
|
|||||||
@@ -25,9 +25,10 @@
|
|||||||
@param textfield Le champ de texte a editer
|
@param textfield Le champ de texte a editer
|
||||||
@param parent QWidget parent
|
@param parent QWidget parent
|
||||||
*/
|
*/
|
||||||
TextFieldEditor::TextFieldEditor(QETElementEditor *editor, PartTextField *textfield, QWidget *parent) : ElementItemEditor(editor, parent) {
|
TextFieldEditor::TextFieldEditor(QETElementEditor *editor, PartTextField *textfield, QWidget *parent) :
|
||||||
part = textfield;
|
ElementItemEditor(editor, parent),
|
||||||
|
part(textfield)
|
||||||
|
{
|
||||||
qle_x = new QLineEdit();
|
qle_x = new QLineEdit();
|
||||||
qle_y = new QLineEdit();
|
qle_y = new QLineEdit();
|
||||||
qle_text = new QLineEdit();
|
qle_text = new QLineEdit();
|
||||||
@@ -80,10 +81,40 @@ TextFieldEditor::TextFieldEditor(QETElementEditor *editor, PartTextField *textfi
|
|||||||
TextFieldEditor::~TextFieldEditor() {
|
TextFieldEditor::~TextFieldEditor() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
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 texte dynamique acceptera d'editer la primitive new_part s'il
|
||||||
|
s'agit d'un objet de la classe PartTextField.
|
||||||
|
@param new_part Nouvelle primitive a editer
|
||||||
|
@return true si l'editeur a accepter d'editer la primitive, false sinon
|
||||||
|
*/
|
||||||
|
bool TextFieldEditor::setPart(CustomElementPart *new_part) {
|
||||||
|
if (!new_part) {
|
||||||
|
part = 0;
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
if (PartTextField *part_textfield = dynamic_cast<PartTextField *>(new_part)) {
|
||||||
|
part = part_textfield;
|
||||||
|
updateForm();
|
||||||
|
return(true);
|
||||||
|
} else {
|
||||||
|
return(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return la primitive actuellement editee, ou 0 si ce widget n'en edite pas
|
||||||
|
*/
|
||||||
|
CustomElementPart *TextFieldEditor::currentPart() const {
|
||||||
|
return(part);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Met a jour le champ de texte a partir des donnees du formulaire
|
Met a jour le champ de texte a partir des donnees du formulaire
|
||||||
*/
|
*/
|
||||||
void TextFieldEditor::updateTextField() {
|
void TextFieldEditor::updateTextField() {
|
||||||
|
if (!part) return;
|
||||||
part -> setProperty("size", font_size -> value());
|
part -> setProperty("size", font_size -> value());
|
||||||
part -> setPlainText(qle_text -> text());
|
part -> setPlainText(qle_text -> text());
|
||||||
part -> setPos(qle_x -> text().toDouble(), qle_y -> text().toDouble());
|
part -> setPos(qle_x -> text().toDouble(), qle_y -> text().toDouble());
|
||||||
@@ -107,6 +138,7 @@ void TextFieldEditor::updateTextFieldRotationAngle() { addChangePartCommand(tr("
|
|||||||
Met a jour le formulaire d'edition
|
Met a jour le formulaire d'edition
|
||||||
*/
|
*/
|
||||||
void TextFieldEditor::updateForm() {
|
void TextFieldEditor::updateForm() {
|
||||||
|
if (!part) return;
|
||||||
activeConnections(false);
|
activeConnections(false);
|
||||||
qle_x -> setText(part -> property("x").toString());
|
qle_x -> setText(part -> property("x").toString());
|
||||||
qle_y -> setText(part -> property("y").toString());
|
qle_y -> setText(part -> property("y").toString());
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ class TextFieldEditor : public ElementItemEditor {
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
// Constructeurs, destructeur
|
// Constructeurs, destructeur
|
||||||
public:
|
public:
|
||||||
TextFieldEditor(QETElementEditor *, PartTextField *, QWidget * = 0);
|
TextFieldEditor(QETElementEditor *, PartTextField * = 0, QWidget * = 0);
|
||||||
virtual ~TextFieldEditor();
|
virtual ~TextFieldEditor();
|
||||||
private:
|
private:
|
||||||
TextFieldEditor(const TextFieldEditor &);
|
TextFieldEditor(const TextFieldEditor &);
|
||||||
@@ -45,6 +45,10 @@ class TextFieldEditor : public ElementItemEditor {
|
|||||||
QTextOrientationSpinBoxWidget *rotation_angle_;
|
QTextOrientationSpinBoxWidget *rotation_angle_;
|
||||||
|
|
||||||
// methodes
|
// methodes
|
||||||
|
public:
|
||||||
|
virtual bool setPart(CustomElementPart *);
|
||||||
|
virtual CustomElementPart *currentPart() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void updateTextField();
|
void updateTextField();
|
||||||
void updateTextFieldX();
|
void updateTextFieldX();
|
||||||
|
|||||||
Reference in New Issue
Block a user