mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-21 00:30:53 +01:00
Ajout de la possibilite de selectionner et supprimer des conducteurs
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@36 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -25,6 +25,7 @@ Conducteur::Conducteur(Borne *p1, Borne* p2, Element *parent, QGraphicsScene *sc
|
||||
setPen(t);
|
||||
// calcul du rendu du conducteur
|
||||
calculeConducteur();
|
||||
setFlags(QGraphicsItem::ItemIsSelectable);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -48,14 +49,6 @@ void Conducteur::update(qreal x, qreal y, qreal width, qreal height) {
|
||||
QGraphicsPathItem::update(x, y, width, height);
|
||||
}
|
||||
|
||||
/**
|
||||
Destructeur du Conducteur. Avant d'etre detruit, le conducteur se decroche des bornes
|
||||
auxquelles il est lie.
|
||||
*/
|
||||
/*Conducteur::~Conducteur() {
|
||||
|
||||
}*/
|
||||
|
||||
/**
|
||||
Met a jour le QPainterPath constituant le conducteur pour obtenir
|
||||
un conducteur uniquement compose de droites reliant les deux bornes.
|
||||
@@ -125,12 +118,30 @@ void Conducteur::calculeConducteur() {
|
||||
@param qsogi Les options de style pour le conducteur
|
||||
@param qw Le QWidget sur lequel on dessine
|
||||
*/
|
||||
void Conducteur::paint(QPainter *qp, const QStyleOptionGraphicsItem *qsogi, QWidget *qw) {
|
||||
void Conducteur::paint(QPainter *qp, const QStyleOptionGraphicsItem */*qsogi*/, QWidget */*qw*/) {
|
||||
qp -> save();
|
||||
qp -> setRenderHint(QPainter::Antialiasing, false);
|
||||
qp -> setRenderHint(QPainter::TextAntialiasing, false);
|
||||
qp -> setRenderHint(QPainter::SmoothPixmapTransform, false);
|
||||
QGraphicsPathItem::paint(qp, qsogi, qw);
|
||||
|
||||
// recupere le QPen et la QBrush du QPainter
|
||||
QPen pen = qp -> pen();
|
||||
QBrush brush = qp -> brush();
|
||||
|
||||
// attributs par defaut
|
||||
pen.setJoinStyle(Qt::MiterJoin);
|
||||
pen.setCapStyle(Qt::SquareCap);
|
||||
pen.setColor(isSelected() ? Qt::red : Qt::black);
|
||||
pen.setStyle(Qt::SolidLine);
|
||||
pen.setWidthF(1.0);
|
||||
brush.setStyle(Qt::NoBrush);
|
||||
|
||||
// affectation du QPen et de la QBrush modifies au QPainter
|
||||
qp -> setPen(pen);
|
||||
qp -> setBrush(brush);
|
||||
|
||||
qp -> drawPath(path());
|
||||
//QGraphicsPathItem::paint(qp, qsogi, qw);
|
||||
qp -> restore();
|
||||
}
|
||||
|
||||
|
||||
@@ -81,19 +81,27 @@ void SchemaVue::selectInvert() {
|
||||
Supprime les composants selectionnes
|
||||
*/
|
||||
void SchemaVue::supprimer() {
|
||||
QList<QGraphicsItem *> garbage_elmt;
|
||||
QList<QGraphicsItem *> garbage_conducteurs;
|
||||
|
||||
// useless but careful : creating two lists : one for wires, one for elements
|
||||
QList<QGraphicsItem *> garbage_elmt;
|
||||
QList<QGraphicsItem *> garbage_conducteurs;
|
||||
|
||||
// creation de deux listes : une pour les conducteurs, une pour les elements
|
||||
foreach (QGraphicsItem *qgi, scene -> selectedItems()) {
|
||||
if (!garbage_elmt.contains(qgi)) garbage_elmt.append(qgi);
|
||||
// pour chaque enfant de l'element
|
||||
foreach (QGraphicsItem *child, qgi -> children()) {
|
||||
// si cet enfant est une borne
|
||||
if (Borne *p = qgraphicsitem_cast<Borne *>(child)) {
|
||||
// alors chaque conducteur de la borne est recense
|
||||
foreach (Conducteur *f, p -> conducteurs()) {
|
||||
if (!garbage_conducteurs.contains(f)) garbage_conducteurs.append(f);
|
||||
// pour chaque qgi selectionne, il s'agit soit d'un element soit d'un conducteur
|
||||
if (qgraphicsitem_cast<Conducteur *>(qgi)) {
|
||||
// s'il s'agit d'un conducteur, on le met dans la liste des conducteurs
|
||||
if (!garbage_conducteurs.contains(qgi)) garbage_conducteurs.append(qgi);
|
||||
} else if (qgraphicsitem_cast<Element *>(qgi)) {
|
||||
// s'il s'agit d'un element, on veille a enlever ses conducteurs
|
||||
if (!garbage_elmt.contains(qgi)) garbage_elmt.append(qgi);
|
||||
// pour chaque enfant de l'element
|
||||
foreach (QGraphicsItem *child, qgi -> children()) {
|
||||
// si cet enfant est une borne
|
||||
if (Borne *p = qgraphicsitem_cast<Borne *>(child)) {
|
||||
// alors chaque conducteur de la borne est recense
|
||||
foreach (Conducteur *f, p -> conducteurs()) {
|
||||
if (!garbage_conducteurs.contains(f)) garbage_conducteurs.append(f);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user