Les points de saisie des segments composant les conducteurs selectionnes sont desormais mis en evidence lorsqu'on passe la souris dessus.

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@810 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavier
2009-12-07 19:24:56 +00:00
parent f6d8c0bff7
commit 17a3dcd92b
2 changed files with 38 additions and 15 deletions

View File

@@ -47,7 +47,8 @@ Conductor::Conductor(Terminal *p1, Terminal* p2, Element *parent, QGraphicsScene
moving_segment(false), moving_segment(false),
previous_z_value(zValue()), previous_z_value(zValue()),
modified_path(false), modified_path(false),
has_to_save_profile(false) has_to_save_profile(false),
segments_squares_scale_(1.0)
{ {
// ajout du conducteur a la liste de conducteurs de chacune des deux bornes // ajout du conducteur a la liste de conducteurs de chacune des deux bornes
bool ajout_p1 = terminal1 -> addConductor(this); bool ajout_p1 = terminal1 -> addConductor(this);
@@ -93,8 +94,6 @@ Conductor::Conductor(Terminal *p1, Terminal* p2, Element *parent, QGraphicsScene
this, this,
SLOT(displayedTextChanged()) SLOT(displayedTextChanged())
); );
// taille du carre de saisie du segment
RectMoveSeg_Scale = 1.0;
} }
/** /**
@@ -510,10 +509,10 @@ void Conductor::paint(QPainter *qp, const QStyleOptionGraphicsItem *options, QWi
if (i > 1) { if (i > 1) {
qp -> fillRect( qp -> fillRect(
QRectF( QRectF(
((previous_point.x() + point.x()) / 2.0 ) - pretty_offset * RectMoveSeg_Scale, ((previous_point.x() + point.x()) / 2.0 ) - pretty_offset * segments_squares_scale_,
((previous_point.y() + point.y()) / 2.0 ) - pretty_offset * RectMoveSeg_Scale, ((previous_point.y() + point.y()) / 2.0 ) - pretty_offset * segments_squares_scale_,
2.0 * RectMoveSeg_Scale, 2.0 * segments_squares_scale_,
2.0 * RectMoveSeg_Scale 2.0 * segments_squares_scale_
), ),
square_brush square_brush
); );
@@ -603,12 +602,11 @@ void Conductor::mousePressEvent(QGraphicsSceneMouseEvent *e) {
} else if (hasClickedOn(press_point, segment -> middle())) { } else if (hasClickedOn(press_point, segment -> middle())) {
moving_point = false; moving_point = false;
moving_segment = true; moving_segment = true;
RectMoveSeg_Scale = 2.0;
previous_z_value = zValue(); previous_z_value = zValue();
setZValue(5000.0); setZValue(5000.0);
moved_segment = segment; moved_segment = segment;
break; break;
}else RectMoveSeg_Scale = 1.0; }
segment = segment -> nextSegment(); segment = segment -> nextSegment();
} }
} }
@@ -623,12 +621,11 @@ void Conductor::mousePressEvent(QGraphicsSceneMouseEvent *e) {
@param e L'evenement decrivant le deplacement de souris. @param e L'evenement decrivant le deplacement de souris.
*/ */
void Conductor::mouseMoveEvent(QGraphicsSceneMouseEvent *e) { void Conductor::mouseMoveEvent(QGraphicsSceneMouseEvent *e) {
// position pointee par la souris
qreal mouse_x = e -> pos().x();
qreal mouse_y = e -> pos().y();
// clic gauche // clic gauche
if (e -> buttons() & Qt::LeftButton) { if (e -> buttons() & Qt::LeftButton) {
// position pointee par la souris
qreal mouse_x = e -> pos().x();
qreal mouse_y = e -> pos().y();
bool snap_conductors_to_grid = e -> modifiers() ^ Qt::ShiftModifier; bool snap_conductors_to_grid = e -> modifiers() ^ Qt::ShiftModifier;
if (snap_conductors_to_grid) { if (snap_conductors_to_grid) {
@@ -690,6 +687,30 @@ void Conductor::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) {
calculateTextItemPosition(); calculateTextItemPosition();
} }
/**
Gere l'entree de la souris dans la zone du conducteur
@param e Le QGraphicsSceneHoverEvent decrivant l'evenement
*/
void Conductor::hoverEnterEvent(QGraphicsSceneHoverEvent *e) {
Q_UNUSED(e);
segments_squares_scale_ = 2.0;
if (isSelected()) {
update();
}
}
/**
Gere la sortie de la souris de la zone du conducteur
@param e Le QGraphicsSceneHoverEvent decrivant l'evenement
*/
void Conductor::hoverLeaveEvent(QGraphicsSceneHoverEvent *e) {
Q_UNUSED(e);
segments_squares_scale_ = 1.0;
if (isSelected()) {
update();
}
}
/** /**
Gere les mouvements de souris au dessus du conducteur Gere les mouvements de souris au dessus du conducteur
@param e Le QGraphicsSceneHoverEvent decrivant l'evenement @param e Le QGraphicsSceneHoverEvent decrivant l'evenement

View File

@@ -90,11 +90,11 @@ class Conductor : public QObject, public QGraphicsPathItem {
virtual void mousePressEvent(QGraphicsSceneMouseEvent *); virtual void mousePressEvent(QGraphicsSceneMouseEvent *);
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *);
virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *);
virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *);
virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *); virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *);
private: private:
/// taille du carre de saisie du segment
int RectMoveSeg_Scale;
/// caracteristiques du conducteur /// caracteristiques du conducteur
ConductorProperties properties_; ConductorProperties properties_;
/// booleen indiquant si le fil est encore valide /// booleen indiquant si le fil est encore valide
@@ -121,6 +121,8 @@ class Conductor : public QObject, public QGraphicsPathItem {
static QBrush conductor_brush; static QBrush conductor_brush;
static QBrush square_brush; static QBrush square_brush;
static bool pen_and_brush_initialized; static bool pen_and_brush_initialized;
/// facteur de taille du carre de saisie du segment
int segments_squares_scale_;
private: private:
void segmentsToPath(); void segmentsToPath();