diff --git a/sources/qetgraphicsitem/qetshapeitem.cpp b/sources/qetgraphicsitem/qetshapeitem.cpp index 6480be414..bcd8b8a1a 100644 --- a/sources/qetgraphicsitem/qetshapeitem.cpp +++ b/sources/qetgraphicsitem/qetshapeitem.cpp @@ -38,13 +38,14 @@ QetShapeItem::QetShapeItem(QPointF p1, QPointF p2, ShapeType type, QGraphicsItem m_P2 (p2), m_hovered(false), m_mouse_grab_handler(false), + shape_size(1), m_handler(10) { if (type == Polygon) m_polygon << m_P1 << m_P2; setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); setAcceptHoverEvents(true); m_pen.setStyle(Qt::DashLine); - m_pen.setWidthF(1); + } QetShapeItem::~QetShapeItem() {} @@ -458,6 +459,7 @@ bool QetShapeItem::fromXml(const QDomElement &e) is_movable_ = (e.attribute("is_movable").toInt()); m_pen.setStyle(Qt::PenStyle(e.attribute("style","0").toInt())); + m_pen.setWidthF(e.attribute("shape_size", QString::number(shape_size)).toInt()); QString type = e.attribute("type"); //Compatibility for version older than N°4075, shape type was stored with an int @@ -506,6 +508,7 @@ QDomElement QetShapeItem::toXml(QDomDocument &document) const QMetaEnum me = metaObject()->enumerator(metaObject()->indexOfEnumerator("ShapeType")); result.setAttribute("type", me.valueToKey(m_shapeType)); result.setAttribute("style", QString::number(m_pen.style())); + result.setAttribute("shape_size", QString::number(m_pen.widthF())); result.setAttribute("is_movable", bool(is_movable_)); if (m_shapeType != Polygon) { diff --git a/sources/qetgraphicsitem/qetshapeitem.h b/sources/qetgraphicsitem/qetshapeitem.h index e9508113f..9a4a81322 100644 --- a/sources/qetgraphicsitem/qetshapeitem.h +++ b/sources/qetgraphicsitem/qetshapeitem.h @@ -96,13 +96,14 @@ class QetShapeItem : public QetGraphicsItem ///ATTRIBUTES private: - ShapeType m_shapeType; + ShapeType m_shapeType; QPen m_pen; QPointF m_P1, m_P2, m_old_P1, m_old_P2; QPolygonF m_polygon, m_old_polygon; - bool m_hovered, + bool m_hovered, m_mouse_grab_handler; int m_vector_index; + int shape_size; QetGraphicsHandlerUtility m_handler; }; #endif // QETSHAPEITEM_H diff --git a/sources/ui/shapegraphicsitempropertieswidget.cpp b/sources/ui/shapegraphicsitempropertieswidget.cpp index 5cbe29b56..3ff6eb635 100644 --- a/sources/ui/shapegraphicsitempropertieswidget.cpp +++ b/sources/ui/shapegraphicsitempropertieswidget.cpp @@ -57,9 +57,12 @@ void ShapeGraphicsItemPropertiesWidget::setItem(QetShapeItem *shape) if (m_shape) disconnect(m_shape, &QetShapeItem::penChanged, this, &ShapeGraphicsItemPropertiesWidget::updateUi); + disconnect(m_shape, &QetShapeItem::widthChanged, this, &ShapeGraphicsItemPropertiesWidget::updateUi); m_shape = shape; connect(m_shape, &QetShapeItem::penChanged, this, &ShapeGraphicsItemPropertiesWidget::updateUi); + connect(m_shape, &QetShapeItem::widthChanged, this, &ShapeGraphicsItemPropertiesWidget::updateUi); + updateUi(); } @@ -101,6 +104,7 @@ QUndoCommand* ShapeGraphicsItemPropertiesWidget::associatedUndo() const QPen old_pen = m_shape->pen(); QPen new_pen = old_pen; new_pen.setStyle(Qt::PenStyle(ui->m_style_cb->currentIndex() + 1)); + new_pen.setWidthF(ui->m_size_cb->value()); if (new_pen == old_pen) return nullptr; QPropertyUndoCommand *undo = new QPropertyUndoCommand(m_shape, "pen", old_pen, new_pen); @@ -114,6 +118,7 @@ QUndoCommand* ShapeGraphicsItemPropertiesWidget::associatedUndo() const void ShapeGraphicsItemPropertiesWidget::updateUi() { ui->m_style_cb->setCurrentIndex(static_cast(m_shape->pen().style()) - 1); + ui->m_size_cb ->setValue(m_shape->pen().widthF()); ui->m_lock_pos_cb->setChecked(!m_shape->isMovable()); } @@ -127,11 +132,12 @@ bool ShapeGraphicsItemPropertiesWidget::setLiveEdit(bool live_edit) if (live_edit == m_live_edit) return true; m_live_edit = live_edit; - if (m_live_edit) + if (m_live_edit){ connect (ui->m_style_cb, SIGNAL(activated(int)), this, SLOT(apply())); - else + connect (ui->m_size_cb, SIGNAL(valueChanged(int)), this, SLOT(apply())); + }else disconnect (ui->m_style_cb, SIGNAL(activated(int)), this, SLOT(apply())); - + disconnect (ui->m_size_cb, SIGNAL(valueChanged(int)), this, SLOT(apply())); return true; } diff --git a/sources/ui/shapegraphicsitempropertieswidget.h b/sources/ui/shapegraphicsitempropertieswidget.h index 032e496d2..f86c08ecc 100644 --- a/sources/ui/shapegraphicsitempropertieswidget.h +++ b/sources/ui/shapegraphicsitempropertieswidget.h @@ -52,9 +52,10 @@ class ShapeGraphicsItemPropertiesWidget : public PropertiesEditorWidget private slots: void on_m_lock_pos_cb_clicked(); - private: + private: Ui::ShapeGraphicsItemPropertiesWidget *ui; QetShapeItem *m_shape; + int shape_size; }; #endif // SHAPEGRAPHICSITEMPROPERTIESWIDGET_H diff --git a/sources/ui/shapegraphicsitempropertieswidget.ui b/sources/ui/shapegraphicsitempropertieswidget.ui index bb109bcf0..e745c2ecb 100644 --- a/sources/ui/shapegraphicsitempropertieswidget.ui +++ b/sources/ui/shapegraphicsitempropertieswidget.ui @@ -6,7 +6,7 @@ 0 0 - 195 + 242 183 @@ -54,6 +54,29 @@ + + + + Epaisseur de trait + + + + + + + QAbstractSpinBox::CorrectToNearestValue + + + 1 + + + 20 + + + 1 + + + @@ -75,6 +98,9 @@ + label_2 + m_lock_pos_cb + m_size_cb