mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-09-14 20:33:05 +02:00
-Cette ligne, et les suivantes ci-dessous, seront ignorées-- M sources/aboutqet.cpp M sources/bordertitleblock.cpp M sources/conductorproperties.h M sources/configdialog.cpp M sources/configpages.cpp M sources/configpages.h M sources/createdxf.h M sources/diagram.cpp M sources/diagram.h M sources/diagramcommands.cpp M sources/diagramcommands.h M sources/diagramprintdialog.cpp M sources/diagramprintdialog.h M sources/diagramschooser.cpp M sources/diagramschooser.h M sources/diagramview.cpp M sources/diagramview.h M sources/dvevent/dveventaddimage.cpp M sources/dvevent/dveventaddshape.cpp M sources/editor/arceditor.cpp M sources/editor/arceditor.h M sources/editor/editorcommands.cpp M sources/editor/editorcommands.h M sources/editor/elementitemeditor.h M sources/editor/elementprimitivedecorator.cpp M sources/editor/elementscene.cpp M sources/editor/elementscene.h M sources/editor/elementview.cpp M sources/editor/ellipseeditor.cpp M sources/editor/ellipseeditor.h M sources/editor/esevent/eseventaddtext.cpp M sources/editor/esevent/eseventaddtextfield.cpp M sources/editor/esevent/eseventinterface.cpp M sources/editor/graphicspart/customelementpart.h M sources/editor/graphicspart/parttext.cpp M sources/editor/graphicspart/parttext.h M sources/editor/graphicspart/parttextfield.cpp M sources/editor/graphicspart/parttextfield.h M sources/editor/lineeditor.cpp M sources/editor/lineeditor.h M sources/editor/polygoneditor.cpp M sources/editor/qetelementeditor.cpp M sources/editor/qetelementeditor.h M sources/editor/rectangleeditor.cpp M sources/editor/rectangleeditor.h M sources/editor/styleeditor.cpp M sources/editor/styleeditor.h M sources/editor/terminaleditor.cpp M sources/editor/terminaleditor.h M sources/editor/texteditor.cpp M sources/editor/texteditor.h M sources/editor/textfieldeditor.cpp M sources/editor/textfieldeditor.h M sources/editor/ui/elementpropertieseditorwidget.cpp M sources/elementdefinition.cpp M sources/elementdeleter.cpp M sources/elementdeleter.h M sources/elementdialog.cpp M sources/elementscategorieslist.h M sources/elementscategorieswidget.cpp M sources/elementscategorieswidget.h M sources/elementscategory.cpp M sources/elementscategorydeleter.cpp M sources/elementscategorydeleter.h M sources/elementscategoryeditor.cpp M sources/elementscategoryeditor.h M sources/elementscollection.cpp M sources/elementscollectioncache.cpp M sources/elementspanel.cpp M sources/elementspanel.h M sources/elementspanelwidget.cpp M sources/elementspanelwidget.h M sources/elementtextsmover.h M sources/exportdialog.cpp M sources/exportdialog.h M sources/exportproperties.cpp M sources/exportpropertieswidget.cpp M sources/exportpropertieswidget.h M sources/genericpanel.cpp M sources/integrationmoveelementshandler.cpp M sources/integrationmoveelementshandler.h M sources/interactivemoveelementshandler.cpp M sources/nameslistwidget.cpp M sources/nameslistwidget.h M sources/newelementwizard.cpp M sources/newelementwizard.h M sources/nomenclature.cpp M sources/nomenclature.h M sources/projectconfigpages.cpp M sources/projectview.cpp M sources/projectview.h M sources/qet.cpp M sources/qetapp.cpp M sources/qetapp.h M sources/qetdiagrameditor.cpp M sources/qetdiagrameditor.h M sources/qetgraphicsitem/conductor.cpp M sources/qetgraphicsitem/conductortextitem.cpp M sources/qetgraphicsitem/customelement.cpp M sources/qetgraphicsitem/diagramimageitem.cpp M sources/qetgraphicsitem/diagramtextitem.cpp M sources/qetgraphicsitem/diagramtextitem.h M sources/qetgraphicsitem/element.cpp M sources/qetgraphicsitem/ghostelement.cpp M sources/qetgraphicsitem/qetshapeitem.cpp M sources/qetgraphicsitem/terminal.cpp M sources/qetgraphicsitem/terminal.h M sources/qeticons.cpp M sources/qeticons.h M sources/qetmainwindow.cpp M sources/qetmessagebox.cpp M sources/qetmessagebox.h M sources/qetprintpreviewdialog.cpp M sources/qetprintpreviewdialog.h M sources/qetproject.cpp M sources/qetsingleapplication.cpp M sources/qettabbar.h M sources/qfilenameedit.cpp M sources/qtextorientationspinboxwidget.cpp M sources/qtextorientationspinboxwidget.h M sources/qtextorientationwidget.cpp M sources/qtextorientationwidget.h M sources/richtext/richtexteditor.cpp M sources/richtext/richtexteditor_p.h M sources/richtext/ui_addlinkdialog.h M sources/titleblock/dimensionwidget.h M sources/titleblock/gridlayoutanimation.h M sources/titleblock/helpercell.h M sources/titleblock/integrationmovetemplateshandler.cpp M sources/titleblock/integrationmovetemplateshandler.h M sources/titleblock/qettemplateeditor.cpp M sources/titleblock/qettemplateeditor.h M sources/titleblock/templatecellsset.h M sources/titleblock/templatecellwidget.cpp M sources/titleblock/templatecellwidget.h M sources/titleblock/templatecommands.cpp M sources/titleblock/templatedeleter.cpp M sources/titleblock/templatedeleter.h M sources/titleblock/templatelocationchooser.cpp M sources/titleblock/templatelocationchooser.h M sources/titleblock/templatelocationsaver.cpp M sources/titleblock/templatelocationsaver.h M sources/titleblock/templatelogomanager.cpp M sources/titleblock/templatelogomanager.h M sources/titleblock/templateview.cpp M sources/titleblock/templatevisualcell.h M sources/titleblockcell.cpp M sources/titleblocktemplate.cpp M sources/treecoloranimation.h M sources/ui/conductorpropertieswidget.cpp M sources/ui/diagrampropertiesdialog.cpp M sources/ui/diagramselection.cpp M sources/ui/dialogautonum.cpp M sources/ui/dialogwaiting.cpp M sources/ui/elementpropertieswidget.cpp M sources/ui/elementselectorwidget.cpp M sources/ui/linksingleelementwidget.cpp M sources/ui/masterpropertieswidget.cpp M sources/ui/potentialtextsdialog.cpp M sources/ui/projectpropertiesdialog.cpp M sources/ui/selectautonumw.cpp M sources/ui/titleblockpropertieswidget.cpp M sources/ui/xrefpropertieswidget.cpp M sources/undocommand/changeelementinformationcommand.cpp git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@3783 bfdf4180-ca20-0410-9c96-a3a8aa849046
243 lines
6.7 KiB
C++
243 lines
6.7 KiB
C++
/*
|
|
Copyright 2006-2015 The QElectroTech Team
|
|
This file is part of QElectroTech.
|
|
|
|
QElectroTech is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
QElectroTech is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
#include "conductortextitem.h"
|
|
#include "conductor.h"
|
|
#include "diagramcommands.h"
|
|
#include "diagram.h"
|
|
|
|
/**
|
|
Constructeur
|
|
@param parent_conductor Conducteur auquel ce texte est rattache
|
|
@param parent_diagram Schema auquel ce texte et son conducteur parent sont rattaches
|
|
*/
|
|
ConductorTextItem::ConductorTextItem(Conductor *parent_conductor) :
|
|
DiagramTextItem(parent_conductor),
|
|
parent_conductor_(parent_conductor),
|
|
moved_by_user_(false),
|
|
rotate_by_user_(false)
|
|
{
|
|
setAcceptHoverEvents(true);
|
|
}
|
|
|
|
/**
|
|
Constructeur
|
|
@param text Le texte affiche par le champ de texte
|
|
@param parent_conductor Conducteur auquel ce texte est rattache
|
|
@param parent_diagram Schema auquel ce texte et son conducteur parent sont rattaches
|
|
*/
|
|
ConductorTextItem::ConductorTextItem(const QString &text, Conductor *parent_conductor) :
|
|
DiagramTextItem(text, parent_conductor),
|
|
parent_conductor_(parent_conductor),
|
|
moved_by_user_(false),
|
|
rotate_by_user_(false)
|
|
{}
|
|
|
|
/**
|
|
Destructeur
|
|
*/
|
|
ConductorTextItem::~ConductorTextItem() {
|
|
}
|
|
|
|
/**
|
|
@return le conducteur parent de ce champ de texte, ou 0 si celui-ci n'en a
|
|
pas
|
|
*/
|
|
Conductor *ConductorTextItem::parentConductor() const {
|
|
return(parent_conductor_);
|
|
}
|
|
|
|
/**
|
|
* @brief ConductorTextItem::fromXml
|
|
* Read the properties stored in the xml element given in parameter
|
|
* @param e
|
|
*/
|
|
void ConductorTextItem::fromXml(const QDomElement &e) {
|
|
if (e.hasAttribute("userx")) {
|
|
setPos(e.attribute("userx").toDouble(),
|
|
e.attribute("usery").toDouble());
|
|
moved_by_user_ = true;
|
|
}
|
|
if (e.hasAttribute("rotation")) {
|
|
setRotation(e.attribute("rotation").toDouble());
|
|
rotate_by_user_ = true;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @brief ConductorTextItem::toXml
|
|
* Export the properties of this text in the attribute of the xml element given in parameter
|
|
* The properties exported are position and rotation (only if moved or rotate by user)
|
|
* @param xml
|
|
*/
|
|
void ConductorTextItem::toXml(QDomElement &xml) const {
|
|
if (moved_by_user_) {
|
|
xml.setAttribute("userx", QString("%1").arg(pos().x()));
|
|
xml.setAttribute("usery", QString("%1").arg(pos().y()));
|
|
}
|
|
if (rotate_by_user_) {
|
|
xml.setAttribute("rotation", QString("%1").arg(rotation()));
|
|
}
|
|
}
|
|
|
|
/**
|
|
@return true si ce champ de texte a ete explictement deplace par
|
|
l'utilisateur, false sinon
|
|
*/
|
|
bool ConductorTextItem::wasMovedByUser() const {
|
|
return(moved_by_user_);
|
|
}
|
|
|
|
/**
|
|
* @brief ConductorTextItem::wasRotateByUser
|
|
* @return true if text was explicit moved by user else false
|
|
*/
|
|
bool ConductorTextItem::wasRotateByUser() const {
|
|
return(rotate_by_user_);
|
|
}
|
|
|
|
/**
|
|
@param moved_by_user true pour que la position du texte soit consideree
|
|
comme ayant ete definie par l'utilisateur (et donc soit sauvegardee), false
|
|
pour remettre le texte a sa position originelle
|
|
*/
|
|
void ConductorTextItem::forceMovedByUser(bool moved_by_user) {
|
|
if (moved_by_user == moved_by_user_) return;
|
|
|
|
moved_by_user_ = moved_by_user;
|
|
if (!moved_by_user && parent_conductor_) {
|
|
parent_conductor_ -> calculateTextItemPosition();
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* @brief ConductorTextItem::forceRotateByUser
|
|
* @param rotate_by_user true pour que la rotation du texte soit consideree
|
|
comme ayant ete definie par l'utilisateur (et donc soit sauvegardee), false
|
|
pour remettre le texte a sont angle originelle
|
|
*/
|
|
void ConductorTextItem::forceRotateByUser(bool rotate_by_user) {
|
|
if (rotate_by_user == rotate_by_user_) return;
|
|
|
|
rotate_by_user_ = rotate_by_user;
|
|
if (!rotate_by_user && parent_conductor_) {
|
|
parent_conductor_ -> calculateTextItemPosition();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @brief ConductorTextItem::mousePressEvent
|
|
* @param event
|
|
*/
|
|
void ConductorTextItem::mousePressEvent(QGraphicsSceneMouseEvent *event) {
|
|
before_mov_pos_ = pos();
|
|
DiagramTextItem::mousePressEvent(event);
|
|
}
|
|
|
|
/**
|
|
* @brief ConductorTextItem::mouseMoveEvent
|
|
* @param event
|
|
*/
|
|
void ConductorTextItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) {
|
|
if (textInteractionFlags() & Qt::TextEditable) QGraphicsTextItem::mouseMoveEvent(event);
|
|
|
|
else if ((flags() & QGraphicsItem::ItemIsMovable) && (event -> buttons() & Qt::LeftButton)) {
|
|
|
|
QPointF intended_pos = event ->scenePos() + m_mouse_to_origin_movement;
|
|
|
|
if (parent_conductor_) {
|
|
if (parent_conductor_ -> isNearConductor(intended_pos)) {
|
|
event->modifiers() == Qt::ControlModifier ? setPos(intended_pos) : setPos(Diagram::snapToGrid(intended_pos));
|
|
parent_conductor_ -> setHighlighted(Conductor::Normal);
|
|
} else {
|
|
parent_conductor_ -> setHighlighted(Conductor::Alert);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
else event -> ignore();
|
|
}
|
|
|
|
/**
|
|
* @brief ConductorTextItem::mouseReleaseEvent
|
|
* @param e
|
|
*/
|
|
void ConductorTextItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) {
|
|
if (flags() & QGraphicsItem::ItemIsMovable) {
|
|
|
|
if (Diagram *diagram_ptr = diagram()) {
|
|
QPointF applied_movement = pos() - before_mov_pos_;
|
|
|
|
if (!applied_movement.isNull()) {
|
|
//Create an undo object
|
|
MoveConductorsTextsCommand *undo_object = new MoveConductorsTextsCommand(diagram_ptr);
|
|
undo_object -> addTextMovement(this, before_mov_pos_, pos(), moved_by_user_);
|
|
|
|
moved_by_user_ = true;
|
|
|
|
diagram_ptr -> undoStack().push(undo_object);
|
|
}
|
|
|
|
if (parent_conductor_) {
|
|
parent_conductor_ -> setHighlighted(Conductor::None);
|
|
}
|
|
}
|
|
}
|
|
if (!(e -> modifiers() & Qt::ControlModifier)) {
|
|
QGraphicsTextItem::mouseReleaseEvent(e);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
When mouse over element
|
|
change m_mouse_hover to true (used in paint() function )
|
|
@param e QGraphicsSceneHoverEvent
|
|
*/
|
|
void ConductorTextItem::hoverEnterEvent(QGraphicsSceneHoverEvent *e) {
|
|
Q_UNUSED(e);
|
|
|
|
m_mouse_hover = true;
|
|
QString str_ToolTip = toPlainText();
|
|
setToolTip( str_ToolTip );
|
|
update();
|
|
}
|
|
|
|
/**
|
|
When mouse over element leave the position
|
|
change m_mouse_hover to false(used in paint() function )
|
|
@param e QGraphicsSceneHoverEvent
|
|
*/
|
|
void ConductorTextItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *e) {
|
|
Q_UNUSED(e);
|
|
//qDebug() << "Leave mouse over";
|
|
m_mouse_hover = false;
|
|
update();
|
|
}
|
|
|
|
/**
|
|
Do nothing default function .
|
|
@param e QGraphicsSceneHoverEvent
|
|
*/
|
|
void ConductorTextItem::hoverMoveEvent(QGraphicsSceneHoverEvent *e) {
|
|
Q_UNUSED(e);
|
|
QGraphicsTextItem::hoverMoveEvent(e);
|
|
}
|