mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-23 10:30:53 +01:00
Il est desormais possible de deplacer les champs de texte des conducteurs.
Leur deplacement est limite aux alentours du trajet de leur conducteur parent, Reorganisation du code pour tout ce qui est relatif aux deplacements d'items sur les schemas. git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.3@987 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -23,7 +23,8 @@
|
||||
@param parent_diagram Le schema auquel est rattache le champ de texte
|
||||
*/
|
||||
IndependentTextItem::IndependentTextItem(Diagram *parent_diagram) :
|
||||
DiagramTextItem(0, parent_diagram)
|
||||
DiagramTextItem(0, parent_diagram),
|
||||
first_move_(true)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -33,7 +34,8 @@ IndependentTextItem::IndependentTextItem(Diagram *parent_diagram) :
|
||||
@param parent_diagram Le schema auquel est rattache le champ de texte
|
||||
*/
|
||||
IndependentTextItem::IndependentTextItem(const QString &text, Diagram *parent_diagram) :
|
||||
DiagramTextItem(text, 0, parent_diagram)
|
||||
DiagramTextItem(text, 0, parent_diagram),
|
||||
first_move_(true)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -68,3 +70,68 @@ QDomElement IndependentTextItem::toXml(QDomDocument &document) const {
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
Gere le clic sur le champ de texte
|
||||
@param e Objet decrivant l'evenement souris
|
||||
*/
|
||||
void IndependentTextItem::mousePressEvent(QGraphicsSceneMouseEvent *e) {
|
||||
first_move_ = true;
|
||||
if (e -> modifiers() & Qt::ControlModifier) {
|
||||
setSelected(!isSelected());
|
||||
}
|
||||
DiagramTextItem::mousePressEvent(e);
|
||||
}
|
||||
|
||||
/**
|
||||
Gere les mouvements de souris lies au champ de texte
|
||||
@param e Objet decrivant l'evenement souris
|
||||
*/
|
||||
void IndependentTextItem::mouseMoveEvent(QGraphicsSceneMouseEvent *e) {
|
||||
if (textInteractionFlags() & Qt::TextEditable) {
|
||||
DiagramTextItem::mouseMoveEvent(e);
|
||||
} else if ((flags() & QGraphicsItem::ItemIsMovable) && isSelected() && (e -> buttons() & Qt::LeftButton)) {
|
||||
// le champ de texte est en train d'etre deplace
|
||||
Diagram *diagram_ptr = diagram();
|
||||
if (diagram_ptr) {
|
||||
if (first_move_) {
|
||||
// il s'agit du premier mouvement du deplacement, on le signale
|
||||
// au schema parent
|
||||
diagram_ptr -> beginMoveElements(this);
|
||||
}
|
||||
}
|
||||
|
||||
// on applique le mouvement impose par la souris
|
||||
QPointF old_pos = pos();
|
||||
setPos(mapToParent(e -> pos()) - matrix().map(e -> buttonDownPos(Qt::LeftButton)));
|
||||
|
||||
// on calcule le mouvement reellement applique par setPos()
|
||||
QPointF effective_movement = pos() - old_pos;
|
||||
|
||||
if (diagram_ptr) {
|
||||
// on signale le mouvement ainsi applique au schema parent, qui
|
||||
// l'appliquera aux autres items selectionnes selon son bon vouloir
|
||||
diagram_ptr -> continueMoveElements(effective_movement);
|
||||
}
|
||||
} else e -> ignore();
|
||||
|
||||
if (first_move_) {
|
||||
first_move_ = false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Gere le relachement de souris
|
||||
Cette methode a ete reimplementee pour tenir a jour la liste des elements
|
||||
et conducteurs a deplacer au niveau du schema.
|
||||
@param e Objet decrivant l'evenement souris
|
||||
*/
|
||||
void IndependentTextItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) {
|
||||
if (flags() & QGraphicsItem::ItemIsMovable) {
|
||||
if (Diagram *diagram_ptr = diagram()) {
|
||||
diagram_ptr -> endMoveElements();
|
||||
}
|
||||
}
|
||||
if (!(e -> modifiers() & Qt::ControlModifier)) {
|
||||
DiagramTextItem::mouseReleaseEvent(e);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user