| Re: [qet] Patch pour mettre en évidence les pts de déplacement des conducteurs |
[ Thread Index | Date Index | More lists.tuxfamily.org/qet Archives ]
Ci-joint un second jet dans lequel le conducteur sous la souris voit son épaisseur doubler s'il est sélectionné. @+ -- Xavier G. Développeur du projet QElectroTech
Index: sources/conductor.h
===================================================================
--- sources/conductor.h (révision 804)
+++ sources/conductor.h (copie de travail)
@@ -90,11 +90,11 @@
virtual void mousePressEvent(QGraphicsSceneMouseEvent *);
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *);
+ virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *);
+ virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *);
virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *);
private:
- /// taille du carre de saisie du segment
- int RectMoveSeg_Scale;
/// caracteristiques du conducteur
ConductorProperties properties_;
/// booleen indiquant si le fil est encore valide
@@ -121,6 +121,10 @@
static QBrush conductor_brush;
static QBrush square_brush;
static bool pen_and_brush_initialized;
+ /// facteur de taille du carre de saisie du segment
+ int segments_squares_scale_;
+ /// booleen indiquant si le conducteur doit etre dessine avec un trait epais
+ bool thick_drawing_;
private:
void segmentsToPath();
Index: sources/conductor.cpp
===================================================================
--- sources/conductor.cpp (révision 804)
+++ sources/conductor.cpp (copie de travail)
@@ -47,7 +47,9 @@
moving_segment(false),
previous_z_value(zValue()),
modified_path(false),
- has_to_save_profile(false)
+ has_to_save_profile(false),
+ segments_squares_scale_(1.0),
+ thick_drawing_(false)
{
// ajout du conducteur a la liste de conducteurs de chacune des deux bornes
bool ajout_p1 = terminal1 -> addConductor(this);
@@ -93,8 +95,6 @@
this,
SLOT(displayedTextChanged())
);
- // taille du carre de saisie du segment
- RectMoveSeg_Scale = 1.0;
}
/**
@@ -478,8 +478,12 @@
final_conductor_pen.setJoinStyle(Qt::SvgMiterJoin); // meilleur rendu des pointilles
// utilisation d'un trait "cosmetique" en-dessous d'un certain zoom
- if (options && options -> levelOfDetail < 1.0) {
- final_conductor_pen.setCosmetic(true);
+ if (isSelected() && thick_drawing_) {
+ final_conductor_pen.setWidth(2.0);
+ } else {
+ if (options && options -> levelOfDetail < 1.0) {
+ final_conductor_pen.setCosmetic(true);
+ }
}
qp -> setPen(final_conductor_pen);
@@ -510,10 +514,10 @@
if (i > 1) {
qp -> fillRect(
QRectF(
- ((previous_point.x() + point.x()) / 2.0 ) - pretty_offset * RectMoveSeg_Scale,
- ((previous_point.y() + point.y()) / 2.0 ) - pretty_offset * RectMoveSeg_Scale,
- 2.0 * RectMoveSeg_Scale,
- 2.0 * RectMoveSeg_Scale
+ ((previous_point.x() + point.x()) / 2.0 ) - pretty_offset * segments_squares_scale_,
+ ((previous_point.y() + point.y()) / 2.0 ) - pretty_offset * segments_squares_scale_,
+ 2.0 * segments_squares_scale_,
+ 2.0 * segments_squares_scale_
),
square_brush
);
@@ -603,12 +607,11 @@
} else if (hasClickedOn(press_point, segment -> middle())) {
moving_point = false;
moving_segment = true;
- RectMoveSeg_Scale = 2.0;
previous_z_value = zValue();
setZValue(5000.0);
moved_segment = segment;
break;
- }else RectMoveSeg_Scale = 1.0;
+ }
segment = segment -> nextSegment();
}
}
@@ -623,12 +626,11 @@
@param e L'evenement decrivant le deplacement de souris.
*/
void Conductor::mouseMoveEvent(QGraphicsSceneMouseEvent *e) {
- // position pointee par la souris
- qreal mouse_x = e -> pos().x();
- qreal mouse_y = e -> pos().y();
-
// clic gauche
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;
if (snap_conductors_to_grid) {
@@ -691,6 +693,32 @@
}
/**
+ 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;
+ thick_drawing_ = true;
+ 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;
+ thick_drawing_ = false;
+ if (isSelected()) {
+ update();
+ }
+}
+
+/**
Gere les mouvements de souris au dessus du conducteur
@param e Le QGraphicsSceneHoverEvent decrivant l'evenement
*/
Attachment:
signature.asc
Description: This is a digitally signed message part.
| Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |