Re: [qet] Patch pour mettre en évidence les pts de déplacement des conducteurs

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


Suite à mon précédent message, voici ci-joint un premier jet.

Au final, ça fait un peu sapin de Noël si on fait Ctrl+A et qu'on promène sa 
souris sur le schéma, mais ça correspond plus à ce que tu voulais faire. Je 
me demande si on n'aurait pas intérêt à augmenter l'épaisseur du conducteur 
qui reçoit l'hover*Event => ça permettrait de bien distinguer le trajet du 
conducteur sélectionné.
Qu'en penses-tu ?

À noter que j'en ai profité pour :
  * remettre Conductor::mouseMoveEvent dans son état inital ;
  * renommer l'attribut privé que tu avais ajouté : 
    * carré, c'est square en anglais
    * j'essaye de maintenir une cohérence sur le nom des variables : 
      * que des minuscules (je réserve le camelCase aux méthodes)
      * des underscores au milieu pour que ça reste lisible
      * et un underscore à la fin pour distinguer discrètement un attribut 
privé d'une variable locale ;
  * l'initialiser dans la liste d'initialisation (cf 
http://cpp.developpez.com/faq/cpp/?page=constructeur#CONSTRUCTEUR_liste_init 
).

@+
-- 
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,8 @@
 	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_;
 	
 	private:
 	void segmentsToPath();
Index: sources/conductor.cpp
===================================================================
--- sources/conductor.cpp	(révision 804)
+++ sources/conductor.cpp	(copie de travail)
@@ -47,7 +47,8 @@
 	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)
 {
 	// ajout du conducteur a la liste de conducteurs de chacune des deux bornes
 	bool ajout_p1 = terminal1 -> addConductor(this);
@@ -93,8 +94,6 @@
 		this,
 		SLOT(displayedTextChanged())
 	);
-	// taille du carre de saisie du segment
-	RectMoveSeg_Scale = 1.0;
 }
 
 /**
@@ -510,10 +509,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 +602,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 +621,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 +688,30 @@
 }
 
 /**
+	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
 	@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/