mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-09-14 20:33:05 +02:00
Fix : in some condition, dynamic text are not at the same position when open a project.
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@5406 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
parent
2be0af2f43
commit
749e0e5e78
@ -32,6 +32,13 @@ namespace QET {
|
|||||||
const QString displayedVersion = "0.70-dev";
|
const QString displayedVersion = "0.70-dev";
|
||||||
QString license();
|
QString license();
|
||||||
|
|
||||||
|
//Describe the current state of a graphic item
|
||||||
|
enum GraphicsItemState {
|
||||||
|
GIOK, ///<General state
|
||||||
|
GIBuildingFromXml, ///<Item is currently building from a xml description (element)
|
||||||
|
GILoadingFromXml ///<Item is loading her properties from a xml description.
|
||||||
|
};
|
||||||
|
|
||||||
/// List the various kind of changes for the zValue
|
/// List the various kind of changes for the zValue
|
||||||
enum DepthOption {
|
enum DepthOption {
|
||||||
BringForward, ///< Bring item to the foreground so they have the highest zValue
|
BringForward, ///< Bring item to the foreground so they have the highest zValue
|
||||||
|
@ -88,11 +88,14 @@ CustomElement::CustomElement(const ElementsLocation &location, QGraphicsItem *qg
|
|||||||
- 8 : Aucune partie du dessin n'a pu etre chargee
|
- 8 : Aucune partie du dessin n'a pu etre chargee
|
||||||
@return true si le chargement a reussi, false sinon
|
@return true si le chargement a reussi, false sinon
|
||||||
*/
|
*/
|
||||||
bool CustomElement::buildFromXml(const QDomElement &xml_def_elmt, int *state) {
|
bool CustomElement::buildFromXml(const QDomElement &xml_def_elmt, int *state)
|
||||||
|
{
|
||||||
|
m_state = QET::GIBuildingFromXml;
|
||||||
|
|
||||||
if (xml_def_elmt.tagName() != "definition" || xml_def_elmt.attribute("type") != "element")
|
if (xml_def_elmt.tagName() != "definition" || xml_def_elmt.attribute("type") != "element")
|
||||||
{
|
{
|
||||||
if (state) *state = 4;
|
if (state) *state = 4;
|
||||||
|
m_state = QET::GIOK;
|
||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,6 +124,7 @@ bool CustomElement::buildFromXml(const QDomElement &xml_def_elmt, int *state) {
|
|||||||
!validOrientationAttribute(xml_def_elmt)
|
!validOrientationAttribute(xml_def_elmt)
|
||||||
) {
|
) {
|
||||||
if (state) *state = 5;
|
if (state) *state = 5;
|
||||||
|
m_state = QET::GIOK;
|
||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,6 +135,7 @@ bool CustomElement::buildFromXml(const QDomElement &xml_def_elmt, int *state) {
|
|||||||
if (xml_def_elmt.firstChild().isNull())
|
if (xml_def_elmt.firstChild().isNull())
|
||||||
{
|
{
|
||||||
if (state) *state = 6;
|
if (state) *state = 6;
|
||||||
|
m_state = QET::GIOK;
|
||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,7 +208,7 @@ bool CustomElement::buildFromXml(const QDomElement &xml_def_elmt, int *state) {
|
|||||||
{
|
{
|
||||||
if (state)
|
if (state)
|
||||||
*state = 7;
|
*state = 7;
|
||||||
|
m_state = QET::GIOK;
|
||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -220,14 +225,14 @@ bool CustomElement::buildFromXml(const QDomElement &xml_def_elmt, int *state) {
|
|||||||
{
|
{
|
||||||
if (state)
|
if (state)
|
||||||
*state = 8;
|
*state = 8;
|
||||||
|
m_state = QET::GIOK;
|
||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (state)
|
if (state)
|
||||||
*state = 0;
|
*state = 0;
|
||||||
|
m_state = QET::GIOK;
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1314,31 +1314,43 @@ void DynamicElementTextItem::updateXref()
|
|||||||
|
|
||||||
void DynamicElementTextItem::setPlainText(const QString &text)
|
void DynamicElementTextItem::setPlainText(const QString &text)
|
||||||
{
|
{
|
||||||
if(toPlainText() == text)
|
if (toPlainText() == text)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
prepareAlignment();
|
bool update_alignment = true;
|
||||||
|
if (diagram() && (diagram()->project()->state() == QETProject::ProjectParsingRunning))
|
||||||
|
update_alignment = false;
|
||||||
|
if (m_parent_element.data()->state() == QET::GIBuildingFromXml ||
|
||||||
|
m_parent_element.data()->state() == QET::GILoadingFromXml)
|
||||||
|
update_alignment = false;
|
||||||
|
|
||||||
|
if (update_alignment) {
|
||||||
|
prepareAlignment();
|
||||||
|
}
|
||||||
|
|
||||||
DiagramTextItem::setPlainText(text);
|
DiagramTextItem::setPlainText(text);
|
||||||
|
|
||||||
//User define a text width
|
//User define a text width
|
||||||
if(m_text_width > 0)
|
if (m_text_width > 0)
|
||||||
{
|
{
|
||||||
if(document()->size().width() > m_text_width)
|
if (document()->size().width() > m_text_width)
|
||||||
{
|
{
|
||||||
document()->setTextWidth(m_text_width);
|
document()->setTextWidth(m_text_width);
|
||||||
if(document()->size().width() > m_text_width)
|
if (document()->size().width() > m_text_width)
|
||||||
{
|
{
|
||||||
document()->setTextWidth(document()->idealWidth());
|
document()->setTextWidth(document()->idealWidth());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
finishAlignment();
|
if (update_alignment) {
|
||||||
|
finishAlignment();
|
||||||
|
}
|
||||||
|
|
||||||
if(m_Xref_item)
|
if (m_Xref_item) {
|
||||||
m_Xref_item->autoPos();
|
m_Xref_item->autoPos();
|
||||||
else if(m_slave_Xref_item)
|
}
|
||||||
|
else if (m_slave_Xref_item)
|
||||||
{
|
{
|
||||||
QRectF r = boundingRect();
|
QRectF r = boundingRect();
|
||||||
QPointF pos(r.center().x() - m_slave_Xref_item->boundingRect().width()/2,
|
QPointF pos(r.center().x() - m_slave_Xref_item->boundingRect().width()/2,
|
||||||
|
@ -356,6 +356,7 @@ bool Element::valideXml(QDomElement &e) {
|
|||||||
*/
|
*/
|
||||||
bool Element::fromXml(QDomElement &e, QHash<int, Terminal *> &table_id_adr, bool handle_inputs_rotation)
|
bool Element::fromXml(QDomElement &e, QHash<int, Terminal *> &table_id_adr, bool handle_inputs_rotation)
|
||||||
{
|
{
|
||||||
|
m_state = QET::GILoadingFromXml;
|
||||||
/*
|
/*
|
||||||
les bornes vont maintenant etre recensees pour associer leurs id a leur adresse reelle
|
les bornes vont maintenant etre recensees pour associer leurs id a leur adresse reelle
|
||||||
ce recensement servira lors de la mise en place des fils
|
ce recensement servira lors de la mise en place des fils
|
||||||
@ -383,13 +384,20 @@ bool Element::fromXml(QDomElement &e, QHash<int, Terminal *> &table_id_adr, bool
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (terminals_non_trouvees > 0) {
|
if (terminals_non_trouvees > 0)
|
||||||
|
{
|
||||||
|
m_state = QET::GIOK;
|
||||||
return(false);
|
return(false);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
// verifie que les associations id / adr n'entrent pas en conflit avec table_id_adr
|
// verifie que les associations id / adr n'entrent pas en conflit avec table_id_adr
|
||||||
foreach(int id_trouve, priv_id_adr.keys()) {
|
foreach(int id_trouve, priv_id_adr.keys())
|
||||||
if (table_id_adr.contains(id_trouve)) {
|
{
|
||||||
|
if (table_id_adr.contains(id_trouve))
|
||||||
|
{
|
||||||
// cet element possede un id qui est deja reference (= conflit)
|
// cet element possede un id qui est deja reference (= conflit)
|
||||||
|
m_state = QET::GIOK;
|
||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -597,7 +605,10 @@ bool Element::fromXml(QDomElement &e, QHash<int, Terminal *> &table_id_adr, bool
|
|||||||
//Create the comment item
|
//Create the comment item
|
||||||
DynamicElementTextItem *comment_text = nullptr;
|
DynamicElementTextItem *comment_text = nullptr;
|
||||||
if (m_link_type !=PreviousReport || m_link_type !=NextReport)
|
if (m_link_type !=PreviousReport || m_link_type !=NextReport)
|
||||||
|
{
|
||||||
|
m_state = QET::GIOK;
|
||||||
return(true);
|
return(true);
|
||||||
|
}
|
||||||
if(!comment.isEmpty() && c)
|
if(!comment.isEmpty() && c)
|
||||||
{
|
{
|
||||||
comment_text = new DynamicElementTextItem(this);
|
comment_text = new DynamicElementTextItem(this);
|
||||||
@ -613,7 +624,10 @@ bool Element::fromXml(QDomElement &e, QHash<int, Terminal *> &table_id_adr, bool
|
|||||||
//create the location item
|
//create the location item
|
||||||
DynamicElementTextItem *location_text = nullptr;
|
DynamicElementTextItem *location_text = nullptr;
|
||||||
if (m_link_type !=PreviousReport || m_link_type !=NextReport)
|
if (m_link_type !=PreviousReport || m_link_type !=NextReport)
|
||||||
|
{
|
||||||
|
m_state = QET::GIOK;
|
||||||
return(true);
|
return(true);
|
||||||
|
}
|
||||||
if(!location.isEmpty() && lo)
|
if(!location.isEmpty() && lo)
|
||||||
{
|
{
|
||||||
location_text = new DynamicElementTextItem(this);
|
location_text = new DynamicElementTextItem(this);
|
||||||
@ -628,7 +642,10 @@ bool Element::fromXml(QDomElement &e, QHash<int, Terminal *> &table_id_adr, bool
|
|||||||
|
|
||||||
QPointF pos = deti->pos();
|
QPointF pos = deti->pos();
|
||||||
if (m_link_type !=PreviousReport || m_link_type !=NextReport)
|
if (m_link_type !=PreviousReport || m_link_type !=NextReport)
|
||||||
|
{
|
||||||
|
m_state = QET::GIOK;
|
||||||
return(true);
|
return(true);
|
||||||
|
}
|
||||||
//Create the group
|
//Create the group
|
||||||
ElementTextItemGroup *group = addTextGroup(tr("Label + commentaire"));
|
ElementTextItemGroup *group = addTextGroup(tr("Label + commentaire"));
|
||||||
addTextToGroup(deti, group);
|
addTextToGroup(deti, group);
|
||||||
@ -691,7 +708,7 @@ bool Element::fromXml(QDomElement &e, QHash<int, Terminal *> &table_id_adr, bool
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
m_state = QET::GIOK;
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user