mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-19 23:20:52 +01:00
Widget used to edit text item group can edit the pos of the group.
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@5408 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -465,6 +465,26 @@ void ElementTextItemGroup::setRotation(qreal angle)
|
|||||||
emit rotationChanged(angle);
|
emit rotationChanged(angle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ElementTextItemGroup::setPos(const QPointF &pos)
|
||||||
|
{
|
||||||
|
QPointF old_pos = this->pos();
|
||||||
|
QGraphicsItemGroup::setPos(pos);
|
||||||
|
if (old_pos.x() != this->pos().x())
|
||||||
|
emit xChanged();
|
||||||
|
if (old_pos.y() != this->pos().y())
|
||||||
|
emit yChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ElementTextItemGroup::setPos(qreal x, qreal y)
|
||||||
|
{
|
||||||
|
QPointF old_pos = this->pos();
|
||||||
|
QGraphicsItemGroup::setPos(x,y);
|
||||||
|
if (old_pos.x() != this->pos().x())
|
||||||
|
emit xChanged();
|
||||||
|
if (old_pos.y() != this->pos().y())
|
||||||
|
emit yChanged();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief ElementTextItemGroup::mousePressEvent
|
* @brief ElementTextItemGroup::mousePressEvent
|
||||||
* @param event
|
* @param event
|
||||||
|
|||||||
@@ -50,6 +50,8 @@ class ElementTextItemGroup : public QObject, public QGraphicsItemGroup
|
|||||||
void alignmentChanged(Qt::Alignment);
|
void alignmentChanged(Qt::Alignment);
|
||||||
void nameChanged(QString);
|
void nameChanged(QString);
|
||||||
void holdToBottomPageChanged(bool);
|
void holdToBottomPageChanged(bool);
|
||||||
|
void xChanged();
|
||||||
|
void yChanged();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ElementTextItemGroup(const QString &name, Element *parent);
|
ElementTextItemGroup(const QString &name, Element *parent);
|
||||||
@@ -78,6 +80,8 @@ class ElementTextItemGroup : public QObject, public QGraphicsItemGroup
|
|||||||
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
|
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
|
||||||
QRectF boundingRect() const override;
|
QRectF boundingRect() const override;
|
||||||
void setRotation(qreal angle);
|
void setRotation(qreal angle);
|
||||||
|
void setPos(const QPointF &pos);
|
||||||
|
void setPos(qreal x, qreal y);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
|
void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
|
||||||
|
|||||||
@@ -49,9 +49,11 @@ int rot_txt_row = 10;
|
|||||||
int align_txt_row = 11;
|
int align_txt_row = 11;
|
||||||
|
|
||||||
int align_grp_row = 0;
|
int align_grp_row = 0;
|
||||||
int rot_grp_row = 1;
|
int x_grp_row = 1;
|
||||||
int adjust_grp_row = 2;
|
int y_grp_row = 2;
|
||||||
int hold_to_bottom_grp_row = 3;
|
int rot_grp_row = 3;
|
||||||
|
int adjust_grp_row = 4;
|
||||||
|
int hold_to_bottom_grp_row = 5;
|
||||||
|
|
||||||
DynamicElementTextModel::DynamicElementTextModel(Element *element, QObject *parent) :
|
DynamicElementTextModel::DynamicElementTextModel(Element *element, QObject *parent) :
|
||||||
QStandardItemModel(parent),
|
QStandardItemModel(parent),
|
||||||
@@ -564,6 +566,14 @@ QUndoCommand *DynamicElementTextModel::undoForEditedGroup(ElementTextItemGroup *
|
|||||||
else if((alignment == tr("Centre")) && (group->alignment() != Qt::AlignVCenter))
|
else if((alignment == tr("Centre")) && (group->alignment() != Qt::AlignVCenter))
|
||||||
new QPropertyUndoCommand(group, "alignment", QVariant(group->alignment()), QVariant(Qt::AlignVCenter), undo);
|
new QPropertyUndoCommand(group, "alignment", QVariant(group->alignment()), QVariant(Qt::AlignVCenter), undo);
|
||||||
|
|
||||||
|
QPointF pos(group_qsi->child(x_grp_row,1)->data(Qt::EditRole).toDouble(),
|
||||||
|
group_qsi->child(y_grp_row,1)->data(Qt::EditRole).toDouble());
|
||||||
|
if(group->pos() != pos)
|
||||||
|
{
|
||||||
|
QPropertyUndoCommand *qpuc = new QPropertyUndoCommand(group, "pos", QVariant(group->pos()), QVariant(pos), undo);
|
||||||
|
qpuc->setAnimated(true, false);
|
||||||
|
}
|
||||||
|
|
||||||
qreal rotation = group_qsi->child(rot_grp_row,1)->data(Qt::EditRole).toDouble();
|
qreal rotation = group_qsi->child(rot_grp_row,1)->data(Qt::EditRole).toDouble();
|
||||||
if(group->rotation() != rotation)
|
if(group->rotation() != rotation)
|
||||||
{
|
{
|
||||||
@@ -627,6 +637,32 @@ void DynamicElementTextModel::addGroup(ElementTextItemGroup *group)
|
|||||||
alignment_a->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
|
alignment_a->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
|
||||||
qsi_list.clear();
|
qsi_list.clear();
|
||||||
qsi_list << alignment << alignment_a;
|
qsi_list << alignment << alignment_a;
|
||||||
|
grp->appendRow(qsi_list);
|
||||||
|
|
||||||
|
//X pos
|
||||||
|
QStandardItem *x_pos = new QStandardItem(tr("Position X"));
|
||||||
|
x_pos->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
|
||||||
|
|
||||||
|
QStandardItem *x_pos_a = new QStandardItem;
|
||||||
|
x_pos_a->setData(group->pos().x(), Qt::EditRole);
|
||||||
|
x_pos_a->setData(DynamicElementTextModel::grpPos, Qt::UserRole+1);
|
||||||
|
x_pos_a->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
|
||||||
|
|
||||||
|
qsi_list.clear();
|
||||||
|
qsi_list << x_pos << x_pos_a;
|
||||||
|
grp->appendRow(qsi_list);
|
||||||
|
|
||||||
|
//Y pos
|
||||||
|
QStandardItem *y_pos = new QStandardItem(tr("Position Y"));
|
||||||
|
y_pos->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
|
||||||
|
|
||||||
|
QStandardItem *y_pos_a = new QStandardItem;
|
||||||
|
y_pos_a->setData(group->pos().y(), Qt::EditRole);
|
||||||
|
y_pos_a->setData(DynamicElementTextModel::grpPos, Qt::UserRole+1);
|
||||||
|
y_pos_a->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
|
||||||
|
|
||||||
|
qsi_list.clear();
|
||||||
|
qsi_list << y_pos << y_pos_a;
|
||||||
grp->appendRow(qsi_list);
|
grp->appendRow(qsi_list);
|
||||||
|
|
||||||
//Rotation
|
//Rotation
|
||||||
@@ -674,7 +710,7 @@ void DynamicElementTextModel::addGroup(ElementTextItemGroup *group)
|
|||||||
group_item->appendRow(itemsForText(deti));
|
group_item->appendRow(itemsForText(deti));
|
||||||
}
|
}
|
||||||
setConnection(group, true);
|
setConnection(group, true);
|
||||||
enableGroupRotation(group);
|
enableGroupRotationAndPos(group);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1047,7 +1083,7 @@ void DynamicElementTextModel::enableSourceText(DynamicElementTextItem *deti, Dyn
|
|||||||
* Enable/disable the item "group rotation" according the option hold to bottom
|
* Enable/disable the item "group rotation" according the option hold to bottom
|
||||||
* @param group
|
* @param group
|
||||||
*/
|
*/
|
||||||
void DynamicElementTextModel::enableGroupRotation(ElementTextItemGroup *group)
|
void DynamicElementTextModel::enableGroupRotationAndPos(ElementTextItemGroup *group)
|
||||||
{
|
{
|
||||||
if(!m_groups_list.contains(group))
|
if(!m_groups_list.contains(group))
|
||||||
return;
|
return;
|
||||||
@@ -1056,11 +1092,19 @@ void DynamicElementTextModel::enableGroupRotation(ElementTextItemGroup *group)
|
|||||||
|
|
||||||
if(group->holdToBottomPage())
|
if(group->holdToBottomPage())
|
||||||
{
|
{
|
||||||
|
qsi->child(x_grp_row, 0)->setFlags(Qt::ItemIsSelectable);
|
||||||
|
qsi->child(x_grp_row, 1)->setFlags(Qt::ItemIsSelectable);
|
||||||
|
qsi->child(y_grp_row, 0)->setFlags(Qt::ItemIsSelectable);
|
||||||
|
qsi->child(y_grp_row, 1)->setFlags(Qt::ItemIsSelectable);
|
||||||
qsi->child(rot_grp_row, 0)->setFlags(Qt::ItemIsSelectable);
|
qsi->child(rot_grp_row, 0)->setFlags(Qt::ItemIsSelectable);
|
||||||
qsi->child(rot_grp_row, 1)->setFlags(Qt::ItemIsSelectable);
|
qsi->child(rot_grp_row, 1)->setFlags(Qt::ItemIsSelectable);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
qsi->child(x_grp_row, 0)->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
|
||||||
|
qsi->child(x_grp_row, 1)->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
|
||||||
|
qsi->child(y_grp_row, 0)->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
|
||||||
|
qsi->child(y_grp_row, 1)->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
|
||||||
qsi->child(rot_grp_row, 0)->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
|
qsi->child(rot_grp_row, 0)->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
|
||||||
qsi->child(rot_grp_row, 1)->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
|
qsi->child(rot_grp_row, 1)->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
|
||||||
}
|
}
|
||||||
@@ -1153,7 +1197,6 @@ void DynamicElementTextModel::setConnection(DynamicElementTextItem *deti, bool s
|
|||||||
connection_list << connect(deti, &DynamicElementTextItem::rotationChanged, [deti,this](){this->updateDataFromText(deti, rotation);});
|
connection_list << connect(deti, &DynamicElementTextItem::rotationChanged, [deti,this](){this->updateDataFromText(deti, rotation);});
|
||||||
connection_list << connect(deti, &DynamicElementTextItem::textWidthChanged,[deti,this](){this->updateDataFromText(deti, textWidth);});
|
connection_list << connect(deti, &DynamicElementTextItem::textWidthChanged,[deti,this](){this->updateDataFromText(deti, textWidth);});
|
||||||
connection_list << connect(deti, &DynamicElementTextItem::compositeTextChanged, [deti, this]() {this->updateDataFromText(deti, compositeText);});
|
connection_list << connect(deti, &DynamicElementTextItem::compositeTextChanged, [deti, this]() {this->updateDataFromText(deti, compositeText);});
|
||||||
|
|
||||||
m_hash_text_connect.insert(deti, connection_list);
|
m_hash_text_connect.insert(deti, connection_list);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1188,6 +1231,8 @@ void DynamicElementTextModel::setConnection(ElementTextItemGroup *group, bool se
|
|||||||
connection_list << connect(group, &ElementTextItemGroup::verticalAdjustmentChanged, [group, this]() {this->updateDataFromGroup(group, grpVAdjust);});
|
connection_list << connect(group, &ElementTextItemGroup::verticalAdjustmentChanged, [group, this]() {this->updateDataFromGroup(group, grpVAdjust);});
|
||||||
connection_list << connect(group, &ElementTextItemGroup::verticalAdjustmentChanged, [group, this]() {this->updateDataFromGroup(group, grpName);});
|
connection_list << connect(group, &ElementTextItemGroup::verticalAdjustmentChanged, [group, this]() {this->updateDataFromGroup(group, grpName);});
|
||||||
connection_list << connect(group, &ElementTextItemGroup::holdToBottomPageChanged, [group, this]() {this->updateDataFromGroup(group, grpHoldBottom);});
|
connection_list << connect(group, &ElementTextItemGroup::holdToBottomPageChanged, [group, this]() {this->updateDataFromGroup(group, grpHoldBottom);});
|
||||||
|
connection_list << connect(group, &ElementTextItemGroup::xChanged, [group, this]() {this->updateDataFromGroup(group, grpPos);});
|
||||||
|
connection_list << connect(group, &ElementTextItemGroup::yChanged, [group, this]() {this->updateDataFromGroup(group, grpPos);});
|
||||||
|
|
||||||
m_hash_group_connect.insert(group, connection_list);
|
m_hash_group_connect.insert(group, connection_list);
|
||||||
}
|
}
|
||||||
@@ -1308,6 +1353,11 @@ void DynamicElementTextModel::updateDataFromGroup(ElementTextItemGroup *group, D
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case grpPos:
|
||||||
|
{
|
||||||
|
qsi->child(x_grp_row,1)->setData(group->pos().x(), Qt::EditRole);
|
||||||
|
qsi->child(y_grp_row,1)->setData(group->pos().y(), Qt::EditRole);
|
||||||
|
}
|
||||||
case grpRotation:
|
case grpRotation:
|
||||||
qsi->child(rot_grp_row,1)->setData(group->rotation(), Qt::EditRole);
|
qsi->child(rot_grp_row,1)->setData(group->rotation(), Qt::EditRole);
|
||||||
break;
|
break;
|
||||||
@@ -1320,7 +1370,7 @@ void DynamicElementTextModel::updateDataFromGroup(ElementTextItemGroup *group, D
|
|||||||
case grpHoldBottom:
|
case grpHoldBottom:
|
||||||
{
|
{
|
||||||
qsi->child(hold_to_bottom_grp_row,1)->setCheckState(group->holdToBottomPage()? Qt::Checked : Qt::Unchecked);
|
qsi->child(hold_to_bottom_grp_row,1)->setCheckState(group->holdToBottomPage()? Qt::Checked : Qt::Unchecked);
|
||||||
enableGroupRotation(group);
|
enableGroupRotationAndPos(group);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:break;
|
default:break;
|
||||||
@@ -1461,6 +1511,15 @@ QWidget *DynamicTextItemDelegate::createEditor(QWidget *parent, const QStyleOpti
|
|||||||
qcb->addItem(tr("Droite"));
|
qcb->addItem(tr("Droite"));
|
||||||
return qcb;
|
return qcb;
|
||||||
}
|
}
|
||||||
|
case DynamicElementTextModel::grpPos:
|
||||||
|
{
|
||||||
|
QSpinBox *sb = new QSpinBox(parent);
|
||||||
|
sb->setObjectName("group_pos");
|
||||||
|
sb->setRange(-1000,10000);
|
||||||
|
sb->setFrame(false);
|
||||||
|
sb->setSuffix(" px");
|
||||||
|
return sb;
|
||||||
|
}
|
||||||
case DynamicElementTextModel::grpRotation:
|
case DynamicElementTextModel::grpRotation:
|
||||||
{
|
{
|
||||||
QSpinBox *sb = new QSpinBox(parent);
|
QSpinBox *sb = new QSpinBox(parent);
|
||||||
@@ -1581,7 +1640,8 @@ bool DynamicTextItemDelegate::eventFilter(QObject *object, QEvent *event)
|
|||||||
//With this hack the value is commited each time the value change without the need to validate.
|
//With this hack the value is commited each time the value change without the need to validate.
|
||||||
//then the change is apply in live
|
//then the change is apply in live
|
||||||
if(object->objectName() == "pos_dialog" || object->objectName() == "font_size" || object->objectName() == "rot_spinbox" || \
|
if(object->objectName() == "pos_dialog" || object->objectName() == "font_size" || object->objectName() == "rot_spinbox" || \
|
||||||
object->objectName() == "group_rotation" || object->objectName() == "group_v_adjustment" || object->objectName() == "width_spinbox")
|
object->objectName() == "group_rotation" || object->objectName() == "group_v_adjustment" || object->objectName() == "width_spinbox" ||\
|
||||||
|
object->objectName() == "group_pos")
|
||||||
{
|
{
|
||||||
object->event(event);
|
object->event(event);
|
||||||
|
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ class DynamicElementTextModel : public QStandardItemModel
|
|||||||
rotation,
|
rotation,
|
||||||
textWidth,
|
textWidth,
|
||||||
grpAlignment,
|
grpAlignment,
|
||||||
|
grpPos,
|
||||||
grpRotation,
|
grpRotation,
|
||||||
grpVAdjust,
|
grpVAdjust,
|
||||||
grpName,
|
grpName,
|
||||||
@@ -89,7 +90,7 @@ class DynamicElementTextModel : public QStandardItemModel
|
|||||||
void addTextToGroup(DynamicElementTextItem *deti, ElementTextItemGroup *group);
|
void addTextToGroup(DynamicElementTextItem *deti, ElementTextItemGroup *group);
|
||||||
void removeTextFromGroup(DynamicElementTextItem *deti, ElementTextItemGroup *group);
|
void removeTextFromGroup(DynamicElementTextItem *deti, ElementTextItemGroup *group);
|
||||||
void enableSourceText(DynamicElementTextItem *deti, DynamicElementTextItem::TextFrom tf );
|
void enableSourceText(DynamicElementTextItem *deti, DynamicElementTextItem::TextFrom tf );
|
||||||
void enableGroupRotation(ElementTextItemGroup *group);
|
void enableGroupRotationAndPos(ElementTextItemGroup *group);
|
||||||
void itemDataChanged(QStandardItem *qsi);
|
void itemDataChanged(QStandardItem *qsi);
|
||||||
void setConnection(DynamicElementTextItem *deti, bool set);
|
void setConnection(DynamicElementTextItem *deti, bool set);
|
||||||
void setConnection(ElementTextItemGroup *group, bool set);
|
void setConnection(ElementTextItemGroup *group, bool set);
|
||||||
|
|||||||
Reference in New Issue
Block a user